Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_bdb.cpython-311.opt-2.pyc
�

�Ke�����	ddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZddl
mZddl
mZddl
mZGd�de��ZGd	�d
e��ZGd�de��ZGd
�de��ZdZd�Zd�ZGd�dej��ZGd�de��ZGd�d��Zd.d�Ze	d���Zeddfd�ZdZ e dzZ!d�Z"d�Z#d�Z$d �Z%Gd!�d"ej&��Z'Gd#�d$e'��Z(Gd%�d&e'��Z)Gd'�d(e'��Z*Gd)�d*e'��Z+Gd+�d,ej&��Z,e-d-krej.��dSdS)/�N)�contextmanager)�islice�repeat)�
import_helper)�	os_helper)�
patch_listc��eZdZdS)�BdbExceptionN��__name__�
__module__�__qualname__���7/usr/local/apps/python3/lib/python3.11/test/test_bdb.pyr
r
A��������rr
c��eZdZdS)�BdbErrorNrrrrrrBrrrc��eZdZdS)�BdbSyntaxErrorNrrrrrrCrrrc��eZdZdS)�BdbNotExpectedErrorNrrrrrrDrrrc�B�tj���dS�N)�_bdb�
Breakpoint�clearBreakpointsrrr�reset_BreakpointrLs���O�$�$�&�&�&�&�&rc�F�d�tjjD��}|sdSd}|D]|}|sd}d}|jrdnd}|jrdnd	}|d
|j|||j|jtj	�
|j��|jfzz
}|j
r
|d|j
��z
}|dz
}�}|S)
Nc��g|]}|�|��Srr)�.0�bps  r�
<listcomp>z$info_breakpoints.<locals>.<listcomp>Ps��>�>�>�r�2�>�r�>�>�>r�Fz!BpNum Temp Enb Hits Ignore Where
Tzyes zno  �yeszno z%-5d %s %s %-4d %-6d at %s:%dz
	stop only if �
)rr�
bpbynumber�	temporary�enabled�number�hits�ignore�os�path�basename�file�line�cond)�bp_list�header_addedr"�info�disp�enabs      r�info_breakpointsr8Os���>�>�T�_�7�>�>�>�G����r��L������	 �7�D��L���1�v�v�6���
�-�u�u����0��Y��d�B�G�R�Y��W�%�%�b�g�.�.���9�9�	:���7�	7��D�R�W�W�6�6�D�������Krc�^��eZdZ	�fd�Z		d�fd�	Z�fd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Z�xZS)
�Bdbc�X��d|_t���|||��Sr)�	currentbp�super�trace_dispatch)�self�frame�event�arg�	__class__s    �rr>zBdb.trace_dispatchgs&�������w�w�%�%�e�U�C�8�8�8rFNc���t|t��ri|tkrt��}n#t	j|dd���}|j}t||��}|j}	|	j	}|	j
}|	j}t���
|||||���}
t|
t��rt|
���|
S)N���)r(r2�funcname)�
isinstance�str�__file__�globals�	importlib�
import_module�__dict__�eval�__code__�co_filename�co_firstlineno�co_namer=�	set_breakr)r?�filename�linenor(r2rF�globals_�module�func�code�resrCs           �rrSz
Bdb.set_breakks�����h��$�$�
	$��8�#�#�"�9�9���"�0��#�2�#��?�?��!�?����(�+�+�D��=�D��'�H��(�F��|�H��g�g����&�I�&*�X� �?�?���c�3���	 ��3�-�-���
rc���t���||��\|_|_|j|jd|_|j|jfS�Nr)r=�	get_stack�stack�indexr@)r?�f�trCs   �rr]z
Bdb.get_stacksI���!&���!2�!2�1�a�!8�!8���
�D�J��Z��
�+�A�.��
��z�4�:�%�%rc�R�	|�|��}|xjdz
c_dS�N�)�get_bpbynumberr,�r?�bpnumr"s   r�
set_ignorezBdb.set_ignore�s+��F�
�
 �
 ��
'�
'��
�	�	�Q��	�	�	�	rc�>�|�|��}d|_dS)NT�rer)rfs   r�
set_enablezBdb.set_enable�s ��
�
 �
 ��
'�
'����
�
�
rc�>�|�|��}d|_dS)NFrjrfs   r�set_disablezBdb.set_disable�s ��
�
 �
 ��
'�
'����
�
�
rc�T�|�||��}|rt|���dSr)�clear_breakr)r?�fnamerU�errs    r�	set_clearz
Bdb.set_clear�s5�����u�f�-�-���	 ��3�-�-��	 �	 rc��	|jstd���|xjdzc_|j|jd|_dS)NzOldest framerdr)r_rr^r@�r?s r�set_upz
Bdb.set_up�sE��)��z�	+��>�*�*�*��
�
�a��
�
��Z��
�+�A�.��
�
�
rc��	|jdzt|j��krtd���|xjdz
c_|j|jd|_dS)NrdzNewest framer)r_�lenr^rr@rts r�set_downzBdb.set_down�sT��+��:��>�S���_�_�,�,��>�*�*�*��
�
�a��
�
��Z��
�+�A�.��
�
�
r)FNN)
rr
rr>rSr]rhrkrmrrrurx�
__classcell__�rCs@rr:r:ds��������.�9�9�9�9�9�AE��������(&�&�&�&�&�
���
������ � � �
/�/�/�/�/�/�/�/�/�/rr:c���eZdZ	d�fd�	Zd�Z�fd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Zd�Z�xZS)�TracerNFc���t���|���||_||_|�d|znd|_|���dS)N��skipzDry-run results for %s:)r=�__init__�
expect_set�dry_run�header�	init_test)r?r�rr��	test_caserCs     �rr�zTracer.__init__�s_���
�����d��#�#�#�$������ �,�1�9�<�<�26�	
���������rc���d|_d|_d|_tt	|jddd����|_tt	|jddd����|_dS)Nr�rd)�
cur_except�
expect_set_no�breakpoint_hits�listrr��
expected_list�set_listrts rr�zTracer.init_test�s\��������#���!�&���!�T�1�"E�"E�F�F����V�D�O�Q��a�@�@�A�A��
�
�
rc���|j�|j�|dkrK	t���|||��}|S#t$r}||_|jcYd}~Sd}~wwxYwt���|||��S�N�	exception)r�r=r>r
)r?r@rArBrZ�erCs      �rr>zTracer.trace_dispatch�s����
�?�&��/�!��K���
+��g�g�,�,�U�E�3�?�?���
���
+�
+�
+�"#����*�*�*�*�*�*�*�����
+�����7�7�)�)�%���<�<�<s�$<�
A�
A�A�Ac��|�|��sdS|�d||��|���dS)N�call)�	stop_here�
process_event�next_set_method)r?r@�
argument_lists   r�	user_callzTracer.user_call�sM���~�~�e�$�$�	��F����6�5�-�8�8�8��������rc�B�|�d|��|jrR|jrKt���d��}|�d��D]}t
d|z���|���d|_|���dS)Nr1r&z  )	r�r�r�r8�strip�split�print�delete_temporariesr�)r?r@r5r1s    r�	user_linezTracer.user_line�s������6�5�)�)�)��<�	#�D�0�	#�#�%�%�+�+�D�1�1�D��
�
�4�(�(�
#�
#���d�T�k�"�"�"�"����!�!�!�#����������rc�\�|�d||��|���dS)N�return)r�r�)r?r@�return_values   r�user_returnzTracer.user_return�s2�����8�U�L�9�9�9��������rc�h�||_|�d|��|���dSr�)�exc_infor�r�)r?r@r�s   r�user_exceptionzTracer.user_exception�s7�� ��
����;��.�.�.��������rc�(�|jg}||f|_dSr)r<r�)r?rBr3s   r�do_clearzTracer.do_clear�s���>�"�� '��1����rc�b�|jr%|jdD]}|�|���dSdSrc)r��clear_bpbynumber)r?�ns  rr�zTracer.delete_temporaries�sO����	)��)�!�,�
)�
)���%�%�a�(�(�(�(�	)�	)�
)�
)rc���|xjdz
c_	|j�d��|_n%#t$rtd|jz���wxYw|j�d��|_dS)Nrdrz-expect_set list exhausted, cannot pop item %d)r�r��pop�expect�
IndexErrorrr��	set_tuplerts r�pop_nextzTracer.pop_next�s������a����	$��,�0�0��3�3�D�K�K���	$�	$�	$�%�?��"�#�$�$�
$�	$������*�*�1�-�-����s	�2�"Ac�x���d}|dkr
�jd}��||���j��js�jg}|gf�_|�_�����jr���j��dS�j	r6��
�j	d|d������|dvr��d��dSt�j	��dk�r:|dkr�j	d\�}t������}�js��d�jz����
|�jdd	����
�fd
�|D���fd��jdD��d����
t|���jd
d��dS|dkrNt%�jd
�j	d��s*��d�j�jfz��dSdSdSdS)Nr�r�rzWrong event type)r�r��r1z(No breakpoints hit at expect_set item %dzBreakpoint numbers do not matchc� ��g|]
}�|��Srr)r!r��bpss  �rr#z(Tracer.process_event.<locals>.<listcomp> s���!9�!9�!9�Q�#�a�&�!9�!9�!9rc�D��g|]}��|��j��Sr)rer+)r!r�r?s  �rr#z(Tracer.process_event.<locals>.<listcomp>!s:���6�6�6���(�(��+�+�0�6�6�6rzWrong breakpoint hit countrdzWrong temporary breakpointsz/Wrong exception at expect_set item %d, got '%s')r�r]r<r�rAr�r��print_stater�r��check_equal�check_lno_name�check_expect_max_sizerw�sorted�keys�raise_not_expectedr�rG)	r?rAr@�args�tbr3�temporaries�bpnumsr�s	`       @rr�zTracer.process_event�s��������K�����q�!�B����u�b�!�!�!��>�%�d�.B�%��~�&�G�$+�R�=�D� ���
��
�
�����<�	����T�[�)�)�)��F��;�	"����T�[��^�U�4F�G�G�G����!�!�!��&�&�&��&�&�q�)�)�)�)�)�
���
�
��
!�
!�����#'�;�q�>� ��[�����
�
�+�+���+�,��+�+�B��*�+�,�,�,�� � ���)=�a�)@�5�7�7�7�� � �!9�!9�!9�!9�&�!9�!9�!9�6�6�6�6�!�1�!�4�6�6�6�0�2�2�2�� � ���!4�!4�d�6J�1�6M�1�3�3�3�3�3��+�%�%�!�$�-��"2�D�K��N�C�C�=��+�+�I��+�T�]�;�<�=�=�=�=�=�'"�
!�"&�%�=�=rc�V�||krdS|�d||j|fz��dS)Nz"%s at expect_set item %d, got '%s')r�r�)r?�expected�result�msgs    rr�zTracer.check_equal-sO���v����F���� D�!$�d�&8�&� A�!B�	C�	C�	C�	C�	Crc��	t|j��}|dkr6|���}|�|jd|d��|dkr3|�|jd|jjjd��dSdS)NrdzWrong line numberr�zWrong function name)rwr��lno_abs2relr�r@�f_coderR)r?�srUs   rr�zTracer.check_lno_name3s���9��������q�5�5��%�%�'�'�F����T�[��^�V�5H�I�I�I��q�5�5����T�[��^�T�Z�->�-F�0E�
G�
G�
G�
G�
G��5rc�t�t|j��|krtd|j�d|j�����dS)NzInvalid size of the z expect tuple: )rwr�rrA)r?�sizes  rr�zTracer.check_expect_max_size=sG���t�{���d�"�"� �.�"&�*�*�*�d�k�k�";�<�<�
<�#�"rc���|�|jjj��}|jj}||�t
��kr||jjjz
dzn|Src)�canonicr@r�rP�f_linenorIrQ�r?rprUs   rr�zTracer.lno_abs2relBs^�����T�Z�.�:�;�;����$������X�.�.�.�.��$�*�+�:�:�Q�>�>�4:�	<rc��|rH|�|��|�t��kr|jjj|zdz
n|Src)r�rIr@r�rQr�s   r�lno_rel2abszTracer.lno_rel2absHsO�����<�<��.�.�$�,�,�x�2H�2H�H�H��
�!�0�6�9�A�=�=��	rc��|���}|jjj}d|j||fz}|jrsd}|jdD]/}|dkr|dz
}||�d|�|��j��z
}�0|dz
}d|zdzt|jd��zd	z}|d|zz
}n#|jd
kr|d|j	dj
zz
}|dz
}|�d��t|j��zd
zS)Nz('%s', %d, '%s'�{rz, z: �}�(rd�)r�z), � �,)
r�r@r�rRrAr�rer+rHr�r�ljustr�)r?rUrR�stater�r�s      r�	get_statezTracer.get_stateMs+���!�!�#�#���*�#�+��!�T�Z���$A�A����
	6��C��)�!�,�
C�
C���#�:�:��4�K�C��1�1�1�d�&9�&9�!�&<�&<�&A�&A�B�B����3�J�C���)�d�"�S��)=�a�)@�%A�%A�A�C�G�C��T�C�Z��E�E�
�Z�;�
&�
&��T�D�M�!�,�5�5�5�E�
�����{�{�2����T�^�!4�!4�4�s�:�:rc��|�(|jdkrt��t|��td|j|���fz��dS)Nrdz%d: %s)r�r�r�)r?r�s  rr�zTracer.print_state_sT����$�"4��"9�"9��G�G�G��&�M�M�M�
�h�$�,�d�n�n�.>�.>�?�?�@�@�@�@�@rc��|dz
}|dt|j��zz
}|d|���zz
}t|���)Nr&z  Expected: %s
z  Got:      )rHr�r�r�r?r�s  rr�zTracer.raise_not_expectedesL���t����!�C���$4�$4�4�4���~���� 0� 0�0�0��!�#�&�&�&rc�T�|jd}t|j��dkr
|jdnd}t|d|z��}|dvr|��dS|dvr||j��dS|dkrBd}|r+|�|jjj|d��}||j|��dS|r|dvs|d	vr�|d
vr:|^}}}|�||��}||g}|�|��||�n|dvr||�n|d	vr
|��d|_|�	��|j
r|���n0|jr|�
��|�d��|���dSt!d
|jz���)Nrr�rd�set_)�step�continue�quit)�nextr��until)�break�clearr,�enable�disable)�up�down)r�r�)r,r�r�r�z"%s" is an invalid set_tuple)r�rw�getattrr@r�r�rP�extendrAr�r�r�r�r�r�r�r)r?�set_typer��
set_methodrUrp�remains       rr�zTracer.next_set_methodks+���>�!�$��$'���$7�$7�1�$<�$<�t�~�a� � �$���T�6�H�#4�5�5�
��3�3�3��J�L�L�L��F�
�+�
+�
+��J�t�z�"�"�"��F�
��
 �
 ��F��
3��)�)�$�*�*;�*G�*.�q�'�3�3���J�t�z�6�*�*�*��F�
�	1�X�"/�/�/�3;�~�3M�3M��-�-�-�)-�&��v���)�)�%��8�8���v������F�#�#�#��
�D�!�!�!��<�<�<��
�D�!�!�!��^�+�+��
�����D�J��M�M�O�O�O��|�
.�� � �"�"�"�"��;�*��'�'�)�)�)��*�*�1�-�-�-�� � �"�"�"�"�"� �!?�!%��"0�1�1�
1r)NFNr)rr
rr�r�r>r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�ryrzs@rr|r|�sz�������.�������B�B�B�=�=�=�=�=�$������������
2�2�2�
)�)�)�
.�.�.�0=�0=�0=�dC�C�C�G�G�G�<�<�<�
<�<�<����
;�;�;�$A�A�A�A�'�'�'�01�01�01�01�01�01�01rr|c�&�eZdZ	dd�Zd�Zdd�ZdS)�	TracerRunNc��||_|j|_t|j||j|������|_d|_dS)N)rr�r�)r�r�r|r��id�tracer�_original_tracer)r?r�rs   rr�zTracerRun.__init__�sP��"��� �(����Y�1��%)�\�Y�\�\�^�^�M�M�M��� $����rc�\�t��tj��|_|jSr)r�sys�gettracer�r�rts r�	__enter__zTracerRun.__enter__�s$������ #�������{�rc��t��tj|j��d}|jjr|dz
}|d|jjzz
}|�{tt|��rft|t��rQ|jrJ|jd}|r|d|zz
}|jrt|��dS|j�|��	|r4|jrt|��dS|j�|��dSdS)Nr$z+All paired tuples have not been processed, zthe last one was number %drr&T)rr��settracer�r�r�r��
issubclassrrG�
BaseExceptionr�r�r�r��fail)r?�type_�value�	traceback�	not_empty�err_msgs      r�__exit__zTracerRun.__exit__�s0��������T�*�+�+�+��	��;��	5��F�F�I��6��+�3�4�
5�I����,?��!G�!G���%��/�/�

D�E�J�

D��*�Q�-���0��t�i�/�/�G��<�1��'�N�N�N��4��N�'�'��0�0�0�0��	/��|�
/��i� � � � � ���#�#�I�.�.�.�.�.�		/�	/rr)NNN)rr
rr�r�rrrrr�r��sN������K�%�%�%�%����/�/�/�/�/�/rr�c��	d�}ddg}|�|��t��}d|_d�|_t	|td��t
|������|_t|��5t||���5}|�
t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc3�zK�		t|��}t|��}|V�|V��'#t$rYdSwxYwr)r��
StopIteration)�a�b�x�ys    r�genzrun_test.<locals>.gen�sa����	�
���G�G����G�G����������	
��
�	�	�	��F�F�	���s�(,�
:�:�r��r�Tc��dSrrrrr�<lambda>zrun_test.<locals>.<lambda>s��t�rrr~)r��BaseTestCaser�r�r�r�iterr��create_modulesr��runcall�tfunc_import)�modulesr�rr�sl�testr�s       r�run_testr�s^��1�d����j�	!�B��I�I�h�����>�>�D��D�L��m�D�G��3�3�v�b�z�z�4��8�8�4�4�5�5�D�O�	��	 �	 �)�)�
�t�$�
'�
'�
'�	)�6��N�N�<�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�)�)�)�)�)�)�)�)�)�)�)�)����)�)�)�)�)�)s6�C�B;�/C�;B?	�?C�B?	�C�C�Cc	#��K�tj��5tj�tj����	|D]r}|dz}t|dd���5}|�tj
||����ddd��n#1swxYwYtj|���stj��dV�|D]}tj|���tj���n<#|D]}tj|���tj���wxYw	ddd��dS#1swxYwYdS)N�.py�wzutf-8)�encoding)r�temp_cwdr�r.�appendr-�getcwd�open�write�textwrap�dedent�	linecache�
checkcacherK�invalidate_cachesr�forgetr�)r�mrpr`s    rrrs�����	�	�	�	�
�
������	���$�$�$�	��
,�
,���E�	���%��w�7�7�7�9�1��G�G�H�O�G�A�J�7�7�8�8�8�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9��$�U�+�+�+�+��'�)�)�)��E�E�E��
(�
(���$�Q�'�'�'�'��H�L�L�N�N�N�N���
(�
(���$�Q�'�'�'�'��H�L�L�N�N�N�N����N�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
sM�1E�D�#.B�D�B!�!D�$B!�%/D�8E�9E�E�E�EFc��d|d|||ffS)Nr�r)rFrpr(r2s    r�
break_in_funcr+&s���U�D�)�T�8�<�<�<r�test_module_for_bdbrc�6�ddl}|���dSr\)r,�main)r,s rrr+s&�������������rc�N�d}t��t��d}d}d}dS)Nr����)�tfunc_first�tfunc_second��lnos r�
tfunc_mainr7/s,��
�C��M�M�M��N�N�N�
�C�
�C�
�C�C�Crc��d}d}d}dS)Nr�r��rr5s rr3r37s��
�C�
�C�
�C�C�Crc�
�d}dS)Nr�rr5s rr4r4<s��
�C�C�Crc��eZdZ	eZdd�ZdS)rNc�.�|�|��d�r)�failureExceptionr�s  rr�zBaseTestCase.failDs���#�#�C�(�(�d�2rr)rr
rr�r�rrrrr?s0������#��G�3�3�3�3�3�3rrc��eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
eej��d���Zd
�Zd�Zd�ZdS)�
StateTestCasec��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)�r1r�r7r�r1r�r7r�r�rdr3r�r1r�r3�r��r�r�rr7�r?r�s  r�	test_stepzStateTestCase.test_stepL���
�
�
����t�_�_�	'���N�N�:�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	'��A�A�Ac�8�dD]�}|�|���5ddddddtdffd	d
dddd
d
igff|fddg|_t|��5}|�t
��ddd��n#1swxYwYddd��n#1swxYwY��dS)N)r�r��r�rArrBrCr�r�)�Nonerdr3�r�r1r3rd�r1r9r3rE)�subTestrIr�r�rr7)r?r�r�s   r� test_step_next_on_last_statementz.StateTestCase.test_step_next_on_last_statementVs;��(�	/�	/�H����x��0�0�

/�

/�-�Z�-�Z�.�g��RS�}�=U�.�^��Q�
��1��r�{�;�h�\�.�Z�
#����t�_�_�/���N�N�:�.�.�.�/�/�/�/�/�/�/�/�/�/�/����/�/�/�/�

/�

/�

/�

/�

/�

/�

/�

/�

/�

/�

/����

/�

/�

/�

/��	/�	/s5�5B�A7�+B�7A;�;B�>A;�?B�B	�B	c��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)
rArrBr
�r1r9r7r)r�rdr4r)r1r�r4rErFrGs  r�	test_nextzStateTestCase.test_nextd���
�
�
����t�_�_�	'���N�N�:�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	'rJc��d}t|i}t|��5gd�|_t|��5}|�t
��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�9
            def main():
                lno = 3
        )�r1r�rr
�r1r�rrE)�TEST_MODULErr�r�rr�r?rYrr�s    r�test_next_over_importz#StateTestCase.test_next_over_importos���� ��'��
�G�
$�
$�	-�	-����D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s4�A3�A�A3�A	�A3�"A	�#A3�3A7�:A7c��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)rArrBrrCr
rDrErFrGs  r�test_next_on_plain_statementz*StateTestCase.test_next_on_plain_statement}s���
�
�
����t�_�_�	'���N�N�:�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	'rJc��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)
rArrBrrC�r��rMr�r7r
rSrErFrGs  r�test_next_in_caller_framez'StateTestCase.test_next_in_caller_frame�s���
�
�
����t�_�_�	'���N�N�:�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	'rJc��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)rArrBrrCrrD�r��r�r9r3rrSrErFrGs  r�test_returnzStateTestCase.test_return�s���
�
�
����t�_�_�	'���N�N�:�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	'rJc��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)
rArrBrrCr`rard)r�r2r7rErFrGs  r�test_return_in_caller_framez)StateTestCase.test_return_in_caller_frame�rUrJc��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)
rArrBrrCrrD)r�)r9rOrErFrGs  r�
test_untilzStateTestCase.test_until�rUrJc	���dtd��dddddddigffdd	d
g|_t|��5}|�t��ddd��dS#1swxYwYdS)NrAr3)rMr�r7rNr1r�rd)r�)i'rerE)r+r�r�rr7rGs  r�test_until_with_too_large_countz-StateTestCase.test_until_with_too_large_count�s���%�]�=�5Q�5Q�%�^�
�Q�
��1��r�{�3�5H�(�Z�	
����t�_�_�	'���N�N�:�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	's�A�A �#A c��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)
rArrBrrCr`ra)r�)r1)r1r1r7rErFrGs  r�test_until_in_caller_framez(StateTestCase.test_until_in_caller_frame�rUrJc�d�d�tjD��tjdd�<d}t|i}t|��5gd�|_dddtf}t||���5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc3�NK�|] }|j�d���|V��!dS)�_frozen_importlibN)r
�
startswith)r!�items  r�	<genexpr>z*StateTestCase.test_skip.<locals>.<genexpr>�sM����
�
����)�)�*=�>�>�
��
�
�
�
�
�
rrW)rXrrYrEz
importlib*�	zipimportzencodings.*r~)r��	meta_pathrZrr�r�rr)r?rYrrr�s     r�	test_skipzStateTestCase.test_skip�sL��
�
��
�
�
�
��
�a�a�a���� ��'��
�G�
$�
$�	-�	-����D�O�!�+�}�k�J�D��4�d�+�+�+�
-�v����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�
	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s6�&B%�&B
�B%�
B	�B%�B	�B%�%B)�,B)c�z�tdg���}|�|�d��d��dS)Nz	anything*r~F)r:�assertIs�is_skipped_module)r?�bdbs  r�test_skip_with_no_name_modulez+StateTestCase.test_skip_with_no_name_module�s>����}�%�%�%���
�
�c�+�+�D�1�1�5�9�9�9�9�9rc��ddg|_t|��5}|�t|jt
��ddd��dS#1swxYwYdS)NrA)r�)r�r��assertRaisesrrr7rGs  r�	test_downzStateTestCase.test_down�s���
&�z�
����t�_�_�	D�����h���
�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	D��'A
�
A�Ac��gd�|_t|��5}|�t��ddd��dS#1swxYwYdS)N)rArrBrrCr`rarErFrGs  r�test_upzStateTestCase.test_up�rIrJN)rr
rrHrQrTr\r^rbrfrhrjrlrnrr�rvrwr|rr�rrrr?r?Is������E�'�'�'�/�/�/�	'�	'�	'�-�-�-�
'�
'�
'�'�'�'�
'�
'�
'�	'�	'�	'�	'�	'�	'�'�'�'�	'�	'�	'��Z��
���-�-���-�2:�:�:�D�D�D�'�'�'�'�'rr?c�R�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�BreakpointTestCasec��ddg|_t|��5}|�t|jt
��ddd��dS#1swxYwYdS)NrX)r�)z/non/existent/module.pyrd)r�r�r~rrrrGs  r�test_bp_on_non_existent_modulez1BreakpointTestCase.test_bp_on_non_existent_modules���'�)R�
����t�_�_�	F�����h����E�E�E�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	F�	Fr�c�*�d}t|i}t|��5ddtdffg|_t	|��5}|�t|jt��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrWrXr�r9)	rZr�TEST_MODULE_FNAMEr�r�r~rrrr[s    r�test_bp_after_last_statementz/BreakpointTestCase.test_bp_after_last_statement
s>���� ��'��
�G�
$�
$�	J�	J�+�g�8I�1�7M�-N��D�O��4���
J�F��!�!�(�F�N�L�I�I�I�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J�		J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js4�"B�'A0�$B�0A4	�4B�7A4	�8B�B�Bc��d}t|i}t|��5dtdtd��dtdtd��dddddd	d	id	gffddddd
d	id
gffdg
|_t|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)N��
            def func():
                lno = 3

            def main():
                for i in range(2):
                    func()
        rXrXT�rMr�rrNr1r�rdr�rE�rZrr+r�r�r�rrr[s    r�test_temporary_bpz$BreakpointTestCase.test_temporary_bps]���� ��'��
�G�
$�
$�	-�	-�+�!�&�*;�T�B�B�+�!�&�*;�T�B�B�+�>���F�a��U�Q�C�L�1�>���F�a��U�Q�C�L�1�:��D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s6�AB5�6B�B5�B!	�!B5�$B!	�%B5�5B9�<B9c��d}t|i}t|��5dtdt��dtdtd��dddddd	dd
d
igffddd
dddd	ddd
idgffddddd	dd
digffdg|_t|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)N��
            def func():
                lno = 3

            def main():
                for i in range(3):
                    func()
        rXrXr�T)r��r�rNr1r�rd)r�r��rMr�rX�r��rdr��r�r�rEr�r[s    r�test_disabled_temporary_bpz-BreakpointTestCase.test_disabled_temporary_bp.s����� ��'��
�G�
$�
$�	-�	-�+�!�&�*;�<�<�+�!�&�*;�T�B�B�+�3E�+�>���F�a��U�B�K�0�3D�#�3E�#�>���F�a��U�Q�C�L�1�3D�#�>���F�a��U�B�K�0�:�
�D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s6�A+C�B-�!C�-B1	�1C�4B1	�5C�C	�C	c
�B�d}t|i}t|��5dtdtdd��dddd	dd
d	igffdg|_t|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nz�
            def func(a):
                lno = 3

            def main():
                for i in range(3):
                    func(i)
        rXrXFza == 2r�rNr1r�rdrEr�r[s    r�test_bp_conditionz$BreakpointTestCase.test_bp_conditionJs2���� ��'��
�G�
$�
$�	-�	-�+�!�&�*;�U�H�M�M�+�>���F�a��U�B�K�0�:�	�D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-�5�:B�A<�0B�<B	�B�B	�B�B�Bc
�B�d}t|i}t|��5dtdtdd��dddd	dd
d
igffdg|_t|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nzk
            def func(a):
                lno = 3

            def main():
                func(0)
        rXrXFz1 / 0r�rNr1r�rdrEr�r[s    r�)test_bp_exception_on_condition_evaluationz<BreakpointTestCase.test_bp_exception_on_condition_evaluation^s2���� ��'��
�G�
$�
$�	-�	-�+�!�&�*;�U�G�L�L�+�>���F�a��U�B�K�0�:�	�D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-r�c�B�d}t|i}t|��5dtdt��dddddddd	d
igffdg|_t|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rXrXr��r,r�rNr1r�rdr�rEr�r[s    r�test_bp_ignore_countz'BreakpointTestCase.test_bp_ignore_countqs4���� ��'��
�G�
$�
$�		-�		-�+�!�&�*;�<�<�+�2C�+�.���F�a��U�B�K�0�*��D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-�		-����		-�		-�		-�		-�		-�		-r�c��d}t|i}t|��5dtdt��dtdt��dddddddd	dd
digffdd
ddd	dd
d
igffddd	ddd
igffdg|_t|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rXrXr�r�r�rNr1r�r�rdr�r�rEr�r[s    r� test_ignore_count_on_disabled_bpz3BreakpointTestCase.test_ignore_count_on_disabled_bp�s}���� ��'��
�G�
$�
$�	-�	-�+�!�&�*;�<�<�+�!�&�*;�<�<�+�2C�+�2D�+�.���F�a��U�B�K�0�2C�#�.���F�a��U�B�K�0�.���F�a��U�B�K�0�*��D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s6�A'C�B)�C�)B-	�-C�0B-	�1C�C�Cc��d}t|i}t|��5ddtdffddtdffddtdffddddd	d
d
igffdddd	dd
igffdtdffddddd	dd
igffdg|_t	|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nz�
            def func():
                lno = 3
                lno = 4

            def main():
                for i in range(3):
                    func()
        rXr�r�r�r9rNr1rXrdr�)rMr9rXr�rE)rZrr�r�r�rrr[s    r�test_clear_two_bp_on_same_linez1BreakpointTestCase.test_clear_two_bp_on_same_line�s����� ��'��
�G�
$�
$�	-�	-�+�7�=N�PQ�<R�2S�+�7�=N�PQ�<R�2S�+�7�=N�PQ�<R�2S�+�.���F�a��U�B�K�0�.���F�a��U�B�K�0�7�=N�PQ�<R�2S�#�.���F�a��U�B�K�0�*�	�D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s6�A#B=�>B%�B=�%B)	�)B=�,B)	�-B=�=C�Cc���ddtdffg|_t|��5}|�t|jt��ddd��dS#1swxYwYdS)NrXr�rd)rIr�r�r~rrrrGs  r�test_clear_at_no_bpz&BreakpointTestCase.test_clear_at_no_bp�s���'�'�H�a�=�)A�
����t�_�_�	F�����h����E�E�E�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	F�	Fs�'A�A�Ac�~	�t��t��}|�t��}|�td��|�|���|dgi��t��}|�td��|�td��|�td��|�|���|dgi��|�|���|gd�i��|�td��|�|���|dgi��|�|���|gd�i��t��}|�|���|dgi��|�|���|gd�i��|�|���|gd�i��|�td��|�|���|dgi��|�|���|ddgi��|�|���|gd�i��t��}|�td��|�|���|dgi��|�|���|ddgi��|�|���|gd�i��|�|���|gd�i��t��t��}|�td	��|�|���|dgi��|�|���|ddgi��|�|���|gd�i��|�|���|gd�i��|�|���|d	gi��dS)
Nrdr�r�r9)rdr�r�r9)r�r�r9r0)r�r9r0r1)rr:r�rIrS�assertEqual�get_all_breaksro)r?�db1rp�db2�db3�db4�db5s       r�(test_load_bps_from_previous_Bdb_instancez;BreakpointTestCase.test_load_bps_from_previous_Bdb_instance�s?�������e�e�����H�%�%���
�
�h��"�"�"�����+�+�-�-���s�|�<�<�<��e�e���
�
�h��"�"�"��
�
�h��"�"�"��
�
�h��"�"�"�����+�+�-�-���s�|�<�<�<�����+�+�-�-��|�|�|�/D�E�E�E�����!�$�$�$�����+�+�-�-���s�|�<�<�<�����+�+�-�-��y�y�y�/A�B�B�B��e�e������+�+�-�-���s�|�<�<�<�����+�+�-�-��y�y�y�/A�B�B�B�����+�+�-�-��y�y�y�/A�B�B�B�����!�$�$�$�����+�+�-�-���s�|�<�<�<�����+�+�-�-���1�v��?�?�?�����+�+�-�-��y�y�y�/A�B�B�B��e�e���
�
�h��"�"�"�����+�+�-�-���s�|�<�<�<�����+�+�-�-���1�v��?�?�?�����+�+�-�-��y�y�y�/A�B�B�B�����+�+�-�-��y�y�y�/A�B�B�B������e�e���
�
�h��"�"�"�����+�+�-�-���s�|�<�<�<�����+�+�-�-���1�v��?�?�?�����+�+�-�-��y�y�y�/A�B�B�B�����+�+�-�-��y�y�y�/A�B�B�B�����+�+�-�-���s�|�<�<�<�<�<rN)rr
rr�r�r�r�r�r�r�r�r�r�r�rrrr�r�s�������)�F�F�F�J�J�J�-�-�-�.-�-�-�8-�-�-�(-�-�-�&-�-�-�*-�-�-�6-�-�-�2F�F�F�(=�(=�(=�(=�(=rr�c��eZdZ	d�Zd�ZdS)�RunTestCasec���d}gd�|_t|��5}|�tt	j|��dd����ddd��dS#1swxYwYdS)Nz
            lno = 2
        ))r1r��<module>r)r�r�r�rEz<string>�exec)r�r��run�compiler#r$)r?rYr�s   r�
test_run_stepzRunTestCase.test_run_step�s�����
�
�
����t�_�_�	K���J�J�w�x��t�4�4�j�&�I�I�J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	Ks�7A�A#�&A#c�2�d}t|i}t|��5gd�|_ddl}t	|��5}|�dt
��t����ddd��n#1swxYwYddd��dS#1swxYwYdS)NrW)
)r1rdr�r)r�r�r.r)r1r�r.r)r�r�r.r)r�rdr�rErztest_module_for_bdb.main())rZrr�r,r��runevalrJ�locals)r?rYrr,r�s     r�test_runeval_stepzRunTestCase.test_runeval_step�sI���� ��'��
�G�
$�
$�
	R�
	R����D�O�
'�&�&�&��4���
R�F����;�W�Y�Y����Q�Q�Q�
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�
	R�
	R�
	Rs4�B�0A4�(B�4A8	�8B�;A8	�<B�B�BN)rr
rr�r�rrrr�r��s=������*�
K�
K�
K�R�R�R�R�Rrr�c�.�eZdZ	d�Zd�Zd�Zd�Zd�ZdS)�IssuesTestCasec�D�d}d}t|d|i}t|��5dtdd��ddd	d
dddigffdd
dddg
|_t	|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nz�
            from test_module_for_bdb_2 import func
            def main():
                func()
                lno = 5
        z9
            def func():
                lno = 3
        �test_module_for_bdb_2rXrXztest_module_for_bdb_2.pyr�rNr1r�rdr)r�r�rX)r1r0r.rE)rZrr+r�r�rr)r?�code_1�code_2rr�s     r�+test_step_at_return_with_no_trace_in_callerz:IssuesTestCase.test_step_at_return_with_no_trace_in_callersH������

��#�V�
���G�
$�
$�
	-�
	-�+�!�&�*D�E�E�+�.���F�a��U�B�K�0�*�%�*�#�*�
�D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-����
	-�
	-�
	-�
	-�
	-�
	-s5�7B�A=�1B�=B	�B�B	�B�B�Bc�<�d}t|i}dD�]}|�|���5t|��5dtdt��dddd	dd
d
igff|fg|_|dkr(|j�dd
dtfdddg��n|j�ddg��t|��5}|�	t��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY��dS)Nz�
            def test_gen():
                yield 0
                lno = 4
                return 123

            def main():
                it = test_gen()
                next(it)
                next(it)
                lno = 11
        )r�r�r�rLrX�test_genr�rNr1r�rdr�r��
r.r)r�r�r.rE�r1r9r�)rZrPrr+r�r�r�rr�rr)r?rYrr�r�s     r�#test_next_until_return_in_generatorz2IssuesTestCase.test_next_until_return_in_generator/s��
�� ��'��3�	5�	5�H����x��0�0�
5�
5�#�G�,�,�5�5�3�)�*�6G�H�H�3�n���J�!�A����<�x�l�	'�D�O� �8�+�+���.�.�)�2�v�}�E�y�3�z��������.�.�4�j�B����#�4���5�F����|�4�4�4�5�5�5�5�5�5�5�5�5�5�5����5�5�5�5�%5�5�5�5�5�5�5�5�5�5�5����5�5�5�5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��	5�	5sY�D�BC8�:C!	�C8�!C%
�%C8�(C%
�)C8�,D�8C<�<D�?C<�D�D	�D	c�d�d}t|i}t|��5dtdt��dddddddigffd	d
d	dd	dd	d
ddtfdddg|_t
|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nz�
            def test_gen():
                yield 0
                lno = 4
                yield 1
                return 123

            def main():
                for i in test_gen():
                    lno = 10
                lno = 11
        rXr�r�rNr1r�rdr
