Your IP : 216.73.217.129


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_cmd_line_script.cpython-39.opt-1.pyc

a

XC?h��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZmZmZmZmZmZmZe
jZgd�ZdZefdd�Zedfd	d
�ZGdd�dej�Zd
d�Zedkr�e� �dS)�N)�support)�make_pkg�make_script�make_zip_pkg�make_zip_script�assert_python_ok�assert_python_failure�spawn_python�kill_python)Ztest1Ztest2Ztest3a�# Script may be run with optimisation enabled, so don't rely on assert
# statements being executed
def assertEqual(lhs, rhs):
    if lhs != rhs:
        raise AssertionError('%r != %r' % (lhs, rhs))
def assertIdentical(lhs, rhs):
    if lhs is not rhs:
        raise AssertionError('%r is not %r' % (lhs, rhs))
# Check basic code execution
result = ['Top level assignment']
def f():
    result.append('Lower level reference')
f()
assertEqual(result, ['Top level assignment', 'Lower level reference'])
# Check population of magic variables
assertEqual(__name__, '__main__')
from importlib.machinery import BuiltinImporter
_loader = __loader__ if __loader__ is BuiltinImporter else type(__loader__)
print('__loader__==%a' % _loader)
print('__file__==%a' % __file__)
print('__cached__==%a' % __cached__)
print('__package__==%r' % __package__)
# Check PEP 451 details
import os.path
if __package__ is not None:
    print('__main__ was located through the import system')
    assertIdentical(__spec__.loader, __loader__)
    expected_spec_name = os.path.splitext(os.path.basename(__file__))[0]
    if __package__:
        expected_spec_name = __package__ + "." + expected_spec_name
    assertEqual(__spec__.name, expected_spec_name)
    assertEqual(__spec__.parent, __package__)
    assertIdentical(__spec__.submodule_search_locations, None)
    assertEqual(__spec__.origin, __file__)
    if __spec__.cached is not None:
        assertEqual(__spec__.cached, __cached__)
# Check the sys module
import sys
assertIdentical(globals(), sys.modules[__name__].__dict__)
if __spec__ is not None:
    # XXX: We're not currently making __main__ available under its real name
    pass # assertIdentical(globals(), sys.modules[__spec__.name].__dict__)
from test import test_cmd_line_script
example_args_list = test_cmd_line_script.example_args
assertEqual(sys.argv[1:], example_args_list)
print('sys.argv[0]==%a' % sys.argv[0])
print('sys.path[0]==%a' % sys.path[0])
# Check the working directory
import os
print('cwd==%a' % os.getcwd())
cCst|||�}t��|S�N)r�	importlib�invalidate_caches)�
script_dir�script_basename�source�	to_return�r�>/opt/alt/python39/lib64/python3.9/test/test_cmd_line_script.py�_make_test_scriptNsr�cCst||||||�}t��|Sr)rrr
)Zzip_dirZzip_basenameZpkg_namerr�depthrrrr�_make_test_zip_pkgSs

