
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    ma:t                     @   s  d dl mZmZ ddlZejeejkr2e	dd dl
mZ d dlmZmZmZ d dlmZ ddlZddlZddlZddlZddlZdd	d
dddddddddddddddddddddgZeD ]Zeeee e< qd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1Ze D ]\ZZeeee e< qee e!ej"e d2< d3Z#G d4d5 d5e$Z%e& Z'e( d6d7 Z)e( d8d9 Z*e( d:d; Z+e( d<d= Z,e( d>d? Z-d@dA Z.G dBdC dCZ/G dDdE dEZ0G dFdG dGe0Z1G dHdI dIe0Z2G dJdK dKe0Z3G dLdM dMe0Z4G dNdO dOe0Z5G dPdQ dQe0Z6G dRdS dSe0Z7G dTdU dUe0Z8G dVdW dWe0Z9G dXdY dYe0Z:G dZd[ d[e0Z;G d\d] d]e0Z<G d^d_ d_e0Z=G d`da dae0Z>G dbdc dce0Z?G ddde dee0Z@G dfdg dge0ZAeeBeC  d5dCdhdig ZD[[dS )j   )ffilib    NzCould not initialize c-ares)errno)ascii_bytes	maybe_str
parse_name)__version__ZARES_FLAG_USEVCZARES_FLAG_PRIMARYZARES_FLAG_IGNTCZARES_FLAG_NORECURSEZARES_FLAG_STAYOPENZARES_FLAG_NOSEARCHZARES_FLAG_NOALIASESZARES_FLAG_NOCHECKRESPZARES_NI_NOFQDNZARES_NI_NUMERICHOSTZARES_NI_NAMEREQDZARES_NI_NUMERICSERVZARES_NI_DGRAMZARES_NI_TCPZARES_NI_UDPZARES_NI_SCTPZARES_NI_DCCPZARES_NI_NUMERICSCOPEZARES_NI_LOOKUPHOSTZARES_NI_LOOKUPSERVICEZARES_NI_IDNZARES_NI_IDN_ALLOW_UNASSIGNEDZ ARES_NI_IDN_USE_STD3_ASCII_RULESZARES_SOCKET_BADT_AT_AAAAT_ANYT_CAAT_CNAMET_MXT_NAPTRT_NST_PTRT_SOAT_SRVT_TXTC_INC_CHAOSC_HSC_NONEC_ANY)ZQUERY_TYPE_AZQUERY_TYPE_AAAAZQUERY_TYPE_ANYZQUERY_TYPE_CAAZQUERY_TYPE_CNAMEZQUERY_TYPE_MXZQUERY_TYPE_NAPTRZQUERY_TYPE_NSZQUERY_TYPE_PTRZQUERY_TYPE_SOAZQUERY_TYPE_SRVZQUERY_TYPE_TXTZQUERY_CLASS_INZQUERY_CLASS_CHAOSZQUERY_CLASS_HSZQUERY_CLASS_NONEZQUERY_CLASS_ANYZARES_VERSION   c                   @   s   e Zd ZdS )	AresErrorN)__name__
__module____qualname__ r    r    C/opt/alt/python38/lib64/python3.8/site-packages/pycares/__init__.pyr   X   s   r   c                 C   s   t | }|||| d S N)_ffifrom_handle)dataZ	socket_fdreadablewritablesock_state_cbr    r    r!   _sock_state_cb`   s    
r)   c                 C   s>   t | }t|  |tjkr$d }nt|}d }||| d S r"   )r#   r$   _global_setdiscard_libARES_SUCCESSares_host_result)argstatustimeoutshostentcallbackresultr    r    r!   _host_cbe   s    


r5   c                 C   s@   t | }t|  |tjkr$d }nt||}d }||| d S r"   )r#   r$   r*   r+   r,   r-   ares_nameinfo_result)r/   r0   r1   nodeservicer3   r4   r    r    r!   _nameinfo_cbr   s    



r9   c           
      C   s   t | \}}t|  |tjkr|tjkrg }tjtjtj	tj
tjtjtjtjtjtjtjfD ]Z}t|||\}	}|d tjtjfkrd } q|	d k	r`t|	tjjr||	 q`||	 q`d }qt|||\}}nd }||| d S r"   )r#   r$   r*   r+   r,   r-   r   r
   r   r   r   r   r   r   r   r   r   r   parse_resultZARES_ENODATAZARES_EBADRESP
isinstancecollectionsabcIterableextendappend)
r/   r0   r1   abufalenr3   
query_typer4   Zqtyperr    r    r!   	_query_cb   s$    


4rE   c                 C   s>   t | }t|  |tjkr$d }nt|}d }||| d S r"   )r#   r$   r*   r+   r,   r-   ares_addrinfo_result)r/   r0   r1   resr3   r4   r    r    r!   _addrinfo_cb   s    


rH   c                    s  | t jkrltdt tdt}t ||tj |}|t jkrJd }|}n fddt|d D }d }n>| t j	krtdt tdt}t 
||tj |}|t jkrd }|}n fddt|d D }d }n| t jkrXtd}t |||}|t jkrd }|}nBg }|d }|tjkrB|t| |j}qt |d  d }nR| t jkrtd	}	t |||	tjtj}|t jkrd }|}nt|	d }t |	d  d }n| t jkr<td
}
t |||
}|t jkrd }|}nBg }|
d }|tjkr&|t| |j}qt |
d  d }nn| t jkrtd}t |||}|t jkrvd }|}nBg }|d }|tjkr|t| |j}qt |d  d }n| t jkrJtd	}t |||}|t jkrd }|}nPg }|d }	d}|	j| tjkr8|t|	j|  |d7 }qt |	 d }n`| t jkrtd	}t ||tjdt j!|}|t jkrd }|}n`g }|d }	d}|	j| tjkr|t"t#|	j|  |d7 }qt$|	|}t |	 d }n| t j%krNtd}t &|||}|t jkr,d }|}nt'|d }t |d  d }n\| t j(krtd}t )|||}|t jkrd }|}nBg }|d }|tjkr|t*| |j}qt |d  d }n| t j+krtd}t ,|||}|t jkrd }|}ng }|d }d }|tjkr>|d k	r|t-| q|j.dkrl|d k	rb|t-| t/|}nt/|}| j0|j07  _0|j}qt |d  d }nt1d||fS )Nzstruct ares_addrttl[]zint*c                    s   g | ]}t  | qS r    )ares_query_a_result.0iZaddrttlsr    r!   
<listcomp>   s     z parse_result.<locals>.<listcomp>r   zstruct ares_addr6ttl[]c                    s   g | ]}t  | qS r    )ares_query_aaaa_resultrJ   rM   r    r!   rN      s     zstruct ares_caa_reply **zstruct hostent **zstruct ares_mx_reply **zstruct ares_naptr_reply **r   zstruct ares_soa_reply **zstruct ares_srv_reply **zstruct ares_txt_ext **invalid query type specified)2r,   r
   r#   newPYCARES_ADDRTTL_SIZEZares_parse_a_replyNULLr-   ranger   Zares_parse_aaaa_replyr   Zares_parse_caa_replyr@   ares_query_caa_resultnextZares_free_datar   ares_query_cname_resultZares_free_hostentr   Zares_parse_mx_replyares_query_mx_resultr   Zares_parse_naptr_replyares_query_naptr_resultr   Zares_parse_ns_reply	h_aliasesares_query_ns_resultr   Zares_parse_ptr_replysocketZ	AF_UNSPECr   stringares_query_ptr_resultr   Zares_parse_soa_replyares_query_soa_resultr   Zares_parse_srv_replyares_query_srv_resultr   Zares_parse_txt_reply_extares_query_txt_resultZrecord_startares_query_txt_result_chunktext
ValueError)rC   rA   rB   Z	naddrttlsZparse_statusr4   r0   Z	caa_replyZcaa_reply_ptrhostZmx_replyZmx_reply_ptrZnaptr_replyZnaptr_reply_ptrr2   rL   aliasesZ	soa_replyZ	srv_replyZsrv_reply_ptrZ	txt_replyZtxt_reply_ptrZtmp_objZ	new_chunkr    rM   r!   r:      s   























r:   c                   @   s   e Zd Zejejejejejej	ej
ejejejejejfZejejejejejfZd#ddZdd Zedd Zejd	d Zd
d Zdd Zd$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 Z%dd  Z&d!d" Z'dS ))ChannelNFc                 C   s>  t d}t d}d}|d k	r0||_|tjB }|d k	rPt|d |_|tjB }|d k	rh||_|tj	B }|d k	r||_
|tjB }|d k	r||_|tjB }|d k	r||_|tjB }|d k	r||_|tjB }|d k	r||_|tjB }|
rt|
stdt |
}|| _tj|_||_|tjB }|	r@t dt|	|_|tjB }|rdd |D }t d	t|d
  }t t|D ]}|| ||< qv||_!t||_"|tj#B }|r|tj$B }|d k	r|tj%B }t dt||_&t'|||}|tj(krt)dt *|dd | _+|r|| _,|r*| -| |r:| .| d S )Nzares_channel *zstruct ares_options *r   i  zsock_state_cb is not callablechar[]c                 S   s   g | ]}t d t|qS )rh   )r#   rQ   r   rJ   r    r    r!   rN     s     z$Channel.__init__.<locals>.<listcomp>z
char *[%d]r   z#Failed to initialize c-ares channelc                 S   s   t | d S Nr   )r,   Zares_destroy)xr    r    r!   <lambda>      z"Channel.__init__.<locals>.<lambda>)/r#   rQ   flagsr,   ZARES_OPT_FLAGSinttimeoutZARES_OPT_TIMEOUTMStriesZARES_OPT_TRIESndotsZARES_OPT_NDOTStcp_portZARES_OPT_TCP_PORTudp_portZARES_OPT_UDP_PORTsocket_send_buffer_sizeZARES_OPT_SOCK_SNDBUFsocket_receive_buffer_sizeZARES_OPT_SOCK_RCVBUFcallable	TypeError
new_handleZ_sock_state_cb_handler)   r(   Zsock_state_cb_dataZARES_OPT_SOCK_STATE_CBr   lookupsZARES_OPT_LOOKUPSlenrT   domainsZndomainsZARES_OPT_DOMAINSZARES_OPT_ROTATEZARES_OPT_RESOLVCONFresolvconf_pathZares_init_optionsr-   r   Zgc_channelserversset_local_ipset_local_dev)selfrm   ro   rp   rq   rr   rs   r~   r{   ry   r(   rt   ru   rotateZlocal_ipZ	local_devr|   ZchanneloptionsZoptmaskuserdataZstrscrL   rD   r    r    r!   __init__J  sz    


















zChannel.__init__c                 C   s   t | jd  d S ri   )r,   Zares_cancelr}   r   r    r    r!   cancel  s    zChannel.cancelc                 C   s   t d}t| jd |}|tjkr6t|t|g }t d|d }|t j	krVqt dtj
}|d }t j	t|jt |j|tj
kr|tt |tj
 |j}qJ|S )Nzstruct ares_addr_node **r   char [])r#   rQ   r,   Zares_get_serversr}   r-   r   r   strerrorrS   INET6_ADDRSTRLENares_inet_ntopfamily	addressofaddrr@   r   r]   rV   )r   r~   rD   Zserver_listserveripsr    r    r!   r~     s    


"zChannel.serversc              	   C   s   t dt| }t|D ]\}}ttjt|t 	|| j
jdkrVtj|| _n<ttjt|t 	|| j
jdkrtj|| _ntd|dkrt 	|| ||d  _qt| jd |}|tjkrt|t|d S )Nzstruct ares_addr_node[%d]r   invalid IP addressr   )r#   rQ   rz   	enumerater,   ares_inet_ptonr\   AF_INETr   r   r   addr4r   AF_INET6addr6rd   rV   Zares_set_serversr}   r-   r   r   r   )r   r~   r   rL   r   rD   r    r    r!   r~     s    &&
c                 C   sz   g }g }t dtj }t| jd |tj}ttjD ]8}t||rV|||  t	||r8|||  q8||fS )Nzares_socket_t [%d]r   )
r#   rQ   r,   ZARES_GETSOCK_MAXNUMZares_getsockr}   rT   ZARES_GETSOCK_READABLEr@   ZARES_GETSOCK_WRITABLE)r   ZrfdsZwfdsZsocksZbitmaskrL   r    r    r!   getsock  s    zChannel.getsockc                 C   s(   t | jd td|td| d S )Nr   Zares_socket_t)r,   Zares_process_fdr}   r#   cast)r   Zread_fdZwrite_fdr    r    r!   
process_fd  s    zChannel.process_fdc                 C   s   t j}t d}|d k	rZ|dkrRt d}tt||_tt|dd |_nt	dt
| jd || |t jkr|dS |j|jd  S )Nzstruct timeval*g        g      ?i@B z-timeout needs to be a positive number or Noner   g    .A)r#   rS   rQ   rn   mathfloorZtv_secfmodZtv_usecrd   r,   Zares_timeoutr}   )r   tZmaxtvZtvr    r    r!   ro     s    


zChannel.timeoutc                 C   s   t |stdtd}td}ttjt||dkrH|}tj}n,ttj	t||dkrl|}tj	}nt
dt|}t| t| jd |t|d |tj| d S )Na callable is requiredstruct in_addr*struct ares_in6_addr*r   r   r   )rv   rw   r#   rQ   r,   r   r\   r   r   r   rd   rx   r*   addZares_gethostbyaddrr}   sizeofr5   )r   r   r3   r   r   addressr   r   r    r    r!   gethostbyaddr   s    



zChannel.gethostbyaddrc                 C   sF   t |stdt|}t| t| jd t	||tj
| d S )Nr   r   )rv   rw   r#   rx   r*   r   r,   Zares_gethostbynamer}   r   r5   )r   namer   r3   r   r    r    r!   gethostbyname  s
    

zChannel.gethostbynamer   c                 C   s   t |std|d kr tj}n"t|tr:t|d}nt|}t	|}	t
|	 td}
||
_||
_||
_||
_t| jd t|||
tj|	 d S )Nr   asciizstruct ares_addrinfo_hints*r   )rv   rw   r#   rS   r;   rn   strencoder   rx   r*   r   rQ   ai_flags	ai_familyai_socktypeai_protocolr,   Zares_getaddrinfor}   r   rH   )r   re   portr3   r   typeprotorm   r8   r   Zhintsr    r    r!   getaddrinfo  s    



zChannel.getaddrinfoc                 C   s   | j tj||||d d S N)query_class)	_do_queryr,   Z
ares_queryr   r   rC   r3   r   r    r    r!   query0  s    zChannel.queryc                 C   s   | j tj||||d d S r   )r   r,   Zares_searchr   r    r    r!   search3  s    zChannel.searchc                 C   s|   t |std|| jkr"td|d kr0tj}|| jkrBtdt||f}t	
| || jd t|||tj| d S )Nr   rP   zinvalid query class specifiedr   )rv   rw   
__qtypes__rd   r,   r   __qclasses__r#   rx   r*   r   r}   r   rE   )r   funcr   rC   r3   r   r   r    r    r!   r   6  s    


zChannel._do_queryc                 C   s   t d}t d}ttjt||dkrHt| jd t	|j
 n4ttjt||dkrtt| jd | ntdd S )Nr   r   r   r   r   )r#   rQ   r,   r   r\   r   r   Zares_set_local_ip4r}   ZntohlZs_addrr   Zares_set_local_ip6rd   )r   r   r   r   r    r    r!   r   G  s    

zChannel.set_local_ipc                 C   s<  t |stdt|dkrt|\}}td}ttjt	|t
|jdkrZtd| tj|_t||_|}nt|dkr|\}}}}	td}
ttjt	|t
|
jdkrtd| tj|
_t||
_t||
_|	|
_|
}ntd	t|}t| t| jd
 td|t|d
 |tj| d S )Nr      struct sockaddr_in*r   zInvalid IPv4 address %r   struct sockaddr_in6*zInvalid IPv6 address %rzInvalid address argumentr   zstruct sockaddr*)rv   rw   rz   r#   rQ   r,   r   r\   r   r   r   sin_addrrd   
sin_familyZhtonssin_portr   	sin6_addrsin6_family	sin6_portZhtonlsin6_flowinfosin6_scope_idrx   r*   r   Zares_getnameinfor}   r   r   r9   )r   r   rm   r3   r   r   Zsa4ZsaZflowinfoZscope_idZsa6r   r    r    r!   getnameinfoQ  s0    
 
 

zChannel.getnameinfoc                 C   s   t | jd | d S ri   )r,   Zares_set_local_devr}   )r   devr    r    r!   r   n  s    zChannel.set_local_dev)NNNNNNNNNNNNFNNN)N)r   r   r   r   )N)N)N)(r   r   r   r,   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   propertyr~   setterr   r   ro   r   r   r   r   r   r   r   r   r   r    r    r    r!   rg   F  sH   4                
g







rg   c                   @   s   e Zd ZdZdd ZdS )
AresResultr    c                    s*    fdd j D }d jjd|f S )Nc                    s   g | ]}d |t  |f qS )z%s=%s)getattr)rK   ar   r    r!   rN   v  s     z'AresResult.__repr__.<locals>.<listcomp>z<%s> %sz, )	__slots__	__class__r   join)r   Zattrsr    r   r!   __repr__u  s    zAresResult.__repr__N)r   r   r   r   r   r    r    r    r!   r   r  s   r   c                   @   s   e Zd ZdZdZdd ZdS )rI   re   ttlAc                 C   sJ   t dtj}ttjt |j|tj t	t 
|tj| _|j| _d S Nrh   )r#   rQ   r,   r   r   r\   r   r   Zipaddrr   r]   re   r   r   Zares_addrttlbufr    r    r!   r     s    zares_query_a_result.__init__Nr   r   r   r   r   r   r    r    r    r!   rI   }  s   rI   c                   @   s   e Zd ZdZdZdd ZdS )rO   r   ZAAAAc                 C   sJ   t dtj}ttjt |j|tj t	t 
|tj| _|j| _d S r   )r#   rQ   r,   r   r   r\   r   r   Zip6addrr   r]   re   r   r   r    r    r!   r     s    zares_query_aaaa_result.__init__Nr   r    r    r    r!   rO     s   rO   c                   @   s   e Zd ZdZdZdd ZdS )rU   )criticalr   valuer   ZCAAc                 C   s>   |j | _ tt|j|j| _tt|j|j| _d| _d S N)	r   r   r#   r]   r   Zplengthr   Zlengthr   )r   Zcaar    r    r!   r     s    zares_query_caa_result.__init__Nr   r    r    r    r!   rU     s   rU   c                   @   s   e Zd ZdZdZdd ZdS )rW   )cnamer   ZCNAMEc                 C   s   t t|j| _d| _d S r   )r   r#   r]   h_namer   r   )r   re   r    r    r!   r     s    z ares_query_cname_result.__init__Nr   r    r    r    r!   rW     s   rW   c                   @   s   e Zd ZdZdZdd ZdS )rX   )re   priorityr   ZMXc                 C   s$   t t|j| _|j| _d| _d S r   )r   r#   r]   re   r   r   )r   Zmxr    r    r!   r     s    zares_query_mx_result.__init__Nr   r    r    r    r!   rX     s   rX   c                   @   s   e Zd ZdZdZdd ZdS )rY   )order
preferencerm   r8   regexreplacementr   ZNAPTRc                 C   sb   |j | _ |j| _tt|j| _tt|j| _tt|j| _tt|j	| _	d| _
d S r   )r   r   r   r#   r]   rm   r8   Zregexpr   r   r   )r   Znaptrr    r    r!   r     s    z ares_query_naptr_result.__init__Nr   r    r    r    r!   rY     s   rY   c                   @   s   e Zd ZdZdZdd ZdS )r[   r   ZNSc                 C   s   t t|| _d| _d S r   )r   r#   r]   re   r   )r   nsr    r    r!   r     s    zares_query_ns_result.__init__Nr   r    r    r    r!   r[     s   r[   c                   @   s   e Zd ZdZdZdd ZdS )r^   )r   r   rf   ZPTRc                 C   s"   t t|j| _|| _d| _d S r   )r   r#   r]   r   r   rf   r   )r   r2   rf   r    r    r!   r     s    zares_query_ptr_result.__init__Nr   r    r    r    r!   r^     s   r^   c                   @   s   e Zd ZdZdZdd ZdS )r_   )nsname
hostmasterserialrefreshretryexpiresminttlr   ZSOAc                 C   sV   t t|j| _t t|j| _|j| _|j| _|j| _|j| _	|j
| _
d| _d S r   )r   r#   r]   r   r   r   r   r   Zexpirer   r   r   )r   Zsoar    r    r!   r     s    zares_query_soa_result.__init__Nr   r    r    r    r!   r_     s   r_   c                   @   s   e Zd ZdZdZdd ZdS )r`   )re   r   r   weightr   ZSRVc                 C   s4   t t|j| _|j| _|j| _|j| _d| _d S r   )r   r#   r]   re   r   r   r   r   )r   Zsrvr    r    r!   r     s
    zares_query_srv_result.__init__Nr   r    r    r    r!   r`     s   r`   c                   @   s   e Zd ZdZdZdd ZdS )ra   rc   r   TXTc                 C   s   t |j| _d| _d S r   )r   rc   r   )r   Z	txt_chunkr    r    r!   r     s    zares_query_txt_result.__init__Nr   r    r    r    r!   ra     s   ra   c                   @   s   e Zd ZdZdZdd ZdS )rb   r   r   c                 C   s   t |j| _d| _d S r   )r#   r]   txtrc   r   )r   r   r    r    r!   r     s    z$ares_query_txt_result_chunk.__init__Nr   r    r    r    r!   rb     s   rb   c                   @   s   e Zd ZdZdd ZdS )r.   )r   rf   	addressesc                 C   s   t t|j| _g | _g | _d}|j| tjkrX| j	t t|j|  |d7 }q"d}|j
