python (3.12.0)

(root)/
lib/
python3.12/
urllib/
__pycache__/
request.cpython-312.opt-2.pyc

̑e	ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&ddl'm(Z(m)Z)	ddl*Z*dZ+gdZ-dej\dd	zZ/da0de	jbfddddd
dZ2dZ3gZ4ded
Z5dZ6ejndejpZ9dZ:GddZ;GddZ<dZ=GddZ>Gdde>Z?Gdde>Z@Gdde>ZAdZBGdd e>ZCGd!d"ZDGd#d$eDZEGd%d&eEZFGd'd(ZGGd)d*eGe>ZHGd+d,eGe>ZIejZKGd-d.ZLGd/d0e>eLZMGd1d2e>eLZNGd3d4e>ZOGd5d6eOZPeQejd7rGd8d9eOZSe-jd9Gd:d;e>ZUGd<d=e>ZVd>ZWd?ZXGd@dAe>ZYdBZZGdCdDe>Z[GdEdFe[Z\GdGdHe>Z]dIZ^ejdJk(r	ddKl`maZambZbndLZadMZbiZcGdNdOZdGdPdQedZedafdRZgdahdSZidajdTZkdaldUZmGdVdWZndXZodfdYZpdZZqejd[k(rdd\lsmtZtmuZud]Zvd^Zwd_Zxd`ZyyejdJk(r
daZzdbZydcZ{ddZxyeoZyepZxy#e,$rdZ+YXwxYw)gN)URLError	HTTPErrorContentTooShortError)urlparseurlspliturljoinunwrapquoteunquote
_splittype
_splithost
_splitport
_splituser_splitpasswd
_splitattr_splitquery_splitvalue	_splittag	_to_bytesunquote_to_bytes
urlunparse)
addinfourladdclosehookTF)!RequestOpenerDirectorBaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessorProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmHTTPPasswordMgrWithPriorAuthAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandlerHTTPHandlerFileHandler
FTPHandlerCacheFTPHandlerDataHandlerUnknownHandlerHTTPErrorProcessorurlopeninstall_openerbuild_openerpathname2urlurl2pathname
getproxiesurlretrieve
urlcleanup	URLopenerFancyURLopenerz%d.%d)cafilecapath	cadefaultcontextc	|s|s|rddl}|jdtd|tdtstdtjt
jj||}|jdgt|}t|}	n3|rt|}t|}	nt
txa}	nt}	|	j|||S)	NrzJcafile, capath and cadefault are deprecated, use a custom context instead.r;zDYou can't pass both context and any of cafile, capath, and cadefaultzSSL support not available)r<r=zhttp/1.1r?)warningswarnDeprecationWarning
ValueError	_have_sslsslcreate_default_contextPurposeSERVER_AUTHset_alpn_protocolsHTTPSHandlerr3_openeropen)
urldatatimeoutr<r=r>r?rB
https_handleropeners
          B/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/urllib/request.pyr1r1s0d9

01CQ	H
899,,S[[-D-D4:4:<	""J<0$W5
m,	$W5
m,	'>)&;;sD'**c|ayN)rM)rSs rTr2r2sGrUc	t|\}}tjt||5}|j	}|dk(r,|s*t
jj||fcdddS|r
t|d}n7tjd}|j}tj||5||f}	d}
d}d}d}
d|vrt|d	}|r
||
|
||j|
x}rD|t!|z
}|j#||
d
z
}
|r
||
|
||j|
x}rDdddddddk\r|krt%d||fz		S#1swY.xYw#1swY2xYw)NfilewbF)delete rcontent-lengthContent-Length1retrieval incomplete: got only %i out of %i bytes)r
contextlibclosingr1infoospathnormpathrNtempfileNamedTemporaryFilename_url_tempfilesappendintreadlenwriter)rOfilename
reporthookrPurl_typerffpheaderstfpresultbssizernblocknumblocks               rTr7r7s _NHd			GC.	/!32'')vh77##D)72
!3!3x&C--U;CxxH!!(+
	3w&FBDDH7*7#3458R.772;&%&E
"		% A
xT2772;&%&	3!!3FqyTD["?Tl
"$	$M1	3	3!!3!3s+8E41AE49BE(;E4(E1	-E44E=c	tD]}	tj|tdd=trdayy#t$rY9wxYwrW)rkreunlinkOSErrorrM)	temp_files rTr8r8sP:#		IIi 	q		s6	AAz:\d+$c	|j}t|d}|dk(r|jdd}tj	d|d}|jS)Nr`Host)full_urlr
get_header_cut_port_resublower)requestrOhosts   rTrequest_hostr)s]

CC=Drz!!&"-Ba(D::<rUceZdZdidddfdZedZejdZejdZedZejdZejd	Zd
Z	dZ
dZd
ZdZ
dZdZdZddZdZdZy)rNFc||_i|_i|_d|_||_d|_|j
D]\}}|j|||t|}||_	||_
|r||_yyrW)rruunredirected_hdrs_datarP_tunnel_hostitems
add_headerrorigin_req_hostunverifiablemethod)	selfrOrPrurrrkeyvalues	         rT__init__zRequest.__init__;s
!#
	 !--/	(JCOOC'	("*40O.( DKrUc~|jr&dj|j|jS|jS)Nz{}#{})fragmentformat	_full_urlrs rTrzRequest.full_urlMs,==>>$..$--@@~~rUct||_t|j\|_|_|j	yrW)r	rrr_parserrOs  rTrzRequest.full_urlSs/ (1$..(A%

rUc.d|_d|_d|_yNr)rrselectorrs rTrzRequest.full_urlZs

rUc|jSrW)rrs rTrPzRequest.data`szzrUcx||jk7r+||_|jdr|jdyyy)NContent-length)r
has_header
remove_header)rrPs  rTrPzRequest.datads=4::DJ/0""#341rUcd|_yrW)rPrs rTrPzRequest.datans		rUct|j\|_}|jtd|jzt|\|_|_|jrt|j|_yy)Nzunknown url type: %r)	rrtyperErr
rrr)rrests  rTrzRequest._parsersd$T^^4	4993dmmCDD#-d#3 	4=99		*DIrUc>	|jdnd}t|d|S)NPOSTGETr)rPgetattr)rdefault_methods  rT
get_methodzRequest.get_methodzs$A#'99#8etX~66rUc|jSrW)rrs rTget_full_urlzRequest.get_full_urls}}rUc|jdk(r%|js|j|_||_y||_|j|_||_y)Nhttps)rrrrr)rrrs   rT	set_proxyzRequest.set_proxysF99(9(9 $		D	DI MMDM	rUc4|j|jk(SrW)rrrs rT	has_proxyzRequest.has_proxys}}

--rUc>||j|j<yrW)ru
capitalizerrvals   rTrzRequest.add_headers),S^^%&rUc>||j|j<yrW)rrrs   rTadd_unredirected_headerzRequest.add_unredirected_headers36s~~/0rUc>||jvxs||jvSrW)rurrheader_names  rTrzRequest.has_headers&t||+6t555	7rUcn|jj||jj||SrW)rugetr)rrdefaults   rTrzRequest.get_headers2||""&&{G<>	>rUct|jj|d|jj|dyrW)rupoprrs  rTrzRequest.remove_headers,d+"";5rUchi|j|j}t|jSrW)rrulistr)rhdrss  rTheader_itemszRequest.header_itemss,9$((9DLL9DJJL!!rUrW)__name__
__module____qualname__rpropertyrsetterdeleterrPrrrrrrrrrrrrUrTrr9s!%r!%E!$
__

[[55
\\+7
.-77>
6"rUrcReZdZdZdZdZdZdejfdZ	d	dZ
dZy)
rcpdtz}d|fg|_g|_i|_i|_i|_i|_y)NPython-urllib/%sz
User-agent)__version__
addheadershandlershandle_openhandle_errorprocess_responseprocess_request)rclient_versions  rTrzOpenerDirector.__init__sB+k9(.9:
 "!rUct|dstdt|zd}t|D]	}|dvr	|j	d}|d|}||dzd}|jdrW|j	d|zdz}||dzd}	t
|}|jj|i}	|	|j|<n=|dk(r|}|j}	n)|d	k(r|}|j}	n|d
k(r|}|j}	n|	j|g}
|
rtj|
|n|
j!|d}|r2tj|j"||j%|yy#t$rYwxYw)N
add_parentz%expected BaseHandler instance, got %rF)redirect_requestdo_open
proxy_open_r`errorrNresponserT)hasattr	TypeErrorrdirfind
startswithrmrErrrrr
setdefaultbisectinsortrlrr)rhandleraddedmethiprotocol	conditionjkindlookuprs           rTadd_handlerzOpenerDirector.add_handlersw-C M*+
+L#	DDD		#ABQxHQqST
I##G,NN3'!+a/AaCDzt9D**..x<.4!!(+f$))j(..i'--((r2H

h0(EG#	JMM$--1t$/"s	E33	E?>E?cyrWrrs rTclosezOpenerDirector.closerUcd|j|d}|D]}t||}||}||cSy)Nr)rr)	rchainr	meth_nameargsrrfuncrws	         rT_call_chainzOpenerDirector._call_chainsC99T2&	G7I.D4[F!
		rUNct|tr
t||}n|}|||_||_|j
}|dz}|jj|gD]}t||}||}tjd|j|j|j|j|j||}	|dz}|jj|gD]}t||}|||	}	|	S)N_requestzurllib.Request	_response)
isinstancestrrrPrQrrrrsysauditrrur_openr)
rfullurlrPrQreqrr	processorrrs
          rTrNzOpenerDirector.opensgs#'4(CC88Z'	--11(B?	I9i0Ds)C				"CLL#((CKKIYZ::c4([(	..228R@	+I9i0DC*H	+rUc|j|jdd|}|r|S|j}|j|j||dz|}|r|S|j|jdd|S)Nrdefault_openrunknownunknown_open)rrr)rr
rPrwrs     rTrzOpenerDirector._open
s!!$"2"2I"0#7M88!!$"2"2Hh")?*+.0M 0 0) .5	5rUc|dvr|jd}|d}d|z}d}|}n|j}|dz}d}|||f|z}|j|}|r|S|r|dd	fz}|j|Sy)
Nhttprrr;z
http_error_%sr`_errorrrhttp_error_default)rr)rprotordictrhttp_err	orig_argsrws        rTrzOpenerDirector.errors%%$$V,DGE'%/IHI$$D(IHeY'$.!!!4(M)%9:YFD#4##T**rUrW)rrrrrrrsocket_GLOBAL_DEFAULT_TIMEOUTrNrrrrUrTrrs3	"-%^
	"&v/M/M:
5+rUrc	j	t}ttttt
ttttg	}ttjdr|jtt}|D]V}|D]O}t!|t"rt%||s |j'|2t!||s?|j'|QX|D]}|j)||D]}|j+||D]*}t!|t"r|}|j+|,|S)NHTTPSConnection)rr r/r*rrr,r+r0r.rrclientrlrLsetrr
issubclassaddremover)rrSdefault_classesskipklasscheckhs       rTr3r35s
F#^[.0C!;0B"$Ot{{-.|,5D  	 E%&eU+HHUOE5)	  &u%&!$57#$aA1MrUc"eZdZdZdZdZdZy)rc||_yrW)parent)rr*s  rTrzBaseHandler.add_parent\s	rUcyrWrrs rTrzBaseHandler.close_rrUcNt|dsy|j|jkS)N
handler_orderT)rr-)rothers  rT__lt__zBaseHandler.__lt__cs(uo.!!E$7$777rUN)rrrr-rrr/rrUrTrrYsM
8rUrceZdZ	dZdZeZy)r0ic|j|j|j}}}d|cxkrdks"n|jj	d|||||}|S)N,r)codemsgrdr*r)rrrr4r5rs      rT
http_responsez HTTPErrorProcessor.http_responsepsT"--x}}4ct!c!{{((4d<HrUN)rrrr-r6https_responserrUrTr0r0ls'M	#NrUr0ceZdZdZy)rc4t|j||||rW)rr)rr
rtr4r5rs      rTrz*HTTPDefaultErrorHandler.http_error_default~sdCr::rUN)rrrrrrUrTrr}s;rUrc4eZdZdZdZdZdZexZxZxZ	Z
dZy)r
c\	|j}|dvr|dvs"|dvr|dk(st|j|||||jdd}d}|jjD	
cic]\}	}
|	j
|vr|	|
}}	}
t|||jd	Scc}
}	w)
N)-./i3i4)rHEAD)r>r?r@r z%20)r^zcontent-typeT)rurr)	rrrreplacerurrrr)rr
rtr4r5runewurlmCONTENT_HEADERSkv
newheaderss            rTrz$HTTPRedirectHandler.redirect_requests	
NN22qO7K&1;CLL$WbAAU+<'*{{'8'8':;tq!/9d;
;v)'*':':$(*	*;s-B(cZd|vr|d}nd|vr|d}nyt|}|jdvrt|||d|d|||js|jrt|}d|d<t
|}t|dtj	}t|j|}|j||||||}|yt|d
rp|jx}	|_|	j|d|j k\st#|	|j$k\r6t|j||j&|z||ix}	x|_|_|	j|ddz|	|<|j)|j+|j,j/||j0
S)Nlocationurirrftprz - Redirection to url 'z' is not allowed/r;z
iso-8859-1)encodingsafe
redirect_dictrr`rQ)rschemerrfnetlocrrr
stringpunctuationrrrrrRrmax_repeatsromax_redirectionsinf_msgrnrr*rNrQ)
rr
rtr4r5rurDurlpartsnewvisiteds
          rThttp_error_302z"HTTPRedirectHandler.http_error_302s Z(F
g
U^FF#
??">>ADfM

}}H~HHQKH%
\0B0BDv.
##CT3H;3(*-*;*;;Gc'FA&$*:*::G 5 55d $s 2GRAA?A@G@c'#*;!++fa014		

{{S[[99rUzoThe HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
N)rrrrXrYrr^http_error_301http_error_303http_error_307http_error_308rZrrUrTrrs<K *L::xIWVNV^Vn~2GrUrch	t|\}}|jdsd}|}ne|jdstd|zd|vr$|jd}|jd|}n|jdd}|dk(rd}|d|}t	|\}}|t|\}}	ndx}}	|||	|fS)NrO//zproxy URL with no authority: %r@r;r])rrrErrr)
proxyrTr_scheme	authorityhost_separatorenduserinfohostportuserpasswords
          rT_parse_proxyros"%(FHs#	""4(>FGG(?%]]3/N--^4C--Q'C"9CQsO	#I.Hh%h/hx48++rUceZdZdZddZdZy)r dNc|
t}||_|jD]4\}}|j}t	|d|z|||j
fd6y)Nz%s_openc||||SrWr)rrfrrs    rT<lambda>z'ProxyHandler.__init__.<locals>.<lambda>sQt,rU)r6proxiesrrsetattrr)rrvrrOs    rTrzProxyHandler.__init__sZ? lG 	.ID#::<DD)d*$'d-
.	.rUc|j}t|\}}}}||}|jrt|jry|rb|r`t	|dt	|}	tj|	jjd}
|jdd|
zt	|}|j||||k(s|dk(ry|jj||jS)N:asciiProxy-authorizationBasic rrS)rrorproxy_bypassrbase64	b64encodeencodedecoderrr*rNrQ)rr
rfr	orig_type
proxy_typermrnrl	user_passcredss           rTrzProxyHandler.proxy_open"sHH	/;E/B,
D(H"J88SXX.H#*4=#*8#46I$$Y%5%5%78??HENN0(U2BC8$

h
+
"i7&:;;##C#==rUrW)rrrr-rrrrUrTr r sM	.>rUr c,eZdZdZdZdZddZdZy)r!ci|_yrW)passwdrs rTrzHTTPPasswordMgr.__init__@s	rUct|tr|g}|jvrij|<dD]+tfd|D}||fj||<-y)NTFc3BK|]}j|ywrW)
reduce_uri).0udefault_portrs  rT	<genexpr>z/HTTPPasswordMgr.add_password.<locals>.<genexpr>Js! ?56<0 ?s)rrrtuple)rrealmrLrmrreduced_urirs`     @rTadd_passwordzHTTPPasswordMgr.add_passwordCskc3%C#!#DKK'	=L ?:= ??K/3VnDKK{+	=rUc|jj|i}dD]M}|j||}|jD]&\}}|D]}|j	||s|cccS(Oy)NrNN)rrrr	is_suburi)	rrauthuridomainsrreduced_authuriurisauthinforLs	         rTfind_user_passwordz"HTTPPasswordMgr.find_user_passwordNsu++//%,'	(L"oog|DO")--/
(h(C~~c?;'(
(	(rUc	t|}|dr|d}|d}|dxsd}nd}|}d}t|\}}|r!||dddj|}	|	d||	fz}||fS)	Nr`rr;rOPirz%s:%d)rrr)
rrLrpartsrTrhrfrportdports
          rTrzHTTPPasswordMgr.reduce_uriXsN
81XFaI8?sDFID	*
dDLV-?!s6{
 #tUm3	$rUct	||k(ry|d|dk7ry|d}|dddk7r|dz
}|dj|S)NTrFr`r]rO)r)rbasetestprefixs    rTrzHTTPPasswordMgr.is_suburios[	4<7d1ga"#;#cMFAw!!&))rUN)T)rrrrrrrrrrUrTr!r!>s	=.*rUr!ceZdZdZy)r"cptj|||\}}|||fStj|d|SrW)r!r)rrrrmrns     rTrz2HTTPPasswordMgrWithDefaultRealm.find_user_passwordsC(;;D%<CEh>!11$gFFrUN)rrrrrrUrTr"r"~sGrUr"c8eZdZfdZdfd	ZddZdZxZS)r#c2i|_t||i|yrW)
authenticatedsuperr)rrkwargs	__class__s   rTrz%HTTPPasswordMgrWithPriorAuth.__init__s
$)&)rUcv|j|||t|	d|||t|	||||yrW)update_authenticatedrr)rrrLrmris_authenticatedrs      rTrz)HTTPPasswordMgrWithPriorAuth.add_passwords@!!#'78G sD&9
UCv6rUct|tr|g}dD]*}|D]#}|j||}||j|<%,yNr)rrrr)rrLrrrrs      rTrz1HTTPPasswordMgrWithPriorAuth.update_authenticatedsUc3%C'	CL
C"ooa>2B"";/
C	CrUcdD]J}|j||}|jD]'}|j||s|j|ccSLyr)rrr)rrrrrLs     rTrz-HTTPPasswordMgrWithPriorAuth.is_authenticatedsU'	3L"oog|DO))
3>>#7--c22
3	3rU)F)rrrrrrr
__classcell__)rs@rTr#r#s*7C3rUr#cteZdZejdej
Zd	dZdZdZ	dZ
dZdZeZ
eZy)
r$z1(?:^|,)[ 	]*([^ 	,]+)[ 	]+realm=(["']?)([^"']*)\2Nc`|
t}||_|jj|_yrW)r!rr)rpassword_mgrs  rTrz!AbstractBasicAuthHandler.__init__s)*,L" KK44rUc#Kd}tjj|D]=}|j\}}}|dvrt	j
dtd||fd}?|s|r|jd}nd}|dfyyw)NF)"'zBasic Auth Realm was unquotedTrr)r$rxfinditergroupsrBrCUserWarningsplit)rheaderfound_challengemorTr
rs       rT_parse_realmz%AbstractBasicAuthHandler._parse_realms*--66v>	#B#%99; FE5J&

=)1.5/!"O	#*4. sBBc|j|}|syd}|D]J}|j|D]4\}}|jdk7r|}||j|||ccSL|t	dy)Nbasicz@AbstractBasicAuthHandler does not support the following scheme: )get_allrrretry_http_basic_authrE)	rauthreqrr
ruunsupportedrrTrs	         rThttp_error_auth_reqedz.AbstractBasicAuthHandler.http_error_auth_reqeds//'*
	HF!%!2!26!:	
H
<<>W,"(K$ 55dCGG	
H
	H" &)*
*#rUc|jj||\}}||d|}dtj|j	jdz}|j
|jd|k(ry|j|j||jj||jSy)Nryr|rzrS)rrr~rrrrauth_headerrr*rNrQ)rrr
rrmpwrawauths        rTrz.AbstractBasicAuthHandler.retry_http_basic_auths;;11%>b
>!2&Cf..szz|<CCGLLD~~d..5=''(8(8$?;;##C#==rUct|jdr%|jj|js|S|j	ds|jjd|j\}}dj
||j}tj|j}|jddj
|j|S)Nr
Authorizationz{0}:{1}zBasic {})
rrrrrrrrr~standard_b64encoderrstrip)rr
rmrcredentialsauth_strs      rThttp_requestz%AbstractBasicAuthHandler.http_requests%78{{++CLL9J~~o.;;99$MLD&#**48??AK00=DDFH''(2(9(9(..:J(K
M
rUct|jdrfd|jcxkrdkr+nn(|jj|jd|S|jj|jd|S)Nrr2r3TF)rrr4rr)rr
rs   rTr6z&AbstractBasicAuthHandler.http_response	s`4;; 23hmm)c)00tD00uErUrW)rrrrecompileIrrrrrrr6
https_requestr7rrUrTr$r$sL
1DD
B5!(*4
!M"NrUr$ceZdZdZdZy)r%rcF|j}|jd|||}|S)Nwww-authenticate)rr)rr
rtr4r5rurOrs        rThttp_error_401z#HTTPBasicAuthHandler.http_error_401s*ll--.@*-sG=rUN)rrrrrrrUrTr%r%s!KrUr%ceZdZdZdZy)r&r{cF|j}|jd|||}|SNproxy-authenticate)rr)rr
rtr4r5rurhrs        rThttp_error_407z$ProxyBasicAuthHandler.http_error_407%s-
HH	--.B*3S'CrUN)rrrrrrrUrTr&r&!s'KrUr&c>eZdZd
dZdZdZdZdZdZdZ	d	Z
y)r'Nc|
t}||_|jj|_d|_d|_d|_yNr)r!rrretriednonce_count
last_nonce)rrs  rTrz"AbstractDigestAuthHandler.__init__?s>>$&F KK44rUcd|_yr)rrs rTreset_retry_countz+AbstractDigestAuthHandler.reset_retry_countHs	rUcZ|j|d}|jdkDrt|jdd|d|xjdz
c_|rZ|j	d}|jdk(r|j
||S|jdk7rtd|zyy)	Nizdigest auth failedr`rdigestrzEAbstractDigestAuthHandler does not support the following scheme: '%s')rrrrrrretry_http_digest_authrE)rrrr
rurrTs       rTrz/AbstractDigestAuthHandler.http_error_auth_reqedKs++k40<<!CLL#/C#T+
+
LLAL]]_Q'F||~)223@@7* "?AG"HII+	rUcz|jdd\}}ttdt|}|j	||}|rtd|z}|j
j
|jd|k(ry|j|j||jj||j}|Sy)NrBr`z	Digest %srS)rparse_keqv_listfilterparse_http_listget_authorizationrurrrr*rNrQ)rr
rtoken	challengechalauth_valresps        rTrz0AbstractDigestAuthHandler.retry_http_digest_auth_s::c1-yvdOI,FGH%%c40"T)H{{t//6(B''(8(8(C;;##C#=DK
rUc|jd|dtjd}|jdt	dz}tj|j}|ddS)Nryrz)rtimectimer_randombyteshashlibsha1	hexdigest)rnoncesbdigs     rT
get_cnoncez$AbstractDigestAuthHandler.get_cnonceksT ++UDJJLA
HHWQ/ll1o'')3BxrUc	|d}|d}|jd}|jdd}|jdd}|j|\}}	|y|jj	||j
\}
}|
y|j|j|j|}nd}|
d|d|}
|jd|j}||	||
|d||}nd|jd	vry||jk(r|xjd
z
c_nd
|_||_d|jz}|j|}|d|d|ddd||	}|	||
|}ntd|zd
|
d|d|d|jd|d}|r|d|zz
}|r|d|zz
}|d|zz
}|r|dddz
}|S#t$rYywxYw)Nrrqop	algorithmMD5opaqueryr,r`z%08xzqop '%s' is not supported.z
username="z
", realm="z
", nonce="z", uri="z
", response="rz
, opaque="%s"z
, digest="%s"z, algorithm="%s"z, qop=auth, nc=z
, cnonce=")rKeyErrorget_algorithm_implsrrrrPget_entity_digestrrrrrr
r)rr
rrrrr
rHKDrmrentdigA1A2respdigncvaluecnoncenoncebitrs                    rTrz+AbstractDigestAuthHandler.get_authorizationvs		MEME((5/Ce4IXXh-F((329;;11%Fb<88++CHHd;FF
+(&
;25!B% 89G
syy~
%'  A% #$ "'t///G__U+F+0'661R5QH2)G7#=>>
#'ucll")+Of,,DOf,,D"Y..HHDg		s?G	G#"G#cV|dk(rdn|dk(rdntd|zfd}|fS)Nrcftj|jdjSNrz)rmd5rrxs rTruz?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>s!'++ahhw&78BBDrUSHAcftj|jdjSr)rrrrr!s rTruz?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>s!',,qxx'89CCErUz.Unsupported digest authentication algorithm %rc|d|S)Nryr)rdrs  rTruz?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>s!q!,-rU)rE)rr
rrs   @rTrz-AbstractDigestAuthHandler.get_algorithm_implssGDA
%
EA,.789
9
-"urUcyrWr)rrPrs   rTrz+AbstractDigestAuthHandler.get_entity_digestsrUrW)rrrrrrrr
rrrrrUrTr'r'4s,I(
	<|rUr'ceZdZ	dZdZdZy)r(rc~t|jd}|jd|||}|j|S)Nr`r)rrrrrr
rtr4r5rurretrys        rTrz$HTTPDigestAuthHandler.http_error_401s@%a(**+=+/g? rUN)rrrrr-rrrUrTr(r(s"KMrUr(ceZdZdZdZdZy)r)Proxy-Authorizationr)cf|j}|jd|||}|j|Sr)rrrr+s        rTrz%ProxyDigestAuthHandler.http_error_407s6xx**+?+/g? rUN)rrrrr-rrrUrTr)r)s'KMrUr)c,eZdZddZdZdZdZdZy)AbstractHTTPHandlerNcj|||_ytjjj|_yrW)rrHTTPConnection
debuglevel_debuglevel)rr4s  rTrzAbstractHTTPHandler.__init__s&)3)?:T[[E_E_EjEjrUc||_yrW)r5)rlevels  rTset_http_debuglevelz'AbstractHTTPHandler.set_http_debuglevels
 rUctjjj|j|jSrW)rrr3_get_content_lengthrPrrrs  rTr:z'AbstractHTTPHandler._get_content_lengths2{{))==LL "	"rUc|j}|std|j|j}t|tr
d}t||j
ds|jdd|j
dsR|j
dsA|j|}||jdt	|n|jdd|}|jr&t|j\}}t|\}}	|j
ds|jd||jjD]9\}
}|
j}
|j
|
r(|j|
|;|S)	N
no host givenz\POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.zContent-type!application/x-www-form-urlencodedrTransfer-encodingchunkedr)rrrPrrrrrr:rrrr
r*rr)rrrrPr5content_lengthsel_hostrTselsel_pathrjrs            rTdo_request_zAbstractHTTPHandler.do_request_so||?++<<#<<D$$Dn$%%n5//"79&&'78#../BC!%!9!9'!B!-33,c..AC33/<$W%5%56KFC!+CHh!!&)++FH=;;11	=KD%??$D%%d+//e<	=
rUc		|j}|std||fd|ji|}|j|jt|j}|j|jjDcic]\}}||vr||c}}d|d<|jD	
cic]\}	}
|	j|
}}	}
|jr0i}d}||vr||||<||=|j|j|		|j|j|j|j ||j#d|j'}|j*r!|j*j)d|_|j-|_|j0|_|Scc}}wcc}
}	w#t$$r}
t|
d}
~
wwxYw#|j)xYw)	Nr=rQr
Connectionr.rur?)encode_chunked)rrrQset_debuglevelr5rrupdaterurtitler
set_tunnelrrrrPrr~getresponsersockrrOreasonr5)r
http_classr
http_conn_argsrr&rurGrHrjrtunnel_headersproxy_auth_hdrerrrts               rTrzAbstractHTTPHandler.do_opens	xx?++
tCS[[CNC	))*s,,-):):)<-AG+1-	.!(6=mmoFs4::<$FFN2N(181H~.N+
LL))>LB		
$		#..*CLL#((G),8K)LN

A
66
FFLLNAF  "e-G 
$sm#
$	
GGIs7G
9GAG
G)
	G&G!!G&&G))G<rW)rrrrr8r:rErrrUrTr1r1sk!"
