Ë
    ¶�/ju  ã                   ó  — d Z ddlZddlZddlmZ ddlZddlZ ej                  d«      Z	de
defd„Z ej                  d«      Z ej                  d	«      Z ej                  d
«      Zddee
z  dede
fd„ZdZde
defd„Zdee
z  defd„Zy)zIPv6 helper functions.é    N)ÚListz0+([0-9a-f]+)ÚaddressÚreturnc                 óú  — t        | «      dk7  rt        d«      ‚t        j                  | «      }g }d}t        |«      }||k  rZ|||dz    j	                  «       }t
        j                  |«      }|�|j                  d«      }|j                  |«       |dz  }||k  rŒZd}d}d}	d}
t        d	«      D ]'  }||   d
k7  r|
sŒ|}||	z
  }||kD  r|	}|}d}
Œ!|
rŒ$|}	d}
Œ) |
rd	}||	z
  }||kD  r|	}|}|dkD  ry|dk(  rC|dk(  s|dk(  r9|d   dk(  r1|dk(  rd}nd}|t        j                  j                  | dd «      z   }|S dj                  |d| «      dz   dj                  |||z   d «      z   }|S dj                  |«      }|S )zÍConvert an IPv6 address in binary form to text form.

    *address*, a ``bytes``, the IPv6 address in binary form.

    Raises ``ValueError`` if the address isn't 16 bytes long.
    Returns a ``str``.
    é   z IPv6 addresses are 16 bytes longr   é   Né   éÿÿÿÿFé   Ú0Té   é   Úffffz::z::ffff:é   Ú:)ÚlenÚ
ValueErrorÚbinasciiÚhexlifyÚdecodeÚ_leading_zeroÚmatchÚgroupÚappendÚrangeÚdnsÚipv4Ú	inet_ntoaÚjoin)r   ÚhexÚchunksÚiÚlÚchunkÚmÚ
best_startÚbest_lenÚstartÚlast_was_zeroÚendÚcurrent_lenÚprefixÚthexs                  úJC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\dns/ipv6.pyr   r      sã  € ô ˆ7ƒ|�rÒÜÐ;Ó<Ð<Ü
×
Ñ
˜7Ó
#€CØ€FØ	€AÜˆC‹€AØ
ˆaŠ%Ø�A˜˜A™�×%Ñ%Ó'ˆô ×Ñ Ó&ˆØˆ=Ø—G‘G˜A“JˆEØ�‰�eÔØ	ˆQ‰ˆð ˆa‹%ð €JØ€HØ€EØ€MÜ�1ŽXˆØ�!‰9˜ÒÚØ�Ø! E™k�Ø Ò)Ø!&�JØ*�HØ %‘ÚØˆEØ ‰Mð ñ ØˆØ˜E‘kˆØ˜Ò!ØˆJØ"ˆHØ�!‚|Ø˜Š? ¨A¢°¸Q²À6È!Á9ÐPVÒCVà˜1Š}Ø‘à"�ØœCŸH™H×.Ñ.¨w°r°s¨|Ó<Ñ<ˆDð €Kð —‘˜  Ð,Ó-Øñà—(‘(˜6 *¨xÑ"7Ð"9Ð:Ó;ñ<ð ð €Kð �x‰x˜ÓˆØ€Kó    s   (.*):(\d+\.\d+\.\d+\.\d+)$s   ::.*s   .*::$ÚtextÚignore_scopec                 óZ  — t        | t        «      s| j                  «       }n| }|rF|j                  d«      }t	        |«      }|dk(  r|d   }n|dkD  rt
        j                  j                  ‚|dk(  rt
        j                  j                  ‚|j                  d«      r+|j                  d«      st
        j                  j                  ‚|j                  d«      r+|j                  d«      st
        j                  j                  ‚|dk(  rd}t        j                  |«      }|�wt
        j                  j                  |j                  d«      «      }|j                  d	«      j                  «       › d
|d   d›|d	   d›d
|d   d›|d   d›�j                  «       }t         j                  |«      }|�|d	d }nt"        j                  |«      }|�|dd }|j                  d«      }t	        |«      }|dkD  rt
        j                  j                  ‚d}g }	|D ]™  }
|
dk(  rG|rt
        j                  j                  ‚d}t%        dd|z
  d	z   «      D ]  }|	j'                  d«       Œ ŒOt	        |
«      }|dkD  rt
        j                  j                  ‚|dk7  rdd|z
  z  |
