<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]                 @   sH  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 Z d  d l	 m
 Z
 d d d d d d d	 d
 d d d d d d d d d d g Z d Z d Z d Z d Z d Z d Z e   j e j j  d d   e j j j   D Z d Z d Z d Z e j d   j Z e j d!  j Z e j d"  Z  d# d$ d% h Z! d& d' d(  Z" Gd) d*   d* e j# j$  Z% e% d+ d,  Z& Gd- d   d e j'  Z( Gd. d   d  Z) y d  d l* Z* Wn e+ k
 rYn$ XGd/ d0   d0 e)  Z, e j- d0  Gd1 d   d e.  Z/ Gd2 d   d e/  Z0 Gd3 d   d e/  Z1 Gd4 d   d e/  Z2 Gd5 d   d e/  Z3 Gd6 d	   d	 e/  Z4 Gd7 d
   d
 e/  Z5 Gd8 d   d e/  Z6 Gd9 d   d e6  Z7 Gd: d   d e6  Z8 Gd; d   d e6  Z9 Gd< d   d e/  Z: Gd= d   d e/  Z; Gd> d   d e< e:  Z= e/ Z> d S)?    N)urlsplitHTTPResponseHTTPConnectionHTTPExceptionNotConnectedUnknownProtocolUnknownTransferEncodingUnimplementedFileModeIncompleteRead
InvalidURLImproperConnectionStateCannotSendRequestCannotSendHeaderResponseNotReadyBadStatusLineLineTooLongRemoteDisconnectederror	responsesP   i  ZUNKNOWNZIdlezRequest-startedzRequest-sentc             C   s   i  |  ] } | j  |  q S )phrase).0vr   r   +/opt/alt/python35/lib64/python3.5/client.py
<dictcomp>k   s   	 r   i   i   d   s   [^:\s][^:\r\n]*s   \n(?![ \t])|\r(?![ \t\n])z[ - ]ZPATCHZPOSTPUTdatac             C   s   y |  j  d  SWno t k
 r } zO t | j | j | j | j d | j   |  | j | j  | f  d   WYd  d  } ~ Xn Xd  S)Nzlatin-1z`%s (%.20r) is not valid Latin-1. Use %s.encode('utf-8') if you want to send it encoded in UTF-8.)encodeUnicodeEncodeErrorencodingobjectstartendtitle)r   nameerrr   r   r   _encode   s    r(   c               @   s   e  Z d  Z d d   Z d S)HTTPMessagec             C   s   | j    d } t |  } g  } d } xh |  j   D]Z } | d  |  j    | k r` d } n | d  d  j   s| d } | r5 | j |  q5 W| S)N:r      )lowerlenkeysisspaceappend)selfr&   nZlstZhitliner   r   r   getallmatchingheaders   s    
	z!HTTPMessage.getallmatchingheadersN)__name__
__module____qualname__r4   r   r   r   r   r)      s   r)   c             C   s   g  } xq |  j  t d  } t |  t k r: t d   | j |  t |  t k ri t d t   | d	 k r	 Pq	 Wd j |  j d  } t	 j
 j d |  j |  S)
Nr+   zheader linezgot more than %d headers   
   
    z
iso-8859-1_class)r8   r9   r:   )readline_MAXLINEr-   r   r0   _MAXHEADERSr   joindecodeemailparserZParserZparsestr)fpr;   headersr3   Zhstringr   r   r   parse_headers   s    
rE   c                   s  e  Z d  Z d d d d d  Z d d   Z d d   Z d	 d
   Z d d   Z   f d d   Z   f d d   Z	 d d   Z
 d d   Z d d d  Z d d   Z d d   Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d@ d( d)  Z dA d* d+  Z dB   f d, d-  Z d. d/   Z d0 d1   Z d2 d3   Z d d4 d5  Z d6 d7   Z d8 d9   Z d: d;   Z d< d=   Z d> d?   Z    S)Cr   r   Nc             C   sw   | j  d  |  _ | |  _ | |  _ d  |  _ |  _ t |  _ t |  _ t |  _	 t |  _
 t |  _ t |  _ t |  _ d  S)Nrb)makefilerC   
