fw< ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)m*Z* ddl+Z+dZ,n #e-$rdZ,YnwxYwgdZ.de j/dd zZ0da1de j2fddddd d Z3d Z4gZ5dfd Z6dZ7e j8de j9Z:dZ;GddZ<GddZ=dZ>GddZ?Gdde?Z@Gdde?ZAGdde?ZBdZCGdd e?ZDGd!d"ZEGd#d$eEZFGd%d&eFZGGd'd(ZHGd)d*eHe?ZIGd+d,eHe?ZJejKZLGd-d.ZMGd/d0e?eMZNGd1d2e?eMZOGd3d4e?ZPGd5d6ePZQeRejSd7r#Gd8d9ePZTe.Ud9Gd:d;e?ZVGd<d=e?ZWd>ZXd?ZYGd@dAe?ZZdBZ[GdCdDe?Z\GdEdFe\Z]GdGdHe?Z^dIZ_ej`dJkr ddKlambZbmcZcndLZbdMZciZdGdNdOZeGdPdQeeZfdagdRZhdaidSZjdakdTZldamdUZnGdVdWZodXZpdgdYZqdZZrd[Zse jtd\krdd]lumvZvmwZwd^Zxd_Zyd`ZzdaZ{dSej`dJkrdbZ|dcZ{ddZ}deZzdSepZ{eqZzdS)hN)URLError HTTPErrorContentTooShortError)urlparseurlspliturljoinunwrapquoteunquote _splittype _splithost _splitport _splituser _splitpasswd _splitattr _splitquery _splitvalue _splittag _to_bytesunquote_to_bytes urlunparse) addinfourl addclosehookTF)!RequestOpenerDirector BaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessor ProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmHTTPPasswordMgrWithPriorAuthAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandler HTTPHandler FileHandler FTPHandlerCacheFTPHandler DataHandlerUnknownHandlerHTTPErrorProcessorurlopeninstall_opener build_opener pathname2url url2pathname getproxies urlretrieve urlcleanup URLopenerFancyURLopenerz%d.%d)cafilecapath cadefaultcontextc |s|s|rddl}|jdtd|tdtstdt jt jj||}| dgt|}t|} nA|r t|}t|} nttxa } nt} | |||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.1)r?)warningswarnDeprecationWarning ValueError _have_sslsslcreate_default_contextPurpose SERVER_AUTHset_alpn_protocols HTTPSHandlerr3_openeropen) urldatatimeoutr<r=r>r?rA https_handleropeners 5/opt/alt/python311/lib64/python3.11/urllib/request.pyr1r1s40d9 01CQ H H H    :899 9,S[-D4:4:<<< ""J<000$W555 m,, $W555 m,, '>>)&& ;;sD' * **c |adSN)rL)rRs rSr2r2s GGGrTcN t|\}}tjt||5}|}|dkr/|s-t j||fcdddS|rt|d}n6tj d}|j }t ||5||f} d} d} d} d} d|vrt|d } |r || | |  || }|sn<| t!|z } ||| d z } |r || | | T dddn #1swxYwYdddn #1swxYwY| dkr| | krt%d | | fz| | S) NfilewbF)delete rcontent-lengthContent-LengthT1retrieval incomplete: got only %i out of %i bytes)r contextlibclosingr1infoospathnormpathrMtempfileNamedTemporaryFilename_url_tempfilesappendintreadlenwriter)rNfilename reporthookrOurl_typerefpheaderstfpresultbssizermblocknumblocks rSr7r7s __NHd  GC.. / /$32'')) v  h 7##D))72 $3$3$3$3$3$3$3$3  ,x&&CC-U;;;CxH  ! !( + + +  3 3w&FBDDH7**7#3455 / 8R... 3 E " %   A 3JxT222 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3!$3$3$3$3$3$3$3$3$3$3$3$3$3$3$3L qyyTD[[" ?Tl "$$ $ Ms==E9A E9 B E" E9"E& &E9)E& *E99E=E=c tD]'} tj|#t$rY$wxYwtdd=trdadSdSrV)rjrdunlinkOSErrorrL) temp_files rSr8r8su:#   Ii     D  qqqs ! ..z:\d+$c |j}t|d}|dkr|dd}td|d}|S)Nr_Host)full_urlr get_header _cut_port_resublower)requestrNhosts rS request_hostr-sf  C C== D rzz!!&"--   Ba ( (D ::<<rTceZdZdidddfdZedZejdZejdZedZejdZejd Zd Z d Z d Z d Z dZ dZdZdZddZdZdZdS)rNFc||_i|_i|_d|_||_d|_|D]\}}||||t|}||_ ||_ |r ||_ dSdSrV) rrtunredirected_hdrs_datarO _tunnel_hostitems add_headerrorigin_req_host unverifiablemethod) selfrNrOrtrrrkeyvalues rS__init__zRequest.__init__?s  !#   !--// ( (JC OOC ' ' ' '  "*400O.(  ! DKKK ! !rTc^|jr d|j|jS|jS)Nz{}#{})fragmentformat _full_urlrs rSrzRequest.full_urlQs- = A>>$.$-@@ @~rTct||_t|j\|_|_|dSrV)r rrr_parserrNs rSrzRequest.full_urlWs: (1$.(A(A%  rTc0d|_d|_d|_dSNr)rrselectorrs rSrzRequest.full_url^s  rTc|jSrV)rrs rSrOz Request.datads zrTc||jkr3||_|dr|ddSdSdS)NContent-length)r has_header remove_header)rrOs rSrOz Request.datahsZ 4:  DJ/00 5""#344444    5 5rTcd|_dSrV)rOrs rSrOz Request.datars  rTct|j\|_}|jtd|jzt |\|_|_|jrt|j|_dSdS)Nzunknown url type: %r) r rtyperDrr rrr )rrests rSrzRequest._parsevst$T^44 4 9 3dmCDD D#-d#3#3  4= 9 + **DIII + +rTc< |jdnd}t|d|S)NPOSTGETr)rOgetattr)rdefault_methods rS get_methodzRequest.get_method~s'A#'9#8etX~666rTc|jSrV)rrs rS get_full_urlzRequest.get_full_urls }rTcx|jdkr|js |j|_n||_|j|_||_dS)Nhttps)rrrrr)rrrs rS set_proxyzRequest.set_proxys? 9  (9  $ D  DI MDM rTc"|j|jkSrV)rrrs rS has_proxyzRequest.has_proxys} --rTc>||j|<dSrV)rt capitalizerrvals rSrzRequest.add_headers), S^^%%&&&rTc>||j|<dSrV)rrrs rSadd_unredirected_headerzRequest.add_unredirected_headers36s~~//000rTc&||jvp||jvSrV)rtrr header_names rSrzRequest.has_headers!t|+6t55 7rTcj|j||j||SrV)rtgetr)rrdefaults rSrzRequest.get_headers5|   " & &{G < <>> >rTcr|j|d|j|ddSrV)rtpoprrs rSrzRequest.remove_headers9 d+++ "";55555rTcdi|j|j}t|SrV)rrtlistr)rhdrss rS header_itemszRequest.header_itemss,9$(9DL9DJJLL!!!rTrV)__name__ __module__ __qualname__rpropertyrsetterdeleterrOrrrrrrrrrrrrTrSrr=s!%r!%E!!!!$X __  X [55[5 \\+++777 ...---777777>>>> 666"""""rTrcJeZdZdZdZdZdZdejfdZ d dZ dZ dS) rctdtz}d|fg|_g|_i|_i|_i|_i|_dS)NPython-urllib/%sz User-agent) __version__ addheadershandlers handle_open handle_errorprocess_responseprocess_request)rclient_versions rSrzOpenerDirector.__init__sH+k9(.9:  "!rTcLt|dstdt|zd}t|D].}|dvr|d}|d|}||dzd}|dro|d|zdz}||dzd} t |}n#t$rYnwxYw|j |i} | |j|<n1|dkr |}|j } n!|d kr |}|j } n|d kr |}|j } n| |g} | rtj| |n| |d }0|r1tj|j|||dSdS) N add_parentz%expected BaseHandler instance, got %rF)redirect_requestdo_open proxy_open_r_errorrMresponserT)hasattr TypeErrorrdirfind startswithrlrDrrrrr setdefaultbisectinsortrkrr) rhandleraddedmethiprotocol conditionjkindlookuprs rS add_handlerzOpenerDirector.add_handlersw -- +C MM*++ +LL# # DDDD #ABQBxHQqSTT I##G,, NN3''!+a/AaCDDzt99DD!D*..x<<.4!(++f$$)j((.i''-((r22H ) h0000(((EE  % M$- 1 1 1   t $ $ $ $ $ % %s3C CCcdSrVrrs rSclosezOpenerDirector.close rTcr||d}|D]}t||}||}||cSdS)Nr)rr) rchainr meth_nameargsrrfuncrvs rS _call_chainzOpenerDirector._call_chains^99T2&&  G7I..DT4[F! "  rTNct|trt||}n |}|||_||_|j}|dz}|j|gD]}t||}||}tj d|j |j|j | |||} |dz}|j|gD]}t||}||| } | S)N_requestzurllib.Request _response) isinstancestrrrOrPrrrrsysauditrrtr_openr) rfullurlrOrPreqrr processorrrs rSrMzOpenerDirector.opens" gs # # '4((CCC 8Z' -11(B??  I9i00D$s))CC "CL#(CKIYIYZZZ::c4(([( .228R@@ + +I9i00DtC**HHrTc||jdd|}|r|S|j}||j||dz|}|r|S||jdd|S)Nr default_openrunknown unknown_open)rrr)rr rOrvrs rSrzOpenerDirector._opens!!$"2I"0#77  M8!!$"2Hh")?*+.00  M 0) .55 5rTc|dvr|jd}|d}d|z}d}|}n|j}|dz}d}|||f|z}|j|}|r|S|r|dd f|z}|j|SdS) Nhttprrr;z http_error_%sr__errorrrhttp_error_default)rr)rprotordictrhttp_err orig_argsrvs rSrzOpenerDirector.error s % % %$V,DGE'%/IHII$D(IHeY'$.!!4(  M  +)%9:YFD#4#T* * + +rTrV) rrrrrrrsocket_GLOBAL_DEFAULT_TIMEOUTrMrrrrTrSrrs " " "-%-%-%^      "&v/M: 5 5 5 5+++++rTrc  t}ttttt t tttg }ttj dr| tt}|D]g}|D]b}t!|t"r&t%||r||=t!||r||ch|D]}|||D]}|| |D]6}t!|t"r |}||7|S)NHTTPSConnection)rr r/r*rrr,r+r0r.rrclientrkrKsetrr issubclassaddremover)rrRdefault_classesskipklasscheckhs rSr3r39s|  F#^[.0C!;0B"$Ot{-..-|,,, 55D     E%&& eU++$HHUOOOE5))   &&u%%%% $$5577####  a   A1 MrTc$eZdZdZdZdZdZdS)rc||_dSrV)parent)rr)s rSrzBaseHandler.add_parent`s  rTcdSrVrrs rSrzBaseHandler.closecrrTcFt|dsdS|j|jkS)N handler_orderT)rr,)rothers rS__lt__zBaseHandler.__lt__gs,uo.. 4!E$777rTN)rrrr,rrr.rrTrSrr]sFM   88888rTrceZdZ dZdZeZdS)r0ic|j|j|}}}d|cxkrdks!n|jd|||||}|S)N,r)codemsgrcr)r)rrrr3r4rs rS http_responsez HTTPErrorProcessor.http_responsetsg"-x}}4ct!!!!c!!!!{((4d<r?r z%20)r]z content-typecHi|]\}}|v||Sr)r).0kvCONTENT_HEADERSs rS z8HTTPRedirectHandler.redirect_request..s;;;;tq!/99999rTT)rtrr)rrrreplacertrrr) rr rsr3r4rtnewurlm newheadersrFs @rSrz$HTTPRedirectHandler.redirect_requests  NN  222qO7K7K&&1;;CL$WbAA AU++<;;;;s{'8'8':':;;; v)'*':$(*** *rTcrd|vr |d}nd|vr |d}ndSt|}|jdvrt|||d|d|||js|jrt |}d|d<t |}t|dtj }t|j |}| ||||||}|dSt|d rf|jx} |_| |d |jkst#| |jkr t|j ||j|z||nix} x|_|_| |d d z| |<|||j||j S)Nlocationurirrftprz - Redirection to url 'z' is not allowed/r;z iso-8859-1)encodingsafe redirect_dictrr_rP)rschemerrenetlocrrr string punctuationrrrrrTr max_repeatsrnmax_redirectionsinf_msgrmrr)rMrP) rr rsr3r4rtrIurlpartsnewvisiteds rShttp_error_302z"HTTPRedirectHandler.http_error_302s  Z(FF g  U^FF FF## ?"> > >ADfffM  }  H~~HHQKH%%  \0BDDDv.. ##CT3HH ; F 3 ( ( A*-*; ;Gc' FA&&$*:::G  555 d $ s 2GRAAA6?A @G @c'#*;!++fa0014    {S[999rTzoThe HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: N) rrrrZr[rr`http_error_301http_error_303http_error_307http_error_308r\rrTrSrrs\K * * *L::::::xIWVNV^Vn~2GGGrTrc t|\}}|dsd}|}n|dstd|zd|vr,|d}|d|}n|dd}|dkrd}|d|}t |\}}|t |\}} ndx}} ||| |fS)NrQ//zproxy URL with no authority: %r@r;r\)r rrDrrr) proxyrVr_scheme authorityhost_separatorenduserinfohostportuserpasswords rS _parse_proxyrqs  "%((FH   s # #$ ""4(( H>FGG G (??%]]3//N--^44CC--Q''C "99CQsUO #I..Hh%h//hhx 48 ++rTc eZdZdZddZdZdS)r dNc|t}||_|D]7\}}|}t |d|z|||jfd8dS)Nz%s_openc||||SrVr)rrhrrs rSz'ProxyHandler.__init__..#sQt,,rT)r6proxiesrrsetattrr)rrxrrNs rSrzProxyHandler.__init__s ? llG   . .ID#::<>>>>rTr c.eZdZdZdZdZddZdZdS) r!ci|_dSrV)passwdrs rSrzHTTPPasswordMgr.__init__Ds  rTct|tr|g}|jvr ij|<dD]0tfd|D}||fj||<1dS)NTFc3DK|]}|VdSrV) reduce_uri)rCu default_portrs rS z/HTTPPasswordMgr.add_password..NsB ? ?56<00 ? ? ? ? ? ?rT)rrrtuple)rrealmrNror reduced_urirs` @rS add_passwordzHTTPPasswordMgr.add_passwordGs c3   %C  # #!#DK ' = =L ? ? ? ? ?:= ? ? ???K/3VnDK { + + = =rTc|j|i}dD]U}|||}|D](\}}|D] }|||r|cccS!)VdS)NrNN)rrrr is_suburi) rrauthuridomainsrreduced_authuriurisauthinforNs rSfind_user_passwordz"HTTPPasswordMgr.find_user_passwordRs+//%,,' ( (L"oog|DDO")--// ( (h((C~~c?;;('(( (zrTTc t|}|dr|d}|d}|dpd}nd}|}d}t|\}}|r%|#|!ddd|} | d|| fz}||fS) Nr_rr;rQPirz%s:%d)rrr) rrNrpartsrVrjrerportdports rSrzHTTPPasswordMgr.reduce_uri\sN  8 1XFaI8?sDDFID ** d  4DLV-?!s6{{  #tUm3 $rTc ||krdS|d|dkrdS|d}|dddkr|dz }|d|S)NTrFr_r\rQ)r)rbasetestprefixs rSrzHTTPPasswordMgr.is_suburissl  4<<4 7d1g  5a "##;#   cMFAw!!&)))rTN)T)rrrrrrrrrrTrSr!r!Bsd = = =. * * * * *rTr!ceZdZdZdS)r"ct|||\}}|||fSt|d|SrV)r!r)rrrrorps rSrz2HTTPPasswordMgrWithDefaultRealm.find_user_passwordsL(;;D% !11$gFFFrTN)rrrrrrTrSr"r"s(GGGGGrTr"c8eZdZfdZdfd ZddZdZxZS)r#cHi|_tj|i|dSrV) authenticatedsuperr)rrkwargs __class__s rSrz%HTTPPasswordMgrWithPriorAuth.__init__s-$)&)))))rTFc||||$td|||t||||dSrV)update_authenticatedrr)rrrNroris_authenticatedrs rSrz)HTTPPasswordMgrWithPriorAuth.add_passwordsb !!#'7888   GG sD& 9 9 9 UCv66666rTct|tr|g}dD]'}|D]"}|||}||j|<#(dSNr)rrrr)rrNrrrrs rSrz1HTTPPasswordMgrWithPriorAuth.update_authenticatedsr c3   %C' C CL C C"ooa>> 2B";// C C CrTcdD]I}|||}|jD])}|||r|j|ccS*JdSr)rrr)rrrrrNs rSrz-HTTPPasswordMgrWithPriorAuth.is_authenticatedsz' 3 3L"oog|DDO) 3 3>>#773-c2222223 3 3 3rT)F)rrrrrrr __classcell__)rs@rSr#r#s}*****777777CCCC3333333rTr#cheZdZejdejZd dZdZdZ dZ dZ dZ e Z e ZdS) r$z1(?:^|,)[ ]*([^ ,]+)[ ]+realm=(["']?)([^"']*)\2NcV|t}||_|jj|_dSrV)r!rr)r password_mgrs rSrz!AbstractBasicAuthHandler.__init__s-  *,,L"  K4rTc#"Kd}tj|D]A}|\}}}|dvrt jdt d||fVd}B|s'|r|d}nd}|dfVdSdS)NF)"'zBasic Auth Realm was unquotedTrr)r$rxfinditergroupsrArB UserWarningsplit)rheaderfound_challengemorVr rs rS _parse_realmz%AbstractBasicAuthHandler._parse_realms*-66v>> # #B#%99;; FE5J&& =)1...5/ ! ! !"OO ! *4.  ! !rTc||}|sdSd}|D]U}||D]=\}}|dkr|} |||||ccS>V|t d|dS)Nbasicz@AbstractBasicAuthHandler does not support the following scheme: )get_allrrretry_http_basic_authrD) rauthreqrr rt unsupportedrrVrs rShttp_error_auth_reqedz.AbstractBasicAuthHandler.http_error_auth_reqeds//'**  F  H HF!%!2!26!:!: H H <<>>W,,"(K$ 55dCGGGGGGG % H  "* &)** * # "rTc|j||\}}||d|}dtj|dz}||jd|krdS||j||j ||j SdS)Nr{r~r|rU) rrrrrrr auth_headerrr)rMrP)rrr rropwrawauths rSrz.AbstractBasicAuthHandler.retry_http_basic_auths;11%>>b >!TT22&Cf.szz||<<CCGLLLD~~d.55==t  ' '(8$ ? ? ?;##C#== =4rTct|jdr|j|js|S|ds|jd|j\}}d||}tj | }| dd| |S)Nr Authorizationz{0}:{1}zBasic {}) rrrrrrrrrstandard_b64encoderrstrip)rr ror credentialsauth_strs rS http_requestz%AbstractBasicAuthHandler.http_requests %788 {++CL99 J~~o.. M;99$ MMLD&#**488??AAK0==DDFFH  ' '(2(9(9(..:J:J(K(K M M M rTct|jdrVd|jcxkrdkr$nn!|j|jdn |j|jd|S)Nrr1r2TF)rrr3rr)rr rs rSr5z&AbstractBasicAuthHandler.http_response sx 4; 2 3 3 Fhm))))c))))) 00tDDDD 00uEEErTrV)rrrrecompileIrrrrrrr5 https_requestr6rrTrSr$r$s 1D  B5555 !!!(***4      !M"NNNrTr$ceZdZdZdZdS)r%rcD|j}|d|||}|S)Nwww-authenticate)rr)rr rsr3r4rtrNrs rShttp_error_401z#HTTPBasicAuthHandler.http_error_401s-l--.@*-sG==rTN)rrrrrrrTrSr%r%s(!KrTr%ceZdZdZdZdS)r&r}cD|j}|d|||}|SNproxy-authenticate)rr)rr rsr3r4rtrjrs rShttp_error_407z$ProxyBasicAuthHandler.http_error_407)s1 H --.B*3S'CCrTN)rrrrrrrTrSr&r&%s('KrTr&c@eZdZd dZdZdZdZdZdZdZ d Z dS) r'Nc|t}||_|jj|_d|_d|_d|_dSNr)r!rrretried nonce_count last_nonce)rrs rSrz"AbstractDigestAuthHandler.__init__Cs@ >$&&F  K4 rTcd|_dSr)rrs rSreset_retry_countz+AbstractDigestAuthHandler.reset_retry_countLs  rTc||d}|jdkrt|jdd|d|xjdz c_|rr|d}|dkr|||S|dkrtd|zdSdS) Nizdigest auth failedr_rdigestrzEAbstractDigestAuthHandler does not support the following scheme: '%s')rrrrrrretry_http_digest_authrD)rrrr rtrrVs rSrz/AbstractDigestAuthHandler.http_error_auth_reqedOs++k400 > > #'$$uuuclll")''+  - Of, ,D  - Of, ,D "Y..  I DH HD sAA A"!A"cb|dkrdn|dkrdntd|zfd}|fS)Nrcttj|dSNr|)rmd5rrxs rSrwz?AbstractDigestAuthHandler.get_algorithm_impls..s('+ahhw&7&788BBDDrTSHActtj|dSr )rrrrr"s rSrwz?AbstractDigestAuthHandler.get_algorithm_impls..s(',qxx'8'899CCEErTz.Unsupported digest authentication algorithm %rc$|d|S)Nr{r)rdrs rSrwz?AbstractDigestAuthHandler.get_algorithm_impls..s!!qqq!!,--rT)rD)rrrrs @rSrz-AbstractDigestAuthHandler.get_algorithm_implsse   DDAA %  EEAA,.7899 9 - - - -"u rTcdSrVr)rrOrs rSrz+AbstractDigestAuthHandler.get_entity_digeststrTrV) rrrrrrrr rrrrrTrSr'r'8sIII(      <<<|   rTr'ceZdZ dZdZdZdS)r(rct|jd}|d|||}||S)Nr_r)rrrrrr rsr3r4rtrretrys rSrz$HTTPDigestAuthHandler.http_error_401sL %%a(**+=+/g??     rTN)rrrrr,rrrTrSr(r(s4 "KMrTr(ceZdZdZdZdZdS)r)Proxy-Authorizationr*cl|j}|d|||}||Sr)rrrr,s rSrz%ProxyDigestAuthHandler.http_error_407s?x**+?+/g??     rTN)rrrrr,rrrTrSr)r)s-'KMrTr)c.eZdZddZdZdZdZdZdS) AbstractHTTPHandlerrc||_dSrV _debuglevel)r debuglevels rSrzAbstractHTTPHandler.__init__s%rTc||_dSrVr4)rlevels rSset_http_debuglevelz'AbstractHTTPHandler.set_http_debuglevels rTcztjj|j|SrV)rrHTTPConnection_get_content_lengthrOrrrs rSr<z'AbstractHTTPHandler._get_content_lengths3{)== L    "" "rTc`|j}|std|j|j}t|trd}t ||ds|dd|dsf|dsQ||}|$|dt |n|dd|}| r)t|j \}}t|\}} |ds|d||j jD]D\} } | } || s|| | E|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)rrrOrrrrrr<rr rr r)rr) rrrrOr4content_lengthsel_hostrVselsel_pathrirs rS do_request_zAbstractHTTPHandler.do_request_s| ,?++ + < #  + +FH = = =;1 = =KD%??$$D%%d++ =//e<<<rTc  |j}|std||fd|ji|}||jt |j  fd|j Dd d<d D |j r2i}d}| vr |||< |=| |j | | | |j|j |d  n!#t"$r}t|d}~wwxYw|} n#|xYw|jr |jd|_|| _| j| _| S) Nr?rPc$i|] \}}|v || Srr)rCrDrErts rSrGz/AbstractHTTPHandler.do_open..)s3---AG++1+++rTr Connectionc>i|]\}}||Sr)title)rCrirs rSrGz/AbstractHTTPHandler.do_open..6s&FFFs4::<<FFFrTr/rtrA)encode_chunked)rrrPset_debuglevelr5rrupdatertrr set_tunnelrrrrOrr} getresponsersockrrNreasonr4) r http_classr http_conn_argsrr%tunnel_headersproxy_auth_hdrerrrvrts @rSrzAbstractHTTPHandler.do_opens x ,?++ + Jt C CS[ CN C C )***s,------):):)<)<--- . . .!( FFgmmooFFF   CN2N((181H~.N+ LL)>L B B B  $ #..**CL#(G),8K)L)LNNNN $ $ $smm# $ AA  GGIII  6  FLLNNNAF  "" s+/A D98E/9 EEEE//FNr)rrrrr9r<rGrrrTrSr2r2sj&&&&!!!""" $$$L@@@@@rTr2c"eZdZdZejZdS)r*cL|tjj|SrV)rrrr;rr s rS http_openzHTTPHandler.http_open`s||DK6<< 2 2 2 2  L L L,7 rTrKc*eZdZddZdZdZeZeZdS)rNcRddl}||j}||_dSr)http.cookiejar cookiejar CookieJar)rrirs rSrzHTTPCookieProcessor.__init__ws2  0022I"rTc:|j||SrV)riadd_cookie_headerr=s rSrz HTTPCookieProcessor.http_request}s ((111rTc<|j|||SrV)riextract_cookies)rrrs rSr5z!HTTPCookieProcessor.http_responses &&x999rTrV)rrrrrr5rr6rrTrSrrvsL#### !M"NNNrTrceZdZdZdS)r/c4|j}td|z)Nzunknown url type: %s)rr)rr rs rSrzUnknownHandler.unknown_opensx-4555rTN)rrrrrrTrSr/r/s#66666rTr/c i}|D]B}|dd\}}|ddkr|ddkr |dd}|||<C|S)N=r_rrr\)r)lparsedeltrDrEs rSrrsfH Fyya  1 Q43;;1R5C<<!B$Aq MrTc g}d}dx}}|D]P}|r||z }d} |r|dkrd}|dkrd}||z }%|dkr||d}C|dkrd}||z }Q|r||d|DS)NrF\Trrc6g|]}|Sr)r)rCparts rS z#parse_http_list..s ) ) )TDJJLL ) ) )rT)rk)rresryescaper curs rSrrs C DFU   CKDF   d{{ CKD  #:: JJt   D  #::E    4 ) )S ) ) ))rTc$eZdZdZdZdZdZdS)r+c|j}|dddkrL|dddkr>|jr7|jdkr,|j|vrtddS||S)Nr;rfrrQ localhost-file:// scheme is supported only on localhost)rr get_namesropen_local_file)rr rNs rS file_openzFileHandler.file_opensl rr7d??s1Q3x3CHK''8t~~////NOOO0/'',, ,rTNcXtj ttjddtjtjdzt_n4#tj$r"tjdft_YnwxYwtjS)Nrr;)r+namesrrgethostbyname_ex gethostnamegaierror gethostbynamers rSrzFileHandler.get_namess   $ I$)+K88;+F,>,@,@AA!DE%F%F !!? I I I%+%9+%F%F$H !!! I  sAA,,.BBcbddl}ddl}|j}|j}t |} t j|}|j}|j |j d} | |d} |j d| pd|| fz} |rt|\}} |r%| sRt||vr/|r d|z|z} nd|z} t!t#|d| | Sn!#t$$r}t'|d}~wwxYwt'd) NrTusegmtz6Content-type: %s Content-length: %d Last-modified: %s text/plainfile://rbzfile not on local host) email.utils mimetypesrrr5rdstatst_sizeutils formatdatest_mtime guess_typemessage_from_stringr_safe_gethostbynamerrrMr}r)rr emailrrrp localfilestatsrxmodifiedmtypertrorigurlexps rSrzFileHandler.open_local_filessx< **  GI&&E=D{--enT-JJH((2215E/e/K&,h7899G .'-- d K K1$774>>;K;KKK3'$.9GG'(2G!$y$"7"7'JJJ   3--  /000sCD D DD)rrrrrrrrrTrSr+r+sH--- E!!!11111rTr+cX tj|S#tj$rYdSwxYwrV)rrr)rs rSrrs<#D))) ?tts ))ceZdZdZdZdS)r,cddl}ddl}|j}|stdt |\}}||j}nt |}t|\}}|rt|\}}nd}t|}|pd}|pd} tj |}n!#t$r}t|d}~wwxYwt|j\} } | d} t!t#t| } | dd| d} } | r| ds | dd} |||||| |j} | rdpd}| D]D}t)|\}}|d kr|d vr|}E| | |\}}d}||jd}|r|d |zz }||dkr|d |zz }t5j|}t9|||jS#|j$r}t||d}~wwxYw) Nrftp error: no host givenrrQr\r_rDraArrr'rzContent-type: %s zContent-length: %d )ftplibrrrrFTP_PORTrlrrr rrr}rrrrmap connect_ftprPrrupperretrfilerrrrr all_errors)rr rrrrrorr4reattrsdirsrXfwrattrrrsretrlenrtrrs rSftp_openzFTPHandler.ftp_opens x 7566 6%% d <?DDt99D %% d  '--LD&&Ft}}zr2 '--DD   3--   .. ezz#C&&''#2#YRd  Q 8D )!!$dD#+NNBs  rTc||_dSrV)r)rrJs rS setMaxConnszCacheFTPHandler.setMaxConnsAs rTcP|||d||f}||jvr$tj|jz|j|<n?t |||||||j|<tj|jz|j|<||j|S)NrQ)joinrrrrPr check_cache)rrorrrrrPrs rSrzCacheFTPHandler.connect_ftpDsD$7 $*   $ dj 8DL  (vtT)-w88DJsO $ dj 8DL  z#rTctj}|j|krat|jD]:\}}||kr/|j||j|=|j|=;tt|j|_t|j|j krt|jD]"\}}||jkr|j|=|j|=n#tt|j|_dSdSrV) rrrrPrrrminvaluesrnr)rrrDrEs rSrzCacheFTPHandler.check_cacheOs8 IKK <1  T\//1122 ( (1q55JqM''))) 1  Q4 3 3 5 56677  tz??dn , ,T\//1122  1 $$ 1  QE%tDL$7$7$9$9::;;DLLL - ,rTc|jD]}||j|jdSrV)rrrclearrP)rconns rS clear_cachezCacheFTPHandler.clear_cachecs\J%%''  D JJLLLL  rTN) rrrrrrrrrrrTrSr-r-4sn   <<<(rTr-ceZdZdZdS)r.c|j}|dd\}}|dd\}}t|}|drt j|}|dd}|sd}t jd|t|fz}ttj |||S)Nr{r_rz;base64itext/plain;charset=US-ASCIIz$Content-type: %s Content-length: %d ) rrrendswithr decodebytesrrrnrioBytesIO)rr rNrVrO mediatyperts rS data_openzDataHandler.data_openjslyyQ'' **S++ 4 %%   i ( ( '%d++D!#2#I 65I+,T D "-#$$"*T**GS999rTN)rrrrrrTrSr.r.is#:::::rTr.r;nt)r5r4c" t|SrV)r pathnames rSr5r5s Cx   rTc" t|SrV)r rs rSr4r4s BXrTceZdZ dZdezZddZdZdZdZ dZ ddZ dd Z dd Z dd Zd Zdd ZddZdZerdZddZdZdZdZddZdS)r9Nrc ldd|jjiz}tj|td|t }||_|d|_|d|_ d|j fdg|_ g|_ tj|_d|_t"|_dS) NzW%(class)s style of invoking requests is deprecated. Use newer urlopen functions/methodsclassr) stacklevelkey_file cert_filez User-Agent)Acceptz*/*)rrrArBrCr6rxrrrversionr_URLopener__tempfilesrdr|_URLopener__unlink tempcacheftpcache)rrxx509r4s rSrzURLopener.__init__s47>@W6XY c-!<<<< ? llG ,, +..($,79JK  ! rTc.|dSrV)rrs rS__del__zURLopener.__del__s rTc.|dSrV)cleanuprs rSrzURLopener.closes rTc|jr:|jD](} ||#t$rY%wxYw|jdd=|jr|jdSdSrV)rrr}rr)rrXs rSrzURLopener.cleanups   $(  MM$''''D # > # N " " " " " # #s ( 55c< |j|dSrV)rrk)rrs rS addheaderzURLopener.addheaders# 5 t$$$$$rTc0 tt|}t|d}|jr:||jvr1|j|\}}t |d}t |||St |\}}|sd}||jvr6|j|}t |\}} t| \} } | |f}nd}d|z} ||_ | dd} t|| r| dkr/|r| |||S| ||S |t|| |St|| ||S#tt f$rt"$r} t#d | | d} ~ wwxYw) Nz%/:=&?~#+!$,;'@()*[]|rSrrXopen_-rrz socket error)r rr rrMrr rxr rrHropen_unknown_proxy open_unknownrrrr})rrrOrprtrsurltyperNrh proxyhostrrrir4s rSrMzURLopener.opensD7++,,&=>>> > 4g77 $w 7 Hgh%%Bb'733 3!'**  G dl " "L)E!+E!2!2 GY' 22ND(/CCE  ||C%%tT"" 8d.?&?&? 8..ugtDDD(($777 8|*wtT**3///*wtT**35558$     8 8 8.#..C 7 8s/E$ E$$F?FFcJ t|\}}tdd|)N url errorzunknown url typer r})rrrOrrNs rSrzURLopener.open_unknowns)=w'' ck#5t<< 'cT^33>#& &__ d  T TV^^ ))$//wwyy #Jt$4$4Q$788$>>     YYsD ! !% ggiiG *8T** *3  *4:2 6 6  +DJB 7 7 g *4:2 6 6 g))$//2!)!1&!9!9X ''111iD)) !7*>-*0DN3'#w..w'7899D3JxT2227GGBKKE CJJ&DIIe$$$MH!7" 8R6667  HHJJJJBHHJJJJ 199&C, &(( ( s9A B99 CC C J BI1J 1JJ J6c> d}d}t|tr8t|\}}|r!t|\}}t |}|}n|\}}t|\}}t |\} } | }d}| dkrd}nBt| \}} |rt|\}}|r | d|| }t|r|}|stdd|rIt |}tj |  d} nd} |rIt |}tj |  d} nd} ||} i}| rd| z|d<| rd| z|d<|r||d <d |d <|j D] \}}|||< |d |d <| d|||n| d|| | }n'#t jj$rt'dwxYwd|jcxkrdkr"nnt+||jd|z|jS|||j|j|j|j|S)Nrz://z http errorr?r|zBasic %sr/rrrrJr@z Content-TyperrrMz$http protocol error: bad status liner1r2http:)rrr rr r rrr}rrrrrrrRrr BadStatusLinerstatusrr4 http_errorrsrT)rconnection_factoryrNrO user_passwd proxy_passwdrrrealhostrr proxy_authr http_connrtrrrs rS_open_generic_httpzURLopener._open_generic_httpOs?   c3   $'__ND( %$.t$4$4! Tt}}HH ND(!+D!1!1 L$&x00MGTCK}}&((!+D!1!1$A,6x,@,@)KG.5ggxxFH))$#DA7<AAA  "<00L),*=*=*?*?@@GGPPJJJ  !+..K#K$6$6$8$899@@IIDDD&&t,,   E-7*-DG) *  :(2T(9GO $  '&GFO !( !_ $ $MFE#GFOO  &IGN #   fhg > > > >   eXw  ? ? ? C ,,..HH{( C C CABB B C (/ ' ' ' 'C ' ' ' ' 'h gm&o// /??X[(,FF Fs H$H:cP |tjj||SrV)rrrr;rrNrOs rS open_httpzURLopener.open_https" &&t{'A3MMMrTc d|z}t||r6t||}|||||||} n|||||||} | r| S||||||S)Nz http_error_%d)rrr) rrNrserrcodeerrmsgrtrOrirrvs rSr zURLopener.http_errors E ( 4   %T4((F|R&'BBR&'4HH $f}&&sBIIIrTcR |t||||drV)rrrrNrsrrrts rSrzURLopener.http_error_defaults(L  Wfgt<<???%% d%% d   T 2 2vvft}}tzr""2&&#D))  MMM?DDt99D && et}}zz##2#YRd 0Q0QRR .Q.3aD$. t}   + +$-((  88 a(A a(GGIII 9$-''tVT4>> c" $ ) ))$// e::<<6))::: ;;==D M#.77dCCMR((#66q9EG 8/%77"w!||1G;;/88Gb'6C<88 8{{ 9 9 9...//S 8 9sC7K K3K..K3c  t|tstd |dd\}}n#t$rt ddwxYw|sd}|d}|dkr$d ||dvr||dzd}|d|}nd }g}|d tj d tj tjz|d |z|dkr;tj | dd}nt|}|dt!|z|d ||d|}t%j|}t)j|}t-|||S)NzEdata error: proxy support for data protocol currently not implementedrr_z data errorz bad data URLr;rrrrzDate: %sz%a, %d %b %Y %H:%M:%S GMTzContent-type: %srr|zlatin-1zContent-Length: %d )rrrrrDr}rfindrkrstrftimegmtimerrrrr rnrrrrStringIOr) rrNrOrsemirRr4rtfs rS open_datazURLopener.open_data1s#s## dbcc c 899S!,,LT44 8 8 8,77 7 8 10Dzz# 199DK//DFGG}H;DDH :dm,G,0K ,D,DFFF G G G %,--- x  %dkk'&:&:;;BB9MMDD4==D '#d))3444 2 4iinn+C00 K  !Wc***s AArVNNN)rrrrrrrrrrrrMrrrrrr rrErrr!rr,r6rrTrSr9r9sK ;.G!!!!4 # # #%%% "8"8"8"8H==== IIII ====BZFZFZFxNNNNJJJJ === N E E E  N N N N--->>>@898989t'+'+'+'+'+'+rTr9ceZdZ dZdZddZdZddZddZddZ dd Z dd Z dd Z dd Z ddZddZddZddZdZdS)r:cZtj|g|Ri|i|_d|_d|_dS)Nrr;)r9r auth_cachetriesmaxtries)rrrs rSrzFancyURLopener.__init__^s<41$111&111  rTc. t||d|z|S)Nr)rrs rSrz!FancyURLopener.http_error_defaultdsA"gw}g>>>rTNc |xjdz c_ |jrE|j|jkr5t|dr|j}n|j}|||dd|d|_S|||||||}|d|_S#d|_wxYw)Nr_http_error_500r'z)Internal Server Error: Redirect Recursionr)r;r<rr?rredirect_internal) rrNrsrrrtrOrrvs rSr`zFancyURLopener.http_error_302hs3 a  } %t}! > >FG"FOP#R)) ) yy   rTc8 |||||||SrVr`rrNrsrrrtrOs rSrazFancyURLopener.http_error_301s#8""3GVWdKKKrTc8 |||||||SrVrCrDs rSrbzFancyURLopener.http_error_303s#I""3GVWdKKKrTcn ||||||||S||||||SrV)r`rrDs rSrczFancyURLopener.http_error_307D? <&&sB$OO O**3GVWMM MrTcn ||||||||S||||||SrV)rarrDs rSrdzFancyURLopener.http_error_308rGrTFc, d|vrt|||||||d}tjd|} | st||||||| \} } | dkrt|||||||st||||||d|jzdz} |t|| || St|| || |S)Nr![ ]*([^ ]+)[ ]+realm="([^"]*)"rretry_ _basic_authr9rrmatchrrrr rrNrsrrrtrOr-stuffrNrVrris rSrzFancyURLopener.http_error_401sQ = W , ,  ( (sB)0&' C C C*+?GG C  ( (sB)0&' C C C   <<>>W $ $  ( (sB)0&' C C C   ( (sB   $)#m3 <%74%%c511 1%74%%c5$77 7rTc, d|vrt|||||||d}tjd|} | st||||||| \} } | dkrt|||||||st||||||d|jzdz} |t|| || St|| || |S)NrrJr retry_proxy_rLrMrOs rSrzFancyURLopener.http_error_407sQ = w . .  ( (sB)0&' C C C,-?GG C  ( (sB)0&' C C C   <<>>W $ $  ( (sB)0&' C C C   ( (sB    )M9 <%74%%c511 1%74%%c5$77 7rTct|\}}d|z|z}|jd}t|\}} t| \} } | ddz} | | d} || || \} } | s| sdSt | ddt | dd| } d| z| z|jd<|||S|||S)Nhttp://rrgr_rrr{r rxr rget_user_passwdr rMrrNrrOrrrIrhrr proxyselectorrrors rSretry_proxy_http_basic_authz*FancyURLopener.retry_proxy_http_basic_auths#ChT!H, V$'..#-i#8#8 = NN3  ! #abbM ++Iua@@ f,,"'2"6"6"6"6"6"'R"8"8"8"8"8))E (94}D V <99V$$ $99VT** *rTct|\}}d|z|z}|jd}t|\}} t| \} } | ddz} | | d} || || \} } | s| sdSt | ddt | dd| } d| z| z|jd<|||S|||S)Nhttps://rrgr_rrr{rUrWs rSretry_proxy_https_basic_authz+FancyURLopener.retry_proxy_https_basic_auths#Chd"X- W%'..#-i#8#8 = NN3  ! #abbM ++Iua@@ f,,"'2"6"6"6"6"6"'R"8"8"8"8"8))E *Y 6 F W <99V$$ $99VT** *rTcdt|\}}|ddz}||d}||||\}}|s|sdSt|ddt|dd|}d|z|z} ||| S|| |S)Nrgr_rrr{rTr rrVr rM rrNrrOrrrrorrIs rSrz$FancyURLopener.retry_http_basic_auth s#Ch IIcNNQ ABBx++D%;; f,,"4b11111"633333TT;T!H, <99V$$ $99VT** *rTcdt|\}}|ddz}||d}||||\}}|s|sdSt|ddt|dd|}d|z|z} ||| S|| |S)Nrgr_rrr{r[r^r_s rSretry_https_basic_authz%FancyURLopener.retry_https_basic_auth s#Ch IIcNNQ ABBx++D%;; f,,"4b11111"633333TT;d"X- <99V$$ $99VT** *rTrc|dz|z}||jvr|r |j|=n |j|S|||\}}|s|r ||f|j|<||fS)Nrg)rr:prompt_user_passwd)rrrrrrors rSrVzFancyURLopener.get_user_passwd sckDJJLL( $/ ! ! ,OC((s++..tU;; f @6@4.4?3/V|rTc  ddl} td|d|d}|d|d|d|d}||fS#t$rtYdSwxYw)NrzEnter username for z at z: zEnter password for z in r)getpassinputKeyboardInterruptprint)rrrrerors rSrcz!FancyURLopener.prompt_user_passwd) s1 5EEE444HIID___uuuddd&$%%F<      GGG:: s8AAArV)NFrZ)rrrrrr`r@rarbrcrdrrrYr\rrarVrcrrTrSr:r:[sgI ???$!!!8LLLLLLLLNNNNNNNNFJ88882FJ88882++++$++++$ + + + + + + + +         rTr:cH ttjdatS)Nr) _localhostrrrrTrSrr9 s!B)+66 rTc  tv ttjtjdan<#tj$r*ttjddaYnwxYwtS)Nr;r) _thishostrrrrrrrTrSr$r$A s6 Gf5f6H6J6JKKANOOII G G Gf5kBB1EFFIII G s8A6A<;A<c6 t ddl}|jatSr) _ftperrorsrr)rs rSr+r+L s"; & rTcH ttjdatSr) _noheadersrrrrTrS noheadersrqU s!/.r22 rTc@eZdZ d dZdZdZdZdZdZd Z dS) rNTc||_||_||_||_||_||_d|_||_ |dS#| xYwr) rorrrrrPrefcount keepaliveinitr)rrorrrrrPrs rSrzftpwrapper.__init__b si       #  IIKKKKK  JJLLL s AA'cVddl}d|_||_|j|j|j|j|j|j |j d |j }|j |dS)NrrQ)rbusyFTPrPconnectrrrPloginrorrrcwd)rr_targets rSrvzftpwrapper.initr s  ::<< DIt|<<< ty$+...((49%%  WrTcDddl}||dvrd}d}nd|z}d} |j|n>#|j$r1||j|YnwxYwd}|rk|si d|z}|j|\}}nE#|j$r8}t|dddkrtd ||Yd}~nd}~wwxYw|s|jd|r|j } |j |n%#|j$r}td |z|d}~wwxYw |j | n#|j | wxYwd |z}nd }|j|\}}d|_ t|d |j} |xjdz c_|| |fS)Nr)r'rzTYPE Ar_zTYPE zRETR r550r)z ftp error: %rzLIST LISTr)r endtransferrPvoidcmdrrv ntransfercmd error_permrrpwdr|rxrmakefile file_closertr) rrXrrcmdisdirrrrTrftpobjs rSrzftpwrapper.retrfile{ s   :  XsquudNcAE " H  S ! ! ! !  " " " IIKKK H  S ! ! ! ! ! "  G G Gn $ 5 5c : : gg$ G G Gv;;rr?e++"#9#9#9::F,++++ G 7 H  X & & & hllnn&M T****!,MMM&'?@@fLM+HLL%%%%DHLL%%%%n H11#66MD' dmmD114?CC     sSA8B?B "B-- C/7.C**C/+EF E(E##E((FF#c|jsdSd|_ |jdS#t$rYdSwxYwr)rxrPvoidrespr+rs rSrzftpwrapper.endtransfer s]y  F   H       {{    DD s-AAcVd|_|jdkr|dSdS)NFr)rurt real_closers rSrzftpwrapper.close s4 =A   OO       rTc||xjdzc_|jdkr|js|dSdSdS)Nr_r)rrtrurrs rSrzftpwrapper.file_close s\   =A  dn  OO         rTc| |jdS#t$rYdSwxYwrV)rrPrr+rs rSrzftpwrapper.real_close sW   HNN     {{    DD s1AA)NT) rrrrrvrrrrrrrTrSrr_ sE?C  *!*!*!X  rTrc i}tjD]6\}}|}|r|dddkr |||dd<7dtjvr|ddtjD]U\}}|dddkrB|}|r|||dd<7||dddV|S)Ni_proxyREQUEST_METHODr)rdenvironrrr)rxrirs rSgetproxies_environmentr sGz''))'' ezz||  'T"##Y(**!&GD"I  2:%% FD!!!z''))-- e 9 ::<.ip2num s S!!Se__%% u::??\\\)2A2.EaB58r>2eAh!mDuQxOOrTrexclude_simpleT exceptionsrz(\d+(?:\.\d+)*)(/\d+)?r_r;r F) r ipaddressrrrrlrrrNgroupcount) rproxy_settingsrrrrrrhostIPrrJrmasks rS_proxy_bypass_macosx_sysconfr s  88888888%%NHdPPP $ * + 4 F [[**++       ##L"55h H. 6 6 =V/6!''!**%%D771::D|AGGAJJ,,S11A5648}}axx4"999D$DDL11tt2WT5 ! ! 44  5sAAAc ddlm}t|\}}|d}|D]3}|}|dkrd|vrdS$|||rdS4dS)Nrrr.zrTF)rrrr)roverriderrproxy_overriders rS_proxy_bypass_winreg_overriderG s GD!^^C((Nzz|| 9  $tt WT4  44  5rTdarwin)_get_proxy_settings _get_proxiesc>t}t||SrV)rr)rrs rSproxy_bypass_macosx_sysconfrb s,..+D.AAArTc tSrV)rrrTrSgetproxies_macosx_sysconfrf s ~~rTcb t}|rt||St|SrV)rrrrrxs rSrrp s: )**  5+D':: :.t44 4rTc:tp tSrV)rrrrTrSr6r6} s%''F+D+F+FFrTc, i} ddl}n#t$r|cYSwxYw ||jd}||dd}|r t ||dd}d|vrd|vrd|}|dD]J}|dd\}}tj d |s|d vrd |z}n |d krd |z}|||<K| d rPtj dd|d }| dp||d<| dp||d<| n#tttf$rYnwxYw|S)Nr;Software\Microsoft\Windows\CurrentVersion\Internet Settings ProxyEnable ProxyServerrrr.zhttp={0};https={0};ftp={0}r_z (?:[^/:]+)://)rrrPrTsockszsocks://z ^socks://z socks4://rr)winreg ImportErrorOpenKeyHKEY_CURRENT_USER QueryValueExrrrrrNrrCloser}rDr)rxrinternetSettings proxyEnable proxyServerpraddresss rSgetproxies_registryr s   MMMM   NNN " %~~f.FN P P  --.>/<>>>?AK G!&"5"56F7D#F#FFG#IJJ k))c.D.D">"E"Ek"R"RK$**3// 0 0A()Q%Hg8OW==;#'???&/'&9GG%00&07&:G(/GH%%;;w''G f\;@PQQG&-kk&&9&9&DWGFO'.{{7';';'FwGG$  " " $ $ $ $Y/    D   s EE77FFc< tp tSrV)rrrrTrSr6r6 s! &''@+>+@+@@rTcB ddl}n#t$rYdSwxYw ||jd}||dd}t ||dd}n#t $rYdSwxYw|r|sdSt||S)NrFrr ProxyOverride)rrrrrrr}r)rrrr proxyOverrides rSproxy_bypass_registryr s  MMMM   55  %~~f.FN P P  --.>/<>>>?AK 3 34D5D!F!FFG!IJJMM   55  - 5,T=AAAs A A:: BBcb t}|rt||St|SrV)rrrrs rSrr s: )**  /+D':: :(.. .rTr7rV)~rrrr http.clientrrrd posixpathrrrXrrrgrarA urllib.errorrrr urllib.parserrrr r r r r rrrrrrrrrrurllib.responserrrFrEr__all__ version_inforrLrr1r2rjr7r8rASCIIrrrrr3rr0rrrqr r!r"r#r$r%r&urandomrr'r(r)r2r*rrrKrkrr/rrr+rr,r-r.r*ri nturl2pathr5r4rr9r:rjrrlr$rnr+rprqrrrrrplatform_scproxyrrrrrr6rrrrTrSrs Cf   CBBBBBBBBB"""""""""""""""""""""""""""""""""""""""" 54444444JJJIIIII    $(!,, F$BM+45$M+M+M+M+M+^====~   rz(BH--  k"k"k"k"k"k"k"k"ZI+I+I+I+I+I+I+I+^"""H88888888&########";;;;;k;;;n2n2n2n2n2+n2n2n2b,,,B)>)>)>)>)>;)>)>)>V=*=*=*=*=*=*=*=*@GGGGGoGGG33333#B333>k#k#k#k#k#k#k#k#^3[     4k    z OOOOOOOOdK)B$     [*C   sssss+sssl33333%333 74;)**# 8 8 8 8 8* 8 8 8 NN>"""#####+###$66666[666 )*)*)*V1111111111+111111f 7,7,7,7,7,7,7,7,r33333j333j:::::+:::B 7d??555555555!!!  z+z+z+z+z+z+z+z+z XXXXXYXXXz     aaaaaaaaH>    J<<<@0<8::::::::BBB 5 5 5GGGGGW__///bAAABBB( / / / / /(J+LLLs=BB B