<!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>
3
2a                 @   sx  d dl Zd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ yd dlmZ W n  ek
rt   d dlmZ Y nX ddd	d
dddddddddddddddddgZejZejZejZejZejZy
ejZW n e k
r   dZY nX ej!Z![da"da#dd Z$dd Z%eZ&dd ZG dd  d Z'e'Z(G d!d	 d	Z)G d"d dZ*G d#d de*Z+G d$d dZ,G d%d dZ-G d&d de.Z/e j0Z1e1  d?d(d)Z2e a3i Z4i Z5e
 Z6G d*d dZ7G d+d de7Z8G d,d- d-e7Z9G d.d/ d/e7Z:d0d
 Z;e;Z<d1d Z=e=Z>d2d3 Z?d4d Z@d d5lmAZA e9 aBd6d7 ZCd8d9 ZDd:d ZEyd d;lmFZG W n" ek
rj   d d<lHmGZG Y nX d=d> ZIdS )@    N)	monotonic)
format_exc)WeakSet)islicecount)deque	get_identactive_count	Conditioncurrent_thread	enumeratemain_threadTIMEOUT_MAXEventLockRLock	SemaphoreBoundedSemaphoreThreadBarrierBrokenBarrierErrorTimerThreadError
setprofilesettracelocal
stack_sizec             C   s   | a d S )N)_profile_hook)func r   ./opt/alt/python36/lib64/python3.6/threading.pyr   2   s    c             C   s   | a d S )N)_trace_hook)r   r   r   r    r   <   s    c              O   s   t d krt| |S t | |S )N)_CRLock_PyRLock)argskwargsr   r   r    r   J   s    	
c               @   sR   e Zd Zdd Zdd ZdddZeZd	d
 Zdd Zdd Z	dd Z
dd ZdS )_RLockc             C   s   t  | _d | _d| _d S )Nr   )_allocate_lock_block_owner_count)selfr   r   r    __init__a   s    z_RLock.__init__c             C   s^   | j }yt| j}W n tk
r(   Y nX d| jj r:dnd| jj| jj|| j	t
t| f S )Nz)<%s %s.%s object owner=%r count=%d at %s>lockedZunlocked)r)   _activenameKeyErrorr(   r-   	__class__
__module____qualname__r*   hexid)r+   ownerr   r   r    __repr__f   s    z_RLock.__repr__T   c             C   sD   t  }| j|kr"|  jd7  _dS | jj||}|r@|| _d| _|S )Nr8   )r   r)   r*   r(   acquire)r+   blockingtimeoutmercr   r   r    r9   u   s    
z_RLock.acquirec             C   s<   | j t krtd| jd  | _}|s8d | _ | jj  d S )Nzcannot release un-acquired lockr8   )r)   r   RuntimeErrorr*   r(   release)r+   r   r   r   r    r?      s    z_RLock.releasec             C   s   | j   d S )N)r?   )r+   tvtbr   r   r    __exit__   s    z_RLock.__exit__c             C   s   | j j  |\| _| _d S )N)r(   r9   r*   r)   )r+   stater   r   r    _acquire_restore   s    
z_RLock._acquire_restorec             C   s<   | j dkrtd| j }d| _ | j}d | _| jj  ||fS )Nr   zcannot release un-acquired lock)r*   r>   r)   r(   r?   )r+   r   r6   r   r   r    _release_save   s    

z_RLock._release_savec             C   s   | j t kS )N)r)   r   )r+   r   r   r    	_is_owned   s    z_RLock._is_ownedN)TrH   )__name__r2   r3   r,   r7   r9   	__enter__r?   rC   rE   rF   rG   r   r   r   r    r&   W   s   

$
r&   c               @   sp   e Z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dZ
dddZdddZdd ZeZdS )r
   Nc             C   s   |d krt  }|| _|j| _|j| _y|j| _W n tk
