<!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>

]              
   @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d	 l m Z d
 g Z d Z d Z e e e f Z d d   Z  d d   Z! d d   Z" d d   Z# d d   Z$ d d   Z% d d  d e j& d d  d d  d d  Z' d d    Z( Gd! d"   d" e j)  Z* Gd# d
   d
 e j+  Z, d S)$    N   )compat)
coroutines)events)futures)tasks)	coroutine)loggerBaseEventLoopd   g      ?c             C   sH   |  j  } t j |  r: t | j t j  r: t | j  St |   Sd  S)N)		_callbackinspectZismethod
isinstance__self__r   Taskreprstr)handlecb r   0/opt/alt/python35/lib64/python3.5/base_events.py_format_handle:   s    	$r   c             C   s4   |  t  j k r d S|  t  j k r& d St |   Sd  S)Nz<pipe>z<stdout>)
subprocessPIPESTDOUTr   )fdr   r   r   _format_pipeC   s
    r   c             C   s`   t  t d  s t d   n> y |  j t j t j d  Wn t k
 r[ t d   Yn Xd  S)NSO_REUSEPORTz)reuse_port not supported by socket moduler   zTreuse_port not supported by socket module, SO_REUSEPORT defined but not implemented.)hasattrsocket
ValueError
setsockopt
SOL_SOCKETr   OSError)sockr   r   r   _set_reuseportL   s    r%   c             C   s   |  j  t j @t j k S)N)typer   SOCK_STREAM)r$   r   r   r   _is_stream_socketW   s    r(   c             C   s   |  j  t j @t j k S)N)r&   r   
SOCK_DGRAM)r$   r   r   r   _is_dgram_socket^   s    r*   c             C   s  t  t d  s d  S| d t j t j h k s: |  d  k r> d  S| t j k rY t j } n | t j k rt t j } n d  S| d  k r d } nw t | t  r | d k r d } nS t | t  r | d k r d } n/ y t	 |  } Wn t
 t f k
 rd  SYn X| t j k rAt j g } t  t d  rJ| j t j  n	 | g } t |  t  rh|  j d  }  d |  k rxd  SxP | D]H } y- t j | |   | | | d |  | f f SWqt k
 rYqXqWd  S)N	inet_ptonr        AF_INET6Zidna%)r   r   IPPROTO_TCPIPPROTO_UDPr'   r)   r   bytesr   int	TypeErrorr    	AF_UNSPECAF_INETappendr.   decoder+   r#   )hostportfamilyr&   protoZafsafr   r   r   _ipaddr_infoe   sH    						r>   r;   r&   r<   flagsc      
      C   s   |  d  d  \ } } t  | | | | |  } | d  k	 rZ | j   }	 |	 j | g  |	 S| j | | d | d | d | d | Sd  S)N   r;   r&   r<   r?   )r>   create_future
set_resultgetaddrinfo)
addressr;   r&   r<   r?   loopr9   r:   infofutr   r   r   _ensure_resolved   s    rH   c             C   s=   |  j  } t | t  r, t | t  r, d  S|  j j   d  S)N)
_exceptionr   BaseException	Exception_loopstop)rG   excr   r   r   _run_until_complete_cb   s
    	rO   c               @   sj   e  Z 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)Serverc             C   s(   | |  _  | |  _ d |  _ g  |  _ d  S)Nr   )rL   sockets_active_count_waiters)selfrE   rQ   r   r   r   __init__   s    			zServer.__init__c             C   s   d |  j  j |  j f S)Nz<%s sockets=%r>)	__class____name__rQ   )rT   r   r   r   __repr__   s    zServer.__repr__c             C   s   |  j  d 7_  d  S)Nr   )rR   )rT   r   r   r   _attach   s    zServer._attachc             C   s;   |  j  d 8_  |  j  d k r7 |  j d  k r7 |  j   d  S)Nr   r   )rR   rQ   _wakeup)rT   r   r   r   _detach   s    zServer._detachc             C   s`   |  j  } | d  k r d  Sd  |  _  x | D] } |  j j |  q) W|  j d k r\ |  j   d  S)Nr   )rQ   rL   Z_stop_servingrR   rZ   )rT   rQ   r$   r   r   r   close   s    		zServer.closec             C   s@   |  j  } d  |  _  x' | D] } | j   s | j |  q Wd  S)N)rS   donerB   )rT   waiterswaiterr   r   r   rZ      s
    		zServer._wakeupc             c   sN   |  j  d  k s |  j d  k r" d  S|  j j   } |  j j |  | Ed  Hd  S)N)rQ   rS   rL   rA   r7   )rT   r_   r   r   r   wait_closed   s
    zServer.wait_closedN)rW   
