???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    ifk                    @   sx  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 ej	dkrTd dl
mZ ndZd dlZd dlmZmZmZmZ d ddhZee dree j ee j d	ZeZeed
pejjZd6ddZdd Zz
ejZW n ek
 r   eZY nX G dd dZ G dd dZ!z
ej"Z"W n( ek
rD   G dd de#e$Z"Y nX G dd dej%dZ&ej&'e& G dd de&Z(ej('e( d dl)m*Z* e('e* G dd de&Z+ej+'e+ G d d! d!e+Z,G d"d# d#e+Z-G d$d% d%e,Z.G d&d' d'e,Z/G d(d) d)e+Z0G d*d+ d+e/e.Z1G d,d- d-e(Z*G d.d/ d/e&Z2ej2'e2 G d0d1 d1ej3Z4G d2d3 d3e2Z5G d4d5 d5e5Z6dS )7    N)allocate_lock>   win32cygwin)setmode)__all__SEEK_SETSEEK_CURSEEK_END      	SEEK_HOLEi    ZgettotalrefcountrTc              	   C   s  t | tst| } t | tttfs0td|  t |tsFtd| t |ts\td| |d k	rzt |tsztd| |d k	rt |tstd| t|}|td st|t|krt	d| d|k}	d|k}
d	|k}d
|k}d|k}d|k}d|k}d|krD|	s"|s"|s"|r*t	ddd l
}|dtd d}
|rX|rXt	d|	|
 | | dkrvt	d|	s|
s|s|st	d|r|d k	rt	d|r|d k	rt	d|r|d k	rt	d|r|dkrdd l
}|dtd t| |	rdpd|
r"dp$d |r2d	p4d |rBd
pDd |rRdpTd ||d}|}z$d}|dks|dk r| rd}d}|dk rt}zt| j}W n ttfk
r   Y nX |dkr|}|dk rt	d |dkr|r|W S t	d!|r t||}n<|	s2|s2|r>t||}n|
rPt||}nt	d"| |}|rl|W S t|||||}|}||_|W S    |   Y nX d S )#Nzinvalid file: %rzinvalid mode: %rzinvalid buffering: %rinvalid encoding: %rinvalid errors: %rzaxrwb+tUxr   wa+tbUz4mode U cannot be combined with 'x', 'w', 'a', or '+'r   z'U' mode is deprecatedr   Tz'can't have text and binary mode at oncer
   z)can't have read/write/append mode at oncez/must have exactly one of read/write/append modez-binary mode doesn't take an encoding argumentz+binary mode doesn't take an errors argumentz+binary mode doesn't take a newline argumentzaline buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used )openerFr   zinvalid buffering sizezcan't have unbuffered text I/Ozunknown mode: %r)
isinstanceintosfspathstrbytes	TypeErrorsetlen
ValueErrorwarningswarnDeprecationWarningRuntimeWarningFileIOisattyDEFAULT_BUFFER_SIZEfstatfileno
st_blksizeOSErrorAttributeErrorBufferedRandomBufferedWriterBufferedReaderTextIOWrappermodeclose)filer4   	bufferingencodingerrorsnewlineclosefdr   ZmodesZcreatingZreadingZwritingZ	appendingZupdatingtextZbinaryr$   rawresultline_bufferingZbsbuffer rA   */opt/alt/python38/lib64/python3.8/_pyio.pyopen)   s    {




   



rC   c                 C   s    dd l }|dtd t| dS )Nr   z(_pyio.open_code() may not be using hooksr   rb)r$   r%   r'   rC   )pathr$   rA   rA   rB   _open_code_with_warning  s     rF   c                   @   s   e Zd ZdddZdS )DocDescriptorNc                 C   s
   dt j S )Nz\open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)

)rC   __doc__)selfobjtyprA   rA   rB   __get__  s    zDocDescriptor.__get__)N)__name__
__module____qualname__rL   rA   rA   rA   rB   rG     s   rG   c                   @   s   e Zd Ze Zdd ZdS )OpenWrapperc                 O   s
   t ||S N)rC   )clsargskwargsrA   rA   rB   __new__,  s    zOpenWrapper.__new__N)rM   rN   rO   rG   rH   rU   rA   rA   rA   rB   rP   "  s   rP   c                   @   s   e Zd ZdS )UnsupportedOperationN)rM   rN   rO   rA   rA   rA   rB   rV   5  s   rV   c                   @   s   e Zd Zdd Zd5ddZdd Zd6d	d
Zdd ZdZdd Z	dd Z
dd Zd7ddZdd Zd8ddZdd Zd9ddZedd Zd:d d!Zd"d# Zd$d% Zd&d' Zd(d) Zd;d+d,Zd-d. Zd/d0 Zd<d1d2Zd3d4 ZdS )=IOBasec                 C   s   t d| jj|f d S )Nz%s.%s() not supported)rV   	__class__rM   )rI   namerA   rA   rB   _unsupported\  s    
zIOBase._unsupportedr   c                 C   s   |  d d S )NseekrZ   rI   poswhencerA   rA   rB   r[   c  s    zIOBase.seekc                 C   s   |  ddS Nr   r
   )r[   rI   rA   rA   rB   tells  s    zIOBase.tellNc                 C   s   |  d d S Ntruncater\   rI   r^   rA   rA   rB   rd   w  s    zIOBase.truncatec                 C   s   |    d S rQ   _checkClosedra   rA   rA   rB   flush  s    zIOBase.flushFc                 C   s    | j sz|   W 5 d| _ X d S )NT)_IOBase__closedrh   ra   rA   rA   rB   r5     s    zIOBase.closec                 C   sV   z
| j }W n tk
r    Y d S X |r*d S tr8|   nz|   W n   Y nX d S rQ   )closedr/   _IOBASE_EMITS_UNRAISABLEr5   )rI   rj   rA   rA   rB   __del__  s    

zIOBase.__del__c                 C   s   dS NFrA   ra   rA   rA   rB   seekable  s    zIOBase.seekablec                 C   s    |   st|d krdn|d S )NzFile or stream is not seekable.)rn   rV   rI   msgrA   rA   rB   _checkSeekable  s    zIOBase._checkSeekablec                 C   s   dS rm   rA   ra   rA   rA   rB   readable  s    zIOBase.readablec                 C   s    |   st|d krdn|d S )NzFile or stream is not readable.)rr   rV   ro   rA   rA   rB   _checkReadable  s    zIOBase._checkReadablec                 C   s   dS rm   rA   ra   rA   rA   rB   writable  s    zIOBase.writablec                 C   s    |   st|d krdn|d S )NzFile or stream is not writable.)rt   rV   ro   rA   rA   rB   _checkWritable  s    zIOBase._checkWritablec                 C   s   | j S rQ   )ri   ra   rA   rA   rB   rj     s    zIOBase.closedc                 C   s   | j rt|d krdn|d S NI/O operation on closed file.rj   r#   ro   rA   rA   rB   rg     s    zIOBase._checkClosedc                 C   s   |    | S rQ   rf   ra   rA   rA   rB   	__enter__  s    zIOBase.__enter__c                 G   s   |    d S rQ   )r5   )rI   rS   rA   rA   rB   __exit__  s    zIOBase.__exit__c                 C   s   |  d d S )Nr,   r\   ra   rA   rA   rB   r,     s    zIOBase.filenoc                 C   s   |    dS rm   rf   ra   rA   rA   rB   r)     s    zIOBase.isattyr   c                    s   t  dr fdd}ndd }d kr0dn4z
j}W n" tk
r\   tdY nX | t }dk s~t|k r | }|sq||7 }|drjqqjt|S )	Npeekc                     s>     d} | sdS | dd p&t| }dkr:t|}|S )Nr
      
r   )r{   findr"   min)Z	readaheadnrI   sizerA   rB   
nreadahead  s    

z#IOBase.readline.<locals>.nreadaheadc                   S   s   dS Nr
   rA   rA   rA   rA   rB   r      s    r    is not an integerr   r|   )	hasattr	__index__r/   r    	bytearrayr"   readendswithr   )rI   r   r   
size_indexresr   rA   r   rB   readline  s&    
	

zIOBase.readlinec                 C   s   |    | S rQ   rf   ra   rA   rA   rB   __iter__5  s    zIOBase.__iter__c                 C   s   |   }|st|S rQ   )r   StopIterationrI   linerA   rA   rB   __next__9  s    zIOBase.__next__c                 C   sP   |d ks|dkrt | S d}g }| D ]&}|| |t|7 }||kr$ qLq$|S Nr   )listappendr"   )rI   Zhintr   linesr   rA   rA   rB   	readlines?  s    
zIOBase.readlinesc                 C   s    |    |D ]}| | qd S rQ   )rg   write)rI   r   r   rA   rA   rB   
writelinesQ  s    zIOBase.writelines)r   )N)N)N)N)N)r   )N)rM   rN   rO   rZ   r[   rb   rd   rh   ri   r5   rl   rn   rq   rr   rs   rt   ru   propertyrj   rg   ry   rz   r,   r)   r   r   r   r   r   rA   rA   rA   rB   rW   9  s4   #







	

*
rW   )	metaclassc                   @   s.   e Zd ZdddZdd Zdd Zdd	 Zd
S )	RawIOBaser   c                 C   sP   |d krd}|dk r|   S t| }| |}|d kr>d S ||d = t|S )Nr   r   )readallr   r   readintor   )rI   r   r   r   rA   rA   rB   r   l  s    

zRawIOBase.readc                 C   s4   t  }| t}|sq ||7 }q|r,t|S |S d S rQ   )r   r   r*   r   )rI   r   datarA   rA   rB   r   }  s    

zRawIOBase.readallc                 C   s   |  d d S )Nr   r\   rI   r   rA   rA   rB   r     s    zRawIOBase.readintoc                 C   s   |  d d S Nr   r\   r   rA   rA   rB   r     s    zRawIOBase.writeN)r   )rM   rN   rO   r   r   r   r   rA   rA   rA   rB   r   ^  s   
r   )r(   c                   @   sH   e Zd ZdddZdddZdd Zdd	 Zd
d Zdd Zdd Z	dS )BufferedIOBaser   c                 C   s   |  d d S Nr   r\   r   rA   rA   rB   r     s    zBufferedIOBase.readc                 C   s   |  d d S )Nread1r\   r   rA   rA   rB   r     s    zBufferedIOBase.read1c                 C   s   | j |ddS )NFr   	_readintor   rA   rA   rB   r     s    zBufferedIOBase.readintoc                 C   s   | j |ddS )NTr   r   r   rA   rA   rB   	readinto1  s    	zBufferedIOBase.readinto1c                 C   sV   t |tst|}|d}|r0| t|}n| t|}t|}||d |< |S NB)r   
memoryviewcastr   r"   r   )rI   r   r   r   r   rA   rA   rB   r     s    

zBufferedIOBase._readintoc                 C   s   |  d d S r   r\   r   rA   rA   rB   r     s    	zBufferedIOBase.writec                 C   s   |  d d S Ndetachr\   ra   rA   rA   rB   r     s    zBufferedIOBase.detachN)r   )r   )
rM   rN   rO   r   r   r   r   r   r   r   rA   rA   rA   rB   r     s   

r   c                   @   s   e Zd Zdd Zd#ddZdd Zd$d	d
Zdd Zdd Zdd Z	dd Z
edd Zedd Zedd Zedd Zdd Zdd Zdd  Zd!d" ZdS )%_BufferedIOMixinc                 C   s
   || _ d S rQ   _rawrI   r=   rA   rA   rB   __init__  s    z_BufferedIOMixin.__init__r   c                 C   s"   | j ||}|dk rtd|S )Nr   z#seek() returned an invalid position)r=   r[   r.   )rI   r^   r_   Znew_positionrA   rA   rB   r[     s    z_BufferedIOMixin.seekc                 C   s   | j  }|dk rtd|S )Nr   z#tell() returned an invalid position)r=   rb   r.   re   rA   rA   rB   rb     s    
z_BufferedIOMixin.tellNc                 C   s$   |    |d kr|  }| j|S rQ   )rh   rb   r=   rd   re   rA   rA   rB   rd   $  s    z_BufferedIOMixin.truncatec                 C   s   | j rtd| j  d S )Nflush on closed file)rj   r#   r=   rh   ra   rA   rA   rB   rh   2  s    z_BufferedIOMixin.flushc                 C   s.   | j d k	r*| js*z|   W 5 | j   X d S rQ   )r=   rj   r5   rh   ra   rA   rA   rB   r5   7  s    z_BufferedIOMixin.closec                 C   s*   | j d krtd|   | j}d | _|S )Nzraw stream already detached)r=   r#   rh   r   r   rA   rA   rB   r   ?  s    
z_BufferedIOMixin.detachc                 C   s
   | j  S rQ   )r=   rn   ra   rA   rA   rB   rn   I  s    z_BufferedIOMixin.seekablec                 C   s   | j S rQ   r   ra   rA   rA   rB   r=   L  s    z_BufferedIOMixin.rawc                 C   s   | j jS rQ   )r=   rj   ra   rA   rA   rB   rj   P  s    z_BufferedIOMixin.closedc                 C   s   | j jS rQ   )r=   rY   ra   rA   rA   rB   rY   T  s    z_BufferedIOMixin.namec                 C   s   | j jS rQ   )r=   r4   ra   rA   rA   rB   r4   X  s    z_BufferedIOMixin.modec                 C   s   t d| jjdd S Nzcannot pickle z objectr    rX   rM   ra   rA   rA   rB   __getstate__\  s    z_BufferedIOMixin.__getstate__c                 C   sN   | j j}| j j}z
| j}W n  tk
r:   d|| Y S X d|||S d S )Nz<{}.{}>z<{}.{} name={!r}>)rX   rN   rO   rY   r/   format)rI   modnameZclsnamerY   rA   rA   rB   __repr___  s    
z_BufferedIOMixin.__repr__c                 C   s
   | j  S rQ   )r=   r,   ra   rA   rA   rB   r,   k  s    z_BufferedIOMixin.filenoc                 C   s
   | j  S rQ   )r=   r)   ra   rA   rA   rB   r)   n  s    z_BufferedIOMixin.isatty)r   )N)rM   rN   rO   r   r[   rb   rd   rh   r5   r   rn   r   r=   rj   rY   r4   r   r   r,   r)   rA   rA   rA   rB   r   
  s(   	






r   c                       s   e Zd ZdZd ddZdd Zdd Zdd	 Z fd
dZd!ddZ	d"ddZ
dd Zd#ddZdd Zd$ddZdd Zdd Zdd Z  ZS )%BytesIONc                 C   s&   t  }|d k	r||7 }|| _d| _d S r   )r   _buffer_pos)rI   Zinitial_bytesbufrA   rA   rB   r   z  s
    zBytesIO.__init__c                 C   s   | j rtd| j S )Nz__getstate__ on closed file)rj   r#   __dict__copyra   rA   rA   rB   r     s    zBytesIO.__getstate__c                 C   s   | j rtdt| jS )Nzgetvalue on closed file)rj   r#   r   r   ra   rA   rA   rB   getvalue  s    zBytesIO.getvaluec                 C   s   | j rtdt| jS )Nzgetbuffer on closed file)rj   r#   r   r   ra   rA   rA   rB   	getbuffer  s    zBytesIO.getbufferc                    s"   | j d k	r| j   t   d S rQ   )r   clearsuperr5   ra   rX   rA   rB   r5     s    

zBytesIO.closer   c                 C   s   | j rtd|d krd}n4z
|j}W n" tk
rH   t|dY nX | }|dk rbt| j}t| j| jkrvdS tt| j| j| }| j| j| }|| _t	|S )Nread from closed filer   r   r       )
rj   r#   r   r/   r    r"   r   r   r~   r   )rI   r   r   Znewposr   rA   rA   rB   r     s"    

zBytesIO.readc                 C   s
   |  |S rQ   )r   r   rA   rA   rB   r     s    zBytesIO.read1c              	   C   s   | j rtdt|tr tdt|}|j}W 5 Q R X |dkrFdS | j}|t| j	krzd|t| j	  }|  j	|7  _	|| j	||| < |  j|7  _|S )Nwrite to closed file can't write str to binary streamr       )
rj   r#   r   r   r    r   nbytesr   r"   r   )rI   r   Zviewr   r^   ZpaddingrA   rA   rB   r     s    

zBytesIO.writer   c                 C   s   | j rtdz
|j}W n" tk
r:   t|dY nX | }|dkrh|dk r`td|f || _nD|dkrtd| j| | _n(|dkrtdt| j| | _ntd| jS )Nzseek on closed filer   r   negative seek position %rr
   r   zunsupported whence value)	rj   r#   r   r/   r    r   maxr"   r   )rI   r^   r_   	pos_indexrA   rA   rB   r[     s"    
zBytesIO.seekc                 C   s   | j rtd| jS )Ntell on closed file)rj   r#   r   ra   rA   rA   rB   rb     s    zBytesIO.tellc                 C   sx   | j rtd|d kr| j}nJz
|j}W n" tk
rJ   t|dY nX | }|dk rhtd|f | j|d = |S )Nztruncate on closed filer   r   znegative truncate position %r)rj   r#   r   r   r/   r    r   )rI   r^   r   rA   rA   rB   rd     s    
zBytesIO.truncatec                 C   s   | j rtddS Nrw   Trx   ra   rA   rA   rB   rr     s    zBytesIO.readablec                 C   s   | j rtddS r   rx   ra   rA   rA   rB   rt     s    zBytesIO.writablec                 C   s   | j rtddS r   rx   ra   rA   rA   rB   rn     s    zBytesIO.seekable)N)r   )r   )r   )N)rM   rN   rO   r   r   r   r   r   r5   r   r   r   r[   rb   rd   rr   rt   rn   __classcell__rA   rA   r   rB   r   r  s   




r   c                   @   st   e Zd ZefddZdd Zdd Zddd	Zdd
dZdddZ	dddZ
dddZdd Zdd ZdddZdS ) r2   c                 C   sF   |  stdt| | |dkr,td|| _|   t | _d S )Nz "raw" argument must be readable.r   invalid buffer size)	rr   r.   r   r   r#   buffer_size_reset_read_bufLock
_read_lockrI   r=   r   rA   rA   rB   r     s    zBufferedReader.__init__c                 C   s
   | j  S rQ   )r=   rr   ra   rA   rA   rB   rr     s    zBufferedReader.readablec                 C   s   d| _ d| _d S )Nr   r   )	_read_buf	_read_posra   rA   rA   rB   r     s    zBufferedReader._reset_read_bufNc              
   C   s@   |d k	r|dk rt d| j | |W  5 Q R  S Q R X d S )Nr   zinvalid number of bytes to read)r#   r   _read_unlockedr   rA   rA   rB   r      s    zBufferedReader.readc                 C   s  d}d}| j }| j}|d ks$|dkr|   t| jdrj| j }|d krZ||d  pXd S ||d  | S ||d  g}d}| j }||kr|}q|t|7 }|| q|d	|p|S t|| }	||	kr|  j|7  _||||  S ||d  g}t
| j|}
|	|k rH| j|
}||kr.|}qH|	t|7 }	|| qt||	}d	|}||d  | _ d| _|r|d | S |S )Nr   )r   Nr   r   r   )r   r   r   r   r=   r   r   r"   r   joinr   r   r~   )rI   r   Z
nodata_valZempty_valuesr   r^   chunkZchunksZcurrent_sizeavailZwantedoutrA   rA   rB   r   -  sL    





zBufferedReader._read_unlockedr   c              
   C   s(   | j  | |W  5 Q R  S Q R X d S rQ   )r   _peek_unlockedr   rA   rA   rB   r{   a  s    zBufferedReader.peekc                 C   sr   t || j}t| j| j }||k s,|dkrb| j| }| j|}|rb| j| jd  | | _d| _| j| jd  S r   )r~   r   r"   r   r   r=   r   )rI   r   ZwantZhaveZto_readZcurrentrA   rA   rB   r   k  s    
zBufferedReader._peek_unlockedr   c              
   C   s^   |dk r| j }|dkrdS | j4 | d | t|t| j| j W  5 Q R  S Q R X d S )Nr   r   r
   )r   r   r   r   r~   r"   r   r   r   rA   rA   rB   r   v  s    
zBufferedReader.read1c              	   C   s
  t |tst|}|jdkr dS |d}d}| j |t|k rtt| j| j t|}|r| j| j| j|  |||| < |  j|7  _||7 }|t|krqt|| | j	kr| j
||d  }|sq||7 }n|r|s| dsq|r6|r6qq6W 5 Q R X |S )Nr   r   r
   )r   r   r   r   r   r"   r~   r   r   r   r=   r   r   )rI   r   r   writtenr   r   rA   rA   rB   r     s6    




zBufferedReader._readintoc                 C   s   t | t| j | j S rQ   )r   rb   r"   r   r   ra   rA   rA   rB   rb     s    zBufferedReader.tellc              
   C   sd   |t krtd| jD |dkr4|t| j| j 8 }t| ||}|   |W  5 Q R  S Q R X d S )Ninvalid whence valuer
   )	valid_seek_flagsr#   r   r"   r   r   r   r[   r   r]   rA   rA   rB   r[     s    zBufferedReader.seek)N)N)r   )r   )r   )r   )rM   rN   rO   r*   r   rr   r   r   r   r{   r   r   r   rb   r[   rA   rA   rA   rB   r2     s   

4



.r2   c                   @   s\   e Zd Ze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dZdd ZdS )r1   c                 C   sF   |  stdt| | |dkr,td|| _t | _t | _	d S )Nz "raw" argument must be writable.r   r   )
rt   r.   r   r   r#   r   r   
_write_bufr   _write_lockr   rA   rA   rB   r     s    zBufferedWriter.__init__c                 C   s
   | j  S rQ   )r=   rt   ra   rA   rA   rB   rt     s    zBufferedWriter.writablec                 C   s  t |trtd| j | jr(tdt| j| jkr@| 	  t| j}| j
| t| j| }t| j| jkrz| 	  W nl tk
r } zNt| j| jkrt| j| j }||8 }| jd | j | _t|j|j|W 5 d }~X Y nX |W  5 Q R  S Q R X d S )Nr   r   )r   r   r    r   rj   r#   r"   r   r   _flush_unlockedextendBlockingIOErrorerrnostrerror)rI   r   Zbeforer   eZoveragerA   rA   rB   r     s(    

"zBufferedWriter.writeNc              
   C   sD   | j 4 |   |d kr"| j }| j|W  5 Q R  S Q R X d S rQ   )r   r   r=   rb   rd   re   rA   rA   rB   rd     s
    
zBufferedWriter.truncatec              	   C   s   | j  |   W 5 Q R X d S rQ   )r   r   ra   rA   rA   rB   rh     s    zBufferedWriter.flushc                 C   s   | j rtd| jrz| j| j}W n tk
rB   tdY nX |d krZttjdd|t	| jksp|dk rxt
d| jd |= qd S )Nr   zHself.raw should implement RawIOBase: it should not raise BlockingIOErrorz)write could not complete without blockingr   z*write() returned incorrect number of bytes)rj   r#   r   r=   r   r   RuntimeErrorr   ZEAGAINr"   r.   rI   r   rA   rA   rB   r     s      zBufferedWriter._flush_unlockedc                 C   s   t | t| j S rQ   )r   rb   r"   r   ra   rA   rA   rB   rb     s    zBufferedWriter.tellr   c              
   C   sD   |t krtd| j$ |   t| ||W  5 Q R  S Q R X d S )Nr   )r   r#   r   r   r   r[   r]   rA   rA   rB   r[     s
    zBufferedWriter.seekc                 C   s`   | j $ | jd ks| jr&W 5 Q R  d S W 5 Q R X z|   W 5 | j  | j  W 5 Q R X X d S rQ   )r   r=   rj   r5   rh   ra   rA   rA   rB   r5     s    zBufferedWriter.close)N)r   )rM   rN   rO   r*   r   rt   r   rd   rh   r   rb   r[   r5   rA   rA   rA   rB   r1     s   	

r1   c                   @   s   e Zd ZefddZdddZdd Zdd	 Zd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edd ZdS )!BufferedRWPairc                 C   s<   |  std| s tdt||| _t||| _d S )Nz#"reader" argument must be readable.z#"writer" argument must be writable.)rr   r.   rt   r2   readerr1   writer)rI   r   r   r   rA   rA   rB   r   <  s    zBufferedRWPair.__init__r   c                 C   s   |d krd}| j |S Nr   )r   r   r   rA   rA   rB   r   J  s    zBufferedRWPair.readc                 C   s   | j |S rQ   )r   r   r   rA   rA   rB   r   O  s    zBufferedRWPair.readintoc                 C   s   | j |S rQ   )r   r   r   rA   rA   rB   r   R  s    zBufferedRWPair.writer   c                 C   s   | j |S rQ   )r   r{   r   rA   rA   rB   r{   U  s    zBufferedRWPair.peekc                 C   s   | j |S rQ   )r   r   r   rA   rA   rB   r   X  s    zBufferedRWPair.read1c                 C   s   | j |S rQ   )r   r   r   rA   rA   rB   r   [  s    zBufferedRWPair.readinto1c                 C   s
   | j  S rQ   )r   rr   ra   rA   rA   rB   rr   ^  s    zBufferedRWPair.readablec                 C   s
   | j  S rQ   )r   rt   ra   rA   rA   rB   rt   a  s    zBufferedRWPair.writablec                 C   s
   | j  S rQ   )r   rh   ra   rA   rA   rB   rh   d  s    zBufferedRWPair.flushc                 C   s    z| j  W 5 | j   X d S rQ   )r   r5   r   ra   rA   rA   rB   r5   g  s    zBufferedRWPair.closec                 C   s   | j  p| j S rQ   )r   r)   r   ra   rA   rA   rB   r)   m  s    zBufferedRWPair.isattyc                 C   s   | j jS rQ   )r   rj   ra   rA   rA   rB   rj   p  s    zBufferedRWPair.closedN)r   )r   )r   )rM   rN   rO   r*   r   r   r   r   r{   r   r   rr   rt   rh   r5   r)   r   rj   rA   rA   rA   rB   r   ,  s   


r   c                   @   sj   e Zd ZefddZdddZdd Zdd	d
ZdddZdd Z	dddZ
dddZdd Zdd ZdS )r0   c                 C   s(   |   t| || t| || d S rQ   )rq   r2   r   r1   r   rA   rA   rB   r   ~  s    zBufferedRandom.__init__r   c              	   C   s   |t krtd|   | jrJ| j  | j| jt| j d W 5 Q R X | j||}| j | 	  W 5 Q R X |dk rt
d|S )Nr   r
   r   z seek() returned invalid position)r   r#   rh   r   r   r=   r[   r   r"   r   r.   r]   rA   rA   rB   r[     s    $zBufferedRandom.seekc                 C   s   | j rt| S t| S d S rQ   )r   r1   rb   r2   ra   rA   rA   rB   rb     s    
zBufferedRandom.tellNc                 C   s   |d kr|   }t| |S rQ   )rb   r1   rd   re   rA   rA   rB   rd     s    zBufferedRandom.truncatec                 C   s    |d krd}|    t| |S r   )rh   r2   r   r   rA   rA   rB   r     s    zBufferedRandom.readc                 C   s   |    t| |S rQ   )rh   r2   r   r   rA   rA   rB   r     s    zBufferedRandom.readintoc                 C   s   |    t| |S rQ   )rh   r2   r{   r   rA   rA   rB   r{     s    zBufferedRandom.peekr   c                 C   s   |    t| |S rQ   )rh   r2   r   r   rA   rA   rB   r     s    zBufferedRandom.read1c                 C   s   |    t| |S rQ   )rh   r2   r   r   rA   rA   rB   r     s    zBufferedRandom.readinto1c              	   C   sF   | j r:| j( | j| jt| j  d |   W 5 Q R X t| |S r   )	r   r   r=   r[   r   r"   r   r1   r   r   rA   rA   rB   r     s
    zBufferedRandom.write)r   )N)N)r   )r   )rM   rN   rO   r*   r   r[   rb   rd   r   r   r{   r   r   r   rA   rA   rA   rB   r0   u  s   	




r0   c                       s   e Zd ZdZdZdZdZdZdZdZ	d0ddZ
dd	 Zd
d Zdd Zdd Zd1ddZd2ddZdd Zdd Zdd ZefddZdd Zd3ddZ fd d!Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zed,d- Zed.d/ Z   Z!S )4r(   r   FNTr   c              
   C   sB  | j dkr*z| jrt| j  W 5 d| _ X t|tr<tdt|tr\|}|dk r`tdnd}t|t	sxtd|f t
|t
dkstd|f tdd |D d	ks|d
d	krtdd|krd| _d| _tjtjB }nTd|krd| _d}n@d|krd| _tjtjB }n"d|kr8d| _d| _tjtjB }d
|krNd| _d| _| jrj| jrj|tjO }n| jr~|tjO }n
|tjO }|ttddO }ttddpttdd}||O }d }zT|dk r:|std|d krt||d}n0|||}t|tstd|dk r$td|}|s:t|d || _t|}	z(t|	jrpt t!j"t#t!j"|W n t$k
r   Y nX t|	dd| _%| j%d	krt&| _%t'rt'|tj( || _)| jrzt*|dt+ W n4 tk
r }
 z|
j!t!j,kr  W 5 d }
~
X Y nX W n"   |d k	r0t|  Y nX || _ d S )Nr   r   z$integer argument expected, got floatznegative file descriptorzinvalid mode: %szxrwab+c                 s   s   | ]}|d kV  qdS )ZrwaxNrA   ).0crA   rA   rB   	<genexpr>  s     z"FileIO.__init__.<locals>.<genexpr>r
   r   zKMust have exactly one of create/read/write/append mode and at most one plusr   Tr   r   r   O_BINARYZO_NOINHERIT	O_CLOEXECz'Cannot use closefd=False with file namei  zexpected integer from openerzNegative file descriptorFr-   )-_fd_closefdr   r5   r   floatr    r   r#   r   r!   sumcount_created	_writableO_EXCLO_CREAT	_readableO_TRUNC
_appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrC   r.   set_inheritabler+   statS_ISDIRst_modeIsADirectoryErrorr   ZEISDIRr   r/   _blksizer*   _setmoder   rY   lseekr	   ZESPIPE)rI   r6   r4   r;   r   fdflagsZnoinherit_flagZowned_fdZfdfstatr   rA   rA   rB   r     s    




$










 

zFileIO.__init__c                 C   sB   | j dkr>| jr>| js>dd l}|jd| f td| d |   d S )Nr   zunclosed file %rr   )
stacklevelsource)r   r   rj   r$   r%   ResourceWarningr5   )rI   r$   rA   rA   rB   rl   A  s     zFileIO.__del__c                 C   s   t d| jjdd S r   r   ra   rA   rA   rB   r   H  s    zFileIO.__getstate__c                 C   sp   d| j j| j jf }| jr"d| S z
| j}W n* tk
rV   d|| j| j| jf  Y S X d||| j| jf S d S )Nz%s.%sz<%s [closed]>z<%s fd=%d mode=%r closefd=%r>z<%s name=%r mode=%r closefd=%r>)	rX   rN   rO   rj   rY   r/   r   r4   r   )rI   
class_namerY   rA   rA   rB   r   K  s    

zFileIO.__repr__c                 C   s   | j stdd S )NzFile not open for reading)r   rV   ra   rA   rA   rB   rs   Y  s    zFileIO._checkReadablec                 C   s   | j stdd S )NzFile not open for writing)r   rV   ro   rA   rA   rB   ru   ]  s    zFileIO._checkWritablec                 C   sT   |    |   |d ks |dk r(|  S zt| j|W S  tk
rN   Y d S X d S r   )rg   rs   r   r   r   r   r   r   rA   rA   rB   r   a  s    zFileIO.readc                 C   s   |    |   t}z6t| jdt}t| jj}||krH|| d }W n t	k
r^   Y nX t
 }t||krt|}|t|t7 }|t| }zt| j|}W n tk
r   |rY qY d S X |sq||7 }qft|S r`   )rg   rs   r*   r   r  r   r   r+   st_sizer.   r   r"   r   r   r   r   )rI   bufsizer^   endr>   r   r   rA   rA   rB   r   q  s2    
zFileIO.readallc                 C   s4   t |d}| t|}t|}||d |< |S r   )r   r   r   r"   )rI   r   mr   r   rA   rA   rB   r     s
    zFileIO.readintoc                 C   s<   |    |   zt| j|W S  tk
