python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_urllib2_localnet.cpython-311.opt-1.pyc

e[fddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddl
mZddl
mZ	ddlZn
#e$rdZYnwxYwejdejeZejedd	Zejedd
ZGddejjZGd
dejZGddZ Gddejj!Z"Gddejj!Z#Gdde	j$Z%ej&ddGdde	j$Z'dZ(Gdde	j$Z)dZ*e+dkre	j,dSdS) N)support)hashlib_helper)threading_helper)warnings_helperT)modulecertdatazkeycert.pemzkeycert2.pemceZdZdZdZdZdS)LoopbackHttpServerz^HTTP server w/ a few modifications that make it useful for
    loopback testing purposes.
    ctjj||||jddS)Ng?)httpserver
HTTPServer__init__socket
settimeout)selfserver_addressRequestHandlerClasss   N/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_urllib2_localnet.pyrzLoopbackHttpServer.__init__%sE''(6(;	=	=	=	
s#####cl|j\}}|d||fS)zHTTPServer method, overridden.g$@)racceptr)rrequestclient_addresss   rget_requestzLoopbackHttpServer.get_request.s=#'+"4"4"6"6
	4   ((rN)__name__
__module____qualname____doc__rrrrr
r
 s<$$$
)
)
)
)
)rr
c$eZdZdZdZdZdZdS)LoopbackHttpServerThreadz2Stoppable thread that runs a loopback http server.ctj|d|_tj|_d|_td||_|jj	|_
dS)NFzHTTP/1.0)z	127.0.0.1r)	threadingThreadr_stop_serverEventreadyprotocol_versionr
httpdserver_portportrrequest_handlers  rrz!LoopbackHttpServerThread.__init__=s_!!$'''!_&&
+5('(8(799
J*			rcnd|_||jdS)z.Stops the webserver if it's currently running.TN)r&joinr*server_closers rstopzLoopbackHttpServerThread.stopFs3!		
!!!!!rc|j|js"|j|j dSdSN)r(setr&r*handle_requestr2s rrunzLoopbackHttpServerThread.runNsT
#	(J%%'''#	(	(	(	(	(rN)rrrrrr3r8r rrr"r":sG<<+++"""(((((rr"cHeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)DigestAuthHandlerz-Handler for performing digest authentication.cLd|_g|_i|_d|_d|_dS)Nrz
Test Realmauth)_request_num_nonces_users_realm_name_qopr2s rrzDigestAuthHandler.__init__Xs+'			rc||_dSr5)rA)rqops  rset_qopzDigestAuthHandler.set_qop_s
			rc||_dSr5)r?)ruserss  r	set_userszDigestAuthHandler.set_usersbs
rc||_dSr5)r@)rrealms  r	set_realmzDigestAuthHandler.set_realmfs rc|xjdz
c_tjt|jd}|j||S)Nascii)r=hashlibmd5strencode	hexdigestr>append)rnonces  r_generate_noncez!DigestAuthHandler._generate_nonceiseQC 12299'BBCCMMOOE"""rcR|d}||dzd}|d}i}|D]j}|d\}}|}|ddkr|ddkr|dd}n|}|||<k|S)N rL,=r")findsplitstrip)rauth_strfirst_space_indexparts	auth_dictpartnamevalues        r_create_auth_dictz#DigestAuthHandler._create_auth_dictos$MM#..-a/001s##		$	$D**S//KD%::<<DQx359#3#3ad