debuglevel_methodrD   msg_UNKNOWNversionstatusreasonchunked
chunk_leftlength
will_close)r1   sockrH   methodurlr   r   r   __init__   s    								zHTTPResponse.__init__c             C   si  t  |  j j t d  d  } t |  t k r= t d   |  j d k r_ t d t |   | sq t	 d   y | j
 d  d  \ } } } WnO t k
 r y" | j
 d  d  \ } } d } Wn t k
 r d } Yn XYn X| j d	  s|  j   t |   y4 t |  } | d
 k  s.| d k r:t |   Wn t k
 r[t |   Yn X| | | f S)Nr+   z
iso-8859-1zstatus liner   zreply:z-Remote end closed connection without response    zHTTP/r   i  )strrC   r<   r=   r-   r   rH   printreprr   split
ValueError
startswith_close_connr   int)r1   r3   rL   rM   rN   r   r   r   _read_status  s2    

zHTTPResponse._read_statusc             C   s  |  j  d  k	 r d  Sx |  j   \ } } } | t k r8 Pxg |  j j t d  } t |  t k ro t d   | j   } | s P|  j	 d k r; t
 d |  q; Wq W| |  _ |  _ | j   |  _ | d k r d |  _ n' | j d  r d	 |  _ n t |   t |  j  |  _  |  _ |  j	 d k rSx$ |  j  D] } t
 d | d
 d q6W|  j  j d  } | r| j   d k rd |  _ d  |  _ n	 d |  _ |  j   |  _ d  |  _ |  j  j d  } |  j  j d  } | r3|  j r3y t |  |  _ Wn t k
 rd  |  _ Yq<X|  j d k  r<d  |  _ n	 d  |  _ | t k s| t k sd | k okd k  n s|  j d k rd |  _ |  j r|  j r|  j d  k rd |  _ d  S)Nr+   zheader liner   zheader:HTTP/1.0HTTP/0.9
   zHTTP/1.   r$    ztransfer-encodingrO   TFzcontent-lengthr      HEAD)rb   rc   )rD   ra   ZCONTINUErC   r<   r=   r-   r   striprH   rZ   coderM   rN   rL   r^   r   rE   rJ   getr,   rO   rP   _check_closerR   rQ   r`   r]   Z
NO_CONTENTZNOT_MODIFIEDrI   )r1   rL   rM   rN   skiphdrZtr_encrQ   r   r   r   begin,  sf    					

zHTTPResponse.beginc             C   s   |  j  j d  } |  j d k rS |  j  j d  } | rO d | j   k rO d Sd S|  j  j d  ri d S| r d | j   k r d S|  j  j d  } | r d | j   k r d Sd S)N
connectionre   closeTFz
keep-alivezproxy-connection)rD   rk   rL   r,   )r1   connZpconnr   r   r   rl   |  s    zHTTPResponse._check_closec             C   s    |  j  } d  |  _  | j   d  S)N)rC   rq   )r1   rC   r   r   r   r_     s    		zHTTPResponse._close_connc          
      s,   z t    j   Wd  |  j r' |  j   Xd  S)N)superrq   rC   r_   )r1   )	__class__r   r   rq     s    	zHTTPResponse.closec                s'   t    j   |  j r# |  j j   d  S)N)rs   flushrC   )r1   )rt   r   r   ru     s    	zHTTPResponse.flushc             C   s   d S)NTr   )r1   r   r   r   readable  s    zHTTPResponse.readablec             C   s   |  j  d  k S)N)rC   )r1   r   r   r   isclosed  s    zHTTPResponse.isclosedc             C   s   |  j  d  k r d S|  j d k r0 |  j   d S| d  k	 rq t |  } |  j |  } t |  d  |  j   S|  j r |  j   S|  j	 d  k r |  j  j
   } nA y |  j |  j	  } Wn t k
 r |  j     Yn Xd |  _	 |  j   | Sd  S)Nr:   rh   r   )rC   rI   r_   	bytearrayreadinto
memoryviewtobytesrO   _readall_chunkedrQ   read
_safe_readr
   )r1   amtbr2   sr   r   r   r}     s*    
	

	
zHTTPResponse.readc             C   s   |  j  d  k r d S|  j d k r0 |  j   d S|  j rF |  j |  S|  j d  k	 r t |  |  j k r t |  d |  j  } |  j  j |  } | r | r |  j   n1 |  j d  k	 r |  j | 8_ |  j s |  j   | S)Nr   rh   )	rC   rI   r_   rO   _readinto_chunkedrQ   r-   rz   ry   )r1   r   r2   r   r   r   ry     s$    
		
zHTTPResponse.readintoc             C   s   |  j  j t d  } t |  t k r4 t d   | j d  } | d k r_ | d  |  } y t | d  SWn t k
 r |  j     Yn Xd  S)Nr+   z
chunk size   ;r      )	rC   r<   r=   r-   r   findr`   r]   r_   )r1   r3   ir   r   r   _read_next_chunk_size  s    
z"HTTPResponse._read_next_chunk_sizec             C   sS   xL |  j  j t d  } t |  t k r7 t d   | s> P| d k r Pq Wd  S)Nr+   ztrailer line   
   
