
    ;eN5             !       )   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlZd Z e            j        j        Z G d d          Zdej        j        j        ej        j        j        dz   fz  Zd	Zd
ej        j        j        ej        j        j        dz   fz  Zdej        j        j        ej        j        j        dz   fz  Zdej        j        dedej        j        dedej        j        dedZd Zdej        j        ej        j        dz   ej        j        dz   fz  ZdZ d Z!de!j        j        e!j        j        dz   e!j        j        dz   e!j        j        dz   e!j        j        dz   e!j        j        dz   fz  Z"g fdZ#de#j        j        e#j        j        dz   e$e#j        j        dz   e#j        j        dz   e#j        j        dz   fz  Z%d Z&e&j        '                    d          e&_        dZ( e)g d          Z*dZ+ e)ej,        dej,        dej,        dej-        d          d!g          Z.d"Z/d#Z0d$Z1d%Z2d&Z3d'Z4d(Z5d)Z6d*Z7d+Z8d,Z9d-Z:d.ej        ej        dz   ej        dz   ej        dz   ej        d/z   ej        dz   ej        d0z   fz  Z;d1 Z<d2e<j        j        e<j        j        dz   fz  Z=d3 Z>d4 Z?d5e>j        j        e>j        j        dz   e>j        j        dz   e>j        j        d/z   fz  Z@d6e?j        j        e?j        j        dz   e?j        j        dz   e?j        j        d/z   fz  ZAd7 ZBd8 ZCd9 ZDd: ZEd;eEj        j        eEj        j        dz   e$eEj        j        dz   eEj        j        d/z   fz  ZFd<eFe$eEj        j        dz   eEj        j        dz   eEj        j        dz   e$eEj        j        dz   fz  ZGd=eGe$eEj        j        dz   eEj        j        dz   fz  ZHdyd>ZId?eIj        j        eIj        j        dz   eIj        j        dz   fz  ZJd@ ZKdAeKj        j        eKj        j        dz   eKj        j        dz   eKj        j        dz   fz  ZLdB ZMdCeMj        j        eMj        j        dz   fz  ZNdDZO G dE dFejP                  ZQ G dG dHeQ          ZR G dI dJeR          ZSejT        jU        dKZVndLZVdMeV dNZWeXdzg dPdQ            ZYdRZZeYj[        j        j\        d         Z]dSZ^dTZ_dUZ`dVZadW ZbdXZc G dY dZejP                  Zdd{d[Zed\ ZfdZgeej        j        dz
  Zheej        j\        d         Zieij        ehz
  Zjeij\        d         Zkekj        ehz
  ZldZmd] Znd^ Zoejp        Zp epd_d`d dadad ddbdc	  	         epd_d`ddddddddbdc	  	         epdedfd d dgd/ddbdc	  	         epdhdidjdkdldmddbdc	  	         epdndod dadadDddbdc	  	         epdndoddddddpddbdc	  	         epdqdrdddgdsddbdc	  	         epdhdidei eqei          dtddbdc	  	         epdudvdwdwdxdyddbdc	  	         epdzd{dd|d|d}ddbdc	  	         epd~ddddddjdbdc	  	         epddd dadadddbdc	  	         epddddddddddbdc	  	         epdhdid/dgddddbdc	  	         epdhdid0dddddbdc	  	         epddd d dgdddbdc	  	         epddd d dgdddbdc	  	         epdhdidmdddddbdc	  	         epdddjdjdgdddbdc	  	         epdddjdjdgdddbdc	  	         epdddddgdddbdc	  	         epdddd|d|ddDdbdc	  	         epdddddgdddbdc	  	        gZr epdddddgd ddbdc	  	         epd_d`d dddddbdc	  	         epd_d`dddd/ddbdc	  	         epdedfd d dgdmddbdc	  	         epdhdid/dddDddbdc	  	         epdndoddadadpddbdc	  	         epdndod/dddddsddbdc	  	         epdndod dddtddbdc	  	         epdndoddddyddbdc	  	         epdqdrd/d/dgd}ddbdc	  	         epdhdidek eqek          dddbdc	  	         epdudvdwdwdxdddbdc	  	         epdzd{ddddddbdc	  	         epd~dddddd0dbdc	  	         epddddadadddbdc	  	         epddd/dddddddbdc	  	         epddd dddddbdc	  	         epddddddddbdc	  	         epddd/d/dgdddbdc	  	         epddd/d/dgdddbdc	  	         epdddddgdddbdc	  	         epdddddddmdbdc	  	         epdddddgdddbdc	  	        gZs epddd/d/dgd ddbdc	  	         epdedfd d dgdddbdc	  	         epd~ddddd/d/dbdc	  	         epddddadadyddbdc	  	         epdddddddd}ddbdc	  	         epddd/dddddbdc	  	         epddd0dddddbdc	  	         epddd dddddbdc	  	         epdddd|d|dddbdc	  	         epdddmdmdgdddbdc	  	         epdddmdmdgdddbdc	  	         epdddddgdddbdc	  	         epdhdid dddddbdc	  	         epdddddgdddbdc	  	        gZtg  epdedfd d dgd ddbdc	  	         epd~dddddddbdc	  	         epdhdiddpddtddbdc	  	         epdddddgdyddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epddddddddOdc	  	         epdzd{d dddddbdc	  	         epd~dddddd/dbdc	  	         epddd dddddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epddd dddd0dbdc	  	         epdhdidd/ddddbdc	  	         epddd dddddbdc	  	         epddddddddbdc	  	         epdddddddmdbdc	  	         epddd ddddjdOdc	  	         epdhdiddmddddbdc	  	         epddd/dddddbdc	  	         epddddddddbdc	  	         epdddddgddDdbdc	  	         epd ddydddddbdc	  	         epdddddddjdOdc	  	         epd~ddddddpdOdc	  	         epdhdid/dddddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epddd dddddOdc	  	         epddddddddbdc	  	         epd~dddddvdsdOdc	  	         epddd dddddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epddd dddddbdc	  	         epdhdid0dddddbdc	  	         epddddddddbdc	  	         epdzd{d dddddbdc	  	         epddd ddddtdbdc	  	         epdhdiddmddddbdc	  	         epddd/dddddbdc	  	         epddddddddbdc	  	         epddddddddbdc	  	         epddd ddddydOdc	  	         epdhdidd/ddddbdc	  	         epddd dddddbdc	  	         epddddddddbdc	  	         epd dddddddbdc	  	         epddd dddddOdc	  	         epddddvdd ddbdc	  	         epd~dddddݐddOdc	  	         epdhdidmdddddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epddwdddgdddOdc	  	         epdhdid0ddd	d
dbdc	  	         epdhdidjd ddddbdc	  	         epddddܐddddbdc	  	         epdddddgdddbdc	  	         epddd dddddbdc	  	         epdddddgdddbdc	  	         epdzd{ddddddbdc	  	         epd~ddddd!ddbdc	  	         epdhdidDdddddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epdddddgdddbdc	  	         epdhdid dddddbdc	  	         epdhdid dddddbdc	  	         epdhdid dddddbdc	  	         epdddddgd ddbdc	  	         epdddddgd!ddbdc	  	         epdddddgd"ddbdc	  	         epd ddܐd#d$d%ddbdc	  	         epd&d'dddgd(ddbdc	  	         epd)d*dddgd+ddbdc	  	         epd,d-d/d.d/d0ddbdc	  	         epd1d2dddgd3ddbdc	  	         epd4d5dddgd6ddbdc	  	         epd7d8dddgd9ddbdc	  	         epd1d2dddgd:ddbdc	  	         epdddddgd.ddOdc	  	         epd7d8dddgd;ddbdc	  	         epdddddgd<ddbdc	  	         epdddddgd=ddbdc	  	         epd dӐd>d?d@d#ddOdc	  	         epd&d'dddgdAddbdc	  	         epd~dd/dBdBdCddbdc	  	         epdDddddgdEddbdc	  	         epddd}dFdGdHddbdc	  	         epdddddgdIddbdc	  	         epd~dddddJddbdc	  	         epdhdidwdKdLdMddbdc	  	         epdddddgdNddbdc	  	         epdddddgdOddbdc	  	         epdddddgdPddbdc	  	         epd7d8dddgdQddbdc	  	         epd dd/d?d@dRddbdc	  	         epd1d2d d dgdFddOdc	  	         epd4d5dddgdSddbdc	  	         epd7d8dddgdTddbdc	  	         epd1d2dddgdUddbdc	  	         epd~ddddd?ddOdc	  	         epdhdidpdVdWdXddbdc	  	         epdddddgdYddbdc	  	         epdddddgdZddbdc	  	         epdddddgd[ddbdc	  	         epdhdid ddd\ddbdc	  	         epdddddgd]ddbdc	  	         epd&d'dddgd^ddbdc	  	         epd~ddddd_ddbdc	  	         epdhdidpdVdWd`ddbdc	  	         epdddddgdaddbdc	  	         epdddddgdbddbdc	  	         epdddddgdcddbdc	  	         epd1d2d d dgddddbdc	  	         epd4d5dddgdeddbdc	  	         epd7d8dddgdfddbdc	  	         epd1d2dddgdgddbdc	  	        Zudh Zv epdedfd d dgd evj        j        dbdc	  	         epdhdid dddddbi           epdddddgd/ddbi          gZw G dj dke          Zx G dl dmex          Zy G dn doexeQ          Zz G dp dqe          Z{ G dr dsejP                  Z| G dt dueQ          Z} G dv dwe}          Z~edxk    r ej                     dS dS (|      N)captured_stdoutrequires_debug_rangescpython_only)BytecodeTestCasec                  J    d }  |             }|j         r|j         }|j         |S )Nc                  P    	 ddz   n# t           $ r} | j        }Y d } ~ nd } ~ ww xY w|S )N   r   )	Exception__traceback__)etbs     $/usr/lib/python3.11/test/test_dis.py_errorzget_tb.<locals>._error   sG    	!EEE 	! 	! 	!BBBBBB	!	s    
##)tb_next)r   r   s     r   get_tbr      s@       
B
* Z * I    c                   @    e Zd Zd Zed             Zed             ZdS )_Cc                     |dk    | _         d S Nr	   x)selfr   s     r   __init__z_C.__init__    s    ar   c                     | dk    } d S r    r   s    r   smz_C.sm#   s    Fr   c                     |dk    | _         d S r   r   )clsr   s     r   cmz_C.cm'   s    Qr   N)__name__
__module____qualname__r   staticmethodr   classmethodr    r   r   r   r   r      sY             \   [  r   r   aB  %3d        RESUME                   0

%3d        LOAD_FAST                1 (x)
           LOAD_CONST               1 (1)
           COMPARE_OP               2 (==)
           LOAD_FAST                0 (self)
           STORE_ATTR               0 (x)
           LOAD_CONST               0 (None)
           RETURN_VALUE
r	   a         RESUME                   0
       LOAD_FAST                1
       LOAD_CONST               1
       COMPARE_OP               2 (==)
       LOAD_FAST                0
       STORE_ATTR               0
       LOAD_CONST               0
       RETURN_VALUE
aA  %3d        RESUME                   0

%3d        LOAD_FAST                1 (x)
           LOAD_CONST               1 (1)
           COMPARE_OP               2 (==)
           LOAD_FAST                0 (cls)
           STORE_ATTR               0 (x)
           LOAD_CONST               0 (None)
           RETURN_VALUE
   a  %3d        RESUME                   0

%3d        LOAD_FAST                0 (x)
           LOAD_CONST               1 (1)
           COMPARE_OP               2 (==)
           STORE_FAST               0 (x)
           LOAD_CONST               0 (None)
           RETURN_VALUE
zDisassembly of z:
z
Disassembly of 
c                 $    t          |            dS r   print)as    r   _fr,   e   s    	!HHH1r   a(  %3d        RESUME                   0

%3d        LOAD_GLOBAL              1 (NULL + print)
           LOAD_FAST                0 (a)
           PRECALL                  1
           CALL                     1
           POP_TOP

%3d        LOAD_CONST               1 (1)
           RETURN_VALUE
z       RESUME                   0
       LOAD_GLOBAL              1
       LOAD_FAST                0
       PRECALL                  1
       CALL                     1
       POP_TOP
       LOAD_CONST               1
       RETURN_VALUE
c                  ,    t          dd          D ]} d S )Nr	   
   range)ress    r   	bug708901r2      s-    Q    r   a  %3d        RESUME                   0