#IdOOrci}||||d<||d<||d<d|z}tj|d}d|z}tj|d}	||d<|	|d<d	|z}
tj|
d}||d
kS)Npasswordmethoduriz#%(username)s:%(realm)s:%(password)srMz%(method)s:%(uri)sHA1HA2z3%(HA1)s:%(nonce)s:%(nc)s:%(cnonce)s:%(qop)s:%(HA2)sresponse)updaterNrOrQrR)rrbrhrirj
final_dictHA1_strrkHA2_strrlresponse_strrms            r_validate_authz DigestAuthHandler._validate_auths
)$$$!)
:%
8
57*Dk'..1122<<>>&3k'..1122<<>>
5
546@A;|227;;<<FFHH9Z000rc
2|dd|dd|dd|jd|jd|d	||jd
dS)NizProxy Authentication RequiredContent-Type	text/htmlzProxy-AuthenticatezDigest realm="z", qop="z	",nonce="z", sProxy Authentication Required.F)
send_responsesend_headerr@rArUend_headerswfilewriter-s  r_return_auth_challengez(DigestAuthHandler._return_auth_challenges%%c+JKKK##NK@@@##  


tyyy$*>*>*@*@*@*@#B	C	C	C	##%%%##$EFFFurcZt|jdkrdSd|jvr||S||jd}|d|jvr|j|d}n||S|d|jvr||S|j|dd}|j|j	fD]!}|
|||j|rd}"|s||SdS)aPerforms digest authentication on the given HTTP request
        handler.  Returns True if authentication was successful, False
        otherwise.

        If no users have been set, then digest auth is effectively
        disabled and this method will always return True.
        rTzProxy-AuthorizationusernamerTF)lenr?headersr|rfgetr>removepath
short_pathrscommand)rr.rbrhauth_validatedrs      rr7z DigestAuthHandler.handle_requestsUt{q  4 (???..???..'(=>I$33;	*(=?22?CCC==))T\9922?CCC##Ig$6777"N)-/IJ
*
*&&y'/'6'>'+--*&*N!
D22?CCC4rN)
rrrrrrDrGrJrUrfrsr|r7r rrr:r:Us77!!!"111$


*****rr:ceZdZdZdZdZdZedeZej	e
ddZdZ
dZd	Zd
ZdZdS)
BasicAuthHandlerz,Handler for performing basic authentication.testUsertestPassTest:rMcDtjjj|g|Ri|dSr5)rr
BaseHTTPRequestHandlerr)rargskwargss   rrzBasicAuthHandler.__init__s.*3DJ4JJJ6JJJJJrcdSr5r rformatrs   rlog_messagezBasicAuthHandler.log_messagesrc|d|dd|dS)NContent-typerv)rwrxryr2s rdo_HEADzBasicAuthHandler.do_HEADsD3555rc|d|dd|jz|dd|dS)NizWWW-AuthenticatezBasic realm="%s"rrv)rwrxREALMryr2s rdo_AUTHHEADzBasicAuthHandler.do_AUTHHEADsc3+-ADJ-NOOO555rc|jdds0||jddS|jddd|jzkrE|d||jddS|dS)N
AuthorizationsNo Auth header receivedzBasic rsIt works)rrrrzr{ENCODED_AUTHrwryr2s rdo_GETzBasicAuthHandler.do_GETs|44
	J788888
\

%%(043D(DEEs###J[)))))
rN)rrrrUSERPASSWDrUSER_PASSWDbase64	b64encoderQdecoderrrrrrr rrrrs66D
FE!TT66*K#6#K$6$6w$?$?@@GGPPLKKK



rrc$eZdZdZdZdZdZdS)FakeProxyHandlerzThis is a 'fake proxy' that makes it look like the entire
    internet has gone down due to a sudden zombie invasion.  It main
    utility is in providing us with authentication support for
    testing.
    cR||_tjjj|g|Ri|dSr5)digest_auth_handlerrr
rr)rrrrs    rrzFakeProxyHandler.__init__s8$7 *3DJ4JJJ6JJJJJrcdSr5r rs   rrzFakeProxyHandler.log_messages		
rctj|jd\}}}}}}||_|j|r|dd|dd|	|j
td|jzd|j
ddSdS)	NrrOKrurvzYou've reached %s!<BR>rMsFOur apologies, but our server is down due to a sudden zombie invasion.)
urllibparseurlparserrrr7rwrxryrzr{bytes)rscmnetlocrparamsqueryfragments       rrzFakeProxyHandler.do_GETs7=|7L7LIv884fdFE8#22488	;sD)))^[999JU#;di#G#*,,
-
-
-J:
;
;
;
;
;
	;	;rN)rrrrrrrr rrrrsNKKK


;;;;;rrcJeZdZdZdZdZdZfdZdZfdZ	dZ
d	ZxZS)
BasicAuthTestsrr	IncorrectrcNtt|d}t||_||jd|jjz|_|j	|jj
dS)Nct|i|Sr5)r)rrs  r#http_server_with_basic_auth_handlerzABasicAuthTests.setUp.<locals>.http_server_with_basic_auth_handler$s#T4V444rzhttp://127.0.0.1:%s)superrsetUpr"r

