<!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>
B
    YI~dÉ ã               @   s\  d dl Z e jdk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 G dd„ deƒZG dd„ deƒZG dd	„ d	eƒZer²d dlZd dlZd dlZG d
d„ dƒZnDd dlZd dlZd dlZd dlZeeddƒZeedƒrðejZnejZddddddddddddd	dgZer¬d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ e 0dddddd d!d"dd#d$d%d&d'd(d)d*d+d,g¡ G d-d.„ d.e1ƒZ2erÀdZ3d/d0„ Z4ng Z3d1d0„ Z4d2Z5d3Z6d4Z7d5d6„ Z8d7d8„ Z9dd9œd:d„Z:d;d„ Z;dd9œd<d„Z<G d=d„ de=ƒZ>dd>dd>d?œd@d„Z?dAdB„ Z@dCd„ ZAdDd„ ZBG dEd„ de=ƒZCdS )Fé    NÚwin32)Ú	monotonicc               @   s   e Zd ZdS )ÚSubprocessErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú//opt/alt/python37/lib64/python3.7/subprocess.pyr   9   s    r   c               @   s8   e Zd Zd	dd„Zdd„ Zedd„ ƒZejdd„ ƒZdS )
ÚCalledProcessErrorNc             C   s   || _ || _|| _|| _d S )N)Ú
returncodeÚcmdÚoutputÚstderr)Úselfr   r   r   r   r   r   r	   Ú__init__C   s    zCalledProcessError.__init__c             C   sb   | j rN| j dk rNyd| jt | j  ¡f S  tk
rJ   d| j| j  f S X nd| j| j f S d S )Nr   zCommand '%s' died with %r.z)Command '%s' died with unknown signal %d.z.Command '%s' returned non-zero exit status %d.)r   r   ÚsignalZSignalsÚ
ValueError)r   r   r   r	   Ú__str__I   s    zCalledProcessError.__str__c             C   s   | j S )N)r   )r   r   r   r	   ÚstdoutU   s    zCalledProcessError.stdoutc             C   s
   || _ d S )N)r   )r   Úvaluer   r   r	   r   Z   s    )NN)r   r   r   r   r   Úpropertyr   Úsetterr   r   r   r	   r
   <   s   
r
   c               @   s8   e Zd Zd	dd„Zdd„ Zedd„ ƒZejdd„ ƒZdS )
ÚTimeoutExpiredNc             C   s   || _ || _|| _|| _d S )N)r   Útimeoutr   r   )r   r   r   r   r   r   r   r	   r   h   s    zTimeoutExpired.__init__c             C   s   d| j | jf S )Nz'Command '%s' timed out after %s seconds)r   r   )r   r   r   r	   r   n   s    zTimeoutExpired.__str__c             C   s   | j S )N)r   )r   r   r   r	   r   r   s    zTimeoutExpired.stdoutc             C   s
   || _ d S )N)r   )r   r   r   r   r	   r   v   s    )NN)r   r   r   r   r   r   r   r   r   r   r   r	   r   a   s   