rD   Y nX y|j| _W n tk
rf   Y nX y|j| _W n tk
r   Y nX t | _	d S )N)
r   _lockr9   r?   rF   AttributeErrorrE   rG   _deque_waiters)r+   lockr   r   r    r,      s$    zCondition.__init__c             C   s
   | j j S )N)rK   rJ   )r+   r   r   r    rJ      s    zCondition.__enter__c             G   s   | j j| S )N)rK   rC   )r+   r$   r   r   r    rC      s    zCondition.__exit__c             C   s   d| j t| jf S )Nz<Condition(%s, %d)>)rK   lenrN   )r+   r   r   r    r7      s    zCondition.__repr__c             C   s   | j j  d S )N)rK   r?   )r+   r   r   r    rF      s    zCondition._release_savec             C   s   | j j  d S )N)rK   r9   )r+   xr   r   r    rE      s    zCondition._acquire_restorec             C   s"   | j jdr| j j  dS dS d S )Nr   FT)rK   r9   r?   )r+   r   r   r    rG      s    
zCondition._is_ownedc             C   s   | j  stdt }|j  | jj| | j }d}z:|d krN|j  d}n |dkrd|jd|}n
|jd}|S | j| |sy| jj| W n t	k
r   Y nX X d S )Nzcannot wait on un-acquired lockFTr   )
rG   r>   r'   r9   rN   appendrF   rE   remove
ValueError)r+   r;   waiterZsaved_stateZgotitr   r   r    wait  s*    

zCondition.waitc             C   s\   d }|}| }xH|sV|d k	rD|d kr0t  | }n|t   }|dkrDP | j| | }qW |S )Nr   )_timerV   )r+   	predicater;   endtimeZwaittimeresultr   r   r    wait_for7  s    


zCondition.wait_forr8   c             C   sj   | j  std| j}tt||}|s,d S x8|D ]0}|j  y|j| W q2 tk
r`   Y q2X q2W d S )Nz!cannot notify on un-acquired lock)rG   r>   rN   rM   _islicer?   rS   rT   )r+   nZall_waitersZwaiters_to_notifyrU   r   r   r    notifyN  s    

zCondition.notifyc             C   s   | j t| j d S )N)r^   rP   rN   )r+   r   r   r    
notify_alle  s    zCondition.notify_all)N)N)N)r8   )rI   r2   r3   r,   rJ   rC   r7   rF   rE   rG   rV   r[   r^   r_   Z	notifyAllr   r   r   r    r
      s   
	
0

	c               @   s4   e Zd ZdddZdddZeZdd	 Zd
d ZdS )r   r8   c             C   s&   |dk rt dtt | _|| _d S )Nr   z$semaphore initial value must be >= 0)rT   r
   r   _cond_value)r+   valuer   r   r    r,   }  s    zSemaphore.__init__TNc          
   C   s   | r|d k	rt dd}d }| jj xb| jdkrv|s8P |d k	rh|d krTt | }n|t  }|dkrhP | jj| q(W |  jd8  _d}W d Q R X |S )Nz.can't specify timeout for non-blocking acquireFr   r8   T)rT   r`   ra   rW   rV   )r+   r:   r;   r=   rY   r   r   r    r9     s$    
zSemaphore.acquirec          
   C   s.   | j  |  jd7  _| j j  W d Q R X d S )Nr8   )r`   ra   r^   )r+   r   r   r    r?     s    zSemaphore.releasec             C   s   | j   d S )N)r?   )r+   r@   rA   rB   r   r   r    rC     s    zSemaphore.__exit__)r8   )TN)rI   r2   r3   r,   r9   rJ   r?   rC   r   r   r   r    r   q  s
   

-c               @   s   e Zd ZdddZdd ZdS )r   r8   c             C   s   t j| | || _d S )N)r   r,   _initial_value)r+   rb   r   r   r    r,     s    zBoundedSemaphore.__init__c          
   C   sB   | j 2 | j| jkrtd|  jd7  _| j j  W d Q R X d S )Nz!Semaphore released too many timesr8   )r`   ra   rc   rT   r^   )r+   r   r   r    r?     s
    