addCleanupstop_serverr,
server_urlstartr(wait)rr	__class__s  rrzBasicAuthTests.setUp!s
nd##))+++	5	5	5./RSS()))/$+2BB     rcF|jd|_dSr5r
r3r2s rrzBasicAuthTests.stop_server,!rcVtt|dSr5)rrtearDown)rrs rrzBasicAuthTests.tearDown0s%
nd##,,.....rctj}||j|j|j|jtjtj	|	|
tj|jdS#tjj
$r!|d|jzYdSwxYw)Nz!Basic auth failed for the url: %s)rrHTTPBasicAuthHandleradd_passwordrrrrinstall_openerbuild_opener
assertTrueurlopenerror	HTTPErrorfailrahs  rtest_basic_auth_successz&BasicAuthTests.test_basic_auth_success3s
^
0
0
2
2

DOTYLLL%%fn&A&A"&E&EFFF	MOOFN224?CCDDDDD|%	M	M	MII9DOKLLLLLL	Ms7C1C65C6ctj}||j|j|j|jtjtj	||
tjjtjj
|jdSr5)rrrrrrrINCORRECT_PASSWDrrassertRaisesrrrrs  rtest_basic_auth_httperrorz(BasicAuthTests.test_basic_auth_httperror<s
^
0
0
2
2

DOTY@UVVV%%fn&A&A"&E&EFFF&,0&.2H$/ZZZZZr)
rrrrrrrrrrrr
__classcell__rs@rrrsD
F"E	!	!	!	!	!/////MMM[[[[[[[rrrO)opensslcLeZdZdZdZdZdZfdZdZdZ	dZ
d	Zd
ZxZ
S)ProxyAuthTestszhttp://localhosttestertest123	TestRealmc|ttd}|tjdtjd<dtjd<t_j	j
jijj
fd}t|_jjjjdjjz}t*jd|i}t*j_t*j|j_dS)Nctjtj|dSr5osenvironclearrnold_environs rrestore_environz-ProxyAuthTests.setUp.<locals>.restore_environN2JJk*****rrNO_PROXYno_proxyc.tjg|Ri|Sr5)rr)rrrs  rcreate_fake_proxy_handlerz7ProxyAuthTests.setUp.<locals>.create_fake_proxy_handlerYs$#D$<NtNNNvNNNrzhttp://127.0.0.1:%dr)rrrrrrcopyr:rrGrrrJrr"r
rrr(rr,rrProxyHandlerProxyDigestAuthHandlerproxy_digest_handlerropener)rrr	proxy_urlhandlerrs`    rrzProxyAuthTests.setUpKs
nd##))+++	+	+	+	
):):;;;!#
:!#
:#4#6#6  **DIt{+CDDD **4:666	O	O	O	O	O//HII()))   )DK,<<	.--v	.BCC$*N$I$I$K$K!n11T.00rcF|jd|_dSr5rr2s rrzProxyAuthTests.stop_serverfrrc|j|j|j|j|jdz|jd|tj
j|jj
|jdS)Nbadr<)rrrURLrrrrDrrrrropenr2s r-test_proxy_with_bad_password_raises_httperrorz<ProxyAuthTests.test_proxy_with_bad_password_raises_httperrorjs!..tz48/3y$+e:K	M	M	M ((000&,0+*(	$	$	$	$	$rc|jd|tjj|jj|jdSNr<)	rrDrrrrrrrr2s r,test_proxy_with_no_password_raises_httperrorz;ProxyAuthTests.test_proxy_with_no_password_raises_httperrorrsO ((000&,0+*(	$	$	$	$	$rc^|j|j|j|j|j|jd|j	|j5}|
r	|
ddddS#1swxYwYdSr)rrrrrrrrDrrreadrresults  rtest_proxy_qop_auth_worksz(ProxyAuthTests.test_proxy_qop_auth_worksxs!..tz48/3y$+	G	G	G ((000
[

dh
'
'	6++--
++--
																		s+*B""B&)B&c|j|j|j|j|j|jd	|j	|j}|5|
r	|
ddddS#1swxYwYdS#tjj
$rYdSwxYw)Nzauth-int)rrrrrrrrDrrrrrURLErrorrs  r0test_proxy_qop_auth_int_works_or_throws_urlerrorz?ProxyAuthTests.test_proxy_qop_auth_int_works_or_throws_urlerrors !..tz48/3y$+	G	G	G ((444
	[%%dh//F

kkmmkkmm


















|$			
DD		s$
B2.*B%%B),B)2C
	C
)rrrrrrrrrrrrrrrs@rrrCs
CD
FE000006$$$$$$rrcJGfddtjjS)Nc>eZdZdZgZgZdZdZdZfdZ	dZ
dS)1GetRequestHandler.<locals>.FakeHTTPRequestHandlerz	TestHTTP/Pc|}|r(|j|}||d}|&dSdSr5)	send_headrzr{)rbodydones   rrz8GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_GETsY>>##D
#z''--DEE{
#
#
#
#
#rc|jd}|jt|}||j|dS)NzContent-Length)rrfilerintrrequestsrS)rcontent_length	post_datas   rdo_POSTz9GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_POSTsS!\*:;N
N(;(;<<IKKMMMM  +++++rc|j_|j|jd\}}}|||D]%\}}|||d|jiz&|r,|dd|	|S|	dS)Nrr,rz
text/plain)
rheaders_receivedrrSrpoprwrxr,ry)r
response_coderrheaderreFakeHTTPRequestHandler	responsess      rrz;GetRequestHandler.<locals>.FakeHTTPRequestHandler.send_heads6:l"3M  ++++4==+;+;(M7D}---#*
E
E  &1C)CDDDD
  >>>  """rcdSr5r )rrs  rrz=GetRequestHandler.<locals>.FakeHTTPRequestHandler.log_messagesDrN)rrrserver_versionrrr,rrrr)rrsrrrsu$	#	#	#	,	,	,
	
	
	
	
	
						rr)rr
r)rrs`@rGetRequestHandlerr!sK########!C###L"!rceZdZdZfdZddZdZddZddZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZdZdZdZdZdZdZxZS)TestUrlopenaNTests urllib.request.urlopen using the network.

    These tests are not exhaustive.  Assuming that testing using files does a
    good job overall of some of the basic interface features.  There are no
    tests exercising the optional 'data' and 'proxies' arguments.  No tests
    for transparent redirection have been written.
    cDtt||tjjd}||tj	dtjd<dtjd<dS)Nctjtj|dSr5rrs rrz*TestUrlopen.setUp.<locals>.restore_environrr*rr)