r   c               @   s,   e Zd Zdddddddœdd„Zdd„ ZdS )ÚSTARTUPINFOr   N)ÚdwFlagsÚ	hStdInputÚ
hStdOutputÚ	hStdErrorÚwShowWindowÚlpAttributeListc            C   s0   || _ || _|| _|| _|| _|p(dg i| _d S )NÚhandle_list)r   r   r   r   r   r    )r   r   r   r   r   r   r    r   r   r	   r   ‚   s    zSTARTUPINFO.__init__c             C   s@   | j  ¡ }d|kr"t|d ƒ|d< t| j| j| j| j| j|dS )Nr!   )r   r   r   r   r   r    )	r    ÚcopyÚlistr   r   r   r   r   r   )r   Z	attr_listr   r   r	   Ú_copy‹   s    
zSTARTUPINFO._copy)r   r   r   r   r$   r   r   r   r	   r      s   r   ZPIPE_BUFi   ÚPollSelectorÚPopenÚPIPEÚSTDOUTÚcallÚ
check_callÚgetstatusoutputÚ	getoutputÚcheck_outputÚrunÚDEVNULLÚCompletedProcess)ÚCREATE_NEW_CONSOLEÚCREATE_NEW_PROCESS_GROUPÚSTD_INPUT_HANDLEÚSTD_OUTPUT_HANDLEÚSTD_ERROR_HANDLEÚSW_HIDEÚSTARTF_USESTDHANDLESÚSTARTF_USESHOWWINDOWÚABOVE_NORMAL_PRIORITY_CLASSÚBELOW_NORMAL_PRIORITY_CLASSÚHIGH_PRIORITY_CLASSÚIDLE_PRIORITY_CLASSÚNORMAL_PRIORITY_CLASSÚREALTIME_PRIORITY_CLASSÚCREATE_NO_WINDOWÚDETACHED_PROCESSÚCREATE_DEFAULT_ERROR_MODEÚCREATE_BREAKAWAY_FROM_JOBr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   c               @   s6   e Zd ZdZejfdd„Zdd„ Zdd„ ZeZ	eZ
dS )	ÚHandleFc             C   s   | j sd| _ || ƒ d S )NT)Úclosed)r   ÚCloseHandler   r   r	   ÚCloseÊ   s    zHandle.Closec             C   s    | j sd| _ t| ƒS tdƒ‚d S )NTzalready closed)rD   Úintr   )r   r   r   r	   ÚDetachÏ   s    zHandle.Detachc             C   s   d| j jt| ƒf S )Nz%s(%d))Ú	__class__r   rG   )r   r   r   r	   Ú__repr__Õ   s    zHandle.__repr__N)r   r   r   rD   Ú_winapirE   rF   rH   rJ   Ú__del__r   r   r   r   r	   rC   Ç   s   rC   c               C   s   d S )Nr   r   r   r   r	   Ú_cleanupç   s    rM   c           	   C   s`   t d krd S xNt d d … D ]>} | jtjd}|d k	ryt  | ¡ W q tk
rV   Y qX qW d S )N)Ú
_deadstate)Ú_activeÚ_internal_pollÚsysÚmaxsizeÚremover   )ÚinstZresr   r   r	   rM   ð   s    éÿÿÿÿéþÿÿÿéýÿÿÿc              C   s*   g } t jj}|dkr&|  dd|  ¡ | S )Nr   ú-ÚO)rQ   ÚflagsÚoptimizeÚappend)Úargsr   r   r   r	   Ú"_optim_args_from_interpreter_flags  s
    r^   c              C   sb  dddddddœ} t ƒ }x:|  ¡ D ].\}}ttj|ƒ}|dkr"| d	||  ¡ q"W tjjrh| d
¡ n$tjjrz| d¡ tjjrŒ| d¡ tj	d d … }tjj
}ttdi ƒ}d|k}|dkrÊ| d¡ n|rØ| d¡ |ræ| d¡ x|D ]}| d| ¡ qìW |r| d¡ xJdD ]B}||kr|| }	|	dkr>|}
nd||	f }
| d|
f¡ qW |S )NÚdÚBÚSÚvÚbÚq)ÚdebugÚdont_write_bytecodeÚno_siteÚverboseÚbytes_warningÚquietr   rX   z-Iz-Ez-sÚ	_xoptionsÚdevé   zerror::BytesWarningzdefault::BytesWarningÚdefaultz-W)z-Xrl   )ZfaulthandlerÚtracemallocZ
importtimeZshowalloccountZshowrefcountÚutf8Tz%s=%sz-X)r^   ÚitemsÚgetattrrQ   rZ   r\   ÚisolatedÚignore_environmentÚno_user_siteÚwarnoptionsri   rS   Úextend)Zflag_opt_mapr]   ÚflagÚoptrb   Zwarnoptsri   ZxoptionsÚdev_moder   Úargr   r   r	   Ú_args_from_interpreter_flags  sN    








r|   )r   c          	   O   s>   t ||Ž*}y|j| dS    | ¡  ‚ Y nX W d Q R X d S )N)r   )r&   ÚwaitÚkill)r   Ú	popenargsÚkwargsÚpr   r   r	   r)   K  s    c              O   s6   t | |Ž}|r2| d¡}|d kr(| d }t||ƒ‚dS )Nr]   r   )r)   Úgetr
   )r   r€   Úretcoder   r   r   r	   r*   \  s    



c             O   sT   d|krt dƒ‚d|kr<|d d kr<| dd¡r4dnd|d< t|t| dd	œ|—ŽjS )
Nr   z3stdout argument not allowed, it will be overridden.ÚinputÚuniversal_newlinesFÚ ó    T)r   r   Úcheck)r   r‚   r.   r'   r   )r   r   r€   r   r   r	   r-   o  s    #c               @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	r0   Nc             C   s   || _ || _|| _|| _d S )N)r]   r   r   r   )r   r]   r   r   r   r   r   r	   r   ©  s    zCompletedProcess.__init__c             C   sh   d  | j¡d  | j¡g}| jd k	r4| d  | j¡¡ | jd k	rP| d  | j¡¡ d  t| ƒjd |¡¡S )Nz	args={!r}zreturncode={!r}zstdout={!r}zstderr={!r}z{}({})z, )	Úformatr]   r   r   r\   r   Útyper   Újoin)r   r]   r   r   r	   rJ   ¯  s    


zCompletedProcess.__repr__c             C   s    | j rt| j | j| j| jƒ‚d S )N)r   r
   r]   r   r   )r   r   r   r	   Úcheck_returncode¸  s    z!CompletedProcess.check_returncode)NN)r   r   r   r   rJ   rŒ   r   r   r   r	   r0   ž  s   
	F)r„   Úcapture_outputr   rˆ   c             O   s   | d k	r&|  d¡d k	rtdƒ‚t|d< |r^|  d¡d k	sF|  d¡d k	rNtdƒ‚t|d< t|d< t||Ž¢}y|j| |d\}}W n^ tk
rÊ }	 z,| ¡  tr°| ¡ \|	_|	_	n| 
¡  ‚ W d d }	~	X Y n   | ¡  ‚ Y nX | ¡ }
|r|
rt|
|j||d‚W d Q R X t|j|
||ƒS )NÚstdinz/stdin and input arguments may not both be used.r   r   z@stdout and stderr arguments may not be used with capture_output.)r   )r   r   )r‚   r   r'   r&   Úcommunicater   r~   Ú
_mswindowsr   r   r}   Úpollr
   r]   r0   )r„   r   r   rˆ   r   r€   Zprocessr   r   Úexcrƒ   r   r   r	   r.   ¿  s4    c             C   sè   g }d}xÔ| D ]Ì}g }|r$|  d¡ d|kp8d|kp8| }|rH|  d¡ xj|D ]b}|dkrf|  |¡ qN|dkr”|  dt|ƒ d ¡ g }|  d¡ qN|r¦| |¡ g }|  |¡ qNW |rÂ| |¡ |r| |¡ |  d¡ qW d |¡S )	NFú ú	ú"ú\é   z\"r†   )r\   Úlenrw   r‹   )ÚseqÚresultZ	needquoter{   Zbs_bufÚcr   r   r	   Úlist2cmdline  s4    






rœ   c          
   C   sl   yt | ddtd}d}W n. tk
rF } z|j}|j}W d d }~X Y nX |dd … dkrd|d d… }||fS )NT)ÚshellÚtextr   r   rU   Ú
)r-   r(   r
   r   r   )r   ÚdataZexitcodeZexr   r   r	   r+   M  s    c             C   s   t | ƒd S )Nrm   )r+   )r   r   r   r	   r,   l  s    
c               @   s”  e Zd ZdZdFddddœdd	„Zed
d„ ƒZejdd„ ƒZdd„ Zdd„ Z	dd„ Z
ejejfdd„Zdd„ Zdd„ ZdGdd„Zdd„ Zdd„ ZdHdd „ZdId!d"„Zerd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zdejejejfd+d,„Z d-d.„ Z!d/d0„ Z"d1d2„ Z#d3d4„ Z$d5d6„ Z%e%Z&n‚d7d$„ Zd8d*„ Ze'j(e'j)e'j*e'j+e'j,e'j-fd9d:„Z.de'j/e'j0e1j2fd;d,„Z d<d=„ Z3d>d.„ Z!d?d2„ Z#d@dA„ Z4dBd4„ Z$dCd6„ Z%dDdE„ Z&dS )Jr&   FrU   NTr   r   )ÚencodingÚerrorsrž   c            C   sZ  t ƒ  t ¡ | _d | _d| _|d kr(d}t|tƒs:tdƒ‚t	rP|d k	rˆt
dƒ‚n8|rh|sht dt¡ d}|d k	rxt
dƒ‚|dkrˆt
d	ƒ‚|| _d | _d | _d | _d | _d | _|| _|| _|d k	rà|d k	ràt|ƒt|ƒkràtd
ƒ‚|  |||¡\}}}}}}t	rN|dkrt | ¡ d¡}|dkr4t | ¡ d¡}|dkrNt | ¡ d¡}|pb|pb|pb|| _d| _d| _yÜ|dkr²t  |d|¡| _| jr²tj!| jd|dk||d| _|dkrèt  |d|¡| _| jrètj!| j||d| _|dkrt  |d|¡| _| jrtj!| j||d| _|  "||||||
||||	||||||||¡ W n   xDt#d | j| j| jfƒD ]*}y| $¡  W n t%k
r”   Y nX qnW | jsNg }|t&kr¼| '|¡ |t&krÐ| '|¡ |t&krä| '|¡ t(| dƒrü| '| j)¡ xP|D ]H}y*t	r$t|t*ƒr$| +¡  n
t, $|¡ W n t%k
rF   Y nX qW ‚ Y nX d S )NFrU   zbufsize must be an integerz0preexec_fn is not supported on Windows platformszpass_fds overriding close_fds.Tz2startupinfo is only supported on Windows platformsr   z4creationflags is only supported on Windows platformszlCannot disambiguate when both text and universal_newlines are supplied but different. Pass one or the other.g      Ð?Úwbrm   )Úwrite_throughÚline_bufferingr¡   r¢   Úrb)r¡   r¢   Ú_devnull)-rM   Ú	threadingZLockÚ_waitpid_lockÚ_inputÚ_communication_startedÚ
isinstancerG   Ú	TypeErrorr   r   ÚwarningsÚwarnÚRuntimeWarningr]   rŽ   r   r   Úpidr   r¡   r¢   Úboolr   Ú_get_handlesÚmsvcrtZopen_osfhandlerH   Ú	text_modeÚ_sigint_wait_secsÚ_closed_child_pipe_fdsÚioÚopenÚTextIOWrapperÚ_execute_childÚfilterÚcloseÚOSErrorr'   r\   Úhasattrr§   rC   rF   Úos)r   r]   ÚbufsizeÚ
executablerŽ   r   r   Ú
preexec_fnÚ	close_fdsr   ÚcwdÚenvr…   ÚstartupinfoÚcreationflagsÚrestore_signalsÚstart_new_sessionÚpass_fdsr¡   r¢   rž   Úp2creadÚp2cwriteÚc2preadÚc2pwriteÚerrreadÚerrwriteÚfZto_closeÚfdr   r   r	   r   ©  s°    

















zPopen.__init__c             C   s   | j S )N)rµ   )r   r   r   r	   r…   >  s    zPopen.universal_newlinesc             C   s   t |ƒ| _d S )N)r²   rµ   )r   r…   r   r   r	   r…   D  s    c             C   s    |  ||¡}| dd¡ dd¡S )Nz
rŸ   ú)ÚdecodeÚreplace)r   r    r¡   r¢   r   r   r	   Ú_translate_newlinesH  s    zPopen._translate_newlinesc             C   s   | S )Nr   )r   r   r   r	   Ú	__enter__L  s    zPopen.__enter__c             C   sˆ   | j r| j  ¡  | jr | j ¡  z| jr2| j ¡  W d |tkrz| jdkrpy| j| jd W n tk
rn   Y nX d| _d S |  ¡  X d S )Nr   )r   )	r   r½   r   rŽ   ÚKeyboardInterruptr¶   Ú_waitr   r}   )r   Úexc_typer   Ú	tracebackr   r   r	   Ú__exit__O  s     


zPopen.__exit__c             C   sT   | j s
d S | jd kr(|d| j t| d | j|d | jd krPtd k	rPt | ¡ d S )Nzsubprocess %s is still running)Úsource)rN   )Ú_child_createdr   r±   ÚResourceWarningrP   rO   r\   )r   Z_maxsizeZ_warnr   r   r	   rL   k  s    


zPopen.__del__c             C   s"   t | dƒst tjtj¡| _| jS )Nr§   )r¿   rÀ   r¹   ÚdevnullÚO_RDWRr§   )r   r   r   r	   Ú_get_devnullz  s    
zPopen._get_devnullc          
   C   s²   |rZy| j  |¡ W nD tk
r(   Y n2 tk
rX } z|jtjkrFn‚ W d d }~X Y nX y| j  ¡  W nD tk
r|   Y n2 tk
r¬ } z|jtjkršn‚ W d d }~X Y nX d S )N)rŽ   ÚwriteÚBrokenPipeErrorr¾   ÚerrnoZEINVALr½   )r   r„   r’   r   r   r	   Ú_stdin_write  s"    zPopen._stdin_writec             C   sT  | j r|rtdƒ‚|d kr”| j s”| j| j| jg d ¡dkr”d }d }| jrT|  |¡ n6| jrp| j ¡ }| j ¡  n| jrŠ| j ¡ }| j ¡  |  	¡  n¸|d k	r¨t
ƒ | }nd }z„y|  |||¡\}}W nh tk
r,   |d k	ròt| j|  |¡ƒ}n| j}d| _y| j|d W n tk
r$   Y nX ‚ Y nX W d d| _ X | j	|  |¡d}||fS )Nz.Cannot send input after starting communicationr—   r   )r   T)r«   r   rŽ   r   r   Úcountrç   Úreadr½   r}   Ú_timeÚ_communicaterÙ   Úminr¶   Ú_remaining_timerÚ   r   )r   r„   r   r   r   ÚendtimeÚsigint_timeoutÚstsr   r   r	   r   ˜  sD    




zPopen.communicatec             C   s   |   ¡ S )N)rP   )r   r   r   r	   r‘   Ü  s    z
Popen.pollc             C   s   |d krd S |t ƒ  S d S )N)rê   )r   rî   r   r   r	   rí   â  s    zPopen._remaining_timec             C   sL   |d krd S |st ƒ |krHt| j||r0d |¡nd |r@d |¡nd d‚d S )Nr‡   )r   r   )rê   r   r]   r‹   )r   rî   Úorig_timeoutZ
stdout_seqZ
stderr_seqÚskip_check_and_raiser   r   r	   Ú_check_timeoutê  s    zPopen._check_timeoutc             C   sˆ   |d k	rt ƒ | }y| j|dS  tk
r‚   |d k	rJt| j|  |¡ƒ}n| j}d| _y| j|d W n tk
rz   Y nX ‚ Y nX d S )N)r   r   )rê   rÚ   rÙ   rì   r¶   rí   r   )r   r   rî   rï   r   r   r	   r}   ö  s    
z
Popen.waitc             C   s~  |d kr|d kr|d krdS d\}}d\}}d\}}	|d krtt  t j¡}|d krÜt  d d¡\}}
t|ƒ}t  |
¡ nh|tkr t  d d¡\}}t|ƒt|ƒ }}n<|tkr¸t 	|  
¡ ¡}n$t|tƒrÎt 	|¡}nt 	| ¡ ¡}|  |¡}|d kr*t  t j¡}|d kr˜t  d d¡\}
}t|ƒ}t  |
¡ nn|tkrXt  d d¡\}}t|ƒt|ƒ }}n@|tkrrt 	|  
¡ ¡}n&t|tƒrŠt 	|¡}nt 	| ¡ ¡}|  |¡}|d kræt  t j¡}	|	d krdt  d d¡\}
}	t|	ƒ}	t  |
¡ n~|tkrt  d d¡\}}	t|ƒt|	ƒ }}	nP|tkr$|}	n@|tkr>t 	|  
¡ ¡}	n&t|tƒrVt 	|¡}	nt 	| ¡ ¡}	|  |	¡}	||||||	fS )N)rU   rU   rU   rU   rU   rU   )rU   rU   r   )rK   ZGetStdHandler3   Z
CreatePiperC   rE   r'   r/   r´   Zget_osfhandlerã   r¬   rG   ÚfilenoÚ_make_inheritabler4   r5   r(   )r   rŽ   r   r   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   Ú_r   r   r	   r³     sn    












zPopen._get_handlesc             C   s&   t  t  ¡ |t  ¡ ddt j¡}t|ƒS )Nr   rm   )rK   ZDuplicateHandleZGetCurrentProcessZDUPLICATE_SAME_ACCESSrC   )r   ÚhandleÚhr   r   r	   rõ   Z  s
    
zPopen._make_inheritablec             C   s   t dd„ |D ƒƒS )Nc             S   s,   h | ]$}|d @ d ks$t  |¡t jkr|’qS )é   )rK   ZGetFileTypeZFILE_TYPE_CHAR)Ú.0r÷   r   r   r	   ú	<setcomp>j  s    z,Popen._filter_handle_list.<locals>.<setcomp>)r#   )r   r!   r   r   r	   Ú_filter_handle_listc  s    zPopen._filter_handle_listc             C   sD  t |tƒst|ƒ}|d kr"tƒ }n| ¡ }d|||fk}|r^| jtjO  _||_||_	||_
|j}t|oxd|kox|d ƒ}|sˆ|rú|rú|d krši  }|_t| dg ¡ƒ }|d< |rÐ|t|ƒt|ƒt|ƒg7 }|  |¡|d d …< |rú|söt dt¡ d}|
rˆ| jtjO  _tj|_|sxtj d¡}|sdtj dd¡}tj |dd	¡}tj |¡sdtd
ƒ‚tj |¡r||}n|}d ||¡}z@t ||d d t| ƒ|	||d k	r¶t |¡nd |¡	\}}}}W d |dkrÜ|  ¡  |dkrî|  ¡  |dkr |  ¡  t!| dƒrt "| j#¡ d| _$X d| _%t&|ƒ| _'|| _(t )|¡ d S )NrU   r!   z?startupinfo.lpAttributeList['handle_list'] overriding close_fdsFZComSpecZ
SystemRootr†   ZSystem32zcmd.exez:shell not found: neither %ComSpec% nor %SystemRoot% is setz
{} /c "{}"r§   T)*r¬   Ústrrœ   r   r$   r   rK   r7   r   r   r   r    r²   r#   r‚   rG   rü   r®   r¯   r°   r8   r6   r   rÀ   ÚenvironÚpathr‹   ÚisabsÚFileNotFoundErrorr‰   ZCreateProcessÚfspathrF   r¿   r½   r§   r·   rß   rC   Ú_handler±   rE   )r   r]   rÂ   rÃ   rÄ   rË   rÅ   rÆ   rÇ   rÈ   r   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   Zunused_restore_signalsZunused_start_new_sessionZuse_std_handlesZattribute_listZhave_handle_listr!   ZcomspecZsystem_rootZhpZhtr±   Útidr   r   r	   r»   p  s|    






zPopen._execute_childc             C   s,   | j d kr&|| jdƒ|kr&|| jƒ| _ | j S )Nr   )r   r  )r   rN   Z_WaitForSingleObjectZ_WAIT_OBJECT_0Z_GetExitCodeProcessr   r   r	   rP   á  s    
zPopen._internal_pollc             C   s^   |d krt j}nt|d ƒ}| jd krXt  | j|¡}|t jkrJt| j|ƒ‚t  	| j¡| _| jS )Niè  )
rK   ZINFINITErG   r   ÚWaitForSingleObjectr  ZWAIT_TIMEOUTr   r]   ÚGetExitCodeProcess)r   r   Ztimeout_millisrš   r   r   r	   rÚ   ò  s    

zPopen._waitc             C   s   |  | ¡ ¡ | ¡  d S )N)r\   ré   r½   )r   ZfhÚbufferr   r   r	   Ú_readerthread  s    zPopen._readerthreadc             C   s\  | j rBt| dƒsBg | _tj| j| j | jfd| _d| j_| j ¡  | j	r„t| dƒs„g | _
tj| j| j	| j
fd| _d| j_| j ¡  | jr”|  |¡ | j d k	rÆ| j |  |¡¡ | j ¡ rÆt| j|ƒ‚| j	d k	rø| j |  |¡¡ | j ¡ røt| j|ƒ‚d }d }| j r| j}| j  ¡  | j	r0| j
}| j	 ¡  |d k	rB|d }|d k	rT|d }||fS )NÚ_stdout_buff)Útargetr]   TÚ_stderr_buffr   )r   r¿   r	  r¨   ZThreadr  Zstdout_threadZdaemonÚstartr   r  Zstderr_threadrŽ   rç   r‹   rí   Zis_aliver   r]   r½   )r   r„   rî   rñ   r   r   r   r   r	   rë     sF    










zPopen._communicatec             C   sl   | j d k	rd S |tjkr"|  ¡  nF|tjkr>t | jtj¡ n*|tjkrZt | jtj¡ nt	d 
|¡ƒ‚d S )NzUnsupported signal: {})r   r   ÚSIGTERMÚ	terminateZCTRL_C_EVENTrÀ   r~   r±   ZCTRL_BREAK_EVENTr   r‰   )r   Úsigr   r   r	   Úsend_signal;  s    




zPopen.send_signalc             C   sX   | j d k	rd S yt | jd¡ W n2 tk
rR   t | j¡}|tjkrH‚ || _ Y nX d S )Nrm   )r   rK   ZTerminateProcessr  ÚPermissionErrorr  ZSTILL_ACTIVE)r   Zrcr   r   r	   r  I  s    

zPopen.terminatec       
      C   s,  d\}}d\}}d\}}	|d kr"n@|t kr8t ¡ \}}n*|tkrJ|  ¡ }nt|tƒrZ|}n| ¡ }|d krln@|t kr‚t ¡ \}}n*|tkr”|  ¡ }nt|tƒr¤|}n| ¡ }|d kr¶nf|t krÌt ¡ \}}	nP|tkrî|dkrâ|}	n
t	j
 ¡ }	n.|tkr|  ¡ }	nt|tƒr|}	n| ¡ }	||||||	fS )N)rU   rU   rU   )r'   rÀ   Úpiper/   rã   r¬   rG   rô   r(   rQ   Ú
__stdout__)
r   rŽ   r   r   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   r   r   r	   r³   ^  sJ    





c       *         sÂ  t |ttfƒr|g}nt|ƒ}|
rLttdƒr0dnd}|dg| }ˆ rLˆ |d< ˆ d kr\|d ‰ ˆ }t ¡ \}}g }x |dk r| |¡ t 	|¡}qrW x|D ]}t 
|¡ q˜W zÖzî|d k	rg }xL| ¡ D ]:\}}t |¡}d|krêtdƒ‚| |d t |¡ ¡ qÈW nd }t ˆ ¡‰ tj ˆ ¡r,ˆ f}nt‡ fd	d
„t |¡D ƒƒ}t|ƒ}| |¡ t |||tttt|ƒƒƒ|||||||||||||¡| _d| _W d t 
|¡ X t| dd ƒ}|dkrÞ|dkrÞ||krÞt 
|¡ |dkr|dkr||krt 
|¡ |dkr.|dkr.||kr.t 
|¡ |d k	rBt 
|¡ d| _tƒ }x0t |d¡} || 7 }| rxt|ƒdkrPP qPW W d t 
|¡ X |r¾y6t  | jd¡\}!}"|!| jkrÂ|  !|"¡ ntj"| _#W n t$k
râ   Y nX y| %dd¡\}#}$}%|% &¡ }%W n, tk
r.   d}#d}$d 't|ƒ¡}%Y nX tt(|# &d¡t)ƒ}&t*|&t+ƒr¶|$r¶t|$dƒ}'|%dk}(|(rvd}%|})n|})|'dkrªt ,|'¡}%|'t-j.krª|%dt/|)ƒ 7 }%|&|'|%|)ƒ‚|&|%ƒ‚d S )NZgetandroidapilevelz/system/bin/shz/bin/shz-cr   rù   ó   =z!illegal environment variable namec             3   s"   | ]}t j t  |¡ˆ ¡V  qd S )N)rÀ   rÿ   r‹   Úfsencode)rú   Údir)rÂ   r   r	   ú	<genexpr>Ï  s   z'Popen._execute_child.<locals>.<genexpr>Tr§   rU   iPÃ  ó   :r—   s   SubprocessErroró   0z#Bad exception data from child: {!r}Úasciié   Znoexecr†   z: )0r¬   rý   Úbytesr#   r¿   rQ   rÀ   r  r\   Údupr½   rq   r  r   rÿ   ÚdirnameÚtupleÚget_exec_pathÚsetÚaddÚ_posixsubprocessZ	fork_execÚsortedÚmaprG   r±   rß   rr   r·   Ú	bytearrayré   r˜   ÚwaitpidÚ_handle_exitstatusrR   r   ÚChildProcessErrorÚsplitrÕ   r‰   Úbuiltinsr   Ú
issubclassr¾   Ústrerrorræ   ÚENOENTÚrepr)*r   r]   rÂ   rÃ   rÄ   rË   rÅ   rÆ   rÇ   rÈ   r   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÉ   rÊ   Z
unix_shellZorig_executableZerrpipe_readZerrpipe_writeZlow_fds_to_closeZlow_fdZenv_listÚkrb   Zexecutable_listZfds_to_keepZ
devnull_fdZerrpipe_dataÚpartr±   rð   Zexception_nameZ	hex_errnoZerr_msgZchild_exception_typeZ	errno_numZchild_exec_never_calledZerr_filenamer   )rÂ   r	   r»   ”  s¾    	

















c             C   sL   ||ƒr||ƒ | _ n2||ƒr*||ƒ| _ n||ƒr@||ƒ | _ ntdƒ‚d S )NzUnknown child exit status!)r   r   )r   rð   Z_WIFSIGNALEDZ	_WTERMSIGZ
_WIFEXITEDZ_WEXITSTATUSZ_WIFSTOPPEDZ	_WSTOPSIGr   r   r	   r(  #  s    zPopen._handle_exitstatusc          
   C   s®   | j d kr¨| j d¡sd S z€y8| j d k	r.| j S || j|ƒ\}}|| jkrR|  |¡ W nB tk
r– } z$|d k	rv|| _ n|j|kr†d| _ W d d }~X Y nX W d | j ¡  X | j S )NFr   )r   r©   Úacquirer±   r(  r¾   ræ   Úrelease)r   rN   Z_waitpidZ_WNOHANGZ_ECHILDr±   rð   Úer   r   r	   rP   5  s     	



c             C   s>   yt  | j|¡\}}W n tk
r4   | j}d}Y nX ||fS )Nr   )rÀ   r'  r±   r)  )r   Z
wait_flagsr±   rð   r   r   r	   Ú	_try_waitX  s    
zPopen._try_waitc          	   C   s  | j d k	r| j S |d k	r¶tƒ | }d}xà| j d¡rxz6| j d k	rBP |  tj¡\}}|| jkrh|  |¡ P W d | j 	¡  X |  
|¡}|dkr–t| j|ƒ‚t|d |dƒ}t |¡ q(W nRxP| j d kr| j4 | j d k	rØP |  d¡\}}|| jkrú|  |¡ W d Q R X q¸W | j S )Ngü©ñÒMb@?Fr   r—   gš™™™™™©?)r   rê   r©   r2  r5  rÀ   ÚWNOHANGr±   r(  r3  rí   r   r]   rì   ÚtimeZsleep)r   r   rî   Zdelayr±   rð   Z	remainingr   r   r	   rÚ   e  s8    







c          
   C   s,  | j rX| jsXy| j  ¡  W n tk
r.   Y nX |sXy| j  ¡  W n tk
rV   Y nX d }d }| jsi | _| jr~g | j| j< | jrg | j| j< | jr¢| j| j }| jr´| j| j }|  |¡ | j	rÎt
| j	ƒ}tƒ Æ}| j rò|rò| | j tj¡ | jr| jjs| | jtj¡ | jr6| jjs6| | jtj¡ x^| ¡ r–|  |¡}|d k	r~|dk r~| j||||dd tdƒ‚| |¡}	|  ||||¡ xø|	D ]ð\}
}|
j| j kr<|| j| jt … }y|  jt |
j|¡7  _W n, tk
r   | |
j¡ |
j ¡  Y n*X | jt| j	ƒkrŒ| |
j¡ |
j ¡  nP|
j| j| jfkržt |
jd¡}|sz| |
j¡ |
j ¡  | j|
j  |¡ qžW q:W W d Q R X | j |  |¡d |d k	rÈd !|¡}|d k	rÜd !|¡}| j"r$|d k	r|  #|| jj$| jj%¡}|d k	r$|  #|| jj$| jj%¡}||fS )Nr   T)rò   zN_check_timeout(..., skip_check_and_raise=True) failed to raise TimeoutExpired.i €  )r   r‡   )&rŽ   r«   Úflushrå   r½   Z_fileobj2outputr   r   Ú_save_inputrª   Ú
memoryviewÚ_PopenSelectorÚregisterÚ	selectorsZEVENT_WRITErD   Z
EVENT_READZget_maprí   ró   ÚRuntimeErrorÚselectZfileobjÚ_input_offsetÚ	_PIPE_BUFrÀ   rä   rÓ   Z
unregisterr˜   ré   r\   r}   r‹   rµ   r×   r¡   r¢   )r   r„   rî   rñ   r   r   Z
input_viewZselectorr   ZreadyÚkeyZeventsÚchunkr    r   r   r	   rë   Ž  s–    






(







c             C   sF   | j rB| jd krBd| _|| _|d k	rB| jrB| j | j j| j j¡| _d S )Nr   )rŽ   rª   r@  rµ   Úencoder¡   r¢   )r   r„   r   r   r	   r9  ô  s    zPopen._save_inputc             C   s   | j d krt | j|¡ d S )N)r   rÀ   r~   r±   )r   r  r   r   r	   r     s    
c             C   s   |   tj¡ d S )N)r  r   r  )r   r   r   r	   r    s    c             C   s   |   tj¡ d S )N)r  r   ÚSIGKILL)r   r   r   r	   r~     s    z
Popen.kill)rU   NNNNNTFNNNNr   TFr   )NN)F)N)5r   r   r   rß   r   r   r…   r   r×   rØ   rÝ   rQ   rR   r®   r¯   rL   rã   rç   r   r‘   rí   ró   r}   r   r³   rõ   rü   r»   rK   r  ZWAIT_OBJECT_0r  rP   rÚ   r  rë   r  r  r~   rÀ   ÚWIFSIGNALEDÚWTERMSIGÚ	WIFEXITEDÚWEXITSTATUSÚ
WIFSTOPPEDÚWSTOPSIGr(  r'  r6  ræ   ZECHILDr5  r9  r   r   r   r	   r&   y  sj   .       
D	

H	q46 ")f)DrQ   Úplatformr   r¸   rÀ   r7  r   r+  r®   ræ   r   rê   Ú	Exceptionr   r
   r   r¨   r´   rK   r   r#  r?  r=  rr   rA  r¿   r%   r;  ZSelectSelectorÚ__all__r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rw   rG   rC   rO   rM   r'   r(   r/   r^   r|   r)   r*   r-   Úobjectr0   r.   rœ   r+   r,   r&   r   r   r   r	   Ú<module>,   sx   
%


P

	

;/"DI