r6   Y d S X d S rQ   )rg   ru   r   r   r   r   r   rA   rA   rB   r     s    zFileIO.writec                 C   s*   t |trtd|   t| j||S )Nzan integer is required)r   r   r    rg   r   r  r   r]   rA   rA   rB   r[     s    
zFileIO.seekc                 C   s   |    t| jdtS r   )rg   r   r  r   r   ra   rA   rA   rB   rb     s    zFileIO.tellc                 C   s2   |    |   |d kr |  }t| j| |S rQ   )rg   ru   rb   r   	ftruncater   r   rA   rA   rB   rd     s    zFileIO.truncatec                    s.   | j s*z| jrt| j W 5 t   X d S rQ   )rj   r   r5   r   r   r   ra   r   rA   rB   r5     s
    zFileIO.closec                 C   sF   |    | jd kr@z|   W n tk
r8   d| _Y nX d| _| jS )NFT)rg   	_seekablerb   r.   ra   rA   rA   rB   rn     s    
zFileIO.seekablec                 C   s   |    | jS rQ   )rg   r   ra   rA   rA   rB   rr     s    zFileIO.readablec                 C   s   |    | jS rQ   )rg   r   ra   rA   rA   rB   rt     s    zFileIO.writablec                 C   s   |    | jS rQ   )rg   r   ra   rA   rA   rB   r,     s    zFileIO.filenoc                 C   s   |    t| jS rQ   )rg   r   r)   r   ra   rA   rA   rB   r)     s    zFileIO.isattyc                 C   s   | j S rQ   )r   ra   rA   rA   rB   r;     s    zFileIO.closefdc                 C   sJ   | j r| jrdS dS n0| jr,| jr&dS dS n| jrB| jr<dS dS ndS d S )Nzxb+Zxbzab+Zabzrb+rD   wb)r   r   r   r   ra   rA   rA   rB   r4      s    zFileIO.mode)r   TN)N)N)N)"rM   rN   rO   r   r   r   r   r   r  r   r   rl   r   r   rs   ru   r   r   r   r   r   r[   rb   rd   r5   rn   rr   rt   r,   r)   r   r;   r4   r   rA   rA   r   rB   r(     s<   
y

#

r(   c                   @   s\   e Zd ZdddZdd ZdddZd	d
 Zdd Zedd Z	edd Z
edd ZdS )
TextIOBaser   c                 C   s   |  d d S r   r\   r   rA   rA   rB   r     s    zTextIOBase.readc                 C   s   |  d d S r   r\   )rI   srA   rA   rB   r   (  s    zTextIOBase.writeNc                 C   s   |  d d S rc   r\   re   rA   rA   rB   rd   ,  s    zTextIOBase.truncatec                 C   s   |  d d S )Nr   r\   ra   rA   rA   rB   r   0  s    zTextIOBase.readlinec                 C   s   |  d d S r   r\   ra   rA   rA   rB   r   7  s    zTextIOBase.detachc                 C   s   d S rQ   rA   ra   rA   rA   rB   r8   @  s    zTextIOBase.encodingc                 C   s   d S rQ   rA   ra   rA   rA   rB   newlinesE  s    zTextIOBase.newlinesc                 C   s   d S rQ   rA   ra   rA   rA   rB   r9   O  s    zTextIOBase.errors)r   )N)rM   rN   rO   r   r   rd   r   r   r   r8   r  r9   rA   rA   rA   rB   r    s   


	

	r  c                   @   sP   e Zd ZdddZdddZdd Zd	d
 Zdd ZdZdZ	dZ
edd ZdS )IncrementalNewlineDecoderstrictc                 C   s,   t jj| |d || _|| _d| _d| _d S )N)r9   r   F)codecsIncrementalDecoderr   	translatedecoderseennl	pendingcr)rI   r#  r"  r9   rA   rA   rB   r   `  s
    z"IncrementalNewlineDecoder.__init__Fc                 C   s   | j d kr|}n| j j||d}| jr<|s.|r<d| }d| _|dr\|s\|d d }d| _|d}|d| }|d| }|  j|o| j|o| jB |o| jB O  _| j	r|r|
dd}|r|
dd}|S )NfinalFr   T

)r#  decoder%  r   r   r$  _LF_CR_CRLFr"  replace)rI   inputr'  outputZcrlfZcrZlfrA   rA   rB   r+  g  s*    

z IncrementalNewlineDecoder.decodec                 C   s@   | j d krd}d}n| j  \}}|dK }| jr8|dO }||fS )Nr   r   r
   )r#  getstater%  )rI   r   flagrA   rA   rB   r2    s    
z"IncrementalNewlineDecoder.getstatec                 C   s8   |\}}t |d@ | _| jd k	r4| j||d? f d S r   )boolr%  r#  setstate)rI   stater   r3  rA   rA   rB   r5    s    
z"IncrementalNewlineDecoder.setstatec                 C   s$   d| _ d| _| jd k	r | j  d S )Nr   F)r$  r%  r#  resetra   rA   rA   rB   r7    s    
zIncrementalNewlineDecoder.resetr
   r      c                 C   s
   d| j  S )N)Nr*  r(  )r(  r*  r)  )r*  r)  )r(  r)  )r(  r*  r)  )r$  ra   rA   rA   rB   r    s    z"IncrementalNewlineDecoder.newlinesN)r  )F)rM   rN   rO   r   r+  r2  r5  r7  r,  r-  r.  r   r  rA   rA   rA   rB   r  Y  s   

r  c                   @   sr  e Zd ZdZdZdNddZdd ZdOdd	Zd
d Ze	dd Z
e	dd Ze	dd Ze	dd Ze	dd ZddedddddZdd Zdd Zdd Zdd  Zd!d" Ze	d#d$ Ze	d%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 ZdPd3d4Zd5d6 Zd7d8 Z dQd:d;Z!d<d= Z"d>d? Z#dRd@dAZ$dBdC Z%dSdDdEZ&dTdFdGZ'dHdI Z(dUdJdKZ)e	dLdM Z*dS )Vr3   i   NFc           	   	   C   s  |  | |d krvzt| }W n ttfk
r<   Y nX |d krvzdd l}W n tk
rj   d}Y nX |d}t	|t
std| t|jsd}t|| |d krd}nt	|t
std| || _d| _d| _d | _| j  | _| _t| jd	| _| ||||| d S )
Nr   asciiFr   zG%r is not a text encoding; use codecs.open() to handle arbitrary codecsr  r   r   r   )_check_newliner   device_encodingr,   r/   rV   localeImportErrorZgetpreferredencodingr   r   r#   r   lookup_is_text_encodingLookupErrorr   _decoded_chars_decoded_chars_used	_snapshotr@   rn   r  _tellingr   
_has_read1
_configure)	rI   r@   r8   r9   r:   r?   write_throughr<  rp   rA   rA   rB   r     s>    





 zTextIOWrapper.__init__c                 C   s>   |d k	r$t |ts$tdt|f |dkr:td|f d S )Nzillegal newline type: %r)Nr   r*  r(  r)  zillegal newline value: %r)r   r   r    typer#   )rI   r:   rA   rA   rB   r:    s    zTextIOWrapper._check_newlinec                 C   s   || _ || _d | _d | _d| _| | _|d k| _|| _|dk| _|pHt	j
