
    daf`V                         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 d dlm	Z	 d dl
mZ dZdZdZ G d d	ej                        Zed
k(  r ej$                          yy)    N)mock)support)	os_helpera  NAME=Fedora
VERSION="32 (Thirty Two)"
ID=fedora
VERSION_ID=32
VERSION_CODENAME=""
PLATFORM_ID="platform:f32"
PRETTY_NAME="Fedora 32 (Thirty Two)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:32"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=32
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=32
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
a~  NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
a  
# test data
ID_LIKE="egg spam viking"
EMPTY=
# comments and empty lines are ignored

SINGLE_QUOTE='single'
EMPTY_SINGLE=''
DOUBLE_QUOTE="double"
EMPTY_DOUBLE=""
QUOTES="double\'s"
SPECIALS="\$\`\\\'\""
# invalid lines
=invalid
=
INVALID
IN-VALID=value
IN VALID=value
c                   p   e Zd Zd Zd Zej                   ej                         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j.                  ej2                  j5                  d      d      d        Zd Zd Zd Zd Zd Z d Z!d Z" ejF                  ej2                  dv d       ej                         d               Z$ ej.                  ej2                  j5                  d      d      d        Z%d Z& ej.                  ejN                  d      d         Z( ejF                  ejN                  d!      d"        Z)d# Z* ej.                  ej2                  d$k(  d%      d&        Z+ ejF                  ejX                  d'      d(        Z-ej\                  d)        Z/d* Z0d+ Z1d, Z2y-).PlatformTestc                     t         j                  j                          t         j                  j                          d t         _        d t         _        y N)platform_platform_cacheclear_sys_version_cache_uname_cache_os_release_cacheselfs    -/root/Python-3.12.4/Lib/test/test_platform.pyclear_cacheszPlatformTest.clear_cachesH   s6      &&(##))+ $%)"    c                 ,    t        j                         }y r	   )r
   architecturer   ress     r   test_architecturezPlatformTest.test_architectureN   s    ##%r   c                     t        j                         5 }d}| j                   |j                  |  |j                  |        d d d        y # 1 sw Y   y xY w)N)z-cz/import platform; print(platform.architecture()))r   PythonSymlinkassertEqual	call_real	call_link)r   pycmds      r   test_architecture_via_symlinkz*PlatformTest.test_architecture_via_symlinkQ   sV     ""$ 	EIC\R\\3/s1CD	E 	E 	Es   /AAc                 L    dD ]  }dD ]  }t        j                   ||      } ! y )N)FT)r
   )r   aliasedterser   s       r   test_platformzPlatformTest.test_platformX   s2    $ 	8G& 8''78	8r   c                 ,    t        j                         }y r	   )r
   systemr   s     r   test_systemzPlatformTest.test_system]   s    oor   c                 ,    t        j                         }y r	   )r
   noder   s     r   	test_nodezPlatformTest.test_node`   s    mmor   c                 ,    t        j                         }y r	   )r
   releaser   s     r   test_releasezPlatformTest.test_releasec        r   c                 ,    t        j                         }y r	   )r
   versionr   s     r   test_versionzPlatformTest.test_versionf   r/   r   c                 ,    t        j                         }y r	   )r
   machiner   s     r   test_machinezPlatformTest.test_machinei   r/   r   c                 ,    t        j                         }y r	   )r
   	processorr   s     r   test_processorzPlatformTest.test_processorl   s      "r   c                     t         j                  | _        t         j                  | _        t         j
                  | _        y r	   )sysr1   save_version_gitsave_gitr
   save_platformr   s    r   setUpzPlatformTest.setUpo   s%    KK \\r   c                     | j                   t        _        | j                  t        _        | j
                  t        _        y r	   )r;   r:   r1   r=   r<   r>   r
   r   s    r   tearDownzPlatformTest.tearDownt   s'    ''==))r   c           
         dD ];  \  }}t        j                  |      \  }}}}}}}	| j                  ||dd|||	f|       = dd| j                  fddddd	d