�rc@s�eZdZdldd�Zdd�dd�Zdd�dd�Zd	d
�Zdd�Zej	dmdd��Z
dndd�Zdodd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&ej	dHdI��Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2d`da�Z3dbdc�Z4ddde�Z5dfdg�Z6dhdi�Z7djdk�Z8dS)p�CmdLineTestNc
Cstdkr td|�tt|��|�|d�d|}
d|}d|}d|}
d|}|	durdt��}	d	|	}tdkr�td
�t|�t|�t|
�t|�|�|
�d�|�|�|�d�|�|�|�d�|�|�|
�d�|�|�|�d�|�|�|�d�|�dS)NrzOutput from test script %r:rz__loader__==%az__file__==%az__package__==%rzsys.argv[0]==%azsys.path[0]==%azcwd==%azExpected output:�utf-8)�verbose�print�repr�assertEqual�os�getcwd�assertIn�encode)�self�script_nameZ	exit_code�data�
expected_file�expected_argv0�expected_path0�expected_package�expected_loader�expected_cwdZprinted_loaderZprinted_fileZprinted_packageZ
printed_argv0Z
printed_path0Zprinted_cwdrrr�
_check_output[s0zCmdLineTest._check_output��cwdcOsdt|t�r|g}gt���|�|�t�}
t|
d|d�|	��\}}}
|�||||
||||||�	dS)NF��
__isolatedZ__cwd)�
isinstance�strrZ!optim_args_from_interpreter_flags�example_argsrr+)r"�script_exec_argsr%r&r'r(r)r-�cmd_line_switches�env_vars�run_args�rc�out�errrrr�
_check_scriptxs$

������zCmdLineTest._check_scriptc
Os�t|t�r|f}nt|�}||}t|d|d�|��\}}}	tdkrltd|����tt|	��td|�|�|�d�|	�dS)NFr.rzOutput from test script zExpected output: %rr)	r0r1�tuplerrrrr r!)
r"r3Zexpected_msgr-r4r5r6r7r8r9rrr�_check_import_error�s
��zCmdLineTest._check_import_errorcCs2tdd�\}}}ttjj��d�}|�||�dS)N�-czprint(__loader__)r)rrr�	machinery�BuiltinImporterr!r )r"r7r8r9�expectedrrr�test_dash_c_loader�szCmdLineTest.test_dash_c_loadercCsVt�}z"|j�d�|j��Wt|�}n
t|�}0ttjj��	d�}|�
||�dS)Nsprint(__loader__)
r)r	�stdin�write�flushr
rrr>r?r!r )r"�pr8r@rrr�test_stdin_loader�szCmdLineTest.test_stdin_loaderFccs~|rtdtjd�}|j}ntdtjd�}|j}z8|�d�}|dkrDqN|��q0|VWt|�|�	�nt|�|�	�0dS)Nz-i)�stderr�s>>> )
r	�
subprocess�PIPErGZSTDOUT�stdout�read�readliner
�close)r"�separate_stderrrErGr$rrr�interactive_python�s


�zCmdLineTest.interactive_pythoncCsZ|�|��<}|j�d�|j��|�d|j�����Wd�n1sL0YdS)Ns
print('foo')
sfoo)rPrBrCrDrrKrM�strip)r"rOrErrr�check_repl_stdout_flush�s
z#CmdLineTest.check_repl_stdout_flushcCs�|�|��f}|j�d�|j��|r,|jn|j}|�d|���|�d|���|�d|���Wd�n1sv0YdS)Ns1/0
s
Traceback sFile "<stdin>"sZeroDivisionError)rPrBrCrDrGrKr rM)r"rOrErGrrr�check_repl_stderr_flush�s
z#CmdLineTest.check_repl_stderr_flushcCs|��dSr�rR�r"rrr�test_repl_stdout_flush�sz"CmdLineTest.test_repl_stdout_flushcCs|�d�dS�NTrTrUrrr�&test_repl_stdout_flush_separate_stderr�sz2CmdLineTest.test_repl_stdout_flush_separate_stderrcCs|��dSr�rSrUrrr�test_repl_stderr_flush�sz"CmdLineTest.test_repl_stderr_flushcCs|�d�dSrWrYrUrrr�&test_repl_stderr_flush_separate_stderr�sz2CmdLineTest.test_repl_stderr_flush_separate_stderrc
CsRt���6}t|d�}|j||||dtjj|d�Wd�n1sD0YdS)N�script)r*�r�temp_dirrr:rr>�SourceFileLoader�r"rr#rrr�test_basic_script�s


�zCmdLineTest.test_basic_scriptc	Csnt���R}|�tj�|�|�t|d�}tj�|�}|�||||dt	j
j�Wd�n1s`0YdS)Nr\)rZtemp_cwd�
assertTruer�path�isabsr�basenamer:rr>r_)r"rr#Z
relative_namerrr�test_script_abspath�s


�zCmdLineTest.test_script_abspathc	Cspt���T}t|d�}tj|dd�t�|�t�|�}|�||||dt	j
j�Wd�n1sb0YdS)Nr\T��doraise�rr^r�
py_compile�compiler�remove�make_legacy_pycr:rr>�SourcelessFileLoader�r"rr#�pyc_filerrr�test_script_compiled�s