z   }
|	j'                  |
«       Œ› |dk  r|st
        j                  j                  ‚dj)                  |	«      }	 t+        j,                  |«      S # t*        j.                  t0        f$ r t
        j                  j                  ‚w xY w)a+  Convert an IPv6 address in text form to binary form.

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

    *ignore_scope*, a ``bool``.  If ``True``, a scope will be ignored.
    If ``False``, the default, it is an error for a scope to be present.

    Returns a ``bytes``.
    ó   %é   r   r/   ó   :s   ::s   0::Nr	   r   Ú02xé   r
   r   FTs   0000r   ó   0)Ú
isinstanceÚbytesÚencodeÚsplitr   r   Ú	exceptionÚSyntaxErrorÚendswithÚ
startswithÚ
_v4_endingr   r   Ú	inet_atonr   r   Ú_colon_colon_startÚ_colon_colon_endr   r   r   r   Ú	unhexlifyÚErrorÚ	TypeError)r0   r1   ÚbtextÚpartsr#   r%   Úbr!   Ú
seen_emptyÚ	canonicalÚcÚ_Úlcs                r.   rB   rB   h   sÕ  € ô �dœEÔ"Ø—‘“‰àˆáØ—‘˜DÓ!ˆÜ�‹JˆØ�Š6Ø˜!‘H‰EØ�ŠUÜ—-‘-×+Ñ+Ð+à�‚|Ü�m‰m×'Ñ'Ð'Ø	�‰˜Ô	 e§n¡n°UÔ&;Ü�m‰m×'Ñ'Ð'Ø	×	Ñ	˜$Ô	¨×(8Ñ(8¸Ô(?Ü�m‰m×'Ñ'Ð'Ø	�%ŠØˆô 	×Ñ˜Ó€AØ€}Ü�H‰H×Ñ˜qŸw™w q›zÓ*ˆà�w‰w�q‹z× Ñ Ó"Ð# 1 Q q¡T¨# J¨q°©t°C¨j¸¸!¸A¹$¸s¸ÀAÀaÁDÈÀ:ÐNß
‰&‹(ð 	ô 	× Ñ  Ó'€AØ€}Ø�a�b�	‰ä×"Ñ" 5Ó)ˆØˆ=Ø˜#˜2�JˆEð �[‰[˜Ó€FÜˆF‹€AØˆ1‚uÜ�m‰m×'Ñ'Ð'Ø€JØ€IÛˆØ�Š8ÙÜ—m‘m×/Ñ/Ð/ØˆJÜ˜1˜a !™e a™iÖ(�Ø× Ñ  Õ)ñ )ô �Q“ˆBØ�AŠvÜ—m‘m×/Ñ/Ð/Ø�QŠwØ˜Q ™V‘_¨Ñ)�Ø×Ñ˜QÕð ð 	ˆ1‚u‘ZÜ�m‰m×'Ñ'Ð'Ø�H‰H�YÓ€Eð
(Ü×!Ñ! %Ó(Ð(øÜ�N‰NœIÐ&ò (Ü�m‰m×'Ñ'Ð'ð(ús   Ë!K6 Ë64L*s             ÿÿc                 ó,   — | j                  t        «      S )zŒIs the specified address a mapped IPv4 address?

    *address*, a ``bytes`` is an IPv6 address in binary form.

    Returns a ``bool``.
    )r@   Ú_mapped_prefix)r   s    r.   Ú	is_mappedrR   Æ   s   € ð ×ÑœnÓ-Ð-r/   c                 ó*   — t        t        | «      «      S )a  Verify that *address* is a valid text form IPv6 address and return its
    canonical text form.  Addresses with scopes are rejected.

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

    Raises ``dns.exception.SyntaxError`` if the text is not valid.
    )r   rB   )r0   s    r.   ÚcanonicalizerT   Ñ   s   € ô ”Y˜t“_Ó%Ð%r/   )F)Ú__doc__r   ÚreÚtypingr   Údns.exceptionr   Údns.ipv4Úcompiler   r:   Ústrr   rA   rC   rD   ÚboolrB   rQ   rR   rT   © r/   r.   Ú<module>r^      sÊ   ðñ$ ã Û 	Ý ã Û à�—
‘
Ð+Ó,€ðB�uð B ó BðJ ˆR�Z‰ZÐ6Ó7€
Ø�R—Z‘Z Ó)Ð Ø�2—:‘:˜iÓ(Ð ñX(�C˜%‘Kð X(¨tð X(Àó X(ðv ,€ð.�uð . ó .ð&�s˜U‘{ð & sô &r/   