d| j                  fdi}
|
j	                         D ]0  \  \  }}}}|t
        _        |t        t
        d      rt
        `n|t
        _        ||t
        _         | j                  t        j                         |d          | j                  t        j                         |d          | j                  t        j                         |d          | j                  t        j                         |d          | j                  t        j                         |d          | j                  t        j                         |d          3 | j                  t               5  t        j                  d       d d d        y # 1 sw Y   y xY w)N)	)zC2.4.3 (#1, Jun 21 2006, 13:54:21) 
[GCC 3.3.4 (pre 3.3.5 20040809)])CPython2.4.3 rE   1zJun 21 2006 13:54:21zGCC 3.3.4 (pre 3.3.5 20040809))z"2.4.3 (truncation, date, t) 
[GCC])rC   rD   rE   rE   
truncationzdate tGCC)z!2.4.3 (truncation, date, ) 
[GCC]rC   rD   rE   rE   rG   daterH   )z 2.4.3 (truncation, date,) 
[GCC]rI   )z2.4.3 (truncation, date) 
[GCC]rI   )z2.4.3 (truncation, d) 
[GCC])rC   rD   rE   rE   rG   drH   )z2.4.3 (truncation, ) 
[GCC]rC   rD   rE   rE   rG   rE   rH   )z2.4.3 (truncation,) 
[GCC]rL   )z2.4.3 (truncation) 
[GCC]rL   rE   zX2.6.1 (r261:67515, Dec  6 2008, 15:26:00) 
[GCC 4.0.1 (Apple Computer, Inc. build 5370)])rC   	tags/r26167515)rC   z2.6.1rM   rN   )z
r261:67515zDec  6 2008 15:26:00z+GCC 4.0.1 (Apple Computer, Inc. build 5370))zC3.10.8 (tags/v3.10.8:aaaf517424, Feb 14 2023, 16:28:12) [GCC 9.4.0]Nlinux)rC   z3.10.8rE   rE   )ztags/v3.10.8:aaaf517424zFeb 14 2023 16:28:12z	GCC 9.4.0)z^2.5 (trunk:6107, Mar 26 2009, 13:02:18) 
[Java HotSpot(TM) Client VM ("Apple Computer, Inc.")])Jythontrunk6107java1.5.0_16)rP   z2.5.0rQ   rR   )z
trunk:6107Mar 26 2009rS   z12.5.2 (63378, Mar 26 2009, 18:03:29)
[PyPy 1.0.0])PyPyrQ   63378)rU   z2.5.2rQ   rV   )rV   rT   rE   r<   r                  z2. 4.3 (truncation) 
[GCC])r
   _sys_versionr   r>   itemsr:   r1   hasattrr<   python_implementationpython_versionpython_branchpython_revisionpython_buildpython_compilerassertRaises
ValueError)r   inputoutputnamer1   branchrevisionbuildno	builddatecompilersys_versionsversion_tagscmsys_platforminfos                  r   test_sys_versionzPlatformTest.test_sys_versiony   s    	OME6. **51 LT7FHgy(wBHEvO1	O< i.0B0BD@R9@ B'););=/6 ""$	B2,[#|d%CK{3''+X;;=tAwGX446Q@X335tAw?X557aAX224d1g>X557aA	B" z* 	A!!"?@	A 	A 	As   >GG&c                     t        j                  t        j                         t        j                         t        j                               }y r	   )r
   system_aliasr'   r-   r1   r   s     r   test_system_aliaszPlatformTest.test_system_alias   s4    ##OO
r   c                 ~   t        j                         }| j                  t        |             | j	                  |d   |j
                         | j	                  |d   |j
                         | j	                  |d   |j                         | j	                  |d   |j                         | j	                  |d   |j                         | j	                  |d   |j                         | j	                  |d   |j                         | j	                  |d   |j                         | j	                  |d	   |j                         | j	                  |d
   |j                         | j	                  |d   |j                         | j	                  |d   |j                         | j	                  t        |      d       y )Nr   irW   rX   rY   rZ   r[      )r
   uname
assertTrueanyr   r'   r*   r-   r1   r4   r7   lenr   s     r   
test_unamezPlatformTest.test_uname   sR   nnC!Q,R#**-Q*R#((+Q-R#++.Q-R#++.Q-R#++.Q/R#--0S1%r   winzwindows only testc                     d }t        j                  t        d|      5  | j                          d d d        y # 1 sw Y   y xY w)Nc                      t               r	   OSErroras    r   raises_oserrorzAPlatformTest.test_uname_win32_without_wmi.<locals>.raises_oserror   	    )Or   
_wmi_query)r   	swap_attrr
   r   )r   r   s     r   test_uname_win32_without_wmiz)PlatformTest.test_uname_win32_without_wmi   s:    	 x~F 	OO	 	 	s	   9Ac                     t        j                         }|j                  |j                  |j                  |j
                  |j                  |j                  f}| j                  t        |      |       y r	   )
r
   r   r'   r*   r-   r1   r4   r7   r   tupler   r   expecteds      r   test_uname_cast_to_tuplez%PlatformTest.test_uname_cast_to_tuple   sQ    nnJJ#++s{{CKKMM
 	sX.r   c                    t        j                         }|j                  ddddd      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  |j                         y )Nr'   r*   r-   r1   r4   )r'   r*   r-   r1   r4   )
r
   r   _replacer   r'   r*   r-   r1   r4   r7   )r   r   news      r   test_uname_replacezPlatformTest.test_uname_replace   s    nnll&)y  2 	X.6*i0i0i06r   c                     t        j                         }| j                  t        j                  |      |       | j                  t        j                  |      |       y r	   )r
   r   r   copydeepcopy)r   r   s     r   test_uname_copyzPlatformTest.test_uname_copy   s@     5)51u-u5r   c                 6   t        j                         }t        t        j                  dz         D ]Z  }| j                  |      5  t        j                  ||      }t        j                  |      }| j                  ||       d d d        \ y # 1 sw Y   gxY w)NrW   )protocol)	r
   r   rangepickleHIGHEST_PROTOCOLsubTestdumpsloadsr   )r   origprotopickledrestoreds        r   test_uname_picklezPlatformTest.test_uname_pickle   s    ~~622Q67 	1Eu- 1 ,,tU3!<<0  401 1	11 1s   >BB	c                     t        j                         }t        |      }| j                  |d d  |       | j                  |d d |d d        y )Nr[   )r
   r   r   r   r   s      r   test_uname_sliceszPlatformTest.test_uname_slices  sG    nn:Q*Ra(2A,/r   c                 `    | j                  dt        j                         j                         y )Nr7   )assertInr
   r   _fieldsr   s    r   test_uname_fieldszPlatformTest.test_uname_fields  s    k8>>#3#;#;<r   c                     t        j                         j                         }| j                  t	        |      d       | j                  d|       y )Nr~   r7   )r
   r   _asdictr   r   r   r   s     r   test_uname_asdictzPlatformTest.test_uname_asdict  s9    nn&&(S1%k3'r   )win32OpenVMSzuname -p not usedc                    	 t        j                  ddgd      j                         }t        j                  |      }| j                  t        j                         j                  |       y# t
        t         j                  f$ r d}Y Lw xY w)z|
        On some systems, the processor must match the output
        of 'uname -p'. See Issue 35967 for rationale.
        r   z-pTtextrE   N)