__module____qualname__rU   rX   rY   r[   r\   rZ   r   r`   r   r   r   r   rP      s   
rP   c               @   s  e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d d d d d d Z	 d d d d d d d d d d d Z
 d d d d d  Z d d d d  Z d d d d  Z e d d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d' d(   Z e d) d*    Z d+ d,   Z d- d.   Z d/ d0   Z d1 d2   Z d3 d4   Z e j rd5 d6   Z d7 d8   Z d9 d:   Z d; d<   Z  d= d>   Z! d? d@   Z" dA dB   Z# dC dD   Z$ dE dF   Z% dG dH   Z& dI dJ   Z' dK dL   Z( dM dN   Z) dO dP dQ dP dR dP dS dP dT dU  Z* dP dV dW  Z+ e d d dX d dO dP dR dP dS dP dY d dZ d d d d[ d\  Z, e d d] d^   Z- e d d dO dP dR dP dS dP d_ d d` d da d dY d db dc  Z. e dd de    Z/ e d d dO e0 j1 dS e0 j2 dY d df dg dX d d_ d d` d dh di  Z3 e dX d dj dk   Z4 e dl dm    Z5 e dn do    Z6 dp dq   Z7 e dr e8 j9 ds e8 j9 dt e8 j9 du d dv dw dx dP dy dz   Z: e dr e8 j9 ds e8 j9 dt e8 j9 du d dv d dx dP d{ d|   Z; d} d~   Z< d d   Z= d d   Z> d d   Z? d d   Z@ d d   ZA d d   ZB d d   ZC d d   ZD d d   ZE d d   ZF d S)r
   c             C   s   d |  _  d |  _ d |  _ t j   |  _ g  |  _ d  |  _ d |  _ d  |  _	 t
 j d  j |  _ d  |  _ |  j t j j o t t j j d    d |  _ d  |  _ d  |  _ d |  _ t t d  r t j   |  _ n	 d  |  _ d |  _ d  S)Nr   F	monotonicZPYTHONASYNCIODEBUGg?get_asyncgen_hooks) _timer_cancelled_count_closed	_stoppingcollectionsdeque_ready
_scheduled_default_executorZ_internal_fds
_thread_idtimeget_clock_infoZ
resolution_clock_resolution_exception_handler	set_debugsysr?   ignore_environmentboolosenvirongetslow_callback_duration_current_handle_task_factory_coroutine_wrapper_setr   weakrefWeakSet
_asyncgens_asyncgens_shutdown_called)rT   r   r   r   rU      s(    													zBaseEventLoop.__init__c             C   s,   d |  j  j |  j   |  j   |  j   f S)Nz"<%s running=%s closed=%s debug=%s>)rV   rW   
is_running	is_closed	get_debug)rT   r   r   r   rX     s    zBaseEventLoop.__repr__c             C   s   t  j d |   S)NrE   )r   Future)rT   r   r   r   rA     s    zBaseEventLoop.create_futurec             C   sZ   |  j    |  j d  k rD t j | d |  } | j rV | j d =n |  j |  |  } | S)NrE   r   )_check_closedr{   r   r   _source_traceback)rT   coroZtaskr   r   r   create_task  s    
	zBaseEventLoop.create_taskc             C   s2   | d  k	 r% t  |  r% t d   | |  _ d  S)Nz'task factory must be a callable or None)callabler4   r{   )rT   factoryr   r   r   set_task_factory#  s    
zBaseEventLoop.set_task_factoryc             C   s   |  j  S)N)r{   )rT   r   r   r   get_task_factory1  s    zBaseEventLoop.get_task_factoryNextraserverc            C   s
   t   d  S)N)NotImplementedError)rT   r$   protocolr_   r   r   r   r   r   _make_socket_transport5  s    z$BaseEventLoop._make_socket_transportserver_sideFserver_hostnamec      	      C   s
   t   d  S)N)r   )	rT   Zrawsockr   
sslcontextr_   r   r   r   r   r   r   r   _make_ssl_transport:  s    z!BaseEventLoop._make_ssl_transportc             C   s
   t   d  S)N)r   )rT   r$   r   rD   r_   r   r   r   r   _make_datagram_transport@  s    z&BaseEventLoop._make_datagram_transportc             C   s
   t   d  S)N)r   )rT   piper   r_   r   r   r   r   _make_read_pipe_transportE  s    z'BaseEventLoop._make_read_pipe_transportc             C   s
   t   d  S)N)r   )rT   r   r   r_   r   r   r   r   _make_write_pipe_transportJ  s    z(BaseEventLoop._make_write_pipe_transportc	       
      K   s
   t   d  S)N)r   )
rT   r   argsshellstdinstdoutstderrbufsizer   kwargsr   r   r   _make_subprocess_transportO  s    z(BaseEventLoop._make_subprocess_transportc             C   s
   t   d  S)N)r   )rT   r   r   r   _write_to_selfV  s    zBaseEventLoop._write_to_selfc             C   s
   t   d  S)N)r   )rT   
event_listr   r   r   _process_events_  s    zBaseEventLoop._process_eventsc             C   s   |  j  r t d   d  S)NzEvent loop is closed)rf   RuntimeError)rT   r   r   r   r   c  s    	zBaseEventLoop._check_closedc             C   s=   |  j  j |  |  j   s9 |  j | j    |  j   d  S)N)r   discardr   r   acloser   )rT   agenr   r   r   _asyncgen_finalizer_hookg  s    z&BaseEventLoop._asyncgen_finalizer_hookc             C   s<   |  j  r( t j d j |  t d |  |  j j |  d  S)NzNasynchronous generator {!r} was scheduled after loop.shutdown_asyncgens() callsource)r   warningswarnformatResourceWarningr   add)rT   r   r   r   r   _asyncgen_firstiter_hooko  s    	z&BaseEventLoop._asyncgen_firstiter_hookc             c   s   d |  _  |  j d  k s( t |  j  r, d  St |  j  } |  j j   t j d d   | D d d d |   } | Ed  H} xT t | |  D]C \ } } t | t	  r |  j
 d d j |  d | d	 | i  q Wd  S)
NTc             S   s   g  |  ] } | j     q Sr   )r   ).0Zagr   r   r   
<listcomp>  s   	 z4BaseEventLoop.shutdown_asyncgens.<locals>.<listcomp>Zreturn_exceptionsrE   messagez?an error occurred during closing of asynchronous generator {!r}	exceptionZasyncgen)r   r   lenlistclearr   gatherzipr   rK   call_exception_handlerr   )rT   Zclosing_agensZshutdown_cororesultsresultr   r   r   r   shutdown_asyncgensx  s"    			z BaseEventLoop.shutdown_asyncgensc             C   s  |  j    |  j   r" t d   t j   d  k	 r@ t d   |  j |  j  t j   |  _	 |  j
 d  k	 r t j   } t j d |  j d |  j  z, t j |   x |  j   |  j r Pq WWd  d |  _ d  |  _	 t j d   |  j d  |  j
 d  k	 rt j |   Xd  S)Nz"This event loop is already runningz7Cannot run the event loop while another loop is runningZ	firstiter	finalizerF)r   r   r   r   Z_get_running_loop_set_coroutine_wrapper_debug	threading	get_identrm   r   rs   rd   Zset_asyncgen_hooksr   r   Z_set_running_loop	_run_oncerg   )rT   Zold_agen_hooksr   r   r   run_forever  s0    
	

				zBaseEventLoop.run_foreverc             C   s   |  j    t j |  } t j | d |  } | r> d | _ | j t  zI y |  j   Wn4 | r | j	   r | j
   r | j     Yn XWd  | j t  X| j	   s t d   | j   S)NrE   Fz+Event loop stopped before Future completed.)r   r   Zisfuturer   Zensure_futureZ_log_destroy_pendingadd_done_callbackrO   r   r]   	cancelledr   Zremove_done_callbackr   r   )rT   futureZnew_taskr   r   r   run_until_complete  s     
	
z BaseEventLoop.run_until_completec             C   s   d |  _  d  S)NT)rg   )rT   r   r   r   rM     s    zBaseEventLoop.stopc             C   s   |  j    r t d   |  j r% d  S|  j r> t j d |   d |  _ |  j j   |  j j   |  j	 } | d  k	 r d  |  _	 | j
 d d  d  S)Nz!Cannot close a running event loopzClose %rTwaitF)r   r   rf   r   r	   debugrj   r   rk   rl   shutdown)rT   executorr   r   r   r\     s    					zBaseEventLoop.closec             C   s   |  j  S)N)rf   )rT   r   r   r   r     s    zBaseEventLoop.is_closedc             C   s:   |  j    s6 t j d |  t  |  j   s6 |  j   d  S)Nzunclosed event loop %r)r   r   r   r   r   r\   )rT   r   r   r   __del__  s    zBaseEventLoop.__del__c             C   s   |  j  d  k	 S)N)rm   )rT   r   r   r   r     s    zBaseEventLoop.is_runningc             C   s
   t  j   S)N)rn   rc   )rT   r   r   r   rn     s    zBaseEventLoop.timec             G   s6   |  j  |  j   | | |  } | j r2 | j d =| S)Nr   r   )call_atrn   r   )rT   delaycallbackr   timerr   r   r   
call_later  s    	
zBaseEventLoop.call_laterc             G   sx   |  j    |  j r- |  j   |  j | d  t j | | | |   } | j rX | j d =t j |  j	 |  d | _	 | S)Nr   r   Tr   )
r   r   _check_thread_check_callbackr   ZTimerHandler   heapqheappushrk   )rT   whenr   r   r   r   r   r   r   #  s    
	
	
	zBaseEventLoop.call_atc             G   sV   |  j    |  j r- |  j   |  j | d  |  j | |  } | j rR | j d =| S)N	call_soonr   r   )r   r   r   r   
_call_soonr   )rT   r   r   r   r   r   r   r   3  s    

	
	
zBaseEventLoop.call_soonc             C   s[   t  j |  s t  j |  r3 t d j |    t |  sW t d j | |    d  S)Nz#coroutines cannot be used with {}()z0a callable object was expected by {}(), got {!r})r   ZiscoroutineZiscoroutinefunctionr4   r   r   )rT   r   methodr   r   r   r   F  s    zBaseEventLoop._check_callbackc             C   s<   t  j | | |   } | j r( | j d =|  j j |  | S)Nr   r   )r   ZHandler   rj   r7   )rT   r   r   r   r   r   r   r   Q  s
    	
zBaseEventLoop._call_soonc             C   s>   |  j  d  k r d  St j   } | |  j  k r: t d   d  S)NzMNon-thread-safe operation invoked on an event loop other than the current one)rm   r   r   r   )rT   Z	thread_idr   r   r   r   X  s    	zBaseEventLoop._check_threadc             G   sV   |  j    |  j r# |  j | d  |  j | |  } | j rH | j d =|  j   | S)Ncall_soon_threadsafer   r   )r   r   r   r   r   r   )rT   r   r   r   r   r   r   r   i  s    
		

z"BaseEventLoop.call_soon_threadsafec             G   s{   |  j    |  j r# |  j | d  | d  k r\ |  j } | d  k r\ t j j   } | |  _ t j | j | |  d |  S)Nrun_in_executorrE   )	r   r   r   rl   
concurrentr   ThreadPoolExecutorZwrap_futuresubmit)rT   r   funcr   r   r   r   r   t  s    
			zBaseEventLoop.run_in_executorc             C   s   | |  _  d  S)N)rl   )rT   r   r   r   r   set_default_executor  s    z"BaseEventLoop.set_default_executorc             C   s  d | | f g } | r* | j  d |  | rA | j  d |  | rX | j  d |  | ro | j  d |  d j |  } t j d |  |  j   } t j | | | | | |  }	 |  j   | }
 d | |
 d	 |	 f } |
 |  j k r t j |  n t j |  |	 S)
Nz%s:%rz	family=%rztype=%rzproto=%rzflags=%rz, zGet address info %sz(Getting address info %s took %.3f ms: %rg     @@)	r7   joinr	   r   rn   r   rC   ry   rF   )rT   r9   r:   r;   r&   r<   r?   msgt0Zaddrinfodtr   r   r   _getaddrinfo_debug  s(    z BaseEventLoop._getaddrinfo_debugr;   r   r&   r<   r?   c         	   C   sW   |  j  r. |  j d  |  j | | | | | |  S|  j d  t j | | | | | |  Sd  S)N)r   r   r   r   rC   )rT   r9   r:   r;   r&   r<   r?   r   r   r   rC     s
    	zBaseEventLoop.getaddrinfoc             C   s   |  j  d  t j | |  S)N)r   r   getnameinfo)rT   Zsockaddrr?   r   r   r   r     s    zBaseEventLoop.getnameinfosslr$   
local_addrc            #   s#  |
 d  k	 r | r t  d   |
 d  k rI | rI | sC t  d   | }
 | d  k	 sa | d  k	 r| d  k	 ry t  d   t | | f d | d t j d | d | d |  } | g } |	 d  k	 r t |	 d | d t j d | d | d |  } | j |  n d  } t j | d |  Ed  H| j   } | s:t d	   | d  k	 rd| j   } | sdt d	   g  } xU| D]\ } } } } } yt j d | d | d |  } | j	 d
  | d  k	 rax | D] \ } } } } } y | j
 |  PWqt k
 rI} z9 t | j d j | | j j     } | j |  WYd  d  } ~ XqXqW| j   d  } wq|  j r}t j d | |  |  j | |  Ed  HWnh t k
 r} z( | d  k	 r| j   | j |  WYd  d  } ~ Xqq| d  k	 r| j     YqqXPqqWt |  d k r"| d  qt | d    t   f d d   | D  r[| d  t d j d j d d   | D     n9 | d  k rt  d   t |  st  d j |    |  j | | | |
  Ed  H\ } } |  j r| j d  } t j d | | | | |  | | f S)Nz+server_hostname is only meaningful with sslz:You must set server_hostname when using ssl without a hostz8host/port and sock can not be specified at the same timer;   r&   r<   r?   rE   z!getaddrinfo() returned empty listFz2error while attempting to bind on address {!r}: {}zconnect %r to %rr   r   c             3   s!   |  ] } t  |    k Vq d  S)N)r   )r   rN   )modelr   r   	<genexpr>  s    z2BaseEventLoop.create_connection.<locals>.<genexpr>zMultiple exceptions: {}z, c             s   s   |  ] } t  |  Vq d  S)N)r   )r   rN   r   r   r   r     s    z5host and port was not specified and no sock specifiedz&A Stream Socket was expected, got {!r}r   z%r connected to %s:%r: (%r, %r))r    rH   r   r'   r7   r   r   r   r#   setblockingbinderrnor   strerrorlowerr\   r   r	   r   sock_connectr   r   allr   r(   _create_connection_transportget_extra_info)rT   protocol_factoryr9   r:   r   r;   r<   r?   r$   r   r   f1fsf2infosZladdr_infos
exceptionsr&   ZcnamerD   _laddrrN   	transportr   r   )r   r   create_connection  s    		$
	


	%			zBaseEventLoop.create_connectionc       
   	   c   s   | j  d  |   } |  j   } | rj t | t  r= d  n | } |  j | | | | d | d | }	 n |  j | | |  }	 y | Ed  HWn |	 j     Yn X|	 | f S)NFr   r   )r   rA   r   ru   r   r   r\   )
rT   r$   r   r   r   r   r   r_   r   r   r   r   r   r   +  s    	
z*BaseEventLoop._create_connection_transportreuse_address
reuse_portallow_broadcastc            #   sT  |
 d  k	 r t  |
  s- t d j |
      s]  s] | s] | s] | s] | s] | s] |	 r t d   d  d | d | d | d | d | d	 |	  } d
 j d d   | j   D  } t d j |    |
 j d  d  } n  p  s| d k rt d   | | f d f f } nt j   } x d   f d  f f D] \ } } | d  k	 rDt	 | d | d t
 j d | d | d |  Ed  H} | st d   xS | D]K \ } } } } } | | f } | | k rd  d  g | | <| | | | <qWqDW   f d d   | j   D } | s.t d   g  } | d  k r^t j d k o[t j d k } xV| D]D\ \ } } \ } } d  }
 d  } y t
 j
 d | d t
 j d |  }
 | r|
 j t
 j t
 j d  | rt |
  |	 r|
 j t
 j t
 j d  |
 j d    r|
 j |   r<|  j |
 |  Ed  H| } Wnh t k
 r} z( |
 d  k	 rh|
 j   | j |  WYd  d  } ~ Xqe|
 d  k	 r|
 j     YqeXPqeW| d  |   } |  j   } |  j |
 | | |  } |  j r%  rt j d    | |  n t j d  | |  y | Ed  HWn | j     Yn X| | f S)Nz#A UDP Socket was expected, got {!r}r   remote_addrr;   r<   r?   r   r  r  z, c             s   s-   |  ]# \ } } | r d  j  | |  Vq d S)z{}={}N)r   )r   kvr   r   r   r   W  s    z9BaseEventLoop.create_datagram_endpoint.<locals>.<genexpr>zNsocket modifier keyword arguments can not be used when sock is specified. ({})Fr   zunexpected address familyr   r&   rE   z!getaddrinfo() returned empty listc                sN   g  |  ]D \ } }   r( | d  d k p;  o; | d d k s | | f  q S)r   Nr   r   )r   keyZ	addr_pair)r   r  r   r   r   x  s   	 	z:BaseEventLoop.create_datagram_endpoint.<locals>.<listcomp>zcan not get address informationposixcygwinz@Datagram endpoint local_addr=%r remote_addr=%r created: (%r, %r)z2Datagram endpoint remote_addr=%r created: (%r, %r))NN) r*   r    r   dictr   itemsr   rh   OrderedDictrH   r   r)   r#   rv   namers   platformr!   r"   SO_REUSEADDRr%   SO_BROADCASTr   r   r\   r7   rA   r   r   r	   rF   r   )rT   r   r   r  r;   r<   r?   r   r  r  r$   ZoptsZproblemsZr_addrZaddr_pairs_infoZ
addr_infosidxaddrr   Zfamr   ZprorD   r  r   Zlocal_addressZremote_addressrN   r   r_   r   r   )r   r  r   create_datagram_endpointC  s    		%"	




				
z&BaseEventLoop.create_datagram_endpointc          
   c   sQ   t  | | f d | d t j d | d |  Ed  H} | sM t d j |    | S)Nr;   r&   r?   rE   z%getaddrinfo({!r}) returned empty list)rH   r   r'   r#   r   )rT   r9   r:   r;   r?   r   r   r   r   _create_server_getaddrinfo  s    	z(BaseEventLoop._create_server_getaddrinfobacklogr   c             #   sd  t  | t  r t d   | d  k	 s3  d  k	 r| d  k	 rK t d   t t d d  } |	 d  k r t j d k o t j	 d k }	 g  } | d k r d  g } n4 t  | t
  s t  | t j  r | g } n | }      f d d	   | D } t j | d
   Ed  H} t t j j |   } d } zWxJ| D]B} | \ } } } } } y t j | | |  } Wn= t j k
 r j rt j d | | | d d w=Yn X| j |  |	 r| j t j t j d  |
 rt |  | | k r!t t d  r!| j t j t j d  y | j |  Wq=t  k
 r~} z* t  | j! d | | j" j#   f   WYd  d  } ~ Xq=Xq=Wd } Wd  | sx | D] } | j$   qWXnB | d  k rt d   t% |  st d j& |    | g } t'  |  } xA | D]9 } | j( |  | j) d   j* | | | | |  q
W j r`t j+ d |  | S)Nz*ssl argument must be an SSLContext or Nonez8host/port and sock can not be specified at the same timer.   r   r  r  r-   c          	      s.   g  |  ]$ }  j  |  d    d   q S)r;   r?   )r  )r   r9   )r;   r?   r:   rT   r   r   r     s   	z/BaseEventLoop.create_server.<locals>.<listcomp>rE   Fz:create_server() failed to create socket.socket(%r, %r, %r)exc_infoTIPPROTO_IPV6z0error while attempting to bind on address %r: %sz)Neither host/port nor sock were specifiedz&A Stream Socket was expected, got {!r}z%r is serving),r   ru   r4   r    getattrr   rv   r  rs   r  r   rh   Iterabler   r   set	itertoolschainfrom_iterableerrorr   r	   warningr7   r!   r"   r  r%   r   r  IPV6_V6ONLYr   r#   r   r   r   r\   r(   r   rP   listenr   Z_start_servingrF   )rT   r   r9   r:   r;   r?   r$   r  r   r   r  r.   rQ   Zhostsr   r   Z	completedresr=   socktyper<   	canonnamesaerrr   r   )r;   r?   r:   rT   r   create_server  s    	
		