r:   )r   r   r:   )rC   r<   r=   r-   r   )r1   r3   r   r   r   _read_and_discard_trailer  s    z&HTTPResponse._read_and_discard_trailerc             C   s   |  j  } | s | d  k	 r( |  j d  y |  j   } Wn t k
 rX t d   Yn X| d k r |  j   |  j   d  } | |  _  | S)NrW   r:   r   )rP   r~   r   r]   r
   r   r_   )r1   rP   r   r   r   _get_chunk_left  s    	

	zHTTPResponse._get_chunk_leftc             C   s   g  } yP x< |  j    } | d  k r% P| j |  j |   d |  _ q Wd j |  SWn' t k
 r t d j |    Yn Xd  S)Nr   r:   )r   r0   r~   rP   r?   r
   )r1   valuerP   r   r   r   r|   3  s    zHTTPResponse._readall_chunkedc             C   s   d } t  |  } y x |  j   } | d  k r4 | St |  | k rj |  j |  } | | |  _ | | S| d  |  } |  j |  } | | d   } | | 7} d |  _ q WWn. t k
 r t t | d |     Yn Xd  S)Nr   )rz   r   r-   _safe_readintorP   r
   bytes)r1   r   total_bytesmvbrP   r2   temp_mvbr   r   r   r   A  s$    
zHTTPResponse._readinto_chunkedc             C   s|   g  } xf | d k rn |  j  j t | t   } | sN t d j |  |   | j |  | t |  8} q	 Wd j |  S)Nr   r:   )rC   r}   min	MAXAMOUNTr
   r?   r0   r-   )r1   r   r   chunkr   r   r   r~   Y  s    zHTTPResponse._safe_readc             C   s   d } t  |  } x | t |  k  r t t |  k  r^ | d t  } |  j j |  } n |  j j |  } | s t t | d |   t |    | | d   } | | 7} q W| S)Nr   )rz   r-   r   rC   ry   r
   r   )r1   r   r   r   r   r2   r   r   r   r   p  s    %zHTTPResponse._safe_readintor+   c             C   s   |  j  d  k s |  j d k r" d S|  j r8 |  j |  S|  j d  k	 rk | d k  sb | |  j k rk |  j } y |  j  j |  } Wn3 t k
 r | d k r   |  j  j d  } Yn X| r | r |  j   n$ |  j d  k	 r |  j t |  8_ | S)Nrh   r:   r   r   i   i @  )	rC   rI   rO   _read1_chunkedrQ   read1r]   r_   r-   )r1   r2   resultr   r   r   r     s"    	*	zHTTPResponse.read1c             C   sH   |  j  d  k s |  j d k r" d S|  j r8 |  j |  S|  j  j |  S)Nrh   r:   )rC   rI   rO   _peek_chunkedpeek)r1   r2   r   r   r   r     s
    	zHTTPResponse.peekc                s   |  j  d  k s |  j d k r" d S|  j r; t   j |  S|  j d  k	 rn | d k  se | |  j k rn |  j } |  j  j |  } | r | r |  j   n$ |  j d  k	 r |  j t |  8_ | S)Nrh   r:   r   )rC   rI   rO   rs   r<   rQ   r_   r-   )r1   limitr   )rt   r   r   r<     s    	*	zHTTPResponse.readlinec             C   s   |  j    } | d  k s$ | d k r( d Sd | k o? | k n sJ | } |  j j |  } |  j t |  8_ | s t d   | S)Nr   r:   )r   rC   r   rP   r-   r
   )r1   r2   rP   r}   r   r   r   r     s    zHTTPResponse._read1_chunkedc             C   sS   y |  j    } Wn t k
 r( d SYn X| d  k r9 d S|  j j |  d  |  S)Nr:   )r   r
   rC   r   )r1   r2   rP   r   r   r   r     s    	zHTTPResponse._peek_chunkedc             C   s   |  j  j   S)N)rC   fileno)r1   r   r   r   r     s    zHTTPResponse.filenoc             C   sd   |  j  d  k r t    |  j  j |  p- | } t | t  sO t | d  rS | Sd j |  Sd  S)N__iter__z, )rD   r   Zget_all