rr#rrrr
urlcleanuprrr)rrrs  rrzTestUrlopen.setUps
k4  &&(((	
1222	+	+	+	
):):;;;!$
:!$
:rNcg}tjj||fi|}	||d||||d|||n#|wxYwd	|S)Nrir)
rrrextend	readlinesrSreadlinercloser0)rurldatarlfs      rrzTestUrlopen.urlopensN"37777	
HHQ[[%%&&&
HHQZZ\\"""
HHQVVD\\"""
HHQVVXX
GGIIIIAGGIIIIxx{{sBCC%cF|jd|_dSr5rr2s rrzTestUrlopen.stop_serverrrc$|dgdfg}t|}t||_||j|j|jj|jj}||_|S)Nrs
we don't care)	r!r"r
rrrr(rr,)rrrr,s    rstart_serverzTestUrlopen.start_serversr#345I#I...w77()))   {rcttjds|dddlm}|dgdfg}t
|}||fd|i|}|j|_|S)NHTTPSHandlerzssl support requiredr)make_https_serverr
we care a bit
handler_class)hasattrrrskipTesttest.ssl_serversr6r!r,)rrrr6rr
s      rstart_https_serverzTestUrlopen.start_https_serversv~~66	2MM0111666666r#345I#I..""4IIwI&II{rcd}ddgdfdg|fg}||}|d|jz}|||||jddgdS)	NsWe got here...i.)Locationz(http://localhost:%(port)s/somewhere_elserrhttp://localhost:%s//z/somewhere_elser3rr,assertEqualr)rexpected_responserrr.s     rtest_redirectionzTestUrlopen.test_redirections-
KL