subprocesscheck_outputstripr
   _unknown_as_blankr   CalledProcessErrorr   r   r7   )r   proc_resexpects      r   test_uname_processorz!PlatformTest.test_uname_processor  sv    	!..TJPPRH//9F 	)33V< 667 	F	s   <A- -B
Bc                    d }t        j                  t        d|      5  t        j                         5 }	 d|v r|d= d|d<   d t        _        t        j                         \  }}}}}}| j                  |d       d|d<   d t        _        t        j                         \  }}}}}}| j                  |d       d t        _        	 d d d        d d d        y # d t        _        w xY w# 1 sw Y   "xY w# 1 sw Y   y xY w)Nc                      t               r	   r   r   s    r   r   zBPlatformTest.test_uname_win32_ARCHITEW6432.<locals>.raises_oserror-  r   r   r   PROCESSOR_ARCHITEW6432fooPROCESSOR_ARCHITECTUREbar)r   r   r
   r   EnvironmentVarGuardr   r   r   )	r   r   environr'   r*   r-   r1   r4   r7   s	            r   test_uname_win32_ARCHITEW6432z*PlatformTest.test_uname_win32_ARCHITEW6432$  s    	 x~F 	1..0 1G1/7:#$<=8=G45,0H)IQIYFFD'7GY$$We48=G45,0H)IQIYFFD'7GY$$We4,0H)1	1 	1 -1H)1 1	1 	1s:   C0C$BC7C$C0C!!C$$C-	)C00C9c                     t        j                         }t        j                   dk(  r| j                  t	        |             y y )Njava)r
   java_verr:   r   allr   s     r   test_java_verzPlatformTest.test_java_ver@  s1    !<<6!OOCH% "r   z%This test only makes sense on Windowsc                    d\  }}}}t        j                  ||||      }| j                  t        |      d       |\  }}}}	|r| j	                  ||       |r3| j                  d|       |j                  d      D ]  }