isinstancerY   hasattrr?   )r1   r&   defaultrD   r   r   r   	getheader  s    	zHTTPResponse.getheaderc             C   s+   |  j  d  k r t    t |  j  j    S)N)rD   r   listitems)r1   r   r   r   
getheaders  s    	zHTTPResponse.getheadersc             C   s   |  S)Nr   )r1   r   r   r   r     s    zHTTPResponse.__iter__c             C   s   |  j  S)N)rD   )r1   r   r   r   info  s    zHTTPResponse.infoc             C   s   |  j  S)N)rU   )r1   r   r   r   geturl  s    zHTTPResponse.geturlc             C   s   |  j  S)N)rM   )r1   r   r   r   getcode  s    zHTTPResponse.getcoder   r   )!r5   r6   r7   rV   ra   ro   rl   r_   rq   ru   rv   rw   r}   ry   r   r   r   r|   r   r~   r   r   r   r<   r   r   r   r   r   r   r   r   r   r   r   )rt   r   r      s<   	!P
 		c               @   s<  e  Z d  Z d Z d Z e Z e Z d Z	 d Z
 d e j d d d  Z d d d d	  Z d
 d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d d  Z d d d d  Z d d   Z d d    Z d! d"   Z d d# d$  Z d i  d% d&  Z d' d(   Z d) d*   Z d+ d,   Z d S)-r   re   zHTTP/1.1r+   r   Nc             C   s   | |  _  | |  _ d  |  _ g  |  _ d  |  _ t |  _ d  |  _ d  |  _ d  |  _	 i  |  _
 |  j | |  \ |  _ |  _ t j |  _ d  S)N)timeoutsource_addressrS   _buffer_HTTPConnection__response_CS_IDLE_HTTPConnection__staterI   _tunnel_host_tunnel_port_tunnel_headers_get_hostporthostportsocketcreate_connection_create_connection)r1   r   r   r   r   r   r   r   rV     s    										zHTTPConnection.__init__c             C   sV   |  j  r t d   |  j | |  \ |  _ |  _ | rE | |  _ n |  j j   d  S)Nz.Can't set up tunnel for established connection)rS   RuntimeErrorr   r   r   r   clear)r1   r   r   rD   r   r   r   
set_tunnel
  s    	zHTTPConnection.set_tunnelc             C   s	  | d  k r | j  d  } | j  d  } | | k r y t | | d d    } WnV t k
 r | | d d   d k r |  j } n t d | | d d     Yn X| d  |  } n	 |  j } | r | d d k r | d d k r | d d	  } | | f S)
Nr*   ]r+   rX   znonnumeric port: '%s'r   [r   r   )rfindr`   r]   default_portr   )r1   r   r   r   jr   r   r   r   "  s    #	&zHTTPConnection._get_hostportc             C   s   | |  _  d  S)N)rH   )r1   levelr   r   r   set_debuglevel6  s    zHTTPConnection.set_debuglevelc             C   sh  d |  j  |  j f } | j d  } |  j |  xI |  j j   D]8 \ } } d | | f } | j d  } |  j |  qB W|  j d  |  j |  j d |  j } | j	   \ } }	 }
 |	 t
 j j k r |  j   t d |	 |
 j   f   xn | j j t d  } t |  t k r*t d	   | s1P| d k r>P|  j d k r t d | j    q Wd  S)NzCONNECT %s:%d HTTP/1.0
asciiz%s: %s
zlatin-1   
rT   zTunnel connection failed: %d %sr+   zheader line   
r:   r   zheader:)r   r   r:   )r   r   r   sendr   r   response_classrS   rI   ra   http
HTTPStatusZOKrq   OSErrorri   rC   r<   r=   r-   r   rH   rZ   r@   )r1   Zconnect_strZconnect_bytesheaderr   Z
header_strZheader_bytesresponserL   rj   messager3   r   r   r   _tunnel9  s2    	
	zHTTPConnection._tunnelc             C   s]   |  j  |  j |  j f |  j |  j  |  _ |  j j t j t j	 d  |  j
 rY |  j   d  S)Nr+   )r   r   r   r   r   rS   
setsockoptr   IPPROTO_TCPTCP_NODELAYr   r   )r1   r   r   r   connectX  s
    $	zHTTPConnection.connectc             C   sY   t  |  _ z& |  j } | r. d  |  _ | j   Wd  |  j } | rT d  |  _ | j   Xd  S)N)r   r   rS   rq   r   )r1   rS   r   r   r   r   rq   a  s    					zHTTPConnection.closec             C   s  |  j  d  k r. |  j r% |  j   n	 t    |  j d k rP t d t |   d } t | d  r|  j d k r~ t d  d } y | j } Wn t	 k
 r Yn, Xd | k r d } |  j d k r t d	  x? | j
 |  } | s P| r | j d
  } |  j  j |  q Wd  Sy |  j  j |  Wn^ t k
 rt | t j  rqx7 | D] } |  j  j |  qTWn t d t |    Yn Xd  S)Nr   zsend:i    r}   zsendIng a read()ableFr   Tzencoding file using iso-8859-1z
iso-8859-1z9data should be a bytes-like object or an iterable, got %r)rS   	auto_openr   r   rH   rZ   r[   r   modeAttributeErrorr}   r   sendall	TypeErrorr   collectionsIterabletype)r1   r   	blocksizer   r   Z	datablockdr   r   r   r   o  sF    		

zHTTPConnection.sendc             C   s   |  j  j |  d  S)N)r   r0   )r1   r   r   r   r   _output  s    zHTTPConnection._outputc             C   s\   |  j  j d  d j |  j   } |  j  d  d   =|  j |  | d  k	 rX |  j |  d  S)Nr:   s   
)r:   r:   )r   extendr?   r   )r1   message_bodyrJ   r   r   r   _send_output  s    zHTTPConnection._send_outputFc             C   s   |  j  r! |  j  j   r! d  |  _  |  j t k r< t |  _ n t |  j   | |  _ | p] d } |  j |  d | | |  j f } |  j	 |  j
 |   |  j d k r| sd } | j d  r t |  \ } } } } } | r.y | j d  } Wn! t k
 r| j d  } Yn X|  j d |  n |  j rL|  j }	 |  j }
 n |  j }	 |  j }
 y |	 j d  } Wn! t k
 r|	 j d  } Yn X|	 j d	  d
 k rd | d } |
 |  j k r|  j d |  n) | j d  } |  j d d | |
 f  | s|  j d d  n  d  S)N/z%s %s %sre   rX   r   r   ZidnaZHostr*   r      [   ]z%s:%szAccept-Encodingidentity)r   rw   r   r   _CS_REQ_STARTEDr   rI   _validate_path_http_vsn_strr   _encode_request	_http_vsnr^   r   r   r    	putheaderr   r   r   r   r   r   r@   )r1   rT   rU   	skip_hostskip_accept_encodingrequestZnetlocnilZ
netloc_encr   r   Zhost_encr   r   r   
putrequest  sN    						
zHTTPConnection.putrequestc             C   s   | j  d  S)Nr   )r   )r1   r   r   r   r   r   1  s    zHTTPConnection._encode_requestc             C   sC   t  j |  } | r? d j d | j   t    } t |   d  S)NzJURL can't contain control characters. {url!r} (found at least {matched!r})Zmatched)!_contains_disallowed_url_pchar_researchformatgrouplocalsr   )r1   rU   matchrJ   r   r   r   r   5  s
    	zHTTPConnection._validate_pathc             G   s   |  j  t k r t    t | d  r6 | j d  } t |  sU t d | f   t |  } x t |  D] \ } } t | d  r | j d  | | <n( t	 | t
  r t |  j d  | | <t | |  rn t d | | f   qn Wd j |  } | d | } |  j |  d  S)Nr   r   zInvalid header name %rzlatin-1zInvalid header value %rs   
	s   : )r   r   r   r   r   _is_legal_header_namer]   r   	enumerater   r`   rY   _is_illegal_header_valuer?   r   )r1   r   valuesr   Z	one_valuer   r   r   r   r   @  s"    	zHTTPConnection.putheaderc             C   s5   |  j  t k r t |  _  n	 t    |  j |  d  S)N)r   r   _CS_REQ_SENTr   r   )r1   r   r   r   r   
