From 86eeeb425936ba67d79f32bfbd5c5f8002819438 Mon Sep 17 00:00:00 2001 From: Julien Palard Date: Wed, 30 Jun 2021 11:31:04 +0200 Subject: [PATCH 01/40] Doc: fix a rst tag. (GH-26965) --- Doc/library/contextlib.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst index 7ac3856819593c..38f619a66d6d81 100644 --- a/Doc/library/contextlib.rst +++ b/Doc/library/contextlib.rst @@ -515,9 +515,9 @@ Functions and classes provided: These context managers may suppress exceptions just as they normally would if used directly as part of a :keyword:`with` statement. - ... versionchanged:: 3.11 - Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* - is not a context manager. + .. versionchanged:: 3.11 + Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* + is not a context manager. .. method:: push(exit) @@ -589,9 +589,9 @@ Functions and classes provided: Similar to :meth:`enter_context` but expects an asynchronous context manager. - ... versionchanged:: 3.11 - Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* - is not an asynchronous context manager. + .. versionchanged:: 3.11 + Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* + is not an asynchronous context manager. .. method:: push_async_exit(exit) From 139de04518bd98a975b7c98ab8a38e570dc585e4 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 30 Jun 2021 17:21:37 +0100 Subject: [PATCH 02/40] bpo-41180: Replace marshal code.__new__ audit event with marshal.load[s] and marshal.dumps (GH-26961) --- Doc/library/marshal.rst | 8 +++++ Lib/test/audit-tests.py | 27 +++++++++++++++++ Lib/test/test_audit.py | 5 ++++ .../2021-06-29-23-40-22.bpo-41180.uTWHv_.rst | 5 ++++ Python/marshal.c | 30 ++++++++++++------- 5 files changed, 65 insertions(+), 10 deletions(-) create mode 100644 Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst diff --git a/Doc/library/marshal.rst b/Doc/library/marshal.rst index d65afc20041133..458c0d53a225ef 100644 --- a/Doc/library/marshal.rst +++ b/Doc/library/marshal.rst @@ -66,6 +66,8 @@ The module defines these functions: The *version* argument indicates the data format that ``dump`` should use (see below). + .. audit-event:: marshal.dumps value,version marshal.dump + .. function:: load(file) @@ -74,6 +76,8 @@ The module defines these functions: format), raise :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. The file must be a readable :term:`binary file`. + .. audit-event:: marshal.loads bytes marshal.load + .. note:: If an object containing an unsupported type was marshalled with :func:`dump`, @@ -89,6 +93,8 @@ The module defines these functions: The *version* argument indicates the data format that ``dumps`` should use (see below). + .. audit-event:: marshal.dumps value,version marshal.dump + .. function:: loads(bytes) @@ -96,6 +102,8 @@ The module defines these functions: :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. Extra bytes in the input are ignored. + .. audit-event:: marshal.loads bytes marshal.load + In addition, the following constants are defined: diff --git a/Lib/test/audit-tests.py b/Lib/test/audit-tests.py index 7a7de637c38823..ccec9fedc4460d 100644 --- a/Lib/test/audit-tests.py +++ b/Lib/test/audit-tests.py @@ -6,6 +6,7 @@ """ import contextlib +import os import sys @@ -106,6 +107,32 @@ def test_block_add_hook_baseexception(): pass +def test_marshal(): + import marshal + o = ("a", "b", "c", 1, 2, 3) + payload = marshal.dumps(o) + + with TestHook() as hook: + assertEqual(o, marshal.loads(marshal.dumps(o))) + + try: + with open("test-marshal.bin", "wb") as f: + marshal.dump(o, f) + with open("test-marshal.bin", "rb") as f: + assertEqual(o, marshal.load(f)) + finally: + os.unlink("test-marshal.bin") + + actual = [(a[0], a[1]) for e, a in hook.seen if e == "marshal.dumps"] + assertSequenceEqual(actual, [(o, marshal.version)] * 2) + + actual = [a[0] for e, a in hook.seen if e == "marshal.loads"] + assertSequenceEqual(actual, [payload]) + + actual = [e for e, a in hook.seen if e == "marshal.load"] + assertSequenceEqual(actual, ["marshal.load"]) + + def test_pickle(): import pickle diff --git a/Lib/test/test_audit.py b/Lib/test/test_audit.py index 25ff34bb11298a..c5ce26323b5f9e 100644 --- a/Lib/test/test_audit.py +++ b/Lib/test/test_audit.py @@ -54,6 +54,11 @@ def test_block_add_hook(self): def test_block_add_hook_baseexception(self): self.do_test("test_block_add_hook_baseexception") + def test_marshal(self): + import_helper.import_module("marshal") + + self.do_test("test_marshal") + def test_pickle(self): import_helper.import_module("pickle") diff --git a/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst b/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst new file mode 100644 index 00000000000000..88b70c7cea2610 --- /dev/null +++ b/Misc/NEWS.d/next/Security/2021-06-29-23-40-22.bpo-41180.uTWHv_.rst @@ -0,0 +1,5 @@ +Add auditing events to the :mod:`marshal` module, and stop raising +``code.__init__`` events for every unmarshalled code object. Directly +instantiated code objects will continue to raise an event, and audit event +handlers should inspect or collect the raw marshal data. This reduces a +significant performance overhead when loading from ``.pyc`` files. diff --git a/Python/marshal.c b/Python/marshal.c index d6504a8b8c18ff..182dee7966aa87 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -596,14 +596,18 @@ 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 mush check PyErr_Occurred() */ + if (w_init_refs(&wf, version)) { + return; /* caller must check PyErr_Occurred() */ + } w_object(x, &wf); w_clear_refs(&wf); w_flush(&wf); @@ -1368,12 +1372,6 @@ r_object(RFILE *p) goto code_error; Py_ssize_t nlocalsplus = PyTuple_GET_SIZE(localsplusnames); - if (PySys_Audit("code.__new__", "OOOiiiiii", - code, filename, name, argcount, posonlyargcount, - kwonlyargcount, nlocalsplus, stacksize, - flags) < 0) { - goto code_error; - } struct _PyCodeConstructor con = { .filename = filename, @@ -1460,6 +1458,15 @@ read_object(RFILE *p) 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"); @@ -1556,7 +1563,7 @@ PyMarshal_ReadObjectFromFile(FILE *fp) rf.refs = PyList_New(0); if (rf.refs == NULL) return NULL; - result = r_object(&rf); + result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) PyMem_Free(rf.buf); @@ -1577,7 +1584,7 @@ PyMarshal_ReadObjectFromString(const char *str, Py_ssize_t len) rf.refs = PyList_New(0); if (rf.refs == NULL) return NULL; - result = r_object(&rf); + result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) PyMem_Free(rf.buf); @@ -1589,6 +1596,9 @@ 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) From 95919b0d2744adb87acf696ae1de905cf02a95a6 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 30 Jun 2021 18:53:13 +0100 Subject: [PATCH 03/40] bpo-41180: Fixes documentation to specify correct event name and add versionchanged (GH-26972) --- Doc/library/marshal.rst | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Doc/library/marshal.rst b/Doc/library/marshal.rst index 458c0d53a225ef..24f9dc1689da4a 100644 --- a/Doc/library/marshal.rst +++ b/Doc/library/marshal.rst @@ -76,13 +76,18 @@ The module defines these functions: format), raise :exc:`EOFError`, :exc:`ValueError` or :exc:`TypeError`. The file must be a readable :term:`binary file`. - .. audit-event:: marshal.loads bytes marshal.load + .. audit-event:: marshal.load "" marshal.load .. note:: If an object containing an unsupported type was marshalled with :func:`dump`, :func:`load` will substitute ``None`` for the unmarshallable type. + .. versionchanged:: 3.10 + + This call used to raise a ``code.__new__`` audit event for each code object. Now + it raises a single ``marshal.load`` event for the entire load operation. + .. function:: dumps(value[, version]) @@ -104,6 +109,11 @@ The module defines these functions: .. audit-event:: marshal.loads bytes marshal.load + .. versionchanged:: 3.10 + + This call used to raise a ``code.__new__`` audit event for each code object. Now + it raises a single ``marshal.loads`` event for the entire load operation. + In addition, the following constants are defined: From d3a95c1b6eacbbbd92c294744e7ed41932f3f63e Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Wed, 30 Jun 2021 20:06:06 +0100 Subject: [PATCH 04/40] bpo-44535: Enable building with Visual Studio 2022 on Windows (GH-26962) --- Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst | 1 + PCbuild/python.props | 1 + 2 files changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst diff --git a/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst b/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst new file mode 100644 index 00000000000000..e06d0d304852f3 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-06-30-02-32-46.bpo-44535.M9iN4-.rst @@ -0,0 +1 @@ +Enable building using a Visual Studio 2022 install on Windows. diff --git a/PCbuild/python.props b/PCbuild/python.props index 4a56d50b8b7655..60625101b47287 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -11,6 +11,7 @@ We set BasePlatformToolset for ICC's benefit, it's otherwise ignored. --> + v142 v142 v141 v140 From 66c53b48e1f5c841d9f48e51ce7bf1a74b75b629 Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Wed, 30 Jun 2021 21:55:57 +0100 Subject: [PATCH 05/40] Fix compiler errors for unused variables in marshal.c (GH-26977) --- Python/marshal.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/Python/marshal.c b/Python/marshal.c index 182dee7966aa87..6c08189cca29b2 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -1371,8 +1371,6 @@ r_object(RFILE *p) if (exceptiontable == NULL) goto code_error; - Py_ssize_t nlocalsplus = PyTuple_GET_SIZE(localsplusnames); - struct _PyCodeConstructor con = { .filename = filename, .name = name, From 1b28187a0e3e914ee48de8032cbba0a965dd5563 Mon Sep 17 00:00:00 2001 From: Batuhan Taskaya Date: Thu, 1 Jul 2021 01:53:36 +0300 Subject: [PATCH 06/40] bpo-44313: generate LOAD_ATTR/CALL_FUNCTION for top-level imported objects (GH-26677) --- Include/internal/pycore_symtable.h | 1 + Lib/importlib/_bootstrap_external.py | 1 + Lib/test/test_compile.py | 36 ++ .../2021-06-10-16-10-39.bpo-44313.34RjI8.rst | 4 + Programs/test_frozenmain.h | 2 +- Python/compile.c | 23 ++ Python/importlib_external.h | 344 +++++++++--------- Python/importlib_zipimport.h | 80 ++-- Python/symtable.c | 2 +- 9 files changed, 279 insertions(+), 214 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2021-06-10-16-10-39.bpo-44313.34RjI8.rst diff --git a/Include/internal/pycore_symtable.h b/Include/internal/pycore_symtable.h index f3505f8949be4b..4c1b7d3519ccf9 100644 --- a/Include/internal/pycore_symtable.h +++ b/Include/internal/pycore_symtable.h @@ -72,6 +72,7 @@ extern PyTypeObject PySTEntry_Type; #define PySTEntry_Check(op) Py_IS_TYPE(op, &PySTEntry_Type) +extern long _PyST_GetSymbol(PySTEntryObject *, PyObject *); extern int _PyST_GetScope(PySTEntryObject *, PyObject *); extern struct symtable* _PySymtable_Build( diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 21ac22d9464ee6..c8b8ece5f57aea 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -360,6 +360,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3455 (add MAKE_CELL bpo-43693) # Python 3.11a1 3456 (interleave cell args bpo-43693) # Python 3.11a1 3457 (Change localsplus to a bytes object bpo-43693) +# Python 3.11a1 3458 (imported objects now don't use LOAD_METHOD/CALL_METHOD) # # MAGIC must change whenever the bytecode emitted by the compiler may no diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 6dc1c383f8f2c9..7de607ca4c7898 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -6,6 +6,7 @@ import _ast import tempfile import types +import textwrap from test import support from test.support import script_helper from test.support.os_helper import FakePath @@ -791,6 +792,41 @@ def or_false(x): self.assertIn('LOAD_', opcodes[0].opname) self.assertEqual('RETURN_VALUE', opcodes[1].opname) + def test_imported_load_method(self): + sources = [ + """\ + import os + def foo(): + return os.uname() + """, + """\ + import os as operating_system + def foo(): + return operating_system.uname() + """, + """\ + from os import path + def foo(x): + return path.join(x) + """, + """\ + from os import path as os_path + def foo(x): + return os_path.join(x) + """ + ] + for source in sources: + namespace = {} + exec(textwrap.dedent(source), namespace) + func = namespace['foo'] + with self.subTest(func=func.__name__): + opcodes = list(dis.get_instructions(func)) + instructions = [opcode.opname for opcode in opcodes] + self.assertNotIn('LOAD_METHOD', instructions) + self.assertNotIn('CALL_METHOD', instructions) + self.assertIn('LOAD_ATTR', instructions) + self.assertIn('CALL_FUNCTION', instructions) + def test_lineno_procedure_call(self): def call(): ( diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-06-10-16-10-39.bpo-44313.34RjI8.rst b/Misc/NEWS.d/next/Core and Builtins/2021-06-10-16-10-39.bpo-44313.34RjI8.rst new file mode 100644 index 00000000000000..e48d4a471f802f --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-06-10-16-10-39.bpo-44313.34RjI8.rst @@ -0,0 +1,4 @@ +Directly imported objects and modules (through import and from import +statements) don't generate ``LOAD_METHOD``/``CALL_METHOD`` for directly +accessed objects on their namespace. They now use the regular +``LOAD_ATTR``/``CALL_FUNCTION``. diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index 519b91526d157b..10b13503b8e66a 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -4,7 +4,7 @@ unsigned char M_test_frozenmain[] = { 0,0,0,0,0,115,86,0,0,0,100,0,100,1,108,0, 90,0,100,0,100,1,108,1,90,1,101,2,100,2,131,1, 1,0,101,2,100,3,101,0,106,3,131,2,1,0,101,1, - 160,4,161,0,100,4,25,0,90,5,100,5,68,0,93,14, + 106,4,131,0,100,4,25,0,90,5,100,5,68,0,93,14, 90,6,101,2,100,6,101,6,155,0,100,7,101,5,101,6, 25,0,155,0,157,4,131,1,1,0,113,26,100,1,83,0, 41,8,233,0,0,0,0,78,122,18,70,114,111,122,101,110, diff --git a/Python/compile.c b/Python/compile.c index 52d29877a5f0ad..99e500f746185d 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -4278,6 +4278,23 @@ check_index(struct compiler *c, expr_ty e, expr_ty s) } } +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; +} + // Return 1 if the method call was optimized, -1 if not, and 0 on error. static int maybe_optimize_method_call(struct compiler *c, expr_ty e) @@ -4291,6 +4308,12 @@ maybe_optimize_method_call(struct compiler *c, expr_ty e) if (meth->kind != Attribute_kind || meth->v.Attribute.ctx != Load) { return -1; } + + /* Check that the base object is not something that is imported */ + if (is_import_originated(c, meth->v.Attribute.value)) { + return -1; + } + /* Check that there aren't too many arguments */ argsl = asdl_seq_LEN(args); kwdsl = asdl_seq_LEN(kwds); diff --git a/Python/importlib_external.h b/Python/importlib_external.h index c6da76f39da093..f0d4138a0803e7 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -25,7 +25,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 90,38,100,40,160,39,100,41,100,42,161,2,100,43,23,0, 90,40,101,41,160,42,101,40,100,42,161,2,90,43,100,44, 90,44,100,45,90,45,100,46,103,1,90,46,101,8,114,192, - 101,46,160,47,100,47,161,1,1,0,101,2,160,48,161,0, + 101,46,160,47,100,47,161,1,1,0,101,2,106,48,131,0, 90,49,100,48,103,1,90,50,101,50,4,0,90,51,90,52, 100,113,100,1,100,49,156,1,100,50,100,51,132,3,90,53, 100,52,100,53,132,0,90,54,100,54,100,55,132,0,90,55, @@ -249,8 +249,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, 1,114,9,0,0,0,114,73,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 115,10,0,0,0,116,0,160,1,124,0,161,1,83,0,41, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 115,10,0,0,0,116,0,106,1,124,0,131,1,83,0,41, 2,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, @@ -290,7 +290,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,243,2,0,0,0,10,2,114,9,0,0,0,114,80,0, 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, 0,0,0,3,0,0,0,115,22,0,0,0,124,0,115,6, - 116,0,160,1,161,0,125,0,116,2,124,0,100,1,131,2, + 116,0,106,1,131,0,125,0,116,2,124,0,100,1,131,2, 83,0,41,3,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,78,41,3,114,19,0,0, @@ -300,7 +300,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 6,0,0,0,4,2,8,1,10,1,114,9,0,0,0,114, 83,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, 0,4,0,0,0,3,0,0,0,115,62,0,0,0,124,0, - 115,4,100,1,83,0,116,0,160,1,124,0,161,1,100,2, + 115,4,100,1,83,0,116,0,106,1,124,0,131,1,100,2, 25,0,160,2,100,3,100,4,161,2,125,1,116,3,124,1, 131,1,100,5,107,4,111,30,124,1,160,4,100,6,161,1, 112,30,124,1,160,5,100,4,161,1,83,0,41,8,250,30, @@ -322,15 +322,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,9,0,0,0,233,182,1,0,0,99,3,0,0, 0,0,0,0,0,0,0,0,0,11,0,0,0,3,0,0, 0,115,178,0,0,0,100,1,160,0,124,0,116,1,124,0, - 131,1,161,2,125,3,116,2,160,3,124,3,116,2,106,4, + 131,1,161,2,125,3,116,2,106,3,124,3,116,2,106,4, 116,2,106,5,66,0,116,2,106,6,66,0,124,2,100,2, - 64,0,161,3,125,4,9,0,116,7,160,8,124,4,100,3, - 161,2,53,0,125,5,124,5,160,9,124,1,161,1,1,0, + 64,0,131,3,125,4,9,0,116,7,106,8,124,4,100,3, + 131,2,53,0,125,5,124,5,160,9,124,1,161,1,1,0, 100,4,4,0,4,0,131,3,1,0,110,11,35,0,49,0, 115,48,119,4,37,0,1,0,1,0,1,0,89,0,1,0, - 1,0,116,2,160,10,124,3,124,0,161,2,1,0,100,4, + 1,0,116,2,106,10,124,3,124,0,131,2,1,0,100,4, 83,0,35,0,4,0,116,11,121,88,1,0,1,0,1,0, - 9,0,116,2,160,12,124,3,161,1,1,0,130,0,35,0, + 9,0,116,2,106,12,124,3,131,1,1,0,130,0,35,0, 4,0,116,11,121,87,1,0,1,0,1,0,89,0,130,0, 37,0,37,0,119,0,119,0,41,5,122,162,66,101,115,116, 45,101,102,102,111,114,116,32,102,117,110,99,116,105,111,110, @@ -369,10 +369,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,5,0,0,0,3,0, 0,0,115,80,1,0,0,124,1,100,1,117,1,114,26,116, - 0,160,1,100,2,116,2,161,2,1,0,124,2,100,1,117, + 0,106,1,100,2,116,2,131,2,1,0,124,2,100,1,117, 1,114,20,100,3,125,3,116,3,124,3,131,1,130,1,124, - 1,114,24,100,4,110,1,100,5,125,2,116,4,160,5,124, - 0,161,1,125,0,116,6,124,0,131,1,92,2,125,4,125, + 1,114,24,100,4,110,1,100,5,125,2,116,4,106,5,124, + 0,131,1,125,0,116,6,124,0,131,1,92,2,125,4,125, 5,124,5,160,7,100,6,161,1,92,3,125,6,125,7,125, 8,116,8,106,9,106,10,125,9,124,9,100,1,117,0,114, 57,116,11,100,7,131,1,130,1,100,4,160,12,124,6,114, @@ -384,7 +384,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 18,124,2,161,1,131,1,130,1,100,10,160,18,124,10,116, 19,124,2,161,3,125,10,124,10,116,20,100,8,25,0,23, 0,125,11,116,8,106,21,100,1,117,1,114,162,116,22,124, - 4,131,1,115,134,116,23,116,4,160,24,161,0,124,4,131, + 4,131,1,115,134,116,23,116,4,106,24,131,0,124,4,131, 2,125,4,124,4,100,5,25,0,100,11,107,2,114,152,124, 4,100,8,25,0,116,25,118,1,114,152,124,4,100,12,100, 1,133,2,25,0,125,4,116,23,116,8,106,21,124,4,160, @@ -476,7 +476,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0,0,0,218,17,99,97, - 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,132, + 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,133, 1,0,0,115,72,0,0,0,8,18,6,1,2,1,4,255, 8,2,4,1,8,1,12,1,10,1,12,1,16,1,8,1, 8,1,8,1,24,1,8,1,12,1,6,1,8,2,8,1, @@ -485,7 +485,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,9,0,0,0,114,121,0,0,0,99,1,0,0,0,0, 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, 40,1,0,0,116,0,106,1,106,2,100,1,117,0,114,10, - 116,3,100,2,131,1,130,1,116,4,160,5,124,0,161,1, + 116,3,100,2,131,1,130,1,116,4,106,5,124,0,131,1, 125,0,116,6,124,0,131,1,92,2,125,1,125,2,100,3, 125,3,116,0,106,7,100,1,117,1,114,51,116,0,106,7, 160,8,116,9,161,1,125,4,124,1,160,10,124,4,116,11, @@ -558,7 +558,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0,0,0, 218,17,115,111,117,114,99,101,95,102,114,111,109,95,99,97, - 99,104,101,203,1,0,0,115,60,0,0,0,12,9,8,1, + 99,104,101,204,1,0,0,115,60,0,0,0,12,9,8,1, 10,1,12,1,4,1,10,1,12,1,14,1,16,1,4,1, 4,1,12,1,8,1,8,1,2,1,8,255,10,2,8,1, 14,1,8,1,16,1,10,1,4,1,2,1,8,255,16,2, @@ -593,7 +593,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 218,1,95,90,9,101,120,116,101,110,115,105,111,110,218,11, 115,111,117,114,99,101,95,112,97,116,104,115,5,0,0,0, 32,32,32,32,32,114,7,0,0,0,218,15,95,103,101,116, - 95,115,111,117,114,99,101,102,105,108,101,243,1,0,0,115, + 95,115,111,117,114,99,101,102,105,108,101,244,1,0,0,115, 26,0,0,0,12,7,4,1,16,1,24,1,4,1,2,1, 10,1,2,128,16,1,16,1,2,128,16,1,2,254,115,12, 0,0,0,159,4,36,0,164,15,53,7,190,1,53,7,114, @@ -607,7 +607,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 218,5,116,117,112,108,101,114,127,0,0,0,114,121,0,0, 0,114,107,0,0,0,114,113,0,0,0,41,1,114,120,0, 0,0,115,1,0,0,0,32,114,7,0,0,0,218,11,95, - 103,101,116,95,99,97,99,104,101,100,6,2,0,0,115,22, + 103,101,116,95,99,97,99,104,101,100,7,2,0,0,115,22, 0,0,0,14,1,2,1,8,1,2,128,12,1,6,1,2, 128,14,1,4,1,4,2,2,251,115,12,0,0,0,136,3, 12,0,140,7,22,7,162,1,22,7,114,137,0,0,0,99, @@ -623,7 +623,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,114,75,0,0,0,114,77,0,0,0,114,76,0,0,0, 41,2,114,65,0,0,0,114,78,0,0,0,115,2,0,0, 0,32,32,114,7,0,0,0,218,10,95,99,97,108,99,95, - 109,111,100,101,18,2,0,0,115,18,0,0,0,2,2,12, + 109,111,100,101,19,2,0,0,115,18,0,0,0,2,2,12, 1,2,128,12,1,8,1,2,128,8,3,4,1,2,251,115, 12,0,0,0,129,5,7,0,135,9,18,7,153,1,18,7, 114,139,0,0,0,99,1,0,0,0,0,0,0,0,0,0, @@ -662,7 +662,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,114,103,115,218,6,109,101,116,104,111,100,115,5,0,0, 0,32,32,32,32,128,114,7,0,0,0,218,19,95,99,104, 101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,114, - 38,2,0,0,115,18,0,0,0,8,1,8,1,10,1,4, + 39,2,0,0,115,18,0,0,0,8,1,8,1,10,1,4, 1,12,1,2,255,2,1,6,255,24,2,114,9,0,0,0, 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, @@ -680,22 +680,22 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,99,116,95,95,218,6,117,112,100,97,116,101,41,3,90, 3,110,101,119,90,3,111,108,100,114,85,0,0,0,115,3, 0,0,0,32,32,32,114,7,0,0,0,218,5,95,119,114, - 97,112,51,2,0,0,115,10,0,0,0,8,1,10,1,18, + 97,112,52,2,0,0,115,10,0,0,0,8,1,10,1,18, 1,2,128,18,1,114,9,0,0,0,122,26,95,99,104,101, 99,107,95,110,97,109,101,46,60,108,111,99,97,108,115,62, 46,95,119,114,97,112,114,69,0,0,0,41,2,218,10,95, 98,111,111,116,115,116,114,97,112,114,157,0,0,0,41,3, 114,146,0,0,0,114,147,0,0,0,114,157,0,0,0,115, 3,0,0,0,96,32,32,114,7,0,0,0,218,11,95,99, - 104,101,99,107,95,110,97,109,101,30,2,0,0,115,14,0, + 104,101,99,107,95,110,97,109,101,31,2,0,0,115,14,0, 0,0,2,128,14,8,8,10,8,1,8,2,10,6,4,1, 114,9,0,0,0,114,159,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,115, - 72,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, + 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, + 72,0,0,0,116,0,106,1,100,1,116,2,131,2,1,0, 124,0,160,3,124,1,161,1,92,2,125,2,125,3,124,2, 100,2,117,0,114,34,116,4,124,3,131,1,114,34,100,3, - 125,4,116,0,160,1,124,4,160,5,124,3,100,4,25,0, - 161,1,116,6,161,2,1,0,124,2,83,0,41,5,122,155, + 125,4,116,0,106,1,124,4,160,5,124,3,100,4,25,0, + 161,1,116,6,131,2,1,0,124,2,83,0,41,5,122,155, 84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,111, 97,100,101,114,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,98,121, @@ -722,7 +722,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,109,101,218,6,108,111,97,100,101,114,218,8,112,111,114, 116,105,111,110,115,218,3,109,115,103,115,5,0,0,0,32, 32,32,32,32,114,7,0,0,0,218,17,95,102,105,110,100, - 95,109,111,100,117,108,101,95,115,104,105,109,61,2,0,0, + 95,109,111,100,117,108,101,95,115,104,105,109,62,2,0,0, 115,16,0,0,0,6,7,2,2,4,254,14,6,16,1,4, 1,22,1,4,1,114,9,0,0,0,114,166,0,0,0,99, 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, @@ -790,7 +790,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,116,97,105,108,115,90,5,109,97,103,105,99,114,117,0, 0,0,114,17,0,0,0,115,6,0,0,0,32,32,32,32, 32,32,114,7,0,0,0,218,13,95,99,108,97,115,115,105, - 102,121,95,112,121,99,81,2,0,0,115,28,0,0,0,12, + 102,121,95,112,121,99,82,2,0,0,115,28,0,0,0,12, 16,8,1,16,1,12,1,16,1,12,1,10,1,12,1,8, 1,16,1,8,2,16,1,16,1,4,1,114,9,0,0,0, 114,175,0,0,0,99,5,0,0,0,0,0,0,0,0,0, @@ -845,7 +845,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,122,101,114,141,0,0,0,114,174,0,0,0,114,117,0, 0,0,115,6,0,0,0,32,32,32,32,32,32,114,7,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,2,0,0,115, + 109,101,115,116,97,109,112,95,112,121,99,115,2,0,0,115, 18,0,0,0,24,19,10,1,12,1,16,1,8,1,22,1, 2,255,22,2,8,254,114,9,0,0,0,114,179,0,0,0, 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, @@ -892,13 +892,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,97,115,104,114,141,0,0,0,114,174,0,0,0,115,4, 0,0,0,32,32,32,32,114,7,0,0,0,218,18,95,118, 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, - 142,2,0,0,115,14,0,0,0,16,17,2,1,8,1,4, + 143,2,0,0,115,14,0,0,0,16,17,2,1,8,1,4, 255,2,2,6,254,4,255,114,9,0,0,0,114,181,0,0, 0,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,115,76,0,0,0,116,0,160,1,124, - 0,161,1,125,4,116,2,124,4,116,3,131,2,114,28,116, + 0,0,3,0,0,0,115,76,0,0,0,116,0,106,1,124, + 0,131,1,125,4,116,2,124,4,116,3,131,2,114,28,116, 4,160,5,100,1,124,2,161,2,1,0,124,3,100,2,117, - 1,114,26,116,6,160,7,124,4,124,3,161,2,1,0,124, + 1,114,26,116,6,106,7,124,4,124,3,131,2,1,0,124, 4,83,0,116,8,100,3,160,9,124,2,161,1,124,1,124, 2,100,4,141,3,130,1,41,5,122,35,67,111,109,112,105, 108,101,32,98,121,116,101,99,111,100,101,32,97,115,32,102, @@ -915,15 +915,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,5,114,42,0,0,0,114,141,0,0,0,114,132,0, 0,0,114,134,0,0,0,218,4,99,111,100,101,115,5,0, 0,0,32,32,32,32,32,114,7,0,0,0,218,17,95,99, - 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,166, + 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,167, 2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,1, 12,1,4,1,10,2,4,1,6,255,114,9,0,0,0,114, 188,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,3,0,0,0,115,70,0,0,0,116,0, + 0,4,0,0,0,3,0,0,0,115,70,0,0,0,116,0, 116,1,131,1,125,3,124,3,160,2,116,3,100,1,131,1, 161,1,1,0,124,3,160,2,116,3,124,1,131,1,161,1, 1,0,124,3,160,2,116,3,124,2,131,1,161,1,1,0, - 124,3,160,2,116,4,160,5,124,0,161,1,161,1,1,0, + 124,3,160,2,116,4,106,5,124,0,131,1,161,1,1,0, 124,3,83,0,41,3,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, @@ -934,15 +934,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 109,101,114,178,0,0,0,114,42,0,0,0,115,4,0,0, 0,32,32,32,32,114,7,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,179,2,0,0,115,12,0,0,0,8,2,14,1,14, + 121,99,180,2,0,0,115,12,0,0,0,8,2,14,1,14, 1,14,1,16,1,4,1,114,9,0,0,0,114,193,0,0, - 0,84,99,3,0,0,0,0,0,0,0,0,0,0,0,5, + 0,84,99,3,0,0,0,0,0,0,0,0,0,0,0,4, 0,0,0,3,0,0,0,115,80,0,0,0,116,0,116,1, 131,1,125,3,100,1,124,2,100,1,62,0,66,0,125,4, 124,3,160,2,116,3,124,4,131,1,161,1,1,0,116,4, 124,1,131,1,100,2,107,2,115,25,74,0,130,1,124,3, - 160,2,124,1,161,1,1,0,124,3,160,2,116,5,160,6, - 124,0,161,1,161,1,1,0,124,3,83,0,41,4,122,38, + 160,2,124,1,161,1,1,0,124,3,160,2,116,5,106,6, + 124,0,131,1,161,1,1,0,124,3,83,0,41,4,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,3,0,0,0,114,169,0,0,0, @@ -952,13 +952,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,90,7,99,104,101,99,107,101,100,114,42,0,0,0, 114,17,0,0,0,115,5,0,0,0,32,32,32,32,32,114, 7,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104, - 97,115,104,95,112,121,99,189,2,0,0,115,14,0,0,0, + 97,115,104,95,112,121,99,190,2,0,0,115,14,0,0,0, 8,2,12,1,14,1,16,1,10,1,16,1,4,1,114,9, 0,0,0,114,194,0,0,0,99,1,0,0,0,0,0,0, 0,0,0,0,0,6,0,0,0,3,0,0,0,115,62,0, - 0,0,100,1,100,2,108,0,125,1,116,1,160,2,124,0, - 161,1,106,3,125,2,124,1,160,4,124,2,161,1,125,3, - 116,1,160,5,100,2,100,3,161,2,125,4,124,4,160,6, + 0,0,100,1,100,2,108,0,125,1,116,1,106,2,124,0, + 131,1,106,3,125,2,124,1,160,4,124,2,161,1,125,3, + 116,1,106,5,100,2,100,3,131,2,125,4,124,4,160,6, 124,0,160,6,124,3,100,1,25,0,161,1,161,1,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, @@ -980,7 +980,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,103,90,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,7,0, 0,0,218,13,100,101,99,111,100,101,95,115,111,117,114,99, - 101,200,2,0,0,115,10,0,0,0,8,5,12,1,10,1, + 101,201,2,0,0,115,10,0,0,0,8,5,12,1,10,1, 12,1,20,1,114,9,0,0,0,114,199,0,0,0,169,2, 114,163,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, @@ -989,8 +989,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,29,100,2,125,1,116,0,124,2,100,3,131,2,114, 28,9,0,124,2,160,1,124,0,161,1,125,1,110,39,35, 0,4,0,116,2,121,157,1,0,1,0,1,0,89,0,110, - 30,37,0,110,28,116,3,160,4,124,1,161,1,125,1,116, - 5,124,1,131,1,115,57,9,0,116,6,116,3,160,7,161, + 30,37,0,110,28,116,3,106,4,124,1,131,1,125,1,116, + 5,124,1,131,1,115,57,9,0,116,6,116,3,106,7,131, 0,124,1,131,2,125,1,110,10,35,0,4,0,116,8,121, 156,1,0,1,0,1,0,89,0,110,1,37,0,116,9,160, 10,124,0,124,2,124,1,100,4,166,3,125,4,100,5,124, @@ -1045,7 +1045,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,120,101,115,114,205,0,0,0,90,7,100,105,114,110,97, 109,101,115,9,0,0,0,32,32,32,32,32,32,32,32,32, 114,7,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,217,2, + 95,102,105,108,101,95,108,111,99,97,116,105,111,110,218,2, 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, @@ -1078,17 +1078,17 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,8,0,0, - 0,3,0,0,0,115,52,0,0,0,9,0,116,0,160,1, - 116,0,106,2,124,0,161,2,83,0,35,0,4,0,116,3, - 121,25,1,0,1,0,1,0,116,0,160,1,116,0,106,4, - 124,0,161,2,6,0,89,0,83,0,37,0,119,0,114,69, + 0,3,0,0,0,115,52,0,0,0,9,0,116,0,106,1, + 116,0,106,2,124,0,131,2,83,0,35,0,4,0,116,3, + 121,25,1,0,1,0,1,0,116,0,106,1,116,0,106,4, + 124,0,131,2,6,0,89,0,83,0,37,0,119,0,114,69, 0,0,0,41,5,218,6,119,105,110,114,101,103,90,7,79, 112,101,110,75,101,121,90,17,72,75,69,89,95,67,85,82, 82,69,78,84,95,85,83,69,82,114,76,0,0,0,90,18, 72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,73, 78,69,114,20,0,0,0,115,1,0,0,0,32,114,7,0, 0,0,218,14,95,111,112,101,110,95,114,101,103,105,115,116, - 114,121,46,3,0,0,115,14,0,0,0,2,2,14,1,2, + 114,121,47,3,0,0,115,14,0,0,0,2,2,14,1,2, 128,12,1,18,1,2,128,2,255,115,12,0,0,0,129,6, 8,0,136,14,24,7,153,1,24,7,122,36,87,105,110,100, 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101, @@ -1098,8 +1098,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,0,106,1,125,2,110,3,124,0,106,2,125,2,124,2, 160,3,124,1,100,1,116,4,106,5,100,0,100,2,133,2, 25,0,22,0,100,3,166,2,125,3,9,0,124,0,160,6, - 124,3,161,1,53,0,125,4,116,7,160,8,124,4,100,4, - 161,2,125,5,100,0,4,0,4,0,131,3,1,0,110,11, + 124,3,161,1,53,0,125,4,116,7,106,8,124,4,100,4, + 131,2,125,5,100,0,4,0,4,0,131,3,1,0,110,11, 35,0,49,0,115,48,119,4,37,0,1,0,1,0,1,0, 89,0,1,0,1,0,124,5,83,0,35,0,4,0,116,9, 121,67,1,0,1,0,1,0,89,0,100,0,83,0,37,0, @@ -1116,7 +1116,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,116,114,121,95,107,101,121,114,21,0,0,0,90,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,7,0,0,0,218,16,95, - 115,101,97,114,99,104,95,114,101,103,105,115,116,114,121,53, + 115,101,97,114,99,104,95,114,101,103,105,115,116,114,121,54, 3,0,0,115,36,0,0,0,6,2,8,1,6,2,6,1, 16,1,6,255,2,2,12,1,12,1,20,255,2,128,12,0, 4,4,2,128,12,254,6,1,2,128,2,255,115,39,0,0, @@ -1142,7 +1142,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,65,0,0,0,218,6,116,97,114,103,101,116,114,221,0, 0,0,114,163,0,0,0,114,211,0,0,0,114,209,0,0, 0,115,8,0,0,0,32,32,32,32,32,32,32,32,114,7, - 0,0,0,218,9,102,105,110,100,95,115,112,101,99,68,3, + 0,0,0,218,9,102,105,110,100,95,115,112,101,99,69,3, 0,0,115,38,0,0,0,10,2,8,1,4,1,2,1,10, 1,2,128,12,1,6,1,2,128,14,1,14,1,6,1,8, 1,2,1,6,254,8,3,2,252,4,255,2,254,115,12,0, @@ -1150,8 +1150,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,99, 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,42,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,125, + 3,0,0,0,115,42,0,0,0,116,0,106,1,100,1,116, + 2,131,2,1,0,124,0,160,3,124,1,124,2,161,2,125, 3,124,3,100,2,117,1,114,19,124,3,106,4,83,0,100, 2,83,0,41,3,122,106,70,105,110,100,32,109,111,100,117, 108,101,32,110,97,109,101,100,32,105,110,32,116,104,101,32, @@ -1172,7 +1172,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, 114,209,0,0,0,115,4,0,0,0,32,32,32,32,114,7, 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, - 84,3,0,0,115,14,0,0,0,6,7,2,2,4,254,12, + 85,3,0,0,115,14,0,0,0,6,7,2,2,4,254,12, 3,8,1,6,1,4,2,114,9,0,0,0,122,33,87,105, 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110, 100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,169, @@ -1185,7 +1185,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,218,11,99,108,97,115,115,109,101,116,104,111,100,114,222, 0,0,0,114,225,0,0,0,114,228,0,0,0,114,12,0, 0,0,114,9,0,0,0,114,7,0,0,0,114,213,0,0, - 0,34,3,0,0,115,30,0,0,0,8,0,4,2,2,3, + 0,35,3,0,0,115,30,0,0,0,8,0,4,2,2,3, 2,255,2,4,2,255,12,3,2,2,10,1,2,6,10,1, 2,14,12,1,2,15,16,1,114,9,0,0,0,114,213,0, 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2, @@ -1221,7 +1221,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,90,13,102,105,108,101,110,97,109,101,95,98,97, 115,101,90,9,116,97,105,108,95,110,97,109,101,115,5,0, 0,0,32,32,32,32,32,114,7,0,0,0,114,205,0,0, - 0,106,3,0,0,115,8,0,0,0,18,3,16,1,14,1, + 0,107,3,0,0,115,8,0,0,0,18,3,16,1,14,1, 16,1,114,9,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, @@ -1231,7 +1231,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,114,101,97,116,105,111,110,46,78,114,12,0,0,0,169, 2,114,143,0,0,0,114,209,0,0,0,115,2,0,0,0, 32,32,114,7,0,0,0,218,13,99,114,101,97,116,101,95, - 109,111,100,117,108,101,114,3,0,0,243,2,0,0,0,4, + 109,111,100,117,108,101,115,3,0,0,243,2,0,0,0,4, 0,114,9,0,0,0,122,27,95,76,111,97,100,101,114,66, 97,115,105,99,115,46,99,114,101,97,116,101,95,109,111,100, 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, @@ -1251,7 +1251,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,120,101,99,114,155,0,0,0,41,3,114,143,0,0,0, 218,6,109,111,100,117,108,101,114,187,0,0,0,115,3,0, 0,0,32,32,32,114,7,0,0,0,218,11,101,120,101,99, - 95,109,111,100,117,108,101,117,3,0,0,115,12,0,0,0, + 95,109,111,100,117,108,101,118,3,0,0,115,12,0,0,0, 12,2,8,1,4,1,8,1,4,255,20,2,114,9,0,0, 0,122,25,95,76,111,97,100,101,114,66,97,115,105,99,115, 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, @@ -1263,13 +1263,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 109,111,100,117,108,101,95,115,104,105,109,169,2,114,143,0, 0,0,114,162,0,0,0,115,2,0,0,0,32,32,114,7, 0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101, - 125,3,0,0,115,2,0,0,0,12,3,114,9,0,0,0, + 126,3,0,0,115,2,0,0,0,12,3,114,9,0,0,0, 122,25,95,76,111,97,100,101,114,66,97,115,105,99,115,46, 108,111,97,100,95,109,111,100,117,108,101,78,41,8,114,149, 0,0,0,114,148,0,0,0,114,150,0,0,0,114,151,0, 0,0,114,205,0,0,0,114,238,0,0,0,114,244,0,0, 0,114,247,0,0,0,114,12,0,0,0,114,9,0,0,0, - 114,7,0,0,0,114,234,0,0,0,101,3,0,0,115,12, + 114,7,0,0,0,114,234,0,0,0,102,3,0,0,115,12, 0,0,0,8,0,4,2,8,3,8,8,8,3,12,8,114, 9,0,0,0,114,234,0,0,0,99,0,0,0,0,0,0, 0,0,0,0,0,0,3,0,0,0,0,0,0,0,115,74, @@ -1294,7 +1294,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,32,78,41,1,114,76,0,0,0,169,2,114,143, 0,0,0,114,65,0,0,0,115,2,0,0,0,32,32,114, 7,0,0,0,218,10,112,97,116,104,95,109,116,105,109,101, - 133,3,0,0,115,2,0,0,0,4,6,114,9,0,0,0, + 134,3,0,0,115,2,0,0,0,4,6,114,9,0,0,0, 122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,112, 97,116,104,95,109,116,105,109,101,99,2,0,0,0,0,0, 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,14, @@ -1328,7 +1328,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,32,32,32,114,192,0,0,0,78,41,1,114,250, 0,0,0,114,249,0,0,0,115,2,0,0,0,32,32,114, 7,0,0,0,218,10,112,97,116,104,95,115,116,97,116,115, - 141,3,0,0,115,2,0,0,0,14,12,114,9,0,0,0, + 142,3,0,0,115,2,0,0,0,14,12,114,9,0,0,0, 122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,112, 97,116,104,95,115,116,97,116,115,99,4,0,0,0,0,0, 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,12, @@ -1352,7 +1352,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 90,10,99,97,99,104,101,95,112,97,116,104,114,42,0,0, 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, 15,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101, - 155,3,0,0,115,2,0,0,0,12,8,114,9,0,0,0, + 156,3,0,0,115,2,0,0,0,12,8,114,9,0,0,0, 122,28,83,111,117,114,99,101,76,111,97,100,101,114,46,95, 99,97,99,104,101,95,98,121,116,101,99,111,100,101,99,3, 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, @@ -1368,7 +1368,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,101,32,102,105,108,101,115,46,10,32,32,32,32,32,32, 32,32,78,114,12,0,0,0,41,3,114,143,0,0,0,114, 65,0,0,0,114,42,0,0,0,115,3,0,0,0,32,32, - 32,114,7,0,0,0,114,252,0,0,0,165,3,0,0,114, + 32,114,7,0,0,0,114,252,0,0,0,166,3,0,0,114, 239,0,0,0,114,9,0,0,0,122,21,83,111,117,114,99, 101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,97, 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, @@ -1388,7 +1388,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,199,0,0,0,41,5,114,143,0,0,0,114,162, 0,0,0,114,65,0,0,0,114,197,0,0,0,218,3,101, 120,99,115,5,0,0,0,32,32,32,32,32,114,7,0,0, - 0,218,10,103,101,116,95,115,111,117,114,99,101,172,3,0, + 0,218,10,103,101,116,95,115,111,117,114,99,101,173,3,0, 0,115,26,0,0,0,10,2,2,1,10,1,8,4,2,128, 12,253,4,1,2,1,4,255,2,1,2,255,10,128,2,255, 115,20,0,0,0,134,5,15,0,143,7,33,7,150,7,29, @@ -1412,7 +1412,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,218,7,99,111,109,112,105,108,101,41,4,114,143,0, 0,0,114,42,0,0,0,114,65,0,0,0,114,1,1,0, 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, - 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,182, + 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,183, 3,0,0,115,6,0,0,0,12,5,4,1,6,255,114,9, 0,0,0,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, @@ -1433,8 +1433,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,8,107,3,125,6,124,6,114,141,124,12,100,9,64,0, 100,8,107,3,125,7,116,9,106,10,100,10,107,3,114,140, 124,7,115,122,116,9,106,10,100,11,107,2,114,140,124,0, - 160,6,124,2,161,1,125,4,116,9,160,11,116,12,124,4, - 161,2,125,5,116,13,124,10,124,5,124,1,124,11,131,4, + 160,6,124,2,161,1,125,4,116,9,106,11,116,12,124,4, + 131,2,125,5,116,13,124,10,124,5,124,1,124,11,131,4, 1,0,110,10,116,14,124,10,124,3,124,9,100,12,25,0, 124,1,124,11,131,5,1,0,110,13,35,0,4,0,116,15, 116,16,102,2,144,1,121,10,1,0,1,0,1,0,89,0, @@ -1445,7 +1445,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,17,160,18,100,15,124,2,161,2,1,0,116,21,106,22, 144,1,115,7,124,8,100,1,117,1,144,1,114,7,124,3, 100,1,117,1,144,1,114,7,124,6,114,233,124,5,100,1, - 117,0,114,226,116,9,160,11,124,4,161,1,125,5,116,23, + 117,0,114,226,116,9,106,11,124,4,131,1,125,5,116,23, 124,14,124,5,124,7,131,3,125,10,110,8,116,24,124,14, 124,3,116,25,124,4,131,1,131,3,125,10,9,0,124,0, 160,26,124,2,124,8,124,10,161,3,1,0,124,14,83,0, @@ -1490,7 +1490,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,17,0,0,0,90,10,98,121,116,101,115,95,100,97,116, 97,90,11,99,111,100,101,95,111,98,106,101,99,116,115,15, 0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,240,0,0,0,190,3,0,0, + 32,32,114,7,0,0,0,114,240,0,0,0,191,3,0,0, 115,188,0,0,0,10,7,4,1,4,1,4,1,4,1,4, 1,2,1,10,1,2,128,14,1,8,1,2,128,2,2,12, 1,2,128,14,1,4,1,2,128,12,2,2,1,12,1,2, @@ -1514,7 +1514,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 250,0,0,0,114,251,0,0,0,114,253,0,0,0,114,252, 0,0,0,114,0,1,0,0,114,4,1,0,0,114,240,0, 0,0,114,12,0,0,0,114,9,0,0,0,114,7,0,0, - 0,114,248,0,0,0,131,3,0,0,115,16,0,0,0,8, + 0,114,248,0,0,0,132,3,0,0,115,16,0,0,0,8, 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, 9,0,0,0,114,248,0,0,0,99,0,0,0,0,0,0, 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,94, @@ -1541,7 +1541,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,10,32,32,32,32,32,32,32,32,102,105,110,100,101,114, 46,78,114,182,0,0,0,41,3,114,143,0,0,0,114,162, 0,0,0,114,65,0,0,0,115,3,0,0,0,32,32,32, - 114,7,0,0,0,114,235,0,0,0,24,4,0,0,115,4, + 114,7,0,0,0,114,235,0,0,0,25,4,0,0,115,4, 0,0,0,6,3,10,1,114,9,0,0,0,122,19,70,105, 108,101,76,111,97,100,101,114,46,95,95,105,110,105,116,95, 95,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, @@ -1550,7 +1550,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 2,83,0,114,69,0,0,0,169,2,218,9,95,95,99,108, 97,115,115,95,95,114,155,0,0,0,169,2,114,143,0,0, 0,90,5,111,116,104,101,114,115,2,0,0,0,32,32,114, - 7,0,0,0,218,6,95,95,101,113,95,95,30,4,0,0, + 7,0,0,0,218,6,95,95,101,113,95,95,31,4,0,0, 243,6,0,0,0,12,1,10,1,2,255,114,9,0,0,0, 122,17,70,105,108,101,76,111,97,100,101,114,46,95,95,101, 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, @@ -1559,7 +1559,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,69,0,0,0,169,3,218,4,104,97,115,104,114,141, 0,0,0,114,65,0,0,0,169,1,114,143,0,0,0,115, 1,0,0,0,32,114,7,0,0,0,218,8,95,95,104,97, - 115,104,95,95,34,4,0,0,243,2,0,0,0,20,1,114, + 115,104,95,95,35,4,0,0,243,2,0,0,0,20,1,114, 9,0,0,0,122,19,70,105,108,101,76,111,97,100,101,114, 46,95,95,104,97,115,104,95,95,99,2,0,0,0,0,0, 0,0,0,0,0,0,3,0,0,0,3,0,0,0,115,16, @@ -1574,7 +1574,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,117,112,101,114,114,10,1,0,0,114,247,0,0,0,41, 3,114,143,0,0,0,114,162,0,0,0,114,13,1,0,0, 115,3,0,0,0,32,32,128,114,7,0,0,0,114,247,0, - 0,0,37,4,0,0,115,2,0,0,0,16,10,114,9,0, + 0,0,38,4,0,0,115,2,0,0,0,16,10,114,9,0, 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,99,2,0,0,0,0, 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,243, @@ -1584,16 +1584,16 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,97,115,32,102,111,117,110,100,32,98,121,32,116,104,101, 32,102,105,110,100,101,114,46,78,114,74,0,0,0,114,246, 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, - 202,0,0,0,49,4,0,0,243,2,0,0,0,6,3,114, + 202,0,0,0,50,4,0,0,243,2,0,0,0,6,3,114, 9,0,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,99,2,0, 0,0,0,0,0,0,0,0,0,0,9,0,0,0,3,0, 0,0,115,136,0,0,0,116,0,124,0,116,1,116,2,102, - 2,131,2,114,38,116,3,160,4,116,5,124,1,131,1,161, + 2,131,2,114,38,116,3,106,4,116,5,124,1,131,1,131, 1,53,0,125,2,124,2,160,6,161,0,2,0,100,1,4, 0,4,0,131,3,1,0,83,0,35,0,49,0,115,30,119, 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,100, - 1,83,0,116,3,160,7,124,1,100,2,161,2,53,0,125, + 1,83,0,116,3,106,7,124,1,100,2,131,2,53,0,125, 2,124,2,160,6,161,0,2,0,100,1,4,0,4,0,131, 3,1,0,83,0,35,0,49,0,115,60,119,4,37,0,1, 0,1,0,1,0,89,0,1,0,1,0,100,1,83,0,41, @@ -1606,7 +1606,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 109,0,0,0,90,4,114,101,97,100,114,92,0,0,0,41, 3,114,143,0,0,0,114,65,0,0,0,114,94,0,0,0, 115,3,0,0,0,32,32,32,114,7,0,0,0,114,254,0, - 0,0,54,4,0,0,115,22,0,0,0,14,2,16,1,6, + 0,0,55,4,0,0,115,22,0,0,0,14,2,16,1,6, 1,22,255,2,128,16,0,14,3,6,1,22,255,2,128,16, 0,115,24,0,0,0,142,4,25,3,153,4,29,11,158,3, 29,11,172,4,55,3,183,4,59,11,188,3,59,11,122,19, @@ -1620,7 +1620,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,3,114,143,0,0,0,114,243,0,0,0,114,29,1, 0,0,115,3,0,0,0,32,32,32,114,7,0,0,0,218, 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, - 97,100,101,114,63,4,0,0,115,4,0,0,0,12,2,8, + 97,100,101,114,64,4,0,0,115,4,0,0,0,12,2,8, 1,114,9,0,0,0,122,30,70,105,108,101,76,111,97,100, 101,114,46,103,101,116,95,114,101,115,111,117,114,99,101,95, 114,101,97,100,101,114,41,13,114,149,0,0,0,114,148,0, @@ -1629,7 +1629,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,247,0,0,0,114,202,0,0,0,114,254,0,0,0,114, 31,1,0,0,90,13,95,95,99,108,97,115,115,99,101,108, 108,95,95,41,1,114,13,1,0,0,115,1,0,0,0,64, - 114,7,0,0,0,114,10,1,0,0,19,4,0,0,115,24, + 114,7,0,0,0,114,10,1,0,0,20,4,0,0,115,24, 0,0,0,10,128,4,2,8,3,8,6,8,4,2,3,14, 1,2,11,10,1,8,4,2,9,18,1,114,9,0,0,0, 114,10,1,0,0,99,0,0,0,0,0,0,0,0,0,0, @@ -1652,7 +1652,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,105,109,101,90,7,115,116,95,115,105,122,101,41,3,114, 143,0,0,0,114,65,0,0,0,114,9,1,0,0,115,3, 0,0,0,32,32,32,114,7,0,0,0,114,251,0,0,0, - 73,4,0,0,115,4,0,0,0,8,2,14,1,114,9,0, + 74,4,0,0,115,4,0,0,0,8,2,14,1,114,9,0, 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,99, 4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, @@ -1662,7 +1662,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 139,0,0,0,114,252,0,0,0,41,5,114,143,0,0,0, 114,134,0,0,0,114,132,0,0,0,114,42,0,0,0,114, 78,0,0,0,115,5,0,0,0,32,32,32,32,32,114,7, - 0,0,0,114,253,0,0,0,78,4,0,0,115,4,0,0, + 0,0,0,114,253,0,0,0,79,4,0,0,115,4,0,0, 0,8,2,16,1,114,9,0,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,114,87,0,0, @@ -1673,7 +1673,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, - 131,2,125,4,9,0,116,5,160,6,124,4,161,1,1,0, + 131,2,125,4,9,0,116,5,106,6,124,4,131,1,1,0, 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, @@ -1698,7 +1698,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, 0,0,0,114,255,0,0,0,115,9,0,0,0,32,32,32, 32,32,32,32,32,32,114,7,0,0,0,114,252,0,0,0, - 83,4,0,0,115,60,0,0,0,12,2,4,1,12,2,12, + 84,4,0,0,115,60,0,0,0,12,2,4,1,12,2,12, 1,10,1,12,254,12,4,10,1,2,1,12,1,2,128,12, 1,4,2,12,1,6,3,4,1,4,255,14,2,10,128,2, 1,12,1,16,1,2,128,12,1,8,2,2,1,16,255,10, @@ -1711,7 +1711,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,116,97,78,41,7,114,149,0,0,0,114,148,0,0,0, 114,150,0,0,0,114,151,0,0,0,114,251,0,0,0,114, 253,0,0,0,114,252,0,0,0,114,12,0,0,0,114,9, - 0,0,0,114,7,0,0,0,114,32,1,0,0,69,4,0, + 0,0,0,114,7,0,0,0,114,32,1,0,0,70,4,0, 0,115,10,0,0,0,8,0,4,2,8,2,8,5,18,5, 114,9,0,0,0,114,32,1,0,0,99,0,0,0,0,0, 0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,115, @@ -1733,7 +1733,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,188,0,0,0,114,6,1,0,0,41,5,114, 143,0,0,0,114,162,0,0,0,114,65,0,0,0,114,42, 0,0,0,114,174,0,0,0,115,5,0,0,0,32,32,32, - 32,32,114,7,0,0,0,114,240,0,0,0,118,4,0,0, + 32,32,114,7,0,0,0,114,240,0,0,0,119,4,0,0, 115,22,0,0,0,10,1,10,1,2,4,2,1,6,254,12, 4,2,1,14,1,2,1,2,1,6,253,114,9,0,0,0, 122,29,83,111,117,114,99,101,108,101,115,115,70,105,108,101, @@ -1744,13 +1744,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,32,105,115,32,110,111,32,115,111,117,114,99,101,32,99, 111,100,101,46,78,114,12,0,0,0,114,246,0,0,0,115, 2,0,0,0,32,32,114,7,0,0,0,114,0,1,0,0, - 134,4,0,0,114,25,0,0,0,114,9,0,0,0,122,31, + 135,4,0,0,114,25,0,0,0,114,9,0,0,0,122,31, 83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111, 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,78, 41,6,114,149,0,0,0,114,148,0,0,0,114,150,0,0, 0,114,151,0,0,0,114,240,0,0,0,114,0,1,0,0, 114,12,0,0,0,114,9,0,0,0,114,7,0,0,0,114, - 39,1,0,0,114,4,0,0,115,8,0,0,0,8,0,4, + 39,1,0,0,115,4,0,0,115,8,0,0,0,8,0,4, 2,8,2,12,16,114,9,0,0,0,114,39,1,0,0,99, 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, 0,0,0,0,115,92,0,0,0,101,0,90,1,100,0,90, @@ -1771,19 +1771,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,100,0,83,0,114,69,0,0,0,114,182,0,0,0,41, 3,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, 115,3,0,0,0,32,32,32,114,7,0,0,0,114,235,0, - 0,0,147,4,0,0,115,4,0,0,0,6,1,10,1,114, + 0,0,148,4,0,0,115,4,0,0,0,6,1,10,1,114, 9,0,0,0,122,28,69,120,116,101,110,115,105,111,110,70, 105,108,101,76,111,97,100,101,114,46,95,95,105,110,105,116, 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,2, 0,0,0,3,0,0,0,114,11,1,0,0,114,69,0,0, 0,114,12,1,0,0,114,14,1,0,0,115,2,0,0,0, - 32,32,114,7,0,0,0,114,15,1,0,0,151,4,0,0, + 32,32,114,7,0,0,0,114,15,1,0,0,152,4,0,0, 114,16,1,0,0,114,9,0,0,0,122,26,69,120,116,101, 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,46, 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,0, 0,0,0,3,0,0,0,3,0,0,0,114,17,1,0,0, 114,69,0,0,0,114,18,1,0,0,114,20,1,0,0,115, - 1,0,0,0,32,114,7,0,0,0,114,21,1,0,0,155, + 1,0,0,0,32,114,7,0,0,0,114,21,1,0,0,156, 4,0,0,114,22,1,0,0,114,9,0,0,0,122,28,69, 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, 101,114,46,95,95,104,97,115,104,95,95,99,2,0,0,0, @@ -1801,7 +1801,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 172,0,0,0,114,141,0,0,0,114,65,0,0,0,41,3, 114,143,0,0,0,114,209,0,0,0,114,243,0,0,0,115, 3,0,0,0,32,32,32,114,7,0,0,0,114,238,0,0, - 0,158,4,0,0,115,14,0,0,0,4,2,6,1,4,255, + 0,159,4,0,0,115,14,0,0,0,4,2,6,1,4,255, 6,2,8,1,4,255,4,2,114,9,0,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, @@ -1818,7 +1818,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,99,95,100,121,110,97,109,105,99,114,172,0,0,0,114, 141,0,0,0,114,65,0,0,0,169,2,114,143,0,0,0, 114,243,0,0,0,115,2,0,0,0,32,32,114,7,0,0, - 0,114,244,0,0,0,166,4,0,0,115,8,0,0,0,14, + 0,114,244,0,0,0,167,4,0,0,115,8,0,0,0,14, 2,6,1,8,1,8,255,114,9,0,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,99,2,0, @@ -1836,7 +1836,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 235,0,0,0,78,114,12,0,0,0,41,3,114,5,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,7,0,0, - 0,114,8,0,0,0,175,4,0,0,115,8,0,0,0,2, + 0,114,8,0,0,0,176,4,0,0,115,8,0,0,0,2, 128,4,0,2,1,20,255,114,9,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, @@ -1844,7 +1844,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,4,114,73,0,0,0,114,65,0,0,0,218,3,97,110, 121,114,231,0,0,0,41,3,114,143,0,0,0,114,162,0, 0,0,114,42,1,0,0,115,3,0,0,0,32,32,64,114, - 7,0,0,0,114,205,0,0,0,172,4,0,0,115,10,0, + 7,0,0,0,114,205,0,0,0,173,4,0,0,115,10,0, 0,0,2,128,14,2,12,1,2,1,8,255,114,9,0,0, 0,122,30,69,120,116,101,110,115,105,111,110,70,105,108,101, 76,111,97,100,101,114,46,105,115,95,112,97,99,107,97,103, @@ -1855,7 +1855,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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, 12,0,0,0,114,246,0,0,0,115,2,0,0,0,32,32, - 114,7,0,0,0,114,240,0,0,0,178,4,0,0,114,25, + 114,7,0,0,0,114,240,0,0,0,179,4,0,0,114,25, 0,0,0,114,9,0,0,0,122,28,69,120,116,101,110,115, 105,111,110,70,105,108,101,76,111,97,100,101,114,46,103,101, 116,95,99,111,100,101,99,2,0,0,0,0,0,0,0,0, @@ -1865,13 +1865,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,12,0,0,0,114, 246,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, - 114,0,1,0,0,182,4,0,0,114,25,0,0,0,114,9, + 114,0,1,0,0,183,4,0,0,114,25,0,0,0,114,9, 0,0,0,122,30,69,120,116,101,110,115,105,111,110,70,105, 108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117, 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, 1,0,0,0,3,0,0,0,114,24,1,0,0,114,25,1, 0,0,114,74,0,0,0,114,246,0,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,202,0,0,0,186,4,0, + 0,32,32,114,7,0,0,0,114,202,0,0,0,187,4,0, 0,114,26,1,0,0,114,9,0,0,0,122,32,69,120,116, 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, 46,103,101,116,95,102,105,108,101,110,97,109,101,78,41,14, @@ -1880,7 +1880,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,114,238,0,0,0,114,244,0,0,0,114,205,0, 0,0,114,240,0,0,0,114,0,1,0,0,114,159,0,0, 0,114,202,0,0,0,114,12,0,0,0,114,9,0,0,0, - 114,7,0,0,0,114,28,1,0,0,139,4,0,0,115,24, + 114,7,0,0,0,114,28,1,0,0,140,4,0,0,115,24, 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, 8,8,6,8,6,8,4,2,4,14,1,114,9,0,0,0, 114,28,1,0,0,99,0,0,0,0,0,0,0,0,0,0, @@ -1923,7 +1923,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, 90,11,112,97,116,104,95,102,105,110,100,101,114,115,4,0, 0,0,32,32,32,32,114,7,0,0,0,114,235,0,0,0, - 199,4,0,0,115,8,0,0,0,6,1,6,1,14,1,10, + 200,4,0,0,115,8,0,0,0,6,1,6,1,14,1,10, 1,114,9,0,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,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, @@ -1940,7 +1940,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,143,0,0,0,114,38,1,0,0,218,3,100,111,116,90, 2,109,101,115,4,0,0,0,32,32,32,32,114,7,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,205,4,0,0,115,8, + 112,97,116,104,95,110,97,109,101,115,206,4,0,0,115,8, 0,0,0,18,2,8,1,4,2,8,3,114,9,0,0,0, 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, @@ -1953,7 +1953,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 143,0,0,0,90,18,112,97,114,101,110,116,95,109,111,100, 117,108,101,95,110,97,109,101,90,14,112,97,116,104,95,97, 116,116,114,95,110,97,109,101,115,3,0,0,0,32,32,32, - 114,7,0,0,0,114,47,1,0,0,215,4,0,0,115,4, + 114,7,0,0,0,114,47,1,0,0,216,4,0,0,115,4, 0,0,0,12,1,16,1,114,9,0,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,99,1,0, @@ -1969,7 +1969,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,46,1,0,0,41,3,114,143,0,0,0,90,11,112, 97,114,101,110,116,95,112,97,116,104,114,209,0,0,0,115, 3,0,0,0,32,32,32,114,7,0,0,0,218,12,95,114, - 101,99,97,108,99,117,108,97,116,101,219,4,0,0,115,16, + 101,99,97,108,99,117,108,97,116,101,220,4,0,0,115,16, 0,0,0,12,2,10,1,14,1,18,3,6,1,8,1,6, 1,6,1,114,9,0,0,0,122,27,95,78,97,109,101,115, 112,97,99,101,80,97,116,104,46,95,114,101,99,97,108,99, @@ -1978,7 +1978,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,124,0,160,1,161,0,131,1,83,0,114,69,0,0,0, 41,2,218,4,105,116,101,114,114,54,1,0,0,114,20,1, 0,0,115,1,0,0,0,32,114,7,0,0,0,218,8,95, - 95,105,116,101,114,95,95,232,4,0,0,243,2,0,0,0, + 95,105,116,101,114,95,95,233,4,0,0,243,2,0,0,0, 12,1,114,9,0,0,0,122,23,95,78,97,109,101,115,112, 97,99,101,80,97,116,104,46,95,95,105,116,101,114,95,95, 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, @@ -1986,7 +1986,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,1,25,0,83,0,114,69,0,0,0,169,1,114,54,1, 0,0,41,2,114,143,0,0,0,218,5,105,110,100,101,120, 115,2,0,0,0,32,32,114,7,0,0,0,218,11,95,95, - 103,101,116,105,116,101,109,95,95,235,4,0,0,114,58,1, + 103,101,116,105,116,101,109,95,95,236,4,0,0,114,58,1, 0,0,114,9,0,0,0,122,26,95,78,97,109,101,115,112, 97,99,101,80,97,116,104,46,95,95,103,101,116,105,116,101, 109,95,95,99,3,0,0,0,0,0,0,0,0,0,0,0, @@ -1995,14 +1995,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,1,114,46,1,0,0,41,3,114,143,0,0,0,114,60, 1,0,0,114,65,0,0,0,115,3,0,0,0,32,32,32, 114,7,0,0,0,218,11,95,95,115,101,116,105,116,101,109, - 95,95,238,4,0,0,115,2,0,0,0,14,1,114,9,0, + 95,95,239,4,0,0,115,2,0,0,0,14,1,114,9,0, 0,0,122,26,95,78,97,109,101,115,112,97,99,101,80,97, 116,104,46,95,95,115,101,116,105,116,101,109,95,95,99,1, 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, 0,0,0,114,55,1,0,0,114,69,0,0,0,41,2,114, 4,0,0,0,114,54,1,0,0,114,20,1,0,0,115,1, 0,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, - 95,95,241,4,0,0,114,58,1,0,0,114,9,0,0,0, + 95,95,242,4,0,0,114,58,1,0,0,114,9,0,0,0, 122,22,95,78,97,109,101,115,112,97,99,101,80,97,116,104, 46,95,95,108,101,110,95,95,99,1,0,0,0,0,0,0, 0,0,0,0,0,3,0,0,0,3,0,0,0,243,12,0, @@ -2010,7 +2010,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 78,122,20,95,78,97,109,101,115,112,97,99,101,80,97,116, 104,40,123,33,114,125,41,41,2,114,89,0,0,0,114,46, 1,0,0,114,20,1,0,0,115,1,0,0,0,32,114,7, - 0,0,0,218,8,95,95,114,101,112,114,95,95,244,4,0, + 0,0,0,218,8,95,95,114,101,112,114,95,95,245,4,0, 0,114,58,1,0,0,114,9,0,0,0,122,23,95,78,97, 109,101,115,112,97,99,101,80,97,116,104,46,95,95,114,101, 112,114,95,95,99,2,0,0,0,0,0,0,0,0,0,0, @@ -2018,7 +2018,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,0,160,0,161,0,118,0,83,0,114,69,0,0,0,114, 59,1,0,0,169,2,114,143,0,0,0,218,4,105,116,101, 109,115,2,0,0,0,32,32,114,7,0,0,0,218,12,95, - 95,99,111,110,116,97,105,110,115,95,95,247,4,0,0,114, + 95,99,111,110,116,97,105,110,115,95,95,248,4,0,0,114, 58,1,0,0,114,9,0,0,0,122,27,95,78,97,109,101, 115,112,97,99,101,80,97,116,104,46,95,95,99,111,110,116, 97,105,110,115,95,95,99,2,0,0,0,0,0,0,0,0, @@ -2026,7 +2026,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,0,106,0,160,1,124,1,161,1,1,0,100,0,83,0, 114,69,0,0,0,41,2,114,46,1,0,0,114,61,0,0, 0,114,66,1,0,0,115,2,0,0,0,32,32,114,7,0, - 0,0,114,61,0,0,0,250,4,0,0,243,2,0,0,0, + 0,0,114,61,0,0,0,251,4,0,0,243,2,0,0,0, 16,1,114,9,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,78,41, 15,114,149,0,0,0,114,148,0,0,0,114,150,0,0,0, @@ -2035,7 +2035,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,114,62,1,0,0,114,63,1,0,0,114,65,1, 0,0,114,68,1,0,0,114,61,0,0,0,114,12,0,0, 0,114,9,0,0,0,114,7,0,0,0,114,44,1,0,0, - 192,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, + 193,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, 6,8,10,8,4,8,13,8,3,8,3,8,3,8,3,8, 3,12,3,114,9,0,0,0,114,44,1,0,0,99,0,0, 0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0, @@ -2051,12 +2051,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,124,2,124,3,131,3,124,0,95,1,100,0,83,0,114, 69,0,0,0,41,2,114,44,1,0,0,114,46,1,0,0, 114,50,1,0,0,115,4,0,0,0,32,32,32,32,114,7, - 0,0,0,114,235,0,0,0,0,5,0,0,115,2,0,0, + 0,0,0,114,235,0,0,0,1,5,0,0,115,2,0,0, 0,18,1,114,9,0,0,0,122,25,95,78,97,109,101,115, 112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,105, 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,115,24,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, + 3,0,0,0,3,0,0,0,115,24,0,0,0,116,0,106, + 1,100,1,116,2,131,2,1,0,100,2,160,3,124,0,106, 4,161,1,83,0,41,4,122,115,82,101,116,117,114,110,32, 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, @@ -2075,20 +2075,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,100,0,0,0,114,101,0,0,0,114,89,0, 0,0,114,149,0,0,0,41,1,114,243,0,0,0,115,1, 0,0,0,32,114,7,0,0,0,218,11,109,111,100,117,108, - 101,95,114,101,112,114,3,5,0,0,115,8,0,0,0,6, + 101,95,114,101,112,114,4,5,0,0,115,8,0,0,0,6, 7,2,1,4,255,12,2,114,9,0,0,0,122,28,95,78, 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,109, 111,100,117,108,101,95,114,101,112,114,99,2,0,0,0,0, 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,114, 24,0,0,0,41,2,78,84,114,12,0,0,0,114,246,0, 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,205, - 0,0,0,14,5,0,0,243,2,0,0,0,4,1,114,9, + 0,0,0,15,5,0,0,243,2,0,0,0,4,1,114,9, 0,0,0,122,27,95,78,97,109,101,115,112,97,99,101,76, 111,97,100,101,114,46,105,115,95,112,97,99,107,97,103,101, 99,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0, 0,3,0,0,0,114,24,0,0,0,41,2,78,114,10,0, 0,0,114,12,0,0,0,114,246,0,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,0,1,0,0,17,5,0, + 0,32,32,114,7,0,0,0,114,0,1,0,0,18,5,0, 0,114,72,1,0,0,114,9,0,0,0,122,27,95,78,97, 109,101,115,112,97,99,101,76,111,97,100,101,114,46,103,101, 116,95,115,111,117,114,99,101,99,2,0,0,0,0,0,0, @@ -2097,20 +2097,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 83,0,41,6,78,114,10,0,0,0,122,8,60,115,116,114, 105,110,103,62,114,242,0,0,0,84,41,1,114,2,1,0, 0,41,1,114,3,1,0,0,114,246,0,0,0,115,2,0, - 0,0,32,32,114,7,0,0,0,114,240,0,0,0,20,5, + 0,0,32,32,114,7,0,0,0,114,240,0,0,0,21,5, 0,0,114,69,1,0,0,114,9,0,0,0,122,25,95,78, 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,103, 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,3,0,0,0,114,24,0,0, 0,114,236,0,0,0,114,12,0,0,0,114,237,0,0,0, 115,2,0,0,0,32,32,114,7,0,0,0,114,238,0,0, - 0,23,5,0,0,114,239,0,0,0,114,9,0,0,0,122, + 0,24,5,0,0,114,239,0,0,0,114,9,0,0,0,122, 30,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, 114,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, 3,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, 0,0,114,12,0,0,0,114,40,1,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,244,0,0,0,26,5,0, + 0,32,32,114,7,0,0,0,114,244,0,0,0,27,5,0, 0,114,72,1,0,0,114,9,0,0,0,122,28,95,78,97, 109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,120, 101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,0, @@ -2128,7 +2128,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,32,112,97,116,104,32,123,33,114,125,78,41,4,114,158, 0,0,0,114,172,0,0,0,114,46,1,0,0,114,245,0, 0,0,114,246,0,0,0,115,2,0,0,0,32,32,114,7, - 0,0,0,114,247,0,0,0,29,5,0,0,115,8,0,0, + 0,0,0,114,247,0,0,0,30,5,0,0,115,8,0,0, 0,6,7,4,1,4,255,12,3,114,9,0,0,0,122,28, 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, 46,108,111,97,100,95,109,111,100,117,108,101,99,2,0,0, @@ -2139,7 +2139,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,82,101,97,100,101,114,41,3,114,30,1,0,0,114,73, 1,0,0,114,46,1,0,0,41,3,114,143,0,0,0,114, 243,0,0,0,114,73,1,0,0,115,3,0,0,0,32,32, - 32,114,7,0,0,0,114,31,1,0,0,41,5,0,0,115, + 32,114,7,0,0,0,114,31,1,0,0,42,5,0,0,115, 4,0,0,0,12,1,10,1,114,9,0,0,0,122,36,95, 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46, 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, @@ -2148,7 +2148,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 71,1,0,0,114,205,0,0,0,114,0,1,0,0,114,240, 0,0,0,114,238,0,0,0,114,244,0,0,0,114,247,0, 0,0,114,31,1,0,0,114,12,0,0,0,114,9,0,0, - 0,114,7,0,0,0,114,70,1,0,0,255,4,0,0,115, + 0,114,7,0,0,0,114,70,1,0,0,0,5,0,0,115, 22,0,0,0,8,0,8,1,2,3,10,1,8,10,8,3, 8,3,8,3,8,3,8,3,12,12,114,9,0,0,0,114, 70,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, @@ -2185,14 +2185,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,104,101,218,5,105,116,101,109,115,114,152,0,0,0,114, 75,1,0,0,41,2,114,141,0,0,0,218,6,102,105,110, 100,101,114,115,2,0,0,0,32,32,114,7,0,0,0,114, - 75,1,0,0,52,5,0,0,115,14,0,0,0,22,4,8, + 75,1,0,0,53,5,0,0,115,14,0,0,0,22,4,8, 1,10,1,10,1,8,1,2,128,4,252,114,9,0,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,99,1, 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,3, 0,0,0,115,78,0,0,0,116,0,106,1,100,1,117,1, - 114,14,116,0,106,1,115,14,116,2,160,3,100,2,116,4, - 161,2,1,0,116,0,106,1,68,0,93,18,125,1,9,0, + 114,14,116,0,106,1,115,14,116,2,106,3,100,2,116,4, + 131,2,1,0,116,0,106,1,68,0,93,18,125,1,9,0, 124,1,124,0,131,1,2,0,1,0,83,0,35,0,4,0, 116,5,121,38,1,0,1,0,1,0,89,0,113,17,37,0, 100,1,83,0,119,0,41,3,122,46,83,101,97,114,99,104, @@ -2204,14 +2204,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,111,111,107,115,114,99,0,0,0,114,100,0,0,0,114, 161,0,0,0,114,142,0,0,0,41,2,114,65,0,0,0, 90,4,104,111,111,107,115,2,0,0,0,32,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,62, + 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,63, 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,122, 22,80,97,116,104,70,105,110,100,101,114,46,95,112,97,116, 104,95,104,111,111,107,115,99,2,0,0,0,0,0,0,0, 0,0,0,0,8,0,0,0,3,0,0,0,115,104,0,0, - 0,124,1,100,1,107,2,114,21,9,0,116,0,160,1,161, + 0,124,1,100,1,107,2,114,21,9,0,116,0,106,1,131, 0,125,1,110,11,35,0,4,0,116,2,121,51,1,0,1, 0,1,0,89,0,100,2,83,0,37,0,9,0,116,3,106, 4,124,1,25,0,125,2,124,2,83,0,35,0,4,0,116, @@ -2238,7 +2238,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 220,0,0,0,114,65,0,0,0,114,79,1,0,0,115,3, 0,0,0,32,32,32,114,7,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,75,5,0,0,115,36,0,0,0,8,8,2,1,10,1, + 101,76,5,0,0,115,36,0,0,0,8,8,2,1,10,1, 2,128,12,1,6,3,2,128,2,1,10,1,4,4,2,128, 12,253,10,1,12,1,4,1,2,128,2,253,2,250,115,24, 0,0,0,133,4,10,0,138,7,20,7,150,5,29,0,157, @@ -2248,10 +2248,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, 0,115,138,0,0,0,116,0,124,2,100,1,131,2,114,27, 116,1,160,2,124,2,161,1,155,0,100,2,157,2,125,3, - 116,3,160,4,124,3,116,5,161,2,1,0,124,2,160,6, + 116,3,106,4,124,3,116,5,131,2,1,0,124,2,160,6, 124,1,161,1,92,2,125,4,125,5,110,21,116,1,160,2, - 124,2,161,1,155,0,100,3,157,2,125,3,116,3,160,4, - 124,3,116,5,161,2,1,0,124,2,160,7,124,1,161,1, + 124,2,161,1,155,0,100,3,157,2,125,3,116,3,106,4, + 124,3,116,5,131,2,1,0,124,2,160,7,124,1,161,1, 125,4,103,0,125,5,124,4,100,0,117,1,114,58,116,1, 160,8,124,1,124,4,161,2,83,0,116,1,160,9,124,1, 100,0,161,2,125,6,124,5,124,6,95,10,124,6,83,0, @@ -2271,7 +2271,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,164,0,0,0,114,209,0,0,0,115,7,0, 0,0,32,32,32,32,32,32,32,114,7,0,0,0,218,16, 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, - 97,5,0,0,115,26,0,0,0,10,4,16,1,12,2,16, + 98,5,0,0,115,26,0,0,0,10,4,16,1,12,2,16, 1,16,2,12,2,10,1,4,1,8,1,12,1,12,1,6, 1,4,1,114,9,0,0,0,122,27,80,97,116,104,70,105, 110,100,101,114,46,95,108,101,103,97,99,121,95,103,101,116, @@ -2303,7 +2303,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,101,110,116,114,121,114,79,1,0,0,114,209,0,0,0, 114,164,0,0,0,115,9,0,0,0,32,32,32,32,32,32, 32,32,32,114,7,0,0,0,218,9,95,103,101,116,95,115, - 112,101,99,118,5,0,0,115,42,0,0,0,4,5,8,1, + 112,101,99,119,5,0,0,115,42,0,0,0,4,5,8,1, 14,1,2,1,10,1,8,1,10,1,14,1,12,2,8,1, 2,1,10,1,8,1,6,1,8,1,8,1,10,5,2,128, 12,2,6,1,4,1,114,9,0,0,0,122,20,80,97,116, @@ -2330,13 +2330,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,6,114,220,0,0,0,114,162,0,0,0,114,65,0,0, 0,114,224,0,0,0,114,209,0,0,0,114,87,1,0,0, 115,6,0,0,0,32,32,32,32,32,32,114,7,0,0,0, - 114,225,0,0,0,150,5,0,0,115,26,0,0,0,8,6, + 114,225,0,0,0,151,5,0,0,115,26,0,0,0,8,6, 6,1,14,1,8,1,4,1,10,1,6,1,4,1,6,3, 16,1,4,1,4,2,4,2,114,9,0,0,0,122,20,80, 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,115, 112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,115,42,0,0,0,116,0,160, - 1,100,1,116,2,161,2,1,0,124,0,160,3,124,1,124, + 4,0,0,0,3,0,0,0,115,42,0,0,0,116,0,106, + 1,100,1,116,2,131,2,1,0,124,0,160,3,124,1,124, 2,161,2,125,3,124,3,100,2,117,0,114,18,100,2,83, 0,124,3,106,4,83,0,41,3,122,170,102,105,110,100,32, 116,104,101,32,109,111,100,117,108,101,32,111,110,32,115,121, @@ -2357,7 +2357,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, 101,99,40,41,32,105,110,115,116,101,97,100,78,114,226,0, 0,0,114,227,0,0,0,115,4,0,0,0,32,32,32,32, - 114,7,0,0,0,114,228,0,0,0,174,5,0,0,115,14, + 114,7,0,0,0,114,228,0,0,0,175,5,0,0,115,14, 0,0,0,6,8,2,2,4,254,12,3,8,1,4,1,6, 1,114,9,0,0,0,122,22,80,97,116,104,70,105,110,100, 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,0, @@ -2389,7 +2389,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,144,0,0,0,114,145,0, 0,0,114,89,1,0,0,115,3,0,0,0,32,32,32,114, - 7,0,0,0,114,90,1,0,0,190,5,0,0,115,4,0, + 7,0,0,0,114,90,1,0,0,191,5,0,0,115,4,0, 0,0,12,10,16,1,114,9,0,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,114,69,0,0,0,114, @@ -2399,7 +2399,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,114,85,1,0,0,114,88,1,0,0,114,225,0, 0,0,114,228,0,0,0,114,90,1,0,0,114,12,0,0, 0,114,9,0,0,0,114,7,0,0,0,114,74,1,0,0, - 48,5,0,0,115,36,0,0,0,8,0,4,2,2,2,10, + 49,5,0,0,115,36,0,0,0,8,0,4,2,2,2,10, 1,2,9,10,1,2,12,10,1,2,21,10,1,2,20,12, 1,2,31,12,1,2,23,12,1,2,15,14,1,114,9,0, 0,0,114,74,1,0,0,99,0,0,0,0,0,0,0,0, @@ -2427,7 +2427,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,125,4,124,3,160,0,136,5,102,1,100,1,100,2,132, 8,124,4,68,0,131,1,161,1,1,0,113,5,124,3,124, 0,95,1,124,1,112,28,100,3,124,0,95,2,116,3,124, - 0,106,2,131,1,115,44,116,4,116,5,160,6,161,0,124, + 0,106,2,131,1,115,44,116,4,116,5,106,6,131,0,124, 0,106,2,131,2,124,0,95,2,100,4,124,0,95,7,116, 8,131,0,124,0,95,9,116,8,131,0,124,0,95,10,100, 5,83,0,41,6,122,154,73,110,105,116,105,97,108,105,122, @@ -2446,7 +2446,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,83,0,114,69,0,0,0,114,12,0,0,0,41,3,114, 5,0,0,0,114,41,1,0,0,114,163,0,0,0,115,3, 0,0,0,32,32,128,114,7,0,0,0,114,8,0,0,0, - 219,5,0,0,115,4,0,0,0,2,128,22,0,114,9,0, + 220,5,0,0,115,4,0,0,0,2,128,22,0,114,9,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,114,97,0,0,0,114, @@ -2460,7 +2460,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 14,108,111,97,100,101,114,95,100,101,116,97,105,108,115,90, 7,108,111,97,100,101,114,115,114,211,0,0,0,114,163,0, 0,0,115,6,0,0,0,32,32,32,32,32,64,114,7,0, - 0,0,114,235,0,0,0,213,5,0,0,115,22,0,0,0, + 0,0,114,235,0,0,0,214,5,0,0,115,22,0,0,0, 2,128,4,4,12,1,26,1,6,1,10,2,10,1,18,1, 6,1,8,1,12,1,114,9,0,0,0,122,19,70,105,108, 101,70,105,110,100,101,114,46,95,95,105,110,105,116,95,95, @@ -2470,12 +2470,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,101,32,116,104,101,32,100,105,114,101,99,116,111,114,121, 32,109,116,105,109,101,46,114,130,0,0,0,78,41,1,114, 93,1,0,0,114,20,1,0,0,115,1,0,0,0,32,114, - 7,0,0,0,114,75,1,0,0,229,5,0,0,114,81,0, + 7,0,0,0,114,75,1,0,0,230,5,0,0,114,81,0, 0,0,114,9,0,0,0,122,28,70,105,108,101,70,105,110, 100,101,114,46,105,110,118,97,108,105,100,97,116,101,95,99, 97,99,104,101,115,99,2,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,3,0,0,0,115,54,0,0,0,116, - 0,160,1,100,1,116,2,161,2,1,0,124,0,160,3,124, + 0,0,3,0,0,0,3,0,0,0,115,54,0,0,0,116, + 0,106,1,100,1,116,2,131,2,1,0,124,0,160,3,124, 1,161,1,125,2,124,2,100,2,117,0,114,19,100,2,103, 0,102,2,83,0,124,2,106,4,124,2,106,5,112,25,103, 0,102,2,83,0,41,3,122,197,84,114,121,32,116,111,32, @@ -2501,7 +2501,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,101,0,0,0,114,225,0,0,0,114,163,0,0, 0,114,201,0,0,0,41,3,114,143,0,0,0,114,162,0, 0,0,114,209,0,0,0,115,3,0,0,0,32,32,32,114, - 7,0,0,0,114,160,0,0,0,235,5,0,0,115,14,0, + 7,0,0,0,114,160,0,0,0,236,5,0,0,115,14,0, 0,0,6,7,2,2,4,254,10,3,8,1,8,1,16,1, 114,9,0,0,0,122,22,70,105,108,101,70,105,110,100,101, 114,46,102,105,110,100,95,108,111,97,100,101,114,99,6,0, @@ -2512,14 +2512,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,7,114,143,0,0,0,114,210,0,0,0,114,162,0,0, 0,114,65,0,0,0,90,4,115,109,115,108,114,224,0,0, 0,114,163,0,0,0,115,7,0,0,0,32,32,32,32,32, - 32,32,114,7,0,0,0,114,88,1,0,0,250,5,0,0, + 32,32,114,7,0,0,0,114,88,1,0,0,251,5,0,0, 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, 0,0,122,20,70,105,108,101,70,105,110,100,101,114,46,95, 103,101,116,95,115,112,101,99,78,99,3,0,0,0,0,0, 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,126, 1,0,0,100,1,125,3,124,1,160,0,100,2,161,1,100, 3,25,0,125,4,9,0,116,1,124,0,106,2,112,17,116, - 3,160,4,161,0,131,1,106,5,125,5,110,12,35,0,4, + 3,106,4,131,0,131,1,106,5,125,5,110,12,35,0,4, 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, @@ -2570,7 +2570,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,97,109,101,90,9,102,117,108,108,95,112,97,116,104,114, 209,0,0,0,115,14,0,0,0,32,32,32,32,32,32,32, 32,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, - 0,255,5,0,0,115,94,0,0,0,4,5,14,1,2,1, + 0,0,6,0,0,115,94,0,0,0,4,5,14,1,2,1, 22,1,2,128,12,1,8,1,2,128,10,1,8,1,6,1, 6,2,6,1,10,1,6,2,4,1,8,2,12,1,14,1, 8,1,10,1,8,1,24,1,2,255,8,5,14,2,2,1, @@ -2582,8 +2582,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 108,101,70,105,110,100,101,114,46,102,105,110,100,95,115,112, 101,99,99,1,0,0,0,0,0,0,0,0,0,0,0,10, 0,0,0,3,0,0,0,115,194,0,0,0,124,0,106,0, - 125,1,9,0,116,1,160,2,124,1,112,11,116,1,160,3, - 161,0,161,1,125,2,110,15,35,0,4,0,116,4,116,5, + 125,1,9,0,116,1,106,2,124,1,112,11,116,1,106,3, + 131,0,131,1,125,2,110,15,35,0,4,0,116,4,116,5, 116,6,102,3,121,96,1,0,1,0,1,0,103,0,125,2, 89,0,110,1,37,0,116,7,106,8,160,9,100,1,161,1, 115,41,116,10,124,2,131,1,124,0,95,11,110,37,116,10, @@ -2604,7 +2604,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,124,0,93,6,125,1,124,1,160,0,161,0,146,2,113, 2,83,0,114,12,0,0,0,41,1,114,131,0,0,0,41, 2,114,5,0,0,0,90,2,102,110,115,2,0,0,0,32, - 32,114,7,0,0,0,114,14,0,0,0,79,6,0,0,115, + 32,114,7,0,0,0,114,14,0,0,0,80,6,0,0,115, 2,0,0,0,20,0,114,9,0,0,0,122,41,70,105,108, 101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97, 99,104,101,46,60,108,111,99,97,108,115,62,46,60,115,101, @@ -2622,7 +2622,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 67,1,0,0,114,141,0,0,0,114,51,1,0,0,114,41, 1,0,0,90,8,110,101,119,95,110,97,109,101,115,9,0, 0,0,32,32,32,32,32,32,32,32,32,114,7,0,0,0, - 114,98,1,0,0,50,6,0,0,115,42,0,0,0,6,2, + 114,98,1,0,0,51,6,0,0,115,42,0,0,0,6,2, 2,1,20,1,2,128,18,1,8,3,2,128,12,3,12,1, 6,7,8,1,16,1,4,1,18,1,4,2,12,1,6,1, 12,1,20,1,4,255,2,233,115,13,0,0,0,132,9,14, @@ -2662,7 +2662,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,65,0,0,0,114,220,0,0,0,114,97,1,0,0,115, 3,0,0,0,32,128,128,114,7,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,91,6,0,0,115,6,0,0,0,8, + 70,105,110,100,101,114,92,6,0,0,115,6,0,0,0,8, 2,12,1,16,1,114,9,0,0,0,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, @@ -2670,14 +2670,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,114,78,114,12,0,0,0,41,3,114,220,0,0,0,114, 97,1,0,0,114,102,1,0,0,115,3,0,0,0,96,96, 32,114,7,0,0,0,218,9,112,97,116,104,95,104,111,111, - 107,81,6,0,0,115,6,0,0,0,4,128,14,10,4,6, + 107,82,6,0,0,115,6,0,0,0,4,128,14,10,4,6, 114,9,0,0,0,122,20,70,105,108,101,70,105,110,100,101, 114,46,112,97,116,104,95,104,111,111,107,99,1,0,0,0, 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, 114,64,1,0,0,41,2,78,122,16,70,105,108,101,70,105, 110,100,101,114,40,123,33,114,125,41,41,2,114,89,0,0, 0,114,65,0,0,0,114,20,1,0,0,115,1,0,0,0, - 32,114,7,0,0,0,114,65,1,0,0,99,6,0,0,114, + 32,114,7,0,0,0,114,65,1,0,0,100,6,0,0,114, 58,1,0,0,114,9,0,0,0,122,19,70,105,108,101,70, 105,110,100,101,114,46,95,95,114,101,112,114,95,95,114,69, 0,0,0,41,15,114,149,0,0,0,114,148,0,0,0,114, @@ -2686,7 +2686,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,88,1,0,0,114,225,0,0,0,114,98,1,0, 0,114,233,0,0,0,114,103,1,0,0,114,65,1,0,0, 114,12,0,0,0,114,9,0,0,0,114,7,0,0,0,114, - 91,1,0,0,204,5,0,0,115,24,0,0,0,8,0,4, + 91,1,0,0,205,5,0,0,115,24,0,0,0,8,0,4, 2,8,7,8,16,4,4,8,2,8,15,10,5,8,51,2, 31,10,1,12,17,114,9,0,0,0,114,91,1,0,0,99, 4,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, @@ -2710,13 +2710,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,116,104,110,97,109,101,114,163,0,0,0,114,209,0,0, 0,115,6,0,0,0,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,105,6,0,0,115,40,0,0,0,10,2,10,1,4,1, + 101,106,6,0,0,115,40,0,0,0,10,2,10,1,4,1, 4,1,8,1,8,1,12,1,10,2,4,1,14,1,2,1, 8,1,8,1,8,1,12,1,2,128,12,1,6,2,2,128, 2,254,115,15,0,0,0,171,16,61,0,189,7,65,7,7, 193,8,1,65,7,7,114,108,1,0,0,99,0,0,0,0, 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 115,38,0,0,0,116,0,116,1,160,2,161,0,102,2,125, + 115,38,0,0,0,116,0,116,1,106,2,131,0,102,2,125, 0,116,3,116,4,102,2,125,1,116,5,116,6,102,2,125, 2,124,0,124,1,124,2,103,3,83,0,41,2,122,95,82, 101,116,117,114,110,115,32,97,32,108,105,115,116,32,111,102, @@ -2731,7 +2731,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,41,3,90,10,101,120,116,101,110,115,105,111,110, 115,90,6,115,111,117,114,99,101,90,8,98,121,116,101,99, 111,100,101,115,3,0,0,0,32,32,32,114,7,0,0,0, - 114,207,0,0,0,128,6,0,0,115,8,0,0,0,12,5, + 114,207,0,0,0,129,6,0,0,115,8,0,0,0,12,5, 8,1,8,1,10,1,114,9,0,0,0,114,207,0,0,0, 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, 0,3,0,0,0,115,8,0,0,0,124,0,97,0,100,0, @@ -2739,7 +2739,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,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,139,6,0,0,115,2,0,0,0,8,2, + 111,100,117,108,101,140,6,0,0,115,2,0,0,0,8,2, 114,9,0,0,0,114,111,1,0,0,99,1,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,115, 50,0,0,0,116,0,124,0,131,1,1,0,116,1,131,0, @@ -2754,7 +2754,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 112,97,116,104,114,61,0,0,0,114,74,1,0,0,41,2, 114,110,1,0,0,90,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, - 7,0,0,0,218,8,95,105,110,115,116,97,108,108,144,6, + 7,0,0,0,218,8,95,105,110,115,116,97,108,108,145,6, 0,0,115,8,0,0,0,8,2,6,1,20,1,16,1,114, 9,0,0,0,114,113,1,0,0,41,1,114,87,0,0,0, 114,69,0,0,0,41,3,78,78,78,41,2,114,0,0,0, @@ -2799,7 +2799,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4, 255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8, 30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8, - 8,10,5,10,22,0,127,16,38,12,1,4,2,4,1,6, + 8,10,5,10,22,0,127,16,39,12,1,4,2,4,1,6, 2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8, 40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10, 24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14, diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index c16880eac07065..c2d973f967e1e0 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -122,9 +122,9 @@ const unsigned char _Py_M__zipimport[] = { 2,125,2,124,2,160,3,124,1,161,1,125,1,124,1,115, 22,116,4,100,2,124,1,100,3,141,2,130,1,116,5,114, 30,124,1,160,6,116,5,116,7,161,2,125,1,103,0,125, - 3,9,0,9,0,116,8,160,9,124,1,161,1,125,4,110, + 3,9,0,9,0,116,8,106,9,124,1,131,1,125,4,110, 36,35,0,4,0,116,10,116,11,102,2,121,147,1,0,1, - 0,1,0,116,8,160,12,124,1,161,1,92,2,125,5,125, + 0,1,0,116,8,106,12,124,1,131,1,92,2,125,5,125, 6,124,5,124,1,107,2,114,66,116,4,100,5,124,1,100, 3,141,2,130,1,124,5,125,1,124,3,160,13,124,6,161, 1,1,0,89,0,110,15,37,0,124,4,106,14,100,6,64, @@ -172,7 +172,7 @@ const unsigned char _Py_M__zipimport[] = { 105,112,105,109,112,111,114,116,101,114,46,95,95,105,110,105, 116,95,95,78,99,3,0,0,0,0,0,0,0,0,0,0, 0,4,0,0,0,3,0,0,0,115,90,0,0,0,116,0, - 160,1,100,1,116,2,161,2,1,0,116,3,124,0,124,1, + 106,1,100,1,116,2,131,2,1,0,116,3,124,0,124,1, 131,2,125,3,124,3,100,2,117,1,114,19,124,0,103,0, 102,2,83,0,116,4,124,0,124,1,131,2,125,4,116,5, 124,0,124,4,131,2,114,41,100,2,124,0,106,6,155,0, @@ -234,8 +234,8 @@ const unsigned char _Py_M__zipimport[] = { 2,114,10,0,0,0,122,23,122,105,112,105,109,112,111,114, 116,101,114,46,102,105,110,100,95,108,111,97,100,101,114,99, 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,28,0,0,0,116,0,160,1,100,1,116, - 2,161,2,1,0,124,0,160,3,124,1,124,2,161,2,100, + 3,0,0,0,115,28,0,0,0,116,0,106,1,100,1,116, + 2,131,2,1,0,124,0,160,3,124,1,124,2,161,2,100, 2,25,0,83,0,41,4,97,203,1,0,0,102,105,110,100, 95,109,111,100,117,108,101,40,102,117,108,108,110,97,109,101, 44,32,112,97,116,104,61,78,111,110,101,41,32,45,62,32, @@ -280,13 +280,13 @@ const unsigned char _Py_M__zipimport[] = { 11,2,2,4,254,16,3,114,10,0,0,0,122,23,122,105, 112,105,109,112,111,114,116,101,114,46,102,105,110,100,95,109, 111,100,117,108,101,99,3,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,3,0,0,0,115,108,0,0,0,116, + 0,0,5,0,0,0,3,0,0,0,115,108,0,0,0,116, 0,124,0,124,1,131,2,125,3,124,3,100,1,117,1,114, - 17,116,1,160,2,124,1,124,0,124,3,100,2,166,3,83, + 17,116,1,106,2,124,1,124,0,124,3,100,2,141,3,83, 0,116,3,124,0,124,1,131,2,125,4,116,4,124,0,124, 4,131,2,114,52,124,0,106,5,155,0,116,6,155,0,124, - 4,155,0,157,3,125,5,116,1,160,7,124,1,100,1,100, - 3,100,4,166,3,125,6,124,6,106,8,160,9,124,5,161, + 4,155,0,157,3,125,5,116,1,106,7,124,1,100,1,100, + 3,100,4,141,3,125,6,124,6,106,8,160,9,124,5,161, 1,1,0,124,6,83,0,100,1,83,0,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, @@ -387,8 +387,8 @@ const unsigned char _Py_M__zipimport[] = { 0,3,0,0,0,115,128,0,0,0,116,0,124,0,124,1, 131,2,125,2,124,2,100,1,117,0,114,18,116,1,100,2, 124,1,155,2,157,2,124,1,100,3,141,2,130,1,116,2, - 124,0,124,1,131,2,125,3,124,2,114,32,116,3,160,4, - 124,3,100,4,161,2,125,4,110,5,124,3,155,0,100,5, + 124,0,124,1,131,2,125,3,124,2,114,32,116,3,106,4, + 124,3,100,4,131,2,125,4,110,5,124,3,155,0,100,5, 157,2,125,4,9,0,124,0,106,5,124,4,25,0,125,5, 110,11,35,0,4,0,116,6,121,63,1,0,1,0,1,0, 89,0,100,1,83,0,37,0,116,7,124,0,106,8,124,5, @@ -447,22 +447,22 @@ const unsigned char _Py_M__zipimport[] = { 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,99,2,0,0,0,0, 0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,115, - 0,1,0,0,100,1,125,2,116,0,160,1,124,2,116,2, - 161,2,1,0,116,3,124,0,124,1,131,2,92,3,125,3, + 0,1,0,0,100,1,125,2,116,0,106,1,124,2,116,2, + 131,2,1,0,116,3,124,0,124,1,131,2,92,3,125,3, 125,4,125,5,116,4,106,5,160,6,124,1,161,1,125,6, 124,6,100,2,117,0,115,31,116,7,124,6,116,8,131,2, 115,40,116,8,124,1,131,1,125,6,124,6,116,4,106,5, 124,1,60,0,124,0,124,6,95,9,9,0,124,4,114,62, - 116,10,124,0,124,1,131,2,125,7,116,11,160,12,124,0, - 106,13,124,7,161,2,125,8,124,8,103,1,124,6,95,14, + 116,10,124,0,124,1,131,2,125,7,116,11,106,12,124,0, + 106,13,124,7,131,2,125,8,124,8,103,1,124,6,95,14, 116,15,124,6,100,3,131,2,115,70,116,16,124,6,95,16, - 116,11,160,17,124,6,106,18,124,1,124,5,161,3,1,0, + 116,11,106,17,124,6,106,18,124,1,124,5,131,3,1,0, 116,19,124,3,124,6,106,18,131,2,1,0,110,10,35,0, 1,0,1,0,1,0,116,4,106,5,124,1,61,0,130,0, 37,0,9,0,116,4,106,5,124,1,25,0,125,6,110,16, 35,0,4,0,116,20,121,127,1,0,1,0,1,0,116,21, 100,4,124,1,155,2,100,5,157,3,131,1,130,1,37,0, - 116,22,160,23,100,6,124,1,124,5,161,3,1,0,124,6, + 116,22,106,23,100,6,124,1,124,5,131,3,1,0,124,6, 83,0,119,0,41,7,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, @@ -623,7 +623,7 @@ const unsigned char _Py_M__zipimport[] = { 0,10,1,14,1,8,1,10,1,8,1,2,255,4,2,114, 10,0,0,0,114,39,0,0,0,99,1,0,0,0,0,0, 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,248, - 4,0,0,9,0,116,0,160,1,124,0,161,1,125,1,110, + 4,0,0,9,0,116,0,106,1,124,0,131,1,125,1,110, 18,35,0,4,0,116,2,144,2,121,123,1,0,1,0,1, 0,116,3,100,1,124,0,155,2,157,2,124,0,100,2,141, 2,130,1,37,0,124,1,53,0,1,0,9,0,124,1,160, @@ -695,13 +695,13 @@ const unsigned char _Py_M__zipimport[] = { 0,116,17,144,2,121,116,1,0,1,0,1,0,124,23,160, 16,100,31,161,1,160,18,116,19,161,1,125,23,89,0,110, 1,37,0,124,23,160,20,100,32,116,21,161,2,125,23,116, - 22,160,23,124,0,124,23,161,2,125,24,124,24,124,14,124, + 22,106,23,124,0,124,23,131,2,125,24,124,24,124,14,124, 18,124,4,124,22,124,15,124,16,124,17,102,8,125,25,124, 25,124,11,124,23,60,0,124,12,100,33,55,0,125,12,144, 1,113,42,9,0,100,0,4,0,4,0,131,3,1,0,110, 12,35,0,49,0,144,2,115,101,119,4,37,0,1,0,1, - 0,1,0,89,0,1,0,1,0,116,24,160,25,100,34,124, - 12,124,0,161,3,1,0,124,11,83,0,119,0,119,0,119, + 0,1,0,89,0,1,0,1,0,116,24,106,25,100,34,124, + 12,124,0,131,3,1,0,124,11,83,0,119,0,119,0,119, 0,119,0,119,0,119,0,119,0,119,0,41,35,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,13,0,0,0,114,94,0,0,0,250, @@ -822,13 +822,13 @@ const unsigned char _Py_M__zipimport[] = { 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,8,0,0,0,3,0,0,0,115,110,0,0,0,116,0, - 114,11,116,1,160,2,100,1,161,1,1,0,116,3,100,2, + 114,11,116,1,106,2,100,1,131,1,1,0,116,3,100,2, 131,1,130,1,100,3,97,0,9,0,100,4,100,5,108,4, 109,5,125,0,1,0,110,17,35,0,4,0,116,6,121,54, - 1,0,1,0,1,0,116,1,160,2,100,1,161,1,1,0, + 1,0,1,0,1,0,116,1,106,2,100,1,131,1,1,0, 116,3,100,2,131,1,130,1,37,0,9,0,100,6,97,0, - 110,5,35,0,100,6,97,0,119,0,37,0,116,1,160,2, - 100,7,161,1,1,0,124,0,83,0,119,0,41,8,78,122, + 110,5,35,0,100,6,97,0,119,0,37,0,116,1,106,2, + 100,7,131,1,1,0,124,0,83,0,119,0,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, @@ -851,7 +851,7 @@ const unsigned char _Py_M__zipimport[] = { 0,9,0,0,0,3,0,0,0,115,132,1,0,0,124,1, 92,8,125,2,125,3,125,4,125,5,125,6,125,7,125,8, 125,9,124,4,100,1,107,0,114,18,116,0,100,2,131,1, - 130,1,116,1,160,2,124,0,161,1,53,0,125,10,9,0, + 130,1,116,1,106,2,124,0,131,1,53,0,125,10,9,0, 124,10,160,3,124,6,161,1,1,0,110,17,35,0,4,0, 116,4,121,193,1,0,1,0,1,0,116,0,100,3,124,0, 155,2,157,2,124,0,100,4,141,2,130,1,37,0,124,10, @@ -913,21 +913,21 @@ const unsigned char _Py_M__zipimport[] = { 114,11,0,0,0,218,9,95,101,113,95,109,116,105,109,101, 115,2,0,0,115,2,0,0,0,16,2,114,10,0,0,0, 114,154,0,0,0,99,5,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,3,0,0,0,115,254,0,0,0,124, - 3,124,2,100,1,156,2,125,5,116,0,160,1,124,4,124, - 3,124,5,161,3,125,6,124,6,100,2,64,0,100,3,107, + 0,0,5,0,0,0,3,0,0,0,115,254,0,0,0,124, + 3,124,2,100,1,156,2,125,5,116,0,106,1,124,4,124, + 3,124,5,131,3,125,6,124,6,100,2,64,0,100,3,107, 3,125,7,124,7,114,63,124,6,100,4,64,0,100,3,107, 3,125,8,116,2,106,3,100,5,107,3,114,62,124,8,115, 38,116,2,106,3,100,6,107,2,114,62,116,4,124,0,124, - 2,131,2,125,9,124,9,100,0,117,1,114,62,116,2,160, - 5,116,0,106,6,124,9,161,2,125,10,116,0,160,7,124, - 4,124,10,124,3,124,5,161,4,1,0,110,40,116,8,124, + 2,131,2,125,9,124,9,100,0,117,1,114,62,116,2,106, + 5,116,0,106,6,124,9,131,2,125,10,116,0,106,7,124, + 4,124,10,124,3,124,5,131,4,1,0,110,40,116,8,124, 0,124,2,131,2,92,2,125,11,125,12,124,11,114,103,116, 9,116,10,124,4,100,7,100,8,133,2,25,0,131,1,124, 11,131,2,114,93,116,10,124,4,100,8,100,9,133,2,25, - 0,131,1,124,12,107,3,114,103,116,11,160,12,100,10,124, - 3,155,2,157,2,161,1,1,0,100,0,83,0,116,13,160, - 14,124,4,100,9,100,0,133,2,25,0,161,1,125,13,116, + 0,131,1,124,12,107,3,114,103,116,11,106,12,100,10,124, + 3,155,2,157,2,131,1,1,0,100,0,83,0,116,13,106, + 14,124,4,100,9,100,0,133,2,25,0,131,1,125,13,116, 15,124,13,116,16,131,2,115,125,116,17,100,11,124,1,155, 2,100,12,157,3,131,1,130,1,124,13,83,0,41,13,78, 41,2,114,48,0,0,0,114,14,0,0,0,114,5,0,0, @@ -987,11 +987,11 @@ const unsigned char _Py_M__zipimport[] = { 111,109,112,105,108,101,95,115,111,117,114,99,101,175,2,0, 0,115,4,0,0,0,8,1,16,1,114,10,0,0,0,114, 168,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,11,0,0,0,3,0,0,0,115,68,0,0,0,116,0, - 160,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, + 0,10,0,0,0,3,0,0,0,115,68,0,0,0,116,0, + 106,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, 63,0,100,4,64,0,124,0,100,5,64,0,124,1,100,6, 63,0,124,1,100,3,63,0,100,7,64,0,124,1,100,5, - 64,0,100,8,20,0,100,9,100,9,100,9,102,9,161,1, + 64,0,100,8,20,0,100,9,100,9,100,9,102,9,131,1, 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,94,0,0,0,114,15,0, @@ -1040,8 +1040,8 @@ const unsigned char _Py_M__zipimport[] = { 0,9,0,0,0,3,0,0,0,115,14,1,0,0,116,0, 124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,0, 93,100,92,3,125,4,125,5,125,6,124,2,124,4,23,0, - 125,7,116,2,160,3,100,1,124,0,106,4,116,5,124,7, - 100,2,100,3,166,5,1,0,9,0,124,0,106,6,124,7, + 125,7,116,2,106,3,100,1,124,0,106,4,116,5,124,7, + 100,2,100,3,141,5,1,0,9,0,124,0,106,6,124,7, 25,0,125,8,110,10,35,0,4,0,116,7,121,134,1,0, 1,0,1,0,89,0,113,9,37,0,124,8,100,4,25,0, 125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,0, diff --git a/Python/symtable.c b/Python/symtable.c index 62bd1e2ec48f8a..4508464ef13f24 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -391,7 +391,7 @@ PySymtable_Lookup(struct symtable *st, void *key) return (PySTEntryObject *)v; } -static long +long _PyST_GetSymbol(PySTEntryObject *ste, PyObject *name) { PyObject *v = PyDict_GetItemWithError(ste->ste_symbols, name); From 818628c2da99ba0376313971816d472c65c9a9fc Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 1 Jul 2021 02:30:46 +0200 Subject: [PATCH 07/40] bpo-44531: Add _PyType_AllocNoTrack() function (GH-26947) Add an internal _PyType_AllocNoTrack() function to allocate an object without tracking it in the GC. Modify dict_new() to use _PyType_AllocNoTrack(): dict subclasses are now only tracked once all PyDictObject members are initialized. Calling _PyObject_GC_UNTRACK() is no longer needed for the dict type. Similar change in tuple_subtype_new() for tuple subclasses. Replace tuple_gc_track() with _PyObject_GC_TRACK(). --- Include/internal/pycore_object.h | 2 ++ Objects/dictobject.c | 30 +++++++++++++++++---------- Objects/tupleobject.c | 35 +++++++++++++++++--------------- Objects/typeobject.c | 12 ++++++++++- 4 files changed, 51 insertions(+), 28 deletions(-) diff --git a/Include/internal/pycore_object.h b/Include/internal/pycore_object.h index 9dfc8c62babadb..4091f5178eed18 100644 --- a/Include/internal/pycore_object.h +++ b/Include/internal/pycore_object.h @@ -178,6 +178,8 @@ extern int _Py_CheckSlotResult( // See also the Py_TPFLAGS_READY flag. #define _PyType_IsReady(type) ((type)->tp_dict != NULL) +extern PyObject* _PyType_AllocNoTrack(PyTypeObject *type, Py_ssize_t nitems); + #ifdef __cplusplus } #endif diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 3a1dbc994b44b0..7f1d38dd5f43f0 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -3324,19 +3324,16 @@ static PyNumberMethods dict_as_number = { static PyObject * dict_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - PyObject *self; - PyDictObject *d; + assert(type != NULL); + assert(type->tp_alloc != NULL); + // dict subclasses must implement the GC protocol + assert(_PyType_IS_GC(type)); - assert(type != NULL && type->tp_alloc != NULL); - self = type->tp_alloc(type, 0); - if (self == NULL) + PyObject *self = type->tp_alloc(type, 0); + if (self == NULL) { return NULL; - d = (PyDictObject *)self; - - /* The object has been implicitly tracked by tp_alloc */ - if (type == &PyDict_Type) { - _PyObject_GC_UNTRACK(d); } + PyDictObject *d = (PyDictObject *)self; d->ma_used = 0; d->ma_version_tag = DICT_NEXT_VERSION(); @@ -3344,6 +3341,17 @@ dict_new(PyTypeObject *type, PyObject *args, PyObject *kwds) d->ma_keys = Py_EMPTY_KEYS; d->ma_values = empty_values; ASSERT_CONSISTENT(d); + + if (type != &PyDict_Type) { + // Don't track if a subclass tp_alloc is PyType_GenericAlloc() + if (!_PyObject_GC_IS_TRACKED(d)) { + _PyObject_GC_TRACK(d); + } + } + else { + // _PyType_AllocNoTrack() does not track the created object + assert(!_PyObject_GC_IS_TRACKED(d)); + } return self; } @@ -3441,7 +3449,7 @@ PyTypeObject PyDict_Type = { 0, /* tp_descr_set */ 0, /* tp_dictoffset */ dict_init, /* tp_init */ - PyType_GenericAlloc, /* tp_alloc */ + _PyType_AllocNoTrack, /* tp_alloc */ dict_new, /* tp_new */ PyObject_GC_Del, /* tp_free */ .tp_vectorcall = dict_vectorcall, diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c index 6b1ab740121e8f..b7fd421196ddaa 100644 --- a/Objects/tupleobject.c +++ b/Objects/tupleobject.c @@ -25,13 +25,6 @@ get_tuple_state(void) #endif -static inline void -tuple_gc_track(PyTupleObject *op) -{ - _PyObject_GC_TRACK(op); -} - - /* Print summary info about the state of the optimized allocator */ void _PyTuple_DebugMallocStats(FILE *out) @@ -48,10 +41,12 @@ _PyTuple_DebugMallocStats(FILE *out) #endif } -/* Allocate an uninitialized tuple object. Before making it public following +/* Allocate an uninitialized tuple object. Before making it public, following steps must be done: - - initialize its items - - call tuple_gc_track() on it + + - Initialize its items. + - Call _PyObject_GC_TRACK() on it. + Because the empty tuple is always reused and it's already tracked by GC, this function must not be called with size == 0 (unless from PyTuple_New() which wraps this function). @@ -161,7 +156,7 @@ PyTuple_New(Py_ssize_t size) for (Py_ssize_t i = 0; i < size; i++) { op->ob_item[i] = NULL; } - tuple_gc_track(op); + _PyObject_GC_TRACK(op); return (PyObject *) op; } @@ -257,7 +252,7 @@ PyTuple_Pack(Py_ssize_t n, ...) items[i] = o; } va_end(vargs); - tuple_gc_track(result); + _PyObject_GC_TRACK(result); return (PyObject *)result; } @@ -473,7 +468,7 @@ _PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) Py_INCREF(item); dst[i] = item; } - tuple_gc_track(tuple); + _PyObject_GC_TRACK(tuple); return (PyObject *)tuple; } @@ -551,7 +546,7 @@ tupleconcat(PyTupleObject *a, PyObject *bb) Py_INCREF(v); dest[i] = v; } - tuple_gc_track(np); + _PyObject_GC_TRACK(np); return (PyObject *)np; } @@ -588,7 +583,7 @@ tuplerepeat(PyTupleObject *a, Py_ssize_t n) p++; } } - tuple_gc_track(np); + _PyObject_GC_TRACK(np); return (PyObject *) np; } @@ -783,6 +778,9 @@ tuple_subtype_new(PyTypeObject *type, PyObject *iterable) Py_ssize_t i, n; assert(PyType_IsSubtype(type, &PyTuple_Type)); + // tuple subclasses must implement the GC protocol + assert(_PyType_IS_GC(type)); + tmp = tuple_new_impl(&PyTuple_Type, iterable); if (tmp == NULL) return NULL; @@ -798,6 +796,11 @@ tuple_subtype_new(PyTypeObject *type, PyObject *iterable) PyTuple_SET_ITEM(newobj, i, item); } Py_DECREF(tmp); + + // Don't track if a subclass tp_alloc is PyType_GenericAlloc() + if (!_PyObject_GC_IS_TRACKED(newobj)) { + _PyObject_GC_TRACK(newobj); + } return newobj; } @@ -857,7 +860,7 @@ tuplesubscript(PyTupleObject* self, PyObject* item) dest[i] = it; } - tuple_gc_track(result); + _PyObject_GC_TRACK(result); return (PyObject *)result; } } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 8ee4e813ee5213..116ac14cbc2a64 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1164,7 +1164,7 @@ type_call(PyTypeObject *type, PyObject *args, PyObject *kwds) } PyObject * -PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) +_PyType_AllocNoTrack(PyTypeObject *type, Py_ssize_t nitems) { PyObject *obj; const size_t size = _PyObject_VAR_SIZE(type, nitems+1); @@ -1189,6 +1189,16 @@ PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) else { _PyObject_InitVar((PyVarObject *)obj, type, nitems); } + return obj; +} + +PyObject * +PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) +{ + PyObject *obj = _PyType_AllocNoTrack(type, nitems); + if (obj == NULL) { + return NULL; + } if (_PyType_IS_GC(type)) { _PyObject_GC_TRACK(obj); From c8979f780e4b7d6db5693cb26a2956cc785abb48 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Thu, 1 Jul 2021 09:35:10 +0900 Subject: [PATCH 08/40] bpo-43425: Update _osx_support not to use distutils.log (GH-26968) --- Lib/_osx_support.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py index b7145ee069fa32..326b36d6116314 100644 --- a/Lib/_osx_support.py +++ b/Lib/_osx_support.py @@ -428,10 +428,9 @@ def compiler_fixup(compiler_so, cc_args): break if sysroot and not os.path.isdir(sysroot): - from distutils import log - log.warn("Compiling with an SDK that doesn't seem to exist: %s", - sysroot) - log.warn("Please check your Xcode installation") + sys.stderr.write(f"Compiling with an SDK that doesn't seem to exist: {sysroot}\n") + sys.stderr.write("Please check your Xcode installation\n") + sys.stderr.flush() return compiler_so From dd3adc013b21ec1338bb5fea2e2c04a4fc650306 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 1 Jul 2021 03:11:59 +0200 Subject: [PATCH 09/40] bpo-43770: Cleanup _PyObject_GetMethod() (GH-26946) _PyObject_GetMethod() now uses _PyType_IsReady() to decide if PyType_Ready() must be called or not, rather than testing if tp->tp_dict is NULL. Move also variable declarations closer to where they are used, and use Py_NewRef(). --- Objects/object.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/Objects/object.c b/Objects/object.c index c87a83f225f14b..8a854c7391ef9b 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1124,25 +1124,24 @@ _PyObject_NextNotImplemented(PyObject *self) int _PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { - PyTypeObject *tp = Py_TYPE(obj); - PyObject *descr; - descrgetfunc f = NULL; - PyObject **dictptr, *dict; - PyObject *attr; int meth_found = 0; assert(*method == NULL); - if (Py_TYPE(obj)->tp_getattro != PyObject_GenericGetAttr - || !PyUnicode_Check(name)) { - *method = PyObject_GetAttr(obj, name); - return 0; + PyTypeObject *tp = Py_TYPE(obj); + if (!_PyType_IsReady(tp)) { + if (PyType_Ready(tp) < 0) { + return 0; + } } - if (tp->tp_dict == NULL && PyType_Ready(tp) < 0) + if (tp->tp_getattro != PyObject_GenericGetAttr || !PyUnicode_Check(name)) { + *method = PyObject_GetAttr(obj, name); return 0; + } - descr = _PyType_Lookup(tp, name); + PyObject *descr = _PyType_Lookup(tp, name); + descrgetfunc f = NULL; if (descr != NULL) { Py_INCREF(descr); if (_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) { @@ -1157,23 +1156,22 @@ _PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) } } - dictptr = _PyObject_GetDictPtr(obj); + PyObject **dictptr = _PyObject_GetDictPtr(obj); + PyObject *dict; if (dictptr != NULL && (dict = *dictptr) != NULL) { Py_INCREF(dict); - attr = PyDict_GetItemWithError(dict, name); + PyObject *attr = PyDict_GetItemWithError(dict, name); if (attr != NULL) { - Py_INCREF(attr); - *method = attr; + *method = Py_NewRef(attr); Py_DECREF(dict); Py_XDECREF(descr); return 0; } - else { - Py_DECREF(dict); - if (PyErr_Occurred()) { - Py_XDECREF(descr); - return 0; - } + Py_DECREF(dict); + + if (PyErr_Occurred()) { + Py_XDECREF(descr); + return 0; } } From 3623aaa78cb9c50edb6da5ac37000446f138b91c Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Thu, 1 Jul 2021 13:13:05 +0100 Subject: [PATCH 10/40] Add file describing how to add or modify specialized families of instructions. (GH-26954) --- Python/adaptive.md | 131 ++++++++++++++++++++++++++++++++++++++++++++ Python/specialize.c | 4 ++ 2 files changed, 135 insertions(+) create mode 100644 Python/adaptive.md diff --git a/Python/adaptive.md b/Python/adaptive.md new file mode 100644 index 00000000000000..66b80a17464bfb --- /dev/null +++ b/Python/adaptive.md @@ -0,0 +1,131 @@ +# Adding or extending a family of adaptive instructions. + +## Families of instructions + +The core part of PEP 659 (specializing adaptive interpreter) is the families +of instructions that perform the adaptive specialization. + +A family of instructions has the following fundamental properties: + +* It corresponds to a single instruction in the code + generated by the bytecode compiler. +* It has a single adaptive instruction that records an execution count and, + at regular intervals, attempts to specialize itself. If not specializing, + it executes the non-adaptive instruction. +* It has at least one specialized form of the instruction that is tailored + for a particular value or set of values at runtime. +* All members of the family have access to the same number of cache entries. + Individual family members do not need to use all of the entries. + +The current implementation also requires the following, +although these are not fundamental and may change: + +* If a family uses one or more entries, then the first entry must be a + `_PyAdaptiveEntry` entry. +* If a family uses no cache entries, then the `oparg` is used as the + counter for the adaptive instruction. +* All instruction names should start with the name of the non-adaptive + instruction. +* The adaptive instruction should end in `_ADAPTIVE`. +* Specialized forms should have names describing their specialization. + +## Example family + +The `LOAD_GLOBAL` instruction (in Python/ceval.c) already has an adaptive +family that serves as a relatively simple example. + +The `LOAD_GLOBAL_ADAPTIVE` instruction performs adaptive specialization, +calling `_Py_Specialize_LoadGlobal()` when the counter reaches zero. + +There are two specialized instructions in the family, `LOAD_GLOBAL_MODULE` +which is specialized for global variables in the module, and +`LOAD_GLOBAL_BUILTIN` which is specialized for builtin variables. + +## Performance analysis + +The benefit of a specialization can be assessed with the following formula: +`Tbase/Tadaptive`. + +Where `Tbase` is the mean time to execute the base instruction, +and `Tadaptive` is the mean time to execute the specialized and adaptive forms. + +`Tadaptive = (sum(Ti*Ni) + Tmiss*Nmiss)/(sum(Ni)+Nmiss)` + +`Ti` is the time to execute the `i`th instruction in the family and `Ni` is +the number of times that instruction is executed. +`Tmiss` is the time to process a miss, including de-optimzation +and the time to execute the base instruction. + +The ideal situation is where misses are rare and the specialized +forms are much faster than the base instruction. +`LOAD_GLOBAL` is near ideal, `Nmiss/sum(Ni) ≈ 0`. +In which case we have `Tadaptive ≈ sum(Ti*Ni)`. +Since we can expect the specialized forms `LOAD_GLOBAL_MODULE` and +`LOAD_GLOBAL_BUILTIN` to be much faster than the adaptive base instruction, +we would expect the specialization of `LOAD_GLOBAL` to be profitable. + +## Design considerations + +While `LOAD_GLOBAL` may be ideal, instructions like `LOAD_ATTR` and +`CALL_FUNCTION` are not. For maximum performance we want to keep `Ti` +low for all specialized instructions and `Nmiss` as low as possible. + +Keeping `Nmiss` low means that there should be specializations for almost +all values seen by the base instruction. Keeping `sum(Ti*Ni)` low means +keeping `Ti` low which means minimizing branches and dependent memory +accesses (pointer chasing). These two objectives may be in conflict, +requiring judgement and experimentation to design the family of instructions. + +### Gathering data + +Before choosing how to specialize an instruction, it is important to gather +some data. What are the patterns of usage of the base instruction? +Data can best be gathered by instrumenting the interpreter. Since a +specialization function and adaptive instruction are going to be required, +instrumentation can most easily be added in the specialization function. + +### Choice of specializations + +The performance of the specializing adaptive interpreter relies on the +quality of specialization and keeping the overhead of specialization low. + +Specialized instructions must be fast. In order to be fast, +specialized instructions should be tailored for a particular +set of values that allows them to: +1. Verify that incoming value is part of that set with low overhead. +2. Perform the operation quickly. + +This requires that the set of values is chosen such that membership can be +tested quickly and that membership is sufficient to allow the operation to +performed quickly. + +For example, `LOAD_GLOBAL_MODULE` is specialized for `globals()` +dictionaries that have a keys with the expected version. + +This can be tested quickly: +* `globals->keys->dk_version == expected_version` + +and the operation can be performed quickly: +* `value = globals->keys->entries[index].value`. + +Because it is impossible to measure the performance of an instruction without +also measuring unrelated factors, the assessment of the quality of a +specialization will require some judgement. + +As a general rule, specialized instructions should be much faster than the +base instruction. + +### Implementation of specialized instructions + +In general, specialized instructions should be implemented in two parts: +1. A sequence of guards, each of the form + `DEOPT_IF(guard-condition-is-false, BASE_NAME)`, + followed by a `record_cache_hit()`. +2. The operation, which should ideally have no branches and + a minimum number of dependent memory accesses. + +In practice, the parts may overlap, as data required for guards +can be re-used in the operation. + +If there are branches in the operation, then consider further specialization +to eliminate the branches. diff --git a/Python/specialize.c b/Python/specialize.c index a8ae09ff0e3839..3277c6bc9e4894 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -7,6 +7,10 @@ #include "opcode.h" #include "structmember.h" // struct PyMemberDef, T_OFFSET_EX +/* For guidance on adding or extending families of instructions see + * ./adaptive.md + */ + /* We layout the quickened data as a bi-directional array: * Instructions upwards, cache entries downwards. From a1092f62492a3fcd6195bea94eccf8d5a300acb1 Mon Sep 17 00:00:00 2001 From: Illia Volochii Date: Thu, 1 Jul 2021 16:13:59 +0300 Subject: [PATCH 11/40] bpo-43216: Remove @asyncio.coroutine (GH-26369) Remove the @asyncio.coroutine decorator enabling legacy generator-based coroutines to be compatible with async/await code; remove asyncio.coroutines.CoroWrapper used for wrapping legacy coroutine objects in the debug mode. The decorator has been deprecated since Python 3.8 and the removal was initially scheduled for Python 3.10. --- Doc/library/asyncio-task.rst | 60 -- Doc/library/collections.abc.rst | 4 +- Doc/reference/datamodel.rst | 2 +- Doc/whatsnew/3.11.rst | 10 +- Lib/asyncio/coroutines.py | 166 +----- Lib/test/test_asyncio/test_base_events.py | 6 +- Lib/test/test_asyncio/test_events.py | 4 +- Lib/test/test_asyncio/test_locks.py | 38 +- Lib/test/test_asyncio/test_pep492.py | 14 - Lib/test/test_asyncio/test_tasks.py | 540 ++---------------- .../2021-05-25-23-26-38.bpo-43216.xTUyyX.rst | 6 + 11 files changed, 86 insertions(+), 764 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2021-05-25-23-26-38.bpo-43216.xTUyyX.rst diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index bbdef3345a4d42..44ec3cc8826c02 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -148,9 +148,6 @@ other coroutines:: * a *coroutine object*: an object returned by calling a *coroutine function*. -asyncio also supports legacy :ref:`generator-based -` coroutines. - .. rubric:: Tasks @@ -1042,60 +1039,3 @@ Task Object in the :func:`repr` output of a task object. .. versionadded:: 3.8 - - -.. _asyncio_generator_based_coro: - -Generator-based Coroutines -========================== - -.. note:: - - Support for generator-based coroutines is **deprecated** and - is scheduled for removal in Python 3.10. - -Generator-based coroutines predate async/await syntax. They are -Python generators that use ``yield from`` expressions to await -on Futures and other coroutines. - -Generator-based coroutines should be decorated with -:func:`@asyncio.coroutine `, although this is not -enforced. - - -.. decorator:: coroutine - - Decorator to mark generator-based coroutines. - - This decorator enables legacy generator-based coroutines to be - compatible with async/await code:: - - @asyncio.coroutine - def old_style_coroutine(): - yield from asyncio.sleep(1) - - async def main(): - await old_style_coroutine() - - This decorator should not be used for :keyword:`async def` - coroutines. - - .. deprecated-removed:: 3.8 3.10 - - Use :keyword:`async def` instead. - -.. function:: iscoroutine(obj) - - Return ``True`` if *obj* is a :ref:`coroutine object `. - - This method is different from :func:`inspect.iscoroutine` because - it returns ``True`` for generator-based coroutines. - -.. function:: iscoroutinefunction(func) - - Return ``True`` if *func* is a :ref:`coroutine function - `. - - This method is different from :func:`inspect.iscoroutinefunction` - because it returns ``True`` for generator-based coroutine functions - decorated with :func:`@coroutine `. diff --git a/Doc/library/collections.abc.rst b/Doc/library/collections.abc.rst index 2345e78a17e4f5..924d0b58d952fd 100644 --- a/Doc/library/collections.abc.rst +++ b/Doc/library/collections.abc.rst @@ -198,7 +198,7 @@ ABC Inherits from Abstract Methods Mixin .. note:: In CPython, generator-based coroutines (generators decorated with - :func:`types.coroutine` or :func:`asyncio.coroutine`) are + :func:`types.coroutine`) are *awaitables*, even though they do not have an :meth:`__await__` method. Using ``isinstance(gencoro, Awaitable)`` for them will return ``False``. Use :func:`inspect.isawaitable` to detect them. @@ -216,7 +216,7 @@ ABC Inherits from Abstract Methods Mixin .. note:: In CPython, generator-based coroutines (generators decorated with - :func:`types.coroutine` or :func:`asyncio.coroutine`) are + :func:`types.coroutine`) are *awaitables*, even though they do not have an :meth:`__await__` method. Using ``isinstance(gencoro, Coroutine)`` for them will return ``False``. Use :func:`inspect.isawaitable` to detect them. diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index eefdc3d5100b56..2f8ed70e53c735 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -2714,7 +2714,7 @@ are awaitable. .. note:: The :term:`generator iterator` objects returned from generators - decorated with :func:`types.coroutine` or :func:`asyncio.coroutine` + decorated with :func:`types.coroutine` are also awaitable, but they do not implement :meth:`__await__`. .. method:: object.__await__(self) diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 8e3d5f31754c8f..94d8bef4d521b0 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -171,7 +171,15 @@ Deprecated Removed ======= - +* The :func:`@asyncio.coroutine ` :term:`decorator` enabling + legacy generator-based coroutines to be compatible with async/await code. + The function has been deprecated since Python 3.8 and the removal was + initially scheduled for Python 3.10. Use :keyword:`async def` instead. + (Contributed by Illia Volochii in :issue:`43216`.) + +* :class:`asyncio.coroutines.CoroWrapper` used for wrapping legacy + generator-based coroutine objects in the debug mode. + (Contributed by Illia Volochii in :issue:`43216`.) Porting to Python 3.11 ====================== diff --git a/Lib/asyncio/coroutines.py b/Lib/asyncio/coroutines.py index 9664ea74d75147..0e4b489f30fd7c 100644 --- a/Lib/asyncio/coroutines.py +++ b/Lib/asyncio/coroutines.py @@ -1,162 +1,19 @@ -__all__ = 'coroutine', 'iscoroutinefunction', 'iscoroutine' +__all__ = 'iscoroutinefunction', 'iscoroutine' import collections.abc -import functools import inspect import os import sys import traceback import types -import warnings - -from . import base_futures -from . import constants -from . import format_helpers -from .log import logger def _is_debug_mode(): - # If you set _DEBUG to true, @coroutine will wrap the resulting - # generator objects in a CoroWrapper instance (defined below). That - # instance will log a message when the generator is never iterated - # over, which may happen when you forget to use "await" or "yield from" - # with a coroutine call. - # Note that the value of the _DEBUG flag is taken - # when the decorator is used, so to be of any use it must be set - # before you define your coroutines. A downside of using this feature - # is that tracebacks show entries for the CoroWrapper.__next__ method - # when _DEBUG is true. + # See: https://docs.python.org/3/library/asyncio-dev.html#asyncio-debug-mode. return sys.flags.dev_mode or (not sys.flags.ignore_environment and bool(os.environ.get('PYTHONASYNCIODEBUG'))) -_DEBUG = _is_debug_mode() - - -class CoroWrapper: - # Wrapper for coroutine object in _DEBUG mode. - - def __init__(self, gen, func=None): - assert inspect.isgenerator(gen) or inspect.iscoroutine(gen), gen - self.gen = gen - self.func = func # Used to unwrap @coroutine decorator - self._source_traceback = format_helpers.extract_stack(sys._getframe(1)) - self.__name__ = getattr(gen, '__name__', None) - self.__qualname__ = getattr(gen, '__qualname__', None) - - def __repr__(self): - coro_repr = _format_coroutine(self) - if self._source_traceback: - frame = self._source_traceback[-1] - coro_repr += f', created at {frame[0]}:{frame[1]}' - - return f'<{self.__class__.__name__} {coro_repr}>' - - def __iter__(self): - return self - - def __next__(self): - return self.gen.send(None) - - def send(self, value): - return self.gen.send(value) - - def throw(self, type, value=None, traceback=None): - return self.gen.throw(type, value, traceback) - - def close(self): - return self.gen.close() - - @property - def gi_frame(self): - return self.gen.gi_frame - - @property - def gi_running(self): - return self.gen.gi_running - - @property - def gi_code(self): - return self.gen.gi_code - - def __await__(self): - return self - - @property - def gi_yieldfrom(self): - return self.gen.gi_yieldfrom - - def __del__(self): - # Be careful accessing self.gen.frame -- self.gen might not exist. - gen = getattr(self, 'gen', None) - frame = getattr(gen, 'gi_frame', None) - if frame is not None and frame.f_lasti == -1: - msg = f'{self!r} was never yielded from' - tb = getattr(self, '_source_traceback', ()) - if tb: - tb = ''.join(traceback.format_list(tb)) - msg += (f'\nCoroutine object created at ' - f'(most recent call last, truncated to ' - f'{constants.DEBUG_STACK_DEPTH} last lines):\n') - msg += tb.rstrip() - logger.error(msg) - - -def coroutine(func): - """Decorator to mark coroutines. - - If the coroutine is not yielded from before it is destroyed, - an error message is logged. - """ - warnings.warn('"@coroutine" decorator is deprecated since Python 3.8, use "async def" instead', - DeprecationWarning, - stacklevel=2) - if inspect.iscoroutinefunction(func): - # In Python 3.5 that's all we need to do for coroutines - # defined with "async def". - return func - - if inspect.isgeneratorfunction(func): - coro = func - else: - @functools.wraps(func) - def coro(*args, **kw): - res = func(*args, **kw) - if (base_futures.isfuture(res) or inspect.isgenerator(res) or - isinstance(res, CoroWrapper)): - res = yield from res - else: - # If 'res' is an awaitable, run it. - try: - await_meth = res.__await__ - except AttributeError: - pass - else: - if isinstance(res, collections.abc.Awaitable): - res = yield from await_meth() - return res - - coro = types.coroutine(coro) - if not _DEBUG: - wrapper = coro - else: - @functools.wraps(func) - def wrapper(*args, **kwds): - w = CoroWrapper(coro(*args, **kwds), func=func) - if w._source_traceback: - del w._source_traceback[-1] - # Python < 3.5 does not implement __qualname__ - # on generator objects, so we set it manually. - # We use getattr as some callables (such as - # functools.partial may lack __qualname__). - w.__name__ = getattr(func, '__name__', None) - w.__qualname__ = getattr(func, '__qualname__', None) - return w - - wrapper._is_coroutine = _is_coroutine # For iscoroutinefunction(). - return wrapper - - # A marker for iscoroutinefunction. _is_coroutine = object() @@ -170,7 +27,7 @@ def iscoroutinefunction(func): # Prioritize native coroutine check to speed-up # asyncio.iscoroutine. _COROUTINE_TYPES = (types.CoroutineType, types.GeneratorType, - collections.abc.Coroutine, CoroWrapper) + collections.abc.Coroutine) _iscoroutine_typecache = set() @@ -193,16 +50,11 @@ def iscoroutine(obj): def _format_coroutine(coro): assert iscoroutine(coro) - is_corowrapper = isinstance(coro, CoroWrapper) - def get_name(coro): # Coroutines compiled with Cython sometimes don't have # proper __qualname__ or __name__. While that is a bug # in Cython, asyncio shouldn't crash with an AttributeError # in its __repr__ functions. - if is_corowrapper: - return format_helpers._format_callback(coro.func, (), {}) - if hasattr(coro, '__qualname__') and coro.__qualname__: coro_name = coro.__qualname__ elif hasattr(coro, '__name__') and coro.__name__: @@ -247,18 +99,8 @@ def is_running(coro): filename = coro_code.co_filename or '' lineno = 0 - if (is_corowrapper and - coro.func is not None and - not inspect.isgeneratorfunction(coro.func)): - source = format_helpers._get_function_source(coro.func) - if source is not None: - filename, lineno = source - if coro_frame is None: - coro_repr = f'{coro_name} done, defined at {filename}:{lineno}' - else: - coro_repr = f'{coro_name} running, defined at {filename}:{lineno}' - elif coro_frame is not None: + if coro_frame is not None: lineno = coro_frame.f_lineno coro_repr = f'{coro_name} running at {filename}:{lineno}' diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index 5691d4250aca9e..47a9fb98001b4d 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -1884,10 +1884,8 @@ def test_accept_connection_exception(self, m_log): MyProto, sock, None, None, mock.ANY, mock.ANY) def test_call_coroutine(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def simple_coroutine(): - pass + async def simple_coroutine(): + pass self.loop.set_debug(True) coro_func = simple_coroutine diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index 55fc266cb714b1..e78176997a0591 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -17,6 +17,7 @@ import sys import threading import time +import types import errno import unittest from unittest import mock @@ -2163,8 +2164,7 @@ def test_handle_repr(self): '') # decorated function - with self.assertWarns(DeprecationWarning): - cb = asyncio.coroutine(noop) + cb = types.coroutine(noop) h = asyncio.Handle(cb, (), self.loop) self.assertEqual(repr(h), '' diff --git a/Lib/test/test_asyncio/test_locks.py b/Lib/test/test_asyncio/test_locks.py index 6194cd06176dac..441adeea8f8e07 100644 --- a/Lib/test/test_asyncio/test_locks.py +++ b/Lib/test/test_asyncio/test_locks.py @@ -38,14 +38,12 @@ def test_repr(self): def test_lock(self): lock = asyncio.Lock() - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def acquire_lock(): - return (yield from lock) + async def acquire_lock(): + return await lock with self.assertRaisesRegex( TypeError, - "object is not iterable" + "object Lock can't be used in 'await' expression" ): self.loop.run_until_complete(acquire_lock()) @@ -78,18 +76,16 @@ def test_lock_by_with_statement(self): asyncio.BoundedSemaphore(), ] - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def test(lock): - yield from asyncio.sleep(0.01) - self.assertFalse(lock.locked()) - with self.assertRaisesRegex( - TypeError, - "object is not iterable" - ): - with (yield from lock): - pass - self.assertFalse(lock.locked()) + async def test(lock): + await asyncio.sleep(0.01) + self.assertFalse(lock.locked()) + with self.assertRaisesRegex( + TypeError, + r"object \w+ can't be used in 'await' expression" + ): + with await lock: + pass + self.assertFalse(lock.locked()) for primitive in primitives: loop.run_until_complete(test(primitive)) @@ -788,14 +784,12 @@ def test_semaphore(self): sem = asyncio.Semaphore() self.assertEqual(1, sem._value) - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def acquire_lock(): - return (yield from sem) + async def acquire_lock(): + return await sem with self.assertRaisesRegex( TypeError, - "'Semaphore' object is not iterable", + "object Semaphore can't be used in 'await' expression", ): self.loop.run_until_complete(acquire_lock()) diff --git a/Lib/test/test_asyncio/test_pep492.py b/Lib/test/test_asyncio/test_pep492.py index 4bd50f4123e579..f833f788dcb98f 100644 --- a/Lib/test/test_asyncio/test_pep492.py +++ b/Lib/test/test_asyncio/test_pep492.py @@ -123,20 +123,6 @@ def test_iscoroutinefunction(self): async def foo(): pass self.assertTrue(asyncio.iscoroutinefunction(foo)) - def test_function_returning_awaitable(self): - class Awaitable: - def __await__(self): - return ('spam',) - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def func(): - return Awaitable() - - coro = func() - self.assertEqual(coro.send(None), 'spam') - coro.close() - def test_async_def_coroutines(self): async def bar(): return 'spam' diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py index a9e4cf53566ca9..86710872ace024 100644 --- a/Lib/test/test_asyncio/test_tasks.py +++ b/Lib/test/test_asyncio/test_tasks.py @@ -33,18 +33,6 @@ async def coroutine_function(): pass -@contextlib.contextmanager -def set_coroutine_debug(enabled): - coroutines = asyncio.coroutines - - old_debug = coroutines._DEBUG - try: - coroutines._DEBUG = enabled - yield - finally: - coroutines._DEBUG = old_debug - - def format_coroutine(qualname, state, src, source_traceback, generator=False): if generator: state = '%s' % state @@ -234,43 +222,6 @@ async def test(): self.assertTrue(t.done()) self.assertEqual(t.result(), 'ok') - def test_ensure_future_coroutine_2(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def notmuch(): - return 'ok' - t = asyncio.ensure_future(notmuch(), loop=self.loop) - self.assertIs(t._loop, self.loop) - self.loop.run_until_complete(t) - self.assertTrue(t.done()) - self.assertEqual(t.result(), 'ok') - - a = notmuch() - self.addCleanup(a.close) - with self.assertWarns(DeprecationWarning) as cm: - with self.assertRaisesRegex(RuntimeError, 'There is no current event loop'): - asyncio.ensure_future(a) - self.assertEqual(cm.warnings[0].filename, __file__) - - async def test(): - return asyncio.ensure_future(notmuch()) - t = self.loop.run_until_complete(test()) - self.assertIs(t._loop, self.loop) - self.loop.run_until_complete(t) - self.assertTrue(t.done()) - self.assertEqual(t.result(), 'ok') - - # Deprecated in 3.10 - asyncio.set_event_loop(self.loop) - self.addCleanup(asyncio.set_event_loop, None) - with self.assertWarns(DeprecationWarning) as cm: - t = asyncio.ensure_future(notmuch()) - self.assertEqual(cm.warnings[0].filename, __file__) - self.assertIs(t._loop, self.loop) - self.loop.run_until_complete(t) - self.assertTrue(t.done()) - self.assertEqual(t.result(), 'ok') - def test_ensure_future_future(self): f_orig = self.new_future(self.loop) f_orig.set_result('ko') @@ -318,12 +269,10 @@ class Aw: def __init__(self, coro): self.coro = coro def __await__(self): - return (yield from self.coro) + return self.coro.__await__() - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(): - return 'ok' + async def coro(): + return 'ok' loop = asyncio.new_event_loop() self.set_event_loop(loop) @@ -450,68 +399,6 @@ async def notmuch(): self.assertEqual(t.get_name(), '{6}') self.loop.run_until_complete(t) - def test_task_repr_coro_decorator(self): - self.loop.set_debug(False) - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def notmuch(): - # notmuch() function doesn't use yield from: it will be wrapped by - # @coroutine decorator - return 123 - - # test coroutine function - self.assertEqual(notmuch.__name__, 'notmuch') - self.assertRegex(notmuch.__qualname__, - r'\w+.test_task_repr_coro_decorator' - r'\.\.notmuch') - self.assertEqual(notmuch.__module__, __name__) - - # test coroutine object - gen = notmuch() - # On Python >= 3.5, generators now inherit the name of the - # function, as expected, and have a qualified name (__qualname__ - # attribute). - coro_name = 'notmuch' - coro_qualname = ('BaseTaskTests.test_task_repr_coro_decorator' - '..notmuch') - self.assertEqual(gen.__name__, coro_name) - self.assertEqual(gen.__qualname__, coro_qualname) - - # test repr(CoroWrapper) - if coroutines._DEBUG: - # format the coroutine object - if coroutines._DEBUG: - filename, lineno = test_utils.get_function_source(notmuch) - frame = gen._source_traceback[-1] - coro = ('%s() running, defined at %s:%s, created at %s:%s' - % (coro_qualname, filename, lineno, - frame[0], frame[1])) - else: - code = gen.gi_code - coro = ('%s() running at %s:%s' - % (coro_qualname, code.co_filename, - code.co_firstlineno)) - - self.assertEqual(repr(gen), '' % coro) - - # test pending Task - t = self.new_task(self.loop, gen) - t.add_done_callback(Dummy()) - - # format the coroutine object - if coroutines._DEBUG: - src = '%s:%s' % test_utils.get_function_source(notmuch) - else: - code = gen.gi_code - src = '%s:%s' % (code.co_filename, code.co_firstlineno) - coro = format_coroutine(coro_qualname, 'running', src, - t._source_traceback, - generator=not coroutines._DEBUG) - self.assertEqual(repr(t), - "()]>" % coro) - self.loop.run_until_complete(t) - def test_task_repr_wait_for(self): self.loop.set_debug(False) @@ -527,30 +414,6 @@ async def wait_for(fut): fut.set_result(None) self.loop.run_until_complete(task) - def test_task_repr_partial_corowrapper(self): - # Issue #222: repr(CoroWrapper) must not fail in debug mode if the - # coroutine is a partial function - with set_coroutine_debug(True): - self.loop.set_debug(True) - - async def func(x, y): - await asyncio.sleep(0) - - with self.assertWarns(DeprecationWarning): - partial_func = asyncio.coroutine(functools.partial(func, 1)) - task = self.loop.create_task(partial_func(2)) - - # make warnings quiet - task._log_destroy_pending = False - self.addCleanup(task._coro.close) - - coro_repr = repr(task._coro) - expected = ( - r'\.func at' - ) - self.assertRegex(coro_repr, expected) - def test_task_basics(self): async def outer(): @@ -741,12 +604,10 @@ async def coro(): (asyncio.CancelledError, ('my message',), 2)) def test_cancel_yield(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def task(): - yield - yield - return 12 + async def task(): + await asyncio.sleep(0) + await asyncio.sleep(0) + return 12 t = self.new_task(self.loop, task()) test_utils.run_briefly(self.loop) # start coro @@ -1322,10 +1183,8 @@ async def foo(): def test_wait_duplicate_coroutines(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(s): - return s + async def coro(s): + return s c = coro('test') task = self.new_task( self.loop, @@ -1587,16 +1446,14 @@ def gen(): completed = set() time_shifted = False - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def sleeper(dt, x): - nonlocal time_shifted - yield from asyncio.sleep(dt) - completed.add(x) - if not time_shifted and 'a' in completed and 'b' in completed: - time_shifted = True - loop.advance_time(0.14) - return x + async def sleeper(dt, x): + nonlocal time_shifted + await asyncio.sleep(dt) + completed.add(x) + if not time_shifted and 'a' in completed and 'b' in completed: + time_shifted = True + loop.advance_time(0.14) + return x a = sleeper(0.01, 'a') b = sleeper(0.01, 'b') @@ -1614,10 +1471,6 @@ async def foo(): self.assertTrue('b' in res[:2]) self.assertEqual(res[2], 'c') - # Doing it again should take no time and exercise a different path. - res = loop.run_until_complete(self.new_task(loop, foo())) - self.assertAlmostEqual(0.15, loop.time()) - def test_as_completed_with_timeout(self): def gen(): @@ -1727,19 +1580,15 @@ async def test(): def test_as_completed_duplicate_coroutines(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(s): - return s + async def coro(s): + return s - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def runner(): - result = [] - c = coro('ham') - for f in asyncio.as_completed([c, c, coro('spam')]): - result.append((yield from f)) - return result + async def runner(): + result = [] + c = coro('ham') + for f in asyncio.as_completed([c, c, coro('spam')]): + result.append(await f) + return result fut = self.new_task(self.loop, runner()) self.loop.run_until_complete(fut) @@ -1900,17 +1749,6 @@ async def notmuch(): self.loop.run_until_complete(task), 'ko') - def test_step_result(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def notmuch(): - yield None - yield 1 - return 'ko' - - self.assertRaises( - RuntimeError, self.loop.run_until_complete, notmuch()) - def test_step_result_future(self): # If coroutine returns future, task waits on this future. @@ -1983,53 +1821,15 @@ def fn1(): yield self.assertFalse(asyncio.iscoroutinefunction(fn1)) - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def fn2(): - yield + async def fn2(): + pass self.assertTrue(asyncio.iscoroutinefunction(fn2)) self.assertFalse(asyncio.iscoroutinefunction(mock.Mock())) - def test_yield_vs_yield_from(self): - fut = self.new_future(self.loop) - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def wait_for_future(): - yield fut - - task = wait_for_future() - with self.assertRaises(RuntimeError): - self.loop.run_until_complete(task) - - self.assertFalse(fut.done()) - - def test_yield_vs_yield_from_generator(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(): - yield - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def wait_for_future(): - gen = coro() - try: - yield gen - finally: - gen.close() - - task = wait_for_future() - self.assertRaises( - RuntimeError, - self.loop.run_until_complete, task) - def test_coroutine_non_gen_function(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def func(): - return 'test' + async def func(): + return 'test' self.assertTrue(asyncio.iscoroutinefunction(func)) @@ -2042,10 +1842,8 @@ def func(): def test_coroutine_non_gen_function_return_future(self): fut = self.new_future(self.loop) - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def func(): - return fut + async def func(): + return fut async def coro(): fut.set_result('test') @@ -2053,7 +1851,7 @@ async def coro(): t1 = self.new_task(self.loop, func()) t2 = self.new_task(self.loop, coro()) res = self.loop.run_until_complete(t1) - self.assertEqual(res, 'test') + self.assertEqual(res, fut) self.assertIsNone(t2.result()) def test_current_task(self): @@ -2309,136 +2107,15 @@ def test_wait_invalid_args(self): self.assertRaises(ValueError, self.loop.run_until_complete, asyncio.wait([])) - def test_corowrapper_mocks_generator(self): - - def check(): - # A function that asserts various things. - # Called twice, with different debug flag values. - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(): - # The actual coroutine. - self.assertTrue(gen.gi_running) - yield from fut - - # A completed Future used to run the coroutine. - fut = self.new_future(self.loop) - fut.set_result(None) - - # Call the coroutine. - gen = coro() - - # Check some properties. - self.assertTrue(asyncio.iscoroutine(gen)) - self.assertIsInstance(gen.gi_frame, types.FrameType) - self.assertFalse(gen.gi_running) - self.assertIsInstance(gen.gi_code, types.CodeType) - - # Run it. - self.loop.run_until_complete(gen) - - # The frame should have changed. - self.assertIsNone(gen.gi_frame) - - # Test with debug flag cleared. - with set_coroutine_debug(False): - check() - - # Test with debug flag set. - with set_coroutine_debug(True): - check() - - def test_yield_from_corowrapper(self): - with set_coroutine_debug(True): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def t1(): - return (yield from t2()) - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def t2(): - f = self.new_future(self.loop) - self.new_task(self.loop, t3(f)) - return (yield from f) - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def t3(f): - f.set_result((1, 2, 3)) - - task = self.new_task(self.loop, t1()) - val = self.loop.run_until_complete(task) - self.assertEqual(val, (1, 2, 3)) - - def test_yield_from_corowrapper_send(self): - def foo(): - a = yield - return a - - def call(arg): - cw = asyncio.coroutines.CoroWrapper(foo()) - cw.send(None) - try: - cw.send(arg) - except StopIteration as ex: - return ex.args[0] - else: - raise AssertionError('StopIteration was expected') - - self.assertEqual(call((1, 2)), (1, 2)) - self.assertEqual(call('spam'), 'spam') - - def test_corowrapper_weakref(self): - wd = weakref.WeakValueDictionary() - def foo(): yield from [] - cw = asyncio.coroutines.CoroWrapper(foo()) - wd['cw'] = cw # Would fail without __weakref__ slot. - cw.gen = None # Suppress warning from __del__. - - def test_corowrapper_throw(self): - # Issue 429: CoroWrapper.throw must be compatible with gen.throw - def foo(): - value = None - while True: - try: - value = yield value - except Exception as e: - value = e - - exception = Exception("foo") - cw = asyncio.coroutines.CoroWrapper(foo()) - cw.send(None) - self.assertIs(exception, cw.throw(exception)) - - cw = asyncio.coroutines.CoroWrapper(foo()) - cw.send(None) - self.assertIs(exception, cw.throw(Exception, exception)) - - cw = asyncio.coroutines.CoroWrapper(foo()) - cw.send(None) - exception = cw.throw(Exception, "foo") - self.assertIsInstance(exception, Exception) - self.assertEqual(exception.args, ("foo", )) - - cw = asyncio.coroutines.CoroWrapper(foo()) - cw.send(None) - exception = cw.throw(Exception, "foo", None) - self.assertIsInstance(exception, Exception) - self.assertEqual(exception.args, ("foo", )) - def test_log_destroyed_pending_task(self): Task = self.__class__.Task - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def kill_me(loop): - future = self.new_future(loop) - yield from future - # at this point, the only reference to kill_me() task is - # the Task._wakeup() method in future._callbacks - raise Exception("code never reached") + async def kill_me(loop): + future = self.new_future(loop) + await future + # at this point, the only reference to kill_me() task is + # the Task._wakeup() method in future._callbacks + raise Exception("code never reached") mock_handler = mock.Mock() self.loop.set_debug(True) @@ -2456,8 +2133,6 @@ def kill_me(loop): self.loop._run_once() self.assertEqual(len(self.loop._ready), 0) - # remove the future used in kill_me(), and references to the task - del coro.gi_frame.f_locals['future'] coro = None source_traceback = task._source_traceback task = None @@ -2491,62 +2166,6 @@ async def runner(): loop.run_until_complete(runner()) self.assertFalse(m_log.error.called) - @mock.patch('asyncio.coroutines.logger') - def test_coroutine_never_yielded(self, m_log): - with set_coroutine_debug(True): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro_noop(): - pass - - tb_filename = __file__ - tb_lineno = sys._getframe().f_lineno + 2 - # create a coroutine object but don't use it - coro_noop() - support.gc_collect() - - self.assertTrue(m_log.error.called) - message = m_log.error.call_args[0][0] - func_filename, func_lineno = test_utils.get_function_source(coro_noop) - - regex = (r'^ ' - r'was never yielded from\n' - r'Coroutine object created at \(most recent call last, truncated to \d+ last lines\):\n' - r'.*\n' - r' File "%s", line %s, in test_coroutine_never_yielded\n' - r' coro_noop\(\)$' - % (re.escape(coro_noop.__qualname__), - re.escape(func_filename), func_lineno, - re.escape(tb_filename), tb_lineno)) - - self.assertRegex(message, re.compile(regex, re.DOTALL)) - - def test_return_coroutine_from_coroutine(self): - """Return of @asyncio.coroutine()-wrapped function generator object - from @asyncio.coroutine()-wrapped function should have same effect as - returning generator object or Future.""" - def check(): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def outer_coro(): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def inner_coro(): - return 1 - - return inner_coro() - - result = self.loop.run_until_complete(outer_coro()) - self.assertEqual(result, 1) - - # Test with debug flag cleared. - with set_coroutine_debug(False): - check() - - # Test with debug flag set. - with set_coroutine_debug(True): - check() - def test_task_source_traceback(self): self.loop.set_debug(True) @@ -2677,10 +2296,8 @@ def call_soon(callback, *args, **kwargs): raise ValueError self.loop.call_soon = call_soon - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(): - pass + async def coro(): + pass self.assertFalse(m_log.error.called) @@ -2708,23 +2325,6 @@ def test_create_task_with_noncoroutine(self): "a coroutine was expected, got 123"): self.new_task(self.loop, 123) - def test_create_task_with_oldstyle_coroutine(self): - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(): - pass - - task = self.new_task(self.loop, coro()) - self.assertIsInstance(task, self.Task) - self.loop.run_until_complete(task) - - # test it for the second time to ensure that caching - # in asyncio.iscoroutine() doesn't break things. - task = self.new_task(self.loop, coro()) - self.assertIsInstance(task, self.Task) - self.loop.run_until_complete(task) - def test_create_task_with_async_function(self): async def coro(): @@ -3365,7 +2965,7 @@ def test_return_exceptions(self): def test_env_var_debug(self): code = '\n'.join(( 'import asyncio.coroutines', - 'print(asyncio.coroutines._DEBUG)')) + 'print(asyncio.coroutines._is_debug_mode())')) # Test with -E to not fail if the unit test was run with # PYTHONASYNCIODEBUG set to a non-empty string @@ -3542,10 +3142,8 @@ async def coro(): self.other_loop.run_until_complete(fut) def test_duplicate_coroutines(self): - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(s): - return s + async def coro(s): + return s c = coro('abc') fut = self._gather(c, c, coro('def'), c) self._run_loop(self.one_loop) @@ -3633,9 +3231,7 @@ def target(self, fail=False, cancel=False, timeout=None, # otherwise it spills errors and breaks **other** unittests, since # 'target' is interacting with threads. - # With this call, `coro` will be advanced, so that - # CoroWrapper.__del__ won't do anything when asyncio tests run - # in debug mode. + # With this call, `coro` will be advanced. self.loop.call_soon_threadsafe(coro.send, None) try: return future.result(timeout) @@ -3771,54 +3367,6 @@ def tearDown(self): self.loop = None super().tearDown() - def test_yield_from_awaitable(self): - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro(): - yield from asyncio.sleep(0) - return 'ok' - - result = self.loop.run_until_complete(coro()) - self.assertEqual('ok', result) - - def test_await_old_style_coro(self): - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro1(): - return 'ok1' - - with self.assertWarns(DeprecationWarning): - @asyncio.coroutine - def coro2(): - yield from asyncio.sleep(0) - return 'ok2' - - async def inner(): - return await asyncio.gather(coro1(), coro2()) - - result = self.loop.run_until_complete(inner()) - self.assertEqual(['ok1', 'ok2'], result) - - def test_debug_mode_interop(self): - # https://bugs.python.org/issue32636 - code = textwrap.dedent(""" - import asyncio - - async def native_coro(): - pass - - @asyncio.coroutine - def old_style_coro(): - yield from native_coro() - - asyncio.run(old_style_coro()) - """) - - assert_python_ok("-Wignore::DeprecationWarning", "-c", code, - PYTHONASYNCIODEBUG="1") - if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Library/2021-05-25-23-26-38.bpo-43216.xTUyyX.rst b/Misc/NEWS.d/next/Library/2021-05-25-23-26-38.bpo-43216.xTUyyX.rst new file mode 100644 index 00000000000000..845ef95d1ad296 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-05-25-23-26-38.bpo-43216.xTUyyX.rst @@ -0,0 +1,6 @@ +Remove the :func:`@asyncio.coroutine ` :term:`decorator` +enabling legacy generator-based coroutines to be compatible with async/await +code; remove :class:`asyncio.coroutines.CoroWrapper` used for wrapping +legacy coroutine objects in the debug mode. The decorator has been deprecated +since Python 3.8 and the removal was initially scheduled for Python 3.10. +Patch by Illia Volochii. From ddd5f36971e2ffe20cc3f4b408425c847d168646 Mon Sep 17 00:00:00 2001 From: Illia Volochii Date: Thu, 1 Jul 2021 17:46:49 +0300 Subject: [PATCH 12/40] bpo-43234: Prohibit non-ThreadPoolExecutor in loop.set_default_executor (GH-24540) --- Doc/library/asyncio-eventloop.rst | 12 ++++-------- Doc/whatsnew/3.11.rst | 9 +++++++++ Lib/asyncio/base_events.py | 6 +----- Lib/test/test_asyncio/test_base_events.py | 8 ++++---- .../Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst | 3 +++ 5 files changed, 21 insertions(+), 17 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst index 83ab7360a9b6e2..f0f6ae6d98ff99 100644 --- a/Doc/library/asyncio-eventloop.rst +++ b/Doc/library/asyncio-eventloop.rst @@ -1132,16 +1132,12 @@ Executing code in thread or process pools .. method:: loop.set_default_executor(executor) Set *executor* as the default executor used by :meth:`run_in_executor`. - *executor* should be an instance of + *executor* must be an instance of :class:`~concurrent.futures.ThreadPoolExecutor`. - .. deprecated:: 3.8 - Using an executor that is not an instance of - :class:`~concurrent.futures.ThreadPoolExecutor` is deprecated and - will trigger an error in Python 3.9. - - *executor* must be an instance of - :class:`concurrent.futures.ThreadPoolExecutor`. + .. versionchanged:: 3.11 + *executor* must be an instance of + :class:`~concurrent.futures.ThreadPoolExecutor`. Error Handling API diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 94d8bef4d521b0..5b51273ed6b9a2 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -188,6 +188,15 @@ This section lists previously described changes and other bugfixes that may require changes to your code. +Changes in the Python API +------------------------- + +* Prohibited passing non-:class:`concurrent.futures.ThreadPoolExecutor` + executors to :meth:`loop.set_default_executor` following a deprecation in + Python 3.8. + (Contributed by Illia Volochii in :issue:`43234`.) + + C API Changes ============= diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index f789635e0f893a..74d5670bf74edb 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -814,11 +814,7 @@ def run_in_executor(self, executor, func, *args): def set_default_executor(self, executor): if not isinstance(executor, concurrent.futures.ThreadPoolExecutor): - warnings.warn( - 'Using the default executor that is not an instance of ' - 'ThreadPoolExecutor is deprecated and will be prohibited ' - 'in Python 3.9', - DeprecationWarning, 2) + raise TypeError('executor must be ThreadPoolExecutor instance') self._default_executor = executor def _getaddrinfo_debug(self, host, port, family, type, proto, flags): diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index 47a9fb98001b4d..adc7bd42c1508d 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -224,14 +224,14 @@ def submit(self, fn, *args, **kwargs): self.loop.set_default_executor(executor) self.assertIs(executor, self.loop._default_executor) - def test_set_default_executor_deprecation_warnings(self): + def test_set_default_executor_error(self): executor = mock.Mock() - with self.assertWarns(DeprecationWarning): + msg = 'executor must be ThreadPoolExecutor instance' + with self.assertRaisesRegex(TypeError, msg): self.loop.set_default_executor(executor) - # Avoid cleaning up the executor mock - self.loop._default_executor = None + self.assertIsNone(self.loop._default_executor) def test_call_soon(self): def cb(): diff --git a/Misc/NEWS.d/next/Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst b/Misc/NEWS.d/next/Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst new file mode 100644 index 00000000000000..7f195cc752fc13 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst @@ -0,0 +1,3 @@ +Prohibit passing non-:class:`concurrent.futures.ThreadPoolExecutor` +executors to :meth:`loop.set_default_executor` following a deprecation in +Python 3.8. Patch by Illia Volochii. From 0d7f61ddb074659d8c18c8f5ac86a6a18e41f9e5 Mon Sep 17 00:00:00 2001 From: Batuhan Taskaya Date: Thu, 1 Jul 2021 22:25:10 +0300 Subject: [PATCH 13/40] bpo-44313: bump up magic (#26983) --- Lib/importlib/_bootstrap_external.py | 2 +- Python/importlib_external.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index c8b8ece5f57aea..c3ce4703a27b85 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -370,7 +370,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3457).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3458).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Python/importlib_external.h b/Python/importlib_external.h index f0d4138a0803e7..734f78fc037cbe 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -362,7 +362,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 11,179,9,62,0,190,7,65,22,7,193,6,5,65,12,6, 193,11,1,65,22,7,193,12,7,65,21,13,193,19,3,65, 22,7,193,23,1,65,21,13,193,24,1,65,22,7,114,95, - 0,0,0,105,129,13,0,0,114,45,0,0,0,114,33,0, + 0,0,0,105,130,13,0,0,114,45,0,0,0,114,33,0, 0,0,115,2,0,0,0,13,10,90,11,95,95,112,121,99, 97,99,104,101,95,95,122,4,111,112,116,45,122,3,46,112, 121,122,4,46,112,121,119,122,4,46,112,121,99,41,1,218, From a7e251b07aa5f1a858a3e791a30dea78e93ab728 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Fri, 2 Jul 2021 10:41:54 +0900 Subject: [PATCH 14/40] bpo-43425: Update setup.py not to use distutils.log (GH-26969) --- setup.py | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/setup.py b/setup.py index ce71a966a81941..bc2ea16089569f 100644 --- a/setup.py +++ b/setup.py @@ -4,6 +4,7 @@ import importlib._bootstrap import importlib.machinery import importlib.util +import logging import os import re import sys @@ -44,7 +45,6 @@ DeprecationWarning ) - from distutils import log from distutils.command.build_ext import build_ext from distutils.command.build_scripts import build_scripts from distutils.command.install import install @@ -64,6 +64,10 @@ LIST_MODULE_NAMES = False +logging.basicConfig(format='%(message)s', level=logging.INFO) +log = logging.getLogger('setup') + + def get_platform(): # Cross compiling if "_PYTHON_HOST_PLATFORM" in os.environ: @@ -241,6 +245,7 @@ def grep_headers_for(function, headers): return True return False + def find_file(filename, std_dirs, paths): """Searches for the directory where a given file is located, and returns a possibly-empty list of additional directories, or None @@ -259,23 +264,23 @@ def find_file(filename, std_dirs, paths): sysroot = macosx_sdk_root() # Check the standard locations - for dir in std_dirs: - f = os.path.join(dir, filename) + for dir_ in std_dirs: + f = os.path.join(dir_, filename) - if MACOS and is_macosx_sdk_path(dir): - f = os.path.join(sysroot, dir[1:], filename) + if MACOS and is_macosx_sdk_path(dir_): + f = os.path.join(sysroot, dir_[1:], filename) if os.path.exists(f): return [] # Check the additional directories - for dir in paths: - f = os.path.join(dir, filename) + for dir_ in paths: + f = os.path.join(dir_, filename) - if MACOS and is_macosx_sdk_path(dir): - f = os.path.join(sysroot, dir[1:], filename) + if MACOS and is_macosx_sdk_path(dir_): + f = os.path.join(sysroot, dir_[1:], filename) if os.path.exists(f): - return [dir] + return [dir_] # Not found anywhere return None @@ -333,6 +338,7 @@ def find_library_file(compiler, libname, std_dirs, paths): else: assert False, "Internal error: Path not found in std_dirs or paths" + def validate_tzpath(): base_tzpath = sysconfig.get_config_var('TZPATH') if not base_tzpath: @@ -345,15 +351,16 @@ def validate_tzpath(): + f'found:\n{tzpaths!r}\nwith invalid paths:\n' + f'{bad_paths!r}') + def find_module_file(module, dirlist): """Find a module in a set of possible folders. If it is not found return the unadorned filename""" - list = find_file(module, [], dirlist) - if not list: + dirs = find_file(module, [], dirlist) + if not dirs: return module - if len(list) > 1: - log.info("WARNING: multiple copies of %s found", module) - return os.path.join(list[0], module) + if len(dirs) > 1: + log.info(f"WARNING: multiple copies of {module} found") + return os.path.join(dirs[0], module) class PyBuildExt(build_ext): @@ -2667,7 +2674,7 @@ def copy_scripts(self): newfilename = filename + fullversion else: newfilename = filename + minoronly - log.info('renaming %s to %s', filename, newfilename) + log.info(f'renaming {filename} to {newfilename}') os.rename(filename, newfilename) newoutfiles.append(newfilename) if filename in updated_files: From 85b920498b42c69185540ecc2f5c4907fd38d877 Mon Sep 17 00:00:00 2001 From: finefoot <33361833+finefoot@users.noreply.github.com> Date: Fri, 2 Jul 2021 05:45:02 +0200 Subject: [PATCH 15/40] bpo-30256: Add manager_owned keyword arg to AutoProxy (GH-16341) Co-authored-by: Jordan Speicher --- Lib/multiprocessing/managers.py | 4 ++-- Lib/test/_test_multiprocessing.py | 10 ++++++++++ .../Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst | 1 + .../Tests/2019-09-25-18-10-10.bpo-30256.A5i76Q.rst | 2 ++ 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst create mode 100644 Misc/NEWS.d/next/Tests/2019-09-25-18-10-10.bpo-30256.A5i76Q.rst diff --git a/Lib/multiprocessing/managers.py b/Lib/multiprocessing/managers.py index 6ee9521c76b48f..b981b0e1cb8ed8 100644 --- a/Lib/multiprocessing/managers.py +++ b/Lib/multiprocessing/managers.py @@ -967,7 +967,7 @@ def MakeProxyType(name, exposed, _cache={}): def AutoProxy(token, serializer, manager=None, authkey=None, - exposed=None, incref=True): + exposed=None, incref=True, manager_owned=False): ''' Return an auto-proxy for `token` ''' @@ -987,7 +987,7 @@ def AutoProxy(token, serializer, manager=None, authkey=None, ProxyType = MakeProxyType('AutoProxy[%s]' % token.typeid, exposed) proxy = ProxyType(token, serializer, manager=manager, authkey=authkey, - incref=incref) + incref=incref, manager_owned=manager_owned) proxy._isauto = True return proxy diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index ead92cfa2abfea..4c4da24a30c371 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -2286,6 +2286,16 @@ def test_dict_proxy_nested(self): self.assertIsInstance(outer[0], list) # Not a ListProxy self.assertEqual(outer[-1][-1]['feed'], 3) + def test_nested_queue(self): + a = self.list() # Test queue inside list + a.append(self.Queue()) + a[0].put(123) + self.assertEqual(a[0].get(), 123) + b = self.dict() # Test queue inside dict + b[0] = self.Queue() + b[0].put(456) + self.assertEqual(b[0].get(), 456) + def test_namespace(self): n = self.Namespace() n.name = 'Bob' diff --git a/Misc/NEWS.d/next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst b/Misc/NEWS.d/next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst new file mode 100644 index 00000000000000..4490803f32642e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst @@ -0,0 +1 @@ +Pass multiprocessing BaseProxy argument `manager_owned` through AutoProxy diff --git a/Misc/NEWS.d/next/Tests/2019-09-25-18-10-10.bpo-30256.A5i76Q.rst b/Misc/NEWS.d/next/Tests/2019-09-25-18-10-10.bpo-30256.A5i76Q.rst new file mode 100644 index 00000000000000..4a7cfd52fcea22 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2019-09-25-18-10-10.bpo-30256.A5i76Q.rst @@ -0,0 +1,2 @@ +Add test for nested queues when using ``multiprocessing`` shared objects +``AutoProxy[Queue]`` inside ``ListProxy`` and ``DictProxy`` From 943e77d42d3f84b581f32c05f1fc8c05366b8ed3 Mon Sep 17 00:00:00 2001 From: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Date: Fri, 2 Jul 2021 10:42:08 +0100 Subject: [PATCH 16/40] =?UTF-8?q?bpo-34798:=20[doc]=20clearer=20presentati?= =?UTF-8?q?on=20of=20pprint.PrettyPrinter=20constru=E2=80=A6=20(GH-26967)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Doc/library/pprint.rst | 48 ++++++++++++------- .../2021-06-30-13-29-49.bpo-34798.t7FCa0.rst | 1 + 2 files changed, 31 insertions(+), 18 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2021-06-30-13-29-49.bpo-34798.t7FCa0.rst diff --git a/Doc/library/pprint.rst b/Doc/library/pprint.rst index f45c66fd9f46fb..8f374503725ad1 100644 --- a/Doc/library/pprint.rst +++ b/Doc/library/pprint.rst @@ -42,24 +42,36 @@ The :mod:`pprint` module defines one class: compact=False, sort_dicts=True, underscore_numbers=False) Construct a :class:`PrettyPrinter` instance. This constructor understands - several keyword parameters. An output stream may be set using the *stream* - keyword; the only method used on the stream object is the file protocol's - :meth:`write` method. If not specified, the :class:`PrettyPrinter` adopts - ``sys.stdout``. The - amount of indentation added for each recursive level is specified by *indent*; - the default is one. Other values can cause output to look a little odd, but can - make nesting easier to spot. The number of levels which may be printed is - controlled by *depth*; if the data structure being printed is too deep, the next - contained level is replaced by ``...``. By default, there is no constraint on - the depth of the objects being formatted. The desired output width is - constrained using the *width* parameter; the default is 80 characters. If a - structure cannot be formatted within the constrained width, a best effort will - be made. If *compact* is false (the default) each item of a long sequence - will be formatted on a separate line. If *compact* is true, as many items - as will fit within the *width* will be formatted on each output line. If - *sort_dicts* is true (the default), dictionaries will be formatted with their - keys sorted, otherwise they will display in insertion order. If - *underscore_numbers* is true, integers will be formatted with the + several keyword parameters. + + *stream* (default ``sys.stdout``) is a :term:`file-like object` to + which the output will be written by calling its :meth:`write` method. + + Other values configure the manner in which nesting of complex data + structures is displayed. + + *indent* (default 1) specifies the amount of indentation added for + each nesting level. + + *depth* controls the number of nesting levels which may be printed; if + the data structure being printed is too deep, the next contained level + is replaced by ``...``. By default, there is no constraint on the + depth of the objects being formatted. + + *width* (default 80) specifies the desired maximum number of characters per + line in the output. If a structure cannot be formatted within the width + constraint, a best effort will be made. + + *compact* impacts the way that long sequences (lists, tuples, sets, etc) + are formatted. If *compact* is false (the default) then each item of a + sequence will be formatted on a separate line. If *compact* is true, as + many items as will fit within the *width* will be formatted on each output + line. + + If *sort_dicts* is true (the default), dictionaries will be formatted with + their keys sorted, otherwise they will display in insertion order. + + If *underscore_numbers* is true, integers will be formatted with the ``_`` character for a thousands separator, otherwise underscores are not displayed (the default). diff --git a/Misc/NEWS.d/next/Library/2021-06-30-13-29-49.bpo-34798.t7FCa0.rst b/Misc/NEWS.d/next/Library/2021-06-30-13-29-49.bpo-34798.t7FCa0.rst new file mode 100644 index 00000000000000..ab9fd8e33799df --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-30-13-29-49.bpo-34798.t7FCa0.rst @@ -0,0 +1 @@ +Break up paragraph about :class:`pprint.PrettyPrinter` construction parameters to make it easier to read. \ No newline at end of file From 98eee94421dcb42c15f2d7fc4cd21357722fbe2a Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Fri, 2 Jul 2021 15:10:11 +0100 Subject: [PATCH 17/40] bpo-43950: Add code.co_positions (PEP 657) (GH-26955) This PR is part of PEP 657 and augments the compiler to emit ending line numbers as well as starting and ending columns from the AST into compiled code objects. This allows bytecodes to be correlated to the exact source code ranges that generated them. This information is made available through the following public APIs: * The `co_positions` method on code objects. * The C API function `PyCode_Addr2Location`. Co-authored-by: Batuhan Taskaya Co-authored-by: Ammar Askar --- Include/cpython/code.h | 25 +- Include/internal/pycore_code.h | 2 + Lib/ctypes/test/test_values.py | 6 +- Lib/importlib/_bootstrap_external.py | 3 +- Lib/test/test_code.py | 83 + Lib/test/test_compile.py | 114 + Objects/clinic/codeobject.c.h | 82 +- Objects/codeobject.c | 219 +- Programs/test_frozenmain.h | 9 +- Python/compile.c | 271 +- Python/frozen_hello.h | 5 +- Python/importlib.h | 4178 +++++++++++-------- Python/importlib_external.h | 5718 +++++++++++++++----------- Python/importlib_zipimport.h | 2070 ++++++---- Python/marshal.c | 14 + 15 files changed, 7622 insertions(+), 5177 deletions(-) diff --git a/Include/cpython/code.h b/Include/cpython/code.h index ed9ac2ee0deed6..f402be60684ca2 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -75,8 +75,13 @@ struct PyCodeObject { PyObject *co_localspluskinds; /* Bytes mapping to local kinds (one byte per variable) */ PyObject *co_filename; /* unicode (where it was loaded from) */ PyObject *co_name; /* unicode (name, for reference) */ - PyObject *co_linetable; /* string (encoding addr<->lineno mapping) See + PyObject *co_linetable; /* bytes (encoding addr<->lineno mapping) See Objects/lnotab_notes.txt for details. */ + PyObject *co_endlinetable; /* bytes object that holds end lineno for + instructions separated across different + lines */ + PyObject *co_columntable; /* bytes object that holds start/end column + offset each instruction */ /* These fields are set with computed values on new code objects. */ @@ -149,12 +154,14 @@ PyAPI_DATA(PyTypeObject) PyCode_Type; PyAPI_FUNC(PyCodeObject *) PyCode_New( int, int, int, int, int, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, - PyObject *, PyObject *, int, PyObject *, PyObject *); + PyObject *, PyObject *, int, PyObject *, PyObject *, + PyObject *, PyObject *); PyAPI_FUNC(PyCodeObject *) PyCode_NewWithPosOnlyArgs( int, int, int, int, int, int, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, - PyObject *, PyObject *, int, PyObject *, PyObject *); + PyObject *, PyObject *, int, PyObject *, PyObject *, + PyObject *, PyObject *); /* same as struct above */ /* Creates a new empty code object with the specified source location. */ @@ -166,6 +173,15 @@ PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno); use PyFrame_GetLineNumber() instead. */ PyAPI_FUNC(int) PyCode_Addr2Line(PyCodeObject *, int); +PyAPI_FUNC(int) PyCode_Addr2Location(PyCodeObject *, int, int *, int *, int *, int *); + +/* Return the ending source code line number from a bytecode index. */ +PyAPI_FUNC(int) _PyCode_Addr2EndLine(PyCodeObject *, int); +/* Return the starting source code column offset from a bytecode index. */ +PyAPI_FUNC(int) _PyCode_Addr2Offset(PyCodeObject *, int); +/* Return the ending source code column offset from a bytecode index. */ +PyAPI_FUNC(int) _PyCode_Addr2EndOffset(PyCodeObject *, int); + /* for internal use only */ struct _opaque { int computed_line; @@ -203,8 +219,9 @@ PyAPI_FUNC(int) _PyCode_GetExtra(PyObject *code, Py_ssize_t index, PyAPI_FUNC(int) _PyCode_SetExtra(PyObject *code, Py_ssize_t index, void *extra); -/** API for initializing the line number table. */ +/** API for initializing the line number tables. */ int _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds); +int _PyCode_InitEndAddressRange(PyCodeObject* co, PyCodeAddressRange* bounds); /** Out of process API for initializing the line number table. */ void PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range); diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 78969df081123e..6c1f8e14a41a05 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -218,6 +218,8 @@ struct _PyCodeConstructor { PyObject *code; int firstlineno; PyObject *linetable; + PyObject *endlinetable; + PyObject *columntable; /* used by the code */ PyObject *consts; diff --git a/Lib/ctypes/test/test_values.py b/Lib/ctypes/test/test_values.py index ca41ef170dd052..ade0c992f9102f 100644 --- a/Lib/ctypes/test/test_values.py +++ b/Lib/ctypes/test/test_values.py @@ -80,9 +80,9 @@ class struct_frozen(Structure): continue items.append((entry.name.decode("ascii"), entry.size)) - expected = [("__hello__", 133), - ("__phello__", -133), - ("__phello__.spam", 133), + expected = [("__hello__", 159), + ("__phello__", -159), + ("__phello__.spam", 159), ] self.assertEqual(items, expected, "PyImport_FrozenModules example " "in Doc/library/ctypes.rst may be out of date") diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index c3ce4703a27b85..21449cb415d9e7 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -361,6 +361,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.11a1 3456 (interleave cell args bpo-43693) # Python 3.11a1 3457 (Change localsplus to a bytes object bpo-43693) # Python 3.11a1 3458 (imported objects now don't use LOAD_METHOD/CALL_METHOD) +# Python 3.11a1 3459 (PEP 657: add end line numbers and column offsets for instructions) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -370,7 +371,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3458).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3459).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py index 27342ad4148344..55ba30a9f936a0 100644 --- a/Lib/test/test_code.py +++ b/Lib/test/test_code.py @@ -129,7 +129,9 @@ import sys import threading import unittest +import textwrap import weakref + try: import ctypes except ImportError: @@ -223,6 +225,8 @@ def func(): pass co.co_name, co.co_firstlineno, co.co_lnotab, + co.co_endlinetable, + co.co_columntable, co.co_exceptiontable, co.co_freevars, co.co_cellvars) @@ -257,6 +261,8 @@ def func2(): ("co_filename", "newfilename"), ("co_name", "newname"), ("co_linetable", code2.co_linetable), + ("co_endlinetable", code2.co_endlinetable), + ("co_columntable", code2.co_columntable), ): with self.subTest(attr=attr, value=value): new_code = code.replace(**{attr: value}) @@ -293,6 +299,8 @@ def func(): co.co_name, co.co_firstlineno, co.co_lnotab, + co.co_endlinetable, + co.co_columntable, co.co_exceptiontable, co.co_freevars, co.co_cellvars, @@ -309,6 +317,81 @@ def func(): new_code = code = func.__code__.replace(co_linetable=b'') self.assertEqual(list(new_code.co_lines()), []) + def test_co_positions_artificial_instructions(self): + import dis + + namespace = {} + exec(textwrap.dedent("""\ + try: + 1/0 + except Exception as e: + exc = e + """), namespace) + + exc = namespace['exc'] + traceback = exc.__traceback__ + code = traceback.tb_frame.f_code + + artificial_instructions = [] + for instr, positions in zip( + dis.get_instructions(code), + code.co_positions(), + strict=True + ): + # If any of the positions is None, then all have to + # be None as well for the case above. There are still + # some places in the compiler, where the artificial instructions + # get assigned the first_lineno but they don't have other positions. + # There is no easy way of inferring them at that stage, so for now + # we don't support it. + self.assertTrue(all(positions) or not any(positions)) + + if not any(positions): + artificial_instructions.append(instr) + + self.assertEqual( + [ + (instruction.opname, instruction.argval) + for instruction in artificial_instructions + ], + [ + ("PUSH_EXC_INFO", None), + ("LOAD_CONST", None), # artificial 'None' + ("STORE_NAME", "e"), # XX: we know the location for this + ("DELETE_NAME", "e"), + ("RERAISE", 1), + ("POP_EXCEPT_AND_RERAISE", None) + ] + ) + + # co_positions behavior when info is missing. + + def test_co_positions_empty_linetable(self): + def func(): + x = 1 + new_code = func.__code__.replace(co_linetable=b'') + for line, end_line, column, end_column in new_code.co_positions(): + self.assertIsNone(line) + self.assertEqual(end_line, new_code.co_firstlineno + 1) + + def test_co_positions_empty_endlinetable(self): + def func(): + x = 1 + new_code = func.__code__.replace(co_endlinetable=b'') + for line, end_line, column, end_column in new_code.co_positions(): + self.assertEqual(line, new_code.co_firstlineno + 1) + self.assertIsNone(end_line) + + def test_co_positions_empty_columntable(self): + def func(): + x = 1 + new_code = func.__code__.replace(co_columntable=b'') + for line, end_line, column, end_column in new_code.co_positions(): + self.assertEqual(line, new_code.co_firstlineno + 1) + self.assertEqual(end_line, new_code.co_firstlineno + 1) + self.assertIsNone(column) + self.assertIsNone(end_column) + def isinterned(s): return s is sys.intern(('_' + s + '_')[1:-1]) diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 7de607ca4c7898..47deda09f9010c 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -3,6 +3,7 @@ import os import unittest import sys +import ast import _ast import tempfile import types @@ -985,6 +986,119 @@ def if_else_break(): self.assertNotEqual(instr.arg, (line + 1)*INSTR_SIZE) +class TestSourcePositions(unittest.TestCase): + # Ensure that compiled code snippets have correct line and column numbers + # in `co_positions()`. + + def check_positions_against_ast(self, snippet): + # Basic check that makes sure each line and column is at least present + # in one of the AST nodes of the source code. + code = compile(snippet, 'test_compile.py', 'exec') + ast_tree = compile(snippet, 'test_compile.py', 'exec', _ast.PyCF_ONLY_AST) + self.assertTrue(type(ast_tree) == _ast.Module) + + # Use an AST visitor that notes all the offsets. + lines, end_lines, columns, end_columns = set(), set(), set(), set() + class SourceOffsetVisitor(ast.NodeVisitor): + def generic_visit(self, node): + super().generic_visit(node) + if not isinstance(node, ast.expr) and not isinstance(node, ast.stmt): + return + lines.add(node.lineno) + end_lines.add(node.end_lineno) + columns.add(node.col_offset + 1) + end_columns.add(node.end_col_offset + 1) + + SourceOffsetVisitor().visit(ast_tree) + + # Check against the positions in the code object. + for (line, end_line, col, end_col) in code.co_positions(): + # If the offset is not None (indicating missing data), ensure that + # it was part of one of the AST nodes. + if line is not None: + self.assertIn(line, lines) + if end_line is not None: + self.assertIn(end_line, end_lines) + if col is not None: + self.assertIn(col, columns) + if end_col is not None: + self.assertIn(end_col, end_columns) + + return code, ast_tree + + def assertOpcodeSourcePositionIs(self, code, opcode, + line, end_line, column, end_column): + + for instr, position in zip(dis.Bytecode(code), code.co_positions()): + if instr.opname == opcode: + self.assertEqual(position[0], line) + self.assertEqual(position[1], end_line) + self.assertEqual(position[2], column) + self.assertEqual(position[3], end_column) + return + + self.fail(f"Opcode {opcode} not found in code") + + def test_simple_assignment(self): + snippet = "x = 1" + self.check_positions_against_ast(snippet) + + def test_compiles_to_extended_op_arg(self): + # Make sure we still have valid positions when the code compiles to an + # EXTENDED_ARG by performing a loop which needs a JUMP_ABSOLUTE after + # a bunch of opcodes. + snippet = "x = x\n" * 10_000 + snippet += ("while x != 0:\n" + " x -= 1\n" + "while x != 0:\n" + " x += 1\n" + ) + + compiled_code, _ = self.check_positions_against_ast(snippet) + + self.assertOpcodeSourcePositionIs(compiled_code, 'INPLACE_SUBTRACT', + line=10_000 + 2, end_line=10_000 + 2, + column=3, end_column=9) + self.assertOpcodeSourcePositionIs(compiled_code, 'INPLACE_ADD', + line=10_000 + 4, end_line=10_000 + 4, + column=3, end_column=10) + + def test_multiline_expression(self): + snippet = """\ +f( + 1, 2, 3, 4 +) +""" + compiled_code, _ = self.check_positions_against_ast(snippet) + self.assertOpcodeSourcePositionIs(compiled_code, 'CALL_FUNCTION', + line=1, end_line=3, column=1, end_column=2) + + def test_very_long_line_end_offset(self): + # Make sure we get None for when the column offset is too large to + # store in a byte. + long_string = "a" * 1000 + snippet = f"g('{long_string}')" + + compiled_code, _ = self.check_positions_against_ast(snippet) + self.assertOpcodeSourcePositionIs(compiled_code, 'CALL_FUNCTION', + line=1, end_line=1, column=None, end_column=None) + + def test_complex_single_line_expression(self): + snippet = "a - b @ (c * x['key'] + 23)" + + compiled_code, _ = self.check_positions_against_ast(snippet) + self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_SUBSCR', + line=1, end_line=1, column=14, end_column=22) + self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_MULTIPLY', + line=1, end_line=1, column=10, end_column=22) + self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_ADD', + line=1, end_line=1, column=10, end_column=27) + self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_MATRIX_MULTIPLY', + line=1, end_line=1, column=5, end_column=28) + self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_SUBTRACT', + line=1, end_line=1, column=1, end_column=28) + + class TestExpressionStackSize(unittest.TestCase): # These tests check that the computed stack size for a code object # stays within reasonable bounds (see issue #21523 for an example diff --git a/Objects/clinic/codeobject.c.h b/Objects/clinic/codeobject.c.h index c1ad09cea05890..48aa8d7e1a5977 100644 --- a/Objects/clinic/codeobject.c.h +++ b/Objects/clinic/codeobject.c.h @@ -5,8 +5,8 @@ preserve PyDoc_STRVAR(code_new__doc__, "code(argcount, posonlyargcount, kwonlyargcount, nlocals, stacksize,\n" " flags, codestring, constants, names, varnames, filename, name,\n" -" firstlineno, linetable, exceptiontable, freevars=(), cellvars=(),\n" -" /)\n" +" firstlineno, linetable, endlinetable, columntable, exceptiontable,\n" +" freevars=(), cellvars=(), /)\n" "--\n" "\n" "Create a code object. Not for the faint of heart."); @@ -16,7 +16,8 @@ code_new_impl(PyTypeObject *type, int argcount, int posonlyargcount, int kwonlyargcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *filename, PyObject *name, - int firstlineno, PyObject *linetable, PyObject *exceptiontable, + int firstlineno, PyObject *linetable, PyObject *endlinetable, + PyObject *columntable, PyObject *exceptiontable, PyObject *freevars, PyObject *cellvars); static PyObject * @@ -37,6 +38,8 @@ code_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) PyObject *name; int firstlineno; PyObject *linetable; + PyObject *endlinetable; + PyObject *columntable; PyObject *exceptiontable; PyObject *freevars = NULL; PyObject *cellvars = NULL; @@ -45,7 +48,7 @@ code_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) !_PyArg_NoKeywords("code", kwargs)) { goto exit; } - if (!_PyArg_CheckPositional("code", PyTuple_GET_SIZE(args), 15, 17)) { + if (!_PyArg_CheckPositional("code", PyTuple_GET_SIZE(args), 17, 19)) { goto exit; } argcount = _PyLong_AsInt(PyTuple_GET_ITEM(args, 0)); @@ -121,25 +124,35 @@ code_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) _PyArg_BadArgument("code", "argument 15", "bytes", PyTuple_GET_ITEM(args, 14)); goto exit; } - exceptiontable = PyTuple_GET_ITEM(args, 14); - if (PyTuple_GET_SIZE(args) < 16) { + endlinetable = PyTuple_GET_ITEM(args, 14); + if (!PyBytes_Check(PyTuple_GET_ITEM(args, 15))) { + _PyArg_BadArgument("code", "argument 16", "bytes", PyTuple_GET_ITEM(args, 15)); + goto exit; + } + columntable = PyTuple_GET_ITEM(args, 15); + if (!PyBytes_Check(PyTuple_GET_ITEM(args, 16))) { + _PyArg_BadArgument("code", "argument 17", "bytes", PyTuple_GET_ITEM(args, 16)); + goto exit; + } + exceptiontable = PyTuple_GET_ITEM(args, 16); + if (PyTuple_GET_SIZE(args) < 18) { goto skip_optional; } - if (!PyTuple_Check(PyTuple_GET_ITEM(args, 15))) { - _PyArg_BadArgument("code", "argument 16", "tuple", PyTuple_GET_ITEM(args, 15)); + if (!PyTuple_Check(PyTuple_GET_ITEM(args, 17))) { + _PyArg_BadArgument("code", "argument 18", "tuple", PyTuple_GET_ITEM(args, 17)); goto exit; } - freevars = PyTuple_GET_ITEM(args, 15); - if (PyTuple_GET_SIZE(args) < 17) { + freevars = PyTuple_GET_ITEM(args, 17); + if (PyTuple_GET_SIZE(args) < 19) { goto skip_optional; } - if (!PyTuple_Check(PyTuple_GET_ITEM(args, 16))) { - _PyArg_BadArgument("code", "argument 17", "tuple", PyTuple_GET_ITEM(args, 16)); + if (!PyTuple_Check(PyTuple_GET_ITEM(args, 18))) { + _PyArg_BadArgument("code", "argument 19", "tuple", PyTuple_GET_ITEM(args, 18)); goto exit; } - cellvars = PyTuple_GET_ITEM(args, 16); + cellvars = PyTuple_GET_ITEM(args, 18); skip_optional: - return_value = code_new_impl(type, argcount, posonlyargcount, kwonlyargcount, nlocals, stacksize, flags, code, consts, names, varnames, filename, name, firstlineno, linetable, exceptiontable, freevars, cellvars); + return_value = code_new_impl(type, argcount, posonlyargcount, kwonlyargcount, nlocals, stacksize, flags, code, consts, names, varnames, filename, name, firstlineno, linetable, endlinetable, columntable, exceptiontable, freevars, cellvars); exit: return return_value; @@ -151,7 +164,8 @@ PyDoc_STRVAR(code_replace__doc__, " co_flags=-1, co_firstlineno=-1, co_code=None, co_consts=None,\n" " co_names=None, co_varnames=None, co_freevars=None,\n" " co_cellvars=None, co_filename=None, co_name=None,\n" -" co_linetable=None, co_exceptiontable=None)\n" +" co_linetable=None, co_endlinetable=None, co_columntable=None,\n" +" co_exceptiontable=None)\n" "--\n" "\n" "Return a copy of the code object with new values for the specified fields."); @@ -168,15 +182,17 @@ code_replace_impl(PyCodeObject *self, int co_argcount, PyObject *co_varnames, PyObject *co_freevars, PyObject *co_cellvars, PyObject *co_filename, PyObject *co_name, PyBytesObject *co_linetable, + PyBytesObject *co_endlinetable, + PyBytesObject *co_columntable, PyBytesObject *co_exceptiontable); static PyObject * code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { PyObject *return_value = NULL; - static const char * const _keywords[] = {"co_argcount", "co_posonlyargcount", "co_kwonlyargcount", "co_nlocals", "co_stacksize", "co_flags", "co_firstlineno", "co_code", "co_consts", "co_names", "co_varnames", "co_freevars", "co_cellvars", "co_filename", "co_name", "co_linetable", "co_exceptiontable", NULL}; + static const char * const _keywords[] = {"co_argcount", "co_posonlyargcount", "co_kwonlyargcount", "co_nlocals", "co_stacksize", "co_flags", "co_firstlineno", "co_code", "co_consts", "co_names", "co_varnames", "co_freevars", "co_cellvars", "co_filename", "co_name", "co_linetable", "co_endlinetable", "co_columntable", "co_exceptiontable", NULL}; static _PyArg_Parser _parser = {NULL, _keywords, "replace", 0}; - PyObject *argsbuf[17]; + PyObject *argsbuf[19]; Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; int co_argcount = self->co_argcount; int co_posonlyargcount = self->co_posonlyargcount; @@ -194,6 +210,8 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje PyObject *co_filename = self->co_filename; PyObject *co_name = self->co_name; PyBytesObject *co_linetable = (PyBytesObject *)self->co_linetable; + PyBytesObject *co_endlinetable = (PyBytesObject *)self->co_endlinetable; + PyBytesObject *co_columntable = (PyBytesObject *)self->co_columntable; PyBytesObject *co_exceptiontable = (PyBytesObject *)self->co_exceptiontable; args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf); @@ -362,13 +380,33 @@ code_replace(PyCodeObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje goto skip_optional_kwonly; } } - if (!PyBytes_Check(args[16])) { - _PyArg_BadArgument("replace", "argument 'co_exceptiontable'", "bytes", args[16]); + if (args[16]) { + if (!PyBytes_Check(args[16])) { + _PyArg_BadArgument("replace", "argument 'co_endlinetable'", "bytes", args[16]); + goto exit; + } + co_endlinetable = (PyBytesObject *)args[16]; + if (!--noptargs) { + goto skip_optional_kwonly; + } + } + if (args[17]) { + if (!PyBytes_Check(args[17])) { + _PyArg_BadArgument("replace", "argument 'co_columntable'", "bytes", args[17]); + goto exit; + } + co_columntable = (PyBytesObject *)args[17]; + if (!--noptargs) { + goto skip_optional_kwonly; + } + } + if (!PyBytes_Check(args[18])) { + _PyArg_BadArgument("replace", "argument 'co_exceptiontable'", "bytes", args[18]); goto exit; } - co_exceptiontable = (PyBytesObject *)args[16]; + co_exceptiontable = (PyBytesObject *)args[18]; skip_optional_kwonly: - return_value = code_replace_impl(self, co_argcount, co_posonlyargcount, co_kwonlyargcount, co_nlocals, co_stacksize, co_flags, co_firstlineno, co_code, co_consts, co_names, co_varnames, co_freevars, co_cellvars, co_filename, co_name, co_linetable, co_exceptiontable); + return_value = code_replace_impl(self, co_argcount, co_posonlyargcount, co_kwonlyargcount, co_nlocals, co_stacksize, co_flags, co_firstlineno, co_code, co_consts, co_names, co_varnames, co_freevars, co_cellvars, co_filename, co_name, co_linetable, co_endlinetable, co_columntable, co_exceptiontable); exit: return return_value; @@ -410,4 +448,4 @@ code__varname_from_oparg(PyCodeObject *self, PyObject *const *args, Py_ssize_t n exit: return return_value; } -/*[clinic end generated code: output=ba4c5487e0364ce8 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=a75c9ca013d9bf7d input=a9049054013a1b77]*/ diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 88e09ac4b97bb1..678958891a0bc4 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -244,6 +244,10 @@ _PyCode_Validate(struct _PyCodeConstructor *con) con->name == NULL || !PyUnicode_Check(con->name) || con->filename == NULL || !PyUnicode_Check(con->filename) || con->linetable == NULL || !PyBytes_Check(con->linetable) || + con->endlinetable == NULL || + (con->endlinetable != Py_None && !PyBytes_Check(con->endlinetable)) || + con->columntable == NULL || + (con->columntable != Py_None && !PyBytes_Check(con->columntable)) || con->exceptiontable == NULL || !PyBytes_Check(con->exceptiontable) ) { PyErr_BadInternalCall(); @@ -304,6 +308,10 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) co->co_firstlineno = con->firstlineno; Py_INCREF(con->linetable); co->co_linetable = con->linetable; + Py_INCREF(con->endlinetable); + co->co_endlinetable = con->endlinetable; + Py_INCREF(con->columntable); + co->co_columntable = con->columntable; Py_INCREF(con->consts); co->co_consts = con->consts; @@ -386,7 +394,8 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, int firstlineno, - PyObject *linetable, PyObject *exceptiontable) + PyObject *linetable, PyObject *endlinetable, + PyObject *columntable, PyObject *exceptiontable) { PyCodeObject *co = NULL; PyObject *localsplusnames = NULL; @@ -461,6 +470,8 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, .code = code, .firstlineno = firstlineno, .linetable = linetable, + .endlinetable = endlinetable, + .columntable = columntable, .consts = consts, .names = names, @@ -512,12 +523,14 @@ PyCode_New(int argcount, int kwonlyargcount, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, int firstlineno, - PyObject *linetable, PyObject *exceptiontable) + PyObject *linetable, PyObject *endlinetable, + PyObject *columntable, PyObject *exceptiontable) { return PyCode_NewWithPosOnlyArgs(argcount, 0, kwonlyargcount, nlocals, stacksize, flags, code, consts, names, varnames, freevars, cellvars, filename, - name, firstlineno, linetable, exceptiontable); + name, firstlineno, linetable, endlinetable, + columntable, exceptiontable); } PyCodeObject * @@ -552,6 +565,8 @@ PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno) .code = emptystring, .firstlineno = firstlineno, .linetable = emptystring, + .endlinetable = emptystring, + .columntable = emptystring, .consts = nulltuple, .names = nulltuple, .localsplusnames = nulltuple, @@ -570,7 +585,7 @@ PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno) /****************** - * the line table (co_linetable) + * source location tracking (co_lines/co_positions) ******************/ /* Use co_linetable to compute the line number from a bytecode index, addrq. See @@ -589,6 +604,71 @@ PyCode_Addr2Line(PyCodeObject *co, int addrq) return _PyCode_CheckLineNumber(addrq, &bounds); } +int +PyCode_Addr2Location(PyCodeObject *co, int addrq, + int *start_line, int *start_column, + int *end_line, int *end_column) +{ + *start_line = PyCode_Addr2Line(co, addrq); + if (*start_line == -1) { + *start_line = 0; + } + *start_column = _PyCode_Addr2Offset(co, addrq); + *end_line = _PyCode_Addr2EndLine(co, addrq); + *end_column = _PyCode_Addr2EndOffset(co, addrq); + return 1; +} + +int +_PyCode_Addr2EndLine(PyCodeObject* co, int addrq) +{ + if (addrq < 0) { + return co->co_firstlineno; + } + else if (co->co_endlinetable == Py_None) { + return 0; + } + + assert(addrq >= 0 && addrq < PyBytes_GET_SIZE(co->co_code)); + PyCodeAddressRange bounds; + _PyCode_InitEndAddressRange(co, &bounds); + return _PyCode_CheckLineNumber(addrq, &bounds); +} + +int +_PyCode_Addr2Offset(PyCodeObject* co, int addrq) +{ + if (co->co_columntable == Py_None || addrq < 0) { + return 0; + } + if (addrq % 2 == 1) { + --addrq; + } + if (addrq >= PyBytes_GET_SIZE(co->co_columntable)) { + return 0; + } + + unsigned char* bytes = (unsigned char*)PyBytes_AS_STRING(co->co_columntable); + return bytes[addrq]; +} + +int +_PyCode_Addr2EndOffset(PyCodeObject* co, int addrq) +{ + if (co->co_columntable == Py_None || addrq < 0) { + return 0; + } + if (addrq % 2 == 0) { + ++addrq; + } + if (addrq >= PyBytes_GET_SIZE(co->co_columntable)) { + return 0; + } + + unsigned char* bytes = (unsigned char*)PyBytes_AS_STRING(co->co_columntable); + return bytes[addrq]; +} + void PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range) { @@ -609,6 +689,15 @@ _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds) return bounds->ar_line; } +int +_PyCode_InitEndAddressRange(PyCodeObject* co, PyCodeAddressRange* bounds) +{ + char* linetable = PyBytes_AS_STRING(co->co_endlinetable); + Py_ssize_t length = PyBytes_GET_SIZE(co->co_endlinetable); + PyLineTable_InitAddressRange(linetable, length, co->co_firstlineno, bounds); + return bounds->ar_line; +} + /* Update *bounds to describe the first and one-past-the-last instructions in the same line as lasti. Return the number of that line, or -1 if lasti is out of bounds. */ int @@ -875,6 +964,106 @@ new_linesiterator(PyCodeObject *code) return li; } +/* co_positions iterator object. */ +typedef struct { + PyObject_HEAD + PyCodeObject* pi_code; + int pi_offset; +} positionsiterator; + +static void +positionsiter_dealloc(positionsiterator* pi) +{ + Py_DECREF(pi->pi_code); + Py_TYPE(pi)->tp_free(pi); +} + +static PyObject* +_source_offset_converter(int* value) { + if (*value <= 0) { + Py_RETURN_NONE; + } + return PyLong_FromLong(*value); +} + +static PyObject* +positionsiter_next(positionsiterator* pi) +{ + if (pi->pi_offset >= PyBytes_GET_SIZE(pi->pi_code->co_code)) { + return NULL; + } + + int start_line, start_col, end_line, end_col; + if (!PyCode_Addr2Location(pi->pi_code, pi->pi_offset, &start_line, + &start_col, &end_line, &end_col)) { + return NULL; + } + + pi->pi_offset += 2; + return Py_BuildValue("(O&O&O&O&)", + _source_offset_converter, &start_line, + _source_offset_converter, &end_line, + _source_offset_converter, &start_col, + _source_offset_converter, &end_col); +} + +static PyTypeObject PositionsIterator = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + "poisitions_iterator", /* tp_name */ + sizeof(positionsiterator), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)positionsiter_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 */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + PyObject_SelfIter, /* tp_iter */ + (iternextfunc)positionsiter_next, /* tp_iternext */ + 0, /* 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 */ + 0, /* tp_alloc */ + 0, /* tp_new */ + PyObject_Del, /* tp_free */ +}; + +static PyObject* +code_positionsiterator(PyCodeObject* code, PyObject* Py_UNUSED(args)) +{ + positionsiterator* pi = (positionsiterator*)PyType_GenericAlloc(&PositionsIterator, 0); + if (pi == NULL) { + return NULL; + } + Py_INCREF(code); + pi->pi_code = code; + pi->pi_offset = 0; + return (PyObject*)pi; +} + + /****************** * "extra" frame eval info (see PEP 523) ******************/ @@ -1026,6 +1215,8 @@ code.__new__ as code_new name: unicode firstlineno: int linetable: object(subclass_of="&PyBytes_Type") + endlinetable: object(subclass_of="&PyBytes_Type") + columntable: object(subclass_of="&PyBytes_Type") exceptiontable: object(subclass_of="&PyBytes_Type") freevars: object(subclass_of="&PyTuple_Type", c_default="NULL") = () cellvars: object(subclass_of="&PyTuple_Type", c_default="NULL") = () @@ -1039,9 +1230,10 @@ code_new_impl(PyTypeObject *type, int argcount, int posonlyargcount, int kwonlyargcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *filename, PyObject *name, - int firstlineno, PyObject *linetable, PyObject *exceptiontable, + int firstlineno, PyObject *linetable, PyObject *endlinetable, + PyObject *columntable, PyObject *exceptiontable, PyObject *freevars, PyObject *cellvars) -/*[clinic end generated code: output=a3899259c3b4cace input=f823c686da4b3a03]*/ +/*[clinic end generated code: output=014e77ed052be1a9 input=b22afe3c31be0b6e]*/ { PyObject *co = NULL; PyObject *ournames = NULL; @@ -1108,6 +1300,7 @@ code_new_impl(PyTypeObject *type, int argcount, int posonlyargcount, ourvarnames, ourfreevars, ourcellvars, filename, name, firstlineno, linetable, + endlinetable, columntable, exceptiontable ); cleanup: @@ -1147,6 +1340,8 @@ code_dealloc(PyCodeObject *co) Py_XDECREF(co->co_filename); Py_XDECREF(co->co_name); Py_XDECREF(co->co_linetable); + Py_XDECREF(co->co_endlinetable); + Py_XDECREF(co->co_columntable); Py_XDECREF(co->co_exceptiontable); if (co->co_weakreflist != NULL) PyObject_ClearWeakRefs((PyObject*)co); @@ -1284,6 +1479,8 @@ static PyMemberDef code_memberlist[] = { {"co_name", T_OBJECT, OFF(co_name), READONLY}, {"co_firstlineno", T_INT, OFF(co_firstlineno), READONLY}, {"co_linetable", T_OBJECT, OFF(co_linetable), READONLY}, + {"co_endlinetable", T_OBJECT, OFF(co_endlinetable), READONLY}, + {"co_columntable", T_OBJECT, OFF(co_columntable), READONLY}, {"co_exceptiontable", T_OBJECT, OFF(co_exceptiontable), READONLY}, {NULL} /* Sentinel */ }; @@ -1377,6 +1574,8 @@ code.replace co_filename: unicode(c_default="self->co_filename") = None co_name: unicode(c_default="self->co_name") = None co_linetable: PyBytesObject(c_default="(PyBytesObject *)self->co_linetable") = None + co_endlinetable: PyBytesObject(c_default="(PyBytesObject *)self->co_endlinetable") = None + co_columntable: PyBytesObject(c_default="(PyBytesObject *)self->co_columntable") = None co_exceptiontable: PyBytesObject(c_default="(PyBytesObject *)self->co_exceptiontable") = None Return a copy of the code object with new values for the specified fields. @@ -1391,8 +1590,10 @@ code_replace_impl(PyCodeObject *self, int co_argcount, PyObject *co_varnames, PyObject *co_freevars, PyObject *co_cellvars, PyObject *co_filename, PyObject *co_name, PyBytesObject *co_linetable, + PyBytesObject *co_endlinetable, + PyBytesObject *co_columntable, PyBytesObject *co_exceptiontable) -/*[clinic end generated code: output=80957472b7f78ed6 input=38376b1193efbbae]*/ +/*[clinic end generated code: output=1189cc8699162b11 input=29c8d25567d86c0d]*/ { #define CHECK_INT_ARG(ARG) \ if (ARG < 0) { \ @@ -1448,7 +1649,8 @@ code_replace_impl(PyCodeObject *self, int co_argcount, co_argcount, co_posonlyargcount, co_kwonlyargcount, co_nlocals, co_stacksize, co_flags, (PyObject*)co_code, co_consts, co_names, co_varnames, co_freevars, co_cellvars, co_filename, co_name, - co_firstlineno, (PyObject*)co_linetable, (PyObject*)co_exceptiontable); + co_firstlineno, (PyObject*)co_linetable, (PyObject*)co_endlinetable, + (PyObject*)co_columntable, (PyObject*)co_exceptiontable); error: Py_XDECREF(varnames); @@ -1484,6 +1686,7 @@ code__varname_from_oparg_impl(PyCodeObject *self, int oparg) static struct PyMethodDef code_methods[] = { {"__sizeof__", (PyCFunction)code_sizeof, METH_NOARGS}, {"co_lines", (PyCFunction)code_linesiterator, METH_NOARGS}, + {"co_positions", (PyCFunction)code_positionsiterator, METH_NOARGS}, CODE_REPLACE_METHODDEF CODE__VARNAME_FROM_OPARG_METHODDEF {NULL, NULL} /* sentinel */ diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index 10b13503b8e66a..22af31c82b74c9 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -23,5 +23,12 @@ unsigned char M_test_frozenmain[] = { 250,18,116,101,115,116,95,102,114,111,122,101,110,109,97,105, 110,46,112,121,218,8,60,109,111,100,117,108,101,62,1,0, 0,0,115,16,0,0,0,8,3,8,1,8,2,12,1,12, - 1,8,1,26,7,4,249,114,9,0,0,0, + 1,8,1,26,7,4,249,115,18,0,0,0,8,3,8,1, + 8,2,12,1,12,1,2,7,4,1,2,249,30,7,115,86, + 0,0,0,1,11,1,11,1,11,1,11,1,25,1,25,1, + 25,1,25,1,6,7,27,1,28,1,28,1,6,7,17,19, + 22,19,27,1,28,1,28,10,27,10,39,10,41,42,50,10, + 51,1,7,12,2,1,42,1,42,5,8,5,10,11,41,21, + 24,11,41,11,41,28,34,35,38,28,39,11,41,11,41,5, + 42,5,42,5,42,1,42,1,42,114,9,0,0,0, }; diff --git a/Python/compile.c b/Python/compile.c index 99e500f746185d..0bce6ce865d75e 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -40,6 +40,7 @@ #define DEFAULT_BLOCKS 8 #define DEFAULT_CODE_SIZE 128 #define DEFAULT_LNOTAB_SIZE 16 +#define DEFAULT_CNOTAB_SIZE 0 #define COMP_GENEXP 0 #define COMP_LISTCOMP 1 @@ -90,6 +91,9 @@ struct instr { /* target block when exception is raised, should not be set by front-end. */ struct basicblock_ *i_except; int i_lineno; + int i_end_lineno; + int i_col_offset; + int i_end_col_offset; }; typedef struct excepthandler { @@ -963,6 +967,19 @@ compiler_next_instr(basicblock *b) (c)->u->u_end_lineno = (x)->end_lineno; \ (c)->u->u_end_col_offset = (x)->end_col_offset; +// Artificial instructions +#define UNSET_LOC(c) \ + (c)->u->u_lineno = -1; \ + (c)->u->u_col_offset = -1; \ + (c)->u->u_end_lineno = -1; \ + (c)->u->u_end_col_offset = -1; + +#define COPY_INSTR_LOC(old, new) \ + (new).i_lineno = (old).i_lineno; \ + (new).i_col_offset = (old).i_col_offset; \ + (new).i_end_lineno = (old).i_end_lineno; \ + (new).i_end_col_offset = (old).i_end_col_offset; + /* Return the stack effect of opcode with argument oparg. Some opcodes have different stack effect when jump to the target and @@ -1266,7 +1283,8 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg) */ static int -compiler_addop_line(struct compiler *c, int opcode, int line) +compiler_addop_line(struct compiler *c, int opcode, int line, + int end_line, int col_offset, int end_col_offset) { basicblock *b; struct instr *i; @@ -1282,19 +1300,23 @@ compiler_addop_line(struct compiler *c, int opcode, int line) if (opcode == RETURN_VALUE) b->b_return = 1; i->i_lineno = line; + i->i_end_lineno = end_line; + i->i_col_offset = col_offset; + i->i_end_col_offset = end_col_offset; return 1; } static int compiler_addop(struct compiler *c, int opcode) { - return compiler_addop_line(c, opcode, c->u->u_lineno); + return compiler_addop_line(c, opcode, c->u->u_lineno, c->u->u_end_lineno, + c->u->u_col_offset, c->u->u_end_col_offset); } static int compiler_addop_noline(struct compiler *c, int opcode) { - return compiler_addop_line(c, opcode, -1); + return compiler_addop_line(c, opcode, -1, 0, 0, 0); } @@ -1488,7 +1510,9 @@ compiler_addop_name(struct compiler *c, int opcode, PyObject *dict, */ static int -compiler_addop_i_line(struct compiler *c, int opcode, Py_ssize_t oparg, int lineno) +compiler_addop_i_line(struct compiler *c, int opcode, Py_ssize_t oparg, + int lineno, int end_lineno, + int col_offset, int end_col_offset) { struct instr *i; int off; @@ -1510,22 +1534,30 @@ compiler_addop_i_line(struct compiler *c, int opcode, Py_ssize_t oparg, int line i->i_opcode = opcode; i->i_oparg = Py_SAFE_DOWNCAST(oparg, Py_ssize_t, int); i->i_lineno = lineno; + i->i_end_lineno = end_lineno; + i->i_col_offset = col_offset; + i->i_end_col_offset = end_col_offset; return 1; } static int compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg) { - return compiler_addop_i_line(c, opcode, oparg, c->u->u_lineno); + return compiler_addop_i_line(c, opcode, oparg, + c->u->u_lineno, c->u->u_end_lineno, + c->u->u_col_offset, c->u->u_end_col_offset); } static int compiler_addop_i_noline(struct compiler *c, int opcode, Py_ssize_t oparg) { - return compiler_addop_i_line(c, opcode, oparg, -1); + return compiler_addop_i_line(c, opcode, oparg, -1, 0, 0, 0); } -static int add_jump_to_block(basicblock *b, int opcode, int lineno, basicblock *target) +static int add_jump_to_block(basicblock *b, int opcode, + int lineno, int end_lineno, + int col_offset, int end_col_offset, + basicblock *target) { assert(HAS_ARG(opcode)); assert(b != NULL); @@ -1539,19 +1571,24 @@ static int add_jump_to_block(basicblock *b, int opcode, int lineno, basicblock * i->i_opcode = opcode; i->i_target = target; i->i_lineno = lineno; + i->i_end_lineno = end_lineno; + i->i_col_offset = col_offset; + i->i_end_col_offset = end_col_offset; return 1; } static int compiler_addop_j(struct compiler *c, int opcode, basicblock *b) { - return add_jump_to_block(c->u->u_curblock, opcode, c->u->u_lineno, b); + return add_jump_to_block(c->u->u_curblock, opcode, c->u->u_lineno, + c->u->u_end_lineno, c->u->u_col_offset, + c->u->u_end_col_offset, b); } static int compiler_addop_j_noline(struct compiler *c, int opcode, basicblock *b) { - return add_jump_to_block(c->u->u_curblock, opcode, -1, b); + return add_jump_to_block(c->u->u_curblock, opcode, -1, 0, 0, 0, b); } /* NEXT_BLOCK() creates an implicit jump from the current block @@ -1834,7 +1871,7 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, /* The finally block should appear to execute after the * statement causing the unwinding, so make the unwinding * instruction artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); return 1; case FINALLY_END: @@ -1870,7 +1907,7 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, /* The exit block should appear to execute after the * statement causing the unwinding, so make the unwinding * instruction artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); return 1; case HANDLER_CLEANUP: @@ -2522,7 +2559,7 @@ compiler_class(struct compiler *c, stmt_ty s) return 0; } /* The following code is artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); /* 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 */ @@ -2913,7 +2950,7 @@ compiler_for(struct compiler *c, stmt_ty s) VISIT(c, expr, s->v.For.target); VISIT_SEQ(c, stmt, s->v.For.body); /* Mark jump as artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP_JUMP(c, JUMP_ABSOLUTE, start); compiler_use_next_block(c, cleanup); @@ -2966,7 +3003,7 @@ compiler_async_for(struct compiler *c, stmt_ty s) /* Except block for __anext__ */ compiler_use_next_block(c, except); - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP(c, END_ASYNC_FOR); /* `else` block */ @@ -3153,7 +3190,7 @@ compiler_try_finally(struct compiler *c, stmt_ty s) /* `finally` block */ compiler_use_next_block(c, end); - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP_JUMP(c, SETUP_CLEANUP, cleanup); ADDOP(c, PUSH_EXC_INFO); if (!compiler_push_fblock(c, FINALLY_END, end, NULL, NULL)) @@ -3221,7 +3258,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) n = asdl_seq_LEN(s->v.Try.handlers); compiler_use_next_block(c, except); - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP_JUMP(c, SETUP_CLEANUP, cleanup); ADDOP(c, PUSH_EXC_INFO); /* Runtime will push a block here, so we need to account for that */ @@ -3280,7 +3317,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) ADDOP(c, POP_BLOCK); ADDOP(c, POP_EXCEPT); /* name = None; del name; # Mark as artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP_LOAD_CONST(c, Py_None); compiler_nameop(c, handler->v.ExceptHandler.name, Store); compiler_nameop(c, handler->v.ExceptHandler.name, Del); @@ -3290,7 +3327,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) compiler_use_next_block(c, cleanup_end); /* name = None; del name; # Mark as artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP_LOAD_CONST(c, Py_None); compiler_nameop(c, handler->v.ExceptHandler.name, Store); @@ -3313,7 +3350,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body); compiler_pop_fblock(c, HANDLER_CLEANUP, cleanup_body); /* name = None; del name; # Mark as artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP(c, POP_BLOCK); ADDOP(c, POP_EXCEPT); ADDOP_JUMP(c, JUMP_FORWARD, end); @@ -3321,7 +3358,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) compiler_use_next_block(c, except); } /* Mark as artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); compiler_pop_fblock(c, EXCEPTION_HANDLER, NULL); ADDOP_I(c, RERAISE, 0); compiler_use_next_block(c, cleanup); @@ -3542,7 +3579,7 @@ compiler_visit_stmt_expr(struct compiler *c, expr_ty value) VISIT(c, expr, value); /* Mark POP_TOP as artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP(c, POP_TOP); return 1; } @@ -4896,7 +4933,7 @@ compiler_async_comprehension_generator(struct compiler *c, compiler_pop_fblock(c, ASYNC_COMPREHENSION_GENERATOR, start); compiler_use_next_block(c, except); - //c->u->u_lineno = -1; + //UNSET_LOC(c); ADDOP(c, END_ASYNC_FOR); @@ -5076,7 +5113,7 @@ compiler_visit_keyword(struct compiler *c, keyword_ty k) static int compiler_with_except_finish(struct compiler *c, basicblock * cleanup) { - c->u->u_lineno = -1; + UNSET_LOC(c); basicblock *exit; exit = compiler_new_block(c); if (exit == NULL) @@ -5271,7 +5308,7 @@ compiler_with(struct compiler *c, stmt_ty s, int pos) /* Mark all following code as artificial */ - c->u->u_lineno = -1; + UNSET_LOC(c); ADDOP(c, POP_BLOCK); compiler_pop_fblock(c, WITH, block); @@ -6546,12 +6583,18 @@ struct assembler { int a_offset; /* offset into bytecode */ int a_nblocks; /* number of reachable blocks */ PyObject *a_lnotab; /* bytes containing lnotab */ + PyObject* a_enotab; /* bytes containing enotab */ + PyObject* a_cnotab; /* bytes containing cnotab */ int a_lnotab_off; /* offset into lnotab */ + int a_enotab_off; /* offset into enotab */ PyObject *a_except_table; /* bytes containing exception table */ int a_except_table_off; /* offset into exception table */ int a_prevlineno; /* lineno of last emitted line in line table */ + int a_prev_end_lineno; /* end_lineno of last emitted line in line table */ int a_lineno; /* lineno of last emitted instruction */ + int a_end_lineno; /* end_lineno of last emitted instruction */ int a_lineno_start; /* bytecode start offset of current lineno */ + int a_end_lineno_start; /* bytecode start offset of current end_lineno */ basicblock *a_entry; }; @@ -6649,7 +6692,10 @@ assemble_init(struct assembler *a, int nblocks, int firstlineno) { memset(a, 0, sizeof(struct assembler)); a->a_prevlineno = a->a_lineno = firstlineno; + a->a_prev_end_lineno = a->a_end_lineno = firstlineno; a->a_lnotab = NULL; + a->a_enotab = NULL; + a->a_cnotab = NULL; a->a_except_table = NULL; a->a_bytecode = PyBytes_FromStringAndSize(NULL, DEFAULT_CODE_SIZE); if (a->a_bytecode == NULL) { @@ -6659,6 +6705,14 @@ assemble_init(struct assembler *a, int nblocks, int firstlineno) if (a->a_lnotab == NULL) { goto error; } + a->a_enotab = PyBytes_FromStringAndSize(NULL, DEFAULT_LNOTAB_SIZE); + if (a->a_enotab == NULL) { + goto error; + } + a->a_cnotab = PyBytes_FromStringAndSize(NULL, DEFAULT_CNOTAB_SIZE); + if (a->a_cnotab == NULL) { + goto error; + } a->a_except_table = PyBytes_FromStringAndSize(NULL, DEFAULT_LNOTAB_SIZE); if (a->a_except_table == NULL) { goto error; @@ -6671,6 +6725,8 @@ assemble_init(struct assembler *a, int nblocks, int firstlineno) error: Py_XDECREF(a->a_bytecode); Py_XDECREF(a->a_lnotab); + Py_XDECREF(a->a_enotab); + Py_XDECREF(a->a_cnotab); Py_XDECREF(a->a_except_table); return 0; } @@ -6680,6 +6736,8 @@ assemble_free(struct assembler *a) { Py_XDECREF(a->a_bytecode); Py_XDECREF(a->a_lnotab); + Py_XDECREF(a->a_enotab); + Py_XDECREF(a->a_cnotab); Py_XDECREF(a->a_except_table); } @@ -6695,18 +6753,21 @@ blocksize(basicblock *b) } static int -assemble_emit_linetable_pair(struct assembler *a, int bdelta, int ldelta) +assemble_emit_table_pair(struct assembler* a, PyObject** table, int* offset, + int left, int right) { - Py_ssize_t len = PyBytes_GET_SIZE(a->a_lnotab); - if (a->a_lnotab_off + 2 >= len) { - if (_PyBytes_Resize(&a->a_lnotab, len * 2) < 0) + Py_ssize_t len = PyBytes_GET_SIZE(*table); + if (*offset + 2 >= len) { + if (_PyBytes_Resize(table, len * 2) < 0) return 0; } - unsigned char *lnotab = (unsigned char *) PyBytes_AS_STRING(a->a_lnotab); - lnotab += a->a_lnotab_off; - a->a_lnotab_off += 2; - *lnotab++ = bdelta; - *lnotab++ = ldelta; + unsigned char* table_entry = (unsigned char*)PyBytes_AS_STRING(*table); + + table_entry += *offset; + *offset += 2; + + *table_entry++ = left; + *table_entry++ = right; return 1; } @@ -6961,27 +7022,28 @@ assemble_exception_table(struct assembler *a) * Objects/lnotab_notes.txt for the description of the line number table. */ static int -assemble_line_range(struct assembler *a) +assemble_line_range(struct assembler* a, int current, PyObject** table, + int* prev, int* start, int* offset) { int ldelta, bdelta; - bdelta = (a->a_offset - a->a_lineno_start) * 2; + bdelta = (a->a_offset - *start) * 2; if (bdelta == 0) { return 1; } - if (a->a_lineno < 0) { + if (current < 0) { ldelta = -128; } else { - ldelta = a->a_lineno - a->a_prevlineno; - a->a_prevlineno = a->a_lineno; + ldelta = current - *prev; + *prev = current; while (ldelta > 127) { - if (!assemble_emit_linetable_pair(a, 0, 127)) { + if (!assemble_emit_table_pair(a, table, offset, 0, 127)) { return 0; } ldelta -= 127; } while (ldelta < -127) { - if (!assemble_emit_linetable_pair(a, 0, -127)) { + if (!assemble_emit_table_pair(a, table, offset, 0, -127)) { return 0; } ldelta += 127; @@ -6989,32 +7051,82 @@ assemble_line_range(struct assembler *a) } assert(-128 <= ldelta && ldelta < 128); while (bdelta > 254) { - if (!assemble_emit_linetable_pair(a, 254, ldelta)) { + if (!assemble_emit_table_pair(a, table, offset, 254, ldelta)) { return 0; } - ldelta = a->a_lineno < 0 ? -128 : 0; + ldelta = current < 0 ? -128 : 0; bdelta -= 254; } - if (!assemble_emit_linetable_pair(a, bdelta, ldelta)) { + if (!assemble_emit_table_pair(a, table, offset, bdelta, ldelta)) { return 0; } - a->a_lineno_start = a->a_offset; + *start = a->a_offset; return 1; } static int -assemble_lnotab(struct assembler *a, struct instr *i) +assemble_start_line_range(struct assembler* a) { + return assemble_line_range(a, a->a_lineno, &a->a_lnotab, + &a->a_prevlineno, &a->a_lineno_start, &a->a_lnotab_off); +} + +static int +assemble_end_line_range(struct assembler* a) { + return assemble_line_range(a, a->a_end_lineno, &a->a_enotab, + &a->a_prev_end_lineno, &a->a_end_lineno_start, &a->a_enotab_off); +} + +static int +assemble_lnotab(struct assembler* a, struct instr* i) { if (i->i_lineno == a->a_lineno) { return 1; } - if (!assemble_line_range(a)) { + if (!assemble_start_line_range(a)) { return 0; } a->a_lineno = i->i_lineno; return 1; } +static int +assemble_enotab(struct assembler* a, struct instr* i) +{ + if (i->i_end_lineno == a->a_end_lineno) { + return 1; + } + if (!assemble_end_line_range(a)) { + return 0; + } + a->a_end_lineno = i->i_end_lineno; + return 1; +} + +static int +assemble_cnotab(struct assembler* a, struct instr* i, int instr_size) +{ + Py_ssize_t len = PyBytes_GET_SIZE(a->a_cnotab); + // TODO: Allocate more memory than just what we immediately need + // like a_lnotab does. + if (_PyBytes_Resize(&a->a_cnotab, len + (instr_size * 2)) < 0) { + return 0; + } + + unsigned char* cnotab = (unsigned char*)PyBytes_AS_STRING(a->a_cnotab); + cnotab += len; + + for (int j = 0; j < instr_size; j++) { + if (i->i_col_offset > 255 || i->i_end_col_offset > 255) { + *cnotab++ = 0; + *cnotab++ = 0; + continue; + } + *cnotab++ = i->i_col_offset + 1; + *cnotab++ = i->i_end_col_offset + 1; + } + return 1; +} + /* assemble_emit() Extend the bytecode with a new instruction. @@ -7030,8 +7142,15 @@ assemble_emit(struct assembler *a, struct instr *i) arg = i->i_oparg; size = instrsize(arg); - if (i->i_lineno && !assemble_lnotab(a, i)) + if (i->i_lineno && !assemble_lnotab(a, i)) { return 0; + } + if (!assemble_enotab(a, i)) { + return 0; + } + if (!assemble_cnotab(a, i, size)) { + return 0; + } if (a->a_offset + size >= len / (int)sizeof(_Py_CODEUNIT)) { if (len > PY_SSIZE_T_MAX / 2) return 0; @@ -7315,6 +7434,8 @@ makecode(struct compiler *c, struct assembler *a, PyObject *constslist, .code = a->a_bytecode, .firstlineno = c->u->u_firstlineno, .linetable = a->a_lnotab, + .endlinetable = a->a_enotab, + .columntable = a->a_cnotab, .consts = consts, .names = names, @@ -7478,6 +7599,9 @@ insert_prefix_instructions(struct compiler *c, basicblock *entryblock, // This will get fixed in offset_derefs(). .i_oparg = oldindex, .i_lineno = -1, + .i_col_offset = -1, + .i_end_lineno = -1, + .i_end_col_offset = -1, .i_target = NULL, }; if (insert_instruction(entryblock, ncellsused, &make_cell) < 0) { @@ -7505,6 +7629,9 @@ insert_prefix_instructions(struct compiler *c, basicblock *entryblock, .i_opcode = GEN_START, .i_oparg = kind, .i_lineno = -1, + .i_col_offset = -1, + .i_end_lineno = -1, + .i_end_col_offset = -1, .i_target = NULL, }; if (insert_instruction(entryblock, 0, &gen_start) < 0) { @@ -7602,7 +7729,7 @@ assemble(struct compiler *c, int addNone) block ends with a jump or return b_next shouldn't set. */ if (!c->u->u_curblock->b_return) { - c->u->u_lineno = -1; + UNSET_LOC(c); if (addNone) ADDOP_LOAD_CONST(c, Py_None); ADDOP(c, RETURN_VALUE); @@ -7707,19 +7834,25 @@ assemble(struct compiler *c, int addNone) if (!assemble_exception_table(&a)) { goto error; } - if (!assemble_line_range(&a)) { + if (_PyBytes_Resize(&a.a_except_table, a.a_except_table_off) < 0) { goto error; } - + if (!assemble_start_line_range(&a)) { + return 0; + } if (_PyBytes_Resize(&a.a_lnotab, a.a_lnotab_off) < 0) { goto error; } - - if (_PyBytes_Resize(&a.a_except_table, a.a_except_table_off) < 0) { + if (!merge_const_one(c, &a.a_lnotab)) { goto error; } - - if (!merge_const_one(c, &a.a_lnotab)) { + if (!assemble_end_line_range(&a)) { + return 0; + } + if (_PyBytes_Resize(&a.a_enotab, a.a_enotab_off) < 0) { + goto error; + } + if (!merge_const_one(c, &a.a_enotab)) { goto error; } if (_PyBytes_Resize(&a.a_bytecode, a.a_offset * sizeof(_Py_CODEUNIT)) < 0) { @@ -7848,7 +7981,11 @@ eliminate_jump_to_jump(basicblock *bb, int opcode) { return 0; } int lineno = target->i_lineno; - if (add_jump_to_block(bb, opcode, lineno, target->i_target) == 0) { + int end_lineno = target->i_end_lineno; + int col_offset = target->i_col_offset; + int end_col_offset = target->i_end_col_offset; + if (add_jump_to_block(bb, opcode, lineno, end_lineno, col_offset, + end_col_offset, target->i_target) == 0) { return -1; } assert (bb->b_iused >= 2); @@ -8127,7 +8264,7 @@ clean_basic_block(basicblock *bb) { if (src < bb->b_iused - 1) { int next_lineno = bb->b_instr[src+1].i_lineno; if (next_lineno < 0 || next_lineno == lineno) { - bb->b_instr[src+1].i_lineno = lineno; + COPY_INSTR_LOC(bb->b_instr[src], bb->b_instr[src+1]); continue; } } @@ -8262,19 +8399,27 @@ propogate_line_numbers(struct assembler *a) { if (b->b_iused == 0) { continue; } - int prev_lineno = -1; + + // Not a real instruction, only to store positions + // from previous instructions and propagate them. + struct instr prev_instr = { + .i_lineno = -1, + .i_col_offset = -1, + .i_end_lineno = -1, + .i_end_col_offset = -1, + }; for (int i = 0; i < b->b_iused; i++) { if (b->b_instr[i].i_lineno < 0) { - b->b_instr[i].i_lineno = prev_lineno; + COPY_INSTR_LOC(prev_instr, b->b_instr[i]); } else { - prev_lineno = b->b_instr[i].i_lineno; + COPY_INSTR_LOC(b->b_instr[i], prev_instr); } } if (!b->b_nofallthrough && b->b_next->b_predecessors == 1) { assert(b->b_next->b_iused); if (b->b_next->b_instr[0].i_lineno < 0) { - b->b_next->b_instr[0].i_lineno = prev_lineno; + COPY_INSTR_LOC(prev_instr, b->b_next->b_instr[0]); } } if (is_jump(&b->b_instr[b->b_iused-1])) { @@ -8288,7 +8433,7 @@ propogate_line_numbers(struct assembler *a) { basicblock *target = b->b_instr[b->b_iused-1].i_target; if (target->b_predecessors == 1) { if (target->b_instr[0].i_lineno < 0) { - target->b_instr[0].i_lineno = prev_lineno; + COPY_INSTR_LOC(prev_instr, target->b_instr[0]); } } } @@ -8391,7 +8536,7 @@ ensure_exits_have_lineno(struct compiler *c) if (new_target == NULL) { return -1; } - new_target->b_instr[0].i_lineno = b->b_instr[b->b_iused-1].i_lineno; + COPY_INSTR_LOC(b->b_instr[b->b_iused-1], new_target->b_instr[0]); b->b_instr[b->b_iused-1].i_target = new_target; } } @@ -8412,7 +8557,7 @@ ensure_exits_have_lineno(struct compiler *c) if (!b->b_nofallthrough && b->b_next && b->b_iused > 0) { if (is_exit_without_lineno(b->b_next)) { assert(b->b_next->b_iused > 0); - b->b_next->b_instr[0].i_lineno = b->b_instr[b->b_iused-1].i_lineno; + COPY_INSTR_LOC(b->b_instr[b->b_iused-1], b->b_next->b_instr[0]); } } } diff --git a/Python/frozen_hello.h b/Python/frozen_hello.h index c02d2c5f343c8b..e39e24933a643c 100644 --- a/Python/frozen_hello.h +++ b/Python/frozen_hello.h @@ -7,6 +7,7 @@ const unsigned char _Py_M__hello[] = { 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,122,14,60,102,114,111,122, 101,110,32,104,101,108,108,111,62,218,8,60,109,111,100,117, - 108,101,62,1,0,0,0,115,4,0,0,0,4,0,12,1, - 114,2,0,0,0, + 108,101,62,1,0,0,0,243,4,0,0,0,4,0,12,1, + 114,4,0,0,0,115,16,0,0,0,15,19,1,12,1,6, + 7,21,1,22,1,22,1,22,1,22,114,2,0,0,0, }; diff --git a/Python/importlib.h b/Python/importlib.h index 825c5aa312b1c7..b8234595007c17 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -64,154 +64,206 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 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,23, 0,0,0,115,14,0,0,0,2,1,6,1,2,128,12,1, - 14,1,2,128,2,255,115,12,0,0,0,129,2,4,0,132, - 12,18,7,147,1,18,7,114,6,0,0,0,78,99,2,0, - 0,0,0,0,0,0,0,0,0,0,7,0,0,0,3,0, - 0,0,115,56,0,0,0,100,1,68,0,93,16,125,2,116, - 0,124,1,124,2,131,2,114,18,116,1,124,0,124,2,116, - 2,124,1,124,2,131,2,131,3,1,0,113,2,124,0,106, - 3,160,4,124,1,106,3,161,1,1,0,100,2,83,0,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,1,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,90,3,110,101,119,90, - 3,111,108,100,218,7,114,101,112,108,97,99,101,115,3,0, - 0,0,32,32,32,114,5,0,0,0,218,5,95,119,114,97, - 112,40,0,0,0,115,10,0,0,0,8,2,10,1,18,1, - 2,128,18,1,243,0,0,0,0,114,16,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, - 0,0,0,115,12,0,0,0,116,0,116,1,131,1,124,0, - 131,1,83,0,114,0,0,0,0,41,2,114,3,0,0,0, - 218,3,115,121,115,169,1,218,4,110,97,109,101,115,1,0, - 0,0,32,114,5,0,0,0,218,11,95,110,101,119,95,109, - 111,100,117,108,101,48,0,0,0,115,2,0,0,0,12,1, - 114,17,0,0,0,114,21,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,115, - 12,0,0,0,101,0,90,1,100,0,90,2,100,1,83,0, - 41,2,218,14,95,68,101,97,100,108,111,99,107,69,114,114, - 111,114,78,41,3,114,8,0,0,0,114,7,0,0,0,114, - 1,0,0,0,169,0,114,17,0,0,0,114,5,0,0,0, - 114,22,0,0,0,61,0,0,0,115,4,0,0,0,8,0, - 4,1,114,17,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,115,56,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0, - 90,5,100,6,100,7,132,0,90,6,100,8,100,9,132,0, - 90,7,100,10,100,11,132,0,90,8,100,12,83,0,41,13, - 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,115,48,0, - 0,0,116,0,160,1,161,0,124,0,95,2,116,0,160,1, - 161,0,124,0,95,3,124,1,124,0,95,4,100,0,124,0, - 95,5,100,1,124,0,95,6,100,1,124,0,95,7,100,0, - 83,0,169,2,78,233,0,0,0,0,41,8,218,7,95,116, - 104,114,101,97,100,90,13,97,108,108,111,99,97,116,101,95, - 108,111,99,107,218,4,108,111,99,107,218,6,119,97,107,101, - 117,112,114,20,0,0,0,218,5,111,119,110,101,114,218,5, - 99,111,117,110,116,218,7,119,97,105,116,101,114,115,169,2, - 218,4,115,101,108,102,114,20,0,0,0,115,2,0,0,0, - 32,32,114,5,0,0,0,218,8,95,95,105,110,105,116,95, - 95,71,0,0,0,115,12,0,0,0,10,1,10,1,6,1, - 6,1,6,1,10,1,114,17,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,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,3,0,0,0,115,86,0,0,0,116,0,160,1,161, - 0,125,1,124,0,106,2,125,2,116,3,131,0,125,3,9, - 0,116,4,160,5,124,2,161,1,125,4,124,4,100,0,117, - 0,114,22,100,2,83,0,124,4,106,2,125,2,124,2,124, - 1,107,2,114,31,100,1,83,0,124,2,124,3,118,0,114, - 37,100,2,83,0,124,3,160,6,124,2,161,1,1,0,113, - 11,41,3,78,84,70,41,7,114,27,0,0,0,218,9,103, - 101,116,95,105,100,101,110,116,114,30,0,0,0,218,3,115, - 101,116,218,12,95,98,108,111,99,107,105,110,103,95,111,110, - 218,3,103,101,116,218,3,97,100,100,41,5,114,34,0,0, - 0,90,2,109,101,218,3,116,105,100,90,4,115,101,101,110, - 114,28,0,0,0,115,5,0,0,0,32,32,32,32,32,114, - 5,0,0,0,218,12,104,97,115,95,100,101,97,100,108,111, - 99,107,79,0,0,0,115,28,0,0,0,8,2,6,1,6, - 1,2,1,10,1,8,1,4,1,6,1,8,1,4,1,8, - 1,4,6,10,1,2,242,114,17,0,0,0,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,99,1,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,3,0,0,0,115,204,0,0,0, - 116,0,160,1,161,0,125,1,124,0,116,2,124,1,60,0, - 9,0,9,0,124,0,106,3,53,0,1,0,124,0,106,4, - 100,2,107,2,115,24,124,0,106,5,124,1,107,2,114,45, - 124,1,124,0,95,5,124,0,4,0,106,4,100,3,55,0, - 2,0,95,4,9,0,100,4,4,0,4,0,131,3,1,0, - 116,2,124,1,61,0,100,1,83,0,124,0,160,6,161,0, - 114,55,116,7,100,5,124,0,22,0,131,1,130,1,124,0, - 106,8,160,9,100,6,161,1,114,68,124,0,4,0,106,10, - 100,3,55,0,2,0,95,10,100,4,4,0,4,0,131,3, - 1,0,110,11,35,0,49,0,115,79,119,4,37,0,1,0, - 1,0,1,0,89,0,1,0,1,0,124,0,106,8,160,9, - 161,0,1,0,124,0,106,8,160,11,161,0,1,0,113,10, - 35,0,116,2,124,1,61,0,119,0,37,0,41,7,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,114,26,0,0,0,233, - 1,0,0,0,78,122,23,100,101,97,100,108,111,99,107,32, - 100,101,116,101,99,116,101,100,32,98,121,32,37,114,70,41, - 12,114,27,0,0,0,114,36,0,0,0,114,38,0,0,0, - 114,28,0,0,0,114,31,0,0,0,114,30,0,0,0,114, - 42,0,0,0,114,22,0,0,0,114,29,0,0,0,218,7, - 97,99,113,117,105,114,101,114,32,0,0,0,218,7,114,101, - 108,101,97,115,101,169,2,114,34,0,0,0,114,41,0,0, - 0,115,2,0,0,0,32,32,114,5,0,0,0,114,44,0, - 0,0,100,0,0,0,115,46,0,0,0,8,6,8,1,2, - 1,2,1,8,1,20,1,6,1,14,1,2,1,10,252,10, - 13,8,248,12,1,12,1,14,1,20,248,2,128,12,0,10, - 10,10,1,2,244,2,128,10,14,115,56,0,0,0,137,4, - 65,32,0,141,22,65,10,3,163,5,65,32,0,173,23,65, - 10,3,193,4,6,65,32,0,193,10,4,65,14,11,193,14, - 1,65,32,0,193,15,3,65,14,11,193,18,14,65,32,0, - 193,32,5,65,37,7,122,19,95,77,111,100,117,108,101,76, - 111,99,107,46,97,99,113,117,105,114,101,99,1,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,3,0,0,0, - 115,148,0,0,0,116,0,160,1,161,0,125,1,124,0,106, - 2,53,0,1,0,124,0,106,3,124,1,107,3,114,17,116, - 4,100,1,131,1,130,1,124,0,106,5,100,2,107,4,115, - 24,74,0,130,1,124,0,4,0,106,5,100,3,56,0,2, - 0,95,5,124,0,106,5,100,2,107,2,114,54,100,0,124, - 0,95,3,124,0,106,6,114,54,124,0,4,0,106,6,100, - 3,56,0,2,0,95,6,124,0,106,7,160,8,161,0,1, - 0,100,0,4,0,4,0,131,3,1,0,100,0,83,0,35, - 0,49,0,115,66,119,4,37,0,1,0,1,0,1,0,89, - 0,1,0,1,0,100,0,83,0,41,4,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,114,26,0, - 0,0,114,43,0,0,0,41,9,114,27,0,0,0,114,36, - 0,0,0,114,28,0,0,0,114,30,0,0,0,218,12,82, - 117,110,116,105,109,101,69,114,114,111,114,114,31,0,0,0, - 114,32,0,0,0,114,29,0,0,0,114,45,0,0,0,114, - 46,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, - 114,45,0,0,0,125,0,0,0,115,28,0,0,0,8,1, - 8,1,10,1,8,1,14,1,14,1,10,1,6,1,6,1, - 14,1,10,1,22,247,2,128,16,0,115,15,0,0,0,135, + 14,1,2,128,2,255,115,16,0,0,0,2,4,6,254,2, + 128,2,2,2,255,22,1,2,128,2,0,115,40,0,0,0, + 5,38,16,19,16,32,9,32,0,0,5,38,12,26,5,38, + 5,38,5,38,5,38,16,20,21,24,16,25,16,38,9,38, + 9,38,9,38,0,0,5,38,115,12,0,0,0,129,2,4, + 0,132,12,18,7,147,1,18,7,114,6,0,0,0,78,99, + 2,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0, + 3,0,0,0,115,56,0,0,0,100,1,68,0,93,16,125, + 2,116,0,124,1,124,2,131,2,114,18,116,1,124,0,124, + 2,116,2,124,1,124,2,131,2,131,3,1,0,113,2,124, + 0,106,3,160,4,124,1,106,3,161,1,1,0,100,2,83, + 0,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,1,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,90,3,110,101, + 119,90,3,111,108,100,218,7,114,101,112,108,97,99,101,115, + 3,0,0,0,32,32,32,114,5,0,0,0,218,5,95,119, + 114,97,112,40,0,0,0,115,10,0,0,0,8,2,10,1, + 18,1,2,128,18,1,115,14,0,0,0,2,2,4,2,2, + 254,8,1,20,1,2,128,18,1,115,56,0,0,0,20,73, + 5,57,5,57,9,16,12,19,20,23,25,32,12,33,9,57, + 13,20,21,24,26,33,35,42,43,46,48,55,35,56,13,57, + 13,57,0,0,5,8,5,17,5,38,25,28,25,37,5,38, + 5,38,5,38,5,38,243,0,0,0,0,114,16,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,3,0,0,0,115,12,0,0,0,116,0,116,1,131,1, + 124,0,131,1,83,0,114,0,0,0,0,41,2,114,3,0, + 0,0,218,3,115,121,115,169,1,218,4,110,97,109,101,115, + 1,0,0,0,32,114,5,0,0,0,218,11,95,110,101,119, + 95,109,111,100,117,108,101,48,0,0,0,243,2,0,0,0, + 12,1,114,22,0,0,0,115,12,0,0,0,12,16,17,20, + 12,21,22,26,12,27,5,27,114,17,0,0,0,114,21,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,0,0,0,0,115,12,0,0,0,101,0,90,1, + 100,0,90,2,100,1,83,0,41,2,218,14,95,68,101,97, + 100,108,111,99,107,69,114,114,111,114,78,41,3,114,8,0, + 0,0,114,7,0,0,0,114,1,0,0,0,169,0,114,17, + 0,0,0,114,5,0,0,0,114,23,0,0,0,61,0,0, + 0,115,4,0,0,0,8,0,4,1,115,4,0,0,0,8, + 195,4,62,115,12,0,0,0,1,1,1,1,1,1,1,1, + 5,9,5,9,114,17,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,115,56,0,0,0,101,0,90,1,100,0,90,2, + 100,1,90,3,100,2,100,3,132,0,90,4,100,4,100,5, + 132,0,90,5,100,6,100,7,132,0,90,6,100,8,100,9, + 132,0,90,7,100,10,100,11,132,0,90,8,100,12,83,0, + 41,13,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,115, + 48,0,0,0,116,0,160,1,161,0,124,0,95,2,116,0, + 160,1,161,0,124,0,95,3,124,1,124,0,95,4,100,0, + 124,0,95,5,100,1,124,0,95,6,100,1,124,0,95,7, + 100,0,83,0,169,2,78,233,0,0,0,0,41,8,218,7, + 95,116,104,114,101,97,100,90,13,97,108,108,111,99,97,116, + 101,95,108,111,99,107,218,4,108,111,99,107,218,6,119,97, + 107,101,117,112,114,20,0,0,0,218,5,111,119,110,101,114, + 218,5,99,111,117,110,116,218,7,119,97,105,116,101,114,115, + 169,2,218,4,115,101,108,102,114,20,0,0,0,115,2,0, + 0,0,32,32,114,5,0,0,0,218,8,95,95,105,110,105, + 116,95,95,71,0,0,0,243,12,0,0,0,10,1,10,1, + 6,1,6,1,6,1,10,1,114,37,0,0,0,115,48,0, + 0,0,21,28,21,44,21,44,9,13,9,18,23,30,23,46, + 23,46,9,13,9,20,21,25,9,13,9,18,22,26,9,13, + 9,19,22,23,9,13,9,19,24,25,9,13,9,21,9,21, + 9,21,114,17,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,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0, + 0,0,115,86,0,0,0,116,0,160,1,161,0,125,1,124, + 0,106,2,125,2,116,3,131,0,125,3,9,0,116,4,160, + 5,124,2,161,1,125,4,124,4,100,0,117,0,114,22,100, + 2,83,0,124,4,106,2,125,2,124,2,124,1,107,2,114, + 31,100,1,83,0,124,2,124,3,118,0,114,37,100,2,83, + 0,124,3,160,6,124,2,161,1,1,0,113,11,41,3,78, + 84,70,41,7,114,28,0,0,0,218,9,103,101,116,95,105, + 100,101,110,116,114,31,0,0,0,218,3,115,101,116,218,12, + 95,98,108,111,99,107,105,110,103,95,111,110,218,3,103,101, + 116,218,3,97,100,100,41,5,114,35,0,0,0,90,2,109, + 101,218,3,116,105,100,90,4,115,101,101,110,114,29,0,0, + 0,115,5,0,0,0,32,32,32,32,32,114,5,0,0,0, + 218,12,104,97,115,95,100,101,97,100,108,111,99,107,79,0, + 0,0,115,28,0,0,0,8,2,6,1,6,1,2,1,10, + 1,8,1,4,1,6,1,8,1,4,1,8,1,4,6,10, + 1,2,242,115,28,0,0,0,8,2,6,1,6,1,2,1, + 10,1,6,1,6,1,6,1,6,1,6,1,6,1,6,6, + 10,1,2,242,115,86,0,0,0,14,21,14,33,14,33,9, + 11,15,19,15,25,9,12,16,19,16,21,9,13,15,19,20, + 32,20,41,37,40,20,41,13,17,16,20,24,28,16,28,13, + 29,24,29,24,29,19,23,19,29,13,16,16,19,23,25,16, + 25,13,28,24,28,24,28,16,19,23,27,16,27,13,29,24, + 29,24,29,13,17,13,26,22,25,13,26,13,26,15,19,114, + 17,0,0,0,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,99,1, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,3, + 0,0,0,115,204,0,0,0,116,0,160,1,161,0,125,1, + 124,0,116,2,124,1,60,0,9,0,9,0,124,0,106,3, + 53,0,1,0,124,0,106,4,100,2,107,2,115,24,124,0, + 106,5,124,1,107,2,114,45,124,1,124,0,95,5,124,0, + 4,0,106,4,100,3,55,0,2,0,95,4,9,0,100,4, + 4,0,4,0,131,3,1,0,116,2,124,1,61,0,100,1, + 83,0,124,0,160,6,161,0,114,55,116,7,100,5,124,0, + 22,0,131,1,130,1,124,0,106,8,160,9,100,6,161,1, + 114,68,124,0,4,0,106,10,100,3,55,0,2,0,95,10, + 100,4,4,0,4,0,131,3,1,0,110,11,35,0,49,0, + 115,79,119,4,37,0,1,0,1,0,1,0,89,0,1,0, + 1,0,124,0,106,8,160,9,161,0,1,0,124,0,106,8, + 160,11,161,0,1,0,113,10,35,0,116,2,124,1,61,0, + 119,0,37,0,41,7,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,114,27,0,0,0,233,1,0,0,0,78,122,23,100, + 101,97,100,108,111,99,107,32,100,101,116,101,99,116,101,100, + 32,98,121,32,37,114,70,41,12,114,28,0,0,0,114,38, + 0,0,0,114,40,0,0,0,114,29,0,0,0,114,32,0, + 0,0,114,31,0,0,0,114,44,0,0,0,114,23,0,0, + 0,114,30,0,0,0,218,7,97,99,113,117,105,114,101,114, + 33,0,0,0,218,7,114,101,108,101,97,115,101,169,2,114, + 35,0,0,0,114,43,0,0,0,115,2,0,0,0,32,32, + 114,5,0,0,0,114,46,0,0,0,100,0,0,0,115,46, + 0,0,0,8,6,8,1,2,1,2,1,8,1,20,1,6, + 1,14,1,2,1,10,252,10,13,8,248,12,1,12,1,14, + 1,20,248,2,128,12,0,10,10,10,1,2,244,2,128,10, + 14,115,52,0,0,0,8,6,8,1,2,16,2,242,4,1, + 4,8,8,249,2,3,8,253,2,3,6,254,14,1,2,1, + 10,4,10,5,6,248,14,1,10,1,36,1,2,128,12,0, + 10,2,10,1,2,244,2,128,10,14,115,204,0,0,0,15, + 22,15,34,15,34,9,12,29,33,9,21,22,25,9,26,9, + 34,19,23,22,26,22,31,17,42,17,42,24,28,24,34,38, + 39,24,39,21,36,43,47,43,53,57,60,43,60,21,36,38, + 41,25,29,25,35,25,29,25,35,25,35,39,40,25,40,25, + 35,25,35,32,36,17,42,17,42,17,42,17,42,17,42,17, + 29,30,33,17,34,17,34,17,34,24,28,24,43,24,43,21, + 79,31,45,46,71,74,78,46,78,31,79,25,79,24,28,24, + 35,24,50,44,49,24,50,21,42,25,29,25,37,25,37,41, + 42,25,42,25,37,25,37,17,42,17,42,17,42,17,42,17, + 42,17,42,17,42,17,42,17,42,17,42,0,0,17,42,17, + 42,17,42,17,42,17,42,17,42,17,21,17,28,17,38,17, + 38,17,38,17,21,17,28,17,38,17,38,17,38,19,23,0, + 0,17,29,30,33,17,34,13,34,13,34,115,56,0,0,0, + 137,4,65,32,0,141,22,65,10,3,163,5,65,32,0,173, + 23,65,10,3,193,4,6,65,32,0,193,10,4,65,14,11, + 193,14,1,65,32,0,193,15,3,65,14,11,193,18,14,65, + 32,0,193,32,5,65,37,7,122,19,95,77,111,100,117,108, + 101,76,111,99,107,46,97,99,113,117,105,114,101,99,1,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,3,0, + 0,0,115,148,0,0,0,116,0,160,1,161,0,125,1,124, + 0,106,2,53,0,1,0,124,0,106,3,124,1,107,3,114, + 17,116,4,100,1,131,1,130,1,124,0,106,5,100,2,107, + 4,115,24,74,0,130,1,124,0,4,0,106,5,100,3,56, + 0,2,0,95,5,124,0,106,5,100,2,107,2,114,54,100, + 0,124,0,95,3,124,0,106,6,114,54,124,0,4,0,106, + 6,100,3,56,0,2,0,95,6,124,0,106,7,160,8,161, + 0,1,0,100,0,4,0,4,0,131,3,1,0,100,0,83, + 0,35,0,49,0,115,66,119,4,37,0,1,0,1,0,1, + 0,89,0,1,0,1,0,100,0,83,0,41,4,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,114, + 27,0,0,0,114,45,0,0,0,41,9,114,28,0,0,0, + 114,38,0,0,0,114,29,0,0,0,114,31,0,0,0,218, + 12,82,117,110,116,105,109,101,69,114,114,111,114,114,32,0, + 0,0,114,33,0,0,0,114,30,0,0,0,114,47,0,0, + 0,114,48,0,0,0,115,2,0,0,0,32,32,114,5,0, + 0,0,114,47,0,0,0,125,0,0,0,115,28,0,0,0, + 8,1,8,1,10,1,8,1,14,1,14,1,10,1,6,1, + 6,1,14,1,10,1,22,247,2,128,16,0,115,32,0,0, + 0,8,1,4,1,4,9,8,248,10,1,14,1,14,1,8, + 1,2,4,6,253,4,1,2,2,14,255,32,1,2,128,16, + 0,115,148,0,0,0,15,22,15,34,15,34,9,12,14,18, + 14,23,9,42,9,42,16,20,16,26,30,33,16,33,13,70, + 23,35,36,69,23,70,17,70,20,24,20,30,33,34,20,34, + 13,34,13,34,13,34,13,17,13,23,13,23,27,28,13,28, + 13,23,13,23,16,20,16,26,30,31,16,31,13,42,30,34, + 17,21,17,27,20,24,20,32,17,42,21,25,21,33,21,33, + 37,38,21,38,21,33,21,33,21,25,21,32,21,42,21,42, + 21,42,9,42,9,42,9,42,9,42,9,42,9,42,9,42, + 9,42,9,42,9,42,9,42,0,0,9,42,9,42,9,42, + 9,42,9,42,9,42,9,42,9,42,115,15,0,0,0,135, 47,61,3,189,4,65,1,11,193,2,3,65,1,11,122,19, 95,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, 97,115,101,99,1,0,0,0,0,0,0,0,0,0,0,0, @@ -220,175 +272,227 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,78,122,23,95,77,111,100,117,108,101,76,111,99,107,40, 123,33,114,125,41,32,97,116,32,123,125,169,3,218,6,102, 111,114,109,97,116,114,20,0,0,0,218,2,105,100,169,1, - 114,34,0,0,0,115,1,0,0,0,32,114,5,0,0,0, + 114,35,0,0,0,115,1,0,0,0,32,114,5,0,0,0, 218,8,95,95,114,101,112,114,95,95,138,0,0,0,243,2, - 0,0,0,18,1,114,17,0,0,0,122,20,95,77,111,100, - 117,108,101,76,111,99,107,46,95,95,114,101,112,114,95,95, - 78,41,9,114,8,0,0,0,114,7,0,0,0,114,1,0, - 0,0,114,9,0,0,0,114,35,0,0,0,114,42,0,0, - 0,114,44,0,0,0,114,45,0,0,0,114,54,0,0,0, - 114,23,0,0,0,114,17,0,0,0,114,5,0,0,0,114, - 24,0,0,0,65,0,0,0,115,14,0,0,0,8,0,4, - 1,8,5,8,8,8,21,8,25,12,13,114,17,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,115,48,0,0,0,101, - 0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,132, - 0,90,4,100,4,100,5,132,0,90,5,100,6,100,7,132, - 0,90,6,100,8,100,9,132,0,90,7,100,10,83,0,41, - 11,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, - 115,16,0,0,0,124,1,124,0,95,0,100,1,124,0,95, - 1,100,0,83,0,114,25,0,0,0,41,2,114,20,0,0, - 0,114,31,0,0,0,114,33,0,0,0,115,2,0,0,0, - 32,32,114,5,0,0,0,114,35,0,0,0,146,0,0,0, - 243,4,0,0,0,6,1,10,1,114,17,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,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,3,0,0,0,115,18, - 0,0,0,124,0,4,0,106,0,100,1,55,0,2,0,95, - 0,100,2,83,0,41,3,78,114,43,0,0,0,84,41,1, - 114,31,0,0,0,114,53,0,0,0,115,1,0,0,0,32, - 114,5,0,0,0,114,44,0,0,0,150,0,0,0,115,4, - 0,0,0,14,1,4,1,114,17,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,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,115,36,0,0,0, - 124,0,106,0,100,1,107,2,114,9,116,1,100,2,131,1, - 130,1,124,0,4,0,106,0,100,3,56,0,2,0,95,0, - 100,0,83,0,41,4,78,114,26,0,0,0,114,47,0,0, - 0,114,43,0,0,0,41,2,114,31,0,0,0,114,48,0, - 0,0,114,53,0,0,0,115,1,0,0,0,32,114,5,0, - 0,0,114,45,0,0,0,154,0,0,0,115,6,0,0,0, - 10,1,8,1,18,1,114,17,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,99,1,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,3,0,0,0,114,49,0,0,0,41, - 2,78,122,28,95,68,117,109,109,121,77,111,100,117,108,101, - 76,111,99,107,40,123,33,114,125,41,32,97,116,32,123,125, - 114,50,0,0,0,114,53,0,0,0,115,1,0,0,0,32, - 114,5,0,0,0,114,54,0,0,0,159,0,0,0,114,55, - 0,0,0,114,17,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,78,41,8,114,8,0,0,0,114,7,0,0,0, - 114,1,0,0,0,114,9,0,0,0,114,35,0,0,0,114, - 44,0,0,0,114,45,0,0,0,114,54,0,0,0,114,23, - 0,0,0,114,17,0,0,0,114,5,0,0,0,114,56,0, - 0,0,142,0,0,0,115,12,0,0,0,8,0,4,1,8, - 3,8,4,8,4,12,5,114,17,0,0,0,114,56,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,0,0,0,0,115,36,0,0,0,101,0,90,1,100, - 0,90,2,100,1,100,2,132,0,90,3,100,3,100,4,132, - 0,90,4,100,5,100,6,132,0,90,5,100,7,83,0,41, - 8,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,115,16,0,0,0,124, - 1,124,0,95,0,100,0,124,0,95,1,100,0,83,0,114, - 0,0,0,0,41,2,218,5,95,110,97,109,101,218,5,95, - 108,111,99,107,114,33,0,0,0,115,2,0,0,0,32,32, - 114,5,0,0,0,114,35,0,0,0,165,0,0,0,114,57, - 0,0,0,114,17,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,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,3,0,0,0,115,26,0,0,0,116, - 0,124,0,106,1,131,1,124,0,95,2,124,0,106,2,160, - 3,161,0,1,0,100,0,83,0,114,0,0,0,0,41,4, - 218,16,95,103,101,116,95,109,111,100,117,108,101,95,108,111, - 99,107,114,59,0,0,0,114,60,0,0,0,114,44,0,0, - 0,114,53,0,0,0,115,1,0,0,0,32,114,5,0,0, - 0,218,9,95,95,101,110,116,101,114,95,95,169,0,0,0, - 115,4,0,0,0,12,1,14,1,114,17,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,99,1,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,15,0,0, - 0,115,14,0,0,0,124,0,106,0,160,1,161,0,1,0, - 100,0,83,0,114,0,0,0,0,41,2,114,60,0,0,0, - 114,45,0,0,0,41,3,114,34,0,0,0,218,4,97,114, - 103,115,90,6,107,119,97,114,103,115,115,3,0,0,0,32, - 32,32,114,5,0,0,0,218,8,95,95,101,120,105,116,95, - 95,173,0,0,0,115,2,0,0,0,14,1,114,17,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,78,41, - 6,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, - 114,35,0,0,0,114,62,0,0,0,114,64,0,0,0,114, - 23,0,0,0,114,17,0,0,0,114,5,0,0,0,114,58, - 0,0,0,163,0,0,0,115,8,0,0,0,8,0,8,2, - 8,4,12,4,114,17,0,0,0,114,58,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3, - 0,0,0,115,138,0,0,0,116,0,160,1,161,0,1,0, - 9,0,9,0,116,2,124,0,25,0,131,0,125,1,110,12, - 35,0,4,0,116,3,121,68,1,0,1,0,1,0,100,1, - 125,1,89,0,110,1,37,0,124,1,100,1,117,0,114,55, - 116,4,100,1,117,0,114,37,116,5,124,0,131,1,125,1, - 110,4,116,6,124,0,131,1,125,1,124,0,102,1,100,2, - 100,3,132,1,125,2,116,7,160,8,124,1,124,2,161,2, - 116,2,124,0,60,0,116,0,160,9,161,0,1,0,124,1, - 83,0,35,0,116,0,160,9,161,0,1,0,119,0,37,0, - 119,0,41,4,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,8, - 0,0,0,19,0,0,0,115,56,0,0,0,116,0,160,1, - 161,0,1,0,9,0,116,2,160,3,124,1,161,1,124,0, - 117,0,114,15,116,2,124,1,61,0,116,0,160,4,161,0, - 1,0,100,0,83,0,35,0,116,0,160,4,161,0,1,0, - 119,0,37,0,114,0,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,39, - 0,0,0,218,12,114,101,108,101,97,115,101,95,108,111,99, - 107,41,2,218,3,114,101,102,114,20,0,0,0,115,2,0, - 0,0,32,32,114,5,0,0,0,218,2,99,98,198,0,0, - 0,115,16,0,0,0,8,1,2,1,14,4,6,1,12,2, - 2,128,10,0,2,128,115,8,0,0,0,133,10,21,0,149, - 6,27,7,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,41,10,114,65,0,0,0,114,66,0,0,0,114,67,0, - 0,0,218,8,75,101,121,69,114,114,111,114,114,27,0,0, - 0,114,56,0,0,0,114,24,0,0,0,218,8,95,119,101, - 97,107,114,101,102,114,69,0,0,0,114,68,0,0,0,41, - 3,114,20,0,0,0,114,28,0,0,0,114,70,0,0,0, - 115,3,0,0,0,32,32,32,114,5,0,0,0,114,61,0, - 0,0,179,0,0,0,115,40,0,0,0,8,6,2,1,2, - 1,12,1,2,128,12,1,8,1,2,128,8,2,8,1,10, - 1,8,2,12,2,16,11,8,2,4,2,2,128,10,254,2, - 128,2,234,115,26,0,0,0,134,5,12,0,139,1,61,0, - 140,9,23,7,149,34,61,0,189,6,65,3,7,193,4,1, - 23,7,114,61,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,3,0,0,0,115,56,0,0, - 0,116,0,124,0,131,1,125,1,9,0,124,1,160,1,161, - 0,1,0,110,11,35,0,4,0,116,2,121,27,1,0,1, - 0,1,0,89,0,100,1,83,0,37,0,124,1,160,3,161, - 0,1,0,100,1,83,0,119,0,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,61,0, - 0,0,114,44,0,0,0,114,22,0,0,0,114,45,0,0, - 0,41,2,114,20,0,0,0,114,28,0,0,0,115,2,0, - 0,0,32,32,114,5,0,0,0,218,19,95,108,111,99,107, - 95,117,110,108,111,99,107,95,109,111,100,117,108,101,216,0, - 0,0,115,18,0,0,0,8,6,2,1,10,1,2,128,12, - 1,6,3,2,128,12,2,2,251,115,12,0,0,0,133,4, - 10,0,138,7,20,7,155,1,20,7,114,73,0,0,0,99, + 0,0,0,18,1,114,57,0,0,0,115,18,0,0,0,16, + 41,16,69,49,53,49,58,60,62,63,67,60,68,16,69,9, + 69,114,17,0,0,0,122,20,95,77,111,100,117,108,101,76, + 111,99,107,46,95,95,114,101,112,114,95,95,78,41,9,114, + 8,0,0,0,114,7,0,0,0,114,1,0,0,0,114,9, + 0,0,0,114,36,0,0,0,114,44,0,0,0,114,46,0, + 0,0,114,47,0,0,0,114,56,0,0,0,114,24,0,0, + 0,114,17,0,0,0,114,5,0,0,0,114,25,0,0,0, + 65,0,0,0,115,14,0,0,0,8,0,4,1,8,5,8, + 8,8,21,8,25,12,13,115,16,0,0,0,8,191,2,69, + 2,187,8,77,8,21,8,25,8,13,12,3,115,56,0,0, + 0,1,1,1,1,1,1,1,1,5,8,1,1,5,25,5, + 25,5,25,5,25,5,26,5,26,5,26,5,26,5,34,5, + 34,5,34,5,34,5,42,5,42,5,42,5,42,5,69,5, + 69,5,69,5,69,5,69,5,69,114,17,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,115,48,0,0,0,101,0,90, + 1,100,0,90,2,100,1,90,3,100,2,100,3,132,0,90, + 4,100,4,100,5,132,0,90,5,100,6,100,7,132,0,90, + 6,100,8,100,9,132,0,90,7,100,10,83,0,41,11,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,115,16, + 0,0,0,124,1,124,0,95,0,100,1,124,0,95,1,100, + 0,83,0,114,26,0,0,0,41,2,114,20,0,0,0,114, + 32,0,0,0,114,34,0,0,0,115,2,0,0,0,32,32, + 114,5,0,0,0,114,36,0,0,0,146,0,0,0,243,4, + 0,0,0,6,1,10,1,114,59,0,0,0,115,16,0,0, + 0,21,25,9,13,9,18,22,23,9,13,9,19,9,19,9, + 19,114,17,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,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,115,18,0,0,0,124,0,4,0,106, + 0,100,1,55,0,2,0,95,0,100,2,83,0,41,3,78, + 114,45,0,0,0,84,41,1,114,32,0,0,0,114,55,0, + 0,0,115,1,0,0,0,32,114,5,0,0,0,114,46,0, + 0,0,150,0,0,0,243,4,0,0,0,14,1,4,1,114, + 60,0,0,0,115,18,0,0,0,9,13,9,19,9,19,23, + 24,9,24,9,19,9,19,16,20,16,20,114,17,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,99,1,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,115, + 36,0,0,0,124,0,106,0,100,1,107,2,114,9,116,1, + 100,2,131,1,130,1,124,0,4,0,106,0,100,3,56,0, + 2,0,95,0,100,0,83,0,41,4,78,114,27,0,0,0, + 114,49,0,0,0,114,45,0,0,0,41,2,114,32,0,0, + 0,114,50,0,0,0,114,55,0,0,0,115,1,0,0,0, + 32,114,5,0,0,0,114,47,0,0,0,154,0,0,0,115, + 6,0,0,0,10,1,8,1,18,1,115,6,0,0,0,8, + 1,10,1,18,1,115,36,0,0,0,12,16,12,22,26,27, + 12,27,9,66,19,31,32,65,19,66,13,66,9,13,9,19, + 9,19,23,24,9,24,9,19,9,19,9,19,9,19,114,17, + 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,99,1,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, + 0,0,114,51,0,0,0,41,2,78,122,28,95,68,117,109, + 109,121,77,111,100,117,108,101,76,111,99,107,40,123,33,114, + 125,41,32,97,116,32,123,125,114,52,0,0,0,114,55,0, + 0,0,115,1,0,0,0,32,114,5,0,0,0,114,56,0, + 0,0,159,0,0,0,114,57,0,0,0,114,57,0,0,0, + 115,18,0,0,0,16,46,16,74,54,58,54,63,65,67,68, + 72,65,73,16,74,9,74,114,17,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,78,41,8,114,8,0,0,0,114, + 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,36, + 0,0,0,114,46,0,0,0,114,47,0,0,0,114,56,0, + 0,0,114,24,0,0,0,114,17,0,0,0,114,5,0,0, + 0,114,58,0,0,0,142,0,0,0,115,12,0,0,0,8, + 0,4,1,8,3,8,4,8,4,12,5,115,22,0,0,0, + 0,129,8,241,0,127,2,17,0,129,2,239,0,127,8,21, + 8,4,8,5,12,3,115,48,0,0,0,1,1,1,1,1, + 1,1,1,5,32,1,1,5,23,5,23,5,23,5,23,5, + 20,5,20,5,20,5,20,5,24,5,24,5,24,5,24,5, + 74,5,74,5,74,5,74,5,74,5,74,114,17,0,0,0, + 114,58,0,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,0,0,0,0,115,36,0,0,0,101, + 0,90,1,100,0,90,2,100,1,100,2,132,0,90,3,100, + 3,100,4,132,0,90,4,100,5,100,6,132,0,90,5,100, + 7,83,0,41,8,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,115,16, + 0,0,0,124,1,124,0,95,0,100,0,124,0,95,1,100, + 0,83,0,114,0,0,0,0,41,2,218,5,95,110,97,109, + 101,218,5,95,108,111,99,107,114,34,0,0,0,115,2,0, + 0,0,32,32,114,5,0,0,0,114,36,0,0,0,165,0, + 0,0,114,59,0,0,0,114,59,0,0,0,115,16,0,0, + 0,22,26,9,13,9,19,22,26,9,13,9,19,9,19,9, + 19,114,17,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,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,3,0,0,0,115,26,0,0,0,116,0,124, + 0,106,1,131,1,124,0,95,2,124,0,106,2,160,3,161, + 0,1,0,100,0,83,0,114,0,0,0,0,41,4,218,16, + 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, + 114,62,0,0,0,114,63,0,0,0,114,46,0,0,0,114, + 55,0,0,0,115,1,0,0,0,32,114,5,0,0,0,218, + 9,95,95,101,110,116,101,114,95,95,169,0,0,0,243,4, + 0,0,0,12,1,14,1,114,66,0,0,0,115,26,0,0, + 0,22,38,39,43,39,49,22,50,9,13,9,19,9,13,9, + 19,9,29,9,29,9,29,9,29,9,29,114,17,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,99,1, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,15, + 0,0,0,115,14,0,0,0,124,0,106,0,160,1,161,0, + 1,0,100,0,83,0,114,0,0,0,0,41,2,114,63,0, + 0,0,114,47,0,0,0,41,3,114,35,0,0,0,218,4, + 97,114,103,115,90,6,107,119,97,114,103,115,115,3,0,0, + 0,32,32,32,114,5,0,0,0,218,8,95,95,101,120,105, + 116,95,95,173,0,0,0,243,2,0,0,0,14,1,114,69, + 0,0,0,115,14,0,0,0,9,13,9,19,9,29,9,29, + 9,29,9,29,9,29,114,17,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,78,41,6,114,8,0,0,0, + 114,7,0,0,0,114,1,0,0,0,114,36,0,0,0,114, + 65,0,0,0,114,68,0,0,0,114,24,0,0,0,114,17, + 0,0,0,114,5,0,0,0,114,61,0,0,0,163,0,0, + 0,115,8,0,0,0,8,0,8,2,8,4,12,4,115,12, + 0,0,0,0,129,8,220,0,127,8,40,8,4,12,3,115, + 36,0,0,0,1,1,1,1,1,1,1,1,5,26,5,26, + 5,26,5,26,5,29,5,29,5,29,5,29,5,29,5,29, + 5,29,5,29,5,29,5,29,114,17,0,0,0,114,61,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,3,0,0,0,115,138,0,0,0,116,0,160,1, + 161,0,1,0,9,0,9,0,116,2,124,0,25,0,131,0, + 125,1,110,12,35,0,4,0,116,3,121,68,1,0,1,0, + 1,0,100,1,125,1,89,0,110,1,37,0,124,1,100,1, + 117,0,114,55,116,4,100,1,117,0,114,37,116,5,124,0, + 131,1,125,1,110,4,116,6,124,0,131,1,125,1,124,0, + 102,1,100,2,100,3,132,1,125,2,116,7,160,8,124,1, + 124,2,161,2,116,2,124,0,60,0,116,0,160,9,161,0, + 1,0,124,1,83,0,35,0,116,0,160,9,161,0,1,0, + 119,0,37,0,119,0,41,4,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,8,0,0,0,19,0,0,0,115,56,0,0,0, + 116,0,160,1,161,0,1,0,9,0,116,2,160,3,124,1, + 161,1,124,0,117,0,114,15,116,2,124,1,61,0,116,0, + 160,4,161,0,1,0,100,0,83,0,35,0,116,0,160,4, + 161,0,1,0,119,0,37,0,114,0,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,41,0,0,0,218,12,114,101,108,101,97,115,101, + 95,108,111,99,107,41,2,218,3,114,101,102,114,20,0,0, + 0,115,2,0,0,0,32,32,114,5,0,0,0,218,2,99, + 98,198,0,0,0,115,16,0,0,0,8,1,2,1,14,4, + 6,1,12,2,2,128,10,0,2,128,115,16,0,0,0,8, + 1,2,8,12,253,8,1,12,2,2,128,10,0,2,128,115, + 56,0,0,0,17,21,17,36,17,36,17,36,17,40,24,37, + 24,47,42,46,24,47,51,54,24,54,21,48,29,42,43,47, + 29,48,21,25,21,40,21,40,21,40,21,40,21,40,0,0, + 21,25,21,40,21,40,21,40,21,40,0,0,115,8,0,0, + 0,133,10,21,0,149,6,27,7,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,41,10,114,70,0,0,0,114,71, + 0,0,0,114,72,0,0,0,218,8,75,101,121,69,114,114, + 111,114,114,28,0,0,0,114,58,0,0,0,114,25,0,0, + 0,218,8,95,119,101,97,107,114,101,102,114,74,0,0,0, + 114,73,0,0,0,41,3,114,20,0,0,0,114,29,0,0, + 0,114,75,0,0,0,115,3,0,0,0,32,32,32,114,5, + 0,0,0,114,64,0,0,0,179,0,0,0,115,40,0,0, + 0,8,6,2,1,2,1,12,1,2,128,12,1,8,1,2, + 128,8,2,8,1,10,1,8,2,12,2,16,11,8,2,4, + 2,2,128,10,254,2,128,2,234,115,48,0,0,0,8,6, + 2,26,2,235,12,254,2,128,2,2,2,255,16,1,2,128, + 6,2,2,17,6,240,2,3,10,254,8,2,2,2,10,9, + 16,2,8,2,4,2,2,128,10,254,2,128,2,235,115,138, + 0,0,0,5,9,5,24,5,24,5,24,5,28,9,24,20, + 33,34,38,20,39,20,41,13,17,13,17,0,0,9,24,16, + 24,9,24,9,24,9,24,9,24,20,24,13,17,13,17,13, + 17,0,0,12,16,20,24,12,24,9,57,16,23,27,31,16, + 31,13,41,24,40,41,45,24,46,17,21,17,21,24,35,36, + 40,24,41,17,21,30,34,13,40,13,40,13,40,13,40,13, + 40,35,43,35,57,48,52,54,56,35,57,13,26,27,31,13, + 32,9,13,9,28,9,28,9,28,12,16,5,16,0,0,9, + 13,9,28,9,28,9,28,9,28,0,0,9,24,115,26,0, + 0,0,134,5,12,0,139,1,61,0,140,9,23,7,149,34, + 61,0,189,6,65,3,7,193,4,1,23,7,114,64,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,3,0,0,0,115,56,0,0,0,116,0,124,0,131, + 1,125,1,9,0,124,1,160,1,161,0,1,0,110,11,35, + 0,4,0,116,2,121,27,1,0,1,0,1,0,89,0,100, + 1,83,0,37,0,124,1,160,3,161,0,1,0,100,1,83, + 0,119,0,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,64,0,0,0,114,46,0,0, + 0,114,23,0,0,0,114,47,0,0,0,41,2,114,20,0, + 0,0,114,29,0,0,0,115,2,0,0,0,32,32,114,5, + 0,0,0,218,19,95,108,111,99,107,95,117,110,108,111,99, + 107,95,109,111,100,117,108,101,216,0,0,0,115,18,0,0, + 0,8,6,2,1,10,1,2,128,12,1,6,3,2,128,12, + 2,2,251,115,20,0,0,0,8,6,2,8,10,250,2,128, + 2,4,2,253,14,3,2,128,12,2,2,254,115,56,0,0, + 0,12,28,29,33,12,34,5,9,5,23,9,13,9,23,9, + 23,9,23,9,23,0,0,5,13,12,26,5,13,5,13,5, + 13,5,13,9,13,9,13,9,13,0,0,9,13,9,23,9, + 23,9,23,9,23,9,23,5,13,115,12,0,0,0,133,4, + 10,0,138,7,20,7,155,1,20,7,114,78,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, 15,0,0,0,115,14,0,0,0,124,0,124,1,105,0,124, 2,164,1,142,1,83,0,41,2,97,46,1,0,0,114,101, @@ -410,377 +514,464 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 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,78,114,23,0, - 0,0,41,3,218,1,102,114,63,0,0,0,90,4,107,119, + 101,32,99,111,100,101,41,10,32,32,32,32,78,114,24,0, + 0,0,41,3,218,1,102,114,67,0,0,0,90,4,107,119, 100,115,115,3,0,0,0,32,32,32,114,5,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,233,0,0,0,115,2, - 0,0,0,14,8,114,17,0,0,0,114,75,0,0,0,114, - 43,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,4,0, - 0,0,7,0,0,0,115,58,0,0,0,116,0,106,1,106, - 2,124,1,107,5,114,27,124,0,160,3,100,1,161,1,115, - 15,100,2,124,0,23,0,125,0,116,4,124,0,106,5,124, - 2,142,0,116,0,106,6,100,3,141,2,1,0,100,4,83, - 0,100,4,83,0,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,90,4,102,105,108,101, - 78,41,7,114,18,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,114,51,0,0,0, - 218,6,115,116,100,101,114,114,41,3,218,7,109,101,115,115, - 97,103,101,114,76,0,0,0,114,63,0,0,0,115,3,0, - 0,0,32,32,32,114,5,0,0,0,218,16,95,118,101,114, - 98,111,115,101,95,109,101,115,115,97,103,101,244,0,0,0, - 115,10,0,0,0,12,2,10,1,8,1,24,1,4,253,114, - 17,0,0,0,114,84,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,28, - 0,0,0,135,0,136,0,102,1,100,1,100,2,132,8,125, - 1,116,0,124,1,137,0,131,2,1,0,124,1,83,0,41, - 4,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,115,38,0,0,0,124,1, - 116,0,106,1,118,1,114,14,116,2,100,1,160,3,124,1, - 161,1,124,1,100,2,141,2,130,1,137,2,124,0,124,1, - 131,2,83,0,41,3,78,250,29,123,33,114,125,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,19,0,0,0,41,4,114,18,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,114,51,0,0,0,169,3,114,34,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,5,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,254,0,0,0,243,10,0,0, - 0,10,1,10,1,2,1,6,255,10,2,114,17,0,0,0, + 101,115,95,114,101,109,111,118,101,100,233,0,0,0,243,2, + 0,0,0,14,8,114,81,0,0,0,115,14,0,0,0,12, + 13,15,19,12,28,23,27,12,28,12,28,5,28,114,17,0, + 0,0,114,80,0,0,0,114,45,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,4,0,0,0,7,0,0,0,115,58, + 0,0,0,116,0,106,1,106,2,124,1,107,5,114,27,124, + 0,160,3,100,1,161,1,115,15,100,2,124,0,23,0,125, + 0,116,4,124,0,106,5,124,2,142,0,116,0,106,6,100, + 3,141,2,1,0,100,4,83,0,100,4,83,0,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,90,4,102,105,108,101,78,41,7,114,18,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,114,53,0,0,0,218,6,115,116,100,101,114,114, + 41,3,218,7,109,101,115,115,97,103,101,114,82,0,0,0, + 114,67,0,0,0,115,3,0,0,0,32,32,32,114,5,0, + 0,0,218,16,95,118,101,114,98,111,115,101,95,109,101,115, + 115,97,103,101,244,0,0,0,115,10,0,0,0,12,2,10, + 1,8,1,24,1,4,253,115,10,0,0,0,10,2,2,3, + 8,254,10,1,28,1,115,58,0,0,0,8,11,8,17,8, + 25,29,38,8,38,5,54,16,23,16,52,35,51,16,52,9, + 37,23,27,30,37,23,37,13,20,9,14,15,22,15,29,31, + 35,15,36,43,46,43,53,9,54,9,54,9,54,9,54,9, + 54,5,54,5,54,114,17,0,0,0,114,90,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,28,0,0,0,135,0,136,0,102,1,100, + 1,100,2,132,8,125,1,116,0,124,1,137,0,131,2,1, + 0,124,1,83,0,41,4,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,115, + 38,0,0,0,124,1,116,0,106,1,118,1,114,14,116,2, + 100,1,160,3,124,1,161,1,124,1,100,2,141,2,130,1, + 137,2,124,0,124,1,131,2,83,0,41,3,78,250,29,123, + 33,114,125,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,19,0,0, + 0,41,4,114,18,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,114,53,0,0,0, + 169,3,114,35,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,5, + 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,254,0, + 0,0,243,10,0,0,0,10,1,10,1,2,1,6,255,10, + 2,243,10,0,0,0,8,1,2,2,10,255,8,1,10,1, + 115,38,0,0,0,12,20,28,31,28,52,12,52,9,45,19, + 30,31,62,31,79,70,78,31,79,36,44,19,45,19,45,13, + 45,16,19,20,24,26,34,16,35,9,35,114,17,0,0,0, 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,78,169,1,114,16,0,0,0,41,2, - 114,91,0,0,0,114,92,0,0,0,115,2,0,0,0,96, + 114,97,0,0,0,114,98,0,0,0,115,2,0,0,0,96, 32,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, 115,95,98,117,105,108,116,105,110,252,0,0,0,243,8,0, - 0,0,2,128,12,2,10,5,4,1,114,17,0,0,0,114, - 95,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,3,0,0,0,114,85,0,0,0,41,4, - 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,115,38,0,0,0,116,0,160,1,124, - 1,161,1,115,14,116,2,100,1,160,3,124,1,161,1,124, - 1,100,2,141,2,130,1,137,2,124,0,124,1,131,2,83, - 0,169,3,78,122,27,123,33,114,125,32,105,115,32,110,111, - 116,32,97,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,114,19,0,0,0,41,4,114,65,0,0,0,218,9,105, - 115,95,102,114,111,122,101,110,114,88,0,0,0,114,51,0, - 0,0,114,89,0,0,0,115,3,0,0,0,32,32,128,114, - 5,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,9,1, - 0,0,114,93,0,0,0,114,17,0,0,0,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, - 78,114,94,0,0,0,41,2,114,91,0,0,0,114,99,0, - 0,0,115,2,0,0,0,96,32,114,5,0,0,0,218,16, - 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, - 7,1,0,0,114,96,0,0,0,114,17,0,0,0,114,100, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,115,74,0,0,0,100,1,125, - 2,116,0,160,1,124,2,116,2,161,2,1,0,116,3,124, - 1,124,0,131,2,125,3,124,1,116,4,106,5,118,0,114, - 33,116,4,106,5,124,1,25,0,125,4,116,6,124,3,124, - 4,131,2,1,0,116,4,106,5,124,1,25,0,83,0,116, - 7,124,3,131,1,83,0,41,3,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,78,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,18,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,34, - 0,0,0,114,90,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,5,0,0,0,218,17,95,108,111,97, - 100,95,109,111,100,117,108,101,95,115,104,105,109,19,1,0, - 0,115,16,0,0,0,4,6,12,2,10,1,10,1,10,1, - 10,1,10,1,8,2,114,17,0,0,0,114,111,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,3,0,0,0,115,194,0,0,0,116,0,124,0,100,1, - 100,2,131,3,125,1,116,0,124,0,100,3,100,2,131,3, - 4,0,125,2,114,18,116,1,124,2,131,1,83,0,116,2, - 124,1,100,4,131,2,114,39,9,0,124,1,160,3,124,0, - 161,1,83,0,35,0,4,0,116,4,121,96,1,0,1,0, - 1,0,89,0,110,1,37,0,9,0,124,0,106,5,125,3, - 110,12,35,0,4,0,116,6,121,95,1,0,1,0,1,0, - 100,5,125,3,89,0,110,1,37,0,9,0,124,0,106,7, - 125,4,110,27,35,0,4,0,116,6,121,94,1,0,1,0, - 1,0,124,1,100,2,117,0,114,79,100,6,160,8,124,3, - 161,1,6,0,89,0,83,0,100,7,160,8,124,3,124,1, - 161,2,6,0,89,0,83,0,37,0,100,8,160,8,124,3, - 124,4,161,2,83,0,119,0,119,0,119,0,41,9,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,218,11,109,111,100,117,108,101,95,114,101,112,114, - 250,1,63,250,13,60,109,111,100,117,108,101,32,123,33,114, - 125,62,250,20,60,109,111,100,117,108,101,32,123,33,114,125, - 32,40,123,33,114,125,41,62,250,23,60,109,111,100,117,108, - 101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125, - 62,41,9,114,12,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,10,0,0,0,114,114,0,0,0,218,9,69,120,99,101, - 112,116,105,111,110,114,8,0,0,0,114,2,0,0,0,218, - 8,95,95,102,105,108,101,95,95,114,51,0,0,0,41,5, - 114,110,0,0,0,218,6,108,111,97,100,101,114,114,109,0, - 0,0,114,20,0,0,0,218,8,102,105,108,101,110,97,109, - 101,115,5,0,0,0,32,32,32,32,32,114,5,0,0,0, - 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, - 0,0,115,56,0,0,0,12,2,16,1,8,1,10,1,2, - 1,10,1,2,128,12,1,4,1,2,128,2,2,8,1,2, - 128,12,1,8,1,2,128,2,1,8,1,2,128,12,1,8, - 1,14,1,16,2,2,128,12,2,2,250,2,252,2,251,115, - 47,0,0,0,152,4,29,0,157,7,38,7,168,3,44,0, - 172,9,55,7,185,3,61,0,189,16,65,23,7,193,15,6, - 65,23,7,193,30,1,65,23,7,193,31,1,55,7,193,32, - 1,38,7,114,124,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,0,0,0,0,115,114,0, - 0,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,100,5,132,2,90,4, - 100,6,100,7,132,0,90,5,100,8,100,9,132,0,90,6, - 101,7,100,10,100,11,132,0,131,1,90,8,101,8,106,9, - 100,12,100,11,132,0,131,1,90,8,101,7,100,13,100,14, - 132,0,131,1,90,10,101,7,100,15,100,16,132,0,131,1, - 90,11,101,11,106,9,100,17,100,16,132,0,131,1,90,11, - 100,2,83,0,41,18,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,115,54,0,0,0,124,1,124,0,95,0,124,2,124,0, - 95,1,124,3,124,0,95,2,124,4,124,0,95,3,124,5, - 114,16,103,0,110,1,100,0,124,0,95,4,100,1,124,0, - 95,5,100,0,124,0,95,6,100,0,83,0,41,2,78,70, - 41,7,114,20,0,0,0,114,122,0,0,0,114,126,0,0, - 0,114,127,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,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,34,0,0, - 0,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, - 114,127,0,0,0,114,128,0,0,0,115,6,0,0,0,32, - 32,32,32,32,32,114,5,0,0,0,114,35,0,0,0,101, - 1,0,0,115,14,0,0,0,6,2,6,1,6,1,6,1, - 14,1,6,3,10,1,114,17,0,0,0,122,19,77,111,100, - 117,108,101,83,112,101,99,46,95,95,105,110,105,116,95,95, - 99,1,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,3,0,0,0,115,102,0,0,0,100,1,160,0,124,0, - 106,1,161,1,100,2,160,0,124,0,106,2,161,1,103,2, - 125,1,124,0,106,3,100,0,117,1,114,26,124,1,160,4, - 100,3,160,0,124,0,106,3,161,1,161,1,1,0,124,0, - 106,5,100,0,117,1,114,40,124,1,160,4,100,4,160,0, - 124,0,106,5,161,1,161,1,1,0,100,5,160,0,124,0, - 106,6,106,7,100,6,160,8,124,1,161,1,161,2,83,0, - 41,7,78,122,9,110,97,109,101,61,123,33,114,125,122,11, - 108,111,97,100,101,114,61,123,33,114,125,122,11,111,114,105, - 103,105,110,61,123,33,114,125,122,29,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,123,125,122,6,123,125,40,123,125,41,122, - 2,44,32,41,9,114,51,0,0,0,114,20,0,0,0,114, - 122,0,0,0,114,126,0,0,0,218,6,97,112,112,101,110, - 100,114,129,0,0,0,218,9,95,95,99,108,97,115,115,95, - 95,114,8,0,0,0,218,4,106,111,105,110,41,2,114,34, - 0,0,0,114,63,0,0,0,115,2,0,0,0,32,32,114, - 5,0,0,0,114,54,0,0,0,113,1,0,0,115,20,0, - 0,0,10,1,10,1,4,255,10,2,18,1,10,1,6,1, - 8,1,4,255,22,2,114,17,0,0,0,122,19,77,111,100, - 117,108,101,83,112,101,99,46,95,95,114,101,112,114,95,95, - 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,3,0,0,0,115,104,0,0,0,124,0,106,0,125,2, - 9,0,124,0,106,1,124,1,106,1,107,2,111,38,124,0, - 106,2,124,1,106,2,107,2,111,38,124,0,106,3,124,1, - 106,3,107,2,111,38,124,2,124,1,106,0,107,2,111,38, - 124,0,106,4,124,1,106,4,107,2,111,38,124,0,106,5, - 124,1,106,5,107,2,83,0,35,0,4,0,116,6,121,51, - 1,0,1,0,1,0,116,7,6,0,89,0,83,0,37,0, - 119,0,114,0,0,0,0,41,8,114,129,0,0,0,114,20, - 0,0,0,114,122,0,0,0,114,126,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,2,0,0,0,218,14,78,111,116,73,109,112, - 108,101,109,101,110,116,101,100,41,3,114,34,0,0,0,90, - 5,111,116,104,101,114,90,4,115,109,115,108,115,3,0,0, - 0,32,32,32,114,5,0,0,0,218,6,95,95,101,113,95, - 95,123,1,0,0,115,36,0,0,0,6,1,2,1,12,1, - 10,1,2,255,10,2,2,254,8,3,2,253,10,4,2,252, - 10,5,2,251,2,128,12,6,8,1,2,128,2,255,115,12, - 0,0,0,132,34,39,0,167,9,50,7,179,1,50,7,122, - 17,77,111,100,117,108,101,83,112,101,99,46,95,95,101,113, - 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,115,58,0,0,0,124,0,106,0, - 100,0,117,0,114,26,124,0,106,1,100,0,117,1,114,26, - 124,0,106,2,114,26,116,3,100,0,117,0,114,19,116,4, - 130,1,116,3,160,5,124,0,106,1,161,1,124,0,95,0, - 124,0,106,0,83,0,114,0,0,0,0,41,6,114,131,0, - 0,0,114,126,0,0,0,114,130,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,90,11,95,103,101,116,95,99,97,99, - 104,101,100,114,53,0,0,0,115,1,0,0,0,32,114,5, - 0,0,0,114,135,0,0,0,135,1,0,0,115,12,0,0, - 0,10,2,16,1,8,1,4,1,14,1,6,1,114,17,0, - 0,0,122,17,77,111,100,117,108,101,83,112,101,99,46,99, - 97,99,104,101,100,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,3,0,0,0,115,10,0,0,0,124, - 1,124,0,95,0,100,0,83,0,114,0,0,0,0,41,1, - 114,131,0,0,0,41,2,114,34,0,0,0,114,135,0,0, - 0,115,2,0,0,0,32,32,114,5,0,0,0,114,135,0, - 0,0,144,1,0,0,115,2,0,0,0,10,2,114,17,0, + 0,0,2,128,12,2,10,5,4,1,243,8,0,0,0,2, + 128,12,6,10,1,4,1,115,28,0,0,0,0,0,5,35, + 5,35,5,35,5,35,5,35,5,35,5,10,11,36,38,41, + 5,42,5,42,12,37,5,37,114,17,0,0,0,114,102,0, 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,115,32,0,0,0,124,0,106,0, - 100,1,117,0,114,13,124,0,106,1,160,2,100,2,161,1, - 100,3,25,0,83,0,124,0,106,1,83,0,41,4,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, - 78,218,1,46,114,26,0,0,0,41,3,114,129,0,0,0, - 114,20,0,0,0,218,10,114,112,97,114,116,105,116,105,111, - 110,114,53,0,0,0,115,1,0,0,0,32,114,5,0,0, - 0,218,6,112,97,114,101,110,116,148,1,0,0,115,6,0, - 0,0,10,3,16,1,6,2,114,17,0,0,0,122,17,77, - 111,100,117,108,101,83,112,101,99,46,112,97,114,101,110,116, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,115,6,0,0,0,124,0,106,0,83,0, - 114,0,0,0,0,41,1,114,130,0,0,0,114,53,0,0, - 0,115,1,0,0,0,32,114,5,0,0,0,114,136,0,0, - 0,156,1,0,0,115,2,0,0,0,6,2,114,17,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,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,115, - 14,0,0,0,116,0,124,1,131,1,124,0,95,1,100,0, - 83,0,114,0,0,0,0,41,2,218,4,98,111,111,108,114, - 130,0,0,0,41,2,114,34,0,0,0,218,5,118,97,108, - 117,101,115,2,0,0,0,32,32,114,5,0,0,0,114,136, - 0,0,0,160,1,0,0,115,2,0,0,0,14,2,114,17, + 0,0,0,3,0,0,0,114,91,0,0,0,41,4,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,115,38,0,0,0,116,0,160,1,124,1,161, + 1,115,14,116,2,100,1,160,3,124,1,161,1,124,1,100, + 2,141,2,130,1,137,2,124,0,124,1,131,2,83,0,169, + 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, + 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, + 19,0,0,0,41,4,114,70,0,0,0,218,9,105,115,95, + 102,114,111,122,101,110,114,94,0,0,0,114,53,0,0,0, + 114,95,0,0,0,115,3,0,0,0,32,32,128,114,5,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,9,1,0,0, + 114,99,0,0,0,114,100,0,0,0,115,38,0,0,0,16, + 20,16,40,31,39,16,40,9,45,19,30,31,60,31,77,68, + 76,31,77,36,44,19,45,19,45,13,45,16,19,20,24,26, + 34,16,35,9,35,114,17,0,0,0,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,78,114, + 101,0,0,0,41,2,114,97,0,0,0,114,107,0,0,0, + 115,2,0,0,0,96,32,114,5,0,0,0,218,16,95,114, + 101,113,117,105,114,101,115,95,102,114,111,122,101,110,7,1, + 0,0,114,103,0,0,0,114,104,0,0,0,115,28,0,0, + 0,0,0,5,35,5,35,5,35,5,35,5,35,5,35,5, + 10,11,35,37,40,5,41,5,41,12,36,5,36,114,17,0, + 0,0,114,108,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,3,0,0,0,115,74,0,0, + 0,100,1,125,2,116,0,160,1,124,2,116,2,161,2,1, + 0,116,3,124,1,124,0,131,2,125,3,124,1,116,4,106, + 5,118,0,114,33,116,4,106,5,124,1,25,0,125,4,116, + 6,124,3,124,4,131,2,1,0,116,4,106,5,124,1,25, + 0,83,0,116,7,124,3,131,1,83,0,41,3,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,78,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,18,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,35,0,0,0,114,96,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,5,0,0,0,218,17, + 95,108,111,97,100,95,109,111,100,117,108,101,95,115,104,105, + 109,19,1,0,0,115,16,0,0,0,4,6,12,2,10,1, + 10,1,10,1,10,1,10,1,8,2,115,20,0,0,0,2, + 7,2,255,12,2,10,1,8,1,2,5,10,252,10,1,10, + 1,8,2,115,74,0,0,0,12,51,5,8,5,14,5,44, + 20,23,25,43,5,44,5,44,12,28,29,37,39,43,12,44, + 5,9,8,16,20,23,20,31,8,31,5,27,18,21,18,29, + 30,38,18,39,9,15,9,14,15,19,21,27,9,28,9,28, + 16,19,16,27,28,36,16,37,9,37,16,21,22,26,16,27, + 9,27,114,17,0,0,0,114,119,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0, + 0,115,194,0,0,0,116,0,124,0,100,1,100,2,131,3, + 125,1,116,0,124,0,100,3,100,2,131,3,4,0,125,2, + 114,18,116,1,124,2,131,1,83,0,116,2,124,1,100,4, + 131,2,114,39,9,0,124,1,160,3,124,0,161,1,83,0, + 35,0,4,0,116,4,121,96,1,0,1,0,1,0,89,0, + 110,1,37,0,9,0,124,0,106,5,125,3,110,12,35,0, + 4,0,116,6,121,95,1,0,1,0,1,0,100,5,125,3, + 89,0,110,1,37,0,9,0,124,0,106,7,125,4,110,27, + 35,0,4,0,116,6,121,94,1,0,1,0,1,0,124,1, + 100,2,117,0,114,79,100,6,160,8,124,3,161,1,6,0, + 89,0,83,0,100,7,160,8,124,3,124,1,161,2,6,0, + 89,0,83,0,37,0,100,8,160,8,124,3,124,4,161,2, + 83,0,119,0,119,0,119,0,41,9,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,218, + 11,109,111,100,117,108,101,95,114,101,112,114,250,1,63,250, + 13,60,109,111,100,117,108,101,32,123,33,114,125,62,250,20, + 60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,33, + 114,125,41,62,250,23,60,109,111,100,117,108,101,32,123,33, + 114,125,32,102,114,111,109,32,123,33,114,125,62,41,9,114, + 12,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,10,0,0, + 0,114,122,0,0,0,218,9,69,120,99,101,112,116,105,111, + 110,114,8,0,0,0,114,2,0,0,0,218,8,95,95,102, + 105,108,101,95,95,114,53,0,0,0,41,5,114,118,0,0, + 0,218,6,108,111,97,100,101,114,114,117,0,0,0,114,20, + 0,0,0,218,8,102,105,108,101,110,97,109,101,115,5,0, + 0,0,32,32,32,32,32,114,5,0,0,0,218,12,95,109, + 111,100,117,108,101,95,114,101,112,114,38,1,0,0,115,56, + 0,0,0,12,2,16,1,8,1,10,1,2,1,10,1,2, + 128,12,1,4,1,2,128,2,2,8,1,2,128,12,1,8, + 1,2,128,2,1,8,1,2,128,12,1,8,1,14,1,16, + 2,2,128,12,2,2,250,2,252,2,251,115,68,0,0,0, + 12,2,14,1,2,6,8,251,8,1,4,4,10,254,2,128, + 2,2,2,255,12,1,2,128,2,5,8,254,2,128,2,2, + 2,255,16,1,2,128,2,9,8,249,2,128,2,5,2,252, + 8,4,6,253,2,3,14,254,16,2,2,128,12,2,2,254, + 2,249,2,251,115,194,0,0,0,14,21,22,28,30,42,44, + 48,14,49,5,11,16,23,24,30,32,42,44,48,16,49,8, + 49,8,12,5,17,16,38,39,43,16,44,9,44,10,17,18, + 24,26,39,10,40,5,17,9,17,20,26,20,46,39,45,20, + 46,13,46,0,0,9,17,16,25,9,17,9,17,9,17,9, + 17,13,17,13,17,0,0,5,19,16,22,16,31,9,13,9, + 13,0,0,5,19,12,26,5,19,5,19,5,19,5,19,16, + 19,9,13,9,13,9,13,0,0,5,64,20,26,20,35,9, + 17,9,17,0,0,5,63,12,26,5,63,5,63,5,63,5, + 63,12,18,22,26,12,26,9,63,20,35,20,48,43,47,20, + 48,13,48,13,48,13,48,20,42,20,63,50,54,56,62,20, + 63,13,63,13,63,13,63,0,0,16,41,16,64,49,53,55, + 63,16,64,9,64,5,63,5,19,9,17,115,47,0,0,0, + 152,4,29,0,157,7,38,7,168,3,44,0,172,9,55,7, + 185,3,61,0,189,16,65,23,7,193,15,6,65,23,7,193, + 30,1,65,23,7,193,31,1,55,7,193,32,1,38,7,114, + 132,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,0,0,0,0,115,114,0,0,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,100,5,132,2,90,4,100,6,100,7, + 132,0,90,5,100,8,100,9,132,0,90,6,101,7,100,10, + 100,11,132,0,131,1,90,8,101,8,106,9,100,12,100,11, + 132,0,131,1,90,8,101,7,100,13,100,14,132,0,131,1, + 90,10,101,7,100,15,100,16,132,0,131,1,90,11,101,11, + 106,9,100,17,100,16,132,0,131,1,90,11,100,2,83,0, + 41,18,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,115,54,0, + 0,0,124,1,124,0,95,0,124,2,124,0,95,1,124,3, + 124,0,95,2,124,4,124,0,95,3,124,5,114,16,103,0, + 110,1,100,0,124,0,95,4,100,1,124,0,95,5,100,0, + 124,0,95,6,100,0,83,0,41,2,78,70,41,7,114,20, + 0,0,0,114,130,0,0,0,114,134,0,0,0,114,135,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,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,35,0,0,0,114,20,0, + 0,0,114,130,0,0,0,114,134,0,0,0,114,135,0,0, + 0,114,136,0,0,0,115,6,0,0,0,32,32,32,32,32, + 32,114,5,0,0,0,114,36,0,0,0,101,1,0,0,243, + 14,0,0,0,6,2,6,1,6,1,6,1,14,1,6,3, + 10,1,114,140,0,0,0,115,54,0,0,0,21,25,9,13, + 9,18,23,29,9,13,9,20,23,29,9,13,9,20,29,41, + 9,13,9,26,49,59,43,69,43,45,43,45,65,69,9,13, + 9,40,30,35,9,13,9,27,24,28,9,13,9,21,9,21, + 9,21,114,17,0,0,0,122,19,77,111,100,117,108,101,83, + 112,101,99,46,95,95,105,110,105,116,95,95,99,1,0,0, + 0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0, + 0,115,102,0,0,0,100,1,160,0,124,0,106,1,161,1, + 100,2,160,0,124,0,106,2,161,1,103,2,125,1,124,0, + 106,3,100,0,117,1,114,26,124,1,160,4,100,3,160,0, + 124,0,106,3,161,1,161,1,1,0,124,0,106,5,100,0, + 117,1,114,40,124,1,160,4,100,4,160,0,124,0,106,5, + 161,1,161,1,1,0,100,5,160,0,124,0,106,6,106,7, + 100,6,160,8,124,1,161,1,161,2,83,0,41,7,78,122, + 9,110,97,109,101,61,123,33,114,125,122,11,108,111,97,100, + 101,114,61,123,33,114,125,122,11,111,114,105,103,105,110,61, + 123,33,114,125,122,29,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,123,125,122,6,123,125,40,123,125,41,122,2,44,32,41, + 9,114,53,0,0,0,114,20,0,0,0,114,130,0,0,0, + 114,134,0,0,0,218,6,97,112,112,101,110,100,114,137,0, + 0,0,218,9,95,95,99,108,97,115,115,95,95,114,8,0, + 0,0,218,4,106,111,105,110,41,2,114,35,0,0,0,114, + 67,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, + 114,56,0,0,0,113,1,0,0,115,20,0,0,0,10,1, + 10,1,4,255,10,2,18,1,10,1,6,1,8,1,4,255, + 22,2,115,24,0,0,0,10,1,12,1,2,255,8,2,20, + 1,8,1,2,2,2,255,2,1,2,255,12,1,22,1,115, + 102,0,0,0,17,28,17,46,36,40,36,45,17,46,17,30, + 17,50,38,42,38,49,17,50,16,51,9,13,12,16,12,23, + 31,35,12,35,9,59,13,17,13,59,25,38,25,58,46,50, + 46,57,25,58,13,59,13,59,12,16,12,43,51,55,12,55, + 9,66,13,17,13,66,25,56,25,65,33,37,33,64,25,65, + 13,66,13,66,16,24,16,73,32,36,32,46,32,55,57,61, + 57,72,67,71,57,72,16,73,9,73,114,17,0,0,0,122, + 19,77,111,100,117,108,101,83,112,101,99,46,95,95,114,101, + 112,114,95,95,99,2,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,3,0,0,0,115,104,0,0,0,124,0, + 106,0,125,2,9,0,124,0,106,1,124,1,106,1,107,2, + 111,38,124,0,106,2,124,1,106,2,107,2,111,38,124,0, + 106,3,124,1,106,3,107,2,111,38,124,2,124,1,106,0, + 107,2,111,38,124,0,106,4,124,1,106,4,107,2,111,38, + 124,0,106,5,124,1,106,5,107,2,83,0,35,0,4,0, + 116,6,121,51,1,0,1,0,1,0,116,7,6,0,89,0, + 83,0,37,0,119,0,114,0,0,0,0,41,8,114,137,0, + 0,0,114,20,0,0,0,114,130,0,0,0,114,134,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,2,0,0,0,218,14,78,111, + 116,73,109,112,108,101,109,101,110,116,101,100,41,3,114,35, + 0,0,0,90,5,111,116,104,101,114,90,4,115,109,115,108, + 115,3,0,0,0,32,32,32,114,5,0,0,0,218,6,95, + 95,101,113,95,95,123,1,0,0,115,36,0,0,0,6,1, + 2,1,12,1,10,1,2,255,10,2,2,254,8,3,2,253, + 10,4,2,252,10,5,2,251,2,128,12,6,8,1,2,128, + 2,255,115,36,0,0,0,6,1,2,9,10,249,2,5,10, + 252,2,4,10,253,2,3,8,254,2,2,10,255,14,1,2, + 128,2,2,2,255,16,1,2,128,2,0,115,104,0,0,0, + 16,20,16,47,9,13,9,34,21,25,21,30,34,39,34,44, + 21,44,21,60,21,25,21,32,36,41,36,48,21,48,21,60, + 21,25,21,32,36,41,36,48,21,48,21,60,21,25,29,34, + 29,61,21,61,21,60,21,25,21,32,36,41,36,48,21,48, + 21,60,21,25,21,38,42,47,42,60,21,60,13,61,0,0, + 9,34,16,30,9,34,9,34,9,34,9,34,20,34,13,34, + 13,34,13,34,0,0,9,34,115,12,0,0,0,132,34,39, + 0,167,9,50,7,179,1,50,7,122,17,77,111,100,117,108, + 101,83,112,101,99,46,95,95,101,113,95,95,99,1,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, + 0,115,58,0,0,0,124,0,106,0,100,0,117,0,114,26, + 124,0,106,1,100,0,117,1,114,26,124,0,106,2,114,26, + 116,3,100,0,117,0,114,19,116,4,130,1,116,3,160,5, + 124,0,106,1,161,1,124,0,95,0,124,0,106,0,83,0, + 114,0,0,0,0,41,6,114,139,0,0,0,114,134,0,0, + 0,114,138,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, + 90,11,95,103,101,116,95,99,97,99,104,101,100,114,55,0, + 0,0,115,1,0,0,0,32,114,5,0,0,0,114,144,0, + 0,0,135,1,0,0,115,12,0,0,0,10,2,16,1,8, + 1,4,1,14,1,6,1,115,20,0,0,0,8,2,2,4, + 8,253,2,3,4,253,2,3,6,254,6,1,14,1,6,1, + 115,58,0,0,0,12,16,12,24,28,32,12,32,9,76,16, + 20,16,27,35,39,16,39,13,76,44,48,44,62,13,76,20, + 39,43,47,20,47,17,46,27,46,21,46,32,51,32,76,64, + 68,64,75,32,76,17,21,17,29,16,20,16,28,9,28,114, + 17,0,0,0,122,17,77,111,100,117,108,101,83,112,101,99, + 46,99,97,99,104,101,100,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,3,0,0,0,115,10,0,0, + 0,124,1,124,0,95,0,100,0,83,0,114,0,0,0,0, + 41,1,114,139,0,0,0,41,2,114,35,0,0,0,114,144, + 0,0,0,115,2,0,0,0,32,32,114,5,0,0,0,114, + 144,0,0,0,144,1,0,0,243,2,0,0,0,10,2,114, + 150,0,0,0,115,10,0,0,0,24,30,9,13,9,21,9, + 21,9,21,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,115,32,0, + 0,0,124,0,106,0,100,1,117,0,114,13,124,0,106,1, + 160,2,100,2,161,1,100,3,25,0,83,0,124,0,106,1, + 83,0,41,4,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,78,218,1,46,114,27,0,0,0,41, + 3,114,137,0,0,0,114,20,0,0,0,218,10,114,112,97, + 114,116,105,116,105,111,110,114,55,0,0,0,115,1,0,0, + 0,32,114,5,0,0,0,218,6,112,97,114,101,110,116,148, + 1,0,0,115,6,0,0,0,10,3,16,1,6,2,115,8, + 0,0,0,8,3,2,3,16,254,6,2,115,32,0,0,0, + 12,16,12,43,47,51,12,51,9,29,20,24,20,29,20,45, + 41,44,20,45,46,47,20,48,13,48,20,24,20,29,13,29, + 114,17,0,0,0,122,17,77,111,100,117,108,101,83,112,101, + 99,46,112,97,114,101,110,116,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,115,6,0, + 0,0,124,0,106,0,83,0,114,0,0,0,0,41,1,114, + 138,0,0,0,114,55,0,0,0,115,1,0,0,0,32,114, + 5,0,0,0,114,145,0,0,0,156,1,0,0,243,2,0, + 0,0,6,2,114,154,0,0,0,115,6,0,0,0,16,20, + 16,34,9,34,114,17,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,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,115,14,0,0,0,116,0,124,1, + 131,1,124,0,95,1,100,0,83,0,114,0,0,0,0,41, + 2,218,4,98,111,111,108,114,138,0,0,0,41,2,114,35, + 0,0,0,218,5,118,97,108,117,101,115,2,0,0,0,32, + 32,114,5,0,0,0,114,145,0,0,0,160,1,0,0,243, + 2,0,0,0,14,2,114,157,0,0,0,115,14,0,0,0, + 30,34,35,40,30,41,9,13,9,27,9,27,9,27,114,17, 0,0,0,41,12,114,8,0,0,0,114,7,0,0,0,114, - 1,0,0,0,114,9,0,0,0,114,35,0,0,0,114,54, - 0,0,0,114,138,0,0,0,218,8,112,114,111,112,101,114, - 116,121,114,135,0,0,0,218,6,115,101,116,116,101,114,114, - 143,0,0,0,114,136,0,0,0,114,23,0,0,0,114,17, - 0,0,0,114,5,0,0,0,114,125,0,0,0,64,1,0, + 1,0,0,0,114,9,0,0,0,114,36,0,0,0,114,56, + 0,0,0,114,147,0,0,0,218,8,112,114,111,112,101,114, + 116,121,114,144,0,0,0,218,6,115,101,116,116,101,114,114, + 153,0,0,0,114,145,0,0,0,114,24,0,0,0,114,17, + 0,0,0,114,5,0,0,0,114,133,0,0,0,64,1,0, 0,115,34,0,0,0,8,0,4,1,4,36,2,1,12,255, 8,12,8,10,2,12,10,1,4,8,10,1,2,3,10,1, - 2,7,10,1,4,3,14,1,114,17,0,0,0,114,125,0, - 0,0,169,2,114,126,0,0,0,114,128,0,0,0,99,2, + 2,7,10,1,4,3,14,1,115,52,0,0,0,0,129,0, + 129,8,190,0,127,0,127,2,101,0,129,0,129,2,155,0, + 127,0,127,4,103,2,1,12,9,8,10,8,12,2,2,10, + 7,4,2,10,2,2,2,10,6,2,2,10,2,4,2,14, + 2,115,114,0,0,0,1,1,1,1,1,1,1,1,5,8, + 1,1,48,52,67,71,29,33,5,28,5,28,5,28,5,28, + 5,28,5,28,5,73,5,73,5,73,5,73,5,34,5,34, + 5,34,5,34,6,14,5,28,5,28,5,28,5,28,5,28, + 6,12,6,19,5,30,5,30,5,30,5,30,5,30,6,14, + 5,29,5,29,5,29,5,29,5,29,6,14,5,34,5,34, + 5,34,5,34,5,34,6,18,6,25,5,41,5,41,5,41, + 5,41,5,41,5,41,5,41,114,17,0,0,0,114,133,0, + 0,0,169,2,114,134,0,0,0,114,136,0,0,0,99,2, 0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,3, 0,0,0,115,152,0,0,0,116,0,124,1,100,1,131,2, 114,37,116,1,100,2,117,0,114,11,116,2,130,1,116,1, @@ -796,121 +987,203 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 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,90,12,103,101,116,95,102, - 105,108,101,110,97,109,101,78,41,1,114,122,0,0,0,41, - 2,114,122,0,0,0,114,129,0,0,0,114,128,0,0,0, - 70,114,148,0,0,0,41,7,114,10,0,0,0,114,139,0, - 0,0,114,140,0,0,0,218,23,115,112,101,99,95,102,114, + 105,108,101,110,97,109,101,78,41,1,114,130,0,0,0,41, + 2,114,130,0,0,0,114,137,0,0,0,114,136,0,0,0, + 70,114,160,0,0,0,41,7,114,10,0,0,0,114,148,0, + 0,0,114,149,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,128,0,0,0,114,88,0,0,0,114,125,0,0,0,41, - 6,114,20,0,0,0,114,122,0,0,0,114,126,0,0,0, - 114,128,0,0,0,114,149,0,0,0,90,6,115,101,97,114, + 114,136,0,0,0,114,94,0,0,0,114,133,0,0,0,41, + 6,114,20,0,0,0,114,130,0,0,0,114,134,0,0,0, + 114,136,0,0,0,114,161,0,0,0,90,6,115,101,97,114, 99,104,115,6,0,0,0,32,32,32,32,32,32,114,5,0, - 0,0,114,104,0,0,0,165,1,0,0,115,42,0,0,0, + 0,0,114,112,0,0,0,165,1,0,0,115,42,0,0,0, 10,2,8,1,4,1,6,1,8,2,12,1,12,1,6,1, 2,1,6,255,8,3,10,1,2,1,12,1,2,128,12,1, - 8,1,2,128,4,3,16,2,2,250,115,15,0,0,0,175, - 5,53,0,181,9,65,0,7,193,11,1,65,0,7,114,104, - 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, - 8,0,0,0,3,0,0,0,115,50,1,0,0,9,0,124, - 0,106,0,125,3,110,10,35,0,4,0,116,1,121,152,1, - 0,1,0,1,0,89,0,110,7,37,0,124,3,100,0,117, - 1,114,21,124,3,83,0,124,0,106,2,125,4,124,1,100, - 0,117,0,114,43,9,0,124,0,106,3,125,1,110,10,35, - 0,4,0,116,1,121,151,1,0,1,0,1,0,89,0,110, - 1,37,0,9,0,124,0,106,4,125,5,110,12,35,0,4, - 0,116,1,121,150,1,0,1,0,1,0,100,0,125,5,89, - 0,110,1,37,0,124,2,100,0,117,0,114,87,124,5,100, - 0,117,0,114,85,9,0,124,1,106,5,125,2,110,14,35, - 0,4,0,116,1,121,149,1,0,1,0,1,0,100,0,125, - 2,89,0,110,3,37,0,124,5,125,2,9,0,124,0,106, - 6,125,6,110,12,35,0,4,0,116,1,121,148,1,0,1, - 0,1,0,100,0,125,6,89,0,110,1,37,0,9,0,116, - 7,124,0,106,8,131,1,125,7,110,12,35,0,4,0,116, - 1,121,147,1,0,1,0,1,0,100,0,125,7,89,0,110, - 1,37,0,116,9,124,4,124,1,124,2,100,1,141,3,125, - 3,124,5,100,0,117,0,114,136,100,2,110,1,100,3,124, - 3,95,10,124,6,124,3,95,11,124,7,124,3,95,12,124, - 3,83,0,119,0,119,0,119,0,119,0,119,0,119,0,41, - 4,78,169,1,114,126,0,0,0,70,84,41,13,114,113,0, - 0,0,114,2,0,0,0,114,8,0,0,0,114,112,0,0, - 0,114,121,0,0,0,218,7,95,79,82,73,71,73,78,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,125,0,0,0, - 114,130,0,0,0,114,135,0,0,0,114,129,0,0,0,41, - 8,114,110,0,0,0,114,122,0,0,0,114,126,0,0,0, - 114,109,0,0,0,114,20,0,0,0,90,8,108,111,99,97, - 116,105,111,110,114,135,0,0,0,114,129,0,0,0,115,8, - 0,0,0,32,32,32,32,32,32,32,32,114,5,0,0,0, - 218,17,95,115,112,101,99,95,102,114,111,109,95,109,111,100, - 117,108,101,191,1,0,0,115,108,0,0,0,2,2,8,1, - 2,128,12,1,4,1,2,128,8,2,4,1,6,2,8,1, - 2,1,8,1,2,128,12,1,4,2,2,128,2,1,8,1, - 2,128,12,1,8,1,2,128,8,1,8,1,2,1,8,1, - 2,128,12,1,8,1,2,128,4,2,2,1,8,1,2,128, - 12,1,8,1,2,128,2,1,12,1,2,128,12,1,8,1, - 2,128,14,2,18,1,6,1,6,1,4,1,2,249,2,252, - 2,250,2,250,2,251,2,246,115,93,0,0,0,129,3,5, - 0,133,7,14,7,157,3,33,0,161,7,42,7,172,3,48, - 0,176,9,59,7,193,5,3,65,9,0,193,9,9,65,20, - 7,193,24,3,65,28,0,193,28,9,65,39,7,193,41,5, - 65,47,0,193,47,9,65,58,7,194,19,1,65,58,7,194, - 20,1,65,39,7,194,21,1,65,20,7,194,22,1,59,7, - 194,23,1,42,7,194,24,1,14,7,114,155,0,0,0,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,8,0,0,0,3,0,0, - 0,115,204,1,0,0,124,2,115,10,116,0,124,1,100,1, - 100,0,131,3,100,0,117,0,114,26,9,0,124,0,106,1, - 124,1,95,2,110,10,35,0,4,0,116,3,121,229,1,0, - 1,0,1,0,89,0,110,1,37,0,124,2,115,36,116,0, - 124,1,100,2,100,0,131,3,100,0,117,0,114,87,124,0, - 106,4,125,3,124,3,100,0,117,0,114,72,124,0,106,5, - 100,0,117,1,114,72,116,6,100,0,117,0,114,54,116,7, - 130,1,116,6,106,8,125,4,124,4,160,9,124,4,161,1, - 125,3,124,0,106,5,124,3,95,10,124,3,124,0,95,4, - 100,0,124,1,95,11,9,0,124,3,124,1,95,12,110,10, - 35,0,4,0,116,3,121,228,1,0,1,0,1,0,89,0, - 110,1,37,0,124,2,115,97,116,0,124,1,100,3,100,0, - 131,3,100,0,117,0,114,113,9,0,124,0,106,13,124,1, - 95,14,110,10,35,0,4,0,116,3,121,227,1,0,1,0, - 1,0,89,0,110,1,37,0,9,0,124,0,124,1,95,15, - 110,10,35,0,4,0,116,3,121,226,1,0,1,0,1,0, - 89,0,110,1,37,0,124,2,115,138,116,0,124,1,100,4, - 100,0,131,3,100,0,117,0,114,159,124,0,106,5,100,0, - 117,1,114,159,9,0,124,0,106,5,124,1,95,16,110,10, - 35,0,4,0,116,3,121,225,1,0,1,0,1,0,89,0, - 110,1,37,0,124,0,106,17,114,221,124,2,115,172,116,0, - 124,1,100,5,100,0,131,3,100,0,117,0,114,188,9,0, - 124,0,106,18,124,1,95,11,110,10,35,0,4,0,116,3, - 121,224,1,0,1,0,1,0,89,0,110,1,37,0,124,2, - 115,198,116,0,124,1,100,6,100,0,131,3,100,0,117,0, - 114,221,124,0,106,19,100,0,117,1,114,221,9,0,124,0, - 106,19,124,1,95,20,124,1,83,0,35,0,4,0,116,3, - 121,223,1,0,1,0,1,0,89,0,124,1,83,0,37,0, - 124,1,83,0,119,0,119,0,119,0,119,0,119,0,119,0, - 119,0,41,7,78,114,8,0,0,0,114,112,0,0,0,218, - 11,95,95,112,97,99,107,97,103,101,95,95,114,154,0,0, - 0,114,121,0,0,0,114,152,0,0,0,41,21,114,12,0, - 0,0,114,20,0,0,0,114,8,0,0,0,114,2,0,0, - 0,114,122,0,0,0,114,129,0,0,0,114,139,0,0,0, - 114,140,0,0,0,218,16,95,78,97,109,101,115,112,97,99, - 101,76,111,97,100,101,114,218,7,95,95,110,101,119,95,95, - 90,5,95,112,97,116,104,114,121,0,0,0,114,112,0,0, - 0,114,143,0,0,0,114,158,0,0,0,114,113,0,0,0, - 114,154,0,0,0,114,136,0,0,0,114,126,0,0,0,114, - 135,0,0,0,114,152,0,0,0,41,5,114,109,0,0,0, - 114,110,0,0,0,114,157,0,0,0,114,122,0,0,0,114, - 159,0,0,0,115,5,0,0,0,32,32,32,32,32,114,5, - 0,0,0,218,18,95,105,110,105,116,95,109,111,100,117,108, - 101,95,97,116,116,114,115,236,1,0,0,115,142,0,0,0, - 20,4,2,1,10,1,2,128,12,1,4,1,2,128,20,2, - 6,1,8,1,10,2,8,1,4,1,6,1,10,2,8,1, - 6,1,6,11,2,1,8,1,2,128,12,1,4,1,2,128, - 20,2,2,1,10,1,2,128,12,1,4,1,2,128,2,2, - 8,1,2,128,12,1,4,1,2,128,20,2,10,1,2,1, - 10,1,2,128,12,1,4,1,2,128,6,2,20,1,2,1, - 10,1,2,128,12,1,4,1,2,128,20,2,10,1,2,1, - 8,1,4,3,2,128,12,254,2,1,4,1,2,128,4,0, - 2,254,2,249,2,249,2,249,2,251,2,250,2,228,115,121, + 8,1,2,128,4,3,16,2,2,250,115,48,0,0,0,8, + 2,2,9,6,248,6,1,6,1,6,2,14,1,12,1,6, + 1,8,1,6,2,2,8,8,249,2,7,2,253,12,254,2, + 128,2,2,2,255,16,1,2,128,4,3,16,2,2,251,115, + 152,0,0,0,8,15,16,22,24,38,8,39,5,74,12,31, + 35,39,12,39,9,38,19,38,13,38,35,54,35,78,9,32, + 12,22,26,30,12,30,9,64,20,43,44,48,57,63,20,64, + 20,64,13,64,24,34,18,44,18,20,18,20,40,44,9,15, + 16,39,40,44,53,59,67,73,16,74,16,74,9,74,8,18, + 22,26,8,26,5,31,12,19,20,26,28,40,12,41,9,31, + 13,34,30,36,30,53,48,52,30,53,17,27,17,27,0,0, + 13,34,20,31,13,34,13,34,13,34,13,34,30,34,17,27, + 17,27,17,27,0,0,26,31,13,23,12,22,23,27,29,35, + 44,50,63,73,12,74,12,74,5,74,13,34,115,15,0,0, + 0,175,5,53,0,181,9,65,0,7,193,11,1,65,0,7, + 114,112,0,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,3,0,0,0,115,50,1,0,0,9, + 0,124,0,106,0,125,3,110,10,35,0,4,0,116,1,121, + 152,1,0,1,0,1,0,89,0,110,7,37,0,124,3,100, + 0,117,1,114,21,124,3,83,0,124,0,106,2,125,4,124, + 1,100,0,117,0,114,43,9,0,124,0,106,3,125,1,110, + 10,35,0,4,0,116,1,121,151,1,0,1,0,1,0,89, + 0,110,1,37,0,9,0,124,0,106,4,125,5,110,12,35, + 0,4,0,116,1,121,150,1,0,1,0,1,0,100,0,125, + 5,89,0,110,1,37,0,124,2,100,0,117,0,114,87,124, + 5,100,0,117,0,114,85,9,0,124,1,106,5,125,2,110, + 14,35,0,4,0,116,1,121,149,1,0,1,0,1,0,100, + 0,125,2,89,0,110,3,37,0,124,5,125,2,9,0,124, + 0,106,6,125,6,110,12,35,0,4,0,116,1,121,148,1, + 0,1,0,1,0,100,0,125,6,89,0,110,1,37,0,9, + 0,116,7,124,0,106,8,131,1,125,7,110,12,35,0,4, + 0,116,1,121,147,1,0,1,0,1,0,100,0,125,7,89, + 0,110,1,37,0,116,9,124,4,124,1,124,2,100,1,141, + 3,125,3,124,5,100,0,117,0,114,136,100,2,110,1,100, + 3,124,3,95,10,124,6,124,3,95,11,124,7,124,3,95, + 12,124,3,83,0,119,0,119,0,119,0,119,0,119,0,119, + 0,41,4,78,169,1,114,134,0,0,0,70,84,41,13,114, + 121,0,0,0,114,2,0,0,0,114,8,0,0,0,114,120, + 0,0,0,114,129,0,0,0,218,7,95,79,82,73,71,73, + 78,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,133,0, + 0,0,114,138,0,0,0,114,144,0,0,0,114,137,0,0, + 0,41,8,114,118,0,0,0,114,130,0,0,0,114,134,0, + 0,0,114,117,0,0,0,114,20,0,0,0,90,8,108,111, + 99,97,116,105,111,110,114,144,0,0,0,114,137,0,0,0, + 115,8,0,0,0,32,32,32,32,32,32,32,32,114,5,0, + 0,0,218,17,95,115,112,101,99,95,102,114,111,109,95,109, + 111,100,117,108,101,191,1,0,0,115,108,0,0,0,2,2, + 8,1,2,128,12,1,4,1,2,128,8,2,4,1,6,2, + 8,1,2,1,8,1,2,128,12,1,4,2,2,128,2,1, + 8,1,2,128,12,1,8,1,2,128,8,1,8,1,2,1, + 8,1,2,128,12,1,8,1,2,128,4,2,2,1,8,1, + 2,128,12,1,8,1,2,128,2,1,12,1,2,128,12,1, + 8,1,2,128,14,2,18,1,6,1,6,1,4,1,2,249, + 2,252,2,250,2,250,2,251,2,246,115,124,0,0,0,2, + 8,8,251,2,128,2,2,2,255,12,1,2,128,6,2,6, + 1,6,2,6,1,4,5,8,253,2,128,2,3,2,254,12, + 2,2,128,2,4,8,254,2,128,2,2,2,255,16,1,2, + 128,6,1,2,7,6,250,2,6,2,254,8,254,2,128,2, + 2,2,255,16,1,2,128,4,2,2,4,8,254,2,128,2, + 2,2,255,16,1,2,128,2,4,12,254,2,128,2,2,2, + 255,16,1,2,128,14,2,18,1,6,1,6,1,4,1,2, + 250,2,252,2,250,2,250,2,252,2,245,115,50,1,0,0, + 5,24,16,22,16,31,9,13,9,13,0,0,5,13,12,26, + 5,13,5,13,5,13,5,13,9,13,9,13,0,0,12,16, + 24,28,12,28,9,24,20,24,13,24,12,18,12,27,5,9, + 8,14,18,22,8,22,5,17,9,17,22,28,22,39,13,19, + 13,19,0,0,9,17,16,30,9,17,9,17,9,17,9,17, + 13,17,13,17,0,0,5,24,20,26,20,35,9,17,9,17, + 0,0,5,24,12,26,5,24,5,24,5,24,5,24,20,24, + 9,17,9,17,9,17,0,0,8,14,18,22,8,22,5,30, + 12,20,24,28,12,28,9,30,13,30,26,32,26,40,17,23, + 17,23,0,0,13,30,20,34,13,30,13,30,13,30,13,30, + 26,30,17,23,17,23,17,23,0,0,22,30,13,19,5,22, + 18,24,18,35,9,15,9,15,0,0,5,22,12,26,5,22, + 5,22,5,22,5,22,18,22,9,15,9,15,9,15,0,0, + 5,42,38,42,43,49,43,58,38,59,9,35,9,35,0,0, + 5,42,12,26,5,42,5,42,5,42,5,42,38,42,9,35, + 9,35,9,35,0,0,12,22,23,27,29,35,44,50,12,51, + 12,51,5,9,35,43,47,51,35,51,26,61,26,31,26,31, + 57,61,5,9,5,23,19,25,5,9,5,16,39,65,5,9, + 5,36,12,16,5,16,5,42,5,22,13,30,5,24,9,17, + 5,13,115,93,0,0,0,129,3,5,0,133,7,14,7,157, + 3,33,0,161,7,42,7,172,3,48,0,176,9,59,7,193, + 5,3,65,9,0,193,9,9,65,20,7,193,24,3,65,28, + 0,193,28,9,65,39,7,193,41,5,65,47,0,193,47,9, + 65,58,7,194,19,1,65,58,7,194,20,1,65,39,7,194, + 21,1,65,20,7,194,22,1,59,7,194,23,1,42,7,194, + 24,1,14,7,114,167,0,0,0,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,8,0,0,0,3,0,0,0,115,204,1,0,0, + 124,2,115,10,116,0,124,1,100,1,100,0,131,3,100,0, + 117,0,114,26,9,0,124,0,106,1,124,1,95,2,110,10, + 35,0,4,0,116,3,121,229,1,0,1,0,1,0,89,0, + 110,1,37,0,124,2,115,36,116,0,124,1,100,2,100,0, + 131,3,100,0,117,0,114,87,124,0,106,4,125,3,124,3, + 100,0,117,0,114,72,124,0,106,5,100,0,117,1,114,72, + 116,6,100,0,117,0,114,54,116,7,130,1,116,6,106,8, + 125,4,124,4,160,9,124,4,161,1,125,3,124,0,106,5, + 124,3,95,10,124,3,124,0,95,4,100,0,124,1,95,11, + 9,0,124,3,124,1,95,12,110,10,35,0,4,0,116,3, + 121,228,1,0,1,0,1,0,89,0,110,1,37,0,124,2, + 115,97,116,0,124,1,100,3,100,0,131,3,100,0,117,0, + 114,113,9,0,124,0,106,13,124,1,95,14,110,10,35,0, + 4,0,116,3,121,227,1,0,1,0,1,0,89,0,110,1, + 37,0,9,0,124,0,124,1,95,15,110,10,35,0,4,0, + 116,3,121,226,1,0,1,0,1,0,89,0,110,1,37,0, + 124,2,115,138,116,0,124,1,100,4,100,0,131,3,100,0, + 117,0,114,159,124,0,106,5,100,0,117,1,114,159,9,0, + 124,0,106,5,124,1,95,16,110,10,35,0,4,0,116,3, + 121,225,1,0,1,0,1,0,89,0,110,1,37,0,124,0, + 106,17,114,221,124,2,115,172,116,0,124,1,100,5,100,0, + 131,3,100,0,117,0,114,188,9,0,124,0,106,18,124,1, + 95,11,110,10,35,0,4,0,116,3,121,224,1,0,1,0, + 1,0,89,0,110,1,37,0,124,2,115,198,116,0,124,1, + 100,6,100,0,131,3,100,0,117,0,114,221,124,0,106,19, + 100,0,117,1,114,221,9,0,124,0,106,19,124,1,95,20, + 124,1,83,0,35,0,4,0,116,3,121,223,1,0,1,0, + 1,0,89,0,124,1,83,0,37,0,124,1,83,0,119,0, + 119,0,119,0,119,0,119,0,119,0,119,0,41,7,78,114, + 8,0,0,0,114,120,0,0,0,218,11,95,95,112,97,99, + 107,97,103,101,95,95,114,166,0,0,0,114,129,0,0,0, + 114,164,0,0,0,41,21,114,12,0,0,0,114,20,0,0, + 0,114,8,0,0,0,114,2,0,0,0,114,130,0,0,0, + 114,137,0,0,0,114,148,0,0,0,114,149,0,0,0,218, + 16,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, + 114,218,7,95,95,110,101,119,95,95,90,5,95,112,97,116, + 104,114,129,0,0,0,114,120,0,0,0,114,153,0,0,0, + 114,170,0,0,0,114,121,0,0,0,114,166,0,0,0,114, + 145,0,0,0,114,134,0,0,0,114,144,0,0,0,114,164, + 0,0,0,41,5,114,117,0,0,0,114,118,0,0,0,114, + 169,0,0,0,114,130,0,0,0,114,171,0,0,0,115,5, + 0,0,0,32,32,32,32,32,114,5,0,0,0,218,18,95, + 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114, + 115,236,1,0,0,115,142,0,0,0,20,4,2,1,10,1, + 2,128,12,1,4,1,2,128,20,2,6,1,8,1,10,2, + 8,1,4,1,6,1,10,2,8,1,6,1,6,11,2,1, + 8,1,2,128,12,1,4,1,2,128,20,2,2,1,10,1, + 2,128,12,1,4,1,2,128,2,2,8,1,2,128,12,1, + 4,1,2,128,20,2,10,1,2,1,10,1,2,128,12,1, + 4,1,2,128,6,2,20,1,2,1,10,1,2,128,12,1, + 4,1,2,128,20,2,10,1,2,1,8,1,4,3,2,128, + 12,254,2,1,4,1,2,128,4,0,2,254,2,249,2,249, + 2,249,2,251,2,250,2,228,115,192,0,0,0,2,4,2, + 4,14,252,4,4,10,254,2,128,2,2,2,255,12,1,2, + 128,2,2,2,26,14,230,2,26,6,231,6,1,2,20,8, + 238,2,18,6,239,6,1,6,1,10,2,8,1,6,1,6, + 11,2,4,8,254,2,128,2,2,2,255,12,1,2,128,2, + 2,2,4,14,252,4,4,10,254,2,128,2,2,2,255,12, + 1,2,128,2,5,8,254,2,128,2,2,2,255,12,1,2, + 128,2,2,2,5,14,251,2,5,8,252,4,4,10,254,2, + 128,2,2,2,255,12,1,2,128,4,2,2,12,2,245,2, + 4,14,252,4,4,10,254,2,128,2,2,2,255,12,1,2, + 128,2,2,2,5,14,251,2,5,8,252,4,4,8,254,4, + 3,2,128,2,255,2,255,10,1,4,1,2,128,4,0,2, + 255,2,249,2,249,2,249,2,251,2,250,2,228,115,204,1, + 0,0,9,17,5,17,21,28,29,35,37,47,49,53,21,54, + 58,62,21,62,5,17,9,17,31,35,31,40,13,19,13,28, + 13,28,0,0,9,17,16,30,9,17,9,17,9,17,9,17, + 13,17,13,17,0,0,8,16,5,17,20,27,28,34,36,48, + 50,54,20,55,59,63,20,63,5,17,18,22,18,29,9,15, + 12,18,22,26,12,26,9,39,16,20,16,47,55,59,16,59, + 13,39,20,39,43,47,20,47,17,46,27,46,21,46,36,55, + 36,72,17,33,26,42,26,68,51,67,26,68,17,23,32,36, + 32,63,17,23,17,29,31,37,17,21,17,28,35,39,17,23, + 17,32,9,17,33,39,13,19,13,30,13,30,0,0,9,17, + 16,30,9,17,9,17,9,17,9,17,13,17,13,17,0,0, + 8,16,5,17,20,27,28,34,36,49,51,55,20,56,60,64, + 20,64,5,17,9,17,34,38,34,45,13,19,13,31,13,31, + 0,0,9,17,16,30,9,17,9,17,9,17,9,17,13,17, + 13,17,0,0,5,13,27,31,9,15,9,24,9,24,0,0, + 5,13,12,26,5,13,5,13,5,13,5,13,9,13,9,13, + 0,0,8,16,5,21,20,27,28,34,36,46,48,52,20,53, + 57,61,20,61,5,21,12,16,12,43,51,55,12,55,9,21, + 13,21,35,39,35,66,17,23,17,32,17,32,0,0,13,21, + 20,34,13,21,13,21,13,21,13,21,17,21,17,21,0,0, + 8,12,8,25,5,25,12,20,9,21,24,31,32,38,40,50, + 52,56,24,57,61,65,24,65,9,21,13,21,35,39,35,46, + 17,23,17,32,17,32,0,0,13,21,20,34,13,21,13,21, + 13,21,13,21,17,21,17,21,0,0,12,20,9,25,24,31, + 32,38,40,52,54,58,24,59,63,67,24,67,9,25,16,20, + 16,27,35,39,16,39,13,25,17,25,41,45,41,52,21,27, + 21,38,12,18,5,18,0,0,17,25,24,38,17,25,17,25, + 17,25,17,25,21,25,12,18,5,18,0,0,12,18,5,18, + 17,25,13,21,13,21,5,13,9,17,9,17,9,17,115,121, 0,0,0,139,4,16,0,144,7,25,7,193,9,3,65,13, 0,193,13,7,65,22,7,193,34,4,65,39,0,193,39,7, 65,48,7,193,50,3,65,54,0,193,54,7,65,63,7,194, @@ -918,7 +1191,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,194,50,7,66,59,7,195,12,4,67,18,0,195,18,7, 67,28,7,195,31,1,67,28,7,195,32,1,66,59,7,195, 33,1,66,30,7,195,34,1,65,63,7,195,35,1,65,48, - 7,195,36,1,65,22,7,195,37,1,25,7,114,161,0,0, + 7,195,36,1,65,22,7,195,37,1,25,7,114,173,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, 0,0,3,0,0,0,115,82,0,0,0,100,1,125,1,116, 0,124,0,106,1,100,2,131,2,114,15,124,0,106,1,160, @@ -935,1001 +1208,1358 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 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, - 10,0,0,0,114,122,0,0,0,114,162,0,0,0,114,88, - 0,0,0,114,21,0,0,0,114,20,0,0,0,114,161,0, - 0,0,169,2,114,109,0,0,0,114,110,0,0,0,115,2, + 10,0,0,0,114,130,0,0,0,114,174,0,0,0,114,94, + 0,0,0,114,21,0,0,0,114,20,0,0,0,114,173,0, + 0,0,169,2,114,117,0,0,0,114,118,0,0,0,115,2, 0,0,0,32,32,114,5,0,0,0,218,16,109,111,100,117, 108,101,95,102,114,111,109,95,115,112,101,99,52,2,0,0, 115,18,0,0,0,4,3,12,1,14,3,12,1,8,1,8, - 2,10,1,10,1,4,1,114,17,0,0,0,114,165,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,115,100,0,0,0,124,0,106,0,100, - 1,117,0,114,7,100,2,110,2,124,0,106,0,125,1,124, - 0,106,1,100,1,117,0,114,32,124,0,106,2,100,1,117, - 0,114,25,100,3,160,3,124,1,161,1,83,0,100,4,160, - 3,124,1,124,0,106,2,161,2,83,0,124,0,106,4,114, - 42,100,5,160,3,124,1,124,0,106,1,161,2,83,0,100, - 6,160,3,124,0,106,0,124,0,106,1,161,2,83,0,41, - 7,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,78,114,115,0,0,0,114, - 116,0,0,0,114,117,0,0,0,114,118,0,0,0,250,18, - 60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,125, - 41,62,41,5,114,20,0,0,0,114,126,0,0,0,114,122, - 0,0,0,114,51,0,0,0,114,136,0,0,0,41,2,114, - 109,0,0,0,114,20,0,0,0,115,2,0,0,0,32,32, - 114,5,0,0,0,114,119,0,0,0,69,2,0,0,115,16, - 0,0,0,20,3,10,1,10,1,10,1,14,2,6,2,14, - 1,16,2,114,17,0,0,0,114,119,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,10,0,0,0,3,0, - 0,0,115,32,1,0,0,124,0,106,0,125,2,116,1,124, - 2,131,1,53,0,1,0,116,2,106,3,160,4,124,2,161, - 1,124,1,117,1,114,27,100,1,160,5,124,2,161,1,125, - 3,116,6,124,3,124,2,100,2,141,2,130,1,9,0,124, - 0,106,7,100,3,117,0,114,53,124,0,106,8,100,3,117, - 0,114,45,116,6,100,4,124,0,106,0,100,2,141,2,130, - 1,116,9,124,0,124,1,100,5,100,6,141,3,1,0,110, - 40,116,9,124,0,124,1,100,5,100,6,141,3,1,0,116, - 10,124,0,106,7,100,7,131,2,115,87,116,11,124,0,106, - 7,131,1,155,0,100,8,157,2,125,3,116,12,160,13,124, - 3,116,14,161,2,1,0,124,0,106,7,160,15,124,2,161, - 1,1,0,110,6,124,0,106,7,160,16,124,1,161,1,1, - 0,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, - 1,116,2,106,3,124,0,106,0,60,0,110,16,35,0,116, - 2,106,3,160,17,124,0,106,0,161,1,125,1,124,1,116, - 2,106,3,124,0,106,0,60,0,119,0,37,0,9,0,100, - 3,4,0,4,0,131,3,1,0,124,1,83,0,35,0,49, - 0,115,136,119,4,37,0,1,0,1,0,1,0,89,0,1, - 0,1,0,124,1,83,0,41,9,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,30,109,111,100,117,108,101,32,123,33,114,125,32,110, - 111,116,32,105,110,32,115,121,115,46,109,111,100,117,108,101, - 115,114,19,0,0,0,78,250,14,109,105,115,115,105,110,103, - 32,108,111,97,100,101,114,84,114,156,0,0,0,114,163,0, - 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,18,114,20,0, - 0,0,114,58,0,0,0,114,18,0,0,0,114,105,0,0, - 0,114,39,0,0,0,114,51,0,0,0,114,88,0,0,0, - 114,122,0,0,0,114,129,0,0,0,114,161,0,0,0,114, - 10,0,0,0,114,6,0,0,0,114,101,0,0,0,114,102, - 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, - 163,0,0,0,218,3,112,111,112,41,4,114,109,0,0,0, - 114,110,0,0,0,114,20,0,0,0,114,108,0,0,0,115, - 4,0,0,0,32,32,32,32,114,5,0,0,0,114,106,0, - 0,0,86,2,0,0,115,54,0,0,0,6,2,10,1,16, - 1,10,1,12,1,2,1,10,1,10,1,14,1,16,2,14, - 2,12,1,16,1,12,2,14,1,12,2,14,4,14,1,2, - 128,14,255,18,1,10,233,4,24,8,232,2,128,12,0,4, - 24,115,41,0,0,0,135,20,66,3,3,156,65,1,65,43, - 2,193,29,14,66,3,3,193,43,15,65,58,9,193,58,1, - 66,3,3,194,3,4,66,7,11,194,8,3,66,7,11,114, - 106,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,3,0,0,0,115,22,1,0,0,9,0, - 124,0,106,0,160,1,124,0,106,2,161,1,1,0,110,25, - 35,0,1,0,1,0,1,0,124,0,106,2,116,3,106,4, - 118,0,114,32,116,3,106,4,160,5,124,0,106,2,161,1, - 125,1,124,1,116,3,106,4,124,0,106,2,60,0,130,0, - 37,0,116,3,106,4,160,5,124,0,106,2,161,1,125,1, - 124,1,116,3,106,4,124,0,106,2,60,0,116,6,124,1, - 100,1,100,0,131,3,100,0,117,0,114,71,9,0,124,0, - 106,0,124,1,95,7,110,10,35,0,4,0,116,8,121,138, - 1,0,1,0,1,0,89,0,110,1,37,0,116,6,124,1, - 100,2,100,0,131,3,100,0,117,0,114,109,9,0,124,1, - 106,9,124,1,95,10,116,11,124,1,100,3,131,2,115,98, - 124,0,106,2,160,12,100,4,161,1,100,5,25,0,124,1, - 95,10,110,10,35,0,4,0,116,8,121,137,1,0,1,0, - 1,0,89,0,110,1,37,0,116,6,124,1,100,6,100,0, - 131,3,100,0,117,0,114,134,9,0,124,0,124,1,95,13, - 124,1,83,0,35,0,4,0,116,8,121,136,1,0,1,0, - 1,0,89,0,124,1,83,0,37,0,124,1,83,0,119,0, - 119,0,119,0,41,7,78,114,112,0,0,0,114,158,0,0, - 0,114,154,0,0,0,114,141,0,0,0,114,26,0,0,0, - 114,113,0,0,0,41,14,114,122,0,0,0,114,170,0,0, - 0,114,20,0,0,0,114,18,0,0,0,114,105,0,0,0, - 114,171,0,0,0,114,12,0,0,0,114,112,0,0,0,114, - 2,0,0,0,114,8,0,0,0,114,158,0,0,0,114,10, - 0,0,0,114,142,0,0,0,114,113,0,0,0,114,164,0, - 0,0,115,2,0,0,0,32,32,114,5,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,116,2,0,0,115,80,0, - 0,0,2,3,16,1,2,128,6,1,12,1,14,1,12,1, - 2,1,2,128,14,3,12,1,16,1,2,1,10,1,2,128, - 12,1,4,1,2,128,16,1,2,1,8,4,10,1,18,1, - 4,128,12,1,4,1,2,128,16,1,2,1,6,1,4,3, - 2,128,12,254,2,1,4,1,2,128,4,0,2,254,2,251, - 2,246,115,59,0,0,0,129,7,9,0,137,24,33,7,184, - 4,61,0,189,7,65,6,7,193,16,18,65,35,0,193,35, - 7,65,44,7,193,54,3,65,59,0,193,59,7,66,5,7, - 194,8,1,66,5,7,194,9,1,65,44,7,194,10,1,65, - 6,7,114,172,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,11,0,0,0,3,0,0,0,115,248,0,0, - 0,124,0,106,0,100,0,117,1,114,29,116,1,124,0,106, - 0,100,1,131,2,115,29,116,2,124,0,106,0,131,1,155, - 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, - 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, - 1,125,2,100,3,124,0,95,8,9,0,124,2,116,9,106, - 10,124,0,106,11,60,0,9,0,124,0,106,0,100,0,117, - 0,114,62,124,0,106,12,100,0,117,0,114,61,116,13,100, - 4,124,0,106,11,100,5,141,2,130,1,110,6,124,0,106, - 0,160,14,124,2,161,1,1,0,110,22,35,0,1,0,1, - 0,1,0,9,0,116,9,106,10,124,0,106,11,61,0,130, - 0,35,0,4,0,116,15,121,123,1,0,1,0,1,0,89, - 0,130,0,37,0,37,0,116,9,106,10,160,16,124,0,106, - 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, - 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, - 0,100,7,124,0,95,8,124,2,83,0,35,0,100,7,124, - 0,95,8,119,0,37,0,119,0,41,8,78,114,163,0,0, - 0,114,168,0,0,0,84,114,167,0,0,0,114,19,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,122,0,0,0,114,10,0, - 0,0,114,6,0,0,0,114,101,0,0,0,114,102,0,0, - 0,114,169,0,0,0,114,172,0,0,0,114,165,0,0,0, - 90,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114, - 18,0,0,0,114,105,0,0,0,114,20,0,0,0,114,129, - 0,0,0,114,88,0,0,0,114,163,0,0,0,114,71,0, - 0,0,114,171,0,0,0,114,84,0,0,0,41,3,114,109, - 0,0,0,114,108,0,0,0,114,110,0,0,0,115,3,0, - 0,0,32,32,32,114,5,0,0,0,218,14,95,108,111,97, - 100,95,117,110,108,111,99,107,101,100,152,2,0,0,115,66, - 0,0,0,10,2,12,2,16,1,12,2,8,1,8,2,6, - 5,2,1,12,1,2,1,10,1,10,1,14,1,2,255,12, - 4,4,128,6,1,2,1,10,1,2,3,2,128,12,254,2, - 1,2,1,4,128,14,5,12,1,16,1,6,2,4,2,2, - 128,10,254,2,245,115,64,0,0,0,165,6,65,53,0,172, - 24,65,5,0,193,4,1,65,53,0,193,5,4,65,26,7, - 193,10,5,65,16,6,193,15,1,65,26,7,193,16,7,65, - 25,13,193,23,3,65,26,7,193,26,22,65,53,0,193,53, - 5,65,58,7,193,59,1,65,25,13,114,173,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, - 3,0,0,0,115,58,0,0,0,116,0,124,0,106,1,131, - 1,53,0,1,0,116,2,124,0,131,1,2,0,100,1,4, - 0,4,0,131,3,1,0,83,0,35,0,49,0,115,21,119, - 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,100, - 1,83,0,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,58,0,0,0,114,20, - 0,0,0,114,173,0,0,0,169,1,114,109,0,0,0,115, - 1,0,0,0,32,114,5,0,0,0,114,107,0,0,0,197, - 2,0,0,115,10,0,0,0,12,9,6,1,22,255,2,128, - 16,0,115,12,0,0,0,133,4,16,3,144,4,20,11,149, - 3,20,11,114,107,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,0,0,0,0,115,140,0, - 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, - 90,4,101,5,100,3,100,4,132,0,131,1,90,6,101,7, - 100,20,100,6,100,7,132,1,131,1,90,8,101,7,100,21, - 100,8,100,9,132,1,131,1,90,9,101,5,100,10,100,11, - 132,0,131,1,90,10,101,5,100,12,100,13,132,0,131,1, - 90,11,101,7,101,12,100,14,100,15,132,0,131,1,131,1, - 90,13,101,7,101,12,100,16,100,17,132,0,131,1,131,1, - 90,14,101,7,101,12,100,18,100,19,132,0,131,1,131,1, - 90,15,101,7,101,16,131,1,90,17,100,5,83,0,41,22, - 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,99,1,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, - 0,0,115,34,0,0,0,116,0,160,1,100,1,116,2,161, - 2,1,0,100,2,124,0,106,3,155,2,100,3,116,4,106, - 5,155,0,100,4,157,5,83,0,41,6,250,115,82,101,116, - 117,114,110,32,114,101,112,114,32,102,111,114,32,116,104,101, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,84,104,101,32,109,101,116,104,111,100,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,46,32,32,84,104,101, - 32,105,109,112,111,114,116,32,109,97,99,104,105,110,101,114, - 121,32,100,111,101,115,32,116,104,101,32,106,111,98,32,105, - 116,115,101,108,102,46,10,10,32,32,32,32,32,32,32,32, - 122,81,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,46,109,111,100,117,108,101,95,114,101,112,114,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,122,8,60,109,111,100,117,108,101,32,122,2,32, - 40,122,2,41,62,78,41,6,114,101,0,0,0,114,102,0, - 0,0,114,103,0,0,0,114,8,0,0,0,114,175,0,0, - 0,114,151,0,0,0,169,1,114,110,0,0,0,115,1,0, - 0,0,32,114,5,0,0,0,114,114,0,0,0,223,2,0, - 0,115,8,0,0,0,6,7,2,1,4,255,22,2,114,17, - 0,0,0,122,27,66,117,105,108,116,105,110,73,109,112,111, - 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114, - 78,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,115,42,0,0,0,124,2,100,0,117, - 1,114,6,100,0,83,0,116,0,160,1,124,1,161,1,114, - 19,116,2,124,1,124,0,124,0,106,3,100,1,141,3,83, - 0,100,0,83,0,169,2,78,114,150,0,0,0,41,4,114, - 65,0,0,0,90,10,105,115,95,98,117,105,108,116,105,110, - 114,104,0,0,0,114,151,0,0,0,169,4,218,3,99,108, - 115,114,90,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,5,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,234,2,0, - 0,115,10,0,0,0,8,2,4,1,10,1,16,1,4,2, - 114,17,0,0,0,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, - 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,3,0,0,0,115,42,0,0,0,116,0,160,1,100,1, - 116,2,161,2,1,0,124,0,160,3,124,1,124,2,161,2, - 125,3,124,3,100,2,117,1,114,19,124,3,106,4,83,0, - 100,2,83,0,41,3,122,175,70,105,110,100,32,116,104,101, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 46,10,10,32,32,32,32,32,32,32,32,73,102,32,39,112, - 97,116,104,39,32,105,115,32,101,118,101,114,32,115,112,101, - 99,105,102,105,101,100,32,116,104,101,110,32,116,104,101,32, - 115,101,97,114,99,104,32,105,115,32,99,111,110,115,105,100, - 101,114,101,100,32,97,32,102,97,105,108,117,114,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,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,46,10,10,32, - 32,32,32,32,32,32,32,122,106,66,117,105,108,116,105,110, - 73,109,112,111,114,116,101,114,46,102,105,110,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, - 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, - 101,97,100,78,41,5,114,101,0,0,0,114,102,0,0,0, - 114,103,0,0,0,114,183,0,0,0,114,122,0,0,0,41, - 4,114,180,0,0,0,114,90,0,0,0,114,181,0,0,0, - 114,109,0,0,0,115,4,0,0,0,32,32,32,32,114,5, - 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, - 243,2,0,0,115,10,0,0,0,6,9,2,2,4,254,12, - 3,18,1,114,17,0,0,0,122,27,66,117,105,108,116,105, - 110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,109, - 111,100,117,108,101,99,1,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,3,0,0,0,115,46,0,0,0,124, - 0,106,0,116,1,106,2,118,1,114,17,116,3,100,1,160, - 4,124,0,106,0,161,1,124,0,106,0,100,2,141,2,130, - 1,116,5,116,6,106,7,124,0,131,2,83,0,41,4,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,86,0,0,0,114,19, - 0,0,0,78,41,8,114,20,0,0,0,114,18,0,0,0, - 114,87,0,0,0,114,88,0,0,0,114,51,0,0,0,114, - 75,0,0,0,114,65,0,0,0,90,14,99,114,101,97,116, - 101,95,98,117,105,108,116,105,110,114,174,0,0,0,115,1, - 0,0,0,32,114,5,0,0,0,114,162,0,0,0,2,3, - 0,0,115,10,0,0,0,12,3,12,1,4,1,6,255,12, - 2,114,17,0,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,99,1,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,3,0,0,0,115,16,0,0,0,116, - 0,116,1,106,2,124,0,131,2,1,0,100,1,83,0,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,75,0,0, - 0,114,65,0,0,0,90,12,101,120,101,99,95,98,117,105, - 108,116,105,110,114,177,0,0,0,115,1,0,0,0,32,114, - 5,0,0,0,114,163,0,0,0,10,3,0,0,115,2,0, - 0,0,16,3,114,17,0,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,99,2,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,243,4,0,0,0, - 100,1,83,0,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,23,0,0,0,169,2,114,180,0,0,0,114,90, - 0,0,0,115,2,0,0,0,32,32,114,5,0,0,0,218, - 8,103,101,116,95,99,111,100,101,15,3,0,0,243,2,0, - 0,0,4,4,114,17,0,0,0,122,24,66,117,105,108,116, + 2,10,1,10,1,4,1,115,24,0,0,0,4,3,10,1, + 2,6,14,253,10,1,2,2,2,255,6,1,6,1,12,1, + 10,1,4,1,115,82,0,0,0,14,18,5,11,8,15,16, + 20,16,27,29,44,8,45,5,62,18,22,18,29,18,49,44, + 48,18,49,9,15,9,15,10,17,18,22,18,29,31,44,10, + 45,5,62,15,26,27,61,15,62,9,62,8,14,18,22,8, + 22,5,40,18,29,30,34,30,39,18,40,9,15,5,23,24, + 28,30,36,5,37,5,37,12,18,5,18,114,17,0,0,0, + 114,177,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,115,100,0,0,0,124, + 0,106,0,100,1,117,0,114,7,100,2,110,2,124,0,106, + 0,125,1,124,0,106,1,100,1,117,0,114,32,124,0,106, + 2,100,1,117,0,114,25,100,3,160,3,124,1,161,1,83, + 0,100,4,160,3,124,1,124,0,106,2,161,2,83,0,124, + 0,106,4,114,42,100,5,160,3,124,1,124,0,106,1,161, + 2,83,0,100,6,160,3,124,0,106,0,124,0,106,1,161, + 2,83,0,41,7,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,78,114,123, + 0,0,0,114,124,0,0,0,114,125,0,0,0,114,126,0, + 0,0,250,18,60,109,111,100,117,108,101,32,123,33,114,125, + 32,40,123,125,41,62,41,5,114,20,0,0,0,114,134,0, + 0,0,114,130,0,0,0,114,53,0,0,0,114,145,0,0, + 0,41,2,114,117,0,0,0,114,20,0,0,0,115,2,0, + 0,0,32,32,114,5,0,0,0,114,127,0,0,0,69,2, + 0,0,115,16,0,0,0,20,3,10,1,10,1,10,1,14, + 2,6,2,14,1,16,2,115,22,0,0,0,20,3,8,1, + 2,9,8,248,2,3,10,254,14,2,4,2,2,3,14,254, + 16,2,115,100,0,0,0,19,23,19,28,32,36,19,36,12, + 51,12,15,12,15,42,46,42,51,5,9,8,12,8,19,23, + 27,8,27,5,71,12,16,12,23,27,31,12,31,9,68,20, + 35,20,48,43,47,20,48,13,48,20,42,20,68,50,54,56, + 60,56,67,20,68,13,68,12,16,12,29,9,71,20,45,20, + 71,53,57,59,63,59,70,20,71,13,71,20,40,20,71,48, + 52,48,57,59,63,59,70,20,71,13,71,114,17,0,0,0, + 114,127,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,10,0,0,0,3,0,0,0,115,32,1,0,0,124, + 0,106,0,125,2,116,1,124,2,131,1,53,0,1,0,116, + 2,106,3,160,4,124,2,161,1,124,1,117,1,114,27,100, + 1,160,5,124,2,161,1,125,3,116,6,124,3,124,2,100, + 2,141,2,130,1,9,0,124,0,106,7,100,3,117,0,114, + 53,124,0,106,8,100,3,117,0,114,45,116,6,100,4,124, + 0,106,0,100,2,141,2,130,1,116,9,124,0,124,1,100, + 5,100,6,141,3,1,0,110,40,116,9,124,0,124,1,100, + 5,100,6,141,3,1,0,116,10,124,0,106,7,100,7,131, + 2,115,87,116,11,124,0,106,7,131,1,155,0,100,8,157, + 2,125,3,116,12,160,13,124,3,116,14,161,2,1,0,124, + 0,106,7,160,15,124,2,161,1,1,0,110,6,124,0,106, + 7,160,16,124,1,161,1,1,0,116,2,106,3,160,17,124, + 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, + 0,60,0,110,16,35,0,116,2,106,3,160,17,124,0,106, + 0,161,1,125,1,124,1,116,2,106,3,124,0,106,0,60, + 0,119,0,37,0,9,0,100,3,4,0,4,0,131,3,1, + 0,124,1,83,0,35,0,49,0,115,136,119,4,37,0,1, + 0,1,0,1,0,89,0,1,0,1,0,124,1,83,0,41, + 9,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,30,109,111,100,117,108, + 101,32,123,33,114,125,32,110,111,116,32,105,110,32,115,121, + 115,46,109,111,100,117,108,101,115,114,19,0,0,0,78,250, + 14,109,105,115,115,105,110,103,32,108,111,97,100,101,114,84, + 114,168,0,0,0,114,175,0,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,18,114,20,0,0,0,114,61,0,0,0,114, + 18,0,0,0,114,113,0,0,0,114,41,0,0,0,114,53, + 0,0,0,114,94,0,0,0,114,130,0,0,0,114,137,0, + 0,0,114,173,0,0,0,114,10,0,0,0,114,6,0,0, + 0,114,109,0,0,0,114,110,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,175,0,0,0,218,3,112,111, + 112,41,4,114,117,0,0,0,114,118,0,0,0,114,20,0, + 0,0,114,116,0,0,0,115,4,0,0,0,32,32,32,32, + 114,5,0,0,0,114,114,0,0,0,86,2,0,0,115,54, + 0,0,0,6,2,10,1,16,1,10,1,12,1,2,1,10, + 1,10,1,14,1,16,2,14,2,12,1,16,1,12,2,14, + 1,12,2,14,4,14,1,2,128,14,255,18,1,10,233,4, + 24,8,232,2,128,12,0,4,24,115,64,0,0,0,6,2, + 6,1,4,23,14,234,2,2,10,255,12,1,2,20,8,238, + 2,13,8,244,16,1,16,2,14,2,10,1,2,6,8,251, + 6,1,2,255,12,2,14,1,12,2,14,4,14,1,2,128, + 14,255,28,1,4,1,8,255,2,128,12,0,4,1,115,32, + 1,0,0,12,16,12,21,5,9,10,28,29,33,10,34,5, + 44,5,44,12,15,12,23,12,33,28,32,12,33,41,47,12, + 47,9,46,19,51,19,64,59,63,19,64,13,16,19,30,31, + 34,41,45,19,46,19,46,13,46,9,44,16,20,16,27,31, + 35,16,35,13,52,20,24,20,51,55,59,20,59,17,72,27, + 38,39,55,62,66,62,71,27,72,27,72,21,72,17,35,36, + 40,42,48,59,63,17,64,17,64,17,64,17,64,17,35,36, + 40,42,48,59,63,17,64,17,64,17,64,24,31,32,36,32, + 43,45,58,24,59,17,52,31,43,44,48,44,55,31,56,28, + 59,28,59,28,59,21,24,21,30,21,55,36,39,41,54,21, + 55,21,55,21,25,21,32,21,50,45,49,21,50,21,50,21, + 50,21,25,21,32,21,52,45,51,21,52,21,52,22,25,22, + 33,22,48,38,42,38,47,22,48,13,19,38,44,13,16,13, + 24,25,29,25,34,13,35,13,35,0,0,22,25,22,33,22, + 48,38,42,38,47,22,48,13,19,38,44,13,16,13,24,25, + 29,25,34,13,35,13,44,13,44,13,35,5,44,5,44,5, + 44,5,44,5,44,12,18,5,18,5,44,5,44,5,44,5, + 44,0,0,5,44,5,44,5,44,5,44,5,44,5,44,12, + 18,5,18,115,41,0,0,0,135,20,66,3,3,156,65,1, + 65,43,2,193,29,14,66,3,3,193,43,15,65,58,9,193, + 58,1,66,3,3,194,3,4,66,7,11,194,8,3,66,7, + 11,114,114,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,8,0,0,0,3,0,0,0,115,22,1,0,0, + 9,0,124,0,106,0,160,1,124,0,106,2,161,1,1,0, + 110,25,35,0,1,0,1,0,1,0,124,0,106,2,116,3, + 106,4,118,0,114,32,116,3,106,4,160,5,124,0,106,2, + 161,1,125,1,124,1,116,3,106,4,124,0,106,2,60,0, + 130,0,37,0,116,3,106,4,160,5,124,0,106,2,161,1, + 125,1,124,1,116,3,106,4,124,0,106,2,60,0,116,6, + 124,1,100,1,100,0,131,3,100,0,117,0,114,71,9,0, + 124,0,106,0,124,1,95,7,110,10,35,0,4,0,116,8, + 121,138,1,0,1,0,1,0,89,0,110,1,37,0,116,6, + 124,1,100,2,100,0,131,3,100,0,117,0,114,109,9,0, + 124,1,106,9,124,1,95,10,116,11,124,1,100,3,131,2, + 115,98,124,0,106,2,160,12,100,4,161,1,100,5,25,0, + 124,1,95,10,110,10,35,0,4,0,116,8,121,137,1,0, + 1,0,1,0,89,0,110,1,37,0,116,6,124,1,100,6, + 100,0,131,3,100,0,117,0,114,134,9,0,124,0,124,1, + 95,13,124,1,83,0,35,0,4,0,116,8,121,136,1,0, + 1,0,1,0,89,0,124,1,83,0,37,0,124,1,83,0, + 119,0,119,0,119,0,41,7,78,114,120,0,0,0,114,170, + 0,0,0,114,166,0,0,0,114,151,0,0,0,114,27,0, + 0,0,114,121,0,0,0,41,14,114,130,0,0,0,114,182, + 0,0,0,114,20,0,0,0,114,18,0,0,0,114,113,0, + 0,0,114,183,0,0,0,114,12,0,0,0,114,120,0,0, + 0,114,2,0,0,0,114,8,0,0,0,114,170,0,0,0, + 114,10,0,0,0,114,152,0,0,0,114,121,0,0,0,114, + 176,0,0,0,115,2,0,0,0,32,32,114,5,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,116,2,0,0,115, + 80,0,0,0,2,3,16,1,2,128,6,1,12,1,14,1, + 12,1,2,1,2,128,14,3,12,1,16,1,2,1,10,1, + 2,128,12,1,4,1,2,128,16,1,2,1,8,4,10,1, + 18,1,4,128,12,1,4,1,2,128,16,1,2,1,6,1, + 4,3,2,128,12,254,2,1,4,1,2,128,4,0,2,254, + 2,251,2,246,115,88,0,0,0,2,9,16,251,2,128,6, + 5,10,253,2,2,14,255,12,1,2,1,2,128,14,3,12, + 1,14,1,4,4,10,254,2,128,2,2,2,255,12,1,2, + 128,14,1,4,9,8,252,8,1,20,1,4,128,2,2,2, + 255,12,1,2,128,14,1,4,4,6,254,4,3,2,128,2, + 255,2,255,10,1,4,1,2,128,4,0,2,255,2,251,2, + 246,115,22,1,0,0,5,14,9,13,9,20,9,43,33,37, + 33,42,9,43,9,43,9,43,0,0,5,14,5,14,5,14, + 12,16,12,21,25,28,25,36,12,36,9,44,22,25,22,33, + 22,48,38,42,38,47,22,48,13,19,38,44,13,16,13,24, + 25,29,25,34,13,35,9,14,0,0,14,17,14,25,14,40, + 30,34,30,39,14,40,5,11,30,36,5,8,5,16,17,21, + 17,26,5,27,8,15,16,22,24,36,38,42,8,43,47,51, + 8,51,5,17,9,17,33,37,33,44,13,19,13,30,13,30, + 0,0,9,17,16,30,9,17,9,17,9,17,9,17,13,17, + 13,17,0,0,8,15,16,22,24,37,39,43,8,44,48,52, + 8,52,5,17,9,17,34,40,34,49,13,19,13,31,20,27, + 28,34,36,46,20,47,13,66,38,42,38,47,38,63,59,62, + 38,63,64,65,38,66,17,23,17,35,0,0,0,0,9,17, + 16,30,9,17,9,17,9,17,9,17,13,17,13,17,0,0, + 8,15,16,22,24,34,36,40,8,41,45,49,8,49,5,17, + 9,17,31,35,13,19,13,28,12,18,5,18,0,0,9,17, + 16,30,9,17,9,17,9,17,9,17,13,17,12,18,5,18, + 0,0,12,18,5,18,9,17,9,17,9,17,115,59,0,0, + 0,129,7,9,0,137,24,33,7,184,4,61,0,189,7,65, + 6,7,193,16,18,65,35,0,193,35,7,65,44,7,193,54, + 3,65,59,0,193,59,7,66,5,7,194,8,1,66,5,7, + 194,9,1,65,44,7,194,10,1,65,6,7,114,184,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,11,0, + 0,0,3,0,0,0,115,248,0,0,0,124,0,106,0,100, + 0,117,1,114,29,116,1,124,0,106,0,100,1,131,2,115, + 29,116,2,124,0,106,0,131,1,155,0,100,2,157,2,125, + 1,116,3,160,4,124,1,116,5,161,2,1,0,116,6,124, + 0,131,1,83,0,116,7,124,0,131,1,125,2,100,3,124, + 0,95,8,9,0,124,2,116,9,106,10,124,0,106,11,60, + 0,9,0,124,0,106,0,100,0,117,0,114,62,124,0,106, + 12,100,0,117,0,114,61,116,13,100,4,124,0,106,11,100, + 5,141,2,130,1,110,6,124,0,106,0,160,14,124,2,161, + 1,1,0,110,22,35,0,1,0,1,0,1,0,9,0,116, + 9,106,10,124,0,106,11,61,0,130,0,35,0,4,0,116, + 15,121,123,1,0,1,0,1,0,89,0,130,0,37,0,37, + 0,116,9,106,10,160,16,124,0,106,11,161,1,125,2,124, + 2,116,9,106,10,124,0,106,11,60,0,116,17,100,6,124, + 0,106,11,124,0,106,0,131,3,1,0,100,7,124,0,95, + 8,124,2,83,0,35,0,100,7,124,0,95,8,119,0,37, + 0,119,0,41,8,78,114,175,0,0,0,114,180,0,0,0, + 84,114,179,0,0,0,114,19,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,130,0,0,0,114,10,0,0,0,114,6,0,0, + 0,114,109,0,0,0,114,110,0,0,0,114,181,0,0,0, + 114,184,0,0,0,114,177,0,0,0,90,13,95,105,110,105, + 116,105,97,108,105,122,105,110,103,114,18,0,0,0,114,113, + 0,0,0,114,20,0,0,0,114,137,0,0,0,114,94,0, + 0,0,114,175,0,0,0,114,76,0,0,0,114,183,0,0, + 0,114,90,0,0,0,41,3,114,117,0,0,0,114,116,0, + 0,0,114,118,0,0,0,115,3,0,0,0,32,32,32,114, + 5,0,0,0,218,14,95,108,111,97,100,95,117,110,108,111, + 99,107,101,100,152,2,0,0,115,66,0,0,0,10,2,12, + 2,16,1,12,2,8,1,8,2,6,5,2,1,12,1,2, + 1,10,1,10,1,14,1,2,255,12,4,4,128,6,1,2, + 1,10,1,2,3,2,128,12,254,2,1,2,1,4,128,14, + 5,12,1,16,1,6,2,4,2,2,128,10,254,2,245,115, + 76,0,0,0,8,2,2,6,10,252,2,4,8,253,6,1, + 2,255,12,2,8,1,8,2,6,5,2,24,12,234,2,13, + 8,245,2,5,8,252,18,1,12,3,4,128,6,6,2,255, + 10,254,2,3,2,128,2,255,2,255,10,1,2,1,4,128, + 14,5,12,1,16,1,6,2,4,2,2,128,10,254,2,246, + 115,248,0,0,0,8,12,8,19,27,31,8,31,5,51,16, + 23,24,28,24,35,37,50,16,51,9,51,23,35,36,40,36, + 47,23,48,20,52,20,52,20,52,13,16,13,22,13,47,28, + 31,33,46,13,47,13,47,20,45,46,50,20,51,13,51,14, + 30,31,35,14,36,5,11,26,30,5,9,5,23,5,35,34, + 40,9,12,9,20,21,25,21,30,9,31,9,18,16,20,16, + 27,31,35,16,35,13,48,20,24,20,51,55,59,20,59,17, + 72,27,38,39,55,62,66,62,71,27,72,27,72,21,72,17, + 72,17,21,17,28,17,48,41,47,17,48,17,48,0,0,0, + 0,9,18,9,18,9,18,13,21,21,24,21,32,33,37,33, + 42,21,43,13,18,0,0,13,21,20,28,13,21,13,21,13, + 21,13,21,17,21,13,18,0,0,0,0,18,21,18,29,18, + 44,34,38,34,43,18,44,9,15,34,40,9,12,9,20,21, + 25,21,30,9,31,9,25,26,46,48,52,48,57,59,63,59, + 70,9,71,9,71,30,35,9,13,9,27,12,18,5,18,0, + 0,30,35,9,13,9,27,9,35,9,35,13,21,115,64,0, + 0,0,165,6,65,53,0,172,24,65,5,0,193,4,1,65, + 53,0,193,5,4,65,26,7,193,10,5,65,16,6,193,15, + 1,65,26,7,193,16,7,65,25,13,193,23,3,65,26,7, + 193,26,22,65,53,0,193,53,5,65,58,7,193,59,1,65, + 25,13,114,185,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,9,0,0,0,3,0,0,0,115,58,0,0, + 0,116,0,124,0,106,1,131,1,53,0,1,0,116,2,124, + 0,131,1,2,0,100,1,4,0,4,0,131,3,1,0,83, + 0,35,0,49,0,115,21,119,4,37,0,1,0,1,0,1, + 0,89,0,1,0,1,0,100,1,83,0,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,61,0,0,0,114,20,0,0,0,114,185,0,0,0, + 169,1,114,117,0,0,0,115,1,0,0,0,32,114,5,0, + 0,0,114,115,0,0,0,197,2,0,0,115,10,0,0,0, + 12,9,6,1,22,255,2,128,16,0,115,8,0,0,0,8, + 9,32,1,2,128,16,0,115,58,0,0,0,10,28,29,33, + 29,38,10,39,5,36,5,36,16,30,31,35,16,36,5,36, + 5,36,5,36,5,36,5,36,5,36,5,36,5,36,5,36, + 5,36,5,36,0,0,5,36,5,36,5,36,5,36,5,36, + 5,36,5,36,5,36,115,12,0,0,0,133,4,16,3,144, + 4,20,11,149,3,20,11,114,115,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0, + 0,115,140,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,90,4,101,5,100,3,100,4,132,0,131,1, + 90,6,101,7,100,20,100,6,100,7,132,1,131,1,90,8, + 101,7,100,21,100,8,100,9,132,1,131,1,90,9,101,5, + 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, + 132,0,131,1,90,11,101,7,101,12,100,14,100,15,132,0, + 131,1,131,1,90,13,101,7,101,12,100,16,100,17,132,0, + 131,1,131,1,90,14,101,7,101,12,100,18,100,19,132,0, + 131,1,131,1,90,15,101,7,101,16,131,1,90,17,100,5, + 83,0,41,22,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,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,3,0,0,0,115,34,0,0,0,116,0,160,1,100, + 1,116,2,161,2,1,0,100,2,124,0,106,3,155,2,100, + 3,116,4,106,5,155,0,100,4,157,5,83,0,41,6,250, + 115,82,101,116,117,114,110,32,114,101,112,114,32,102,111,114, + 32,116,104,101,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,32,32,32,32,84,104,101,32,109,101,116,104,111,100, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, + 32,84,104,101,32,105,109,112,111,114,116,32,109,97,99,104, + 105,110,101,114,121,32,100,111,101,115,32,116,104,101,32,106, + 111,98,32,105,116,115,101,108,102,46,10,10,32,32,32,32, + 32,32,32,32,122,81,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,109,111,100,117,108,101,95,114,101,112, + 114,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,122,8,60,109,111,100,117,108,101, + 32,122,2,32,40,122,2,41,62,78,41,6,114,109,0,0, + 0,114,110,0,0,0,114,111,0,0,0,114,8,0,0,0, + 114,187,0,0,0,114,163,0,0,0,169,1,114,118,0,0, + 0,115,1,0,0,0,32,114,5,0,0,0,114,122,0,0, + 0,223,2,0,0,115,8,0,0,0,6,7,2,1,4,255, + 22,2,115,6,0,0,0,2,7,10,1,22,1,115,34,0, + 0,0,9,18,9,80,24,59,61,79,9,80,9,80,16,75, + 17,23,17,32,16,75,16,75,48,63,48,71,16,75,16,75, + 16,75,9,75,114,17,0,0,0,122,27,66,117,105,108,116, + 105,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108, + 101,95,114,101,112,114,78,99,4,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,3,0,0,0,115,42,0,0, + 0,124,2,100,0,117,1,114,6,100,0,83,0,116,0,160, + 1,124,1,161,1,114,19,116,2,124,1,124,0,124,0,106, + 3,100,1,141,3,83,0,100,0,83,0,169,2,78,114,162, + 0,0,0,41,4,114,70,0,0,0,90,10,105,115,95,98, + 117,105,108,116,105,110,114,112,0,0,0,114,163,0,0,0, + 169,4,218,3,99,108,115,114,96,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,5,0,0,0,218,9,102,105,110,100,95,115, + 112,101,99,234,2,0,0,115,10,0,0,0,8,2,4,1, + 10,1,16,1,4,2,115,12,0,0,0,6,2,6,1,8, + 1,2,3,16,254,4,2,115,42,0,0,0,12,16,24,28, + 12,28,9,24,20,24,20,24,12,16,12,37,28,36,12,37, + 9,24,20,36,37,45,47,50,59,62,59,70,20,71,20,71, + 13,71,20,24,20,24,114,17,0,0,0,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,99,3,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,3,0,0,0,115,42,0,0,0, + 116,0,160,1,100,1,116,2,161,2,1,0,124,0,160,3, + 124,1,124,2,161,2,125,3,124,3,100,2,117,1,114,19, + 124,3,106,4,83,0,100,2,83,0,41,3,122,175,70,105, + 110,100,32,116,104,101,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,73,102,32,39,112,97,116,104,39,32,105,115,32,101,118, + 101,114,32,115,112,101,99,105,102,105,101,100,32,116,104,101, + 110,32,116,104,101,32,115,101,97,114,99,104,32,105,115,32, + 99,111,110,115,105,100,101,114,101,100,32,97,32,102,97,105, + 108,117,114,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,102, + 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, + 97,100,46,10,10,32,32,32,32,32,32,32,32,122,106,66, + 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,102, + 105,110,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,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,78,41,5,114,109,0,0, + 0,114,110,0,0,0,114,111,0,0,0,114,195,0,0,0, + 114,130,0,0,0,41,4,114,192,0,0,0,114,96,0,0, + 0,114,193,0,0,0,114,117,0,0,0,115,4,0,0,0, + 32,32,32,32,114,5,0,0,0,218,11,102,105,110,100,95, + 109,111,100,117,108,101,243,2,0,0,115,10,0,0,0,6, + 9,2,2,4,254,12,3,18,1,115,12,0,0,0,2,9, + 2,2,2,255,6,1,12,1,18,1,115,42,0,0,0,9, + 18,9,43,24,84,24,42,9,43,9,43,16,19,16,45,30, + 38,40,44,16,45,9,13,31,35,43,47,31,47,16,57,16, + 20,16,27,9,57,53,57,9,57,114,17,0,0,0,122,27, + 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46, + 102,105,110,100,95,109,111,100,117,108,101,99,1,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, + 115,46,0,0,0,124,0,106,0,116,1,106,2,118,1,114, + 17,116,3,100,1,160,4,124,0,106,0,161,1,124,0,106, + 0,100,2,141,2,130,1,116,5,116,6,106,7,124,0,131, + 2,83,0,41,4,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, + 92,0,0,0,114,19,0,0,0,78,41,8,114,20,0,0, + 0,114,18,0,0,0,114,93,0,0,0,114,94,0,0,0, + 114,53,0,0,0,114,80,0,0,0,114,70,0,0,0,90, + 14,99,114,101,97,116,101,95,98,117,105,108,116,105,110,114, + 186,0,0,0,115,1,0,0,0,32,114,5,0,0,0,114, + 174,0,0,0,2,3,0,0,115,10,0,0,0,12,3,12, + 1,4,1,6,255,12,2,115,10,0,0,0,10,3,2,2, + 12,255,10,1,12,1,115,46,0,0,0,12,16,12,21,29, + 32,29,53,12,53,9,46,19,30,31,62,31,80,70,74,70, + 79,31,80,36,40,36,45,19,46,19,46,13,46,16,41,42, + 46,42,61,63,67,16,68,9,68,114,17,0,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,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0, + 0,0,115,16,0,0,0,116,0,116,1,106,2,124,0,131, + 2,1,0,100,1,83,0,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,80,0,0,0,114,70,0,0,0,90,12, + 101,120,101,99,95,98,117,105,108,116,105,110,114,189,0,0, + 0,115,1,0,0,0,32,114,5,0,0,0,114,175,0,0, + 0,10,3,0,0,243,2,0,0,0,16,3,114,197,0,0, + 0,115,16,0,0,0,9,34,35,39,35,52,54,60,9,61, + 9,61,9,61,9,61,114,17,0,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,99,2,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,243,4,0, + 0,0,100,1,83,0,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,24,0,0,0,169,2,114,192,0,0,0, + 114,96,0,0,0,115,2,0,0,0,32,32,114,5,0,0, + 0,218,8,103,101,116,95,99,111,100,101,15,3,0,0,243, + 2,0,0,0,4,4,114,201,0,0,0,115,4,0,0,0, + 16,20,16,20,114,17,0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,3,0,0,0,114,185,0,0,0,41,2,122, + 1,0,0,0,3,0,0,0,114,198,0,0,0,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,23,0,0,0,114, - 186,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, + 114,99,101,32,99,111,100,101,46,78,114,24,0,0,0,114, + 199,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, 218,10,103,101,116,95,115,111,117,114,99,101,21,3,0,0, - 114,188,0,0,0,114,17,0,0,0,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,99,2,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,114,185,0,0,0, - 41,3,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,78,114,23,0,0,0,114, - 186,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, - 114,128,0,0,0,27,3,0,0,114,188,0,0,0,114,17, - 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,169, - 2,78,78,114,0,0,0,0,41,18,114,8,0,0,0,114, - 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,151, - 0,0,0,218,12,115,116,97,116,105,99,109,101,116,104,111, - 100,114,114,0,0,0,218,11,99,108,97,115,115,109,101,116, - 104,111,100,114,183,0,0,0,114,184,0,0,0,114,162,0, - 0,0,114,163,0,0,0,114,95,0,0,0,114,187,0,0, - 0,114,189,0,0,0,114,128,0,0,0,114,111,0,0,0, - 114,170,0,0,0,114,23,0,0,0,114,17,0,0,0,114, - 5,0,0,0,114,175,0,0,0,212,2,0,0,115,46,0, - 0,0,8,0,4,2,4,7,2,2,10,1,2,10,12,1, - 2,8,12,1,2,14,10,1,2,7,10,1,2,4,2,1, - 12,1,2,4,2,1,12,1,2,4,2,1,12,1,12,4, - 114,17,0,0,0,114,175,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,115, - 144,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, - 101,7,100,22,100,6,100,7,132,1,131,1,90,8,101,7, - 100,23,100,8,100,9,132,1,131,1,90,9,101,5,100,10, - 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, - 131,1,90,11,101,7,100,14,100,15,132,0,131,1,90,12, - 101,7,101,13,100,16,100,17,132,0,131,1,131,1,90,14, - 101,7,101,13,100,18,100,19,132,0,131,1,131,1,90,15, - 101,7,101,13,100,20,100,21,132,0,131,1,131,1,90,16, - 100,5,83,0,41,24,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,90,6,102,114,111,122,101,110,99,1, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, - 0,0,0,115,28,0,0,0,116,0,160,1,100,1,116,2, - 161,2,1,0,100,2,160,3,124,0,106,4,116,5,106,6, - 161,2,83,0,41,4,114,176,0,0,0,122,80,70,114,111, - 122,101,110,73,109,112,111,114,116,101,114,46,109,111,100,117, - 108,101,95,114,101,112,114,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,114,166,0, - 0,0,78,41,7,114,101,0,0,0,114,102,0,0,0,114, - 103,0,0,0,114,51,0,0,0,114,8,0,0,0,114,193, - 0,0,0,114,151,0,0,0,41,1,218,1,109,115,1,0, - 0,0,32,114,5,0,0,0,114,114,0,0,0,47,3,0, - 0,115,8,0,0,0,6,7,2,1,4,255,16,2,114,17, - 0,0,0,122,26,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,78, - 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,3,0,0,0,115,30,0,0,0,116,0,160,1,124,1, - 161,1,114,13,116,2,124,1,124,0,124,0,106,3,100,1, - 141,3,83,0,100,0,83,0,114,178,0,0,0,41,4,114, - 65,0,0,0,114,98,0,0,0,114,104,0,0,0,114,151, - 0,0,0,114,179,0,0,0,115,4,0,0,0,32,32,32, - 32,114,5,0,0,0,114,183,0,0,0,58,3,0,0,115, - 6,0,0,0,10,2,16,1,4,2,114,17,0,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,99,3,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,30, - 0,0,0,116,0,160,1,100,1,116,2,161,2,1,0,116, - 3,160,4,124,1,161,1,114,13,124,0,83,0,100,2,83, - 0,41,3,122,93,70,105,110,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,102,105,110,100,95,115,112,101,99,40,41,32, - 105,110,115,116,101,97,100,46,10,10,32,32,32,32,32,32, - 32,32,122,105,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,102,105,110,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,102,105,110,100,95,115, - 112,101,99,40,41,32,105,110,115,116,101,97,100,78,41,5, - 114,101,0,0,0,114,102,0,0,0,114,103,0,0,0,114, - 65,0,0,0,114,98,0,0,0,41,3,114,180,0,0,0, - 114,90,0,0,0,114,181,0,0,0,115,3,0,0,0,32, - 32,32,114,5,0,0,0,114,184,0,0,0,65,3,0,0, - 115,8,0,0,0,6,7,2,2,4,254,18,3,114,17,0, - 0,0,122,26,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, - 0,0,0,114,185,0,0,0,41,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,23,0,0,0,114,174,0,0, - 0,115,1,0,0,0,32,114,5,0,0,0,114,162,0,0, - 0,77,3,0,0,115,2,0,0,0,4,0,114,17,0,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,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,64,0,0,0,124,0,106,0,106,1,125, - 1,116,2,160,3,124,1,161,1,115,18,116,4,100,1,160, - 5,124,1,161,1,124,1,100,2,141,2,130,1,116,6,116, - 2,106,7,124,1,131,2,125,2,116,8,124,2,124,0,106, - 9,131,2,1,0,100,0,83,0,114,97,0,0,0,41,10, - 114,113,0,0,0,114,20,0,0,0,114,65,0,0,0,114, - 98,0,0,0,114,88,0,0,0,114,51,0,0,0,114,75, - 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,13,0,0, - 0,41,3,114,110,0,0,0,114,20,0,0,0,218,4,99, - 111,100,101,115,3,0,0,0,32,32,32,114,5,0,0,0, - 114,163,0,0,0,81,3,0,0,115,14,0,0,0,8,2, - 10,1,10,1,2,1,6,255,12,2,16,1,114,17,0,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,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0, - 0,0,115,10,0,0,0,116,0,124,0,124,1,131,2,83, - 0,41,2,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,41,1,114,111,0,0,0,114,186,0,0, - 0,115,2,0,0,0,32,32,114,5,0,0,0,114,170,0, - 0,0,90,3,0,0,115,2,0,0,0,10,8,114,17,0, - 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,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,243,10,0,0,0,116,0,160,1,124,1,161,1, - 83,0,41,2,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,78,41,2,114,65,0,0,0,114,195,0,0,0, - 114,186,0,0,0,115,2,0,0,0,32,32,114,5,0,0, - 0,114,187,0,0,0,100,3,0,0,243,2,0,0,0,10, - 4,114,17,0,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,99, - 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 3,0,0,0,114,185,0,0,0,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,23,0,0,0,114,186,0,0,0,115,2, - 0,0,0,32,32,114,5,0,0,0,114,189,0,0,0,106, - 3,0,0,114,188,0,0,0,114,17,0,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,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,114,198,0, - 0,0,41,2,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,78,41,2,114,65,0,0,0,90,17,105,115, - 95,102,114,111,122,101,110,95,112,97,99,107,97,103,101,114, - 186,0,0,0,115,2,0,0,0,32,32,114,5,0,0,0, - 114,128,0,0,0,112,3,0,0,114,199,0,0,0,114,17, - 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,114,190, - 0,0,0,114,0,0,0,0,41,17,114,8,0,0,0,114, - 7,0,0,0,114,1,0,0,0,114,9,0,0,0,114,151, - 0,0,0,114,191,0,0,0,114,114,0,0,0,114,192,0, - 0,0,114,183,0,0,0,114,184,0,0,0,114,162,0,0, - 0,114,163,0,0,0,114,170,0,0,0,114,100,0,0,0, - 114,187,0,0,0,114,189,0,0,0,114,128,0,0,0,114, - 23,0,0,0,114,17,0,0,0,114,5,0,0,0,114,193, - 0,0,0,36,3,0,0,115,48,0,0,0,8,0,4,2, - 4,7,2,2,10,1,2,10,12,1,2,6,12,1,2,11, - 10,1,2,3,10,1,2,8,10,1,2,9,2,1,12,1, - 2,4,2,1,12,1,2,4,2,1,16,1,114,17,0,0, - 0,114,193,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,0,0,0,0,115,32,0,0,0, - 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,3, - 132,0,90,4,100,4,100,5,132,0,90,5,100,6,83,0, - 41,7,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,12,0,0,0,116,0,160,1,161,0,1,0,100,1, - 83,0,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,65,0,0,0,114,66,0,0,0,114,53,0,0,0, - 115,1,0,0,0,32,114,5,0,0,0,114,62,0,0,0, - 125,3,0,0,243,2,0,0,0,12,2,114,17,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,99,4, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, - 0,0,0,114,201,0,0,0,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,65,0,0,0, - 114,68,0,0,0,41,4,114,34,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,5,0,0,0,114,64, - 0,0,0,129,3,0,0,114,202,0,0,0,114,17,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,78,41, - 6,114,8,0,0,0,114,7,0,0,0,114,1,0,0,0, - 114,9,0,0,0,114,62,0,0,0,114,64,0,0,0,114, - 23,0,0,0,114,17,0,0,0,114,5,0,0,0,114,200, - 0,0,0,121,3,0,0,115,8,0,0,0,8,0,4,2, - 8,2,12,4,114,17,0,0,0,114,200,0,0,0,99,3, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3, - 0,0,0,115,64,0,0,0,124,1,160,0,100,1,124,2, - 100,2,24,0,161,2,125,3,116,1,124,3,131,1,124,2, - 107,0,114,18,116,2,100,3,131,1,130,1,124,3,100,4, - 25,0,125,4,124,0,114,30,100,5,160,3,124,4,124,0, - 161,2,83,0,124,4,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,114,141, - 0,0,0,114,43,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,26,0,0, - 0,250,5,123,125,46,123,125,78,41,4,218,6,114,115,112, - 108,105,116,218,3,108,101,110,114,88,0,0,0,114,51,0, - 0,0,41,5,114,20,0,0,0,218,7,112,97,99,107,97, - 103,101,218,5,108,101,118,101,108,90,4,98,105,116,115,90, - 4,98,97,115,101,115,5,0,0,0,32,32,32,32,32,114, - 5,0,0,0,218,13,95,114,101,115,111,108,118,101,95,110, - 97,109,101,134,3,0,0,115,10,0,0,0,16,2,12,1, - 8,1,8,1,20,1,114,17,0,0,0,114,211,0,0,0, - 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,3,0,0,0,115,60,0,0,0,116,0,124,0,131,1, - 155,0,100,1,157,2,125,3,116,1,160,2,124,3,116,3, - 161,2,1,0,124,0,160,4,124,1,124,2,161,2,125,4, - 124,4,100,0,117,0,114,25,100,0,83,0,116,5,124,1, - 124,4,131,2,83,0,41,2,78,122,53,46,102,105,110,100, - 95,115,112,101,99,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,102,105,110,100,95,109,111,100,117,108,101,40,41, - 41,6,114,6,0,0,0,114,101,0,0,0,114,102,0,0, - 0,114,169,0,0,0,114,184,0,0,0,114,104,0,0,0, - 41,5,218,6,102,105,110,100,101,114,114,20,0,0,0,114, - 181,0,0,0,114,108,0,0,0,114,122,0,0,0,115,5, - 0,0,0,32,32,32,32,32,114,5,0,0,0,218,17,95, - 102,105,110,100,95,115,112,101,99,95,108,101,103,97,99,121, - 143,3,0,0,115,12,0,0,0,14,1,12,2,12,1,8, - 1,4,1,10,1,114,17,0,0,0,114,213,0,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, - 3,0,0,0,115,30,1,0,0,116,0,106,1,125,3,124, - 3,100,1,117,0,114,11,116,2,100,2,131,1,130,1,124, - 3,115,19,116,3,160,4,100,3,116,5,161,2,1,0,124, - 0,116,0,106,6,118,0,125,4,124,3,68,0,93,112,125, - 5,116,7,131,0,53,0,1,0,9,0,124,5,106,8,125, - 6,110,27,35,0,4,0,116,9,121,142,1,0,1,0,1, - 0,116,10,124,5,124,0,124,1,131,3,125,7,124,7,100, - 1,117,0,114,61,89,0,100,1,4,0,4,0,131,3,1, - 0,113,26,89,0,110,7,37,0,124,6,124,0,124,1,124, - 2,131,3,125,7,100,1,4,0,4,0,131,3,1,0,110, - 11,35,0,49,0,115,81,119,4,37,0,1,0,1,0,1, - 0,89,0,1,0,1,0,124,7,100,1,117,1,114,138,124, - 4,115,134,124,0,116,0,106,6,118,0,114,134,116,0,106, - 6,124,0,25,0,125,8,9,0,124,8,106,11,125,9,110, - 14,35,0,4,0,116,9,121,141,1,0,1,0,1,0,124, - 7,6,0,89,0,2,0,1,0,83,0,37,0,124,9,100, - 1,117,0,114,130,124,7,2,0,1,0,83,0,124,9,2, - 0,1,0,83,0,124,7,2,0,1,0,83,0,113,26,100, - 1,83,0,119,0,119,0,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,12,114,18,0,0,0,218,9,109,101,116,97,95,112,97, - 116,104,114,88,0,0,0,114,101,0,0,0,114,102,0,0, - 0,114,169,0,0,0,114,105,0,0,0,114,200,0,0,0, - 114,183,0,0,0,114,2,0,0,0,114,213,0,0,0,114, - 113,0,0,0,41,10,114,20,0,0,0,114,181,0,0,0, - 114,182,0,0,0,114,214,0,0,0,90,9,105,115,95,114, - 101,108,111,97,100,114,212,0,0,0,114,183,0,0,0,114, - 109,0,0,0,114,110,0,0,0,114,113,0,0,0,115,10, - 0,0,0,32,32,32,32,32,32,32,32,32,32,114,5,0, - 0,0,218,10,95,102,105,110,100,95,115,112,101,99,153,3, - 0,0,115,78,0,0,0,6,2,8,1,8,2,4,3,12, - 1,10,5,8,1,8,1,2,1,8,1,2,128,12,1,12, - 1,8,1,2,1,12,250,4,5,2,128,12,3,20,248,2, - 128,12,0,8,9,14,2,10,1,2,1,8,1,2,128,12, - 1,12,4,2,128,8,2,8,1,8,2,8,2,2,239,4, - 19,2,243,2,244,115,63,0,0,0,159,1,65,12,5,161, - 3,37,4,164,1,65,12,5,165,17,63,11,182,1,65,12, - 5,189,9,65,12,5,193,12,4,65,16,13,193,17,3,65, - 16,13,193,40,3,65,44,2,193,44,9,65,57,9,194,13, - 1,65,57,9,194,14,1,63,11,114,215,0,0,0,99,3, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3, - 0,0,0,115,110,0,0,0,116,0,124,0,116,1,131,2, - 115,14,116,2,100,1,160,3,116,4,124,0,131,1,161,1, - 131,1,130,1,124,2,100,2,107,0,114,22,116,5,100,3, - 131,1,130,1,124,2,100,2,107,4,114,41,116,0,124,1, - 116,1,131,2,115,35,116,2,100,4,131,1,130,1,124,1, - 115,41,116,6,100,5,131,1,130,1,124,0,115,53,124,2, - 100,2,107,2,114,51,116,5,100,6,131,1,130,1,100,7, - 83,0,100,7,83,0,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,31,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,123,125,114,26,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,7,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,114,51,0,0,0, - 114,3,0,0,0,218,10,86,97,108,117,101,69,114,114,111, - 114,114,88,0,0,0,169,3,114,20,0,0,0,114,209,0, - 0,0,114,210,0,0,0,115,3,0,0,0,32,32,32,114, - 5,0,0,0,218,13,95,115,97,110,105,116,121,95,99,104, - 101,99,107,200,3,0,0,115,24,0,0,0,10,2,18,1, - 8,1,8,1,8,1,10,1,8,1,4,1,8,1,12,2, - 8,1,8,255,114,17,0,0,0,114,221,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,8,0,0,0,3,0,0,0,115,20,1,0,0, - 100,0,125,2,124,0,160,0,100,1,161,1,100,2,25,0, - 125,3,124,3,114,64,124,3,116,1,106,2,118,1,114,21, - 116,3,124,1,124,3,131,2,1,0,124,0,116,1,106,2, - 118,0,114,31,116,1,106,2,124,0,25,0,83,0,116,1, - 106,2,124,3,25,0,125,4,9,0,124,4,106,4,125,2, - 110,23,35,0,4,0,116,5,121,137,1,0,1,0,1,0, - 116,6,100,3,23,0,160,7,124,0,124,3,161,2,125,5, - 116,8,124,5,124,0,100,4,141,2,100,0,130,2,37,0, - 116,9,124,0,124,2,131,2,125,6,124,6,100,0,117,0, - 114,82,116,8,116,6,160,7,124,0,161,1,124,0,100,4, - 141,2,130,1,116,10,124,6,131,1,125,7,124,3,114,134, - 116,1,106,2,124,3,25,0,125,4,124,0,160,0,100,1, - 161,1,100,5,25,0,125,8,9,0,116,11,124,4,124,8, - 124,7,131,3,1,0,124,7,83,0,35,0,4,0,116,5, - 121,136,1,0,1,0,1,0,100,6,124,3,155,2,100,7, - 124,8,155,2,157,4,125,5,116,12,160,13,124,5,116,14, - 161,2,1,0,89,0,124,7,83,0,37,0,124,7,83,0, - 119,0,119,0,41,8,78,114,141,0,0,0,114,26,0,0, - 0,122,23,59,32,123,33,114,125,32,105,115,32,110,111,116, - 32,97,32,112,97,99,107,97,103,101,114,19,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,15,114,142,0,0,0,114,18,0,0, - 0,114,105,0,0,0,114,75,0,0,0,114,154,0,0,0, - 114,2,0,0,0,218,8,95,69,82,82,95,77,83,71,114, - 51,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,215,0,0,0,114,173, - 0,0,0,114,11,0,0,0,114,101,0,0,0,114,102,0, - 0,0,114,169,0,0,0,41,9,114,20,0,0,0,218,7, - 105,109,112,111,114,116,95,114,181,0,0,0,114,143,0,0, - 0,90,13,112,97,114,101,110,116,95,109,111,100,117,108,101, - 114,108,0,0,0,114,109,0,0,0,114,110,0,0,0,90, - 5,99,104,105,108,100,115,9,0,0,0,32,32,32,32,32, - 32,32,32,32,114,5,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,219,3,0,0,115,68,0,0,0,4,1,14,1,4, - 1,10,1,10,1,10,2,10,1,10,1,2,1,8,1,2, - 128,12,1,16,1,14,1,2,128,10,1,8,1,18,1,8, - 2,4,1,10,2,14,1,2,1,12,1,4,4,2,128,12, - 253,16,1,14,1,4,1,2,128,4,0,2,253,2,242,115, - 31,0,0,0,165,3,41,0,169,22,63,7,193,37,6,65, - 45,0,193,45,21,66,5,7,194,8,1,66,5,7,194,9, - 1,63,7,114,226,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,9,0,0,0,3,0,0,0,115,132,0, - 0,0,116,0,124,0,131,1,53,0,1,0,116,1,106,2, - 160,3,124,0,116,4,161,2,125,2,124,2,116,4,117,0, - 114,27,116,5,124,0,124,1,131,2,2,0,100,1,4,0, - 4,0,131,3,1,0,83,0,9,0,100,1,4,0,4,0, - 131,3,1,0,110,11,35,0,49,0,115,39,119,4,37,0, - 1,0,1,0,1,0,89,0,1,0,1,0,124,2,100,1, - 117,0,114,60,100,2,160,6,124,0,161,1,125,3,116,7, - 124,3,124,0,100,3,141,2,130,1,116,8,124,0,131,1, - 1,0,124,2,83,0,41,4,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,78,122,40,105,109,112,111,114,116,32,111,102,32, - 123,125,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,19, - 0,0,0,41,9,114,58,0,0,0,114,18,0,0,0,114, - 105,0,0,0,114,39,0,0,0,218,14,95,78,69,69,68, - 83,95,76,79,65,68,73,78,71,114,226,0,0,0,114,51, - 0,0,0,114,224,0,0,0,114,73,0,0,0,41,4,114, - 20,0,0,0,114,225,0,0,0,114,110,0,0,0,114,83, - 0,0,0,115,4,0,0,0,32,32,32,32,114,5,0,0, - 0,218,14,95,102,105,110,100,95,97,110,100,95,108,111,97, - 100,254,3,0,0,115,32,0,0,0,10,2,14,1,8,1, - 8,1,14,253,2,2,20,254,2,128,12,0,8,5,2,1, - 6,1,2,255,12,2,8,2,4,1,115,12,0,0,0,132, - 16,34,3,162,4,38,11,167,3,38,11,114,228,0,0,0, - 114,26,0,0,0,99,3,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,3,0,0,0,115,42,0,0,0,116, - 0,124,0,124,1,124,2,131,3,1,0,124,2,100,1,107, - 4,114,16,116,1,124,0,124,1,124,2,131,3,125,0,116, - 2,124,0,116,3,131,2,83,0,41,3,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,26,0,0,0,78,41,4,114,221,0,0,0,114, - 211,0,0,0,114,228,0,0,0,218,11,95,103,99,100,95, - 105,109,112,111,114,116,114,220,0,0,0,115,3,0,0,0, - 32,32,32,114,5,0,0,0,114,229,0,0,0,14,4,0, - 0,115,8,0,0,0,12,9,8,1,12,1,10,1,114,17, - 0,0,0,114,229,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,115,216,0,0,0,124, - 1,68,0,93,102,125,4,116,0,124,4,116,1,131,2,115, - 32,124,3,114,17,124,0,106,2,100,1,23,0,125,5,110, - 2,100,2,125,5,116,3,100,3,124,5,155,0,100,4,116, - 4,124,4,131,1,106,2,155,0,157,4,131,1,130,1,124, - 4,100,5,107,2,114,53,124,3,115,52,116,5,124,0,100, - 6,131,2,114,52,116,6,124,0,124,0,106,7,124,2,100, - 7,100,8,141,4,1,0,113,2,116,5,124,0,124,4,131, - 2,115,104,100,9,160,8,124,0,106,2,124,4,161,2,125, - 6,9,0,116,9,124,2,124,6,131,2,1,0,113,2,35, - 0,4,0,116,10,121,107,1,0,125,7,1,0,124,7,106, - 11,124,6,107,2,114,98,116,12,106,13,160,14,124,6,116, - 15,161,2,100,10,117,1,114,98,89,0,100,10,125,7,126, - 7,113,2,130,0,100,10,125,7,126,7,119,1,37,0,113, - 2,124,0,83,0,119,0,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,230,0, - 0,0,114,206,0,0,0,78,41,16,114,216,0,0,0,114, - 217,0,0,0,114,8,0,0,0,114,218,0,0,0,114,3, - 0,0,0,114,10,0,0,0,218,16,95,104,97,110,100,108, - 101,95,102,114,111,109,108,105,115,116,114,233,0,0,0,114, - 51,0,0,0,114,75,0,0,0,114,224,0,0,0,114,20, - 0,0,0,114,18,0,0,0,114,105,0,0,0,114,39,0, - 0,0,114,227,0,0,0,41,8,114,110,0,0,0,218,8, - 102,114,111,109,108,105,115,116,114,225,0,0,0,114,231,0, - 0,0,218,1,120,90,5,119,104,101,114,101,90,9,102,114, - 111,109,95,110,97,109,101,90,3,101,120,99,115,8,0,0, - 0,32,32,32,32,32,32,32,32,114,5,0,0,0,114,234, - 0,0,0,29,4,0,0,115,58,0,0,0,8,10,10,1, - 4,1,12,1,4,2,10,1,8,1,8,255,8,2,14,1, - 10,1,2,1,6,255,2,128,10,2,14,1,2,1,12,1, - 2,128,12,1,10,4,16,1,2,255,10,2,2,1,10,128, - 2,245,4,12,2,248,115,36,0,0,0,193,2,5,65,8, - 2,193,8,7,65,39,9,193,15,14,65,35,9,193,34,1, - 65,35,9,193,35,4,65,39,9,193,43,1,65,39,9,114, - 234,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,7,0,0,0,3,0,0,0,115,146,0,0,0,124,0, - 160,0,100,1,161,1,125,1,124,0,160,0,100,2,161,1, - 125,2,124,1,100,3,117,1,114,41,124,2,100,3,117,1, - 114,39,124,1,124,2,106,1,107,3,114,39,116,2,160,3, - 100,4,124,1,155,2,100,5,124,2,106,1,155,2,100,6, - 157,5,116,4,100,7,100,8,166,3,1,0,124,1,83,0, - 124,2,100,3,117,1,114,48,124,2,106,1,83,0,116,2, - 160,3,100,9,116,4,100,7,100,8,166,3,1,0,124,0, - 100,10,25,0,125,1,100,11,124,0,118,1,114,71,124,1, - 160,5,100,12,161,1,100,13,25,0,125,1,124,1,83,0, - 41,14,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,158,0,0,0, - 114,113,0,0,0,78,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,250,1, - 41,233,3,0,0,0,41,1,90,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, - 8,0,0,0,114,154,0,0,0,114,141,0,0,0,114,26, - 0,0,0,41,6,114,39,0,0,0,114,143,0,0,0,114, - 101,0,0,0,114,102,0,0,0,114,169,0,0,0,114,142, - 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,209, - 0,0,0,114,109,0,0,0,115,3,0,0,0,32,32,32, - 114,5,0,0,0,218,17,95,99,97,108,99,95,95,95,112, - 97,99,107,97,103,101,95,95,66,4,0,0,115,42,0,0, - 0,10,7,10,1,8,1,18,1,6,1,2,1,4,255,4, - 1,6,255,4,2,6,254,4,3,8,1,6,1,6,2,4, - 2,6,254,8,3,8,1,14,1,4,1,114,17,0,0,0, - 114,240,0,0,0,114,23,0,0,0,99,5,0,0,0,0, + 114,201,0,0,0,114,201,0,0,0,115,4,0,0,0,16, + 20,16,20,114,17,0,0,0,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,99,2,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,114,198,0,0,0,41,3, + 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,78,114,24,0,0,0,114,199,0, + 0,0,115,2,0,0,0,32,32,114,5,0,0,0,114,136, + 0,0,0,27,3,0,0,114,201,0,0,0,114,201,0,0, + 0,115,4,0,0,0,16,21,16,21,114,17,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,169,2,78,78,114, + 0,0,0,0,41,18,114,8,0,0,0,114,7,0,0,0, + 114,1,0,0,0,114,9,0,0,0,114,163,0,0,0,218, + 12,115,116,97,116,105,99,109,101,116,104,111,100,114,122,0, + 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114, + 195,0,0,0,114,196,0,0,0,114,174,0,0,0,114,175, + 0,0,0,114,102,0,0,0,114,200,0,0,0,114,202,0, + 0,0,114,136,0,0,0,114,119,0,0,0,114,182,0,0, + 0,114,24,0,0,0,114,17,0,0,0,114,5,0,0,0, + 114,187,0,0,0,212,2,0,0,115,46,0,0,0,8,0, + 4,2,4,7,2,2,10,1,2,10,12,1,2,8,12,1, + 2,14,10,1,2,7,10,1,2,4,2,1,12,1,2,4, + 2,1,12,1,2,4,2,1,12,1,12,4,115,92,0,0, + 0,0,129,0,129,0,129,0,129,0,129,8,167,0,127,0, + 127,0,127,0,127,0,127,2,96,0,129,0,129,0,129,0, + 129,0,129,2,160,0,127,0,127,0,127,0,127,0,127,4, + 98,2,2,10,9,2,2,2,1,10,6,2,2,2,1,10, + 12,2,2,10,6,2,2,10,3,2,2,2,1,12,3,2, + 2,2,1,12,3,2,2,2,1,12,3,12,2,115,140,0, + 0,0,1,1,1,1,1,1,1,1,5,8,1,1,15,25, + 5,12,6,18,5,75,5,75,5,75,5,75,5,75,6,17, + 39,43,5,24,5,24,5,24,5,24,5,24,6,17,41,45, + 5,57,5,57,5,57,5,57,5,57,6,18,5,68,5,68, + 5,68,5,68,5,68,6,18,5,61,5,61,5,61,5,61, + 5,61,6,17,6,23,5,20,5,20,5,20,5,20,5,20, + 5,20,6,17,6,23,5,20,5,20,5,20,5,20,5,20, + 5,20,6,17,6,23,5,21,5,21,5,21,5,21,5,21, + 5,21,19,30,31,48,19,49,5,16,5,16,5,16,114,17, + 0,0,0,114,187,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,0,0,0,0,115,144,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 90,4,101,5,100,3,100,4,132,0,131,1,90,6,101,7, + 100,22,100,6,100,7,132,1,131,1,90,8,101,7,100,23, + 100,8,100,9,132,1,131,1,90,9,101,5,100,10,100,11, + 132,0,131,1,90,10,101,5,100,12,100,13,132,0,131,1, + 90,11,101,7,100,14,100,15,132,0,131,1,90,12,101,7, + 101,13,100,16,100,17,132,0,131,1,131,1,90,14,101,7, + 101,13,100,18,100,19,132,0,131,1,131,1,90,15,101,7, + 101,13,100,20,100,21,132,0,131,1,131,1,90,16,100,5, + 83,0,41,24,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,90,6,102,114,111,122,101,110,99,1,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, + 0,115,28,0,0,0,116,0,160,1,100,1,116,2,161,2, + 1,0,100,2,160,3,124,0,106,4,116,5,106,6,161,2, + 83,0,41,4,114,188,0,0,0,122,80,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101, + 95,114,101,112,114,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,114,178,0,0,0, + 78,41,7,114,109,0,0,0,114,110,0,0,0,114,111,0, + 0,0,114,53,0,0,0,114,8,0,0,0,114,206,0,0, + 0,114,163,0,0,0,41,1,218,1,109,115,1,0,0,0, + 32,114,5,0,0,0,114,122,0,0,0,47,3,0,0,115, + 8,0,0,0,6,7,2,1,4,255,16,2,115,6,0,0, + 0,2,7,10,1,16,1,115,28,0,0,0,9,18,9,80, + 24,59,61,79,9,80,9,80,16,36,16,79,44,45,44,54, + 56,70,56,78,16,79,9,79,114,17,0,0,0,122,26,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,46,109,111, + 100,117,108,101,95,114,101,112,114,78,99,4,0,0,0,0, 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, - 174,0,0,0,124,4,100,1,107,2,114,9,116,0,124,0, - 131,1,125,5,110,18,124,1,100,2,117,1,114,15,124,1, - 110,1,105,0,125,6,116,1,124,6,131,1,125,7,116,0, - 124,0,124,7,124,4,131,3,125,5,124,3,115,74,124,4, - 100,1,107,2,114,42,116,0,124,0,160,2,100,3,161,1, - 100,1,25,0,131,1,83,0,124,0,115,46,124,5,83,0, - 116,3,124,0,131,1,116,3,124,0,160,2,100,3,161,1, - 100,1,25,0,131,1,24,0,125,8,116,4,106,5,124,5, - 106,6,100,2,116,3,124,5,106,6,131,1,124,8,24,0, - 133,2,25,0,25,0,83,0,116,7,124,5,100,4,131,2, - 114,85,116,8,124,5,124,3,116,0,131,3,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,26,0,0,0,78,114,141,0,0,0,114,154,0,0,0, - 41,9,114,229,0,0,0,114,240,0,0,0,218,9,112,97, - 114,116,105,116,105,111,110,114,208,0,0,0,114,18,0,0, - 0,114,105,0,0,0,114,8,0,0,0,114,10,0,0,0, - 114,234,0,0,0,41,9,114,20,0,0,0,114,239,0,0, - 0,218,6,108,111,99,97,108,115,114,235,0,0,0,114,210, - 0,0,0,114,110,0,0,0,90,8,103,108,111,98,97,108, - 115,95,114,209,0,0,0,90,7,99,117,116,95,111,102,102, - 115,9,0,0,0,32,32,32,32,32,32,32,32,32,114,5, - 0,0,0,218,10,95,95,105,109,112,111,114,116,95,95,93, - 4,0,0,115,30,0,0,0,8,11,10,1,16,2,8,1, - 12,1,4,1,8,3,18,1,4,1,4,1,26,4,30,3, - 10,1,12,1,4,2,114,17,0,0,0,114,243,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,115,38,0,0,0,116,0,160,1,124,0, - 161,1,125,1,124,1,100,0,117,0,114,15,116,2,100,1, - 124,0,23,0,131,1,130,1,116,3,124,1,131,1,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,175,0,0,0,114,183,0,0,0,114,88,0,0,0,114, - 173,0,0,0,41,2,114,20,0,0,0,114,109,0,0,0, - 115,2,0,0,0,32,32,114,5,0,0,0,218,18,95,98, - 117,105,108,116,105,110,95,102,114,111,109,95,110,97,109,101, - 130,4,0,0,115,8,0,0,0,10,1,8,1,12,1,8, - 1,114,17,0,0,0,114,244,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, - 115,166,0,0,0,124,1,97,0,124,0,97,1,116,2,116, - 1,131,1,125,2,116,1,106,3,160,4,161,0,68,0,93, - 36,92,2,125,3,125,4,116,5,124,4,124,2,131,2,114, - 49,124,3,116,1,106,6,118,0,114,30,116,7,125,5,110, - 9,116,0,160,8,124,3,161,1,114,38,116,9,125,5,110, - 1,113,13,116,10,124,4,124,5,131,2,125,6,116,11,124, - 6,124,4,131,2,1,0,113,13,116,1,106,3,116,12,25, - 0,125,7,100,1,68,0,93,23,125,8,124,8,116,1,106, - 3,118,1,114,69,116,13,124,8,131,1,125,9,110,5,116, - 1,106,3,124,8,25,0,125,9,116,14,124,7,124,8,124, - 9,131,3,1,0,113,57,100,2,83,0,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,27,0,0,0, - 114,101,0,0,0,114,72,0,0,0,78,41,15,114,65,0, - 0,0,114,18,0,0,0,114,3,0,0,0,114,105,0,0, - 0,218,5,105,116,101,109,115,114,216,0,0,0,114,87,0, - 0,0,114,175,0,0,0,114,98,0,0,0,114,193,0,0, - 0,114,155,0,0,0,114,161,0,0,0,114,8,0,0,0, - 114,244,0,0,0,114,11,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,90,11,109,111,100,117,108,101,95,116,121, - 112,101,114,20,0,0,0,114,110,0,0,0,114,122,0,0, - 0,114,109,0,0,0,90,11,115,101,108,102,95,109,111,100, - 117,108,101,90,12,98,117,105,108,116,105,110,95,110,97,109, - 101,90,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,5,0,0,0,218,6,95,115,101,116,117,112,137,4,0, - 0,115,40,0,0,0,4,9,4,1,8,3,18,1,10,1, - 10,1,6,1,10,1,6,1,2,2,10,1,10,1,2,128, - 10,3,8,1,10,1,10,1,10,2,14,1,4,251,114,17, - 0,0,0,114,248,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,115,38,0, - 0,0,116,0,124,0,124,1,131,2,1,0,116,1,106,2, - 160,3,116,4,161,1,1,0,116,1,106,2,160,3,116,5, - 161,1,1,0,100,1,83,0,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, - 248,0,0,0,114,18,0,0,0,114,214,0,0,0,114,132, - 0,0,0,114,175,0,0,0,114,193,0,0,0,41,2,114, - 246,0,0,0,114,247,0,0,0,115,2,0,0,0,32,32, - 114,5,0,0,0,218,8,95,105,110,115,116,97,108,108,172, - 4,0,0,115,6,0,0,0,10,2,12,2,16,1,114,17, - 0,0,0,114,249,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,3,0,0,0,115,32,0, - 0,0,100,1,100,2,108,0,125,0,124,0,97,1,124,0, - 160,2,116,3,106,4,116,5,25,0,161,1,1,0,100,2, - 83,0,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, - 26,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,139,0,0,0,114,249,0,0,0,114,18,0, - 0,0,114,105,0,0,0,114,8,0,0,0,41,1,114,250, - 0,0,0,115,1,0,0,0,32,114,5,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,180,4,0,0,115, - 6,0,0,0,8,3,4,1,20,1,114,17,0,0,0,114, - 251,0,0,0,114,190,0,0,0,114,0,0,0,0,114,25, - 0,0,0,41,4,78,78,114,23,0,0,0,114,26,0,0, - 0,41,54,114,9,0,0,0,114,6,0,0,0,114,27,0, - 0,0,114,101,0,0,0,114,72,0,0,0,114,139,0,0, - 0,114,16,0,0,0,114,21,0,0,0,114,67,0,0,0, - 114,38,0,0,0,114,48,0,0,0,114,22,0,0,0,114, - 24,0,0,0,114,56,0,0,0,114,58,0,0,0,114,61, - 0,0,0,114,73,0,0,0,114,75,0,0,0,114,84,0, - 0,0,114,95,0,0,0,114,100,0,0,0,114,111,0,0, - 0,114,124,0,0,0,114,125,0,0,0,114,104,0,0,0, - 114,155,0,0,0,114,161,0,0,0,114,165,0,0,0,114, - 119,0,0,0,114,106,0,0,0,114,172,0,0,0,114,173, - 0,0,0,114,107,0,0,0,114,175,0,0,0,114,193,0, - 0,0,114,200,0,0,0,114,211,0,0,0,114,213,0,0, - 0,114,215,0,0,0,114,221,0,0,0,90,15,95,69,82, - 82,95,77,83,71,95,80,82,69,70,73,88,114,223,0,0, - 0,114,226,0,0,0,218,6,111,98,106,101,99,116,114,227, - 0,0,0,114,228,0,0,0,114,229,0,0,0,114,234,0, - 0,0,114,240,0,0,0,114,243,0,0,0,114,244,0,0, - 0,114,248,0,0,0,114,249,0,0,0,114,251,0,0,0, - 114,23,0,0,0,114,17,0,0,0,114,5,0,0,0,218, - 8,60,109,111,100,117,108,101,62,1,0,0,0,115,104,0, - 0,0,4,0,8,22,4,9,4,1,4,1,4,3,8,3, - 8,8,4,8,4,2,16,3,14,4,14,77,14,21,8,16, - 8,37,8,17,14,11,8,8,8,11,8,12,8,19,14,26, - 16,101,10,26,14,45,8,72,8,17,8,17,8,30,8,36, - 8,45,14,15,14,80,14,85,8,13,8,9,10,10,8,47, - 4,16,8,1,8,2,6,32,8,3,10,16,14,15,8,37, - 10,27,8,37,8,7,8,35,12,8,114,17,0,0,0, + 30,0,0,0,116,0,160,1,124,1,161,1,114,13,116,2, + 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, + 83,0,114,190,0,0,0,41,4,114,70,0,0,0,114,106, + 0,0,0,114,112,0,0,0,114,163,0,0,0,114,191,0, + 0,0,115,4,0,0,0,32,32,32,32,114,5,0,0,0, + 114,195,0,0,0,58,3,0,0,115,6,0,0,0,10,2, + 16,1,4,2,115,8,0,0,0,8,2,2,3,16,254,4, + 2,115,30,0,0,0,12,16,12,36,27,35,12,36,9,24, + 20,36,37,45,47,50,59,62,59,70,20,71,20,71,13,71, + 20,24,20,24,114,17,0,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,99,3,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,3,0,0,0,115,30,0,0,0,116,0,160, + 1,100,1,116,2,161,2,1,0,116,3,160,4,124,1,161, + 1,114,13,124,0,83,0,100,2,83,0,41,3,122,93,70, + 105,110,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,102,105, + 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, + 100,46,10,10,32,32,32,32,32,32,32,32,122,105,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, + 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,102,105,110,100,95,115,112,101,99,40,41,32, + 105,110,115,116,101,97,100,78,41,5,114,109,0,0,0,114, + 110,0,0,0,114,111,0,0,0,114,70,0,0,0,114,106, + 0,0,0,41,3,114,192,0,0,0,114,96,0,0,0,114, + 193,0,0,0,115,3,0,0,0,32,32,32,114,5,0,0, + 0,114,196,0,0,0,65,3,0,0,115,8,0,0,0,6, + 7,2,2,4,254,18,3,115,10,0,0,0,2,7,2,2, + 2,255,6,1,18,1,115,30,0,0,0,9,18,9,43,24, + 84,24,42,9,43,9,43,23,27,23,47,38,46,23,47,16, + 57,16,19,9,57,53,57,9,57,114,17,0,0,0,122,26, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,102, + 105,110,100,95,109,111,100,117,108,101,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,114, + 198,0,0,0,41,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,24,0,0,0,114,186,0,0,0,115,1,0, + 0,0,32,114,5,0,0,0,114,174,0,0,0,77,3,0, + 0,115,2,0,0,0,4,0,115,2,0,0,0,4,128,115, + 4,0,0,0,0,0,0,0,114,17,0,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,99,1,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, + 115,64,0,0,0,124,0,106,0,106,1,125,1,116,2,160, + 3,124,1,161,1,115,18,116,4,100,1,160,5,124,1,161, + 1,124,1,100,2,141,2,130,1,116,6,116,2,106,7,124, + 1,131,2,125,2,116,8,124,2,124,0,106,9,131,2,1, + 0,100,0,83,0,114,105,0,0,0,41,10,114,121,0,0, + 0,114,20,0,0,0,114,70,0,0,0,114,106,0,0,0, + 114,94,0,0,0,114,53,0,0,0,114,80,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,13,0,0,0,41,3,114, + 118,0,0,0,114,20,0,0,0,218,4,99,111,100,101,115, + 3,0,0,0,32,32,32,114,5,0,0,0,114,175,0,0, + 0,81,3,0,0,115,14,0,0,0,8,2,10,1,10,1, + 2,1,6,255,12,2,16,1,115,14,0,0,0,8,2,8, + 1,2,2,10,255,8,1,12,1,16,1,115,64,0,0,0, + 16,22,16,31,16,36,9,13,16,20,16,36,31,35,16,36, + 9,41,19,30,31,60,31,73,68,72,31,73,36,40,19,41, + 19,41,13,41,16,41,42,46,42,64,66,70,16,71,9,13, + 9,13,14,18,20,26,20,35,9,36,9,36,9,36,9,36, + 114,17,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,115,10,0,0,0,116,0,124,0,124, + 1,131,2,83,0,41,2,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,41,1,114,119,0,0,0, + 114,199,0,0,0,115,2,0,0,0,32,32,114,5,0,0, + 0,114,182,0,0,0,90,3,0,0,243,2,0,0,0,10, + 8,114,211,0,0,0,115,10,0,0,0,16,33,34,37,39, + 47,16,48,9,48,114,17,0,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,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,243,10,0,0,0, + 116,0,160,1,124,1,161,1,83,0,41,2,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,78,41,2,114,70, + 0,0,0,114,208,0,0,0,114,199,0,0,0,115,2,0, + 0,0,32,32,114,5,0,0,0,114,200,0,0,0,100,3, + 0,0,243,2,0,0,0,10,4,114,213,0,0,0,115,10, + 0,0,0,16,20,16,48,39,47,16,48,9,48,114,17,0, + 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,99,2,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 114,198,0,0,0,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,24,0,0,0,114,199,0,0,0,115,2,0,0,0,32, + 32,114,5,0,0,0,114,202,0,0,0,106,3,0,0,114, + 201,0,0,0,114,201,0,0,0,115,4,0,0,0,16,20, + 16,20,114,17,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,114,212,0,0,0,41,2,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,78,41, + 2,114,70,0,0,0,90,17,105,115,95,102,114,111,122,101, + 110,95,112,97,99,107,97,103,101,114,199,0,0,0,115,2, + 0,0,0,32,32,114,5,0,0,0,114,136,0,0,0,112, + 3,0,0,114,213,0,0,0,114,213,0,0,0,115,10,0, + 0,0,16,20,16,48,39,47,16,48,9,48,114,17,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,114,203,0,0, + 0,114,0,0,0,0,41,17,114,8,0,0,0,114,7,0, + 0,0,114,1,0,0,0,114,9,0,0,0,114,163,0,0, + 0,114,204,0,0,0,114,122,0,0,0,114,205,0,0,0, + 114,195,0,0,0,114,196,0,0,0,114,174,0,0,0,114, + 175,0,0,0,114,182,0,0,0,114,108,0,0,0,114,200, + 0,0,0,114,202,0,0,0,114,136,0,0,0,114,24,0, + 0,0,114,17,0,0,0,114,5,0,0,0,114,206,0,0, + 0,36,3,0,0,115,48,0,0,0,8,0,4,2,4,7, + 2,2,10,1,2,10,12,1,2,6,12,1,2,11,10,1, + 2,3,10,1,2,8,10,1,2,9,2,1,12,1,2,4, + 2,1,12,1,2,4,2,1,16,1,115,102,0,0,0,0, + 129,0,129,0,129,0,129,0,129,0,129,8,214,0,127,0, + 127,0,127,0,127,0,127,0,127,2,49,0,129,0,129,0, + 129,0,129,0,129,0,129,2,207,0,127,0,127,0,127,0, + 127,0,127,0,127,4,51,2,2,10,9,2,2,2,1,10, + 4,2,2,2,1,10,9,2,2,10,2,2,2,10,7,2, + 2,10,8,2,2,2,1,12,3,2,2,2,1,12,3,2, + 2,2,1,16,3,115,144,0,0,0,1,1,1,1,1,1, + 1,1,5,8,1,1,15,23,5,12,6,18,5,79,5,79, + 5,79,5,79,5,79,6,17,39,43,5,24,5,24,5,24, + 5,24,5,24,6,17,41,45,5,57,5,57,5,57,5,57, + 5,57,6,18,5,57,5,57,5,57,5,57,5,57,6,18, + 5,36,5,36,5,36,5,36,5,36,6,17,5,48,5,48, + 5,48,5,48,5,48,6,17,6,22,5,48,5,48,5,48, + 5,48,5,48,5,48,6,17,6,22,5,20,5,20,5,20, + 5,20,5,20,5,20,6,17,6,22,5,48,5,48,5,48, + 5,48,5,48,5,48,5,48,5,48,114,17,0,0,0,114, + 206,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,0,0,0,0,115,32,0,0,0,101,0, + 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, + 90,4,100,4,100,5,132,0,90,5,100,6,83,0,41,7, + 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, + 12,0,0,0,116,0,160,1,161,0,1,0,100,1,83,0, + 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, + 70,0,0,0,114,71,0,0,0,114,55,0,0,0,115,1, + 0,0,0,32,114,5,0,0,0,114,65,0,0,0,125,3, + 0,0,243,2,0,0,0,12,2,114,216,0,0,0,115,12, + 0,0,0,9,13,9,28,9,28,9,28,9,28,9,28,114, + 17,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,99,4,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,114,215,0,0,0,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, + 70,0,0,0,114,73,0,0,0,41,4,114,35,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,5,0, + 0,0,114,68,0,0,0,129,3,0,0,114,216,0,0,0, + 114,216,0,0,0,115,12,0,0,0,9,13,9,28,9,28, + 9,28,9,28,9,28,114,17,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,78,41,6,114,8,0,0,0, + 114,7,0,0,0,114,1,0,0,0,114,9,0,0,0,114, + 65,0,0,0,114,68,0,0,0,114,24,0,0,0,114,17, + 0,0,0,114,5,0,0,0,114,214,0,0,0,121,3,0, + 0,115,8,0,0,0,8,0,4,2,8,2,12,4,115,64, + 0,0,0,0,129,0,129,0,129,0,129,0,129,0,129,8, + 129,0,127,0,127,0,127,0,127,0,127,0,127,0,127,2, + 2,0,129,0,129,0,129,0,129,0,129,0,129,0,129,2, + 254,0,127,0,127,0,127,0,127,0,127,0,127,0,127,8, + 6,12,4,115,32,0,0,0,1,1,1,1,1,1,1,1, + 5,47,1,1,5,28,5,28,5,28,5,28,5,28,5,28, + 5,28,5,28,5,28,5,28,114,17,0,0,0,114,214,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,3,0,0,0,115,64,0,0,0,124,1,160,0, + 100,1,124,2,100,2,24,0,161,2,125,3,116,1,124,3, + 131,1,124,2,107,0,114,18,116,2,100,3,131,1,130,1, + 124,3,100,4,25,0,125,4,124,0,114,30,100,5,160,3, + 124,4,124,0,161,2,83,0,124,4,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,114,151,0,0,0,114,45,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,27,0,0,0,250,5,123,125,46,123,125,78,41,4,218, + 6,114,115,112,108,105,116,218,3,108,101,110,114,94,0,0, + 0,114,53,0,0,0,41,5,114,20,0,0,0,218,7,112, + 97,99,107,97,103,101,218,5,108,101,118,101,108,90,4,98, + 105,116,115,90,4,98,97,115,101,115,5,0,0,0,32,32, + 32,32,32,114,5,0,0,0,218,13,95,114,101,115,111,108, + 118,101,95,110,97,109,101,134,3,0,0,115,10,0,0,0, + 16,2,12,1,8,1,8,1,20,1,115,10,0,0,0,16, + 2,10,1,10,1,8,1,20,1,115,64,0,0,0,12,19, + 12,42,27,30,32,37,40,41,32,41,12,42,5,9,8,11, + 12,16,8,17,20,25,8,25,5,80,15,26,27,79,15,80, + 9,80,12,16,17,18,12,19,5,9,42,46,12,56,12,19, + 12,38,27,31,33,37,12,38,5,56,52,56,5,56,114,17, + 0,0,0,114,225,0,0,0,99,3,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,60,0, + 0,0,116,0,124,0,131,1,155,0,100,1,157,2,125,3, + 116,1,160,2,124,3,116,3,161,2,1,0,124,0,160,4, + 124,1,124,2,161,2,125,4,124,4,100,0,117,0,114,25, + 100,0,83,0,116,5,124,1,124,4,131,2,83,0,41,2, + 78,122,53,46,102,105,110,100,95,115,112,101,99,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,102,105,110,100,95, + 109,111,100,117,108,101,40,41,41,6,114,6,0,0,0,114, + 109,0,0,0,114,110,0,0,0,114,181,0,0,0,114,196, + 0,0,0,114,112,0,0,0,41,5,218,6,102,105,110,100, + 101,114,114,20,0,0,0,114,193,0,0,0,114,116,0,0, + 0,114,130,0,0,0,115,5,0,0,0,32,32,32,32,32, + 114,5,0,0,0,218,17,95,102,105,110,100,95,115,112,101, + 99,95,108,101,103,97,99,121,143,3,0,0,115,12,0,0, + 0,14,1,12,2,12,1,8,1,4,1,10,1,115,16,0, + 0,0,6,1,6,1,2,255,12,2,12,1,6,1,6,1, + 10,1,115,60,0,0,0,15,27,28,34,15,35,12,59,12, + 59,12,59,5,8,5,14,5,39,20,23,25,38,5,39,5, + 39,14,20,14,44,33,37,39,43,14,44,5,11,8,14,18, + 22,8,22,5,20,16,20,16,20,12,28,29,33,35,41,12, + 42,5,42,114,17,0,0,0,114,227,0,0,0,99,3,0, + 0,0,0,0,0,0,0,0,0,0,10,0,0,0,3,0, + 0,0,115,30,1,0,0,116,0,106,1,125,3,124,3,100, + 1,117,0,114,11,116,2,100,2,131,1,130,1,124,3,115, + 19,116,3,160,4,100,3,116,5,161,2,1,0,124,0,116, + 0,106,6,118,0,125,4,124,3,68,0,93,112,125,5,116, + 7,131,0,53,0,1,0,9,0,124,5,106,8,125,6,110, + 27,35,0,4,0,116,9,121,142,1,0,1,0,1,0,116, + 10,124,5,124,0,124,1,131,3,125,7,124,7,100,1,117, + 0,114,61,89,0,100,1,4,0,4,0,131,3,1,0,113, + 26,89,0,110,7,37,0,124,6,124,0,124,1,124,2,131, + 3,125,7,100,1,4,0,4,0,131,3,1,0,110,11,35, + 0,49,0,115,81,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,124,7,100,1,117,1,114,138,124,4,115, + 134,124,0,116,0,106,6,118,0,114,134,116,0,106,6,124, + 0,25,0,125,8,9,0,124,8,106,11,125,9,110,14,35, + 0,4,0,116,9,121,141,1,0,1,0,1,0,124,7,6, + 0,89,0,2,0,1,0,83,0,37,0,124,9,100,1,117, + 0,114,130,124,7,2,0,1,0,83,0,124,9,2,0,1, + 0,83,0,124,7,2,0,1,0,83,0,113,26,100,1,83, + 0,119,0,119,0,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,12, + 114,18,0,0,0,218,9,109,101,116,97,95,112,97,116,104, + 114,94,0,0,0,114,109,0,0,0,114,110,0,0,0,114, + 181,0,0,0,114,113,0,0,0,114,214,0,0,0,114,195, + 0,0,0,114,2,0,0,0,114,227,0,0,0,114,121,0, + 0,0,41,10,114,20,0,0,0,114,193,0,0,0,114,194, + 0,0,0,114,228,0,0,0,90,9,105,115,95,114,101,108, + 111,97,100,114,226,0,0,0,114,195,0,0,0,114,117,0, + 0,0,114,118,0,0,0,114,121,0,0,0,115,10,0,0, + 0,32,32,32,32,32,32,32,32,32,32,114,5,0,0,0, + 218,10,95,102,105,110,100,95,115,112,101,99,153,3,0,0, + 115,78,0,0,0,6,2,8,1,8,2,4,3,12,1,10, + 5,8,1,8,1,2,1,8,1,2,128,12,1,12,1,8, + 1,2,1,12,250,4,5,2,128,12,3,20,248,2,128,12, + 0,8,9,14,2,10,1,2,1,8,1,2,128,12,1,12, + 4,2,128,8,2,8,1,8,2,8,2,2,239,4,19,2, + 243,2,244,115,98,0,0,0,6,2,6,1,2,3,2,255, + 6,1,2,2,14,1,10,5,2,1,4,29,2,227,4,1, + 6,8,8,250,2,128,2,4,2,253,8,3,12,254,6,1, + 4,1,12,2,4,254,2,128,32,2,2,128,12,0,6,1, + 2,17,2,241,2,15,8,241,2,15,10,242,2,12,8,246, + 2,128,2,5,2,252,20,4,2,128,6,2,2,3,8,254, + 8,2,10,2,4,2,2,247,2,243,115,30,1,0,0,17, + 20,17,30,5,14,8,17,21,25,8,25,5,43,15,26,27, + 42,15,43,9,43,12,21,5,64,9,18,9,64,24,48,50, + 63,9,64,9,64,17,21,25,28,25,36,17,36,5,14,19, + 28,5,20,5,20,9,15,14,32,14,34,9,53,9,53,13, + 53,29,35,29,45,17,26,17,26,0,0,13,29,20,34,13, + 29,13,29,13,29,13,29,24,41,42,48,50,54,56,60,24, + 61,17,21,20,24,28,32,20,32,17,29,21,29,9,53,9, + 53,9,53,9,53,9,53,9,53,17,29,17,29,0,0,24, + 33,34,38,40,44,46,52,24,53,17,21,9,53,9,53,9, + 53,9,53,9,53,9,53,9,53,9,53,9,53,9,53,0, + 0,9,53,9,53,9,53,9,53,9,53,9,53,12,16,24, + 28,12,28,9,28,20,29,13,28,34,38,42,45,42,53,34, + 53,13,28,26,29,26,37,38,42,26,43,17,23,17,40,32, + 38,32,47,21,29,21,29,0,0,17,32,24,38,17,32,17, + 32,17,32,17,32,28,32,21,32,21,32,21,32,21,32,21, + 32,0,0,24,32,36,40,24,40,21,40,32,36,25,36,25, + 36,25,36,32,40,25,40,25,40,25,40,24,28,17,28,17, + 28,17,28,9,28,16,20,16,20,17,32,13,29,115,63,0, + 0,0,159,1,65,12,5,161,3,37,4,164,1,65,12,5, + 165,17,63,11,182,1,65,12,5,189,9,65,12,5,193,12, + 4,65,16,13,193,17,3,65,16,13,193,40,3,65,44,2, + 193,44,9,65,57,9,194,13,1,65,57,9,194,14,1,63, + 11,114,229,0,0,0,99,3,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,3,0,0,0,115,110,0,0,0, + 116,0,124,0,116,1,131,2,115,14,116,2,100,1,160,3, + 116,4,124,0,131,1,161,1,131,1,130,1,124,2,100,2, + 107,0,114,22,116,5,100,3,131,1,130,1,124,2,100,2, + 107,4,114,41,116,0,124,1,116,1,131,2,115,35,116,2, + 100,4,131,1,130,1,124,1,115,41,116,6,100,5,131,1, + 130,1,124,0,115,53,124,2,100,2,107,2,114,51,116,5, + 100,6,131,1,130,1,100,7,83,0,100,7,83,0,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,31, + 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,123,125,114, + 27,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,7,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,114,53,0,0,0,114,3,0,0,0,218,10,86, + 97,108,117,101,69,114,114,111,114,114,94,0,0,0,169,3, + 114,20,0,0,0,114,223,0,0,0,114,224,0,0,0,115, + 3,0,0,0,32,32,32,114,5,0,0,0,218,13,95,115, + 97,110,105,116,121,95,99,104,101,99,107,200,3,0,0,115, + 24,0,0,0,10,2,18,1,8,1,8,1,8,1,10,1, + 8,1,4,1,8,1,12,2,8,1,8,255,115,34,0,0, + 0,8,2,20,1,6,1,10,1,6,1,2,5,8,252,2, + 4,8,253,2,1,2,2,2,255,6,1,2,1,2,1,6, + 255,18,1,115,110,0,0,0,12,22,23,27,29,32,12,33, + 5,78,15,24,25,58,25,77,66,70,71,75,66,76,25,77, + 15,78,9,78,8,13,16,17,8,17,5,47,15,25,26,46, + 15,47,9,47,8,13,16,17,8,17,5,41,16,26,27,34, + 36,39,16,40,9,41,19,28,29,62,19,63,13,63,18,25, + 9,41,19,30,31,40,19,41,13,41,12,16,5,46,21,26, + 30,31,21,31,5,46,15,25,26,45,15,46,9,46,5,46, + 5,46,5,46,5,46,114,17,0,0,0,114,235,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,8,0,0,0,3,0,0,0,115,20,1, + 0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2, + 25,0,125,3,124,3,114,64,124,3,116,1,106,2,118,1, + 114,21,116,3,124,1,124,3,131,2,1,0,124,0,116,1, + 106,2,118,0,114,31,116,1,106,2,124,0,25,0,83,0, + 116,1,106,2,124,3,25,0,125,4,9,0,124,4,106,4, + 125,2,110,23,35,0,4,0,116,5,121,137,1,0,1,0, + 1,0,116,6,100,3,23,0,160,7,124,0,124,3,161,2, + 125,5,116,8,124,5,124,0,100,4,141,2,100,0,130,2, + 37,0,116,9,124,0,124,2,131,2,125,6,124,6,100,0, + 117,0,114,82,116,8,116,6,160,7,124,0,161,1,124,0, + 100,4,141,2,130,1,116,10,124,6,131,1,125,7,124,3, + 114,134,116,1,106,2,124,3,25,0,125,4,124,0,160,0, + 100,1,161,1,100,5,25,0,125,8,9,0,116,11,124,4, + 124,8,124,7,131,3,1,0,124,7,83,0,35,0,4,0, + 116,5,121,136,1,0,1,0,1,0,100,6,124,3,155,2, + 100,7,124,8,155,2,157,4,125,5,116,12,160,13,124,5, + 116,14,161,2,1,0,89,0,124,7,83,0,37,0,124,7, + 83,0,119,0,119,0,41,8,78,114,151,0,0,0,114,27, + 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,112,97,99,107,97,103,101,114,19,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,15,114,152,0,0,0,114,18, + 0,0,0,114,113,0,0,0,114,80,0,0,0,114,166,0, + 0,0,114,2,0,0,0,218,8,95,69,82,82,95,77,83, + 71,114,53,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,229,0,0,0, + 114,185,0,0,0,114,11,0,0,0,114,109,0,0,0,114, + 110,0,0,0,114,181,0,0,0,41,9,114,20,0,0,0, + 218,7,105,109,112,111,114,116,95,114,193,0,0,0,114,153, + 0,0,0,90,13,112,97,114,101,110,116,95,109,111,100,117, + 108,101,114,116,0,0,0,114,117,0,0,0,114,118,0,0, + 0,90,5,99,104,105,108,100,115,9,0,0,0,32,32,32, + 32,32,32,32,32,32,114,5,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,219,3,0,0,115,68,0,0,0,4,1,14, + 1,4,1,10,1,10,1,10,2,10,1,10,1,2,1,8, + 1,2,128,12,1,16,1,14,1,2,128,10,1,8,1,18, + 1,8,2,4,1,10,2,14,1,2,1,12,1,4,4,2, + 128,12,253,16,1,14,1,4,1,2,128,4,0,2,253,2, + 242,115,82,0,0,0,4,1,14,1,2,1,2,11,8,246, + 12,1,8,2,12,1,10,1,2,5,8,253,2,128,2,3, + 2,254,8,2,16,255,14,1,2,128,10,1,6,1,2,3, + 18,254,8,2,2,1,2,8,10,250,14,1,2,5,12,253, + 4,4,2,128,2,255,2,254,8,2,16,255,14,1,4,1, + 2,128,4,0,2,255,2,242,115,20,1,0,0,12,16,5, + 9,14,18,14,34,30,33,14,34,35,36,14,37,5,11,8, + 14,5,64,12,18,26,29,26,37,12,37,9,55,13,38,39, + 46,48,54,13,55,13,55,12,16,20,23,20,31,12,31,9, + 37,20,23,20,31,32,36,20,37,13,37,25,28,25,36,37, + 43,25,44,9,22,9,64,20,33,20,42,13,17,13,17,0, + 0,9,64,16,30,9,64,9,64,9,64,9,64,20,28,31, + 56,20,56,19,78,65,69,71,77,19,78,13,16,19,38,39, + 42,49,53,19,54,19,54,60,64,13,64,0,0,12,22,23, + 27,29,33,12,34,5,9,8,12,16,20,8,20,5,38,15, + 34,35,43,35,56,51,55,35,56,63,67,15,68,15,68,9, + 68,18,32,33,37,18,38,9,15,8,14,5,47,25,28,25, + 36,37,43,25,44,9,22,17,21,17,37,33,36,17,37,38, + 39,17,40,9,14,9,47,13,20,21,34,36,41,43,49,13, + 50,13,50,12,18,5,18,0,0,9,47,16,30,9,47,9, + 47,9,47,9,47,19,86,20,26,19,86,19,86,20,25,19, + 86,19,86,13,16,13,22,13,47,28,31,33,46,13,47,13, + 47,13,47,12,18,5,18,0,0,12,18,5,18,9,47,9, + 64,115,31,0,0,0,165,3,41,0,169,22,63,7,193,37, + 6,65,45,0,193,45,21,66,5,7,194,8,1,66,5,7, + 194,9,1,63,7,114,240,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,9,0,0,0,3,0,0,0,115, + 132,0,0,0,116,0,124,0,131,1,53,0,1,0,116,1, + 106,2,160,3,124,0,116,4,161,2,125,2,124,2,116,4, + 117,0,114,27,116,5,124,0,124,1,131,2,2,0,100,1, + 4,0,4,0,131,3,1,0,83,0,9,0,100,1,4,0, + 4,0,131,3,1,0,110,11,35,0,49,0,115,39,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,2, + 100,1,117,0,114,60,100,2,160,6,124,0,161,1,125,3, + 116,7,124,3,124,0,100,3,141,2,130,1,116,8,124,0, + 131,1,1,0,124,2,83,0,41,4,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,78,122,40,105,109,112,111,114,116,32,111, + 102,32,123,125,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,19,0,0,0,41,9,114,61,0,0,0,114,18,0,0, + 0,114,113,0,0,0,114,41,0,0,0,218,14,95,78,69, + 69,68,83,95,76,79,65,68,73,78,71,114,240,0,0,0, + 114,53,0,0,0,114,238,0,0,0,114,78,0,0,0,41, + 4,114,20,0,0,0,114,239,0,0,0,114,118,0,0,0, + 114,89,0,0,0,115,4,0,0,0,32,32,32,32,114,5, + 0,0,0,218,14,95,102,105,110,100,95,97,110,100,95,108, + 111,97,100,254,3,0,0,115,32,0,0,0,10,2,14,1, + 8,1,8,1,14,253,2,2,20,254,2,128,12,0,8,5, + 2,1,6,1,2,255,12,2,8,2,4,1,115,28,0,0, + 0,6,2,4,3,14,254,6,1,46,1,2,128,12,0,6, + 2,2,3,8,255,2,255,12,2,8,2,4,1,115,132,0, + 0,0,10,28,29,33,10,34,5,58,5,58,18,21,18,29, + 18,55,34,38,40,54,18,55,9,15,12,18,22,36,12,36, + 9,58,20,43,44,48,50,57,20,58,5,58,5,58,5,58, + 5,58,5,58,5,58,5,58,9,58,5,58,5,58,5,58, + 5,58,5,58,5,58,5,58,5,58,5,58,5,58,0,0, + 5,58,5,58,5,58,5,58,5,58,5,58,8,14,18,22, + 8,22,5,54,20,41,20,54,49,53,20,54,9,16,15,34, + 35,42,49,53,15,54,15,54,9,54,5,24,25,29,5,30, + 5,30,12,18,5,18,115,12,0,0,0,132,16,34,3,162, + 4,38,11,167,3,38,11,114,242,0,0,0,114,27,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,115,42,0,0,0,116,0,124,0,124, + 1,124,2,131,3,1,0,124,2,100,1,107,4,114,16,116, + 1,124,0,124,1,124,2,131,3,125,0,116,2,124,0,116, + 3,131,2,83,0,41,3,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,27, + 0,0,0,78,41,4,114,235,0,0,0,114,225,0,0,0, + 114,242,0,0,0,218,11,95,103,99,100,95,105,109,112,111, + 114,116,114,234,0,0,0,115,3,0,0,0,32,32,32,114, + 5,0,0,0,114,243,0,0,0,14,4,0,0,115,8,0, + 0,0,12,9,8,1,12,1,10,1,115,8,0,0,0,12, + 9,6,1,14,1,10,1,115,42,0,0,0,5,18,19,23, + 25,32,34,39,5,40,5,40,8,13,16,17,8,17,5,51, + 16,29,30,34,36,43,45,50,16,51,9,13,12,26,27,31, + 33,44,12,45,5,45,114,17,0,0,0,114,243,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,115,216,0,0,0,124,1,68,0,93,102,125,4,116, + 0,124,4,116,1,131,2,115,32,124,3,114,17,124,0,106, + 2,100,1,23,0,125,5,110,2,100,2,125,5,116,3,100, + 3,124,5,155,0,100,4,116,4,124,4,131,1,106,2,155, + 0,157,4,131,1,130,1,124,4,100,5,107,2,114,53,124, + 3,115,52,116,5,124,0,100,6,131,2,114,52,116,6,124, + 0,124,0,106,7,124,2,100,7,100,8,141,4,1,0,113, + 2,116,5,124,0,124,4,131,2,115,104,100,9,160,8,124, + 0,106,2,124,4,161,2,125,6,9,0,116,9,124,2,124, + 6,131,2,1,0,113,2,35,0,4,0,116,10,121,107,1, + 0,125,7,1,0,124,7,106,11,124,6,107,2,114,98,116, + 12,106,13,160,14,124,6,116,15,161,2,100,10,117,1,114, + 98,89,0,100,10,125,7,126,7,113,2,130,0,100,10,125, + 7,126,7,119,1,37,0,113,2,124,0,83,0,119,0,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,244,0,0,0,114,220,0,0,0,78, + 41,16,114,230,0,0,0,114,231,0,0,0,114,8,0,0, + 0,114,232,0,0,0,114,3,0,0,0,114,10,0,0,0, + 218,16,95,104,97,110,100,108,101,95,102,114,111,109,108,105, + 115,116,114,247,0,0,0,114,53,0,0,0,114,80,0,0, + 0,114,238,0,0,0,114,20,0,0,0,114,18,0,0,0, + 114,113,0,0,0,114,41,0,0,0,114,241,0,0,0,41, + 8,114,118,0,0,0,218,8,102,114,111,109,108,105,115,116, + 114,239,0,0,0,114,245,0,0,0,218,1,120,90,5,119, + 104,101,114,101,90,9,102,114,111,109,95,110,97,109,101,90, + 3,101,120,99,115,8,0,0,0,32,32,32,32,32,32,32, + 32,114,5,0,0,0,114,248,0,0,0,29,4,0,0,115, + 58,0,0,0,8,10,10,1,4,1,12,1,4,2,10,1, + 8,1,8,255,8,2,14,1,10,1,2,1,6,255,2,128, + 10,2,14,1,2,1,12,1,2,128,12,1,10,4,16,1, + 2,255,10,2,2,1,10,128,2,245,4,12,2,248,115,80, + 0,0,0,2,10,4,23,2,233,8,1,2,22,2,235,2, + 3,12,254,4,2,2,1,2,1,2,255,20,1,6,1,2, + 15,2,242,2,2,8,254,2,2,10,255,8,1,2,128,8, + 1,2,11,14,246,2,10,12,248,2,128,2,8,2,249,8, + 7,8,253,2,2,16,255,12,1,2,1,10,128,2,0,4, + 1,2,255,115,216,0,0,0,14,22,5,22,5,22,9,10, + 16,26,27,28,30,33,16,34,9,22,16,25,13,40,25,31, + 25,40,43,53,25,53,17,22,17,22,25,40,17,22,19,28, + 29,54,40,45,29,54,29,54,36,40,41,42,36,43,36,52, + 29,54,29,54,19,55,13,55,14,15,19,22,14,22,9,22, + 20,29,13,49,34,41,42,48,50,59,34,60,13,49,17,33, + 34,40,42,48,42,56,58,65,44,48,17,49,17,49,17,49, + 0,0,18,25,26,32,34,35,18,36,9,22,25,32,25,59, + 40,46,40,55,57,58,25,59,13,22,13,22,17,42,43,50, + 52,61,17,62,17,62,17,62,0,0,13,22,20,39,13,22, + 13,22,13,22,13,22,21,24,21,29,33,42,21,42,17,29, + 21,24,21,32,21,63,37,46,48,62,21,63,71,75,21,75, + 17,29,21,29,21,29,21,29,21,29,21,29,17,22,0,0, + 0,0,0,0,0,0,0,0,9,22,12,18,5,18,13,22, + 115,36,0,0,0,193,2,5,65,8,2,193,8,7,65,39, + 9,193,15,14,65,35,9,193,34,1,65,35,9,193,35,4, + 65,39,9,193,43,1,65,39,9,114,248,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,3, + 0,0,0,115,146,0,0,0,124,0,160,0,100,1,161,1, + 125,1,124,0,160,0,100,2,161,1,125,2,124,1,100,3, + 117,1,114,41,124,2,100,3,117,1,114,39,124,1,124,2, + 106,1,107,3,114,39,116,2,160,3,100,4,124,1,155,2, + 100,5,124,2,106,1,155,2,100,6,157,5,116,4,100,7, + 100,8,166,3,1,0,124,1,83,0,124,2,100,3,117,1, + 114,48,124,2,106,1,83,0,116,2,160,3,100,9,116,4, + 100,7,100,8,166,3,1,0,124,0,100,10,25,0,125,1, + 100,11,124,0,118,1,114,71,124,1,160,5,100,12,161,1, + 100,13,25,0,125,1,124,1,83,0,41,14,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,170,0,0,0,114,121,0,0,0,78, + 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,250,1,41,233,3,0,0,0, + 41,1,90,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,8,0,0,0,114,166, + 0,0,0,114,151,0,0,0,114,27,0,0,0,41,6,114, + 41,0,0,0,114,153,0,0,0,114,109,0,0,0,114,110, + 0,0,0,114,181,0,0,0,114,152,0,0,0,41,3,218, + 7,103,108,111,98,97,108,115,114,223,0,0,0,114,117,0, + 0,0,115,3,0,0,0,32,32,32,114,5,0,0,0,218, + 17,95,99,97,108,99,95,95,95,112,97,99,107,97,103,101, + 95,95,66,4,0,0,115,42,0,0,0,10,7,10,1,8, + 1,18,1,6,1,2,1,4,255,4,1,6,255,4,2,6, + 254,4,3,8,1,6,1,6,2,4,2,6,254,8,3,8, + 1,14,1,4,1,115,48,0,0,0,10,7,10,1,6,1, + 2,14,6,243,2,3,8,253,2,3,2,254,2,2,18,255, + 10,1,4,1,6,1,2,8,6,249,2,2,2,2,2,255, + 10,1,8,1,6,1,16,1,4,1,115,146,0,0,0,15, + 22,15,41,27,40,15,41,5,12,12,19,12,35,24,34,12, + 35,5,9,8,15,23,27,8,27,5,49,12,16,24,28,12, + 28,9,56,33,40,44,48,44,55,33,55,9,56,13,22,13, + 56,28,63,29,36,28,63,28,63,29,33,29,40,28,63,28, + 63,28,63,28,41,54,55,13,56,13,56,13,56,16,23,9, + 23,10,14,22,26,10,26,5,49,16,20,16,27,9,27,9, + 18,9,52,24,63,24,37,50,51,9,52,9,52,9,52,19, + 26,27,37,19,38,9,16,12,22,30,37,12,37,9,49,23, + 30,23,46,42,45,23,46,47,48,23,49,13,20,12,19,5, + 19,114,17,0,0,0,114,254,0,0,0,114,24,0,0,0, + 99,5,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,3,0,0,0,115,174,0,0,0,124,4,100,1,107,2, + 114,9,116,0,124,0,131,1,125,5,110,18,124,1,100,2, + 117,1,114,15,124,1,110,1,105,0,125,6,116,1,124,6, + 131,1,125,7,116,0,124,0,124,7,124,4,131,3,125,5, + 124,3,115,74,124,4,100,1,107,2,114,42,116,0,124,0, + 160,2,100,3,161,1,100,1,25,0,131,1,83,0,124,0, + 115,46,124,5,83,0,116,3,124,0,131,1,116,3,124,0, + 160,2,100,3,161,1,100,1,25,0,131,1,24,0,125,8, + 116,4,106,5,124,5,106,6,100,2,116,3,124,5,106,6, + 131,1,124,8,24,0,133,2,25,0,25,0,83,0,116,7, + 124,5,100,4,131,2,114,85,116,8,124,5,124,3,116,0, + 131,3,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,27,0,0,0,78,114,151,0,0, + 0,114,166,0,0,0,41,9,114,243,0,0,0,114,254,0, + 0,0,218,9,112,97,114,116,105,116,105,111,110,114,222,0, + 0,0,114,18,0,0,0,114,113,0,0,0,114,8,0,0, + 0,114,10,0,0,0,114,248,0,0,0,41,9,114,20,0, + 0,0,114,253,0,0,0,218,6,108,111,99,97,108,115,114, + 249,0,0,0,114,224,0,0,0,114,118,0,0,0,90,8, + 103,108,111,98,97,108,115,95,114,223,0,0,0,90,7,99, + 117,116,95,111,102,102,115,9,0,0,0,32,32,32,32,32, + 32,32,32,32,114,5,0,0,0,218,10,95,95,105,109,112, + 111,114,116,95,95,93,4,0,0,115,30,0,0,0,8,11, + 10,1,16,2,8,1,12,1,4,1,8,3,18,1,4,1, + 4,1,26,4,30,3,10,1,12,1,4,2,115,40,0,0, + 0,6,11,2,5,10,252,16,2,8,1,12,1,2,1,2, + 17,6,242,2,10,18,247,2,1,2,8,4,249,26,4,30, + 3,8,1,2,3,12,254,4,2,115,174,0,0,0,8,13, + 17,18,8,18,5,51,18,29,30,34,18,35,9,15,9,15, + 31,38,46,50,31,50,20,58,20,27,20,27,56,58,9,17, + 19,36,37,45,19,46,9,16,18,29,30,34,36,43,45,50, + 18,51,9,15,12,20,5,22,12,17,21,22,12,22,9,79, + 20,31,32,36,32,51,47,50,32,51,52,53,32,54,20,55, + 13,55,18,22,9,79,20,26,13,26,23,26,27,31,23,32, + 35,38,39,43,39,58,54,57,39,58,59,60,39,61,35,62, + 23,62,13,20,20,23,20,31,32,38,32,47,48,77,49,52, + 53,59,53,68,49,69,70,77,49,77,48,77,32,78,20,79, + 13,79,10,17,18,24,26,36,10,37,5,22,16,32,33,39, + 41,49,51,62,16,63,9,63,16,22,9,22,114,17,0,0, + 0,114,1,1,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,115,38,0,0,0, + 116,0,160,1,124,0,161,1,125,1,124,1,100,0,117,0, + 114,15,116,2,100,1,124,0,23,0,131,1,130,1,116,3, + 124,1,131,1,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,187,0,0,0,114,195,0,0,0, + 114,94,0,0,0,114,185,0,0,0,41,2,114,20,0,0, + 0,114,117,0,0,0,115,2,0,0,0,32,32,114,5,0, + 0,0,218,18,95,98,117,105,108,116,105,110,95,102,114,111, + 109,95,110,97,109,101,130,4,0,0,115,8,0,0,0,10, + 1,8,1,12,1,8,1,115,8,0,0,0,10,1,6,1, + 14,1,8,1,115,38,0,0,0,12,27,12,43,38,42,12, + 43,5,9,8,12,16,20,8,20,5,62,15,26,27,54,57, + 61,27,61,15,62,9,62,12,26,27,31,12,32,5,32,114, + 17,0,0,0,114,2,1,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,5,0,0,0,3,0,0,0,115,166, + 0,0,0,124,1,97,0,124,0,97,1,116,2,116,1,131, + 1,125,2,116,1,106,3,160,4,161,0,68,0,93,36,92, + 2,125,3,125,4,116,5,124,4,124,2,131,2,114,49,124, + 3,116,1,106,6,118,0,114,30,116,7,125,5,110,9,116, + 0,160,8,124,3,161,1,114,38,116,9,125,5,110,1,113, + 13,116,10,124,4,124,5,131,2,125,6,116,11,124,6,124, + 4,131,2,1,0,113,13,116,1,106,3,116,12,25,0,125, + 7,100,1,68,0,93,23,125,8,124,8,116,1,106,3,118, + 1,114,69,116,13,124,8,131,1,125,9,110,5,116,1,106, + 3,124,8,25,0,125,9,116,14,124,7,124,8,124,9,131, + 3,1,0,113,57,100,2,83,0,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,28,0,0,0,114,109, + 0,0,0,114,77,0,0,0,78,41,15,114,70,0,0,0, + 114,18,0,0,0,114,3,0,0,0,114,113,0,0,0,218, + 5,105,116,101,109,115,114,230,0,0,0,114,93,0,0,0, + 114,187,0,0,0,114,106,0,0,0,114,206,0,0,0,114, + 167,0,0,0,114,173,0,0,0,114,8,0,0,0,114,2, + 1,0,0,114,11,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,90,11,109,111,100,117,108,101,95,116,121,112,101, + 114,20,0,0,0,114,118,0,0,0,114,130,0,0,0,114, + 117,0,0,0,90,11,115,101,108,102,95,109,111,100,117,108, + 101,90,12,98,117,105,108,116,105,110,95,110,97,109,101,90, + 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,5, + 0,0,0,218,6,95,115,101,116,117,112,137,4,0,0,115, + 40,0,0,0,4,9,4,1,8,3,18,1,10,1,10,1, + 6,1,10,1,6,1,2,2,10,1,10,1,2,128,10,3, + 8,1,10,1,10,1,10,2,14,1,4,251,115,54,0,0, + 0,4,9,4,1,8,3,8,1,4,9,6,247,8,1,2, + 8,8,249,2,5,6,252,8,1,2,3,6,254,2,2,10, + 1,10,1,2,128,10,3,2,1,4,5,2,251,8,1,2, + 3,10,254,10,2,18,1,115,166,0,0,0,12,23,5,9, + 11,21,5,8,19,23,24,27,19,28,5,16,25,28,25,36, + 25,44,25,44,5,45,5,45,9,21,9,13,15,21,12,22, + 23,29,31,42,12,43,9,45,16,20,24,27,24,48,16,48, + 13,25,26,41,17,23,17,23,18,22,18,38,33,37,18,38, + 13,25,26,40,17,23,17,23,17,25,20,37,38,44,46,52, + 20,53,13,17,13,31,32,36,38,44,13,45,13,45,0,0, + 19,22,19,30,31,39,19,40,5,16,25,61,5,59,5,59, + 9,21,12,24,32,35,32,43,12,43,9,55,30,48,49,61, + 30,62,13,27,13,27,30,33,30,41,42,54,30,55,13,27, + 9,16,17,28,30,42,44,58,9,59,9,59,9,59,5,59, + 5,59,114,17,0,0,0,114,6,1,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, + 0,115,38,0,0,0,116,0,124,0,124,1,131,2,1,0, + 116,1,106,2,160,3,116,4,161,1,1,0,116,1,106,2, + 160,3,116,5,161,1,1,0,100,1,83,0,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,6,1,0,0,114,18,0,0,0,114,228,0, + 0,0,114,141,0,0,0,114,187,0,0,0,114,206,0,0, + 0,41,2,114,4,1,0,0,114,5,1,0,0,115,2,0, + 0,0,32,32,114,5,0,0,0,218,8,95,105,110,115,116, + 97,108,108,172,4,0,0,243,6,0,0,0,10,2,12,2, + 16,1,114,8,1,0,0,115,38,0,0,0,5,11,12,22, + 24,35,5,36,5,36,5,8,5,18,5,42,26,41,5,42, + 5,42,5,8,5,18,5,41,26,40,5,41,5,41,5,41, + 5,41,114,17,0,0,0,114,7,1,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, + 0,115,32,0,0,0,100,1,100,2,108,0,125,0,124,0, + 97,1,124,0,160,2,116,3,106,4,116,5,25,0,161,1, + 1,0,100,2,83,0,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,27,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,148,0,0,0,114,7,1,0, + 0,114,18,0,0,0,114,113,0,0,0,114,8,0,0,0, + 41,1,114,9,1,0,0,115,1,0,0,0,32,114,5,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,180, + 4,0,0,243,6,0,0,0,8,3,4,1,20,1,114,11, + 1,0,0,115,32,0,0,0,5,38,5,38,5,38,5,38, + 27,53,5,24,5,31,5,63,41,44,41,52,53,61,41,62, + 5,63,5,63,5,63,5,63,114,17,0,0,0,114,10,1, + 0,0,114,203,0,0,0,114,0,0,0,0,114,26,0,0, + 0,41,4,78,78,114,24,0,0,0,114,27,0,0,0,41, + 54,114,9,0,0,0,114,6,0,0,0,114,28,0,0,0, + 114,109,0,0,0,114,77,0,0,0,114,148,0,0,0,114, + 16,0,0,0,114,21,0,0,0,114,72,0,0,0,114,40, + 0,0,0,114,50,0,0,0,114,23,0,0,0,114,25,0, + 0,0,114,58,0,0,0,114,61,0,0,0,114,64,0,0, + 0,114,78,0,0,0,114,80,0,0,0,114,90,0,0,0, + 114,102,0,0,0,114,108,0,0,0,114,119,0,0,0,114, + 132,0,0,0,114,133,0,0,0,114,112,0,0,0,114,167, + 0,0,0,114,173,0,0,0,114,177,0,0,0,114,127,0, + 0,0,114,114,0,0,0,114,184,0,0,0,114,185,0,0, + 0,114,115,0,0,0,114,187,0,0,0,114,206,0,0,0, + 114,214,0,0,0,114,225,0,0,0,114,227,0,0,0,114, + 229,0,0,0,114,235,0,0,0,90,15,95,69,82,82,95, + 77,83,71,95,80,82,69,70,73,88,114,237,0,0,0,114, + 240,0,0,0,218,6,111,98,106,101,99,116,114,241,0,0, + 0,114,242,0,0,0,114,243,0,0,0,114,248,0,0,0, + 114,254,0,0,0,114,1,1,0,0,114,2,1,0,0,114, + 6,1,0,0,114,7,1,0,0,114,10,1,0,0,114,24, + 0,0,0,114,17,0,0,0,114,5,0,0,0,218,8,60, + 109,111,100,117,108,101,62,1,0,0,0,115,104,0,0,0, + 4,0,8,22,4,9,4,1,4,1,4,3,8,3,8,8, + 4,8,4,2,16,3,14,4,14,77,14,21,8,16,8,37, + 8,17,14,11,8,8,8,11,8,12,8,19,14,26,16,101, + 10,26,14,45,8,72,8,17,8,17,8,30,8,36,8,45, + 14,15,14,80,14,85,8,13,8,9,10,10,8,47,4,16, + 8,1,8,2,6,32,8,3,10,16,14,15,8,37,10,27, + 8,37,8,7,8,35,12,8,115,124,0,0,0,4,7,8, + 19,4,5,4,1,4,1,4,3,8,8,8,4,4,7,4, + 2,10,4,2,255,4,1,14,77,14,21,14,14,8,39,8, + 17,8,11,2,3,12,5,8,11,8,11,8,19,8,27,14, + 101,4,3,12,23,2,3,8,42,2,3,12,69,8,17,8, + 16,8,31,8,37,8,43,8,14,14,82,14,83,14,15,8, + 9,8,10,2,3,8,44,8,16,4,3,8,1,8,31,6, + 3,8,16,2,3,8,12,2,3,12,34,8,27,2,3,8, + 34,8,7,8,35,8,8,12,8,115,214,1,0,0,1,4, + 1,4,1,38,1,38,1,38,1,38,11,15,1,8,13,17, + 1,10,12,16,1,9,23,27,1,20,1,38,1,38,1,38, + 1,38,1,27,1,27,1,27,1,27,17,19,1,14,16,18, + 1,13,1,9,1,9,1,9,1,9,1,9,22,34,1,9, + 1,9,1,69,1,69,1,69,1,69,1,69,1,69,1,69, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,29, + 1,29,1,29,1,29,1,29,1,29,1,29,1,16,1,16, + 1,16,1,16,1,23,1,23,1,23,1,23,1,28,1,28, + 1,28,1,28,48,49,1,54,1,54,1,54,1,54,1,54, + 1,54,1,37,1,37,1,37,1,37,1,36,1,36,1,36, + 1,36,1,27,1,27,1,27,1,27,1,64,1,64,1,64, + 1,64,1,41,1,41,1,41,1,41,1,41,1,41,1,41, + 46,50,63,67,1,74,1,74,1,74,1,74,1,74,1,74, + 38,42,1,16,1,16,1,16,1,16,50,55,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,71,1,71,1,71,1,71,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,36,1,36,1,36,1,36,1,49,1,49,1,49,1,49, + 1,49,1,49,1,49,1,48,1,48,1,48,1,48,1,48, + 1,48,1,48,1,28,1,28,1,28,1,28,1,28,1,28, + 1,28,1,56,1,56,1,56,1,56,1,42,1,42,1,42, + 1,42,35,39,1,20,1,20,1,20,1,20,1,46,1,46, + 1,46,1,46,19,37,1,16,12,27,30,36,12,36,1,9, + 1,18,1,18,1,18,1,18,18,24,18,26,1,15,1,18, + 1,18,1,18,1,18,31,35,1,45,1,45,1,45,1,45, + 62,67,1,18,1,18,1,18,1,18,1,18,1,18,1,19, + 1,19,1,19,1,19,30,34,1,22,1,22,1,22,1,22, + 1,32,1,32,1,32,1,32,1,59,1,59,1,59,1,59, + 1,41,1,41,1,41,1,41,1,63,1,63,1,63,1,63, + 1,63,1,63,114,17,0,0,0, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 734f78fc037cbe..ff056b0c19f004 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -81,128 +81,150 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,218,9,60,103,101, - 110,101,120,112,114,62,46,0,0,0,115,4,0,0,0,2, - 128,26,0,243,0,0,0,0,114,8,0,0,0,218,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,22,0,0,0,104,0,124,0,93,7,125, - 1,100,0,124,1,155,0,157,2,146,2,113,2,83,0,41, - 1,250,1,58,169,0,41,2,114,5,0,0,0,218,1,115, - 115,2,0,0,0,32,32,114,7,0,0,0,218,9,60,115, - 101,116,99,111,109,112,62,50,0,0,0,115,2,0,0,0, - 22,0,114,9,0,0,0,114,14,0,0,0,41,1,218,3, - 119,105,110,41,2,90,6,99,121,103,119,105,110,90,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,115,64,0,0,0,135, - 1,116,0,106,1,160,2,116,3,161,1,114,26,116,0,106, - 1,160,2,116,4,161,1,114,16,100,1,138,1,110,2,100, - 2,138,1,136,1,102,1,100,3,100,4,132,8,125,0,124, - 0,83,0,100,5,100,4,132,0,125,0,124,0,83,0,41, - 6,78,90,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,115,20,0,0,0,116,0,106,1,106, - 2,12,0,111,9,137,0,116,3,106,4,118,0,83,0,41, - 2,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,78,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,90,7,101,110,118,105,114, - 111,110,169,1,218,3,107,101,121,115,1,0,0,0,128,114, - 7,0,0,0,218,11,95,114,101,108,97,120,95,99,97,115, - 101,67,0,0,0,243,2,0,0,0,20,2,114,9,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,99,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,19,0,0,0,243,4,0, - 0,0,100,1,83,0,41,3,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, - 78,114,12,0,0,0,114,12,0,0,0,114,9,0,0,0, - 114,7,0,0,0,114,22,0,0,0,71,0,0,0,243,2, - 0,0,0,4,2,114,9,0,0,0,41,5,114,16,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,22,0,0,0, - 114,21,0,0,0,115,2,0,0,0,32,64,114,7,0,0, - 0,218,16,95,109,97,107,101,95,114,101,108,97,120,95,99, - 97,115,101,60,0,0,0,115,18,0,0,0,2,128,12,1, - 12,1,6,1,4,2,12,2,4,7,8,253,4,3,114,9, - 0,0,0,114,30,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,3,0,0,0,115,20,0, - 0,0,116,0,124,0,131,1,100,1,64,0,160,1,100,2, - 100,3,161,2,83,0,41,5,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,78,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,7,0,0,0,218,12, - 95,112,97,99,107,95,117,105,110,116,51,50,79,0,0,0, - 114,23,0,0,0,114,9,0,0,0,114,37,0,0,0,99, + 110,101,120,112,114,62,46,0,0,0,243,4,0,0,0,2, + 128,26,0,114,9,0,0,0,115,28,0,0,0,0,0,11, + 53,11,53,30,33,12,15,16,19,12,20,24,25,12,25,11, + 53,11,53,11,53,11,53,11,53,243,0,0,0,0,114,8, + 0,0,0,218,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,115,22,0,0,0,104, + 0,124,0,93,7,125,1,100,0,124,1,155,0,157,2,146, + 2,113,2,83,0,41,1,250,1,58,169,0,41,2,114,5, + 0,0,0,218,1,115,115,2,0,0,0,32,32,114,7,0, + 0,0,218,9,60,115,101,116,99,111,109,112,62,50,0,0, + 0,243,2,0,0,0,22,0,114,16,0,0,0,115,22,0, + 0,0,24,58,24,58,24,58,37,38,25,32,29,30,25,32, + 25,32,24,58,24,58,24,58,114,10,0,0,0,114,15,0, + 0,0,41,1,218,3,119,105,110,41,2,90,6,99,121,103, + 119,105,110,90,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, + 115,64,0,0,0,135,1,116,0,106,1,160,2,116,3,161, + 1,114,26,116,0,106,1,160,2,116,4,161,1,114,16,100, + 1,138,1,110,2,100,2,138,1,136,1,102,1,100,3,100, + 4,132,8,125,0,124,0,83,0,100,5,100,4,132,0,125, + 0,124,0,83,0,41,6,78,90,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,115,20,0,0, + 0,116,0,106,1,106,2,12,0,111,9,137,0,116,3,106, + 4,118,0,83,0,41,2,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,78,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,90, + 7,101,110,118,105,114,111,110,169,1,218,3,107,101,121,115, + 1,0,0,0,128,114,7,0,0,0,218,11,95,114,101,108, + 97,120,95,99,97,115,101,67,0,0,0,243,2,0,0,0, + 20,2,114,25,0,0,0,115,20,0,0,0,24,27,24,33, + 24,52,20,52,20,75,57,60,64,67,64,75,57,75,13,75, + 114,10,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,99,0,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,19,0,0, + 0,243,4,0,0,0,100,1,83,0,41,3,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,78,114,13,0,0,0,114,13,0,0,0,114, + 10,0,0,0,114,7,0,0,0,114,24,0,0,0,71,0, + 0,0,243,2,0,0,0,4,2,114,27,0,0,0,115,4, + 0,0,0,20,25,20,25,114,10,0,0,0,41,5,114,18, + 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,24,0, + 0,0,114,23,0,0,0,115,2,0,0,0,32,64,114,7, + 0,0,0,218,16,95,109,97,107,101,95,114,101,108,97,120, + 95,99,97,115,101,60,0,0,0,115,18,0,0,0,2,128, + 12,1,12,1,6,1,4,2,12,2,4,7,8,253,4,3, + 115,22,0,0,0,2,128,10,1,2,12,10,245,2,3,6, + 254,4,2,12,4,4,5,8,255,4,1,115,64,0,0,0, + 0,0,8,11,8,20,8,60,32,59,8,60,5,25,12,15, + 12,24,12,72,36,71,12,72,9,34,19,33,13,16,13,16, + 19,34,13,16,9,75,9,75,9,75,9,75,9,75,9,75, + 12,23,5,23,9,25,9,25,9,25,9,25,12,23,5,23, + 114,10,0,0,0,114,32,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,115, + 20,0,0,0,116,0,124,0,131,1,100,1,64,0,160,1, + 100,2,100,3,161,2,83,0,41,5,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,78,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,7,0,0,0, + 218,12,95,112,97,99,107,95,117,105,110,116,51,50,79,0, + 0,0,114,25,0,0,0,114,25,0,0,0,115,20,0,0, + 0,13,16,17,18,13,19,22,32,13,32,12,55,43,44,46, + 54,12,55,5,55,114,10,0,0,0,114,39,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,28,0,0,0,116,0,124,0,131,1,100, 1,107,2,115,8,74,0,130,1,116,1,160,2,124,0,100, 2,161,2,83,0,41,4,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,32,0,0,0,114,33,0, - 0,0,78,169,3,114,4,0,0,0,114,34,0,0,0,218, + 105,110,116,101,103,101,114,46,114,34,0,0,0,114,35,0, + 0,0,78,169,3,114,4,0,0,0,114,36,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,7,0,0,0,218,14, 95,117,110,112,97,99,107,95,117,105,110,116,51,50,84,0, - 0,0,243,4,0,0,0,16,2,12,1,114,9,0,0,0, - 114,43,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,3,0,0,0,114,38,0,0,0,41, - 4,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,33,0,0,0,78,114,39,0, - 0,0,114,41,0,0,0,115,1,0,0,0,32,114,7,0, - 0,0,218,14,95,117,110,112,97,99,107,95,117,105,110,116, - 49,54,89,0,0,0,114,44,0,0,0,114,9,0,0,0, - 114,46,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,7,0,0,0,115,228,0,0,0,124, - 0,115,4,100,1,83,0,116,0,124,0,131,1,100,2,107, - 2,114,14,124,0,100,3,25,0,83,0,100,1,125,1,103, - 0,125,2,116,1,116,2,106,3,124,0,131,2,68,0,93, - 61,92,2,125,3,125,4,124,3,160,4,116,5,161,1,115, - 38,124,3,160,6,116,5,161,1,114,51,124,3,160,7,116, - 8,161,1,112,44,124,1,125,1,116,9,124,4,23,0,103, - 1,125,2,113,24,124,3,160,6,100,4,161,1,114,76,124, - 1,160,10,161,0,124,3,160,10,161,0,107,3,114,70,124, - 3,125,1,124,4,103,1,125,2,113,24,124,2,160,11,124, - 4,161,1,1,0,113,24,124,3,112,79,124,1,125,1,124, - 2,160,11,124,4,161,1,1,0,113,24,100,5,100,6,132, - 0,124,2,68,0,131,1,125,2,116,0,124,2,131,1,100, - 2,107,2,114,107,124,2,100,3,25,0,115,107,124,1,116, - 9,23,0,83,0,124,1,116,9,160,12,124,2,161,1,23, - 0,83,0,41,8,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,10,0,0,0,114,3,0,0,0, - 114,0,0,0,0,114,11,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,19,0,0,0,243, - 26,0,0,0,103,0,124,0,93,9,125,1,124,1,114,2, - 124,1,160,0,116,1,161,1,145,2,113,2,83,0,114,12, - 0,0,0,169,2,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,41,2, - 114,5,0,0,0,218,1,112,115,2,0,0,0,32,32,114, - 7,0,0,0,218,10,60,108,105,115,116,99,111,109,112,62, - 119,0,0,0,115,2,0,0,0,26,0,114,9,0,0,0, + 0,0,243,4,0,0,0,16,2,12,1,114,46,0,0,0, + 115,28,0,0,0,12,15,16,20,12,21,25,26,12,26,5, + 26,5,26,5,26,12,15,12,42,27,31,33,41,12,42,5, + 42,114,10,0,0,0,114,45,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, + 114,40,0,0,0,41,4,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,35,0, + 0,0,78,114,41,0,0,0,114,43,0,0,0,115,1,0, + 0,0,32,114,7,0,0,0,218,14,95,117,110,112,97,99, + 107,95,117,105,110,116,49,54,89,0,0,0,114,46,0,0, + 0,114,46,0,0,0,115,28,0,0,0,12,15,16,20,12, + 21,25,26,12,26,5,26,5,26,5,26,12,15,12,42,27, + 31,33,41,12,42,5,42,114,10,0,0,0,114,48,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,7,0,0,0,115,228,0,0,0,124,0,115,4,100, + 1,83,0,116,0,124,0,131,1,100,2,107,2,114,14,124, + 0,100,3,25,0,83,0,100,1,125,1,103,0,125,2,116, + 1,116,2,106,3,124,0,131,2,68,0,93,61,92,2,125, + 3,125,4,124,3,160,4,116,5,161,1,115,38,124,3,160, + 6,116,5,161,1,114,51,124,3,160,7,116,8,161,1,112, + 44,124,1,125,1,116,9,124,4,23,0,103,1,125,2,113, + 24,124,3,160,6,100,4,161,1,114,76,124,1,160,10,161, + 0,124,3,160,10,161,0,107,3,114,70,124,3,125,1,124, + 4,103,1,125,2,113,24,124,2,160,11,124,4,161,1,1, + 0,113,24,124,3,112,79,124,1,125,1,124,2,160,11,124, + 4,161,1,1,0,113,24,100,5,100,6,132,0,124,2,68, + 0,131,1,125,2,116,0,124,2,131,1,100,2,107,2,114, + 107,124,2,100,3,25,0,115,107,124,1,116,9,23,0,83, + 0,124,1,116,9,160,12,124,2,161,1,23,0,83,0,41, + 8,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,11,0,0,0,114,3,0,0,0,114,0,0,0, + 0,114,12,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,19,0,0,0,243,26,0,0,0, + 103,0,124,0,93,9,125,1,124,1,114,2,124,1,160,0, + 116,1,161,1,145,2,113,2,83,0,114,13,0,0,0,169, + 2,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,41,2,114,5,0,0, + 0,218,1,112,115,2,0,0,0,32,32,114,7,0,0,0, + 218,10,60,108,105,115,116,99,111,109,112,62,119,0,0,0, + 243,2,0,0,0,26,0,114,56,0,0,0,115,26,0,0, + 0,16,62,16,62,16,62,47,48,60,61,16,62,17,18,17, + 42,26,41,17,42,16,62,16,62,16,62,114,10,0,0,0, 250,30,95,112,97,116,104,95,106,111,105,110,46,60,108,111, 99,97,108,115,62,46,60,108,105,115,116,99,111,109,112,62, - 78,41,13,114,4,0,0,0,218,3,109,97,112,114,19,0, + 78,41,13,114,4,0,0,0,218,3,109,97,112,114,21,0, 0,0,218,15,95,112,97,116,104,95,115,112,108,105,116,114, - 111,111,116,114,27,0,0,0,218,14,112,97,116,104,95,115, + 111,111,116,114,29,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,114,50,0,0,0,114,51,0,0,0,218,8,112,97, + 116,104,114,52,0,0,0,114,53,0,0,0,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,5, 218,10,112,97,116,104,95,112,97,114,116,115,218,4,114,111, @@ -212,458 +234,600 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,105,110,96,0,0,0,115,42,0,0,0,4,2,4,1, 12,1,8,1,4,1,4,1,20,1,20,1,14,1,12,1, 10,1,16,1,4,3,8,1,12,2,8,2,12,1,14,1, - 20,1,8,2,14,1,114,9,0,0,0,114,67,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,7,0,0,0,115,20,0,0,0,116,0,160,1,100,1, - 100,2,132,0,124,0,68,0,131,1,161,1,83,0,41,4, - 114,47,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,19,0,0,0,114,48,0,0,0,114, - 12,0,0,0,114,49,0,0,0,41,2,114,5,0,0,0, - 218,4,112,97,114,116,115,2,0,0,0,32,32,114,7,0, - 0,0,114,53,0,0,0,128,0,0,0,115,6,0,0,0, - 6,0,4,1,16,255,114,9,0,0,0,114,54,0,0,0, - 78,41,2,114,59,0,0,0,114,62,0,0,0,41,1,114, - 63,0,0,0,115,1,0,0,0,32,114,7,0,0,0,114, - 67,0,0,0,126,0,0,0,115,6,0,0,0,10,2,2, - 1,8,255,114,9,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,3,0,0,0,115,68,0, - 0,0,135,0,116,0,136,0,102,1,100,1,100,2,132,8, - 116,1,68,0,131,1,131,1,125,1,124,1,100,3,107,0, - 114,20,100,4,137,0,102,2,83,0,137,0,100,5,124,1, - 133,2,25,0,137,0,124,1,100,6,23,0,100,5,133,2, - 25,0,102,2,83,0,41,7,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,115, - 26,0,0,0,129,0,124,0,93,8,125,1,137,2,160,0, - 124,1,161,1,86,0,1,0,113,2,100,0,83,0,169,1, - 78,41,1,218,5,114,102,105,110,100,41,3,114,5,0,0, - 0,114,52,0,0,0,114,65,0,0,0,115,3,0,0,0, - 32,32,128,114,7,0,0,0,114,8,0,0,0,134,0,0, - 0,115,4,0,0,0,2,128,24,0,114,9,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,114, - 0,0,0,0,114,10,0,0,0,78,114,3,0,0,0,41, - 2,218,3,109,97,120,114,51,0,0,0,41,2,114,65,0, - 0,0,218,1,105,115,2,0,0,0,96,32,114,7,0,0, - 0,218,11,95,112,97,116,104,95,115,112,108,105,116,132,0, - 0,0,115,10,0,0,0,2,128,22,2,8,1,8,1,28, - 1,114,9,0,0,0,114,73,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, - 115,10,0,0,0,116,0,106,1,124,0,131,1,83,0,41, - 2,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,78,41,2,114,19,0,0,0,90,4,115,116,97,116,169, - 1,114,65,0,0,0,115,1,0,0,0,32,114,7,0,0, - 0,218,10,95,112,97,116,104,95,115,116,97,116,140,0,0, - 0,115,2,0,0,0,10,7,114,9,0,0,0,114,75,0, - 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,3,0,0,0,115,50,0,0,0,9,0,116,0, - 124,0,131,1,125,2,110,11,35,0,4,0,116,1,121,24, - 1,0,1,0,1,0,89,0,100,1,83,0,37,0,124,2, - 106,2,100,2,64,0,124,1,107,2,83,0,119,0,41,4, - 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,78,41,3,114,75,0,0, - 0,218,7,79,83,69,114,114,111,114,218,7,115,116,95,109, - 111,100,101,41,3,114,65,0,0,0,218,4,109,111,100,101, - 90,9,115,116,97,116,95,105,110,102,111,115,3,0,0,0, - 32,32,32,114,7,0,0,0,218,18,95,112,97,116,104,95, - 105,115,95,109,111,100,101,95,116,121,112,101,150,0,0,0, - 115,16,0,0,0,2,2,10,1,2,128,12,1,6,1,2, - 128,14,1,2,254,115,12,0,0,0,129,4,6,0,134,7, - 16,7,152,1,16,7,114,79,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 115,10,0,0,0,116,0,124,0,100,1,131,2,83,0,41, - 3,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,78,41,1,114,79,0,0,0,114, - 74,0,0,0,115,1,0,0,0,32,114,7,0,0,0,218, - 12,95,112,97,116,104,95,105,115,102,105,108,101,159,0,0, - 0,243,2,0,0,0,10,2,114,9,0,0,0,114,80,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,115,22,0,0,0,124,0,115,6, - 116,0,106,1,131,0,125,0,116,2,124,0,100,1,131,2, - 83,0,41,3,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,78,41,3,114,19,0,0, - 0,218,6,103,101,116,99,119,100,114,79,0,0,0,114,74, - 0,0,0,115,1,0,0,0,32,114,7,0,0,0,218,11, - 95,112,97,116,104,95,105,115,100,105,114,164,0,0,0,115, - 6,0,0,0,4,2,8,1,10,1,114,9,0,0,0,114, - 83,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,3,0,0,0,115,62,0,0,0,124,0, - 115,4,100,1,83,0,116,0,106,1,124,0,131,1,100,2, - 25,0,160,2,100,3,100,4,161,2,125,1,116,3,124,1, - 131,1,100,5,107,4,111,30,124,1,160,4,100,6,161,1, - 112,30,124,1,160,5,100,4,161,1,83,0,41,8,250,30, + 20,1,8,2,14,1,115,60,0,0,0,2,2,6,1,10, + 1,10,1,4,1,4,1,10,1,4,14,6,242,8,1,2, + 13,8,243,2,13,14,244,12,1,8,1,2,10,14,247,2, + 6,4,253,8,1,12,2,8,2,12,1,14,1,10,1,2, + 2,6,254,10,2,14,1,115,228,0,0,0,16,26,9,22, + 20,22,20,22,12,15,16,26,12,27,31,32,12,32,9,33, + 20,30,31,32,20,33,13,33,16,18,9,13,16,18,9,13, + 31,34,35,38,35,54,56,66,31,67,9,34,9,34,13,27, + 13,21,23,27,16,24,16,51,36,50,16,51,13,34,55,63, + 55,88,73,87,55,88,13,34,24,32,24,56,40,55,24,56, + 24,64,60,64,17,21,25,33,36,40,25,40,24,41,17,21, + 17,21,18,26,18,40,36,39,18,40,13,34,20,24,20,35, + 20,35,39,47,39,58,39,58,20,58,17,38,28,36,21,25, + 29,33,28,34,21,25,21,25,21,25,21,38,33,37,21,38, + 21,38,21,38,24,32,24,40,36,40,17,21,17,21,17,34, + 29,33,17,34,17,34,17,34,16,62,16,62,16,62,52,56, + 16,62,16,62,9,13,12,15,16,20,12,21,25,26,12,26, + 9,35,35,39,40,41,35,42,9,35,20,24,27,35,20,35, + 13,35,16,20,23,31,23,42,37,41,23,42,16,42,9,42, + 114,10,0,0,0,114,70,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,7,0,0,0,115, + 20,0,0,0,116,0,160,1,100,1,100,2,132,0,124,0, + 68,0,131,1,161,1,83,0,41,4,114,49,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 19,0,0,0,114,50,0,0,0,114,13,0,0,0,114,51, + 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, + 115,2,0,0,0,32,32,114,7,0,0,0,114,55,0,0, + 0,128,0,0,0,115,6,0,0,0,6,0,4,1,16,255, + 115,6,0,0,0,12,1,8,255,6,1,115,26,0,0,0, + 30,62,30,62,30,62,35,39,57,61,30,62,31,35,31,59, + 43,58,31,59,30,62,30,62,30,62,114,10,0,0,0,114, + 57,0,0,0,78,41,2,114,62,0,0,0,114,65,0,0, + 0,41,1,114,66,0,0,0,115,1,0,0,0,32,114,7, + 0,0,0,114,70,0,0,0,126,0,0,0,115,6,0,0, + 0,10,2,2,1,8,255,115,4,0,0,0,2,2,18,1, + 115,20,0,0,0,16,24,16,63,30,62,30,62,30,62,43, + 53,30,62,30,62,16,63,9,63,114,10,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, + 0,0,0,115,68,0,0,0,135,0,116,0,136,0,102,1, + 100,1,100,2,132,8,116,1,68,0,131,1,131,1,125,1, + 124,1,100,3,107,0,114,20,100,4,137,0,102,2,83,0, + 137,0,100,5,124,1,133,2,25,0,137,0,124,1,100,6, + 23,0,100,5,133,2,25,0,102,2,83,0,41,7,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,105,115,97,98,115,46,70,114, - 0,0,0,0,114,2,0,0,0,114,1,0,0,0,114,3, - 0,0,0,122,2,92,92,78,41,6,114,19,0,0,0,114, - 56,0,0,0,218,7,114,101,112,108,97,99,101,114,4,0, - 0,0,114,27,0,0,0,114,58,0,0,0,41,2,114,65, - 0,0,0,114,64,0,0,0,115,2,0,0,0,32,32,114, - 7,0,0,0,218,11,95,112,97,116,104,95,105,115,97,98, - 115,172,0,0,0,115,8,0,0,0,4,2,4,1,22,1, - 32,1,114,9,0,0,0,114,86,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, - 0,115,10,0,0,0,124,0,160,0,116,1,161,1,83,0, - 41,2,114,84,0,0,0,78,41,2,114,27,0,0,0,114, - 51,0,0,0,114,74,0,0,0,115,1,0,0,0,32,114, - 7,0,0,0,114,86,0,0,0,180,0,0,0,114,81,0, - 0,0,114,9,0,0,0,233,182,1,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,11,0,0,0,3,0,0, - 0,115,178,0,0,0,100,1,160,0,124,0,116,1,124,0, - 131,1,161,2,125,3,116,2,106,3,124,3,116,2,106,4, - 116,2,106,5,66,0,116,2,106,6,66,0,124,2,100,2, - 64,0,131,3,125,4,9,0,116,7,106,8,124,4,100,3, - 131,2,53,0,125,5,124,5,160,9,124,1,161,1,1,0, - 100,4,4,0,4,0,131,3,1,0,110,11,35,0,49,0, - 115,48,119,4,37,0,1,0,1,0,1,0,89,0,1,0, - 1,0,116,2,106,10,124,3,124,0,131,2,1,0,100,4, - 83,0,35,0,4,0,116,11,121,88,1,0,1,0,1,0, - 9,0,116,2,106,12,124,3,131,1,1,0,130,0,35,0, - 4,0,116,11,121,87,1,0,1,0,1,0,89,0,130,0, - 37,0,37,0,119,0,119,0,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,250,5, - 123,125,46,123,125,114,87,0,0,0,90,2,119,98,78,41, - 13,218,6,102,111,114,109,97,116,218,2,105,100,114,19,0, - 0,0,90,4,111,112,101,110,90,6,79,95,69,88,67,76, - 90,7,79,95,67,82,69,65,84,90,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,85,0,0,0,114,76,0,0, - 0,90,6,117,110,108,105,110,107,41,6,114,65,0,0,0, - 114,42,0,0,0,114,78,0,0,0,90,8,112,97,116,104, - 95,116,109,112,90,2,102,100,218,4,102,105,108,101,115,6, - 0,0,0,32,32,32,32,32,32,114,7,0,0,0,218,13, - 95,119,114,105,116,101,95,97,116,111,109,105,99,185,0,0, - 0,115,46,0,0,0,16,5,6,1,22,1,4,255,2,2, - 14,3,10,1,20,255,2,128,12,0,16,2,2,128,12,1, - 2,1,10,1,2,3,2,128,12,254,2,1,2,1,4,128, - 2,254,2,253,115,69,0,0,0,153,6,62,0,159,6,43, - 3,165,6,62,0,171,4,47,11,175,1,62,0,176,3,47, - 11,179,9,62,0,190,7,65,22,7,193,6,5,65,12,6, - 193,11,1,65,22,7,193,12,7,65,21,13,193,19,3,65, - 22,7,193,23,1,65,21,13,193,24,1,65,22,7,114,95, - 0,0,0,105,130,13,0,0,114,45,0,0,0,114,33,0, - 0,0,115,2,0,0,0,13,10,90,11,95,95,112,121,99, - 97,99,104,101,95,95,122,4,111,112,116,45,122,3,46,112, - 121,122,4,46,112,121,119,122,4,46,112,121,99,41,1,218, - 12,111,112,116,105,109,105,122,97,116,105,111,110,99,2,0, - 0,0,0,0,0,0,1,0,0,0,5,0,0,0,3,0, - 0,0,115,80,1,0,0,124,1,100,1,117,1,114,26,116, - 0,106,1,100,2,116,2,131,2,1,0,124,2,100,1,117, - 1,114,20,100,3,125,3,116,3,124,3,131,1,130,1,124, - 1,114,24,100,4,110,1,100,5,125,2,116,4,106,5,124, - 0,131,1,125,0,116,6,124,0,131,1,92,2,125,4,125, - 5,124,5,160,7,100,6,161,1,92,3,125,6,125,7,125, - 8,116,8,106,9,106,10,125,9,124,9,100,1,117,0,114, - 57,116,11,100,7,131,1,130,1,100,4,160,12,124,6,114, - 63,124,6,110,1,124,8,124,7,124,9,103,3,161,1,125, - 10,124,2,100,1,117,0,114,86,116,8,106,13,106,14,100, - 8,107,2,114,82,100,4,125,2,110,4,116,8,106,13,106, - 14,125,2,116,15,124,2,131,1,125,2,124,2,100,4,107, - 3,114,112,124,2,160,16,161,0,115,105,116,17,100,9,160, - 18,124,2,161,1,131,1,130,1,100,10,160,18,124,10,116, - 19,124,2,161,3,125,10,124,10,116,20,100,8,25,0,23, - 0,125,11,116,8,106,21,100,1,117,1,114,162,116,22,124, - 4,131,1,115,134,116,23,116,4,106,24,131,0,124,4,131, - 2,125,4,124,4,100,5,25,0,100,11,107,2,114,152,124, - 4,100,8,25,0,116,25,118,1,114,152,124,4,100,12,100, - 1,133,2,25,0,125,4,116,23,116,8,106,21,124,4,160, - 26,116,25,161,1,124,11,131,3,83,0,116,23,124,4,116, - 27,124,11,131,3,83,0,41,13,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,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,115,26,0,0,0,129,0,124,0,93,8, + 125,1,137,2,160,0,124,1,161,1,86,0,1,0,113,2, + 100,0,83,0,169,1,78,41,1,218,5,114,102,105,110,100, + 41,3,114,5,0,0,0,114,54,0,0,0,114,68,0,0, + 0,115,3,0,0,0,32,32,128,114,7,0,0,0,114,8, + 0,0,0,134,0,0,0,243,4,0,0,0,2,128,24,0, + 114,74,0,0,0,115,26,0,0,0,0,0,12,52,12,52, + 31,32,13,17,13,26,24,25,13,26,12,52,12,52,12,52, + 12,52,12,52,114,10,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,114,0,0,0,0,114,11, + 0,0,0,78,114,3,0,0,0,41,2,218,3,109,97,120, + 114,53,0,0,0,41,2,114,68,0,0,0,218,1,105,115, + 2,0,0,0,96,32,114,7,0,0,0,218,11,95,112,97, + 116,104,95,115,112,108,105,116,132,0,0,0,115,10,0,0, + 0,2,128,22,2,8,1,8,1,28,1,115,10,0,0,0, + 2,128,22,2,6,1,10,1,28,1,115,68,0,0,0,0, + 0,9,12,12,52,12,52,12,52,12,52,12,52,36,51,12, + 52,12,52,9,52,5,6,8,9,12,13,8,13,5,24,16, + 18,20,24,16,24,9,24,12,16,17,19,18,19,17,19,12, + 20,22,26,27,28,31,32,27,32,27,33,27,33,22,34,12, + 34,5,34,114,10,0,0,0,114,77,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,115,10,0,0,0,116,0,106,1,124,0,131,1,83, + 0,41,2,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,78,41,2,114,21,0,0,0,90,4,115,116,97, + 116,169,1,114,68,0,0,0,115,1,0,0,0,32,114,7, + 0,0,0,218,10,95,112,97,116,104,95,115,116,97,116,140, + 0,0,0,243,2,0,0,0,10,7,114,80,0,0,0,115, + 10,0,0,0,12,15,12,20,21,25,12,26,5,26,114,10, + 0,0,0,114,79,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,3,0,0,0,115,50,0, + 0,0,9,0,116,0,124,0,131,1,125,2,110,11,35,0, + 4,0,116,1,121,24,1,0,1,0,1,0,89,0,100,1, + 83,0,37,0,124,2,106,2,100,2,64,0,124,1,107,2, + 83,0,119,0,41,4,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,78, + 41,3,114,79,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,90,9,115,116,97,116,95,105,110,102, + 111,115,3,0,0,0,32,32,32,114,7,0,0,0,218,18, + 95,112,97,116,104,95,105,115,95,109,111,100,101,95,116,121, + 112,101,150,0,0,0,115,16,0,0,0,2,2,10,1,2, + 128,12,1,6,1,2,128,14,1,2,254,115,18,0,0,0, + 2,5,10,254,2,128,2,2,2,255,14,1,2,128,14,1, + 2,255,115,50,0,0,0,5,21,21,31,32,36,21,37,9, + 18,9,18,0,0,5,21,12,19,5,21,5,21,5,21,5, + 21,16,21,16,21,16,21,0,0,13,22,13,30,33,41,13, + 41,46,50,12,50,5,50,5,21,115,12,0,0,0,129,4, + 6,0,134,7,16,7,152,1,16,7,114,84,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,115,10,0,0,0,116,0,124,0,100,1,131, + 2,83,0,41,3,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,78,41,1,114,84, + 0,0,0,114,78,0,0,0,115,1,0,0,0,32,114,7, + 0,0,0,218,12,95,112,97,116,104,95,105,115,102,105,108, + 101,159,0,0,0,243,2,0,0,0,10,2,114,86,0,0, + 0,115,10,0,0,0,12,30,31,35,37,45,12,46,5,46, + 114,10,0,0,0,114,85,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,115, + 22,0,0,0,124,0,115,6,116,0,106,1,131,0,125,0, + 116,2,124,0,100,1,131,2,83,0,41,3,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,78,41,3,114,21,0,0,0,218,6,103,101,116,99,119, + 100,114,84,0,0,0,114,78,0,0,0,115,1,0,0,0, + 32,114,7,0,0,0,218,11,95,112,97,116,104,95,105,115, + 100,105,114,164,0,0,0,115,6,0,0,0,4,2,8,1, + 10,1,115,6,0,0,0,2,2,10,1,10,1,115,22,0, + 0,0,12,16,5,28,16,19,16,26,16,28,9,13,12,30, + 31,35,37,45,12,46,5,46,114,10,0,0,0,114,88,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,3,0,0,0,115,62,0,0,0,124,0,115,4, + 100,1,83,0,116,0,106,1,124,0,131,1,100,2,25,0, + 160,2,100,3,100,4,161,2,125,1,116,3,124,1,131,1, + 100,5,107,4,111,30,124,1,160,4,100,6,161,1,112,30, + 124,1,160,5,100,4,161,1,83,0,41,8,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,0,0, + 0,0,114,2,0,0,0,114,1,0,0,0,114,3,0,0, + 0,122,2,92,92,78,41,6,114,21,0,0,0,114,59,0, + 0,0,218,7,114,101,112,108,97,99,101,114,4,0,0,0, + 114,29,0,0,0,114,61,0,0,0,41,2,114,68,0,0, + 0,114,67,0,0,0,115,2,0,0,0,32,32,114,7,0, + 0,0,218,11,95,112,97,116,104,95,105,115,97,98,115,172, + 0,0,0,115,8,0,0,0,4,2,4,1,22,1,32,1, + 115,8,0,0,0,2,2,6,1,22,1,32,1,115,62,0, + 0,0,16,20,9,25,20,25,20,25,16,19,16,35,36,40, + 16,41,42,43,16,44,16,63,53,56,58,62,16,63,9,13, + 16,19,20,24,16,25,28,29,16,29,16,82,35,39,35,58, + 51,57,35,58,35,81,62,66,62,81,76,80,62,81,9,82, + 114,10,0,0,0,114,91,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,115, + 10,0,0,0,124,0,160,0,116,1,161,1,83,0,41,2, + 114,89,0,0,0,78,41,2,114,29,0,0,0,114,53,0, + 0,0,114,78,0,0,0,115,1,0,0,0,32,114,7,0, + 0,0,114,91,0,0,0,180,0,0,0,114,86,0,0,0, + 114,86,0,0,0,115,10,0,0,0,16,20,16,48,32,47, + 16,48,9,48,114,10,0,0,0,233,182,1,0,0,99,3, + 0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,3, + 0,0,0,115,178,0,0,0,100,1,160,0,124,0,116,1, + 124,0,131,1,161,2,125,3,116,2,106,3,124,3,116,2, + 106,4,116,2,106,5,66,0,116,2,106,6,66,0,124,2, + 100,2,64,0,131,3,125,4,9,0,116,7,106,8,124,4, + 100,3,131,2,53,0,125,5,124,5,160,9,124,1,161,1, + 1,0,100,4,4,0,4,0,131,3,1,0,110,11,35,0, + 49,0,115,48,119,4,37,0,1,0,1,0,1,0,89,0, + 1,0,1,0,116,2,106,10,124,3,124,0,131,2,1,0, + 100,4,83,0,35,0,4,0,116,11,121,88,1,0,1,0, + 1,0,9,0,116,2,106,12,124,3,131,1,1,0,130,0, + 35,0,4,0,116,11,121,87,1,0,1,0,1,0,89,0, + 130,0,37,0,37,0,119,0,119,0,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, + 250,5,123,125,46,123,125,114,92,0,0,0,90,2,119,98, + 78,41,13,218,6,102,111,114,109,97,116,218,2,105,100,114, + 21,0,0,0,90,4,111,112,101,110,90,6,79,95,69,88, + 67,76,90,7,79,95,67,82,69,65,84,90,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,90,0,0,0,114,81, + 0,0,0,90,6,117,110,108,105,110,107,41,6,114,68,0, + 0,0,114,44,0,0,0,114,83,0,0,0,90,8,112,97, + 116,104,95,116,109,112,90,2,102,100,218,4,102,105,108,101, + 115,6,0,0,0,32,32,32,32,32,32,114,7,0,0,0, + 218,13,95,119,114,105,116,101,95,97,116,111,109,105,99,185, + 0,0,0,115,46,0,0,0,16,5,6,1,22,1,4,255, + 2,2,14,3,10,1,20,255,2,128,12,0,16,2,2,128, + 12,1,2,1,10,1,2,3,2,128,12,254,2,1,2,1, + 4,128,2,254,2,253,115,54,0,0,0,16,5,6,1,24, + 1,2,255,2,13,10,248,2,1,2,255,30,1,2,128,12, + 0,16,1,2,128,2,6,2,251,8,5,2,255,10,254,2, + 3,2,128,2,255,2,255,10,1,2,1,4,128,2,255,2, + 1,115,178,0,0,0,16,23,16,46,31,35,37,39,40,44, + 37,45,16,46,5,13,10,13,10,18,19,27,19,22,19,29, + 32,35,32,43,19,43,46,49,46,58,19,58,60,64,67,72, + 60,72,10,73,5,7,5,14,14,17,14,24,25,27,29,33, + 14,34,9,29,38,42,13,17,13,29,24,28,13,29,13,29, + 9,29,9,29,9,29,9,29,9,29,9,29,9,29,9,29, + 9,29,9,29,0,0,9,29,9,29,9,29,9,29,9,29, + 9,29,9,12,9,20,21,29,31,35,9,36,9,36,9,36, + 9,36,0,0,5,14,12,19,5,14,5,14,5,14,5,14, + 9,17,13,16,13,23,24,32,13,33,13,33,9,14,0,0, + 9,17,16,23,9,17,9,17,9,17,9,17,13,17,9,14, + 0,0,0,0,9,17,5,14,115,69,0,0,0,153,6,62, + 0,159,6,43,3,165,6,62,0,171,4,47,11,175,1,62, + 0,176,3,47,11,179,9,62,0,190,7,65,22,7,193,6, + 5,65,12,6,193,11,1,65,22,7,193,12,7,65,21,13, + 193,19,3,65,22,7,193,23,1,65,21,13,193,24,1,65, + 22,7,114,100,0,0,0,105,131,13,0,0,114,47,0,0, + 0,114,35,0,0,0,115,2,0,0,0,13,10,90,11,95, + 95,112,121,99,97,99,104,101,95,95,122,4,111,112,116,45, + 122,3,46,112,121,122,4,46,112,121,119,122,4,46,112,121, + 99,41,1,218,12,111,112,116,105,109,105,122,97,116,105,111, + 110,99,2,0,0,0,0,0,0,0,1,0,0,0,5,0, + 0,0,3,0,0,0,115,80,1,0,0,124,1,100,1,117, + 1,114,26,116,0,106,1,100,2,116,2,131,2,1,0,124, + 2,100,1,117,1,114,20,100,3,125,3,116,3,124,3,131, + 1,130,1,124,1,114,24,100,4,110,1,100,5,125,2,116, + 4,106,5,124,0,131,1,125,0,116,6,124,0,131,1,92, + 2,125,4,125,5,124,5,160,7,100,6,161,1,92,3,125, + 6,125,7,125,8,116,8,106,9,106,10,125,9,124,9,100, + 1,117,0,114,57,116,11,100,7,131,1,130,1,100,4,160, + 12,124,6,114,63,124,6,110,1,124,8,124,7,124,9,103, + 3,161,1,125,10,124,2,100,1,117,0,114,86,116,8,106, + 13,106,14,100,8,107,2,114,82,100,4,125,2,110,4,116, + 8,106,13,106,14,125,2,116,15,124,2,131,1,125,2,124, + 2,100,4,107,3,114,112,124,2,160,16,161,0,115,105,116, + 17,100,9,160,18,124,2,161,1,131,1,130,1,100,10,160, + 18,124,10,116,19,124,2,161,3,125,10,124,10,116,20,100, + 8,25,0,23,0,125,11,116,8,106,21,100,1,117,1,114, + 162,116,22,124,4,131,1,115,134,116,23,116,4,106,24,131, + 0,124,4,131,2,125,4,124,4,100,5,25,0,100,11,107, + 2,114,152,124,4,100,8,25,0,116,25,118,1,114,152,124, + 4,100,12,100,1,133,2,25,0,125,4,116,23,116,8,106, + 21,124,4,160,26,116,25,161,1,124,11,131,3,83,0,116, + 23,124,4,116,27,124,11,131,3,83,0,41,13,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,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,10,0,0,0,114,3, - 0,0,0,218,1,46,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,0,0,0, - 0,122,24,123,33,114,125,32,105,115,32,110,111,116,32,97, - 108,112,104,97,110,117,109,101,114,105,99,122,7,123,125,46, - 123,125,123,125,114,11,0,0,0,114,45,0,0,0,41,28, - 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,19,0,0,0,218,6,102,115,112,97,116,104,114,73,0, - 0,0,218,10,114,112,97,114,116,105,116,105,111,110,114,16, - 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,62,0,0,0,114,17,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,114,89,0,0,0,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, - 86,0,0,0,114,67,0,0,0,114,82,0,0,0,114,51, - 0,0,0,218,6,108,115,116,114,105,112,218,8,95,80,89, - 67,65,67,72,69,41,12,114,65,0,0,0,90,14,100,101, - 98,117,103,95,111,118,101,114,114,105,100,101,114,96,0,0, - 0,218,7,109,101,115,115,97,103,101,218,4,104,101,97,100, - 114,66,0,0,0,90,4,98,97,115,101,114,6,0,0,0, - 218,4,114,101,115,116,90,3,116,97,103,90,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,7,0,0,0,218,17,99,97, - 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,133, - 1,0,0,115,72,0,0,0,8,18,6,1,2,1,4,255, - 8,2,4,1,8,1,12,1,10,1,12,1,16,1,8,1, - 8,1,8,1,24,1,8,1,12,1,6,1,8,2,8,1, - 8,1,8,1,14,1,14,1,12,1,10,1,8,9,14,1, - 24,5,12,1,2,4,4,1,8,1,2,1,4,253,12,5, - 114,9,0,0,0,114,121,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, - 40,1,0,0,116,0,106,1,106,2,100,1,117,0,114,10, - 116,3,100,2,131,1,130,1,116,4,106,5,124,0,131,1, - 125,0,116,6,124,0,131,1,92,2,125,1,125,2,100,3, - 125,3,116,0,106,7,100,1,117,1,114,51,116,0,106,7, - 160,8,116,9,161,1,125,4,124,1,160,10,124,4,116,11, - 23,0,161,1,114,51,124,1,116,12,124,4,131,1,100,1, - 133,2,25,0,125,1,100,4,125,3,124,3,115,72,116,6, - 124,1,131,1,92,2,125,1,125,5,124,5,116,13,107,3, - 114,72,116,14,116,13,155,0,100,5,124,0,155,2,157,3, - 131,1,130,1,124,2,160,15,100,6,161,1,125,6,124,6, - 100,7,118,1,114,88,116,14,100,8,124,2,155,2,157,2, - 131,1,130,1,124,6,100,9,107,2,114,132,124,2,160,16, - 100,6,100,10,161,2,100,11,25,0,125,7,124,7,160,10, - 116,17,161,1,115,112,116,14,100,12,116,17,155,2,157,2, - 131,1,130,1,124,7,116,12,116,17,131,1,100,1,133,2, - 25,0,125,8,124,8,160,18,161,0,115,132,116,14,100,13, - 124,7,155,2,100,14,157,3,131,1,130,1,124,2,160,19, - 100,6,161,1,100,15,25,0,125,9,116,20,124,1,124,9, - 116,21,100,15,25,0,23,0,131,2,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,98,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,97,0,0,0,62, - 2,0,0,0,114,45,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,122,0, - 0,0,114,45,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,0,0,0,0,41,22,114,16, - 0,0,0,114,105,0,0,0,114,106,0,0,0,114,107,0, - 0,0,114,19,0,0,0,114,103,0,0,0,114,73,0,0, - 0,114,114,0,0,0,114,50,0,0,0,114,51,0,0,0, - 114,27,0,0,0,114,59,0,0,0,114,4,0,0,0,114, - 116,0,0,0,114,111,0,0,0,218,5,99,111,117,110,116, - 218,6,114,115,112,108,105,116,114,112,0,0,0,114,110,0, - 0,0,218,9,112,97,114,116,105,116,105,111,110,114,67,0, - 0,0,218,15,83,79,85,82,67,69,95,83,85,70,70,73, - 88,69,83,41,10,114,65,0,0,0,114,118,0,0,0,90, - 16,112,121,99,97,99,104,101,95,102,105,108,101,110,97,109, - 101,90,23,102,111,117,110,100,95,105,110,95,112,121,99,97, - 99,104,101,95,112,114,101,102,105,120,90,13,115,116,114,105, - 112,112,101,100,95,112,97,116,104,90,7,112,121,99,97,99, - 104,101,90,9,100,111,116,95,99,111,117,110,116,114,96,0, - 0,0,90,9,111,112,116,95,108,101,118,101,108,90,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,7,0,0,0, - 218,17,115,111,117,114,99,101,95,102,114,111,109,95,99,97, - 99,104,101,204,1,0,0,115,60,0,0,0,12,9,8,1, - 10,1,12,1,4,1,10,1,12,1,14,1,16,1,4,1, - 4,1,12,1,8,1,8,1,2,1,8,255,10,2,8,1, - 14,1,8,1,16,1,10,1,4,1,2,1,8,255,16,2, - 8,1,16,1,14,2,18,1,114,9,0,0,0,114,128,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,9, - 0,0,0,3,0,0,0,115,126,0,0,0,116,0,124,0, - 131,1,100,1,107,2,114,8,100,2,83,0,124,0,160,1, - 100,3,161,1,92,3,125,1,125,2,125,3,124,1,114,28, - 124,3,160,2,161,0,100,4,100,5,133,2,25,0,100,6, - 107,3,114,30,124,0,83,0,9,0,116,3,124,0,131,1, - 125,4,110,18,35,0,4,0,116,4,116,5,102,2,121,62, - 1,0,1,0,1,0,124,0,100,2,100,5,133,2,25,0, - 125,4,89,0,110,1,37,0,116,6,124,4,131,1,114,60, - 124,4,83,0,124,0,83,0,119,0,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,0,0,0,0,78, - 114,97,0,0,0,233,253,255,255,255,233,255,255,255,255,90, - 2,112,121,41,7,114,4,0,0,0,114,104,0,0,0,218, - 5,108,111,119,101,114,114,128,0,0,0,114,107,0,0,0, - 114,111,0,0,0,114,80,0,0,0,41,5,218,13,98,121, - 116,101,99,111,100,101,95,112,97,116,104,114,119,0,0,0, - 218,1,95,90,9,101,120,116,101,110,115,105,111,110,218,11, - 115,111,117,114,99,101,95,112,97,116,104,115,5,0,0,0, - 32,32,32,32,32,114,7,0,0,0,218,15,95,103,101,116, - 95,115,111,117,114,99,101,102,105,108,101,244,1,0,0,115, - 26,0,0,0,12,7,4,1,16,1,24,1,4,1,2,1, - 10,1,2,128,16,1,16,1,2,128,16,1,2,254,115,12, - 0,0,0,159,4,36,0,164,15,53,7,190,1,53,7,114, - 135,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,3,0,0,0,115,70,0,0,0,124,0, - 160,0,116,1,116,2,131,1,161,1,114,23,9,0,116,3, - 124,0,131,1,83,0,35,0,4,0,116,4,121,34,1,0, - 1,0,1,0,89,0,100,0,83,0,37,0,124,0,160,0, - 116,1,116,5,131,1,161,1,114,32,124,0,83,0,100,0, - 83,0,119,0,114,69,0,0,0,41,6,114,58,0,0,0, - 218,5,116,117,112,108,101,114,127,0,0,0,114,121,0,0, - 0,114,107,0,0,0,114,113,0,0,0,41,1,114,120,0, - 0,0,115,1,0,0,0,32,114,7,0,0,0,218,11,95, - 103,101,116,95,99,97,99,104,101,100,7,2,0,0,115,22, - 0,0,0,14,1,2,1,8,1,2,128,12,1,6,1,2, - 128,14,1,4,1,4,2,2,251,115,12,0,0,0,136,3, - 12,0,140,7,22,7,162,1,22,7,114,137,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 3,0,0,0,115,52,0,0,0,9,0,116,0,124,0,131, - 1,106,1,125,1,110,12,35,0,4,0,116,2,121,25,1, - 0,1,0,1,0,100,1,125,1,89,0,110,1,37,0,124, - 1,100,2,79,0,125,1,124,1,83,0,119,0,41,4,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,87,0,0,0,233,128,0,0,0,78,41, - 3,114,75,0,0,0,114,77,0,0,0,114,76,0,0,0, - 41,2,114,65,0,0,0,114,78,0,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,218,10,95,99,97,108,99,95, - 109,111,100,101,19,2,0,0,115,18,0,0,0,2,2,12, - 1,2,128,12,1,8,1,2,128,8,3,4,1,2,251,115, - 12,0,0,0,129,5,7,0,135,9,18,7,153,1,18,7, - 114,139,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,3,0,0,0,115,54,0,0,0,135, - 0,100,6,136,0,102,1,100,2,100,3,132,9,125,1,116, - 0,100,1,117,1,114,16,116,0,106,1,125,2,110,4,100, - 4,100,5,132,0,125,2,124,2,124,1,137,0,131,2,1, - 0,124,1,83,0,41,7,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, + 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,11,0, + 0,0,114,3,0,0,0,218,1,46,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,0,0,0,0,122,24,123,33,114,125,32,105,115,32,110, + 111,116,32,97,108,112,104,97,110,117,109,101,114,105,99,122, + 7,123,125,46,123,125,123,125,114,12,0,0,0,114,47,0, + 0,0,41,28,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,21,0,0,0,218,6,102,115,112,97,116, + 104,114,77,0,0,0,218,10,114,112,97,114,116,105,116,105, + 111,110,114,18,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,19,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,114,94,0,0,0,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,91,0,0,0,114,70,0,0,0,114,87,0, + 0,0,114,53,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, + 90,14,100,101,98,117,103,95,111,118,101,114,114,105,100,101, + 114,101,0,0,0,218,7,109,101,115,115,97,103,101,218,4, + 104,101,97,100,114,69,0,0,0,90,4,98,97,115,101,114, + 6,0,0,0,218,4,114,101,115,116,90,3,116,97,103,90, + 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,7,0,0,0, + 218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,117, + 114,99,101,134,1,0,0,115,72,0,0,0,8,18,6,1, + 2,1,4,255,8,2,4,1,8,1,12,1,10,1,12,1, + 16,1,8,1,8,1,8,1,24,1,8,1,12,1,6,1, + 8,2,8,1,8,1,8,1,14,1,14,1,12,1,10,1, + 8,9,14,1,24,5,12,1,2,4,4,1,8,1,2,1, + 4,253,12,5,115,86,0,0,0,6,18,2,6,4,251,8, + 1,6,1,2,2,4,255,8,1,12,1,10,1,12,1,16, + 1,8,1,6,1,10,1,24,1,6,1,2,4,10,253,2, + 3,6,254,8,2,8,1,6,1,2,3,6,254,16,1,14, + 1,12,1,8,1,2,24,6,241,16,1,10,5,2,1,10, + 255,14,1,2,4,4,1,8,1,2,1,4,1,12,1,115, + 80,1,0,0,8,22,30,34,8,34,5,51,9,18,9,23, + 24,48,50,68,9,69,9,69,12,24,32,36,12,36,9,37, + 23,75,13,20,19,28,29,36,19,37,13,37,30,44,24,51, + 24,26,24,26,50,51,9,21,12,15,12,22,23,27,12,28, + 5,9,18,29,30,34,18,35,5,15,5,9,11,15,23,27, + 23,43,39,42,23,43,5,20,5,9,11,14,16,20,11,14, + 11,29,11,39,5,8,8,11,15,19,8,19,5,74,15,34, + 35,73,15,74,9,74,23,25,23,68,41,45,33,55,33,37, + 33,37,51,55,58,61,63,66,31,67,23,68,5,20,8,20, + 24,28,8,28,5,46,12,15,12,21,12,30,34,35,12,35, + 9,46,28,30,13,25,13,25,28,31,28,37,28,46,13,25, + 20,23,24,36,20,37,5,17,8,20,24,26,8,26,5,80, + 16,28,16,38,16,38,9,78,19,29,30,56,30,77,64,76, + 30,77,19,78,13,78,27,36,27,80,44,59,61,65,67,79, + 27,80,9,24,16,31,34,51,52,53,34,54,16,54,5,13, + 8,11,8,26,34,38,8,38,5,10,16,27,28,32,16,33, + 9,50,20,30,31,34,31,41,31,43,45,49,20,50,13,17, + 12,16,17,18,12,19,23,26,12,26,9,28,31,35,36,37, + 31,38,46,61,31,61,9,28,20,24,25,26,25,27,25,27, + 20,28,13,17,16,26,13,16,13,31,13,17,13,41,25,40, + 13,41,13,21,16,10,9,10,12,22,23,27,29,37,39,47, + 12,48,5,48,114,10,0,0,0,114,126,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3, + 0,0,0,115,40,1,0,0,116,0,106,1,106,2,100,1, + 117,0,114,10,116,3,100,2,131,1,130,1,116,4,106,5, + 124,0,131,1,125,0,116,6,124,0,131,1,92,2,125,1, + 125,2,100,3,125,3,116,0,106,7,100,1,117,1,114,51, + 116,0,106,7,160,8,116,9,161,1,125,4,124,1,160,10, + 124,4,116,11,23,0,161,1,114,51,124,1,116,12,124,4, + 131,1,100,1,133,2,25,0,125,1,100,4,125,3,124,3, + 115,72,116,6,124,1,131,1,92,2,125,1,125,5,124,5, + 116,13,107,3,114,72,116,14,116,13,155,0,100,5,124,0, + 155,2,157,3,131,1,130,1,124,2,160,15,100,6,161,1, + 125,6,124,6,100,7,118,1,114,88,116,14,100,8,124,2, + 155,2,157,2,131,1,130,1,124,6,100,9,107,2,114,132, + 124,2,160,16,100,6,100,10,161,2,100,11,25,0,125,7, + 124,7,160,10,116,17,161,1,115,112,116,14,100,12,116,17, + 155,2,157,2,131,1,130,1,124,7,116,12,116,17,131,1, + 100,1,133,2,25,0,125,8,124,8,160,18,161,0,115,132, + 116,14,100,13,124,7,155,2,100,14,157,3,131,1,130,1, + 124,2,160,19,100,6,161,1,100,15,25,0,125,9,116,20, + 124,1,124,9,116,21,100,15,25,0,23,0,131,2,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,99,2,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,31,0,0,0,115,76,0,0,0, - 124,1,100,0,117,0,114,8,124,0,106,0,125,1,110,18, - 124,0,106,0,124,1,107,3,114,26,116,1,100,1,124,0, - 106,0,155,1,100,2,124,1,155,1,157,4,124,1,100,3, - 141,2,130,1,137,4,124,0,124,1,103,2,124,2,162,1, - 82,0,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,141,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,141,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,7,0,0,0,218,19,95,99,104, - 101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,114, - 39,2,0,0,115,18,0,0,0,8,1,8,1,10,1,4, - 1,12,1,2,255,2,1,6,255,24,2,114,9,0,0,0, + 10,32,32,32,32,78,114,103,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,102, + 0,0,0,62,2,0,0,0,114,47,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,127,0,0,0,114,47,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,0,0,0,0, + 41,22,114,18,0,0,0,114,110,0,0,0,114,111,0,0, + 0,114,112,0,0,0,114,21,0,0,0,114,108,0,0,0, + 114,77,0,0,0,114,119,0,0,0,114,52,0,0,0,114, + 53,0,0,0,114,29,0,0,0,114,62,0,0,0,114,4, + 0,0,0,114,121,0,0,0,114,116,0,0,0,218,5,99, + 111,117,110,116,218,6,114,115,112,108,105,116,114,117,0,0, + 0,114,115,0,0,0,218,9,112,97,114,116,105,116,105,111, + 110,114,70,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,123, + 0,0,0,90,16,112,121,99,97,99,104,101,95,102,105,108, + 101,110,97,109,101,90,23,102,111,117,110,100,95,105,110,95, + 112,121,99,97,99,104,101,95,112,114,101,102,105,120,90,13, + 115,116,114,105,112,112,101,100,95,112,97,116,104,90,7,112, + 121,99,97,99,104,101,90,9,100,111,116,95,99,111,117,110, + 116,114,101,0,0,0,90,9,111,112,116,95,108,101,118,101, + 108,90,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, + 7,0,0,0,218,17,115,111,117,114,99,101,95,102,114,111, + 109,95,99,97,99,104,101,205,1,0,0,115,60,0,0,0, + 12,9,8,1,10,1,12,1,4,1,10,1,12,1,14,1, + 16,1,4,1,4,1,12,1,8,1,8,1,2,1,8,255, + 10,2,8,1,14,1,8,1,16,1,10,1,4,1,2,1, + 8,255,16,2,8,1,16,1,14,2,18,1,115,78,0,0, + 0,10,9,10,1,10,1,12,1,4,1,8,1,2,4,12, + 253,12,1,2,2,16,255,4,1,2,1,2,4,12,253,6, + 1,2,2,4,255,14,1,10,1,6,1,2,10,14,247,6, + 1,2,8,16,249,8,1,2,2,2,255,12,1,16,1,6, + 1,2,2,2,255,2,1,2,255,10,1,14,1,18,1,115, + 40,1,0,0,8,11,8,26,8,36,40,44,8,44,5,74, + 15,34,35,73,15,74,9,74,12,15,12,22,23,27,12,28, + 5,9,30,41,42,46,30,47,5,27,5,9,11,27,31,36, + 5,28,8,11,8,26,34,38,8,38,5,43,25,28,25,43, + 25,67,51,66,25,67,9,22,12,16,12,53,28,41,44,52, + 28,52,12,53,9,43,20,24,25,28,29,42,25,43,25,44, + 25,44,20,45,13,17,39,43,13,36,12,35,5,42,25,36, + 37,41,25,42,9,22,9,13,15,22,12,19,23,31,12,31, + 9,42,19,29,33,41,30,41,30,41,31,35,30,41,30,41, + 19,42,13,42,17,33,17,44,40,43,17,44,5,14,8,17, + 25,31,8,31,5,51,15,25,26,78,27,43,26,78,26,78, + 15,79,9,79,10,19,23,24,10,24,5,51,24,40,24,55, + 48,51,53,54,24,55,56,58,24,59,9,21,16,28,16,45, + 40,44,16,45,9,47,19,29,30,46,31,35,30,46,30,46, + 19,47,13,47,21,33,34,37,38,42,34,43,34,44,34,44, + 21,45,9,18,16,25,16,35,16,35,9,51,19,29,30,50, + 31,43,30,50,30,50,30,50,19,51,13,51,21,37,21,52, + 48,51,21,52,53,54,21,55,5,18,12,22,23,27,29,42, + 45,60,61,62,45,63,29,63,12,64,5,64,114,10,0,0, + 0,114,133,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,3,0,0,0,115,126,0,0,0, + 116,0,124,0,131,1,100,1,107,2,114,8,100,2,83,0, + 124,0,160,1,100,3,161,1,92,3,125,1,125,2,125,3, + 124,1,114,28,124,3,160,2,161,0,100,4,100,5,133,2, + 25,0,100,6,107,3,114,30,124,0,83,0,9,0,116,3, + 124,0,131,1,125,4,110,18,35,0,4,0,116,4,116,5, + 102,2,121,62,1,0,1,0,1,0,124,0,100,2,100,5, + 133,2,25,0,125,4,89,0,110,1,37,0,116,6,124,4, + 131,1,114,60,124,4,83,0,124,0,83,0,119,0,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,0, + 0,0,0,78,114,102,0,0,0,233,253,255,255,255,233,255, + 255,255,255,90,2,112,121,41,7,114,4,0,0,0,114,109, + 0,0,0,218,5,108,111,119,101,114,114,133,0,0,0,114, + 112,0,0,0,114,116,0,0,0,114,85,0,0,0,41,5, + 218,13,98,121,116,101,99,111,100,101,95,112,97,116,104,114, + 124,0,0,0,218,1,95,90,9,101,120,116,101,110,115,105, + 111,110,218,11,115,111,117,114,99,101,95,112,97,116,104,115, + 5,0,0,0,32,32,32,32,32,114,7,0,0,0,218,15, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,245, + 1,0,0,115,26,0,0,0,12,7,4,1,16,1,24,1, + 4,1,2,1,10,1,2,128,16,1,16,1,2,128,16,1, + 2,254,115,32,0,0,0,10,7,6,1,16,1,2,1,2, + 1,18,255,6,1,2,4,10,254,2,128,2,2,6,255,24, + 1,2,128,16,1,2,255,115,126,0,0,0,8,11,12,25, + 8,26,30,31,8,31,5,20,16,20,16,20,26,39,26,55, + 51,54,26,55,5,23,5,9,11,12,14,23,12,16,5,29, + 20,29,20,37,20,37,38,40,41,43,38,43,20,44,48,52, + 20,52,5,29,16,29,9,29,5,41,23,40,41,54,23,55, + 9,20,9,20,0,0,5,41,13,32,34,44,12,45,5,41, + 5,41,5,41,5,41,23,36,37,40,38,40,37,40,23,41, + 9,20,9,20,9,20,0,0,27,39,40,51,27,52,12,71, + 12,23,5,71,58,71,5,71,5,41,115,12,0,0,0,159, + 4,36,0,164,15,53,7,190,1,53,7,114,140,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,3,0,0,0,115,70,0,0,0,124,0,160,0,116,1, + 116,2,131,1,161,1,114,23,9,0,116,3,124,0,131,1, + 83,0,35,0,4,0,116,4,121,34,1,0,1,0,1,0, + 89,0,100,0,83,0,37,0,124,0,160,0,116,1,116,5, + 131,1,161,1,114,32,124,0,83,0,100,0,83,0,119,0, + 114,72,0,0,0,41,6,114,61,0,0,0,218,5,116,117, + 112,108,101,114,132,0,0,0,114,126,0,0,0,114,112,0, + 0,0,114,118,0,0,0,41,1,114,125,0,0,0,115,1, + 0,0,0,32,114,7,0,0,0,218,11,95,103,101,116,95, + 99,97,99,104,101,100,8,2,0,0,115,22,0,0,0,14, + 1,2,1,8,1,2,128,12,1,6,1,2,128,14,1,4, + 1,4,2,2,251,115,28,0,0,0,12,1,2,8,2,252, + 8,254,2,128,2,2,2,255,14,1,2,128,12,1,2,3, + 4,254,4,2,2,252,115,70,0,0,0,8,16,8,49,26, + 31,32,47,26,48,8,49,5,20,9,17,20,37,38,46,20, + 47,13,47,0,0,9,17,16,35,9,17,9,17,9,17,9, + 17,13,17,13,17,13,17,0,0,10,18,10,53,28,33,34, + 51,28,52,10,53,5,20,16,24,9,24,16,20,16,20,9, + 17,115,12,0,0,0,136,3,12,0,140,7,22,7,162,1, + 22,7,114,142,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,3,0,0,0,115,52,0,0, + 0,9,0,116,0,124,0,131,1,106,1,125,1,110,12,35, + 0,4,0,116,2,121,25,1,0,1,0,1,0,100,1,125, + 1,89,0,110,1,37,0,124,1,100,2,79,0,125,1,124, + 1,83,0,119,0,41,4,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,92,0,0, + 0,233,128,0,0,0,78,41,3,114,79,0,0,0,114,82, + 0,0,0,114,81,0,0,0,41,2,114,68,0,0,0,114, + 83,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, + 218,10,95,99,97,108,99,95,109,111,100,101,20,2,0,0, + 115,18,0,0,0,2,2,12,1,2,128,12,1,8,1,2, + 128,8,3,4,1,2,251,115,20,0,0,0,2,5,12,254, + 2,128,2,2,2,255,16,1,2,128,8,3,4,1,2,252, + 115,52,0,0,0,5,21,16,26,27,31,16,32,16,40,9, + 13,9,13,0,0,5,21,12,19,5,21,5,21,5,21,5, + 21,16,21,9,13,9,13,9,13,0,0,5,9,13,18,5, + 18,5,9,12,16,5,16,5,21,115,12,0,0,0,129,5, + 7,0,135,9,18,7,153,1,18,7,114,144,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 3,0,0,0,115,54,0,0,0,135,0,100,6,136,0,102, + 1,100,2,100,3,132,9,125,1,116,0,100,1,117,1,114, + 16,116,0,106,1,125,2,110,4,100,4,100,5,132,0,125, + 2,124,2,124,1,137,0,131,2,1,0,124,1,83,0,41, + 7,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,78, + 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,31,0,0,0,115,76,0,0,0,124,1,100,0,117,0, + 114,8,124,0,106,0,125,1,110,18,124,0,106,0,124,1, + 107,3,114,26,116,1,100,1,124,0,106,0,155,1,100,2, + 124,1,155,1,157,4,124,1,100,3,141,2,130,1,137,4, + 124,0,124,1,103,2,124,2,162,1,82,0,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,146,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,146,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,7,0,0,0,218,19,95,99,104,101,99,107,95,110,97, + 109,101,95,119,114,97,112,112,101,114,40,2,0,0,115,18, + 0,0,0,8,1,8,1,10,1,4,1,12,1,2,255,2, + 1,6,255,24,2,115,16,0,0,0,6,1,2,4,8,253, + 8,1,2,2,4,255,22,1,24,1,115,76,0,0,0,12, + 16,20,24,12,24,9,62,20,24,20,29,13,17,13,17,14, + 18,14,23,27,31,14,31,9,62,19,30,19,30,34,38,34, + 43,34,43,34,43,45,49,45,49,31,50,57,61,19,62,19, + 62,13,62,16,22,23,27,29,33,16,51,36,40,16,51,16, + 51,16,51,44,50,16,51,16,51,9,51,114,10,0,0,0, 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,99,2,0,0,0,0, @@ -678,311 +842,376 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,90, - 3,110,101,119,90,3,111,108,100,114,85,0,0,0,115,3, + 3,110,101,119,90,3,111,108,100,114,90,0,0,0,115,3, 0,0,0,32,32,32,114,7,0,0,0,218,5,95,119,114, - 97,112,52,2,0,0,115,10,0,0,0,8,1,10,1,18, - 1,2,128,18,1,114,9,0,0,0,122,26,95,99,104,101, + 97,112,53,2,0,0,115,10,0,0,0,8,1,10,1,18, + 1,2,128,18,1,115,14,0,0,0,2,1,4,2,2,254, + 8,1,20,1,2,128,18,1,115,56,0,0,0,28,81,13, + 65,13,65,17,24,20,27,28,31,33,40,20,41,17,65,21, + 28,29,32,34,41,43,50,51,54,56,63,43,64,21,65,21, + 65,0,0,13,16,13,25,13,46,33,36,33,45,13,46,13, + 46,13,46,13,46,114,10,0,0,0,122,26,95,99,104,101, 99,107,95,110,97,109,101,46,60,108,111,99,97,108,115,62, - 46,95,119,114,97,112,114,69,0,0,0,41,2,218,10,95, - 98,111,111,116,115,116,114,97,112,114,157,0,0,0,41,3, - 114,146,0,0,0,114,147,0,0,0,114,157,0,0,0,115, + 46,95,119,114,97,112,114,72,0,0,0,41,2,218,10,95, + 98,111,111,116,115,116,114,97,112,114,162,0,0,0,41,3, + 114,151,0,0,0,114,152,0,0,0,114,162,0,0,0,115, 3,0,0,0,96,32,32,114,7,0,0,0,218,11,95,99, - 104,101,99,107,95,110,97,109,101,31,2,0,0,115,14,0, + 104,101,99,107,95,110,97,109,101,32,2,0,0,115,14,0, 0,0,2,128,14,8,8,10,8,1,8,2,10,6,4,1, - 114,9,0,0,0,114,159,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, - 72,0,0,0,116,0,106,1,100,1,116,2,131,2,1,0, - 124,0,160,3,124,1,161,1,92,2,125,2,125,3,124,2, - 100,2,117,0,114,34,116,4,124,3,131,1,114,34,100,3, - 125,4,116,0,106,1,124,4,160,5,124,3,100,4,25,0, - 161,1,116,6,131,2,1,0,124,2,83,0,41,5,122,155, - 84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,111, - 97,100,101,114,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,98,121, - 32,100,101,108,101,103,97,116,105,110,103,32,116,111,10,32, - 32,32,32,115,101,108,102,46,102,105,110,100,95,108,111,97, - 100,101,114,40,41,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,32,105,110,32,102,97,118,111,114,32,111, - 102,32,102,105,110,100,101,114,46,102,105,110,100,95,115,112, - 101,99,40,41,46,10,10,32,32,32,32,122,90,102,105,110, - 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,102,105,110,100,95,115,112,101,99,40,41,32, - 105,110,115,116,101,97,100,78,122,44,78,111,116,32,105,109, - 112,111,114,116,105,110,103,32,100,105,114,101,99,116,111,114, - 121,32,123,125,58,32,109,105,115,115,105,110,103,32,95,95, - 105,110,105,116,95,95,114,0,0,0,0,41,7,114,99,0, - 0,0,114,100,0,0,0,114,101,0,0,0,218,11,102,105, - 110,100,95,108,111,97,100,101,114,114,4,0,0,0,114,89, - 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, - 110,103,41,5,114,143,0,0,0,218,8,102,117,108,108,110, - 97,109,101,218,6,108,111,97,100,101,114,218,8,112,111,114, - 116,105,111,110,115,218,3,109,115,103,115,5,0,0,0,32, - 32,32,32,32,114,7,0,0,0,218,17,95,102,105,110,100, - 95,109,111,100,117,108,101,95,115,104,105,109,62,2,0,0, - 115,16,0,0,0,6,7,2,2,4,254,14,6,16,1,4, - 1,22,1,4,1,114,9,0,0,0,114,166,0,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,166,0,0,0,124,0,100,1,100,2,133, - 2,25,0,125,3,124,3,116,0,107,3,114,32,100,3,124, - 1,155,2,100,4,124,3,155,2,157,4,125,4,116,1,160, - 2,100,5,124,4,161,2,1,0,116,3,124,4,102,1,105, - 0,124,2,164,1,142,1,130,1,116,4,124,0,131,1,100, - 6,107,0,114,53,100,7,124,1,155,2,157,2,125,4,116, - 1,160,2,100,5,124,4,161,2,1,0,116,5,124,4,131, - 1,130,1,116,6,124,0,100,2,100,8,133,2,25,0,131, - 1,125,5,124,5,100,9,64,0,114,81,100,10,124,5,155, - 2,100,11,124,1,155,2,157,4,125,4,116,3,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,32,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,158,0, - 0,0,218,16,95,118,101,114,98,111,115,101,95,109,101,115, - 115,97,103,101,114,142,0,0,0,114,4,0,0,0,218,8, - 69,79,70,69,114,114,111,114,114,43,0,0,0,41,6,114, - 42,0,0,0,114,141,0,0,0,218,11,101,120,99,95,100, - 101,116,97,105,108,115,90,5,109,97,103,105,99,114,117,0, - 0,0,114,17,0,0,0,115,6,0,0,0,32,32,32,32, - 32,32,114,7,0,0,0,218,13,95,99,108,97,115,115,105, - 102,121,95,112,121,99,82,2,0,0,115,28,0,0,0,12, - 16,8,1,16,1,12,1,16,1,12,1,10,1,12,1,8, - 1,16,1,8,2,16,1,16,1,4,1,114,9,0,0,0, - 114,175,0,0,0,99,5,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,3,0,0,0,115,124,0,0,0,116, - 0,124,0,100,1,100,2,133,2,25,0,131,1,124,1,100, - 3,64,0,107,3,114,31,100,4,124,3,155,2,157,2,125, - 5,116,1,160,2,100,5,124,5,161,2,1,0,116,3,124, - 5,102,1,105,0,124,4,164,1,142,1,130,1,124,2,100, - 6,117,1,114,60,116,0,124,0,100,2,100,7,133,2,25, - 0,131,1,124,2,100,3,64,0,107,3,114,58,116,3,100, - 4,124,3,155,2,157,2,102,1,105,0,124,4,164,1,142, - 1,130,1,100,6,83,0,100,6,83,0,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,169,0,0,0,233,12, - 0,0,0,114,31,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,167,0,0,0,78,114,168,0,0,0,41,4,114,43,0, - 0,0,114,158,0,0,0,114,172,0,0,0,114,142,0,0, - 0,41,6,114,42,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,141,0,0,0,114,174,0,0,0,114,117,0, - 0,0,115,6,0,0,0,32,32,32,32,32,32,114,7,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,115,2,0,0,115, - 18,0,0,0,24,19,10,1,12,1,16,1,8,1,22,1, - 2,255,22,2,8,254,114,9,0,0,0,114,179,0,0,0, - 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,3,0,0,0,115,42,0,0,0,124,0,100,1,100,2, - 133,2,25,0,124,1,107,3,114,19,116,0,100,3,124,2, - 155,2,157,2,102,1,105,0,124,3,164,1,142,1,130,1, - 100,4,83,0,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, + 115,18,0,0,0,2,128,2,8,12,6,6,4,2,7,8, + 250,8,6,10,2,4,1,115,54,0,0,0,0,0,40,44, + 5,51,5,51,5,51,5,51,5,51,5,51,8,18,26,30, + 8,30,5,46,17,27,17,33,9,14,9,14,9,46,9,46, + 9,46,9,46,5,10,11,30,32,38,5,39,5,39,12,31, + 5,31,114,10,0,0,0,114,164,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0, + 0,115,72,0,0,0,116,0,106,1,100,1,116,2,131,2, + 1,0,124,0,160,3,124,1,161,1,92,2,125,2,125,3, + 124,2,100,2,117,0,114,34,116,4,124,3,131,1,114,34, + 100,3,125,4,116,0,106,1,124,4,160,5,124,3,100,4, + 25,0,161,1,116,6,131,2,1,0,124,2,83,0,41,5, + 122,155,84,114,121,32,116,111,32,102,105,110,100,32,97,32, + 108,111,97,100,101,114,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, + 98,121,32,100,101,108,101,103,97,116,105,110,103,32,116,111, + 10,32,32,32,32,115,101,108,102,46,102,105,110,100,95,108, + 111,97,100,101,114,40,41,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,32,105,110,32,102,97,118,111,114, + 32,111,102,32,102,105,110,100,101,114,46,102,105,110,100,95, + 115,112,101,99,40,41,46,10,10,32,32,32,32,122,90,102, + 105,110,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,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,78,122,44,78,111,116,32, + 105,109,112,111,114,116,105,110,103,32,100,105,114,101,99,116, + 111,114,121,32,123,125,58,32,109,105,115,115,105,110,103,32, + 95,95,105,110,105,116,95,95,114,0,0,0,0,41,7,114, + 104,0,0,0,114,105,0,0,0,114,106,0,0,0,218,11, + 102,105,110,100,95,108,111,97,100,101,114,114,4,0,0,0, + 114,94,0,0,0,218,13,73,109,112,111,114,116,87,97,114, + 110,105,110,103,41,5,114,148,0,0,0,218,8,102,117,108, + 108,110,97,109,101,218,6,108,111,97,100,101,114,218,8,112, + 111,114,116,105,111,110,115,218,3,109,115,103,115,5,0,0, + 0,32,32,32,32,32,114,7,0,0,0,218,17,95,102,105, + 110,100,95,109,111,100,117,108,101,95,115,104,105,109,63,2, + 0,0,115,16,0,0,0,6,7,2,2,4,254,14,6,16, + 1,4,1,22,1,4,1,115,22,0,0,0,4,7,2,1, + 6,1,14,4,6,1,2,2,6,254,2,2,4,255,22,1, + 4,1,115,72,0,0,0,5,14,5,19,20,80,20,38,5, + 39,5,39,24,28,24,50,41,49,24,50,5,21,5,11,13, + 21,8,14,18,22,8,22,5,63,27,30,31,39,27,40,5, + 63,15,61,9,12,9,18,9,23,24,27,24,47,35,43,44, + 45,35,46,24,47,49,62,9,63,9,63,12,18,5,18,114, + 10,0,0,0,114,171,0,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,166, + 0,0,0,124,0,100,1,100,2,133,2,25,0,125,3,124, + 3,116,0,107,3,114,32,100,3,124,1,155,2,100,4,124, + 3,155,2,157,4,125,4,116,1,160,2,100,5,124,4,161, + 2,1,0,116,3,124,4,102,1,105,0,124,2,164,1,142, + 1,130,1,116,4,124,0,131,1,100,6,107,0,114,53,100, + 7,124,1,155,2,157,2,125,4,116,1,160,2,100,5,124, + 4,161,2,1,0,116,5,124,4,131,1,130,1,116,6,124, + 0,100,2,100,8,133,2,25,0,131,1,125,5,124,5,100, + 9,64,0,114,81,100,10,124,5,155,2,100,11,124,1,155, + 2,157,4,125,4,116,3,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,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,169, - 0,0,0,114,168,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,142,0,0,0, - 41,4,114,42,0,0,0,218,11,115,111,117,114,99,101,95, - 104,97,115,104,114,141,0,0,0,114,174,0,0,0,115,4, - 0,0,0,32,32,32,32,114,7,0,0,0,218,18,95,118, - 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, - 143,2,0,0,115,14,0,0,0,16,17,2,1,8,1,4, - 255,2,2,6,254,4,255,114,9,0,0,0,114,181,0,0, - 0,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,115,76,0,0,0,116,0,106,1,124, - 0,131,1,125,4,116,2,124,4,116,3,131,2,114,28,116, - 4,160,5,100,1,124,2,161,2,1,0,124,3,100,2,117, - 1,114,26,116,6,106,7,124,4,124,3,131,2,1,0,124, - 4,83,0,116,8,100,3,160,9,124,2,161,1,124,1,124, - 2,100,4,141,3,130,1,41,5,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,78,122,23,78,111,110,45,99,111,100,101, - 32,111,98,106,101,99,116,32,105,110,32,123,33,114,125,169, - 2,114,141,0,0,0,114,65,0,0,0,41,10,218,7,109, - 97,114,115,104,97,108,90,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,158,0,0,0,114,172,0,0,0,218, - 4,95,105,109,112,90,16,95,102,105,120,95,99,111,95,102, - 105,108,101,110,97,109,101,114,142,0,0,0,114,89,0,0, - 0,41,5,114,42,0,0,0,114,141,0,0,0,114,132,0, - 0,0,114,134,0,0,0,218,4,99,111,100,101,115,5,0, - 0,0,32,32,32,32,32,114,7,0,0,0,218,17,95,99, - 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,167, - 2,0,0,115,18,0,0,0,10,2,10,1,12,1,8,1, - 12,1,4,1,10,2,4,1,6,255,114,9,0,0,0,114, - 188,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,3,0,0,0,115,70,0,0,0,116,0, - 116,1,131,1,125,3,124,3,160,2,116,3,100,1,131,1, - 161,1,1,0,124,3,160,2,116,3,124,1,131,1,161,1, - 1,0,124,3,160,2,116,3,124,2,131,1,161,1,1,0, - 124,3,160,2,116,4,106,5,124,0,131,1,161,1,1,0, - 124,3,83,0,41,3,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,0,0,0,0,78,41,6,218,9,98,121,116, - 101,97,114,114,97,121,114,171,0,0,0,218,6,101,120,116, - 101,110,100,114,37,0,0,0,114,183,0,0,0,218,5,100, - 117,109,112,115,41,4,114,187,0,0,0,218,5,109,116,105, - 109,101,114,178,0,0,0,114,42,0,0,0,115,4,0,0, - 0,32,32,32,32,114,7,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,180,2,0,0,115,12,0,0,0,8,2,14,1,14, - 1,14,1,16,1,4,1,114,9,0,0,0,114,193,0,0, - 0,84,99,3,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,3,0,0,0,115,80,0,0,0,116,0,116,1, - 131,1,125,3,100,1,124,2,100,1,62,0,66,0,125,4, - 124,3,160,2,116,3,124,4,131,1,161,1,1,0,116,4, - 124,1,131,1,100,2,107,2,115,25,74,0,130,1,124,3, - 160,2,124,1,161,1,1,0,124,3,160,2,116,5,106,6, - 124,0,131,1,161,1,1,0,124,3,83,0,41,4,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,3,0,0,0,114,169,0,0,0, - 78,41,7,114,189,0,0,0,114,171,0,0,0,114,190,0, - 0,0,114,37,0,0,0,114,4,0,0,0,114,183,0,0, - 0,114,191,0,0,0,41,5,114,187,0,0,0,114,180,0, - 0,0,90,7,99,104,101,99,107,101,100,114,42,0,0,0, - 114,17,0,0,0,115,5,0,0,0,32,32,32,32,32,114, - 7,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104, - 97,115,104,95,112,121,99,190,2,0,0,115,14,0,0,0, - 8,2,12,1,14,1,16,1,10,1,16,1,4,1,114,9, - 0,0,0,114,194,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,3,0,0,0,115,62,0, - 0,0,100,1,100,2,108,0,125,1,116,1,106,2,124,0, - 131,1,106,3,125,2,124,1,160,4,124,2,161,1,125,3, - 116,1,106,5,100,2,100,3,131,2,125,4,124,4,160,6, - 124,0,160,6,124,3,100,1,25,0,161,1,161,1,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,0,0, - 0,0,78,84,41,7,218,8,116,111,107,101,110,105,122,101, - 114,91,0,0,0,90,7,66,121,116,101,115,73,79,90,8, - 114,101,97,100,108,105,110,101,90,15,100,101,116,101,99,116, - 95,101,110,99,111,100,105,110,103,90,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,195,0,0, - 0,90,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,90,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,7,0, - 0,0,218,13,100,101,99,111,100,101,95,115,111,117,114,99, - 101,201,2,0,0,115,10,0,0,0,8,5,12,1,10,1, - 12,1,20,1,114,9,0,0,0,114,199,0,0,0,169,2, - 114,163,0,0,0,218,26,115,117,98,109,111,100,117,108,101, + 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,34,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,163,0,0,0,218,16,95,118, + 101,114,98,111,115,101,95,109,101,115,115,97,103,101,114,147, + 0,0,0,114,4,0,0,0,218,8,69,79,70,69,114,114, + 111,114,114,45,0,0,0,41,6,114,44,0,0,0,114,146, + 0,0,0,218,11,101,120,99,95,100,101,116,97,105,108,115, + 90,5,109,97,103,105,99,114,122,0,0,0,114,19,0,0, + 0,115,6,0,0,0,32,32,32,32,32,32,114,7,0,0, + 0,218,13,95,99,108,97,115,115,105,102,121,95,112,121,99, + 83,2,0,0,115,28,0,0,0,12,16,8,1,16,1,12, + 1,16,1,12,1,10,1,12,1,8,1,16,1,8,2,16, + 1,16,1,4,1,115,34,0,0,0,12,16,6,1,2,3, + 16,254,12,1,16,1,10,1,2,3,10,254,12,1,8,1, + 16,1,6,2,2,2,16,255,16,1,4,1,115,166,0,0, + 0,13,17,18,20,19,20,18,20,13,21,5,10,8,13,17, + 29,8,29,5,50,19,61,20,24,19,61,19,61,20,25,19, + 61,19,61,9,16,9,19,9,51,37,41,43,50,9,51,9, + 51,15,26,27,34,15,50,15,50,38,49,15,50,15,50,9, + 50,8,11,12,16,8,17,20,22,8,22,5,32,19,70,20, + 24,19,70,19,70,9,16,9,19,9,51,37,41,43,50,9, + 51,9,51,15,23,24,31,15,32,9,32,13,27,28,32,33, + 34,35,36,33,36,28,37,13,38,5,10,8,13,16,21,8, + 21,5,50,19,57,20,25,19,57,19,57,20,24,19,57,19, + 57,9,16,15,26,27,34,15,50,15,50,38,49,15,50,15, + 50,9,50,12,17,5,17,114,10,0,0,0,114,180,0,0, + 0,99,5,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,115,124,0,0,0,116,0,124,0,100, + 1,100,2,133,2,25,0,131,1,124,1,100,3,64,0,107, + 3,114,31,100,4,124,3,155,2,157,2,125,5,116,1,160, + 2,100,5,124,5,161,2,1,0,116,3,124,5,102,1,105, + 0,124,4,164,1,142,1,130,1,124,2,100,6,117,1,114, + 60,116,0,124,0,100,2,100,7,133,2,25,0,131,1,124, + 2,100,3,64,0,107,3,114,58,116,3,100,4,124,3,155, + 2,157,2,102,1,105,0,124,4,164,1,142,1,130,1,100, + 6,83,0,100,6,83,0,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,174,0,0,0,233,12,0,0,0,114, + 33,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,172,0,0, + 0,78,114,173,0,0,0,41,4,114,45,0,0,0,114,163, + 0,0,0,114,177,0,0,0,114,147,0,0,0,41,6,114, + 44,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, + 146,0,0,0,114,179,0,0,0,114,122,0,0,0,115,6, + 0,0,0,32,32,32,32,32,32,114,7,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,116,2,0,0,115,18,0,0,0, + 24,19,10,1,12,1,16,1,8,1,22,1,2,255,22,2, + 8,254,115,18,0,0,0,22,19,2,3,10,254,12,1,16, + 1,6,1,2,2,22,255,32,1,115,124,0,0,0,8,22, + 23,27,28,29,30,32,28,32,23,33,8,34,39,51,54,64, + 39,64,8,65,5,50,19,52,20,24,19,52,19,52,9,16, + 9,19,9,51,37,41,43,50,9,51,9,51,15,26,27,34, + 15,50,15,50,38,49,15,50,15,50,9,50,9,20,28,32, + 9,32,5,76,9,23,24,28,29,31,32,34,29,34,24,35, + 9,36,41,52,55,65,41,65,9,66,5,76,15,26,27,60, + 28,32,27,60,27,60,15,76,15,76,64,75,15,76,15,76, + 9,76,5,76,5,76,5,76,5,76,114,10,0,0,0,114, + 184,0,0,0,99,4,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,3,0,0,0,115,42,0,0,0,124,0, + 100,1,100,2,133,2,25,0,124,1,107,3,114,19,116,0, + 100,3,124,2,155,2,157,2,102,1,105,0,124,3,164,1, + 142,1,130,1,100,4,83,0,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,174,0,0,0,114,173,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, + 147,0,0,0,41,4,114,44,0,0,0,218,11,115,111,117, + 114,99,101,95,104,97,115,104,114,146,0,0,0,114,179,0, + 0,0,115,4,0,0,0,32,32,32,32,114,7,0,0,0, + 218,18,95,118,97,108,105,100,97,116,101,95,104,97,115,104, + 95,112,121,99,144,2,0,0,115,14,0,0,0,16,17,2, + 1,8,1,4,255,2,2,6,254,4,255,115,14,0,0,0, + 14,17,2,4,2,253,8,1,4,2,2,255,10,1,115,42, + 0,0,0,8,12,13,14,15,17,13,17,8,18,22,33,8, + 33,5,10,15,26,13,71,14,18,13,71,13,71,15,10,15, + 10,15,26,15,10,15,10,9,10,5,10,5,10,114,10,0, + 0,0,114,186,0,0,0,99,4,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,3,0,0,0,115,76,0,0, + 0,116,0,106,1,124,0,131,1,125,4,116,2,124,4,116, + 3,131,2,114,28,116,4,160,5,100,1,124,2,161,2,1, + 0,124,3,100,2,117,1,114,26,116,6,106,7,124,4,124, + 3,131,2,1,0,124,4,83,0,116,8,100,3,160,9,124, + 2,161,1,124,1,124,2,100,4,141,3,130,1,41,5,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,78,122,23,78,111, + 110,45,99,111,100,101,32,111,98,106,101,99,116,32,105,110, + 32,123,33,114,125,169,2,114,146,0,0,0,114,68,0,0, + 0,41,10,218,7,109,97,114,115,104,97,108,90,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,163,0,0,0, + 114,177,0,0,0,218,4,95,105,109,112,90,16,95,102,105, + 120,95,99,111,95,102,105,108,101,110,97,109,101,114,147,0, + 0,0,114,94,0,0,0,41,5,114,44,0,0,0,114,146, + 0,0,0,114,137,0,0,0,114,139,0,0,0,218,4,99, + 111,100,101,115,5,0,0,0,32,32,32,32,32,114,7,0, + 0,0,218,17,95,99,111,109,112,105,108,101,95,98,121,116, + 101,99,111,100,101,168,2,0,0,115,18,0,0,0,10,2, + 10,1,12,1,8,1,12,1,4,1,10,2,4,1,6,255, + 115,18,0,0,0,10,2,8,1,2,7,12,250,6,1,14, + 1,4,1,10,2,10,1,115,76,0,0,0,12,19,12,25, + 26,30,12,31,5,9,8,18,19,23,25,35,8,36,5,57, + 9,19,9,76,37,60,62,75,9,76,9,76,12,23,31,35, + 12,35,9,53,13,17,13,34,35,39,41,52,13,53,13,53, + 16,20,9,20,15,26,27,52,27,74,60,73,27,74,32,36, + 43,56,15,57,15,57,9,57,114,10,0,0,0,114,193,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,3,0,0,0,115,70,0,0,0,116,0,116,1, + 131,1,125,3,124,3,160,2,116,3,100,1,131,1,161,1, + 1,0,124,3,160,2,116,3,124,1,131,1,161,1,1,0, + 124,3,160,2,116,3,124,2,131,1,161,1,1,0,124,3, + 160,2,116,4,106,5,124,0,131,1,161,1,1,0,124,3, + 83,0,41,3,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,0,0,0,0,78,41,6,218,9,98,121,116,101,97, + 114,114,97,121,114,176,0,0,0,218,6,101,120,116,101,110, + 100,114,39,0,0,0,114,188,0,0,0,218,5,100,117,109, + 112,115,41,4,114,192,0,0,0,218,5,109,116,105,109,101, + 114,183,0,0,0,114,44,0,0,0,115,4,0,0,0,32, + 32,32,32,114,7,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, + 181,2,0,0,243,12,0,0,0,8,2,14,1,14,1,14, + 1,16,1,4,1,114,199,0,0,0,115,70,0,0,0,12, + 21,22,34,12,35,5,9,5,9,5,33,17,29,30,31,17, + 32,5,33,5,33,5,9,5,37,17,29,30,35,17,36,5, + 37,5,37,5,9,5,43,17,29,30,41,17,42,5,43,5, + 43,5,9,5,37,17,24,17,30,31,35,17,36,5,37,5, + 37,12,16,5,16,114,10,0,0,0,114,198,0,0,0,84, + 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,3,0,0,0,115,80,0,0,0,116,0,116,1,131,1, + 125,3,100,1,124,2,100,1,62,0,66,0,125,4,124,3, + 160,2,116,3,124,4,131,1,161,1,1,0,116,4,124,1, + 131,1,100,2,107,2,115,25,74,0,130,1,124,3,160,2, + 124,1,161,1,1,0,124,3,160,2,116,5,106,6,124,0, + 131,1,161,1,1,0,124,3,83,0,41,4,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,3,0,0,0,114,174,0,0,0,78,41, + 7,114,194,0,0,0,114,176,0,0,0,114,195,0,0,0, + 114,39,0,0,0,114,4,0,0,0,114,188,0,0,0,114, + 196,0,0,0,41,5,114,192,0,0,0,114,185,0,0,0, + 90,7,99,104,101,99,107,101,100,114,44,0,0,0,114,19, + 0,0,0,115,5,0,0,0,32,32,32,32,32,114,7,0, + 0,0,218,17,95,99,111,100,101,95,116,111,95,104,97,115, + 104,95,112,121,99,191,2,0,0,243,14,0,0,0,8,2, + 12,1,14,1,16,1,10,1,16,1,4,1,114,201,0,0, + 0,115,80,0,0,0,12,21,22,34,12,35,5,9,13,16, + 19,26,30,31,19,31,13,31,5,10,5,9,5,37,17,29, + 30,35,17,36,5,37,5,37,12,15,16,27,12,28,32,33, + 12,33,5,33,5,33,5,33,5,9,5,29,17,28,5,29, + 5,29,5,9,5,37,17,24,17,30,31,35,17,36,5,37, + 5,37,12,16,5,16,114,10,0,0,0,114,200,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,6,0,0, + 0,3,0,0,0,115,62,0,0,0,100,1,100,2,108,0, + 125,1,116,1,106,2,124,0,131,1,106,3,125,2,124,1, + 160,4,124,2,161,1,125,3,116,1,106,5,100,2,100,3, + 131,2,125,4,124,4,160,6,124,0,160,6,124,3,100,1, + 25,0,161,1,161,1,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,0,0,0,0,78,84,41,7,218,8, + 116,111,107,101,110,105,122,101,114,96,0,0,0,90,7,66, + 121,116,101,115,73,79,90,8,114,101,97,100,108,105,110,101, + 90,15,100,101,116,101,99,116,95,101,110,99,111,100,105,110, + 103,90,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,202,0,0,0,90,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,90,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,7,0,0,0,218,13,100,101,99,111, + 100,101,95,115,111,117,114,99,101,202,2,0,0,243,10,0, + 0,0,8,5,12,1,10,1,12,1,20,1,114,207,0,0, + 0,115,62,0,0,0,5,20,5,20,5,20,5,20,29,32, + 29,40,41,53,29,54,29,63,5,26,16,24,16,63,41,62, + 16,63,5,13,23,26,23,52,53,57,59,63,23,64,5,20, + 12,27,12,68,35,47,35,67,55,63,64,65,55,66,35,67, + 12,68,5,68,114,10,0,0,0,114,206,0,0,0,169,2, + 114,168,0,0,0,218,26,115,117,98,109,111,100,117,108,101, 95,115,101,97,114,99,104,95,108,111,99,97,116,105,111,110, 115,99,2,0,0,0,0,0,0,0,2,0,0,0,8,0, 0,0,3,0,0,0,115,60,1,0,0,124,1,100,1,117, @@ -1029,306 +1258,399 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,0,0,0, - 0,41,21,114,152,0,0,0,114,202,0,0,0,114,142,0, - 0,0,114,19,0,0,0,114,103,0,0,0,114,86,0,0, - 0,114,67,0,0,0,114,82,0,0,0,114,76,0,0,0, - 114,158,0,0,0,218,10,77,111,100,117,108,101,83,112,101, + 0,41,21,114,157,0,0,0,114,210,0,0,0,114,147,0, + 0,0,114,21,0,0,0,114,108,0,0,0,114,91,0,0, + 0,114,70,0,0,0,114,87,0,0,0,114,81,0,0,0, + 114,163,0,0,0,218,10,77,111,100,117,108,101,83,112,101, 99,90,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,58,0, - 0,0,114,136,0,0,0,114,163,0,0,0,218,9,95,80, - 79,80,85,76,65,84,69,114,205,0,0,0,114,201,0,0, - 0,114,73,0,0,0,114,61,0,0,0,41,9,114,141,0, - 0,0,90,8,108,111,99,97,116,105,111,110,114,163,0,0, - 0,114,201,0,0,0,218,4,115,112,101,99,218,12,108,111, + 95,102,105,108,101,95,108,111,97,100,101,114,115,114,61,0, + 0,0,114,141,0,0,0,114,168,0,0,0,218,9,95,80, + 79,80,85,76,65,84,69,114,213,0,0,0,114,209,0,0, + 0,114,77,0,0,0,114,64,0,0,0,41,9,114,146,0, + 0,0,90,8,108,111,99,97,116,105,111,110,114,168,0,0, + 0,114,209,0,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,205,0,0,0,90,7,100,105,114,110,97, + 105,120,101,115,114,213,0,0,0,90,7,100,105,114,110,97, 109,101,115,9,0,0,0,32,32,32,32,32,32,32,32,32, 114,7,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,218,2, + 95,102,105,108,101,95,108,111,99,97,116,105,111,110,219,2, 0,0,115,96,0,0,0,8,12,4,4,10,1,2,2,12, 1,2,128,12,1,4,1,2,128,2,251,10,7,8,1,2, 1,16,1,2,128,12,1,4,1,2,128,16,8,6,1,8, 3,14,1,14,1,10,1,6,1,4,1,2,253,4,5,8, 3,10,2,2,1,12,1,2,128,12,1,4,1,2,128,4, 2,6,1,2,128,6,2,10,1,4,1,12,1,12,1,4, - 2,2,244,2,228,2,249,115,44,0,0,0,140,5,18,0, - 146,7,27,7,167,7,47,0,175,7,56,7,193,45,5,65, - 51,0,193,51,7,65,60,7,194,27,1,65,60,7,194,28, - 1,56,7,194,29,1,27,7,114,212,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, - 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, - 1,90,3,100,2,90,4,100,3,90,5,101,6,111,15,100, - 4,101,7,118,0,90,8,101,9,100,5,100,6,132,0,131, - 1,90,10,101,11,100,7,100,8,132,0,131,1,90,12,101, - 11,100,14,100,10,100,11,132,1,131,1,90,13,101,11,100, - 15,100,12,100,13,132,1,131,1,90,14,100,9,83,0,41, - 16,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,8,0,0, - 0,3,0,0,0,115,52,0,0,0,9,0,116,0,106,1, - 116,0,106,2,124,0,131,2,83,0,35,0,4,0,116,3, - 121,25,1,0,1,0,1,0,116,0,106,1,116,0,106,4, - 124,0,131,2,6,0,89,0,83,0,37,0,119,0,114,69, - 0,0,0,41,5,218,6,119,105,110,114,101,103,90,7,79, - 112,101,110,75,101,121,90,17,72,75,69,89,95,67,85,82, - 82,69,78,84,95,85,83,69,82,114,76,0,0,0,90,18, - 72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,73, - 78,69,114,20,0,0,0,115,1,0,0,0,32,114,7,0, - 0,0,218,14,95,111,112,101,110,95,114,101,103,105,115,116, - 114,121,47,3,0,0,115,14,0,0,0,2,2,14,1,2, - 128,12,1,18,1,2,128,2,255,115,12,0,0,0,129,6, - 8,0,136,14,24,7,153,1,24,7,122,36,87,105,110,100, - 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101, - 114,46,95,111,112,101,110,95,114,101,103,105,115,116,114,121, - 99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,3,0,0,0,115,136,0,0,0,124,0,106,0,114,7, - 124,0,106,1,125,2,110,3,124,0,106,2,125,2,124,2, - 160,3,124,1,100,1,116,4,106,5,100,0,100,2,133,2, - 25,0,22,0,100,3,166,2,125,3,9,0,124,0,160,6, - 124,3,161,1,53,0,125,4,116,7,106,8,124,4,100,4, - 131,2,125,5,100,0,4,0,4,0,131,3,1,0,110,11, - 35,0,49,0,115,48,119,4,37,0,1,0,1,0,1,0, - 89,0,1,0,1,0,124,5,83,0,35,0,4,0,116,9, - 121,67,1,0,1,0,1,0,89,0,100,0,83,0,37,0, - 119,0,41,5,78,122,5,37,100,46,37,100,114,45,0,0, - 0,41,2,114,162,0,0,0,90,11,115,121,115,95,118,101, - 114,115,105,111,110,114,10,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,114,89,0,0,0, - 114,16,0,0,0,218,12,118,101,114,115,105,111,110,95,105, - 110,102,111,114,215,0,0,0,114,214,0,0,0,90,10,81, - 117,101,114,121,86,97,108,117,101,114,76,0,0,0,41,6, - 218,3,99,108,115,114,162,0,0,0,90,12,114,101,103,105, - 115,116,114,121,95,107,101,121,114,21,0,0,0,90,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,7,0,0,0,218,16,95, - 115,101,97,114,99,104,95,114,101,103,105,115,116,114,121,54, - 3,0,0,115,36,0,0,0,6,2,8,1,6,2,6,1, - 16,1,6,255,2,2,12,1,12,1,20,255,2,128,12,0, - 4,4,2,128,12,254,6,1,2,128,2,255,115,39,0,0, - 0,153,5,56,0,158,7,43,3,165,6,56,0,171,4,47, - 11,175,1,56,0,176,3,47,11,179,3,56,0,184,7,65, - 2,7,193,3,1,65,2,7,122,38,87,105,110,100,111,119, + 2,2,244,2,228,2,249,115,116,0,0,0,6,12,2,17, + 4,243,8,1,4,5,12,254,2,128,2,2,2,255,12,1, + 2,128,2,0,10,2,6,1,4,4,16,254,2,128,2,2, + 2,255,12,1,2,128,16,8,6,1,6,3,2,7,4,250, + 4,6,6,250,12,1,2,3,10,254,6,1,6,1,4,2, + 6,3,2,11,8,247,4,7,12,251,2,128,2,2,2,255, + 12,1,2,128,2,2,8,1,2,128,6,2,8,1,2,3, + 2,254,2,2,12,255,12,1,4,2,2,245,2,228,2,249, + 115,60,1,0,0,8,16,20,24,8,24,5,21,20,31,9, + 17,12,19,20,26,28,42,12,43,9,21,13,21,28,34,28, + 53,48,52,28,53,17,25,17,25,0,0,13,21,20,31,13, + 21,13,21,13,21,13,21,17,21,17,21,0,0,9,21,20, + 23,20,30,31,39,20,40,9,17,16,27,28,36,16,37,9, + 21,13,21,28,38,39,42,39,49,39,51,53,61,28,62,17, + 25,17,25,0,0,13,21,20,27,13,21,13,21,13,21,13, + 21,17,21,17,21,0,0,12,22,12,64,34,38,40,46,55, + 63,12,64,12,64,5,9,26,30,5,9,5,23,8,14,18, + 22,8,22,5,24,39,66,39,68,9,24,9,24,13,35,13, + 25,27,35,16,24,16,50,34,39,40,48,34,49,16,50,13, + 22,26,38,39,43,45,53,26,54,17,23,31,37,17,21,17, + 28,17,22,17,22,13,22,20,24,20,24,8,34,38,47,8, + 47,5,69,12,19,20,26,28,40,12,41,9,57,13,57,30, + 36,30,53,48,52,30,53,17,27,17,27,0,0,13,21,20, + 31,13,21,13,21,13,21,13,21,17,21,17,21,0,0,20, + 30,17,57,55,57,21,25,21,52,0,0,43,69,9,13,9, + 40,8,12,8,39,43,45,8,45,5,60,12,20,9,60,23, + 34,35,43,23,44,45,46,23,47,13,20,13,17,13,44,13, + 60,52,59,13,60,13,60,12,16,5,16,13,21,13,21,13, + 21,115,44,0,0,0,140,5,18,0,146,7,27,7,167,7, + 47,0,175,7,56,7,193,45,5,65,51,0,193,51,7,65, + 60,7,194,27,1,65,60,7,194,28,1,56,7,194,29,1, + 27,7,114,220,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,0,0,0,0,115,88,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, + 4,100,3,90,5,101,6,111,15,100,4,101,7,118,0,90, + 8,101,9,100,5,100,6,132,0,131,1,90,10,101,11,100, + 7,100,8,132,0,131,1,90,12,101,11,100,14,100,10,100, + 11,132,1,131,1,90,13,101,11,100,15,100,12,100,13,132, + 1,131,1,90,14,100,9,83,0,41,16,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,8,0,0,0,3,0,0,0,115, + 52,0,0,0,9,0,116,0,106,1,116,0,106,2,124,0, + 131,2,83,0,35,0,4,0,116,3,121,25,1,0,1,0, + 1,0,116,0,106,1,116,0,106,4,124,0,131,2,6,0, + 89,0,83,0,37,0,119,0,114,72,0,0,0,41,5,218, + 6,119,105,110,114,101,103,90,7,79,112,101,110,75,101,121, + 90,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85, + 83,69,82,114,81,0,0,0,90,18,72,75,69,89,95,76, + 79,67,65,76,95,77,65,67,72,73,78,69,114,22,0,0, + 0,115,1,0,0,0,32,114,7,0,0,0,218,14,95,111, + 112,101,110,95,114,101,103,105,115,116,114,121,48,3,0,0, + 115,14,0,0,0,2,2,14,1,2,128,12,1,18,1,2, + 128,2,255,115,16,0,0,0,2,5,14,254,2,128,2,2, + 2,255,26,1,2,128,2,0,115,52,0,0,0,9,66,20, + 26,20,34,35,41,35,59,61,64,20,65,13,65,0,0,9, + 66,16,23,9,66,9,66,9,66,9,66,20,26,20,34,35, + 41,35,60,62,65,20,66,13,66,13,66,13,66,0,0,9, + 66,115,12,0,0,0,129,6,8,0,136,14,24,7,153,1, + 24,7,122,36,87,105,110,100,111,119,115,82,101,103,105,115, + 116,114,121,70,105,110,100,101,114,46,95,111,112,101,110,95, + 114,101,103,105,115,116,114,121,99,2,0,0,0,0,0,0, + 0,0,0,0,0,9,0,0,0,3,0,0,0,115,136,0, + 0,0,124,0,106,0,114,7,124,0,106,1,125,2,110,3, + 124,0,106,2,125,2,124,2,160,3,124,1,100,1,116,4, + 106,5,100,0,100,2,133,2,25,0,22,0,100,3,166,2, + 125,3,9,0,124,0,160,6,124,3,161,1,53,0,125,4, + 116,7,106,8,124,4,100,4,131,2,125,5,100,0,4,0, + 4,0,131,3,1,0,110,11,35,0,49,0,115,48,119,4, + 37,0,1,0,1,0,1,0,89,0,1,0,1,0,124,5, + 83,0,35,0,4,0,116,9,121,67,1,0,1,0,1,0, + 89,0,100,0,83,0,37,0,119,0,41,5,78,122,5,37, + 100,46,37,100,114,47,0,0,0,41,2,114,167,0,0,0, + 90,11,115,121,115,95,118,101,114,115,105,111,110,114,11,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,114,94,0,0,0,114,18,0,0,0,218,12,118, + 101,114,115,105,111,110,95,105,110,102,111,114,223,0,0,0, + 114,222,0,0,0,90,10,81,117,101,114,121,86,97,108,117, + 101,114,81,0,0,0,41,6,218,3,99,108,115,114,167,0, + 0,0,90,12,114,101,103,105,115,116,114,121,95,107,101,121, + 114,23,0,0,0,90,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,7,0,0,0,218,16,95,115,101,97,114,99,104,95,114, + 101,103,105,115,116,114,121,55,3,0,0,115,36,0,0,0, + 6,2,8,1,6,2,6,1,16,1,6,255,2,2,12,1, + 12,1,20,255,2,128,12,0,4,4,2,128,12,254,6,1, + 2,128,2,255,115,46,0,0,0,4,2,2,3,8,254,6, + 2,2,1,2,1,2,255,20,1,2,255,2,6,8,253,2, + 1,2,255,32,1,2,128,12,0,4,3,2,128,2,255,2, + 255,14,1,2,128,2,0,115,136,0,0,0,12,15,12,27, + 9,44,28,31,28,50,13,25,13,25,28,31,28,44,13,25, + 15,27,15,78,44,52,47,54,57,60,57,73,74,76,75,76, + 74,76,57,77,47,77,15,78,15,78,9,12,9,24,18,21, + 18,41,37,40,18,41,13,55,45,49,28,34,28,45,46,50, + 52,54,28,55,17,25,13,55,13,55,13,55,13,55,13,55, + 13,55,13,55,13,55,13,55,13,55,0,0,13,55,13,55, + 13,55,13,55,13,55,13,55,16,24,9,24,0,0,9,24, + 16,23,9,24,9,24,9,24,9,24,20,24,20,24,20,24, + 0,0,9,24,115,39,0,0,0,153,5,56,0,158,7,43, + 3,165,6,56,0,171,4,47,11,175,1,56,0,176,3,47, + 11,179,3,56,0,184,7,65,2,7,193,3,1,65,2,7, + 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,78,99,4,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,3,0,0,0,115,122, + 0,0,0,124,0,160,0,124,1,161,1,125,4,124,4,100, + 0,117,0,114,11,100,0,83,0,9,0,116,1,124,4,131, + 1,1,0,110,11,35,0,4,0,116,2,121,60,1,0,1, + 0,1,0,89,0,100,0,83,0,37,0,116,3,131,0,68, + 0,93,26,92,2,125,5,125,6,124,4,160,4,116,5,124, + 6,131,1,161,1,114,57,116,6,160,7,124,1,124,5,124, + 1,124,4,131,2,124,4,100,1,166,3,125,7,124,7,2, + 0,1,0,83,0,113,31,100,0,83,0,119,0,41,2,78, + 114,211,0,0,0,41,8,114,230,0,0,0,114,79,0,0, + 0,114,81,0,0,0,114,215,0,0,0,114,61,0,0,0, + 114,141,0,0,0,114,163,0,0,0,218,16,115,112,101,99, + 95,102,114,111,109,95,108,111,97,100,101,114,41,8,114,228, + 0,0,0,114,167,0,0,0,114,68,0,0,0,218,6,116, + 97,114,103,101,116,114,229,0,0,0,114,168,0,0,0,114, + 219,0,0,0,114,217,0,0,0,115,8,0,0,0,32,32, + 32,32,32,32,32,32,114,7,0,0,0,218,9,102,105,110, + 100,95,115,112,101,99,70,3,0,0,115,38,0,0,0,10, + 2,8,1,4,1,2,1,10,1,2,128,12,1,6,1,2, + 128,14,1,14,1,6,1,8,1,2,1,6,254,8,3,2, + 252,4,255,2,254,115,46,0,0,0,10,2,6,1,6,1, + 2,4,10,254,2,128,2,2,2,255,14,1,2,128,4,1, + 4,5,6,251,12,1,2,4,2,253,2,2,2,254,8,1, + 6,1,2,254,14,3,2,250,115,122,0,0,0,20,23,20, + 50,41,49,20,50,9,17,12,20,24,28,12,28,9,24,20, + 24,20,24,9,24,13,23,24,32,13,33,13,33,13,33,0, + 0,9,24,16,23,9,24,9,24,9,24,9,24,20,24,20, + 24,20,24,0,0,33,60,33,62,9,28,9,28,13,29,13, + 19,21,29,16,24,16,50,34,39,40,48,34,49,16,50,13, + 28,24,34,24,68,52,60,52,58,59,67,69,77,52,78,59, + 67,24,68,24,68,17,21,24,28,17,28,17,28,17,28,13, + 28,9,28,9,28,9,24,115,12,0,0,0,140,4,17,0, + 145,7,27,7,188,1,27,7,122,31,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, - 78,99,4,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,3,0,0,0,115,122,0,0,0,124,0,160,0,124, - 1,161,1,125,4,124,4,100,0,117,0,114,11,100,0,83, - 0,9,0,116,1,124,4,131,1,1,0,110,11,35,0,4, - 0,116,2,121,60,1,0,1,0,1,0,89,0,100,0,83, - 0,37,0,116,3,131,0,68,0,93,26,92,2,125,5,125, - 6,124,4,160,4,116,5,124,6,131,1,161,1,114,57,116, - 6,160,7,124,1,124,5,124,1,124,4,131,2,124,4,100, - 1,166,3,125,7,124,7,2,0,1,0,83,0,113,31,100, - 0,83,0,119,0,41,2,78,114,203,0,0,0,41,8,114, - 222,0,0,0,114,75,0,0,0,114,76,0,0,0,114,207, - 0,0,0,114,58,0,0,0,114,136,0,0,0,114,158,0, - 0,0,218,16,115,112,101,99,95,102,114,111,109,95,108,111, - 97,100,101,114,41,8,114,220,0,0,0,114,162,0,0,0, - 114,65,0,0,0,218,6,116,97,114,103,101,116,114,221,0, - 0,0,114,163,0,0,0,114,211,0,0,0,114,209,0,0, - 0,115,8,0,0,0,32,32,32,32,32,32,32,32,114,7, - 0,0,0,218,9,102,105,110,100,95,115,112,101,99,69,3, - 0,0,115,38,0,0,0,10,2,8,1,4,1,2,1,10, - 1,2,128,12,1,6,1,2,128,14,1,14,1,6,1,8, - 1,2,1,6,254,8,3,2,252,4,255,2,254,115,12,0, - 0,0,140,4,17,0,145,7,27,7,188,1,27,7,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,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,42,0,0,0,116,0,106,1,100,1,116, - 2,131,2,1,0,124,0,160,3,124,1,124,2,161,2,125, - 3,124,3,100,2,117,1,114,19,124,3,106,4,83,0,100, - 2,83,0,41,3,122,106,70,105,110,100,32,109,111,100,117, - 108,101,32,110,97,109,101,100,32,105,110,32,116,104,101,32, - 114,101,103,105,115,116,114,121,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,102,105,110,100,95,115,112,101,99,40,41,32,105, - 110,115,116,101,97,100,46,10,10,32,32,32,32,32,32,32, - 32,122,112,87,105,110,100,111,119,115,82,101,103,105,115,116, - 114,121,70,105,110,100,101,114,46,102,105,110,100,95,109,111, - 100,117,108,101,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, - 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, - 101,97,100,78,169,5,114,99,0,0,0,114,100,0,0,0, - 114,101,0,0,0,114,225,0,0,0,114,163,0,0,0,169, - 4,114,220,0,0,0,114,162,0,0,0,114,65,0,0,0, - 114,209,0,0,0,115,4,0,0,0,32,32,32,32,114,7, - 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, - 85,3,0,0,115,14,0,0,0,6,7,2,2,4,254,12, - 3,8,1,6,1,4,2,114,9,0,0,0,122,33,87,105, - 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110, - 100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,169, - 2,78,78,114,69,0,0,0,41,15,114,149,0,0,0,114, - 148,0,0,0,114,150,0,0,0,114,151,0,0,0,114,218, - 0,0,0,114,217,0,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,216,0,0,0,218,12, - 115,116,97,116,105,99,109,101,116,104,111,100,114,215,0,0, - 0,218,11,99,108,97,115,115,109,101,116,104,111,100,114,222, - 0,0,0,114,225,0,0,0,114,228,0,0,0,114,12,0, - 0,0,114,9,0,0,0,114,7,0,0,0,114,213,0,0, - 0,35,3,0,0,115,30,0,0,0,8,0,4,2,2,3, - 2,255,2,4,2,255,12,3,2,2,10,1,2,6,10,1, - 2,14,12,1,2,15,16,1,114,9,0,0,0,114,213,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,0,0,0,0,115,48,0,0,0,101,0,90,1, - 100,0,90,2,100,1,90,3,100,2,100,3,132,0,90,4, - 100,4,100,5,132,0,90,5,100,6,100,7,132,0,90,6, - 100,8,100,9,132,0,90,7,100,10,83,0,41,11,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,4, - 0,0,0,3,0,0,0,115,64,0,0,0,116,0,124,0, - 160,1,124,1,161,1,131,1,100,1,25,0,125,2,124,2, - 160,2,100,2,100,1,161,2,100,3,25,0,125,3,124,1, - 160,3,100,2,161,1,100,4,25,0,125,4,124,3,100,5, - 107,2,111,31,124,4,100,5,107,3,83,0,41,7,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,3,0, - 0,0,114,97,0,0,0,114,0,0,0,0,114,45,0,0, - 0,218,8,95,95,105,110,105,116,95,95,78,41,4,114,73, - 0,0,0,114,202,0,0,0,114,125,0,0,0,114,104,0, - 0,0,41,5,114,143,0,0,0,114,162,0,0,0,114,120, - 0,0,0,90,13,102,105,108,101,110,97,109,101,95,98,97, - 115,101,90,9,116,97,105,108,95,110,97,109,101,115,5,0, - 0,0,32,32,32,32,32,114,7,0,0,0,114,205,0,0, - 0,107,3,0,0,115,8,0,0,0,18,3,16,1,14,1, - 16,1,114,9,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,3,0,0,0,114,24,0,0,0,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,12,0,0,0,169, - 2,114,143,0,0,0,114,209,0,0,0,115,2,0,0,0, - 32,32,114,7,0,0,0,218,13,99,114,101,97,116,101,95, - 109,111,100,117,108,101,115,3,0,0,243,2,0,0,0,4, - 0,114,9,0,0,0,122,27,95,76,111,97,100,101,114,66, - 97,115,105,99,115,46,99,114,101,97,116,101,95,109,111,100, - 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,3,0,0,0,115,56,0,0,0,124,0,160, - 0,124,1,106,1,161,1,125,2,124,2,100,1,117,0,114, - 18,116,2,100,2,160,3,124,1,106,1,161,1,131,1,130, - 1,116,4,160,5,116,6,124,2,124,1,106,7,161,3,1, - 0,100,1,83,0,41,3,122,19,69,120,101,99,117,116,101, - 32,116,104,101,32,109,111,100,117,108,101,46,78,122,52,99, - 97,110,110,111,116,32,108,111,97,100,32,109,111,100,117,108, - 101,32,123,33,114,125,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,8,218,8,103,101,116,95,99,111,100,101,114, - 149,0,0,0,114,142,0,0,0,114,89,0,0,0,114,158, - 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,155,0,0,0,41,3,114,143,0,0,0, - 218,6,109,111,100,117,108,101,114,187,0,0,0,115,3,0, - 0,0,32,32,32,114,7,0,0,0,218,11,101,120,101,99, - 95,109,111,100,117,108,101,118,3,0,0,115,12,0,0,0, - 12,2,8,1,4,1,8,1,4,255,20,2,114,9,0,0, - 0,122,25,95,76,111,97,100,101,114,66,97,115,105,99,115, - 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, - 0,115,12,0,0,0,116,0,160,1,124,0,124,1,161,2, - 83,0,41,2,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, - 78,41,2,114,158,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,143,0, - 0,0,114,162,0,0,0,115,2,0,0,0,32,32,114,7, - 0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101, - 126,3,0,0,115,2,0,0,0,12,3,114,9,0,0,0, - 122,25,95,76,111,97,100,101,114,66,97,115,105,99,115,46, - 108,111,97,100,95,109,111,100,117,108,101,78,41,8,114,149, - 0,0,0,114,148,0,0,0,114,150,0,0,0,114,151,0, - 0,0,114,205,0,0,0,114,238,0,0,0,114,244,0,0, - 0,114,247,0,0,0,114,12,0,0,0,114,9,0,0,0, - 114,7,0,0,0,114,234,0,0,0,102,3,0,0,115,12, - 0,0,0,8,0,4,2,8,3,8,8,8,3,12,8,114, - 9,0,0,0,114,234,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,0,0,0,0,115,74, - 0,0,0,101,0,90,1,100,0,90,2,100,1,100,2,132, - 0,90,3,100,3,100,4,132,0,90,4,100,5,100,6,132, - 0,90,5,100,7,100,8,132,0,90,6,100,9,100,10,132, - 0,90,7,100,11,100,12,156,1,100,13,100,14,132,2,90, - 8,100,15,100,16,132,0,90,9,100,17,83,0,41,18,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,115,4,0,0,0,116,0,130,1,41,2,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,78,41,1,114,76,0,0,0,169,2,114,143, - 0,0,0,114,65,0,0,0,115,2,0,0,0,32,32,114, - 7,0,0,0,218,10,112,97,116,104,95,109,116,105,109,101, - 134,3,0,0,115,2,0,0,0,4,6,114,9,0,0,0, - 122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,112, - 97,116,104,95,109,116,105,109,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,14, - 0,0,0,100,1,124,0,160,0,124,1,161,1,105,1,83, - 0,41,3,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,192,0,0,0,78,41,1,114,250, - 0,0,0,114,249,0,0,0,115,2,0,0,0,32,32,114, - 7,0,0,0,218,10,112,97,116,104,95,115,116,97,116,115, - 142,3,0,0,115,2,0,0,0,14,12,114,9,0,0,0, + 102,105,110,100,95,115,112,101,99,99,3,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,42, + 0,0,0,116,0,106,1,100,1,116,2,131,2,1,0,124, + 0,160,3,124,1,124,2,161,2,125,3,124,3,100,2,117, + 1,114,19,124,3,106,4,83,0,100,2,83,0,41,3,122, + 106,70,105,110,100,32,109,111,100,117,108,101,32,110,97,109, + 101,100,32,105,110,32,116,104,101,32,114,101,103,105,115,116, + 114,121,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,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 46,10,10,32,32,32,32,32,32,32,32,122,112,87,105,110, + 100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100, + 101,114,46,102,105,110,100,95,109,111,100,117,108,101,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,102,105,110,100,95,115, + 112,101,99,40,41,32,105,110,115,116,101,97,100,78,169,5, + 114,104,0,0,0,114,105,0,0,0,114,106,0,0,0,114, + 233,0,0,0,114,168,0,0,0,169,4,114,228,0,0,0, + 114,167,0,0,0,114,68,0,0,0,114,217,0,0,0,115, + 4,0,0,0,32,32,32,32,114,7,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,86,3,0,0,115,14, + 0,0,0,6,7,2,2,4,254,12,3,8,1,6,1,4, + 2,115,16,0,0,0,4,7,2,1,6,1,12,1,6,1, + 2,3,6,254,4,2,115,42,0,0,0,9,18,9,23,24, + 84,24,42,9,43,9,43,16,19,16,45,30,38,40,44,16, + 45,9,13,12,16,24,28,12,28,9,24,20,24,20,31,13, + 31,20,24,20,24,114,10,0,0,0,122,33,87,105,110,100, + 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,169,2,78, + 78,114,72,0,0,0,41,15,114,154,0,0,0,114,153,0, + 0,0,114,155,0,0,0,114,156,0,0,0,114,226,0,0, + 0,114,225,0,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,224,0,0,0,218,12,115,116, + 97,116,105,99,109,101,116,104,111,100,114,223,0,0,0,218, + 11,99,108,97,115,115,109,101,116,104,111,100,114,230,0,0, + 0,114,233,0,0,0,114,236,0,0,0,114,13,0,0,0, + 114,10,0,0,0,114,7,0,0,0,114,221,0,0,0,36, + 3,0,0,115,30,0,0,0,8,0,4,2,2,3,2,255, + 2,4,2,255,12,3,2,2,10,1,2,6,10,1,2,14, + 12,1,2,15,16,1,115,84,0,0,0,0,129,0,129,0, + 129,0,129,0,129,0,129,8,214,0,127,0,127,0,127,0, + 127,0,127,0,127,2,44,0,129,0,129,0,129,0,129,0, + 129,0,129,2,212,0,127,0,127,0,127,0,127,0,127,0, + 127,2,48,2,254,2,5,2,254,12,3,2,2,10,5,2, + 2,10,13,2,2,2,1,10,13,2,2,2,1,14,13,115, + 88,0,0,0,1,1,1,1,1,1,1,1,5,73,1,1, + 9,32,5,17,9,39,5,23,20,31,20,66,36,44,48,66, + 36,66,5,16,6,18,5,66,5,66,5,66,5,66,5,66, + 6,17,5,24,5,24,5,24,5,24,5,24,6,17,39,43, + 5,28,5,28,5,28,5,28,5,28,6,17,41,45,5,24, + 5,24,5,24,5,24,5,24,5,24,5,24,114,10,0,0, + 0,114,221,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,0,0,0,0,115,48,0,0,0, + 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,3, + 132,0,90,4,100,4,100,5,132,0,90,5,100,6,100,7, + 132,0,90,6,100,8,100,9,132,0,90,7,100,10,83,0, + 41,11,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,4,0,0,0,3,0,0,0,115,64,0,0,0, + 116,0,124,0,160,1,124,1,161,1,131,1,100,1,25,0, + 125,2,124,2,160,2,100,2,100,1,161,2,100,3,25,0, + 125,3,124,1,160,3,100,2,161,1,100,4,25,0,125,4, + 124,3,100,5,107,2,111,31,124,4,100,5,107,3,83,0, + 41,7,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,3,0,0,0,114,102,0,0,0,114,0,0,0,0, + 114,47,0,0,0,218,8,95,95,105,110,105,116,95,95,78, + 41,4,114,77,0,0,0,114,210,0,0,0,114,130,0,0, + 0,114,109,0,0,0,41,5,114,148,0,0,0,114,167,0, + 0,0,114,125,0,0,0,90,13,102,105,108,101,110,97,109, + 101,95,98,97,115,101,90,9,116,97,105,108,95,110,97,109, + 101,115,5,0,0,0,32,32,32,32,32,114,7,0,0,0, + 114,213,0,0,0,108,3,0,0,243,8,0,0,0,18,3, + 16,1,14,1,16,1,114,244,0,0,0,115,64,0,0,0, + 20,31,32,36,32,59,50,58,32,59,20,60,61,62,20,63, + 9,17,25,33,25,48,41,44,46,47,25,48,49,50,25,51, + 9,22,21,29,21,45,41,44,21,45,46,47,21,48,9,18, + 16,29,33,43,16,43,16,71,48,57,61,71,48,71,9,71, + 114,10,0,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,99, + 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,114,26,0,0,0,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,13,0,0,0,169,2,114, + 148,0,0,0,114,217,0,0,0,115,2,0,0,0,32,32, + 114,7,0,0,0,218,13,99,114,101,97,116,101,95,109,111, + 100,117,108,101,116,3,0,0,243,2,0,0,0,4,0,243, + 2,0,0,0,4,128,115,4,0,0,0,0,0,0,0,114, + 10,0,0,0,122,27,95,76,111,97,100,101,114,66,97,115, + 105,99,115,46,99,114,101,97,116,101,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,3,0,0,0,115,56,0,0,0,124,0,160,0,124, + 1,106,1,161,1,125,2,124,2,100,1,117,0,114,18,116, + 2,100,2,160,3,124,1,106,1,161,1,131,1,130,1,116, + 4,160,5,116,6,124,2,124,1,106,7,161,3,1,0,100, + 1,83,0,41,3,122,19,69,120,101,99,117,116,101,32,116, + 104,101,32,109,111,100,117,108,101,46,78,122,52,99,97,110, + 110,111,116,32,108,111,97,100,32,109,111,100,117,108,101,32, + 123,33,114,125,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,8,218,8,103,101,116,95,99,111,100,101,114,154,0, + 0,0,114,147,0,0,0,114,94,0,0,0,114,163,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,160,0,0,0,41,3,114,148,0,0,0,218,6, + 109,111,100,117,108,101,114,192,0,0,0,115,3,0,0,0, + 32,32,32,114,7,0,0,0,218,11,101,120,101,99,95,109, + 111,100,117,108,101,119,3,0,0,115,12,0,0,0,12,2, + 8,1,4,1,8,1,4,255,20,2,115,12,0,0,0,12, + 2,6,1,2,2,2,255,14,1,20,1,115,56,0,0,0, + 16,20,16,46,30,36,30,45,16,46,9,13,12,16,20,24, + 12,24,9,70,19,30,31,45,31,69,53,59,53,68,31,69, + 19,70,13,70,9,19,9,74,46,50,52,56,58,64,58,73, + 9,74,9,74,9,74,9,74,114,10,0,0,0,122,25,95, + 76,111,97,100,101,114,66,97,115,105,99,115,46,101,120,101, + 99,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,12,0, + 0,0,116,0,160,1,124,0,124,1,161,2,83,0,41,2, + 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,78,41,2,114, + 163,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,148,0,0,0,114,167, + 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,218, + 11,108,111,97,100,95,109,111,100,117,108,101,127,3,0,0, + 243,2,0,0,0,12,3,114,2,1,0,0,115,12,0,0, + 0,16,26,16,60,45,49,51,59,16,60,9,60,114,10,0, + 0,0,122,25,95,76,111,97,100,101,114,66,97,115,105,99, + 115,46,108,111,97,100,95,109,111,100,117,108,101,78,41,8, + 114,154,0,0,0,114,153,0,0,0,114,155,0,0,0,114, + 156,0,0,0,114,213,0,0,0,114,247,0,0,0,114,254, + 0,0,0,114,1,1,0,0,114,13,0,0,0,114,10,0, + 0,0,114,7,0,0,0,114,242,0,0,0,103,3,0,0, + 115,12,0,0,0,8,0,4,2,8,3,8,8,8,3,12, + 8,115,62,0,0,0,0,129,0,129,0,129,0,129,0,129, + 0,129,8,147,0,127,0,127,0,127,0,127,0,127,0,127, + 2,112,0,129,0,129,0,129,0,129,0,129,0,129,2,144, + 0,127,0,127,0,127,0,127,0,127,0,127,8,120,8,3, + 8,8,12,5,115,48,0,0,0,1,1,1,1,1,1,1, + 1,5,29,1,1,5,71,5,71,5,71,5,71,5,57,5, + 57,5,57,5,57,5,74,5,74,5,74,5,74,5,60,5, + 60,5,60,5,60,5,60,5,60,114,10,0,0,0,114,242, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,0,0,115,74,0,0,0,101,0,90, + 1,100,0,90,2,100,1,100,2,132,0,90,3,100,3,100, + 4,132,0,90,4,100,5,100,6,132,0,90,5,100,7,100, + 8,132,0,90,6,100,9,100,10,132,0,90,7,100,11,100, + 12,156,1,100,13,100,14,132,2,90,8,100,15,100,16,132, + 0,90,9,100,17,83,0,41,18,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,115,4,0,0, + 0,116,0,130,1,41,2,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,78,41, + 1,114,81,0,0,0,169,2,114,148,0,0,0,114,68,0, + 0,0,115,2,0,0,0,32,32,114,7,0,0,0,218,10, + 112,97,116,104,95,109,116,105,109,101,135,3,0,0,243,2, + 0,0,0,4,6,114,6,1,0,0,115,4,0,0,0,15, + 22,9,22,114,10,0,0,0,122,23,83,111,117,114,99,101, + 76,111,97,100,101,114,46,112,97,116,104,95,109,116,105,109, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,115,14,0,0,0,100,1,124,0,160, + 0,124,1,161,1,105,1,83,0,41,3,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,197, + 0,0,0,78,41,1,114,5,1,0,0,114,4,1,0,0, + 115,2,0,0,0,32,32,114,7,0,0,0,218,10,112,97, + 116,104,95,115,116,97,116,115,143,3,0,0,243,2,0,0, + 0,14,12,114,8,1,0,0,115,14,0,0,0,17,24,26, + 30,26,47,42,46,26,47,16,48,9,48,114,10,0,0,0, 122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,112, 97,116,104,95,115,116,97,116,115,99,4,0,0,0,0,0, 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,12, @@ -1348,175 +1670,242 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,78,41,1,218,8,115,101,116,95, - 100,97,116,97,41,4,114,143,0,0,0,114,134,0,0,0, - 90,10,99,97,99,104,101,95,112,97,116,104,114,42,0,0, + 100,97,116,97,41,4,114,148,0,0,0,114,139,0,0,0, + 90,10,99,97,99,104,101,95,112,97,116,104,114,44,0,0, 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, 15,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101, - 156,3,0,0,115,2,0,0,0,12,8,114,9,0,0,0, - 122,28,83,111,117,114,99,101,76,111,97,100,101,114,46,95, - 99,97,99,104,101,95,98,121,116,101,99,111,100,101,99,3, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, - 0,0,0,114,24,0,0,0,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,12,0,0,0,41,3,114,143,0,0,0,114, - 65,0,0,0,114,42,0,0,0,115,3,0,0,0,32,32, - 32,114,7,0,0,0,114,252,0,0,0,166,3,0,0,114, - 239,0,0,0,114,9,0,0,0,122,21,83,111,117,114,99, - 101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,97, - 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,3,0,0,0,115,70,0,0,0,124,0,160,0,124,1, - 161,1,125,2,9,0,124,0,160,1,124,2,161,1,125,3, - 116,4,124,3,131,1,83,0,35,0,4,0,116,2,121,34, - 1,0,125,4,1,0,116,3,100,1,124,1,100,2,141,2, - 124,4,130,2,100,3,125,4,126,4,119,1,37,0,119,0, - 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,140,0,0,0,78,41,5,114,202,0,0,0,218,8, - 103,101,116,95,100,97,116,97,114,76,0,0,0,114,142,0, - 0,0,114,199,0,0,0,41,5,114,143,0,0,0,114,162, - 0,0,0,114,65,0,0,0,114,197,0,0,0,218,3,101, - 120,99,115,5,0,0,0,32,32,32,32,32,114,7,0,0, - 0,218,10,103,101,116,95,115,111,117,114,99,101,173,3,0, - 0,115,26,0,0,0,10,2,2,1,10,1,8,4,2,128, - 12,253,4,1,2,1,4,255,2,1,2,255,10,128,2,255, - 115,20,0,0,0,134,5,15,0,143,7,33,7,150,7,29, - 7,157,4,33,7,162,1,33,7,122,23,83,111,117,114,99, - 101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114, - 99,101,114,130,0,0,0,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,9,0,0,0,3,0,0,0,115,22,0,0,0,116,0, - 160,1,116,2,124,1,124,2,100,1,100,2,124,3,100,3, - 166,6,83,0,41,5,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,242,0,0,0,84, - 41,2,218,12,100,111,110,116,95,105,110,104,101,114,105,116, - 114,108,0,0,0,78,41,3,114,158,0,0,0,114,241,0, - 0,0,218,7,99,111,109,112,105,108,101,41,4,114,143,0, - 0,0,114,42,0,0,0,114,65,0,0,0,114,1,1,0, - 0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,218, - 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,183, - 3,0,0,115,6,0,0,0,12,5,4,1,6,255,114,9, - 0,0,0,122,27,83,111,117,114,99,101,76,111,97,100,101, - 114,46,115,111,117,114,99,101,95,116,111,95,99,111,100,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,3,0,0,0,115,28,2,0,0,124,0,160,0,124,1, - 161,1,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,1,124,2,131,1, - 125,8,110,13,35,0,4,0,116,2,144,1,121,13,1,0, - 1,0,1,0,100,1,125,8,89,0,110,147,37,0,9,0, - 124,0,160,3,124,2,161,1,125,9,110,11,35,0,4,0, - 116,4,144,1,121,12,1,0,1,0,1,0,89,0,110,129, - 37,0,116,5,124,9,100,4,25,0,131,1,125,3,9,0, - 124,0,160,6,124,8,161,1,125,10,110,11,35,0,4,0, - 116,4,144,1,121,11,1,0,1,0,1,0,89,0,110,105, - 37,0,124,1,124,8,100,5,156,2,125,11,9,0,116,7, - 124,10,124,1,124,11,131,3,125,12,116,8,124,10,131,1, - 100,6,100,1,133,2,25,0,125,13,124,12,100,7,64,0, - 100,8,107,3,125,6,124,6,114,141,124,12,100,9,64,0, - 100,8,107,3,125,7,116,9,106,10,100,10,107,3,114,140, - 124,7,115,122,116,9,106,10,100,11,107,2,114,140,124,0, - 160,6,124,2,161,1,125,4,116,9,106,11,116,12,124,4, - 131,2,125,5,116,13,124,10,124,5,124,1,124,11,131,4, - 1,0,110,10,116,14,124,10,124,3,124,9,100,12,25,0, - 124,1,124,11,131,5,1,0,110,13,35,0,4,0,116,15, - 116,16,102,2,144,1,121,10,1,0,1,0,1,0,89,0, - 110,16,37,0,116,17,160,18,100,13,124,8,124,2,161,3, - 1,0,116,19,124,13,124,1,124,8,124,2,100,14,141,4, - 83,0,124,4,100,1,117,0,114,189,124,0,160,6,124,2, - 161,1,125,4,124,0,160,20,124,4,124,2,161,2,125,14, - 116,17,160,18,100,15,124,2,161,2,1,0,116,21,106,22, - 144,1,115,7,124,8,100,1,117,1,144,1,114,7,124,3, - 100,1,117,1,144,1,114,7,124,6,114,233,124,5,100,1, - 117,0,114,226,116,9,106,11,124,4,131,1,125,5,116,23, - 124,14,124,5,124,7,131,3,125,10,110,8,116,24,124,14, - 124,3,116,25,124,4,131,1,131,3,125,10,9,0,124,0, - 160,26,124,2,124,8,124,10,161,3,1,0,124,14,83,0, - 35,0,4,0,116,2,144,1,121,9,1,0,1,0,1,0, - 89,0,124,14,83,0,37,0,124,14,83,0,119,0,119,0, - 119,0,119,0,119,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,192,0,0,0, - 114,182,0,0,0,114,168,0,0,0,114,3,0,0,0,114, - 0,0,0,0,114,45,0,0,0,90,5,110,101,118,101,114, - 90,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, - 141,0,0,0,114,132,0,0,0,114,134,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,202,0,0,0,114,121,0,0,0,114, - 107,0,0,0,114,251,0,0,0,114,76,0,0,0,114,34, - 0,0,0,114,254,0,0,0,114,175,0,0,0,218,10,109, - 101,109,111,114,121,118,105,101,119,114,186,0,0,0,90,21, - 99,104,101,99,107,95,104,97,115,104,95,98,97,115,101,100, - 95,112,121,99,115,114,180,0,0,0,218,17,95,82,65,87, - 95,77,65,71,73,67,95,78,85,77,66,69,82,114,181,0, - 0,0,114,179,0,0,0,114,142,0,0,0,114,173,0,0, - 0,114,158,0,0,0,114,172,0,0,0,114,188,0,0,0, - 114,4,1,0,0,114,16,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, - 194,0,0,0,114,193,0,0,0,114,4,0,0,0,114,253, - 0,0,0,41,15,114,143,0,0,0,114,162,0,0,0,114, - 134,0,0,0,114,177,0,0,0,114,197,0,0,0,114,180, - 0,0,0,90,10,104,97,115,104,95,98,97,115,101,100,90, - 12,99,104,101,99,107,95,115,111,117,114,99,101,114,132,0, - 0,0,218,2,115,116,114,42,0,0,0,114,174,0,0,0, - 114,17,0,0,0,90,10,98,121,116,101,115,95,100,97,116, - 97,90,11,99,111,100,101,95,111,98,106,101,99,116,115,15, - 0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,114,7,0,0,0,114,240,0,0,0,191,3,0,0, - 115,188,0,0,0,10,7,4,1,4,1,4,1,4,1,4, - 1,2,1,10,1,2,128,14,1,8,1,2,128,2,2,12, - 1,2,128,14,1,4,1,2,128,12,2,2,1,12,1,2, - 128,14,1,4,1,2,128,2,3,2,1,6,254,2,4,12, - 1,16,1,12,1,4,1,12,1,10,1,2,1,2,255,8, - 2,2,254,10,3,4,1,2,1,2,1,4,254,8,4,2, - 1,4,255,2,128,2,3,2,1,2,1,6,1,2,1,2, - 1,4,251,4,128,18,7,4,1,2,128,8,2,2,1,4, - 255,6,2,2,1,2,1,6,254,8,3,10,1,12,1,12, - 1,18,1,6,1,4,255,4,2,8,1,10,1,14,1,6, - 2,6,1,4,255,2,2,14,1,4,3,2,128,14,254,2, - 1,4,1,2,128,4,0,2,254,2,233,2,225,2,250,2, - 251,115,80,0,0,0,144,4,21,0,149,10,33,7,163,5, - 41,0,169,8,51,7,187,5,65,1,0,193,1,8,65,11, - 7,193,18,65,5,66,24,0,194,24,10,66,36,7,195,50, - 7,67,59,0,195,59,8,68,6,7,196,9,1,68,6,7, - 196,10,1,66,36,7,196,11,1,65,11,7,196,12,1,51, - 7,196,13,1,33,7,122,21,83,111,117,114,99,101,76,111, - 97,100,101,114,46,103,101,116,95,99,111,100,101,78,41,10, - 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, - 250,0,0,0,114,251,0,0,0,114,253,0,0,0,114,252, - 0,0,0,114,0,1,0,0,114,4,1,0,0,114,240,0, - 0,0,114,12,0,0,0,114,9,0,0,0,114,7,0,0, - 0,114,248,0,0,0,132,3,0,0,115,16,0,0,0,8, - 0,8,2,8,8,8,14,8,10,8,7,14,10,12,8,114, - 9,0,0,0,114,248,0,0,0,99,0,0,0,0,0,0, + 157,3,0,0,243,2,0,0,0,12,8,114,11,1,0,0, + 115,12,0,0,0,16,20,16,47,30,40,42,46,16,47,9, + 47,114,10,0,0,0,122,28,83,111,117,114,99,101,76,111, + 97,100,101,114,46,95,99,97,99,104,101,95,98,121,116,101, + 99,111,100,101,99,3,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,114,26,0,0,0,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,13,0,0,0,41,3, + 114,148,0,0,0,114,68,0,0,0,114,44,0,0,0,115, + 3,0,0,0,32,32,32,114,7,0,0,0,114,9,1,0, + 0,167,3,0,0,114,248,0,0,0,114,249,0,0,0,115, + 4,0,0,0,0,0,0,0,114,10,0,0,0,122,21,83, + 111,117,114,99,101,76,111,97,100,101,114,46,115,101,116,95, + 100,97,116,97,99,2,0,0,0,0,0,0,0,0,0,0, + 0,8,0,0,0,3,0,0,0,115,70,0,0,0,124,0, + 160,0,124,1,161,1,125,2,9,0,124,0,160,1,124,2, + 161,1,125,3,116,4,124,3,131,1,83,0,35,0,4,0, + 116,2,121,34,1,0,125,4,1,0,116,3,100,1,124,1, + 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, + 37,0,119,0,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,145,0,0,0,78,41,5,114,210,0, + 0,0,218,8,103,101,116,95,100,97,116,97,114,81,0,0, + 0,114,147,0,0,0,114,206,0,0,0,41,5,114,148,0, + 0,0,114,167,0,0,0,114,68,0,0,0,114,204,0,0, + 0,218,3,101,120,99,115,5,0,0,0,32,32,32,32,32, + 114,7,0,0,0,218,10,103,101,116,95,115,111,117,114,99, + 101,174,3,0,0,115,26,0,0,0,10,2,2,1,10,1, + 8,4,2,128,12,253,4,1,2,1,4,255,2,1,2,255, + 10,128,2,255,115,24,0,0,0,10,2,2,5,10,253,8, + 4,2,128,2,255,2,254,8,2,4,255,10,1,10,128,2, + 0,115,70,0,0,0,16,20,16,43,34,42,16,43,9,13, + 9,54,28,32,28,47,42,46,28,47,13,25,16,29,30,42, + 16,43,9,43,0,0,9,54,16,23,9,54,9,54,9,54, + 9,54,19,30,31,72,36,44,19,45,19,45,51,54,13,54, + 0,0,0,0,0,0,0,0,0,0,9,54,115,20,0,0, + 0,134,5,15,0,143,7,33,7,150,7,29,7,157,4,33, + 7,162,1,33,7,122,23,83,111,117,114,99,101,76,111,97, + 100,101,114,46,103,101,116,95,115,111,117,114,99,101,114,135, + 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,9,0,0, + 0,3,0,0,0,115,22,0,0,0,116,0,160,1,116,2, + 124,1,124,2,100,1,100,2,124,3,100,3,166,6,83,0, + 41,5,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,252,0,0,0,84,41,2,218,12, + 100,111,110,116,95,105,110,104,101,114,105,116,114,113,0,0, + 0,78,41,3,114,163,0,0,0,114,251,0,0,0,218,7, + 99,111,109,112,105,108,101,41,4,114,148,0,0,0,114,44, + 0,0,0,114,68,0,0,0,114,15,1,0,0,115,4,0, + 0,0,32,32,32,32,114,7,0,0,0,218,14,115,111,117, + 114,99,101,95,116,111,95,99,111,100,101,184,3,0,0,115, + 6,0,0,0,12,5,4,1,6,255,115,8,0,0,0,2, + 5,2,1,8,255,10,1,115,22,0,0,0,16,26,16,79, + 53,60,62,66,68,72,74,80,54,58,69,78,16,79,16,79, + 9,79,114,10,0,0,0,122,27,83,111,117,114,99,101,76, + 111,97,100,101,114,46,115,111,117,114,99,101,95,116,111,95, + 99,111,100,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,9,0,0,0,3,0,0,0,115,28,2,0,0,124,0, + 160,0,124,1,161,1,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,1, + 124,2,131,1,125,8,110,13,35,0,4,0,116,2,144,1, + 121,13,1,0,1,0,1,0,100,1,125,8,89,0,110,147, + 37,0,9,0,124,0,160,3,124,2,161,1,125,9,110,11, + 35,0,4,0,116,4,144,1,121,12,1,0,1,0,1,0, + 89,0,110,129,37,0,116,5,124,9,100,4,25,0,131,1, + 125,3,9,0,124,0,160,6,124,8,161,1,125,10,110,11, + 35,0,4,0,116,4,144,1,121,11,1,0,1,0,1,0, + 89,0,110,105,37,0,124,1,124,8,100,5,156,2,125,11, + 9,0,116,7,124,10,124,1,124,11,131,3,125,12,116,8, + 124,10,131,1,100,6,100,1,133,2,25,0,125,13,124,12, + 100,7,64,0,100,8,107,3,125,6,124,6,114,141,124,12, + 100,9,64,0,100,8,107,3,125,7,116,9,106,10,100,10, + 107,3,114,140,124,7,115,122,116,9,106,10,100,11,107,2, + 114,140,124,0,160,6,124,2,161,1,125,4,116,9,106,11, + 116,12,124,4,131,2,125,5,116,13,124,10,124,5,124,1, + 124,11,131,4,1,0,110,10,116,14,124,10,124,3,124,9, + 100,12,25,0,124,1,124,11,131,5,1,0,110,13,35,0, + 4,0,116,15,116,16,102,2,144,1,121,10,1,0,1,0, + 1,0,89,0,110,16,37,0,116,17,160,18,100,13,124,8, + 124,2,161,3,1,0,116,19,124,13,124,1,124,8,124,2, + 100,14,141,4,83,0,124,4,100,1,117,0,114,189,124,0, + 160,6,124,2,161,1,125,4,124,0,160,20,124,4,124,2, + 161,2,125,14,116,17,160,18,100,15,124,2,161,2,1,0, + 116,21,106,22,144,1,115,7,124,8,100,1,117,1,144,1, + 114,7,124,3,100,1,117,1,144,1,114,7,124,6,114,233, + 124,5,100,1,117,0,114,226,116,9,106,11,124,4,131,1, + 125,5,116,23,124,14,124,5,124,7,131,3,125,10,110,8, + 116,24,124,14,124,3,116,25,124,4,131,1,131,3,125,10, + 9,0,124,0,160,26,124,2,124,8,124,10,161,3,1,0, + 124,14,83,0,35,0,4,0,116,2,144,1,121,9,1,0, + 1,0,1,0,89,0,124,14,83,0,37,0,124,14,83,0, + 119,0,119,0,119,0,119,0,119,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, + 197,0,0,0,114,187,0,0,0,114,173,0,0,0,114,3, + 0,0,0,114,0,0,0,0,114,47,0,0,0,90,5,110, + 101,118,101,114,90,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,146,0,0,0,114,137,0,0,0,114,139,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,210,0,0,0,114,126, + 0,0,0,114,112,0,0,0,114,7,1,0,0,114,81,0, + 0,0,114,36,0,0,0,114,12,1,0,0,114,180,0,0, + 0,218,10,109,101,109,111,114,121,118,105,101,119,114,191,0, + 0,0,90,21,99,104,101,99,107,95,104,97,115,104,95,98, + 97,115,101,100,95,112,121,99,115,114,185,0,0,0,218,17, + 95,82,65,87,95,77,65,71,73,67,95,78,85,77,66,69, + 82,114,186,0,0,0,114,184,0,0,0,114,147,0,0,0, + 114,178,0,0,0,114,163,0,0,0,114,177,0,0,0,114, + 193,0,0,0,114,18,1,0,0,114,18,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,200,0,0,0,114,198,0,0,0,114,4,0, + 0,0,114,10,1,0,0,41,15,114,148,0,0,0,114,167, + 0,0,0,114,139,0,0,0,114,182,0,0,0,114,204,0, + 0,0,114,185,0,0,0,90,10,104,97,115,104,95,98,97, + 115,101,100,90,12,99,104,101,99,107,95,115,111,117,114,99, + 101,114,137,0,0,0,218,2,115,116,114,44,0,0,0,114, + 179,0,0,0,114,19,0,0,0,90,10,98,121,116,101,115, + 95,100,97,116,97,90,11,99,111,100,101,95,111,98,106,101, + 99,116,115,15,0,0,0,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,114,7,0,0,0,114,250,0,0,0, + 192,3,0,0,115,188,0,0,0,10,7,4,1,4,1,4, + 1,4,1,4,1,2,1,10,1,2,128,14,1,8,1,2, + 128,2,2,12,1,2,128,14,1,4,1,2,128,12,2,2, + 1,12,1,2,128,14,1,4,1,2,128,2,3,2,1,6, + 254,2,4,12,1,16,1,12,1,4,1,12,1,10,1,2, + 1,2,255,8,2,2,254,10,3,4,1,2,1,2,1,4, + 254,8,4,2,1,4,255,2,128,2,3,2,1,2,1,6, + 1,2,1,2,1,4,251,4,128,18,7,4,1,2,128,8, + 2,2,1,4,255,6,2,2,1,2,1,6,254,8,3,10, + 1,12,1,12,1,18,1,6,1,4,255,4,2,8,1,10, + 1,14,1,6,2,6,1,4,255,2,2,14,1,4,3,2, + 128,14,254,2,1,4,1,2,128,4,0,2,254,2,233,2, + 225,2,250,2,251,115,212,0,0,0,10,7,4,1,4,1, + 4,1,4,1,4,1,2,52,10,206,2,128,2,2,2,255, + 18,1,2,128,2,48,12,211,2,128,2,2,2,255,14,1, + 2,128,12,2,2,41,12,217,2,128,2,2,2,255,14,1, + 2,128,2,3,2,1,4,1,2,253,2,35,12,226,16,1, + 12,1,2,1,2,19,12,238,8,1,2,9,2,248,2,8, + 8,249,2,7,10,250,4,1,2,1,2,1,2,1,2,253, + 8,4,6,1,2,128,2,2,2,1,2,1,6,1,2,1, + 2,1,4,1,4,128,2,2,6,255,14,1,2,128,2,2, + 2,1,4,255,6,1,6,1,2,1,8,1,6,1,12,1, + 12,1,12,1,4,1,4,12,6,244,4,12,6,245,4,11, + 2,246,2,6,6,251,12,1,14,1,6,2,8,1,2,255, + 2,5,14,254,4,3,2,128,2,255,2,255,12,1,4,1, + 2,128,4,0,2,255,2,233,2,225,2,250,2,251,115,28, + 2,0,0,23,27,23,50,41,49,23,50,9,20,24,28,9, + 21,24,28,9,21,23,27,9,20,22,27,9,19,24,28,9, + 21,9,74,29,46,47,58,29,59,13,26,13,26,0,0,9, + 33,16,35,9,33,9,33,9,33,9,33,9,33,29,33,13, + 26,13,26,13,26,0,0,13,74,22,26,22,50,38,49,22, + 50,17,19,17,19,0,0,13,21,20,27,13,21,13,21,13, + 21,13,21,13,21,17,21,17,21,0,0,32,35,36,38,39, + 46,36,47,32,48,17,29,17,74,28,32,28,56,42,55,28, + 56,21,25,21,25,0,0,17,25,24,31,17,25,17,25,17, + 25,17,25,17,25,21,25,21,25,0,0,33,41,33,46,35, + 22,35,22,21,32,21,74,33,46,47,51,53,61,63,74,33, + 75,25,30,38,48,49,53,38,54,55,57,55,58,55,58,38, + 59,25,35,38,43,46,49,38,49,53,54,38,54,25,35,28, + 38,25,30,44,49,52,56,44,56,60,61,44,61,29,41,33, + 37,33,59,63,70,33,70,29,64,34,46,29,64,34,38,34, + 60,64,72,34,72,29,64,48,52,48,74,62,73,48,74,33, + 45,47,51,47,63,37,54,37,49,47,34,33,44,33,51,52, + 56,58,69,71,79,52,63,33,64,33,64,0,0,29,52,33, + 37,33,45,33,35,36,42,33,43,33,41,33,44,29,30,29, + 30,0,0,0,0,21,29,29,40,42,50,28,51,21,29,21, + 29,21,29,21,29,21,29,25,29,25,29,0,0,25,35,25, + 65,53,68,70,83,53,64,25,65,25,65,32,49,50,60,67, + 75,64,77,62,73,32,74,32,74,25,74,12,24,28,32,12, + 32,9,54,28,32,28,54,42,53,28,54,13,25,23,27,23, + 69,43,55,57,68,23,69,9,20,9,19,9,72,37,58,60, + 71,9,72,9,72,17,20,17,40,9,21,9,21,45,58,66, + 70,45,70,9,21,9,21,17,29,37,41,17,41,9,21,9, + 21,16,26,13,65,20,31,35,39,20,39,17,65,35,39,35, + 51,52,64,35,65,21,32,24,41,42,53,55,66,68,80,24, + 81,17,21,17,21,24,46,47,58,60,72,47,50,51,63,47, + 64,24,65,17,21,13,21,17,21,17,71,38,49,51,64,66, + 70,17,71,17,71,16,27,9,27,0,0,13,21,20,39,13, + 21,13,21,13,21,13,21,13,21,17,21,16,27,9,27,0, + 0,16,27,9,27,13,21,21,29,17,25,13,21,9,33,115, + 80,0,0,0,144,4,21,0,149,10,33,7,163,5,41,0, + 169,8,51,7,187,5,65,1,0,193,1,8,65,11,7,193, + 18,65,5,66,24,0,194,24,10,66,36,7,195,50,7,67, + 59,0,195,59,8,68,6,7,196,9,1,68,6,7,196,10, + 1,66,36,7,196,11,1,65,11,7,196,12,1,51,7,196, + 13,1,33,7,122,21,83,111,117,114,99,101,76,111,97,100, + 101,114,46,103,101,116,95,99,111,100,101,78,41,10,114,154, + 0,0,0,114,153,0,0,0,114,155,0,0,0,114,5,1, + 0,0,114,7,1,0,0,114,10,1,0,0,114,9,1,0, + 0,114,14,1,0,0,114,18,1,0,0,114,250,0,0,0, + 114,13,0,0,0,114,10,0,0,0,114,7,0,0,0,114, + 3,1,0,0,133,3,0,0,115,16,0,0,0,8,0,8, + 2,8,8,8,14,8,10,8,7,14,10,12,8,115,46,0, + 0,0,0,129,0,129,0,129,0,129,0,129,0,129,0,129, + 8,244,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 8,20,8,14,8,10,8,6,8,11,2,2,12,6,12,84, + 115,74,0,0,0,1,1,1,1,1,1,1,1,5,22,5, + 22,5,22,5,22,5,48,5,48,5,48,5,48,5,47,5, + 47,5,47,5,47,5,12,5,12,5,12,5,12,5,43,5, + 43,5,43,5,43,55,57,5,79,5,79,5,79,5,79,5, + 79,5,79,5,27,5,27,5,27,5,27,5,27,5,27,114, + 10,0,0,0,114,3,1,0,0,99,0,0,0,0,0,0, 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,94, 0,0,0,135,0,101,0,90,1,100,0,90,2,100,1,90, 3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,90, @@ -1539,270 +1928,362 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,182,0,0,0,41,3,114,143,0,0,0,114,162, - 0,0,0,114,65,0,0,0,115,3,0,0,0,32,32,32, - 114,7,0,0,0,114,235,0,0,0,25,4,0,0,115,4, - 0,0,0,6,3,10,1,114,9,0,0,0,122,19,70,105, - 108,101,76,111,97,100,101,114,46,95,95,105,110,105,116,95, - 95,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,3,0,0,0,243,24,0,0,0,124,0,106,0,124, - 1,106,0,107,2,111,11,124,0,106,1,124,1,106,1,107, - 2,83,0,114,69,0,0,0,169,2,218,9,95,95,99,108, - 97,115,115,95,95,114,155,0,0,0,169,2,114,143,0,0, - 0,90,5,111,116,104,101,114,115,2,0,0,0,32,32,114, - 7,0,0,0,218,6,95,95,101,113,95,95,31,4,0,0, - 243,6,0,0,0,12,1,10,1,2,255,114,9,0,0,0, + 46,78,114,187,0,0,0,41,3,114,148,0,0,0,114,167, + 0,0,0,114,68,0,0,0,115,3,0,0,0,32,32,32, + 114,7,0,0,0,114,243,0,0,0,26,4,0,0,243,4, + 0,0,0,6,3,10,1,114,25,1,0,0,115,16,0,0, + 0,21,29,9,13,9,18,21,25,9,13,9,18,9,18,9, + 18,114,10,0,0,0,122,19,70,105,108,101,76,111,97,100, + 101,114,46,95,95,105,110,105,116,95,95,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 243,24,0,0,0,124,0,106,0,124,1,106,0,107,2,111, + 11,124,0,106,1,124,1,106,1,107,2,83,0,114,72,0, + 0,0,169,2,218,9,95,95,99,108,97,115,115,95,95,114, + 160,0,0,0,169,2,114,148,0,0,0,90,5,111,116,104, + 101,114,115,2,0,0,0,32,32,114,7,0,0,0,218,6, + 95,95,101,113,95,95,32,4,0,0,243,6,0,0,0,12, + 1,10,1,2,255,243,4,0,0,0,10,1,14,1,115,24, + 0,0,0,17,21,17,31,35,40,35,50,17,50,17,48,17, + 21,17,30,34,39,34,48,17,48,9,49,114,10,0,0,0, 122,17,70,105,108,101,76,111,97,100,101,114,46,95,95,101, 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, 3,0,0,0,3,0,0,0,243,20,0,0,0,116,0,124, 0,106,1,131,1,116,0,124,0,106,2,131,1,65,0,83, - 0,114,69,0,0,0,169,3,218,4,104,97,115,104,114,141, - 0,0,0,114,65,0,0,0,169,1,114,143,0,0,0,115, + 0,114,72,0,0,0,169,3,218,4,104,97,115,104,114,146, + 0,0,0,114,68,0,0,0,169,1,114,148,0,0,0,115, 1,0,0,0,32,114,7,0,0,0,218,8,95,95,104,97, - 115,104,95,95,35,4,0,0,243,2,0,0,0,20,1,114, - 9,0,0,0,122,19,70,105,108,101,76,111,97,100,101,114, - 46,95,95,104,97,115,104,95,95,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,3,0,0,0,115,16, - 0,0,0,116,0,116,1,124,0,131,2,160,2,124,1,161, - 1,83,0,41,2,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,78,41,3,218,5, - 115,117,112,101,114,114,10,1,0,0,114,247,0,0,0,41, - 3,114,143,0,0,0,114,162,0,0,0,114,13,1,0,0, - 115,3,0,0,0,32,32,128,114,7,0,0,0,114,247,0, - 0,0,38,4,0,0,115,2,0,0,0,16,10,114,9,0, - 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,99,2,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,243, - 6,0,0,0,124,0,106,0,83,0,169,2,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,78,114,74,0,0,0,114,246, - 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, - 202,0,0,0,50,4,0,0,243,2,0,0,0,6,3,114, - 9,0,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,99,2,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,3,0, - 0,0,115,136,0,0,0,116,0,124,0,116,1,116,2,102, - 2,131,2,114,38,116,3,106,4,116,5,124,1,131,1,131, - 1,53,0,125,2,124,2,160,6,161,0,2,0,100,1,4, - 0,4,0,131,3,1,0,83,0,35,0,49,0,115,30,119, - 4,37,0,1,0,1,0,1,0,89,0,1,0,1,0,100, - 1,83,0,116,3,106,7,124,1,100,2,131,2,53,0,125, - 2,124,2,160,6,161,0,2,0,100,1,4,0,4,0,131, - 3,1,0,83,0,35,0,49,0,115,60,119,4,37,0,1, - 0,1,0,1,0,89,0,1,0,1,0,100,1,83,0,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,184,0,0,0,114,248,0,0,0,218,19,69,120,116,101, - 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,114, - 91,0,0,0,90,9,111,112,101,110,95,99,111,100,101,114, - 109,0,0,0,90,4,114,101,97,100,114,92,0,0,0,41, - 3,114,143,0,0,0,114,65,0,0,0,114,94,0,0,0, - 115,3,0,0,0,32,32,32,114,7,0,0,0,114,254,0, - 0,0,55,4,0,0,115,22,0,0,0,14,2,16,1,6, - 1,22,255,2,128,16,0,14,3,6,1,22,255,2,128,16, - 0,115,24,0,0,0,142,4,25,3,153,4,29,11,158,3, - 29,11,172,4,55,3,183,4,59,11,188,3,59,11,122,19, - 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,100, - 97,116,97,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,115,20,0,0,0,100,1,100, - 2,108,0,109,1,125,2,1,0,124,2,124,0,131,1,83, - 0,41,3,78,114,0,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,29,1,0, - 0,41,3,114,143,0,0,0,114,243,0,0,0,114,29,1, - 0,0,115,3,0,0,0,32,32,32,114,7,0,0,0,218, - 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, - 97,100,101,114,64,4,0,0,115,4,0,0,0,12,2,8, - 1,114,9,0,0,0,122,30,70,105,108,101,76,111,97,100, - 101,114,46,103,101,116,95,114,101,115,111,117,114,99,101,95, - 114,101,97,100,101,114,41,13,114,149,0,0,0,114,148,0, - 0,0,114,150,0,0,0,114,151,0,0,0,114,235,0,0, - 0,114,15,1,0,0,114,21,1,0,0,114,159,0,0,0, - 114,247,0,0,0,114,202,0,0,0,114,254,0,0,0,114, - 31,1,0,0,90,13,95,95,99,108,97,115,115,99,101,108, - 108,95,95,41,1,114,13,1,0,0,115,1,0,0,0,64, - 114,7,0,0,0,114,10,1,0,0,20,4,0,0,115,24, - 0,0,0,10,128,4,2,8,3,8,6,8,4,2,3,14, - 1,2,11,10,1,8,4,2,9,18,1,114,9,0,0,0, - 114,10,1,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,0,0,0,0,115,46,0,0,0,101, - 0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,132, - 0,90,4,100,4,100,5,132,0,90,5,100,6,100,7,156, - 1,100,8,100,9,132,2,90,6,100,10,83,0,41,11,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,115,22,0,0,0,116,0,124,1,131, - 1,125,2,124,2,106,1,124,2,106,2,100,1,156,2,83, - 0,41,3,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,192,0,0,0,114,5,1, - 0,0,78,41,3,114,75,0,0,0,218,8,115,116,95,109, - 116,105,109,101,90,7,115,116,95,115,105,122,101,41,3,114, - 143,0,0,0,114,65,0,0,0,114,9,1,0,0,115,3, - 0,0,0,32,32,32,114,7,0,0,0,114,251,0,0,0, - 74,4,0,0,115,4,0,0,0,8,2,14,1,114,9,0, - 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,99, - 4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, - 3,0,0,0,115,24,0,0,0,116,0,124,1,131,1,125, - 4,124,0,160,1,124,2,124,3,124,4,100,1,166,3,83, - 0,41,2,78,169,1,218,5,95,109,111,100,101,41,2,114, - 139,0,0,0,114,252,0,0,0,41,5,114,143,0,0,0, - 114,134,0,0,0,114,132,0,0,0,114,42,0,0,0,114, - 78,0,0,0,115,5,0,0,0,32,32,32,32,32,114,7, - 0,0,0,114,253,0,0,0,79,4,0,0,115,4,0,0, - 0,8,2,16,1,114,9,0,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,114,87,0,0, - 0,114,34,1,0,0,99,3,0,0,0,0,0,0,0,1, - 0,0,0,9,0,0,0,3,0,0,0,115,250,0,0,0, - 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, - 124,4,114,31,116,1,124,4,131,1,115,31,116,0,124,4, - 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, - 1,0,124,4,114,31,116,1,124,4,131,1,114,14,116,3, - 124,6,131,1,68,0,93,47,125,7,116,4,124,4,124,7, - 131,2,125,4,9,0,116,5,106,6,124,4,131,1,1,0, - 113,35,35,0,4,0,116,7,121,58,1,0,1,0,1,0, - 89,0,113,35,4,0,116,8,121,124,1,0,125,8,1,0, - 116,9,160,10,100,1,124,4,124,8,161,3,1,0,89,0, - 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, - 126,8,119,1,37,0,9,0,116,11,124,1,124,2,124,3, - 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, - 100,2,83,0,35,0,4,0,116,8,121,123,1,0,125,8, - 1,0,116,9,160,10,100,1,124,1,124,8,161,3,1,0, - 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, - 126,8,119,1,37,0,119,0,119,0,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,73,0,0,0,114,83,0,0, - 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, - 114,67,0,0,0,114,19,0,0,0,90,5,109,107,100,105, - 114,218,15,70,105,108,101,69,120,105,115,116,115,69,114,114, - 111,114,114,76,0,0,0,114,158,0,0,0,114,172,0,0, - 0,114,95,0,0,0,41,9,114,143,0,0,0,114,65,0, - 0,0,114,42,0,0,0,114,35,1,0,0,218,6,112,97, - 114,101,110,116,114,120,0,0,0,114,63,0,0,0,114,68, - 0,0,0,114,255,0,0,0,115,9,0,0,0,32,32,32, - 32,32,32,32,32,32,114,7,0,0,0,114,252,0,0,0, - 84,4,0,0,115,60,0,0,0,12,2,4,1,12,2,12, - 1,10,1,12,254,12,4,10,1,2,1,12,1,2,128,12, - 1,4,2,12,1,6,3,4,1,4,255,14,2,10,128,2, - 1,12,1,16,1,2,128,12,1,8,2,2,1,16,255,10, - 128,2,254,2,247,115,62,0,0,0,171,5,49,2,177,7, - 65,18,9,186,6,65,18,9,193,0,7,65,14,9,193,14, - 4,65,18,9,193,20,12,65,34,0,193,34,7,65,58,7, - 193,41,7,65,54,7,193,54,4,65,58,7,193,59,1,65, - 58,7,193,60,1,65,18,9,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,78,41,7,114,149,0,0,0,114,148,0,0,0, - 114,150,0,0,0,114,151,0,0,0,114,251,0,0,0,114, - 253,0,0,0,114,252,0,0,0,114,12,0,0,0,114,9, - 0,0,0,114,7,0,0,0,114,32,1,0,0,70,4,0, - 0,115,10,0,0,0,8,0,4,2,8,2,8,5,18,5, - 114,9,0,0,0,114,32,1,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,115, - 32,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5, - 100,6,83,0,41,7,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, - 115,68,0,0,0,124,0,160,0,124,1,161,1,125,2,124, - 0,160,1,124,2,161,1,125,3,124,1,124,2,100,1,156, - 2,125,4,116,2,124,3,124,1,124,4,131,3,1,0,116, - 3,116,4,124,3,131,1,100,2,100,0,133,2,25,0,124, - 1,124,2,100,3,141,3,83,0,41,4,78,114,182,0,0, - 0,114,168,0,0,0,41,2,114,141,0,0,0,114,132,0, - 0,0,41,5,114,202,0,0,0,114,254,0,0,0,114,175, - 0,0,0,114,188,0,0,0,114,6,1,0,0,41,5,114, - 143,0,0,0,114,162,0,0,0,114,65,0,0,0,114,42, - 0,0,0,114,174,0,0,0,115,5,0,0,0,32,32,32, - 32,32,114,7,0,0,0,114,240,0,0,0,119,4,0,0, - 115,22,0,0,0,10,1,10,1,2,4,2,1,6,254,12, - 4,2,1,14,1,2,1,2,1,6,253,114,9,0,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,99, - 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 3,0,0,0,114,24,0,0,0,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,12,0,0,0,114,246,0,0,0,115, - 2,0,0,0,32,32,114,7,0,0,0,114,0,1,0,0, - 135,4,0,0,114,25,0,0,0,114,9,0,0,0,122,31, - 83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111, - 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,78, - 41,6,114,149,0,0,0,114,148,0,0,0,114,150,0,0, - 0,114,151,0,0,0,114,240,0,0,0,114,0,1,0,0, - 114,12,0,0,0,114,9,0,0,0,114,7,0,0,0,114, - 39,1,0,0,115,4,0,0,115,8,0,0,0,8,0,4, - 2,8,2,12,16,114,9,0,0,0,114,39,1,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 0,0,0,0,115,92,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, - 5,132,0,90,5,100,6,100,7,132,0,90,6,100,8,100, - 9,132,0,90,7,100,10,100,11,132,0,90,8,100,12,100, - 13,132,0,90,9,100,14,100,15,132,0,90,10,100,16,100, - 17,132,0,90,11,101,12,100,18,100,19,132,0,131,1,90, - 13,100,20,83,0,41,21,114,28,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, - 115,16,0,0,0,124,1,124,0,95,0,124,2,124,0,95, - 1,100,0,83,0,114,69,0,0,0,114,182,0,0,0,41, - 3,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, - 115,3,0,0,0,32,32,32,114,7,0,0,0,114,235,0, - 0,0,148,4,0,0,115,4,0,0,0,6,1,10,1,114, - 9,0,0,0,122,28,69,120,116,101,110,115,105,111,110,70, - 105,108,101,76,111,97,100,101,114,46,95,95,105,110,105,116, - 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,3,0,0,0,114,11,1,0,0,114,69,0,0, - 0,114,12,1,0,0,114,14,1,0,0,115,2,0,0,0, - 32,32,114,7,0,0,0,114,15,1,0,0,152,4,0,0, - 114,16,1,0,0,114,9,0,0,0,122,26,69,120,116,101, - 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,46, - 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,114,17,1,0,0, - 114,69,0,0,0,114,18,1,0,0,114,20,1,0,0,115, - 1,0,0,0,32,114,7,0,0,0,114,21,1,0,0,156, - 4,0,0,114,22,1,0,0,114,9,0,0,0,122,28,69, - 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, - 101,114,46,95,95,104,97,115,104,95,95,99,2,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, - 115,36,0,0,0,116,0,160,1,116,2,106,3,124,1,161, - 2,125,2,116,0,160,4,100,1,124,1,106,5,124,0,106, - 6,161,3,1,0,124,2,83,0,41,3,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,78,41,7, - 114,158,0,0,0,114,241,0,0,0,114,186,0,0,0,90, - 14,99,114,101,97,116,101,95,100,121,110,97,109,105,99,114, - 172,0,0,0,114,141,0,0,0,114,65,0,0,0,41,3, - 114,143,0,0,0,114,209,0,0,0,114,243,0,0,0,115, - 3,0,0,0,32,32,32,114,7,0,0,0,114,238,0,0, - 0,159,4,0,0,115,14,0,0,0,4,2,6,1,4,255, - 6,2,8,1,4,255,4,2,114,9,0,0,0,122,33,69, + 115,104,95,95,36,4,0,0,243,2,0,0,0,20,1,114, + 38,1,0,0,115,20,0,0,0,16,20,21,25,21,30,16, + 31,34,38,39,43,39,48,34,49,16,49,9,49,114,10,0, + 0,0,122,19,70,105,108,101,76,111,97,100,101,114,46,95, + 95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,115,16,0,0, + 0,116,0,116,1,124,0,131,2,160,2,124,1,161,1,83, + 0,41,2,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,78,41,3,218,5,115,117, + 112,101,114,114,24,1,0,0,114,1,1,0,0,41,3,114, + 148,0,0,0,114,167,0,0,0,114,28,1,0,0,115,3, + 0,0,0,32,32,128,114,7,0,0,0,114,1,1,0,0, + 39,4,0,0,243,2,0,0,0,16,10,114,40,1,0,0, + 115,16,0,0,0,16,21,22,32,34,38,16,39,16,61,52, + 60,16,61,9,61,114,10,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,243,6,0,0,0,124,0,106,0, + 83,0,169,2,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, + 78,114,78,0,0,0,114,0,1,0,0,115,2,0,0,0, + 32,32,114,7,0,0,0,114,210,0,0,0,51,4,0,0, + 243,2,0,0,0,6,3,114,43,1,0,0,115,6,0,0, + 0,16,20,16,25,9,25,114,10,0,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,99,2,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,3,0,0,0,115,136,0,0,0,116, + 0,124,0,116,1,116,2,102,2,131,2,114,38,116,3,106, + 4,116,5,124,1,131,1,131,1,53,0,125,2,124,2,160, + 6,161,0,2,0,100,1,4,0,4,0,131,3,1,0,83, + 0,35,0,49,0,115,30,119,4,37,0,1,0,1,0,1, + 0,89,0,1,0,1,0,100,1,83,0,116,3,106,7,124, + 1,100,2,131,2,53,0,125,2,124,2,160,6,161,0,2, + 0,100,1,4,0,4,0,131,3,1,0,83,0,35,0,49, + 0,115,60,119,4,37,0,1,0,1,0,1,0,89,0,1, + 0,1,0,100,1,83,0,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,189,0,0,0,114,3,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,96,0,0,0,90,9,111,112, + 101,110,95,99,111,100,101,114,114,0,0,0,90,4,114,101, + 97,100,114,97,0,0,0,41,3,114,148,0,0,0,114,68, + 0,0,0,114,99,0,0,0,115,3,0,0,0,32,32,32, + 114,7,0,0,0,114,12,1,0,0,56,4,0,0,115,22, + 0,0,0,14,2,16,1,6,1,22,255,2,128,16,0,14, + 3,6,1,22,255,2,128,16,0,115,28,0,0,0,12,2, + 2,5,12,252,2,1,2,255,28,1,2,128,16,0,10,2, + 2,1,2,255,28,1,2,128,16,0,115,136,0,0,0,12, + 22,23,27,30,42,44,63,29,64,12,65,9,35,18,21,18, + 31,32,35,36,40,32,41,18,42,13,35,46,50,24,28,24, + 35,24,35,13,35,13,35,13,35,13,35,13,35,13,35,13, + 35,13,35,13,35,13,35,13,35,0,0,13,35,13,35,13, + 35,13,35,13,35,13,35,13,35,13,35,18,21,18,28,29, + 33,35,38,18,39,13,35,43,47,24,28,24,35,24,35,13, + 35,13,35,13,35,13,35,13,35,13,35,13,35,13,35,13, + 35,13,35,13,35,0,0,13,35,13,35,13,35,13,35,13, + 35,13,35,13,35,13,35,115,24,0,0,0,142,4,25,3, + 153,4,29,11,158,3,29,11,172,4,55,3,183,4,59,11, + 188,3,59,11,122,19,70,105,108,101,76,111,97,100,101,114, + 46,103,101,116,95,100,97,116,97,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,3,0,0,0,115,20, + 0,0,0,100,1,100,2,108,0,109,1,125,2,1,0,124, + 2,124,0,131,1,83,0,41,3,78,114,0,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,46,1,0,0,41,3,114,148,0,0,0,114,253, + 0,0,0,114,46,1,0,0,115,3,0,0,0,32,32,32, + 114,7,0,0,0,218,19,103,101,116,95,114,101,115,111,117, + 114,99,101,95,114,101,97,100,101,114,65,4,0,0,243,4, + 0,0,0,12,2,8,1,114,49,1,0,0,115,20,0,0, + 0,9,49,9,49,9,49,9,49,9,49,9,49,16,26,27, + 31,16,32,9,32,114,10,0,0,0,122,30,70,105,108,101, + 76,111,97,100,101,114,46,103,101,116,95,114,101,115,111,117, + 114,99,101,95,114,101,97,100,101,114,41,13,114,154,0,0, + 0,114,153,0,0,0,114,155,0,0,0,114,156,0,0,0, + 114,243,0,0,0,114,30,1,0,0,114,37,1,0,0,114, + 164,0,0,0,114,1,1,0,0,114,210,0,0,0,114,12, + 1,0,0,114,48,1,0,0,90,13,95,95,99,108,97,115, + 115,99,101,108,108,95,95,41,1,114,28,1,0,0,115,1, + 0,0,0,64,114,7,0,0,0,114,24,1,0,0,21,4, + 0,0,115,24,0,0,0,10,128,4,2,8,3,8,6,8, + 4,2,3,14,1,2,11,10,1,8,4,2,9,18,1,115, + 92,0,0,0,2,128,0,129,0,129,0,129,0,129,0,129, + 0,129,0,129,0,129,8,227,0,127,0,127,0,127,0,127, + 0,127,0,127,0,127,0,127,2,32,0,129,0,129,0,129, + 0,129,0,129,0,129,0,129,0,129,2,224,0,127,0,127, + 0,127,0,127,0,127,0,127,0,127,0,127,8,38,8,4, + 8,3,2,2,14,10,2,2,10,3,8,9,2,2,18,3, + 115,94,0,0,0,0,0,1,1,1,1,1,1,1,1,5, + 34,1,1,5,25,5,25,5,25,5,25,5,49,5,49,5, + 49,5,49,5,49,5,49,5,49,5,49,6,17,5,61,5, + 61,5,61,5,61,5,61,5,61,5,61,6,17,5,25,5, + 25,5,25,5,25,5,25,5,35,5,35,5,35,5,35,6, + 17,5,32,5,32,5,32,5,32,5,32,5,32,5,32,5, + 32,5,32,114,10,0,0,0,114,24,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0, + 0,0,115,46,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,100,3,132,0,90,4,100,4,100,5,132, + 0,90,5,100,6,100,7,156,1,100,8,100,9,132,2,90, + 6,100,10,83,0,41,11,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,115,22, + 0,0,0,116,0,124,1,131,1,125,2,124,2,106,1,124, + 2,106,2,100,1,156,2,83,0,41,3,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,197,0,0,0,114,19,1,0,0,78,41,3,114,79,0, + 0,0,218,8,115,116,95,109,116,105,109,101,90,7,115,116, + 95,115,105,122,101,41,3,114,148,0,0,0,114,68,0,0, + 0,114,23,1,0,0,115,3,0,0,0,32,32,32,114,7, + 0,0,0,114,7,1,0,0,75,4,0,0,243,4,0,0, + 0,8,2,14,1,114,52,1,0,0,115,22,0,0,0,14, + 24,25,29,14,30,9,11,26,28,26,37,47,49,47,57,16, + 58,16,58,9,58,114,10,0,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,99,4,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,3,0,0,0,115,24,0,0, + 0,116,0,124,1,131,1,125,4,124,0,160,1,124,2,124, + 3,124,4,100,1,166,3,83,0,41,2,78,169,1,218,5, + 95,109,111,100,101,41,2,114,144,0,0,0,114,9,1,0, + 0,41,5,114,148,0,0,0,114,139,0,0,0,114,137,0, + 0,0,114,44,0,0,0,114,83,0,0,0,115,5,0,0, + 0,32,32,32,32,32,114,7,0,0,0,114,10,1,0,0, + 80,4,0,0,243,4,0,0,0,8,2,16,1,114,55,1, + 0,0,115,24,0,0,0,16,26,27,38,16,39,9,13,16, + 20,16,62,30,43,45,49,57,61,16,62,16,62,9,62,114, + 10,0,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,114,92,0,0,0,114,53,1,0,0, + 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, + 0,3,0,0,0,115,250,0,0,0,116,0,124,1,131,1, + 92,2,125,4,125,5,103,0,125,6,124,4,114,31,116,1, + 124,4,131,1,115,31,116,0,124,4,131,1,92,2,125,4, + 125,7,124,6,160,2,124,7,161,1,1,0,124,4,114,31, + 116,1,124,4,131,1,114,14,116,3,124,6,131,1,68,0, + 93,47,125,7,116,4,124,4,124,7,131,2,125,4,9,0, + 116,5,106,6,124,4,131,1,1,0,113,35,35,0,4,0, + 116,7,121,58,1,0,1,0,1,0,89,0,113,35,4,0, + 116,8,121,124,1,0,125,8,1,0,116,9,160,10,100,1, + 124,4,124,8,161,3,1,0,89,0,100,2,125,8,126,8, + 1,0,100,2,83,0,100,2,125,8,126,8,119,1,37,0, + 9,0,116,11,124,1,124,2,124,3,131,3,1,0,116,9, + 160,10,100,3,124,1,161,2,1,0,100,2,83,0,35,0, + 4,0,116,8,121,123,1,0,125,8,1,0,116,9,160,10, + 100,1,124,1,124,8,161,3,1,0,89,0,100,2,125,8, + 126,8,100,2,83,0,100,2,125,8,126,8,119,1,37,0, + 119,0,119,0,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,77,0,0,0,114,88,0,0,0,114,64,0,0,0, + 218,8,114,101,118,101,114,115,101,100,114,70,0,0,0,114, + 21,0,0,0,90,5,109,107,100,105,114,218,15,70,105,108, + 101,69,120,105,115,116,115,69,114,114,111,114,114,81,0,0, + 0,114,163,0,0,0,114,177,0,0,0,114,100,0,0,0, + 41,9,114,148,0,0,0,114,68,0,0,0,114,44,0,0, + 0,114,54,1,0,0,218,6,112,97,114,101,110,116,114,125, + 0,0,0,114,66,0,0,0,114,71,0,0,0,114,13,1, + 0,0,115,9,0,0,0,32,32,32,32,32,32,32,32,32, + 114,7,0,0,0,114,9,1,0,0,85,4,0,0,115,60, + 0,0,0,12,2,4,1,12,2,12,1,10,1,12,254,12, + 4,10,1,2,1,12,1,2,128,12,1,4,2,12,1,6, + 3,4,1,4,255,14,2,10,128,2,1,12,1,16,1,2, + 128,12,1,8,2,2,1,16,255,10,128,2,254,2,247,115, + 90,0,0,0,12,2,4,1,2,2,2,2,6,254,2,2, + 12,255,10,1,2,254,2,2,6,254,2,2,6,2,4,12, + 2,244,10,1,2,11,12,247,2,128,2,3,2,254,12,2, + 2,6,2,251,8,5,2,254,2,1,2,255,8,1,14,1, + 10,128,2,7,12,251,16,1,2,128,2,4,2,253,8,3, + 2,255,2,1,4,255,18,1,10,128,2,0,2,249,115,250, + 0,0,0,28,39,40,44,28,45,9,25,9,15,17,25,22, + 24,9,19,15,21,9,36,30,41,42,48,30,49,9,36,28, + 39,40,46,28,47,13,25,13,19,21,25,13,23,13,36,31, + 35,13,36,13,36,15,21,9,36,30,41,42,48,30,49,9, + 36,21,29,30,40,21,41,9,23,9,23,13,17,22,32,33, + 39,41,45,22,46,13,19,13,23,17,20,17,26,27,33,17, + 34,17,34,17,34,0,0,13,25,20,35,13,25,13,25,13, + 25,13,25,17,25,17,25,13,23,20,27,13,23,13,23,13, + 23,13,23,17,27,17,57,45,74,45,51,53,56,17,57,17, + 57,17,23,17,23,17,23,17,23,17,23,17,23,17,23,0, + 0,0,0,0,0,0,0,0,0,9,45,13,26,27,31,33, + 37,39,44,13,45,13,45,13,23,13,62,41,55,57,61,13, + 62,13,62,13,62,13,62,0,0,9,45,16,23,9,45,9, + 45,9,45,9,45,13,23,13,45,41,70,72,76,41,44,13, + 45,13,45,13,45,13,45,13,45,13,45,13,45,13,45,0, + 0,0,0,0,0,0,0,0,0,9,45,13,23,115,62,0, + 0,0,171,5,49,2,177,7,65,18,9,186,6,65,18,9, + 193,0,7,65,14,9,193,14,4,65,18,9,193,20,12,65, + 34,0,193,34,7,65,58,7,193,41,7,65,54,7,193,54, + 4,65,58,7,193,59,1,65,58,7,193,60,1,65,18,9, + 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,78,41,7,114,154, + 0,0,0,114,153,0,0,0,114,155,0,0,0,114,156,0, + 0,0,114,7,1,0,0,114,10,1,0,0,114,9,1,0, + 0,114,13,0,0,0,114,10,0,0,0,114,7,0,0,0, + 114,50,1,0,0,71,4,0,0,115,10,0,0,0,8,0, + 4,2,8,2,8,5,18,5,115,78,0,0,0,0,129,0, + 129,0,129,0,129,0,129,0,129,0,129,0,129,8,177,0, + 127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,2, + 81,0,129,0,129,0,129,0,129,0,129,0,129,0,129,0, + 129,2,175,0,127,0,127,0,127,0,127,0,127,0,127,0, + 127,0,127,8,86,8,5,2,2,16,28,115,46,0,0,0, + 1,1,1,1,1,1,1,1,5,73,1,1,5,58,5,58, + 5,58,5,58,5,62,5,62,5,62,5,62,45,50,5,45, + 5,45,5,45,5,45,5,45,5,45,5,45,5,45,114,10, + 0,0,0,114,50,1,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,0,0,0,0,115,32,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 100,3,132,0,90,4,100,4,100,5,132,0,90,5,100,6, + 83,0,41,7,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,115,68, + 0,0,0,124,0,160,0,124,1,161,1,125,2,124,0,160, + 1,124,2,161,1,125,3,124,1,124,2,100,1,156,2,125, + 4,116,2,124,3,124,1,124,4,131,3,1,0,116,3,116, + 4,124,3,131,1,100,2,100,0,133,2,25,0,124,1,124, + 2,100,3,141,3,83,0,41,4,78,114,187,0,0,0,114, + 173,0,0,0,41,2,114,146,0,0,0,114,137,0,0,0, + 41,5,114,210,0,0,0,114,12,1,0,0,114,180,0,0, + 0,114,193,0,0,0,114,20,1,0,0,41,5,114,148,0, + 0,0,114,167,0,0,0,114,68,0,0,0,114,44,0,0, + 0,114,179,0,0,0,115,5,0,0,0,32,32,32,32,32, + 114,7,0,0,0,114,250,0,0,0,120,4,0,0,115,22, + 0,0,0,10,1,10,1,2,4,2,1,6,254,12,4,2, + 1,14,1,2,1,2,1,6,253,115,24,0,0,0,10,1, + 10,1,2,4,2,1,4,1,2,253,12,4,2,1,14,1, + 2,1,2,1,6,1,115,68,0,0,0,16,20,16,43,34, + 42,16,43,9,13,16,20,16,35,30,34,16,35,9,13,21, + 29,21,25,23,10,23,10,9,20,9,22,23,27,29,37,39, + 50,9,51,9,51,16,33,13,23,24,28,13,29,30,32,30, + 33,30,33,13,34,18,26,27,31,16,10,16,10,9,10,114, + 10,0,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,99,2,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,114,26,0,0,0,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,13,0,0,0,114,0, + 1,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, + 14,1,0,0,136,4,0,0,114,27,0,0,0,114,27,0, + 0,0,115,4,0,0,0,16,20,16,20,114,10,0,0,0, + 122,31,83,111,117,114,99,101,108,101,115,115,70,105,108,101, + 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, + 101,78,41,6,114,154,0,0,0,114,153,0,0,0,114,155, + 0,0,0,114,156,0,0,0,114,250,0,0,0,114,14,1, + 0,0,114,13,0,0,0,114,10,0,0,0,114,7,0,0, + 0,114,59,1,0,0,116,4,0,0,115,8,0,0,0,8, + 0,4,2,8,2,12,16,115,76,0,0,0,0,129,0,129, + 0,129,0,129,0,129,0,129,0,129,0,129,8,132,0,127, + 0,127,0,127,0,127,0,127,0,127,0,127,0,127,2,126, + 0,129,0,129,0,129,0,129,0,129,0,129,0,129,0,129, + 2,130,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 0,127,0,127,8,15,12,4,115,32,0,0,0,1,1,1, + 1,1,1,1,1,5,56,1,1,5,10,5,10,5,10,5, + 10,5,20,5,20,5,20,5,20,5,20,5,20,114,10,0, + 0,0,114,59,1,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,0,0,0,0,115,92,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, + 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100, + 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,100, + 11,132,0,90,8,100,12,100,13,132,0,90,9,100,14,100, + 15,132,0,90,10,100,16,100,17,132,0,90,11,101,12,100, + 18,100,19,132,0,131,1,90,13,100,20,83,0,41,21,114, + 45,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,115,16,0,0,0,124,1,124, + 0,95,0,124,2,124,0,95,1,100,0,83,0,114,72,0, + 0,0,114,187,0,0,0,41,3,114,148,0,0,0,114,146, + 0,0,0,114,68,0,0,0,115,3,0,0,0,32,32,32, + 114,7,0,0,0,114,243,0,0,0,149,4,0,0,243,4, + 0,0,0,6,1,10,1,114,60,1,0,0,115,16,0,0, + 0,21,25,9,13,9,18,21,25,9,13,9,18,9,18,9, + 18,114,10,0,0,0,122,28,69,120,116,101,110,115,105,111, + 110,70,105,108,101,76,111,97,100,101,114,46,95,95,105,110, + 105,116,95,95,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,114,26,1,0,0,114,72, + 0,0,0,114,27,1,0,0,114,29,1,0,0,115,2,0, + 0,0,32,32,114,7,0,0,0,114,30,1,0,0,153,4, + 0,0,114,31,1,0,0,114,32,1,0,0,115,24,0,0, + 0,17,21,17,31,35,40,35,50,17,50,17,48,17,21,17, + 30,34,39,34,48,17,48,9,49,114,10,0,0,0,122,26, + 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, + 100,101,114,46,95,95,101,113,95,95,99,1,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,114, + 33,1,0,0,114,72,0,0,0,114,34,1,0,0,114,36, + 1,0,0,115,1,0,0,0,32,114,7,0,0,0,114,37, + 1,0,0,157,4,0,0,114,38,1,0,0,114,38,1,0, + 0,115,20,0,0,0,16,20,21,25,21,30,16,31,34,38, + 39,43,39,48,34,49,16,49,9,49,114,10,0,0,0,122, + 28,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,46,95,95,104,97,115,104,95,95,99,2,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, + 0,0,115,36,0,0,0,116,0,160,1,116,2,106,3,124, + 1,161,2,125,2,116,0,160,4,100,1,124,1,106,5,124, + 0,106,6,161,3,1,0,124,2,83,0,41,3,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,78, + 41,7,114,163,0,0,0,114,251,0,0,0,114,191,0,0, + 0,90,14,99,114,101,97,116,101,95,100,121,110,97,109,105, + 99,114,177,0,0,0,114,146,0,0,0,114,68,0,0,0, + 41,3,114,148,0,0,0,114,217,0,0,0,114,253,0,0, + 0,115,3,0,0,0,32,32,32,114,7,0,0,0,114,247, + 0,0,0,160,4,0,0,115,14,0,0,0,4,2,6,1, + 4,255,6,2,8,1,4,255,4,2,115,16,0,0,0,2, + 2,10,1,2,255,2,2,2,1,2,255,12,1,4,1,115, + 36,0,0,0,18,28,18,39,13,17,13,32,34,38,18,39, + 9,15,9,19,9,47,37,77,26,30,26,35,37,41,37,46, + 9,47,9,47,16,22,9,22,114,10,0,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, 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, @@ -1813,118 +2294,146 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,158,0, - 0,0,114,241,0,0,0,114,186,0,0,0,90,12,101,120, - 101,99,95,100,121,110,97,109,105,99,114,172,0,0,0,114, - 141,0,0,0,114,65,0,0,0,169,2,114,143,0,0,0, - 114,243,0,0,0,115,2,0,0,0,32,32,114,7,0,0, - 0,114,244,0,0,0,167,4,0,0,115,8,0,0,0,14, - 2,6,1,8,1,8,255,114,9,0,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,99,2,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0, - 0,0,115,38,0,0,0,135,2,116,0,124,0,106,1,131, - 1,100,1,25,0,138,2,116,2,136,2,102,1,100,2,100, - 3,132,8,116,3,68,0,131,1,131,1,83,0,41,5,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,3,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,51,0,0,0,115,28,0,0, - 0,129,0,124,0,93,9,125,1,137,2,100,0,124,1,23, - 0,107,2,86,0,1,0,113,2,100,1,83,0,41,2,114, - 235,0,0,0,78,114,12,0,0,0,41,3,114,5,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,7,0,0, - 0,114,8,0,0,0,176,4,0,0,115,8,0,0,0,2, - 128,4,0,2,1,20,255,114,9,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,78, - 41,4,114,73,0,0,0,114,65,0,0,0,218,3,97,110, - 121,114,231,0,0,0,41,3,114,143,0,0,0,114,162,0, - 0,0,114,42,1,0,0,115,3,0,0,0,32,32,64,114, - 7,0,0,0,114,205,0,0,0,173,4,0,0,115,10,0, - 0,0,2,128,14,2,12,1,2,1,8,255,114,9,0,0, - 0,122,30,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,46,105,115,95,112,97,99,107,97,103, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,3,0,0,0,114,24,0,0,0,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, - 12,0,0,0,114,246,0,0,0,115,2,0,0,0,32,32, - 114,7,0,0,0,114,240,0,0,0,179,4,0,0,114,25, - 0,0,0,114,9,0,0,0,122,28,69,120,116,101,110,115, - 105,111,110,70,105,108,101,76,111,97,100,101,114,46,103,101, - 116,95,99,111,100,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,114,24,0,0,0, - 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,12,0,0,0,114, - 246,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0, - 114,0,1,0,0,183,4,0,0,114,25,0,0,0,114,9, - 0,0,0,122,30,69,120,116,101,110,115,105,111,110,70,105, - 108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117, - 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,3,0,0,0,114,24,1,0,0,114,25,1, - 0,0,114,74,0,0,0,114,246,0,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,202,0,0,0,187,4,0, - 0,114,26,1,0,0,114,9,0,0,0,122,32,69,120,116, - 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, - 46,103,101,116,95,102,105,108,101,110,97,109,101,78,41,14, - 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, - 151,0,0,0,114,235,0,0,0,114,15,1,0,0,114,21, - 1,0,0,114,238,0,0,0,114,244,0,0,0,114,205,0, - 0,0,114,240,0,0,0,114,0,1,0,0,114,159,0,0, - 0,114,202,0,0,0,114,12,0,0,0,114,9,0,0,0, - 114,7,0,0,0,114,28,1,0,0,140,4,0,0,115,24, - 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, - 8,8,6,8,6,8,4,2,4,14,1,114,9,0,0,0, - 114,28,1,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,0,0,0,0,115,104,0,0,0,101, - 0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,132, - 0,90,4,100,4,100,5,132,0,90,5,100,6,100,7,132, - 0,90,6,100,8,100,9,132,0,90,7,100,10,100,11,132, - 0,90,8,100,12,100,13,132,0,90,9,100,14,100,15,132, - 0,90,10,100,16,100,17,132,0,90,11,100,18,100,19,132, - 0,90,12,100,20,100,21,132,0,90,13,100,22,100,23,132, - 0,90,14,100,24,83,0,41,25,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,99,4,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,3,0,0,0,115,36,0,0,0,124,1, - 124,0,95,0,124,2,124,0,95,1,116,2,124,0,160,3, - 161,0,131,1,124,0,95,4,124,3,124,0,95,5,100,0, - 83,0,114,69,0,0,0,41,6,218,5,95,110,97,109,101, - 218,5,95,112,97,116,104,114,136,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,12,95,112,97,116,104,95,102,105,110,100,101,114,169, - 4,114,143,0,0,0,114,141,0,0,0,114,65,0,0,0, - 90,11,112,97,116,104,95,102,105,110,100,101,114,115,4,0, - 0,0,32,32,32,32,114,7,0,0,0,114,235,0,0,0, - 200,4,0,0,115,8,0,0,0,6,1,6,1,14,1,10, - 1,114,9,0,0,0,122,23,95,78,97,109,101,115,112,97, + 32,102,114,111,109,32,123,33,114,125,78,41,7,114,163,0, + 0,0,114,251,0,0,0,114,191,0,0,0,90,12,101,120, + 101,99,95,100,121,110,97,109,105,99,114,177,0,0,0,114, + 146,0,0,0,114,68,0,0,0,169,2,114,148,0,0,0, + 114,253,0,0,0,115,2,0,0,0,32,32,114,7,0,0, + 0,114,254,0,0,0,168,4,0,0,115,8,0,0,0,14, + 2,6,1,8,1,8,255,115,10,0,0,0,14,2,2,1, + 2,1,2,255,16,1,115,36,0,0,0,9,19,9,72,46, + 50,46,63,65,71,9,72,9,72,9,19,9,47,37,79,26, + 30,26,35,37,41,37,46,9,47,9,47,9,47,9,47,114, + 10,0,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,99,2,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,115,38,0,0,0,135, + 2,116,0,124,0,106,1,131,1,100,1,25,0,138,2,116, + 2,136,2,102,1,100,2,100,3,132,8,116,3,68,0,131, + 1,131,1,83,0,41,5,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,3,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 51,0,0,0,115,28,0,0,0,129,0,124,0,93,9,125, + 1,137,2,100,0,124,1,23,0,107,2,86,0,1,0,113, + 2,100,1,83,0,41,2,114,243,0,0,0,78,114,13,0, + 0,0,41,3,114,5,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,7,0,0,0,114,8,0,0,0,177,4, + 0,0,115,8,0,0,0,2,128,4,0,2,1,20,255,115, + 8,0,0,0,2,128,6,1,10,255,10,1,115,28,0,0, + 0,0,0,19,53,19,53,24,30,20,29,33,43,46,52,33, + 52,20,52,19,53,19,53,19,53,19,53,19,53,114,10,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,78,41,4,114,77,0,0,0,114,68,0, + 0,0,218,3,97,110,121,114,239,0,0,0,41,3,114,148, + 0,0,0,114,167,0,0,0,114,63,1,0,0,115,3,0, + 0,0,32,32,64,114,7,0,0,0,114,213,0,0,0,174, + 4,0,0,115,10,0,0,0,2,128,14,2,12,1,2,1, + 8,255,115,8,0,0,0,2,128,14,2,2,1,20,1,115, + 38,0,0,0,0,0,21,32,33,37,33,42,21,43,44,45, + 21,46,9,18,16,19,19,53,19,53,19,53,19,53,19,53, + 34,52,19,53,19,53,16,53,9,53,114,10,0,0,0,122, + 30,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,114,26,0,0,0,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,13,0, + 0,0,114,0,1,0,0,115,2,0,0,0,32,32,114,7, + 0,0,0,114,250,0,0,0,180,4,0,0,114,27,0,0, + 0,114,27,0,0,0,115,4,0,0,0,16,20,16,20,114, + 10,0,0,0,122,28,69,120,116,101,110,115,105,111,110,70, + 105,108,101,76,111,97,100,101,114,46,103,101,116,95,99,111, + 100,101,99,2,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,114,26,0,0,0,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,13,0,0,0,114,0,1,0,0, + 115,2,0,0,0,32,32,114,7,0,0,0,114,14,1,0, + 0,184,4,0,0,114,27,0,0,0,114,27,0,0,0,115, + 4,0,0,0,16,20,16,20,114,10,0,0,0,122,30,69, + 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, + 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,114,41,1,0,0,114,42,1,0,0,114,78,0,0, + 0,114,0,1,0,0,115,2,0,0,0,32,32,114,7,0, + 0,0,114,210,0,0,0,188,4,0,0,114,43,1,0,0, + 114,43,1,0,0,115,6,0,0,0,16,20,16,25,9,25, + 114,10,0,0,0,122,32,69,120,116,101,110,115,105,111,110, + 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,102, + 105,108,101,110,97,109,101,78,41,14,114,154,0,0,0,114, + 153,0,0,0,114,155,0,0,0,114,156,0,0,0,114,243, + 0,0,0,114,30,1,0,0,114,37,1,0,0,114,247,0, + 0,0,114,254,0,0,0,114,213,0,0,0,114,250,0,0, + 0,114,14,1,0,0,114,164,0,0,0,114,210,0,0,0, + 114,13,0,0,0,114,10,0,0,0,114,7,0,0,0,114, + 45,1,0,0,141,4,0,0,115,24,0,0,0,8,0,4, + 2,8,6,8,4,8,4,8,3,8,8,8,6,8,6,8, + 4,2,4,14,1,115,98,0,0,0,0,129,0,129,0,129, + 0,129,0,129,0,129,0,129,0,129,0,129,8,234,0,127, + 0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 2,28,0,129,0,129,0,129,0,129,0,129,0,129,0,129, + 0,129,0,129,2,228,0,127,0,127,0,127,0,127,0,127, + 0,127,0,127,0,127,0,127,8,32,8,4,8,3,8,8, + 8,6,8,6,8,4,8,4,2,2,14,3,115,92,0,0, + 0,1,1,1,1,1,1,1,1,5,8,1,1,5,25,5, + 25,5,25,5,25,5,49,5,49,5,49,5,49,5,49,5, + 49,5,49,5,49,5,22,5,22,5,22,5,22,5,47,5, + 47,5,47,5,47,5,53,5,53,5,53,5,53,5,20,5, + 20,5,20,5,20,5,20,5,20,5,20,5,20,6,17,5, + 25,5,25,5,25,5,25,5,25,5,25,5,25,114,10,0, + 0,0,114,45,1,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,0,0,0,0,115,104,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, + 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100, + 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,100, + 11,132,0,90,8,100,12,100,13,132,0,90,9,100,14,100, + 15,132,0,90,10,100,16,100,17,132,0,90,11,100,18,100, + 19,132,0,90,12,100,20,100,21,132,0,90,13,100,22,100, + 23,132,0,90,14,100,24,83,0,41,25,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,99,4,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,115,36,0,0,0, + 124,1,124,0,95,0,124,2,124,0,95,1,116,2,124,0, + 160,3,161,0,131,1,124,0,95,4,124,3,124,0,95,5, + 100,0,83,0,114,72,0,0,0,41,6,218,5,95,110,97, + 109,101,218,5,95,112,97,116,104,114,141,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,12,95,112,97,116,104,95,102,105,110,100,101, + 114,169,4,114,148,0,0,0,114,146,0,0,0,114,68,0, + 0,0,90,11,112,97,116,104,95,102,105,110,100,101,114,115, + 4,0,0,0,32,32,32,32,114,7,0,0,0,114,243,0, + 0,0,201,4,0,0,243,8,0,0,0,6,1,6,1,14, + 1,10,1,114,72,1,0,0,115,36,0,0,0,22,26,9, + 13,9,19,22,26,9,13,9,19,34,39,40,44,40,63,40, + 63,34,64,9,13,9,31,29,40,9,13,9,26,9,26,9, + 26,114,10,0,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,99, 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, 3,0,0,0,115,38,0,0,0,124,0,106,0,160,1,100, @@ -1934,279 +2443,353 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,97,0,0,0,114,10,0,0,0,41,2,114,16,0, - 0,0,114,65,0,0,0,90,8,95,95,112,97,116,104,95, - 95,78,41,2,114,45,1,0,0,114,104,0,0,0,41,4, - 114,143,0,0,0,114,38,1,0,0,218,3,100,111,116,90, + 41,114,102,0,0,0,114,11,0,0,0,41,2,114,18,0, + 0,0,114,68,0,0,0,90,8,95,95,112,97,116,104,95, + 95,78,41,2,114,66,1,0,0,114,109,0,0,0,41,4, + 114,148,0,0,0,114,58,1,0,0,218,3,100,111,116,90, 2,109,101,115,4,0,0,0,32,32,32,32,114,7,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,206,4,0,0,115,8, - 0,0,0,18,2,8,1,4,2,8,3,114,9,0,0,0, - 122,38,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 46,95,102,105,110,100,95,112,97,114,101,110,116,95,112,97, - 116,104,95,110,97,109,101,115,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,115,28,0, - 0,0,124,0,160,0,161,0,92,2,125,1,125,2,116,1, - 116,2,106,3,124,1,25,0,124,2,131,2,83,0,114,69, - 0,0,0,41,4,114,52,1,0,0,114,154,0,0,0,114, - 16,0,0,0,218,7,109,111,100,117,108,101,115,41,3,114, - 143,0,0,0,90,18,112,97,114,101,110,116,95,109,111,100, - 117,108,101,95,110,97,109,101,90,14,112,97,116,104,95,97, - 116,116,114,95,110,97,109,101,115,3,0,0,0,32,32,32, - 114,7,0,0,0,114,47,1,0,0,216,4,0,0,115,4, - 0,0,0,12,1,16,1,114,9,0,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,99,1,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0, - 0,0,115,80,0,0,0,116,0,124,0,160,1,161,0,131, - 1,125,1,124,1,124,0,106,2,107,3,114,37,124,0,160, - 3,124,0,106,4,124,1,161,2,125,2,124,2,100,0,117, - 1,114,34,124,2,106,5,100,0,117,0,114,34,124,2,106, - 6,114,34,124,2,106,6,124,0,95,7,124,1,124,0,95, - 2,124,0,106,7,83,0,114,69,0,0,0,41,8,114,136, - 0,0,0,114,47,1,0,0,114,48,1,0,0,114,49,1, - 0,0,114,45,1,0,0,114,163,0,0,0,114,201,0,0, - 0,114,46,1,0,0,41,3,114,143,0,0,0,90,11,112, - 97,114,101,110,116,95,112,97,116,104,114,209,0,0,0,115, - 3,0,0,0,32,32,32,114,7,0,0,0,218,12,95,114, - 101,99,97,108,99,117,108,97,116,101,220,4,0,0,115,16, - 0,0,0,12,2,10,1,14,1,18,3,6,1,8,1,6, - 1,6,1,114,9,0,0,0,122,27,95,78,97,109,101,115, + 112,97,116,104,95,110,97,109,101,115,207,4,0,0,115,8, + 0,0,0,18,2,8,1,4,2,8,3,115,8,0,0,0, + 18,2,6,1,6,2,8,3,115,38,0,0,0,27,31,27, + 37,27,53,49,52,27,53,9,24,9,15,17,20,22,24,12, + 15,19,21,12,21,9,33,20,33,20,33,16,22,24,34,16, + 34,9,34,114,10,0,0,0,122,38,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,46,95,102,105,110,100,95,112, + 97,114,101,110,116,95,112,97,116,104,95,110,97,109,101,115, + 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,3,0,0,0,115,28,0,0,0,124,0,160,0,161,0, + 92,2,125,1,125,2,116,1,116,2,106,3,124,1,25,0, + 124,2,131,2,83,0,114,72,0,0,0,41,4,114,74,1, + 0,0,114,159,0,0,0,114,18,0,0,0,218,7,109,111, + 100,117,108,101,115,41,3,114,148,0,0,0,90,18,112,97, + 114,101,110,116,95,109,111,100,117,108,101,95,110,97,109,101, + 90,14,112,97,116,104,95,97,116,116,114,95,110,97,109,101, + 115,3,0,0,0,32,32,32,114,7,0,0,0,114,68,1, + 0,0,217,4,0,0,243,4,0,0,0,12,1,16,1,114, + 76,1,0,0,115,28,0,0,0,46,50,46,76,46,76,9, + 43,9,27,29,43,16,23,24,27,24,35,36,54,24,55,57, + 71,16,72,9,72,114,10,0,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,99,1,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, + 115,80,0,0,0,116,0,124,0,160,1,161,0,131,1,125, + 1,124,1,124,0,106,2,107,3,114,37,124,0,160,3,124, + 0,106,4,124,1,161,2,125,2,124,2,100,0,117,1,114, + 34,124,2,106,5,100,0,117,0,114,34,124,2,106,6,114, + 34,124,2,106,6,124,0,95,7,124,1,124,0,95,2,124, + 0,106,7,83,0,114,72,0,0,0,41,8,114,141,0,0, + 0,114,68,1,0,0,114,69,1,0,0,114,70,1,0,0, + 114,66,1,0,0,114,168,0,0,0,114,209,0,0,0,114, + 67,1,0,0,41,3,114,148,0,0,0,90,11,112,97,114, + 101,110,116,95,112,97,116,104,114,217,0,0,0,115,3,0, + 0,0,32,32,32,114,7,0,0,0,218,12,95,114,101,99, + 97,108,99,117,108,97,116,101,221,4,0,0,115,16,0,0, + 0,12,2,10,1,14,1,18,3,6,1,8,1,6,1,6, + 1,115,24,0,0,0,12,2,8,1,2,7,14,250,6,3, + 2,2,8,254,2,2,4,255,10,1,6,1,6,1,115,80, + 0,0,0,23,28,29,33,29,52,29,52,23,53,9,20,12, + 23,27,31,27,49,12,49,9,49,20,24,20,62,38,42,38, + 48,50,61,20,62,13,17,16,20,28,32,16,32,13,65,37, + 41,37,48,52,56,37,56,13,65,20,24,20,51,17,65,34, + 38,34,65,21,25,21,31,38,49,13,17,13,35,16,20,16, + 26,9,26,114,10,0,0,0,122,27,95,78,97,109,101,115, 112,97,99,101,80,97,116,104,46,95,114,101,99,97,108,99, 117,108,97,116,101,99,1,0,0,0,0,0,0,0,0,0, 0,0,3,0,0,0,3,0,0,0,243,12,0,0,0,116, - 0,124,0,160,1,161,0,131,1,83,0,114,69,0,0,0, - 41,2,218,4,105,116,101,114,114,54,1,0,0,114,20,1, + 0,124,0,160,1,161,0,131,1,83,0,114,72,0,0,0, + 41,2,218,4,105,116,101,114,114,77,1,0,0,114,36,1, + 0,0,115,1,0,0,0,32,114,7,0,0,0,218,8,95, + 95,105,116,101,114,95,95,234,4,0,0,243,2,0,0,0, + 12,1,114,81,1,0,0,115,12,0,0,0,16,20,21,25, + 21,40,21,40,16,41,9,41,114,10,0,0,0,122,23,95, + 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95, + 105,116,101,114,95,95,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,115,12,0,0,0, + 124,0,160,0,161,0,124,1,25,0,83,0,114,72,0,0, + 0,169,1,114,77,1,0,0,41,2,114,148,0,0,0,218, + 5,105,110,100,101,120,115,2,0,0,0,32,32,114,7,0, + 0,0,218,11,95,95,103,101,116,105,116,101,109,95,95,237, + 4,0,0,114,81,1,0,0,114,81,1,0,0,115,12,0, + 0,0,16,20,16,35,16,35,36,41,16,42,9,42,114,10, + 0,0,0,122,26,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,46,95,95,103,101,116,105,116,101,109,95,95,99, + 3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,115,14,0,0,0,124,2,124,0,106,0,124, + 1,60,0,100,0,83,0,114,72,0,0,0,41,1,114,67, + 1,0,0,41,3,114,148,0,0,0,114,83,1,0,0,114, + 68,0,0,0,115,3,0,0,0,32,32,32,114,7,0,0, + 0,218,11,95,95,115,101,116,105,116,101,109,95,95,240,4, + 0,0,243,2,0,0,0,14,1,114,86,1,0,0,115,14, + 0,0,0,29,33,9,13,9,19,20,25,9,26,9,26,9, + 26,114,10,0,0,0,122,26,95,78,97,109,101,115,112,97, + 99,101,80,97,116,104,46,95,95,115,101,116,105,116,101,109, + 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,114,78,1,0,0,114,72,0,0, + 0,41,2,114,4,0,0,0,114,77,1,0,0,114,36,1, + 0,0,115,1,0,0,0,32,114,7,0,0,0,218,7,95, + 95,108,101,110,95,95,243,4,0,0,114,81,1,0,0,114, + 81,1,0,0,115,12,0,0,0,16,19,20,24,20,39,20, + 39,16,40,9,40,114,10,0,0,0,122,22,95,78,97,109, + 101,115,112,97,99,101,80,97,116,104,46,95,95,108,101,110, + 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,243,12,0,0,0,100,1,160,0, + 124,0,106,1,161,1,83,0,41,2,78,122,20,95,78,97, + 109,101,115,112,97,99,101,80,97,116,104,40,123,33,114,125, + 41,41,2,114,94,0,0,0,114,67,1,0,0,114,36,1, 0,0,115,1,0,0,0,32,114,7,0,0,0,218,8,95, - 95,105,116,101,114,95,95,233,4,0,0,243,2,0,0,0, - 12,1,114,9,0,0,0,122,23,95,78,97,109,101,115,112, - 97,99,101,80,97,116,104,46,95,95,105,116,101,114,95,95, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,115,12,0,0,0,124,0,160,0,161,0, - 124,1,25,0,83,0,114,69,0,0,0,169,1,114,54,1, - 0,0,41,2,114,143,0,0,0,218,5,105,110,100,101,120, - 115,2,0,0,0,32,32,114,7,0,0,0,218,11,95,95, - 103,101,116,105,116,101,109,95,95,236,4,0,0,114,58,1, - 0,0,114,9,0,0,0,122,26,95,78,97,109,101,115,112, - 97,99,101,80,97,116,104,46,95,95,103,101,116,105,116,101, - 109,95,95,99,3,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,3,0,0,0,115,14,0,0,0,124,2,124, - 0,106,0,124,1,60,0,100,0,83,0,114,69,0,0,0, - 41,1,114,46,1,0,0,41,3,114,143,0,0,0,114,60, - 1,0,0,114,65,0,0,0,115,3,0,0,0,32,32,32, - 114,7,0,0,0,218,11,95,95,115,101,116,105,116,101,109, - 95,95,239,4,0,0,115,2,0,0,0,14,1,114,9,0, - 0,0,122,26,95,78,97,109,101,115,112,97,99,101,80,97, - 116,104,46,95,95,115,101,116,105,116,101,109,95,95,99,1, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,114,55,1,0,0,114,69,0,0,0,41,2,114, - 4,0,0,0,114,54,1,0,0,114,20,1,0,0,115,1, - 0,0,0,32,114,7,0,0,0,218,7,95,95,108,101,110, - 95,95,242,4,0,0,114,58,1,0,0,114,9,0,0,0, - 122,22,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 46,95,95,108,101,110,95,95,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,243,12,0, - 0,0,100,1,160,0,124,0,106,1,161,1,83,0,41,2, - 78,122,20,95,78,97,109,101,115,112,97,99,101,80,97,116, - 104,40,123,33,114,125,41,41,2,114,89,0,0,0,114,46, - 1,0,0,114,20,1,0,0,115,1,0,0,0,32,114,7, - 0,0,0,218,8,95,95,114,101,112,114,95,95,245,4,0, - 0,114,58,1,0,0,114,9,0,0,0,122,23,95,78,97, + 95,114,101,112,114,95,95,246,4,0,0,114,81,1,0,0, + 114,81,1,0,0,115,12,0,0,0,16,38,16,57,46,50, + 46,56,16,57,9,57,114,10,0,0,0,122,23,95,78,97, 109,101,115,112,97,99,101,80,97,116,104,46,95,95,114,101, 112,114,95,95,99,2,0,0,0,0,0,0,0,0,0,0, 0,3,0,0,0,3,0,0,0,115,12,0,0,0,124,1, - 124,0,160,0,161,0,118,0,83,0,114,69,0,0,0,114, - 59,1,0,0,169,2,114,143,0,0,0,218,4,105,116,101, + 124,0,160,0,161,0,118,0,83,0,114,72,0,0,0,114, + 82,1,0,0,169,2,114,148,0,0,0,218,4,105,116,101, 109,115,2,0,0,0,32,32,114,7,0,0,0,218,12,95, - 95,99,111,110,116,97,105,110,115,95,95,248,4,0,0,114, - 58,1,0,0,114,9,0,0,0,122,27,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,99,111,110,116, - 97,105,110,115,95,95,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,115,16,0,0,0, - 124,0,106,0,160,1,124,1,161,1,1,0,100,0,83,0, - 114,69,0,0,0,41,2,114,46,1,0,0,114,61,0,0, - 0,114,66,1,0,0,115,2,0,0,0,32,32,114,7,0, - 0,0,114,61,0,0,0,251,4,0,0,243,2,0,0,0, - 16,1,114,9,0,0,0,122,21,95,78,97,109,101,115,112, + 95,99,111,110,116,97,105,110,115,95,95,249,4,0,0,114, + 81,1,0,0,114,81,1,0,0,115,12,0,0,0,16,20, + 24,28,24,43,24,43,16,43,9,43,114,10,0,0,0,122, + 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, + 95,95,99,111,110,116,97,105,110,115,95,95,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, + 0,115,16,0,0,0,124,0,106,0,160,1,124,1,161,1, + 1,0,100,0,83,0,114,72,0,0,0,41,2,114,67,1, + 0,0,114,64,0,0,0,114,90,1,0,0,115,2,0,0, + 0,32,32,114,7,0,0,0,114,64,0,0,0,252,4,0, + 0,243,2,0,0,0,16,1,114,93,1,0,0,115,16,0, + 0,0,9,13,9,19,9,32,27,31,9,32,9,32,9,32, + 9,32,114,10,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,78,41, - 15,114,149,0,0,0,114,148,0,0,0,114,150,0,0,0, - 114,151,0,0,0,114,235,0,0,0,114,52,1,0,0,114, - 47,1,0,0,114,54,1,0,0,114,57,1,0,0,114,61, - 1,0,0,114,62,1,0,0,114,63,1,0,0,114,65,1, - 0,0,114,68,1,0,0,114,61,0,0,0,114,12,0,0, - 0,114,9,0,0,0,114,7,0,0,0,114,44,1,0,0, - 193,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, + 15,114,154,0,0,0,114,153,0,0,0,114,155,0,0,0, + 114,156,0,0,0,114,243,0,0,0,114,74,1,0,0,114, + 68,1,0,0,114,77,1,0,0,114,80,1,0,0,114,84, + 1,0,0,114,85,1,0,0,114,87,1,0,0,114,89,1, + 0,0,114,92,1,0,0,114,64,0,0,0,114,13,0,0, + 0,114,10,0,0,0,114,7,0,0,0,114,65,1,0,0, + 194,4,0,0,115,26,0,0,0,8,0,4,1,8,6,8, 6,8,10,8,4,8,13,8,3,8,3,8,3,8,3,8, - 3,12,3,114,9,0,0,0,114,44,1,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0, - 0,0,115,88,0,0,0,101,0,90,1,100,0,90,2,100, - 1,100,2,132,0,90,3,101,4,100,3,100,4,132,0,131, - 1,90,5,100,5,100,6,132,0,90,6,100,7,100,8,132, - 0,90,7,100,9,100,10,132,0,90,8,100,11,100,12,132, - 0,90,9,100,13,100,14,132,0,90,10,100,15,100,16,132, - 0,90,11,100,17,100,18,132,0,90,12,100,19,83,0,41, - 20,218,16,95,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, - 4,0,0,0,3,0,0,0,115,18,0,0,0,116,0,124, - 1,124,2,124,3,131,3,124,0,95,1,100,0,83,0,114, - 69,0,0,0,41,2,114,44,1,0,0,114,46,1,0,0, - 114,50,1,0,0,115,4,0,0,0,32,32,32,32,114,7, - 0,0,0,114,235,0,0,0,1,5,0,0,115,2,0,0, - 0,18,1,114,9,0,0,0,122,25,95,78,97,109,101,115, - 112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,3,0,0,0,115,24,0,0,0,116,0,106, - 1,100,1,116,2,131,2,1,0,100,2,160,3,124,0,106, - 4,161,1,83,0,41,4,122,115,82,101,116,117,114,110,32, - 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, - 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, - 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, - 101,115,32,116,104,101,32,106,111,98,32,105,116,115,101,108, - 102,46,10,10,32,32,32,32,32,32,32,32,122,82,95,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,109, - 111,100,117,108,101,95,114,101,112,114,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, - 122,25,60,109,111,100,117,108,101,32,123,33,114,125,32,40, - 110,97,109,101,115,112,97,99,101,41,62,78,41,5,114,99, - 0,0,0,114,100,0,0,0,114,101,0,0,0,114,89,0, - 0,0,114,149,0,0,0,41,1,114,243,0,0,0,115,1, - 0,0,0,32,114,7,0,0,0,218,11,109,111,100,117,108, - 101,95,114,101,112,114,4,5,0,0,115,8,0,0,0,6, - 7,2,1,4,255,12,2,114,9,0,0,0,122,28,95,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,109, - 111,100,117,108,101,95,114,101,112,114,99,2,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,114, - 24,0,0,0,41,2,78,84,114,12,0,0,0,114,246,0, - 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,205, - 0,0,0,15,5,0,0,243,2,0,0,0,4,1,114,9, - 0,0,0,122,27,95,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,46,105,115,95,112,97,99,107,97,103,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,114,24,0,0,0,41,2,78,114,10,0, - 0,0,114,12,0,0,0,114,246,0,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,0,1,0,0,18,5,0, - 0,114,72,1,0,0,114,9,0,0,0,122,27,95,78,97, - 109,101,115,112,97,99,101,76,111,97,100,101,114,46,103,101, - 116,95,115,111,117,114,99,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,3,0,0,0,115,16,0, - 0,0,116,0,100,1,100,2,100,3,100,4,100,5,141,4, - 83,0,41,6,78,114,10,0,0,0,122,8,60,115,116,114, - 105,110,103,62,114,242,0,0,0,84,41,1,114,2,1,0, - 0,41,1,114,3,1,0,0,114,246,0,0,0,115,2,0, - 0,0,32,32,114,7,0,0,0,114,240,0,0,0,21,5, - 0,0,114,69,1,0,0,114,9,0,0,0,122,25,95,78, + 3,12,3,115,100,0,0,0,0,129,0,129,0,129,0,129, + 0,129,0,129,0,129,0,129,0,129,8,181,0,127,0,127, + 0,127,0,127,0,127,0,127,0,127,0,127,0,127,2,80, + 0,129,0,129,0,129,0,129,0,129,0,129,0,129,0,129, + 0,129,2,176,0,127,0,127,0,127,0,127,0,127,0,127, + 0,127,0,127,0,127,8,86,8,10,8,4,8,13,8,3, + 8,3,8,3,8,3,8,3,8,3,12,3,115,104,0,0, + 0,1,1,1,1,1,1,1,1,5,20,1,1,5,40,5, + 40,5,40,5,40,5,34,5,34,5,34,5,34,5,72,5, + 72,5,72,5,72,5,26,5,26,5,26,5,26,5,41,5, + 41,5,41,5,41,5,42,5,42,5,42,5,42,5,33,5, + 33,5,33,5,33,5,40,5,40,5,40,5,40,5,57,5, + 57,5,57,5,57,5,43,5,43,5,43,5,43,5,32,5, + 32,5,32,5,32,5,32,5,32,114,10,0,0,0,114,65, + 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,0,0,115,88,0,0,0,101,0,90, + 1,100,0,90,2,100,1,100,2,132,0,90,3,101,4,100, + 3,100,4,132,0,131,1,90,5,100,5,100,6,132,0,90, + 6,100,7,100,8,132,0,90,7,100,9,100,10,132,0,90, + 8,100,11,100,12,132,0,90,9,100,13,100,14,132,0,90, + 10,100,15,100,16,132,0,90,11,100,17,100,18,132,0,90, + 12,100,19,83,0,41,20,218,16,95,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,4,0,0,0,3,0,0,0,115,18, + 0,0,0,116,0,124,1,124,2,124,3,131,3,124,0,95, + 1,100,0,83,0,114,72,0,0,0,41,2,114,65,1,0, + 0,114,67,1,0,0,114,71,1,0,0,115,4,0,0,0, + 32,32,32,32,114,7,0,0,0,114,243,0,0,0,2,5, + 0,0,243,2,0,0,0,18,1,114,95,1,0,0,115,18, + 0,0,0,22,36,37,41,43,47,49,60,22,61,9,13,9, + 19,9,19,9,19,114,10,0,0,0,122,25,95,78,97,109, + 101,115,112,97,99,101,76,111,97,100,101,114,46,95,95,105, + 110,105,116,95,95,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,115,24,0,0,0,116, + 0,106,1,100,1,116,2,131,2,1,0,100,2,160,3,124, + 0,106,4,161,1,83,0,41,4,122,115,82,101,116,117,114, + 110,32,114,101,112,114,32,102,111,114,32,116,104,101,32,109, + 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, + 84,104,101,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,32,84,104,101,32,105, + 109,112,111,114,116,32,109,97,99,104,105,110,101,114,121,32, + 100,111,101,115,32,116,104,101,32,106,111,98,32,105,116,115, + 101,108,102,46,10,10,32,32,32,32,32,32,32,32,122,82, + 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, + 46,109,111,100,117,108,101,95,114,101,112,114,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,122,25,60,109,111,100,117,108,101,32,123,33,114,125, + 32,40,110,97,109,101,115,112,97,99,101,41,62,78,41,5, + 114,104,0,0,0,114,105,0,0,0,114,106,0,0,0,114, + 94,0,0,0,114,154,0,0,0,41,1,114,253,0,0,0, + 115,1,0,0,0,32,114,7,0,0,0,218,11,109,111,100, + 117,108,101,95,114,101,112,114,5,5,0,0,115,8,0,0, + 0,6,7,2,1,4,255,12,2,115,6,0,0,0,4,7, + 8,1,12,1,115,24,0,0,0,9,18,9,23,24,59,61, + 79,9,80,9,80,16,43,16,67,51,57,51,66,16,67,9, + 67,114,10,0,0,0,122,28,95,78,97,109,101,115,112,97, + 99,101,76,111,97,100,101,114,46,109,111,100,117,108,101,95, + 114,101,112,114,99,2,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,114,26,0,0,0,41,2, + 78,84,114,13,0,0,0,114,0,1,0,0,115,2,0,0, + 0,32,32,114,7,0,0,0,114,213,0,0,0,16,5,0, + 0,243,2,0,0,0,4,1,114,97,1,0,0,115,4,0, + 0,0,16,20,16,20,114,10,0,0,0,122,27,95,78,97, + 109,101,115,112,97,99,101,76,111,97,100,101,114,46,105,115, + 95,112,97,99,107,97,103,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,114,26,0, + 0,0,41,2,78,114,11,0,0,0,114,13,0,0,0,114, + 0,1,0,0,115,2,0,0,0,32,32,114,7,0,0,0, + 114,14,1,0,0,19,5,0,0,114,97,1,0,0,114,97, + 1,0,0,115,4,0,0,0,16,18,16,18,114,10,0,0, + 0,122,27,95,78,97,109,101,115,112,97,99,101,76,111,97, + 100,101,114,46,103,101,116,95,115,111,117,114,99,101,99,2, + 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3, + 0,0,0,115,16,0,0,0,116,0,100,1,100,2,100,3, + 100,4,100,5,141,4,83,0,41,6,78,114,11,0,0,0, + 122,8,60,115,116,114,105,110,103,62,114,252,0,0,0,84, + 41,1,114,16,1,0,0,41,1,114,17,1,0,0,114,0, + 1,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, + 250,0,0,0,22,5,0,0,114,93,1,0,0,114,93,1, + 0,0,115,16,0,0,0,16,23,24,26,28,38,40,46,61, + 65,16,66,16,66,9,66,114,10,0,0,0,122,25,95,78, 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,103, 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,3,0,0,0,114,24,0,0, - 0,114,236,0,0,0,114,12,0,0,0,114,237,0,0,0, - 115,2,0,0,0,32,32,114,7,0,0,0,114,238,0,0, - 0,24,5,0,0,114,239,0,0,0,114,9,0,0,0,122, - 30,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, - 114,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 3,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, - 0,0,114,12,0,0,0,114,40,1,0,0,115,2,0,0, - 0,32,32,114,7,0,0,0,114,244,0,0,0,27,5,0, - 0,114,72,1,0,0,114,9,0,0,0,122,28,95,78,97, - 109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,120, - 101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,26, - 0,0,0,116,0,160,1,100,1,124,0,106,2,161,2,1, - 0,116,0,160,3,124,0,124,1,161,2,83,0,41,3,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,78,41,4,114,158, - 0,0,0,114,172,0,0,0,114,46,1,0,0,114,245,0, - 0,0,114,246,0,0,0,115,2,0,0,0,32,32,114,7, - 0,0,0,114,247,0,0,0,30,5,0,0,115,8,0,0, - 0,6,7,4,1,4,255,12,3,114,9,0,0,0,122,28, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 46,108,111,97,100,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0, - 0,115,22,0,0,0,100,1,100,2,108,0,109,1,125,2, - 1,0,124,2,124,0,106,2,131,1,83,0,41,3,78,114, - 0,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,30,1,0,0,114,73, - 1,0,0,114,46,1,0,0,41,3,114,143,0,0,0,114, - 243,0,0,0,114,73,1,0,0,115,3,0,0,0,32,32, - 32,114,7,0,0,0,114,31,1,0,0,42,5,0,0,115, - 4,0,0,0,12,1,10,1,114,9,0,0,0,122,36,95, + 0,0,0,0,1,0,0,0,3,0,0,0,114,26,0,0, + 0,114,245,0,0,0,114,13,0,0,0,114,246,0,0,0, + 115,2,0,0,0,32,32,114,7,0,0,0,114,247,0,0, + 0,25,5,0,0,114,248,0,0,0,114,249,0,0,0,115, + 4,0,0,0,0,0,0,0,114,10,0,0,0,122,30,95, 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46, - 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, - 100,101,114,78,41,13,114,149,0,0,0,114,148,0,0,0, - 114,150,0,0,0,114,235,0,0,0,114,232,0,0,0,114, - 71,1,0,0,114,205,0,0,0,114,0,1,0,0,114,240, - 0,0,0,114,238,0,0,0,114,244,0,0,0,114,247,0, - 0,0,114,31,1,0,0,114,12,0,0,0,114,9,0,0, - 0,114,7,0,0,0,114,70,1,0,0,0,5,0,0,115, - 22,0,0,0,8,0,8,1,2,3,10,1,8,10,8,3, - 8,3,8,3,8,3,8,3,12,12,114,9,0,0,0,114, - 70,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,0,0,0,0,115,118,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,101,4,100,2,100,3, - 132,0,131,1,90,5,101,4,100,4,100,5,132,0,131,1, - 90,6,101,7,100,6,100,7,132,0,131,1,90,8,101,7, - 100,8,100,9,132,0,131,1,90,9,101,7,100,19,100,11, - 100,12,132,1,131,1,90,10,101,7,100,20,100,13,100,14, - 132,1,131,1,90,11,101,7,100,19,100,15,100,16,132,1, - 131,1,90,12,101,4,100,17,100,18,132,0,131,1,90,13, - 100,10,83,0,41,21,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,4, - 0,0,0,3,0,0,0,115,64,0,0,0,116,0,116,1, - 106,2,160,3,161,0,131,1,68,0,93,22,92,2,125,0, - 125,1,124,1,100,1,117,0,114,20,116,1,106,2,124,0, - 61,0,113,7,116,4,124,1,100,2,131,2,114,29,124,1, - 160,5,161,0,1,0,113,7,100,1,83,0,41,3,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,41,6,218,4,108,105,115,116,114,16,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,152,0,0,0,114, - 75,1,0,0,41,2,114,141,0,0,0,218,6,102,105,110, - 100,101,114,115,2,0,0,0,32,32,114,7,0,0,0,114, - 75,1,0,0,53,5,0,0,115,14,0,0,0,22,4,8, - 1,10,1,10,1,8,1,2,128,4,252,114,9,0,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,99,1, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,3, - 0,0,0,115,78,0,0,0,116,0,106,1,100,1,117,1, - 114,14,116,0,106,1,115,14,116,2,106,3,100,2,116,4, - 131,2,1,0,116,0,106,1,68,0,93,18,125,1,9,0, - 124,1,124,0,131,1,2,0,1,0,83,0,35,0,4,0, - 116,5,121,38,1,0,1,0,1,0,89,0,113,17,37,0, - 100,1,83,0,119,0,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,16,0,0,0,218,10,112,97,116,104,95, - 104,111,111,107,115,114,99,0,0,0,114,100,0,0,0,114, - 161,0,0,0,114,142,0,0,0,41,2,114,65,0,0,0, - 90,4,104,111,111,107,115,2,0,0,0,32,32,114,7,0, - 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,63, - 5,0,0,115,22,0,0,0,16,3,12,1,10,1,2,1, - 12,1,2,128,12,1,4,1,2,128,4,2,2,253,115,12, + 99,114,101,97,116,101,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,115,4,0,0,0,100,0,83,0,114,72,0,0,0, + 114,13,0,0,0,114,61,1,0,0,115,2,0,0,0,32, + 32,114,7,0,0,0,114,254,0,0,0,28,5,0,0,114, + 97,1,0,0,114,97,1,0,0,115,4,0,0,0,9,13, + 9,13,114,10,0,0,0,122,28,95,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,101,120,101,99,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,115,26,0,0,0,116, + 0,160,1,100,1,124,0,106,2,161,2,1,0,116,0,160, + 3,124,0,124,1,161,2,83,0,41,3,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,78,41,4,114,163,0,0,0,114, + 177,0,0,0,114,67,1,0,0,114,255,0,0,0,114,0, + 1,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114, + 1,1,0,0,31,5,0,0,115,8,0,0,0,6,7,4, + 1,4,255,12,3,115,10,0,0,0,2,7,2,1,2,255, + 8,1,12,2,115,26,0,0,0,9,19,9,48,37,77,37, + 41,37,47,9,48,9,48,16,26,16,60,45,49,51,59,16, + 60,9,60,114,10,0,0,0,122,28,95,78,97,109,101,115, + 112,97,99,101,76,111,97,100,101,114,46,108,111,97,100,95, + 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,115,22,0,0,0, + 100,1,100,2,108,0,109,1,125,2,1,0,124,2,124,0, + 106,2,131,1,83,0,41,3,78,114,0,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,47,1,0,0,114,98,1,0,0,114,67,1, + 0,0,41,3,114,148,0,0,0,114,253,0,0,0,114,98, + 1,0,0,115,3,0,0,0,32,32,32,114,7,0,0,0, + 114,48,1,0,0,43,5,0,0,243,4,0,0,0,12,1, + 10,1,114,99,1,0,0,115,22,0,0,0,9,54,9,54, + 9,54,9,54,9,54,9,54,16,31,32,36,32,42,16,43, + 9,43,114,10,0,0,0,122,36,95,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,103,101,116,95,114,101, + 115,111,117,114,99,101,95,114,101,97,100,101,114,78,41,13, + 114,154,0,0,0,114,153,0,0,0,114,155,0,0,0,114, + 243,0,0,0,114,240,0,0,0,114,96,1,0,0,114,213, + 0,0,0,114,14,1,0,0,114,250,0,0,0,114,247,0, + 0,0,114,254,0,0,0,114,1,1,0,0,114,48,1,0, + 0,114,13,0,0,0,114,10,0,0,0,114,7,0,0,0, + 114,94,1,0,0,1,5,0,0,115,22,0,0,0,8,0, + 8,1,2,3,10,1,8,10,8,3,8,3,8,3,8,3, + 8,3,12,12,115,62,0,0,0,0,129,0,129,0,129,0, + 129,0,129,0,129,0,129,0,129,0,129,0,129,8,245,0, + 127,0,127,0,127,0,127,0,127,0,127,0,127,0,127,0, + 127,0,127,8,13,2,2,10,9,8,3,8,3,8,3,8, + 3,8,3,8,12,12,4,115,88,0,0,0,1,1,1,1, + 1,1,1,1,5,61,5,61,5,61,5,61,6,18,5,67, + 5,67,5,67,5,67,5,67,5,20,5,20,5,20,5,20, + 5,18,5,18,5,18,5,18,5,66,5,66,5,66,5,66, + 5,57,5,57,5,57,5,57,5,13,5,13,5,13,5,13, + 5,60,5,60,5,60,5,60,5,43,5,43,5,43,5,43, + 5,43,5,43,114,10,0,0,0,114,94,1,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0, + 0,0,0,115,118,0,0,0,101,0,90,1,100,0,90,2, + 100,1,90,3,101,4,100,2,100,3,132,0,131,1,90,5, + 101,4,100,4,100,5,132,0,131,1,90,6,101,7,100,6, + 100,7,132,0,131,1,90,8,101,7,100,8,100,9,132,0, + 131,1,90,9,101,7,100,19,100,11,100,12,132,1,131,1, + 90,10,101,7,100,20,100,13,100,14,132,1,131,1,90,11, + 101,7,100,19,100,15,100,16,132,1,131,1,90,12,101,4, + 100,17,100,18,132,0,131,1,90,13,100,10,83,0,41,21, + 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,4,0,0,0,3,0,0, + 0,115,64,0,0,0,116,0,116,1,106,2,160,3,161,0, + 131,1,68,0,93,22,92,2,125,0,125,1,124,1,100,1, + 117,0,114,20,116,1,106,2,124,0,61,0,113,7,116,4, + 124,1,100,2,131,2,114,29,124,1,160,5,161,0,1,0, + 113,7,100,1,83,0,41,3,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,41,6,218,4,108, + 105,115,116,114,18,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,157,0,0,0,114,101,1,0,0,41,2, + 114,146,0,0,0,218,6,102,105,110,100,101,114,115,2,0, + 0,0,32,32,114,7,0,0,0,114,101,1,0,0,54,5, + 0,0,115,14,0,0,0,22,4,8,1,10,1,10,1,8, + 1,2,128,4,252,115,20,0,0,0,12,4,4,4,6,252, + 6,1,2,3,10,254,8,1,10,1,2,128,4,0,115,64, + 0,0,0,29,33,34,37,34,57,34,65,34,65,29,66,9, + 43,9,43,13,25,13,17,19,25,16,22,26,30,16,30,13, + 43,21,24,21,44,45,49,21,50,21,50,18,25,26,32,34, + 53,18,54,13,43,17,23,17,43,17,43,17,43,0,0,9, + 43,9,43,114,10,0,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,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,3,0,0,0,115,78,0,0,0, + 116,0,106,1,100,1,117,1,114,14,116,0,106,1,115,14, + 116,2,106,3,100,2,116,4,131,2,1,0,116,0,106,1, + 68,0,93,18,125,1,9,0,124,1,124,0,131,1,2,0, + 1,0,83,0,35,0,4,0,116,5,121,38,1,0,1,0, + 1,0,89,0,113,17,37,0,100,1,83,0,119,0,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,18,0,0, + 0,218,10,112,97,116,104,95,104,111,111,107,115,114,104,0, + 0,0,114,105,0,0,0,114,166,0,0,0,114,147,0,0, + 0,41,2,114,68,0,0,0,90,4,104,111,111,107,115,2, + 0,0,0,32,32,114,7,0,0,0,218,11,95,112,97,116, + 104,95,104,111,111,107,115,64,5,0,0,115,22,0,0,0, + 16,3,12,1,10,1,2,1,12,1,2,128,12,1,4,1, + 2,128,4,2,2,253,115,32,0,0,0,8,3,2,1,4, + 255,14,1,4,1,4,6,2,250,2,4,12,254,2,128,2, + 2,2,255,12,1,2,128,4,2,2,254,115,78,0,0,0, + 12,15,12,26,34,38,12,38,9,69,47,50,47,61,9,69, + 13,22,13,27,28,53,55,68,13,69,13,69,21,24,21,35, + 9,24,9,24,13,17,13,25,24,28,29,33,24,34,17,34, + 17,34,17,34,0,0,13,25,20,31,13,25,13,25,13,25, + 13,25,17,25,17,25,0,0,20,24,20,24,13,25,115,12, 0,0,0,148,3,26,2,154,7,35,9,166,1,35,9,122, 22,80,97,116,104,70,105,110,100,101,114,46,95,112,97,116, 104,95,104,111,111,107,115,99,2,0,0,0,0,0,0,0, @@ -2231,135 +2814,183 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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, - 10,0,0,0,78,41,7,114,19,0,0,0,114,82,0,0, + 11,0,0,0,78,41,7,114,21,0,0,0,114,87,0,0, 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, - 114,114,111,114,114,16,0,0,0,114,77,1,0,0,218,8, - 75,101,121,69,114,114,111,114,114,81,1,0,0,41,3,114, - 220,0,0,0,114,65,0,0,0,114,79,1,0,0,115,3, + 114,114,111,114,114,18,0,0,0,114,103,1,0,0,218,8, + 75,101,121,69,114,114,111,114,114,107,1,0,0,41,3,114, + 228,0,0,0,114,68,0,0,0,114,105,1,0,0,115,3, 0,0,0,32,32,32,114,7,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,76,5,0,0,115,36,0,0,0,8,8,2,1,10,1, + 101,77,5,0,0,115,36,0,0,0,8,8,2,1,10,1, 2,128,12,1,6,3,2,128,2,1,10,1,4,4,2,128, - 12,253,10,1,12,1,4,1,2,128,2,253,2,250,115,24, - 0,0,0,133,4,10,0,138,7,20,7,150,5,29,0,157, - 17,49,7,178,1,49,7,179,1,20,7,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,99,3,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0, - 0,115,138,0,0,0,116,0,124,2,100,1,131,2,114,27, - 116,1,160,2,124,2,161,1,155,0,100,2,157,2,125,3, - 116,3,106,4,124,3,116,5,131,2,1,0,124,2,160,6, - 124,1,161,1,92,2,125,4,125,5,110,21,116,1,160,2, - 124,2,161,1,155,0,100,3,157,2,125,3,116,3,106,4, - 124,3,116,5,131,2,1,0,124,2,160,7,124,1,161,1, - 125,4,103,0,125,5,124,4,100,0,117,1,114,58,116,1, - 160,8,124,1,124,4,161,2,83,0,116,1,160,9,124,1, - 100,0,161,2,125,6,124,5,124,6,95,10,124,6,83,0, - 41,4,78,114,160,0,0,0,122,53,46,102,105,110,100,95, - 115,112,101,99,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,102,105,110,100,95,108,111,97,100,101,114,40,41,122, - 53,46,102,105,110,100,95,115,112,101,99,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,102,105,110,100,95,109,111, - 100,117,108,101,40,41,41,11,114,152,0,0,0,114,158,0, - 0,0,90,12,95,111,98,106,101,99,116,95,110,97,109,101, - 114,99,0,0,0,114,100,0,0,0,114,161,0,0,0,114, - 160,0,0,0,114,228,0,0,0,114,223,0,0,0,114,206, - 0,0,0,114,201,0,0,0,41,7,114,220,0,0,0,114, - 162,0,0,0,114,79,1,0,0,114,165,0,0,0,114,163, - 0,0,0,114,164,0,0,0,114,209,0,0,0,115,7,0, - 0,0,32,32,32,32,32,32,32,114,7,0,0,0,218,16, - 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, - 98,5,0,0,115,26,0,0,0,10,4,16,1,12,2,16, - 1,16,2,12,2,10,1,4,1,8,1,12,1,12,1,6, - 1,4,1,114,9,0,0,0,122,27,80,97,116,104,70,105, - 110,100,101,114,46,95,108,101,103,97,99,121,95,103,101,116, - 95,115,112,101,99,78,99,4,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,3,0,0,0,115,166,0,0,0, - 103,0,125,4,124,2,68,0,93,67,125,5,116,0,124,5, - 116,1,116,2,102,2,131,2,115,14,113,4,124,0,160,3, - 124,5,161,1,125,6,124,6,100,1,117,1,114,71,116,4, - 124,6,100,2,131,2,114,35,124,6,160,5,124,1,124,3, - 161,2,125,7,110,6,124,0,160,6,124,1,124,6,161,2, - 125,7,124,7,100,1,117,0,114,46,113,4,124,7,106,7, - 100,1,117,1,114,55,124,7,2,0,1,0,83,0,124,7, - 106,8,125,8,124,8,100,1,117,0,114,66,116,9,100,3, - 131,1,130,1,124,4,160,10,124,8,161,1,1,0,113,4, - 116,11,160,12,124,1,100,1,161,2,125,7,124,4,124,7, - 95,8,124,7,83,0,41,4,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,114,225,0,0,0,122, - 19,115,112,101,99,32,109,105,115,115,105,110,103,32,108,111, - 97,100,101,114,41,13,114,184,0,0,0,114,109,0,0,0, - 218,5,98,121,116,101,115,114,84,1,0,0,114,152,0,0, - 0,114,225,0,0,0,114,85,1,0,0,114,163,0,0,0, - 114,201,0,0,0,114,142,0,0,0,114,190,0,0,0,114, - 158,0,0,0,114,206,0,0,0,41,9,114,220,0,0,0, - 114,162,0,0,0,114,65,0,0,0,114,224,0,0,0,218, - 14,110,97,109,101,115,112,97,99,101,95,112,97,116,104,90, - 5,101,110,116,114,121,114,79,1,0,0,114,209,0,0,0, - 114,164,0,0,0,115,9,0,0,0,32,32,32,32,32,32, - 32,32,32,114,7,0,0,0,218,9,95,103,101,116,95,115, - 112,101,99,119,5,0,0,115,42,0,0,0,4,5,8,1, - 14,1,2,1,10,1,8,1,10,1,14,1,12,2,8,1, - 2,1,10,1,8,1,6,1,8,1,8,1,10,5,2,128, - 12,2,6,1,4,1,114,9,0,0,0,122,20,80,97,116, - 104,70,105,110,100,101,114,46,95,103,101,116,95,115,112,101, - 99,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,115,94,0,0,0,124,2,100,1,117, - 0,114,7,116,0,106,1,125,2,124,0,160,2,124,1,124, - 2,124,3,161,3,125,4,124,4,100,1,117,0,114,20,100, - 1,83,0,124,4,106,3,100,1,117,0,114,45,124,4,106, - 4,125,5,124,5,114,43,100,1,124,4,95,5,116,6,124, - 1,124,5,124,0,106,2,131,3,124,4,95,4,124,4,83, - 0,100,1,83,0,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,16,0, - 0,0,114,65,0,0,0,114,88,1,0,0,114,163,0,0, - 0,114,201,0,0,0,114,204,0,0,0,114,44,1,0,0, - 41,6,114,220,0,0,0,114,162,0,0,0,114,65,0,0, - 0,114,224,0,0,0,114,209,0,0,0,114,87,1,0,0, - 115,6,0,0,0,32,32,32,32,32,32,114,7,0,0,0, - 114,225,0,0,0,151,5,0,0,115,26,0,0,0,8,6, - 6,1,14,1,8,1,4,1,10,1,6,1,4,1,6,3, - 16,1,4,1,4,2,4,2,114,9,0,0,0,122,20,80, - 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,115, - 112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,115,42,0,0,0,116,0,106, - 1,100,1,116,2,131,2,1,0,124,0,160,3,124,1,124, - 2,161,2,125,3,124,3,100,2,117,0,114,18,100,2,83, - 0,124,3,106,4,83,0,41,3,122,170,102,105,110,100,32, - 116,104,101,32,109,111,100,117,108,101,32,111,110,32,115,121, - 115,46,112,97,116,104,32,111,114,32,39,112,97,116,104,39, - 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,10,32,32,32, - 32,32,32,32,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,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,102,105,110,100,95,115,112,101,99, - 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, - 32,32,32,32,32,122,101,80,97,116,104,70,105,110,100,101, - 114,46,102,105,110,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,102,105,110,100,95,115,112, - 101,99,40,41,32,105,110,115,116,101,97,100,78,114,226,0, - 0,0,114,227,0,0,0,115,4,0,0,0,32,32,32,32, - 114,7,0,0,0,114,228,0,0,0,175,5,0,0,115,14, - 0,0,0,6,8,2,2,4,254,12,3,8,1,4,1,6, - 1,114,9,0,0,0,122,22,80,97,116,104,70,105,110,100, + 12,253,10,1,12,1,4,1,2,128,2,253,2,250,115,42, + 0,0,0,6,8,4,6,10,252,2,128,2,4,2,253,14, + 3,2,128,2,5,10,253,4,4,2,128,2,255,2,254,8, + 2,10,255,12,1,4,1,2,128,2,255,2,251,115,104,0, + 0,0,12,16,20,22,12,22,9,28,13,28,24,27,24,34, + 24,36,17,21,17,21,0,0,13,28,20,37,13,28,13,28, + 13,28,13,28,24,28,24,28,24,28,0,0,9,51,22,25, + 22,45,46,50,22,51,13,19,16,22,9,22,0,0,9,51, + 16,24,9,51,9,51,9,51,9,51,22,25,22,43,38,42, + 22,43,13,19,45,51,13,16,13,36,37,41,13,42,13,42, + 16,22,9,22,0,0,9,51,13,28,115,24,0,0,0,133, + 4,10,0,138,7,20,7,150,5,29,0,157,17,49,7,178, + 1,49,7,179,1,20,7,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,99,3,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,115,138,0, + 0,0,116,0,124,2,100,1,131,2,114,27,116,1,160,2, + 124,2,161,1,155,0,100,2,157,2,125,3,116,3,106,4, + 124,3,116,5,131,2,1,0,124,2,160,6,124,1,161,1, + 92,2,125,4,125,5,110,21,116,1,160,2,124,2,161,1, + 155,0,100,3,157,2,125,3,116,3,106,4,124,3,116,5, + 131,2,1,0,124,2,160,7,124,1,161,1,125,4,103,0, + 125,5,124,4,100,0,117,1,114,58,116,1,160,8,124,1, + 124,4,161,2,83,0,116,1,160,9,124,1,100,0,161,2, + 125,6,124,5,124,6,95,10,124,6,83,0,41,4,78,114, + 165,0,0,0,122,53,46,102,105,110,100,95,115,112,101,99, + 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,102,105, + 110,100,95,108,111,97,100,101,114,40,41,122,53,46,102,105, + 110,100,95,115,112,101,99,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,102,105,110,100,95,109,111,100,117,108,101, + 40,41,41,11,114,157,0,0,0,114,163,0,0,0,90,12, + 95,111,98,106,101,99,116,95,110,97,109,101,114,104,0,0, + 0,114,105,0,0,0,114,166,0,0,0,114,165,0,0,0, + 114,236,0,0,0,114,231,0,0,0,114,214,0,0,0,114, + 209,0,0,0,41,7,114,228,0,0,0,114,167,0,0,0, + 114,105,1,0,0,114,170,0,0,0,114,168,0,0,0,114, + 169,0,0,0,114,217,0,0,0,115,7,0,0,0,32,32, + 32,32,32,32,32,114,7,0,0,0,218,16,95,108,101,103, + 97,99,121,95,103,101,116,95,115,112,101,99,99,5,0,0, + 115,26,0,0,0,10,4,16,1,12,2,16,1,16,2,12, + 2,10,1,4,1,8,1,12,1,12,1,6,1,4,1,115, + 36,0,0,0,8,4,2,10,8,247,6,1,2,255,12,2, + 16,1,8,2,6,1,2,255,12,2,10,1,4,1,6,1, + 14,1,12,1,6,1,4,1,115,138,0,0,0,12,19,20, + 26,28,41,12,42,9,26,23,33,23,54,47,53,23,54,20, + 52,20,52,20,52,13,16,13,22,13,27,28,31,33,46,13, + 47,13,47,32,38,32,60,51,59,32,60,13,29,13,19,21, + 29,21,29,23,33,23,54,47,53,23,54,20,52,20,52,20, + 52,13,16,13,22,13,27,28,31,33,46,13,47,13,47,22, + 28,22,50,41,49,22,50,13,19,24,26,13,21,12,18,26, + 30,12,30,9,65,20,30,20,65,48,56,58,64,20,65,13, + 65,16,26,16,53,38,46,48,52,16,53,9,13,43,51,9, + 13,9,40,16,20,9,20,114,10,0,0,0,122,27,80,97, + 116,104,70,105,110,100,101,114,46,95,108,101,103,97,99,121, + 95,103,101,116,95,115,112,101,99,78,99,4,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,115, + 166,0,0,0,103,0,125,4,124,2,68,0,93,67,125,5, + 116,0,124,5,116,1,116,2,102,2,131,2,115,14,113,4, + 124,0,160,3,124,5,161,1,125,6,124,6,100,1,117,1, + 114,71,116,4,124,6,100,2,131,2,114,35,124,6,160,5, + 124,1,124,3,161,2,125,7,110,6,124,0,160,6,124,1, + 124,6,161,2,125,7,124,7,100,1,117,0,114,46,113,4, + 124,7,106,7,100,1,117,1,114,55,124,7,2,0,1,0, + 83,0,124,7,106,8,125,8,124,8,100,1,117,0,114,66, + 116,9,100,3,131,1,130,1,124,4,160,10,124,8,161,1, + 1,0,113,4,116,11,160,12,124,1,100,1,161,2,125,7, + 124,4,124,7,95,8,124,7,83,0,41,4,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,114,233, + 0,0,0,122,19,115,112,101,99,32,109,105,115,115,105,110, + 103,32,108,111,97,100,101,114,41,13,114,189,0,0,0,114, + 114,0,0,0,218,5,98,121,116,101,115,114,110,1,0,0, + 114,157,0,0,0,114,233,0,0,0,114,111,1,0,0,114, + 168,0,0,0,114,209,0,0,0,114,147,0,0,0,114,195, + 0,0,0,114,163,0,0,0,114,214,0,0,0,41,9,114, + 228,0,0,0,114,167,0,0,0,114,68,0,0,0,114,232, + 0,0,0,218,14,110,97,109,101,115,112,97,99,101,95,112, + 97,116,104,90,5,101,110,116,114,121,114,105,1,0,0,114, + 217,0,0,0,114,169,0,0,0,115,9,0,0,0,32,32, + 32,32,32,32,32,32,32,114,7,0,0,0,218,9,95,103, + 101,116,95,115,112,101,99,120,5,0,0,115,42,0,0,0, + 4,5,8,1,14,1,2,1,10,1,8,1,10,1,14,1, + 12,2,8,1,2,1,10,1,8,1,6,1,8,1,8,1, + 10,5,2,128,12,2,6,1,4,1,115,50,0,0,0,4, + 5,2,1,4,24,2,232,12,1,4,1,10,1,6,1,2, + 16,8,241,2,3,14,254,12,2,6,1,4,1,8,1,10, + 1,6,1,6,1,10,1,10,5,2,128,12,2,6,1,4, + 1,115,166,0,0,0,26,28,9,23,22,26,9,24,9,24, + 13,18,20,30,31,36,39,42,44,49,38,50,20,51,13,25, + 17,25,22,25,22,53,47,52,22,53,13,19,16,22,30,34, + 16,34,13,48,20,27,28,34,36,47,20,48,17,66,28,34, + 28,62,45,53,55,61,28,62,21,25,21,25,28,31,28,66, + 49,57,59,65,28,66,21,25,20,24,28,32,20,32,17,29, + 21,29,20,24,20,31,39,43,20,43,17,32,28,32,21,32, + 21,32,21,32,28,32,28,59,17,25,20,28,32,36,20,36, + 17,61,27,38,39,60,27,61,21,61,17,31,17,48,39,47, + 17,48,17,48,0,0,20,30,20,57,42,50,52,56,20,57, + 13,17,47,61,13,17,13,44,20,24,13,24,114,10,0,0, + 0,122,20,80,97,116,104,70,105,110,100,101,114,46,95,103, + 101,116,95,115,112,101,99,99,4,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,3,0,0,0,115,94,0,0, + 0,124,2,100,1,117,0,114,7,116,0,106,1,125,2,124, + 0,160,2,124,1,124,2,124,3,161,3,125,4,124,4,100, + 1,117,0,114,20,100,1,83,0,124,4,106,3,100,1,117, + 0,114,45,124,4,106,4,125,5,124,5,114,43,100,1,124, + 4,95,5,116,6,124,1,124,5,124,0,106,2,131,3,124, + 4,95,4,124,4,83,0,100,1,83,0,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,18,0,0,0,114,68,0,0,0,114,114,1, + 0,0,114,168,0,0,0,114,209,0,0,0,114,212,0,0, + 0,114,65,1,0,0,41,6,114,228,0,0,0,114,167,0, + 0,0,114,68,0,0,0,114,232,0,0,0,114,217,0,0, + 0,114,113,1,0,0,115,6,0,0,0,32,32,32,32,32, + 32,114,7,0,0,0,114,233,0,0,0,152,5,0,0,115, + 26,0,0,0,8,6,6,1,14,1,8,1,4,1,10,1, + 6,1,4,1,6,3,16,1,4,1,4,2,4,2,115,32, + 0,0,0,6,6,8,1,14,1,6,1,2,13,4,244,8, + 1,2,11,6,246,2,1,2,7,6,252,16,1,4,1,4, + 2,4,2,115,94,0,0,0,12,16,20,24,12,24,9,28, + 20,23,20,28,13,17,16,19,16,53,30,38,40,44,46,52, + 16,53,9,13,12,16,20,24,12,24,9,24,20,24,20,24, + 14,18,14,25,29,33,14,33,9,24,30,34,30,61,13,27, + 16,30,13,28,31,35,17,21,17,28,51,65,66,74,76,90, + 92,95,92,105,51,106,17,21,17,48,24,28,17,28,24,28, + 24,28,20,24,13,24,114,10,0,0,0,122,20,80,97,116, + 104,70,105,110,100,101,114,46,102,105,110,100,95,115,112,101, + 99,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,115,42,0,0,0,116,0,106,1,100, + 1,116,2,131,2,1,0,124,0,160,3,124,1,124,2,161, + 2,125,3,124,3,100,2,117,0,114,18,100,2,83,0,124, + 3,106,4,83,0,41,3,122,170,102,105,110,100,32,116,104, + 101,32,109,111,100,117,108,101,32,111,110,32,115,121,115,46, + 112,97,116,104,32,111,114,32,39,112,97,116,104,39,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,10,32,32,32,32,32, + 32,32,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,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,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,32, + 32,32,32,122,101,80,97,116,104,70,105,110,100,101,114,46, + 102,105,110,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,102,105,110,100,95,115,112,101,99, + 40,41,32,105,110,115,116,101,97,100,78,114,234,0,0,0, + 114,235,0,0,0,115,4,0,0,0,32,32,32,32,114,7, + 0,0,0,114,236,0,0,0,176,5,0,0,115,14,0,0, + 0,6,8,2,2,4,254,12,3,8,1,4,1,6,1,115, + 14,0,0,0,4,8,2,1,6,1,12,1,6,1,6,1, + 6,1,115,42,0,0,0,9,18,9,23,24,84,24,42,9, + 43,9,43,16,19,16,45,30,38,40,44,16,45,9,13,12, + 16,20,24,12,24,9,24,20,24,20,24,16,20,16,27,9, + 27,114,10,0,0,0,122,22,80,97,116,104,70,105,110,100, 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,0, 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,15, 0,0,0,115,28,0,0,0,100,1,100,2,108,0,109,1, @@ -2385,247 +3016,335 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 96,46,10,32,32,32,32,32,32,32,32,114,0,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,78,41,3,90,18,105,109,112,111,114, - 116,108,105,98,46,109,101,116,97,100,97,116,97,114,89,1, + 116,108,105,98,46,109,101,116,97,100,97,116,97,114,115,1, 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,144,0,0,0,114,145,0, - 0,0,114,89,1,0,0,115,3,0,0,0,32,32,32,114, - 7,0,0,0,114,90,1,0,0,191,5,0,0,115,4,0, - 0,0,12,10,16,1,114,9,0,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,114,69,0,0,0,114, - 229,0,0,0,41,14,114,149,0,0,0,114,148,0,0,0, - 114,150,0,0,0,114,151,0,0,0,114,232,0,0,0,114, - 75,1,0,0,114,81,1,0,0,114,233,0,0,0,114,84, - 1,0,0,114,85,1,0,0,114,88,1,0,0,114,225,0, - 0,0,114,228,0,0,0,114,90,1,0,0,114,12,0,0, - 0,114,9,0,0,0,114,7,0,0,0,114,74,1,0,0, - 49,5,0,0,115,36,0,0,0,8,0,4,2,2,2,10, - 1,2,9,10,1,2,12,10,1,2,21,10,1,2,20,12, - 1,2,31,12,1,2,23,12,1,2,15,14,1,114,9,0, - 0,0,114,74,1,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,0,0,0,0,115,90,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, - 3,132,0,90,4,100,4,100,5,132,0,90,5,101,6,90, - 7,100,6,100,7,132,0,90,8,100,8,100,9,132,0,90, - 9,100,19,100,11,100,12,132,1,90,10,100,13,100,14,132, - 0,90,11,101,12,100,15,100,16,132,0,131,1,90,13,100, - 17,100,18,132,0,90,14,100,10,83,0,41,20,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,6,0,0,0,7,0,0,0,115,114,0,0, - 0,135,5,103,0,125,3,124,2,68,0,93,16,92,2,138, - 5,125,4,124,3,160,0,136,5,102,1,100,1,100,2,132, - 8,124,4,68,0,131,1,161,1,1,0,113,5,124,3,124, - 0,95,1,124,1,112,28,100,3,124,0,95,2,116,3,124, - 0,106,2,131,1,115,44,116,4,116,5,106,6,131,0,124, - 0,106,2,131,2,124,0,95,2,100,4,124,0,95,7,116, - 8,131,0,124,0,95,9,116,8,131,0,124,0,95,10,100, - 5,83,0,41,6,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,115,24,0,0,0,129,0,124,0,93, - 7,125,1,124,1,137,2,102,2,86,0,1,0,113,2,100, - 0,83,0,114,69,0,0,0,114,12,0,0,0,41,3,114, - 5,0,0,0,114,41,1,0,0,114,163,0,0,0,115,3, - 0,0,0,32,32,128,114,7,0,0,0,114,8,0,0,0, - 220,5,0,0,115,4,0,0,0,2,128,22,0,114,9,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,114,97,0,0,0,114, - 130,0,0,0,78,41,11,114,190,0,0,0,218,8,95,108, - 111,97,100,101,114,115,114,65,0,0,0,114,86,0,0,0, - 114,67,0,0,0,114,19,0,0,0,114,82,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,143,0,0,0,114,65,0,0,0,218, - 14,108,111,97,100,101,114,95,100,101,116,97,105,108,115,90, - 7,108,111,97,100,101,114,115,114,211,0,0,0,114,163,0, - 0,0,115,6,0,0,0,32,32,32,32,32,64,114,7,0, - 0,0,114,235,0,0,0,214,5,0,0,115,22,0,0,0, - 2,128,4,4,12,1,26,1,6,1,10,2,10,1,18,1, - 6,1,8,1,12,1,114,9,0,0,0,122,19,70,105,108, - 101,70,105,110,100,101,114,46,95,95,105,110,105,116,95,95, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,115,10,0,0,0,100,1,124,0,95,0, - 100,2,83,0,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,130,0,0,0,78,41,1,114, - 93,1,0,0,114,20,1,0,0,115,1,0,0,0,32,114, - 7,0,0,0,114,75,1,0,0,230,5,0,0,114,81,0, - 0,0,114,9,0,0,0,122,28,70,105,108,101,70,105,110, - 100,101,114,46,105,110,118,97,108,105,100,97,116,101,95,99, - 97,99,104,101,115,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,3,0,0,0,115,54,0,0,0,116, - 0,106,1,100,1,116,2,131,2,1,0,124,0,160,3,124, - 1,161,1,125,2,124,2,100,2,117,0,114,19,100,2,103, - 0,102,2,83,0,124,2,106,4,124,2,106,5,112,25,103, - 0,102,2,83,0,41,3,122,197,84,114,121,32,116,111,32, - 102,105,110,100,32,97,32,108,111,97,100,101,114,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,44,32,111,114,32,116,104,101,32,110, - 97,109,101,115,112,97,99,101,10,32,32,32,32,32,32,32, - 32,112,97,99,107,97,103,101,32,112,111,114,116,105,111,110, - 115,46,32,82,101,116,117,114,110,115,32,40,108,111,97,100, - 101,114,44,32,108,105,115,116,45,111,102,45,112,111,114,116, - 105,111,110,115,41,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, + 117,116,105,111,110,115,41,3,114,149,0,0,0,114,150,0, + 0,0,114,115,1,0,0,115,3,0,0,0,32,32,32,114, + 7,0,0,0,114,116,1,0,0,192,5,0,0,243,4,0, + 0,0,12,10,16,1,114,117,1,0,0,115,28,0,0,0, + 9,58,9,58,9,58,9,58,9,58,9,58,16,34,16,53, + 55,59,16,70,63,69,16,70,16,70,9,70,114,10,0,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, + 114,72,0,0,0,114,237,0,0,0,41,14,114,154,0,0, + 0,114,153,0,0,0,114,155,0,0,0,114,156,0,0,0, + 114,240,0,0,0,114,101,1,0,0,114,107,1,0,0,114, + 241,0,0,0,114,110,1,0,0,114,111,1,0,0,114,114, + 1,0,0,114,233,0,0,0,114,236,0,0,0,114,116,1, + 0,0,114,13,0,0,0,114,10,0,0,0,114,7,0,0, + 0,114,100,1,0,0,50,5,0,0,115,36,0,0,0,8, + 0,4,2,2,2,10,1,2,9,10,1,2,12,10,1,2, + 21,10,1,2,20,12,1,2,31,12,1,2,23,12,1,2, + 15,14,1,115,124,0,0,0,0,129,0,129,0,129,0,129, + 0,129,0,129,0,129,0,129,0,129,0,129,8,196,0,127, + 0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 0,127,2,62,0,129,0,129,0,129,0,129,0,129,0,129, + 0,129,0,129,0,129,0,129,2,194,0,127,0,127,0,127, + 0,127,0,127,0,127,0,127,0,127,0,127,0,127,2,64, + 10,8,2,2,10,11,2,2,10,20,2,2,10,19,2,2, + 2,1,10,29,2,2,2,1,10,21,2,2,2,1,10,13, + 2,2,14,11,115,118,0,0,0,1,1,1,1,1,1,1, + 1,5,73,1,1,6,18,5,43,5,43,5,43,5,43,5, + 43,6,18,5,24,5,24,5,24,5,24,5,24,6,17,5, + 22,5,22,5,22,5,22,5,22,6,17,5,20,5,20,5, + 20,5,20,5,20,6,17,47,51,5,24,5,24,5,24,5, + 24,5,24,6,17,39,43,5,24,5,24,5,24,5,24,5, + 24,6,17,41,45,5,27,5,27,5,27,5,27,5,27,6, + 18,5,70,5,70,5,70,5,70,5,70,5,70,5,70,114, + 10,0,0,0,114,100,1,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,0,0,0,0,115,90, + 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, + 2,100,3,132,0,90,4,100,4,100,5,132,0,90,5,101, + 6,90,7,100,6,100,7,132,0,90,8,100,8,100,9,132, + 0,90,9,100,19,100,11,100,12,132,1,90,10,100,13,100, + 14,132,0,90,11,101,12,100,15,100,16,132,0,131,1,90, + 13,100,17,100,18,132,0,90,14,100,10,83,0,41,20,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,6,0,0,0,7,0,0,0,115,114, + 0,0,0,135,5,103,0,125,3,124,2,68,0,93,16,92, + 2,138,5,125,4,124,3,160,0,136,5,102,1,100,1,100, + 2,132,8,124,4,68,0,131,1,161,1,1,0,113,5,124, + 3,124,0,95,1,124,1,112,28,100,3,124,0,95,2,116, + 3,124,0,106,2,131,1,115,44,116,4,116,5,106,6,131, + 0,124,0,106,2,131,2,124,0,95,2,100,4,124,0,95, + 7,116,8,131,0,124,0,95,9,116,8,131,0,124,0,95, + 10,100,5,83,0,41,6,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,115,24,0,0,0,129,0,124, + 0,93,7,125,1,124,1,137,2,102,2,86,0,1,0,113, + 2,100,0,83,0,114,72,0,0,0,114,13,0,0,0,41, + 3,114,5,0,0,0,114,62,1,0,0,114,168,0,0,0, + 115,3,0,0,0,32,32,128,114,7,0,0,0,114,8,0, + 0,0,221,5,0,0,243,4,0,0,0,2,128,22,0,114, + 119,1,0,0,115,24,0,0,0,0,0,27,68,27,68,49, + 55,29,35,37,43,28,44,27,68,27,68,27,68,27,68,27, + 68,114,10,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,114,102, + 0,0,0,114,135,0,0,0,78,41,11,114,195,0,0,0, + 218,8,95,108,111,97,100,101,114,115,114,68,0,0,0,114, + 91,0,0,0,114,70,0,0,0,114,21,0,0,0,114,87, + 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,148,0,0,0,114,68, + 0,0,0,218,14,108,111,97,100,101,114,95,100,101,116,97, + 105,108,115,90,7,108,111,97,100,101,114,115,114,219,0,0, + 0,114,168,0,0,0,115,6,0,0,0,32,32,32,32,32, + 64,114,7,0,0,0,114,243,0,0,0,215,5,0,0,115, + 22,0,0,0,2,128,4,4,12,1,26,1,6,1,10,2, + 10,1,18,1,6,1,8,1,12,1,115,26,0,0,0,2, + 128,4,4,2,1,4,1,6,255,26,1,6,1,10,2,8, + 1,20,1,6,1,8,1,12,1,115,114,0,0,0,0,0, + 19,21,9,16,33,47,9,68,9,68,13,29,13,19,21,29, + 13,20,13,68,27,68,27,68,27,68,27,68,27,68,59,67, + 27,68,27,68,13,68,13,68,13,68,25,32,9,13,9,22, + 21,25,21,32,29,32,9,13,9,18,16,27,28,32,28,37, + 16,38,9,60,25,35,36,39,36,46,36,48,50,54,50,59, + 25,60,13,17,13,22,28,30,9,13,9,25,28,31,28,33, + 9,13,9,25,36,39,36,41,9,13,9,33,9,33,9,33, + 114,10,0,0,0,122,19,70,105,108,101,70,105,110,100,101, + 114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,115, + 10,0,0,0,100,1,124,0,95,0,100,2,83,0,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,135,0,0,0,78,41,1,114,121,1,0,0,114,36, + 1,0,0,115,1,0,0,0,32,114,7,0,0,0,114,101, + 1,0,0,231,5,0,0,114,86,0,0,0,114,86,0,0, + 0,115,10,0,0,0,28,30,9,13,9,25,9,25,9,25, + 114,10,0,0,0,122,28,70,105,108,101,70,105,110,100,101, + 114,46,105,110,118,97,108,105,100,97,116,101,95,99,97,99, + 104,101,115,99,2,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,115,54,0,0,0,116,0,106, + 1,100,1,116,2,131,2,1,0,124,0,160,3,124,1,161, + 1,125,2,124,2,100,2,117,0,114,19,100,2,103,0,102, + 2,83,0,124,2,106,4,124,2,106,5,112,25,103,0,102, + 2,83,0,41,3,122,197,84,114,121,32,116,111,32,102,105, + 110,100,32,97,32,108,111,97,100,101,114,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,44,32,111,114,32,116,104,101,32,110,97,109, + 101,115,112,97,99,101,10,32,32,32,32,32,32,32,32,112, + 97,99,107,97,103,101,32,112,111,114,116,105,111,110,115,46, + 32,82,101,116,117,114,110,115,32,40,108,111,97,100,101,114, + 44,32,108,105,115,116,45,111,102,45,112,111,114,116,105,111, + 110,115,41,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,102,105, + 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, + 100,46,10,10,32,32,32,32,32,32,32,32,122,101,70,105, + 108,101,70,105,110,100,101,114,46,102,105,110,100,95,108,111, + 97,100,101,114,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, 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, - 101,97,100,46,10,10,32,32,32,32,32,32,32,32,122,101, - 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, - 108,111,97,100,101,114,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,102,105,110,100,95,115,112,101,99,40,41,32,105,110, - 115,116,101,97,100,78,41,6,114,99,0,0,0,114,100,0, - 0,0,114,101,0,0,0,114,225,0,0,0,114,163,0,0, - 0,114,201,0,0,0,41,3,114,143,0,0,0,114,162,0, - 0,0,114,209,0,0,0,115,3,0,0,0,32,32,32,114, - 7,0,0,0,114,160,0,0,0,236,5,0,0,115,14,0, - 0,0,6,7,2,2,4,254,10,3,8,1,8,1,16,1, - 114,9,0,0,0,122,22,70,105,108,101,70,105,110,100,101, - 114,46,102,105,110,100,95,108,111,97,100,101,114,99,6,0, - 0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,0, - 0,0,115,26,0,0,0,124,1,124,2,124,3,131,2,125, - 6,116,0,124,2,124,3,124,6,124,4,100,1,141,4,83, - 0,41,2,78,114,200,0,0,0,41,1,114,212,0,0,0, - 41,7,114,143,0,0,0,114,210,0,0,0,114,162,0,0, - 0,114,65,0,0,0,90,4,115,109,115,108,114,224,0,0, - 0,114,163,0,0,0,115,7,0,0,0,32,32,32,32,32, - 32,32,114,7,0,0,0,114,88,1,0,0,251,5,0,0, - 115,8,0,0,0,10,1,8,1,2,1,6,255,114,9,0, - 0,0,122,20,70,105,108,101,70,105,110,100,101,114,46,95, - 103,101,116,95,115,112,101,99,78,99,3,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,126, - 1,0,0,100,1,125,3,124,1,160,0,100,2,161,1,100, - 3,25,0,125,4,9,0,116,1,124,0,106,2,112,17,116, - 3,106,4,131,0,131,1,106,5,125,5,110,12,35,0,4, - 0,116,6,121,190,1,0,1,0,1,0,100,4,125,5,89, - 0,110,1,37,0,124,5,124,0,106,7,107,3,114,45,124, - 0,160,8,161,0,1,0,124,5,124,0,95,7,116,9,131, - 0,114,56,124,0,106,10,125,6,124,4,160,11,161,0,125, - 7,110,5,124,0,106,12,125,6,124,4,125,7,124,7,124, - 6,118,0,114,108,116,13,124,0,106,2,124,4,131,2,125, - 8,124,0,106,14,68,0,93,29,92,2,125,9,125,10,100, - 5,124,9,23,0,125,11,116,13,124,8,124,11,131,2,125, - 12,116,15,124,12,131,1,114,103,124,0,160,16,124,10,124, - 1,124,12,124,8,103,1,124,2,161,5,2,0,1,0,83, - 0,113,74,116,17,124,8,131,1,125,3,124,0,106,14,68, - 0,93,55,92,2,125,9,125,10,9,0,116,13,124,0,106, - 2,124,4,124,9,23,0,131,2,125,12,110,12,35,0,4, - 0,116,18,121,189,1,0,1,0,1,0,89,0,1,0,100, - 6,83,0,37,0,116,19,160,20,100,7,124,12,100,3,100, - 8,166,3,1,0,124,7,124,9,23,0,124,6,118,0,114, - 166,116,15,124,12,131,1,114,166,124,0,160,16,124,10,124, - 1,124,12,100,6,124,2,161,5,2,0,1,0,83,0,113, - 111,124,3,114,187,116,19,160,20,100,9,124,8,161,2,1, - 0,116,19,160,21,124,1,100,6,161,2,125,13,124,8,103, - 1,124,13,95,22,124,13,83,0,100,6,83,0,119,0,119, - 0,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,97,0,0,0,114,45,0,0,0,114, - 130,0,0,0,114,235,0,0,0,78,122,9,116,114,121,105, - 110,103,32,123,125,41,1,90,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, - 104,0,0,0,114,75,0,0,0,114,65,0,0,0,114,19, - 0,0,0,114,82,0,0,0,114,33,1,0,0,114,76,0, - 0,0,114,93,1,0,0,218,11,95,102,105,108,108,95,99, - 97,99,104,101,114,22,0,0,0,114,96,1,0,0,114,131, - 0,0,0,114,95,1,0,0,114,67,0,0,0,114,92,1, - 0,0,114,80,0,0,0,114,88,1,0,0,114,83,0,0, - 0,114,111,0,0,0,114,158,0,0,0,114,172,0,0,0, - 114,206,0,0,0,114,201,0,0,0,41,14,114,143,0,0, - 0,114,162,0,0,0,114,224,0,0,0,90,12,105,115,95, - 110,97,109,101,115,112,97,99,101,90,11,116,97,105,108,95, - 109,111,100,117,108,101,114,192,0,0,0,90,5,99,97,99, - 104,101,90,12,99,97,99,104,101,95,109,111,100,117,108,101, - 90,9,98,97,115,101,95,112,97,116,104,114,41,1,0,0, - 114,210,0,0,0,90,13,105,110,105,116,95,102,105,108,101, - 110,97,109,101,90,9,102,117,108,108,95,112,97,116,104,114, - 209,0,0,0,115,14,0,0,0,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,114,7,0,0,0,114,225,0,0, - 0,0,6,0,0,115,94,0,0,0,4,5,14,1,2,1, - 22,1,2,128,12,1,8,1,2,128,10,1,8,1,6,1, - 6,2,6,1,10,1,6,2,4,1,8,2,12,1,14,1, - 8,1,10,1,8,1,24,1,2,255,8,5,14,2,2,1, - 18,1,2,128,12,1,8,1,2,128,16,1,12,1,8,1, - 10,1,4,1,8,255,2,128,4,2,12,1,12,1,8,1, - 4,1,4,1,2,244,2,228,115,31,0,0,0,138,10,21, - 0,149,9,32,7,193,52,8,65,61,2,193,61,7,66,8, - 9,194,61,1,66,8,9,194,62,1,32,7,122,20,70,105, - 108,101,70,105,110,100,101,114,46,102,105,110,100,95,115,112, - 101,99,99,1,0,0,0,0,0,0,0,0,0,0,0,10, - 0,0,0,3,0,0,0,115,194,0,0,0,124,0,106,0, - 125,1,9,0,116,1,106,2,124,1,112,11,116,1,106,3, - 131,0,131,1,125,2,110,15,35,0,4,0,116,4,116,5, - 116,6,102,3,121,96,1,0,1,0,1,0,103,0,125,2, - 89,0,110,1,37,0,116,7,106,8,160,9,100,1,161,1, - 115,41,116,10,124,2,131,1,124,0,95,11,110,37,116,10, - 131,0,125,3,124,2,68,0,93,28,125,4,124,4,160,12, - 100,2,161,1,92,3,125,5,125,6,125,7,124,6,114,67, - 100,3,160,13,124,5,124,7,160,14,161,0,161,2,125,8, - 110,2,124,5,125,8,124,3,160,15,124,8,161,1,1,0, - 113,46,124,3,124,0,95,11,116,7,106,8,160,9,116,16, - 161,1,114,94,100,4,100,5,132,0,124,2,68,0,131,1, - 124,0,95,17,100,6,83,0,100,6,83,0,119,0,41,7, - 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,15,0,0,0,114,97,0,0,0, - 114,88,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,19,0,0,0,115,20,0,0,0,104, - 0,124,0,93,6,125,1,124,1,160,0,161,0,146,2,113, - 2,83,0,114,12,0,0,0,41,1,114,131,0,0,0,41, - 2,114,5,0,0,0,90,2,102,110,115,2,0,0,0,32, - 32,114,7,0,0,0,114,14,0,0,0,80,6,0,0,115, - 2,0,0,0,20,0,114,9,0,0,0,122,41,70,105,108, - 101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97, - 99,104,101,46,60,108,111,99,97,108,115,62,46,60,115,101, - 116,99,111,109,112,62,78,41,18,114,65,0,0,0,114,19, - 0,0,0,90,7,108,105,115,116,100,105,114,114,82,0,0, - 0,114,82,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,16,0,0,0, - 114,26,0,0,0,114,27,0,0,0,114,94,1,0,0,114, - 95,1,0,0,114,126,0,0,0,114,89,0,0,0,114,131, - 0,0,0,218,3,97,100,100,114,28,0,0,0,114,96,1, - 0,0,41,9,114,143,0,0,0,114,65,0,0,0,90,8, - 99,111,110,116,101,110,116,115,90,21,108,111,119,101,114,95, - 115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,114, - 67,1,0,0,114,141,0,0,0,114,51,1,0,0,114,41, - 1,0,0,90,8,110,101,119,95,110,97,109,101,115,9,0, - 0,0,32,32,32,32,32,32,32,32,32,114,7,0,0,0, - 114,98,1,0,0,51,6,0,0,115,42,0,0,0,6,2, - 2,1,20,1,2,128,18,1,8,3,2,128,12,3,12,1, - 6,7,8,1,16,1,4,1,18,1,4,2,12,1,6,1, - 12,1,20,1,4,255,2,233,115,13,0,0,0,132,9,14, + 101,97,100,78,41,6,114,104,0,0,0,114,105,0,0,0, + 114,106,0,0,0,114,233,0,0,0,114,168,0,0,0,114, + 209,0,0,0,41,3,114,148,0,0,0,114,167,0,0,0, + 114,217,0,0,0,115,3,0,0,0,32,32,32,114,7,0, + 0,0,114,165,0,0,0,237,5,0,0,115,14,0,0,0, + 6,7,2,2,4,254,10,3,8,1,8,1,16,1,115,14, + 0,0,0,4,7,2,1,6,1,10,1,6,1,10,1,16, + 1,115,54,0,0,0,9,18,9,23,24,84,24,42,9,43, + 9,43,16,20,16,40,31,39,16,40,9,13,12,16,20,24, + 12,24,9,28,20,24,26,28,20,28,13,28,16,20,16,27, + 29,33,29,60,29,66,64,66,16,66,9,66,114,10,0,0, + 0,122,22,70,105,108,101,70,105,110,100,101,114,46,102,105, + 110,100,95,108,111,97,100,101,114,99,6,0,0,0,0,0, + 0,0,0,0,0,0,6,0,0,0,3,0,0,0,115,26, + 0,0,0,124,1,124,2,124,3,131,2,125,6,116,0,124, + 2,124,3,124,6,124,4,100,1,141,4,83,0,41,2,78, + 114,208,0,0,0,41,1,114,220,0,0,0,41,7,114,148, + 0,0,0,114,218,0,0,0,114,167,0,0,0,114,68,0, + 0,0,90,4,115,109,115,108,114,232,0,0,0,114,168,0, + 0,0,115,7,0,0,0,32,32,32,32,32,32,32,114,7, + 0,0,0,114,114,1,0,0,252,5,0,0,115,8,0,0, + 0,10,1,8,1,2,1,6,255,115,6,0,0,0,10,1, + 8,1,8,1,115,26,0,0,0,18,30,31,39,41,45,18, + 46,9,15,16,39,40,48,50,54,63,69,67,71,16,72,16, + 72,9,72,114,10,0,0,0,122,20,70,105,108,101,70,105, + 110,100,101,114,46,95,103,101,116,95,115,112,101,99,78,99, + 3,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 3,0,0,0,115,126,1,0,0,100,1,125,3,124,1,160, + 0,100,2,161,1,100,3,25,0,125,4,9,0,116,1,124, + 0,106,2,112,17,116,3,106,4,131,0,131,1,106,5,125, + 5,110,12,35,0,4,0,116,6,121,190,1,0,1,0,1, + 0,100,4,125,5,89,0,110,1,37,0,124,5,124,0,106, + 7,107,3,114,45,124,0,160,8,161,0,1,0,124,5,124, + 0,95,7,116,9,131,0,114,56,124,0,106,10,125,6,124, + 4,160,11,161,0,125,7,110,5,124,0,106,12,125,6,124, + 4,125,7,124,7,124,6,118,0,114,108,116,13,124,0,106, + 2,124,4,131,2,125,8,124,0,106,14,68,0,93,29,92, + 2,125,9,125,10,100,5,124,9,23,0,125,11,116,13,124, + 8,124,11,131,2,125,12,116,15,124,12,131,1,114,103,124, + 0,160,16,124,10,124,1,124,12,124,8,103,1,124,2,161, + 5,2,0,1,0,83,0,113,74,116,17,124,8,131,1,125, + 3,124,0,106,14,68,0,93,55,92,2,125,9,125,10,9, + 0,116,13,124,0,106,2,124,4,124,9,23,0,131,2,125, + 12,110,12,35,0,4,0,116,18,121,189,1,0,1,0,1, + 0,89,0,1,0,100,6,83,0,37,0,116,19,160,20,100, + 7,124,12,100,3,100,8,166,3,1,0,124,7,124,9,23, + 0,124,6,118,0,114,166,116,15,124,12,131,1,114,166,124, + 0,160,16,124,10,124,1,124,12,100,6,124,2,161,5,2, + 0,1,0,83,0,113,111,124,3,114,187,116,19,160,20,100, + 9,124,8,161,2,1,0,116,19,160,21,124,1,100,6,161, + 2,125,13,124,8,103,1,124,13,95,22,124,13,83,0,100, + 6,83,0,119,0,119,0,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,102,0,0,0, + 114,47,0,0,0,114,135,0,0,0,114,243,0,0,0,78, + 122,9,116,114,121,105,110,103,32,123,125,41,1,90,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,109,0,0,0,114,79,0,0,0,114, + 68,0,0,0,114,21,0,0,0,114,87,0,0,0,114,51, + 1,0,0,114,81,0,0,0,114,121,1,0,0,218,11,95, + 102,105,108,108,95,99,97,99,104,101,114,24,0,0,0,114, + 124,1,0,0,114,136,0,0,0,114,123,1,0,0,114,70, + 0,0,0,114,120,1,0,0,114,85,0,0,0,114,114,1, + 0,0,114,88,0,0,0,114,116,0,0,0,114,163,0,0, + 0,114,177,0,0,0,114,214,0,0,0,114,209,0,0,0, + 41,14,114,148,0,0,0,114,167,0,0,0,114,232,0,0, + 0,90,12,105,115,95,110,97,109,101,115,112,97,99,101,90, + 11,116,97,105,108,95,109,111,100,117,108,101,114,197,0,0, + 0,90,5,99,97,99,104,101,90,12,99,97,99,104,101,95, + 109,111,100,117,108,101,90,9,98,97,115,101,95,112,97,116, + 104,114,62,1,0,0,114,218,0,0,0,90,13,105,110,105, + 116,95,102,105,108,101,110,97,109,101,90,9,102,117,108,108, + 95,112,97,116,104,114,217,0,0,0,115,14,0,0,0,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,114,7,0, + 0,0,114,233,0,0,0,1,6,0,0,115,94,0,0,0, + 4,5,14,1,2,1,22,1,2,128,12,1,8,1,2,128, + 10,1,8,1,6,1,6,2,6,1,10,1,6,2,4,1, + 8,2,12,1,14,1,8,1,10,1,8,1,24,1,2,255, + 8,5,14,2,2,1,18,1,2,128,12,1,8,1,2,128, + 16,1,12,1,8,1,10,1,4,1,8,255,2,128,4,2, + 12,1,12,1,8,1,4,1,4,1,2,244,2,228,115,118, + 0,0,0,4,5,14,1,2,4,22,254,2,128,2,2,2, + 255,16,1,2,128,8,1,2,2,8,255,6,1,4,2,2, + 5,6,252,10,1,6,2,4,1,6,2,2,10,12,247,4, + 1,4,8,6,248,8,1,10,1,6,1,28,1,8,4,4, + 2,4,9,6,247,2,4,18,254,2,128,2,2,2,255,16, + 1,2,128,16,1,10,1,2,3,6,254,2,2,2,255,2, + 1,6,255,12,1,2,128,2,1,2,4,12,253,12,1,8, + 1,4,1,4,1,2,245,2,228,115,126,1,0,0,24,29, + 9,21,23,31,23,47,43,46,23,47,48,49,23,50,9,20, + 9,23,21,31,32,36,32,41,32,57,45,48,45,55,45,57, + 21,58,21,67,13,18,13,18,0,0,9,23,16,23,9,23, + 9,23,9,23,9,23,21,23,13,18,13,18,13,18,0,0, + 12,17,21,25,21,37,12,37,9,37,13,17,13,31,13,31, + 13,31,32,37,13,17,13,29,12,23,12,25,9,39,21,25, + 21,45,13,18,28,39,28,47,28,47,13,25,13,25,21,25, + 21,37,13,18,28,39,13,25,12,24,28,33,12,33,9,54, + 25,35,36,40,36,45,47,58,25,59,13,22,41,45,41,54, + 13,54,13,54,17,37,17,23,25,37,33,43,46,52,33,52, + 17,30,29,39,40,49,51,64,29,65,17,26,20,32,33,42, + 20,43,17,98,28,32,28,98,43,55,57,65,67,76,79,88, + 78,89,91,97,28,98,21,98,21,98,21,98,17,98,32,43, + 44,53,32,54,17,29,37,41,37,50,9,56,9,56,13,33, + 13,19,21,33,13,28,29,39,40,44,40,49,51,62,65,71, + 51,71,29,72,17,26,17,26,0,0,13,28,20,30,13,28, + 13,28,13,28,13,28,24,28,24,28,24,28,24,28,0,0, + 13,23,13,77,41,52,54,63,75,76,13,77,13,77,13,77, + 16,28,31,37,16,37,41,46,16,46,13,56,20,32,33,42, + 20,43,17,56,28,32,28,56,43,55,57,65,67,76,43,47, + 49,55,28,56,21,56,21,56,21,56,0,0,12,24,9,24, + 13,23,13,80,41,68,70,79,13,80,13,80,20,30,20,57, + 42,50,52,56,20,57,13,17,48,57,47,58,13,17,13,44, + 20,24,13,24,16,20,16,20,13,28,9,23,115,31,0,0, + 0,138,10,21,0,149,9,32,7,193,52,8,65,61,2,193, + 61,7,66,8,9,194,61,1,66,8,9,194,62,1,32,7, + 122,20,70,105,108,101,70,105,110,100,101,114,46,102,105,110, + 100,95,115,112,101,99,99,1,0,0,0,0,0,0,0,0, + 0,0,0,10,0,0,0,3,0,0,0,115,194,0,0,0, + 124,0,106,0,125,1,9,0,116,1,106,2,124,1,112,11, + 116,1,106,3,131,0,131,1,125,2,110,15,35,0,4,0, + 116,4,116,5,116,6,102,3,121,96,1,0,1,0,1,0, + 103,0,125,2,89,0,110,1,37,0,116,7,106,8,160,9, + 100,1,161,1,115,41,116,10,124,2,131,1,124,0,95,11, + 110,37,116,10,131,0,125,3,124,2,68,0,93,28,125,4, + 124,4,160,12,100,2,161,1,92,3,125,5,125,6,125,7, + 124,6,114,67,100,3,160,13,124,5,124,7,160,14,161,0, + 161,2,125,8,110,2,124,5,125,8,124,3,160,15,124,8, + 161,1,1,0,113,46,124,3,124,0,95,11,116,7,106,8, + 160,9,116,16,161,1,114,94,100,4,100,5,132,0,124,2, + 68,0,131,1,124,0,95,17,100,6,83,0,100,6,83,0, + 119,0,41,7,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,17,0,0,0,114, + 102,0,0,0,114,93,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,19,0,0,0,115,20, + 0,0,0,104,0,124,0,93,6,125,1,124,1,160,0,161, + 0,146,2,113,2,83,0,114,13,0,0,0,41,1,114,136, + 0,0,0,41,2,114,5,0,0,0,90,2,102,110,115,2, + 0,0,0,32,32,114,7,0,0,0,114,15,0,0,0,81, + 6,0,0,243,2,0,0,0,20,0,114,127,1,0,0,115, + 20,0,0,0,40,71,40,71,40,71,56,58,41,43,41,51, + 41,51,40,71,40,71,40,71,114,10,0,0,0,122,41,70, + 105,108,101,70,105,110,100,101,114,46,95,102,105,108,108,95, + 99,97,99,104,101,46,60,108,111,99,97,108,115,62,46,60, + 115,101,116,99,111,109,112,62,78,41,18,114,68,0,0,0, + 114,21,0,0,0,90,7,108,105,115,116,100,105,114,114,87, + 0,0,0,114,108,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,18,0, + 0,0,114,28,0,0,0,114,29,0,0,0,114,122,1,0, + 0,114,123,1,0,0,114,131,0,0,0,114,94,0,0,0, + 114,136,0,0,0,218,3,97,100,100,114,30,0,0,0,114, + 124,1,0,0,41,9,114,148,0,0,0,114,68,0,0,0, + 90,8,99,111,110,116,101,110,116,115,90,21,108,111,119,101, + 114,95,115,117,102,102,105,120,95,99,111,110,116,101,110,116, + 115,114,91,1,0,0,114,146,0,0,0,114,73,1,0,0, + 114,62,1,0,0,90,8,110,101,119,95,110,97,109,101,115, + 9,0,0,0,32,32,32,32,32,32,32,32,32,114,7,0, + 0,0,114,126,1,0,0,52,6,0,0,115,42,0,0,0, + 6,2,2,1,20,1,2,128,18,1,8,3,2,128,12,3, + 12,1,6,7,8,1,16,1,4,1,18,1,4,2,12,1, + 6,1,12,1,20,1,4,255,2,233,115,50,0,0,0,6, + 2,2,6,20,252,2,128,2,4,8,253,16,3,2,128,10, + 3,2,16,12,241,6,7,2,1,4,6,2,250,16,1,2, + 1,2,3,18,254,4,2,12,1,6,1,10,1,26,1,2, + 235,115,194,0,0,0,16,20,16,25,9,13,9,26,24,27, + 24,35,36,40,36,56,44,47,44,54,44,56,24,57,13,21, + 13,21,0,0,9,26,17,34,36,51,53,71,16,72,9,26, + 9,26,9,26,9,26,24,26,13,21,13,21,13,21,0,0, + 16,19,16,28,16,46,40,45,16,46,9,53,32,35,36,44, + 32,45,13,17,13,29,13,29,37,40,37,42,13,34,25,33, + 13,52,13,52,17,21,37,41,37,56,52,55,37,56,17,34, + 17,21,23,26,28,34,20,23,17,36,32,39,32,68,47,51, + 53,59,53,67,53,67,32,68,21,29,21,29,32,36,21,29, + 17,38,17,52,43,51,17,52,17,52,17,52,32,53,13,17, + 13,29,12,15,12,24,12,64,36,63,12,64,9,71,40,71, + 40,71,40,71,62,70,40,71,40,71,13,17,13,37,13,37, + 13,37,9,71,9,71,9,26,115,13,0,0,0,132,9,14, 0,142,12,28,7,193,32,1,28,7,122,22,70,105,108,101, 70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,99, 104,101,99,1,0,0,0,0,0,0,0,0,0,0,0,3, @@ -2657,153 +3376,256 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,74,0,0, - 0,78,41,2,114,83,0,0,0,114,142,0,0,0,41,3, - 114,65,0,0,0,114,220,0,0,0,114,97,1,0,0,115, + 114,101,32,115,117,112,112,111,114,116,101,100,114,78,0,0, + 0,78,41,2,114,88,0,0,0,114,147,0,0,0,41,3, + 114,68,0,0,0,114,228,0,0,0,114,125,1,0,0,115, 3,0,0,0,32,128,128,114,7,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,92,6,0,0,115,6,0,0,0,8, - 2,12,1,16,1,114,9,0,0,0,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,78,114,12,0,0,0,41,3,114,220,0,0,0,114, - 97,1,0,0,114,102,1,0,0,115,3,0,0,0,96,96, - 32,114,7,0,0,0,218,9,112,97,116,104,95,104,111,111, - 107,82,6,0,0,115,6,0,0,0,4,128,14,10,4,6, - 114,9,0,0,0,122,20,70,105,108,101,70,105,110,100,101, - 114,46,112,97,116,104,95,104,111,111,107,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 114,64,1,0,0,41,2,78,122,16,70,105,108,101,70,105, - 110,100,101,114,40,123,33,114,125,41,41,2,114,89,0,0, - 0,114,65,0,0,0,114,20,1,0,0,115,1,0,0,0, - 32,114,7,0,0,0,114,65,1,0,0,100,6,0,0,114, - 58,1,0,0,114,9,0,0,0,122,19,70,105,108,101,70, - 105,110,100,101,114,46,95,95,114,101,112,114,95,95,114,69, - 0,0,0,41,15,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,151,0,0,0,114,235,0,0,0,114,75, - 1,0,0,114,166,0,0,0,114,228,0,0,0,114,160,0, - 0,0,114,88,1,0,0,114,225,0,0,0,114,98,1,0, - 0,114,233,0,0,0,114,103,1,0,0,114,65,1,0,0, - 114,12,0,0,0,114,9,0,0,0,114,7,0,0,0,114, - 91,1,0,0,205,5,0,0,115,24,0,0,0,8,0,4, + 70,105,110,100,101,114,93,6,0,0,115,6,0,0,0,8, + 2,12,1,16,1,115,6,0,0,0,6,2,14,1,16,1, + 115,36,0,0,0,20,31,32,36,20,37,13,79,23,34,35, + 67,74,78,23,79,23,79,17,79,20,23,24,28,20,46,31, + 45,20,46,20,46,20,46,13,46,114,10,0,0,0,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,78,114,13,0,0,0,41,3,114,228, + 0,0,0,114,125,1,0,0,114,131,1,0,0,115,3,0, + 0,0,96,96,32,114,7,0,0,0,218,9,112,97,116,104, + 95,104,111,111,107,83,6,0,0,115,6,0,0,0,4,128, + 14,10,4,6,115,6,0,0,0,4,128,14,14,4,2,115, + 22,0,0,0,0,0,0,0,9,46,9,46,9,46,9,46, + 9,46,9,46,9,46,16,40,9,40,114,10,0,0,0,122, + 20,70,105,108,101,70,105,110,100,101,114,46,112,97,116,104, + 95,104,111,111,107,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,114,88,1,0,0,41, + 2,78,122,16,70,105,108,101,70,105,110,100,101,114,40,123, + 33,114,125,41,41,2,114,94,0,0,0,114,68,0,0,0, + 114,36,1,0,0,115,1,0,0,0,32,114,7,0,0,0, + 114,89,1,0,0,101,6,0,0,114,81,1,0,0,114,81, + 1,0,0,115,12,0,0,0,16,34,16,52,42,46,42,51, + 16,52,9,52,114,10,0,0,0,122,19,70,105,108,101,70, + 105,110,100,101,114,46,95,95,114,101,112,114,95,95,114,72, + 0,0,0,41,15,114,154,0,0,0,114,153,0,0,0,114, + 155,0,0,0,114,156,0,0,0,114,243,0,0,0,114,101, + 1,0,0,114,171,0,0,0,114,236,0,0,0,114,165,0, + 0,0,114,114,1,0,0,114,233,0,0,0,114,126,1,0, + 0,114,241,0,0,0,114,132,1,0,0,114,89,1,0,0, + 114,13,0,0,0,114,10,0,0,0,114,7,0,0,0,114, + 118,1,0,0,206,5,0,0,115,24,0,0,0,8,0,4, 2,8,7,8,16,4,4,8,2,8,15,10,5,8,51,2, - 31,10,1,12,17,114,9,0,0,0,114,91,1,0,0,99, - 4,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 3,0,0,0,115,146,0,0,0,124,0,160,0,100,1,161, - 1,125,4,124,0,160,0,100,2,161,1,125,5,124,4,115, - 33,124,5,114,18,124,5,106,1,125,4,110,15,124,2,124, - 3,107,2,114,28,116,2,124,1,124,2,131,2,125,4,110, - 5,116,3,124,1,124,2,131,2,125,4,124,5,115,42,116, - 4,124,1,124,2,124,4,100,3,141,3,125,5,9,0,124, - 5,124,0,100,2,60,0,124,4,124,0,100,1,60,0,124, - 2,124,0,100,4,60,0,124,3,124,0,100,5,60,0,100, - 0,83,0,35,0,4,0,116,5,121,72,1,0,1,0,1, - 0,89,0,100,0,83,0,37,0,119,0,41,6,78,218,10, - 95,95,108,111,97,100,101,114,95,95,218,8,95,95,115,112, - 101,99,95,95,41,1,114,163,0,0,0,90,8,95,95,102, - 105,108,101,95,95,90,10,95,95,99,97,99,104,101,100,95, - 95,41,6,218,3,103,101,116,114,163,0,0,0,114,39,1, - 0,0,114,32,1,0,0,114,212,0,0,0,218,9,69,120, - 99,101,112,116,105,111,110,41,6,90,2,110,115,114,141,0, - 0,0,90,8,112,97,116,104,110,97,109,101,90,9,99,112, - 97,116,104,110,97,109,101,114,163,0,0,0,114,209,0,0, - 0,115,6,0,0,0,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,106,6,0,0,115,40,0,0,0,10,2,10,1,4,1, - 4,1,8,1,8,1,12,1,10,2,4,1,14,1,2,1, - 8,1,8,1,8,1,12,1,2,128,12,1,6,2,2,128, - 2,254,115,15,0,0,0,171,16,61,0,189,7,65,7,7, - 193,8,1,65,7,7,114,108,1,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 115,38,0,0,0,116,0,116,1,106,2,131,0,102,2,125, - 0,116,3,116,4,102,2,125,1,116,5,116,6,102,2,125, - 2,124,0,124,1,124,2,103,3,83,0,41,2,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,78,41, - 7,114,28,1,0,0,114,186,0,0,0,218,18,101,120,116, - 101,110,115,105,111,110,95,115,117,102,102,105,120,101,115,114, - 32,1,0,0,114,127,0,0,0,114,39,1,0,0,114,113, - 0,0,0,41,3,90,10,101,120,116,101,110,115,105,111,110, - 115,90,6,115,111,117,114,99,101,90,8,98,121,116,101,99, - 111,100,101,115,3,0,0,0,32,32,32,114,7,0,0,0, - 114,207,0,0,0,129,6,0,0,115,8,0,0,0,12,5, - 8,1,8,1,10,1,114,9,0,0,0,114,207,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,115,8,0,0,0,124,0,97,0,100,0, - 83,0,114,69,0,0,0,41,1,114,158,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,7,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,140,6,0,0,115,2,0,0,0,8,2, - 114,9,0,0,0,114,111,1,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,115, - 50,0,0,0,116,0,124,0,131,1,1,0,116,1,131,0, - 125,1,116,2,106,3,160,4,116,5,106,6,124,1,142,0, - 103,1,161,1,1,0,116,2,106,7,160,8,116,9,161,1, - 1,0,100,1,83,0,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,111,1,0,0,114,207,0,0,0, - 114,16,0,0,0,114,80,1,0,0,114,190,0,0,0,114, - 91,1,0,0,114,103,1,0,0,218,9,109,101,116,97,95, - 112,97,116,104,114,61,0,0,0,114,74,1,0,0,41,2, - 114,110,1,0,0,90,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, - 7,0,0,0,218,8,95,105,110,115,116,97,108,108,145,6, - 0,0,115,8,0,0,0,8,2,6,1,20,1,16,1,114, - 9,0,0,0,114,113,1,0,0,41,1,114,87,0,0,0, - 114,69,0,0,0,41,3,78,78,78,41,2,114,0,0,0, - 0,114,0,0,0,0,41,1,84,41,85,114,151,0,0,0, - 114,158,0,0,0,114,186,0,0,0,114,91,0,0,0,114, - 16,0,0,0,114,99,0,0,0,114,183,0,0,0,114,26, - 0,0,0,114,230,0,0,0,90,2,110,116,114,19,0,0, - 0,114,214,0,0,0,90,5,112,111,115,105,120,114,51,0, - 0,0,218,3,97,108,108,114,59,0,0,0,114,136,0,0, - 0,114,57,0,0,0,114,62,0,0,0,90,20,95,112,97, - 116,104,115,101,112,115,95,119,105,116,104,95,99,111,108,111, - 110,114,29,0,0,0,90,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,28,0, - 0,0,114,30,0,0,0,114,22,0,0,0,114,37,0,0, - 0,114,43,0,0,0,114,46,0,0,0,114,67,0,0,0, - 114,73,0,0,0,114,75,0,0,0,114,79,0,0,0,114, - 80,0,0,0,114,83,0,0,0,114,86,0,0,0,114,95, - 0,0,0,218,4,116,121,112,101,218,8,95,95,99,111,100, - 101,95,95,114,185,0,0,0,114,35,0,0,0,114,171,0, - 0,0,114,34,0,0,0,114,40,0,0,0,114,7,1,0, - 0,114,116,0,0,0,114,112,0,0,0,114,127,0,0,0, - 114,61,0,0,0,114,109,1,0,0,114,231,0,0,0,114, - 113,0,0,0,90,23,68,69,66,85,71,95,66,89,84,69, - 67,79,68,69,95,83,85,70,70,73,88,69,83,90,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,121,0,0,0,114, - 128,0,0,0,114,135,0,0,0,114,137,0,0,0,114,139, - 0,0,0,114,159,0,0,0,114,166,0,0,0,114,175,0, - 0,0,114,179,0,0,0,114,181,0,0,0,114,188,0,0, - 0,114,193,0,0,0,114,194,0,0,0,114,199,0,0,0, - 218,6,111,98,106,101,99,116,114,208,0,0,0,114,212,0, - 0,0,114,213,0,0,0,114,234,0,0,0,114,248,0,0, - 0,114,10,1,0,0,114,32,1,0,0,114,39,1,0,0, - 114,28,1,0,0,114,44,1,0,0,114,70,1,0,0,114, - 74,1,0,0,114,91,1,0,0,114,108,1,0,0,114,207, - 0,0,0,114,111,1,0,0,114,113,1,0,0,114,12,0, - 0,0,114,9,0,0,0,114,7,0,0,0,218,8,60,109, - 111,100,117,108,101,62,1,0,0,0,115,180,0,0,0,4, - 0,4,22,8,3,8,1,8,1,8,1,8,1,10,3,4, - 1,8,1,10,1,8,2,4,3,10,1,6,2,22,2,8, - 1,8,1,10,1,14,1,4,4,4,1,2,1,2,1,4, - 255,8,4,6,16,8,3,8,5,8,5,4,6,10,1,8, - 30,8,6,8,8,8,10,8,9,8,5,4,7,10,1,8, - 8,10,5,10,22,0,127,16,39,12,1,4,2,4,1,6, - 2,4,1,10,1,8,2,6,2,8,2,16,2,8,71,8, - 40,8,19,8,12,8,12,8,31,8,20,8,33,8,28,10, - 24,10,13,10,10,8,11,6,14,4,3,2,1,12,255,14, - 73,14,67,16,30,0,127,14,17,18,50,18,45,18,25,14, - 53,14,63,14,49,0,127,14,29,0,127,10,30,8,23,8, - 11,12,5,114,9,0,0,0, + 31,10,1,12,17,115,116,0,0,0,0,129,0,129,0,129, + 0,129,0,129,0,129,0,129,0,129,0,129,0,129,0,129, + 8,167,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 0,127,0,127,0,127,0,127,2,96,0,129,0,129,0,129, + 0,129,0,129,0,129,0,129,0,129,0,129,0,129,0,129, + 2,160,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 0,127,0,127,0,127,0,127,8,112,8,4,4,2,8,15, + 8,5,2,2,8,49,8,31,2,2,10,16,12,3,115,90, + 0,0,0,1,1,1,1,1,1,1,1,5,8,1,1,5, + 41,5,41,5,41,5,41,5,30,5,30,5,30,5,30,19, + 36,5,16,5,66,5,66,5,66,5,66,5,72,5,72,5, + 72,5,72,42,46,5,20,5,20,5,20,5,20,5,71,5, + 71,5,71,5,71,6,17,5,40,5,40,5,40,5,40,5, + 40,5,52,5,52,5,52,5,52,5,52,5,52,114,10,0, + 0,0,114,118,1,0,0,99,4,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,3,0,0,0,115,146,0,0, + 0,124,0,160,0,100,1,161,1,125,4,124,0,160,0,100, + 2,161,1,125,5,124,4,115,33,124,5,114,18,124,5,106, + 1,125,4,110,15,124,2,124,3,107,2,114,28,116,2,124, + 1,124,2,131,2,125,4,110,5,116,3,124,1,124,2,131, + 2,125,4,124,5,115,42,116,4,124,1,124,2,124,4,100, + 3,141,3,125,5,9,0,124,5,124,0,100,2,60,0,124, + 4,124,0,100,1,60,0,124,2,124,0,100,4,60,0,124, + 3,124,0,100,5,60,0,100,0,83,0,35,0,4,0,116, + 5,121,72,1,0,1,0,1,0,89,0,100,0,83,0,37, + 0,119,0,41,6,78,218,10,95,95,108,111,97,100,101,114, + 95,95,218,8,95,95,115,112,101,99,95,95,41,1,114,168, + 0,0,0,90,8,95,95,102,105,108,101,95,95,90,10,95, + 95,99,97,99,104,101,100,95,95,41,6,218,3,103,101,116, + 114,168,0,0,0,114,59,1,0,0,114,50,1,0,0,114, + 220,0,0,0,218,9,69,120,99,101,112,116,105,111,110,41, + 6,90,2,110,115,114,146,0,0,0,90,8,112,97,116,104, + 110,97,109,101,90,9,99,112,97,116,104,110,97,109,101,114, + 168,0,0,0,114,217,0,0,0,115,6,0,0,0,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,107,6,0,0,115,40,0, + 0,0,10,2,10,1,4,1,4,1,8,1,8,1,12,1, + 10,2,4,1,14,1,2,1,8,1,8,1,8,1,12,1, + 2,128,12,1,6,2,2,128,2,254,115,48,0,0,0,10, + 2,10,1,2,1,2,6,2,251,2,5,8,252,6,1,2, + 3,12,254,10,2,2,1,16,1,2,8,8,250,8,1,8, + 1,12,1,2,128,2,3,2,254,14,2,2,128,2,0,115, + 146,0,0,0,14,16,14,34,21,33,14,34,5,11,12,14, + 12,30,19,29,12,30,5,9,12,18,5,54,12,16,9,54, + 22,26,22,33,13,19,13,19,14,22,26,35,14,35,9,54, + 22,42,43,47,49,57,22,58,13,19,13,19,22,38,39,43, + 45,53,22,54,13,19,12,16,5,70,16,39,40,44,46,54, + 63,69,16,70,16,70,9,13,5,13,26,30,9,11,12,22, + 9,23,28,34,9,11,12,24,9,25,26,34,9,11,12,22, + 9,23,28,37,9,11,12,24,9,25,9,25,9,25,0,0, + 5,13,12,21,5,13,5,13,5,13,5,13,9,13,9,13, + 9,13,0,0,5,13,115,15,0,0,0,171,16,61,0,189, + 7,65,7,7,193,8,1,65,7,7,114,137,1,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,115,38,0,0,0,116,0,116,1,106,2,131, + 0,102,2,125,0,116,3,116,4,102,2,125,1,116,5,116, + 6,102,2,125,2,124,0,124,1,124,2,103,3,83,0,41, + 2,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,78,41,7,114,45,1,0,0,114,191,0,0,0,218, + 18,101,120,116,101,110,115,105,111,110,95,115,117,102,102,105, + 120,101,115,114,50,1,0,0,114,132,0,0,0,114,59,1, + 0,0,114,118,0,0,0,41,3,90,10,101,120,116,101,110, + 115,105,111,110,115,90,6,115,111,117,114,99,101,90,8,98, + 121,116,101,99,111,100,101,115,3,0,0,0,32,32,32,114, + 7,0,0,0,114,215,0,0,0,130,6,0,0,243,8,0, + 0,0,12,5,8,1,8,1,10,1,114,139,1,0,0,115, + 38,0,0,0,18,37,39,43,39,62,39,64,18,64,5,15, + 14,30,32,47,14,47,5,11,16,36,38,55,16,55,5,13, + 13,23,25,31,33,41,12,42,5,42,114,10,0,0,0,114, + 215,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,115,8,0,0,0,124,0, + 97,0,100,0,83,0,114,72,0,0,0,41,1,114,163,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,7,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,141,6,0,0,243,2,0, + 0,0,8,2,114,142,1,0,0,115,8,0,0,0,18,35, + 5,15,5,15,5,15,114,10,0,0,0,114,141,1,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,3,0,0,0,115,50,0,0,0,116,0,124,0,131,1, + 1,0,116,1,131,0,125,1,116,2,106,3,160,4,116,5, + 106,6,124,1,142,0,103,1,161,1,1,0,116,2,106,7, + 160,8,116,9,161,1,1,0,100,1,83,0,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,141,1,0, + 0,114,215,0,0,0,114,18,0,0,0,114,106,1,0,0, + 114,195,0,0,0,114,118,1,0,0,114,132,1,0,0,218, + 9,109,101,116,97,95,112,97,116,104,114,64,0,0,0,114, + 100,1,0,0,41,2,114,140,1,0,0,90,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,7,0,0,0,218,8,95,105,110,115, + 116,97,108,108,146,6,0,0,243,8,0,0,0,8,2,6, + 1,20,1,16,1,114,145,1,0,0,115,50,0,0,0,5, + 26,27,44,5,45,5,45,25,52,25,54,5,22,5,8,5, + 19,5,70,28,38,28,48,50,67,28,68,27,69,5,70,5, + 70,5,8,5,18,5,37,26,36,5,37,5,37,5,37,5, + 37,114,10,0,0,0,114,144,1,0,0,41,1,114,92,0, + 0,0,114,72,0,0,0,41,3,78,78,78,41,2,114,0, + 0,0,0,114,0,0,0,0,41,1,84,41,85,114,156,0, + 0,0,114,163,0,0,0,114,191,0,0,0,114,96,0,0, + 0,114,18,0,0,0,114,104,0,0,0,114,188,0,0,0, + 114,28,0,0,0,114,238,0,0,0,90,2,110,116,114,21, + 0,0,0,114,222,0,0,0,90,5,112,111,115,105,120,114, + 53,0,0,0,218,3,97,108,108,114,62,0,0,0,114,141, + 0,0,0,114,60,0,0,0,114,65,0,0,0,90,20,95, + 112,97,116,104,115,101,112,115,95,119,105,116,104,95,99,111, + 108,111,110,114,31,0,0,0,90,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, + 30,0,0,0,114,32,0,0,0,114,24,0,0,0,114,39, + 0,0,0,114,45,0,0,0,114,48,0,0,0,114,70,0, + 0,0,114,77,0,0,0,114,79,0,0,0,114,84,0,0, + 0,114,85,0,0,0,114,88,0,0,0,114,91,0,0,0, + 114,100,0,0,0,218,4,116,121,112,101,218,8,95,95,99, + 111,100,101,95,95,114,190,0,0,0,114,37,0,0,0,114, + 176,0,0,0,114,36,0,0,0,114,42,0,0,0,114,21, + 1,0,0,114,121,0,0,0,114,117,0,0,0,114,132,0, + 0,0,114,64,0,0,0,114,138,1,0,0,114,239,0,0, + 0,114,118,0,0,0,90,23,68,69,66,85,71,95,66,89, + 84,69,67,79,68,69,95,83,85,70,70,73,88,69,83,90, + 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,126,0,0, + 0,114,133,0,0,0,114,140,0,0,0,114,142,0,0,0, + 114,144,0,0,0,114,164,0,0,0,114,171,0,0,0,114, + 180,0,0,0,114,184,0,0,0,114,186,0,0,0,114,193, + 0,0,0,114,198,0,0,0,114,200,0,0,0,114,206,0, + 0,0,218,6,111,98,106,101,99,116,114,216,0,0,0,114, + 220,0,0,0,114,221,0,0,0,114,242,0,0,0,114,3, + 1,0,0,114,24,1,0,0,114,50,1,0,0,114,59,1, + 0,0,114,45,1,0,0,114,65,1,0,0,114,94,1,0, + 0,114,100,1,0,0,114,118,1,0,0,114,137,1,0,0, + 114,215,0,0,0,114,141,1,0,0,114,144,1,0,0,114, + 13,0,0,0,114,10,0,0,0,114,7,0,0,0,218,8, + 60,109,111,100,117,108,101,62,1,0,0,0,115,180,0,0, + 0,4,0,4,22,8,3,8,1,8,1,8,1,8,1,10, + 3,4,1,8,1,10,1,8,2,4,3,10,1,6,2,22, + 2,8,1,8,1,10,1,14,1,4,4,4,1,2,1,2, + 1,4,255,8,4,6,16,8,3,8,5,8,5,4,6,10, + 1,8,30,8,6,8,8,8,10,8,9,8,5,4,7,10, + 1,8,8,10,5,10,22,0,127,16,40,12,1,4,2,4, + 1,6,2,4,1,10,1,8,2,6,2,8,2,16,2,8, + 71,8,40,8,19,8,12,8,12,8,31,8,20,8,33,8, + 28,10,24,10,13,10,10,8,11,6,14,4,3,2,1,12, + 255,14,73,14,67,16,30,0,127,14,17,18,50,18,45,18, + 25,14,53,14,63,14,49,0,127,14,29,0,127,10,30,8, + 23,8,11,12,5,115,220,0,0,0,4,7,4,15,8,3, + 8,1,8,1,8,1,8,1,10,3,2,1,2,4,8,253, + 10,1,8,2,2,3,2,3,10,254,6,2,22,2,8,1, + 8,1,10,1,14,1,4,4,4,1,2,1,4,1,2,255, + 8,18,6,2,8,5,8,6,8,5,2,3,2,34,10,250, + 8,6,8,8,8,10,8,9,8,5,8,7,2,3,2,11, + 10,251,8,5,2,3,8,19,10,3,0,127,16,40,12,1, + 4,2,4,1,6,2,2,1,12,1,8,2,6,2,8,2, + 4,2,12,68,8,40,8,19,8,12,8,12,8,31,8,20, + 8,33,8,28,8,24,2,3,8,10,2,3,8,7,2,3, + 8,8,8,12,6,5,4,3,2,1,12,67,14,69,14,30, + 0,127,10,17,0,129,2,242,0,127,4,14,14,50,10,45, + 4,214,4,42,10,25,4,234,4,22,10,53,4,206,4,50, + 14,62,14,48,0,127,14,31,0,127,14,28,2,5,8,20, + 8,11,8,5,12,8,115,250,2,0,0,1,4,1,4,14, + 18,1,11,1,12,1,12,1,12,1,12,1,11,1,11,1, + 11,1,11,1,11,1,11,1,11,1,11,1,17,1,17,1, + 17,1,17,1,15,1,15,1,15,1,15,16,19,16,28,32, + 39,16,39,1,12,4,15,1,24,5,21,5,21,5,21,5, + 21,5,18,5,18,5,18,5,18,5,18,5,24,5,24,5, + 24,5,24,4,15,1,28,24,28,30,33,23,34,5,20,5, + 20,24,27,23,28,5,20,8,11,11,53,11,53,11,53,37, + 52,11,53,11,53,8,53,1,53,1,53,1,53,12,27,28, + 29,12,30,1,9,18,23,24,39,18,40,1,15,19,21,19, + 43,27,42,19,43,1,16,24,58,24,58,24,58,42,57,24, + 58,24,58,1,21,39,45,1,36,41,59,1,38,33,70,35, + 70,33,70,1,28,1,23,1,23,1,23,1,23,15,31,15, + 33,1,12,1,55,1,55,1,55,1,55,1,42,1,42,1, + 42,1,42,1,42,1,42,1,42,1,42,4,15,1,63,5, + 42,5,42,5,42,5,42,5,42,5,63,5,63,5,63,5, + 63,1,34,1,34,1,34,1,34,1,26,1,26,1,26,1, + 26,1,50,1,50,1,50,1,50,1,46,1,46,1,46,1, + 46,1,46,1,46,1,46,1,46,4,15,1,48,5,82,5, + 82,5,82,5,82,5,82,5,48,5,48,5,48,5,48,36, + 41,1,14,1,14,1,14,1,14,14,18,19,32,19,41,14, + 42,1,11,17,21,16,44,32,33,35,43,16,44,47,54,16, + 54,1,13,21,24,21,59,36,48,50,58,21,59,1,18,12, + 25,1,9,8,14,1,5,20,25,19,26,1,16,4,15,1, + 35,5,20,5,35,28,34,5,35,5,35,22,26,22,45,22, + 47,1,19,22,28,21,29,1,18,57,74,1,74,1,24,27, + 54,44,48,66,70,1,48,1,48,1,48,1,48,1,48,1, + 48,1,64,1,64,1,64,1,64,1,71,1,71,1,71,1, + 71,1,20,1,20,1,20,1,20,1,16,1,16,1,16,1, + 16,1,31,1,31,1,31,1,31,1,18,1,18,1,18,1, + 18,1,17,1,17,1,17,1,17,1,76,1,76,1,76,1, + 76,1,10,1,10,1,10,1,10,34,38,1,57,1,57,1, + 57,1,57,40,41,1,16,1,16,1,16,1,16,50,54,1, + 16,1,16,1,16,1,16,1,68,1,68,1,68,1,68,13, + 19,13,21,1,10,44,48,60,64,56,65,1,16,1,16,1, + 16,1,16,1,16,1,16,1,24,1,24,1,24,1,24,1, + 24,1,24,1,24,1,60,1,60,1,60,1,60,1,60,1, + 60,1,60,1,27,1,27,1,27,1,27,1,27,20,33,1, + 27,1,27,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,45,1,45,1,45,1,45,1,45,24,34,36,48,1, + 45,1,45,1,20,1,20,1,20,1,20,1,20,28,38,40, + 53,1,20,1,20,1,25,1,25,1,25,1,25,1,25,27, + 37,39,52,1,25,1,25,1,32,1,32,1,32,1,32,1, + 32,1,32,1,32,1,43,1,43,1,43,1,43,1,43,1, + 43,1,43,1,70,1,70,1,70,1,70,1,70,1,70,1, + 70,1,52,1,52,1,52,1,52,1,52,1,52,1,52,50, + 54,1,13,1,13,1,13,1,13,1,42,1,42,1,42,1, + 42,1,35,1,35,1,35,1,35,1,37,1,37,1,37,1, + 37,1,37,1,37,114,10,0,0,0, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index c2d973f967e1e0..44f31546d01b74 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -72,101 +72,127 @@ const unsigned char _Py_M__zipimport[] = { 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,3,0,0,0,34, - 0,0,0,115,4,0,0,0,8,0,4,1,114,10,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,3,0,0,0,0,0,0,0,115,126,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, - 90,4,100,29,100,5,100,6,132,1,90,5,100,29,100,7, - 100,8,132,1,90,6,100,29,100,9,100,10,132,1,90,7, - 100,11,100,12,132,0,90,8,100,13,100,14,132,0,90,9, - 100,15,100,16,132,0,90,10,100,17,100,18,132,0,90,11, - 100,19,100,20,132,0,90,12,100,21,100,22,132,0,90,13, - 100,23,100,24,132,0,90,14,100,25,100,26,132,0,90,15, - 100,27,100,28,132,0,90,16,100,4,83,0,41,30,114,4, - 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,9,0,0,0,3,0,0,0,115,40,1,0, - 0,116,0,124,1,116,1,131,2,115,14,100,1,100,0,108, - 2,125,2,124,2,160,3,124,1,161,1,125,1,124,1,115, - 22,116,4,100,2,124,1,100,3,141,2,130,1,116,5,114, - 30,124,1,160,6,116,5,116,7,161,2,125,1,103,0,125, - 3,9,0,9,0,116,8,106,9,124,1,131,1,125,4,110, - 36,35,0,4,0,116,10,116,11,102,2,121,147,1,0,1, - 0,1,0,116,8,106,12,124,1,131,1,92,2,125,5,125, - 6,124,5,124,1,107,2,114,66,116,4,100,5,124,1,100, - 3,141,2,130,1,124,5,125,1,124,3,160,13,124,6,161, - 1,1,0,89,0,110,15,37,0,124,4,106,14,100,6,64, - 0,100,7,107,3,114,89,116,4,100,5,124,1,100,3,141, - 2,130,1,113,91,113,33,9,0,116,15,124,1,25,0,125, - 7,110,18,35,0,4,0,116,16,121,146,1,0,1,0,1, - 0,116,17,124,1,131,1,125,7,124,7,116,15,124,1,60, - 0,89,0,110,1,37,0,124,7,124,0,95,18,124,1,124, - 0,95,19,116,8,106,20,124,3,100,0,100,0,100,8,133, - 3,25,0,142,0,124,0,95,21,124,0,106,21,114,144,124, - 0,4,0,106,21,116,7,55,0,2,0,95,21,100,0,83, - 0,100,0,83,0,119,0,119,0,41,9,78,114,0,0,0, - 0,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, - 84,122,14,110,111,116,32,97,32,90,105,112,32,102,105,108, - 101,105,0,240,0,0,105,0,128,0,0,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,2,111,115,90,8,102,115,100,101,99,111,100, - 101,114,3,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,90,10,95,112, - 97,116,104,95,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,90,11,95, - 112,97,116,104,95,115,112,108,105,116,218,6,97,112,112,101, - 110,100,90,7,115,116,95,109,111,100,101,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,8,218,4,115,101,108,102,114,14,0,0,0,114,18, - 0,0,0,114,32,0,0,0,90,2,115,116,90,7,100,105, - 114,110,97,109,101,90,8,98,97,115,101,110,97,109,101,218, - 5,102,105,108,101,115,115,8,0,0,0,32,32,32,32,32, - 32,32,32,114,11,0,0,0,218,8,95,95,105,110,105,116, - 95,95,64,0,0,0,115,76,0,0,0,10,1,8,1,10, - 1,4,1,12,1,4,1,12,1,4,2,2,1,2,1,12, - 1,2,128,16,1,14,3,8,1,12,1,4,1,14,1,2, - 128,14,3,12,2,2,1,2,240,2,18,10,1,2,128,12, - 1,8,1,12,1,2,128,6,1,6,1,22,2,6,1,18, - 1,4,255,2,249,2,239,115,33,0,0,0,162,5,40,0, + 0,0,0,115,4,0,0,0,8,0,4,1,115,4,0,0, + 0,8,222,4,35,115,12,0,0,0,1,1,1,1,1,1, + 1,1,5,9,5,9,114,10,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,3,0,0,0,0, + 0,0,0,115,126,0,0,0,101,0,90,1,100,0,90,2, + 100,1,90,3,100,2,100,3,132,0,90,4,100,29,100,5, + 100,6,132,1,90,5,100,29,100,7,100,8,132,1,90,6, + 100,29,100,9,100,10,132,1,90,7,100,11,100,12,132,0, + 90,8,100,13,100,14,132,0,90,9,100,15,100,16,132,0, + 90,10,100,17,100,18,132,0,90,11,100,19,100,20,132,0, + 90,12,100,21,100,22,132,0,90,13,100,23,100,24,132,0, + 90,14,100,25,100,26,132,0,90,15,100,27,100,28,132,0, + 90,16,100,4,83,0,41,30,114,4,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,9,0, + 0,0,3,0,0,0,115,40,1,0,0,116,0,124,1,116, + 1,131,2,115,14,100,1,100,0,108,2,125,2,124,2,160, + 3,124,1,161,1,125,1,124,1,115,22,116,4,100,2,124, + 1,100,3,141,2,130,1,116,5,114,30,124,1,160,6,116, + 5,116,7,161,2,125,1,103,0,125,3,9,0,9,0,116, + 8,106,9,124,1,131,1,125,4,110,36,35,0,4,0,116, + 10,116,11,102,2,121,147,1,0,1,0,1,0,116,8,106, + 12,124,1,131,1,92,2,125,5,125,6,124,5,124,1,107, + 2,114,66,116,4,100,5,124,1,100,3,141,2,130,1,124, + 5,125,1,124,3,160,13,124,6,161,1,1,0,89,0,110, + 15,37,0,124,4,106,14,100,6,64,0,100,7,107,3,114, + 89,116,4,100,5,124,1,100,3,141,2,130,1,113,91,113, + 33,9,0,116,15,124,1,25,0,125,7,110,18,35,0,4, + 0,116,16,121,146,1,0,1,0,1,0,116,17,124,1,131, + 1,125,7,124,7,116,15,124,1,60,0,89,0,110,1,37, + 0,124,7,124,0,95,18,124,1,124,0,95,19,116,8,106, + 20,124,3,100,0,100,0,100,8,133,3,25,0,142,0,124, + 0,95,21,124,0,106,21,114,144,124,0,4,0,106,21,116, + 7,55,0,2,0,95,21,100,0,83,0,100,0,83,0,119, + 0,119,0,41,9,78,114,0,0,0,0,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,84,122,14,110,111,116, + 32,97,32,90,105,112,32,102,105,108,101,105,0,240,0,0, + 105,0,128,0,0,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,2,111, + 115,90,8,102,115,100,101,99,111,100,101,114,3,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,90,10,95,112,97,116,104,95,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,90,11,95,112,97,116,104,95,115, + 112,108,105,116,218,6,97,112,112,101,110,100,90,7,115,116, + 95,109,111,100,101,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,8,218,4,115, + 101,108,102,114,14,0,0,0,114,18,0,0,0,114,32,0, + 0,0,90,2,115,116,90,7,100,105,114,110,97,109,101,90, + 8,98,97,115,101,110,97,109,101,218,5,102,105,108,101,115, + 115,8,0,0,0,32,32,32,32,32,32,32,32,114,11,0, + 0,0,218,8,95,95,105,110,105,116,95,95,64,0,0,0, + 115,76,0,0,0,10,1,8,1,10,1,4,1,12,1,4, + 1,12,1,4,2,2,1,2,1,12,1,2,128,16,1,14, + 3,8,1,12,1,4,1,14,1,2,128,14,3,12,2,2, + 1,2,240,2,18,10,1,2,128,12,1,8,1,12,1,2, + 128,6,1,6,1,22,2,6,1,18,1,4,255,2,249,2, + 239,115,84,0,0,0,8,1,2,2,8,255,10,1,2,1, + 14,1,2,1,14,1,4,2,2,1,2,16,12,242,2,128, + 2,8,6,249,8,7,14,252,6,1,14,1,4,1,14,1, + 2,128,12,3,14,2,2,1,2,240,2,22,10,253,2,128, + 2,3,2,254,8,2,8,255,12,1,2,128,6,1,6,1, + 22,2,4,1,24,1,2,250,2,244,115,40,1,0,0,16, + 26,27,31,33,36,16,37,9,37,13,22,13,22,13,22,13, + 22,20,22,20,37,32,36,20,37,13,17,16,20,9,69,19, + 33,34,57,64,68,19,69,19,69,13,69,12,24,9,56,20, + 24,20,56,33,45,47,55,20,56,13,17,18,20,9,15,15, + 19,13,22,22,41,22,52,53,57,22,58,17,19,17,19,0, + 0,13,40,21,28,30,40,20,41,13,40,13,40,13,40,13, + 40,37,56,37,68,69,73,37,74,17,34,17,24,26,34,20, + 27,31,35,20,35,17,70,27,41,42,58,65,69,27,70,27, + 70,21,70,24,31,17,21,17,23,17,40,31,39,17,40,17, + 40,17,40,17,40,0,0,21,23,21,31,34,42,21,42,47, + 55,20,55,17,70,27,41,42,58,65,69,27,70,27,70,21, + 70,17,22,15,19,9,47,21,41,42,46,21,47,13,18,13, + 18,0,0,9,47,16,24,9,47,9,47,9,47,9,47,21, + 36,37,41,21,42,13,18,42,47,13,33,34,38,13,39,13, + 39,13,39,0,0,23,28,9,13,9,20,24,28,9,13,9, + 21,23,42,23,53,55,61,62,66,62,66,64,66,62,66,55, + 67,23,68,9,13,9,20,12,16,12,23,9,36,13,17,13, + 24,13,24,28,36,13,36,13,24,13,24,13,24,13,24,9, + 36,9,36,9,47,13,40,115,33,0,0,0,162,5,40,0, 168,33,65,11,7,193,28,4,65,33,0,193,33,15,65,50, 7,194,18,1,65,50,7,194,19,1,65,11,7,122,20,122, 105,112,105,109,112,111,114,116,101,114,46,95,95,105,110,105, @@ -231,342 +257,423 @@ const unsigned char _Py_M__zipimport[] = { 32,32,114,11,0,0,0,218,11,102,105,110,100,95,108,111, 97,100,101,114,110,0,0,0,115,20,0,0,0,6,12,2, 2,4,254,10,3,8,1,8,2,10,7,10,1,24,4,8, - 2,114,10,0,0,0,122,23,122,105,112,105,109,112,111,114, - 116,101,114,46,102,105,110,100,95,108,111,97,100,101,114,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,28,0,0,0,116,0,106,1,100,1,116, - 2,131,2,1,0,124,0,160,3,124,1,124,2,161,2,100, - 2,25,0,83,0,41,4,97,203,1,0,0,102,105,110,100, - 95,109,111,100,117,108,101,40,102,117,108,108,110,97,109,101, - 44,32,112,97,116,104,61,78,111,110,101,41,32,45,62,32, - 115,101,108,102,32,111,114,32,78,111,110,101,46,10,10,32, - 32,32,32,32,32,32,32,83,101,97,114,99,104,32,102,111, - 114,32,97,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,122,105,112,105,109,112,111,114, - 116,101,114,10,32,32,32,32,32,32,32,32,105,110,115,116, - 97,110,99,101,32,105,116,115,101,108,102,32,105,102,32,116, - 104,101,32,109,111,100,117,108,101,32,119,97,115,32,102,111, - 117,110,100,44,32,111,114,32,78,111,110,101,32,105,102,32, - 105,116,32,119,97,115,110,39,116,46,10,32,32,32,32,32, - 32,32,32,84,104,101,32,111,112,116,105,111,110,97,108,32, - 39,112,97,116,104,39,32,97,114,103,117,109,101,110,116,32, - 105,115,32,105,103,110,111,114,101,100,32,45,45,32,105,116, - 39,115,32,116,104,101,114,101,32,102,111,114,32,99,111,109, - 112,97,116,105,98,105,108,105,116,121,10,32,32,32,32,32, - 32,32,32,119,105,116,104,32,116,104,101,32,105,109,112,111, - 114,116,101,114,32,112,114,111,116,111,99,111,108,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,102,105,110,100,95,115, - 112,101,99,40,41,32,105,110,115,116,101,97,100,46,10,32, - 32,32,32,32,32,32,32,122,102,122,105,112,105,109,112,111, - 114,116,101,114,46,102,105,110,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,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,114, - 0,0,0,0,78,41,4,114,36,0,0,0,114,37,0,0, - 0,114,38,0,0,0,114,45,0,0,0,41,3,114,33,0, - 0,0,114,42,0,0,0,114,14,0,0,0,115,3,0,0, - 0,32,32,32,114,11,0,0,0,218,11,102,105,110,100,95, - 109,111,100,117,108,101,147,0,0,0,115,8,0,0,0,6, - 11,2,2,4,254,16,3,114,10,0,0,0,122,23,122,105, - 112,105,109,112,111,114,116,101,114,46,102,105,110,100,95,109, - 111,100,117,108,101,99,3,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,3,0,0,0,115,108,0,0,0,116, - 0,124,0,124,1,131,2,125,3,124,3,100,1,117,1,114, - 17,116,1,106,2,124,1,124,0,124,3,100,2,141,3,83, - 0,116,3,124,0,124,1,131,2,125,4,116,4,124,0,124, - 4,131,2,114,52,124,0,106,5,155,0,116,6,155,0,124, - 4,155,0,157,3,125,5,116,1,106,7,124,1,100,1,100, - 3,100,4,141,3,125,6,124,6,106,8,160,9,124,5,161, - 1,1,0,124,6,83,0,100,1,83,0,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,90,6,108,111,97,100,101,114,114,47,0,0,0,41, - 10,114,39,0,0,0,218,10,95,98,111,111,116,115,116,114, - 97,112,90,16,115,112,101,99,95,102,114,111,109,95,108,111, - 97,100,101,114,114,40,0,0,0,114,41,0,0,0,114,30, - 0,0,0,114,21,0,0,0,90,10,77,111,100,117,108,101, - 83,112,101,99,90,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,25,0,0,0,41,7,114,33,0,0,0,114,42,0,0, - 0,90,6,116,97,114,103,101,116,90,11,109,111,100,117,108, - 101,95,105,110,102,111,114,44,0,0,0,114,14,0,0,0, - 90,4,115,112,101,99,115,7,0,0,0,32,32,32,32,32, - 32,32,114,11,0,0,0,218,9,102,105,110,100,95,115,112, - 101,99,163,0,0,0,115,24,0,0,0,10,5,8,1,16, - 1,10,7,10,1,18,4,8,1,2,1,6,255,12,2,4, - 1,4,2,114,10,0,0,0,122,21,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,115,112,101,99,99, - 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,115,20,0,0,0,116,0,124,0,124,1,131, - 2,92,3,125,2,125,3,125,4,124,2,83,0,41,2,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,78,169,1,218,16,95,103,101,116, - 95,109,111,100,117,108,101,95,99,111,100,101,169,5,114,33, - 0,0,0,114,42,0,0,0,218,4,99,111,100,101,218,9, - 105,115,112,97,99,107,97,103,101,114,44,0,0,0,115,5, - 0,0,0,32,32,32,32,32,114,11,0,0,0,218,8,103, - 101,116,95,99,111,100,101,190,0,0,0,115,4,0,0,0, - 16,6,4,1,114,10,0,0,0,122,20,122,105,112,105,109, - 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 3,0,0,0,115,114,0,0,0,116,0,114,8,124,1,160, - 1,116,0,116,2,161,2,125,1,124,1,125,2,124,1,160, - 3,124,0,106,4,116,2,23,0,161,1,114,29,124,1,116, - 5,124,0,106,4,116,2,23,0,131,1,100,1,133,2,25, - 0,125,2,9,0,124,0,106,6,124,2,25,0,125,3,110, - 14,35,0,4,0,116,7,121,56,1,0,1,0,1,0,116, - 8,100,2,100,3,124,2,131,3,130,1,37,0,116,9,124, - 0,106,4,124,3,131,2,83,0,119,0,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, + 2,115,20,0,0,0,4,12,2,1,6,1,10,1,6,1, + 10,2,10,7,8,1,26,4,8,2,115,90,0,0,0,9, + 18,9,23,24,73,24,42,9,43,9,43,14,30,31,35,37, + 45,14,46,9,11,12,14,22,26,12,26,9,28,20,24,26, + 28,20,28,13,28,19,35,36,40,42,50,19,51,9,16,12, + 19,20,24,26,33,12,34,9,64,20,24,30,34,30,42,27, + 63,44,52,27,63,54,61,27,63,27,63,26,64,20,64,13, + 64,16,20,22,24,16,24,9,24,114,10,0,0,0,122,23, + 122,105,112,105,109,112,111,114,116,101,114,46,102,105,110,100, + 95,108,111,97,100,101,114,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,3,0,0,0,115,28,0,0, + 0,116,0,106,1,100,1,116,2,131,2,1,0,124,0,160, + 3,124,1,124,2,161,2,100,2,25,0,83,0,41,4,97, + 203,1,0,0,102,105,110,100,95,109,111,100,117,108,101,40, + 102,117,108,108,110,97,109,101,44,32,112,97,116,104,61,78, + 111,110,101,41,32,45,62,32,115,101,108,102,32,111,114,32, + 78,111,110,101,46,10,10,32,32,32,32,32,32,32,32,83, + 101,97,114,99,104,32,102,111,114,32,97,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, + 122,105,112,105,109,112,111,114,116,101,114,10,32,32,32,32, + 32,32,32,32,105,110,115,116,97,110,99,101,32,105,116,115, + 101,108,102,32,105,102,32,116,104,101,32,109,111,100,117,108, + 101,32,119,97,115,32,102,111,117,110,100,44,32,111,114,32, + 78,111,110,101,32,105,102,32,105,116,32,119,97,115,110,39, + 116,46,10,32,32,32,32,32,32,32,32,84,104,101,32,111, + 112,116,105,111,110,97,108,32,39,112,97,116,104,39,32,97, + 114,103,117,109,101,110,116,32,105,115,32,105,103,110,111,114, + 101,100,32,45,45,32,105,116,39,115,32,116,104,101,114,101, + 32,102,111,114,32,99,111,109,112,97,116,105,98,105,108,105, + 116,121,10,32,32,32,32,32,32,32,32,119,105,116,104,32, + 116,104,101,32,105,109,112,111,114,116,101,114,32,112,114,111, + 116,111,99,111,108,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,102,105,110,100,95,115,112,101,99,40,41,32,105,110, + 115,116,101,97,100,46,10,32,32,32,32,32,32,32,32,122, + 102,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, + 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,102,105,110,100,95,115,112,101,99,40,41,32, + 105,110,115,116,101,97,100,114,0,0,0,0,78,41,4,114, + 36,0,0,0,114,37,0,0,0,114,38,0,0,0,114,45, + 0,0,0,41,3,114,33,0,0,0,114,42,0,0,0,114, + 14,0,0,0,115,3,0,0,0,32,32,32,114,11,0,0, + 0,218,11,102,105,110,100,95,109,111,100,117,108,101,147,0, + 0,0,115,8,0,0,0,6,11,2,2,4,254,16,3,115, + 8,0,0,0,4,11,2,1,6,1,16,1,115,28,0,0, + 0,9,18,9,23,24,73,24,42,9,43,9,43,16,20,16, + 48,33,41,43,47,16,48,49,50,16,51,9,51,114,10,0, + 0,0,122,23,122,105,112,105,109,112,111,114,116,101,114,46, + 102,105,110,100,95,109,111,100,117,108,101,99,3,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, + 115,108,0,0,0,116,0,124,0,124,1,131,2,125,3,124, + 3,100,1,117,1,114,17,116,1,106,2,124,1,124,0,124, + 3,100,2,141,3,83,0,116,3,124,0,124,1,131,2,125, + 4,116,4,124,0,124,4,131,2,114,52,124,0,106,5,155, + 0,116,6,155,0,124,4,155,0,157,3,125,5,116,1,106, + 7,124,1,100,1,100,3,100,4,141,3,125,6,124,6,106, + 8,160,9,124,5,161,1,1,0,124,6,83,0,100,1,83, + 0,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,90,6,108,111,97,100,101,114, + 114,47,0,0,0,41,10,114,39,0,0,0,218,10,95,98, + 111,111,116,115,116,114,97,112,90,16,115,112,101,99,95,102, + 114,111,109,95,108,111,97,100,101,114,114,40,0,0,0,114, + 41,0,0,0,114,30,0,0,0,114,21,0,0,0,90,10, + 77,111,100,117,108,101,83,112,101,99,90,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,25,0,0,0,41,7,114,33,0, + 0,0,114,42,0,0,0,90,6,116,97,114,103,101,116,90, + 11,109,111,100,117,108,101,95,105,110,102,111,114,44,0,0, + 0,114,14,0,0,0,90,4,115,112,101,99,115,7,0,0, + 0,32,32,32,32,32,32,32,114,11,0,0,0,218,9,102, + 105,110,100,95,115,112,101,99,163,0,0,0,115,24,0,0, + 0,10,5,8,1,16,1,10,7,10,1,18,4,8,1,2, + 1,6,255,12,2,4,1,4,2,115,28,0,0,0,10,5, + 6,1,2,19,16,238,10,7,8,1,2,10,18,250,8,1, + 6,1,2,255,12,2,4,1,4,2,115,108,0,0,0,23, + 39,40,44,46,54,23,55,9,20,12,23,31,35,12,35,9, + 28,20,30,20,47,48,56,58,62,75,86,20,87,20,87,13, + 87,23,39,40,44,46,54,23,55,13,20,16,23,24,28,30, + 37,16,38,13,28,27,31,27,39,24,60,41,49,24,60,51, + 58,24,60,24,60,17,21,24,34,24,45,51,59,68,72,57, + 61,24,62,24,62,17,21,17,21,17,48,17,61,56,60,17, + 61,17,61,24,28,17,28,24,28,24,28,114,10,0,0,0, + 122,21,122,105,112,105,109,112,111,114,116,101,114,46,102,105, + 110,100,95,115,112,101,99,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,115,20,0,0, + 0,116,0,124,0,124,1,131,2,92,3,125,2,125,3,125, + 4,124,2,83,0,41,2,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, - 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,0,0,0,0,218, - 0,41,10,114,19,0,0,0,114,20,0,0,0,114,21,0, - 0,0,218,10,115,116,97,114,116,115,119,105,116,104,114,30, - 0,0,0,218,3,108,101,110,114,29,0,0,0,114,27,0, - 0,0,114,23,0,0,0,218,9,95,103,101,116,95,100,97, - 116,97,41,4,114,33,0,0,0,218,8,112,97,116,104,110, - 97,109,101,90,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,11,0,0, - 0,218,8,103,101,116,95,100,97,116,97,200,0,0,0,115, - 26,0,0,0,4,6,12,1,4,2,16,1,22,1,2,2, - 12,1,2,128,12,1,12,1,2,128,12,1,2,254,115,12, - 0,0,0,158,5,36,0,164,13,49,7,184,1,49,7,122, + 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,78, + 169,1,218,16,95,103,101,116,95,109,111,100,117,108,101,95, + 99,111,100,101,169,5,114,33,0,0,0,114,42,0,0,0, + 218,4,99,111,100,101,218,9,105,115,112,97,99,107,97,103, + 101,114,44,0,0,0,115,5,0,0,0,32,32,32,32,32, + 114,11,0,0,0,218,8,103,101,116,95,99,111,100,101,190, + 0,0,0,243,4,0,0,0,16,6,4,1,114,57,0,0, + 0,115,20,0,0,0,36,52,53,57,59,67,36,68,9,33, + 9,13,15,24,26,33,16,20,9,20,114,10,0,0,0,122, 20,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, - 95,100,97,116,97,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,3,0,0,0,115,20,0,0,0,116, - 0,124,0,124,1,131,2,92,3,125,2,125,3,125,4,124, - 4,83,0,41,2,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, + 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,3,0,0,0,115,114,0,0,0,116, + 0,114,8,124,1,160,1,116,0,116,2,161,2,125,1,124, + 1,125,2,124,1,160,3,124,0,106,4,116,2,23,0,161, + 1,114,29,124,1,116,5,124,0,106,4,116,2,23,0,131, + 1,100,1,133,2,25,0,125,2,9,0,124,0,106,6,124, + 2,25,0,125,3,110,14,35,0,4,0,116,7,121,56,1, + 0,1,0,1,0,116,8,100,2,100,3,124,2,131,3,130, + 1,37,0,116,9,124,0,106,4,124,3,131,2,83,0,119, + 0,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,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, + 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,0,0,0,0,218,0,41,10,114,19,0,0,0,114,20, + 0,0,0,114,21,0,0,0,218,10,115,116,97,114,116,115, + 119,105,116,104,114,30,0,0,0,218,3,108,101,110,114,29, + 0,0,0,114,27,0,0,0,114,23,0,0,0,218,9,95, + 103,101,116,95,100,97,116,97,41,4,114,33,0,0,0,218, + 8,112,97,116,104,110,97,109,101,90,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,11,0,0,0,218,8,103,101,116,95,100,97,116, + 97,200,0,0,0,115,26,0,0,0,4,6,12,1,4,2, + 16,1,22,1,2,2,12,1,2,128,12,1,12,1,2,128, + 12,1,2,254,115,28,0,0,0,2,6,14,1,4,2,14, + 1,24,1,2,5,12,254,2,128,2,2,2,255,20,1,2, + 128,12,1,2,255,115,114,0,0,0,12,24,9,64,24,32, + 24,64,41,53,55,63,24,64,13,21,15,23,9,12,12,20, + 12,56,32,36,32,44,47,55,32,55,12,56,9,58,19,27, + 28,31,32,36,32,44,47,55,32,55,28,56,28,57,28,57, + 19,58,13,16,9,38,25,29,25,36,37,40,25,41,13,22, + 13,22,0,0,9,38,16,24,9,38,9,38,9,38,9,38, + 19,26,27,28,30,32,34,37,19,38,13,38,0,0,16,25, + 26,30,26,38,40,49,16,50,9,50,9,38,115,12,0,0, + 0,158,5,36,0,164,13,49,7,184,1,49,7,122,20,122, + 105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,100, + 97,116,97,99,2,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,115,20,0,0,0,116,0,124, + 0,124,1,131,2,92,3,125,2,125,3,125,4,124,4,83, + 0,41,2,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,78,114,51,0,0,0, + 114,53,0,0,0,115,5,0,0,0,32,32,32,32,32,114, + 11,0,0,0,218,12,103,101,116,95,102,105,108,101,110,97, + 109,101,221,0,0,0,243,4,0,0,0,16,8,4,1,114, + 66,0,0,0,115,20,0,0,0,36,52,53,57,59,67,36, + 68,9,33,9,13,15,24,26,33,16,23,9,23,114,10,0, + 0,0,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,99,2,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0, + 0,115,128,0,0,0,116,0,124,0,124,1,131,2,125,2, + 124,2,100,1,117,0,114,18,116,1,100,2,124,1,155,2, + 157,2,124,1,100,3,141,2,130,1,116,2,124,0,124,1, + 131,2,125,3,124,2,114,32,116,3,106,4,124,3,100,4, + 131,2,125,4,110,5,124,3,155,0,100,5,157,2,125,4, + 9,0,124,0,106,5,124,4,25,0,125,5,110,11,35,0, + 4,0,116,6,121,63,1,0,1,0,1,0,89,0,100,1, + 83,0,37,0,116,7,124,0,106,8,124,5,131,2,160,9, + 161,0,83,0,119,0,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,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,78,114,51,0, - 0,0,114,53,0,0,0,115,5,0,0,0,32,32,32,32, - 32,114,11,0,0,0,218,12,103,101,116,95,102,105,108,101, - 110,97,109,101,221,0,0,0,115,4,0,0,0,16,8,4, - 1,114,10,0,0,0,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, - 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,3,0,0,0,115,128,0,0,0,116,0,124,0,124,1, - 131,2,125,2,124,2,100,1,117,0,114,18,116,1,100,2, - 124,1,155,2,157,2,124,1,100,3,141,2,130,1,116,2, - 124,0,124,1,131,2,125,3,124,2,114,32,116,3,106,4, - 124,3,100,4,131,2,125,4,110,5,124,3,155,0,100,5, - 157,2,125,4,9,0,124,0,106,5,124,4,25,0,125,5, - 110,11,35,0,4,0,116,6,121,63,1,0,1,0,1,0, - 89,0,100,1,83,0,37,0,116,7,124,0,106,8,124,5, - 131,2,160,9,161,0,83,0,119,0,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,48,0,0,0,250,11,95,95,105,110,105,116,95, - 95,46,112,121,250,3,46,112,121,41,10,114,39,0,0,0, - 114,3,0,0,0,114,40,0,0,0,114,22,0,0,0,114, - 31,0,0,0,114,29,0,0,0,114,27,0,0,0,114,60, - 0,0,0,114,30,0,0,0,218,6,100,101,99,111,100,101, - 41,6,114,33,0,0,0,114,42,0,0,0,114,43,0,0, - 0,114,14,0,0,0,218,8,102,117,108,108,112,97,116,104, - 114,62,0,0,0,115,6,0,0,0,32,32,32,32,32,32, - 114,11,0,0,0,218,10,103,101,116,95,115,111,117,114,99, - 101,233,0,0,0,115,30,0,0,0,10,7,8,1,18,1, - 10,2,4,1,14,1,10,2,2,2,12,1,2,128,12,1, - 6,2,2,128,16,1,2,253,115,12,0,0,0,166,5,44, - 0,172,7,54,7,191,1,54,7,122,22,122,105,112,105,109, - 112,111,114,116,101,114,46,103,101,116,95,115,111,117,114,99, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,115,40,0,0,0,116,0,124,0,124, - 1,131,2,125,2,124,2,100,1,117,0,114,18,116,1,100, - 2,124,1,155,2,157,2,124,1,100,3,141,2,130,1,124, - 2,83,0,41,4,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,78,114,65,0,0,0,114,66,0,0,0,41,2,114, - 39,0,0,0,114,3,0,0,0,41,3,114,33,0,0,0, - 114,42,0,0,0,114,43,0,0,0,115,3,0,0,0,32, - 32,32,114,11,0,0,0,114,47,0,0,0,3,1,0,0, - 115,8,0,0,0,10,6,8,1,18,1,4,1,114,10,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,99,2,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,115, - 0,1,0,0,100,1,125,2,116,0,106,1,124,2,116,2, - 131,2,1,0,116,3,124,0,124,1,131,2,92,3,125,3, - 125,4,125,5,116,4,106,5,160,6,124,1,161,1,125,6, - 124,6,100,2,117,0,115,31,116,7,124,6,116,8,131,2, - 115,40,116,8,124,1,131,1,125,6,124,6,116,4,106,5, - 124,1,60,0,124,0,124,6,95,9,9,0,124,4,114,62, - 116,10,124,0,124,1,131,2,125,7,116,11,106,12,124,0, - 106,13,124,7,131,2,125,8,124,8,103,1,124,6,95,14, - 116,15,124,6,100,3,131,2,115,70,116,16,124,6,95,16, - 116,11,106,17,124,6,106,18,124,1,124,5,131,3,1,0, - 116,19,124,3,124,6,106,18,131,2,1,0,110,10,35,0, - 1,0,1,0,1,0,116,4,106,5,124,1,61,0,130,0, - 37,0,9,0,116,4,106,5,124,1,25,0,125,6,110,16, - 35,0,4,0,116,20,121,127,1,0,1,0,1,0,116,21, - 100,4,124,1,155,2,100,5,157,3,131,1,130,1,37,0, - 116,22,106,23,100,6,124,1,124,5,131,3,1,0,124,6, - 83,0,119,0,41,7,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,78, - 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,114,36,0,0,0, - 114,37,0,0,0,114,38,0,0,0,114,52,0,0,0,218, - 3,115,121,115,218,7,109,111,100,117,108,101,115,218,3,103, - 101,116,114,16,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,40,0,0,0,114,22,0,0,0,114,31,0,0,0, - 114,30,0,0,0,90,8,95,95,112,97,116,104,95,95,218, - 7,104,97,115,97,116,116,114,114,72,0,0,0,90,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,27,0, - 0,0,218,11,73,109,112,111,114,116,69,114,114,111,114,114, - 49,0,0,0,218,16,95,118,101,114,98,111,115,101,95,109, - 101,115,115,97,103,101,41,9,114,33,0,0,0,114,42,0, - 0,0,218,3,109,115,103,114,54,0,0,0,114,55,0,0, - 0,114,44,0,0,0,90,3,109,111,100,114,14,0,0,0, - 114,70,0,0,0,115,9,0,0,0,32,32,32,32,32,32, - 32,32,32,114,11,0,0,0,218,11,108,111,97,100,95,109, - 111,100,117,108,101,16,1,0,0,115,62,0,0,0,4,9, - 12,2,16,1,12,1,18,1,8,1,10,1,6,1,2,2, - 4,1,10,3,14,1,8,1,10,2,6,1,16,1,14,1, - 2,128,6,1,8,1,2,1,2,128,2,2,12,1,2,128, - 12,1,16,1,2,128,14,1,4,1,2,253,115,29,0,0, - 0,172,40,65,21,0,193,21,9,65,30,7,193,32,5,65, - 38,0,193,38,15,65,53,7,193,63,1,65,53,7,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,99,2,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,3,0,0,0,115,64,0,0, - 0,9,0,124,0,160,0,124,1,161,1,115,8,100,1,83, - 0,110,11,35,0,4,0,116,1,121,31,1,0,1,0,1, - 0,89,0,100,1,83,0,37,0,100,2,100,3,108,2,109, - 3,125,2,1,0,124,2,124,0,124,1,131,2,83,0,119, - 0,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,0,0,0,0,41,1,218,9,90,105,112,82,101, - 97,100,101,114,41,4,114,47,0,0,0,114,3,0,0,0, - 90,17,105,109,112,111,114,116,108,105,98,46,114,101,97,100, - 101,114,115,114,85,0,0,0,41,3,114,33,0,0,0,114, - 42,0,0,0,114,85,0,0,0,115,3,0,0,0,32,32, - 32,114,11,0,0,0,218,19,103,101,116,95,114,101,115,111, - 117,114,99,101,95,114,101,97,100,101,114,59,1,0,0,115, - 22,0,0,0,2,6,10,1,4,1,2,255,2,128,12,2, - 6,1,2,128,12,1,10,1,2,253,115,12,0,0,0,129, - 5,9,0,137,7,19,7,159,1,19,7,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,99,1,0,0, + 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,48, + 0,0,0,250,11,95,95,105,110,105,116,95,95,46,112,121, + 250,3,46,112,121,41,10,114,39,0,0,0,114,3,0,0, + 0,114,40,0,0,0,114,22,0,0,0,114,31,0,0,0, + 114,29,0,0,0,114,27,0,0,0,114,61,0,0,0,114, + 30,0,0,0,218,6,100,101,99,111,100,101,41,6,114,33, + 0,0,0,114,42,0,0,0,114,43,0,0,0,114,14,0, + 0,0,218,8,102,117,108,108,112,97,116,104,114,63,0,0, + 0,115,6,0,0,0,32,32,32,32,32,32,114,11,0,0, + 0,218,10,103,101,116,95,115,111,117,114,99,101,233,0,0, + 0,115,30,0,0,0,10,7,8,1,18,1,10,2,4,1, + 14,1,10,2,2,2,12,1,2,128,12,1,6,2,2,128, + 16,1,2,253,115,34,0,0,0,10,7,6,1,20,1,10, + 2,2,1,2,3,14,254,10,2,2,6,12,253,2,128,2, + 3,2,254,14,2,2,128,16,1,2,255,115,128,0,0,0, + 14,30,31,35,37,45,14,46,9,11,12,14,18,22,12,22, + 9,83,19,33,34,67,35,43,34,67,34,67,74,82,19,83, + 19,83,13,83,16,32,33,37,39,47,16,48,9,13,12,14, + 9,36,24,43,24,54,55,59,61,74,24,75,13,21,13,21, + 27,31,24,36,24,36,24,36,13,21,9,24,25,29,25,36, + 37,45,25,46,13,22,13,22,0,0,9,24,16,24,9,24, + 9,24,9,24,9,24,20,24,20,24,20,24,0,0,16,25, + 26,30,26,38,40,49,16,50,16,59,16,59,9,59,9,24, + 115,12,0,0,0,166,5,44,0,172,7,54,7,191,1,54, + 7,122,22,122,105,112,105,109,112,111,114,116,101,114,46,103, + 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,3,0,0,0,115,40, + 0,0,0,116,0,124,0,124,1,131,2,125,2,124,2,100, + 1,117,0,114,18,116,1,100,2,124,1,155,2,157,2,124, + 1,100,3,141,2,130,1,124,2,83,0,41,4,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,78,114,67,0,0,0, + 114,68,0,0,0,41,2,114,39,0,0,0,114,3,0,0, + 0,41,3,114,33,0,0,0,114,42,0,0,0,114,43,0, + 0,0,115,3,0,0,0,32,32,32,114,11,0,0,0,114, + 47,0,0,0,3,1,0,0,115,8,0,0,0,10,6,8, + 1,18,1,4,1,115,8,0,0,0,10,6,6,1,20,1, + 4,1,115,40,0,0,0,14,30,31,35,37,45,14,46,9, + 11,12,14,18,22,12,22,9,83,19,33,34,67,35,43,34, + 67,34,67,74,82,19,83,19,83,13,83,16,18,9,18,114, + 10,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,99,2,0,0, 0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0, - 0,115,74,0,0,0,9,0,116,0,124,0,106,1,131,1, - 124,0,95,2,124,0,106,2,116,3,124,0,106,1,60,0, - 100,1,83,0,35,0,4,0,116,4,121,36,1,0,1,0, - 1,0,116,3,160,5,124,0,106,1,100,1,161,2,1,0, - 100,1,124,0,95,2,89,0,100,1,83,0,37,0,119,0, - 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,28,0,0,0,114,30,0,0,0,114,29,0,0,0,114, - 26,0,0,0,114,3,0,0,0,218,3,112,111,112,169,1, - 114,33,0,0,0,115,1,0,0,0,32,114,11,0,0,0, - 218,17,105,110,118,97,108,105,100,97,116,101,95,99,97,99, - 104,101,115,74,1,0,0,115,18,0,0,0,2,2,12,1, - 16,1,2,128,12,1,14,1,12,1,2,128,2,254,115,12, + 0,115,0,1,0,0,100,1,125,2,116,0,106,1,124,2, + 116,2,131,2,1,0,116,3,124,0,124,1,131,2,92,3, + 125,3,125,4,125,5,116,4,106,5,160,6,124,1,161,1, + 125,6,124,6,100,2,117,0,115,31,116,7,124,6,116,8, + 131,2,115,40,116,8,124,1,131,1,125,6,124,6,116,4, + 106,5,124,1,60,0,124,0,124,6,95,9,9,0,124,4, + 114,62,116,10,124,0,124,1,131,2,125,7,116,11,106,12, + 124,0,106,13,124,7,131,2,125,8,124,8,103,1,124,6, + 95,14,116,15,124,6,100,3,131,2,115,70,116,16,124,6, + 95,16,116,11,106,17,124,6,106,18,124,1,124,5,131,3, + 1,0,116,19,124,3,124,6,106,18,131,2,1,0,110,10, + 35,0,1,0,1,0,1,0,116,4,106,5,124,1,61,0, + 130,0,37,0,9,0,116,4,106,5,124,1,25,0,125,6, + 110,16,35,0,4,0,116,20,121,127,1,0,1,0,1,0, + 116,21,100,4,124,1,155,2,100,5,157,3,131,1,130,1, + 37,0,116,22,106,23,100,6,124,1,124,5,131,3,1,0, + 124,6,83,0,119,0,41,7,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,78,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,114,36,0, + 0,0,114,37,0,0,0,114,38,0,0,0,114,52,0,0, + 0,218,3,115,121,115,218,7,109,111,100,117,108,101,115,218, + 3,103,101,116,114,16,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,40,0,0,0,114,22,0,0,0,114,31,0, + 0,0,114,30,0,0,0,90,8,95,95,112,97,116,104,95, + 95,218,7,104,97,115,97,116,116,114,114,74,0,0,0,90, + 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, + 27,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, + 114,114,49,0,0,0,218,16,95,118,101,114,98,111,115,101, + 95,109,101,115,115,97,103,101,41,9,114,33,0,0,0,114, + 42,0,0,0,218,3,109,115,103,114,54,0,0,0,114,55, + 0,0,0,114,44,0,0,0,90,3,109,111,100,114,14,0, + 0,0,114,72,0,0,0,115,9,0,0,0,32,32,32,32, + 32,32,32,32,32,114,11,0,0,0,218,11,108,111,97,100, + 95,109,111,100,117,108,101,16,1,0,0,115,62,0,0,0, + 4,9,12,2,16,1,12,1,18,1,8,1,10,1,6,1, + 2,2,4,1,10,3,14,1,8,1,10,2,6,1,16,1, + 14,1,2,128,6,1,8,1,2,1,2,128,2,2,12,1, + 2,128,12,1,16,1,2,128,14,1,4,1,2,253,115,74, + 0,0,0,2,10,2,255,12,2,16,1,12,1,6,1,2, + 2,8,254,2,2,8,255,10,1,6,1,2,16,2,243,2, + 5,10,254,14,1,8,1,8,2,8,1,16,1,14,1,2, + 128,6,3,8,255,2,1,2,128,2,5,12,254,2,128,2, + 2,2,255,24,1,2,128,14,1,4,1,2,254,115,0,1, + 0,0,16,67,9,12,9,18,9,23,24,27,29,47,9,48, + 9,48,36,52,53,57,59,67,36,68,9,33,9,13,15,24, + 26,33,15,18,15,26,15,40,31,39,15,40,9,12,12,15, + 19,23,12,23,9,40,31,41,42,45,47,59,31,60,9,40, + 19,31,32,40,19,41,13,16,37,40,13,16,13,24,25,33, + 13,34,26,30,9,12,9,23,9,18,16,25,13,42,24,40, + 41,45,47,55,24,56,17,21,28,47,28,58,59,63,59,71, + 73,77,28,78,17,25,33,41,32,42,17,20,17,29,20,27, + 28,31,33,47,20,48,13,48,36,48,17,20,17,33,13,32, + 13,47,48,51,48,60,62,70,72,79,13,80,13,80,13,17, + 18,22,24,27,24,36,13,37,13,37,13,37,0,0,9,18, + 9,18,9,18,17,20,17,28,29,37,17,38,13,18,0,0, + 9,86,19,22,19,30,31,39,19,40,13,16,13,16,0,0, + 9,86,16,24,9,86,9,86,9,86,9,86,19,30,31,85, + 32,40,31,85,31,85,31,85,19,86,13,86,0,0,9,19, + 9,36,37,69,71,79,81,88,9,89,9,89,16,19,9,19, + 9,86,115,29,0,0,0,172,40,65,21,0,193,21,9,65, + 30,7,193,32,5,65,38,0,193,38,15,65,53,7,193,63, + 1,65,53,7,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,99,2,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,3,0, + 0,0,115,64,0,0,0,9,0,124,0,160,0,124,1,161, + 1,115,8,100,1,83,0,110,11,35,0,4,0,116,1,121, + 31,1,0,1,0,1,0,89,0,100,1,83,0,37,0,100, + 2,100,3,108,2,109,3,125,2,1,0,124,2,124,0,124, + 1,131,2,83,0,119,0,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,0,0,0,0,41,1,218, + 9,90,105,112,82,101,97,100,101,114,41,4,114,47,0,0, + 0,114,3,0,0,0,90,17,105,109,112,111,114,116,108,105, + 98,46,114,101,97,100,101,114,115,114,87,0,0,0,41,3, + 114,33,0,0,0,114,42,0,0,0,114,87,0,0,0,115, + 3,0,0,0,32,32,32,114,11,0,0,0,218,19,103,101, + 116,95,114,101,115,111,117,114,99,101,95,114,101,97,100,101, + 114,59,1,0,0,115,22,0,0,0,2,6,10,1,4,1, + 2,255,2,128,12,2,6,1,2,128,12,1,10,1,2,253, + 115,22,0,0,0,2,10,8,253,8,1,2,128,2,2,2, + 255,14,1,2,128,12,1,10,1,2,254,115,64,0,0,0, + 9,24,20,24,20,45,36,44,20,45,13,28,24,28,24,28, + 13,28,0,0,9,24,16,30,9,24,9,24,9,24,9,24, + 20,24,20,24,20,24,0,0,9,48,9,48,9,48,9,48, + 9,48,9,48,16,25,26,30,32,40,16,41,9,41,9,24, + 115,12,0,0,0,129,5,9,0,137,7,19,7,159,1,19, + 7,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,99,1,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,3,0,0,0,115,74,0,0,0,9,0,116,0, + 124,0,106,1,131,1,124,0,95,2,124,0,106,2,116,3, + 124,0,106,1,60,0,100,1,83,0,35,0,4,0,116,4, + 121,36,1,0,1,0,1,0,116,3,160,5,124,0,106,1, + 100,1,161,2,1,0,100,1,124,0,95,2,89,0,100,1, + 83,0,37,0,119,0,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,28,0,0,0,114,30,0,0,0, + 114,29,0,0,0,114,26,0,0,0,114,3,0,0,0,218, + 3,112,111,112,169,1,114,33,0,0,0,115,1,0,0,0, + 32,114,11,0,0,0,218,17,105,110,118,97,108,105,100,97, + 116,101,95,99,97,99,104,101,115,74,1,0,0,115,18,0, + 0,0,2,2,12,1,16,1,2,128,12,1,14,1,12,1, + 2,128,2,254,115,22,0,0,0,2,7,12,252,16,1,2, + 128,2,3,2,254,8,2,14,255,12,1,2,128,2,0,115, + 74,0,0,0,9,31,27,42,43,47,43,55,27,56,13,17, + 13,24,50,54,50,61,13,33,34,38,34,46,13,47,13,47, + 13,47,0,0,9,31,16,30,9,31,9,31,9,31,9,31, + 13,33,13,57,38,42,38,50,52,56,13,57,13,57,27,31, + 13,17,13,24,13,24,13,24,13,24,0,0,9,31,115,12, 0,0,0,129,12,15,0,143,17,35,7,164,1,35,7,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,99,1, @@ -576,22 +683,35 @@ const unsigned char _Py_M__zipimport[] = { 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,30,0,0,0,114,21,0,0,0,114,32,0,0,0,114, - 88,0,0,0,115,1,0,0,0,32,114,11,0,0,0,218, - 8,95,95,114,101,112,114,95,95,84,1,0,0,115,2,0, - 0,0,24,1,114,10,0,0,0,122,20,122,105,112,105,109, - 112,111,114,116,101,114,46,95,95,114,101,112,114,95,95,169, - 1,78,41,17,114,6,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,7,95,95,100,111,99,95,95,114,35,0,0, - 0,114,45,0,0,0,114,46,0,0,0,114,50,0,0,0, - 114,56,0,0,0,114,63,0,0,0,114,64,0,0,0,114, - 71,0,0,0,114,47,0,0,0,114,84,0,0,0,114,86, - 0,0,0,114,89,0,0,0,114,90,0,0,0,114,9,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,4,0,0, - 0,46,0,0,0,115,30,0,0,0,8,0,4,1,8,17, - 10,46,10,37,10,16,8,27,8,10,8,21,8,12,8,26, - 8,13,8,43,8,15,12,10,114,10,0,0,0,122,12,95, - 95,105,110,105,116,95,95,46,112,121,99,84,114,67,0,0, - 0,70,41,3,122,4,46,112,121,99,84,70,41,3,114,68, + 90,0,0,0,115,1,0,0,0,32,114,11,0,0,0,218, + 8,95,95,114,101,112,114,95,95,84,1,0,0,243,2,0, + 0,0,24,1,114,93,0,0,0,115,24,0,0,0,16,79, + 40,44,40,52,16,79,54,62,16,79,64,68,64,75,16,79, + 16,79,16,79,9,79,114,10,0,0,0,122,20,122,105,112, + 105,109,112,111,114,116,101,114,46,95,95,114,101,112,114,95, + 95,169,1,78,41,17,114,6,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,7,95,95,100,111,99,95,95,114,35, + 0,0,0,114,45,0,0,0,114,46,0,0,0,114,50,0, + 0,0,114,56,0,0,0,114,64,0,0,0,114,65,0,0, + 0,114,73,0,0,0,114,47,0,0,0,114,86,0,0,0, + 114,88,0,0,0,114,91,0,0,0,114,92,0,0,0,114, + 9,0,0,0,114,10,0,0,0,114,11,0,0,0,114,4, + 0,0,0,46,0,0,0,115,30,0,0,0,8,0,4,1, + 8,17,10,46,10,37,10,16,8,27,8,10,8,21,8,12, + 8,26,8,13,8,43,8,15,12,10,115,38,0,0,0,8, + 210,2,59,2,197,8,102,2,8,8,32,2,5,8,14,2, + 2,8,25,8,9,8,20,8,13,8,25,8,13,8,44,8, + 15,8,10,12,4,115,126,0,0,0,1,1,1,1,1,1, + 1,1,5,8,1,1,5,36,5,36,5,36,5,36,42,46, + 5,24,5,24,5,24,5,24,42,46,5,51,5,51,5,51, + 5,51,42,46,5,28,5,28,5,28,5,28,5,20,5,20, + 5,20,5,20,5,50,5,50,5,50,5,50,5,23,5,23, + 5,23,5,23,5,59,5,59,5,59,5,59,5,18,5,18, + 5,18,5,18,5,19,5,19,5,19,5,19,5,41,5,41, + 5,41,5,41,5,31,5,31,5,31,5,31,5,79,5,79, + 5,79,5,79,5,79,5,79,114,10,0,0,0,122,12,95, + 95,105,110,105,116,95,95,46,112,121,99,84,114,69,0,0, + 0,70,41,3,122,4,46,112,121,99,84,70,41,3,114,70, 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,115,20,0,0,0,124, 0,106,0,124,1,160,1,100,1,161,1,100,2,25,0,23, @@ -599,184 +719,291 @@ const unsigned char _Py_M__zipimport[] = { 114,32,0,0,0,218,10,114,112,97,114,116,105,116,105,111, 110,41,2,114,33,0,0,0,114,42,0,0,0,115,2,0, 0,0,32,32,114,11,0,0,0,114,40,0,0,0,102,1, - 0,0,115,2,0,0,0,20,1,114,10,0,0,0,114,40, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,115,18,0,0,0,124,1,116, - 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,114, - 91,0,0,0,41,2,114,21,0,0,0,114,29,0,0,0, - 41,3,114,33,0,0,0,114,14,0,0,0,90,7,100,105, - 114,112,97,116,104,115,3,0,0,0,32,32,32,114,11,0, - 0,0,114,41,0,0,0,106,1,0,0,115,4,0,0,0, - 8,4,10,2,114,10,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,115,56,0,0,0,116,0,124,0,124,1,131,2, - 125,2,116,1,68,0,93,18,92,3,125,3,125,4,125,5, - 124,2,124,3,23,0,125,6,124,6,124,0,106,2,118,0, - 114,25,124,5,2,0,1,0,83,0,113,7,100,0,83,0, - 114,91,0,0,0,41,3,114,40,0,0,0,218,16,95,122, - 105,112,95,115,101,97,114,99,104,111,114,100,101,114,114,29, - 0,0,0,41,7,114,33,0,0,0,114,42,0,0,0,114, - 14,0,0,0,218,6,115,117,102,102,105,120,218,10,105,115, - 98,121,116,101,99,111,100,101,114,55,0,0,0,114,70,0, - 0,0,115,7,0,0,0,32,32,32,32,32,32,32,114,11, - 0,0,0,114,39,0,0,0,115,1,0,0,115,14,0,0, - 0,10,1,14,1,8,1,10,1,8,1,2,255,4,2,114, - 10,0,0,0,114,39,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,3,0,0,0,115,248, - 4,0,0,9,0,116,0,106,1,124,0,131,1,125,1,110, - 18,35,0,4,0,116,2,144,2,121,123,1,0,1,0,1, - 0,116,3,100,1,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,37,0,124,1,53,0,1,0,9,0,124,1,160, - 4,116,5,11,0,100,3,161,2,1,0,124,1,160,6,161, - 0,125,2,124,1,160,7,116,5,161,1,125,3,110,18,35, - 0,4,0,116,2,144,2,121,122,1,0,1,0,1,0,116, - 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,37,0,116,8,124,3,131,1,116,5,107,3,114,79,116, - 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,3,100,0,100,5,133,2,25,0,116,9,107,3,114, - 204,9,0,124,1,160,4,100,6,100,3,161,2,1,0,124, - 1,160,6,161,0,125,4,110,18,35,0,4,0,116,2,144, - 2,121,121,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,37,0,116,10,124, - 4,116,11,24,0,116,5,24,0,100,6,131,2,125,5,9, - 0,124,1,160,4,124,5,161,1,1,0,124,1,160,7,161, - 0,125,6,110,18,35,0,4,0,116,2,144,2,121,120,1, + 0,0,243,2,0,0,0,20,1,114,99,0,0,0,115,20, + 0,0,0,12,16,12,23,26,34,26,50,46,49,26,50,51, + 52,26,53,12,53,5,53,114,10,0,0,0,114,40,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,3,0,0,0,115,18,0,0,0,124,1,116,0,23, + 0,125,2,124,2,124,0,106,1,118,0,83,0,114,94,0, + 0,0,41,2,114,21,0,0,0,114,29,0,0,0,41,3, + 114,33,0,0,0,114,14,0,0,0,90,7,100,105,114,112, + 97,116,104,115,3,0,0,0,32,32,32,114,11,0,0,0, + 114,41,0,0,0,106,1,0,0,243,4,0,0,0,8,4, + 10,2,114,100,0,0,0,115,18,0,0,0,15,19,22,30, + 15,30,5,12,12,19,23,27,23,34,12,34,5,34,114,10, + 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,115,56,0, + 0,0,116,0,124,0,124,1,131,2,125,2,116,1,68,0, + 93,18,92,3,125,3,125,4,125,5,124,2,124,3,23,0, + 125,6,124,6,124,0,106,2,118,0,114,25,124,5,2,0, + 1,0,83,0,113,7,100,0,83,0,114,94,0,0,0,41, + 3,114,40,0,0,0,218,16,95,122,105,112,95,115,101,97, + 114,99,104,111,114,100,101,114,114,29,0,0,0,41,7,114, + 33,0,0,0,114,42,0,0,0,114,14,0,0,0,218,6, + 115,117,102,102,105,120,218,10,105,115,98,121,116,101,99,111, + 100,101,114,55,0,0,0,114,72,0,0,0,115,7,0,0, + 0,32,32,32,32,32,32,32,114,11,0,0,0,114,39,0, + 0,0,115,1,0,0,115,14,0,0,0,10,1,14,1,8, + 1,10,1,8,1,2,255,4,2,115,16,0,0,0,10,1, + 2,1,4,3,8,253,8,1,8,1,12,1,4,1,115,56, + 0,0,0,12,28,29,33,35,43,12,44,5,9,42,58,5, + 29,5,29,9,38,9,15,17,27,29,38,20,24,27,33,20, + 33,9,17,12,20,24,28,24,35,12,35,9,29,20,29,13, + 29,13,29,13,29,9,29,12,16,12,16,114,10,0,0,0, + 114,39,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,3,0,0,0,115,248,4,0,0,9, + 0,116,0,106,1,124,0,131,1,125,1,110,18,35,0,4, + 0,116,2,144,2,121,123,1,0,1,0,1,0,116,3,100, + 1,124,0,155,2,157,2,124,0,100,2,141,2,130,1,37, + 0,124,1,53,0,1,0,9,0,124,1,160,4,116,5,11, + 0,100,3,161,2,1,0,124,1,160,6,161,0,125,2,124, + 1,160,7,116,5,161,1,125,3,110,18,35,0,4,0,116, + 2,144,2,121,122,1,0,1,0,1,0,116,3,100,4,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,37,0,116, + 8,124,3,131,1,116,5,107,3,114,79,116,3,100,4,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,3,100, + 0,100,5,133,2,25,0,116,9,107,3,114,204,9,0,124, + 1,160,4,100,6,100,3,161,2,1,0,124,1,160,6,161, + 0,125,4,110,18,35,0,4,0,116,2,144,2,121,121,1, 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,37,0,124,6,160,12,116,9,161, - 1,125,7,124,7,100,6,107,0,114,173,116,3,100,7,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,6,124, - 7,124,7,116,5,23,0,133,2,25,0,125,3,116,8,124, - 3,131,1,116,5,107,3,114,196,116,3,100,8,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,4,116,8,124, - 6,131,1,24,0,124,7,23,0,125,2,116,13,124,3,100, - 9,100,10,133,2,25,0,131,1,125,8,116,13,124,3,100, - 10,100,11,133,2,25,0,131,1,125,9,124,2,124,8,107, - 0,114,233,116,3,100,12,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,124,2,124,9,107,0,114,246,116,3,100, - 13,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, - 2,124,8,56,0,125,2,124,2,124,9,24,0,125,10,124, - 10,100,6,107,0,144,1,114,12,116,3,100,14,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,105,0,125,11,100, - 6,125,12,9,0,124,1,160,4,124,2,161,1,1,0,110, - 18,35,0,4,0,116,2,144,2,121,119,1,0,1,0,1, + 0,100,2,141,2,130,1,37,0,116,10,124,4,116,11,24, + 0,116,5,24,0,100,6,131,2,125,5,9,0,124,1,160, + 4,124,5,161,1,1,0,124,1,160,7,161,0,125,6,110, + 18,35,0,4,0,116,2,144,2,121,120,1,0,1,0,1, 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,37,0,9,0,124,1,160,7,100,16,161,1,125, - 3,116,8,124,3,131,1,100,5,107,0,144,1,114,58,116, - 14,100,17,131,1,130,1,124,3,100,0,100,5,133,2,25, - 0,100,18,107,3,144,1,114,69,144,2,113,88,116,8,124, - 3,131,1,100,16,107,3,144,1,114,80,116,14,100,17,131, - 1,130,1,116,15,124,3,100,19,100,20,133,2,25,0,131, - 1,125,13,116,15,124,3,100,20,100,9,133,2,25,0,131, - 1,125,14,116,15,124,3,100,9,100,21,133,2,25,0,131, - 1,125,15,116,15,124,3,100,21,100,10,133,2,25,0,131, - 1,125,16,116,13,124,3,100,10,100,11,133,2,25,0,131, - 1,125,17,116,13,124,3,100,11,100,22,133,2,25,0,131, - 1,125,18,116,13,124,3,100,22,100,23,133,2,25,0,131, - 1,125,4,116,15,124,3,100,23,100,24,133,2,25,0,131, - 1,125,19,116,15,124,3,100,24,100,25,133,2,25,0,131, - 1,125,20,116,15,124,3,100,25,100,26,133,2,25,0,131, - 1,125,21,116,13,124,3,100,27,100,16,133,2,25,0,131, - 1,125,22,124,19,124,20,23,0,124,21,23,0,125,8,124, - 22,124,9,107,4,144,1,114,188,116,3,100,28,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,22,124,10,55, - 0,125,22,9,0,124,1,160,7,124,19,161,1,125,23,110, - 18,35,0,4,0,116,2,144,2,121,118,1,0,1,0,1, - 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,37,0,116,8,124,23,131,1,124,19,107,3,144, - 1,114,233,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,9,0,116,8,124,1,160,7,124,8,124, - 19,24,0,161,1,131,1,124,8,124,19,24,0,107,3,144, - 2,114,1,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,110,18,35,0,4,0,116,2,144,2,121, - 117,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,37,0,124,13,100,29,64, - 0,144,2,114,30,124,23,160,16,161,0,125,23,110,26,9, - 0,124,23,160,16,100,30,161,1,125,23,110,19,35,0,4, - 0,116,17,144,2,121,116,1,0,1,0,1,0,124,23,160, - 16,100,31,161,1,160,18,116,19,161,1,125,23,89,0,110, - 1,37,0,124,23,160,20,100,32,116,21,161,2,125,23,116, - 22,106,23,124,0,124,23,131,2,125,24,124,24,124,14,124, - 18,124,4,124,22,124,15,124,16,124,17,102,8,125,25,124, - 25,124,11,124,23,60,0,124,12,100,33,55,0,125,12,144, - 1,113,42,9,0,100,0,4,0,4,0,131,3,1,0,110, - 12,35,0,49,0,144,2,115,101,119,4,37,0,1,0,1, - 0,1,0,89,0,1,0,1,0,116,24,106,25,100,34,124, - 12,124,0,131,3,1,0,124,11,83,0,119,0,119,0,119, - 0,119,0,119,0,119,0,119,0,119,0,41,35,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,13,0,0,0,114,94,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,0,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,84,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,90,6,108,97,116, - 105,110,49,250,1,47,114,5,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,23,0,0,0,114,3,0,0,0,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,90,4,116,101,108,108,218,4,114,101, - 97,100,114,59,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,2,0,0,0,218,8,69, - 79,70,69,114,114,111,114,114,1,0,0,0,114,69,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,20,0, - 0,0,114,21,0,0,0,114,22,0,0,0,114,31,0,0, - 0,114,49,0,0,0,114,82,0,0,0,41,26,114,30,0, - 0,0,218,2,102,112,90,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,90,17,109,97,120,95, - 99,111,109,109,101,110,116,95,115,116,97,114,116,218,4,100, - 97,116,97,90,3,112,111,115,218,11,104,101,97,100,101,114, - 95,115,105,122,101,90,13,104,101,97,100,101,114,95,111,102, - 102,115,101,116,90,10,97,114,99,95,111,102,102,115,101,116, - 114,34,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, - 90,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,48,0,0,0, - 114,14,0,0,0,218,1,116,115,26,0,0,0,32,32,32, + 2,130,1,37,0,124,6,160,12,116,9,161,1,125,7,124, + 7,100,6,107,0,114,173,116,3,100,7,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,124,6,124,7,124,7,116, + 5,23,0,133,2,25,0,125,3,116,8,124,3,131,1,116, + 5,107,3,114,196,116,3,100,8,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,4,116,8,124,6,131,1,24, + 0,124,7,23,0,125,2,116,13,124,3,100,9,100,10,133, + 2,25,0,131,1,125,8,116,13,124,3,100,10,100,11,133, + 2,25,0,131,1,125,9,124,2,124,8,107,0,114,233,116, + 3,100,12,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,2,124,9,107,0,114,246,116,3,100,13,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,2,124,8,56, + 0,125,2,124,2,124,9,24,0,125,10,124,10,100,6,107, + 0,144,1,114,12,116,3,100,14,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,105,0,125,11,100,6,125,12,9, + 0,124,1,160,4,124,2,161,1,1,0,110,18,35,0,4, + 0,116,2,144,2,121,119,1,0,1,0,1,0,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,37, + 0,9,0,124,1,160,7,100,16,161,1,125,3,116,8,124, + 3,131,1,100,5,107,0,144,1,114,58,116,14,100,17,131, + 1,130,1,124,3,100,0,100,5,133,2,25,0,100,18,107, + 3,144,1,114,69,144,2,113,88,116,8,124,3,131,1,100, + 16,107,3,144,1,114,80,116,14,100,17,131,1,130,1,116, + 15,124,3,100,19,100,20,133,2,25,0,131,1,125,13,116, + 15,124,3,100,20,100,9,133,2,25,0,131,1,125,14,116, + 15,124,3,100,9,100,21,133,2,25,0,131,1,125,15,116, + 15,124,3,100,21,100,10,133,2,25,0,131,1,125,16,116, + 13,124,3,100,10,100,11,133,2,25,0,131,1,125,17,116, + 13,124,3,100,11,100,22,133,2,25,0,131,1,125,18,116, + 13,124,3,100,22,100,23,133,2,25,0,131,1,125,4,116, + 15,124,3,100,23,100,24,133,2,25,0,131,1,125,19,116, + 15,124,3,100,24,100,25,133,2,25,0,131,1,125,20,116, + 15,124,3,100,25,100,26,133,2,25,0,131,1,125,21,116, + 13,124,3,100,27,100,16,133,2,25,0,131,1,125,22,124, + 19,124,20,23,0,124,21,23,0,125,8,124,22,124,9,107, + 4,144,1,114,188,116,3,100,28,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,22,124,10,55,0,125,22,9, + 0,124,1,160,7,124,19,161,1,125,23,110,18,35,0,4, + 0,116,2,144,2,121,118,1,0,1,0,1,0,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,37, + 0,116,8,124,23,131,1,124,19,107,3,144,1,114,233,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,9,0,116,8,124,1,160,7,124,8,124,19,24,0,161, + 1,131,1,124,8,124,19,24,0,107,3,144,2,114,1,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,110,18,35,0,4,0,116,2,144,2,121,117,1,0,1, + 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,37,0,124,13,100,29,64,0,144,2,114, + 30,124,23,160,16,161,0,125,23,110,26,9,0,124,23,160, + 16,100,30,161,1,125,23,110,19,35,0,4,0,116,17,144, + 2,121,116,1,0,1,0,1,0,124,23,160,16,100,31,161, + 1,160,18,116,19,161,1,125,23,89,0,110,1,37,0,124, + 23,160,20,100,32,116,21,161,2,125,23,116,22,106,23,124, + 0,124,23,131,2,125,24,124,24,124,14,124,18,124,4,124, + 22,124,15,124,16,124,17,102,8,125,25,124,25,124,11,124, + 23,60,0,124,12,100,33,55,0,125,12,144,1,113,42,9, + 0,100,0,4,0,4,0,131,3,1,0,110,12,35,0,49, + 0,144,2,115,101,119,4,37,0,1,0,1,0,1,0,89, + 0,1,0,1,0,116,24,106,25,100,34,124,12,124,0,131, + 3,1,0,124,11,83,0,119,0,119,0,119,0,119,0,119, + 0,119,0,119,0,119,0,41,35,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,13,0,0,0,114,97,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,0,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,84,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,90,6,108,97,116,105,110,49,250, + 1,47,114,5,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,23,0,0, + 0,114,3,0,0,0,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,90,4,116,101,108,108,218,4,114,101,97,100,114,60, + 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,2,0,0,0,218,8,69,79,70,69,114, + 114,111,114,114,1,0,0,0,114,71,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,20,0,0,0,114,21, + 0,0,0,114,22,0,0,0,114,31,0,0,0,114,49,0, + 0,0,114,84,0,0,0,41,26,114,30,0,0,0,218,2, + 102,112,90,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,90,17,109,97,120,95,99,111,109,109, + 101,110,116,95,115,116,97,114,116,218,4,100,97,116,97,90, + 3,112,111,115,218,11,104,101,97,100,101,114,95,115,105,122, + 101,90,13,104,101,97,100,101,114,95,111,102,102,115,101,116, + 90,10,97,114,99,95,111,102,102,115,101,116,114,34,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,90,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,48,0,0,0,114,14,0,0, + 0,218,1,116,115,26,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,32,32,32,114,11,0,0,0,114,28,0,0, - 0,146,1,0,0,115,18,1,0,0,2,1,12,1,2,128, - 14,1,18,1,2,128,6,2,2,1,14,1,8,1,12,1, - 2,128,14,1,18,1,2,128,12,1,18,1,16,1,2,3, - 12,1,10,1,2,128,14,1,10,1,2,1,6,255,2,128, - 8,2,2,1,2,255,2,1,4,255,2,2,10,1,10,1, - 2,128,14,1,10,1,2,1,6,255,2,128,10,2,8,1, - 10,1,2,1,6,255,16,2,12,1,10,1,2,1,6,255, - 16,2,16,2,16,1,8,1,18,1,8,1,18,1,8,1, - 8,1,10,1,18,1,4,2,4,2,2,1,12,1,2,128, - 14,1,18,1,2,128,2,1,10,1,14,1,8,1,18,2, - 4,1,14,1,8,1,16,1,16,1,16,1,16,1,16,1, - 16,1,16,1,16,1,16,1,16,1,16,1,12,1,10,1, - 18,1,8,1,2,2,12,1,2,128,14,1,18,1,2,128, - 14,1,18,1,2,4,28,1,18,1,2,255,2,128,14,2, - 18,1,2,128,10,2,10,2,2,3,12,1,2,128,14,1, - 20,1,2,128,12,2,12,1,20,1,8,1,8,1,4,202, - 2,6,22,196,2,128,12,0,14,109,4,1,2,247,2,246, - 2,246,2,227,2,227,2,248,2,246,2,248,115,235,0,0, + 32,32,32,114,11,0,0,0,114,28,0,0,0,146,1,0, + 0,115,18,1,0,0,2,1,12,1,2,128,14,1,18,1, + 2,128,6,2,2,1,14,1,8,1,12,1,2,128,14,1, + 18,1,2,128,12,1,18,1,16,1,2,3,12,1,10,1, + 2,128,14,1,10,1,2,1,6,255,2,128,8,2,2,1, + 2,255,2,1,4,255,2,2,10,1,10,1,2,128,14,1, + 10,1,2,1,6,255,2,128,10,2,8,1,10,1,2,1, + 6,255,16,2,12,1,10,1,2,1,6,255,16,2,16,2, + 16,1,8,1,18,1,8,1,18,1,8,1,8,1,10,1, + 18,1,4,2,4,2,2,1,12,1,2,128,14,1,18,1, + 2,128,2,1,10,1,14,1,8,1,18,2,4,1,14,1, + 8,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,12,1,10,1,18,1,8,1, + 2,2,12,1,2,128,14,1,18,1,2,128,14,1,18,1, + 2,4,28,1,18,1,2,255,2,128,14,2,18,1,2,128, + 10,2,10,2,2,3,12,1,2,128,14,1,20,1,2,128, + 12,2,12,1,20,1,8,1,8,1,4,202,2,6,22,196, + 2,128,12,0,14,109,4,1,2,247,2,246,2,246,2,227, + 2,227,2,248,2,246,2,248,115,34,1,0,0,2,4,12, + 254,2,128,2,2,2,255,28,1,2,128,2,2,4,108,2, + 154,14,252,8,1,12,1,2,128,2,2,2,255,28,1,2, + 128,10,1,20,1,14,1,2,25,2,239,12,252,10,1,2, + 128,2,3,2,254,10,2,10,255,8,1,2,128,8,1,8, + 1,2,255,2,7,10,252,10,1,2,128,2,3,2,254,10, + 2,10,255,8,1,2,128,10,1,6,1,2,2,10,255,8, + 1,16,1,10,1,2,2,10,255,8,1,16,1,16,2,16, + 1,6,1,20,1,6,1,20,1,8,1,8,1,6,1,22, + 1,4,2,4,2,2,4,12,254,2,128,2,2,2,255,28, + 1,2,128,2,1,10,1,10,1,12,1,14,2,8,1,10, + 1,12,1,16,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,12,1,6,1,22,1,8, + 1,2,5,12,254,2,128,2,2,2,255,28,1,2,128,10, + 1,22,1,2,8,24,253,24,1,2,128,2,2,2,255,28, + 1,2,128,6,2,4,8,10,250,2,6,12,254,2,128,2, + 2,2,255,30,1,2,128,12,2,12,1,20,1,8,1,8, + 1,4,202,2,6,22,48,2,128,12,0,14,1,4,1,2, + 248,2,246,2,246,2,227,2,228,2,248,2,245,2,248,115, + 248,4,0,0,5,80,14,17,14,27,28,35,14,36,9,11, + 9,11,0,0,5,80,12,19,5,80,5,80,5,80,5,80, + 5,80,15,29,30,65,31,38,30,65,30,65,72,79,15,80, + 15,80,9,80,0,0,10,12,5,23,5,23,9,84,13,15, + 13,46,22,42,21,42,44,45,13,46,13,46,31,33,31,40, + 31,40,13,28,22,24,22,51,30,50,22,51,13,19,13,19, + 0,0,9,84,16,23,9,84,9,84,9,84,9,84,9,84, + 19,33,34,69,35,42,34,69,34,69,76,83,19,84,19,84, + 13,84,0,0,12,15,16,22,12,23,27,47,12,47,9,84, + 19,33,34,69,35,42,34,69,34,69,76,83,19,84,19,84, + 13,84,12,18,19,21,20,21,19,21,12,22,26,44,12,44, + 9,58,13,51,17,19,17,30,25,26,28,29,17,30,17,30, + 29,31,29,38,29,38,17,26,17,26,0,0,13,51,20,27, + 13,51,13,51,13,51,13,51,13,51,23,37,38,73,39,46, + 38,73,38,73,43,50,23,51,23,51,17,51,0,0,33,36, + 37,46,49,64,37,64,37,57,37,57,59,60,33,61,13,30, + 13,51,17,19,17,43,25,42,17,43,17,43,24,26,24,33, + 24,33,17,21,17,21,0,0,13,51,20,27,13,51,13,51, + 13,51,13,51,13,51,23,37,38,73,39,46,38,73,38,73, + 43,50,23,51,23,51,17,51,0,0,19,23,19,49,30,48, + 19,49,13,16,16,19,22,23,16,23,13,51,23,37,38,68, + 39,46,38,68,38,68,43,50,23,51,23,51,17,51,22,26, + 27,30,31,34,35,55,31,55,27,55,22,56,13,19,16,19, + 20,26,16,27,31,51,16,51,13,51,23,37,38,70,39,46, + 38,70,38,70,43,50,23,51,23,51,17,51,31,40,43,46, + 47,51,43,52,31,52,55,58,31,58,13,28,23,37,38,44, + 45,47,48,50,45,50,38,51,23,52,9,20,25,39,40,46, + 47,49,50,52,47,52,40,53,25,54,9,22,12,27,30,41, + 12,41,9,91,19,33,34,76,35,42,34,76,34,76,83,90, + 19,91,19,91,13,91,12,27,30,43,12,43,9,93,19,33, + 34,78,35,42,34,78,34,78,85,92,19,93,19,93,13,93, + 9,24,28,39,9,39,9,24,22,37,40,53,22,53,9,19, + 12,22,25,26,12,26,9,101,9,101,19,33,34,86,35,42, + 34,86,34,86,93,100,19,101,19,101,13,101,17,19,9,14, + 17,18,9,14,9,84,13,15,13,37,21,36,13,37,13,37, + 13,37,0,0,9,84,16,23,9,84,9,84,9,84,9,84, + 9,84,19,33,34,69,35,42,34,69,34,69,76,83,19,84, + 19,84,13,84,0,0,15,19,22,24,22,33,30,32,22,33, + 13,19,16,19,20,26,16,27,30,31,16,31,13,62,13,62, + 23,31,32,61,23,62,17,62,16,22,23,25,24,25,23,25, + 16,26,30,43,16,43,13,22,13,22,17,22,17,22,16,19, + 20,26,16,27,31,33,16,33,13,62,13,62,23,31,32,61, + 23,62,17,62,21,35,36,42,43,44,45,47,43,47,36,48, + 21,49,13,18,24,38,39,45,46,48,49,51,46,51,39,52, + 24,53,13,21,20,34,35,41,42,44,45,47,42,47,35,48, + 20,49,13,17,20,34,35,41,42,44,45,47,42,47,35,48, + 20,49,13,17,19,33,34,40,41,43,44,46,41,46,34,47, + 19,48,13,16,25,39,40,46,47,49,50,52,47,52,40,53, + 25,54,13,22,25,39,40,46,47,49,50,52,47,52,40,53, + 25,54,13,22,25,39,40,46,47,49,50,52,47,52,40,53, + 25,54,13,22,26,40,41,47,48,50,51,53,48,53,41,54, + 26,55,13,23,28,42,43,49,50,52,53,55,50,55,43,56, + 28,57,13,25,27,41,42,48,49,51,52,54,49,54,42,55, + 27,56,13,24,27,36,39,49,27,49,52,64,27,64,13,24, + 16,27,30,43,16,43,13,92,13,92,23,37,38,77,39,46, + 38,77,38,77,84,91,23,92,23,92,17,92,13,24,28,38, + 13,38,13,24,13,88,24,26,24,42,32,41,24,42,17,21, + 17,21,0,0,13,88,20,27,13,88,13,88,13,88,13,88, + 13,88,23,37,38,73,39,46,38,73,38,73,80,87,23,88, + 23,88,17,88,0,0,16,19,20,24,16,25,29,38,16,38, + 13,88,13,88,23,37,38,73,39,46,38,73,38,73,80,87, + 23,88,23,88,17,88,13,88,20,23,24,26,24,56,32,43, + 46,55,32,55,24,56,20,57,61,72,75,84,61,84,20,84, + 17,92,17,92,27,41,42,77,43,50,42,77,42,77,84,91, + 27,92,27,92,21,92,17,92,0,0,13,88,20,27,13,88, + 13,88,13,88,13,88,13,88,23,37,38,73,39,46,38,73, + 38,73,80,87,23,88,23,88,17,88,0,0,16,21,24,29, + 16,29,13,72,13,72,24,28,24,37,24,37,17,21,17,21, + 17,72,28,32,28,48,40,47,28,48,21,25,21,25,0,0, + 17,72,24,42,17,72,17,72,17,72,17,72,17,72,28,32, + 28,49,40,48,28,49,28,72,60,71,28,72,21,25,21,25, + 21,25,0,0,20,24,20,47,33,36,38,46,20,47,13,17, + 20,39,20,50,51,58,60,64,20,65,13,17,18,22,24,32, + 34,43,45,54,56,67,69,73,75,79,81,84,17,85,13,14, + 27,28,13,18,19,23,13,24,13,18,22,23,13,23,13,18, + 15,19,15,19,17,22,5,23,5,23,5,23,5,23,5,23, + 5,23,5,23,5,23,5,23,5,23,5,23,0,0,5,23, + 5,23,5,23,5,23,5,23,5,23,5,15,5,32,33,68, + 70,75,77,84,5,85,5,85,12,17,5,17,17,72,13,88, + 13,88,9,84,13,51,13,51,9,84,5,80,115,235,0,0, 0,129,5,7,0,135,17,24,7,155,1,73,31,3,157,16, 46,2,173,1,73,31,3,174,17,63,9,191,24,73,31,3, 193,24,10,65,35,2,193,34,1,73,31,3,193,35,17,65, @@ -838,205 +1065,296 @@ const unsigned char _Py_M__zipimport[] = { 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,49,0,0,0,114, - 82,0,0,0,114,3,0,0,0,90,4,122,108,105,98,114, - 148,0,0,0,218,9,69,120,99,101,112,116,105,111,110,114, - 147,0,0,0,115,1,0,0,0,32,114,11,0,0,0,218, + 84,0,0,0,114,3,0,0,0,90,4,122,108,105,98,114, + 153,0,0,0,218,9,69,120,99,101,112,116,105,111,110,114, + 152,0,0,0,115,1,0,0,0,32,114,11,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,48,2,0,0,115,36,0,0,0,4,2, 10,3,8,1,4,2,2,1,14,1,2,128,12,1,10,1, 8,1,2,128,2,253,6,5,2,128,8,0,10,2,4,1, - 2,249,115,24,0,0,0,142,6,21,0,148,1,42,0,149, - 16,37,7,165,1,42,0,170,4,46,7,182,1,37,7,114, - 151,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,9,0,0,0,3,0,0,0,115,132,1,0,0,124,1, - 92,8,125,2,125,3,125,4,125,5,125,6,125,7,125,8, - 125,9,124,4,100,1,107,0,114,18,116,0,100,2,131,1, - 130,1,116,1,106,2,124,0,131,1,53,0,125,10,9,0, - 124,10,160,3,124,6,161,1,1,0,110,17,35,0,4,0, - 116,4,121,193,1,0,1,0,1,0,116,0,100,3,124,0, - 155,2,157,2,124,0,100,4,141,2,130,1,37,0,124,10, - 160,5,100,5,161,1,125,11,116,6,124,11,131,1,100,5, - 107,3,114,63,116,7,100,6,131,1,130,1,124,11,100,0, - 100,7,133,2,25,0,100,8,107,3,114,80,116,0,100,9, - 124,0,155,2,157,2,124,0,100,4,141,2,130,1,116,8, - 124,11,100,10,100,11,133,2,25,0,131,1,125,12,116,8, - 124,11,100,11,100,5,133,2,25,0,131,1,125,13,100,5, - 124,12,23,0,124,13,23,0,125,14,124,6,124,14,55,0, - 125,6,9,0,124,10,160,3,124,6,161,1,1,0,110,17, - 35,0,4,0,116,4,121,192,1,0,1,0,1,0,116,0, - 100,3,124,0,155,2,157,2,124,0,100,4,141,2,130,1, - 37,0,124,10,160,5,124,4,161,1,125,15,116,6,124,15, - 131,1,124,4,107,3,114,145,116,4,100,12,131,1,130,1, - 9,0,100,0,4,0,4,0,131,3,1,0,110,11,35,0, - 49,0,115,157,119,4,37,0,1,0,1,0,1,0,89,0, - 1,0,1,0,124,3,100,1,107,2,114,169,124,15,83,0, - 9,0,116,9,131,0,125,16,110,12,35,0,4,0,116,10, - 121,191,1,0,1,0,1,0,116,0,100,13,131,1,130,1, - 37,0,124,16,124,15,100,14,131,2,83,0,119,0,119,0, - 119,0,41,15,78,114,0,0,0,0,122,18,110,101,103,97, - 116,105,118,101,32,100,97,116,97,32,115,105,122,101,114,99, - 0,0,0,114,13,0,0,0,114,111,0,0,0,114,105,0, - 0,0,114,100,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,110, - 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, - 146,0,0,0,105,241,255,255,255,41,11,114,3,0,0,0, - 114,117,0,0,0,114,118,0,0,0,114,119,0,0,0,114, - 23,0,0,0,114,121,0,0,0,114,59,0,0,0,114,126, - 0,0,0,114,1,0,0,0,114,151,0,0,0,114,150,0, - 0,0,41,17,114,30,0,0,0,114,62,0,0,0,90,8, - 100,97,116,97,112,97,116,104,114,137,0,0,0,114,141,0, - 0,0,114,132,0,0,0,114,144,0,0,0,114,138,0,0, - 0,114,139,0,0,0,114,140,0,0,0,114,130,0,0,0, - 114,131,0,0,0,114,142,0,0,0,114,143,0,0,0,114, - 134,0,0,0,90,8,114,97,119,95,100,97,116,97,114,148, - 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,11,0,0,0,114,60, - 0,0,0,69,2,0,0,115,88,0,0,0,20,1,8,1, - 8,1,12,2,2,2,12,1,2,128,12,1,18,1,2,128, - 10,1,12,1,8,1,16,2,18,2,16,2,16,1,12,1, - 8,1,2,1,12,1,2,128,12,1,18,1,2,128,10,1, - 12,1,8,1,2,255,20,233,2,128,12,0,8,26,4,2, - 2,3,8,1,2,128,12,1,8,1,2,128,10,1,2,254, - 2,243,2,240,115,88,0,0,0,151,1,66,24,3,153,5, - 31,2,158,1,66,24,3,159,16,47,9,175,59,66,24,3, - 193,43,5,65,49,2,193,48,1,66,24,3,193,49,16,66, - 1,9,194,1,16,66,24,3,194,24,4,66,28,11,194,29, - 3,66,28,11,194,42,3,66,46,0,194,46,11,66,57,7, - 194,63,1,66,57,7,195,0,1,66,1,9,195,1,1,47, - 9,114,60,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,3,0,0,0,115,16,0,0,0, - 116,0,124,0,124,1,24,0,131,1,100,1,107,1,83,0, - 41,2,78,114,5,0,0,0,41,1,218,3,97,98,115,41, - 2,90,2,116,49,90,2,116,50,115,2,0,0,0,32,32, - 114,11,0,0,0,218,9,95,101,113,95,109,116,105,109,101, - 115,2,0,0,115,2,0,0,0,16,2,114,10,0,0,0, - 114,154,0,0,0,99,5,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,3,0,0,0,115,254,0,0,0,124, - 3,124,2,100,1,156,2,125,5,116,0,106,1,124,4,124, - 3,124,5,131,3,125,6,124,6,100,2,64,0,100,3,107, - 3,125,7,124,7,114,63,124,6,100,4,64,0,100,3,107, - 3,125,8,116,2,106,3,100,5,107,3,114,62,124,8,115, - 38,116,2,106,3,100,6,107,2,114,62,116,4,124,0,124, - 2,131,2,125,9,124,9,100,0,117,1,114,62,116,2,106, - 5,116,0,106,6,124,9,131,2,125,10,116,0,106,7,124, - 4,124,10,124,3,124,5,131,4,1,0,110,40,116,8,124, - 0,124,2,131,2,92,2,125,11,125,12,124,11,114,103,116, - 9,116,10,124,4,100,7,100,8,133,2,25,0,131,1,124, - 11,131,2,114,93,116,10,124,4,100,8,100,9,133,2,25, - 0,131,1,124,12,107,3,114,103,116,11,106,12,100,10,124, - 3,155,2,157,2,131,1,1,0,100,0,83,0,116,13,106, - 14,124,4,100,9,100,0,133,2,25,0,131,1,125,13,116, - 15,124,13,116,16,131,2,115,125,116,17,100,11,124,1,155, - 2,100,12,157,3,131,1,130,1,124,13,83,0,41,13,78, - 41,2,114,48,0,0,0,114,14,0,0,0,114,5,0,0, - 0,114,0,0,0,0,114,94,0,0,0,90,5,110,101,118, - 101,114,90,6,97,108,119,97,121,115,114,106,0,0,0,114, - 101,0,0,0,114,102,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,22,0,0, - 0,90,13,95,99,108,97,115,115,105,102,121,95,112,121,99, - 218,4,95,105,109,112,90,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,90,17,95,82,65, - 87,95,77,65,71,73,67,95,78,85,77,66,69,82,90,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,154,0,0,0,114,2,0,0,0,114,49,0,0,0, - 114,82,0,0,0,218,7,109,97,114,115,104,97,108,90,5, - 108,111,97,100,115,114,16,0,0,0,218,10,95,99,111,100, - 101,95,116,121,112,101,218,9,84,121,112,101,69,114,114,111, - 114,41,14,114,33,0,0,0,114,61,0,0,0,114,70,0, - 0,0,114,42,0,0,0,114,133,0,0,0,90,11,101,120, - 99,95,100,101,116,97,105,108,115,114,136,0,0,0,90,10, - 104,97,115,104,95,98,97,115,101,100,90,12,99,104,101,99, - 107,95,115,111,117,114,99,101,90,12,115,111,117,114,99,101, - 95,98,121,116,101,115,114,157,0,0,0,90,12,115,111,117, - 114,99,101,95,109,116,105,109,101,90,11,115,111,117,114,99, - 101,95,115,105,122,101,114,54,0,0,0,115,14,0,0,0, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,11, - 0,0,0,218,15,95,117,110,109,97,114,115,104,97,108,95, - 99,111,100,101,123,2,0,0,115,72,0,0,0,2,2,2, - 1,6,254,14,5,12,2,4,1,12,1,10,1,2,1,2, - 255,8,1,2,255,10,2,8,1,4,1,4,1,2,1,4, - 254,4,5,8,1,4,255,2,128,8,4,6,255,4,3,22, - 3,18,1,2,255,4,2,8,1,4,255,4,2,18,2,10, - 1,16,1,4,1,114,10,0,0,0,114,162,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,115,28,0,0,0,124,0,160,0,100,1,100, - 2,161,2,125,0,124,0,160,0,100,3,100,2,161,2,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,20,0, - 0,0,41,1,218,6,115,111,117,114,99,101,115,1,0,0, - 0,32,114,11,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, - 168,2,0,0,115,6,0,0,0,12,1,12,1,4,1,114, - 10,0,0,0,114,166,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,3,0,0,0,115,24, - 0,0,0,116,0,124,1,131,1,125,1,116,1,124,1,124, - 0,100,1,100,2,100,3,141,4,83,0,41,4,78,114,80, - 0,0,0,84,41,1,90,12,100,111,110,116,95,105,110,104, - 101,114,105,116,41,2,114,166,0,0,0,218,7,99,111,109, - 112,105,108,101,41,2,114,61,0,0,0,114,165,0,0,0, - 115,2,0,0,0,32,32,114,11,0,0,0,218,15,95,99, - 111,109,112,105,108,101,95,115,111,117,114,99,101,175,2,0, - 0,115,4,0,0,0,8,1,16,1,114,10,0,0,0,114, - 168,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,10,0,0,0,3,0,0,0,115,68,0,0,0,116,0, - 106,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, - 63,0,100,4,64,0,124,0,100,5,64,0,124,1,100,6, - 63,0,124,1,100,3,63,0,100,7,64,0,124,1,100,5, - 64,0,100,8,20,0,100,9,100,9,100,9,102,9,131,1, - 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,94,0,0,0,114,15,0, - 0,0,41,2,114,138,0,0,0,90,6,109,107,116,105,109, - 101,41,2,218,1,100,114,145,0,0,0,115,2,0,0,0, - 32,32,114,11,0,0,0,218,14,95,112,97,114,115,101,95, - 100,111,115,116,105,109,101,181,2,0,0,115,18,0,0,0, - 4,1,10,1,10,1,6,1,6,1,10,1,10,1,6,1, - 6,249,114,10,0,0,0,114,176,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,10,0,0,0,3,0,0, - 0,115,112,0,0,0,9,0,124,1,100,1,100,0,133,2, - 25,0,100,2,118,0,115,11,74,0,130,1,124,1,100,0, - 100,1,133,2,25,0,125,1,124,0,106,0,124,1,25,0, - 125,2,124,2,100,3,25,0,125,3,124,2,100,4,25,0, - 125,4,124,2,100,5,25,0,125,5,116,1,124,4,124,3, - 131,2,124,5,102,2,83,0,35,0,4,0,116,2,116,3, - 116,4,102,3,121,55,1,0,1,0,1,0,89,0,100,6, - 83,0,37,0,119,0,41,7,78,114,15,0,0,0,169,2, - 218,1,99,218,1,111,114,170,0,0,0,233,6,0,0,0, - 233,3,0,0,0,41,2,114,0,0,0,0,114,0,0,0, - 0,41,5,114,29,0,0,0,114,176,0,0,0,114,27,0, - 0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,161, - 0,0,0,41,6,114,33,0,0,0,114,14,0,0,0,114, - 62,0,0,0,114,138,0,0,0,114,139,0,0,0,90,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,11,0,0, - 0,114,158,0,0,0,194,2,0,0,115,26,0,0,0,2, - 1,20,2,12,1,10,1,8,3,8,1,8,1,14,1,2, - 128,18,1,6,1,2,128,2,255,115,12,0,0,0,129,39, - 41,0,169,10,54,7,183,1,54,7,114,158,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 3,0,0,0,115,82,0,0,0,124,1,100,1,100,0,133, - 2,25,0,100,2,118,0,115,10,74,0,130,1,124,1,100, - 0,100,1,133,2,25,0,125,1,9,0,124,0,106,0,124, - 1,25,0,125,2,110,11,35,0,4,0,116,1,121,40,1, - 0,1,0,1,0,89,0,100,0,83,0,37,0,116,2,124, - 0,106,3,124,2,131,2,83,0,119,0,41,3,78,114,15, - 0,0,0,114,177,0,0,0,41,4,114,29,0,0,0,114, - 27,0,0,0,114,60,0,0,0,114,30,0,0,0,41,3, - 114,33,0,0,0,114,14,0,0,0,114,62,0,0,0,115, - 3,0,0,0,32,32,32,114,11,0,0,0,114,156,0,0, - 0,213,2,0,0,115,20,0,0,0,20,2,12,1,2,2, - 12,1,2,128,12,1,6,1,2,128,12,2,2,253,115,12, + 2,249,115,42,0,0,0,2,2,2,4,10,255,8,1,4, + 2,2,7,14,251,2,128,2,3,2,254,8,2,10,255,8, + 1,2,128,2,253,6,5,2,128,8,0,10,2,4,1,2, + 251,115,110,0,0,0,8,23,5,74,9,19,9,36,37,66, + 9,67,9,67,15,29,30,73,15,74,9,74,23,27,5,20, + 5,32,9,36,9,36,9,36,9,36,9,36,9,36,9,36, + 0,0,5,74,12,21,5,74,5,74,5,74,5,74,9,19, + 9,36,37,66,9,67,9,67,15,29,30,73,15,74,9,74, + 0,0,9,36,27,32,9,24,9,24,0,0,27,32,9,24, + 9,32,9,32,5,15,5,32,33,60,5,61,5,61,12,22, + 5,22,5,74,115,24,0,0,0,142,6,21,0,148,1,42, + 0,149,16,37,7,165,1,42,0,170,4,46,7,182,1,37, + 7,114,156,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,3,0,0,0,115,132,1,0,0, + 124,1,92,8,125,2,125,3,125,4,125,5,125,6,125,7, + 125,8,125,9,124,4,100,1,107,0,114,18,116,0,100,2, + 131,1,130,1,116,1,106,2,124,0,131,1,53,0,125,10, + 9,0,124,10,160,3,124,6,161,1,1,0,110,17,35,0, + 4,0,116,4,121,193,1,0,1,0,1,0,116,0,100,3, + 124,0,155,2,157,2,124,0,100,4,141,2,130,1,37,0, + 124,10,160,5,100,5,161,1,125,11,116,6,124,11,131,1, + 100,5,107,3,114,63,116,7,100,6,131,1,130,1,124,11, + 100,0,100,7,133,2,25,0,100,8,107,3,114,80,116,0, + 100,9,124,0,155,2,157,2,124,0,100,4,141,2,130,1, + 116,8,124,11,100,10,100,11,133,2,25,0,131,1,125,12, + 116,8,124,11,100,11,100,5,133,2,25,0,131,1,125,13, + 100,5,124,12,23,0,124,13,23,0,125,14,124,6,124,14, + 55,0,125,6,9,0,124,10,160,3,124,6,161,1,1,0, + 110,17,35,0,4,0,116,4,121,192,1,0,1,0,1,0, + 116,0,100,3,124,0,155,2,157,2,124,0,100,4,141,2, + 130,1,37,0,124,10,160,5,124,4,161,1,125,15,116,6, + 124,15,131,1,124,4,107,3,114,145,116,4,100,12,131,1, + 130,1,9,0,100,0,4,0,4,0,131,3,1,0,110,11, + 35,0,49,0,115,157,119,4,37,0,1,0,1,0,1,0, + 89,0,1,0,1,0,124,3,100,1,107,2,114,169,124,15, + 83,0,9,0,116,9,131,0,125,16,110,12,35,0,4,0, + 116,10,121,191,1,0,1,0,1,0,116,0,100,13,131,1, + 130,1,37,0,124,16,124,15,100,14,131,2,83,0,119,0, + 119,0,119,0,41,15,78,114,0,0,0,0,122,18,110,101, + 103,97,116,105,118,101,32,100,97,116,97,32,115,105,122,101, + 114,104,0,0,0,114,13,0,0,0,114,116,0,0,0,114, + 110,0,0,0,114,105,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,115,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,151,0,0,0,105,241,255,255,255,41,11,114,3,0, + 0,0,114,122,0,0,0,114,123,0,0,0,114,124,0,0, + 0,114,23,0,0,0,114,126,0,0,0,114,60,0,0,0, + 114,131,0,0,0,114,1,0,0,0,114,156,0,0,0,114, + 155,0,0,0,41,17,114,30,0,0,0,114,63,0,0,0, + 90,8,100,97,116,97,112,97,116,104,114,142,0,0,0,114, + 146,0,0,0,114,137,0,0,0,114,149,0,0,0,114,143, + 0,0,0,114,144,0,0,0,114,145,0,0,0,114,135,0, + 0,0,114,136,0,0,0,114,147,0,0,0,114,148,0,0, + 0,114,139,0,0,0,90,8,114,97,119,95,100,97,116,97, + 114,153,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,11,0,0,0, + 114,61,0,0,0,69,2,0,0,115,88,0,0,0,20,1, + 8,1,8,1,12,2,2,2,12,1,2,128,12,1,18,1, + 2,128,10,1,12,1,8,1,16,2,18,2,16,2,16,1, + 12,1,8,1,2,1,12,1,2,128,12,1,18,1,2,128, + 10,1,12,1,8,1,2,255,20,233,2,128,12,0,8,26, + 4,2,2,3,8,1,2,128,12,1,8,1,2,128,10,1, + 2,254,2,243,2,240,115,94,0,0,0,20,1,6,1,10, + 1,8,2,2,24,2,232,2,5,12,254,2,128,2,2,2, + 255,26,1,2,128,10,1,10,1,10,1,14,2,20,2,16, + 2,16,1,12,1,8,1,2,4,12,254,2,128,2,2,2, + 255,26,1,2,128,10,1,10,1,32,1,2,128,12,0,6, + 2,6,2,2,6,8,254,2,128,2,2,2,255,16,1,2, + 128,10,1,2,255,2,243,2,240,115,132,1,0,0,78,87, + 5,75,5,13,15,23,25,34,36,45,47,58,60,64,66,70, + 72,75,8,17,20,21,8,21,5,51,15,29,30,50,15,51, + 9,51,10,13,10,23,24,31,10,32,5,56,36,38,9,84, + 13,15,13,33,21,32,13,33,13,33,13,33,0,0,9,84, + 16,23,9,84,9,84,9,84,9,84,19,33,34,69,35,42, + 34,69,34,69,76,83,19,84,19,84,13,84,0,0,18,20, + 18,29,26,28,18,29,9,15,12,15,16,22,12,23,27,29, + 12,29,9,58,19,27,28,57,19,58,13,58,12,18,19,21, + 20,21,19,21,12,22,26,39,12,39,9,86,19,33,34,71, + 35,42,34,71,34,71,78,85,19,86,19,86,13,86,21,35, + 36,42,43,45,46,48,43,48,36,49,21,50,9,18,22,36, + 37,43,44,46,47,49,44,49,37,50,22,51,9,19,23,25, + 28,37,23,37,40,50,23,50,9,20,9,20,24,35,9,35, + 9,20,9,84,13,15,13,33,21,32,13,33,13,33,13,33, + 0,0,9,84,16,23,9,84,9,84,9,84,9,84,19,33, + 34,69,35,42,34,69,34,69,76,83,19,84,19,84,13,84, + 0,0,20,22,20,38,28,37,20,38,9,17,12,15,16,24, + 12,25,29,38,12,38,9,56,19,26,27,55,19,56,13,56, + 9,56,5,56,5,56,5,56,5,56,5,56,5,56,5,56, + 5,56,5,56,5,56,0,0,5,56,5,56,5,56,5,56, + 5,56,5,56,8,16,20,21,8,21,5,24,16,24,9,24, + 5,74,22,42,22,44,9,19,9,19,0,0,5,74,12,21, + 5,74,5,74,5,74,5,74,15,29,30,73,15,74,9,74, + 0,0,12,22,23,31,33,36,12,37,5,37,5,74,9,84, + 9,84,115,88,0,0,0,151,1,66,24,3,153,5,31,2, + 158,1,66,24,3,159,16,47,9,175,59,66,24,3,193,43, + 5,65,49,2,193,48,1,66,24,3,193,49,16,66,1,9, + 194,1,16,66,24,3,194,24,4,66,28,11,194,29,3,66, + 28,11,194,42,3,66,46,0,194,46,11,66,57,7,194,63, + 1,66,57,7,195,0,1,66,1,9,195,1,1,47,9,114, + 61,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,3,0,0,0,115,16,0,0,0,116,0, + 124,0,124,1,24,0,131,1,100,1,107,1,83,0,41,2, + 78,114,5,0,0,0,41,1,218,3,97,98,115,41,2,90, + 2,116,49,90,2,116,50,115,2,0,0,0,32,32,114,11, + 0,0,0,218,9,95,101,113,95,109,116,105,109,101,115,2, + 0,0,243,2,0,0,0,16,2,114,160,0,0,0,115,16, + 0,0,0,12,15,16,18,21,23,16,23,12,24,28,29,12, + 29,5,29,114,10,0,0,0,114,159,0,0,0,99,5,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, + 0,0,115,254,0,0,0,124,3,124,2,100,1,156,2,125, + 5,116,0,106,1,124,4,124,3,124,5,131,3,125,6,124, + 6,100,2,64,0,100,3,107,3,125,7,124,7,114,63,124, + 6,100,4,64,0,100,3,107,3,125,8,116,2,106,3,100, + 5,107,3,114,62,124,8,115,38,116,2,106,3,100,6,107, + 2,114,62,116,4,124,0,124,2,131,2,125,9,124,9,100, + 0,117,1,114,62,116,2,106,5,116,0,106,6,124,9,131, + 2,125,10,116,0,106,7,124,4,124,10,124,3,124,5,131, + 4,1,0,110,40,116,8,124,0,124,2,131,2,92,2,125, + 11,125,12,124,11,114,103,116,9,116,10,124,4,100,7,100, + 8,133,2,25,0,131,1,124,11,131,2,114,93,116,10,124, + 4,100,8,100,9,133,2,25,0,131,1,124,12,107,3,114, + 103,116,11,106,12,100,10,124,3,155,2,157,2,131,1,1, + 0,100,0,83,0,116,13,106,14,124,4,100,9,100,0,133, + 2,25,0,131,1,125,13,116,15,124,13,116,16,131,2,115, + 125,116,17,100,11,124,1,155,2,100,12,157,3,131,1,130, + 1,124,13,83,0,41,13,78,41,2,114,48,0,0,0,114, + 14,0,0,0,114,5,0,0,0,114,0,0,0,0,114,97, + 0,0,0,90,5,110,101,118,101,114,90,6,97,108,119,97, + 121,115,114,111,0,0,0,114,106,0,0,0,114,107,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,22,0,0,0,90,13,95,99,108,97,115, + 115,105,102,121,95,112,121,99,218,4,95,105,109,112,90,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,90,17,95,82,65,87,95,77,65,71,73,67,95, + 78,85,77,66,69,82,90,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,159,0,0,0,114,2, + 0,0,0,114,49,0,0,0,114,84,0,0,0,218,7,109, + 97,114,115,104,97,108,90,5,108,111,97,100,115,114,16,0, + 0,0,218,10,95,99,111,100,101,95,116,121,112,101,218,9, + 84,121,112,101,69,114,114,111,114,41,14,114,33,0,0,0, + 114,62,0,0,0,114,72,0,0,0,114,42,0,0,0,114, + 138,0,0,0,90,11,101,120,99,95,100,101,116,97,105,108, + 115,114,141,0,0,0,90,10,104,97,115,104,95,98,97,115, + 101,100,90,12,99,104,101,99,107,95,115,111,117,114,99,101, + 90,12,115,111,117,114,99,101,95,98,121,116,101,115,114,163, + 0,0,0,90,12,115,111,117,114,99,101,95,109,116,105,109, + 101,90,11,115,111,117,114,99,101,95,115,105,122,101,114,54, + 0,0,0,115,14,0,0,0,32,32,32,32,32,32,32,32, + 32,32,32,32,32,32,114,11,0,0,0,218,15,95,117,110, + 109,97,114,115,104,97,108,95,99,111,100,101,123,2,0,0, + 115,72,0,0,0,2,2,2,1,6,254,14,5,12,2,4, + 1,12,1,10,1,2,1,2,255,8,1,2,255,10,2,8, + 1,4,1,4,1,2,1,4,254,4,5,8,1,4,255,2, + 128,8,4,6,255,4,3,22,3,18,1,2,255,4,2,8, + 1,4,255,4,2,18,2,10,1,16,1,4,1,115,82,0, + 0,0,2,2,2,1,4,1,2,253,14,5,12,2,2,1, + 2,24,12,233,8,1,2,10,2,247,2,9,8,247,2,9, + 10,248,6,1,2,7,4,250,4,1,2,1,2,1,2,253, + 4,5,12,1,2,128,8,3,6,255,2,3,2,7,20,252, + 2,4,18,253,2,3,4,254,12,1,4,1,18,2,8,1, + 18,1,4,1,115,254,0,0,0,17,25,17,25,19,6,19, + 6,5,16,13,32,13,46,47,51,53,61,63,74,13,75,5, + 10,18,23,26,29,18,29,33,34,18,34,5,15,8,18,5, + 28,24,29,32,36,24,36,40,41,24,41,9,21,13,17,13, + 39,43,50,13,50,9,62,18,30,9,62,34,38,34,60,64, + 72,34,72,9,62,28,43,44,48,50,58,28,59,13,25,16, + 28,36,40,16,40,13,62,31,35,31,47,21,40,21,58,21, + 33,31,18,17,28,17,36,17,55,21,25,27,38,40,48,50, + 61,17,62,17,62,0,0,13,42,43,47,49,57,13,58,9, + 34,9,21,23,34,12,24,9,28,21,30,31,45,46,50,51, + 52,53,55,51,55,46,56,31,57,59,71,21,72,13,28,21, + 35,36,40,41,43,44,46,41,46,36,47,21,48,52,63,21, + 63,13,28,17,27,17,44,21,58,22,30,21,58,21,58,17, + 59,17,59,24,28,24,28,12,19,12,25,26,30,31,33,31, + 34,31,34,26,35,12,36,5,9,12,22,23,27,29,39,12, + 40,5,78,15,24,25,77,26,34,25,77,25,77,25,77,15, + 78,9,78,12,16,5,16,114,10,0,0,0,114,168,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,115,28,0,0,0,124,0,160,0,100, + 1,100,2,161,2,125,0,124,0,160,0,100,3,100,2,161, + 2,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, + 20,0,0,0,41,1,218,6,115,111,117,114,99,101,115,1, + 0,0,0,32,114,11,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,168,2,0,0,243,6,0,0,0,12,1,12,1,4, + 1,114,173,0,0,0,115,28,0,0,0,14,20,14,44,29, + 36,38,43,14,44,5,11,14,20,14,42,29,34,36,41,14, + 42,5,11,12,18,5,18,114,10,0,0,0,114,172,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,6,0, + 0,0,3,0,0,0,115,24,0,0,0,116,0,124,1,131, + 1,125,1,116,1,124,1,124,0,100,1,100,2,100,3,141, + 4,83,0,41,4,78,114,82,0,0,0,84,41,1,90,12, + 100,111,110,116,95,105,110,104,101,114,105,116,41,2,114,172, + 0,0,0,218,7,99,111,109,112,105,108,101,41,2,114,62, + 0,0,0,114,171,0,0,0,115,2,0,0,0,32,32,114, + 11,0,0,0,218,15,95,99,111,109,112,105,108,101,95,115, + 111,117,114,99,101,175,2,0,0,243,4,0,0,0,8,1, + 16,1,114,176,0,0,0,115,24,0,0,0,14,37,38,44, + 14,45,5,11,12,19,20,26,28,36,38,44,59,63,12,64, + 12,64,5,64,114,10,0,0,0,114,175,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,3, + 0,0,0,115,68,0,0,0,116,0,106,1,124,0,100,1, + 63,0,100,2,23,0,124,0,100,3,63,0,100,4,64,0, + 124,0,100,5,64,0,124,1,100,6,63,0,124,1,100,3, + 63,0,100,7,64,0,124,1,100,5,64,0,100,8,20,0, + 100,9,100,9,100,9,102,9,131,1,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,97,0,0,0,114,15,0,0,0,41,2,114,143, + 0,0,0,90,6,109,107,116,105,109,101,41,2,218,1,100, + 114,150,0,0,0,115,2,0,0,0,32,32,114,11,0,0, + 0,218,14,95,112,97,114,115,101,95,100,111,115,116,105,109, + 101,181,2,0,0,115,18,0,0,0,4,1,10,1,10,1, + 6,1,6,1,10,1,10,1,6,1,6,249,115,16,0,0, + 0,4,1,10,1,10,1,6,1,6,1,10,1,10,1,12, + 1,115,68,0,0,0,12,16,12,23,10,11,15,16,10,16, + 20,24,9,24,10,11,15,16,10,16,20,23,9,23,9,10, + 13,17,9,17,9,10,14,16,9,16,10,11,15,16,10,16, + 20,24,9,24,10,11,14,18,10,18,22,23,9,23,9,11, + 13,15,17,19,24,20,12,21,5,21,114,10,0,0,0,114, + 184,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,10,0,0,0,3,0,0,0,115,112,0,0,0,9,0, + 124,1,100,1,100,0,133,2,25,0,100,2,118,0,115,11, + 74,0,130,1,124,1,100,0,100,1,133,2,25,0,125,1, + 124,0,106,0,124,1,25,0,125,2,124,2,100,3,25,0, + 125,3,124,2,100,4,25,0,125,4,124,2,100,5,25,0, + 125,5,116,1,124,4,124,3,131,2,124,5,102,2,83,0, + 35,0,4,0,116,2,116,3,116,4,102,3,121,55,1,0, + 1,0,1,0,89,0,100,6,83,0,37,0,119,0,41,7, + 78,114,15,0,0,0,169,2,218,1,99,218,1,111,114,178, + 0,0,0,233,6,0,0,0,233,3,0,0,0,41,2,114, + 0,0,0,0,114,0,0,0,0,41,5,114,29,0,0,0, + 114,184,0,0,0,114,27,0,0,0,218,10,73,110,100,101, + 120,69,114,114,111,114,114,167,0,0,0,41,6,114,33,0, + 0,0,114,14,0,0,0,114,63,0,0,0,114,143,0,0, + 0,114,144,0,0,0,90,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,11,0,0,0,114,164,0,0,0,194,2, + 0,0,115,26,0,0,0,2,1,20,2,12,1,10,1,8, + 3,8,1,8,1,14,1,2,128,18,1,6,1,2,128,2, + 255,115,28,0,0,0,2,13,20,246,12,1,10,1,8,3, + 8,1,8,1,14,1,2,128,2,2,8,255,14,1,2,128, + 2,0,115,112,0,0,0,5,20,16,20,21,23,21,24,21, + 24,16,25,29,39,16,39,9,39,9,39,9,39,16,20,21, + 24,22,24,21,24,16,25,9,13,21,25,21,32,33,37,21, + 38,9,18,16,25,26,27,16,28,9,13,16,25,26,27,16, + 28,9,13,29,38,39,40,29,41,9,26,16,30,31,35,37, + 41,16,42,44,61,16,61,9,61,0,0,5,20,13,21,23, + 33,35,44,12,45,5,20,5,20,5,20,5,20,16,20,16, + 20,16,20,0,0,5,20,115,12,0,0,0,129,39,41,0, + 169,10,54,7,183,1,54,7,114,164,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,3,0, + 0,0,115,82,0,0,0,124,1,100,1,100,0,133,2,25, + 0,100,2,118,0,115,10,74,0,130,1,124,1,100,0,100, + 1,133,2,25,0,125,1,9,0,124,0,106,0,124,1,25, + 0,125,2,110,11,35,0,4,0,116,1,121,40,1,0,1, + 0,1,0,89,0,100,0,83,0,37,0,116,2,124,0,106, + 3,124,2,131,2,83,0,119,0,41,3,78,114,15,0,0, + 0,114,185,0,0,0,41,4,114,29,0,0,0,114,27,0, + 0,0,114,61,0,0,0,114,30,0,0,0,41,3,114,33, + 0,0,0,114,14,0,0,0,114,63,0,0,0,115,3,0, + 0,0,32,32,32,114,11,0,0,0,114,162,0,0,0,213, + 2,0,0,115,20,0,0,0,20,2,12,1,2,2,12,1, + 2,128,12,1,6,1,2,128,12,2,2,253,115,22,0,0, + 0,20,2,12,1,2,7,12,252,2,128,2,2,2,255,14, + 1,2,128,12,2,2,254,115,82,0,0,0,12,16,17,19, + 17,20,17,20,12,21,25,35,12,35,5,35,5,35,5,35, + 12,16,17,20,18,20,17,20,12,21,5,9,5,50,21,25, + 21,32,33,37,21,38,9,18,9,18,0,0,5,20,12,20, + 5,20,5,20,5,20,5,20,16,20,16,20,16,20,0,0, + 16,25,26,30,26,38,40,49,16,50,9,50,5,20,115,12, 0,0,0,145,5,23,0,151,7,33,7,168,1,33,7,114, - 156,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 162,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, 0,9,0,0,0,3,0,0,0,115,14,1,0,0,116,0, 124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,0, 93,100,92,3,125,4,125,5,125,6,124,2,124,4,23,0, @@ -1055,55 +1373,105 @@ const unsigned char _Py_M__zipimport[] = { 124,3,155,0,157,2,125,13,116,12,124,13,124,1,100,6, 141,2,124,3,130,2,116,12,100,7,124,1,155,2,157,2, 124,1,100,6,141,2,130,1,119,0,119,0,41,8,78,122, - 13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,94, + 13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,97, 0,0,0,41,1,90,9,118,101,114,98,111,115,105,116,121, 114,0,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,66,0,0,0, - 114,65,0,0,0,41,13,114,40,0,0,0,114,96,0,0, - 0,114,49,0,0,0,114,82,0,0,0,114,30,0,0,0, + 97,100,32,102,97,105,108,101,100,58,32,114,68,0,0,0, + 114,67,0,0,0,41,13,114,40,0,0,0,114,101,0,0, + 0,114,49,0,0,0,114,84,0,0,0,114,30,0,0,0, 114,21,0,0,0,114,29,0,0,0,114,27,0,0,0,114, - 60,0,0,0,114,162,0,0,0,114,81,0,0,0,114,168, + 61,0,0,0,114,168,0,0,0,114,83,0,0,0,114,175, 0,0,0,114,3,0,0,0,41,14,114,33,0,0,0,114, 42,0,0,0,114,14,0,0,0,90,12,105,109,112,111,114, - 116,95,101,114,114,111,114,114,97,0,0,0,114,98,0,0, - 0,114,55,0,0,0,114,70,0,0,0,114,62,0,0,0, - 114,44,0,0,0,114,133,0,0,0,114,54,0,0,0,90, - 3,101,120,99,114,83,0,0,0,115,14,0,0,0,32,32, + 116,95,101,114,114,111,114,114,102,0,0,0,114,103,0,0, + 0,114,55,0,0,0,114,72,0,0,0,114,63,0,0,0, + 114,44,0,0,0,114,138,0,0,0,114,54,0,0,0,90, + 3,101,120,99,114,85,0,0,0,115,14,0,0,0,32,32, 32,32,32,32,32,32,32,32,32,32,32,32,114,11,0,0, 0,114,52,0,0,0,228,2,0,0,115,64,0,0,0,10, 1,4,1,14,1,8,1,22,1,2,1,12,1,2,128,12, 1,4,1,2,128,8,2,12,1,4,1,4,1,2,1,18, 1,2,128,12,1,14,1,10,128,10,2,8,1,2,3,8, 1,14,1,4,2,10,1,14,1,18,2,2,241,2,247,115, - 42,0,0,0,158,5,36,2,164,7,45,9,189,8,65,6, - 2,193,6,7,65,24,9,193,13,2,65,20,9,193,20,4, - 65,24,9,194,5,1,65,24,9,194,6,1,45,9,114,52, - 0,0,0,41,46,114,92,0,0,0,90,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,22,0,0,0,114,1,0,0,0, - 114,2,0,0,0,90,17,95,102,114,111,122,101,110,95,105, - 109,112,111,114,116,108,105,98,114,49,0,0,0,114,155,0, - 0,0,114,117,0,0,0,114,159,0,0,0,114,73,0,0, - 0,114,138,0,0,0,114,36,0,0,0,90,7,95,95,97, - 108,108,95,95,114,21,0,0,0,90,15,112,97,116,104,95, - 115,101,112,97,114,97,116,111,114,115,114,19,0,0,0,114, - 81,0,0,0,114,3,0,0,0,114,26,0,0,0,218,4, - 116,121,112,101,114,76,0,0,0,114,120,0,0,0,114,122, - 0,0,0,114,124,0,0,0,90,13,95,76,111,97,100,101, - 114,66,97,115,105,99,115,114,4,0,0,0,114,96,0,0, - 0,114,40,0,0,0,114,41,0,0,0,114,39,0,0,0, - 114,28,0,0,0,114,129,0,0,0,114,149,0,0,0,114, - 151,0,0,0,114,60,0,0,0,114,154,0,0,0,114,162, - 0,0,0,218,8,95,95,99,111,100,101,95,95,114,160,0, - 0,0,114,166,0,0,0,114,168,0,0,0,114,176,0,0, - 0,114,158,0,0,0,114,156,0,0,0,114,52,0,0,0, - 114,9,0,0,0,114,10,0,0,0,114,11,0,0,0,218, - 8,60,109,111,100,117,108,101,62,1,0,0,0,115,90,0, - 0,0,4,0,8,16,16,1,8,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,2,6,3,14,1,16,3,4,4, - 8,2,4,2,4,1,4,1,18,2,0,127,0,127,12,50, - 12,1,2,1,2,1,4,252,8,9,8,4,8,9,8,31, - 2,126,2,254,4,29,8,5,8,21,8,46,8,8,10,40, - 8,5,8,7,8,6,8,13,8,19,12,15,114,10,0,0, - 0, + 76,0,0,0,10,1,4,1,2,1,4,29,8,227,8,1, + 22,1,2,21,12,237,2,128,2,2,2,255,12,1,2,128, + 8,2,12,1,4,1,2,1,2,6,2,254,18,254,2,128, + 2,2,2,255,22,1,10,128,10,2,6,1,4,3,8,1, + 14,1,2,2,2,4,10,253,14,1,18,2,2,242,2,247, + 115,14,1,0,0,12,28,29,33,35,43,12,44,5,9,20, + 24,5,17,42,58,5,83,5,83,9,38,9,15,17,27,29, + 38,20,24,27,33,20,33,9,17,9,19,9,36,37,52,54, + 58,54,66,68,76,78,86,98,99,9,100,9,100,9,100,9, + 44,25,29,25,36,37,45,25,46,13,22,13,22,0,0,9, + 17,16,24,9,17,9,17,9,17,9,17,13,17,13,17,0, + 0,23,32,33,34,23,35,13,20,20,29,30,34,30,42,44, + 53,20,54,13,17,20,24,13,17,16,26,13,54,17,39,28, + 43,44,48,50,57,59,67,69,77,79,83,28,84,21,25,21, + 25,0,0,17,39,24,35,17,39,17,39,17,39,17,39,36, + 39,21,33,21,39,21,39,21,39,21,39,21,39,0,0,0, + 0,0,0,0,0,0,0,24,39,40,47,49,53,24,54,17, + 21,16,20,24,28,16,28,13,25,17,25,23,32,33,34,23, + 35,13,20,20,24,26,35,37,44,20,44,13,44,13,44,13, + 44,12,24,9,83,19,56,42,54,19,56,19,56,13,16,19, + 33,34,37,44,52,19,53,19,53,59,71,13,71,19,33,34, + 67,35,43,34,67,34,67,74,82,19,83,19,83,13,83,17, + 39,9,17,115,42,0,0,0,158,5,36,2,164,7,45,9, + 189,8,65,6,2,193,6,7,65,24,9,193,13,2,65,20, + 9,193,20,4,65,24,9,194,5,1,65,24,9,194,6,1, + 45,9,114,52,0,0,0,41,46,114,95,0,0,0,90,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,22,0,0,0,114, + 1,0,0,0,114,2,0,0,0,90,17,95,102,114,111,122, + 101,110,95,105,109,112,111,114,116,108,105,98,114,49,0,0, + 0,114,161,0,0,0,114,122,0,0,0,114,165,0,0,0, + 114,75,0,0,0,114,143,0,0,0,114,36,0,0,0,90, + 7,95,95,97,108,108,95,95,114,21,0,0,0,90,15,112, + 97,116,104,95,115,101,112,97,114,97,116,111,114,115,114,19, + 0,0,0,114,83,0,0,0,114,3,0,0,0,114,26,0, + 0,0,218,4,116,121,112,101,114,78,0,0,0,114,125,0, + 0,0,114,127,0,0,0,114,129,0,0,0,90,13,95,76, + 111,97,100,101,114,66,97,115,105,99,115,114,4,0,0,0, + 114,101,0,0,0,114,40,0,0,0,114,41,0,0,0,114, + 39,0,0,0,114,28,0,0,0,114,134,0,0,0,114,154, + 0,0,0,114,156,0,0,0,114,61,0,0,0,114,159,0, + 0,0,114,168,0,0,0,218,8,95,95,99,111,100,101,95, + 95,114,166,0,0,0,114,172,0,0,0,114,175,0,0,0, + 114,184,0,0,0,114,164,0,0,0,114,162,0,0,0,114, + 52,0,0,0,114,9,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,8,60,109,111,100,117,108,101,62,1,0,0, + 0,115,90,0,0,0,4,0,8,16,16,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,2,6,3,14,1, + 16,3,4,4,8,2,4,2,4,1,4,1,18,2,0,127, + 0,127,12,50,12,1,2,1,2,1,4,252,8,9,8,4, + 8,9,8,31,2,126,2,254,4,29,8,5,8,21,8,46, + 8,8,10,40,8,5,8,7,8,6,8,13,8,19,12,15, + 115,110,0,0,0,4,12,8,4,16,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,2,6,3,14,1,10, + 4,2,255,4,1,4,3,8,2,4,2,4,1,4,1,0, + 127,0,127,10,43,0,129,0,129,4,215,0,127,0,127,4, + 41,12,9,12,1,2,1,2,1,2,1,2,251,8,10,8, + 9,8,9,0,127,8,14,2,34,2,230,4,29,8,23,8, + 43,8,8,8,44,10,2,8,8,8,6,8,12,8,18,8, + 16,12,37,115,80,1,0,0,1,4,1,4,1,57,1,57, + 1,57,1,57,1,70,1,70,1,70,1,70,1,70,1,70, + 1,70,1,70,1,39,1,39,1,39,1,39,1,12,1,12, + 1,12,1,12,1,11,1,11,1,11,1,11,1,15,1,15, + 1,15,1,15,1,11,1,11,1,11,1,11,1,12,1,12, + 1,12,1,12,1,17,1,17,1,17,1,17,12,28,30,43, + 11,44,1,8,12,31,12,40,1,9,16,35,16,51,52,53, + 52,54,52,54,16,55,1,13,1,9,1,9,1,9,1,9, + 1,9,22,33,1,9,1,9,24,26,1,21,16,20,21,24, + 16,25,1,13,24,26,1,21,22,35,1,19,19,32,1,16, + 1,79,1,79,1,79,1,79,1,79,19,38,19,52,1,79, + 1,79,6,14,17,31,6,31,33,37,39,43,5,44,6,14, + 17,30,6,30,32,37,39,43,5,44,5,26,5,26,20,2, + 1,17,1,53,1,53,1,53,1,53,1,34,1,34,1,34, + 1,34,1,16,1,16,1,16,1,16,1,17,1,17,1,17, + 1,17,5,47,1,12,19,24,1,16,1,22,1,22,1,22, + 1,22,1,37,1,37,1,37,1,37,1,29,1,29,1,29, + 1,29,1,16,1,16,1,16,1,16,14,18,19,34,19,43, + 14,44,1,11,1,18,1,18,1,18,1,18,1,64,1,64, + 1,64,1,64,1,21,1,21,1,21,1,21,1,20,1,20, + 1,20,1,20,1,50,1,50,1,50,1,50,1,83,1,83, + 1,83,1,83,1,83,1,83,114,10,0,0,0, }; diff --git a/Python/marshal.c b/Python/marshal.c index 6c08189cca29b2..d7fdb83a61a1d6 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -524,6 +524,8 @@ w_complex_object(PyObject *v, char flag, WFILE *p) w_object(co->co_name, p); w_long(co->co_firstlineno, p); w_object(co->co_linetable, p); + w_object(co->co_endlinetable, p); + w_object(co->co_columntable, p); w_object(co->co_exceptiontable, p); } else if (PyObject_CheckBuffer(v)) { @@ -1315,6 +1317,8 @@ r_object(RFILE *p) PyObject *name = NULL; int firstlineno; PyObject *linetable = NULL; + PyObject* endlinetable = NULL; + PyObject* columntable = NULL; PyObject *exceptiontable = NULL; idx = r_ref_reserve(flag, p); @@ -1367,6 +1371,12 @@ r_object(RFILE *p) linetable = r_object(p); if (linetable == NULL) goto code_error; + endlinetable = r_object(p); + if (endlinetable == NULL) + goto code_error; + columntable = r_object(p); + if (columntable == NULL) + goto code_error; exceptiontable = r_object(p); if (exceptiontable == NULL) goto code_error; @@ -1379,6 +1389,8 @@ r_object(RFILE *p) .code = code, .firstlineno = firstlineno, .linetable = linetable, + .endlinetable = endlinetable, + .columntable = columntable, .consts = consts, .names = names, @@ -1415,6 +1427,8 @@ r_object(RFILE *p) Py_XDECREF(filename); Py_XDECREF(name); Py_XDECREF(linetable); + Py_XDECREF(endlinetable); + Py_XDECREF(columntable); Py_XDECREF(exceptiontable); } retval = v; From 2560c612c89ea2534b90a266aabf76dc74d93a12 Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Sat, 3 Jul 2021 00:53:11 +0800 Subject: [PATCH 18/40] bpo-30256: [doc] Fix formatting error in news (GH-26994) --- .../next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst b/Misc/NEWS.d/next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst index 4490803f32642e..698b0e8a61c0d8 100644 --- a/Misc/NEWS.d/next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst +++ b/Misc/NEWS.d/next/Library/2019-09-25-13-54-41.bpo-30256.wBkzox.rst @@ -1 +1 @@ -Pass multiprocessing BaseProxy argument `manager_owned` through AutoProxy +Pass multiprocessing BaseProxy argument ``manager_owned`` through AutoProxy. From ec8759b060eff83ff466f42c5a96d83a685016ce Mon Sep 17 00:00:00 2001 From: Batuhan Taskaya Date: Fri, 2 Jul 2021 22:03:58 +0300 Subject: [PATCH 19/40] bpo-43950: optimize column table assembling with pre-sizing object (GH-26997) The new resizing system works like this; ``` $ cat t.py a + a + a + b + c + a + a + a + b + c + a + a + a + b + c + a + a + a + b + c [repeated 99 more times] $ ./python t.py RESIZE: prev len = 32, new len = 66 FINAL SIZE: 56 ----------------------------------------------------- RESIZE: prev len = 32, new len = 66 RESIZE: prev len = 66, new len = 134 RESIZE: prev len = 134, new len = 270 RESIZE: prev len = 270, new len = 542 RESIZE: prev len = 542, new len = 1086 RESIZE: prev len = 1086, new len = 2174 RESIZE: prev len = 2174, new len = 4350 RESIZE: prev len = 4350, new len = 8702 FINAL SIZE: 8004 ``` So now we do considerably lower number of `_PyBytes_Resize` calls. Automerge-Triggered-By: GH:isidentical --- Python/compile.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Python/compile.c b/Python/compile.c index 0bce6ce865d75e..e5e4bc5c666faf 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -40,7 +40,7 @@ #define DEFAULT_BLOCKS 8 #define DEFAULT_CODE_SIZE 128 #define DEFAULT_LNOTAB_SIZE 16 -#define DEFAULT_CNOTAB_SIZE 0 +#define DEFAULT_CNOTAB_SIZE 32 #define COMP_GENEXP 0 #define COMP_LISTCOMP 1 @@ -6587,6 +6587,7 @@ struct assembler { PyObject* a_cnotab; /* bytes containing cnotab */ int a_lnotab_off; /* offset into lnotab */ int a_enotab_off; /* offset into enotab */ + int a_cnotab_off; /* offset into cnotab */ PyObject *a_except_table; /* bytes containing exception table */ int a_except_table_off; /* offset into exception table */ int a_prevlineno; /* lineno of last emitted line in line table */ @@ -6696,6 +6697,7 @@ assemble_init(struct assembler *a, int nblocks, int firstlineno) a->a_lnotab = NULL; a->a_enotab = NULL; a->a_cnotab = NULL; + a->a_cnotab_off = 0; a->a_except_table = NULL; a->a_bytecode = PyBytes_FromStringAndSize(NULL, DEFAULT_CODE_SIZE); if (a->a_bytecode == NULL) { @@ -7106,14 +7108,16 @@ static int assemble_cnotab(struct assembler* a, struct instr* i, int instr_size) { Py_ssize_t len = PyBytes_GET_SIZE(a->a_cnotab); - // TODO: Allocate more memory than just what we immediately need - // like a_lnotab does. - if (_PyBytes_Resize(&a->a_cnotab, len + (instr_size * 2)) < 0) { - return 0; + int difference = instr_size * 2; + if (a->a_cnotab_off + difference >= len) { + if (_PyBytes_Resize(&a->a_cnotab, difference + (len * 2)) < 0) { + return 0; + } } unsigned char* cnotab = (unsigned char*)PyBytes_AS_STRING(a->a_cnotab); - cnotab += len; + cnotab += a->a_cnotab_off; + a->a_cnotab_off += difference; for (int j = 0; j < instr_size; j++) { if (i->i_col_offset > 255 || i->i_end_col_offset > 255) { @@ -7855,6 +7859,9 @@ assemble(struct compiler *c, int addNone) if (!merge_const_one(c, &a.a_enotab)) { goto error; } + if (_PyBytes_Resize(&a.a_cnotab, a.a_cnotab_off) < 0) { + goto error; + } if (_PyBytes_Resize(&a.a_bytecode, a.a_offset * sizeof(_Py_CODEUNIT)) < 0) { goto error; } From 4bcef2bb48b3fd82011a89c1c716421b789f1442 Mon Sep 17 00:00:00 2001 From: Matthew Clapp Date: Fri, 2 Jul 2021 13:48:15 -0700 Subject: [PATCH 20/40] bpo-44388: Update venv EnvBuilder.ensure_directories() docs. (GH-26663) Ref: This changes the documentation for `EnvBuilder.ensure_directories(env_dir)` to match the actual behavior of that API call. In particular, `ensure_directories()` is not affected by the state of the `upgrade` attribute, and will not cause an error to have existing directories whether or not the `clear` attribute is set. This documentation change I believe should be valid to all python versions back to 3.6. Automerge-Triggered-By: GH:vsajip --- Doc/library/venv.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Doc/library/venv.rst b/Doc/library/venv.rst index 2a4eede91a7c17..5eb5094801501b 100644 --- a/Doc/library/venv.rst +++ b/Doc/library/venv.rst @@ -170,11 +170,12 @@ creation according to their needs, the :class:`EnvBuilder` class. .. method:: ensure_directories(env_dir) - Creates the environment directory and all necessary directories, and - returns a context object. This is just a holder for attributes (such as - paths), for use by the other methods. The directories are allowed to - exist already, as long as either ``clear`` or ``upgrade`` were - specified to allow operating on an existing environment directory. + Creates the environment directory and all necessary subdirectories that + don't already exist, and returns a context object. This context object + is just a holder for attributes (such as paths) for use by the other + methods. If the :class:`EnvBuilder` is created with the arg + ``clear=True``, contents of the environment directory will be cleared + and then all necessary subdirectories will be recreated. .. method:: create_configuration(context) From 01331f1a3cf86fd308e9a134bb867bf01fb191f5 Mon Sep 17 00:00:00 2001 From: Julien Palard Date: Sat, 3 Jul 2021 10:35:02 +0200 Subject: [PATCH 21/40] bpo-42238: rstlint: Add two new checks. (GH-26966) --- Doc/tools/rstlint.py | 99 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 91 insertions(+), 8 deletions(-) diff --git a/Doc/tools/rstlint.py b/Doc/tools/rstlint.py index cbcb8eb801b135..c9bff80995bfd3 100755 --- a/Doc/tools/rstlint.py +++ b/Doc/tools/rstlint.py @@ -42,10 +42,89 @@ 'versionchanged' ] -all_directives = '(' + '|'.join(directives) + ')' -seems_directive_re = re.compile(r'(? Date: Sat, 3 Jul 2021 20:12:11 +0800 Subject: [PATCH 22/40] bpo-44553 : Implement GC methods for types.Union (GH-26993) --- Lib/test/test_types.py | 20 +++++++++++++++++- .../2021-07-02-22-54-41.bpo-44553.l9YqGg.rst | 2 ++ Objects/unionobject.c | 21 +++++++++++++++---- 3 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2021-07-02-22-54-41.bpo-44553.l9YqGg.rst diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index d3e315a196b514..ae7b17bd590e61 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -1,8 +1,9 @@ # Python test set -- part 6, built-in types -from test.support import run_with_locale +from test.support import run_with_locale, cpython_only import collections.abc from collections import namedtuple +import gc import inspect import pickle import locale @@ -756,6 +757,23 @@ def __module__(self): with self.assertRaises(ZeroDivisionError): str | TypeVar() + @cpython_only + def test_or_type_operator_reference_cycle(self): + if not hasattr(sys, 'gettotalrefcount'): + self.skipTest('Cannot get total reference count.') + gc.collect() + before = sys.gettotalrefcount() + for _ in range(30): + T = typing.TypeVar('T') + U = int | list[T] + T.blah = U + del T + del U + gc.collect() + leeway = 15 + self.assertLessEqual(sys.gettotalrefcount() - before, leeway, + msg='Check for union reference leak.') + def test_ellipsis_type(self): self.assertIsInstance(Ellipsis, types.EllipsisType) diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-07-02-22-54-41.bpo-44553.l9YqGg.rst b/Misc/NEWS.d/next/Core and Builtins/2021-07-02-22-54-41.bpo-44553.l9YqGg.rst new file mode 100644 index 00000000000000..e97df02994806a --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-07-02-22-54-41.bpo-44553.l9YqGg.rst @@ -0,0 +1,2 @@ +Implement GC methods for ``types.Union`` to break reference cycles and +prevent memory leaks. diff --git a/Objects/unionobject.c b/Objects/unionobject.c index a66d61524dcfc7..cc7181d2475caf 100644 --- a/Objects/unionobject.c +++ b/Objects/unionobject.c @@ -1,5 +1,6 @@ // types.Union -- used to represent e.g. Union[int, str], int | str #include "Python.h" +#include "pycore_object.h" // _PyObject_GC_TRACK/UNTRACK #include "pycore_unionobject.h" #include "structmember.h" @@ -14,10 +15,20 @@ unionobject_dealloc(PyObject *self) { unionobject *alias = (unionobject *)self; + _PyObject_GC_UNTRACK(self); + Py_XDECREF(alias->args); Py_TYPE(self)->tp_free(self); } +static int +union_traverse(PyObject *self, visitproc visit, void *arg) +{ + unionobject *alias = (unionobject *)self; + Py_VISIT(alias->args); + return 0; +} + static Py_hash_t union_hash(PyObject *self) { @@ -437,8 +448,9 @@ PyTypeObject _Py_UnionType = { .tp_basicsize = sizeof(unionobject), .tp_dealloc = unionobject_dealloc, .tp_alloc = PyType_GenericAlloc, - .tp_free = PyObject_Del, - .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_free = PyObject_GC_Del, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .tp_traverse = union_traverse, .tp_hash = union_hash, .tp_getattro = PyObject_GenericGetAttr, .tp_members = union_members, @@ -472,15 +484,16 @@ _Py_Union(PyObject *args) } } - result = PyObject_New(unionobject, &_Py_UnionType); + result = PyObject_GC_New(unionobject, &_Py_UnionType); if (result == NULL) { return NULL; } result->args = dedup_and_flatten_args(args); if (result->args == NULL) { - Py_DECREF(result); + PyObject_GC_Del(result); return NULL; } + _PyObject_GC_TRACK(result); return (PyObject*)result; } From a79e2b6497f7d31017c01a41a290a9b3349398fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Srinivas=20Reddy=20Thatiparthy=20=28=E0=B0=B6=E0=B1=8D?= =?UTF-8?q?=E0=B0=B0=E0=B1=80=E0=B0=A8=E0=B0=BF=E0=B0=B5=E0=B0=BE=E0=B0=B8?= =?UTF-8?q?=E0=B1=8D=20=20=E0=B0=B0=E0=B1=86=E0=B0=A1=E0=B1=8D=E0=B0=A1?= =?UTF-8?q?=E0=B0=BF=20=E0=B0=A4=E0=B0=BE=E0=B0=9F=E0=B0=BF=E0=B0=AA?= =?UTF-8?q?=E0=B0=B0=E0=B1=8D=E0=B0=A4=E0=B0=BF=29?= Date: Sat, 3 Jul 2021 19:34:57 +0530 Subject: [PATCH 23/40] Fix a small typo in the docs (GH-26991) --- Doc/c-api/memory.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/c-api/memory.rst b/Doc/c-api/memory.rst index 3cc9dff2d4cc35..01b646c226e6d9 100644 --- a/Doc/c-api/memory.rst +++ b/Doc/c-api/memory.rst @@ -490,7 +490,7 @@ Customize Memory Allocators Debug hooks on the Python memory allocators =========================================== -When :ref:`Python is built is debug mode `, the +When :ref:`Python is built in debug mode `, the :c:func:`PyMem_SetupDebugHooks` function is called at the :ref:`Python preinitialization ` to setup debug hooks on Python memory allocators to detect memory errors. From 556d5ad11fb380868c19beeba53d49f89c27f32d Mon Sep 17 00:00:00 2001 From: Daniel Hillier Date: Sun, 4 Jul 2021 00:37:57 +1000 Subject: [PATCH 24/40] bpo-44129: Add descriptive global variables for general purpose bit flags (GH-26118) Replace hex flag masks with named global variables to improve readability. eg. if flags & 0x800 becomes: if flags & _MASK_UTF_FILENAME --- Lib/test/test_zipfile.py | 2 +- Lib/zipfile.py | 50 ++++++++++++++++++++++++++++++---------- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index f559be790bb38e..325491fd809760 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -1545,7 +1545,7 @@ def test_writestr_extended_local_header_issue1202(self): with zipfile.ZipFile(TESTFN2, 'w') as orig_zip: for data in 'abcdefghijklmnop': zinfo = zipfile.ZipInfo(data) - zinfo.flag_bits |= 0x08 # Include an extended local header. + zinfo.flag_bits |= zipfile._MASK_USE_DATA_DESCRIPTOR # Include an extended local header. orig_zip.writestr(zinfo, data) def test_close(self): diff --git a/Lib/zipfile.py b/Lib/zipfile.py index b83e2c187eb033..3efeecb13bd179 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -123,6 +123,32 @@ class LargeZipFile(Exception): _CD_EXTERNAL_FILE_ATTRIBUTES = 17 _CD_LOCAL_HEADER_OFFSET = 18 +# General purpose bit flags +# Zip Appnote: 4.4.4 general purpose bit flag: (2 bytes) +_MASK_ENCRYPTED = 1 << 0 +# Bits 1 and 2 have different meanings depending on the compression used. +_MASK_COMPRESS_OPTION_1 = 1 << 1 +# _MASK_COMPRESS_OPTION_2 = 1 << 2 +# _MASK_USE_DATA_DESCRIPTOR: If set, crc-32, compressed size and uncompressed +# size are zero in the local header and the real values are written in the data +# descriptor immediately following the compressed data. +_MASK_USE_DATA_DESCRIPTOR = 1 << 3 +# Bit 4: Reserved for use with compression method 8, for enhanced deflating. +# _MASK_RESERVED_BIT_4 = 1 << 4 +_MASK_COMPRESSED_PATCH = 1 << 5 +_MASK_STRONG_ENCRYPTION = 1 << 6 +# _MASK_UNUSED_BIT_7 = 1 << 7 +# _MASK_UNUSED_BIT_8 = 1 << 8 +# _MASK_UNUSED_BIT_9 = 1 << 9 +# _MASK_UNUSED_BIT_10 = 1 << 10 +_MASK_UTF_FILENAME = 1 << 11 +# Bit 12: Reserved by PKWARE for enhanced compression. +# _MASK_RESERVED_BIT_12 = 1 << 12 +# _MASK_ENCRYPTED_CENTRAL_DIR = 1 << 13 +# Bit 14, 15: Reserved by PKWARE +# _MASK_RESERVED_BIT_14 = 1 << 14 +# _MASK_RESERVED_BIT_15 = 1 << 15 + # The "local file header" structure, magic number, size, and indices # (section V.A in the format document) structFileHeader = "<4s2B4HL2L2H" @@ -411,7 +437,7 @@ def FileHeader(self, zip64=None): dt = self.date_time dosdate = (dt[0] - 1980) << 9 | dt[1] << 5 | dt[2] dostime = dt[3] << 11 | dt[4] << 5 | (dt[5] // 2) - if self.flag_bits & 0x08: + if self.flag_bits & _MASK_USE_DATA_DESCRIPTOR: # Set these to zero because we write them after the file data CRC = compress_size = file_size = 0 else: @@ -456,7 +482,7 @@ def _encodeFilenameFlags(self): try: return self.filename.encode('ascii'), self.flag_bits except UnicodeEncodeError: - return self.filename.encode('utf-8'), self.flag_bits | 0x800 + return self.filename.encode('utf-8'), self.flag_bits | _MASK_UTF_FILENAME def _decodeExtra(self): # Try to decode the extra field. @@ -825,7 +851,7 @@ def __init__(self, fileobj, mode, zipinfo, pwd=None, self._decrypter = None if pwd: - if zipinfo.flag_bits & 0x8: + if zipinfo.flag_bits & _MASK_USE_DATA_DESCRIPTOR: # compare against the file type from extended local headers check_byte = (zipinfo._raw_time >> 8) & 0xff else: @@ -1147,7 +1173,7 @@ def close(self): self._zinfo.file_size = self._file_size # Write updated header info - if self._zinfo.flag_bits & 0x08: + if self._zinfo.flag_bits & _MASK_USE_DATA_DESCRIPTOR: # Write CRC and file sizes after the file data fmt = ' Date: Sat, 3 Jul 2021 16:33:35 +0100 Subject: [PATCH 25/40] bpo-34266: [pdb] handle ValueError from shlex.split() (GH-26656) --- Lib/pdb.py | 6 +++++- Lib/test/test_pdb.py | 15 +++++++++++++++ .../2021-06-10-21-53-46.bpo-34266.k3fxnm.rst | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst diff --git a/Lib/pdb.py b/Lib/pdb.py index ff40f7b2476a38..1b4ff54833fcb4 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -1026,7 +1026,11 @@ def do_run(self, arg): if arg: import shlex argv0 = sys.argv[0:1] - sys.argv = shlex.split(arg) + try: + sys.argv = shlex.split(arg) + except ValueError as e: + self.error('Cannot run %s: %s' % (arg, e)) + return sys.argv[:0] = argv0 # this is caught in the main debugger loop raise Restart diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 0724b666a3bf8d..63afb81cb168ff 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1800,6 +1800,21 @@ def test_errors_in_command(self): '(Pdb) ', ]) + def test_issue34266(self): + '''do_run handles exceptions from parsing its arg''' + def check(bad_arg, msg): + commands = "\n".join([ + f'run {bad_arg}', + 'q', + ]) + stdout, _ = self.run_pdb_script('pass', commands + '\n') + self.assertEqual(stdout.splitlines()[1:], [ + '-> pass', + f'(Pdb) *** Cannot run {bad_arg}: {msg}', + '(Pdb) ', + ]) + check('\\', 'No escaped character') + check('"', 'No closing quotation') def test_issue42384(self): '''When running `python foo.py` sys.path[0] is an absolute path. `python -m pdb foo.py` should behave the same''' diff --git a/Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst b/Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst new file mode 100644 index 00000000000000..22ef84e9626ad6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst @@ -0,0 +1 @@ +Handle exceptions from parsing the arg of :mod:`pdb`'s run/restart command. From bc3961485639cc73de7c4c7eed1b56f3c74939bf Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Sat, 3 Jul 2021 21:00:28 +0100 Subject: [PATCH 26/40] bpo-44553: Correct failure in tp_new for the union object (GH-27008) --- Objects/unionobject.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Objects/unionobject.c b/Objects/unionobject.c index cc7181d2475caf..8435763b5ea7ca 100644 --- a/Objects/unionobject.c +++ b/Objects/unionobject.c @@ -490,10 +490,10 @@ _Py_Union(PyObject *args) } result->args = dedup_and_flatten_args(args); + _PyObject_GC_TRACK(result); if (result->args == NULL) { - PyObject_GC_Del(result); + Py_DECREF(result); return NULL; } - _PyObject_GC_TRACK(result); return (PyObject*)result; } From d33943a6c368c2184e238019c63ac7a267da5594 Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Mon, 5 Jul 2021 00:47:38 +0800 Subject: [PATCH 27/40] =?UTF-8?q?bpo-44562:=20Remove=20invalid=20PyObject?= =?UTF-8?q?=5FGC=5FDel=20from=20error=20path=20of=20types.GenericAlias=20?= =?UTF-8?q?=E2=80=A6=20(GH-27016)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2021-07-04-23-38-51.bpo-44562.QdeRQo.rst | 2 ++ Objects/genericaliasobject.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2021-07-04-23-38-51.bpo-44562.QdeRQo.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-07-04-23-38-51.bpo-44562.QdeRQo.rst b/Misc/NEWS.d/next/Core and Builtins/2021-07-04-23-38-51.bpo-44562.QdeRQo.rst new file mode 100644 index 00000000000000..2fc65bcfdeef43 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-07-04-23-38-51.bpo-44562.QdeRQo.rst @@ -0,0 +1,2 @@ +Remove uses of :c:func:`PyObject_GC_Del` in error path when initializing +:class:`types.GenericAlias`. diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 756a7ce474aee9..48a8be1c458752 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -603,7 +603,7 @@ ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds) return NULL; } if (!setup_ga(self, origin, arguments)) { - type->tp_free((PyObject *)self); + Py_DECREF(self); return NULL; } return (PyObject *)self; @@ -650,10 +650,10 @@ Py_GenericAlias(PyObject *origin, PyObject *args) if (alias == NULL) { return NULL; } + _PyObject_GC_TRACK(alias); if (!setup_ga(alias, origin, args)) { - PyObject_GC_Del((PyObject *)alias); + Py_DECREF(alias); return NULL; } - _PyObject_GC_TRACK(alias); return (PyObject *)alias; } From 44f91fc802a2b71312e9abd9e8e9dcbf02e8216d Mon Sep 17 00:00:00 2001 From: Batuhan Taskaya Date: Sun, 4 Jul 2021 21:02:16 +0300 Subject: [PATCH 28/40] bpo-43950: use 0-indexed column offsets for bytecode positions (GH-27011) --- Lib/test/test_code.py | 2 +- Lib/test/test_compile.py | 20 ++++++++++---------- Objects/codeobject.c | 19 ++++++++----------- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py index 55ba30a9f936a0..24d27c0d24046a 100644 --- a/Lib/test/test_code.py +++ b/Lib/test/test_code.py @@ -344,7 +344,7 @@ def test_co_positions_artificial_instructions(self): # get assigned the first_lineno but they don't have other positions. # There is no easy way of inferring them at that stage, so for now # we don't support it. - self.assertTrue(all(positions) or not any(positions)) + self.assertTrue(positions.count(None) in [0, 4]) if not any(positions): artificial_instructions.append(instr) diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 47deda09f9010c..bc8c57d9e1d2f4 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -1006,8 +1006,8 @@ def generic_visit(self, node): return lines.add(node.lineno) end_lines.add(node.end_lineno) - columns.add(node.col_offset + 1) - end_columns.add(node.end_col_offset + 1) + columns.add(node.col_offset) + end_columns.add(node.end_col_offset) SourceOffsetVisitor().visit(ast_tree) @@ -1058,10 +1058,10 @@ def test_compiles_to_extended_op_arg(self): self.assertOpcodeSourcePositionIs(compiled_code, 'INPLACE_SUBTRACT', line=10_000 + 2, end_line=10_000 + 2, - column=3, end_column=9) + column=2, end_column=8) self.assertOpcodeSourcePositionIs(compiled_code, 'INPLACE_ADD', line=10_000 + 4, end_line=10_000 + 4, - column=3, end_column=10) + column=2, end_column=9) def test_multiline_expression(self): snippet = """\ @@ -1071,7 +1071,7 @@ def test_multiline_expression(self): """ compiled_code, _ = self.check_positions_against_ast(snippet) self.assertOpcodeSourcePositionIs(compiled_code, 'CALL_FUNCTION', - line=1, end_line=3, column=1, end_column=2) + line=1, end_line=3, column=0, end_column=1) def test_very_long_line_end_offset(self): # Make sure we get None for when the column offset is too large to @@ -1088,15 +1088,15 @@ def test_complex_single_line_expression(self): compiled_code, _ = self.check_positions_against_ast(snippet) self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_SUBSCR', - line=1, end_line=1, column=14, end_column=22) + line=1, end_line=1, column=13, end_column=21) self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_MULTIPLY', - line=1, end_line=1, column=10, end_column=22) + line=1, end_line=1, column=9, end_column=21) self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_ADD', - line=1, end_line=1, column=10, end_column=27) + line=1, end_line=1, column=9, end_column=26) self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_MATRIX_MULTIPLY', - line=1, end_line=1, column=5, end_column=28) + line=1, end_line=1, column=4, end_column=27) self.assertOpcodeSourcePositionIs(compiled_code, 'BINARY_SUBTRACT', - line=1, end_line=1, column=1, end_column=28) + line=1, end_line=1, column=0, end_column=27) class TestExpressionStackSize(unittest.TestCase): diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 678958891a0bc4..aa36175aa5ad5c 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -610,9 +610,6 @@ PyCode_Addr2Location(PyCodeObject *co, int addrq, int *end_line, int *end_column) { *start_line = PyCode_Addr2Line(co, addrq); - if (*start_line == -1) { - *start_line = 0; - } *start_column = _PyCode_Addr2Offset(co, addrq); *end_line = _PyCode_Addr2EndLine(co, addrq); *end_column = _PyCode_Addr2EndOffset(co, addrq); @@ -626,7 +623,7 @@ _PyCode_Addr2EndLine(PyCodeObject* co, int addrq) return co->co_firstlineno; } else if (co->co_endlinetable == Py_None) { - return 0; + return -1; } assert(addrq >= 0 && addrq < PyBytes_GET_SIZE(co->co_code)); @@ -639,34 +636,34 @@ int _PyCode_Addr2Offset(PyCodeObject* co, int addrq) { if (co->co_columntable == Py_None || addrq < 0) { - return 0; + return -1; } if (addrq % 2 == 1) { --addrq; } if (addrq >= PyBytes_GET_SIZE(co->co_columntable)) { - return 0; + return -1; } unsigned char* bytes = (unsigned char*)PyBytes_AS_STRING(co->co_columntable); - return bytes[addrq]; + return bytes[addrq] - 1; } int _PyCode_Addr2EndOffset(PyCodeObject* co, int addrq) { if (co->co_columntable == Py_None || addrq < 0) { - return 0; + return -1; } if (addrq % 2 == 0) { ++addrq; } if (addrq >= PyBytes_GET_SIZE(co->co_columntable)) { - return 0; + return -1; } unsigned char* bytes = (unsigned char*)PyBytes_AS_STRING(co->co_columntable); - return bytes[addrq]; + return bytes[addrq] - 1; } void @@ -980,7 +977,7 @@ positionsiter_dealloc(positionsiterator* pi) static PyObject* _source_offset_converter(int* value) { - if (*value <= 0) { + if (*value == -1) { Py_RETURN_NONE; } return PyLong_FromLong(*value); From 693cec0e2dcafa393ed5cdaa606f8dc8e3876adf Mon Sep 17 00:00:00 2001 From: Batuhan Taskaya Date: Sun, 4 Jul 2021 22:05:05 +0300 Subject: [PATCH 29/40] bpo-43950: include position in dis.Instruction (GH-27015) Automerge-Triggered-By: GH:isidentical --- Lib/dis.py | 53 +++++- Lib/test/test_dis.py | 431 ++++++++++++++++++++++++------------------- 2 files changed, 287 insertions(+), 197 deletions(-) diff --git a/Lib/dis.py b/Lib/dis.py index 48a6ab8e41df3f..3cacd9a44a97e0 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -191,8 +191,32 @@ def show_code(co, *, file=None): """ print(code_info(co), file=file) -_Instruction = collections.namedtuple("_Instruction", - "opname opcode arg argval argrepr offset starts_line is_jump_target") +Positions = collections.namedtuple( + 'Positions', + [ + 'lineno', + 'end_lineno', + 'col_offset', + 'end_col_offset', + ], + defaults=[None] * 4 +) + +_Instruction = collections.namedtuple( + "_Instruction", + [ + 'opname', + 'opcode', + 'arg', + 'argval', + 'argrepr', + 'offset', + 'starts_line', + 'is_jump_target', + 'positions' + ], + defaults=[None] +) _Instruction.opname.__doc__ = "Human readable name for operation" _Instruction.opcode.__doc__ = "Numeric code for operation" @@ -202,6 +226,7 @@ def show_code(co, *, file=None): _Instruction.offset.__doc__ = "Start index of operation within bytecode sequence" _Instruction.starts_line.__doc__ = "Line started by this opcode (if any), otherwise None" _Instruction.is_jump_target.__doc__ = "True if other code jumps to here, otherwise False" +_Instruction.positions.__doc__ = "dis.Positions object holding the span of source code covered by this instruction" _ExceptionTableEntry = collections.namedtuple("_ExceptionTableEntry", "start end target depth lasti") @@ -221,6 +246,8 @@ class Instruction(_Instruction): offset - start index of operation within bytecode sequence starts_line - line started by this opcode (if any), otherwise None is_jump_target - True if other code jumps to here, otherwise False + positions - Optional dis.Positions object holding the span of source code + covered by this instruction """ def _disassemble(self, lineno_width=3, mark_as_current=False, offset_width=4): @@ -281,7 +308,7 @@ def get_instructions(x, *, first_line=None): return _get_instructions_bytes(co.co_code, co._varname_from_oparg, co.co_names, co.co_consts, - linestarts, line_offset) + linestarts, line_offset, co_positions=co.co_positions()) def _get_const_info(const_index, const_list): """Helper to get optional details about const references @@ -339,7 +366,7 @@ def parse_exception_table(code): def _get_instructions_bytes(code, varname_from_oparg=None, names=None, constants=None, linestarts=None, line_offset=0, - exception_entries=()): + exception_entries=(), co_positions=None): """Iterate over the instructions in a bytecode string. Generates a sequence of Instruction namedtuples giving the details of each @@ -348,6 +375,7 @@ def _get_instructions_bytes(code, varname_from_oparg=None, arguments. """ + co_positions = co_positions or iter(()) get_name = None if names is None else names.__getitem__ labels = set(findlabels(code)) for start, end, target, _, _ in exception_entries: @@ -362,6 +390,10 @@ def _get_instructions_bytes(code, varname_from_oparg=None, is_jump_target = offset in labels argval = None argrepr = '' + try: + positions = next(co_positions) + except StopIteration: + positions = None if arg is not None: # Set argval to the dereferenced value of the argument when # available, and argrepr to the string representation of argval. @@ -395,7 +427,7 @@ def _get_instructions_bytes(code, varname_from_oparg=None, if arg & (1< 0) @@ -562,7 +596,8 @@ def dis(self): line_offset=self._line_offset, file=output, lasti=offset, - exception_entries=self.exception_entries) + exception_entries=self.exception_entries, + co_positions=co.co_positions()) return output.getvalue() diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index f2daa17acd1fcc..a7bd593602e26d 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -949,196 +949,204 @@ def jumpy(): # After regeneration, update the references to code_object_f and # code_object_inner before rerunning the tests -#_instructions = dis.get_instructions(outer, first_line=expected_outer_line) -#print('expected_opinfo_outer = [\n ', - #',\n '.join(map(str, _instructions)), ',\n]', sep='') -#_instructions = dis.get_instructions(outer(), first_line=expected_f_line) -#print('expected_opinfo_f = [\n ', - #',\n '.join(map(str, _instructions)), ',\n]', sep='') -#_instructions = dis.get_instructions(outer()(), first_line=expected_inner_line) -#print('expected_opinfo_inner = [\n ', - #',\n '.join(map(str, _instructions)), ',\n]', sep='') -#_instructions = dis.get_instructions(jumpy, first_line=expected_jumpy_line) -#print('expected_opinfo_jumpy = [\n ', - #',\n '.join(map(str, _instructions)), ',\n]', sep='') - -#dis.dis(outer) +def _stringify_instruction(instr): + # Since line numbers and other offsets change a lot for these + # test cases, ignore them. + return str(instr._replace(positions=None)) + +def _prepare_test_cases(): + _instructions = dis.get_instructions(outer, first_line=expected_outer_line) + print('expected_opinfo_outer = [\n ', + ',\n '.join(map(_stringify_instruction, _instructions)), ',\n]', sep='') + _instructions = dis.get_instructions(outer(), first_line=expected_f_line) + print('expected_opinfo_f = [\n ', + ',\n '.join(map(_stringify_instruction, _instructions)), ',\n]', sep='') + _instructions = dis.get_instructions(outer()(), first_line=expected_inner_line) + print('expected_opinfo_inner = [\n ', + ',\n '.join(map(_stringify_instruction, _instructions)), ',\n]', sep='') + _instructions = dis.get_instructions(jumpy, first_line=expected_jumpy_line) + print('expected_opinfo_jumpy = [\n ', + ',\n '.join(map(_stringify_instruction, _instructions)), ',\n]', sep='') + dis.dis(outer) + +#_prepare_test_cases() Instruction = dis.Instruction expected_opinfo_outer = [ - Instruction(opname='MAKE_CELL', opcode=135, arg=0, argval='a', argrepr='a', offset=0, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_CELL', opcode=135, arg=1, argval='b', argrepr='b', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=4, starts_line=2, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=0, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=1, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=7, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello world!', argrepr="'Hello world!'", offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7, argrepr='', offset=36, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=40, starts_line=8, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=42, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=0, argval='a', argrepr='a', offset=0, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='MAKE_CELL', opcode=135, arg=1, argval='b', argrepr='b', offset=2, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval=(3, 4), argrepr='(3, 4)', offset=4, starts_line=2, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=0, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=1, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='BUILD_TUPLE', opcode=102, arg=2, argval=2, argrepr='', offset=10, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_f, argrepr=repr(code_object_f), offset=12, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f', argrepr="'outer..f'", offset=14, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=16, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='f', argrepr='f', offset=18, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=20, starts_line=7, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='a', argrepr='a', offset=22, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='b', argrepr='b', offset=24, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval='', argrepr="''", offset=26, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval=1, argrepr='1', offset=28, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='BUILD_LIST', opcode=103, arg=0, argval=0, argrepr='', offset=30, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='BUILD_MAP', opcode=105, arg=0, argval=0, argrepr='', offset=32, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval='Hello world!', argrepr="'Hello world!'", offset=34, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=7, argval=7, argrepr='', offset=36, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='f', argrepr='f', offset=40, starts_line=8, is_jump_target=False, positions=None), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=42, starts_line=None, is_jump_target=False, positions=None), ] + expected_opinfo_f = [ - Instruction(opname='MAKE_CELL', opcode=135, arg=0, argval='c', argrepr='c', offset=0, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_CELL', opcode=135, arg=1, argval='d', argrepr='d', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=4, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=0, argval='c', argrepr='c', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CLOSURE', opcode=136, arg=1, argval='d', argrepr='d', offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=16, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=20, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=24, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=28, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='c', argrepr='c', offset=30, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='d', argrepr='d', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=38, starts_line=6, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=40, starts_line=None, is_jump_target=False), + Instruction(opname='MAKE_CELL', opcode=135, arg=0, argval='c', argrepr='c', offset=0, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='MAKE_CELL', opcode=135, arg=1, argval='d', argrepr='d', offset=2, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=(5, 6), argrepr='(5, 6)', offset=4, starts_line=3, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=3, argval='a', argrepr='a', offset=6, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=4, argval='b', argrepr='b', offset=8, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=0, argval='c', argrepr='c', offset=10, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CLOSURE', opcode=136, arg=1, argval='d', argrepr='d', offset=12, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='BUILD_TUPLE', opcode=102, arg=4, argval=4, argrepr='', offset=14, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=code_object_inner, argrepr=repr(code_object_inner), offset=16, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='outer..f..inner', argrepr="'outer..f..inner'", offset=18, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='MAKE_FUNCTION', opcode=132, arg=9, argval=9, argrepr='defaults, closure', offset=20, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='STORE_FAST', opcode=125, arg=2, argval='inner', argrepr='inner', offset=22, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=24, starts_line=5, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='a', argrepr='a', offset=26, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='b', argrepr='b', offset=28, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=0, argval='c', argrepr='c', offset=30, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=1, argval='d', argrepr='d', offset=32, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=4, argval=4, argrepr='', offset=34, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=36, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=2, argval='inner', argrepr='inner', offset=38, starts_line=6, is_jump_target=False, positions=None), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=40, starts_line=None, is_jump_target=False, positions=None), ] expected_opinfo_inner = [ - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=0, starts_line=4, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=12, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6, argrepr='', offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=16, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=20, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='print', argrepr='print', offset=0, starts_line=4, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=2, argval='a', argrepr='a', offset=2, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=3, argval='b', argrepr='b', offset=4, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=4, argval='c', argrepr='c', offset=6, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_DEREF', opcode=137, arg=5, argval='d', argrepr='d', offset=8, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='e', argrepr='e', offset=10, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=1, argval='f', argrepr='f', offset=12, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=6, argval=6, argrepr='', offset=14, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=16, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=18, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=20, starts_line=None, is_jump_target=False, positions=None), ] expected_opinfo_jumpy = [ - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='range', argrepr='range', offset=0, starts_line=3, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=10, argrepr='10', offset=2, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=4, starts_line=None, is_jump_target=False), - Instruction(opname='GET_ITER', opcode=68, arg=None, argval=None, argrepr='', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='FOR_ITER', opcode=93, arg=17, argval=44, argrepr='to 44', offset=8, starts_line=None, is_jump_target=True), - Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=10, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=12, starts_line=4, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=14, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=16, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=18, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=20, starts_line=5, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=22, starts_line=None, is_jump_target=False), - Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=15, argval=30, argrepr='to 30', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=4, argval=8, argrepr='to 8', offset=28, starts_line=6, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=30, starts_line=7, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=32, starts_line=None, is_jump_target=False), - Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=21, argval=42, argrepr='to 42', offset=36, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=8, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=26, argval=52, argrepr='to 52', offset=40, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=4, argval=8, argrepr='to 8', offset=42, starts_line=7, is_jump_target=True), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=44, starts_line=10, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=46, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=48, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=50, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=52, starts_line=11, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=48, argval=96, argrepr='to 96', offset=54, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=56, starts_line=12, is_jump_target=True), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=58, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=60, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=62, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=64, starts_line=13, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=66, starts_line=None, is_jump_target=False), - Instruction(opname='INPLACE_SUBTRACT', opcode=56, arg=None, argval=None, argrepr='', offset=68, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=70, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=72, starts_line=14, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=74, starts_line=None, is_jump_target=False), - Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=76, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=41, argval=82, argrepr='to 82', offset=78, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=26, argval=52, argrepr='to 52', offset=80, starts_line=15, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=82, starts_line=16, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=84, starts_line=None, is_jump_target=False), - Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=86, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=46, argval=92, argrepr='to 92', offset=88, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=52, argval=104, argrepr='to 104', offset=90, starts_line=17, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=92, starts_line=11, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=28, argval=56, argrepr='to 56', offset=94, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=96, starts_line=19, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=98, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=100, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=102, starts_line=None, is_jump_target=False), - Instruction(opname='NOP', opcode=9, arg=None, argval=None, argrepr='', offset=104, starts_line=20, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=106, starts_line=21, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=108, starts_line=None, is_jump_target=False), - Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None, argval=None, argrepr='', offset=110, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=112, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=14, argval=144, argrepr='to 144', offset=114, starts_line=None, is_jump_target=False), - Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=116, starts_line=None, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=118, starts_line=22, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=120, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=109, argval=218, argrepr='to 218', offset=122, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=124, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=126, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=128, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=130, starts_line=23, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=132, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=134, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=136, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=25, argval=192, argrepr='to 192', offset=140, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT_AND_RERAISE', opcode=37, arg=None, argval=None, argrepr='', offset=142, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=144, starts_line=25, is_jump_target=True), - Instruction(opname='BEFORE_WITH', opcode=53, arg=None, argval=None, argrepr='', offset=146, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=148, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=150, starts_line=26, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=152, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=154, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=156, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=158, starts_line=25, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=160, starts_line=None, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=162, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=164, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=166, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=11, argval=192, argrepr='to 192', offset=168, starts_line=None, is_jump_target=False), - Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=170, starts_line=None, is_jump_target=False), - Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=90, argval=180, argrepr='to 180', offset=174, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=4, argval=4, argrepr='', offset=176, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT_AND_RERAISE', opcode=37, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=True), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=188, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=190, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=192, starts_line=28, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=194, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=196, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=198, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=200, starts_line=None, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=202, starts_line=None, is_jump_target=False), - Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=204, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=206, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=208, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=210, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=212, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=214, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT_AND_RERAISE', opcode=37, arg=None, argval=None, argrepr='', offset=216, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=218, starts_line=22, is_jump_target=True), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=0, argval='range', argrepr='range', offset=0, starts_line=3, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=10, argrepr='10', offset=2, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=4, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='GET_ITER', opcode=68, arg=None, argval=None, argrepr='', offset=6, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='FOR_ITER', opcode=93, arg=17, argval=44, argrepr='to 44', offset=8, starts_line=None, is_jump_target=True, positions=None), + Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=10, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=12, starts_line=4, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=14, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=16, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=18, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=20, starts_line=5, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=22, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=24, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=15, argval=30, argrepr='to 30', offset=26, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=4, argval=8, argrepr='to 8', offset=28, starts_line=6, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=30, starts_line=7, is_jump_target=True, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=32, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=34, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=21, argval=42, argrepr='to 42', offset=36, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=8, is_jump_target=False, positions=None), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=26, argval=52, argrepr='to 52', offset=40, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=4, argval=8, argrepr='to 8', offset=42, starts_line=7, is_jump_target=True, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=44, starts_line=10, is_jump_target=True, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=46, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=48, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=50, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=52, starts_line=11, is_jump_target=True, positions=None), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=48, argval=96, argrepr='to 96', offset=54, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=56, starts_line=12, is_jump_target=True, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=58, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=60, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=62, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=64, starts_line=13, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=66, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='INPLACE_SUBTRACT', opcode=56, arg=None, argval=None, argrepr='', offset=68, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=70, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=72, starts_line=14, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=74, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=76, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=41, argval=82, argrepr='to 82', offset=78, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=26, argval=52, argrepr='to 52', offset=80, starts_line=15, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=82, starts_line=16, is_jump_target=True, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=84, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=86, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=46, argval=92, argrepr='to 92', offset=88, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=52, argval=104, argrepr='to 104', offset=90, starts_line=17, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=92, starts_line=11, is_jump_target=True, positions=None), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=28, argval=56, argrepr='to 56', offset=94, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=96, starts_line=19, is_jump_target=True, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=98, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=100, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=102, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='NOP', opcode=9, arg=None, argval=None, argrepr='', offset=104, starts_line=20, is_jump_target=True, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=106, starts_line=21, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=108, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None, argval=None, argrepr='', offset=110, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=112, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=14, argval=144, argrepr='to 144', offset=114, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=116, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=118, starts_line=22, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=120, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=109, argval=218, argrepr='to 218', offset=122, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=124, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=126, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=128, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=130, starts_line=23, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=132, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=134, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=136, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=25, argval=192, argrepr='to 192', offset=140, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_EXCEPT_AND_RERAISE', opcode=37, arg=None, argval=None, argrepr='', offset=142, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=144, starts_line=25, is_jump_target=True, positions=None), + Instruction(opname='BEFORE_WITH', opcode=53, arg=None, argval=None, argrepr='', offset=146, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=148, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=150, starts_line=26, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=152, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=154, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=156, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=158, starts_line=25, is_jump_target=False, positions=None), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=160, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=162, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=164, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=166, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=11, argval=192, argrepr='to 192', offset=168, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=170, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=90, argval=180, argrepr='to 180', offset=174, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='RERAISE', opcode=119, arg=4, argval=4, argrepr='', offset=176, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_EXCEPT_AND_RERAISE', opcode=37, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=True, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=188, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=190, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=192, starts_line=28, is_jump_target=True, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=194, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=196, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=198, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=200, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=202, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='PUSH_EXC_INFO', opcode=35, arg=None, argval=None, argrepr='', offset=204, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=206, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=208, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=210, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=212, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=214, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='POP_EXCEPT_AND_RERAISE', opcode=37, arg=None, argval=None, argrepr='', offset=216, starts_line=None, is_jump_target=False, positions=None), + Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=218, starts_line=22, is_jump_target=True, positions=None), ] # One last piece of inspect fodder to check the default line number handling @@ -1149,7 +1157,14 @@ def simple(): pass ] -class InstructionTests(BytecodeTestCase): +class InstructionTestCase(BytecodeTestCase): + + def assertInstructionsEqual(self, instrs_1, instrs_2, /): + instrs_1 = [instr_1._replace(positions=None) for instr_1 in instrs_1] + instrs_2 = [instr_2._replace(positions=None) for instr_2 in instrs_2] + self.assertEqual(instrs_1, instrs_2) + +class InstructionTests(InstructionTestCase): def __init__(self, *args): super().__init__(*args) @@ -1157,35 +1172,75 @@ def __init__(self, *args): def test_default_first_line(self): actual = dis.get_instructions(simple) - self.assertEqual(list(actual), expected_opinfo_simple) + self.assertInstructionsEqual(list(actual), expected_opinfo_simple) def test_first_line_set_to_None(self): actual = dis.get_instructions(simple, first_line=None) - self.assertEqual(list(actual), expected_opinfo_simple) + self.assertInstructionsEqual(list(actual), expected_opinfo_simple) def test_outer(self): actual = dis.get_instructions(outer, first_line=expected_outer_line) - self.assertEqual(list(actual), expected_opinfo_outer) + self.assertInstructionsEqual(list(actual), expected_opinfo_outer) def test_nested(self): with captured_stdout(): f = outer() actual = dis.get_instructions(f, first_line=expected_f_line) - self.assertEqual(list(actual), expected_opinfo_f) + self.assertInstructionsEqual(list(actual), expected_opinfo_f) def test_doubly_nested(self): with captured_stdout(): inner = outer()() actual = dis.get_instructions(inner, first_line=expected_inner_line) - self.assertEqual(list(actual), expected_opinfo_inner) + self.assertInstructionsEqual(list(actual), expected_opinfo_inner) def test_jumpy(self): actual = dis.get_instructions(jumpy, first_line=expected_jumpy_line) - self.assertEqual(list(actual), expected_opinfo_jumpy) + self.assertInstructionsEqual(list(actual), expected_opinfo_jumpy) + + def test_co_positions(self): + code = compile('f(\n x, y, z\n)', '', 'exec') + positions = [ + instr.positions + for instr in dis.get_instructions(code) + ] + expected = [ + (1, 1, 0, 1), + (2, 2, 2, 3), + (2, 2, 5, 6), + (2, 2, 8, 9), + (1, 3, 0, 1), + (1, 3, 0, 1), + (1, 3, 0, 1), + (1, 3, 0, 1) + ] + self.assertEqual(positions, expected) + + def test_co_positions_missing_info(self): + code = compile('x, y, z', '', 'exec') + code_without_column_table = code.replace(co_columntable=b'') + actual = dis.get_instructions(code_without_column_table) + for instruction in actual: + with self.subTest(instruction=instruction): + start_line, end_line, start_offset, end_offset = instruction.positions + assert start_line == 1 + assert end_line == 1 + assert start_offset is None + assert end_offset is None + + code_without_endline_table = code.replace(co_endlinetable=b'') + actual = dis.get_instructions(code_without_endline_table) + for instruction in actual: + with self.subTest(instruction=instruction): + start_line, end_line, start_offset, end_offset = instruction.positions + assert start_line == 1 + assert end_line is None + assert start_offset is not None + assert end_offset is not None # get_instructions has its own tests above, so can rely on it to validate # the object oriented API -class BytecodeTests(unittest.TestCase): +class BytecodeTests(InstructionTestCase): def test_instantiation(self): # Test with function, method, code string and code object @@ -1201,11 +1256,11 @@ def test_iteration(self): with self.subTest(obj=obj): via_object = list(dis.Bytecode(obj)) via_generator = list(dis.get_instructions(obj)) - self.assertEqual(via_object, via_generator) + self.assertInstructionsEqual(via_object, via_generator) def test_explicit_first_line(self): actual = dis.Bytecode(outer, first_line=expected_outer_line) - self.assertEqual(list(actual), expected_opinfo_outer) + self.assertInstructionsEqual(list(actual), expected_opinfo_outer) def test_source_line_in_disassembly(self): # Use the line in the source code From 5644c7b3ffd49bed58dc095be6e6148e0bb4431e Mon Sep 17 00:00:00 2001 From: Ammar Askar Date: Sun, 4 Jul 2021 19:14:33 -0400 Subject: [PATCH 30/40] bpo-43950: Print columns in tracebacks (PEP 657) (GH-26958) The traceback.c and traceback.py mechanisms now utilize the newly added code.co_positions and PyCode_Addr2Location to print carets on the specific expressions involved in a traceback. Co-authored-by: Pablo Galindo Co-authored-by: Ammar Askar Co-authored-by: Batuhan Taskaya --- Doc/library/traceback.rst | 17 ++- Include/cpython/traceback.h | 2 +- Lib/idlelib/idle_test/test_run.py | 6 +- Lib/test/test_cmd_line_script.py | 4 +- Lib/test/test_doctest.py | 1 + Lib/test/test_traceback.py | 176 ++++++++++++++++++++++++++---- Lib/test/test_zipimport.py | 5 +- Lib/traceback.py | 89 +++++++++++++-- Parser/pegen.c | 46 ++++---- Parser/pegen.h | 1 + Python/_warnings.c | 2 +- Python/traceback.c | 73 ++++++++++++- 12 files changed, 348 insertions(+), 74 deletions(-) diff --git a/Doc/library/traceback.rst b/Doc/library/traceback.rst index bd53bc066becc5..1961b9a435bd35 100644 --- a/Doc/library/traceback.rst +++ b/Doc/library/traceback.rst @@ -447,37 +447,42 @@ The output for the example would look similar to this: *** print_tb: File "", line 10, in lumberjack() + ^^^^^^^^^^^^ *** print_exception: Traceback (most recent call last): File "", line 10, in lumberjack() + ^^^^^^^^^^^^ File "", line 4, in lumberjack bright_side_of_death() + ^^^^^^^^^^^^^^^^^^^^^^ IndexError: tuple index out of range *** print_exc: Traceback (most recent call last): File "", line 10, in lumberjack() + ^^^^^^^^^^^^ File "", line 4, in lumberjack bright_side_of_death() + ^^^^^^^^^^^^^^^^^^^^^^ IndexError: tuple index out of range *** format_exc, first and last line: Traceback (most recent call last): IndexError: tuple index out of range *** format_exception: ['Traceback (most recent call last):\n', - ' File "", line 10, in \n lumberjack()\n', - ' File "", line 4, in lumberjack\n bright_side_of_death()\n', - ' File "", line 7, in bright_side_of_death\n return tuple()[0]\n', + ' File "", line 10, in \n lumberjack()\n ^^^^^^^^^^^^\n', + ' File "", line 4, in lumberjack\n bright_side_of_death()\n ^^^^^^^^^^^^^^^^^^^^^^\n', + ' File "", line 7, in bright_side_of_death\n return tuple()[0]\n ^^^^^^^^^^\n', 'IndexError: tuple index out of range\n'] *** extract_tb: [, line 10 in >, , line 4 in lumberjack>, , line 7 in bright_side_of_death>] *** format_tb: - [' File "", line 10, in \n lumberjack()\n', - ' File "", line 4, in lumberjack\n bright_side_of_death()\n', - ' File "", line 7, in bright_side_of_death\n return tuple()[0]\n'] + [' File "", line 10, in \n lumberjack()\n ^^^^^^^^^^^^\n', + ' File "", line 4, in lumberjack\n bright_side_of_death()\n ^^^^^^^^^^^^^^^^^^^^^^\n', + ' File "", line 7, in bright_side_of_death\n return tuple()[0]\n ^^^^^^^^^^\n'] *** tb_lineno: 10 diff --git a/Include/cpython/traceback.h b/Include/cpython/traceback.h index aac5b42c344d3f..d0dde335cfee5b 100644 --- a/Include/cpython/traceback.h +++ b/Include/cpython/traceback.h @@ -10,5 +10,5 @@ typedef struct _traceback { int tb_lineno; } PyTracebackObject; -PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, PyObject *, int, int); +PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, PyObject *, int, int, int *, PyObject **); PyAPI_FUNC(void) _PyTraceback_Add(const char *, const char *, int); diff --git a/Lib/idlelib/idle_test/test_run.py b/Lib/idlelib/idle_test/test_run.py index ec4637c5ca617a..b289fa7cbd6481 100644 --- a/Lib/idlelib/idle_test/test_run.py +++ b/Lib/idlelib/idle_test/test_run.py @@ -33,9 +33,9 @@ def __eq__(self, other): run.print_exception() tb = output.getvalue().strip().splitlines() - self.assertEqual(11, len(tb)) - self.assertIn('UnhashableException: ex2', tb[3]) - self.assertIn('UnhashableException: ex1', tb[10]) + self.assertEqual(13, len(tb)) + self.assertIn('UnhashableException: ex2', tb[4]) + self.assertIn('UnhashableException: ex1', tb[12]) data = (('1/0', ZeroDivisionError, "division by zero\n"), ('abc', NameError, "name 'abc' is not defined. " diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py index 6ffec918ebbd59..e50c9925799917 100644 --- a/Lib/test/test_cmd_line_script.py +++ b/Lib/test/test_cmd_line_script.py @@ -548,10 +548,10 @@ def test_pep_409_verbiage(self): script_name = _make_test_script(script_dir, 'script', script) exitcode, stdout, stderr = assert_python_failure(script_name) text = stderr.decode('ascii').split('\n') - self.assertEqual(len(text), 5) + self.assertEqual(len(text), 6) self.assertTrue(text[0].startswith('Traceback')) self.assertTrue(text[1].startswith(' File ')) - self.assertTrue(text[3].startswith('NameError')) + self.assertTrue(text[4].startswith('NameError')) def test_non_ascii(self): # Mac OS X denies the creation of a file with an invalid UTF-8 name. diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 828a0ff56763a4..06d9d5d4ade83c 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -2835,6 +2835,7 @@ def test_unicode(): """ exec(compile(example.source, filename, "single", File "", line 1, in raise Exception('clé') + ^^^^^^^^^^^^^^^^^^^^^^ Exception: clé TestResults(failed=1, attempted=1) """ diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 78b2851d384942..54f592a8ea5001 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -17,8 +17,9 @@ test_code = namedtuple('code', ['co_filename', 'co_name']) +test_code.co_positions = lambda _: iter([(6, 6, 0, 0)]) test_frame = namedtuple('frame', ['f_code', 'f_globals', 'f_locals']) -test_tb = namedtuple('tb', ['tb_frame', 'tb_lineno', 'tb_next']) +test_tb = namedtuple('tb', ['tb_frame', 'tb_lineno', 'tb_next', 'tb_lasti']) class TracebackCases(unittest.TestCase): @@ -154,9 +155,9 @@ def do_test(firstlines, message, charset, lineno): self.assertTrue(stdout[2].endswith(err_line), "Invalid traceback line: {0!r} instead of {1!r}".format( stdout[2], err_line)) - self.assertTrue(stdout[3] == err_msg, + self.assertTrue(stdout[4] == err_msg, "Invalid error message: {0!r} instead of {1!r}".format( - stdout[3], err_msg)) + stdout[4], err_msg)) do_test("", "foo", "ascii", 3) for charset in ("ascii", "iso-8859-1", "utf-8", "GBK"): @@ -272,6 +273,114 @@ def test_signatures(self): '(exc, /, value=)') +class TracebackErrorLocationCaretTests(unittest.TestCase): + """ + Tests for printing code error expressions as part of PEP 657 + """ + def get_exception(self, callable): + try: + callable() + self.fail("No exception thrown.") + except: + return traceback.format_exc().splitlines()[:-1] + + callable_line = get_exception.__code__.co_firstlineno + 2 + + def test_basic_caret(self): + def f(): + raise ValueError("basic caret tests") + + lineno_f = f.__code__.co_firstlineno + expected_f = ( + 'Traceback (most recent call last):\n' + f' File "{__file__}", line {self.callable_line}, in get_exception\n' + ' callable()\n' + ' ^^^^^^^^^^\n' + f' File "{__file__}", line {lineno_f+1}, in f\n' + ' raise ValueError("basic caret tests")\n' + ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n' + ) + result_lines = self.get_exception(f) + self.assertEqual(result_lines, expected_f.splitlines()) + + def test_line_with_unicode(self): + # Make sure that even if a line contains multi-byte unicode characters + # the correct carets are printed. + def f_with_unicode(): + raise ValueError("Ĥellö Wörld") + + lineno_f = f_with_unicode.__code__.co_firstlineno + expected_f = ( + 'Traceback (most recent call last):\n' + f' File "{__file__}", line {self.callable_line}, in get_exception\n' + ' callable()\n' + ' ^^^^^^^^^^\n' + f' File "{__file__}", line {lineno_f+1}, in f_with_unicode\n' + ' raise ValueError("Ĥellö Wörld")\n' + ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n' + ) + result_lines = self.get_exception(f_with_unicode) + self.assertEqual(result_lines, expected_f.splitlines()) + + def test_caret_in_type_annotation(self): + def f_with_type(): + def foo(a: THIS_DOES_NOT_EXIST ) -> int: + return 0 + + lineno_f = f_with_type.__code__.co_firstlineno + expected_f = ( + 'Traceback (most recent call last):\n' + f' File "{__file__}", line {self.callable_line}, in get_exception\n' + ' callable()\n' + ' ^^^^^^^^^^\n' + f' File "{__file__}", line {lineno_f+1}, in f_with_type\n' + ' def foo(a: THIS_DOES_NOT_EXIST ) -> int:\n' + ' ^^^^^^^^^^^^^^^^^^^\n' + ) + result_lines = self.get_exception(f_with_type) + self.assertEqual(result_lines, expected_f.splitlines()) + + def test_caret_multiline_expression(self): + # Make sure no carets are printed for expressions spanning multiple + # lines. + def f_with_multiline(): + raise ValueError( + "error over multiple lines" + ) + + lineno_f = f_with_multiline.__code__.co_firstlineno + expected_f = ( + 'Traceback (most recent call last):\n' + f' File "{__file__}", line {self.callable_line}, in get_exception\n' + ' callable()\n' + ' ^^^^^^^^^^\n' + f' File "{__file__}", line {lineno_f+1}, in f_with_multiline\n' + ' raise ValueError(\n' + ) + result_lines = self.get_exception(f_with_multiline) + self.assertEqual(result_lines, expected_f.splitlines()) + + +@cpython_only +class CPythonTracebackErrorCaretTests(TracebackErrorLocationCaretTests): + """ + Same set of tests as above but with Python's internal traceback printing. + """ + def get_exception(self, callable): + from _testcapi import traceback_print + try: + callable() + self.fail("No exception thrown.") + except: + type_, value, tb = sys.exc_info() + + file_ = StringIO() + traceback_print(tb, file_) + return file_.getvalue().splitlines() + + callable_line = get_exception.__code__.co_firstlineno + 3 + + class TracebackFormatTests(unittest.TestCase): def some_exception(self): @@ -315,9 +424,9 @@ def check_traceback_format(self, cleanup_func=None): # Make sure that the traceback is properly indented. tb_lines = python_fmt.splitlines() - self.assertEqual(len(tb_lines), 5) + self.assertEqual(len(tb_lines), 7) banner = tb_lines[0] - location, source_line = tb_lines[-2:] + location, source_line = tb_lines[-3], tb_lines[-2] self.assertTrue(banner.startswith('Traceback')) self.assertTrue(location.startswith(' File')) self.assertTrue(source_line.startswith(' raise')) @@ -381,12 +490,16 @@ def f(): 'Traceback (most recent call last):\n' f' File "{__file__}", line {lineno_f+5}, in _check_recursive_traceback_display\n' ' f()\n' + ' ^^^\n' f' File "{__file__}", line {lineno_f+1}, in f\n' ' f()\n' + ' ^^^\n' f' File "{__file__}", line {lineno_f+1}, in f\n' ' f()\n' + ' ^^^\n' f' File "{__file__}", line {lineno_f+1}, in f\n' ' f()\n' + ' ^^^\n' # XXX: The following line changes depending on whether the tests # are run through the interactive interpreter or with -m # It also varies depending on the platform (stack size) @@ -427,19 +540,24 @@ def g(count=10): result_g = ( f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' ' [Previous line repeated 7 more times]\n' f' File "{__file__}", line {lineno_g+3}, in g\n' ' raise ValueError\n' + ' ^^^^^^^^^^^^^^^^\n' 'ValueError\n' ) tb_line = ( 'Traceback (most recent call last):\n' f' File "{__file__}", line {lineno_g+7}, in _check_recursive_traceback_display\n' ' g()\n' + ' ^^^\n' ) expected = (tb_line + result_g).splitlines() actual = stderr_g.getvalue().splitlines() @@ -464,15 +582,20 @@ def h(count=10): 'Traceback (most recent call last):\n' f' File "{__file__}", line {lineno_h+7}, in _check_recursive_traceback_display\n' ' h()\n' + ' ^^^\n' f' File "{__file__}", line {lineno_h+2}, in h\n' ' return h(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_h+2}, in h\n' ' return h(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_h+2}, in h\n' ' return h(count-1)\n' + ' ^^^^^^^^^^\n' ' [Previous line repeated 7 more times]\n' f' File "{__file__}", line {lineno_h+3}, in h\n' ' g()\n' + ' ^^^\n' ) expected = (result_h + result_g).splitlines() actual = stderr_h.getvalue().splitlines() @@ -489,18 +612,23 @@ def h(count=10): result_g = ( f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_g+3}, in g\n' ' raise ValueError\n' + ' ^^^^^^^^^^^^^^^^\n' 'ValueError\n' ) tb_line = ( 'Traceback (most recent call last):\n' - f' File "{__file__}", line {lineno_g+71}, in _check_recursive_traceback_display\n' + f' File "{__file__}", line {lineno_g+81}, in _check_recursive_traceback_display\n' ' g(traceback._RECURSIVE_CUTOFF)\n' + ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n' ) expected = (tb_line + result_g).splitlines() actual = stderr_g.getvalue().splitlines() @@ -517,19 +645,24 @@ def h(count=10): result_g = ( f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' f' File "{__file__}", line {lineno_g+2}, in g\n' ' return g(count-1)\n' + ' ^^^^^^^^^^\n' ' [Previous line repeated 1 more time]\n' f' File "{__file__}", line {lineno_g+3}, in g\n' ' raise ValueError\n' + ' ^^^^^^^^^^^^^^^^\n' 'ValueError\n' ) tb_line = ( 'Traceback (most recent call last):\n' - f' File "{__file__}", line {lineno_g+99}, in _check_recursive_traceback_display\n' + f' File "{__file__}", line {lineno_g+114}, in _check_recursive_traceback_display\n' ' g(traceback._RECURSIVE_CUTOFF + 1)\n' + ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n' ) expected = (tb_line + result_g).splitlines() actual = stderr_g.getvalue().splitlines() @@ -580,10 +713,10 @@ def __eq__(self, other): exception_print(exc_val) tb = stderr_f.getvalue().strip().splitlines() - self.assertEqual(11, len(tb)) - self.assertEqual(context_message.strip(), tb[5]) - self.assertIn('UnhashableException: ex2', tb[3]) - self.assertIn('UnhashableException: ex1', tb[10]) + self.assertEqual(13, len(tb)) + self.assertEqual(context_message.strip(), tb[6]) + self.assertIn('UnhashableException: ex2', tb[4]) + self.assertIn('UnhashableException: ex1', tb[12]) cause_message = ( @@ -613,8 +746,8 @@ def zero_div(self): def check_zero_div(self, msg): lines = msg.splitlines() - self.assertTrue(lines[-3].startswith(' File')) - self.assertIn('1/0 # In zero_div', lines[-2]) + self.assertTrue(lines[-4].startswith(' File')) + self.assertIn('1/0 # In zero_div', lines[-3]) self.assertTrue(lines[-1].startswith('ZeroDivisionError'), lines[-1]) def test_simple(self): @@ -623,11 +756,11 @@ def test_simple(self): except ZeroDivisionError as _: e = _ lines = self.get_report(e).splitlines() - self.assertEqual(len(lines), 4) + self.assertEqual(len(lines), 5) self.assertTrue(lines[0].startswith('Traceback')) self.assertTrue(lines[1].startswith(' File')) self.assertIn('1/0 # Marker', lines[2]) - self.assertTrue(lines[3].startswith('ZeroDivisionError')) + self.assertTrue(lines[4].startswith('ZeroDivisionError')) def test_cause(self): def inner_raise(): @@ -666,11 +799,11 @@ def test_context_suppression(self): except ZeroDivisionError as _: e = _ lines = self.get_report(e).splitlines() - self.assertEqual(len(lines), 4) + self.assertEqual(len(lines), 5) self.assertTrue(lines[0].startswith('Traceback')) self.assertTrue(lines[1].startswith(' File')) self.assertIn('ZeroDivisionError from None', lines[2]) - self.assertTrue(lines[3].startswith('ZeroDivisionError')) + self.assertTrue(lines[4].startswith('ZeroDivisionError')) def test_cause_and_context(self): # When both a cause and a context are set, only the cause should be @@ -1362,7 +1495,7 @@ def test_lookup_lines(self): e = Exception("uh oh") c = test_code('/foo.py', 'method') f = test_frame(c, None, None) - tb = test_tb(f, 6, None) + tb = test_tb(f, 6, None, 0) exc = traceback.TracebackException(Exception, e, tb, lookup_lines=False) self.assertEqual(linecache.cache, {}) linecache.updatecache('/foo.py', globals()) @@ -1373,7 +1506,7 @@ def test_locals(self): e = Exception("uh oh") c = test_code('/foo.py', 'method') f = test_frame(c, globals(), {'something': 1, 'other': 'string'}) - tb = test_tb(f, 6, None) + tb = test_tb(f, 6, None, 0) exc = traceback.TracebackException( Exception, e, tb, capture_locals=True) self.assertEqual( @@ -1384,7 +1517,7 @@ def test_no_locals(self): e = Exception("uh oh") c = test_code('/foo.py', 'method') f = test_frame(c, globals(), {'something': 1}) - tb = test_tb(f, 6, None) + tb = test_tb(f, 6, None, 0) exc = traceback.TracebackException(Exception, e, tb) self.assertEqual(exc.stack[0].locals, None) @@ -1405,8 +1538,9 @@ def f(): output = StringIO() exc.print(file=output) self.assertEqual( - output.getvalue().split('\n')[-4:], + output.getvalue().split('\n')[-5:], [' x/0', + ' ^^^', ' x = 12', 'ZeroDivisionError: division by zero', '']) diff --git a/Lib/test/test_zipimport.py b/Lib/test/test_zipimport.py index dfc4a060ec6cc9..861ebe347b3ee9 100644 --- a/Lib/test/test_zipimport.py +++ b/Lib/test/test_zipimport.py @@ -716,7 +716,10 @@ def doTraceback(self, module): s = io.StringIO() print_tb(tb, 1, s) - self.assertTrue(s.getvalue().endswith(raise_src)) + self.assertTrue(s.getvalue().endswith( + ' def do_raise(): raise TypeError\n' + ' ^^^^^^^^^^^^^^^\n' + )) else: raise AssertionError("This ought to be impossible") diff --git a/Lib/traceback.py b/Lib/traceback.py index b4c7641addec77..cf1ba2a1a49ac9 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -69,7 +69,8 @@ def extract_tb(tb, limit=None): trace. The line is a string with leading and trailing whitespace stripped; if the source is not available it is None. """ - return StackSummary.extract(walk_tb(tb), limit=limit) + return StackSummary._extract_from_extended_frame_gen( + _walk_tb_with_full_positions(tb), limit=limit) # # Exception formatting and output. @@ -251,10 +252,12 @@ class FrameSummary: mapping the name to the repr() of the variable. """ - __slots__ = ('filename', 'lineno', 'name', '_line', 'locals') + __slots__ = ('filename', 'lineno', 'end_lineno', 'colno', 'end_colno', + 'name', '_line', 'locals') def __init__(self, filename, lineno, name, *, lookup_line=True, - locals=None, line=None): + locals=None, line=None, + end_lineno=None, colno=None, end_colno=None): """Construct a FrameSummary. :param lookup_line: If True, `linecache` is consulted for the source @@ -271,6 +274,9 @@ def __init__(self, filename, lineno, name, *, lookup_line=True, if lookup_line: self.line self.locals = {k: repr(v) for k, v in locals.items()} if locals else None + self.end_lineno = end_lineno + self.colno = colno + self.end_colno = end_colno def __eq__(self, other): if isinstance(other, FrameSummary): @@ -295,11 +301,17 @@ def __repr__(self): def __len__(self): return 4 + @property + def _original_line(self): + # Returns the line as-is from the source, without modifying whitespace. + self.line + return self._line + @property def line(self): if self._line is None: - self._line = linecache.getline(self.filename, self.lineno).strip() - return self._line + self._line = linecache.getline(self.filename, self.lineno) + return self._line.strip() def walk_stack(f): @@ -309,7 +321,7 @@ def walk_stack(f): current stack is used. Usually used with StackSummary.extract. """ if f is None: - f = sys._getframe().f_back.f_back + f = sys._getframe().f_back.f_back.f_back.f_back while f is not None: yield f, f.f_lineno f = f.f_back @@ -326,6 +338,27 @@ def walk_tb(tb): tb = tb.tb_next +def _walk_tb_with_full_positions(tb): + # Internal version of walk_tb that yields full code positions including + # end line and column information. + while tb is not None: + positions = _get_code_position(tb.tb_frame.f_code, tb.tb_lasti) + # Yield tb_lineno when co_positions does not have a line number to + # maintain behavior with walk_tb. + if positions[0] is None: + yield tb.tb_frame, (tb.tb_lineno, ) + positions[1:] + else: + yield tb.tb_frame, positions + tb = tb.tb_next + + +def _get_code_position(code, instruction_index): + if instruction_index < 0: + return (None, None, None, None) + positions_gen = code.co_positions() + return next(itertools.islice(positions_gen, instruction_index // 2, None)) + + _RECURSIVE_CUTOFF = 3 # Also hardcoded in traceback.c. class StackSummary(list): @@ -345,6 +378,21 @@ def extract(klass, frame_gen, *, limit=None, lookup_lines=True, :param capture_locals: If True, the local variables from each frame will be captured as object representations into the FrameSummary. """ + def extended_frame_gen(): + for f, lineno in frame_gen: + yield f, (lineno, None, None, None) + + return klass._extract_from_extended_frame_gen( + extended_frame_gen(), limit=limit, lookup_lines=lookup_lines, + capture_locals=capture_locals) + + @classmethod + def _extract_from_extended_frame_gen(klass, frame_gen, *, limit=None, + lookup_lines=True, capture_locals=False): + # Same as extract but operates on a frame generator that yields + # (frame, (lineno, end_lineno, colno, end_colno)) in the stack. + # Only lineno is required, the remaining fields can be empty if the + # information is not available. if limit is None: limit = getattr(sys, 'tracebacklimit', None) if limit is not None and limit < 0: @@ -357,7 +405,7 @@ def extract(klass, frame_gen, *, limit=None, lookup_lines=True, result = klass() fnames = set() - for f, lineno in frame_gen: + for f, (lineno, end_lineno, colno, end_colno) in frame_gen: co = f.f_code filename = co.co_filename name = co.co_name @@ -370,7 +418,8 @@ def extract(klass, frame_gen, *, limit=None, lookup_lines=True, else: f_locals = None result.append(FrameSummary( - filename, lineno, name, lookup_line=False, locals=f_locals)) + filename, lineno, name, lookup_line=False, locals=f_locals, + end_lineno=end_lineno, colno=colno, end_colno=end_colno)) for filename in fnames: linecache.checkcache(filename) # If immediate lookup was desired, trigger lookups now. @@ -437,6 +486,17 @@ def format(self): frame.filename, frame.lineno, frame.name)) if frame.line: row.append(' {}\n'.format(frame.line.strip())) + + stripped_characters = len(frame._original_line) - len(frame.line.lstrip()) + if frame.end_lineno == frame.lineno and frame.end_colno != 0: + colno = _byte_offset_to_character_offset(frame._original_line, frame.colno) + end_colno = _byte_offset_to_character_offset(frame._original_line, frame.end_colno) + + row.append(' ') + row.append(' ' * (colno - stripped_characters)) + row.append('^' * (end_colno - colno)) + row.append('\n') + if frame.locals: for name, value in sorted(frame.locals.items()): row.append(' {name} = {value}\n'.format(name=name, value=value)) @@ -450,6 +510,14 @@ def format(self): return result +def _byte_offset_to_character_offset(str, offset): + as_utf8 = str.encode('utf-8') + if offset > len(as_utf8): + offset = len(as_utf8) + + return len(as_utf8[:offset + 1].decode("utf-8")) + + class TracebackException: """An exception ready for rendering. @@ -491,8 +559,9 @@ def __init__(self, exc_type, exc_value, exc_traceback, *, limit=None, _seen.add(id(exc_value)) # TODO: locals. - self.stack = StackSummary.extract( - walk_tb(exc_traceback), limit=limit, lookup_lines=lookup_lines, + self.stack = StackSummary._extract_from_extended_frame_gen( + _walk_tb_with_full_positions(exc_traceback), + limit=limit, lookup_lines=lookup_lines, capture_locals=capture_locals) self.exc_type = exc_type # Capture now to permit freeing resources: only complication is in the diff --git a/Parser/pegen.c b/Parser/pegen.c index 3472d489e067d3..3e8ddfbf53cf75 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -139,27 +139,6 @@ _create_dummy_identifier(Parser *p) return _PyPegen_new_identifier(p, ""); } -static inline Py_ssize_t -byte_offset_to_character_offset(PyObject *line, Py_ssize_t col_offset) -{ - const char *str = PyUnicode_AsUTF8(line); - if (!str) { - return 0; - } - Py_ssize_t len = strlen(str); - if (col_offset > len + 1) { - col_offset = len + 1; - } - assert(col_offset >= 0); - PyObject *text = PyUnicode_DecodeUTF8(str, col_offset, "replace"); - if (!text) { - return 0; - } - Py_ssize_t size = PyUnicode_GET_LENGTH(text); - Py_DECREF(text); - return size; -} - const char * _PyPegen_get_expr_name(expr_ty e) { @@ -418,6 +397,27 @@ get_error_line(Parser *p, Py_ssize_t lineno) return PyUnicode_DecodeUTF8(cur_line, next_newline - cur_line, "replace"); } +Py_ssize_t +_PyPegen_byte_offset_to_character_offset(PyObject *line, Py_ssize_t col_offset) +{ + const char *str = PyUnicode_AsUTF8(line); + if (!str) { + return 0; + } + Py_ssize_t len = strlen(str); + if (col_offset > len + 1) { + col_offset = len + 1; + } + assert(col_offset >= 0); + PyObject *text = PyUnicode_DecodeUTF8(str, col_offset, "replace"); + if (!text) { + return 0; + } + Py_ssize_t size = PyUnicode_GET_LENGTH(text); + Py_DECREF(text); + return size; +} + void * _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, Py_ssize_t lineno, Py_ssize_t col_offset, @@ -498,9 +498,9 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, Py_ssize_t end_col_number = end_col_offset; if (p->tok->encoding != NULL) { - col_number = byte_offset_to_character_offset(error_line, col_offset); + col_number = _PyPegen_byte_offset_to_character_offset(error_line, col_offset); end_col_number = end_col_number > 0 ? - byte_offset_to_character_offset(error_line, end_col_offset) : + _PyPegen_byte_offset_to_character_offset(error_line, end_col_offset) : end_col_number; } tmp = Py_BuildValue("(OiiNii)", p->tok->filename, lineno, col_number, error_line, end_lineno, end_col_number); diff --git a/Parser/pegen.h b/Parser/pegen.h index eac73bba151bca..c09b4a2927562b 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -139,6 +139,7 @@ expr_ty _PyPegen_name_token(Parser *p); expr_ty _PyPegen_number_token(Parser *p); void *_PyPegen_string_token(Parser *p); const char *_PyPegen_get_expr_name(expr_ty); +Py_ssize_t _PyPegen_byte_offset_to_character_offset(PyObject *line, Py_ssize_t col_offset); void *_PyPegen_raise_error(Parser *p, PyObject *errtype, const char *errmsg, ...); void *_PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, Py_ssize_t lineno, Py_ssize_t col_offset, diff --git a/Python/_warnings.c b/Python/_warnings.c index 9c8815c1a3e204..9f68da208731e7 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -544,7 +544,7 @@ show_warning(PyObject *filename, int lineno, PyObject *text, PyFile_WriteString("\n", f_stderr); } else { - _Py_DisplaySourceLine(f_stderr, filename, lineno, 2); + _Py_DisplaySourceLine(f_stderr, filename, lineno, 2, NULL, NULL); } error: diff --git a/Python/traceback.c b/Python/traceback.c index f7dc5ad6864762..a60f9916424337 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -3,9 +3,11 @@ #include "Python.h" -#include "code.h" +#include "code.h" // PyCode_Addr2Line etc #include "pycore_interp.h" // PyInterpreterState.gc #include "frameobject.h" // PyFrame_GetBack() +#include "pycore_frame.h" // _PyFrame_GetCode() +#include "../Parser/pegen.h" // _PyPegen_byte_offset_to_character_offset() #include "structmember.h" // PyMemberDef #include "osdefs.h" // SEP #ifdef HAVE_FCNTL_H @@ -370,7 +372,7 @@ _Py_FindSourceFile(PyObject *filename, char* namebuf, size_t namelen, PyObject * } int -_Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) +_Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent, int *truncation, PyObject **line) { int err = 0; int fd; @@ -461,6 +463,11 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) return err; } + if (line) { + Py_INCREF(lineobj); + *line = lineobj; + } + /* remove the indentation of the line */ kind = PyUnicode_KIND(lineobj); data = PyUnicode_DATA(lineobj); @@ -480,6 +487,10 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) } } + if (truncation != NULL) { + *truncation = i - indent; + } + /* Write some spaces before the line */ strcpy(buf, " "); assert (strlen(buf) == 10); @@ -501,8 +512,11 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) return err; } +#define _TRACEBACK_SOURCE_LINE_INDENT 4 + static int -tb_displayline(PyObject *f, PyObject *filename, int lineno, PyObject *name) +tb_displayline(PyTracebackObject* tb, PyObject *f, PyObject *filename, int lineno, + PyFrameObject *frame, PyObject *name) { int err; PyObject *line; @@ -517,9 +531,56 @@ tb_displayline(PyObject *f, PyObject *filename, int lineno, PyObject *name) Py_DECREF(line); if (err != 0) return err; + int truncation = _TRACEBACK_SOURCE_LINE_INDENT; + PyObject* source_line = NULL; /* ignore errors since we can't report them, can we? */ - if (_Py_DisplaySourceLine(f, filename, lineno, 4)) + if (!_Py_DisplaySourceLine(f, filename, lineno, _TRACEBACK_SOURCE_LINE_INDENT, + &truncation, &source_line)) { + int code_offset = tb->tb_lasti; + PyCodeObject* code = _PyFrame_GetCode(frame); + + 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 != end_line) { + goto done; + } + + if (start_col_byte_offset < 0 || end_col_byte_offset < 0) { + goto done; + } + // Convert the utf-8 byte offset to the actual character offset so we + // print the right number of carets. + Py_ssize_t start_offset = _PyPegen_byte_offset_to_character_offset(source_line, start_col_byte_offset); + Py_ssize_t end_offset = _PyPegen_byte_offset_to_character_offset(source_line, end_col_byte_offset); + + char offset = truncation; + while (++offset <= start_offset) { + err = PyFile_WriteString(" ", f); + if (err < 0) { + goto done; + } + } + while (++offset <= end_offset + 1) { + err = PyFile_WriteString("^", f); + if (err < 0) { + goto done; + } + } + err = PyFile_WriteString("\n", f); + } + + else { PyErr_Clear(); + } + +done: + Py_XDECREF(source_line); return err; } @@ -576,8 +637,8 @@ tb_printinternal(PyTracebackObject *tb, PyObject *f, long limit) } cnt++; if (err == 0 && cnt <= TB_RECURSIVE_CUTOFF) { - err = tb_displayline(f, code->co_filename, tb->tb_lineno, - code->co_name); + err = tb_displayline(tb, f, code->co_filename, tb->tb_lineno, + tb->tb_frame, code->co_name); if (err == 0) { err = PyErr_CheckSignals(); } From a9a69bb3ea1e6cf54513717212aaeae0d61b24ee Mon Sep 17 00:00:00 2001 From: Ma Lin Date: Mon, 5 Jul 2021 09:10:44 +0800 Subject: [PATCH 31/40] bpo-41486: zlib uses an UINT32_MAX sliding window for the output buffer (GH-26143) * zlib uses an UINT32_MAX sliding window for the output buffer These funtions have an initial output buffer size parameter: - zlib.decompress(data, /, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE) - zlib.Decompress.flush([length]) If the initial size > UINT32_MAX, use an UINT32_MAX sliding window, instead of clamping to UINT32_MAX. Speed up when (the initial size == the actual size). This fixes a memory consumption and copying performance regression in earlier 3.10 beta releases if someone used an output buffer larger than 4GiB with zlib.decompress. Reviewed-by: Gregory P. Smith --- .../2021-07-04-17-41-47.bpo-41486.DiM24a.rst | 3 + Modules/zlibmodule.c | 144 ++++++++++++++---- 2 files changed, 117 insertions(+), 30 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2021-07-04-17-41-47.bpo-41486.DiM24a.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-07-04-17-41-47.bpo-41486.DiM24a.rst b/Misc/NEWS.d/next/Core and Builtins/2021-07-04-17-41-47.bpo-41486.DiM24a.rst new file mode 100644 index 00000000000000..6a373f67f62f92 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-07-04-17-41-47.bpo-41486.DiM24a.rst @@ -0,0 +1,3 @@ +Fix a memory consumption and copying performance regression in earlier 3.10 +beta releases if someone used an output buffer larger than 4GiB with +zlib.decompress on input data that expands that large. diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index fe06094b0027a6..3efb24a679caa2 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -30,28 +30,6 @@ OutputBuffer_InitAndGrow(_BlocksOutputBuffer *buffer, Py_ssize_t max_length, return allocated; } -/* On success, return value >= 0 - On failure, return -1 */ -static inline Py_ssize_t -OutputBuffer_InitWithSize(_BlocksOutputBuffer *buffer, Py_ssize_t init_size, - Bytef **next_out, uint32_t *avail_out) -{ - Py_ssize_t allocated; - - if (init_size >= 0 && // ensure (size_t) cast is safe - (size_t)init_size > UINT32_MAX) - { - /* In 32-bit build, never reach this conditional branch. - The maximum block size accepted by zlib is UINT32_MAX. */ - init_size = UINT32_MAX; - } - - allocated = _BlocksOutputBuffer_InitWithSize( - buffer, init_size, (void**) next_out); - *avail_out = (uint32_t) allocated; - return allocated; -} - /* On success, return value >= 0 On failure, return -1 */ static inline Py_ssize_t @@ -84,6 +62,106 @@ OutputBuffer_OnError(_BlocksOutputBuffer *buffer) _BlocksOutputBuffer_OnError(buffer); } +/* The max buffer size accepted by zlib is UINT32_MAX, the initial buffer size + `init_size` may > it in 64-bit build. These wrapper functions maintain an + UINT32_MAX sliding window for the first block: + 1. OutputBuffer_WindowInitWithSize() + 2. OutputBuffer_WindowGrow() + 3. OutputBuffer_WindowFinish() + 4. OutputBuffer_WindowOnError() + + ==== is the sliding window: + 1. ====------ + ^ next_posi, left_bytes is 6 + 2. ----====-- + ^ next_posi, left_bytes is 2 + 3. --------== + ^ next_posi, left_bytes is 0 */ +typedef struct { + Py_ssize_t left_bytes; + Bytef *next_posi; +} _Uint32Window; + +/* Initialize the buffer with an inital buffer size. + + On success, return value >= 0 + On failure, return value < 0 */ +static inline Py_ssize_t +OutputBuffer_WindowInitWithSize(_BlocksOutputBuffer *buffer, _Uint32Window *window, + Py_ssize_t init_size, + Bytef **next_out, uint32_t *avail_out) +{ + Py_ssize_t allocated = _BlocksOutputBuffer_InitWithSize( + buffer, init_size, (void**) next_out); + + if (allocated >= 0) { + // the UINT32_MAX sliding window + Py_ssize_t window_size = Py_MIN((size_t)allocated, UINT32_MAX); + *avail_out = (uint32_t) window_size; + + window->left_bytes = allocated - window_size; + window->next_posi = *next_out + window_size; + } + return allocated; +} + +/* Grow the buffer. + + On success, return value >= 0 + On failure, return value < 0 */ +static inline Py_ssize_t +OutputBuffer_WindowGrow(_BlocksOutputBuffer *buffer, _Uint32Window *window, + Bytef **next_out, uint32_t *avail_out) +{ + Py_ssize_t allocated; + + /* ensure no gaps in the data. + if inlined, this check could be optimized away.*/ + if (*avail_out != 0) { + PyErr_SetString(PyExc_SystemError, + "*avail_out != 0 in OutputBuffer_WindowGrow()."); + return -1; + } + + // slide the UINT32_MAX sliding window + if (window->left_bytes > 0) { + Py_ssize_t window_size = Py_MIN((size_t)window->left_bytes, UINT32_MAX); + + *next_out = window->next_posi; + *avail_out = (uint32_t) window_size; + + window->left_bytes -= window_size; + window->next_posi += window_size; + + return window_size; + } + assert(window->left_bytes == 0); + + // only the first block may > UINT32_MAX + allocated = _BlocksOutputBuffer_Grow( + buffer, (void**) next_out, (Py_ssize_t) *avail_out); + *avail_out = (uint32_t) allocated; + return allocated; +} + +/* Finish the buffer. + + On success, return a bytes object + On failure, return NULL */ +static inline PyObject * +OutputBuffer_WindowFinish(_BlocksOutputBuffer *buffer, _Uint32Window *window, + uint32_t avail_out) +{ + Py_ssize_t real_avail_out = (Py_ssize_t) avail_out + window->left_bytes; + return _BlocksOutputBuffer_Finish(buffer, real_avail_out); +} + +static inline void +OutputBuffer_WindowOnError(_BlocksOutputBuffer *buffer, _Uint32Window *window) +{ + _BlocksOutputBuffer_OnError(buffer); +} + #define ENTER_ZLIB(obj) do { \ if (!PyThread_acquire_lock((obj)->lock, 0)) { \ @@ -344,6 +422,7 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, int err, flush; z_stream zst; _BlocksOutputBuffer buffer = {.list = NULL}; + _Uint32Window window; // output buffer's UINT32_MAX sliding window zlibstate *state = get_zlib_state(module); @@ -354,7 +433,8 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, bufsize = 1; } - if (OutputBuffer_InitWithSize(&buffer, bufsize, &zst.next_out, &zst.avail_out) < 0) { + if (OutputBuffer_WindowInitWithSize(&buffer, &window, bufsize, + &zst.next_out, &zst.avail_out) < 0) { goto error; } @@ -387,7 +467,8 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, do { if (zst.avail_out == 0) { - if (OutputBuffer_Grow(&buffer, &zst.next_out, &zst.avail_out) < 0) { + if (OutputBuffer_WindowGrow(&buffer, &window, + &zst.next_out, &zst.avail_out) < 0) { inflateEnd(&zst); goto error; } @@ -430,13 +511,13 @@ zlib_decompress_impl(PyObject *module, Py_buffer *data, int wbits, goto error; } - RetVal = OutputBuffer_Finish(&buffer, zst.avail_out); + RetVal = OutputBuffer_WindowFinish(&buffer, &window, zst.avail_out); if (RetVal != NULL) { return RetVal; } error: - OutputBuffer_OnError(&buffer); + OutputBuffer_WindowOnError(&buffer, &window); return NULL; } @@ -1171,6 +1252,7 @@ zlib_Decompress_flush_impl(compobject *self, PyTypeObject *cls, PyObject *RetVal; Py_ssize_t ibuflen; _BlocksOutputBuffer buffer = {.list = NULL}; + _Uint32Window window; // output buffer's UINT32_MAX sliding window PyObject *module = PyType_GetModule(cls); if (module == NULL) { @@ -1193,7 +1275,8 @@ zlib_Decompress_flush_impl(compobject *self, PyTypeObject *cls, self->zst.next_in = data.buf; ibuflen = data.len; - if (OutputBuffer_InitWithSize(&buffer, length, &self->zst.next_out, &self->zst.avail_out) < 0) { + if (OutputBuffer_WindowInitWithSize(&buffer, &window, length, + &self->zst.next_out, &self->zst.avail_out) < 0) { goto abort; } @@ -1203,7 +1286,8 @@ zlib_Decompress_flush_impl(compobject *self, PyTypeObject *cls, do { if (self->zst.avail_out == 0) { - if (OutputBuffer_Grow(&buffer, &self->zst.next_out, &self->zst.avail_out) < 0) { + if (OutputBuffer_WindowGrow(&buffer, &window, + &self->zst.next_out, &self->zst.avail_out) < 0) { goto abort; } } @@ -1248,13 +1332,13 @@ zlib_Decompress_flush_impl(compobject *self, PyTypeObject *cls, } } - RetVal = OutputBuffer_Finish(&buffer, self->zst.avail_out); + RetVal = OutputBuffer_WindowFinish(&buffer, &window, self->zst.avail_out); if (RetVal != NULL) { goto success; } abort: - OutputBuffer_OnError(&buffer); + OutputBuffer_WindowOnError(&buffer, &window); RetVal = NULL; success: PyBuffer_Release(&data); From abb08e3af6aa19928007a349592e95e6de38467f Mon Sep 17 00:00:00 2001 From: Jack DeVries <58614260+jdevries3133@users.noreply.github.com> Date: Mon, 5 Jul 2021 02:52:32 -0400 Subject: [PATCH 32/40] bpo-44534: fix wording and docstring sync in unittest.Mock GH27000 --- Doc/library/unittest.mock.rst | 2 +- Lib/unittest/mock.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst index f1c0757c510fa6..e760321ba129c4 100644 --- a/Doc/library/unittest.mock.rst +++ b/Doc/library/unittest.mock.rst @@ -262,7 +262,7 @@ the *new_callable* argument to :func:`patch`. this is a new Mock (created on first access). See the :attr:`return_value` attribute. - * *unsafe*: By default, accessing any attribute with name starting with + * *unsafe*: By default, accessing any attribute whose name starts with *assert*, *assret*, *asert*, *aseert* or *assrt* will raise an :exc:`AttributeError`. Passing ``unsafe=True`` will allow access to these attributes. diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index a4e571a80508eb..5be91203ec7d7c 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -1215,6 +1215,11 @@ class or instance) that acts as the specification for the mock object. If this is a new Mock (created on first access). See the `return_value` attribute. + * `unsafe`: By default, accessing any attribute whose name starts with + *assert*, *assret*, *asert*, *aseert* or *assrt* will raise an + AttributeError. Passing `unsafe=True` will allow access to + these attributes. + * `wraps`: Item for the mock object to wrap. If `wraps` is not None then calling the Mock will pass the call through to the wrapped object (returning the real result). Attribute access on the mock will return a From 09302405d22e86884d6058226790c0cdf5b72f14 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Mon, 5 Jul 2021 18:04:36 +0900 Subject: [PATCH 33/40] bpo-44558: Make the implementation consistency of operator.indexOf (GH-27012) --- Lib/operator.py | 2 +- Lib/test/test_operator.py | 3 +++ .../next/Library/2021-07-04-21-16-53.bpo-44558.cm7Slv.rst | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2021-07-04-21-16-53.bpo-44558.cm7Slv.rst diff --git a/Lib/operator.py b/Lib/operator.py index fb58851fa6ef67..6782703476edee 100644 --- a/Lib/operator.py +++ b/Lib/operator.py @@ -173,7 +173,7 @@ def getitem(a, b): def indexOf(a, b): "Return the first index of b in a." for i, j in enumerate(a): - if j == b: + if j is b or j == b: return i else: raise ValueError('sequence.index(x): x not in sequence') diff --git a/Lib/test/test_operator.py b/Lib/test/test_operator.py index 1ecae85f62f2c9..d50306b7f1ecb8 100644 --- a/Lib/test/test_operator.py +++ b/Lib/test/test_operator.py @@ -188,6 +188,9 @@ def test_indexOf(self): self.assertRaises(ZeroDivisionError, operator.indexOf, BadIterable(), 1) self.assertEqual(operator.indexOf([4, 3, 2, 1], 3), 1) self.assertRaises(ValueError, operator.indexOf, [4, 3, 2, 1], 0) + nan = float("nan") + self.assertEqual(operator.indexOf([nan, nan, 21], nan), 0) + self.assertEqual(operator.indexOf([{}, 1, {}, 2], {}), 0) def test_invert(self): operator = self.module diff --git a/Misc/NEWS.d/next/Library/2021-07-04-21-16-53.bpo-44558.cm7Slv.rst b/Misc/NEWS.d/next/Library/2021-07-04-21-16-53.bpo-44558.cm7Slv.rst new file mode 100644 index 00000000000000..647a70490d1bac --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-07-04-21-16-53.bpo-44558.cm7Slv.rst @@ -0,0 +1,2 @@ +Make the implementation consistency of :func:`~operator.indexOf` between +C and Python versions. Patch by Dong-hee Na. From b324c4c5f763c5116a97db8591e6dcb94456570a Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Mon, 5 Jul 2021 12:10:53 +0100 Subject: [PATCH 34/40] bpo-44562: Use PyType_GenericAlloc in Py_GenericAlias (GH-27021) * bpo-44562: Use PyType_GenericAlloc in Py_GenericAlias * Update Objects/genericaliasobject.c Co-authored-by: Serhiy Storchaka Co-authored-by: Serhiy Storchaka --- Objects/genericaliasobject.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 48a8be1c458752..803912b7a18a49 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -646,11 +646,11 @@ PyTypeObject Py_GenericAliasType = { PyObject * Py_GenericAlias(PyObject *origin, PyObject *args) { - gaobject *alias = PyObject_GC_New(gaobject, &Py_GenericAliasType); + gaobject *alias = (gaobject*) PyType_GenericAlloc( + (PyTypeObject *)&Py_GenericAliasType, 0); if (alias == NULL) { return NULL; } - _PyObject_GC_TRACK(alias); if (!setup_ga(alias, origin, args)) { Py_DECREF(alias); return NULL; From 7ac7a0c0f03c60934bc924ee144db170a0e0161f Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Mon, 5 Jul 2021 19:44:06 +0500 Subject: [PATCH 35/40] bpo-44022: Fix Sphinx role in NEWS entry (GH-27033) --- .../next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst b/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst index cf6b63e3961558..9669fc5ef37dde 100644 --- a/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst +++ b/Misc/NEWS.d/next/Security/2021-05-05-17-37-04.bpo-44022.bS3XJ9.rst @@ -1,2 +1,2 @@ -mod:`http.client` now avoids infinitely reading potential HTTP headers after a +:mod:`http.client` now avoids infinitely reading potential HTTP headers after a ``100 Continue`` status response from the server. From 1b133ab8412e4f6a53914212df7a7656f376256d Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Mon, 5 Jul 2021 16:18:14 +0100 Subject: [PATCH 36/40] bpo-44479: Regenerate test_frozenmain.h and frozen_hello.h during build on Windows (GH-26984) --- PCbuild/_freeze_importlib.vcxproj | 14 +++++----- PCbuild/python.vcxproj | 21 ++------------- PCbuild/regen.targets | 43 +++++++++++++++++++++++++++++-- 3 files changed, 49 insertions(+), 29 deletions(-) diff --git a/PCbuild/_freeze_importlib.vcxproj b/PCbuild/_freeze_importlib.vcxproj index 52d8f1a64bb6b9..e437412a161ce5 100644 --- a/PCbuild/_freeze_importlib.vcxproj +++ b/PCbuild/_freeze_importlib.vcxproj @@ -123,6 +123,11 @@ $(IntDir)importlib_zipimport.g.h $(PySourcePath)Python\importlib_zipimport.h + + hello + $(IntDir)frozen_hello.g.h + $(PySourcePath)Python\frozen_hello.h + @@ -130,11 +135,6 @@ - - <_OldContent Condition="Exists($(OutTargetPath))"> - <_NewContent Condition="Exists($(IntTargetPath))">$([System.IO.File]::ReadAllText($(IntTargetPath)).Replace(` `, ` `)) - - @@ -153,9 +153,7 @@ - - - + diff --git a/PCbuild/python.vcxproj b/PCbuild/python.vcxproj index 2094420a8df395..b58945a4d19b6c 100644 --- a/PCbuild/python.vcxproj +++ b/PCbuild/python.vcxproj @@ -114,7 +114,9 @@ + + ucrtbase @@ -145,23 +147,4 @@ $(_PGOPath) - - - - - <_LicenseFiles Include="@(LicenseFiles)"> - $([System.IO.File]::ReadAllText(%(FullPath))) - - - - - diff --git a/PCbuild/regen.targets b/PCbuild/regen.targets index 4d386cfa5f387f..22667d02aaa2c1 100644 --- a/PCbuild/regen.targets +++ b/PCbuild/regen.targets @@ -73,12 +73,51 @@ - + - + + + + + <_TestFrozenSources Include="$(PySourcePath)Programs\freeze_test_frozenmain.py; + $(PySourcePath)Programs\test_frozenmain.py; + @(_OpcodeOutputs)" /> + <_TestFrozenOutputs Include="$(PySourcePath)Programs\test_frozenmain.h" /> + <_LicenseSources Include="$(PySourcePath)LICENSE; + $(PySourcePath)PC\crtlicense.txt; + $(bz2Dir)LICENSE; + $(opensslOutDir)LICENSE; + $(libffiDir)LICENSE;" /> + <_LicenseSources Include="$(tcltkDir)tcllicense.terms; + $(tcltkDir)tklicense.terms; + $(tcltkDir)tixlicense.terms" Condition="$(IncludeTkinter)" /> + <_LicenseOutputs Include="$(OutDir)LICENSE.txt" /> + + + + + + + + + + + <_Text Include="@(_LicenseFiles)"> + $([System.IO.File]::ReadAllText(%(FullPath))) + + + + + + + + + From 17f94e28882e1e2b331ace93f42e8615383dee59 Mon Sep 17 00:00:00 2001 From: andrei kulakov Date: Mon, 5 Jul 2021 12:23:42 -0400 Subject: [PATCH 37/40] bpo-43453: Update and re-add example to typing runtime_checkable (#27013) Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> --- Doc/library/typing.rst | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index e9980a7745d694..b1d67e46fbb5d8 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -1232,8 +1232,13 @@ These are not used in annotations. They are building blocks for creating generic .. note:: - :func:`runtime_checkable` will check only the presence of the required methods, - not their type signatures. + :func:`runtime_checkable` will check only the presence of the required + methods, not their type signatures. For example, :class:`ssl.SSLObject` + is a class, therefore it passes an :func:`issubclass` + check against :data:`Callable`. However, the + :meth:`ssl.SSLObject.__init__` method exists only to raise a + :exc:`TypeError` with a more informative message, therefore making + it impossible to call (instantiate) :class:`ssl.SSLObject`. .. versionadded:: 3.8 From f64de53ff01e734d48d1d42195443d7d1646f220 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 6 Jul 2021 01:19:35 +0300 Subject: [PATCH 38/40] bpo-44563: Fix error handling in tee.fromiterable() (GH-27020) In debug build failed tee.fromiterable() corrupted the linked list of all GC objects. --- Modules/itertoolsmodule.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index 293735a886428b..643f47b045046c 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -863,7 +863,7 @@ static PyObject * tee_fromiterable(PyObject *iterable) { teeobject *to; - PyObject *it = NULL; + PyObject *it; it = PyObject_GetIter(iterable); if (it == NULL) @@ -873,21 +873,22 @@ tee_fromiterable(PyObject *iterable) goto done; } - to = PyObject_GC_New(teeobject, &tee_type); - if (to == NULL) - goto done; - to->dataobj = (teedataobject *)teedataobject_newinternal(it); - if (!to->dataobj) { - PyObject_GC_Del(to); + PyObject *dataobj = teedataobject_newinternal(it); + if (!dataobj) { to = NULL; goto done; } - + to = PyObject_GC_New(teeobject, &tee_type); + if (to == NULL) { + Py_DECREF(dataobj); + goto done; + } + to->dataobj = (teedataobject *)dataobj; to->index = 0; to->weakreflist = NULL; PyObject_GC_Track(to); done: - Py_XDECREF(it); + Py_DECREF(it); return (PyObject *)to; } From 8b849ea0f3482ad834e7989ff474dd5db2f295c8 Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 6 Jul 2021 17:01:15 +0200 Subject: [PATCH 39/40] bpo-38291: Fix a spurious warning when using help(object) (#27039) help(object) via pydoc.TextDoc.docclass(object) iterates over the subclasses of object, which includes typing.io and typing.re if typing is imported. It tries to access cls.__module__ for each of those sub-classes. This change suppresses warnings when accessing cls.__module__. --- Lib/typing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/typing.py b/Lib/typing.py index 2287f0521a364f..ca05fb54bf428f 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -2512,7 +2512,7 @@ def __enter__(self) -> 'TextIO': class _DeprecatedType(type): def __getattribute__(cls, name): - if name != "__dict__" and name in cls.__dict__: + if name not in ("__dict__", "__module__") and name in cls.__dict__: warnings.warn( f"{cls.__name__} is deprecated, import directly " f"from typing instead. {cls.__name__} will be removed " From c45fa1a5d9b419cf13ad4b5a7cb453956495b83e Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Tue, 6 Jul 2021 21:04:33 +0300 Subject: [PATCH 40/40] bpo-44490: Add __parameters__ and __getitem__ to types.Union (GH-26980) Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Co-authored-by: Guido van Rossum --- Include/genericaliasobject.h | 5 ++ Lib/test/test_types.py | 10 ++++ .../2021-07-01-11-59-34.bpo-44490.xY80VR.rst | 2 + Objects/genericaliasobject.c | 50 ++++++++++------- Objects/unionobject.c | 53 +++++++++++++++++++ 5 files changed, 101 insertions(+), 19 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2021-07-01-11-59-34.bpo-44490.xY80VR.rst diff --git a/Include/genericaliasobject.h b/Include/genericaliasobject.h index cf002976b27cd7..4ce9244bb4ce79 100644 --- a/Include/genericaliasobject.h +++ b/Include/genericaliasobject.h @@ -5,6 +5,11 @@ extern "C" { #endif +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _Py_subs_parameters(PyObject *, PyObject *, PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) _Py_make_parameters(PyObject *); +#endif + PyAPI_FUNC(PyObject *) Py_GenericAlias(PyObject *, PyObject *); PyAPI_DATA(PyTypeObject) Py_GenericAliasType; diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index ae7b17bd590e61..7f7ce86ff08ef3 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -666,6 +666,16 @@ def test_or_type_operator_with_TypeVar(self): assert TV | str == typing.Union[TV, str] assert str | TV == typing.Union[str, TV] + def test_union_parameter_chaining(self): + T = typing.TypeVar("T") + S = typing.TypeVar("S") + + self.assertEqual((float | list[T])[int], float | list[int]) + self.assertEqual(list[int | list[T]].__parameters__, (T,)) + self.assertEqual(list[int | list[T]][str], list[int | list[str]]) + self.assertEqual((list[T] | list[S]).__parameters__, (T, S)) + self.assertEqual((list[T] | list[S])[int, T], list[int] | list[T]) + def test_or_type_operator_with_forward(self): T = typing.TypeVar('T') ForwardAfter = T | 'Forward' diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-07-01-11-59-34.bpo-44490.xY80VR.rst b/Misc/NEWS.d/next/Core and Builtins/2021-07-01-11-59-34.bpo-44490.xY80VR.rst new file mode 100644 index 00000000000000..4912bca837bb10 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-07-01-11-59-34.bpo-44490.xY80VR.rst @@ -0,0 +1,2 @@ +Add ``__parameters__`` attribute and ``__getitem__`` +operator to ``types.Union``. Patch provided by Yurii Karabas. diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 803912b7a18a49..d3d387193d3572 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -198,8 +198,8 @@ tuple_add(PyObject *self, Py_ssize_t len, PyObject *item) return 0; } -static PyObject * -make_parameters(PyObject *args) +PyObject * +_Py_make_parameters(PyObject *args) { Py_ssize_t nargs = PyTuple_GET_SIZE(args); Py_ssize_t len = nargs; @@ -294,18 +294,10 @@ subs_tvars(PyObject *obj, PyObject *params, PyObject **argitems) return obj; } -static PyObject * -ga_getitem(PyObject *self, PyObject *item) +PyObject * +_Py_subs_parameters(PyObject *self, PyObject *args, PyObject *parameters, PyObject *item) { - gaobject *alias = (gaobject *)self; - // do a lookup for __parameters__ so it gets populated (if not already) - if (alias->parameters == NULL) { - alias->parameters = make_parameters(alias->args); - if (alias->parameters == NULL) { - return NULL; - } - } - Py_ssize_t nparams = PyTuple_GET_SIZE(alias->parameters); + Py_ssize_t nparams = PyTuple_GET_SIZE(parameters); if (nparams == 0) { return PyErr_Format(PyExc_TypeError, "There are no type variables left in %R", @@ -320,32 +312,32 @@ ga_getitem(PyObject *self, PyObject *item) nitems > nparams ? "many" : "few", self); } - /* Replace all type variables (specified by alias->parameters) + /* Replace all type variables (specified by parameters) with corresponding values specified by argitems. t = list[T]; t[int] -> newargs = [int] t = dict[str, T]; t[int] -> newargs = [str, int] t = dict[T, list[S]]; t[str, int] -> newargs = [str, list[int]] */ - Py_ssize_t nargs = PyTuple_GET_SIZE(alias->args); + Py_ssize_t nargs = PyTuple_GET_SIZE(args); PyObject *newargs = PyTuple_New(nargs); if (newargs == NULL) { return NULL; } for (Py_ssize_t iarg = 0; iarg < nargs; iarg++) { - PyObject *arg = PyTuple_GET_ITEM(alias->args, iarg); + PyObject *arg = PyTuple_GET_ITEM(args, iarg); int typevar = is_typevar(arg); if (typevar < 0) { Py_DECREF(newargs); return NULL; } if (typevar) { - Py_ssize_t iparam = tuple_index(alias->parameters, nparams, arg); + Py_ssize_t iparam = tuple_index(parameters, nparams, arg); assert(iparam >= 0); arg = argitems[iparam]; Py_INCREF(arg); } else { - arg = subs_tvars(arg, alias->parameters, argitems); + arg = subs_tvars(arg, parameters, argitems); if (arg == NULL) { Py_DECREF(newargs); return NULL; @@ -354,6 +346,26 @@ ga_getitem(PyObject *self, PyObject *item) PyTuple_SET_ITEM(newargs, iarg, arg); } + return newargs; +} + +static PyObject * +ga_getitem(PyObject *self, PyObject *item) +{ + gaobject *alias = (gaobject *)self; + // Populate __parameters__ if needed. + if (alias->parameters == NULL) { + alias->parameters = _Py_make_parameters(alias->args); + if (alias->parameters == NULL) { + return NULL; + } + } + + PyObject *newargs = _Py_subs_parameters(self, alias->args, alias->parameters, item); + if (newargs == NULL) { + return NULL; + } + PyObject *res = Py_GenericAlias(alias->origin, newargs); Py_DECREF(newargs); @@ -550,7 +562,7 @@ ga_parameters(PyObject *self, void *unused) { gaobject *alias = (gaobject *)self; if (alias->parameters == NULL) { - alias->parameters = make_parameters(alias->args); + alias->parameters = _Py_make_parameters(alias->args); if (alias->parameters == NULL) { return NULL; } diff --git a/Objects/unionobject.c b/Objects/unionobject.c index 8435763b5ea7ca..d2a10dfec858ea 100644 --- a/Objects/unionobject.c +++ b/Objects/unionobject.c @@ -8,6 +8,7 @@ typedef struct { PyObject_HEAD PyObject *args; + PyObject *parameters; } unionobject; static void @@ -18,6 +19,7 @@ unionobject_dealloc(PyObject *self) _PyObject_GC_UNTRACK(self); Py_XDECREF(alias->args); + Py_XDECREF(alias->parameters); Py_TYPE(self)->tp_free(self); } @@ -26,6 +28,7 @@ union_traverse(PyObject *self, visitproc visit, void *arg) { unionobject *alias = (unionobject *)self; Py_VISIT(alias->args); + Py_VISIT(alias->parameters); return 0; } @@ -435,6 +438,53 @@ static PyMethodDef union_methods[] = { {"__subclasscheck__", union_subclasscheck, METH_O}, {0}}; + +static PyObject * +union_getitem(PyObject *self, PyObject *item) +{ + unionobject *alias = (unionobject *)self; + // Populate __parameters__ if needed. + if (alias->parameters == NULL) { + alias->parameters = _Py_make_parameters(alias->args); + if (alias->parameters == NULL) { + return NULL; + } + } + + PyObject *newargs = _Py_subs_parameters(self, alias->args, alias->parameters, item); + if (newargs == NULL) { + return NULL; + } + + PyObject *res = _Py_Union(newargs); + + Py_DECREF(newargs); + return res; +} + +static PyMappingMethods union_as_mapping = { + .mp_subscript = union_getitem, +}; + +static PyObject * +union_parameters(PyObject *self, void *Py_UNUSED(unused)) +{ + unionobject *alias = (unionobject *)self; + if (alias->parameters == NULL) { + alias->parameters = _Py_make_parameters(alias->args); + if (alias->parameters == NULL) { + return NULL; + } + } + Py_INCREF(alias->parameters); + return alias->parameters; +} + +static PyGetSetDef union_properties[] = { + {"__parameters__", union_parameters, (setter)NULL, "Type variables in the types.Union.", NULL}, + {0} +}; + static PyNumberMethods union_as_number = { .nb_or = _Py_union_type_or, // Add __or__ function }; @@ -456,8 +506,10 @@ PyTypeObject _Py_UnionType = { .tp_members = union_members, .tp_methods = union_methods, .tp_richcompare = union_richcompare, + .tp_as_mapping = &union_as_mapping, .tp_as_number = &union_as_number, .tp_repr = union_repr, + .tp_getset = union_properties, }; PyObject * @@ -489,6 +541,7 @@ _Py_Union(PyObject *args) return NULL; } + result->parameters = NULL; result->args = dedup_and_flatten_args(args); _PyObject_GC_TRACK(result); if (result->args == NULL) {