zBoundedSemaphore.releaseN)r8   )rI   r2   r3   r,   r?   r   r   r   r    r     s   
c               @   sB   e Zd Zdd Zdd Zdd ZeZdd Zd	d
 ZdddZ	dS )r   c             C   s   t t | _d| _d S )NF)r
   r   r`   _flag)r+   r   r   r    r,     s    zEvent.__init__c             C   s   | j jt  d S )N)r`   r,   r   )r+   r   r   r    _reset_internal_locks  s    zEvent._reset_internal_locksc             C   s   | j S )N)rd   )r+   r   r   r    is_set  s    zEvent.is_setc          	   C   s&   | j  d| _| j j  W d Q R X d S )NT)r`   rd   r_   )r+   r   r   r    set   s    z	Event.setc          	   C   s   | j  d| _W d Q R X d S )NF)r`   rd   )r+   r   r   r    clear  s    zEvent.clearNc          	   C   s,   | j  | j}|s| j j|}|S Q R X d S )N)r`   rd   rV   )r+   r;   Zsignaledr   r   r    rV     s
    z
Event.wait)N)
rI   r2   r3   r,   re   rf   ZisSetrg   rh   rV   r   r   r   r    r     s   
c               @   s|   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d Z
dd Zedd Zedd Zedd ZdS )r   Nc             C   s.   t t | _|| _|| _|| _d| _d| _d S )Nr   )r
   r   r`   _action_timeout_parties_stater*   )r+   partiesactionr;   r   r   r    r,   ?  s    	zBarrier.__init__c             C   s   |d kr| j }| jb | j  | j}|  jd7  _z&|d | jkrL| j  n
| j| |S |  jd8  _| j  X W d Q R X d S )Nr8   )rj   r`   _enterr*   rk   _release_wait_exit)r+   r;   indexr   r   r    rV   O  s    	

zBarrier.waitc             C   s,   x| j dkr| jj  qW | j dk r(td S )Nr8   r   rH   )rH   r8   )rl   r`   rV   r   )r+   r   r   r    ro   m  s
    
zBarrier._enterc          	   C   s>   y"| j r| j   d| _| jj  W n   | j   Y nX d S )Nr8   )ri   rl   r`   r_   _break)r+   r   r   r    rp   x  s    zBarrier._releasec                s4    j j fdd|s" j  t jdk r0td S )Nc                  s
    j dkS )Nr   )rl   r   )r+   r   r    <lambda>  s    zBarrier._wait.<locals>.<lambda>r   )r`   r[   rt   r   rl   )r+   r;   r   )r+   r    rq     s    
zBarrier._waitc             C   s(   | j dkr$| jdkr$d| _| jj  d S )Nr   r8   rH   )rH   r8   )r*   rl   r`   r_   )r+   r   r   r    rr     s    

zBarrier._exitc          	   C   sT   | j D | jdkr6| jdkr$d| _q<| jdkr<d| _nd| _| j j  W d Q R X d S )Nr   r8      rH   rH   )r`   r*   rl   r_   )r+   r   r   r    reset  s    


zBarrier.resetc          	   C   s   | j  | j  W d Q R X d S )N)r`   rt   )r+   r   r   r    abort  s    zBarrier.abortc             C   s   d| _ | jj  d S )Nrv   rw   )rl   r`   r_   )r+   r   r   r    rt     s    zBarrier._breakc             C   s   | j S )N)rk   )r+   r   r   r    rm     s    zBarrier.partiesc             C   s   | j dkr| jS dS )Nr   )rl   r*   )r+   r   r   r    	n_waiting  s    
zBarrier.n_waitingc             C   s
   | j dkS )Nrv   rw   )rl   )r+   r   r   r    broken  s    zBarrier.broken)NN)N)rI   r2   r3   r,   rV   ro   rp   rq   rr   rx   ry   rt   propertyrm   rz   r{   r   r   r   r    r   6  s   	


	c               @   s   e Zd ZdS )r   N)rI   r2   r3   r   r   r   r    r     s   	Thread-%dc             C   s
   | t   S )N)_counter)templater   r   r    _newname  s    r   c               @   s   e Zd ZdZejZdddf df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 Zdd Zdd Zd2ddZd4ddZed d! Zejd"d! Zed#d$ Zd%d& ZeZed'd( Zejd)d( Zd*d+ Zd,d- Zd.d/ Zd0d1 ZdS )5r   FN)daemonc            C   s~   |d kri }|| _ t|pt | _|| _|| _|d k	r>|| _n
t j| _d | _	d | _
t | _d| _d| _tj| _tj|  d S )NFT)_targetstrr   _name_args_kwargs	_daemonicr   r   _ident_tstate_lockr   _started_is_stopped_initialized_sysstderr_stderr	_danglingadd)r+   grouptargetr/   r$   r%   r   r   r   r    r,     s     
zThread.__init__c             C   s(   | j j  |r| j  nd| _d | _d S )NT)r   re   _set_tstate_lockr   r   )r+   is_aliver   r   r    re   "  s
    

zThread._reset_internal_locksc             C   s^   d}| j j rd}| j  | jr$d}| jr2|d7 }| jd k	rJ|d| j 7 }d| jj| j|f S )NinitialZstartedZstoppedz daemonz %sz<%s(%s, %s)>)	r   rf   r   r   r   r   r1   rI   r   )r+   statusr   r   r    r7   .  s    

zThread.__repr__c             C   s   | j std| jj r tdt | t| < W d Q R X yt| jf  W n, tk
rt   t t| = W d Q R X  Y nX | jj	  d S )Nzthread.__init__() not calledz threads can only be started once)
r   r>   r   rf   _active_limbo_lock_limbo_start_new_thread
_bootstrap	ExceptionrV   )r+   r   r   r    start<  s    

zThread.startc          
   C   s.   z| j r| j | j| j W d | ` | `| `X d S )N)r   r   r   )r+   r   r   r    runU  s    	z