%3d        LOAD_GLOBAL              1 (NULL + range)
           LOAD_CONST               1 (1)

%3d        LOAD_CONST               2 (10)

%3d        PRECALL                  2
           CALL                     2
           GET_ITER
        >> FOR_ITER                 2 (to 40)
           STORE_FAST               0 (res)

%3d        JUMP_BACKWARD            3 (to 34)

%3d     >> LOAD_CONST               0 (None)
           RETURN_VALUE
   c                 0    J d | D             dz               )Nr   c                     g | ]}|S r   r   ).0ss     r   
<listcomp>zbug1333982.<locals>.<listcomp>   s    ~~~a~~~r   r	   r   r   s    r   
bug1333982r9      s*    ~~1~~~   r   a  %3d        RESUME                   0

%3d        LOAD_ASSERTION_ERROR
           LOAD_CONST               2 (<code object <listcomp> at 0x..., file "%s", line %d>)
           MAKE_FUNCTION            0
           LOAD_FAST                0 (x)
           GET_ITER
           PRECALL                  0
           CALL                     0

%3d        LOAD_CONST               3 (1)

%3d        BINARY_OP                0 (+)
           PRECALL                  0
           CALL                     0
           RAISE_VARARGS            1
c                      d S Nr   r   r   r   bug42562r<      s    Dr      co_linetablez_       RESUME                   0
       LOAD_CONST               0 (None)
       RETURN_VALUE
)
   r	   	      r@   r	   d   )   S   r   z       EXTENDED_ARG             1
       NOP
       EXTENDED_ARG             1
       LOAD_CONST             297
       RETURN_VALUE
rB   JUMP_FORWARD   z    >> EXTENDED_ARG           255
       EXTENDED_ARG         65535
       EXTENDED_ARG         16777215
       JUMP_FORWARD            -4 (to 0)
z  1        RESUME                   0

%3d        LOAD_GLOBAL              0 (spam)
           POP_TOP
           LOAD_CONST               0 (None)
           RETURN_VALUE
z   1        RESUME                   0

%4d        LOAD_GLOBAL              0 (spam)
            POP_TOP
            LOAD_CONST               0 (None)
            RETURN_VALUE
zDisassembly of f:
  4        RESUME                   0
           LOAD_CONST               0 (None)
           RETURN_VALUE

Disassembly of g:
  5        RESUME                   0
           LOAD_CONST               0 (None)
           RETURN_VALUE

zx + 1z  0        RESUME                   0

  1        LOAD_NAME                0 (x)
           LOAD_CONST               0 (1)
           BINARY_OP                0 (+)
           RETURN_VALUE
	x = x + 1a    0        RESUME                   0

  1        LOAD_NAME                0 (x)
           LOAD_CONST               0 (1)
           BINARY_OP                0 (+)
           STORE_NAME               0 (x)
           LOAD_CONST               1 (None)
           RETURN_VALUE
z+
x: int = 1
y: fun(1)
lst[fun(0)]: int = 1
a    0        RESUME                   0

  2        SETUP_ANNOTATIONS
           LOAD_CONST               0 (1)
           STORE_NAME               0 (x)
           LOAD_NAME                1 (int)
           LOAD_NAME                2 (__annotations__)
           LOAD_CONST               1 ('x')
           STORE_SUBSCR

  3        PUSH_NULL
           LOAD_NAME                3 (fun)
           LOAD_CONST               0 (1)
           PRECALL                  1
           CALL                     1
           LOAD_NAME                2 (__annotations__)
           LOAD_CONST               2 ('y')
           STORE_SUBSCR

  4        LOAD_CONST               0 (1)
           LOAD_NAME                4 (lst)
           PUSH_NULL
           LOAD_NAME                3 (fun)
           LOAD_CONST               3 (0)
           PRECALL                  1
           CALL                     1
           STORE_SUBSCR
           LOAD_NAME                1 (int)
           POP_TOP
           LOAD_CONST               4 (None)
           RETURN_VALUE
zx = 0
while 1:
    x += 1ac    0        RESUME                   0

  1        LOAD_CONST               0 (0)
           STORE_NAME               0 (x)

  2        NOP

  3     >> LOAD_NAME                0 (x)
           LOAD_CONST               1 (1)
           BINARY_OP               13 (+=)
           STORE_NAME               0 (x)

  2        JUMP_BACKWARD            6 (to 8)
a  %3d        RESUME                   0

%3d        NOP

%3d        LOAD_CONST               1 (1)
           LOAD_CONST               2 (0)
    -->    BINARY_OP               11 (/)
           POP_TOP
           JUMP_FORWARD            30 (to 76)
        >> PUSH_EXC_INFO

%3d        LOAD_GLOBAL              0 (Exception)
           CHECK_EXC_MATCH
           POP_JUMP_FORWARD_IF_FALSE    17 (to 68)
           STORE_FAST               0 (e)

%3d        LOAD_FAST                0 (e)
           LOAD_ATTR                1 (__traceback__)
           STORE_FAST               1 (tb)
           POP_EXCEPT
           LOAD_CONST               0 (None)
           STORE_FAST               0 (e)
           DELETE_FAST              0 (e)
           JUMP_FORWARD             8 (to 76)
        >> LOAD_CONST               0 (None)
           STORE_FAST               0 (e)
           DELETE_FAST              0 (e)
           RERAISE                  1

%3d     >> RERAISE                  0
        >> COPY                     3
           POP_EXCEPT
           RERAISE                  1

%3d     >> LOAD_FAST                1 (tb)
           RETURN_VALUE
ExceptionTable:
      c                      |  d|dd|d|dS )N 4r   r+   bcds       r   _fstringrR     s,    %%!%%%%%a%%%%r   a  %3d        RESUME                   0

%3d        LOAD_FAST                0 (a)
           FORMAT_VALUE             0
           LOAD_CONST               1 (' ')
           LOAD_FAST                1 (b)
           LOAD_CONST               2 ('4')
           FORMAT_VALUE             4 (with format)
           LOAD_CONST               1 (' ')
           LOAD_FAST                2 (c)
           FORMAT_VALUE             2 (repr)
           LOAD_CONST               1 (' ')
           LOAD_FAST                3 (d)
           LOAD_CONST               2 ('4')
           FORMAT_VALUE             6 (repr, with format)
           BUILD_STRING             7
           RETURN_VALUE
c                 :    	 |  |             S #  |             w xY wr;   r   r+   rO   s     r   _tryfinallyrU     s'    	s    c                 <    	 	  |              dS #  |              w xY wr   r   )rO   s    r   _tryfinallyconstrW     s)    	s   ag  %3d        RESUME                   0

%3d        NOP

%3d        LOAD_FAST                0 (a)

%3d        PUSH_NULL
           LOAD_FAST                1 (b)
           PRECALL                  0
           CALL                     0
           POP_TOP
           RETURN_VALUE
        >> PUSH_EXC_INFO
           PUSH_NULL
           LOAD_FAST                1 (b)
           PRECALL                  0
           CALL                     0
           POP_TOP
           RERAISE                  0
        >> COPY                     3
           POP_EXCEPT
           RERAISE                  1
ExceptionTable:
av  %3d        RESUME                   0

%3d        NOP

%3d        NOP

%3d        PUSH_NULL
           LOAD_FAST                0 (b)
           PRECALL                  0
           CALL                     0
           POP_TOP
           LOAD_CONST               1 (1)
           RETURN_VALUE
           PUSH_EXC_INFO
           PUSH_NULL
           LOAD_FAST                0 (b)
           PRECALL                  0
           CALL                     0
           POP_TOP
           RERAISE                  0
        >> COPY                     3
           POP_EXCEPT
           RERAISE                  1
ExceptionTable:
c              #      K   | V  d S r;   r   r   s    r   _grY     s      
GGGGGr   c                   K   | W V  d S r;   r   r   s    r   _agr[     s      
GGGGGGr   c                 :   K   t          |           2 3 d {V }6 d S r;   )r[   )r   items     r   _cor^     s@      !ff       d ffs   c                       fd}|S )Nc                 "      fdD             S )funcdocc                     g | ]}|z   S r   r   )r6   zr   s     r   r8   z#_h.<locals>.foo.<locals>.<listcomp>  s    !!!!A!!!r   r   r   ys   `r   fooz_h.<locals>.foo  s    !!!!q!!!!r   r   )re   rf   s   ` r   _hrg      s#    " " " " " Jr   a             MAKE_CELL                0 (y)

%3d        RESUME                   0

%3d        LOAD_CLOSURE             0 (y)
           BUILD_TUPLE              1
           LOAD_CONST               1 (<code object foo at 0x..., file "%s", line %d>)
           MAKE_FUNCTION            8 (closure)
           STORE_FAST               1 (foo)

%3d        LOAD_FAST                1 (foo)
           RETURN_VALUE
a:  %s
Disassembly of <code object foo at 0x..., file "%s", line %d>:
           COPY_FREE_VARS           1
           MAKE_CELL                0 (x)

%3d        RESUME                   0

%3d        LOAD_CLOSURE             0 (x)
           BUILD_TUPLE              1
           LOAD_CONST               1 (<code object <listcomp> at 0x..., file "%s", line %d>)
           MAKE_FUNCTION            8 (closure)
           LOAD_DEREF               1 (y)
           GET_ITER
           PRECALL                  0
           CALL                     0
           RETURN_VALUE
a(  %s
Disassembly of <code object <listcomp> at 0x..., file "%s", line %d>:
           COPY_FREE_VARS           1

%3d        RESUME                   0
           BUILD_LIST               0
           LOAD_FAST                0 (.0)
        >> FOR_ITER                 7 (to 24)
           STORE_FAST               1 (z)
           LOAD_DEREF               2 (x)
           LOAD_FAST                1 (z)
           BINARY_OP                0 (+)
           LIST_APPEND              2
           JUMP_BACKWARD            8 (to 8)
        >> RETURN_VALUE
c                     | |}}||fS r;   r   )r   re   r+   rO   s       r   	load_testri   H  s    aqAa4Kr   a  %3d           0 RESUME_QUICK             0

%3d           2 LOAD_FAST__LOAD_FAST     0 (x)
              4 LOAD_FAST                1 (y)
              6 STORE_FAST__STORE_FAST     3 (b)
              8 STORE_FAST__LOAD_FAST     2 (a)

%3d          10 LOAD_FAST__LOAD_FAST     2 (a)
             12 LOAD_FAST                3 (b)
             14 BUILD_TUPLE              2
             16 RETURN_VALUE
c                  8    g ddz  D ]} t          |            d S )N)r	   r&   r3   r3   ri   )is    r   	loop_testrm   \  s0    YY]  ! r   a  %3d           0 RESUME_QUICK             0

%3d           2 BUILD_LIST               0
              4 LOAD_CONST               1 ((1, 2, 3))
              6 LIST_EXTEND              1
              8 LOAD_CONST               2 (3)
             10 BINARY_OP_ADAPTIVE       5 (*)
             14 GET_ITER
             16 FOR_ITER                17 (to 52)
             18 STORE_FAST               0 (i)

%3d          20 LOAD_GLOBAL_MODULE       1 (NULL + load_test)
             32 LOAD_FAST                0 (i)
             34 PRECALL_PYFUNC           1
             38 CALL_PY_WITH_DEFAULTS     1
             48 POP_TOP
             50 JUMP_BACKWARD_QUICK     18 (to 16)

%3d     >>   52 LOAD_CONST               0 (None)
             54 RETURN_VALUE
c                      d^ } } d S )N.r   )_s    r   extended_arg_quickrp   z  s    EQr   ae  %3d           0 RESUME                   0

%3d           2 LOAD_CONST               1 (Ellipsis)
              4 EXTENDED_ARG             1
              6 UNPACK_EX              256
              8 STORE_FAST               0 (_)
             10 STORE_FAST               0 (_)
             12 LOAD_CONST               0 (None)
             14 RETURN_VALUE
   c                   2    e Zd ZdZd Zd Zd Zd Zd	dZdS )
DisTestBasez2Common utilities for DisTests and TestDisTracebackc                 .    t          j        dd|          S )Nz\b0x[0-9A-Fa-f]+\bz0x...)resub)r   texts     r   strip_addresseszDisTestBase.strip_addresses  s    v+Wd;;;r   c                     |D ]}|r|                     d          s ndS d}||         dk    r|dz  }||         dk    ||         dk    r|dz  }||         dk    r|dz  }||         dk    |}||         dv r|dz  }||         dv |dz
  |fS )	NDisassembly)r   r   rJ   rL   r	   >r&   
0123456789)
startswith)r   lineslineoffsetends        r   find_offset_columnzDisTestBase.find_offset_column  s     	 	D DOOM:: 4F|s""aKF F|s""LCaKFF|s""aKF F|s""3i<''1HC 3i<''1uczr   c                 8   d}|                                 }|                     |          \  }}|D ]h}|s|                    d          rd}|                    d          r d S t          |||                   }|                     |||           ||z   }id S )Nr   rz   r
   )
splitlinesr   r}   intassertGreaterEqual)	r   rw   deltaexpected_offsetr~   startr   r   r   s	            r   assert_offsets_increasingz%DisTestBase.assert_offsets_increasing  s    !!,,U33
s 
	- 
	-D }-- "#{++ eCi))F##FOTBBB$unOO
	- 
	-r   c                    |                     d          }|                     |          \  }}g }t          |          }|D ]}|                    d          r|                    |            nV|r|                    d          r|                    |           [|                    |d |         ||d          z              d                    |          S )NTr
   rz    )r   r   iterr}   appendjoin)r   rw   r~   r   r   r1   r   s          r   strip_offsetszDisTestBase.strip_offsets  s    %%,,U33
sU 	6 	6D{++ 

4    64??=99 6

4    

4<$stt*45555wws||r   Fc                     |s+|                      |d           |                     |          }||k    r|                     |          }|                     ||           d S )Nr&   )r   r   rx   assertEqual)r   gotexpectedwith_offsetss       r   do_disassembly_comparez"DisTestBase.do_disassembly_compare  sk     	***3222$$S))C(??&&s++Ch'''''r   NF)	r!   r"   r#   __doc__rx   r   r   r   r   r   r   r   rs   rs     sj        88< < <  $- - -   ( ( ( ( ( (r   rs   c                      e Zd ZdZd-dZd.dZd/dZd Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Z d" Z!d# Z"e#e$fd$            Z%e&d%             Z'e&d&             Z(e&d'             Z)e&d(             Z*e&d)             Z+e&d*             Z,d+ Z-e&d,             Z.dS )0DisTestsNTc                     t          j                    }t          j        |          5  |rt	          j        |fi | nt	          j        ||fi | d d d            n# 1 swxY w Y   |                                S r;   )ioStringIO
contextlibredirect_stdoutdisdisassemblegetvaluer   funclastiwrapperkwargsoutputs         r   get_disassemblyzDisTests.get_disassembly  s    '// 	7 	7 7''''''e66v666		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
    s   )AA!$A!c                 0    |                      ||d          S )NF)r   )r   r   r   s      r   get_disassemble_as_stringz"DisTests.get_disassemble_as_string  s    ##D%777r   Fc                 p    d | _         |                     |d          }|                     |||           d S )Nr   depth)maxDiffr   r   )r   r   r   r   r   s        r   do_disassembly_testzDisTests.do_disassembly_test  s?    ""4q"11##C<@@@@@r   c                    |                      t          j        d         d           |                     t          j        d         t          j                   |                     t          j        d         t          j                   d S )NNOPrA   
LOAD_CONST
STORE_NAME)r   r   opmapassertInhasconsthasnamer   s    r   
test_opmapzDisTests.test_opmap  s_    5)1---ci-s|<<<ci-s{;;;;;r   c                 r    |                      t          j        t          j        d                  d           d S )N	LOAD_FAST)r   r   opnamer   r   s    r   test_opnamezDisTests.test_opname  s,    CIk$:;[IIIIIr   c                     |                      t          j        d         t          j                   |                      t          j        d         t          j                   d S )NEXTENDED_ARGr   )r   r   r   r   HAVE_ARGUMENTr   s    r   test_boundarieszDisTests.test_boundaries  sH    >2C4DEEE<0#2CDDDDDr   c                 n   t          g d          }t          t          j                  D ]\  }}||v r
|                     |          5  t          j        }|t          j        k     r|dt          j        z   z  }|                     t          |          |           d d d            n# 1 swxY w Y   d S )N)	POP_JUMP_FORWARD_IF_FALSEPOP_JUMP_FORWARD_IF_TRUEPOP_JUMP_FORWARD_IF_NOT_NONEPOP_JUMP_FORWARD_IF_NONEPOP_JUMP_BACKWARD_IF_FALSEPOP_JUMP_BACKWARD_IF_TRUEPOP_JUMP_BACKWARD_IF_NOT_NONEPOP_JUMP_BACKWARD_IF_NONEJUMP_BACKWARD_NO_INTERRUPT)r   r	   )
set	enumerater   r   subTest_OPNAME_WIDTHr   _OPARG_WIDTHassertLessEquallen)r   long_opcodesopcoder   widths        r   test_widthszDisTests.test_widths  s    	 	 	 	 	 (
33 	9 	9NFF%%V,, 9 9)C---Q!111E$$S[[%888	9 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9s   AB))B-	0B-	c                 F    |                      t          t                     d S r;   )r   r,   dis_fr   s    r   test_diszDisTests.test_dis        U+++++r   c                 F    |                      t          t                     d S r;   )r   r2   dis_bug708901r   s    r   test_bug_708901zDisTests.test_bug_708901  s      M:::::r   c                 H    	 |                     t          t                     d S r;   )skipTestr   r9   dis_bug1333982r   s    r   test_bug_1333982zDisTests.test_bug_1333982  s%    	: 	  ^<<<<<r   c                 F    |                      t          t                     d S r;   )r   r<   dis_bug42562r   s    r   test_bug_42562zDisTests.test_bug_42562  s      <88888r   c                 F    |                      t          t                     d S r;   )r   code_bug_45757dis_bug_45757r   s    r   test_bug_45757zDisTests.test_bug_45757  s      ?????r   c                 F    |                      t          t                     d S r;   )r   bug46724dis_bug46724r   s    r   test_bug_46724zDisTests.test_bug_46724  s      <88888r   c                    d }t          dd          D ].}t          |dz   z  }|                      ||          |           /t          ddd          D ].}t          |dz   z  }|                      ||          |           /t          ddd          D ].}t          |dz   z  }|                      ||          |           /dd	lm} |                     |t                     d S )
Nc                 v    i }dd                     dg| z  dgz             z   }t          ||           |d         S )Nzdef foo():
 r   z
 zspam
rf   r   execcount	namespacer   s      r   r   z'DisTests.test_big_linenos.<locals>.func  sE    I"RWWeWu_z-I%J%JJDy!!!U##r   r	   i,  r&     r.   i  r   )
dis_module)r0   _BIG_LINENO_FORMATr   _BIG_LINENO_FORMAT2testr   dis_module_expected_results)r   r   rl   r   r   s        r   test_big_linenoszDisTests.test_big_linenos  s   	$ 	$ 	$ q# 	8 	8A)QU3H$$TT!WWh7777 sD"%% 	8 	8A)QU3H$$TT!WWh7777tT2&& 	8 	8A*a!e4H$$TT!WWh7777######  -HIIIIIr   c                 B   d | _         d }d }t          dd          D ],}|                      ||           ||d          d           -|                      |d           |dd          d           |                      |d           |dd          d           d S )	Nc                 t    i }dd                     dg| z            z   dz   }t          ||           |d         S )Nzdef foo(x):
 ;rH   z

 return xrf   r   r   s      r   r   z'DisTests.test_big_offsets.<locals>.func5  sD    I#chh}u/D&E&EEUDy!!!U##r   c                     ddfz  g}|fdt          |           D             z  }|dd| z  dz   d| z  dz   fz  gz  }d|d	         d
d          z   |d	<   d                    |          S )Nz+  1        %*d RESUME                   0

r   c                 Z    g | ]'}d d|z  dz   d|z  dz   d|z  dz   d|z  dz   fz  (S )z           %*d LOAD_FAST                0 (x)
           %*d LOAD_CONST               1 (1)
           %*d BINARY_OP                0 (+)
           %*d STORE_FAST               0 (x)
r.   r&   rI      r   )r6   rl   ws     r   r8   z?DisTests.test_big_offsets.<locals>.expected.<locals>.<listcomp>@  sf     ( ( ( 
 	"Q$(Ar!taxBqD1HaA;< ( ( (r   zK
  3        %*d LOAD_FAST                0 (x)
           %*d RETURN_VALUE
r.   r&   rI   z  2r	   r3   r   )r0   r   )r   r  r7   s    ` r   r   z+DisTests.test_big_offsets.<locals>.expected;  s     	!f A  ( ( ( (  ,,( ( ( (A   	"U(Q,2e8a<(	) * *A
 1Q48#AaD771::r   r	   rJ   rI   Ti  r   )r   r0   r   )r   r   r   rl   s       r   test_big_offsetszDisTests.test_big_offsets3  s    	$ 	$ 	$	 	 	( q! 	D 	DA$$TT!WWhhq!nndCCCC  cHHS!,<,<dCCC  dXXdA->->EEEEEr   c                    |                      t          t                     |                      t          t                     |                      t
          t                     |                      t          t                     d S r;   )	r   expr_strdis_expr_strsimple_stmt_strdis_simple_stmt_strannot_stmt_strdis_annot_stmt_strcompound_stmt_strdis_compound_stmt_strr   s    r   test_disassemble_strzDisTests.test_disassemble_strT  sd      <888  2EFFF  1CDDD  !24IJJJJJr   c                 Z    |                      t          j        j        t                     d S r;   )r   r,   __code__co_codedis_f_co_coder   s    r   test_disassemble_byteszDisTests.test_disassemble_bytesZ  s#      !4mDDDDDr   c                 F    |                      t          t                     d S r;   )r   r   dis_cr   s    r   test_disassemble_classzDisTests.test_disassemble_class]  r   r   c                 `    |                      t          d          j        t                     d S r   )r   r   r   dis_c_instance_methodr   s    r    test_disassemble_instance_methodz)DisTests.test_disassemble_instance_method`  s'      A1FGGGGGr   c                 x    t          d          j        j        j        }|                     |t
                     d S r   )r   r   r  r  r   dis_c_instance_method_bytes)r   method_bytecodes     r   &test_disassemble_instance_method_bytesz/DisTests.test_disassemble_instance_method_bytesc  s2    Q%%.19  2MNNNNNr   c                 P    |                      t          j        t                     d S r;   )r   r   r   dis_c_static_methodr   s    r   test_disassemble_static_methodz'DisTests.test_disassemble_static_methodg  s!      (;<<<<<r   c                 P    |                      t          j        t                     d S r;   )r   r   r    dis_c_class_methodr   s    r   test_disassemble_class_methodz&DisTests.test_disassemble_class_methodj  s!      (:;;;;;r   c                     |                      t                    }|                      t          d                    }|                     ||           d S r   )r   rY   r   )r   gen_func_disas	gen_disass      r   test_disassemble_generatorz#DisTests.test_disassemble_generatorm  sJ    --b11((A//	N33333r   c                     |                      t                    }|                      t          d                    }|                     ||           d S r   )r   r[   r   )r   agen_func_disas
agen_disass      r    test_disassemble_async_generatorz)DisTests.test_disassemble_async_generatorr  sJ    ..s33))#a&&11
_55555r   c                     |                      t                    }t          d          }|                                 |                      |          }|                     ||           d S r   )r   r^   closer   )r   coro_func_disascoro
coro_disass       r   test_disassemble_coroutinez#DisTests.test_disassemble_coroutinew  s\    ..s331vv

))$//
_55555r   c                 F    |                      t          t                     d S r;   )r   rR   dis_fstringr   s    r   test_disassemble_fstringz!DisTests.test_disassemble_fstring~  s      ;77777r   c                     |                      t          t                     |                      t          t                     d S r;   )r   rU   dis_tryfinallyrW   dis_tryfinallyconstr   s    r   test_disassemble_try_finallyz%DisTests.test_disassemble_try_finally  s6      n===  !13FGGGGGr   c                     	 t           `n# t          $ r Y nw xY w|                     t          t
          j        d            d S r;   )syslast_tracebackAttributeErrorassertRaisesRuntimeErrorr   r   s    r   test_dis_nonezDisTests.test_dis_none  sP    	"" 	 	 	D	,66666s   
 
c                     d | _         	 t          `n# t          $ r Y nw xY w	 ddz   n*# t          $ r}|j        }|t          _        Y d }~nd }~ww xY w|                     |j        j        |j	                  }| 
                    d |d           d S )Nr	   r   T)r   r:  r;  r<  r
   r   r   tb_framef_codetb_lastir   )r   r   r   tb_diss       r   test_dis_tracebackzDisTests.test_dis_traceback  s    	"" 	 	 	D		$aCCC 	$ 	$ 	$B!#C	$ //0BBKPP  vt44444s     
( 
AA

Ac                 j    |                      t          t          j        t                                 d S r;   )r=  	TypeErrorr   objectr   s    r   test_dis_objectzDisTests.test_dis_object  s&    )SWfhh77777r   c                       fd} |t           d            |t          d            |t          d            |t          d            |t          d             |t                     d S )Nc                      j         t          fi |}                    |          }                    |          }                    ||            d S r;   )r   rg   rx   r   r   )r   r   r   r   s      r   checkz2DisTests.test_disassemble_recursive.<locals>.check  s_    &$&r44V44C&&s++C$$S))CS(+++++r   r   r   r	   r&   r3   )dis_nested_0dis_nested_1dis_nested_2)r   rL  s   ` r   test_disassemble_recursivez#DisTests.test_disassemble_recursive  s    	, 	, 	, 	, 	, 	l!$$$$l!$$$$l!$$$$l!$$$$l$''''lr   c                 >    t          |          D ]} |              d S r;   r/   )ftimesro   s      r   code_quickenzDisTests.code_quicken  s.    u 	 	AACCCC	 	r   c                     |                      d            |                     t          d          }|                     |t          d           d S )Nc                  "    t          dd          S )Nr   rk   r   r   r   <lambda>z2DisTests.test_super_instructions.<locals>.<lambda>  s    )Aq// r   Tadaptive)rT  r   ri   r   dis_load_test_quickened_coder   r   s     r   test_super_instructionsz DisTests.test_super_instructions  sQ    11222""9t"<<##C)EtLLLLLr   c                    d}t          ddd          |                     fd           |                     d          }|                     ||dz  d           t          dd	d          |                     fd
           |                     d          }|                     ||dz  d           d}t          ddd          |                     fd           |                     d          }|                     ||dz  d           t          ddd          |                     fd           |                     d          }|                     ||dz  d           d S )Nz  0           0 RESUME_QUICK             0

  1           2 LOAD_NAME                0 (a)
              4 LOAD_NAME                1 (b)
              6 %s
             10 RETURN_VALUE
za + bz<int>evalc                  ,    t           i ddd          S )Nr	   r&   rT   r   )co_ints   r   rW  z1DisTests.test_binary_specialize.<locals>.<lambda>  s    $vr3C3C"D"D r   TrX  zBINARY_OP_ADD_INT        0 (+)z	<unicode>c                  ,    t           i ddd          S )Nr+   rO   rT   r`  )
co_unicodes   r   rW  z1DisTests.test_binary_specialize.<locals>.<lambda>  s    $z2Ss7K7K"L"L r   zBINARY_OP_ADD_UNICODE     0 (+)z  0           0 RESUME_QUICK             0

  1           2 LOAD_NAME                0 (a)
              4 LOAD_CONST               0 (0)
              6 %s
             16 RETURN_VALUE
za[0]z<list>c                  ,    t           i ddgi          S )Nr+   r   r`  )co_lists   r   rW  z1DisTests.test_binary_specialize.<locals>.<lambda>  s    $wS1#J"?"? r   BINARY_SUBSCR_LIST_INTz<dict>c                  .    t           i dddii          S )Nr+   r   1r`  )co_dicts   r   rW  z1DisTests.test_binary_specialize.<locals>.<lambda>  s    $wS1c(O"D"D r   BINARY_SUBSCR_DICTcompilerT  r   r   )r   binary_op_quickenr   binary_subscr_quickenri  ra  re  rc  s       @@@@r   test_binary_specializezDisTests.test_binary_specialize  s    '622DDDDEEE""6D"99##C):=])]_cdddWk6::
LLLLMMM"":"==##C):=^)^`deee! &(F33????@@@""7T"::##C)>AY)Y[_```&(F33DDDDEEE""7T"::##C)>AU)UW[\\\\\r   c                     d}t          ddd          |                     fd           |                     d          }|                     ||d           d S )Nz  0           0 RESUME_QUICK             0

  1           2 LOAD_CONST               0 ('a')
              4 LOAD_ATTR_SLOT           0 (__class__)
             14 RETURN_VALUE