endheaders\  s    		zHTTPConnection.endheadersc             C   s   |  j  | | | |  d  S)N)_send_request)r1   rT   rU   bodyrD   r   r   r   r   k  s    zHTTPConnection.requestc             C   s   d  } | j    t k } | d  k r3 | r3 d } n | d  k	 r y t t |   } Wnh t k
 r y" t t j | j    j  } Wn1 t	 t
 f k
 r |  j d k r t d  Yn XYn X| d  k	 r |  j d |  d  S)N0r   zCannot stat!!zContent-Length)upper_METHODS_EXPECTING_BODYrY   r-   r   osfstatr   st_sizer   r   rH   rZ   r   )r1   r   rT   ZthelenZmethod_expects_bodyr   r   r   _set_content_lengtho  s    	" z"HTTPConnection._set_content_lengthc       	      C   s   t  j d d   | D  } i  } d | k r8 d | d <d | k rN d | d <|  j | | |  d | k r} |  j | |  x* | j   D] \ } } |  j | |  q Wt | t  r t | d	  } |  j	 |  d  S)
Nc             S   s   g  |  ] } | j     q Sr   )r,   )r   kr   r   r   
<listcomp>  s   	 z0HTTPConnection._send_request.<locals>.<listcomp>r   r+   r   zaccept-encodingr   zcontent-lengthr   )
dictfromkeysr   r  r   r   r   rY   r(   r   )	r1   rT   rU   r   rD   Zheader_namesZskipsrn   r   r   r   r   r     s    