Thread.runc          	   C   s2   y| j   W n    | jr&td kr&d S  Y nX d S )N)_bootstrap_innerr   r   )r+   r   r   r    r   f  s    zThread._bootstrapc             C   s   t  | _d S )N)r   r   )r+   r   r   r    
_set_identz  s    zThread._set_identc             C   s   t  | _| jj  d S )N)_set_sentinelr   r9   )r+   r   r   r    r   }  s    zThread._set_tstate_lockc          2   C   s  zT| j   | j  | jj  t | t| j< t| = W d Q R X trLt	j
t trZt	jt zy| j  W n tk
r|   Y n   t	rt	jd k	rtd| jt f t	jd n| jd k	rH| j \}}}zxtd| j d | jd td| jd x6|r$td|jjj|j|jjjf | jd |j}qW td||f | jd W d ~~~X Y nX W d X W d t  ytt = W n   Y nX W d Q R X X d S )NzException in thread %s:
%s)filezException in thread z2 (most likely raised during interpreter shutdown):z"Traceback (most recent call last):z  File "%s", line %s, in %sz%s: %s)r   r   r   rg   r   r.   r   r   r!   r   r   r   r   r   
SystemExitr   printr/   _format_excr   	_exc_infotb_framef_codeco_filename	tb_linenoco_nametb_nextr   )r+   exc_type	exc_valueZexc_tbr   r   r    r     sT    




zThread._bootstrap_innerc             C   s   | j }|d k	rd| _d | _ d S )NT)r   r   )r+   rO   r   r   r    _stop  s    zThread._stopc             C   sB   yt  tt = W d Q R X W n  tk
r<   dtjkr8 Y nX d S )NZdummy_threading)r   r.   r   r0   r   modules)r+   r   r   r    _delete  s    
zThread._deletec             C   sZ   | j std| jj s td| t kr2td|d krD| j  n| jt|dd d S )NzThread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr   )r;   )r   r>   r   rf   r   _wait_for_tstate_lockmax)r+   r;   r   r   r    join   s    


