
    @OOf              
          d dl Z d dlmZ  e j                  d      Z e j                  d      ZdZeeee	e
ef      f   ZdefdZdee
   d	ed
edefdZd	ed
edede	e
ef   fdZd	ed
ede	e
ef   fdZd	ede
fdZde
defdZy)    N)Optionalz!Bz!H   returnc                      t               S )N)dict     _/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/net/dns/domain_names.pycacher      s	    6Mr	   labelsbufferoffsetc                    t         j                  ||      \  }|dk\  rt        j                  d|       |dk(  rt         j                  S |t         j                  z  }||z   }t        |      |k  rt        j                  d| d      	 | j                  ||| j                  d             t         j                  |z   S # t        $ r t        j                  d|       w xY w)N@   z%unpack encountered a label of length r   z"unpack requires a label buffer of  bytesidnaz2unpack encountered a illegal characters at offset )	_LABEL_SIZEunpack_fromstructerrorsizelenappenddecodeUnicodeDecodeError)r   r   r   r   	end_labels        r
   _unpack_label_intor      s    %%ff5GTrzllB4&IJJ	+"""TM	v;",,!CD6PQQ	MM&	299&AB
 $&&	 " 	,,DVHM 	s   #C "C#r   c                    ||v r||   }|t        j                  d      |S d ||<   |}g }	 t        j                  | |      \  }|t        z  t        k(  rXt
        j                  | |      \  }|t
        j                  z  }t        | |t        dz   z  |      \  }}	|j                  |       n|t        || |      z  }|dk(  rndj                  |      ||z
  f}|||<   |S )Nz#unpack encountered domain name loop   r   .)r   r   r   r   _POINTER_INDICATOR_POINTER_OFFSETr   unpack_from_with_compressionr   r   join)
r   r   r   resultstart_offsetr   r   pointerlabel_s
             r
   r#   r#   $   s    v>,,!DFF* M' f!--ff=GT((,>>,88H
/...7G(:a(?&@@%q e$,VVVDD19  &!F\$9:$lMr	   c                     g }	 t         j                  | |      \  }|t        z  t        k(  rt        j                  d      |t        || |      z  }|dk(  rnTdj                  |      |fS )zsConverts RDATA into a domain name without pointer compression from a given offset and also returns the binary size.z<unpack encountered a pointer which is not supported in RDATAr   r    )r   r   r!   r   r   r   r$   )r   r   r   r   s       r
   r   r   B   s|    F
))&&9$$(::,,N  (@@Fqy  88FV##r	   c                 r    t        | d      \  }}|t        |       k7  rt        j                  d| d      |S )z>Converts RDATA into a domain name without pointer compression.r   zunpack requires a buffer of r   )r   r   r   r   )r   namelengths      r
   unpackr.   R   s<    vq)LD&Vll9&HIIKr	   r,   c           
         t               }t        |       dkD  r| j                  d      D ]  }|j                  d      }t        |      }|dk(  rt	        d|  d      |dk\  rt	        d| d|  d	| d
      |j                  t        j                  |             |j                  |        |j                  t        j                  d             t        |      S )z>Converts a domain name into RDATA without pointer compression.r   r    r   zdomain name 'z' contains empty labelsr   zencoded label 'z' of domain name 'z' is too long (z bytes))		bytearrayr   splitencode
ValueErrorextendr   packbytes)r,   r   partr(   r   s        r
   r5   r5   Z   s    [F
4y1}JJsO 	!DKK'Eu:Dqy =6M!NOOrz %dV+=dV?SWRXX_`  MM+**401MM% 	! MM+""1%&=r	   )r   typingr   Structr   r"   r!   r   inttuplestrCacher   listr6   r   r#   r   r.   r5   r   r	   r
   <module>r?      s     fmmD!&--%  	S(5c?++,u 'tCy '% ' ' '(',
38_<$ $s $uS#X $ 5 S s u r	   