t        |
        |r"| j                  |j                  d      |       |	r=t        j                         dkD  r| j                  d|	       y | j                  d|	       y y )	N)r   bcrK   rZ   .SP)msgrW   MultiprocessorUniprocessor)r
   	win32_verr   r   assertNotEqualr   splitintr   
startswithos	cpu_count)r   release1version1csd1ptype1r   r-   r1   csdptypevs              r   test_win32_verzPlatformTest.test_win32_verE  s    +=((D&  8T6BS1%'*$#u 2 MM#w']]3' AOOCNN40cO:||~!.6ne4	 r   z)This test only makes sense on non Windowsc                 z    d\  }}}}t        j                  ||||      }| j                  |||||ft               y )N)r   1.0r   rK   )seq_type)r
   r   assertSequenceEqualr   )r   r-   r1   r   r   r   s         r   test_win32_ver_on_non_windowsz*PlatformTest.test_win32_ver_on_non_windows^  sD    ';$#u  '3>  we&Du Ur   c                    t        j                         }t        j                         j                  dk(  r8t	        j
                  dgd      }|j                         D ]6  }|j                  d      s|j                         j                         d   } n | j                  d|       |d   j                  d	      }j                  d	      }t        |      t        |      z
  }|dkD  r|j                  d
g|z         |ddgk7  r| j                  ||       | j                  |d   d       t        j                  dk(  r| j!                  |d   d       y | j                  |d   d       y y )NDarwinsw_versTr   zProductVersion:r}   z failed to parse sw_vers output: r   r   01016rW   rE   rE   rE   littlerX   )i386x86_64arm64PowerPC)r
   mac_verr   r'   r   r   