�z CmdLineTest.test_script_compiledc	CsNt���2}t|d�}|�||||dtjj�Wd�n1s@0YdS)N�__main__�r]r`rrr�test_directory�s


�zCmdLineTest.test_directoryc	Cspt���T}t|d�}tj|dd�t�|�t�|�}|�||||dt	j
j�Wd�n1sb0YdS)NrrTrgrsrirorrr�test_directory_compiled�s




�z#CmdLineTest.test_directory_compiledcCs@t���$}d|}|�||�Wd�n1s20YdS)N�"can't find '__main__' module in %r)rr^r<)r"r�msgrrr�test_directory_errors
z CmdLineTest.test_directory_errorc	Cs\t���@}t|d�}t|d|�\}}|�||||dtj�Wd�n1sN0YdS)Nrr�test_ziprs)rr^rrr:�	zipimport�zipimporter)r"rr#�zip_name�run_namerrr�test_zipfiles

�zCmdLineTest.test_zipfilec	Cspt���T}t|d�}tj|dtjjd�}t|d|�\}}|�||||dt	j
�Wd�n1sb0YdS�NrrT)rh�invalidation_moderyrs)rr^rrjrk�PycInvalidationMode�	TIMESTAMPrr:rzr{�r"rr#�
compiled_namer|r}rrr�test_zipfile_compiled_timestamps

��z+CmdLineTest.test_zipfile_compiled_timestampc	Cspt���T}t|d�}tj|dtjjd�}t|d|�\}}|�||||dt	j
�Wd�n1sb0YdSr)rr^rrjrkr��CHECKED_HASHrr:rzr{r�rrr�"test_zipfile_compiled_checked_hashs

��z.CmdLineTest.test_zipfile_compiled_checked_hashc	Cspt���T}t|d�}tj|dtjjd�}t|d|�\}}|�||||dt	j
�Wd�n1sb0YdSr)rr^rrjrkr��UNCHECKED_HASHrr:rzr{r�rrr�$test_zipfile_compiled_unchecked_hash's

��z0CmdLineTest.test_zipfile_compiled_unchecked_hashcCsZt���>}t|d�}t|d|�\}}d|}|�||�Wd�n1sL0YdS)NZnot_mainryrv)rr^rrr<)r"rr#r|r}rwrrr�test_zipfile_error1s


zCmdLineTest.test_zipfile_errorc
Cslt���P}tj�|d�}t|�t|d�}|jddg|||dtj	j
|d�Wd�n1s^0YdS)N�test_pkgr\�-m�test_pkg.scriptr,�rr^rrc�joinrrr:rr>r_�r"r�pkg_dirr#rrr�test_module_in_package8s

�z"CmdLineTest.test_module_in_packagecCs^t���B}t|ddd�\}}|jddg|||dtj||d�Wd�n1sP0YdS)Nryr�r\r�r��Z
PYTHONPATHr-�rr^rr:rzr{�r"rr|r}rrr�!test_module_in_package_in_zipfileBs
�z-CmdLineTest.test_module_in_package_in_zipfilecCsbt���F}t|ddddd�\}}|jddg|||dtj||d	�Wd�n1sT0YdS)
Nryr�r\�)rr�ztest_pkg.test_pkg.scriptztest_pkg.test_pkgr�r�r�rrr�$test_module_in_subpackage_in_zipfileIs
�z0CmdLineTest.test_module_in_subpackage_in_zipfilec
Cslt���P}tj�|d�}t|�t|d�}|jddg|||dtj	j
|d�Wd�n1s^0YdS)Nr�rrr�r,r�r�rrr�test_packageQs

�zCmdLineTest.test_packagec
Cs�t���r}tj�|d�}t|�t|d�}tj|dd�}t�	|�t�
|�}|jddg|||dtj
j|d�Wd�n1s�0YdS)Nr�rrTrgr�r,)rr^rrcr�rrrjrkrlrmr:rr>rn)r"rr�r#r�rprrr�test_package_compiled[s



�z!CmdLineTest.test_package_compiledcCsZt���>}tj�|d�}t|�d}|jddg||d�Wd�n1sL0YdS)Nr�z7'test_pkg' is a package and cannot be directly executedr�r,�rr^rrcr�rr<)r"rr�rwrrr�test_package_errorhs

zCmdLineTest.test_package_errorcCspt���T}tj�|d�}t|�tj�|d�}t|�d}|jddg||d�Wd�n1sb0YdS)Nr�rrz^Cannot use package as __main__ module; 'test_pkg' is a package and cannot be directly executedr�r,r�)r"rr�Zmain_dirrwrrr�test_package_recursionps
z"CmdLineTest.test_package_recursioncCs�t����}tj|d���tj�|d�}t|d�t|d�}tddgt	�Rddi�\}}}t
d	krltt|��d
d}|�
|�d�|�|�||||||dtjj�Wd�n1s�0YWd�n1s�0YdS)N�rcr�z1import sys; print('init_argv0==%r' % sys.argv[0])r\r�r�r/Frzinit_argv0==%rr)rr^�
change_cwdrrcr�rrrr2rrrr r!r+rr>r_)r"rr�r#r7r8r9r@rrr�test_issue8202{s



�zCmdLineTest.test_issue8202c
Cs�t����}tj|d���tdd��\}|�d�tdddd�\}}}tdkrVtt|��d	d
}|�	|�
d�|�Wd�n1s�0YWd�n1s�0YWd�n1s�0YdS)Nr�r=�wr$z2import sys; print("sys.path[0]==%r" % sys.path[0])F)r/rzsys.path[0]==%rrsr)rr^r��openrCrrrrr r!)r"r�fr7r8r9r@rrr�"test_issue8202_dash_c_file_ignored�s

�z.CmdLineTest.test_issue8202_dash_c_file_ignoredc
Cs�t����}t|d�}tj|d��~tdd��T}|�d�tddgt�Rddi�\}}}|�||||||dt	j
j�Wd�n1s�0YWd�n1s�0YWd�n1s�0YdS)	N�otherr�r�r�r$r/Frs)rr^rr�r�rCrr2r+rr>r_)r"rr#r�r7r8r9rrr�"test_issue8202_dash_m_file_ignored�s


�
�z.CmdLineTest.test_issue8202_dash_m_file_ignoredc	Cs�t����}tj�|d�}t|ddd��F}|�d�|�d�td�D]}|�d�qD|�d�Wd�n1sr0Ytj|d	��t	|�\}}}Wd�n1s�0Y|�
d
|�|�
d
|�Wd�n1s�0YdS)Nz
issue20884.pyr��
)�newlinez#coding: iso-8859-1
z"""
�zQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
r��)rr^rrcr�r�rC�ranger�rr)r"rr#r��_r7r8r9rrr�test_issue20884�s


(,zCmdLineTest.test_issue20884c	gs|t���`}tj|d��4tj�|d�}t|g|�R�|VWd�n1sP0YWd�n1sn0YdS)Nr�r�)rr^r�rrcr�r)r"�argsrr�rrr�setup_test_pkg�s