$L@rUr1c*eZdZdZej
Zy)r*cV|jtjj|SrW)rrrr3rr
s  rT	http_openzHTTPHandler.http_open\s||DKK66<<rUN)rrrrYr1rErrrUrTr*r*Zs='22LrUr*rc2eZdZddZdZejZy)rLNc*||n#tjjj}tj|||Ctjjj}tjj|}|||_||_	yrW)
rrrr4r1r	_http_vsn_create_https_contextcheck_hostname_context)rr4r?r^http_versions     rTrzHTTPSHandler.__init__esq'1'=4;;C^C^CiCiJ((z:#{{::DD++;;LI))7&#DMrUcn|jtjj||jS)NrA)rrrrr_rXs  rT
https_openzHTTPSHandler.https_openos-<< ; ;S(,

 7
7rUNNN)rrrrrbr1rErrrUrTrLrLcs	$	7,77
rUrLc(eZdZddZdZdZeZeZy)rNcRddl}||jj}||_yr)http.cookiejar	cookiejar	CookieJar)rrgrs   rTrzHTTPCookieProcessor.__init__xs$002I"rUc<|jj||SrW)rgadd_cookie_headerr;s  rTrz HTTPCookieProcessor.http_request~s((1rUc>|jj|||SrW)rgextract_cookies)rrrs   rTr6z!HTTPCookieProcessor.http_responses&&x9rUrW)rrrrrr6rr7rrUrTrrws#!M"NrUrceZdZdZy)r/c6|j}td|z)Nzunknown url type: %s)rr)rr
rs   rTrzUnknownHandler.unknown_opensxx-455rUN)rrrrrrUrTr/r/s6rUr/cx	i}|D]1}|jdd\}}|ddk(r
|ddk(r|dd}|||<3|S)N=r`rrr])r)lparsedeltrGrHs     rTrrs]H
Fyya 1Q43;1R5C<!BAq		
MrUc	g}d}dx}}|D]H}|r||z
}d}
|r|dk(rd}|dk(rd}||z
}$|dk(r|j|d}=|dk(rd}||z
}J|r|j||Dcgc]}|jc}Scc}w)NrF\Trr)rlr)rrespartescaper
curs      rTrrs
C
DFUCKDFd{CKD#:JJtD#:E-2

4%()TDJJL)))s.Bc"eZdZdZdZdZdZy)r+c|j}|dddk(rK|dddk7rC|jr7|jdk7r(|j|jvrtdy|j	|S)Nr;rdrrO	localhost-file:// scheme is supported only on localhost)rr	get_namesropen_local_file)rr
rOs   rT	file_openzFileHandler.file_opensmllr7d?s1Qx3CHHK'88t~~//NOO0'',,rUNctjf	ttjddtjtj
dzt_tjStjS#tj$r1tjdft_YtjSwxYw)Nr|r;)r+namesrrgethostbyname_exgethostnamegaierror
gethostbynamers rTr~zFileHandler.get_namess$
I$)++K8;++F,>,>,@A!DE%F!
   {   ??
I%+%9%9+%F$H!   
IsAB2C
CcDddl}ddl}|j}|j}t	|}	tj|}|j}|jj|jd}	|j|d}
|jd|
xsd||	fz}|rt|\}}|rsBt||jvr'|r	d|z|z}
nd|z}
t!t#|d||
St'd#t$$r}t'|d}~wwxYw)	NrTusegmtz6Content-type: %s
Content-length: %d
Last-modified: %s

text/plainfile://rbzfile not on local host)email.utils	mimetypesrrr5restatst_sizeutils
formatdatest_mtime
guess_typemessage_from_stringr_safe_gethostbynamer~rrNr~r)rr
emailrrrq	localfilestatsrymodifiedmtyperurorigurlexps               rTrzFileHandler.open_local_files$xx<< *		 GGI&E==D{{--ennT-JH((215E/e//K&,h789G'-
d1$74>>;KK'$.9G'(2G!$y$"7'JJ/00	 3-	 sC
D	DDD)rrrrrr~rrrUrTr+r+s-
E!1rUr+c`	tj|S#tj$rYywxYwrW)rrr)rs rTrrs.##D))??s--ceZdZdZdZy)r,c$ddl}ddl}|j}|stdt	|\}}|
|j
}nt
|}t|\}}|rt|\}}nd}t|}|xsd}|xsd}	tj|}t|j\}	}
|	jd}t!t#t|}|dd|d}}|r
|ds|dd}	|j%||||||j&}
|xrdxsd}|
D]9}t)|\}}|j+d	k(s%|d
vs*|j-};|
j/||\}}d}|j1|j2d}|r|d|zz
}|
|dk\r|d|zz
}t5j6|}t9|||j2S#t$r}t|d}~wwxYw#|j:$r}t||d}~wwxYw)
Nrftp error: no host givenrrOr]r`rDraArrr&rzContent-type: %s
zContent-length: %d
)ftplibrrrrFTP_PORTrmrrrrrr~rrrrmapconnect_ftprQrrupperretrfilerrrrr
all_errors)rr
rrrrrmrr5rfattrsdirsrYfwrattrrrtretrlenrurrs                      rTftp_openzFTPHandler.ftp_opens)xx566%
d<??Dt9D %
d'-LD&Ft}zr2	 ''-D!.ezz#C&'#2YRdQ8D	)!!$dD#++NB<C&3D
))$/e::<6):: ;;=D	
)
++dD1KBG((6q9E/%77"w!|1G;;//8Gb'3<<881	 3-	 2  	)3-S(	)s>G1AG/G/BG/	G,G''G,/H>H

Hc	&t||||||dS)NF)
persistent)
ftpwrapper)rrmrrrrrQs       rTrzFTPHandler.connect_ftp1s$dD'%*,	,rUN)rrrrrrrUrTr,r,s
2)h,rUr,c0eZdZdZdZdZdZdZdZy)r-cJi|_i|_d|_d|_d|_y)Nr<r)cacherQsoonestdelay	max_connsrs rTrzCacheFTPHandler.__init__8s%

rUc||_yrW)r)rts  rT
setTimeoutzCacheFTPHandler.setTimeout?s	
rUc||_yrW)r)rrEs  rTsetMaxConnszCacheFTPHandler.setMaxConnsBs	rUc||||dj||f}||jvr/tj|jz|j|<nKt|||||||j|<tj|jz|j|<|j
|j|S)NrO)joinrrrrQrcheck_cache)rrmrrrrrQrs        rTrzCacheFTPHandler.connect_ftpEsD$7$** $		djj 8DLL(vtT)-w8DJJsO $		djj 8DLLzz#rUctj}|j|krht|jj	D]B\}}||ks|j
|j
|j
|=|j|=Dtt|jj|_t|j
|jk(rt|jj	D]0\}}||jk(s|j
|=|j|=ntt|jj|_yyrW)rrrrQrrrminvaluesror)rrrGrHs    rTrzCacheFTPHandler.check_cachePsIIK<<1T\\//12
(1q5JJqM'')

1
Q	
(
4 3 3 567tzz?dnn,T\\//12
1$

1
Q	

tDLL$7$7$9:;DL
-rUc|jjD]}|j|jj|jjyrW)rrrclearrQ)rconns  rTclear_cachezCacheFTPHandler.clear_cachedsGJJ%%'	DJJL	

rUN)	rrrrrrrrrrrUrTr-r-5s 	<(rUr-ceZdZdZy)r.ch|j}|jdd\}}|jdd\}}t|}|jdrt	j
|}|dd}|sd}t
jd|t|fz}ttj|||S)Nryr`rz;base64itext/plain;charset=US-ASCIIz$Content-type: %s
Content-length: %d
)rrrendswithr~decodebytesrrrorioBytesIO)rr
rOrTrP	mediatyperus       rT	data_openzDataHandler.data_openksllyyQ'**S+	4 %i(%%d+D!#2I5I++,T
D	"-#$"**T*GS99rUN)rrrrrrUrTr.r.js:rUr.r<nt)r5r4c	t|SrW)rpathnames rTr5r5s	Cx  rUc	t|SrW)r
rs rTr4r4s	BXrUceZdZ	dZdezZddZdZdZdZ	dZ
ddZdd	Zdd
Z
ddZdZdd
ZddZdZerdZddZdZdZdZddZy)r9Nrcvdd|jjiz}tj|td|
t}||_|jd|_|jd|_	d|jfdg|_g|_tj|_d|_t"|_y)	NzW%(class)s style of invoking requests is deprecated. Use newer urlopen functions/methodsclassr)
stacklevelkey_file	cert_filez
User-Agent)Acceptz*/*)rrrBrCrDr6rvrrrversionr_URLopener__tempfilesrer}_URLopener__unlink	tempcacheftpcache)rrvx509r5s    rTrzURLopener.__init__s47>@W@W6XY

c-!<? lG,
+.($,,79JK		
!
rUc$|jyrW)rrs rT__del__zURLopener.__del__s

rUc$|jyrW)cleanuprs rTrzURLopener.closesrUc|jr2|jD]}	|j||jdd=|jr|jj	yy#t$rYYwxYwrW)rrr~rr)rrYs  rTrzURLopener.cleanupss((
MM$'

  #>>NN  "sA''	A32A3c<	|jj|yrW)rrl)rrs  rT	addheaderzURLopener.addheaders	5t$rUc	tt|}t|d}|jr9||jvr+|j|\}}t	|d}t|||St
|\}}|sd}||jvr0|j|}t
|\}}	t|	\}
}|
|f}nd}d|z}||_	|jdd}t||r|dk(r'|r|j|||S|j||S	|t|||St||||S#tt f$rt"$r}
t#d	|
|
d}
~
wwxYw)
Nz%/:=&?~#+!$,;'@()*[]|rQrrYopen_-rrzsocket error)r	rr
rrNrrrvr
rrCropen_unknown_proxyopen_unknownrrrr~)rr	rPrqrurturltyperOrf	proxyhostrrrjr5s              rTrNzURLopener.opens}D7+,&=>>>g7 $w 7Hgh%Bb'733!'*Gdll"LL)E!+E!2GY'	2ND(/CE 	||C%tT"d.?&?..ugtDD(($77	8|*wtT*3//*wtT*3558$		8.#.C7	8sD8%D88E"
EE"c:	t|\}}tdd|)N	url errorzunknown url typerr~)rr	rPrrOs     rTrzURLopener.open_unknowns#=w'	ck#5t<<rUc@	t|\}}tdd|z|)Nrzinvalid proxy for %sr)rrfr	rPrrOs      rTrzURLopener.open_unknown_proxy	s(=w'	ck#9D#@%HHrUc.	tt|}|jr||jvr|j|St|\}}|R|r|dk(rK	|j	|}|j}|j
tt|d|fS|j||}	|j}	|r
t|d}
nt|\}}t|xsd\}}t|xsd\}}t|xsd\}}tjj|d}
t!j"|
\}}|j$j'|tj(|d}
	||	f}|j||j|<d}d}d}d}d|	vrt+|	d	}|r
|||||j-|x}rD|t/|z
}|
j1||dz
}|r
|||||j-|x}rD|
j
	|j
|dk\r||krt3d
||fz||S#t$rYwxYw#|
j
wxYw#|j
wxYw)NrYr`rZrr\r]rr^r_ra)r	rrrrrdrr5r
r~rNrrrerfsplitextrhmkstemprrlfdopenrmrnrorpr)rrOrqrrrPrurl1rtrrurvgarbagerfsuffixfdrwrxryrnrzr{s                     rTretrievezURLopener.retrieves	;Ys^$>>cT^^3>>#&&_
dTTV^
))$/wwy
#Jt$4Q$78$>>YYsD
!"	ggiG8T* *3
 *4:2 6
 +DJB 7
g *4:2 6
g))$/2!)!1!1&!9X  ''1iiD)
!7*>>-*0DNN3'#w.w'789DxT2!wwr{*e*CJ&DIIe$MH!"8R6 "wwr{*e*		HHJ19&C, &(
(
[

F		HHJs9A	I4CJBI-J	I*)I*-I??JJc	d}d}t|tr,t|\}}|rt|\}}t	|}|}nq|\}}t|\}}t|\}	}
|
}d}|	j
dk7rd}n6t|
\}}
|rt|\}}|r	|	d||
}t|r|}|stdd|r>t	|}tj|jjd}nd}|r>t	|}tj|jjd}nd}||}
i}|rd|z|d<|rd|z|d<|r||d	<d
|d<|jD]
\}}|||<|d|d
<|
jd|||n|
jd||	|
j}d|j(cxkrdkr(nn%t+||j,d|z|j(S|j/||j0|j(|j2|j,|S#t j"j$$rt'dwxYw)Nrz://z
http errorr=rzzBasic %sr.rrrrGr>zContent-TyperrrHz$http protocol error: bad status liner2r3http:)rrr
rrrrr}r~r~rrrrrrNrr
BadStatusLinerstatusrr5
http_errorrtrP)rconnection_factoryrOrPuser_passwdproxy_passwdrrrealhostrr
proxy_authr	http_connrurrrs                  rT_open_generic_httpzURLopener._open_generic_httpMs
	c3'_ND($.t$4!Tt}H ND(!+D!1L$&x0MGTCK}}&(!+D!1$,6x,@)K.5xFH)#D7<AA"<0L)),*=*=*?@GGPJJ!+.K##K$6$6$89@@IDD&t,	-7*-DG)*(2T(9GO$&GFO
!(!__	$MFE#GFO	$&IGN#fhg>eXw?	C ,,.H(//'C'hgm&oo/
/??X[[(,,F
F{{((	CABB	Cs9I)I-cZ	|jtjj||SrW)rrrr3rrOrPs   rT	open_httpzURLopener.open_https$ &&t{{'A'A3MMrUc	d|z}t||r,t||}|
||||||}	n
|||||||}	|	r|	S|j|||||S)Nz
http_error_%d)rrr)
rrOrterrcodeerrmsgrurPrjrrws
          rTrzURLopener.http_errorsu	E
(4T4(F|R&'BR&'4Hf}&&sBIIrUcB	|jt||||drW)rrrrOrtrrrus      rTrzURLopener.http_error_defaults!L

Wfgt<<rUcr|js|jr}tjjj
}tjj
|}|j|j|j|j
d|_nd}tjj	||S)NTrA)	rrrrrr\r]load_cert_chainpost_handshake_auth)rrr`r?s    rT_https_connectionzURLopener._https_connections}}#{{::DD++;;LI''

F..:26G/;;..tW.EErUc>	|j|j||SrW)rrrs   rT
open_httpszURLopener.open_httpss %**4+A+A3MMrUc	t|tstd|dddk(r)|dddk7r!|ddjdk7rt	d|j|S)	NzEfile error: proxy support for file protocol currently not implementedr;rdrrOz
localhost/r})rrrrrErrs  rT	open_filezURLopener.open_filese=#s#bccr7d?s1Qx33q9??3D3TLMM'',,rUc	ddl}ddl}t|\}}t|}	t	j
|}|j}	|jj|jd}
|j|d}|jd|xsd|	|
fz}|s&|}
|dddk(rd|z}
t!t#|d	||
St%|\}}|sht'j(|t+ft-zvr=|}
|dddk(rd|z}
n|dd
dk(rt/d|zt!t#|d	||
Std
#t$r%}t|j|jd}~wwxYw)NrTrz6Content-Type: %s
Content-Length: %d
Last-modified: %s
rr`rOrrr;z./zAlocal file url may start with / or file:. Unknown url of type: %sz#local file error: not on local host)rrr
r5rerr~rstrerrorrqrrrrrrrrNrrrr|thishostrE)rrOrrrrY	localnamereryrrruurlfilers               rTrzURLopener.open_local_files_
d &		3GGI&E}};;))%..)F$$S)!,+%++G

"lD(3
45GBQx3#d*d9d3WgFF%
d##D)y{nxz.IJGBQx3#d*bqT! !dgj!jkkd9d3WgFF<==-	31::qzz22	3sE	E5 E00E5c:	t|tstdddl}t	|\}}|stdt|\}}t
|\}}|rt|\}}nd}t|}t|xsd}t|xsd}tj|}|sddl}|j}nt|}t|\}}	t|}|jd}
|
dd|
d}}
|
r
|
ds|
dd}
|
r
|
dsd|
d<|||dj!|
f}t#|j$t&kDrLt)|j$D]4}
|
|k7s	|j$|
}|j$|
=|j+6	||j$vrt-|||||
|j$|<|sd}nd	}|	D]9}t/|\}}|j1d
k(s%|dvs*|j3};|j$|j5||\}}|j7d|zd}d}|r|d
|zz
}|
|dk\r|d|zz
}t9j:|}t=||d|zS#t?$r}td||d}~wwxYw)NzCftp error: proxy support for ftp protocol currently not implementedrrrrOr]r`rrrrzftp:zContent-Type: %s
zContent-Length: %d
ftp error: ) rrrrr
rrrrrrrrrmrrrrorMAXFTPCACHErrrrrrrrrrr	ftperrors)rrOrrrfrrmrrrrrYrrGrHrrrrtrrrurs                       rTopen_ftpzURLopener.open_ftps#s#`aa_
d8$>??%
d%
dT 2vft}tzr"2&##D)??Dt9D &et}zz##2YRdQQRQ3aD$.t}}+$--(
8

a(A

a(GGI	

	9$--'tVT4>

c"$
))$/e::<6):: ;;=D	
)
!MM#.77dCMR((#6q9EG/%77"w!|1G;;//8Gb'6C<88{	9[./S8	9s&AI9)I9.B
I99
JJJc
V	t|tstd	|jdd\}}|sd}|j
d}|dk\rd	||dvr||dzd}|d|}nd
}g}|jdtjdtjtjz|jd
|z|dk(r4tj|jdjd}nt|}|jdt!|z|jd
|j|dj#|}t%j&|}t)j*|}t-|||S#t$r
tddwxYw)NzEdata error: proxy support for data protocol currently not implementedrr`z
data errorzbad data URLr;rrprzDate: %sz%a, %d %b %Y %H:%M:%S GMTzContent-type: %sr~rzzlatin-1zContent-Length: %d
)rrrrrEr~rfindrlrstrftimegmtimer~rrrrrorrrrStringIOr)	rrOrPrsemirPr5rufs	         rT	open_datazURLopener.open_data7s#s#bcc	899S!,LT40Dzz#19DK/DFG}H;DH

:dmm,G,0KK		,DFF	G

%,-x%%dkk'&:;BB9MD4=D

'#d)34

2

4iin++C0KK!Wc**5	8,77	8sFF(rWrc)rrrrrrrrrrrrNrrrrrrrrFrrrrr*r4rrUrTr9r9sK ;.G!4#%"8H=
I:|ZFxNJ =
	F	N->@89t'+rUr9ceZdZ	dZdZddZdZddZddZddZ	dd	Z
		dd
Z		ddZddZ
dd
ZddZddZddZdZy)r:c`tj|g|i|i|_d|_d|_y)Nrr<)r9r
auth_cachetriesmaxtries)rrrs   rTrzFancyURLopener.__init__ds/41$1&1

rUc&	t||d|z|S)Nr)rrs      rTrz!FancyURLopener.http_error_defaultjsA"gw}g>>rUNc@	|xjdz
c_	|jrQ|j|jk\r8t|dr
|j}n|j}|||dd|d|_S|j||||||}|d|_S#d|_wxYw)Nr`http_error_500r(z)Internal Server Error: Redirect Recursionr)r8r9rr<rredirect_internal)	rrOrtrrrurPrrws	         rTr^zFancyURLopener.http_error_302ns3

a

	}}t}}!<4!12..D22DCSG#%DJ	++CWf,3T;FDJDJsAB5B	Bcd|vr|d}nd|vr|d}ny|jt|jdz|z|}t|}|jdvrt|||d|zz|||j
|S)NrKrLryrMz( Redirection to url '%s' is not allowed.)rrrrrTrrN)	rrOrtrrrurPrDr[s	         rTr=z FancyURLopener.redirect_internals Z(F
g
U^F

S3.7F#??">>FG"FOP#R)
)
yy  rUc0	|j||||||SrWr^rrOrtrrrurPs       rTr_zFancyURLopener.http_error_301s 8""3GVWdKKrUc0	|j||||||SrWr@rAs       rTr`zFancyURLopener.http_error_303s I""3GVWdKKrUc^	||j||||||S|j|||||SrW)r^rrAs       rTrazFancyURLopener.http_error_307>?<&&sB$OO**3GVWMMrUc^	||j||||||S|j|||||SrW)r_rrAs       rTrbzFancyURLopener.http_error_308rDrUc	d|vrtj|||||||d}tjd|}	|	stj|||||||	j	\}
}|
jdk7rtj|||||||stj||||||d|jzdz}|t||||St|||||S)Nr![ 	]*([^ 	]+)[ 	]+realm="([^"]*)"rretry__basic_authr9rrmatchrrrr
rrOrtrrrurPr,stuffrKrTrrjs
             rTrzFancyURLopener.http_error_401s	=W,((sB)0&'
C*+?G((sB)0&'
C
<<>W$((sB)0&'
C((sB
$))#m3<%74%c511%74%c5$77rUc	d|vrtj|||||||d}tjd|}	|	stj|||||||	j	\}
}|
jdk7rtj|||||||stj||||||d|jzdz}|t||||St|||||S)NrrGrretry_proxy_rIrJrLs
             rTrzFancyURLopener.http_error_407s	=w.((sB)0&'
C,-?G((sB)0&'
C
<<>W$((sB)0&'
C((sB
		)M9<%74%c511%74%c5$77rUct|\}}d|z|z}|jd}t|\}}	t|	\}	}
|	jddz}|	|d}	|j	|	||\}}
|s|
syt|ddt|
dd|	}	d|	z|
z|jd<||j
|S|j
||S)Nhttp://rrer`rrryr
rvrrget_user_passwdr
rNrrOrrPrrrDrfrr
proxyselectorrrmrs              rTretry_proxy_http_basic_authz*FancyURLopener.retry_proxy_http_basic_auths#ChT!H,V$'.#-i#8 	=NN3!#abM	++Iua@f"'2"6"'R"8)E	(94}DV<99V$$99VT**rUct|\}}d|z|z}|jd}t|\}}	t|	\}	}
|	jddz}|	|d}	|j	|	||\}}
|s|
syt|ddt|
dd|	}	d|	z|
z|jd<||j
|S|j
||S)Nhttps://rrer`rrryrRrTs              rTretry_proxy_https_basic_authz+FancyURLopener.retry_proxy_https_basic_auths#Chd"X-W%'.#-i#8 	=NN3!#abM	++Iua@f"'2"6"'R"8)E	 *Y 6 FW<99V$$99VT**rUc t|\}}|jddz}||d}|j|||\}}|s|syt|ddt|dd|}d|z|z}	||j	|	S|j	|	|S)Nrer`rrryrQr
rrSr
rN
rrOrrPrrrrmrrDs
          rTrz$FancyURLopener.retry_http_basic_auth	s#ChIIcNQABx++D%;f"4b1"63T;T!H,<99V$$99VT**rUc t|\}}|jddz}||d}|j|||\}}|s|syt|ddt|dd|}d|z|z}	||j	|	S|j	|	|S)Nrer`rrryrXr[r\s
          rTretry_https_basic_authz%FancyURLopener.retry_https_basic_auth	s#ChIIcNQABx++D%;f"4b1"63T;d"X-<99V$$99VT**rUc|dz|jz}||jvr|r|j|=n|j|S|j||\}}|s|r||f|j|<||fS)Nre)rr7prompt_user_passwd)rrrrrrmrs       rTrSzFancyURLopener.get_user_passwd$	svckDJJL($//!OOC(s++..tU;f64.4??3/V|rUc		ddl}	td|d|d}|jd|d|d|d}||fS#t$r
tYywxYw)NrzEnter username for z at z: zEnter password for z in r)getpassinputKeyboardInterruptprint)rrrrbrmrs      rTr`z!FancyURLopener.prompt_user_passwd/	sW1	E4HID__ud&$%F< 	G	s08A
ArW)NF)r)rrrrrr^r=r_r`rarbrrrVrYrr^rSr`rrUrTr:r:asmI?$!8LLNNFJ82FJ82+$+$++	
rUr:cF	ttjdatS)Nr|)
_localhostrrrrUrTr|r|?	s!B))+6
rUc	t:	ttjtjdatStS#tj
$r)ttjddaYtSwxYw)Nr;r|)	_thishostrrrrrrrUrTr"r"G	sx6	Gf55f6H6H6JKANOI9	Gf55kB1EFI	Gs3A4BBc<	tddl}|jatSr)
_ftperrorsrr)rs rTr)r)R	s;&&
rUcF	ttjdatSr)
_noheadersrrrrUrT	noheadersrn[	s!/..r2
rUc>eZdZ			d	dZdZdZdZdZdZdZ	y)
rNc||_||_||_||_||_||_d|_||_	|jy#|jxYwr)
rmrrrrrQrefcount	keepaliveinitr)rrmrrrrrQrs        rTrzftpwrapper.__init__h	s[				
#	IIK	JJLsAAcddl}d|_|j|_|jj	|j
|j|j|jj|j|jdj|j}|jj|y)NrrO)rbusyFTPrNconnectrrrQloginrmrrrcwd)rr_targets   rTrszftpwrapper.initx	sw	::<DIIt||<tyy$++.((499%WrUc8ddl}|j|dvrd}d}nd|z}d}	|jj|d}|r&|s$	d|z}|jj
|\}}|s|jjd|rY|jj}			|jj|	|jj|	d|z}nd}|jj
|\}}d|_t|jd
|j}
|xj dz
c_|j#|
fS#|j$r/|j|jj|YTwxYw#|j$r+}t|dddk7rtd	||Yd}~cd}~wwxYw#|j$r}td
|z|d}~wwxYw#|jj|	wxYw)Nr)r&rzTYPE Ar`zTYPE zRETR r550r'z
ftp error: %rzLIST LISTr)rendtransferrNvoidcmdrrsntransfercmd
error_permrrpwdryrurmakefile
file_closerqr)rrYrrcmdisdirrrrPrftpobjs           rTrzftpwrapper.retrfile	s:XsqudNcAE	"HHS!
Gn $ 5 5c :
gHHX&hhlln&MT*HHLL%n HH11#6MD'	dmmD14??C




  G  	"IIKHHS!	"$$
Gv;r?e+"[#9:F,
G",,M&'?@fLMHHLL%sME#F&G:FFG( GGG9%G44G99G<<Hc|jsyd|_	|jjy#t$rYywxYwr)rurNvoidrespr)rs rTr~zftpwrapper.endtransfer	s<yy		HH{		s1
AAcRd|_|jdkr|jyy)NFr)rrrq
real_closers rTrzftpwrapper.close	s$==AOOrUc|j|xjdzc_|jdkr|js|jyyy)Nr`r)r~rqrrrrs rTrzftpwrapper.file_close	s@


==AdnnOO'5rUc|j	|jjy#t$rYywxYwrW)r~rNrr)rs rTrzftpwrapper.real_close	s5	HHNN{		s-
==)NT)
rrrrrsrr~rrrrrUrTrre	s/E?C  *!X
rUrc	i}g}tjjD]s}t|dkDs|ddk(s|ddj	dk(s2tj|}|ddj	}|j|||f|so|||<udtjvr|j
dd|D])\}}}|dddk(s|r|||<|j
|d+|S)	NrirrfREQUEST_METHODr_proxy)reenvironkeysrorrlr)rvenvironmentrjr
proxy_names     rTgetproxies_environmentr	sGK

!,t9q=T"X_bc1Bg1MJJt$Ecr*JeZ89&+
#,2::%FD!#..eZ9 &+
#J-
.NrUc	|
t}	|d}|dk(ry|j}t|\}}|j	dD]k}|j}|s|j
d}|j}||k(s||k(ryd|z}|j|s|j|skyy#t$rYywxYw)NnoF*Tr.)rrrrrrlstripr)rrvno_proxyhostonlyrrjs      rTproxy_bypass_environmentr	s(*4=3::<D%NHds#	zz|;;s#D::<D444<:D  &$--*=	)sB88	CCc	ddlm}t|\}}d}d|vr|dryd}|jddD]}|stjd	|}||	tj|}||}||jd
}	|jd}
|
'd|jd
jdd
zz}
nt|
d
d}
|
dks|
d
kDrd
|
z
}
||
z	|	|
z	k(sy|||syy#t$rYwxYw)Nr)fnmatchc|jd}ttt|}t	|dk7r
|gdzdd}|ddz|ddzz|dd	zz|d
zS)Nrr;)rrrrrr`rr;rr)rrrrmro)ipAddrrs  rTip2numz,_proxy_bypass_macosx_sysconf.<locals>.ip2num#
smS!Se_%u:?\)2A.EaB58r>2eAh!mDuQxOOrUrexclude_simpleT
exceptionsrz(\d+(?:\.\d+)*)(/\d+)?r`r;r F)rrrrrKrrr~groupcountrm)rproxy_settingsrrrrhostIPrrErmasks           rT_proxy_bypass_macosx_sysconfr
s>
 %NHdP$*+
F##L"5hHH.6=~#11(;F#F^F!''!*%D771:D|AGGAJ,,S1A5648}ax4"99D$DDL1
T5
!=@-sD	DDdarwin)_get_proxy_settings_get_proxiesc.t}t||SrW)rr)rrs  rTproxy_bypass_macosx_sysconfrW
s,.+D.AArUc	tSrW)rrrUrTgetproxies_macosx_sysconfr[
s	
~rUcJ	t}|rt||St|SrW)rrrrrvs  rTr}r}e
s,	)*+D'::.t44rUc.txs
tSrW)rrrrUrTr6r6r
s%'F+D+FFrUc	i}	ddl}	|j|jd}|j	|dd}|rt|j	|dd}d|vrd|vrdj
|}|jdD]F}|jdd\}}tjd	|s|d
vrd|z}n
|dk(rd
|z}|||<H|jdrJtjdd|d}|jdxs||d<|jdxs||d<|j|S#t$r|cYSwxYw#tttf$rY|SwxYw)Nr;Software\Microsoft\Windows\CurrentVersion\Internet SettingsProxyEnableProxyServerrpr,zhttp={0};https={0};ftp={0}r`z
(?:[^/:]+)://)rrrNrQsockszsocks://z	^socks://z	socks4://rr)winregImportErrorOpenKeyHKEY_CURRENT_USERQueryValueExrrrrrKrrCloser~rEr)rvrinternetSettingsproxyEnableproxyServerpraddresss        rTgetproxies_registryrw
s	
	"	%~~f.F.FN P --.>/<>>?AK!&"5"56F7D#FFG#IJk)c.D">"E"Ek"RK$**3/
0A()Q%Hg88OW=#'??&/'&9G%0&07&:G(/GH%
0;;w' ff\;@PQG&-kk&&9&DWGFO'.{{7';'FwGG$""$M	N	BY/	
	s#D;D/E;E	E	E$#E$c0	txs
tSrW)rrrrUrTr6r6
s	&'@+>+@@rUc	ddl}	|j|jd}|j	|dd}t|j	|dd}|r|syt|\}}|g}	tj|}||k7r|j|	tj|}||k7r|j||jd}|D]r}	|	dk(rd|vry|	jdd	}	|	jd
d}	|	jdd}	|D]*}
tj|	|
tj s)yty#t$rYywxYw#t$rYywxYw#t$rYwxYw#t$rYwxYw)
Nrrr
ProxyOverrider,z<local>rr`z\.rz.*?)rrrrrrr~rrrrlgetfqdnrrCrrKr)rrrr
proxyOverriderawHostraddrfqdnrrs           rTproxy_bypass_registryr
s			%~~f.F.FN P --.>/<>>?AK 3 34D5D!FFG!IJM
-"4(
y	''0DwD!	>>'*DwD!&++C0
!		Dy g%<<U+D<<U+D<<T*D
88D#rtt,
		[								sGE
AE-+E++E:
	EE	E('E(+	E76E7:	FFcJ	t}|rt||St|SrW)rrrrs  rTr}r}
s,	)*+D'::(..rUrcrW)|r~rrrhttp.clientrrrerrrVrrrhrbrBurllib.errorrrrurllib.parserrrr	r
rrr
rrrrrrrrrrurllib.responserrrGrFr__all__version_inforrMrr1r2rkr7r8rASCIIrrrrr3rr0rrror r!r"r#r$r%r&urandomrr'r(r)r1r*rrrLrlrr/rrr+rr,r-r.r(rj
nturl2pathr5r4rr9r:rgr|rir"rkr)rmrnrrrrplatform_scproxyrrrrr}r6rrrrUrT<module>rsCf
			


CB"""""
5I$((!,,
F$B$BM+45$M+^:xrzz(BHH- k"k"ZI+I+^"H88&##";k;n2+n2b,B)>;)>V=*=*@GoG3#B3>k#k#^3[4k zzOOdK)B$
[*C
s+sl3%34;;)*8*8$NN>"#+#$6[6
)*V11+11f7,7,r3j3j:+:B77d?55!
++DXYXz

	

aaH#J J>B<<8:B5GWW_/bA0d/(J+LGTIs9K

KK