splitlinesr   r   r   failr   extendr   r:   	byteorderr   )r   r   rh   linereal_verresult_listexpect_listlen_diffs           r   test_mac_verzPlatformTest.test_mac_verd  sP    >>""h.  ,,i[tDF))+ I??#45#zz|113B7HI
 		<VJGHa&,,s+K"..-K;'#k*::H!|""C58#34 tTl*  k:
 SV\2}}(c!f&AB  Q3= /r   darwinzOSX only testc                     t        j                         }|dk(  r*t        j                         }t        j                  d       y t        j                  |d       y )Nr   )exitcode)r   forkr
   r   _exitr   wait_process)r   pidrs   s      r   test_mac_ver_with_forkz#PlatformTest.test_mac_ver_with_fork  sA     ggi!8##%DHHQK   q1r   zDoes not apply to Emscriptenc                    t         j                  j                  t        j                        rDt         j                  j                  t        j                  dz         rt        j                  dz   }nft        j                  dk(  rCt         j                  j                  t        j                        sdd l}|j                  d      }nt        j                  }t        j                  |       t        j                  }| j                  t        j                  |       t        j                  ddd      5  | j!                  t        j                         d       d	D ]d  \  }}t#        |d
      5 }|j%                  d|z         |j'                          d d d        | j!                  t        j                  |      |       f 	 d d d        d}t#        |d
      5 }|j%                  d|dz
  z         |j%                  d       d d d        | j!                  t        j                  ||      d       y # 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   IxY w)Nz.exer   r   z
os.confstrTzmock 1.0)createreturn_value)r   r   ))s   __libc_init)libcrE   )s	   GLIBC_2.9)glibcz2.9)s   libc.so.1.2.5)r  z1.2.5)s   libc_pthread.so.1.2.5)r  z1.2.5_pthread)r   )rE   rE   wbs
   [xxx%sxxx])
executablei @     x
   s"   GLIBC_1.23.4 GLIBC_1.9 GLIBC_1.21 )	chunksize)r  z1.23.4)r   pathisdirr:   r  existsr
   _winapiGetModuleFileNamelibc_verr   TESTFN
addCleanupunlinkr   patchr   openwriteflush)	r   r  r  filenamedatar   fpr  fs	            r   test_libc_verzPlatformTest.test_libc_ver  s    77==(77>>#../0&0J\\W$RWW^^CNN-K  2215JJ*%##	(((3ZZT
K 	+X..0/B# +h (D) RHH]T12HHJ
   !2!2h!G!)++	+, 	(D! 	>QGGD)b.)*GG<=	> 	**8yI,	. 	+ 	+.	> 	>s0   59H?.%H30H?)I3H<8H??IIc                 T   ddl m} | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d	             | j                   |d       |d
             | j                   |d	       |d             | j                   |d
       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d       |d             | j                   |d        |d!             | j                   |d"       |d#             | j                   |d"       |d              | j                   |d!       |d#             | j                   |d        |d#             | j                   |d$       |d%             | j                   |d&       |d'             | j                   |d(       |d)             y )*Nr   )_comparable_versionz1.2.3z1.2.10z1.2.3.4z1_2-3+4z1.2spamz1.2devz1.2alphaz1.2az1.2betaz1.2bz1.2cz1.2RCz1.2rcz1.2.0z1.2plz1.2pz1.5.1z1.5.2b2z3.10a161z8.02z3.4jz
1996.07.12z3.1.1.6z3.2.pl02g611gz0.9z2.2z1.2z1.2.1z1.1z1.2.2z0.4z0.4.0z1.13++z5.5.kwz0.960923z	2.2beta29)r
   r&  r   