| _|| _|| _| jr|  r| j }|dkrz|  d W n tk
r   Y nX d S )N        r   r   )	_encoding_errors_encoder_decoder	_b2cratio_readuniversal_readtranslate_readnl_writetranslater   linesep_writenl_line_buffering_write_throughr  rt   r@   rb   _get_encoderr5  r@  )rI   r8   r9   r:   r?   rG  positionrA   rA   rB   rF    s&    


zTextIOWrapper._configurec                 C   s   d | jj| jj}z
| j}W n tk
r2   Y nX |d |7 }z
| j}W n tk
r`   Y nX |d |7 }|d | j S )Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)r   rX   rN   rO   rY   r/   r4   r8   )rI   r>   rY   r4   rA   rA   rB   r   !  s    


zTextIOWrapper.__repr__c                 C   s   | j S rQ   )rJ  ra   rA   rA   rB   r8   2  s    zTextIOWrapper.encodingc                 C   s   | j S rQ   )rK  ra   rA   rA   rB   r9   6  s    zTextIOWrapper.errorsc                 C   s   | j S rQ   )rU  ra   rA   rA   rB   r?   :  s    zTextIOWrapper.line_bufferingc                 C   s   | j S rQ   )rV  ra   rA   rA   rB   rG  >  s    zTextIOWrapper.write_throughc                 C   s   | j S rQ   )r   ra   rA   rA   rB   r@   B  s    zTextIOWrapper.buffer)r8   r9   r:   r?   rG  c                C   s   | j d k	r*|d k	s"|d k	s"|tk	r*td|d krH|d krB| j}q^d}nt|ts^td| |d krn| j}nt|tstd| |tkr| j}| 	| |d kr| j
}|d kr| j}|   | ||||| d S )NzPIt is not possible to set the encoding or newline of stream after the first readr  r   r   )rM  EllipsisrV   rK  r   r   r    rJ  rQ  r:  r?   rG  rh   rF  )rI   r8   r9   r:   r?   rG  rA   rA   rB   reconfigureF  s@    




 zTextIOWrapper.reconfigurec                 C   s   | j rtd| jS rv   )rj   r#   r  ra   rA   rA   rB   rn   o  s    zTextIOWrapper.seekablec                 C   s
   | j  S rQ   )r@   rr   ra   rA   rA   rB   rr   t  s    zTextIOWrapper.readablec                 C   s
   | j  S rQ   )r@   rt   ra   rA   rA   rB   rt   w  s    zTextIOWrapper.writablec                 C   s   | j   | j| _d S rQ   )r@   rh   r  rD  ra   rA   rA   rB   rh   z  s    
zTextIOWrapper.flushc                 C   s.   | j d k	r*| js*z|   W 5 | j   X d S rQ   )r@   rj   r5   rh   ra   rA   rA   rB   r5   ~  s    zTextIOWrapper.closec                 C   s   | j jS rQ   )r@   rj   ra   rA   rA   rB   rj     s    zTextIOWrapper.closedc                 C   s   | j jS rQ   )r@   rY   ra   rA   rA   rB   rY     s    zTextIOWrapper.namec                 C   s
   | j  S rQ   )r@   r,   ra   rA   rA   rB   r,     s    zTextIOWrapper.filenoc                 C   s
   | j  S rQ   )r@   r)   ra   rA   rA   rB   r)     s    zTextIOWrapper.isattyc                 C   s   | j rtdt|ts(td|jj t|}| js<| j	oBd|k}|rf| jrf| j
dkrf|d| j
}| jpr|  }||}| j| | j	r|sd|kr|   | d d | _| jr| j  |S )Nr   zcan't write %s to text streamr*  r(  r   )rj   r#   r   r   r    rX   rM   r"   rR  rU  rT  r/  rL  rW  encoder@   r   rh   _set_decoded_charsrC  rM  r7  )rI   r  ZlengthZhaslfencoderr   rA   rA   rB   r     s(    



zTextIOWrapper.writec                 C   s   t | j}|| j| _| jS rQ   )r   getincrementalencoderrJ  rK  rL  )rI   Zmake_encoderrA   rA   rB   rW    s    zTextIOWrapper._get_encoderc                 C   s2   t | j}|| j}| jr(t|| j}|| _|S rQ   )r   getincrementaldecoderrJ  rK  rO  r  rP  rM  )rI   Zmake_decoderr#  rA   rA   rB   _get_decoder  s    
zTextIOWrapper._get_decoderc                 C   s   || _ d| _d S r   )rA  rB  )rI   charsrA   rA   rB   r\    s    z TextIOWrapper._set_decoded_charsc                 C   sF   | j }|d kr| j|d  }n| j|||  }|  j t|7  _ |S rQ   )rB  rA  r"   )rI   r   offsetra  rA   rA   rB   _get_decoded_chars  s    z TextIOWrapper._get_decoded_charsc                 C   s$   | j |k rtd|  j |8  _ d S )Nz"rewind decoded_chars out of bounds)rB  AssertionErrorr   rA   rA   rB   _rewind_decoded_chars  s    
z#TextIOWrapper._rewind_decoded_charsc                 C   s   | j d krtd| jr&| j  \}}| jr<| j| j}n| j| j}| }| j 	||}| 
| |rt|t| j | _nd| _| jr||| f| _| S )Nz
no decoderrI  )rM  r#   rD  r2  rE  r@   r   _CHUNK_SIZEr   r+  r\  r"   rA  rN  rC  )rI   
dec_buffer	dec_flagsinput_chunkeofZdecoded_charsrA   rA   rB   _read_chunk  s     

zTextIOWrapper._read_chunkr   c                 C   s(   ||d> B |d> B |d> B t |d> B S )N@            )r4  )rI   rX  rh  bytes_to_feedneed_eofchars_to_skiprA   rA   rB   _pack_cookie  s
    
zTextIOWrapper._pack_cookiec                 C   sF   t |d\}}t |d\}}t |d\}}t |d\}}|||||fS )Nl            )divmod)rI   ZbigintrestrX  rh  rp  rq  rr  rA   rA   rB   _unpack_cookie	  s
    zTextIOWrapper._unpack_cookiec              	   C   s@  | j std| jstd|   | j }| j}|d ksF| jd krX| j	rTt
d|S | j\}}|t|8 }| j}|dkr| ||S | }zt| j| }d}|dkr"|d|f t||d | }	|	|kr| \}
}|
s|}||	8 }q4|t|
8 }d}q||8 }|d }qd}|d|f || }|}|dkrZ| ||W S d}d}d}t|t|D ]x}|d7 }|t||||d  7 }| \}}|s||kr||7 }||8 }|dd  }}}||krt qqt|t|jddd	7 }d}||k rtd
| |||||W S || X d S )N!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textr   r
   r   r   Tr&  z'can't reconstruct logical file position)r  rV   rD  r.   rh   r@   rb   rM  rC  rA  rd  r"   rB  rs  r2  r5  r   rN  r+  range)rI   rX  r#  rh  Z
next_inputrr  Zsaved_stateZ
skip_bytesZ	skip_backr   r   d	start_posZstart_flagsZ	bytes_fedrq  Zchars_decodedirg  rA   rA   rB   rb   
	  s    








    zTextIOWrapper.tellc                 C   s$   |    |d kr|  }| j|S rQ   )rh   rb   r@   rd   re   rA   rA   rB   rd   m	  s    zTextIOWrapper.truncatec                 C   s*   | j d krtd|   | j}d | _|S )Nzbuffer is already detached)r@   r#   rh   r   )rI   r@   rA   rA   rB   r   s	  s    
zTextIOWrapper.detachc                    s   fdd} j rtd js(td|tkrN|dkr@tdd}  }nZ|tkr|dkrftd    j	d|} 
d d  _ jr j  || |S |dkrtd	|f |dk rtd
|f     |\}}}}}	 j	|  
d d  _|dkr* jr* j  n@ js>|s>|	rj jpL   _ jd|f |df _|	r j|}
 
 j|
| ||
f _t j|	k rtd|	 _|| |S )Nc                    sH   z j p  }W n tk
r&   Y nX | dkr<|d n|  d S r   )rL  rW  r@  r5  r7  )rX  r]  ra   rA   rB   _reset_encoder|	  s    z*TextIOWrapper.seek.<locals>._reset_encoderr   rw  r   z#can't do nonzero cur-relative seeksz#can't do nonzero end-relative seeksr   zunsupported whence (%r)r   r   z#can't restore logical file position)rj   r#   r  rV   r   rb   r	   rh   r@   r[   r\  rC  rM  r7  rv  r`  r5  r   r+  r"   rA  r.   rB  )rI   Zcookier_   r|  rX  rz  rh  rp  rq  rr  ri  rA   ra   rB   r[   {	  s`    