�zCmdLineTest.setup_test_pkgcGs@tdg|�Rddi�\}}}tdkr0tt|��|�|d�|S)Nr�r/Fr)rrrrr)r"r�r7r8r9rrr�check_dash_m_failure�s
z CmdLineTest.check_dash_m_failurecCsV|���:}t|dd�}|jdgt�R�}|�d|�Wd�n1sH0YdS)Nr�z+if __name__ == '__main__': raise ValueErrorztest_pkg.others
ValueError)r�rr�r2r )r"r�r#r9rrr�test_dash_m_error_code_is_one�s
�z)CmdLineTest.test_dash_m_error_code_is_onec	Cstd}|D]f\}}|�|��Dtd|�\}}}|�|d�|�||�|�d|�Wd�q1sd0YqdS)N))�builtinssNo code object available)z
builtins.xs=Error while finding module specification.*ModuleNotFoundError)zbuiltins.x.ys]Error while finding module specification.*ModuleNotFoundError.*No module named.*not a package)zos.pathsloader.*cannot handle)rs=No module named.*is a package and cannot be directly executed)zimportlib.nonexistentsNo module named)z	.unittests#Relative module names not supportedr�r�	Traceback)�subTestrr�assertRegex�assertNotIn)r"Ztests�nameZregexr7r�r9rrr�test_dash_m_errors�szCmdLineTest.test_dash_m_errorsc
Cs�t����}tj|d��rt�d�tdd��Wd�n1sB0Y|�d�}|�|d�|�d|�|�d|�Wd�n1s�0YWd�n1s�0YdS)Nr�r�ztest_pkg/__init__.pyc�wbsGError while finding module specification.*ImportError.*bad magic numbersis a packager�)	rr^r�r�mkdirr�r�r�r��r"rr9rrr�test_dash_m_bad_pyc�s