zThread.joinTr8   c             C   s0   | j }|d krn|j||r,|j  | j  d S )N)r   r9   r?   r   )r+   blockr;   rO   r   r   r    r   &  s    zThread._wait_for_tstate_lockc             C   s   | j S )N)r   )r+   r   r   r    r/   4  s    	zThread.namec             C   s   t || _d S )N)r   r   )r+   r/   r   r   r    r/   ?  s    c             C   s   | j S )N)r   )r+   r   r   r    identD  s    
zThread.identc             C   s(   | j s| jj  rdS | jd | j  S )NF)r   r   rf   r   )r+   r   r   r    r   P  s    	
zThread.is_alivec             C   s   | j S )N)r   )r+   r   r   r    r   `  s    zThread.daemonc             C   s*   | j std| jj r td|| _d S )NzThread.__init__() not calledz)cannot set daemon status of active thread)r   r>   r   rf   r   )r+   daemonicr   r   r    r   p  s
    
c             C   s   | j S )N)r   )r+   r   r   r    isDaemonx  s    zThread.isDaemonc             C   s
   || _ d S )N)r   )r+   r   r   r   r    	setDaemon{  s    zThread.setDaemonc             C   s   | j S )N)r/   )r+   r   r   r    getName~  s    zThread.getNamec             C   s
   || _ d S )N)r/   )r+   r/   r   r   r    setName  s    zThread.setName)NrH   )TrH   )rI   r2   r3   r   r   exc_infor   r,   re   r7   r   r   r   r   r   r   r   r   r   r   r|   r/   setterr   r   ZisAliver   r   r   r   r   r   r   r   r    r     s6   	,A#
&
c               @   s&   e Zd ZdddZdd Zdd ZdS )	r   Nc             C   sF   t j|  || _|| _|d k	r"|ng | _|d k	r4|ni | _t | _d S )N)r   r,   intervalfunctionr$   r%   r   finished)r+   r   r   r$   r%   r   r   r    r,     s    
zTimer.__init__c             C   s   | j j  d S )N)r   rg   )r+   r   r   r    cancel  s    zTimer.cancelc             C   s6   | j j| j | j j s(| j| j| j | j j  d S )N)r   rV   r   rf   r   r$   r%   rg   )r+   r   r   r    r     s    
z	Timer.run)NN)rI   r2   r3   r,   r   r   r   r   r   r    r     s   	
c               @   s   e Zd Zdd ZdS )_MainThreadc          
   C   sH   t j| ddd | j  | jj  | j  t | t| j< W d Q R X d S )NZ
MainThreadF)r/   r   )	r   r,   r   r   rg   r   r   r.   r   )r+   r   r   r    r,     s    
z_MainThread.__init__N)rI   r2   r3   r,   r   r   r   r    r     s   r   c               @   s.   e Zd Zdd Zdd Zdd Zd
dd	ZdS )_DummyThreadc          
   C   sD   t j| tddd | jj  | j  t | t| j< W d Q R X d S )NzDummy-%dT)r/   r   )	r   r,   r   r   rg   r   r   r.   r   )r+   r   r   r    r,     s
    
z_DummyThread.__init__c             C   s   d S )Nr   )r+   r   r   r    r     s    z_DummyThread._stopc             C   s   dS )NTr   )r+   r   r   r    r     s    z_DummyThread.is_aliveNc             C   s   d S )Nr   )r+   r;   r   r   r    r     s    z_DummyThread.join)N)rI   r2   r3   r,   r   r   r   r   r   r   r    r     s   r   c               C   s&   y
t t  S  tk
r    t S X d S )N)r.   r   r0   r   r   r   r   r    r     s    
c            
   C   s    t  tttt S Q R X d S )N)r   rP   r.   r   r   r   r   r    r	     s    c               C   s   t tj t tj  S )N)listr.   valuesr   r   r   r   r    
_enumerate  s    r   c            
   C   s(   t  ttj ttj  S Q R X d S )N)r   r   r.   r   r   r   r   r   r    r     s    )r   c              C   s8   t j} | j  t j  t }x|r2|j  t }qW d S )N)_main_threadr   r?   r   _pickSomeNonDaemonThreadr   )Ztlockr@   r   r   r    	_shutdown  s    r   c              C   s(   x"t  D ]} | j r| j r| S qW d S )N)r   r   r   )r@   r   r   r    r     s    r   c               C   s   t S )N)r   r   r   r   r    r     s    )_local)r   c              C   s   t  ai } t }|at| tt }|jt xF|D ]>}||kr`|jd t	 }||_
|| |< q4|jd |j  q4W tj  tj  tj|  W d Q R X d S )NTF)r'   r   r   r   rg   r   updater   re   r   r   r   r   rh   r.   )Z
new_activeZcurrentZthreadsZthreadr   r   r   r    _after_fork(  s&    






r   )r}   )Jsysr   _threadZtimer   rW   	tracebackr   r   _weakrefsetr   	itertoolsr   r\   r   r*   _collectionsr   rM   ImportErrorcollections__all__start_new_threadr   allocate_lockr'   r   r   errorr   r   r"   rL   r   r   r!   r   r   r   r&   r#   r
   r   r   r   r   r>   r   __next__r~   r   r   r.   r   r   r   r   r   r   r   ZcurrentThreadr	   ZactiveCountr   r   r   r   r   r   r   r   r   Z_threading_localr   r   r   r   r    <module>   s   


q 'P&O 
   '