0
		zBaseEventLoop.create_serverc            c   s   t  |  s! t d j |    |  j | | | d d d Ed  H\ } } |  j rx | j d  } t j d | | |  | | f S)Nz&A Stream Socket was expected, got {!r}r-   r   Tr   z%r handled: (%r, %r))r(   r    r   r   r   r   r	   r   )rT   r   r$   r   r   r   r   r   r   connect_accepted_socket.  s    
#	z%BaseEventLoop.connect_accepted_socketc             c   s~   |   } |  j    } |  j | | |  } y | Ed  HWn | j     Yn X|  j rt t j d | j   | |  | | f S)Nz Read pipe %r connected: (%r, %r))rA   r   r\   r   r	   r   fileno)rT   r   r   r   r_   r   r   r   r   connect_read_pipeE  s    	
		zBaseEventLoop.connect_read_pipec             c   s~   |   } |  j    } |  j | | |  } y | Ed  HWn | j     Yn X|  j rt t j d | j   | |  | | f S)Nz!Write pipe %r connected: (%r, %r))rA   r   r\   r   r	   r   r(  )rT   r   r   r   r_   r   r   r   r   connect_write_pipeV  s    	
		z BaseEventLoop.connect_write_pipec             C   s   | g } | d  k	 r, | j  d t |   | d  k	 ra | t j k ra | j  d t |   nF | d  k	 r | j  d t |   | d  k	 r | j  d t |   t j d j |   d  S)Nzstdin=%szstdout=stderr=%sz	stdout=%sz	stderr=%s )r7   r   r   r   r	   r   r   )rT   r   r   r   r   rF   r   r   r   _log_subprocessg  s    	zBaseEventLoop._log_subprocessr   r   r   universal_newlinesr   Tr   c         	   k   s   t  | t t f  s! t d   | r3 t d   | sE t d   | d k r] t d   |   }
 |  j r d | } |  j | | | |  |  j |
 | d | | | | |	  Ed  H} |  j r t j d | |  | |
 f S)	Nzcmd must be a stringz universal_newlines must be Falsezshell must be Truer   zbufsize must be 0zrun shell command %rTz%s: %r)	r   r2   r   r    r   r,  r   r	   rF   )rT   r   cmdr   r   r   r-  r   r   r   r   	debug_logr   r   r   r   subprocess_shellt  s"    		
#	zBaseEventLoop.subprocess_shellc         	   o   s	  | r t  d   | r$ t  d   | d k r< t  d   | f |	 } x< | D]4 } t | t t f  sP t d t |  j   qP W|   } |  j r d | } |  j | | | |  |  j	 | | d | | | | |
  Ed  H} |  j r t
 j d | |  | | f S)	Nz universal_newlines must be Falsezshell must be Falser   zbufsize must be 0z8program arguments must be a bytes or text string, not %szexecute program %rFz%s: %r)r    r   r   r2   r4   r&   rW   r   r,  r   r	   rF   )rT   r   Zprogramr   r   r   r-  r   r   r   r   Z
popen_argsargr   r/  r   r   r   r   subprocess_exec  s*    		
	zBaseEventLoop.subprocess_execc             C   s   |  j  S)N)rq   )rT   r   r   r   get_exception_handler  s    z#BaseEventLoop.get_exception_handlerc             C   s;   | d  k	 r. t  |  r. t d j |    | |  _ d  S)Nz/A callable object or None is expected, got {!r})r   r4   r   rq   )rT   handlerr   r   r   set_exception_handler  s    	z#BaseEventLoop.set_exception_handlerc       	      C   s  | j  d  } | s d } | j  d  } | d  k	 rQ t |  | | j f } n d } d | k r |  j d  k	 r |  j j r |  j j | d <| g } x t |  D] } | d k r q | | } | d k r d j t j |   } d } | | j	   7} nI | d k r=d j t j |   } d	 } | | j	   7} n t
 |  } | j d
 j | |   q Wt j d j |  d | d  S)Nr   z!Unhandled exception in event loopr   FZsource_tracebackZhandle_tracebackr-   z+Object created at (most recent call last):
z+Handle created at (most recent call last):
z{}: {}
r  >   r   r   )rx   r&   __traceback__rz   r   sortedr   	tracebackformat_listrstripr   r7   r   r	   r  )	rT   contextr   r   r  Z	log_linesr  valuetbr   r   r   default_exception_handler  s6    
	
z'BaseEventLoop.default_exception_handlerc             C   s   |  j  d  k rK y |  j |  Wq t k
 rG t j d d d Yq Xn y |  j  |  |  Wnp t k
 r } zP y# |  j d d d | d | i  Wn% t k
 r t j d d d Yn XWYd  d  } ~ Xn Xd  S)	Nz&Exception in default exception handlerr  Tr   z$Unhandled error in exception handlerr   r<  zeException in default exception handler while handling an unexpected error in custom exception handler)rq   r?  rK   r	   r  )rT   r<  rN   r   r   r   r     s"    z$BaseEventLoop.call_exception_handlerc             C   s!   | j  r d  S|  j j |  d  S)N)
_cancelledrj   r7   )rT   r   r   r   r   _add_callback  s    	zBaseEventLoop._add_callbackc             C   s   |  j  |  |  j   d  S)N)rA  r   )rT   r   r   r   r   _add_callback_signalsafe'  s    z&BaseEventLoop._add_callback_signalsafec             C   s   | j  r |  j d 7_ d  S)Nr   )rk   re   )rT   r   r   r   r   _timer_handle_cancelled,  s    	z%BaseEventLoop._timer_handle_cancelledc             C   sl  t  |  j  } | t k r |  j | t k r g  } x3 |  j D]( } | j rY d | _ q> | j |  q> Wt j |  | |  _ d |  _ nJ xG |  j r |  j d j r |  j d 8_ t j	 |  j  } d | _ q Wd  } |  j
 s |  j r d } n2 |  j r)|  j d j } t d | |  j    } |  j r| d k r|  j   } |  j j |  } |  j   | } | d k rt j }	 n	 t j }	 t  |  }
 | d  k rt j |	 d | d |
  q+|
 rt j |	 d | d | d |
  q+| d k r+t j |	 d | d | d  n |  j j |  } |  j |  |  j   |  j } xU |  j r|  j d } | j | k rtPt j	 |  j  } d | _ |  j
 j |  qNWt  |  j
  } x t |  D] } |  j
 j   } | j rq|  j rTz[ | |  _ |  j   } | j   |  j   | } | |  j k rCt j d	 t |  |  Wd  d  |  _ Xq| j   qWd  } d  S)
NFr   r   g      ?zpoll took %.3f ms: %s eventsg     @@z$poll %.3f ms took %.3f ms: %s eventsz"poll %.3f ms took %.3f ms: timeoutzExecuting %s took %.3f seconds) r   rk   _MIN_SCHEDULED_TIMER_HANDLESre   %_MIN_CANCELLED_TIMER_HANDLES_FRACTIONr@  r7   r   heapifyheappoprj   rg   Z_whenmaxrn   r   	_selectorselectloggingINFODEBUGr	   logr   rp   rangepopleftrz   Z_runry   r  r   )rT   Zsched_countZnew_scheduledr   timeoutr   r   r   r   levelZneventend_timeZntodoir   r   r   r   1  s    
												
	zBaseEventLoop._run_oncec             C   s   y t  j } t  j } Wn t k
 r. d  SYn Xt |  } |  j | k rN d  St j } |   } | r | d  | f k r t j	 d | t
  q | |  d |  _ n< | d  | f k r t j	 d | t
  n | d   d |  _ d  S)Nz[loop.set_debug(True): cannot set debug coroutine wrapper; another wrapper is already set %rTzWloop.set_debug(False): cannot unset debug coroutine wrapper; another wrapper was set %rF)rs   set_coroutine_wrapperget_coroutine_wrapperAttributeErrorru   r|   r   Zdebug_wrapperr   r   RuntimeWarning)rT   enabledZset_wrapperZget_wrapperwrapperZcurrent_wrapperr   r   r   r     s.    				

z$BaseEventLoop._set_coroutine_wrapperc             C   s   |  j  S)N)r   )rT   r   r   r   r     s    zBaseEventLoop.get_debugc             C   s&   | |  _  |  j   r" |  j |  d  S)N)r   r   r   )rT   rY  r   r   r   rr     s    	zBaseEventLoop.set_debug)GrW   ra   rb   rU   rX   rA   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   r\   r   r   ZPY34r   r   rn   r   r   r   r   r   r   r   r   r   r   rC   r   r   r   r  r  r   r5   
AI_PASSIVEr&  r'  r)  r*  r,  r   r   r0  r2  r3  r5  r?  r   rA  rB  rC  r   r   r   rr   r   r   r   r   r
      s   !		%		!		u				_	,2c!)-rh   concurrent.futuresr   r   r   r  rK  rv   r   r   r   rn   r9  rs   r   r}   r-   r   r   r   r   r   r   rN  r	   __all__rD  rE  BrokenPipeErrorConnectionResetErrorConnectionAbortedErrorZ_FATAL_ERROR_IGNOREr   r   r%   r(   r*   r>   r'   rH   rO   ZAbstractServerrP   ZAbstractEventLoopr
   r   r   r   r   <module>   sJ   			=
/