z'a'.__class__r   r^  c                  &    t           i i           S r;   r`  cos   r   rW  z4DisTests.test_load_attr_specialize.<locals>.<lambda>      $r2r"2"2 r   TrX  rk  )r   load_attr_quickenr   rs  s      @r   test_load_attr_specializez"DisTests.test_load_attr_specialize  ss     _b&112222333""2"55##C):DAAAAAr   c                     d}t          ddd          |                     fd           |                     d          }|                     ||d           d S )Na    0           0 RESUME_QUICK             0

  1           2 PUSH_NULL
              4 LOAD_NAME                0 (str)
              6 LOAD_CONST               0 (1)
              8 PRECALL_NO_KW_STR_1      1
             12 CALL_ADAPTIVE            1
             22 RETURN_VALUE
zstr(1)r   r^  c                  &    t           i i           S r;   r`  rr  s   r   rW  z/DisTests.test_call_specialize.<locals>.<lambda>  rt  r   TrX  rk  )r   call_quickenr   rs  s      @r   test_call_specializezDisTests.test_call_specialize  sq    	 Xr6**2222333""2"55##Ct<<<<<r   c                     |                      t          d           |                     t          d          }|                     |t          d           d S )Nr	   TrX  )rT  rm   r   r   dis_loop_test_quickened_coder[  s     r   test_loop_quickenzDisTests.test_loop_quicken  sQ     	)Q'''""9t"<<##C)EtLLLLLr   c                 r    |                      t                    }|                     |t          d           d S )NT)r   rp   r   dis_extended_arg_quick_coder[  s     r   test_extended_arg_quickz DisTests.test_extended_arg_quick  s5    ""#566##C)DdKKKKKr   c              #      K   d }|r|                      |           n|j                                        |_        t          j        |d|          D ]}|j        dk    r	|j        V  d S )Nc                  X    g } t          d          D ]}|                     |           d S )N*   )r0   r   )lrl   s     r   rR  z%DisTests.get_cached_values.<locals>.f
  s7    A2YY   r   T)show_cachesrY  CACHE)rT  r  replacer   get_instructionsr   argrepr)r   	quickenedrY  rR  instructions        r   get_cached_valueszDisTests.get_cached_values	  s      	 	 	  	.a     ++--AJ/4(
 
 
 	* 	*K !W,,!))))		* 	*r   c           	         dD ]}dD ]}|                      d|d|          5  |r|rd}nd}t          |                     ||                    }|D ]}|                     ||           d}|r|rdn|}|                     |                    d          |           |                     t          |          |           d d d            n# 1 swxY w Y   ӌd S )	NFTz
quickened=z, adaptive=z^(\w+: \d+)?$z^(\w+: 0)?$   rq   r   )r   listr  assertRegexr   r   r   )r   r  rY  patterncachescachetotal_cachesempty_cachess           r   test_show_cacheszDisTests.test_show_caches  sv   & 	@ 	@I) @ @\\">Y">">8">">?? @ @  1X 1"2"0!$"8"8H"M"MNNF!' 9 9((8888#%L(0#PY#P11LL$$V\\"%5%5|DDD$$S[[,???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @@	@ 	@s   BCCCr   T)r   r   )/r!   r"   r#   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r#  r'  r+  r1  r4  r8  r?  rE  rI  rP  r$   QUICKENING_WARMUP_DELAYrT  r   r\  ro  rv  rz  r}  r  r  r  r   r   r   r   r     s        G! ! ! !8 8 8 8A A A A
< < <
J J JE E E9 9 9(, , ,; ; ;= = =9 9 9@ @ @9 9 9J J J0F F FBK K KE E E, , ,H H HO O O= = =< < <4 4 4
6 6 6
6 6 68 8 8H H H7 7 75 5 5 8 8 8   5    \ M M \M
 #] #] \#]J B B \B = = \=  M M \M L L \L* * *  @ @ \@ @ @r   r   c                       e Zd ZddZdS )DisWithFileTestsr   Tc                     t          j                    }|rt          j        |fd|i| nt          j        ||fd|i| |                                S )Nfile)r   r   r   r   r   r   s         r   r   z DisWithFileTests.get_disassembly.  se     	@GD00v00000OD%??f????   r   Nr  r!   r"   r#   r   r   r   r   r  r  +  s(        ! ! ! ! ! !r   r  z0: Nonez60: 'Formatted details of methods, functions, or code.'zName:              code_info
Filename:          (.*)
Argument count:    1
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  1
Stack size:        \d+
Flags:             OPTIMIZED, NEWLOCALS
Constants:
   zN
Names:
   0: _format_code_info
   1: _get_code_object
Variable names:
   0: xT)r   c         	   /   P    
K   |f 
fd	
 |
f	V  d S )Nc                 6    t          | 	  	         d S r;   r)   )	rP   r+   rO   rQ   r   rR  r   re   rc   s	    r   rR  ztricky.<locals>.fP  s'    aAq!Q1a(((((r   r   )r+   rO   r   re   rc   rP   rQ   r   argskwdsrR  s   ````` ``  @r   trickyr  N  sw       ) ) ) ) ) ) ) ) ) ) ) ) )
Q1aAq!
######r   a  Name:              tricky
Filename:          (.*)
Argument count:    5
Positional-only arguments: 2
Kw-only arguments: 3
Number of locals:  10
Stack size:        \d+
Flags:             OPTIMIZED, NEWLOCALS, VARARGS, VARKEYWORDS, GENERATOR
Constants:
   0: None
   1: <code object f at (.*), file "(.*)", line (.*)>
Variable names:
   0: a
   1: b
   2: x
   3: y
   4: z
   5: c
   6: d
   7: e
   8: args
   9: kwds
Cell variables:
   0: [abedfxyz]
   1: [abedfxyz]
   2: [abedfxyz]
   3: [abedfxyz]
   4: [abedfxyz]
   5: [abedfxyz]aq  Filename:          (.*)
Argument count:    1
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  1
Stack size:        \d+
Flags:             OPTIMIZED, NEWLOCALS, NESTED
Constants:
   0: None
Names:
   0: print
Variable names:
   0: c
Free variables:
   0: [abedfxyz]
   1: [abedfxyz]
   2: [abedfxyz]
   3: [abedfxyz]
   4: [abedfxyz]
   5: [abedfxyz]zName:              <module>
Filename:          <disassembly>
Argument count:    0
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  0
Stack size:        \d+
Flags:             0x0
Constants:
   0: 1
Names:
   0: xzName:              <module>
Filename:          <disassembly>
Argument count:    0
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  0
Stack size:        \d+
Flags:             0x0
Constants:
   0: 1
   1: None
Names:
   0: xzName:              <module>
Filename:          <disassembly>
Argument count:    0
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  0
Stack size:        \d+
Flags:             0x0
Constants:
   0: 0
   1: 1
Names:
   0: xc                     K   d d {V  t           2 3 d {V } 6 t          4 d {V }d d d           d {V  d S # 1 d {V swxY w Y   d S r   )rO   rP   )r+   rQ   s     r   	async_defr    s      
GGGGGGGaa1As   <
A	Aa/  Name:              async_def
Filename:          (.*)
Argument count:    0
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  2
Stack size:        \d+
Flags:             OPTIMIZED, NEWLOCALS, COROUTINE
Constants:
   0: None
   1: 1
Names:
   0: b
   1: c
Variable names:
   0: a
   1: dc                   ^    e Zd Zej        efeefee	fe
efeefeefeefgZd Zd Zd Zd ZdS )CodeInfoTestsc                 ~    d| _         | j        D ]-\  }}|                     t          j        |          |           .d S Nr   )r   
test_pairsr  r   	code_info)r   r   r   s      r   test_code_infozCodeInfoTests.test_code_info  sK    ? 	9 	9KAxS]1--x8888	9 	9r   c                    d| _         | j        D ]\  }}t                      5 }t          j        |           d d d            n# 1 swxY w Y   |                     |                                |dz              t          j                    }t          j        ||           |                     |                                |           d S )Nr   r'   r  )	r   r  r   r   	show_coder  r   r   r   )r   r   r   r   s       r   test_show_codezCodeInfoTests.test_show_code  s    ? 	: 	:KAx "" !fa   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !V__..>>>[]]FM!&))))V__..9999	: 	:s   AA	
A	c                 j    |                      t          t          j        t	                                 d S r;   )r=  rG  r   r  rH  r   s    r   test_code_info_objectz#CodeInfoTests.test_code_info_object  s&    )S]FHH=====r   c                 V    |                      t          j        d          d           d S )Nr   0x0)r   r   pretty_flagsr   s    r   test_pretty_flags_no_flagsz(CodeInfoTests.test_pretty_flags_no_flags  s)    )!,,e44444r   N)r!   r"   r#   r   r  code_info_code_infor  code_info_trickyco_tricky_nested_fcode_info_tricky_nested_fr  code_info_expr_strr  code_info_simple_stmt_strr  code_info_compound_stmt_strr  code_info_async_defr  r  r  r  r  r   r   r   r  r    s        
})* 45#$1256%&J9 9 9
: : :> > >5 5 5 5 5r   r  c           	      B     d fd	}t           ddg i d           |S )Nr3   rI   c                 B     d fd	}t                      |S )NrJ   r  c                 0    t          | |           d S r;   r)   )r   rR  r+   rO   rP   rQ   s     r   innerzouter.<locals>.f.<locals>.inner  s!    !Q1a#####r   rJ   r  r)   )rP   rQ   r  r+   rO   s   `` r   rR  zouter.<locals>.f  sK    	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$aAqr   r   r	   Hello world!r3   rI   r)   )r+   rO   rR  s   `` r   outerr    sH          
 
!QAr2~...Hr   c                     t          d          D ] } t          |            | dk     r| dk    r n!t          d           | r$t          |            | dz  } | dk    r| dk     rn| $t          d           	 ddz   | 5 }t          d           d d d            n# 1 swxY w Y   n# t          $ r t          d	           Y nw xY wt          d
           d S # t          d
           w xY w)Nr.   rI   r  I can haz else clause?r	   %Who let lolcatz into this test suite?r   Never reach this%Here we go, here we go, here we go...OK, now we're done)r0   r*   ZeroDivisionError)rl   dodgys     r   jumpyr    sw   2YY ( (aq55q55E  	&'''
 7a	Qq55q55  7 	5666$	A  	&%$%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&  7 7 75666667 	"#####"####sN   6B% ;C =BC BC  B!C %C>C  CC C&c                 H    t          |                     d                     S N	positions)str_replace)instrs    r   _stringify_instructionr  (  s      u~~~--...r   c            	      ,   t          j        t          t                    } t	          dd                    t          t          |                     dd           t          j        t                      t                    } t	          dd                    t          t          |                     dd           t          j         t                                  t                    } t	          dd                    t          t          |                     dd           t          j        t          t                    } t	          d	d                    t          t          |                     dd           t          j         t                     d S )