| tjkrtdtj}tjt|j|j
| |tjkr| j	t t|tj |d7 }q\d S )Nr   r   rh   )r   r#   r]   r   r   rf   r   rZ   rS   r@   Zh_addr_listrQ   r,   r   r   Z
h_addrtype)r   r2   rL   r   r    r    r!   r     s    
 zares_host_result.__init__Nr   r   r   r   r   r    r    r    r!   r.     s   r.   c                   @   s   e Zd ZdZdd ZdS )r6   )r7   r8   c                 C   s2   t t|| _|tjkr(t t|nd | _d S r"   )r   r#   r]   r7   rS   r8   )r   r7   r8   r    r    r!   r     s    zares_nameinfo_result.__init__Nr   r    r    r    r!   r6     s   r6   c                   @   s   e Zd ZdZdd ZdS )ares_addrinfo_node_result)r   rm   r   socktypeprotocolr   c                 C   s  |j | _|j| _|j| _|j| _|j}|j	|j
ks6ttdtj}|j	tjkrtj| _td|}tjt|jt|j|tjkrt|tjt|jf| _nt|j	tjkrtj| _td|}tjt|jt|j|tjkrt|tjt|j |j!|j"f| _nt#dd S )Nr   r   r   zinvalid sockaddr family)$Zai_ttlr   r   rm   r   r   r   r   Zai_addrZ	sa_familyr   AssertionErrorr#   rQ   r,   r   r\   r   r   r   rS   r   r   r   r   r]   Zntohsr   r   r   r   r   r   r   r   rd   )r   Z	ares_noder   r   r   r    r    r!   r   !  s$    "$&z"ares_addrinfo_node_result.__init__Nr   r    r    r    r!   r     s   r   c                   @   s   e Zd ZdZdd ZdS )ares_addrinfo_cname_result)r   aliasr   c                 C   s0   |j | _ tt|j| _tt|j| _d S r"   )r   r   r#   r]   r   r   )r   Z
ares_cnamer    r    r!   r   =  s    z#ares_addrinfo_cname_result.__init__Nr   r    r    r    r!   r   :  s   r   c                   @   s   e Zd ZdZdd ZdS )rF   )cnamesnodesc                 C   sj   g | _ g | _|j }|tjkr4| j t| |j}q|j}|tjkr\| jt| |j}q:t	
| d S r"   )r   r   r#   rS   r@   r   rV   r   Zai_nextr,   Zares_freeaddrinfo)r   Zares_addrinfoZ	cname_ptrZnode_ptrr    r    r!   r   F  s    

zares_addrinfo_result.__init__Nr   r    r    r    r!   rF   C  s   rF   r   r	   )EZ_caresr   r#   r   r,   Z_cffi_backendr-   Zares_library_initZARES_LIB_INIT_ALLRuntimeError r   Zutilsr   r   r   Z_versionr	   collections.abcr<   r\   r   	functoolssysZexported_pycares_symbolsZsymbolr   globalsZexported_pycares_symbols_mapitemskvr]   Zares_versionrS   rR   	Exceptionr   setr*   Z
def_externr)   r5   r9   rE   rH   r:   rg   r   rI   rO   rU   rW   rX   rY   r[   r^   r_   r`   ra   rb   r.   r6   r   r   rF   listkeys__all__r    r    r    r!   <module>   s    




    .	
	
		