zTextIOWrapper.seekc                 C   s   |    |d krd}n4z
|j}W n" tk
rB   t|dY nX | }| jpV|  }|dk r|  |j| j	 dd }| 
d d | _|S d}| |}t||k r|s|   }|| |t| 7 }q|S d S )Nr   r   r   Tr&  r   F)rs   r   r/   r    rM  r`  rc  r+  r@   r   r\  rC  r"   rk  )rI   r   r   r#  r>   rj  rA   rA   rB   r   	  s,    



zTextIOWrapper.readc                 C   s(   d| _ |  }|s$d | _| j| _ t|S rm   )rD  r   rC  r  r   r   rA   rA   rB   r   	  s    zTextIOWrapper.__next__c           	      C   s
  | j rtd|d krd}n4z
|j}W n" tk
rH   t|dY nX | }|  }d}| jsj|   d  }}| jr|	d|}|dkr|d }qnt
|}n| jrF|	d|}|	d|}|dkr|dkrt
|}n|d }qnX|dkr|d }qn@||k r|d }qn(||d kr8|d }qn|d }qn(|	| j}|dkrn|t
| j }q|dkrt
||kr|}q|  r| jrqq| jr||  7 }qr| d	 d | _|S qr|dkr||kr|}| t
||  |d | S )
Nr   r   r   r   r*  r
   r(  r   r   )rj   r#   r   r/   r    rc  rM  r`  rP  r}   r"   rO  rQ  rk  rA  r\  rC  re  )	rI   r   r   r   startr^   endposZnlposZcrposrA   rA   rB   r   	  st    







zTextIOWrapper.readlinec                 C   s   | j r| j jS d S rQ   )rM  r  ra   rA   rA   rB   r  H
  s    zTextIOWrapper.newlines)NNNFF)NNNFF)N)r   r   r   r   )N)r   )N)N)+rM   rN   rO   rf  r   r   r:  rF  r   r   r8   r9   r?   rG  r@   rY  rZ  rn   rr   rt   rh   r5   rj   rY   r,   r)   r   rW  r`  r\  rc  re  rk  rs  rv  rb   rd   r   r[   r   r   r   r  rA   rA   rA   rB   r3     sz       
(    
$




   )



*      

c

K
	
]r3   c                       sN   e Zd Zd fdd	Zdd Zdd Zed	d
 Zedd Zdd Z	  Z
S )StringIOr   r*  c                    sf   t t| jt dd|d |d kr(d| _|d k	rbt|tsNtdt	|j
| | | d d S )Nzutf-8surrogatepass)r8   r9   r:   Fz*initial_value must be str or None, not {0}r   )r   r  r   r   rR  r   r   r    r   rH  rM   r   r[   )rI   Zinitial_valuer:   r   rA   rB   r   T
  s    

zStringIO.__init__c              	   C   sP   |    | jp|  }| }|  z|j| j ddW S || X d S )NTr&  )	rh   rM  r`  r2  r7  r5  r+  r@   r   )rI   r#  Z	old_staterA   rA   rB   r   d
  s    zStringIO.getvaluec                 C   s
   t | S rQ   )objectr   ra   rA   rA   rB   r   n
  s    zStringIO.__repr__c                 C   s   d S rQ   rA   ra   rA   rA   rB   r9   s
  s    zStringIO.errorsc                 C   s   d S rQ   rA   ra   rA   rA   rB   r8   w
  s    zStringIO.encodingc                 C   s   |  d d S r   r\   ra   rA   rA   rB   r   {
  s    zStringIO.detach)r   r*  )rM   rN   rO   r   r   r   r   r9   r8   r   r   rA   rA   r   rB   r  M
  s   


r  )r   r   NNNTN)7r   abcr   r   r  sys_threadr   r   platformZmsvcrtr   r  ior   r   r   r	   r   r   addr   	SEEK_DATAr*   r   r  dev_moderk   rC   rF   	open_coder/   rG   rP   rV   r.   r#   ABCMetarW   registerr   _ior(   r   r   r   r2   r1   r   r0   r  r!  r  r3   r  rA   rA   rA   rB   <module>   s   


      
 [

	
  $=
gh  CiIJ  Y@U     $