assertLess)r   Vs     r   test__comparable_versionz%PlatformTest.test__comparable_version  s   57QwZ0'
AhK09q|4)ak2(Qz]3(QvY/*q|4&	1V9-)ai0&	1V9-&	1W:.&	1W:.'
AgJ/'
AgJ/'
AgJ/'
AfI.'
AiL1'
AeH-6AfI.&	1\?3)a	l3%!E(+%!E(+%!G*-%!G*-%!E(+'
AgJ/%!G*-%!G*-(Qx[1*q~6r   c           	      p   | j                  | j                         d}d}t        j                  j	                  t
        d|      5  t        j                  j	                  t
        d|      5  dD ]  \  }}}t        j                  j	                  t
        d|      5  | j                          | j                  t        j
                  d	      |       | j                  t        j
                         |       d d d         	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
N)r   hostnamez17.7.0z_Darwin Kernel Version 17.7.0: Thu Jun 21 22:53:14 PDT 2018; root:xnu-4570.71.2~1/RELEASE_X86_64r   r   )64bitrE   r   )r  r   ))r   zDarwin-17.7.0zDarwin-17.7.0-x86_64-i386-64bit))z10.13.6r   r   zmacOS-10.13.6zmacOS-10.13.6-x86_64-i386-64bitr   rW   )r$   )r  r   r   r  objectr
   r   )r   r   archr   expected_terser   s         r   
test_macoszPlatformTest.test_macos  s%   ))*#
 ZZxuE 	DZZxdK	D	6 D1 ZZ&&x4; ' = D%%'$$X%6%6Q%?P$$X%6%6%8(C	D DD	D 	D 	DD D	D 	D 	D 	Ds=   'D,-0D AD	8
D D,DD  D)	%D,,D5c                    | j                  | j                         | j                          t        d t        j                  D              rbt        j
                         }| j                  d|       | j                  d|       d|d<   | j                  dt        j
                                y | j                  t              5  t        j
                          d d d        y # 1 sw Y   y xY w)Nc              3   Z   K   | ]#  }t         j                  j                  |       % y wr	   )r   r  isfile).0fns     r   	<genexpr>z;PlatformTest.test_freedesktop_os_release.<locals>.<genexpr>  s     Lbrww~~b!Ls   )+NAMEIDtestCPYTHON_TEST)
r  r   r   r
   _os_release_candidatesfreedesktop_os_releaser   assertNotInre   r   )r   rs   s     r   test_freedesktop_os_releasez(PlatformTest.test_freedesktop_os_release	  s    ))*LH,K,KLL224DMM&$'MM$%#)D //1
 ""7+ 2//12 2 2s   C!!C*c                    t        j                  t        j                               }| j	                  |d   d       | j	                  |d   d       | j                  d|       | j	                  |d   d       t        j                  t        j                               }| j	                  |d   d       | j	                  |d   d	       | j	                  |d   d
       | j	                  |d   d       t        j                  t        j                               }dddddddddddd}| j	                  ||       | j	                  t        |d         d       y )Nr:  Fedorar;  fedoraID_LIKEVERSION_CODENAMErE   UbuntuubuntudebianfocalrO   Linuxzegg spam vikingdoublesinglezdouble'sz$`\'")r;  r:  PRETTY_NAMErE  EMPTYDOUBLE_QUOTEEMPTY_DOUBLESINGLE_QUOTEEMPTY_SINGLEQUOTESSPECIALSrU  r[   )	r
   _parse_os_releaseFEDORA_OS_RELEASEr   r   r@  UBUNTU_OS_RELEASETEST_OS_RELEASEr   )r   rs   r   s      r   test_parse_os_releasez"PlatformTest.test_parse_os_release  sC   ))*;*F*F*HIfx0dX.D)0126))*;*F*F*HIfx0dX.i(3017;))/*D*D*FG"($$ !
 	x(T*-.2r   N)3__name__
__module____qualname__r   r   r   skip_unless_symlinkr   requires_subprocessr!   r%   r(   r+   r.   r2   r5   r8   r?   rA   rt   rw   r   unittest
skipUnlessr:   r
   r   r   r   r   r   r   r   r   r   skipIfr   r   r   
MS_WINDOWSr   r   r   r  is_emscriptenr$  cpython_onlyr,  r3  rA  rZ   r   r   r   r   G   s(   *& "" W  "E # #E
8
 !!!#*
*
KAZ
&" X0079LM N/76
10=(
 X__S\\%99;NO W  "
= # P
= X0079LM1 N16&
 X++-TU5 V50 X__W'')TUV VV
!4H X1?C2 D2 X__W**,JK.. L..` !7 !7HD62$3r   r   __main__)r   r   r   r
   r   r:   r`  r   r<  r   test.supportr   rW  rX  rY  TestCaser   r[  mainrf  r   r   <module>rk     si    	     
    " , *p38$$ p3f zHMMO r   