r�)r1r0r�)r1r1r�r��	r.r)r1�r.rE�	rZrr+r�rr�r�rrr[s    r�'test_next_command_in_generator_for_loopz6IssuesTestCase.test_next_command_in_generator_for_loopXsP���� ��'��
�G�
$�
$�	-�	-�+�!�*�.?�@�@�+����J�!�A����4��'��'��'���a���7��$���D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s6�AB%�&B
�B%�
B	�B%�B	�B%�%B)�,B)c
�\�d}t|i}t|��5dtdt��dddddddigffd	d
d	ddd
tfdddg|_t
|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�4
            def test_subgen():
                yield 0
                return 123

            def test_gen():
                x = yield from test_subgen()
                return 456

            def main():
                for i in test_gen():
                    lno = 12
                lno = 13
        rXr�r�rNr1r2rdr
)r1�r�r�r�r.r�r1�
r.rEr�r[s    r�/test_next_command_in_generator_with_subiteratorz>IssuesTestCase.test_next_command_in_generator_with_subiteratorwsF��
�� ��'��
�G�
$�
$�	-�	-�+�!�*�.?�@�@�+�.���J�!�A����4�*�'�*��b�&�-�8�*�$�*�	�D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s6�AB!�"B	�=B!�	B
	�
B!�B
	�B!�!B%�(B%c
�n�d}t|i}t|��5dtdt��dddddddigffd	d
ddtfd	d
d
dtfdddg|_t
|��5}|�t��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rX�test_subgenr�rNr1r�rdrdr�r2r�r�r.rr�rEr�r[s    r�1test_return_command_in_generator_with_subiteratorz@IssuesTestCase.test_return_command_in_generator_with_subiterator�sO��
�� ��'��
�G�
$�
$�	-�	-�+�!�-�1B�C�C�+�n���M�Q�q�E�2�;�7�l��a��]�;�l��b�&�-�8�j�$�j�	�D�O��4���
-�F����|�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s6�AB*�+B�B*�B	�B*�B	�B*�*B.�1B.N)rr
rr�r�r�r�r�rrrr�r�sc������ �-�-�-�<'5�'5�'5�R-�-�-�>-�-�-�>-�-�-�-�-rr�c��eZdZd�ZdS)�TestRegressionsc�n�t���tj��df��dSr)r:�format_stack_entryr��	_getframerts r�!test_format_stack_entry_no_linenoz1TestRegressions.test_format_stack_entry_no_lineno�s+����� � �#�-�/�/�4�!8�9�9�9�9�9rN)rr
rr�rrrr�r��s#������:�:�:�:�:rr��__main__r)/r{rr�r-�unittestr#rKr%�
contextlibr�	itertoolsrr�test.supportrrr�	Exceptionr
rrrr�rr8r:r|r�rrrIr+rZr�rr7r3r4�TestCaserr?r�r�r�r�rr.rrr�<module>r�s���0�d����
�
�
�
�	�	�	�	�����������������%�%�%�%�%�%�$�$�$�$�$�$�$�$�&�&�&�&�&�&�"�"�"�"�"�"�#�#�#�#�#�#�$�#�#�#�#�9�#�#�#�E�E�E�E�E�|�E�E�E�H�H�H�H�H�\�H�H�H�A�A�A�A�A�,�A�A�A���'�'�'����*>/�>/�>/�>/�>/�$�(�>/�>/�>/�@w1�w1�w1�w1�w1�S�w1�w1�w1�r,/�,/�,/�,/�,/�,/�,/�,/�\H)�H)�H)�H)�T������ #+�e�$�=�=�=�=�$���%�'�����������
���3�3�3�3�3�8�$�3�3�3�u'�u'�u'�u'�u'�L�u'�u'�u'�ni=�i=�i=�i=�i=��i=�i=�i=�X R� R� R� R� R�,� R� R� R�De-�e-�e-�e-�e-�\�e-�e-�e-�P:�:�:�:�:�h�'�:�:�:��z����H�M�O�O�O�O�O��r