
    i                         d Z ddlmZmZmZ ddlZddlZddlZddlm	Z	  G d de
          Zd Z ej        d           ej        d	           ej        d
          fdZefdZeZd ZdS )z1
Private support for parsing textual addresses.

    )absolute_importdivisionprint_functionN)hostname_typesc                       e Zd ZdS )AddressSyntaxErrorN)__name__
__module____qualname__     E/usr/local/lib/python3.11/dist-packages/gevent/resolver/_addresses.pyr   r   $   s        Dr   r   c                    t          | t                    s|                                 } |                     d          }t	          |          dk    rt          |           |D ]K}|                                st
          t	          |          dk    r|d         dk    rt          |           L	 d |D             }t          j        dg|R  S #  t          |           xY w)z
    Convert an IPv4 address in text form to binary struct.

    *text*, a ``text``, the IPv4 address in textual form.

    Returns a ``binary``.
       .      r   0c                 ,    g | ]}t          |          S r   )int).0parts     r   
<listcomp>z#_ipv4_inet_aton.<locals>.<listcomp>=   s    ,,,dD		,,,r   BBBB)	
isinstancebytesencodesplitlenr   isdigitstructpack)textpartsr   intss       r   _ipv4_inet_atonr%   (   s     dE"" {{}}JJtE
5zzQ &&& + +||~~ 	%$$t99q==T!W^^$T***',,e,,,{6)D))))' &&&s   0C Cs   (.*):(\d+\.\d+\.\d+\.\d+)$s   ::.*s   .*::$c                    t          | t                    s|                                 } | dk    rd} |                    |           }|t	          t          |                    d                              }d                    |                    d                                          |d         |d         |d         |d                                                   } |                    |           }|| dd         } n!|                    |           }|
| dd	         } | 	                    d
          }t          |          }|dk    rt          d}g }	|D ]}
|
dk    rB|rt          |           d}t          dd|z
  dz             D ]}|	                    d           Jt          |
          }|dk    rt          |           |dk    rdd|z
  z  |
z   }
|	                    |
           |dk     r|st          |           d                    |	          } 	 t!          j        |           S # t           j        t&          f$ r t          |           w xY w)z
    Convert an IPv6 address in text form to binary form.

    *text*, a ``text``, the IPv6 address in textual form.

    Returns a ``binary``.
    s   ::s   0::N   z{}:{:02x}{:02x}:{:02x}{:02x}r   r         :   Fr   Ts   0000r      0)r   r   r   match	bytearrayr%   groupformatdecoder   r   SyntaxErrorr   rangeappendjoinbinascii	unhexlifyError	TypeError)r"   
_v4_ending_colon_colon_start_colon_colon_endmbchunksl
seen_empty	canonicalc_lcs                r   _ipv6_inet_atonrF   C   sz     dE"" {{}}u}} 	A9oaggajj1122/66qwwqzz7H7H7J7J78tQqT1Q478t= =>Dfhh 	 	  &&A9ABBx""4((y9D ZZFFA1uuJI    88 /(...J1a!eai(( * *  ))))* QBAvv(...QwwQV_)Q1uuZu &&&88ID
'!$'''NI& ' ' ' &&&'s   H0 0&Ic                 t    | rt          | t                    sdS 	  ||            n# t          $ r Y dS w xY wdS )NFT)r   r   r   )hostparses     r   _is_addrrJ      s[     z$77 ud   uu4s   ' 
55c                     | rJt          | t                    r5t          | t                    rdnd}|                     |d          d         } t	          | t
                    S )N%   %r   r   )r   r   strr   rJ   rF   )rH   ss     r   is_ipv6_addrrP      s[     #
400 #dC((2CCdzz!Q"D/***r   )__doc__
__future__r   r   r   r6   rer    gevent.resolverr   
ValueErrorr   r%   compilerF   rJ   is_ipv4_addrrP   r   r   r   <module>rX      s  .  A @ @ @ @ @ @ @ @ @  				  * * * * * *	 	 	 	 	 	 	 	' ' '8  *rz*HII'1rz(';';%/RZ	%:%:J' J' J' J'Z )     + + + + +r   