zHTTPConnection._send_requestc             C   s  |  j  r! |  j  j   r! d  |  _  |  j t k s9 |  j  rH t |  j   |  j d k r{ |  j |  j |  j d |  j } n |  j |  j d |  j } y` y | j	   Wn t
 k
 r |  j     Yn Xt |  _ | j r |  j   n	 | |  _  | SWn | j     Yn Xd  S)Nr   rT   )r   rw   r   r   r   rH   r   rS   rI   ro   ConnectionErrorrq   r   rR   )r1   r   r   r   r   getresponse  s,    	
			
zHTTPConnection.getresponse) r5   r6   r7   r   r   r   r   	HTTP_PORTr   r   rH   r   _GLOBAL_DEFAULT_TIMEOUTrV   r   r   r   r   r   rq   r   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r   r     s6   		0|c                   sX   e  Z d  Z e Z d d d e j d d d d d   f d d Z   f d d   Z   S)HTTPSConnectionNcontextcheck_hostnamec      
         s   t  t |   j | | | |  | |  _ | |  _ | d  k rI t j   } | j t j k }	 | d  k rp | j	 } | r |	 r t
 d   | s | r | j | |  | |  _ | |  _ d  S)NzMcheck_hostname needs a SSL context with either CERT_OPTIONAL or CERT_REQUIRED)rs   r  rV   key_file	cert_filesslZ_create_default_https_contextZverify_modeZ	CERT_NONEr  r]   Zload_cert_chain_context_check_hostname)
r1   r   r   r  r  r   r   r  r  Zwill_verify)rt   r   r   rV     s    				zHTTPSConnection.__init__c                s   t    j   |  j r" |  j } n	 |  j } |  j j |  j d | |  _ |  j j r |  j r y t	 j
 |  j j   |  Wn5 t k
 r |  j j t j  |  j j     Yn Xd  S)Nserver_hostname)rs   r   r   r   r  Zwrap_socketrS   r  r  r  Zmatch_hostnameZgetpeercert	Exceptionshutdownr   	SHUT_RDWRrq   )r1   r  )rt   r   r   r     s    		zHTTPSConnection.connect)	r5   r6   r7   
HTTPS_PORTr   r   r
  rV   r   r   r   )rt   r   r    s   	r  c               @   s   e  Z d  Z d S)r   N)r5   r6   r7   r   r   r   r   r     s   c               @   s   e  Z d  Z d S)r   N)r5   r6   r7   r   r   r   r   r     s   c               @   s   e  Z d  Z d S)r   N)r5   r6   r7   r   r   r   r   r     s   c               @   s   e  Z d  Z d d   Z d S)r   c             C   s   | f |  _  | |  _ d  S)N)argsrL   )r1   rL   r   r   r   rV     s    zUnknownProtocol.__init__N)r5   r6   r7   rV   r   r   r   r   r     s   c               @   s   e  Z d  Z d S)r   N)r5   r6   r7   r   r   r   r   r   "  s   c               @   s   e  Z d  Z d S)r	   N)r5   r6   r7   r   r   r   r   r	   %  s   c               @   s7   e  Z d  Z d d d  Z d d   Z d d   Z d S)r
   Nc             C   s"   | f |  _  | |  _ | |  _ d  S)N)r  partialexpected)r1   r  r  r   r   r   rV   )  s    	zIncompleteRead.__init__c             C   sE   |  j  d  k	 r d |  j  } n d } d |  j j t |  j  | f S)Nz, %i more expectedrX   z%s(%i bytes read%s))r  rt   r5   r-   r  )r1   er   r   r   __repr__-  s
    zIncompleteRead.__repr__c             C   s
   t  |   S)N)r[   )r1   r   r   r   __str__4  s    zIncompleteRead.__str__)r5   r6   r7   rV   r  r  r   r   r   r   r
   (  s   c               @   s   e  Z d  Z d S)r   N)r5   r6   r7   r   r   r   r   r   7  s   c               @   s   e  Z d  Z d S)r   N)r5   r6   r7   r   r   r   r   r   :  s   c               @   s   e  Z d  Z d S)r   N)r5   r6   r7   r   r   r   r   r   =  s   c               @   s   e  Z d  Z d S)r   N)r5   r6   r7   r   r   r   r   r   @  s   c               @   s   e  Z d  Z d d   Z d S)r   c             C   s+   | s t  |  } | f |  _ | |  _ d  S)N)r[   r  r3   )r1   r3   r   r   r   rV   D  s    zBadStatusLine.__init__N)r5   r6   r7   rV   r   r   r   r   r   C  s   c               @   s   e  Z d  Z d d   Z d S)r   c             C   s   t  j |  d t | f  d  S)Nz&got more than %d bytes when reading %s)r   rV   r=   )r1   Z	line_typer   r   r   rV   K  s    zLineTooLong.__init__N)r5   r6   r7   rV   r   r   r   r   r   J  s   c               @   s   e  Z d  Z d d   Z d S)r   c             O   s'   t  j |  d  t j |  | |  d  S)NrX   )r   rV   ConnectionResetError)r1   poskwr   r   r   rV   P  s    zRemoteDisconnected.__init__N)r5   r6   r7   rV   r   r   r   r   r   O  s   )?Zemail.parserrA   Zemail.messager   ior   rer   r   Zurllib.parser   __all__r	  r  rK   r   r   r   globalsupdater   __members__r   r   r   r=   r>   compile	fullmatchr   r   r   r   r   r(   r   ZMessager)   rE   BufferedIOBaser   r   r  ImportErrorr  r0   r  r   r   r   r   r   r	   r
   r   r   r   r   r   r   r  r   r   r   r   r   r   <module>G   sv   				   0