"'(
	##I..||2W\ABB0111)C1B+CDDDDDrcd}d}ddg|fg}||}|d|jz}|||dS)Nshello worldsa
hello worl
1
d
0
r)zTransfer-Encodingchunkedr?)r3rr,rB)rrC
chunked_startrmrr.s      rtest_chunkedzTestUrlopen.test_chunked	sp*!	;<mLM##H--||2W\ABB011111rcd}|dg|fg}	|d|jz|dnI#tjj$r2}|}|Yd}~nd}~wwxYw|	|||	|j
dgdS)NsBad bad bad...izhttp://localhost:%s/weeblez404 should raise URLErrorz/weeble)r3rr,rrrrrr,rBr)rrCrr0r.s     rtest_404zTestUrlopen.test_404s-##c2/@%A$BCC	3LL5DEEE

II12222	|$			6688D
GGIIIIIIII		
0111)I;77777sAB$(BBcd}|dg|fg}|d|jz}|||||jdgdS)N
pycon 2008...rhttp://localhost:%s/bizarre/bizarrerArrCrr.s    rtest_200zTestUrlopen.test_200&sw,##c2/@%A$BCC||9GLHII0111)J<88888rcd}|dg|fg}|d|jzd}|||||jddgdS)NrLrrMsget=with_feelingrNrArOs    rtest_200_with_parametersz$TestUrlopen.test_200_with_parameters-s,##c2/@%A$BCC||9GLH0220111)J8K+LMMMMMrc|}tjt}|d|jz|}||ddS)Ncafilehttps://localhost:%s/bizarrecontextr7)r<sslcreate_default_contextCERT_localhostrr,rB)rrrXr.s    r
test_httpszTestUrlopen.test_https5sa))++,NCCC||:W\ISZ|[[/00000rc|t}tjdtf5|d|jzt}||d|tj
j5}|d|jztdddn#1swxYwY|t}|tj
j5}|d|jztdddn#1swxYwYddddS#1swxYwYdS)NcertfilerrVrTr7)
r<r[rcheck_warningsDeprecationWarningrr,rBrrrrCERT_fakehostname)rrr.cms    rtest_https_with_cafilez"TestUrlopen.test_https_with_cafile;s))>)BB

+R1C,D
E
E
	7
	7<< > M'5 77DT#3444""6<#899
7R;glJ$5777
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7--7H-IIG""6<#899
7R;glJ$5777
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7
	7s[AE%C;EC	EC	AE%E6EE	E	E	
EE!EcZ|t}tjdtf5|tjj5}|	d|j
zddddn#1swxYwYddddS#1swxYwYdS)Nr^rrVT)	cadefault)r<r[rr`rarrrrrr,)rrrcs   rtest_https_with_cadefaultz%TestUrlopen.test_https_with_cadefaultLs&))>)BB

+R1C,D
E
E	-	-""6<#899
-R;glJ'+---
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-s5%B  B<B B	B B	B  B$'B$ct|dtjs|ddfd}tjtj}||||t}tjt}|	d|j
z||ddS)	Nzssl module requiredzSNI support required in OpenSSLc|dSr5r )ssl_sockserver_nameinitial_contextsni_names   rcb_sniz*TestUrlopen.test_https_sni.<locals>.cb_sniZs"HHHr)rXr_rTzhttps://localhost:%srW	localhost)rYr:HAS_SNI
SSLContextPROTOCOL_TLS_SERVERset_servername_callbackr<r[rZrr,rB)rrnrXrrms    @rtest_https_snizTestUrlopen.test_https_sniTs;MM/000{	=MM;<<<	#	#	#	#	#.!899''///))'N)SS,NCCC+gl:GLLL;/////rc6|}tjd|jzddi}tj|5	dddn#1swxYwY||jdddS)Nr?Rangezbytes=20-39r)r3rrRequestr,rrBrrrreqs   rtest_sending_headersz TestUrlopen.test_sending_headersds##%%n$$%;gl%J.5}-E%GG
^
#
#C
(
(																	1':MJJJJJA--A14A1c|}tjd|jzddi}tj|5	dddn#1swxYwY|d|j|	d|jdS)Nr?z
X-SoMe-hEaderfoobarrwz
X-Some-Header)
r3rrrxr,rassertInrkeysassertNotInrys   rtest_sending_headers_camelz&TestUrlopen.test_sending_headers_camells##%%n$$%;gl%J.=x-H%JJ
^
#
#C
(
(																	

ow'?'D'D'F'FGGG'*B*G*G*I*IJJJJJr|cV|}tjd|jz5}dD])}|t
||d|z*||dddddS#1swxYwYdS)Nhttp://localhost:%s)rr,infogeturlz3object returned from urlopen lacks the %s attributezcalling 'read' failed)r3rrrr,rr9r)rropen_urlattrs    r
test_basiczTestUrlopen.test_basicus##%%
^
#
#$9GL$H
I
I	FX;
F
F$ 7 7:>@D:EFFFFOOHMMOO-DEEE		F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	FsABB"%B"ct|}tjd|jz}|5|}dddn#1swxYwY||tjj	d|
|ddS)NrzEobject returned by 'info' is not an instance of email.message.Messageplain)r3rrrr,rassertIsInstanceemailmessageMessagerBget_content_subtype)rrrinfo_objs    r	test_infozTestUrlopen.test_info}s##%%>))!GL022
	'	'}}H	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'h
