+
    R²ÕiÔ  ã                   óv   € R t ^ RIt^ RIt^ RIHtHtHtHtH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)ÚDictÚListÚOptionalÚTupleÚUnion)ÚAddrInfoTypec                ó"  € V ^8„  d   QhR\         \        \        \        \        \        \        3,          \        \        \        \        3,          \        \        \        3,          3,          ,          R\         \
        \        ,          ,          /# ©é   ÚaddrÚreturn)r   r   r   ÚstrÚintr   r   )Úformats   "ÚU/home/ubuntu/hermes-agent/venv/lib/python3.14/site-packages/aiohappyeyeballs/utils.pyÚ__annotate__r   
   sa   € ÷ Hñ HÜ
ÜŒe”Cœœc¤3Ð&Õ'¬¬s´C¼¨}Õ)=¼uÄSÌ#ÀX½ÐNÕOõðHô Œd”<Õ Õ!ñ	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                ó`   € V ^8„  d   QhR\         \        ,          R\        \        ,          RR/# )r
   Ú
addr_infosÚ
interleaver   N)r   r   r   r   )r   s   "r   r   r   %   s-   € ÷ %ñ %Ü”\Õ"ð%Ü08¼µð%à	ñ%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          
      óL  € V ^8„  d   QhR\         \        \        \        3,          \        \        \        \        \        3,          3,          R\         \        \        P
                  \        3,          \        \        P                  \        \        \        3,          3,          /# r	   )r   r   r   r   Ú	ipaddressÚIPv4AddressÚIPv6Address)r   s   "r   r   r   =   sm   € ÷ 6ñ 6Ü
””cœ3h•¤¤s¬C´´cÐ'9Õ!:Ð:Õ
;ð6ä
Ü	Œ)×
Ñ
¤Ð
$Õ%¤u¬Y×-BÑ-BÄCÌÌcÐ-QÕ'RÐRõñ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_addressr5   =   s%   € ô × Ò   a¥Ó)Ð5¨D°­HÑ5Ð5r   c          
      óÄ   € V ^8„  d   QhR\         \        ,          R\        \        \        \
        3,          \        \        \
        \
        \
        3,          3,          RR/# )r
   r%   r   r   N)r   r   r   r   r   r   )r   s   "r   r   r   F   sP   € ÷ @ñ @Ü”\Õ"ð@ä
””cœ3h•¤¤s¬C´´cÐ'9Õ!:Ð:Õ
;ð@ð 
ñ@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)   r5   Ú
ValueError)r%   r   Úbad_addrs_infosr,   Úbad_addr_infoÚ
match_addrs   &&    r   Úremove_addr_infosr=   F   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   Útypingr   r   r   r   r   Útypesr   r#   r-   r5   r=   © r   r   Ú<module>rB      s-   ðÙ -ã Û ß 5Õ 5å õH÷6%õ06÷@r   