§
    ¯õilG  ã                  ó¾  — U 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lZd dlm	Z	m
Z
mZmZmZ d dlZd dlZd dlmZmZ e	r&d dlZd dlmZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZ ej        ej         z  Z!d
e"d<   d*d„Z#d+d„Z$d+d„Z%d,d„Z&d-d„Z'ej(         G d„ d¦  «        ¦   «         Z)ej(         G d„ d¦  «        ¦   «         Z*ej(         G d„ d ¦  «        ¦   «         Z+ej(         G d!„ d"ej,        j-        ¦  «        ¦   «         Z.ej(         G d#„ d$ej,        j/        ¦  «        ¦   «         Z0e G d%„ d&¦  «        ¦   «         Z1e G d'„ d(ej        j2        e¬)¦  «        ¦   «         Z3dS ).é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚNoReturnÚ	TypeAliasÚoverload)ÚNoPublicConstructorÚfinal)ÚIterable)ÚAddressFamilyÚ
SocketKind)ÚTracebackType)ÚBufferÚSelf)ÚAddressFormatr   Ú	IPAddressÚipÚreturnÚintc                óÌ   — t          | t          j        ¦  «        rt          j        j        S t          | t          j        ¦  «        rt          j        j        S t          d¦  «        ‚)Nz!Unhandled IPAddress instance type)	Ú
isinstanceÚ	ipaddressÚIPv4AddressÚtrioÚsocketÚAF_INETÚIPv6AddressÚAF_INET6ÚNotImplementedError)r   s    úb/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/trio/testing/_fake_net.pyÚ_family_forr!   %   sQ   € Ý�"•iÔ+Ñ,Ô,ð $ÝŒ{Ô"Ð"Ý	�B�	Ô-Ñ	.Ô	.ð $ÝŒ{Ô#Ð#Ý
ÐAÑ
BÔ
BÐBó    Úfamilyc                óÄ   — | t           j        j        k    rt          j        d¦  «        S | t           j        j        k    rt          j        d¦  «        S t          d¦  «        ‚)Nú0.0.0.0ú::úUnhandled ip address family©r   r   r   r   Ú
ip_addressr   r   ©r#   s    r    Ú_wildcard_ip_forr+   -   sS   € Ø•”Ô$Ò$Ð$ÝÔ# IÑ.Ô.Ð.Ø	•4”;Ô'Ò	'Ð	'ÝÔ# DÑ)Ô)Ð)Ý
Ð;Ñ
<Ô
<Ð<r"   c                óÄ   — | t           j        j        k    rt          j        d¦  «        S | t           j        j        k    rt          j        d¦  «        S t          d¦  «        ‚)Nú	127.0.0.1ú::1r'   r(   r*   s    r    Ú_localhost_ip_forr/   6   sS   € Ø•”Ô$Ò$Ð$ÝÔ# KÑ0Ô0Ð0Ø	•4”;Ô'Ò	'Ð	'ÝÔ# EÑ*Ô*Ð*Ý
Ð;Ñ
<Ô
<Ð<r"   Úcoder   c                óF   — t          | t          j        | ¦  «        ¦  «        ‚©N)ÚOSErrorÚosÚstrerror)r0   s    r    Ú	_fake_errr6   >   s   € Ý
�$�œ DÑ)Ô)Ñ
*Ô
*Ð*r"   ÚdataÚbytesÚbuffersúIterable[Buffer]c                ó  — d}|D ]ƒ}| ||t          |¦  «        j        z   …         }t          |¦  «        5 }||d t          |¦  «        …<   d d d ¦  «         n# 1 swxY w Y   |t          |¦  «        z  }|t          | ¦  «        k    r nŒ„|S )Nr   )Ú
memoryviewÚnbytesÚlen)r7   r9   ÚwrittenÚbufÚ
next_pieceÚmbufs         r    Ú_scatterrC   B   s×   € Ø€GØð ð ˆØ˜' G­j¸©o¬oÔ.DÑ$DÐDÔEˆ
Ý˜‰_Œ_ð 	1 Ø&0ˆDÐ"•3�z‘?”?Ð"Ñ#ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à•3�z‘?”?Ñ"ˆØ•c˜$‘i”iÒÐØˆEð  à€Ns   µAÁA	ÁA	c                  óD   — e Zd ZU ded<   ded<   dd„Zedd	„¦   «         Zd
S )ÚUDPEndpointr   r   r   Úportr   ú+tuple[str, int] | tuple[str, int, int, int]c                ót   — | j         j        | j        f}t          | j         t          j        ¦  «        r|dz  }|S )N©r   r   )r   Ú
compressedrF   r   r   r   )ÚselfÚsockaddrs     r    Úas_python_sockaddrzUDPEndpoint.as_python_sockaddrS   s?   € àŒGÔØŒIðA
ˆõ �d”g�yÔ4Ñ5Ô5ð 	Ø˜ÑˆHØˆr"   rL   c                óZ   — |d d…         \  }} | t          j        |¦  «        |¬¦  «        S )Né   )r   rF   )r   r)   )ÚclsrL   r   rF   s       r    Úfrom_python_sockaddrz UDPEndpoint.from_python_sockaddr\   s5   € ð
 ˜B˜Q˜B”<‰ˆˆDØˆs•iÔ*¨2Ñ.Ô.°TÐ:Ñ:Ô:Ð:r"   N©r   rG   )rL   rG   r   rE   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rM   ÚclassmethodrQ   © r"   r    rE   rE   N   s\   € € € € € € à€M€M�MØ€I€I�Iðð ð ð ð ð;ð ;ð ;ñ „[ð;ð ;ð ;r"   rE   c                  ó   — e Zd ZU ded<   dS )Ú
UDPBindingrE   ÚlocalN)rS   rT   rU   rV   rX   r"   r    rZ   rZ   e   s   € € € € € € àÐÐÑÐÐr"   rZ   c                  óZ   — e Zd ZU ded<   ded<    ej        d„ ¬¦  «        Zded<   dd	„Zd
S )Ú	UDPPacketrE   ÚsourceÚdestinationc                ó*   — |                       ¦   «         S r2   )Úhex)Úps    r    ú<lambda>zUDPPacket.<lambda>o   s   € °·²±´€ r"   )Úreprr8   Úpayloadr   c                ó:   — t          | j        | j        |¬¦  «        S )N©r^   r_   re   )r]   r_   r^   )rK   re   s     r    ÚreplyzUDPPacket.replyr   s'   € ÝØÔ#ØœØð
ñ 
ô 
ð 	
r"   N)re   r8   r   r]   )rS   rT   rU   rV   ÚattrsÚfieldre   rh   rX   r"   r    r]   r]   k   sf   € € € € € € àÐÐÑØÐÐÑØ �U”[Ð&7Ð&7Ð8Ñ8Ô8€GÐ8Ð8Ð8Ñ8ð
ð 
ð 
ð 
ð 
ð 
r"   r]   c                  ó"   — e Zd ZU ded<   dd	„Zd
S )ÚFakeSocketFactoryÚFakeNetÚfake_netr#   r   Útype_Úprotor   Ú
FakeSocketc                óF   — t                                | j        |||¦  «        S r2   )rq   Ú_creatern   )rK   r#   ro   rp   s       r    r   zFakeSocketFactory.socket~   s   € Ý×!Ò! $¤-°¸ÀÑFÔFÐFr"   N)r#   r   ro   r   rp   r   r   rq   )rS   rT   rU   rV   r   rX   r"   r    rl   rl   z   s<   € € € € € € àÐÐÑðGð Gð Gð Gð Gð Gr"   rl   c                  ó4   — e Zd ZU ded<   	 	 	 	 ddd„Zdd„ZdS )ÚFakeHostnameResolverrm   rn   r   Úhostúbytes | NonerF   úbytes | str | int | Noner#   r   Útyperp   Úflagsr   úqlist[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c              ƒ  ó$   K  — t          d¦  «        ‚©NzFakeNet doesn't do fake DNS yet©r   )rK   rv   rF   r#   ry   rp   rz   s          r    Úgetaddrinfoz FakeHostnameResolver.getaddrinfo†   s   è è € õ" "Ð"CÑDÔDÐDr"   rL   rG   útuple[str, str]c              ƒ  ó$   K  — t          d¦  «        ‚r}   r~   )rK   rL   rz   s      r    Úgetnameinfoz FakeHostnameResolver.getnameinfo™   s   è è € õ
 "Ð"CÑDÔDÐDr"   N)r   r   r   r   )rv   rw   rF   rx   r#   r   ry   r   rp   r   rz   r   r   r{   )rL   rG   rz   r   r   r€   )rS   rT   rU   rV   r   r‚   rX   r"   r    ru   ru   ‚   sh   € € € € € € àÐÐÑð ØØØðEð Eð Eð Eð Eð&Eð Eð Eð Eð Eð Er"   ru   c                  ó6   — e Zd Zdd„Zdd„Zdd	„Zdd„Zdd„ZdS )rm   r   ÚNonec                ó  — t          j        d¦  «                             ¦   «         | _        t          j        d¦  «                             ¦   «         | _        t          t          dd¦  «        ¦  «        | _        i | _	        d | _
        d S )Nz	1.0.0.0/8z1::/16iPÃ  iÿÿ  )r   ÚIPv4NetworkÚhostsÚ_auto_ipv4_iterÚIPv6NetworkÚ_auto_ipv6_iterÚiterÚrangeÚ_auto_port_iterÚ_boundÚroute_packet©rK   s    r    Ú__init__zFakeNet.__init__£   so   € å(Ô4°[ÑAÔA×GÒGÑIÔIˆÔÝ(Ô4°XÑ>Ô>×DÒDÑFÔFˆÔÝ#¥E¨%°Ñ$7Ô$7Ñ8Ô8ˆÔà46ˆŒà ˆÔÐÐr"   ÚbindingrZ   r   rq   c                ó^   — || j         v rt          t          j        ¦  «         || j         |<   d S r2   )rŽ   r6   ÚerrnoÚ
EADDRINUSE)rK   r’   r   s      r    Ú_bindzFakeNet._bind­   s2   € Ø�d”kÐ!Ð!Ý•eÔ&Ñ'Ô'Ð'Ø%ˆŒ�GÑÐÐr"   c                ó¶   — t           j                             t          | ¦  «        ¦  «         t           j                             t          | ¦  «        ¦  «         d S r2   )r   r   Úset_custom_socket_factoryrl   Úset_custom_hostname_resolverru   r�   s    r    ÚenablezFakeNet.enable²   sF   € ÝŒ×-Ò-Õ.?ÀÑ.EÔ.EÑFÔFÐFÝŒ×0Ò0Õ1EÀdÑ1KÔ1KÑLÔLÐLÐLÐLr"   Úpacketr]   c                ól   — | j         €|                      |¦  «         d S |                       |¦  «         d S r2   )r�   Údeliver_packet©rK   r›   s     r    Úsend_packetzFakeNet.send_packet¶   s?   € ØÔÐ$Ø×Ò Ñ'Ô'Ð'Ð'Ð'à×Ò˜fÑ%Ô%Ð%Ð%Ð%r"   c                ó†   — t          |j        ¬¦  «        }|| j        v r"| j        |                              |¦  «         d S d S )N©r[   )rZ   r_   rŽ   Ú_deliver_packet)rK   r›   r’   s      r    r�   zFakeNet.deliver_packet¼   sJ   € Ý 6Ô#5Ð6Ñ6Ô6ˆØ�d”kÐ!Ð!ØŒK˜Ô ×0Ò0°Ñ8Ô8Ð8Ð8Ð8ð ˆDr"   N©r   r„   )r’   rZ   r   rq   r   r„   ©r›   r]   r   r„   )rS   rT   rU   r‘   r–   rš   rŸ   r�   rX   r"   r    rm   rm   ¡   s|   € € € € € ð!ð !ð !ð !ð&ð &ð &ð &ð
Mð Mð Mð Mð&ð &ð &ð &ðð ð ð ð ð r"   rm   c                  óî  — e Zd Zdjd„Zedkd„¦   «         Zedld„¦   «         Zedmd„¦   «         Zdnd„Zdnd„Z	dod„Z
dpd„Zdqd„Zdrd„Z	 	 	 dsdtd(„Zej        d)k    ses eej        d*¦  «        reZ	 	 dudvd-„Zej        d)k    ses eej        d*¦  «        reZdwd/„Zdwd0„Zedxd3„¦   «         Zedyd6„¦   «         Z	 dzd{d9„Zed|d<„¦   «         Zed}d>„¦   «         Z	 dzd~d@„ZddB„Zd€dI„Zd�d‚dL„ZedƒdP„¦   «         Zed„dS„¦   «         Zd…dV„Zd�d†dX„Z dud‡d[„Z!	 d�dˆd]„Z"	 	 dud‰d_„Z#	 	 dudŠda„Z$ej        d)k    ses eej        d*¦  «        re$Z%dmdb„Z&dmdc„Z'd‹dd„Z(dŒdf„Z)ej        d)k    ses eej        dg¦  «        rd�di„Z*d!S d!S d!S )Žrq   rn   rm   r#   r   ry   r   rp   r   r   r„   c                óÒ  — || _         |st          j        j        }|st          j        j        }|t          j        j        t          j        j        fvrt          d|› �¦  «        ‚|t          j        j        k    rt          d|› �¦  «        ‚|| _        || _	        || _
        d| _        t          j        t                   t          d¦  «        ¦  «        \  | _        | _        d | _        d S )Nz%FakeNet doesn't (yet) support family=z#FakeNet doesn't (yet) support type=FÚinf)Ú	_fake_netr   r   r   ÚSOCK_STREAMr   r   Ú
SOCK_DGRAMÚ_familyÚ_typeÚ_protoÚ_closedÚopen_memory_channelr]   ÚfloatÚ_packet_senderÚ_packet_receiverÚ_binding)rK   rn   r#   ry   rp   s        r    r‘   zFakeSocket.__init__Ç   sÞ   € ð "ˆŒàð 	)Ý”[Ô(ˆFØð 	+Ý”;Ô*ˆDà�$œ+Ô-­t¬{Ô/CÐDÐDÐDÝ%Ð&VÈfÐ&VÐ&VÑWÔWÐWØ•4”;Ô)Ò)Ð)Ý%Ð&RÈDÐ&RÐ&RÑSÔSÐSàˆŒØˆŒ
ØˆŒàˆŒå59Ô5MÝô6
å
�‰,Œ,ñ6ô 6Ñ2ˆÔ˜TÔ2ð
 ,0ˆŒˆˆr"   c                ó   — | j         S r2   )r¬   r�   s    r    ry   zFakeSocket.typeç   s
   € àŒzÐr"   c                ó   — | j         S r2   )r«   r�   s    r    r#   zFakeSocket.familyë   s
   € àŒ|Ðr"   c                ó   — | j         S r2   )r­   r�   s    r    rp   zFakeSocket.protoï   s
   € àŒ{Ðr"   c                óJ   — | j         rt          t          j        ¦  «         d S d S r2   )r®   r6   r”   ÚEBADFr�   s    r    Ú_check_closedzFakeSocket._check_closedó   s,   € ØŒ<ð 	#Ý•e”kÑ"Ô"Ð"Ð"Ð"ð	#ð 	#r"   c                óŠ   — | j         rd S d| _         | j        �| j        j        | j        = | j                             ¦   «          d S )NT)r®   r³   r¨   rŽ   r²   Úcloser�   s    r    r»   zFakeSocket.close÷   sJ   € ØŒ<ð 	ØˆFØˆŒØŒ=Ð$Ø”Ô% d¤mÐ4ØÔ×#Ò#Ñ%Ô%Ð%Ð%Ð%r"   ÚaddressÚobjectr[   Úboolútuple[str, int]c             ƒ  óz   K  — t           j                             | j        | j        | j        |d|¬¦  «        ƒ d {V —†S )NF)r¼   Úipv6_v6onlyr[   )r   Ú_socketÚ_resolve_address_nocpry   r#   rp   )rK   r¼   r[   s      r    rÃ   z FakeSocket._resolve_address_nocpÿ   s]   è è € õ ”\×7Ò7ØŒIØŒKØŒJØØØð 8ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r"   r›   r]   c                ó¨   — t          j        t          j        ¦  «        5  | j                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r2   )Ú
contextlibÚsuppressr   ÚBrokenResourceErrorr±   Úsend_nowaitrž   s     r    r¢   zFakeSocket._deliver_packet  s‘   € åÔ ¥Ô!9Ñ:Ô:ð 	4ð 	4ØÔ×+Ò+¨FÑ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   ŸAÁAÁAÚaddrc              ƒ  óæ  K  — |                       ¦   «          | j        �t          t          j        ¦  «         t
          j                             ¦   «         ƒ d {V —† |                      |d¬¦  «        ƒ d {V —†^}}}|g k    s
J d¦   «         ‚t          j
        |¦  «        }t          |¦  «        | j        k    sJ ‚|t          j
        d¦  «        k    rt          j
        d¦  «        }n,|t          j
        d¦  «        k    rt          j
        d¦  «        }|dk    rt          | j        j        ¦  «        }t!          t#          ||¦  «        ¬¦  «        }| j                             || ¦  «         || _        d S )	NTr¡   zTODO: handle other values?r%   r-   r&   r.   r   )r¹   r³   r6   r”   ÚEINVALr   ÚlowlevelÚ
checkpointrÃ   r   r)   r!   r#   Únextr¨   r�   rZ   rE   r–   )rK   rÉ   Úip_strrF   Ú_r   r’   s          r    ÚbindzFakeSocket.bind  sj  è è € Ø×ÒÑÔÐØŒ=Ð$Ý•e”lÑ#Ô#Ð#ÝŒm×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø!%×!;Ò!;¸DÈÐ!;Ñ!MÔ!MÐMÐMÐMÐMÐMÐMÐˆ��qØ�BŠwˆwˆwÐ4‰wŒwˆwåÔ! &Ñ)Ô)ˆÝ˜2‰Œ $¤+Ò-Ð-Ð-Ð-à•Ô% iÑ0Ô0Ò0Ð0ÝÔ% kÑ2Ô2ˆBˆBØ•9Ô'¨Ñ-Ô-Ò-Ð-ÝÔ% eÑ,Ô,ˆBØ�1Š9ˆ9Ý˜œÔ6Ñ7Ô7ˆDÝ¥;¨r°4Ñ#8Ô#8Ð9Ñ9Ô9ˆØŒ×Ò˜W dÑ+Ô+Ð+ØˆŒˆˆr"   Úpeerr   c              ƒ  ó$   K  — t          d¦  «        ‚)Nz0FakeNet does not (yet) support connected socketsr~   )rK   rÒ   s     r    ÚconnectzFakeSocket.connect,  s   è è € Ý!Ð"TÑUÔUÐUr"   rX   r   Nr9   r:   Úancdataú!Iterable[tuple[int, int, Buffer]]rz   úAddressFormat | Nonec              ƒ  ó¤  K  — |                       ¦   «          t          j                             ¦   «         ƒ d {V —† |�|                      |d¬¦  «        ƒ d {V —†}|rt          d¦  «        ‚|rt          d|› �¦  «        ‚|€t          t          j        ¦  «         t           
                    |¦  «        }| j        €4|                      t          | j        ¦  «        j        df¦  «        ƒ d {V —† d                     |¦  «        }| j        €J ‚t#          | j        j        ||¬¦  «        }| j                             |¦  «         t+          |¦  «        S )NFr¡   ú&FakeNet doesn't support ancillary dataz"FakeNet send flags must be 0, not r   r"   rg   )r¹   r   rÌ   rÍ   rÃ   r   r6   r”   ÚENOTCONNrE   rQ   r³   rÑ   r+   r#   rJ   Újoinr]   r[   r¨   rŸ   r>   )rK   r9   rÕ   rz   r¼   r_   re   r›   s           r    Ú_sendmsgzFakeSocket._sendmsg/  st  è è € ð 	×ÒÑÔÐåŒm×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(àÐØ ×6Ò6°wÀeÐ6ÑLÔLÐLÐLÐLÐLÐLÐLˆGØð 	PÝ%Ð&NÑOÔOÐOØð 	TÝ%Ð&RÈ5Ð&RÐ&RÑSÔSÐSàˆ?Ý•e”nÑ%Ô%Ð%å!×6Ò6°wÑ?Ô?ˆàŒ=Ð Ø—)’)Õ-¨d¬kÑ:Ô:ÔEÀqÐIÑJÔJÐJÐJÐJÐJÐJÐJÐJà—(’(˜7Ñ#Ô#ˆàŒ}Ð(Ð(Ð(ÝØ”=Ô&Ø#Øð
ñ 
ô 
ˆð 	Œ×"Ò" 6Ñ*Ô*Ð*å�7‰|Œ|Ðr"   Úwin32ÚsendmsgÚ
ancbufsizeúZtuple[int, list[tuple[int, int, bytes]], int, tuple[str, int] | tuple[str, int, int, int]]c              ƒ  ó´  K  — |dk    rt          d¦  «        ‚|dk    rt          d¦  «        ‚| j        €t          d¦  «        ‚|                      ¦   «          g }d}| j                             ¦   «         ƒ d {V —†}|j                             ¦   «         }t          |j        |¦  «        }|t          |j        ¦  «        k     r|t          j        j        z  }||||fS )Nr   rÙ   z&FakeNet doesn't support any recv flagszªThe code will most likely hang if you try to receive on a fakesocket without a binding. If that is not the case, or you explicitly want to test that, remove this warning.)r   r³   r¹   r²   Úreceiver^   rM   rC   re   r>   r   r   Ú	MSG_TRUNC)	rK   r9   rß   rz   rÕ   Ú	msg_flagsr›   r¼   r?   s	            r    Ú_recvmsg_intozFakeSocket._recvmsg_into[  sô   è è € ð ˜Š?ˆ?Ý%Ð&NÑOÔOÐOØ�AŠ:ˆ:Ý%Ð&NÑOÔOÐOØŒ=Ð õ &ð2ñô ð ð 	×ÒÑÔÐà02ˆØˆ	àÔ,×4Ò4Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6ˆØ”-×2Ò2Ñ4Ô4ˆÝ˜6œ>¨7Ñ3Ô3ˆØ•S˜œÑ(Ô(Ò(Ð(Ø�œÔ.Ñ.ˆIØ˜ ¨GÐ3Ð3r"   rG   c                óè   — |                       ¦   «          | j        �| j        j                             ¦   «         S | j        t
          j        j        k    rdS | j        t
          j        j        k    sJ ‚dS )N)r%   r   )r&   r   )	r¹   r³   r[   rM   r#   r   r   r   r   r�   s    r    ÚgetsocknamezFakeSocket.getsocknameˆ  sg   € Ø×ÒÑÔÐØŒ=Ð$Ø”=Ô&×9Ò9Ñ;Ô;Ð;ØŒ[�DœKÔ/Ò/Ð/Ø!�>à”;¥$¤+Ô"6Ò6Ð6Ð6Ð6Ø�9r"   c                óR  — |                       ¦   «          | j        �rt          | j        d¦  «        s
J d¦   «         ‚| j        j        �Gt	          | j        j        t
          ¦  «        s
J d¦   «         ‚| j        j                             ¦   «         S t          t          j	        ¦  «         d S )NÚremotezGThis method seems to assume that self._binding has a remote UDPEndpointz,Self._binding.remote should be a UDPEndpoint)
r¹   r³   Úhasattrré   r   rE   rM   r6   r”   rÚ   r�   s    r    ÚgetpeernamezFakeSocket.getpeername“  sÍ   € Ø×ÒÑÔÐØŒ=Ð$ÝØ”Øñô ð Yð Yð YñYô Yð Yð Œ}Ô#Ð/Ý!Ø”MÔ(Ýñô ð Bð Bð BñBô Bð Bð ”}Ô+×>Ò>Ñ@Ô@Ð@Ý•%”.Ñ!Ô!Ð!Ð!Ð!r"   ÚlevelÚoptnamec               ó   — d S r2   rX   )rK   rì   rí   s      r    Ú
getsockoptzFakeSocket.getsockopt¢  s   € Ø>A¸cr"   Úbuflenr8   c               ó   — d S r2   rX   ©rK   rì   rí   rð   s       r    rï   zFakeSocket.getsockopt¥  s   € ØMPÈSr"   ú
int | Noneúint | bytesc               óV   — |                       ¦   «          t          d|› d|› d�¦  «        ‚)Nz%FakeNet doesn't implement getsockopt(ú, ú))r¹   r3   rò   s       r    rï   zFakeSocket.getsockopt¨  s8   € ð 	×ÒÑÔÐÝÐQ¸eÐQÐQÀwÐQÐQÐQÑRÔRÐRr"   Úvalueúint | Bufferc               ó   — d S r2   rX   )rK   rì   rí   rø   s       r    Ú
setsockoptzFakeSocket.setsockopt²  s   € ØTWÐTWr"   Úoptlenc               ó   — d S r2   rX   ©rK   rì   rí   rø   rü   s        r    rû   zFakeSocket.setsockoptµ  s	   € ð ˆsr"   úint | Buffer | Nonec               óÈ   — |                       ¦   «          ||ft          j        j        t          j        j        fk    r|st          d¦  «        ‚t          d|› d|› d�¦  «        ‚)Nz#FakeNet always has IPV6_V6ONLY=Truez%FakeNet doesn't implement setsockopt(rö   z, ...))r¹   r   r   ÚIPPROTO_IPV6ÚIPV6_V6ONLYr   r3   rþ   s        r    rû   zFakeSocket.setsockopt¿  sz   € ð 	×ÒÑÔÐà�7ÐÝŒKÔ$ÝŒKÔ#ð 
ò 
ð 
ð ð
õ &Ð&KÑLÔLÐLåÐV¸eÐVÐVÀwÐVÐVÐVÑWÔWÐWr"   r   c                ó   — | S r2   rX   r�   s    r    Ú	__enter__zFakeSocket.__enter__Õ  s   € Øˆr"   Úexc_typeú#builtins.type[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackúTracebackType | Nonec                ó.   — |                       ¦   «          d S r2   )r»   )rK   r  r  r	  s       r    Ú__exit__zFakeSocket.__exit__Ø  s   € ð 	�
Š
‰Œˆˆˆr"   r7   r   c              ƒ  ó@   K  — |                       ||d ¦  «        ƒ d {V —†S r2   )Úsendto)rK   r7   rz   s      r    ÚsendzFakeSocket.sendà  s.   è è € Ø—[’[  u¨dÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3r"   Ú_FakeSocket__dataÚ_FakeSocket__addressú!tuple[object, ...] | str | Bufferc              ƒ  ó
   K  — d S r2   rX   )rK   r  r  s      r    r  zFakeSocket.sendtoä  s   è è € ð
 ˆcr"   Ú_FakeSocket__flagsú(tuple[object, ...] | str | Buffer | Nonec              ƒ  ó
   K  — d S r2   rX   )rK   r  r  r  s       r    r  zFakeSocket.sendtoì  s   è è € ð ˆcr"   Úargsr   c              ‡  óÌ   K  — t          |¦  «        dk    r|\  }}d}n)t          |¦  «        dk    r|\  }}}nt          d¦  «        ‚|                      |gg ||¦  «        ƒ d {V —†S )NrO   r   é   zwrong number of arguments)r>   Ú	TypeErrorrÜ   )rK   r  r7   r¼   rz   s        r    r  zFakeSocket.sendtoô  s   è è € õ ˆt‰9Œ9˜Š>ˆ>Ø ‰MˆD�'ØˆEˆEÝ�‰YŒY˜!Š^ˆ^Ø#'Ñ ˆD�%˜˜åÐ7Ñ8Ô8Ð8Ø—]’] D 6¨2¨u°gÑ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r"   Úbufsizec              ƒ  óH   K  — |                       ||¦  «        ƒ d {V —†\  }}|S r2   )Úrecvfrom)rK   r  rz   r7   Ú_addresss        r    ÚrecvzFakeSocket.recv  s4   è è € Ø#Ÿ}š}¨W°eÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<‰ˆˆhØˆr"   r@   r=   c              ƒ  óJ   K  — |                       |||¦  «        ƒ d {V —†\  }}|S r2   )Úrecvfrom_into)rK   r@   r=   rz   Ú	got_bytesr  s         r    Ú	recv_intozFakeSocket.recv_into  s:   è è € Ø$(×$6Ò$6°s¸FÀEÑ$JÔ$JÐJÐJÐJÐJÐJÐJÑˆ	�8ØÐr"   útuple[bytes, AddressFormat]c              ƒ  óP   K  — |                       ||¦  «        ƒ d {V —†\  }}}}||fS r2   )Ú_recvmsg)rK   r  rz   r7   Ú_ancdataÚ
_msg_flagsr¼   s          r    r  zFakeSocket.recvfrom  s@   è è € ð
 59·M²MÀ'È5Ñ4QÔ4QÐ.QÐ.QÐ.QÐ.QÐ.QÐ.QÑ+ˆˆh˜
 GØ�Wˆ}Ðr"   útuple[int, AddressFormat]c              ƒ  ó®   K  — |dk    r'|t          |¦  «        j        k    rt          d¦  «        ‚|                      |gd|¦  «        ƒ d {V —†\  }}}}||fS )Nr   zpartial recvfrom_into)r<   r=   r   rå   )rK   r@   r=   rz   Ú
got_nbytesr'  r(  r¼   s           r    r!  zFakeSocket.recvfrom_into  s‡   è è € ð �QŠ;ˆ;˜6¥Z°¡_¤_Ô%;Ò;Ð;Ý%Ð&=Ñ>Ô>Ð>Ø:>×:LÒ:LØˆEØØñ;
ô ;
ð 5
ð 5
ð 5
ð 5
ð 5
ð 5
Ñ1ˆ
�H˜j¨'ð
 ˜7Ð"Ð"r"   ú>tuple[bytes, list[tuple[int, int, bytes]], int, AddressFormat]c              ƒ  ó    K  — t          |¦  «        }|                      |g||¦  «        ƒ d {V —†\  }}}}t          |d |…         ¦  «        |||fS r2   )Ú	bytearrayrå   r8   )	rK   r  rß   rz   r@   r+  rÕ   rä   r¼   s	            r    r&  zFakeSocket._recvmsg#  s~   è è € õ ˜Ñ Ô ˆØ8<×8JÒ8JØˆEØØñ9
ô 9
ð 3
ð 3
ð 3
ð 3
ð 3
ð 3
Ñ/ˆ
�G˜Y¨õ
 �c˜+˜:˜+Ô&Ñ'Ô'¨°)¸WÐEÐEr"   c                ó    — t          d¦  «        ‚)Nz&can't get fileno() for FakeNet socketsr~   r�   s    r    ÚfilenozFakeSocket.fileno6  s   € Ý!Ð"JÑKÔKÐKr"   c                ó    — t          d¦  «        ‚)Nzcan't detach() a FakeNet socketr~   r�   s    r    ÚdetachzFakeSocket.detach9  s   € Ý!Ð"CÑDÔDÐDr"   c                ó   — dS )NFrX   r�   s    r    Úget_inheritablezFakeSocket.get_inheritable<  s   € Øˆur"   Úinheritablec                ó(   — |rt          d¦  «        ‚d S )Nz&FakeNet can't make inheritable socketsr~   )rK   r5  s     r    Úset_inheritablezFakeSocket.set_inheritable?  s&   € Øð 	PÝ%Ð&NÑOÔOÐOð	Pð 	Pr"   ÚshareÚ
process_idc                ó    — t          d¦  «        ‚)NzFakeNet can't share socketsr~   )rK   r9  s     r    r8  zFakeSocket.shareG  s   € Ý%Ð&CÑDÔDÐDr"   )
rn   rm   r#   r   ry   r   rp   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   )rX   r   N)
r9   r:   rÕ   rÖ   rz   r   r¼   r×   r   r   rI   )r9   r:   rß   r   rz   r   r   rà   rR   )rì   r   rí   r   r   r   )rì   r   rí   r   rð   r   r   r8   r2   )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   r„   )
rì   r   rí   r   rø   rÿ   rü   ró   r   r„   )r   r   )r  r  r  r  r	  r
  r   r„   )r   )r7   r   rz   r   r   r   )r  r   r  r  r   r   )r  r   r  r   r  r  r   r   )r  r   r   r   )r  r   rz   r   r   r8   )r@   r   r=   r   rz   r   r   r   )r  r   rz   r   r   r$  )r@   r   r=   r   rz   r   r   r)  )r  r   rß   r   rz   r   r   r,  )r   r¾   )r5  r¾   r   r„   )r9  r   r   r8   )+rS   rT   rU   r‘   Úpropertyry   r#   rp   r¹   r»   rÃ   r¢   rÑ   rÔ   rÜ   ÚsysÚplatformr   rê   r   rÞ   rå   Úrecvmsg_intorç   rë   r   rï   rû   r  r  r  r  r  r#  r  r!  r&  Úrecvmsgr0  r2  r4  r7  r8  rX   r"   r    rq   rq   Å   s—  € € € € € ð0ð 0ð 0ð 0ð@ ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð#ð #ð #ð #ð&ð &ð &ð &ð
ð 
ð 
ð 
ð4ð 4ð 4ð 4ð ð  ð  ð  ð*Vð Vð Vð Vð 68ØØ(,ð%ð %ð %ð %ð %ðN „|�wÒÐØð Ø%˜g f¤m°YÑ?Ô?ð ð ˆð
 Øð	"4ð "4ð "4ð "4ð "4ðH „|�wÒÐØð Ø%˜g f¤m°YÑ?Ô?ð ð %ˆðð ð ð ð"ð "ð "ð "ð ØAÐAÐAñ „XØAàØPÐPÐPñ „XØPð "ðSð Sð Sð Sð Sð ØWÐWÐWñ „XØWàðð ð ñ „Xðð "ðXð Xð Xð Xð Xð,ð ð ð ðð ð ð ð4ð 4ð 4ð 4ð 4ð ðð ð ñ „Xðð ðð ð ñ „Xðð?ð ?ð ?ð ?ð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð Øð	#ð #ð #ð #ð #ð$ Øð	Fð Fð Fð Fð Fð „|�wÒÐØð Ø%˜g f¤m°YÑ?Ô?ð ð ˆðLð Lð Lð LðEð Eð Eð Eðð ð ð ðPð Pð Pð Pð „|�wÒÐØð Ø%˜g f¤m°WÑ=Ô=ð ð	Eð 	Eð 	Eð 	Eð 	Eð 	Eð	 ÐÐÐr"   rq   )Ú	metaclass)r   r   r   r   )r#   r   r   r   )r0   r   r   r   )r7   r8   r9   r:   r   r   )4Ú
__future__r   rÅ   r”   r   r4   r   r<  Útypingr   r   r   r   r   ri   r   Ú
trio._utilr	   r
   ÚbuiltinsÚcollections.abcr   r   r   Útypesr   Útyping_extensionsr   r   Útrio._socketr   r   r   r   rV   r!   r+   r/   r6   rC   ÚfrozenrE   rZ   r]   ÚabcÚSocketFactoryrl   ÚHostnameResolverru   rm   Ú
SocketTyperq   rX   r"   r    ú<module>rN     sk  ðð #Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà €€€à €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1àð +Ø€O€O€OØ(Ð(Ð(Ð(Ð(Ð(Ø0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø#Ð#Ð#Ð#Ð#Ð#à.Ð.Ð.Ð.Ð.Ð.Ð.Ð.à*Ð*Ð*Ð*Ð*Ð*à Ô,¨yÔ/DÑD€	Ð DÐ DÐ DÑ DðCð Cð Cð Cð=ð =ð =ð =ð=ð =ð =ð =ð+ð +ð +ð +ð	ð 	ð 	ð 	ð „ð;ð ;ð ;ð ;ð ;ñ ;ô ;ñ „ð;ð, „ðð ð ð ð ñ ô ñ „ðð
 „ð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ „ð
ð „ðGð Gð Gð Gð G˜œÔ.ñ Gô Gñ „ðGð „ðEð Eð Eð Eð E˜4œ8Ô4ñ Eô Eñ „ðEð< ð ð  ð  ð  ð  ñ  ô  ñ „ð ðF ðBEð BEð BEð BEð BE�”Ô'Ð3Fð BEñ BEô BEñ „ðBEð BEð BEr"   