co_lnotab supports negative line number delta

Issue #26107: The format of the co_lnotab attribute of code objects changes to
support negative line number delta.

Changes:

* assemble_lnotab(): if line number delta is less than -128 or greater than
  127, emit multiple (offset_delta, lineno_delta) in co_lnotab
* update functions decoding co_lnotab to use signed 8-bit integers

  - dis.findlinestarts()
  - PyCode_Addr2Line()
  - _PyCode_CheckLineNumber()
  - frame_setlineno()

* update lnotab_notes.txt
* increase importlib MAGIC_NUMBER to 3361
* document the change in What's New in Python 3.6
* cleanup also PyCode_Optimize() to use better variable names
This commit is contained in:
Victor Stinner 2016-01-20 12:16:21 +01:00
parent 316fcc867b
commit f3914eb16d
11 changed files with 203 additions and 161 deletions

View file

@ -4452,7 +4452,6 @@ assemble_lnotab(struct assembler *a, struct instr *i)
d_lineno = i->i_lineno - a->a_lineno;
assert(d_bytecode >= 0);
assert(d_lineno >= 0);
if(d_bytecode == 0 && d_lineno == 0)
return 1;
@ -4482,9 +4481,21 @@ assemble_lnotab(struct assembler *a, struct instr *i)
d_bytecode -= ncodes * 255;
a->a_lnotab_off += ncodes * 2;
}
assert(d_bytecode <= 255);
if (d_lineno > 255) {
int j, nbytes, ncodes = d_lineno / 255;
assert(0 <= d_bytecode && d_bytecode <= 255);
if (d_lineno < -128 || 127 < d_lineno) {
int j, nbytes, ncodes, k;
if (d_lineno < 0) {
k = -128;
/* use division on positive numbers */
ncodes = (-d_lineno) / 128;
}
else {
k = 127;
ncodes = d_lineno / 127;
}
d_lineno -= ncodes * k;
assert(ncodes >= 1);
nbytes = a->a_lnotab_off + 2 * ncodes;
len = PyBytes_GET_SIZE(a->a_lnotab);
if (nbytes >= len) {
@ -4502,15 +4513,15 @@ assemble_lnotab(struct assembler *a, struct instr *i)
lnotab = (unsigned char *)
PyBytes_AS_STRING(a->a_lnotab) + a->a_lnotab_off;
*lnotab++ = d_bytecode;
*lnotab++ = 255;
*lnotab++ = k;
d_bytecode = 0;
for (j = 1; j < ncodes; j++) {
*lnotab++ = 0;
*lnotab++ = 255;
*lnotab++ = k;
}
d_lineno -= ncodes * 255;
a->a_lnotab_off += ncodes * 2;
}
assert(-128 <= d_lineno && d_lineno <= 127);
len = PyBytes_GET_SIZE(a->a_lnotab);
if (a->a_lnotab_off + 2 >= len) {

View file

@ -258,7 +258,7 @@ const unsigned char _Py_M__importlib_external[] = {
114,5,0,0,0,218,13,95,119,114,105,116,101,95,97,116,
111,109,105,99,99,0,0,0,115,26,0,0,0,0,5,24,
1,9,1,33,1,3,3,21,1,20,1,20,1,13,1,3,
1,17,1,13,1,5,1,114,55,0,0,0,105,32,13,0,
1,17,1,13,1,5,1,114,55,0,0,0,105,33,13,0,
0,233,2,0,0,0,114,13,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,99,
@ -368,7 +368,7 @@ const unsigned char _Py_M__importlib_external[] = {
103,90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,
109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
0,218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,
117,114,99,101,244,0,0,0,115,46,0,0,0,0,18,12,
117,114,99,101,245,0,0,0,115,46,0,0,0,0,18,12,
1,9,1,7,1,12,1,6,1,12,1,18,1,18,1,24,
1,12,1,12,1,12,1,36,1,12,1,18,1,9,2,12,
1,12,1,12,1,12,1,21,1,21,1,114,79,0,0,0,
@ -447,7 +447,7 @@ const unsigned char _Py_M__importlib_external[] = {
101,118,101,108,90,13,98,97,115,101,95,102,105,108,101,110,
97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,
0,0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,
99,97,99,104,101,32,1,0,0,115,44,0,0,0,0,9,
99,97,99,104,101,33,1,0,0,115,44,0,0,0,0,9,
18,1,12,1,18,1,18,1,12,1,9,1,15,1,15,1,
12,1,9,1,15,1,12,1,22,1,15,1,9,1,12,1,
22,1,12,1,9,1,12,1,19,1,114,85,0,0,0,99,
@ -484,7 +484,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,114,36,0,0,0,90,9,101,120,116,101,110,115,105,
111,110,218,11,115,111,117,114,99,101,95,112,97,116,104,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,15,
95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,65,
95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,66,
1,0,0,115,20,0,0,0,0,7,18,1,4,1,24,1,
35,1,4,1,3,1,16,1,19,1,21,1,114,91,0,0,
0,99,1,0,0,0,0,0,0,0,1,0,0,0,11,0,
@ -499,7 +499,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,114,79,0,0,0,114,66,0,0,0,114,74,0,0,
0,41,1,218,8,102,105,108,101,110,97,109,101,114,4,0,
0,0,114,4,0,0,0,114,5,0,0,0,218,11,95,103,
101,116,95,99,97,99,104,101,100,84,1,0,0,115,16,0,
101,116,95,99,97,99,104,101,100,85,1,0,0,115,16,0,
0,0,0,1,21,1,3,1,14,1,13,1,8,1,21,1,
4,2,114,95,0,0,0,99,1,0,0,0,0,0,0,0,
2,0,0,0,11,0,0,0,67,0,0,0,115,60,0,0,
@ -514,7 +514,7 @@ const unsigned char _Py_M__importlib_external[] = {
114,39,0,0,0,114,41,0,0,0,114,40,0,0,0,41,
2,114,35,0,0,0,114,42,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,218,10,95,99,97,108,
99,95,109,111,100,101,96,1,0,0,115,12,0,0,0,0,
99,95,109,111,100,101,97,1,0,0,115,12,0,0,0,0,
2,3,1,19,1,13,1,11,3,10,1,114,97,0,0,0,
99,1,0,0,0,0,0,0,0,3,0,0,0,11,0,0,
0,3,0,0,0,115,84,0,0,0,100,1,0,135,0,0,
@ -554,7 +554,7 @@ const unsigned char _Py_M__importlib_external[] = {
103,115,90,6,107,119,97,114,103,115,41,1,218,6,109,101,
116,104,111,100,114,4,0,0,0,114,5,0,0,0,218,19,
95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,
112,101,114,116,1,0,0,115,12,0,0,0,0,1,12,1,
112,101,114,117,1,0,0,115,12,0,0,0,0,1,12,1,
12,1,15,1,6,1,25,1,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,
@ -573,7 +573,7 @@ const unsigned char _Py_M__importlib_external[] = {
116,97,116,116,114,218,8,95,95,100,105,99,116,95,95,218,
6,117,112,100,97,116,101,41,3,90,3,110,101,119,90,3,
111,108,100,114,52,0,0,0,114,4,0,0,0,114,4,0,
0,0,114,5,0,0,0,218,5,95,119,114,97,112,127,1,
0,0,114,5,0,0,0,218,5,95,119,114,97,112,128,1,
0,0,115,8,0,0,0,0,1,25,1,15,1,29,1,122,
26,95,99,104,101,99,107,95,110,97,109,101,46,60,108,111,
99,97,108,115,62,46,95,119,114,97,112,41,3,218,10,95,
@ -581,7 +581,7 @@ const unsigned char _Py_M__importlib_external[] = {
78,97,109,101,69,114,114,111,114,41,3,114,102,0,0,0,
114,103,0,0,0,114,113,0,0,0,114,4,0,0,0,41,
1,114,102,0,0,0,114,5,0,0,0,218,11,95,99,104,
101,99,107,95,110,97,109,101,108,1,0,0,115,14,0,0,
101,99,107,95,110,97,109,101,109,1,0,0,115,14,0,0,
0,0,8,21,7,3,1,13,1,13,2,17,5,13,1,114,
116,0,0,0,99,2,0,0,0,0,0,0,0,5,0,0,
0,4,0,0,0,67,0,0,0,115,84,0,0,0,124,0,
@ -611,7 +611,7 @@ const unsigned char _Py_M__importlib_external[] = {
218,8,112,111,114,116,105,111,110,115,218,3,109,115,103,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,17,
95,102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,
109,136,1,0,0,115,10,0,0,0,0,10,21,1,24,1,
109,137,1,0,0,115,10,0,0,0,0,10,21,1,24,1,
6,1,29,1,114,123,0,0,0,99,4,0,0,0,0,0,
0,0,11,0,0,0,19,0,0,0,67,0,0,0,115,252,
1,0,0,105,0,0,125,4,0,124,2,0,100,1,0,107,
@ -698,7 +698,7 @@ const unsigned char _Py_M__importlib_external[] = {
218,11,115,111,117,114,99,101,95,115,105,122,101,114,4,0,
0,0,114,4,0,0,0,114,5,0,0,0,218,25,95,118,
97,108,105,100,97,116,101,95,98,121,116,101,99,111,100,101,
95,104,101,97,100,101,114,153,1,0,0,115,76,0,0,0,
95,104,101,97,100,101,114,154,1,0,0,115,76,0,0,0,
0,11,6,1,12,1,13,3,6,1,12,1,10,1,16,1,
16,1,16,1,12,1,18,1,16,1,18,1,18,1,15,1,
16,1,15,1,18,1,15,1,16,1,12,1,12,1,3,1,
@ -729,7 +729,7 @@ const unsigned char _Py_M__importlib_external[] = {
5,114,53,0,0,0,114,98,0,0,0,114,89,0,0,0,
114,90,0,0,0,218,4,99,111,100,101,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,218,17,95,99,111,109,
112,105,108,101,95,98,121,116,101,99,111,100,101,208,1,0,
112,105,108,101,95,98,121,116,101,99,111,100,101,209,1,0,
0,115,16,0,0,0,0,2,15,1,15,1,16,1,12,1,
16,1,4,2,18,1,114,141,0,0,0,114,59,0,0,0,
99,3,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
@ -749,7 +749,7 @@ const unsigned char _Py_M__importlib_external[] = {
100,117,109,112,115,41,4,114,140,0,0,0,114,126,0,0,
0,114,134,0,0,0,114,53,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,218,17,95,99,111,100,
101,95,116,111,95,98,121,116,101,99,111,100,101,220,1,0,
101,95,116,111,95,98,121,116,101,99,111,100,101,221,1,0,
0,115,10,0,0,0,0,3,12,1,19,1,19,1,22,1,
114,144,0,0,0,99,1,0,0,0,0,0,0,0,5,0,
0,0,4,0,0,0,67,0,0,0,115,89,0,0,0,100,
@ -778,7 +778,7 @@ const unsigned char _Py_M__importlib_external[] = {
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,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,218,13,100,101,99,111,
100,101,95,115,111,117,114,99,101,230,1,0,0,115,10,0,
100,101,95,115,111,117,114,99,101,231,1,0,0,115,10,0,
0,0,0,5,12,1,18,1,15,1,18,1,114,149,0,0,
0,114,120,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,
@ -843,7 +843,7 @@ const unsigned char _Py_M__importlib_external[] = {
102,105,120,101,115,114,153,0,0,0,90,7,100,105,114,110,
97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,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,247,1,0,0,115,
108,101,95,108,111,99,97,116,105,111,110,248,1,0,0,115,
60,0,0,0,0,12,12,4,6,1,15,2,3,1,19,1,
13,1,5,8,24,1,9,3,12,1,22,1,21,1,15,1,
9,1,5,2,4,3,12,2,15,1,3,1,19,1,13,1,
@ -883,7 +883,7 @@ const unsigned char _Py_M__importlib_external[] = {
72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,73,
78,69,41,2,218,3,99,108,115,218,3,107,101,121,114,4,
0,0,0,114,4,0,0,0,114,5,0,0,0,218,14,95,
111,112,101,110,95,114,101,103,105,115,116,114,121,69,2,0,
111,112,101,110,95,114,101,103,105,115,116,114,121,70,2,0,
0,115,8,0,0,0,0,2,3,1,23,1,13,1,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,
@ -910,7 +910,7 @@ const unsigned char _Py_M__importlib_external[] = {
121,95,107,101,121,114,165,0,0,0,90,4,104,107,101,121,
218,8,102,105,108,101,112,97,116,104,114,4,0,0,0,114,
4,0,0,0,114,5,0,0,0,218,16,95,115,101,97,114,
99,104,95,114,101,103,105,115,116,114,121,76,2,0,0,115,
99,104,95,114,101,103,105,115,116,114,121,77,2,0,0,115,
22,0,0,0,0,2,9,1,12,2,9,1,15,1,22,1,
3,1,18,1,29,1,13,1,9,1,122,38,87,105,110,100,
111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,
@ -935,7 +935,7 @@ const unsigned char _Py_M__importlib_external[] = {
103,101,116,114,171,0,0,0,114,120,0,0,0,114,160,0,
0,0,114,158,0,0,0,114,4,0,0,0,114,4,0,0,
0,114,5,0,0,0,218,9,102,105,110,100,95,115,112,101,
99,91,2,0,0,115,26,0,0,0,0,2,15,1,12,1,
99,92,2,0,0,115,26,0,0,0,0,2,15,1,12,1,
4,1,3,1,14,1,13,1,9,1,22,1,21,1,9,1,
15,1,9,1,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,
@ -954,7 +954,7 @@ const unsigned char _Py_M__importlib_external[] = {
175,0,0,0,114,120,0,0,0,41,4,114,164,0,0,0,
114,119,0,0,0,114,35,0,0,0,114,158,0,0,0,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,11,
102,105,110,100,95,109,111,100,117,108,101,107,2,0,0,115,
102,105,110,100,95,109,111,100,117,108,101,108,2,0,0,115,
8,0,0,0,0,7,18,1,12,1,7,2,122,33,87,105,
110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,
100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,41,
@ -963,7 +963,7 @@ const unsigned char _Py_M__importlib_external[] = {
167,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111,
100,114,166,0,0,0,114,172,0,0,0,114,175,0,0,0,
114,176,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
4,0,0,0,114,5,0,0,0,114,162,0,0,0,57,2,
4,0,0,0,114,5,0,0,0,114,162,0,0,0,58,2,
0,0,115,20,0,0,0,12,2,6,3,6,3,6,2,6,
2,18,7,18,15,3,1,21,15,3,1,114,162,0,0,0,
99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
@ -1001,7 +1001,7 @@ const unsigned char _Py_M__importlib_external[] = {
100,0,0,0,114,119,0,0,0,114,94,0,0,0,90,13,
102,105,108,101,110,97,109,101,95,98,97,115,101,90,9,116,
97,105,108,95,110,97,109,101,114,4,0,0,0,114,4,0,
0,0,114,5,0,0,0,114,153,0,0,0,126,2,0,0,
0,0,114,5,0,0,0,114,153,0,0,0,127,2,0,0,
115,8,0,0,0,0,3,25,1,22,1,19,1,122,24,95,
76,111,97,100,101,114,66,97,115,105,99,115,46,105,115,95,
112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0,
@ -1012,7 +1012,7 @@ const unsigned char _Py_M__importlib_external[] = {
111,110,46,78,114,4,0,0,0,41,2,114,100,0,0,0,
114,158,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
5,0,0,0,218,13,99,114,101,97,116,101,95,109,111,100,
117,108,101,134,2,0,0,115,0,0,0,0,122,27,95,76,
117,108,101,135,2,0,0,115,0,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,3,0,0,0,4,0,0,0,67,0,0,0,115,80,
@ -1033,7 +1033,7 @@ const unsigned char _Py_M__importlib_external[] = {
101,99,114,111,0,0,0,41,3,114,100,0,0,0,218,6,
109,111,100,117,108,101,114,140,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,218,11,101,120,101,99,
95,109,111,100,117,108,101,137,2,0,0,115,10,0,0,0,
95,109,111,100,117,108,101,138,2,0,0,115,10,0,0,0,
0,2,18,1,12,1,9,1,15,1,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,2,0,
@ -1044,14 +1044,14 @@ const unsigned char _Py_M__importlib_external[] = {
114,0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,
108,101,95,115,104,105,109,41,2,114,100,0,0,0,114,119,
0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,145,
0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,146,
2,0,0,115,2,0,0,0,0,2,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,105,0,0,0,114,104,0,
0,0,114,106,0,0,0,114,107,0,0,0,114,153,0,0,
0,114,180,0,0,0,114,185,0,0,0,114,187,0,0,0,
114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
5,0,0,0,114,178,0,0,0,121,2,0,0,115,10,0,
5,0,0,0,114,178,0,0,0,122,2,0,0,115,10,0,
0,0,12,3,6,2,12,8,12,3,12,8,114,178,0,0,
0,99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,
0,0,64,0,0,0,115,106,0,0,0,101,0,0,90,1,
@ -1079,7 +1079,7 @@ const unsigned char _Py_M__importlib_external[] = {
41,1,218,7,73,79,69,114,114,111,114,41,2,114,100,0,
0,0,114,35,0,0,0,114,4,0,0,0,114,4,0,0,
0,114,5,0,0,0,218,10,112,97,116,104,95,109,116,105,
109,101,152,2,0,0,115,2,0,0,0,0,6,122,23,83,
109,101,153,2,0,0,115,2,0,0,0,0,6,122,23,83,
111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104,
95,109,116,105,109,101,99,2,0,0,0,0,0,0,0,2,
0,0,0,3,0,0,0,67,0,0,0,115,19,0,0,0,
@ -1114,7 +1114,7 @@ const unsigned char _Py_M__importlib_external[] = {
32,32,32,32,114,126,0,0,0,41,1,114,190,0,0,0,
41,2,114,100,0,0,0,114,35,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,218,10,112,97,116,
104,95,115,116,97,116,115,160,2,0,0,115,2,0,0,0,
104,95,115,116,97,116,115,161,2,0,0,115,2,0,0,0,
0,11,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,4,0,0,0,3,0,0,0,67,0,0,0,
@ -1138,7 +1138,7 @@ const unsigned char _Py_M__importlib_external[] = {
114,90,0,0,0,90,10,99,97,99,104,101,95,112,97,116,
104,114,53,0,0,0,114,4,0,0,0,114,4,0,0,0,
114,5,0,0,0,218,15,95,99,97,99,104,101,95,98,121,
116,101,99,111,100,101,173,2,0,0,115,2,0,0,0,0,
116,101,99,111,100,101,174,2,0,0,115,2,0,0,0,0,
8,122,28,83,111,117,114,99,101,76,111,97,100,101,114,46,
95,99,97,99,104,101,95,98,121,116,101,99,111,100,101,99,
3,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,
@ -1155,7 +1155,7 @@ const unsigned char _Py_M__importlib_external[] = {
32,32,32,32,32,32,32,78,114,4,0,0,0,41,3,114,
100,0,0,0,114,35,0,0,0,114,53,0,0,0,114,4,
0,0,0,114,4,0,0,0,114,5,0,0,0,114,192,0,
0,0,183,2,0,0,115,0,0,0,0,122,21,83,111,117,
0,0,184,2,0,0,115,0,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,5,0,0,0,16,
0,0,0,67,0,0,0,115,105,0,0,0,124,0,0,106,
@ -1177,7 +1177,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,114,119,0,0,0,114,35,0,0,0,114,147,0,
0,0,218,3,101,120,99,114,4,0,0,0,114,4,0,0,
0,114,5,0,0,0,218,10,103,101,116,95,115,111,117,114,
99,101,190,2,0,0,115,14,0,0,0,0,2,15,1,3,
99,101,191,2,0,0,115,14,0,0,0,0,2,15,1,3,
1,19,1,18,1,9,1,31,1,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,218,9,95,111,112,116,105,109,105,122,101,114,29,0,
@ -1199,7 +1199,7 @@ const unsigned char _Py_M__importlib_external[] = {
108,101,41,4,114,100,0,0,0,114,53,0,0,0,114,35,
0,0,0,114,197,0,0,0,114,4,0,0,0,114,4,0,
0,0,114,5,0,0,0,218,14,115,111,117,114,99,101,95,
116,111,95,99,111,100,101,200,2,0,0,115,4,0,0,0,
116,111,95,99,111,100,101,201,2,0,0,115,4,0,0,0,
0,5,21,1,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,10,0,0,0,43,0,
@ -1260,7 +1260,7 @@ const unsigned char _Py_M__importlib_external[] = {
89,0,0,0,218,2,115,116,114,53,0,0,0,218,10,98,
121,116,101,115,95,100,97,116,97,114,147,0,0,0,90,11,
99,111,100,101,95,111,98,106,101,99,116,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,114,181,0,0,0,208,
114,4,0,0,0,114,5,0,0,0,114,181,0,0,0,209,
2,0,0,115,78,0,0,0,0,7,15,1,6,1,3,1,
16,1,13,1,11,2,3,1,19,1,13,1,5,2,16,1,
3,1,19,1,13,1,5,2,3,1,9,1,12,1,13,1,
@ -1273,7 +1273,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,114,192,0,0,0,114,196,0,0,0,114,200,0,
0,0,114,181,0,0,0,114,4,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,188,0,0,0,
150,2,0,0,115,14,0,0,0,12,2,12,8,12,13,12,
151,2,0,0,115,14,0,0,0,12,2,12,8,12,13,12,
10,12,7,12,10,18,8,114,188,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,112,0,0,0,101,0,0,90,1,0,100,0,0,90,
@ -1301,7 +1301,7 @@ const unsigned char _Py_M__importlib_external[] = {
32,32,32,32,32,102,105,110,100,101,114,46,78,41,2,114,
98,0,0,0,114,35,0,0,0,41,3,114,100,0,0,0,
114,119,0,0,0,114,35,0,0,0,114,4,0,0,0,114,
4,0,0,0,114,5,0,0,0,114,179,0,0,0,9,3,
4,0,0,0,114,5,0,0,0,114,179,0,0,0,10,3,
0,0,115,4,0,0,0,0,3,9,1,122,19,70,105,108,
101,76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,
99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,
@ -1311,7 +1311,7 @@ const unsigned char _Py_M__importlib_external[] = {
2,218,9,95,95,99,108,97,115,115,95,95,114,111,0,0,
0,41,2,114,100,0,0,0,218,5,111,116,104,101,114,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,6,
95,95,101,113,95,95,15,3,0,0,115,4,0,0,0,0,
95,95,101,113,95,95,16,3,0,0,115,4,0,0,0,0,
1,18,1,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,1,
0,0,0,3,0,0,0,67,0,0,0,115,26,0,0,0,
@ -1319,7 +1319,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,106,2,0,131,1,0,65,83,41,1,78,41,3,218,
4,104,97,115,104,114,98,0,0,0,114,35,0,0,0,41,
1,114,100,0,0,0,114,4,0,0,0,114,4,0,0,0,
114,5,0,0,0,218,8,95,95,104,97,115,104,95,95,19,
114,5,0,0,0,218,8,95,95,104,97,115,104,95,95,20,
3,0,0,115,2,0,0,0,0,1,122,19,70,105,108,101,
76,111,97,100,101,114,46,95,95,104,97,115,104,95,95,99,
2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
@ -1334,7 +1334,7 @@ const unsigned char _Py_M__importlib_external[] = {
32,32,32,32,32,32,32,41,3,218,5,115,117,112,101,114,
114,204,0,0,0,114,187,0,0,0,41,2,114,100,0,0,
0,114,119,0,0,0,41,1,114,205,0,0,0,114,4,0,
0,0,114,5,0,0,0,114,187,0,0,0,22,3,0,0,
0,0,114,5,0,0,0,114,187,0,0,0,23,3,0,0,
115,2,0,0,0,0,10,122,22,70,105,108,101,76,111,97,
100,101,114,46,108,111,97,100,95,109,111,100,117,108,101,99,
2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,
@ -1345,7 +1345,7 @@ const unsigned char _Py_M__importlib_external[] = {
98,121,32,116,104,101,32,102,105,110,100,101,114,46,41,1,
114,35,0,0,0,41,2,114,100,0,0,0,114,119,0,0,
0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
114,151,0,0,0,34,3,0,0,115,2,0,0,0,0,3,
114,151,0,0,0,35,3,0,0,115,2,0,0,0,0,3,
122,23,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
95,102,105,108,101,110,97,109,101,99,2,0,0,0,0,0,
0,0,3,0,0,0,9,0,0,0,67,0,0,0,115,42,
@ -1358,14 +1358,14 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,114,50,0,0,0,90,4,114,101,97,100,41,3,
114,100,0,0,0,114,35,0,0,0,114,54,0,0,0,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,194,
0,0,0,39,3,0,0,115,4,0,0,0,0,2,21,1,
0,0,0,40,3,0,0,115,4,0,0,0,0,2,21,1,
122,19,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
95,100,97,116,97,41,11,114,105,0,0,0,114,104,0,0,
0,114,106,0,0,0,114,107,0,0,0,114,179,0,0,0,
114,207,0,0,0,114,209,0,0,0,114,116,0,0,0,114,
187,0,0,0,114,151,0,0,0,114,194,0,0,0,114,4,
0,0,0,114,4,0,0,0,41,1,114,205,0,0,0,114,
5,0,0,0,114,204,0,0,0,4,3,0,0,115,14,0,
5,0,0,0,114,204,0,0,0,5,3,0,0,115,14,0,
0,0,12,3,6,2,12,6,12,4,12,3,24,12,18,5,
114,204,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
0,0,4,0,0,0,64,0,0,0,115,64,0,0,0,101,
@ -1388,7 +1388,7 @@ const unsigned char _Py_M__importlib_external[] = {
114,39,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,100,0,0,0,114,
35,0,0,0,114,202,0,0,0,114,4,0,0,0,114,4,
0,0,0,114,5,0,0,0,114,191,0,0,0,49,3,0,
0,0,0,114,5,0,0,0,114,191,0,0,0,50,3,0,
0,115,4,0,0,0,0,2,12,1,122,27,83,111,117,114,
99,101,70,105,108,101,76,111,97,100,101,114,46,112,97,116,
104,95,115,116,97,116,115,99,4,0,0,0,0,0,0,0,
@ -1399,7 +1399,7 @@ const unsigned char _Py_M__importlib_external[] = {
97,0,0,0,114,192,0,0,0,41,5,114,100,0,0,0,
114,90,0,0,0,114,89,0,0,0,114,53,0,0,0,114,
42,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
0,0,0,114,193,0,0,0,54,3,0,0,115,4,0,0,
0,0,0,114,193,0,0,0,55,3,0,0,115,4,0,0,
0,0,2,12,1,122,32,83,111,117,114,99,101,70,105,108,
101,76,111,97,100,101,114,46,95,99,97,99,104,101,95,98,
121,116,101,99,111,100,101,114,214,0,0,0,105,182,1,0,
@ -1438,7 +1438,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,114,214,0,0,0,218,6,112,97,114,101,110,116,114,94,
0,0,0,114,27,0,0,0,114,23,0,0,0,114,195,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
0,114,192,0,0,0,59,3,0,0,115,42,0,0,0,0,
0,114,192,0,0,0,60,3,0,0,115,42,0,0,0,0,
2,18,1,6,2,22,1,18,1,17,2,19,1,15,1,3,
1,17,1,13,2,7,1,18,3,9,1,10,1,27,1,3,
1,16,1,20,1,18,2,12,1,122,25,83,111,117,114,99,
@ -1447,7 +1447,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,114,106,0,0,0,114,107,0,0,0,114,191,0,0,0,
114,193,0,0,0,114,192,0,0,0,114,4,0,0,0,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,212,
0,0,0,45,3,0,0,115,8,0,0,0,12,2,6,2,
0,0,0,46,3,0,0,115,8,0,0,0,12,2,6,2,
12,5,12,5,114,212,0,0,0,99,0,0,0,0,0,0,
0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,46,
0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,
@ -1469,7 +1469,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,114,141,0,0,0,41,5,114,100,0,0,0,114,119,0,
0,0,114,35,0,0,0,114,53,0,0,0,114,203,0,0,
0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
114,181,0,0,0,94,3,0,0,115,8,0,0,0,0,1,
114,181,0,0,0,95,3,0,0,115,8,0,0,0,0,1,
15,1,15,1,24,1,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,2,0,
@ -1479,13 +1479,13 @@ const unsigned char _Py_M__importlib_external[] = {
111,32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,
4,0,0,0,41,2,114,100,0,0,0,114,119,0,0,0,
114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
196,0,0,0,100,3,0,0,115,2,0,0,0,0,2,122,
196,0,0,0,101,3,0,0,115,2,0,0,0,0,2,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,105,0,0,0,114,104,0,0,0,114,106,0,
0,0,114,107,0,0,0,114,181,0,0,0,114,196,0,0,
0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,
114,5,0,0,0,114,217,0,0,0,90,3,0,0,115,6,
114,5,0,0,0,114,217,0,0,0,91,3,0,0,115,6,
0,0,0,12,2,6,2,12,6,114,217,0,0,0,99,0,
0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,
0,0,0,115,136,0,0,0,101,0,0,90,1,0,100,0,
@ -1510,7 +1510,7 @@ const unsigned char _Py_M__importlib_external[] = {
1,0,100,0,0,83,41,1,78,41,2,114,98,0,0,0,
114,35,0,0,0,41,3,114,100,0,0,0,114,98,0,0,
0,114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,
114,5,0,0,0,114,179,0,0,0,117,3,0,0,115,4,
114,5,0,0,0,114,179,0,0,0,118,3,0,0,115,4,
0,0,0,0,1,9,1,122,28,69,120,116,101,110,115,105,
111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,105,
110,105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,
@ -1520,7 +1520,7 @@ const unsigned char _Py_M__importlib_external[] = {
83,41,1,78,41,2,114,205,0,0,0,114,111,0,0,0,
41,2,114,100,0,0,0,114,206,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,207,0,0,0,
121,3,0,0,115,4,0,0,0,0,1,18,1,122,26,69,
122,3,0,0,115,4,0,0,0,0,1,18,1,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,1,0,0,0,3,0,0,0,67,0,0,0,115,26,
@ -1528,7 +1528,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,124,0,0,106,2,0,131,1,0,65,83,41,1,78,
41,3,114,208,0,0,0,114,98,0,0,0,114,35,0,0,
0,41,1,114,100,0,0,0,114,4,0,0,0,114,4,0,
0,0,114,5,0,0,0,114,209,0,0,0,125,3,0,0,
0,0,114,5,0,0,0,114,209,0,0,0,126,3,0,0,
115,2,0,0,0,0,1,122,28,69,120,116,101,110,115,105,
111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,104,
97,115,104,95,95,99,2,0,0,0,0,0,0,0,3,0,
@ -1546,7 +1546,7 @@ const unsigned char _Py_M__importlib_external[] = {
97,109,105,99,114,129,0,0,0,114,98,0,0,0,114,35,
0,0,0,41,3,114,100,0,0,0,114,158,0,0,0,114,
184,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
0,0,0,114,180,0,0,0,128,3,0,0,115,10,0,0,
0,0,0,114,180,0,0,0,129,3,0,0,115,10,0,0,
0,0,2,6,1,15,1,9,1,16,1,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,
@ -1564,7 +1564,7 @@ const unsigned char _Py_M__importlib_external[] = {
97,109,105,99,114,129,0,0,0,114,98,0,0,0,114,35,
0,0,0,41,2,114,100,0,0,0,114,184,0,0,0,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,185,
0,0,0,136,3,0,0,115,6,0,0,0,0,2,19,1,
0,0,0,137,3,0,0,115,6,0,0,0,0,2,19,1,
9,1,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,2,0,0,0,
@ -1582,7 +1582,7 @@ const unsigned char _Py_M__importlib_external[] = {
41,2,114,179,0,0,0,78,114,4,0,0,0,41,2,114,
22,0,0,0,218,6,115,117,102,102,105,120,41,1,218,9,
102,105,108,101,95,110,97,109,101,114,4,0,0,0,114,5,
0,0,0,250,9,60,103,101,110,101,120,112,114,62,145,3,
0,0,0,250,9,60,103,101,110,101,120,112,114,62,146,3,
0,0,115,2,0,0,0,6,1,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,
@ -1591,7 +1591,7 @@ const unsigned char _Py_M__importlib_external[] = {
88,84,69,78,83,73,79,78,95,83,85,70,70,73,88,69,
83,41,2,114,100,0,0,0,114,119,0,0,0,114,4,0,
0,0,41,1,114,220,0,0,0,114,5,0,0,0,114,153,
0,0,0,142,3,0,0,115,6,0,0,0,0,2,19,1,
0,0,0,143,3,0,0,115,6,0,0,0,0,2,19,1,
18,1,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,2,0,0,0,1,
@ -1602,7 +1602,7 @@ const unsigned char _Py_M__importlib_external[] = {
101,97,116,101,32,97,32,99,111,100,101,32,111,98,106,101,
99,116,46,78,114,4,0,0,0,41,2,114,100,0,0,0,
114,119,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
5,0,0,0,114,181,0,0,0,148,3,0,0,115,2,0,
5,0,0,0,114,181,0,0,0,149,3,0,0,115,2,0,
0,0,0,2,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,2,0,0,0,1,
@ -1612,7 +1612,7 @@ const unsigned char _Py_M__importlib_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,4,0,0,0,41,
2,114,100,0,0,0,114,119,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,114,196,0,0,0,152,
114,4,0,0,0,114,5,0,0,0,114,196,0,0,0,153,
3,0,0,115,2,0,0,0,0,2,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,
@ -1624,7 +1624,7 @@ const unsigned char _Py_M__importlib_external[] = {
101,32,102,105,110,100,101,114,46,41,1,114,35,0,0,0,
41,2,114,100,0,0,0,114,119,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,151,0,0,0,
156,3,0,0,115,2,0,0,0,0,3,122,32,69,120,116,
157,3,0,0,115,2,0,0,0,0,3,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,105,0,0,0,114,104,0,0,0,114,106,0,0,0,114,
@ -1632,7 +1632,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,114,180,0,0,0,114,185,0,0,0,114,153,0,
0,0,114,181,0,0,0,114,196,0,0,0,114,116,0,0,
0,114,151,0,0,0,114,4,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,114,218,0,0,0,109,
114,4,0,0,0,114,5,0,0,0,114,218,0,0,0,110,
3,0,0,115,20,0,0,0,12,6,6,2,12,4,12,4,
12,3,12,8,12,6,12,6,12,4,12,4,114,218,0,0,
0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
@ -1677,7 +1677,7 @@ const unsigned char _Py_M__importlib_external[] = {
100,101,114,41,4,114,100,0,0,0,114,98,0,0,0,114,
35,0,0,0,218,11,112,97,116,104,95,102,105,110,100,101,
114,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
114,179,0,0,0,169,3,0,0,115,8,0,0,0,0,1,
114,179,0,0,0,170,3,0,0,115,8,0,0,0,0,1,
9,1,9,1,21,1,122,23,95,78,97,109,101,115,112,97,
99,101,80,97,116,104,46,95,95,105,110,105,116,95,95,99,
1,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
@ -1696,7 +1696,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,218,3,100,111,116,90,2,109,101,114,4,0,0,
0,114,4,0,0,0,114,5,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,175,3,0,0,115,8,0,0,0,0,2,27,
97,109,101,115,176,3,0,0,115,8,0,0,0,0,2,27,
1,12,2,4,3,122,38,95,78,97,109,101,115,112,97,99,
101,80,97,116,104,46,95,102,105,110,100,95,112,97,114,101,
110,116,95,112,97,116,104,95,110,97,109,101,115,99,1,0,
@ -1709,7 +1709,7 @@ const unsigned char _Py_M__importlib_external[] = {
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,114,4,0,0,0,114,4,0,0,0,114,
5,0,0,0,114,227,0,0,0,185,3,0,0,115,4,0,
5,0,0,0,114,227,0,0,0,186,3,0,0,115,4,0,
0,0,0,1,18,1,122,31,95,78,97,109,101,115,112,97,
99,101,80,97,116,104,46,95,103,101,116,95,112,97,114,101,
110,116,95,112,97,116,104,99,1,0,0,0,0,0,0,0,
@ -1727,7 +1727,7 @@ const unsigned char _Py_M__importlib_external[] = {
226,0,0,0,41,3,114,100,0,0,0,90,11,112,97,114,
101,110,116,95,112,97,116,104,114,158,0,0,0,114,4,0,
0,0,114,4,0,0,0,114,5,0,0,0,218,12,95,114,
101,99,97,108,99,117,108,97,116,101,189,3,0,0,115,16,
101,99,97,108,99,117,108,97,116,101,190,3,0,0,115,16,
0,0,0,0,2,18,1,15,1,21,3,27,1,9,1,12,
1,9,1,122,27,95,78,97,109,101,115,112,97,99,101,80,
97,116,104,46,95,114,101,99,97,108,99,117,108,97,116,101,
@ -1736,7 +1736,7 @@ const unsigned char _Py_M__importlib_external[] = {
106,1,0,131,0,0,131,1,0,83,41,1,78,41,2,218,
4,105,116,101,114,114,234,0,0,0,41,1,114,100,0,0,
0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
218,8,95,95,105,116,101,114,95,95,202,3,0,0,115,2,
218,8,95,95,105,116,101,114,95,95,203,3,0,0,115,2,
0,0,0,0,1,122,23,95,78,97,109,101,115,112,97,99,
101,80,97,116,104,46,95,95,105,116,101,114,95,95,99,1,
0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,
@ -1744,7 +1744,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,131,0,0,131,1,0,83,41,1,78,41,2,114,31,0,
0,0,114,234,0,0,0,41,1,114,100,0,0,0,114,4,
0,0,0,114,4,0,0,0,114,5,0,0,0,218,7,95,
95,108,101,110,95,95,205,3,0,0,115,2,0,0,0,0,
95,108,101,110,95,95,206,3,0,0,115,2,0,0,0,0,
1,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,1,0,0,0,2,0,0,0,67,0,0,0,115,16,
@ -1753,7 +1753,7 @@ const unsigned char _Py_M__importlib_external[] = {
99,101,80,97,116,104,40,123,33,114,125,41,41,2,114,47,
0,0,0,114,226,0,0,0,41,1,114,100,0,0,0,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,8,
95,95,114,101,112,114,95,95,208,3,0,0,115,2,0,0,
95,95,114,101,112,114,95,95,209,3,0,0,115,2,0,0,
0,0,1,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,2,0,0,0,2,0,0,0,67,0,0,
@ -1761,7 +1761,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,107,6,0,83,41,1,78,41,1,114,234,0,0,0,
41,2,114,100,0,0,0,218,4,105,116,101,109,114,4,0,
0,0,114,4,0,0,0,114,5,0,0,0,218,12,95,95,
99,111,110,116,97,105,110,115,95,95,211,3,0,0,115,2,
99,111,110,116,97,105,110,115,95,95,212,3,0,0,115,2,
0,0,0,0,1,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,2,0,0,0,2,
@ -1769,7 +1769,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,106,1,0,124,1,0,131,1,0,1,100,0,0,83,
41,1,78,41,2,114,226,0,0,0,114,157,0,0,0,41,
2,114,100,0,0,0,114,239,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,114,157,0,0,0,214,
114,4,0,0,0,114,5,0,0,0,114,157,0,0,0,215,
3,0,0,115,2,0,0,0,0,1,122,21,95,78,97,109,
101,115,112,97,99,101,80,97,116,104,46,97,112,112,101,110,
100,78,41,13,114,105,0,0,0,114,104,0,0,0,114,106,
@ -1777,7 +1777,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,114,227,0,0,0,114,234,0,0,0,114,236,0,0,
0,114,237,0,0,0,114,238,0,0,0,114,240,0,0,0,
114,157,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
4,0,0,0,114,5,0,0,0,114,224,0,0,0,162,3,
4,0,0,0,114,5,0,0,0,114,224,0,0,0,163,3,
0,0,115,20,0,0,0,12,5,6,2,12,6,12,10,12,
4,12,13,12,3,12,3,12,3,12,3,114,224,0,0,0,
99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
@ -1797,7 +1797,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,114,226,0,0,0,41,4,114,100,0,0,0,114,98,0,
0,0,114,35,0,0,0,114,230,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,179,0,0,0,
220,3,0,0,115,2,0,0,0,0,1,122,25,95,78,97,
221,3,0,0,115,2,0,0,0,0,1,122,25,95,78,97,
109,101,115,112,97,99,101,76,111,97,100,101,114,46,95,95,
105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,2,
0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,
@ -1814,21 +1814,21 @@ const unsigned char _Py_M__importlib_external[] = {
41,62,41,2,114,47,0,0,0,114,105,0,0,0,41,2,
114,164,0,0,0,114,184,0,0,0,114,4,0,0,0,114,
4,0,0,0,114,5,0,0,0,218,11,109,111,100,117,108,
101,95,114,101,112,114,223,3,0,0,115,2,0,0,0,0,
101,95,114,101,112,114,224,3,0,0,115,2,0,0,0,0,
7,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,2,0,0,0,1,0,0,0,
67,0,0,0,115,4,0,0,0,100,1,0,83,41,2,78,
84,114,4,0,0,0,41,2,114,100,0,0,0,114,119,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
0,114,153,0,0,0,232,3,0,0,115,2,0,0,0,0,
0,114,153,0,0,0,233,3,0,0,115,2,0,0,0,0,
1,122,27,95,78,97,109,101,115,112,97,99,101,76,111,97,
100,101,114,46,105,115,95,112,97,99,107,97,103,101,99,2,
0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,
0,0,0,115,4,0,0,0,100,1,0,83,41,2,78,114,
30,0,0,0,114,4,0,0,0,41,2,114,100,0,0,0,
114,119,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
5,0,0,0,114,196,0,0,0,235,3,0,0,115,2,0,
5,0,0,0,114,196,0,0,0,236,3,0,0,115,2,0,
0,0,0,1,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,2,0,0,0,6,0,
@ -1838,7 +1838,7 @@ const unsigned char _Py_M__importlib_external[] = {
110,103,62,114,183,0,0,0,114,198,0,0,0,84,41,1,
114,199,0,0,0,41,2,114,100,0,0,0,114,119,0,0,
0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
114,181,0,0,0,238,3,0,0,115,2,0,0,0,0,1,
114,181,0,0,0,239,3,0,0,115,2,0,0,0,0,1,
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,2,0,0,0,1,0,0,0,67,0,0,0,
@ -1847,14 +1847,14 @@ const unsigned char _Py_M__importlib_external[] = {
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,4,0,0,0,41,2,114,
100,0,0,0,114,158,0,0,0,114,4,0,0,0,114,4,
0,0,0,114,5,0,0,0,114,180,0,0,0,241,3,0,
0,0,0,114,5,0,0,0,114,180,0,0,0,242,3,0,
0,115,0,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,2,
0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,
100,0,0,83,41,1,78,114,4,0,0,0,41,2,114,100,
0,0,0,114,184,0,0,0,114,4,0,0,0,114,4,0,
0,0,114,5,0,0,0,114,185,0,0,0,244,3,0,0,
0,0,114,5,0,0,0,114,185,0,0,0,245,3,0,0,
115,2,0,0,0,0,1,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,2,0,
@ -1873,7 +1873,7 @@ const unsigned char _Py_M__importlib_external[] = {
41,4,114,114,0,0,0,114,129,0,0,0,114,226,0,0,
0,114,186,0,0,0,41,2,114,100,0,0,0,114,119,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
0,114,187,0,0,0,247,3,0,0,115,6,0,0,0,0,
0,114,187,0,0,0,248,3,0,0,115,6,0,0,0,0,
7,9,1,10,1,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,78,41,12,114,105,0,0,0,114,104,0,0,0,
@ -1881,7 +1881,7 @@ const unsigned char _Py_M__importlib_external[] = {
242,0,0,0,114,153,0,0,0,114,196,0,0,0,114,181,
0,0,0,114,180,0,0,0,114,185,0,0,0,114,187,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,
0,114,5,0,0,0,114,241,0,0,0,219,3,0,0,115,
0,114,5,0,0,0,114,241,0,0,0,220,3,0,0,115,
16,0,0,0,12,1,12,3,18,9,12,3,12,3,12,3,
12,3,12,3,114,241,0,0,0,99,0,0,0,0,0,0,
0,0,0,0,0,0,5,0,0,0,64,0,0,0,115,160,
@ -1919,7 +1919,7 @@ const unsigned char _Py_M__importlib_external[] = {
99,104,101,218,6,118,97,108,117,101,115,114,108,0,0,0,
114,244,0,0,0,41,2,114,164,0,0,0,218,6,102,105,
110,100,101,114,114,4,0,0,0,114,4,0,0,0,114,5,
0,0,0,114,244,0,0,0,9,4,0,0,115,6,0,0,
0,0,0,114,244,0,0,0,10,4,0,0,115,6,0,0,
0,0,4,22,1,15,1,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,2,0,0,0,0,0,0,0,3,0,
@ -1944,7 +1944,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,114,61,0,0,0,114,118,0,0,0,114,99,0,0,0,
41,3,114,164,0,0,0,114,35,0,0,0,90,4,104,111,
111,107,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
0,218,11,95,112,97,116,104,95,104,111,111,107,115,17,4,
0,218,11,95,112,97,116,104,95,104,111,111,107,115,18,4,
0,0,115,16,0,0,0,0,7,25,1,16,1,16,1,3,
1,14,1,13,1,12,2,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,
@ -1977,7 +1977,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,41,3,114,164,0,0,0,114,35,0,0,0,114,
247,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
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,34,4,0,0,115,22,0,
116,101,114,95,99,97,99,104,101,35,4,0,0,115,22,0,
0,0,0,8,12,1,3,1,16,1,13,3,9,1,3,1,
17,1,13,1,15,1,18,1,122,31,80,97,116,104,70,105,
110,100,101,114,46,95,112,97,116,104,95,105,109,112,111,114,
@ -1997,7 +1997,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,114,247,0,0,0,114,120,0,0,0,114,121,0,
0,0,114,158,0,0,0,114,4,0,0,0,114,4,0,0,
0,114,5,0,0,0,218,16,95,108,101,103,97,99,121,95,
103,101,116,95,115,112,101,99,56,4,0,0,115,18,0,0,
103,101,116,95,115,112,101,99,57,4,0,0,115,18,0,0,
0,0,4,15,1,24,2,15,1,6,1,12,1,16,1,18,
1,9,1,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,
@ -2033,7 +2033,7 @@ const unsigned char _Py_M__importlib_external[] = {
99,101,95,112,97,116,104,90,5,101,110,116,114,121,114,247,
0,0,0,114,158,0,0,0,114,121,0,0,0,114,4,0,
0,0,114,4,0,0,0,114,5,0,0,0,218,9,95,103,
101,116,95,115,112,101,99,71,4,0,0,115,40,0,0,0,
101,116,95,115,112,101,99,72,4,0,0,115,40,0,0,0,
0,5,6,1,13,1,21,1,3,1,15,1,12,1,15,1,
21,2,18,1,12,1,3,1,15,1,4,1,9,1,12,1,
12,5,17,2,18,1,9,1,122,20,80,97,116,104,70,105,
@ -2060,7 +2060,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,114,152,0,0,0,114,224,0,0,0,41,6,114,164,0,
0,0,114,119,0,0,0,114,35,0,0,0,114,174,0,0,
0,114,158,0,0,0,114,254,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,114,175,0,0,0,103,
114,4,0,0,0,114,5,0,0,0,114,175,0,0,0,104,
4,0,0,115,26,0,0,0,0,4,12,1,9,1,21,1,
12,1,4,1,15,1,9,1,6,3,9,1,24,1,4,2,
7,2,122,20,80,97,116,104,70,105,110,100,101,114,46,102,
@ -2083,7 +2083,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,114,120,0,0,0,41,4,114,164,0,0,0,114,119,0,
0,0,114,35,0,0,0,114,158,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,176,0,0,0,
125,4,0,0,115,8,0,0,0,0,8,18,1,12,1,4,
126,4,0,0,115,8,0,0,0,0,8,18,1,12,1,4,
1,122,22,80,97,116,104,70,105,110,100,101,114,46,102,105,
110,100,95,109,111,100,117,108,101,41,12,114,105,0,0,0,
114,104,0,0,0,114,106,0,0,0,114,107,0,0,0,114,
@ -2091,7 +2091,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,114,252,0,0,0,114,255,0,0,0,114,175,0,
0,0,114,176,0,0,0,114,4,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,243,0,0,0,
5,4,0,0,115,22,0,0,0,12,2,6,2,18,8,18,
6,4,0,0,115,22,0,0,0,12,2,6,2,18,8,18,
17,18,22,18,15,3,1,18,31,3,1,21,21,3,1,114,
243,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
0,3,0,0,0,64,0,0,0,115,133,0,0,0,101,0,
@ -2140,7 +2140,7 @@ const unsigned char _Py_M__importlib_external[] = {
3,0,100,0,0,83,41,1,78,114,4,0,0,0,41,2,
114,22,0,0,0,114,219,0,0,0,41,1,114,120,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,221,0,0,0,
154,4,0,0,115,2,0,0,0,6,0,122,38,70,105,108,
155,4,0,0,115,2,0,0,0,6,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,58,0,0,0,114,29,0,0,0,78,114,87,
@ -2152,7 +2152,7 @@ const unsigned char _Py_M__importlib_external[] = {
100,0,0,0,114,35,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,160,0,0,0,114,4,0,0,0,41,1,114,120,
0,0,0,114,5,0,0,0,114,179,0,0,0,148,4,0,
0,0,0,114,5,0,0,0,114,179,0,0,0,149,4,0,
0,115,16,0,0,0,0,4,6,1,19,1,36,1,9,2,
15,1,9,1,12,1,122,19,70,105,108,101,70,105,110,100,
101,114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,
@ -2163,7 +2163,7 @@ const unsigned char _Py_M__importlib_external[] = {
116,105,109,101,46,114,29,0,0,0,78,114,87,0,0,0,
41,1,114,2,1,0,0,41,1,114,100,0,0,0,114,4,
0,0,0,114,4,0,0,0,114,5,0,0,0,114,244,0,
0,0,162,4,0,0,115,2,0,0,0,0,2,122,28,70,
0,0,163,4,0,0,115,2,0,0,0,0,2,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,3,0,0,0,2,0,0,0,67,0,0,0,
@ -2187,7 +2187,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,114,120,0,0,0,114,150,0,0,0,41,3,114,100,0,
0,0,114,119,0,0,0,114,158,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,117,0,0,0,
168,4,0,0,115,8,0,0,0,0,7,15,1,12,1,10,
169,4,0,0,115,8,0,0,0,0,7,15,1,12,1,10,
1,122,22,70,105,108,101,70,105,110,100,101,114,46,102,105,
110,100,95,108,111,97,100,101,114,99,6,0,0,0,0,0,
0,0,7,0,0,0,7,0,0,0,67,0,0,0,115,40,
@ -2198,7 +2198,7 @@ const unsigned char _Py_M__importlib_external[] = {
7,114,100,0,0,0,114,159,0,0,0,114,119,0,0,0,
114,35,0,0,0,90,4,115,109,115,108,114,174,0,0,0,
114,120,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
5,0,0,0,114,255,0,0,0,180,4,0,0,115,6,0,
5,0,0,0,114,255,0,0,0,181,4,0,0,115,6,0,
0,0,0,1,15,1,18,1,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,14,0,0,0,15,0,0,0,
@ -2262,7 +2262,7 @@ const unsigned char _Py_M__importlib_external[] = {
110,105,116,95,102,105,108,101,110,97,109,101,90,9,102,117,
108,108,95,112,97,116,104,114,158,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,175,0,0,0,
185,4,0,0,115,70,0,0,0,0,3,6,1,19,1,3,
186,4,0,0,115,70,0,0,0,0,3,6,1,19,1,3,
1,34,1,13,1,11,1,15,1,10,1,9,2,9,1,9,
1,15,2,9,1,6,2,12,1,18,1,22,1,10,1,15,
1,12,1,32,4,12,2,22,1,22,1,22,1,16,1,12,
@ -2298,7 +2298,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,146,2,0,113,6,0,83,114,4,0,0,0,41,1,
114,88,0,0,0,41,2,114,22,0,0,0,90,2,102,110,
114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,250,
9,60,115,101,116,99,111,109,112,62,4,5,0,0,115,2,
9,60,115,101,116,99,111,109,112,62,5,5,0,0,115,2,
0,0,0,9,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,
@ -2315,7 +2315,7 @@ const unsigned char _Py_M__importlib_external[] = {
95,99,111,110,116,101,110,116,115,114,239,0,0,0,114,98,
0,0,0,114,231,0,0,0,114,219,0,0,0,90,8,110,
101,119,95,110,97,109,101,114,4,0,0,0,114,4,0,0,
0,114,5,0,0,0,114,7,1,0,0,231,4,0,0,115,
0,114,5,0,0,0,114,7,1,0,0,232,4,0,0,115,
34,0,0,0,0,2,9,1,3,1,31,1,22,3,11,3,
18,1,18,7,9,1,13,1,24,1,6,1,27,2,6,1,
17,1,9,1,18,1,122,22,70,105,108,101,70,105,110,100,
@ -2354,7 +2354,7 @@ const unsigned char _Py_M__importlib_external[] = {
0,0,0,41,1,114,35,0,0,0,41,2,114,164,0,0,
0,114,6,1,0,0,114,4,0,0,0,114,5,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,16,5,0,0,115,6,
70,105,108,101,70,105,110,100,101,114,17,5,0,0,115,6,
0,0,0,0,2,12,1,18,1,122,54,70,105,108,101,70,
105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,46,
60,108,111,99,97,108,115,62,46,112,97,116,104,95,104,111,
@ -2362,7 +2362,7 @@ const unsigned char _Py_M__importlib_external[] = {
114,114,4,0,0,0,41,3,114,164,0,0,0,114,6,1,
0,0,114,12,1,0,0,114,4,0,0,0,41,2,114,164,
0,0,0,114,6,1,0,0,114,5,0,0,0,218,9,112,
97,116,104,95,104,111,111,107,6,5,0,0,115,4,0,0,
97,116,104,95,104,111,111,107,7,5,0,0,115,4,0,0,
0,0,10,21,6,122,20,70,105,108,101,70,105,110,100,101,
114,46,112,97,116,104,95,104,111,111,107,99,1,0,0,0,
0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,
@ -2371,7 +2371,7 @@ const unsigned char _Py_M__importlib_external[] = {
110,100,101,114,40,123,33,114,125,41,41,2,114,47,0,0,
0,114,35,0,0,0,41,1,114,100,0,0,0,114,4,0,
0,0,114,4,0,0,0,114,5,0,0,0,114,238,0,0,
0,24,5,0,0,115,2,0,0,0,0,1,122,19,70,105,
0,25,5,0,0,115,2,0,0,0,0,1,122,19,70,105,
108,101,70,105,110,100,101,114,46,95,95,114,101,112,114,95,
95,41,15,114,105,0,0,0,114,104,0,0,0,114,106,0,
0,0,114,107,0,0,0,114,179,0,0,0,114,244,0,0,
@ -2379,7 +2379,7 @@ const unsigned char _Py_M__importlib_external[] = {
114,255,0,0,0,114,175,0,0,0,114,7,1,0,0,114,
177,0,0,0,114,13,1,0,0,114,238,0,0,0,114,4,
0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
0,0,114,0,1,0,0,139,4,0,0,115,20,0,0,0,
0,0,114,0,1,0,0,140,4,0,0,115,20,0,0,0,
12,7,6,2,12,14,12,4,6,2,12,12,12,5,15,46,
12,31,18,18,114,0,1,0,0,99,4,0,0,0,0,0,
0,0,6,0,0,0,11,0,0,0,67,0,0,0,115,195,
@ -2405,7 +2405,7 @@ const unsigned char _Py_M__importlib_external[] = {
104,110,97,109,101,90,9,99,112,97,116,104,110,97,109,101,
114,120,0,0,0,114,158,0,0,0,114,4,0,0,0,114,
4,0,0,0,114,5,0,0,0,218,14,95,102,105,120,95,
117,112,95,109,111,100,117,108,101,30,5,0,0,115,34,0,
117,112,95,109,111,100,117,108,101,31,5,0,0,115,34,0,
0,0,0,2,15,1,15,1,6,1,6,1,12,1,12,1,
18,2,15,1,6,1,21,1,3,1,10,1,10,1,10,1,
14,1,13,2,114,18,1,0,0,99,0,0,0,0,0,0,
@ -2426,7 +2426,7 @@ const unsigned char _Py_M__importlib_external[] = {
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,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
114,155,0,0,0,53,5,0,0,115,8,0,0,0,0,5,
114,155,0,0,0,54,5,0,0,115,8,0,0,0,0,5,
18,1,12,1,12,1,114,155,0,0,0,99,1,0,0,0,
0,0,0,0,12,0,0,0,12,0,0,0,67,0,0,0,
115,70,2,0,0,124,0,0,97,0,0,116,0,0,106,1,
@ -2488,7 +2488,7 @@ const unsigned char _Py_M__importlib_external[] = {
83,41,2,114,29,0,0,0,78,41,1,114,31,0,0,0,
41,2,114,22,0,0,0,114,77,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,5,0,0,0,114,221,0,0,0,
89,5,0,0,115,2,0,0,0,6,0,122,25,95,115,101,
90,5,0,0,115,2,0,0,0,6,0,122,25,95,115,101,
116,117,112,46,60,108,111,99,97,108,115,62,46,60,103,101,
110,101,120,112,114,62,114,59,0,0,0,122,30,105,109,112,
111,114,116,108,105,98,32,114,101,113,117,105,114,101,115,32,
@ -2518,7 +2518,7 @@ const unsigned char _Py_M__importlib_external[] = {
90,14,119,101,97,107,114,101,102,95,109,111,100,117,108,101,
90,13,119,105,110,114,101,103,95,109,111,100,117,108,101,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,6,
95,115,101,116,117,112,64,5,0,0,115,82,0,0,0,0,
95,115,101,116,117,112,65,5,0,0,115,82,0,0,0,0,
8,6,1,9,1,9,3,13,1,13,1,15,1,18,2,13,
1,20,3,33,1,19,2,31,1,10,1,15,1,13,1,4,
2,3,1,15,1,5,1,13,1,12,2,12,1,16,1,16,
@ -2544,7 +2544,7 @@ const unsigned char _Py_M__importlib_external[] = {
114,212,0,0,0,41,2,114,26,1,0,0,90,17,115,117,
112,112,111,114,116,101,100,95,108,111,97,100,101,114,115,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,8,
95,105,110,115,116,97,108,108,132,5,0,0,115,16,0,0,
95,105,110,115,116,97,108,108,133,5,0,0,115,16,0,0,
0,0,2,10,1,9,1,28,1,15,1,16,1,16,4,9,
1,114,29,1,0,0,41,3,122,3,119,105,110,114,1,0,
0,0,114,2,0,0,0,41,56,114,107,0,0,0,114,10,
@ -2571,11 +2571,12 @@ const unsigned char _Py_M__importlib_external[] = {
114,18,1,0,0,114,155,0,0,0,114,27,1,0,0,114,
29,1,0,0,114,4,0,0,0,114,4,0,0,0,114,4,
0,0,0,114,5,0,0,0,218,8,60,109,111,100,117,108,
101,62,8,0,0,0,115,98,0,0,0,6,17,6,3,12,
101,62,8,0,0,0,115,102,0,0,0,6,17,6,3,12,
12,12,5,12,5,12,6,12,12,12,10,12,9,12,5,12,
7,15,22,15,111,22,1,18,2,6,1,6,2,9,2,9,
7,15,22,15,112,22,1,18,2,6,1,6,2,9,2,9,
2,10,2,21,44,12,33,12,19,12,12,12,12,12,28,12,
17,21,55,21,12,18,10,12,14,9,3,12,1,15,65,19,
64,19,29,22,110,19,41,25,45,25,16,6,3,25,53,19,
57,19,42,19,134,19,147,15,23,12,11,12,68,
57,19,42,19,127,0,7,19,127,0,20,15,23,12,11,12,
68,
};

View file

@ -346,19 +346,19 @@ markblocks(unsigned char *code, Py_ssize_t len)
single basic block. All transformations keep the code size the same or
smaller. For those that reduce size, the gaps are initially filled with
NOPs. Later those NOPs are removed and the jump addresses retargeted in
a single pass. Line numbering is adjusted accordingly. */
a single pass. Code offset is adjusted accordingly. */
PyObject *
PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
PyObject *lineno_obj)
PyObject *lnotab_obj)
{
Py_ssize_t i, j, codelen;
int nops, h, adj;
int tgt, tgttgt, opcode;
unsigned char *codestr = NULL;
unsigned char *lineno;
unsigned char *lnotab;
int *addrmap = NULL;
int new_line, cum_orig_line, last_line;
int cum_orig_offset, last_offset;
Py_ssize_t tabsiz;
PyObject **const_stack = NULL;
Py_ssize_t *load_const_stack = NULL;
@ -371,12 +371,17 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
if (PyErr_Occurred())
goto exitError;
/* Bypass optimization when the lineno table is too complex */
assert(PyBytes_Check(lineno_obj));
lineno = (unsigned char*)PyBytes_AS_STRING(lineno_obj);
tabsiz = PyBytes_GET_SIZE(lineno_obj);
if (memchr(lineno, 255, tabsiz) != NULL)
/* Bypass optimization when the lnotab table is too complex */
assert(PyBytes_Check(lnotab_obj));
lnotab = (unsigned char*)PyBytes_AS_STRING(lnotab_obj);
tabsiz = PyBytes_GET_SIZE(lnotab_obj);
assert(tabsiz == 0 || Py_REFCNT(lnotab_obj) == 1);
if (memchr(lnotab, 255, tabsiz) != NULL) {
/* 255 value are used for multibyte bytecode instructions */
goto exitUnchanged;
}
/* Note: -128 and 127 special values for line number delta are ok,
the peephole optimizer doesn't modify line numbers. */
/* Avoid situations where jump retargeting could overflow */
assert(PyBytes_Check(code));
@ -663,21 +668,24 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
}
}
/* Fixup linenotab */
/* Fixup lnotab */
for (i=0, nops=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
assert(i - nops <= INT_MAX);
/* original code offset => new code offset */
addrmap[i] = (int)(i - nops);
if (codestr[i] == NOP)
nops++;
}
cum_orig_line = 0;
last_line = 0;
cum_orig_offset = 0;
last_offset = 0;
for (i=0 ; i < tabsiz ; i+=2) {
cum_orig_line += lineno[i];
new_line = addrmap[cum_orig_line];
assert (new_line - last_line < 255);
lineno[i] =((unsigned char)(new_line - last_line));
last_line = new_line;
int offset_delta, new_offset;
cum_orig_offset += lnotab[i];
new_offset = addrmap[cum_orig_offset];
offset_delta = new_offset - last_offset;
assert(0 <= offset_delta && offset_delta <= 255);
lnotab[i] = (unsigned char)offset_delta;
last_offset = new_offset;
}
/* Remove NOPs and fixup jump targets */
@ -727,12 +735,9 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
exitUnchanged:
CONST_STACK_DELETE();
if (blocks != NULL)
PyMem_Free(blocks);
if (addrmap != NULL)
PyMem_Free(addrmap);
if (codestr != NULL)
PyMem_Free(codestr);
PyMem_Free(blocks);
PyMem_Free(addrmap);
PyMem_Free(codestr);
Py_XINCREF(code);
return code;
}