(=B	C	C	C	
5577AAAAAAA#&A#c|}tjd|jz}|5|}dddn#1swxYwY||d|jzdS)Nr)r3rrrr,rrB)rrrr-s    rtest_geturlzTestUrlopen.test_geturls##%%>))*?',*NOO
	$	$//##C	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$3glBCCCCCrcd}|dg|fg}tjd|jz}|D]}|||dS)NrLrr)r3rrrr,rB)rrCrr.lines     rtest_iterationzTestUrlopen.test_iterationsv,##c2/@%A$BCC~%%&;gl&JKK	6	6DT#45555	6	6rc
dddddzdzg}d|}|dg|fg}tjd	|jz}t
|D]K\}}||||d
|dt||dt|L||d
zt|dS)NsWe
sgot
shere
s	verylong i 
rrrzFetched line number z1 doesn't match expected:
    Expected length was z, got rL)	r0r3rrrr,	enumeraterBr)rlinesrCrr.indexrs       rtest_line_iterationzTestUrlopen.test_line_iterations(I|d/BU/JKHHUOO##c2/@%A$BCC~%%&;gl&JKK$T??	D	DKE4T5<<$eeSu%6%6%6%6D			C
D
D
D
D	
CJJ/////rc|dgdfdgdfg}tj}tjd|jz}|d|j||d	d|d|j|d|
d||d	d|d	|j|d
|
ddS)Nrsanyr1zus-ascii1zContent-length
1234567890s
123456789010)r3rrrrxr,rBr.rrQ
get_header)rrrrs    rtest_issue16464zTestUrlopen.test_issue16464s>##
"f
"f%
,,...(()>)MNNw|,,,GSZZ
33444w|,,,g001ABBCCCG\00<<===555w112BCCDDDDDrr5)rrrrrrrr3r<rDrHrJrPrRr\rdrgrtr{rrrrrrrrrs@rr#r#s%%%%%				EEE222
8
8
8999NNN111777"---000 KKKKKKFFF	B	B	BDDD666
0
0
0EEEEEEErr#cdtj}tjtjg|RdSr5)rthreading_setupunittestaddModuleCleanupthreading_cleanup)thread_infos rsetUpModulers3"244K.@O;OOOOOOr__main__)-rrrurllib.parserurllib.requesthttp.serverrr$rrNtestrtest.supportrrrrYImportErrorrequires_working_socketrdirname__file__herer0r[rbr
rr
r%r"r:rrrTestCaserrequires_hashdigestrr!r#rrmainr rr<module>rs6



				''''''))))))((((((JJJJ
CCC t,,,,	wx  dJ
>>GLLz>BB
)))))/)))4(((((y/(((6vvvvvvvvr&&&&&t{9&&&X;;;;;t{9;;;B%[%[%[%[%[X&%[%[%[P$#E4888JJJJJX&JJ98JZ("("("VxExExExExE(#xExExEtPPP
zHMOOOOOsAA
A