�

�zCmdLineTest.test_dash_m_bad_pycc
Cs�t���|}tj|d��Ptdd��Wd�n1s80Y|�d�}|�d|�Wd�n1sl0YWd�n1s�0YdS)Nr�z
asyncio.pyr�s>Try using 'asyncio' instead of 'asyncio.py' as the module name)rr^r�r�r�r r�rrr�*test_hint_when_triying_to_import_a_py_file�s

�
�z6CmdLineTest.test_hint_when_triying_to_import_a_py_filec
Cs�ttttf}|D]�}|j}d�|�}|�|��n|�|��D}|�d�}|�	|�
d�|�|�	d|�|�	d|�Wd�n1s�0YWd�q1s�0YqdS)Nz%raise {0}('Exception in __init__.py')r��asciisException in __init__.pyr�)�ImportError�AttributeError�	TypeError�
ValueError�__name__�formatr�r�r�r r!)r"�
exceptionsZ	exception�initr�r9rrr�test_dash_m_init_tracebacks
�
z&CmdLineTest.test_dash_m_init_tracebackcCsj|���N}d}t|d|�|�d�}|�d|�|�d|�|�d|�Wd�n1s\0YdS)Nz1raise ImportError('Exception in __main__ module')rrr�sImportErrorsException in __main__ moduler�)r�rr�r )r"r��mainr9rrr�test_dash_m_main_tracebacks

z&CmdLineTest.test_dash_m_main_tracebackcCs�t�d�}t����}t|d|�}t|�\}}}|�d��d�}|�t	|�d�|�
|d�d��|�
|d�d	��|�
|d
�d��Wd�n1s�0YdS)Nz|            try:
                raise ValueError
            except:
                raise NameError from None
            r\r�r��rZ	Tracebackrz  File ��	NameError)�textwrap�dedentrr^rr�decode�splitr�lenrb�
startswith�r"r\rr#�exitcoderKrG�textrrr�test_pep_409_verbiages

z!CmdLineTest.test_pep_409_verbiagecCs�tjrtjdvrt�tj�}ntjr,tj}n
|�d�d}tt�	�||�}|�
tj|�t|�\}}}|�
t|�|���d�d||f�|�
d|�dS)N)Zwin32�darwinzneed support.TESTFN_NONASCIIzprint(ascii(__file__))
r�zstdout=%r stderr=%rr)rZTESTFN_UNDECODABLE�sys�platformr�fsdecodeZTESTFN_NONASCIIZskipTestrrZ
addCleanup�unlinkrrr��rstripr�)r"r�rr#r7rKrGrrr�test_non_ascii*s"�

�zCmdLineTest.test_non_asciicCsjt�d�}t���D}t|d|�}t|�\}}}|�d�}|�|��d�Wd�n1s\0YdS)Nz�            import sys
            error = None
            try:
                raise ValueError('some text')
            except ValueError as err:
                error = err

            if error:
                sys.exit(error)
            r\r�z	some text)	r�r�rr^rrr�rr�r�rrr�)test_issue20500_exit_with_exception_valueAs


z5CmdLineTest.test_issue20500_exit_with_exception_valuecCsld}t���L}t|d|�}t|�\}}}t�t�|�d���}|�d|�Wd�n1s^0YdS)Nz
1 + 1 = 2
r\r��
    1 + 1 = 2
    ^)	rr^rr�io�
TextIOWrapper�BytesIOrLr r�rrr�*test_syntaxerror_unindented_caret_positionSs
z6CmdLineTest.test_syntaxerror_unindented_caret_positioncCs�t�d�}t����}t|d|�}t|�\}}}t�t�|�d��	�}|�
d|�d}t|d|�}t|�\}}}t�t�|�d��	�}|�d|�|�
d|�Wd�n1s�0YdS)Nz;            if True:
                1 + 1 = 2
            r\r�r�zif True:
    1 + 1 = 2
�)r�r�rr^rrr�r�r�rLr r�r�rrr�(test_syntaxerror_indented_caret_position\s

�z4CmdLineTest.test_syntaxerror_indented_caret_positioncCsfd}t���F}t|d|�}t|�\}}}|�|��dd�gd��Wd�n1sX0YdS)Nzfoo = f"""{}
foo"""
r\���)s
    foo"""�          ^s3SyntaxError: f-string: empty expression not allowed�rr^rrr�
splitlines�r"r\rr#r�rKrGrrr�#test_syntaxerror_multi_line_fstringss
�z/CmdLineTest.test_syntaxerror_multi_line_fstringcCshd}t���H}t|d|�}td|�\}}}|�|��dd�gd��Wd�n1sZ0YdS)Nzfoo = """\q"""
r\z-Werrorr�)s    foo = """\q"""r�s'SyntaxError: invalid escape sequence \qr�r�rrr�3test_syntaxerror_invalid_escape_sequence_multi_line�s
�
�z?CmdLineTest.test_syntaxerror_invalid_escape_sequence_multi_linec		Cst�d�}d|_t����}t����}t|d|�}td||d�}t|����	�}|�
|d|�|�||�td||d�}t|����	�}|�
||�td||d�}t|����	�}|�
|||�Wd�n1s�0YWd�n1s�0YdS)N�c            import sys
            for entry in sys.path:
                print(entry)
            rrz-Esr,rz-I)r�r��maxDiffrr^rr	r
r�r�rr�)	r"r\�work_dirrr#rEZout_by_nameZ
out_by_dirZout_by_dir_isolatedrrr�-test_consistent_sys_path_for_direct_execution�s
z9CmdLineTest.test_consistent_sys_path_for_direct_executioncCs�t�d�}d|_t����}tj�|d�}t�|�t	|d|�}t
dd|d�}t|����
�}|�|d|�|�||�t
dd|d�}t|����
�}|�||�tdd|d�\}}	}
|
���
�}|�d	|d
�Wd�n1s�0YdS)Nr�Z
script_pkgrrz-smzscript_pkg.__main__r,rz-ImzNo module named script_pkg���)r�r�r�rr^rrcr�r�rr	r
r�r�rr�rr )r"r\r�rr#rEZ
out_by_moduleZout_by_packager�rKrGZtraceback_linesrrr�-test_consistent_sys_path_for_module_execution�s$


�z9CmdLineTest.test_consistent_sys_path_for_module_executioncCsTd}|�tj�|��t|dtjtjd�}|��\}}|�d|�|�	|j
d�dS)Nznonexistingscript.pyT)r�rKrGz: can't open file r)ZassertFalserrc�existsr	rIrJZcommunicater ZassertNotEqual�
returncode)r"r\�procr8r9rrr�test_nonexisting_script�s�z#CmdLineTest.test_nonexisting_script)N)F)F)F)9r��
__module__�__qualname__r+r:r<rArF�
contextlib�contextmanagerrPrRrSrVrXrZr[rarfrqrtrurxr~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�r�rrrrrZsr�
 ��


	











	%rcCst��dSr)rZ
reap_childrenrrrr�tearDownModule�sr�rr)!r�r�importlib.machineryrzZunittestr�rZos.pathrjrIr�r��testrZtest.support.script_helperrrrrrrr	r
rr2Ztest_sourcerrZTestCaserr�r�r�rrrr�<module>s8(5