N
first_linezexpected_opinfo_outer = [
  z,
  z,
]r   )sepzexpected_opinfo_f = [
  zexpected_opinfo_inner = [
  zexpected_opinfo_jumpy = [
  )r   r  r  expected_outer_liner*   r   mapr  expected_f_lineexpected_inner_liner  expected_jumpy_line)_instructionss    r   _prepare_test_casesr  -  sl   (;NOOOM	
)
,,s1=AA
B
BFPRT T T T(_MMMM	
%
,,s1=AA
B
BFPRT T T T(?RSSSM	
)
,,s1=AA
B
BFPRT T T T(;NOOOM	
)
,,s1=AA
B
BFPRT T T TGENNNNNr   	MAKE_CELL   r+   F)	r   r   argargvalr  r   starts_lineis_jump_targetr  rO   RESUME   r   r   rC      r  z(3, 4)r  LOAD_CLOSURE   r.   BUILD_TUPLEf         MAKE_FUNCTION   rA   zdefaults, closure   
STORE_FAST}   rR     LOAD_GLOBALt   r*   zNULL + print   
LOAD_DEREF       "   z''$   rh  &   
BUILD_LISTg   (   	BUILD_MAPi   r  r  z'Hello world!',   PRECALL   .   CALL   2   POP_TOP<   r   |   >   RETURN_VALUErE   @   COPY_FREE_VARS   rP   rQ   r  z(5, 6)   r        r      Noner0   zNULL + range10GET_ITERD      FOR_ITER]   b   zto 98rl   0   6   B   rM   
COMPARE_OPk   <F   r   r   P   zto 80L   JUMP_BACKWARD   zto 32N   6R   r{   T   `   zto 96Z   \   n      zto 128^   !   r  z'I can haz else clause?'p   ~         zto 204   r@                     	BINARY_OPz      z-=               zto 186                     zto 200         zto 234   r   zto 132      r  z''Who let lolcatz into this test suite?'            r         0   /         r  BEFORE_WITH5      r     r  z'Never reach this'i  i
  i  i  i  i  i  i   i$  i.  iH  zto 328i0  PUSH_EXC_INFO#   i2  WITH_EXCEPT_START1   i4  r   s   i@  zto 320i6  RERAISEw   i8  COPYx   i:  
POP_EXCEPTY   i<  i>  iB  iD  iF     i  zto 392iJ  r  iL  CHECK_EXC_MATCHiX  i  zto 384iZ  i\  ^  r  z''Here we go, here we go, here we go...'ij  il  ip  iz  i|  i~  i  i  i  r  z"OK, now we're done"i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  c                      d S r;   r   r   r   r   simplerw    s      r   )r   r   r  r  r  r   r  r  c                       e Zd Zd ZdS )InstructionTestCasec                b    d |D             }d |D             }|                      ||           d S )Nc                 :    g | ]}|                     d           S r  r  )r6   instr_1s     r   r8   z?InstructionTestCase.assertInstructionsEqual.<locals>.<listcomp>  )    MMMG$$t$44MMMr   c                 :    g | ]}|                     d           S r  r|  )r6   instr_2s     r   r8   z?InstructionTestCase.assertInstructionsEqual.<locals>.<listcomp>  r~  r   )r   )r   instrs_1instrs_2s      r   assertInstructionsEqualz+InstructionTestCase.assertInstructionsEqual  sD    MMHMMMMMHMMM8,,,,,r   N)r!   r"   r#   r  r   r   r   ry  ry    s#        - - - - -r   ry  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	 e
            d             Z e
            d	             Z e
            d
             Z xZS )InstructionTestsc                 B     t                      j        |  d | _        d S r;   )superr   r   )r   r  	__class__s     r   r   zInstructionTests.__init__  s"    $r   c                     t          j        t                    }|                     t	          |          t
                     d S r;   r   r  rw  r  r  expected_opinfo_simpler   actuals     r   test_default_first_linez(InstructionTests.test_default_first_line  s5    %f--$$T&\\3IJJJJJr   c                     t          j        t          d           }|                     t	          |          t
                     d S Nr  r  r  s     r   test_first_line_set_to_Nonez,InstructionTests.test_first_line_set_to_None  s:    %f>>>$$T&\\3IJJJJJr   c                     t          j        t          t                    }|                     t          |          t                     d S r  )r   r  r  r  r  r  expected_opinfo_outerr  s     r   
test_outerzInstructionTests.test_outer   ;    %e8KLLL$$T&\\3HIIIIIr   c                     t                      5  t                      }d d d            n# 1 swxY w Y   t          j        |t                    }|                     t          |          t                     d S r  )r   r  r   r  r  r  r  expected_opinfo_f)r   rR  r  s      r   test_nestedzInstructionTests.test_nested$  s     	 	A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	%aODDD$$T&\\3DEEEEEs   *..c                    t                      5   t                                  }d d d            n# 1 swxY w Y   t          j        |t                    }|                     t          |          t                     d S r  )r   r  r   r  r  r  r  expected_opinfo_inner)r   r  r  s      r   test_doubly_nestedz#InstructionTests.test_doubly_nested*  s     	 	EGGIIE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	%e8KLLL$$T&\\3HIIIIIs   266c                     t          j        t          t                    }|                     t          |          t                     d S r  )r   r  r  r  r  r  expected_opinfo_jumpyr  s     r   
test_jumpyzInstructionTests.test_jumpy0  r  r   c                     t          ddd          }d t          j        |          D             }g d}|                     ||           d |D             }|                     ||           d S )Nzf(
  x, y, z
)<test>r   c                     g | ]	}|j         
S r   r  r6   r  s     r   r8   z6InstructionTests.test_co_positions.<locals>.<listcomp>7  s*     
 
 
 O
 
 
r   ))r   r	   r   r   r	   r	   r   r	   r  )r&   r&   r&   r3   )r&   r&   rJ   r  )r&   r&   rq   rA   r	   r3   r   r	   r  r  r  r  c                 B    g | ]}|j         |j        |j        |j        fS r   )lineno
end_lineno
col_offsetend_col_offset)r6   poss     r   r8   z6InstructionTests.test_co_positions.<locals>.<listcomp>J  s:     
 
 
 Z9KL
 
 
r   )rl  r   r  r   )r   coder  r   named_positionss        r   test_co_positionsz"InstructionTests.test_co_positions4  s    )8V<<
 
-d33
 
 
	
 
 
 	H---
 
 
 
 
 	(33333r   c                 6   t          ddd          }|                    d          }t          j        |          }|D ]}|                     |          5  |j        }|                     t          |          d           |j        dk    r	 d d d            [| 	                    |j
                   | 	                    |j                   | 	                    |j                   | 	                    |j                   d d d            n# 1 swxY w Y   d S )	Nzx, y, zr  r   r   r>   )r  rI   r  )rl  r  r   r  r   r  r   r   r   assertIsNoner  r  r  r  )r   r  code_without_location_tabler  r  r  s         r   test_co_positions_missing_infoz/InstructionTests.test_co_positions_missing_infoP  sq   y(F33&*lll&D&D#%&ABB! 		< 		<K+66 < <'1	  Y333%11	< < < < < < <
 !!)"2333!!)"6777!!)"6777!!)":;;;< < < < < < < < < < < < < < <		< 		<s   7DA(DD	D	c           	      ,  	
 d }|j         }|j        d d d         }t          j        d         	t	          	fd|D                       }t          |          |z
  }d||z  k    s
J d            dD ]
dD ]}|                     d|d	
          5  	
fd
t          ||                                d          D             }d t          j
        ||
          D             }|                     ||           d d d            n# 1 swxY w Y   d S )Nc              3      K   |dz  d| z  |z  z
  }| t                               |          z
  d| z  z  V  |r(| t                               |          z   d| z  z  V  d S d S )Nr&   rI   )cmathsqrtrN   s       r   rootszEInstructionTests.test_co_positions_with_lots_of_caches.<locals>.rootsb  s      1q1uqy A2

1%!a%0000 5rEJJqMM)a!e4444445 5r   r&   r  c              3   $   K   | ]
}|k    V  d S r;   r   )r6   opcache_opcodes     r   	<genexpr>zIInstructionTests.test_co_positions_with_lots_of_caches.<locals>.<genexpr>j  s(      66BR<'666666r   gUUUUUU?zthis test needs more caches!r  z	adaptive=z, show_caches=c                 *    g | ]\  }}s|k    |S r   r   )r6   r  r  r  r  s      r   r8   zJInstructionTests.test_co_positions_with_lots_of_caches.<locals>.<listcomp>q  s<     $ $ $)B	&$ +-*<*< "*<*<*<r   T)strictc                     g | ]	}|j         
S r   r  )r6   r  s     r   r8   zJInstructionTests.test_co_positions_with_lots_of_caches.<locals>.<listcomp>v  s+     % % %' $-% % %r   )rY  r  )r  r  r   r   sumr   r   zipco_positionsr   r  r   )r   r  r  opsr  
non_cachesrY  r  dis_positionsr  r  s            @@r   %test_co_positions_with_lots_of_cachesz6InstructionTests.test_co_positions_with_lots_of_caches`  s   	5 	5 	5
 ~l33Q3|G,6666#66666XX&
++++-K+++( 	B 	BK) B B\\"@X"@"@+"@"@AA B B$ $ $ $ $-0d6G6G6I6IRV-W-W-W$ $ $L
% %+.+? 8, , ,% % %M $$\=AAAB B B B B B B B B B B B B B BB	B 	Bs   A)DDD)r!   r"   r#   r   r  r  r  r  r  r  r   r  r  r  __classcell__r  s   @r   r  r    s           K K KK K KJ J JF F FJ J JJ J J 4 4 46 < < < B B B B B B Br   r  c                   d    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
 e            d	             Zd
S )BytecodeTestsc                    t           t          d          j        dt           j        fD ]i}|                     |          5  t          j        |          }|                     |j        t          j
                   d d d            n# 1 swxY w Y   j|                     t          t
          j        t                                 d S Nr	   a=1)obj)r,   r   r   r  r   r   BytecodeassertIsInstancecodeobjtypesCodeTyper=  rG  rH  )r   r  rO   s      r   test_instantiationz BytecodeTests.test_instantiation  s    1r{; 	A 	AC#&& A AL%%%%ai@@@A A A A A A A A A A A A A A A 	)S\688<<<<<s    :BB
	B
	c                 f   t           t          d          j        dt           j        fD ]}|                     |          5  t          t          j        |                    }t          t          j        |                    }| 	                    ||           d d d            n# 1 swxY w Y   d S r  )
