Compare commits
4 Commits
df21f502fd
...
127dde5916
Author | SHA1 | Date |
---|---|---|
Mark Shannon | 127dde5916 | |
Pablo Galindo | de833b6013 | |
Mohamed Koubaa | c8a87addb1 | |
Mark Shannon | bf06b209da |
|
@ -168,6 +168,7 @@ library/ipaddress,,::,2001:db00::0/24
|
|||
library/ipaddress,,:db00,2001:db00::0/ffff:ff00::
|
||||
library/ipaddress,,::,2001:db00::0/ffff:ff00::
|
||||
library/itertools,,:step,elements from seq[start:stop:step]
|
||||
library/itertools,,::,kernel = tuple(kernel)[::-1]
|
||||
library/itertools,,:stop,elements from seq[start:stop:step]
|
||||
library/logging.handlers,,:port,host:port
|
||||
library/mmap,,:i2,obj[i1:i2]
|
||||
|
|
|
|
@ -874,6 +874,48 @@ class TraceTestCase(unittest.TestCase):
|
|||
(5, 'line'),
|
||||
(5, 'return')])
|
||||
|
||||
def test_nested_ifs(self):
|
||||
|
||||
def func():
|
||||
a = b = 1
|
||||
if a == 1:
|
||||
if b == 1:
|
||||
x = 4
|
||||
else:
|
||||
y = 6
|
||||
else:
|
||||
z = 8
|
||||
|
||||
self.run_and_compare(func,
|
||||
[(0, 'call'),
|
||||
(1, 'line'),
|
||||
(2, 'line'),
|
||||
(3, 'line'),
|
||||
(4, 'line'),
|
||||
(4, 'return')])
|
||||
|
||||
def test_nested_try_if(self):
|
||||
|
||||
def func():
|
||||
x = "hello"
|
||||
try:
|
||||
3/0
|
||||
except ZeroDivisionError:
|
||||
if x == 'raise':
|
||||
raise ValueError() # line 6
|
||||
f = 7
|
||||
|
||||
self.run_and_compare(func,
|
||||
[(0, 'call'),
|
||||
(1, 'line'),
|
||||
(2, 'line'),
|
||||
(3, 'line'),
|
||||
(3, 'exception'),
|
||||
(4, 'line'),
|
||||
(5, 'line'),
|
||||
(7, 'line'),
|
||||
(7, 'return')])
|
||||
|
||||
|
||||
class SkipLineEventsTraceTestCase(TraceTestCase):
|
||||
"""Repeat the trace tests, but with per-line events skipped"""
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Port the :mod:`pyexpat` extension module to multi-phase initialization
|
||||
(:pep:`489`).
|
|
@ -11,32 +11,26 @@ PyDoc_STRVAR(pyexpat_xmlparser_Parse__doc__,
|
|||
"`isfinal\' should be true at end of input.");
|
||||
|
||||
#define PYEXPAT_XMLPARSER_PARSE_METHODDEF \
|
||||
{"Parse", (PyCFunction)(void(*)(void))pyexpat_xmlparser_Parse, METH_FASTCALL, pyexpat_xmlparser_Parse__doc__},
|
||||
{"Parse", (PyCFunction)(void(*)(void))pyexpat_xmlparser_Parse, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_Parse__doc__},
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyObject *data,
|
||||
int isfinal);
|
||||
pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyTypeObject *cls,
|
||||
PyObject *data, int isfinal);
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_Parse(xmlparseobject *self, PyObject *const *args, Py_ssize_t nargs)
|
||||
pyexpat_xmlparser_Parse(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
static const char * const _keywords[] = {"", "", NULL};
|
||||
static _PyArg_Parser _parser = {"O|i:Parse", _keywords, 0};
|
||||
PyObject *data;
|
||||
int isfinal = 0;
|
||||
|
||||
if (!_PyArg_CheckPositional("Parse", nargs, 1, 2)) {
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, &isfinal)) {
|
||||
goto exit;
|
||||
}
|
||||
data = args[0];
|
||||
if (nargs < 2) {
|
||||
goto skip_optional;
|
||||
}
|
||||
isfinal = _PyLong_AsInt(args[1]);
|
||||
if (isfinal == -1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
skip_optional:
|
||||
return_value = pyexpat_xmlparser_Parse_impl(self, data, isfinal);
|
||||
return_value = pyexpat_xmlparser_Parse_impl(self, cls, data, isfinal);
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
|
@ -49,7 +43,29 @@ PyDoc_STRVAR(pyexpat_xmlparser_ParseFile__doc__,
|
|||
"Parse XML data from file-like object.");
|
||||
|
||||
#define PYEXPAT_XMLPARSER_PARSEFILE_METHODDEF \
|
||||
{"ParseFile", (PyCFunction)pyexpat_xmlparser_ParseFile, METH_O, pyexpat_xmlparser_ParseFile__doc__},
|
||||
{"ParseFile", (PyCFunction)(void(*)(void))pyexpat_xmlparser_ParseFile, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_ParseFile__doc__},
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_ParseFile_impl(xmlparseobject *self, PyTypeObject *cls,
|
||||
PyObject *file);
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_ParseFile(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
static const char * const _keywords[] = {"", NULL};
|
||||
static _PyArg_Parser _parser = {"O:ParseFile", _keywords, 0};
|
||||
PyObject *file;
|
||||
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&file)) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = pyexpat_xmlparser_ParseFile_impl(self, cls, file);
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(pyexpat_xmlparser_SetBase__doc__,
|
||||
"SetBase($self, base, /)\n"
|
||||
|
@ -135,59 +151,28 @@ PyDoc_STRVAR(pyexpat_xmlparser_ExternalEntityParserCreate__doc__,
|
|||
"Create a parser for parsing an external entity based on the information passed to the ExternalEntityRefHandler.");
|
||||
|
||||
#define PYEXPAT_XMLPARSER_EXTERNALENTITYPARSERCREATE_METHODDEF \
|
||||
{"ExternalEntityParserCreate", (PyCFunction)(void(*)(void))pyexpat_xmlparser_ExternalEntityParserCreate, METH_FASTCALL, pyexpat_xmlparser_ExternalEntityParserCreate__doc__},
|
||||
{"ExternalEntityParserCreate", (PyCFunction)(void(*)(void))pyexpat_xmlparser_ExternalEntityParserCreate, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_ExternalEntityParserCreate__doc__},
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self,
|
||||
PyTypeObject *cls,
|
||||
const char *context,
|
||||
const char *encoding);
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_ExternalEntityParserCreate(xmlparseobject *self, PyObject *const *args, Py_ssize_t nargs)
|
||||
pyexpat_xmlparser_ExternalEntityParserCreate(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
static const char * const _keywords[] = {"", "", NULL};
|
||||
static _PyArg_Parser _parser = {"z|s:ExternalEntityParserCreate", _keywords, 0};
|
||||
const char *context;
|
||||
const char *encoding = NULL;
|
||||
|
||||
if (!_PyArg_CheckPositional("ExternalEntityParserCreate", nargs, 1, 2)) {
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&context, &encoding)) {
|
||||
goto exit;
|
||||
}
|
||||
if (args[0] == Py_None) {
|
||||
context = NULL;
|
||||
}
|
||||
else if (PyUnicode_Check(args[0])) {
|
||||
Py_ssize_t context_length;
|
||||
context = PyUnicode_AsUTF8AndSize(args[0], &context_length);
|
||||
if (context == NULL) {
|
||||
goto exit;
|
||||
}
|
||||
if (strlen(context) != (size_t)context_length) {
|
||||
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
_PyArg_BadArgument("ExternalEntityParserCreate", "argument 1", "str or None", args[0]);
|
||||
goto exit;
|
||||
}
|
||||
if (nargs < 2) {
|
||||
goto skip_optional;
|
||||
}
|
||||
if (!PyUnicode_Check(args[1])) {
|
||||
_PyArg_BadArgument("ExternalEntityParserCreate", "argument 2", "str", args[1]);
|
||||
goto exit;
|
||||
}
|
||||
Py_ssize_t encoding_length;
|
||||
encoding = PyUnicode_AsUTF8AndSize(args[1], &encoding_length);
|
||||
if (encoding == NULL) {
|
||||
goto exit;
|
||||
}
|
||||
if (strlen(encoding) != (size_t)encoding_length) {
|
||||
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
||||
goto exit;
|
||||
}
|
||||
skip_optional:
|
||||
return_value = pyexpat_xmlparser_ExternalEntityParserCreate_impl(self, context, encoding);
|
||||
return_value = pyexpat_xmlparser_ExternalEntityParserCreate_impl(self, cls, context, encoding);
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
|
@ -239,29 +224,25 @@ PyDoc_STRVAR(pyexpat_xmlparser_UseForeignDTD__doc__,
|
|||
"information to the parser. \'flag\' defaults to True if not provided.");
|
||||
|
||||
#define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF \
|
||||
{"UseForeignDTD", (PyCFunction)(void(*)(void))pyexpat_xmlparser_UseForeignDTD, METH_FASTCALL, pyexpat_xmlparser_UseForeignDTD__doc__},
|
||||
{"UseForeignDTD", (PyCFunction)(void(*)(void))pyexpat_xmlparser_UseForeignDTD, METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_UseForeignDTD__doc__},
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_UseForeignDTD_impl(xmlparseobject *self, int flag);
|
||||
pyexpat_xmlparser_UseForeignDTD_impl(xmlparseobject *self, PyTypeObject *cls,
|
||||
int flag);
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_UseForeignDTD(xmlparseobject *self, PyObject *const *args, Py_ssize_t nargs)
|
||||
pyexpat_xmlparser_UseForeignDTD(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
static const char * const _keywords[] = {"", NULL};
|
||||
static _PyArg_Parser _parser = {"|p:UseForeignDTD", _keywords, 0};
|
||||
int flag = 1;
|
||||
|
||||
if (!_PyArg_CheckPositional("UseForeignDTD", nargs, 0, 1)) {
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&flag)) {
|
||||
goto exit;
|
||||
}
|
||||
if (nargs < 1) {
|
||||
goto skip_optional;
|
||||
}
|
||||
flag = PyObject_IsTrue(args[0]);
|
||||
if (flag < 0) {
|
||||
goto exit;
|
||||
}
|
||||
skip_optional:
|
||||
return_value = pyexpat_xmlparser_UseForeignDTD_impl(self, flag);
|
||||
return_value = pyexpat_xmlparser_UseForeignDTD_impl(self, cls, flag);
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
|
@ -387,4 +368,4 @@ exit:
|
|||
#ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
|
||||
#define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
|
||||
#endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */
|
||||
/*[clinic end generated code: output=14e37efc4ec10be2 input=a9049054013a1b77]*/
|
||||
/*[clinic end generated code: output=612b9d6a17a679a7 input=a9049054013a1b77]*/
|
||||
|
|
|
@ -47,7 +47,18 @@ enum HandlerTypes {
|
|||
_DummyDecl
|
||||
};
|
||||
|
||||
static PyObject *ErrorObject;
|
||||
typedef struct {
|
||||
PyTypeObject *xml_parse_type;
|
||||
PyObject *error;
|
||||
} pyexpat_state;
|
||||
|
||||
static inline pyexpat_state*
|
||||
pyexpat_get_state(PyObject *module)
|
||||
{
|
||||
void *state = PyModule_GetState(module);
|
||||
assert(state != NULL);
|
||||
return (pyexpat_state *)state;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------- */
|
||||
|
||||
|
@ -73,8 +84,6 @@ typedef struct {
|
|||
|
||||
#define CHARACTER_DATA_BUFFER_SIZE 8192
|
||||
|
||||
static PyTypeObject Xmlparsetype;
|
||||
|
||||
typedef void (*xmlhandlersetter)(XML_Parser self, void *meth);
|
||||
typedef void* xmlhandler;
|
||||
|
||||
|
@ -107,7 +116,7 @@ set_error_attr(PyObject *err, const char *name, int value)
|
|||
* information. Always returns NULL.
|
||||
*/
|
||||
static PyObject *
|
||||
set_error(xmlparseobject *self, enum XML_Error code)
|
||||
set_error(pyexpat_state *state, xmlparseobject *self, enum XML_Error code)
|
||||
{
|
||||
PyObject *err;
|
||||
PyObject *buffer;
|
||||
|
@ -119,13 +128,13 @@ set_error(xmlparseobject *self, enum XML_Error code)
|
|||
XML_ErrorString(code), lineno, column);
|
||||
if (buffer == NULL)
|
||||
return NULL;
|
||||
err = PyObject_CallOneArg(ErrorObject, buffer);
|
||||
err = PyObject_CallOneArg(state->error, buffer);
|
||||
Py_DECREF(buffer);
|
||||
if ( err != NULL
|
||||
&& set_error_attr(err, "code", code)
|
||||
&& set_error_attr(err, "offset", column)
|
||||
&& set_error_attr(err, "lineno", lineno)) {
|
||||
PyErr_SetObject(ErrorObject, err);
|
||||
PyErr_SetObject(state->error, err);
|
||||
}
|
||||
Py_XDECREF(err);
|
||||
return NULL;
|
||||
|
@ -680,13 +689,13 @@ class pyexpat.xmlparser "xmlparseobject *" "&Xmlparsetype"
|
|||
|
||||
|
||||
static PyObject *
|
||||
get_parse_result(xmlparseobject *self, int rv)
|
||||
get_parse_result(pyexpat_state *state, xmlparseobject *self, int rv)
|
||||
{
|
||||
if (PyErr_Occurred()) {
|
||||
return NULL;
|
||||
}
|
||||
if (rv == 0) {
|
||||
return set_error(self, XML_GetErrorCode(self->itself));
|
||||
return set_error(state, self, XML_GetErrorCode(self->itself));
|
||||
}
|
||||
if (flush_character_buffer(self) < 0) {
|
||||
return NULL;
|
||||
|
@ -699,6 +708,7 @@ get_parse_result(xmlparseobject *self, int rv)
|
|||
/*[clinic input]
|
||||
pyexpat.xmlparser.Parse
|
||||
|
||||
cls: defining_class
|
||||
data: object
|
||||
isfinal: bool(accept={int}) = False
|
||||
/
|
||||
|
@ -709,14 +719,15 @@ Parse XML data.
|
|||
[clinic start generated code]*/
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyObject *data,
|
||||
int isfinal)
|
||||
/*[clinic end generated code: output=f4db843dd1f4ed4b input=eb616027bfa9847f]*/
|
||||
pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyTypeObject *cls,
|
||||
PyObject *data, int isfinal)
|
||||
/*[clinic end generated code: output=8faffe07fe1f862a input=fc97f833558ca715]*/
|
||||
{
|
||||
const char *s;
|
||||
Py_ssize_t slen;
|
||||
Py_buffer view;
|
||||
int rc;
|
||||
pyexpat_state *state = PyType_GetModuleState(cls);
|
||||
|
||||
if (PyUnicode_Check(data)) {
|
||||
view.buf = NULL;
|
||||
|
@ -745,9 +756,10 @@ pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyObject *data,
|
|||
rc = XML_Parse(self->itself, s, (int)slen, isfinal);
|
||||
|
||||
done:
|
||||
if (view.buf != NULL)
|
||||
if (view.buf != NULL) {
|
||||
PyBuffer_Release(&view);
|
||||
return get_parse_result(self, rc);
|
||||
}
|
||||
return get_parse_result(state, self, rc);
|
||||
}
|
||||
|
||||
/* File reading copied from cPickle */
|
||||
|
@ -796,6 +808,7 @@ error:
|
|||
/*[clinic input]
|
||||
pyexpat.xmlparser.ParseFile
|
||||
|
||||
cls: defining_class
|
||||
file: object
|
||||
/
|
||||
|
||||
|
@ -803,13 +816,16 @@ Parse XML data from file-like object.
|
|||
[clinic start generated code]*/
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_ParseFile(xmlparseobject *self, PyObject *file)
|
||||
/*[clinic end generated code: output=2adc6a13100cc42b input=fbb5a12b6038d735]*/
|
||||
pyexpat_xmlparser_ParseFile_impl(xmlparseobject *self, PyTypeObject *cls,
|
||||
PyObject *file)
|
||||
/*[clinic end generated code: output=34780a094c8ca3ae input=ba4bc9c541684793]*/
|
||||
{
|
||||
int rv = 1;
|
||||
PyObject *readmethod = NULL;
|
||||
_Py_IDENTIFIER(read);
|
||||
|
||||
pyexpat_state *state = PyType_GetModuleState(cls);
|
||||
|
||||
if (_PyObject_LookupAttrId(file, &PyId_read, &readmethod) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -823,7 +839,7 @@ pyexpat_xmlparser_ParseFile(xmlparseobject *self, PyObject *file)
|
|||
void *buf = XML_GetBuffer(self->itself, BUF_SIZE);
|
||||
if (buf == NULL) {
|
||||
Py_XDECREF(readmethod);
|
||||
return get_parse_result(self, 0);
|
||||
return get_parse_result(state, self, 0);
|
||||
}
|
||||
|
||||
bytes_read = readinst(buf, BUF_SIZE, readmethod);
|
||||
|
@ -841,7 +857,7 @@ pyexpat_xmlparser_ParseFile(xmlparseobject *self, PyObject *file)
|
|||
break;
|
||||
}
|
||||
Py_XDECREF(readmethod);
|
||||
return get_parse_result(self, rv);
|
||||
return get_parse_result(state, self, rv);
|
||||
}
|
||||
|
||||
/*[clinic input]
|
||||
|
@ -907,6 +923,7 @@ pyexpat_xmlparser_GetInputContext_impl(xmlparseobject *self)
|
|||
/*[clinic input]
|
||||
pyexpat.xmlparser.ExternalEntityParserCreate
|
||||
|
||||
cls: defining_class
|
||||
context: str(accept={str, NoneType})
|
||||
encoding: str = NULL
|
||||
/
|
||||
|
@ -916,16 +933,21 @@ Create a parser for parsing an external entity based on the information passed t
|
|||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self,
|
||||
PyTypeObject *cls,
|
||||
const char *context,
|
||||
const char *encoding)
|
||||
/*[clinic end generated code: output=535cda9d7a0fbcd6 input=b906714cc122c322]*/
|
||||
/*[clinic end generated code: output=01d4472b49cb3f92 input=ec70c6b9e6e9619a]*/
|
||||
{
|
||||
xmlparseobject *new_parser;
|
||||
int i;
|
||||
|
||||
new_parser = PyObject_GC_New(xmlparseobject, &Xmlparsetype);
|
||||
if (new_parser == NULL)
|
||||
pyexpat_state *state = PyType_GetModuleState(cls);
|
||||
|
||||
new_parser = PyObject_GC_New(xmlparseobject, state->xml_parse_type);
|
||||
if (new_parser == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
new_parser->buffer_size = self->buffer_size;
|
||||
new_parser->buffer_used = 0;
|
||||
new_parser->buffer = NULL;
|
||||
|
@ -1006,6 +1028,7 @@ pyexpat_xmlparser_SetParamEntityParsing_impl(xmlparseobject *self, int flag)
|
|||
/*[clinic input]
|
||||
pyexpat.xmlparser.UseForeignDTD
|
||||
|
||||
cls: defining_class
|
||||
flag: bool = True
|
||||
/
|
||||
|
||||
|
@ -1017,14 +1040,16 @@ information to the parser. 'flag' defaults to True if not provided.
|
|||
[clinic start generated code]*/
|
||||
|
||||
static PyObject *
|
||||
pyexpat_xmlparser_UseForeignDTD_impl(xmlparseobject *self, int flag)
|
||||
/*[clinic end generated code: output=cfaa9aa50bb0f65c input=78144c519d116a6e]*/
|
||||
pyexpat_xmlparser_UseForeignDTD_impl(xmlparseobject *self, PyTypeObject *cls,
|
||||
int flag)
|
||||
/*[clinic end generated code: output=d7d98252bd25a20f input=23440ecb0573fb29]*/
|
||||
{
|
||||
pyexpat_state *state = PyType_GetModuleState(cls);
|
||||
enum XML_Error rc;
|
||||
|
||||
rc = XML_UseForeignDTD(self->itself, flag ? XML_TRUE : XML_FALSE);
|
||||
if (rc != XML_ERROR_NONE) {
|
||||
return set_error(self, rc);
|
||||
return set_error(state, self, rc);
|
||||
}
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
@ -1104,12 +1129,13 @@ PyUnknownEncodingHandler(void *encodingHandlerData,
|
|||
|
||||
|
||||
static PyObject *
|
||||
newxmlparseobject(const char *encoding, const char *namespace_separator, PyObject *intern)
|
||||
newxmlparseobject(pyexpat_state *state, const char *encoding,
|
||||
const char *namespace_separator, PyObject *intern)
|
||||
{
|
||||
int i;
|
||||
xmlparseobject *self;
|
||||
|
||||
self = PyObject_GC_New(xmlparseobject, &Xmlparsetype);
|
||||
self = PyObject_GC_New(xmlparseobject, state->xml_parse_type);
|
||||
if (self == NULL)
|
||||
return NULL;
|
||||
|
||||
|
@ -1177,7 +1203,9 @@ xmlparse_dealloc(xmlparseobject *self)
|
|||
self->buffer = NULL;
|
||||
}
|
||||
Py_XDECREF(self->intern);
|
||||
PyTypeObject *tp = Py_TYPE(self);
|
||||
PyObject_GC_Del(self);
|
||||
Py_DECREF(tp);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1464,38 +1492,22 @@ xmlparse_clear(xmlparseobject *op)
|
|||
|
||||
PyDoc_STRVAR(Xmlparsetype__doc__, "XML parser");
|
||||
|
||||
static PyTypeObject Xmlparsetype = {
|
||||
PyVarObject_HEAD_INIT(NULL, 0)
|
||||
"pyexpat.xmlparser", /*tp_name*/
|
||||
sizeof(xmlparseobject), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
/* methods */
|
||||
(destructor)xmlparse_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_vectorcall_offset*/
|
||||
0, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
0, /*tp_as_async*/
|
||||
(reprfunc)0, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
(hashfunc)0, /*tp_hash*/
|
||||
(ternaryfunc)0, /*tp_call*/
|
||||
(reprfunc)0, /*tp_str*/
|
||||
(getattrofunc)0, /* tp_getattro */
|
||||
(setattrofunc)0, /* tp_setattro */
|
||||
0, /* tp_as_buffer */
|
||||
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
|
||||
Xmlparsetype__doc__, /* tp_doc - Documentation string */
|
||||
(traverseproc)xmlparse_traverse, /* tp_traverse */
|
||||
(inquiry)xmlparse_clear, /* tp_clear */
|
||||
0, /* tp_richcompare */
|
||||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
xmlparse_methods, /* tp_methods */
|
||||
xmlparse_members, /* tp_members */
|
||||
xmlparse_getsetlist, /* tp_getset */
|
||||
static PyType_Slot _xml_parse_type_spec_slots[] = {
|
||||
{Py_tp_dealloc, xmlparse_dealloc},
|
||||
{Py_tp_doc, (void *)Xmlparsetype__doc__},
|
||||
{Py_tp_traverse, xmlparse_traverse},
|
||||
{Py_tp_clear, xmlparse_clear},
|
||||
{Py_tp_methods, xmlparse_methods},
|
||||
{Py_tp_members, xmlparse_members},
|
||||
{Py_tp_getset, xmlparse_getsetlist},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
static PyType_Spec _xml_parse_type_spec = {
|
||||
.name = "pyexpat.xmlparser",
|
||||
.basicsize = sizeof(xmlparseobject),
|
||||
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
|
||||
.slots = _xml_parse_type_spec_slots,
|
||||
};
|
||||
|
||||
/* End of code for xmlparser objects */
|
||||
|
@ -1541,7 +1553,8 @@ pyexpat_ParserCreate_impl(PyObject *module, const char *encoding,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
result = newxmlparseobject(encoding, namespace_separator, intern);
|
||||
pyexpat_state *state = pyexpat_get_state(module);
|
||||
result = newxmlparseobject(state, encoding, namespace_separator, intern);
|
||||
if (intern_decref) {
|
||||
Py_DECREF(intern);
|
||||
}
|
||||
|
@ -1583,14 +1596,10 @@ PyDoc_STRVAR(pyexpat_module_documentation,
|
|||
#define MODULE_NAME "pyexpat"
|
||||
#endif
|
||||
|
||||
#ifndef MODULE_INITFUNC
|
||||
#define MODULE_INITFUNC PyInit_pyexpat
|
||||
#endif
|
||||
|
||||
static int init_handler_descrs(void)
|
||||
static int init_handler_descrs(pyexpat_state *state)
|
||||
{
|
||||
int i;
|
||||
assert(!PyType_HasFeature(&Xmlparsetype, Py_TPFLAGS_VALID_VERSION_TAG));
|
||||
assert(!PyType_HasFeature(state->xml_parse_type, Py_TPFLAGS_VALID_VERSION_TAG));
|
||||
for (i = 0; handler_info[i].name != NULL; i++) {
|
||||
struct HandlerInfo *hi = &handler_info[i];
|
||||
hi->getset.name = hi->name;
|
||||
|
@ -1598,11 +1607,11 @@ static int init_handler_descrs(void)
|
|||
hi->getset.set = (setter)xmlparse_handler_setter;
|
||||
hi->getset.closure = &handler_info[i];
|
||||
|
||||
PyObject *descr = PyDescr_NewGetSet(&Xmlparsetype, &hi->getset);
|
||||
PyObject *descr = PyDescr_NewGetSet(state->xml_parse_type, &hi->getset);
|
||||
if (descr == NULL)
|
||||
return -1;
|
||||
|
||||
if (PyDict_SetDefault(Xmlparsetype.tp_dict, PyDescr_NAME(descr), descr) == NULL) {
|
||||
if (PyDict_SetDefault(state->xml_parse_type->tp_dict, PyDescr_NAME(descr), descr) == NULL) {
|
||||
Py_DECREF(descr);
|
||||
return -1;
|
||||
}
|
||||
|
@ -1846,37 +1855,35 @@ pyexpat_destructor(PyObject *op)
|
|||
static int
|
||||
pyexpat_exec(PyObject *mod)
|
||||
{
|
||||
if (PyType_Ready(&Xmlparsetype) < 0) {
|
||||
pyexpat_state *state = pyexpat_get_state(mod);
|
||||
state->xml_parse_type = (PyTypeObject *)PyType_FromModuleAndSpec(
|
||||
mod, &_xml_parse_type_spec, NULL);
|
||||
|
||||
if (state->xml_parse_type == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (init_handler_descrs() < 0) {
|
||||
if (init_handler_descrs(state) < 0) {
|
||||
return -1;
|
||||
}
|
||||
state->error = PyErr_NewException("xml.parsers.expat.ExpatError",
|
||||
NULL, NULL);
|
||||
if (state->error == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Add some symbolic constants to the module */
|
||||
if (ErrorObject == NULL) {
|
||||
ErrorObject = PyErr_NewException("xml.parsers.expat.ExpatError",
|
||||
NULL, NULL);
|
||||
}
|
||||
if (ErrorObject == NULL) {
|
||||
|
||||
if (PyModule_AddObjectRef(mod, "error", state->error) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
Py_INCREF(ErrorObject);
|
||||
if (PyModule_AddObject(mod, "error", ErrorObject) < 0) {
|
||||
Py_DECREF(ErrorObject);
|
||||
if (PyModule_AddObjectRef(mod, "ExpatError", state->error) < 0) {
|
||||
return -1;
|
||||
}
|
||||
Py_INCREF(ErrorObject);
|
||||
if (PyModule_AddObject(mod, "ExpatError", ErrorObject) < 0) {
|
||||
Py_DECREF(ErrorObject);
|
||||
return -1;
|
||||
}
|
||||
Py_INCREF(&Xmlparsetype);
|
||||
if (PyModule_AddObject(mod, "XMLParserType",
|
||||
(PyObject *) &Xmlparsetype) < 0) {
|
||||
Py_DECREF(&Xmlparsetype);
|
||||
|
||||
if (PyModule_AddObjectRef(mod, "XMLParserType",
|
||||
(PyObject *) state->xml_parse_type) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1979,26 +1986,51 @@ pyexpat_exec(PyObject *mod)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
pyexpat_traverse(PyObject *module, visitproc visit, void *arg)
|
||||
{
|
||||
pyexpat_state *state = pyexpat_get_state(module);
|
||||
Py_VISIT(state->xml_parse_type);
|
||||
Py_VISIT(state->error);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
pyexpat_clear(PyObject *module)
|
||||
{
|
||||
pyexpat_state *state = pyexpat_get_state(module);
|
||||
Py_CLEAR(state->xml_parse_type);
|
||||
Py_CLEAR(state->error);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
pyexpat_free(void *module)
|
||||
{
|
||||
pyexpat_clear((PyObject *)module);
|
||||
}
|
||||
|
||||
static PyModuleDef_Slot pyexpat_slots[] = {
|
||||
{Py_mod_exec, pyexpat_exec},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
static struct PyModuleDef pyexpatmodule = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
.m_name = MODULE_NAME,
|
||||
.m_doc = pyexpat_module_documentation,
|
||||
.m_size = -1,
|
||||
.m_size = sizeof(pyexpat_state),
|
||||
.m_methods = pyexpat_methods,
|
||||
.m_slots = pyexpat_slots,
|
||||
.m_traverse = pyexpat_traverse,
|
||||
.m_clear = pyexpat_clear,
|
||||
.m_free = pyexpat_free
|
||||
};
|
||||
|
||||
PyMODINIT_FUNC
|
||||
PyInit_pyexpat(void)
|
||||
{
|
||||
PyObject *mod = PyModule_Create(&pyexpatmodule);
|
||||
if (mod == NULL)
|
||||
return NULL;
|
||||
|
||||
if (pyexpat_exec(mod) < 0) {
|
||||
Py_DECREF(mod);
|
||||
return NULL;
|
||||
}
|
||||
return mod;
|
||||
return PyModuleDef_Init(&pyexpatmodule);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -193,12 +193,6 @@ struct compiler {
|
|||
int c_optimize; /* optimization level */
|
||||
int c_interactive; /* true if in interactive mode */
|
||||
int c_nestlevel;
|
||||
int c_do_not_emit_bytecode; /* The compiler won't emit any bytecode
|
||||
if this value is different from zero.
|
||||
This can be used to temporarily visit
|
||||
nodes without emitting bytecode to
|
||||
check only errors. */
|
||||
|
||||
PyObject *c_const_cache; /* Python dict holding all constants,
|
||||
including names tuple */
|
||||
struct compiler_unit *u; /* compiler state for current block */
|
||||
|
@ -213,6 +207,7 @@ static int compiler_next_instr(basicblock *);
|
|||
static int compiler_addop(struct compiler *, int);
|
||||
static int compiler_addop_i(struct compiler *, int, Py_ssize_t);
|
||||
static int compiler_addop_j(struct compiler *, int, basicblock *);
|
||||
static int compiler_addop_j_noline(struct compiler *, int, basicblock *);
|
||||
static int compiler_error(struct compiler *, const char *);
|
||||
static int compiler_warn(struct compiler *, const char *, ...);
|
||||
static int compiler_nameop(struct compiler *, identifier, expr_context_ty);
|
||||
|
@ -379,7 +374,6 @@ PyAST_CompileObject(mod_ty mod, PyObject *filename, PyCompilerFlags *flags,
|
|||
c.c_flags = flags;
|
||||
c.c_optimize = (optimize == -1) ? _Py_GetConfig()->optimization_level : optimize;
|
||||
c.c_nestlevel = 0;
|
||||
c.c_do_not_emit_bytecode = 0;
|
||||
|
||||
_PyASTOptimizeState state;
|
||||
state.optimize = c.c_optimize;
|
||||
|
@ -1181,9 +1175,6 @@ compiler_addop(struct compiler *c, int opcode)
|
|||
struct instr *i;
|
||||
int off;
|
||||
assert(!HAS_ARG(opcode));
|
||||
if (c->c_do_not_emit_bytecode) {
|
||||
return 1;
|
||||
}
|
||||
off = compiler_next_instr(c->u->u_curblock);
|
||||
if (off < 0)
|
||||
return 0;
|
||||
|
@ -1337,10 +1328,6 @@ merge_consts_recursive(struct compiler *c, PyObject *o)
|
|||
static Py_ssize_t
|
||||
compiler_add_const(struct compiler *c, PyObject *o)
|
||||
{
|
||||
if (c->c_do_not_emit_bytecode) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
PyObject *key = merge_consts_recursive(c, o);
|
||||
if (key == NULL) {
|
||||
return -1;
|
||||
|
@ -1354,10 +1341,6 @@ compiler_add_const(struct compiler *c, PyObject *o)
|
|||
static int
|
||||
compiler_addop_load_const(struct compiler *c, PyObject *o)
|
||||
{
|
||||
if (c->c_do_not_emit_bytecode) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
Py_ssize_t arg = compiler_add_const(c, o);
|
||||
if (arg < 0)
|
||||
return 0;
|
||||
|
@ -1368,10 +1351,6 @@ static int
|
|||
compiler_addop_o(struct compiler *c, int opcode, PyObject *dict,
|
||||
PyObject *o)
|
||||
{
|
||||
if (c->c_do_not_emit_bytecode) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
Py_ssize_t arg = compiler_add_o(dict, o);
|
||||
if (arg < 0)
|
||||
return 0;
|
||||
|
@ -1384,10 +1363,6 @@ compiler_addop_name(struct compiler *c, int opcode, PyObject *dict,
|
|||
{
|
||||
Py_ssize_t arg;
|
||||
|
||||
if (c->c_do_not_emit_bytecode) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
PyObject *mangled = _Py_Mangle(c->u->u_private, o);
|
||||
if (!mangled)
|
||||
return 0;
|
||||
|
@ -1408,10 +1383,6 @@ compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg)
|
|||
struct instr *i;
|
||||
int off;
|
||||
|
||||
if (c->c_do_not_emit_bytecode) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* oparg value is unsigned, but a signed C int is usually used to store
|
||||
it in the C code (like Python/ceval.c).
|
||||
|
||||
|
@ -1452,12 +1423,15 @@ static int add_jump_to_block(basicblock *b, int opcode, int lineno, basicblock *
|
|||
static int
|
||||
compiler_addop_j(struct compiler *c, int opcode, basicblock *b)
|
||||
{
|
||||
if (c->c_do_not_emit_bytecode) {
|
||||
return 1;
|
||||
}
|
||||
return add_jump_to_block(c->u->u_curblock, opcode, c->u->u_lineno, 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);
|
||||
}
|
||||
|
||||
/* NEXT_BLOCK() creates an implicit jump from the current block
|
||||
to the new block.
|
||||
|
||||
|
@ -1528,6 +1502,14 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b)
|
|||
return 0; \
|
||||
}
|
||||
|
||||
/* Add a jump with no line number.
|
||||
* Used for artificial jumps that have no corresponding
|
||||
* token in the source code. */
|
||||
#define ADDOP_JUMP_NOLINE(C, OP, O) { \
|
||||
if (!compiler_addop_j_noline((C), (OP), (O))) \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
#define ADDOP_COMPARE(C, CMP) { \
|
||||
if (!compiler_addcompare((C), (cmpop_ty)(CMP))) \
|
||||
return 0; \
|
||||
|
@ -2560,7 +2542,7 @@ compiler_jump_if(struct compiler *c, expr_ty e, basicblock *next, int cond)
|
|||
return 0;
|
||||
if (!compiler_jump_if(c, e->v.IfExp.body, next, cond))
|
||||
return 0;
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, end);
|
||||
ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
|
||||
compiler_use_next_block(c, next2);
|
||||
if (!compiler_jump_if(c, e->v.IfExp.orelse, next, cond))
|
||||
return 0;
|
||||
|
@ -2593,11 +2575,11 @@ compiler_jump_if(struct compiler *c, expr_ty e, basicblock *next, int cond)
|
|||
basicblock *end = compiler_new_block(c);
|
||||
if (end == NULL)
|
||||
return 0;
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, end);
|
||||
ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
|
||||
compiler_use_next_block(c, cleanup);
|
||||
ADDOP(c, POP_TOP);
|
||||
if (!cond) {
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, next);
|
||||
ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, next);
|
||||
}
|
||||
compiler_use_next_block(c, end);
|
||||
return 1;
|
||||
|
@ -2632,7 +2614,7 @@ compiler_ifexp(struct compiler *c, expr_ty e)
|
|||
if (!compiler_jump_if(c, e->v.IfExp.test, next, 0))
|
||||
return 0;
|
||||
VISIT(c, expr, e->v.IfExp.body);
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, end);
|
||||
ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
|
||||
compiler_use_next_block(c, next);
|
||||
VISIT(c, expr, e->v.IfExp.orelse);
|
||||
compiler_use_next_block(c, end);
|
||||
|
@ -2719,7 +2701,7 @@ compiler_if(struct compiler *c, stmt_ty s)
|
|||
}
|
||||
VISIT_SEQ(c, stmt, s->v.If.body);
|
||||
if (asdl_seq_LEN(s->v.If.orelse)) {
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, end);
|
||||
ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
|
||||
compiler_use_next_block(c, next);
|
||||
VISIT_SEQ(c, stmt, s->v.If.orelse);
|
||||
}
|
||||
|
@ -2978,7 +2960,7 @@ compiler_try_finally(struct compiler *c, stmt_ty s)
|
|||
ADDOP(c, POP_BLOCK);
|
||||
compiler_pop_fblock(c, FINALLY_TRY, body);
|
||||
VISIT_SEQ(c, stmt, s->v.Try.finalbody);
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, exit);
|
||||
ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, exit);
|
||||
/* `finally` block */
|
||||
compiler_use_next_block(c, end);
|
||||
if (!compiler_push_fblock(c, FINALLY_END, end, NULL, NULL))
|
||||
|
@ -3127,6 +3109,8 @@ compiler_try_except(struct compiler *c, stmt_ty s)
|
|||
return 0;
|
||||
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;
|
||||
ADDOP(c, POP_EXCEPT);
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, end);
|
||||
}
|
||||
|
@ -3940,7 +3924,7 @@ compiler_compare(struct compiler *c, expr_ty e)
|
|||
basicblock *end = compiler_new_block(c);
|
||||
if (end == NULL)
|
||||
return 0;
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, end);
|
||||
ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
|
||||
compiler_use_next_block(c, cleanup);
|
||||
ADDOP(c, ROT_TWO);
|
||||
ADDOP(c, POP_TOP);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -890,144 +890,144 @@ const unsigned char _Py_M__zipimport[] = {
|
|||
95,109,116,105,109,101,90,11,115,111,117,114,99,101,95,115,
|
||||
105,122,101,114,50,0,0,0,114,9,0,0,0,114,9,0,
|
||||
0,0,114,10,0,0,0,218,15,95,117,110,109,97,114,115,
|
||||
104,97,108,95,99,111,100,101,107,2,0,0,115,72,0,0,
|
||||
104,97,108,95,99,111,100,101,107,2,0,0,115,74,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,6,255,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,255,128,114,157,0,0,0,99,1,
|
||||
0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,
|
||||
0,0,0,67,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,19,0,0,0,41,1,218,6,115,111,117,114,99,101,114,
|
||||
9,0,0,0,114,9,0,0,0,114,10,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,152,2,0,0,115,8,0,0,0,
|
||||
12,1,12,1,4,1,255,128,114,161,0,0,0,99,2,0,
|
||||
0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0,
|
||||
0,0,67,0,0,0,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,78,0,0,0,84,41,1,90,12,
|
||||
100,111,110,116,95,105,110,104,101,114,105,116,41,2,114,161,
|
||||
0,0,0,218,7,99,111,109,112,105,108,101,41,2,114,57,
|
||||
0,0,0,114,160,0,0,0,114,9,0,0,0,114,9,0,
|
||||
0,0,114,10,0,0,0,218,15,95,99,111,109,112,105,108,
|
||||
101,95,115,111,117,114,99,101,159,2,0,0,115,6,0,0,
|
||||
0,8,1,16,1,255,128,114,163,0,0,0,99,2,0,0,
|
||||
0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,0,
|
||||
0,67,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,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,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,88,0,0,0,114,14,0,0,0,41,2,
|
||||
114,133,0,0,0,90,6,109,107,116,105,109,101,41,2,218,
|
||||
1,100,114,140,0,0,0,114,9,0,0,0,114,9,0,0,
|
||||
0,114,10,0,0,0,218,14,95,112,97,114,115,101,95,100,
|
||||
111,115,116,105,109,101,165,2,0,0,115,20,0,0,0,4,
|
||||
1,10,1,10,1,6,1,6,1,10,1,10,1,6,1,6,
|
||||
249,255,128,114,171,0,0,0,99,2,0,0,0,0,0,0,
|
||||
0,0,0,0,0,6,0,0,0,10,0,0,0,67,0,0,
|
||||
0,115,110,0,0,0,122,82,124,1,100,1,100,0,133,2,
|
||||
25,0,100,2,118,0,115,22,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,87,0,83,0,4,0,116,2,116,3,
|
||||
116,4,102,3,121,108,1,0,1,0,1,0,89,0,100,6,
|
||||
83,0,119,0,41,7,78,114,14,0,0,0,169,2,218,1,
|
||||
99,218,1,111,114,165,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,28,0,0,0,114,171,0,0,0,114,26,0,0,0,
|
||||
218,10,73,110,100,101,120,69,114,114,111,114,114,156,0,0,
|
||||
0,41,6,114,32,0,0,0,114,13,0,0,0,114,58,0,
|
||||
0,0,114,133,0,0,0,114,134,0,0,0,90,17,117,110,
|
||||
99,111,109,112,114,101,115,115,101,100,95,115,105,122,101,114,
|
||||
9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,153,
|
||||
0,0,0,178,2,0,0,115,24,0,0,0,2,1,20,2,
|
||||
12,1,10,1,8,3,8,1,8,1,16,1,18,1,6,1,
|
||||
2,255,255,128,114,153,0,0,0,99,2,0,0,0,0,0,
|
||||
0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,
|
||||
0,0,115,80,0,0,0,124,1,100,1,100,0,133,2,25,
|
||||
0,100,2,118,0,115,20,74,0,130,1,124,1,100,0,100,
|
||||
1,133,2,25,0,125,1,122,14,124,0,106,0,124,1,25,
|
||||
0,125,2,87,0,110,18,4,0,116,1,121,78,1,0,1,
|
||||
0,1,0,89,0,100,0,83,0,116,2,124,0,106,3,124,
|
||||
2,131,2,83,0,119,0,41,3,78,114,14,0,0,0,114,
|
||||
172,0,0,0,41,4,114,28,0,0,0,114,26,0,0,0,
|
||||
114,56,0,0,0,114,29,0,0,0,41,3,114,32,0,0,
|
||||
0,114,13,0,0,0,114,58,0,0,0,114,9,0,0,0,
|
||||
114,9,0,0,0,114,10,0,0,0,114,151,0,0,0,197,
|
||||
2,0,0,115,18,0,0,0,20,2,12,1,2,2,14,1,
|
||||
12,1,6,1,12,2,2,253,255,128,114,151,0,0,0,99,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,
|
||||
11,0,0,0,67,0,0,0,115,18,1,0,0,116,0,124,
|
||||
0,124,1,131,2,125,2,100,0,125,3,116,1,68,0,93,
|
||||
204,92,3,125,4,125,5,125,6,124,2,124,4,23,0,125,
|
||||
7,116,2,106,3,100,1,124,0,106,4,116,5,124,7,100,
|
||||
2,100,3,141,5,1,0,122,14,124,0,106,6,124,7,25,
|
||||
0,125,8,87,0,110,18,4,0,116,7,144,1,121,16,1,
|
||||
0,1,0,1,0,89,0,113,18,124,8,100,4,25,0,125,
|
||||
9,116,8,124,0,106,4,124,8,131,2,125,10,100,0,125,
|
||||
11,124,5,114,182,122,20,116,9,124,0,124,9,124,7,124,
|
||||
1,124,10,131,5,125,11,87,0,110,50,4,0,116,10,144,
|
||||
1,121,14,1,0,125,12,1,0,122,16,124,12,125,3,87,
|
||||
0,89,0,100,0,125,12,126,12,110,18,100,0,125,12,126,
|
||||
12,119,1,116,11,124,9,124,10,131,2,125,11,124,11,100,
|
||||
0,117,0,114,202,113,18,124,8,100,4,25,0,125,9,124,
|
||||
11,124,6,124,9,102,3,2,0,1,0,83,0,124,3,114,
|
||||
252,100,5,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,88,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,62,
|
||||
0,0,0,114,61,0,0,0,41,13,114,36,0,0,0,114,
|
||||
91,0,0,0,114,45,0,0,0,114,80,0,0,0,114,29,
|
||||
0,0,0,114,20,0,0,0,114,28,0,0,0,114,26,0,
|
||||
0,0,114,56,0,0,0,114,157,0,0,0,114,79,0,0,
|
||||
0,114,163,0,0,0,114,3,0,0,0,41,14,114,32,0,
|
||||
0,0,114,38,0,0,0,114,13,0,0,0,90,12,105,109,
|
||||
112,111,114,116,95,101,114,114,111,114,114,92,0,0,0,114,
|
||||
93,0,0,0,114,51,0,0,0,114,66,0,0,0,114,58,
|
||||
0,0,0,114,40,0,0,0,114,128,0,0,0,114,50,0,
|
||||
0,0,90,3,101,120,99,114,81,0,0,0,114,9,0,0,
|
||||
0,114,9,0,0,0,114,10,0,0,0,114,48,0,0,0,
|
||||
212,2,0,0,115,60,0,0,0,10,1,4,1,14,1,8,
|
||||
1,22,1,2,1,14,1,14,1,4,1,8,2,12,1,4,
|
||||
1,4,1,2,1,20,1,16,1,16,1,8,128,10,2,8,
|
||||
1,2,3,8,1,14,1,4,2,10,1,14,1,18,2,2,
|
||||
241,2,247,255,128,114,48,0,0,0,41,46,114,86,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,21,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,
|
||||
45,0,0,0,114,150,0,0,0,114,112,0,0,0,114,154,
|
||||
0,0,0,114,71,0,0,0,114,133,0,0,0,114,69,0,
|
||||
0,0,90,7,95,95,97,108,108,95,95,114,20,0,0,0,
|
||||
90,15,112,97,116,104,95,115,101,112,97,114,97,116,111,114,
|
||||
115,114,18,0,0,0,114,79,0,0,0,114,3,0,0,0,
|
||||
114,25,0,0,0,218,4,116,121,112,101,114,74,0,0,0,
|
||||
114,115,0,0,0,114,117,0,0,0,114,119,0,0,0,90,
|
||||
13,95,76,111,97,100,101,114,66,97,115,105,99,115,114,4,
|
||||
0,0,0,114,91,0,0,0,114,36,0,0,0,114,37,0,
|
||||
0,0,114,35,0,0,0,114,27,0,0,0,114,124,0,0,
|
||||
0,114,144,0,0,0,114,146,0,0,0,114,56,0,0,0,
|
||||
114,149,0,0,0,114,157,0,0,0,218,8,95,95,99,111,
|
||||
100,101,95,95,114,155,0,0,0,114,161,0,0,0,114,163,
|
||||
0,0,0,114,171,0,0,0,114,153,0,0,0,114,151,0,
|
||||
0,0,114,48,0,0,0,114,9,0,0,0,114,9,0,0,
|
||||
0,114,9,0,0,0,114,10,0,0,0,218,8,60,109,111,
|
||||
100,117,108,101,62,1,0,0,0,115,92,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,34,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,255,128,
|
||||
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,255,128,114,157,0,0,0,
|
||||
99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
|
||||
0,4,0,0,0,67,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,19,0,0,0,41,1,218,6,115,111,117,114,99,
|
||||
101,114,9,0,0,0,114,9,0,0,0,114,10,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,152,2,0,0,115,8,0,
|
||||
0,0,12,1,12,1,4,1,255,128,114,161,0,0,0,99,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
|
||||
6,0,0,0,67,0,0,0,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,78,0,0,0,84,41,1,
|
||||
90,12,100,111,110,116,95,105,110,104,101,114,105,116,41,2,
|
||||
114,161,0,0,0,218,7,99,111,109,112,105,108,101,41,2,
|
||||
114,57,0,0,0,114,160,0,0,0,114,9,0,0,0,114,
|
||||
9,0,0,0,114,10,0,0,0,218,15,95,99,111,109,112,
|
||||
105,108,101,95,115,111,117,114,99,101,159,2,0,0,115,6,
|
||||
0,0,0,8,1,16,1,255,128,114,163,0,0,0,99,2,
|
||||
0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,
|
||||
0,0,0,67,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,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,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,88,0,0,0,114,14,0,0,0,
|
||||
41,2,114,133,0,0,0,90,6,109,107,116,105,109,101,41,
|
||||
2,218,1,100,114,140,0,0,0,114,9,0,0,0,114,9,
|
||||
0,0,0,114,10,0,0,0,218,14,95,112,97,114,115,101,
|
||||
95,100,111,115,116,105,109,101,165,2,0,0,115,20,0,0,
|
||||
0,4,1,10,1,10,1,6,1,6,1,10,1,10,1,6,
|
||||
1,6,249,255,128,114,171,0,0,0,99,2,0,0,0,0,
|
||||
0,0,0,0,0,0,0,6,0,0,0,10,0,0,0,67,
|
||||
0,0,0,115,110,0,0,0,122,82,124,1,100,1,100,0,
|
||||
133,2,25,0,100,2,118,0,115,22,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,87,0,83,0,4,0,116,2,
|
||||
116,3,116,4,102,3,121,108,1,0,1,0,1,0,89,0,
|
||||
100,6,83,0,119,0,41,7,78,114,14,0,0,0,169,2,
|
||||
218,1,99,218,1,111,114,165,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,28,0,0,0,114,171,0,0,0,114,26,0,
|
||||
0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,156,
|
||||
0,0,0,41,6,114,32,0,0,0,114,13,0,0,0,114,
|
||||
58,0,0,0,114,133,0,0,0,114,134,0,0,0,90,17,
|
||||
117,110,99,111,109,112,114,101,115,115,101,100,95,115,105,122,
|
||||
101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,
|
||||
114,153,0,0,0,178,2,0,0,115,24,0,0,0,2,1,
|
||||
20,2,12,1,10,1,8,3,8,1,8,1,16,1,18,1,
|
||||
6,1,2,255,255,128,114,153,0,0,0,99,2,0,0,0,
|
||||
0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,
|
||||
67,0,0,0,115,80,0,0,0,124,1,100,1,100,0,133,
|
||||
2,25,0,100,2,118,0,115,20,74,0,130,1,124,1,100,
|
||||
0,100,1,133,2,25,0,125,1,122,14,124,0,106,0,124,
|
||||
1,25,0,125,2,87,0,110,18,4,0,116,1,121,78,1,
|
||||
0,1,0,1,0,89,0,100,0,83,0,116,2,124,0,106,
|
||||
3,124,2,131,2,83,0,119,0,41,3,78,114,14,0,0,
|
||||
0,114,172,0,0,0,41,4,114,28,0,0,0,114,26,0,
|
||||
0,0,114,56,0,0,0,114,29,0,0,0,41,3,114,32,
|
||||
0,0,0,114,13,0,0,0,114,58,0,0,0,114,9,0,
|
||||
0,0,114,9,0,0,0,114,10,0,0,0,114,151,0,0,
|
||||
0,197,2,0,0,115,18,0,0,0,20,2,12,1,2,2,
|
||||
14,1,12,1,6,1,12,2,2,253,255,128,114,151,0,0,
|
||||
0,99,2,0,0,0,0,0,0,0,0,0,0,0,14,0,
|
||||
0,0,11,0,0,0,67,0,0,0,115,18,1,0,0,116,
|
||||
0,124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,
|
||||
0,93,204,92,3,125,4,125,5,125,6,124,2,124,4,23,
|
||||
0,125,7,116,2,106,3,100,1,124,0,106,4,116,5,124,
|
||||
7,100,2,100,3,141,5,1,0,122,14,124,0,106,6,124,
|
||||
7,25,0,125,8,87,0,110,18,4,0,116,7,144,1,121,
|
||||
16,1,0,1,0,1,0,89,0,113,18,124,8,100,4,25,
|
||||
0,125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,
|
||||
0,125,11,124,5,114,182,122,20,116,9,124,0,124,9,124,
|
||||
7,124,1,124,10,131,5,125,11,87,0,110,50,4,0,116,
|
||||
10,144,1,121,14,1,0,125,12,1,0,122,16,124,12,125,
|
||||
3,87,0,89,0,100,0,125,12,126,12,110,18,100,0,125,
|
||||
12,126,12,119,1,116,11,124,9,124,10,131,2,125,11,124,
|
||||
11,100,0,117,0,114,202,113,18,124,8,100,4,25,0,125,
|
||||
9,124,11,124,6,124,9,102,3,2,0,1,0,83,0,124,
|
||||
3,114,252,100,5,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,88,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,62,0,0,0,114,61,0,0,0,41,13,114,36,0,0,
|
||||
0,114,91,0,0,0,114,45,0,0,0,114,80,0,0,0,
|
||||
114,29,0,0,0,114,20,0,0,0,114,28,0,0,0,114,
|
||||
26,0,0,0,114,56,0,0,0,114,157,0,0,0,114,79,
|
||||
0,0,0,114,163,0,0,0,114,3,0,0,0,41,14,114,
|
||||
32,0,0,0,114,38,0,0,0,114,13,0,0,0,90,12,
|
||||
105,109,112,111,114,116,95,101,114,114,111,114,114,92,0,0,
|
||||
0,114,93,0,0,0,114,51,0,0,0,114,66,0,0,0,
|
||||
114,58,0,0,0,114,40,0,0,0,114,128,0,0,0,114,
|
||||
50,0,0,0,90,3,101,120,99,114,81,0,0,0,114,9,
|
||||
0,0,0,114,9,0,0,0,114,10,0,0,0,114,48,0,
|
||||
0,0,212,2,0,0,115,60,0,0,0,10,1,4,1,14,
|
||||
1,8,1,22,1,2,1,14,1,14,1,4,1,8,2,12,
|
||||
1,4,1,4,1,2,1,20,1,16,1,16,1,8,128,10,
|
||||
2,8,1,2,3,8,1,14,1,4,2,10,1,14,1,18,
|
||||
2,2,241,2,247,255,128,114,48,0,0,0,41,46,114,86,
|
||||
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,
|
||||
21,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,45,0,0,0,114,150,0,0,0,114,112,0,0,0,
|
||||
114,154,0,0,0,114,71,0,0,0,114,133,0,0,0,114,
|
||||
69,0,0,0,90,7,95,95,97,108,108,95,95,114,20,0,
|
||||
0,0,90,15,112,97,116,104,95,115,101,112,97,114,97,116,
|
||||
111,114,115,114,18,0,0,0,114,79,0,0,0,114,3,0,
|
||||
0,0,114,25,0,0,0,218,4,116,121,112,101,114,74,0,
|
||||
0,0,114,115,0,0,0,114,117,0,0,0,114,119,0,0,
|
||||
0,90,13,95,76,111,97,100,101,114,66,97,115,105,99,115,
|
||||
114,4,0,0,0,114,91,0,0,0,114,36,0,0,0,114,
|
||||
37,0,0,0,114,35,0,0,0,114,27,0,0,0,114,124,
|
||||
0,0,0,114,144,0,0,0,114,146,0,0,0,114,56,0,
|
||||
0,0,114,149,0,0,0,114,157,0,0,0,218,8,95,95,
|
||||
99,111,100,101,95,95,114,155,0,0,0,114,161,0,0,0,
|
||||
114,163,0,0,0,114,171,0,0,0,114,153,0,0,0,114,
|
||||
151,0,0,0,114,48,0,0,0,114,9,0,0,0,114,9,
|
||||
0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,60,
|
||||
109,111,100,117,108,101,62,1,0,0,0,115,92,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,34,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,255,128,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue