+
    LV-jj  ã                   óZ   € R t ^ RIt^ RIt^RIHt R R ltRR R lltR R ltR	 R
 ltR# )z'Utility functions for aiohappyeyeballs.N)ÚAddrInfoTypec                ó  € V ^8„  d   QhR\         \        \        \        \        3,          \         \        \        \        3,          ,          \         \        \        3,          ,          R,          R\        \        ,          R,          /# )é   ÚaddrNÚreturn)ÚtupleÚstrÚintÚlistr   )Úformats   "Úg/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/aiohappyeyeballs/utils.pyÚ__annotate__r   	   sZ   € ÷ Hñ HÜ
””Sœ#œsÐ"Õ
#¤e¬C´´c¨MÕ&:Õ
:¼UÄ3ÌÀ8½_Õ
LÈtÕ
SðHä	Œ,Õ˜$ÕñHó    c                óB  € V f   R# V ^ ,          pV ^,          pRV9   pV'       dE   ^ p^ p\        V 4      pV^8¼  d
   V ^,          pV^8¼  d
   V ^,          pWWE3p \        P                  pMW3p \        P                  pV\        P                  \        P
                  RV 3.# )z7Convert an address tuple to a list of addr_info tuples.NÚ:Ú )ÚlenÚsocketÚAF_INET6ÚAF_INETÚSOCK_STREAMÚIPPROTO_TCP)r   ÚhostÚportÚis_ipv6ÚflowinfoÚscopeidÚaddr_lenÚfamilys   &       r   Úaddr_to_addr_infosr   	   s    € ð ‚|ÙØ��7€DØ��7€DØ�T‰k€GßØˆØˆÜ�t“9ˆØ�qŒ=Ø˜1•gˆGØ�qŒ=Ø˜A•wˆHØ˜HÐ.ˆÜ—‘‰àˆ|ˆÜ—‘ˆØ”V×'Ñ'¬×);Ñ);¸RÀÐFÐGÐGr   c                óX   € V ^8„  d   QhR\         \        ,          R\        R,          RR/# )r   Ú
addr_infosÚ
interleaveNr   )r
   r   r	   )r   s   "r   r   r   "   s-   € ÷ %ñ %Ü”\Õ"ð%Ü03°dµ
ð%à	ñ%r   c                óê   € / pVf   ^p. pV  FH  pV^ ,          pWR9  d   ^ W%&   W%,          V8  d   VP                  V4       W%;;,          ^,          uu&   KJ  	  V F  pV P                  V4       K  	  R# )zÄ
Pop addr_info from the list of addr_infos by family up to interleave times.

The interleave parameter is used to know how many addr_infos for
each family should be popped of the top of the list.
N)ÚappendÚremove)r!   r"   ÚseenÚ	to_removeÚ	addr_infor   s   &&    r   Úpop_addr_infos_interleaver)   "   sw   € ð €DØÒØˆ
Ø$&€IÛˆ	Ø˜1•ˆØÔØˆD‰LØ�<˜*Ô$Ø×Ñ˜YÔ'Ø�˜Õ�ñ  ó ˆ	Ø×Ñ˜)Ö$ó r   c          	      ó4  € V ^8„  d   QhR\         \        \        3,          \         \        \        \        \        3,          ,          R\         \        P                  \        3,          \         \        P
                  \        \        \        3,          ,          /# )r   r   r   )r   r   r	   Ú	ipaddressÚIPv4AddressÚIPv6Address)r   s   "r   r   r   :   sa   € ÷ 6ñ 6Ü
””S��/œE¤#¤s¬C´Ð"4Õ5Õ
5ð6ä
Œ9× Ñ ¤#Ð%Õ&¬¬y×/DÑ/DÄcÌ3ÔPSÐ/SÕ)TÕTñ6r   c                óR   € \         P                  ! V ^ ,          4      .V R,          O5# )z+Convert an address tuple to an IPv4Address.:é   NN)r+   Ú
ip_address)r   s   &r   Ú_addr_tuple_to_ip_addressr1   :   s%   € ô × Ò   a¥Ó)Ð5¨D°­HÑ5Ð5r   c          	      ó¸   € V ^8„  d   QhR\         \        ,          R\        \        \        3,          \        \        \        \        \        3,          ,          RR/# )r   r!   r   r   N)r
   r   r   r   r	   )r   s   "r   r   r   A   sK   € ÷ @ñ @Ü”\Õ"ð@ä
””S��/œE¤#¤s¬C´Ð"4Õ5Õ
5ð@ð 
ñ@r   c                ó„  € . pV  F$  pVR,          V8X  g   K  VP                  V4       K&  	  V'       d   V F  pV P                  V4       K  	  R# \        V4      pV  F-  pV\        VR,          4      8X  g   K  VP                  V4       K/  	  V'       d   V F  pV P                  V4       K  	  R# \        RV R24      h)zu
Remove an address from the list of addr_infos.

The addr value is typically the return value of
sock.getpeername().
NzAddress z not found in addr_infoséÿÿÿÿ)r$   r%   r1   Ú
ValueError)r!   r   Úbad_addrs_infosr(   Úbad_addr_infoÚ
match_addrs   &&    r   Úremove_addr_infosr9   A   s¶   € ð +-€OÛˆ	Ø�R�=˜DÖ Ø×"Ñ" 9Ö-ñ  ÷ Û,ˆMØ×Ñ˜mÖ,ñ -áä*¨4Ó0€JÛˆ	ØÔ2°9¸Rµ=ÓAÖAØ×"Ñ" 9Ö-ñ  ÷ Û,ˆMØ×Ñ˜mÖ,ñ -áÜ
�x ˜vÐ%=Ð>Ó
?Ð?r   )N)	Ú__doc__r+   r   Útypesr   r   r)   r1   r9   © r   r   Ú<module>r=      s'   ðÙ -ã Û å õH÷2%õ06÷@r   