r,   r   r   r  r   r  r   r  r  r  )r   r  
via_objectvia_generators       r   test_iterationzBytecodeTests.test_iteration  s    1r{; 	H 	HC#&& H H!#,s"3"344
 $S%9#%>%> ? ?,,ZGGGH H H H H H H H H H H H H H H	H 	Hs    AB%%B)	,B)	c                     t          j        t          t                    }|                     t          |          t                     d S r  )r   r  r  r  r  r  r  r  s     r   test_explicit_first_linez&BytecodeTests.test_explicit_first_line  s:    e0CDDD$$T&\\3HIIIIIr   c                    t          j        t                                                     }|                                                    d          d         }t          t          j        j                  }|                     ||           t          j        t          d                                           }|                                                    d          d         }|                     |d           d S )NrL   r   ru  r  350)	r   r  rw  strip	partitionr  r  co_firstlinenor   )r   r  r   s      r   test_source_line_in_disassemblyz-BytecodeTests.test_source_line_in_disassembly  s    f%%))++))#..q1v566***f55599;;))#..q1'''''r   c                     d| _         t          j        D ]A\  }}t          j        |          }|                     |                                |           Bd S r  )r   r  r  r   r  r  info)r   r   r   rO   s       r   	test_infozBytecodeTests.test_info  sW    (3 	1 	1KAxQAQVVXXx0000	1 	1r   c                     t          j        t                                                     }|                     |t                     d S r;   )r   r  r,   r   r   r  s     r   test_disassembledzBytecodeTests.test_disassembled  s9    b!!%%''##FE22222r   c                     t                      }t          j                            |          }|j        r|j        }|j        |                     |j        |j                   d S r;   )r   r   r  from_tracebackr   r   current_offsetrC  r   r   rO   s      r   test_from_tracebackz!BytecodeTests.test_from_traceback  sV    XXL''++j)rz"bj))2;77777r   c                     d | _         t                      }t          j                            |          }|                     |                     |                                          t                     d S r;   )r   r   r   r  r  r   r   dis_tracebackr  s      r   test_from_traceback_disz%BytecodeTests.test_from_traceback_dis  sY    XXL''++++AEEGG44mDDDDDr   c                     t          j        d          }t          ||j                                                  D ]\  }}|j        |k    sJ d S )Nr  )r   r  r  r  r  r  )r   bytecoder  r  s       r   test_bytecode_co_positionsz(BytecodeTests.test_bytecode_co_positions  s^    <&& #Hh.>.K.K.M.M N N 	0 	0E9?i/////	0 	0r   N)r!   r"   r#   r  r  r  r  r  r  r  r  r   r  r   r   r   r  r    s        = = =H H HJ J J	( 	( 	(1 1 13 3 38 8 8E E E 0 0 0 0 0r   r  c                        e Zd Zd Zd Zd ZdS )TestBytecodeTestCasec                     t          ddd          }|                     |dd           |                     |d           |                     |dd           d S )Na = 1<string>r   r   r	   	LOAD_NAMEr+   rl  assertInBytecodeassertNotInBytecoder   r  s     r   *test_assert_not_in_with_op_not_in_bytecodez?TestBytecodeTestCase.test_assert_not_in_with_op_not_in_bytecode  s_    w
F33dL!444  {333  {C88888r   c                     t          ddd          }|                     |d           |                     |dd           |                     |dd           d S )Nr  r  r   r   r	   r&   r  r  s     r   +test_assert_not_in_with_arg_not_in_bytecodez@TestBytecodeTestCase.test_assert_not_in_with_arg_not_in_bytecode  s_    w
F33dL111dL!444  |Q77777r   c                     t          ddd          }|                     t                    5  |                     |dd           d d d            d S # 1 swxY w Y   d S )Nr  r  r   r   r	   )rl  r=  AssertionErrorr  r  s     r   'test_assert_not_in_with_arg_in_bytecodez<TestBytecodeTestCase.test_assert_not_in_with_arg_in_bytecode  s    w
F33~.. 	< 	<$$T<;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   AAAN)r!   r"   r#   r  r  r  r   r   r   r  r    sA        9 9 98 8 8< < < < <r   r  c                        e Zd Zd Zd Zd ZdS )TestFinderMethodsc                 \   g d}|D ]\  }}|                      |          5  t          |dd          }t          t          j        |                    }|                     t          |          d           |                     |d         |           d d d            n# 1 swxY w Y   d S )N))zimport a.b.c)za.b.cr   N)zfrom a.b import ca.br   rP   )zfrom a.b import c as dr  )zfrom a.b import *)r  r   *)zfrom ...a.b import c as d)r  r3   r  )z from ..a.b import c as d, e as f)r  r&   )rP   r   )zfrom ..a.b import *)r  r&   r  srcr  r   r	   r   )r   rl  tupler   _find_importsr   r   r   casesr  r   r  r1   s         r   test__find_importsz$TestFinderMethods.test__find_imports  s    
 
 
 # 	3 	3MC#&& 3 3sJ77C-d3344  S1---  Q222	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3s   A2B  B$	'B$	c                 
   g d}|D ]{\  }}|                      |          5  t          |dd          }t          t          j        |                    }|                     ||           d d d            n# 1 swxY w Y   |d S )N))zx+yr   )zx=y=1rd   )zx+=yr   )zglobal x
x=y=1rd   )zglobal x
z=x)rc   r  r  r   )r   rl  r	  r   _find_store_namesr   r  s         r   test__find_store_namesz(TestFinderMethods.test__find_store_names  s    
 
 
 # 	0 	0MC#&& 0 0sJ77C1$7788  h///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   A	A77A;	>A;	c                     t          j        t          j        j                  }d t
          D             }|                     t          |          t          |                     d S )Nc                 *    g | ]}|j         	|j        S r   )r  r   r  s     r   r8   z5TestFinderMethods.test_findlabels.<locals>.<listcomp>  s3     
 
 
#
L
 
 
r   )r   
findlabelsr  r  r  r  r   sorted)r   labelsjumpss      r   test_findlabelsz!TestFinderMethods.test_findlabels  s^     677
 
.
 
 
 	77777r   N)r!   r"   r#   r  r  r  r   r   r   r   r     sA        3 3 3"0 0 08 8 8 8 8r   r   c                   8     e Zd Zd fdZd Zd Zd Zd Z xZS )	TestDisTracebackreturnNc                 v    	 t           `n# t          $ r Y nw xY wt                                                      S r;   )r:  r;  r<  r  setUp)r   r  s    r   r  zTestDisTraceback.setUp  sC    	"" 	 	 	D	ww}}s    
c                     t          j                    }t          j        |          5  t	          j        |           d d d            n# 1 swxY w Y   |                                S r;   r   r   r   r   r   distbr   r   r   r   s      r   r   z TestDisTraceback.get_disassembly  s    '// 	 	IbMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   s   A		AAc                     |                      t                    5  t          j                     d d d            d S # 1 swxY w Y   d S r;   )r=  r>  r   r  r   s    r   test_distb_emptyz!TestDisTraceback.test_distb_empty	  s    |,, 	 	IKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   <A A c                     d | _         t                      }|t          _        |                     |                     d           t                     d S r;   )r   r   r:  r;  r   r   r  r   r   s     r   test_distb_last_tracebackz*TestDisTraceback.test_distb_last_traceback  sD    XX##D$8$8$>$>NNNNNr   c                     d | _         t                      }|                     |                     |          t                     d S r;   )r   r   r   r   r  r$  s     r   test_distb_explicit_argz(TestDisTraceback.test_distb_explicit_arg  s<    XX##D$8$8$<$<mLLLLLr   )r  N)	r!   r"   r#   r  r   r"  r%  r'  r  r  s   @r   r  r    s             ! ! !  O O OM M M M M M Mr   r  c                       e Zd Zd ZdS )TestDisTracebackWithFilec                     t          j                    }t          j        |          5  t	          j        ||           d d d            n# 1 swxY w Y   |                                S )Nr  r  r   s      r   r   z(TestDisTracebackWithFile.get_disassembly  s    '// 	' 	'Ibv&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'   s   AAANr  r   r   r   r)  r)    s#        ! ! ! ! !r   r)  __main__)r   )T)r	   r&   )r   r   r   ru   r:  r  unittesttest.supportr   r   r   test.support.bytecode_helperr   r   r   rA  rB  TRACEBACK_CODEr   r   r  r  r  r  r    r"  r   r  r!   r  r,   r   r  r2   r   r9   __file__r   r<   r  r   bytesr   r   r   r   r   r   r   r   r   r  r  r  r	  r
  r  r  r  r  rR   r3  rU   rW   r6  r7  rY   r[   r^   rg   rM  rN  rO  ri   rZ  rm   r|  rp   r  r  TestCasers   r   r  r  r   code_info_constsr  r$   r  r  __func__	co_constsr  r  r  r  r  r  r  r  r  r  r  _line_offsetcode_object_fr  code_object_innerr  r  r  r  Instructionreprr  r  r  r  rw  r  ry  r  r  r  r   r  r)  mainr   r   r   <module>r<     s4       



 				 				 



   M M M M M M M M M M 9 9 9 9 9 9    ")
 
 
 
 
 
 
 

 
{*BK,@,ORS,SU
V 	 
 
u~$ben&Ca&GI
J 	 
u~$ben&Ca&GI	J  & 
{222	u~~~)))	u~~~***		,  	 
{!	{!A%	{!A%'	' 	  
$ ((1,(1,(1,(1,(1,.%.4  	 	 	 	
" ))A-)A-)A-)A-/#/2	 	 	
 %--7-CC        5



L #	       	   D   &L $$q($q($q($q($q($q(*M,*\& & &$ '):)IA)MN%O(    0 **Q.*Q.*Q.	1	<2  / /!3 /!3 /!3	3	 >         
{!	{!A%	{!A%	{!A%	(  	{!A%	{!A%	{!A%	{!A%!2 	{!A%	{!A%*     ((1,(1,. .     * ((1,(1,(1,/+ / 4  
 !0!01477   =( =( =( =( =((# =( =( =(@\@ \@ \@ \@ \@{ \@ \@ \@~
	! 	! 	! 	! 	!x 	! 	! 	! =  O    $ $ $ $ $ $ $
 @ _-7:  ,      
 &5 5 5 5 5H% 5 5 5F   $ $ $<  ~,q0(+.=!+A. '6E  / / /
  " o+[!CUVdhy~  KO  P  P  P+[!CUVdhy~  KO  P  P  P+XcqBq^_pu  BF  G  G  G+\#1VX^_mn  @E  QU  V  V  V+^CQsCXYgk  }B  NR  S  S  S+^CQsCXZhl  ~C  OS  T  T  T+]3AaTVdhy~  KO  P  P  P+\#1]TXTXYfTgTgpr  AE  V[  gk  l  l  l+_SaK^giw{  MR  ^b  c  c  c+\#1S#VXfj  |A  MQ  R  R  R+]3Ag~fhvw  IN  Z^  _  _  _+\#1S#VXfj  |A  MQ  R  R  R+\#1S#VXfj  |A  MQ  R  R  R+\#1RVXfj  |A  MQ  R  R  R+\#1QTVdhy~  KO  P  P  P+\#1QSUcgx}  JN  O  O  O+[!ArRTbfw|  IM  N  N  N+\#1^Uenp  C  TY  ei  j  j  j+Ys!RPR`duz  GK  L  L  L+VCQq"R]arw  DH  I  I  I+Yqd4TVdhy~  KO  P  P  P+[!CUWefw|  IM  N  N  N+^BDrZ\jn  @E  QU  V  V  V/ 6 +%cqBWXfj  |A  MQ  R  R  R+[!CUVdhy~  KO  P  P  P+[!CUVdhy~  KO  P  P  P+XcqBq^_pu  BF  G  G  G+\#1VX^_mn  @E  QU  V  V  V+^CQsCXZhl  ~C  OS  T  T  T+^CQsCXZhl  ~C  OS  T  T  T+^CQsCXZhl  ~C  OS  T  T  T+^CQsCXZhl  ~C  OS  T  T  T+]3AaTVdhy~  KO  P  P  P+\#1=NX\X\]nXoXoxz  IM  ^c  os  t  t  t+_SaK^giw{  MR  ^b  c  c  c+\#1Wg^`nr  DI  UY  Z  Z  Z+]3Ag~fhvw  IN  Z^  _  _  _+\#1S#VXfj  |A  MQ  R  R  R+\#1S#VXfj  |A  MQ  R  R  R+\#1S#VXfj  |A  MQ  R  R  R+\#1S#VXfj  |A  MQ  R  R  R+Ys!RPR`duz  GK  L  L  L+VCQq"R]arw  DH  I  I  I+Yqd4TVdhy~  KO  P  P  P+[!GW]_mn  @E  QU  V  V  V+^BDrZ\jn  @E  QU  V  V  V/ 6 +%cqBWXfj  |A  MQ  R  R  R+XcqBq^_pu  BF  G  G  G+]3Ag~fguv  HM  Y]  ^  ^  ^+\#1S#VXfj  |A  MQ  R  R  R+\#1S#VXfj  |A  MQ  R  R  R+\#1S#VXfj  |A  MQ  R  R  R+\#1S#VXfj  |A  MQ  R  R  R+[!CUWeiz  LP  Q  Q  Q+[!CUWeiz  LP  Q  Q  Q+Ys!RPR`duz  GK  L  L  L+VCQq"R]arw  DH  I  I  I+Yqd4TVdhy~  KO  P  P  P+\#1T6Z\jn  @E  QU  V  V  V+^BDrZ\jn  @E  QU  V  V  V "|+XcqBq^_pu  BF  G  G  G|+]3Ag~fguv  HM  Y]  ^  ^  ^| +\#1RVXfj  |A  MQ  R  R  R| +Ys!RPR`duz  GK  L  L  L	|
 +VCQq"R]arw  DH  I  I  I| +ZT2VXfj  |A  MQ  R  R  R| +Z2wWYgk  }A  MQ  R  R  R| +\#1S#VXfj  |A  MQ  R  R  R| +]3Ag~fhvw  IN  Z^  _  _  _| +[!CUWeiz  LP  Q  Q  Q| +Ys!RPR`duz  GK  L  L  L| +VCQq"R]arw  DH  I  I  I| +Yqd4TVdhy~  KO  P  P  P| +[!CUWefw|  IM  N  N  N| +\#1QTVdhy~  KO  P  P  P|  +\#1S#VXfj  |A  MQ  R  R  R!|" +0!BX_hjx|  NS  _c  d  d  d#|$ +_SbW]_mn  @E  QU  V  V  V%|& +[!CUWefw{  HL  M  M  M'|( +\#1QTVdhy~  KO  P  P  P)|* +\#1S#VXfj  |A  MQ  R  R  R+|, +0!BX_hjx|  NS  _c  d  d  d-|. +Yqd4TVdev{  HL  M  M  M/|0 +^CRX^`nr  DI  UY  Z  Z  Z1|2 +_SbW]_mn  @D  PT  U  U  U3|4 +]3Ag~fhvx  JN  Z^  _  _  _5|6 +\#1=U_y  CF  TX  in  z~      7|8 +Ys!RPSaev{  HL  M  M  M9|: +VCQq"S^bsx  EI  J  J  J;|< +Yqd4TWeiz  LP  Q  Q  Q=|> +[!CUXfhy}  JN  O  O  O?|@ +0"SZbkn  }A  RW  cg  h  h  hA|B +]3Ag~fiwy  KO  [_  `  `  `C|D +[!CUXfj  |A  MQ  R  R  RE|F +Ys!RPSaev{  HL  M  M  MG|H +VCQq"S^bsx  EI  J  J  JI|J +Yqd4TWeiz  LP  Q  Q  QK|L +[!CUXfhy~  KO  P  P  PM|N +\#1QTWeiz  LP  Q  Q  QO|P +["RVYgk  }B  NR  S  S  SQ|R +\#1S#VYgk  }B  NR  S  S  SS|T +[!CUXfhy~  KO  P  P  PU|V +\#1QTWeiz  LP  Q  Q  QW|X +\#1S#VYgk  }B  NR  S  S  SY|Z +0!CYajm{  QV  bf  g  g  g[|\ +_Sbh_bpr  DI  UY  Z  Z  Z]|^ +[!CUXfhy}  JN  O  O  O_|` +\#1QTWeiz  LP  Q  Q  Qa|b +\#1S#VYgk  }B  NR  S  S  Sc|d +0!CYajm{  QV  bf  g  g  ge|f +^CRX^aoq  CH  TX  Y  Y  Yg|h +[!CUXfhy}  JN  O  O  Oi|j +0"SZbkn  }A  RW  cg  h  h  hk|l +]3Ag~fiwy  KO  [_  `  `  `m|n +\#1=d  oX  ad  rv  GL  X\  ]  ]  ]o|p +Ys!RPSaev{  HL  M  M  Mq|r +VCQq"S^bsx  EI  J  J  Js|t +Yqd4TWeiz  LP  Q  Q  Qu|v +U1$tRPSactx  EI  J  J  Jw|x +\#1QTWegx}  JN  O  O  Oy|z +\#1QTWeiz  LP  Q  Q  Q{|| +["RUXfj  |A  MQ  R  R  R}|~ +Yqd4TWeiz  LP  Q  Q  Q|@ +[!CUXfhy~  KO  P  P  PA|B +]24bY\jn  @E  QU  V  V  VC|D +\#1Wg^aos  EJ  VZ  [  [  [E|F +]3Ag~fiwy  KP  \`  a  a  aG|H +\#1=OYmvy  HL  ]b  nr  s  s  sI|J +Ys!RPSaev{  HL  M  M  MK|L +VCQq"S^bsx  EI  J  J  JM|N +Yqd4TWeiz  LP  Q  Q  QO|P +\#1T6Z]km  D  PT  U  U  UQ|R +\#1T6Z]ko  AF  RV  W  W  WS|T +\#1T6Z]ko  AF  RV  W  W  WU|V +Ys!RPSaev{  HL  M  M  MW|X +VCQq"S^bsx  EI  J  J  JY|Z +Yqd4TWeiz  LP  Q  Q  Q[|\ +^CRX^aos  EJ  VZ  [  [  []|^ +_RT$PR[^lp  BG  SW  X  X  X_|` +(dTV_bpt  FK  W[  \  \  \a|b +/3X`ilz~  PU  ae  f  f  fc|d +Ys!RPSaev{  HL  M  M  Me|f +VCQq"S^bsx  EI  J  J  Jg|h +\"$tRX[im  D  PT  U  U  Ui|j +Ys!RPSaev{  HL  M  M  Mk|l +Yqd4TWeiz~  KO  P  P  Pm|n +\"$tRX[im  D  PT  U  U  Uo|p +Yqd4TWeiz  LP  Q  Q  Qq|r +Yqd4TWeiz  LP  Q  Q  Qs|t +^CRX^aos  EI  UY  Z  Z  Zu|v +_RT$PR[^lp  BG  SW  X  X  Xw|x +]3A>Q[nwz  IK  \a  mq  r  r  ry|z +&rtDRT]`nr  DI  UY  Z  Z  Z{|| +0"SZbkn  }A  RW  cg  h  h  h}|~ +Yqd4TWeiz  LP  Q  Q  Q|@ +]3Ag~fiwy  KP  \`  a  a  aA|B +\#1=d  oX  ad  rv  GL  X\  ]  ]  ]C|D +Ys!RPSaev{  HL  M  M  ME|F +VCQq"S^bsx  EI  J  J  JG|H +Yqd4TWeiz  LP  Q  Q  QI|J +\"$tRX[im  D  PT  U  U  UK|L +^CQsH]`nr  DI  UY  Z  Z  ZM|N +Ys!RPSactx  EI  J  J  JO|P +VCQq"S^bsx  EI  J  J  JQ|R +\"$tRX[im  D  PT  U  U  US|T +Ys!RPSaev{  HL  M  M  MU|V +]3Ag~fiwy  KO  [_  `  `  `W|X +\#2>R\s|  NR  ch  tx  y  y  yY|Z +Ys!RPSaev{  HL  M  M  M[|\ +VCQq"S^bsx  EI  J  J  J]|^ +Yqd4TWeiz  LP  Q  Q  Q_|` +\#1T6Z]ko  AF  RV  W  W  Wa|b +^BDrZ]ko  AF  RV  W  W  Wc|d +_RT$PR[^lp  BG  SW  X  X  Xe|f +]3Ag~fiw{  MR  ^b  c  c  cg|h +\#2>R\s|  NR  ch  tx  y  y  yi|j +Ys!RPSaev{  HL  M  M  Mk|l +VCQq"S^bsx  EI  J  J  Jm|n +Yqd4TWeiz  LP  Q  Q  Qo|p +Ys!RPSaev{  HL  M  M  Mq|r +VCQq"S^bsx  EI  J  J  Js|t +\"$tRX[im  D  PT  U  U  Uu|v +Ys!RPSaev{  HL  M  M  Mw| ~   +XcqBq^d^m^|  NS  _c  d  d  d+\#1T6Z[im  D  E  E  E+^BDrZ[im  D  E  E  E - - - - -* - - -jB jB jB jB jB* jB jB jB\<0 <0 <0 <0 <0' <0 <0 <0|< < < < <+ < < <$(8 (8 (8 (8 (8) (8 (8 (8VM M M M M{ M M MB! ! ! ! !/ ! ! ! zHMOOOOO r   