
    ,h                     L    d dl Z d dlZd dlmZmZmZ d dlZd dlZ G d d      Z	y)    N)IteratorOptionalTuplec                      e Zd ZddedefdZdefdZdedefdZddedefd	Zdefd
Z	defdZ
defdZdefdZdefdZdedefdZdded   ddfdZdeddfdZej*                  dedefd       Zej*                  defd       Zy)Parserwirecurrentc                     || _         d| _        t        | j                         | _        |r| j	                  |       || _        y Nr   )r   r	   lenendseekfurthest)selfr   r	   s      J/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/dns/wire.py__init__zParser.__init__   s5    	tyy>IIg    returnc                 4    | j                   | j                  z
  S N)r   r	   r   s    r   	remainingzParser.remaining   s    xx$,,&&r   sizec                 .   |dk\  sJ || j                         kD  rt        j                  j                  | j                  | j
                  | j
                  |z    }| xj
                  |z  c_        t        | j                  | j
                        | _        |S r   )r   dns	exception	FormErrorr   r	   maxr   )r   r   outputs      r   	get_byteszParser.get_bytes   sq    qy$..""--)))4<<$,,*=>DMM4<<8r   length_sizec                 n    t         j                  | j                  |      d      }| j                  |      S )Nbigint
from_bytesr    )r   r!   lengths      r   get_counted_byteszParser.get_counted_bytes    s*    { ;UC~~f%%r   c                 @    | j                  | j                               S r   )r    r   r   s    r   get_remainingzParser.get_remaining$   s    ~~dnn.//r   c                 R    t        j                  d| j                  d            d   S )Nz!B   r   structunpackr    r   s    r   	get_uint8zParser.get_uint8'   !    }}T4>>!#45a88r   c                 R    t        j                  d| j                  d            d   S )Nz!H   r   r-   r   s    r   
get_uint16zParser.get_uint16*   r1   r   c                 R    t        j                  d| j                  d            d   S )Nz!I   r   r-   r   s    r   
get_uint32zParser.get_uint32-   r1   r   c                 L    t         j                  | j                  d      d      S )N   r#   r$   r   s    r   
get_uint48zParser.get_uint480   s    ~~dnnQ/77r   formatc                 r    t        j                  || j                  t        j                  |                  S r   )r.   r/   r    calcsize)r   r;   s     r   
get_structzParser.get_struct3   s%    }}VT^^FOOF4K%LMMr   Noriginzdns.name.Namec                 j    t         j                  j                  |       }|r|j                  |      }|S r   )r   namefrom_wire_parser
relativize)r   r?   rA   s      r   get_namezParser.get_name6   s,    xx((.??6*Dr   wherec                 n    |dk  s|| j                   kD  rt        j                  j                  || _        y r   )r   r   r   r   r	   )r   rE   s     r   r   zParser.seek<   s-     19(--)))r   c              #   L  K   |dk\  sJ || j                         kD  rt        j                  j                  | j                  }	 | j
                  |z   | _        d  | j
                  | j                  k7  rt        j                  j                  	 || _        y # || _        w xY wwr   )r   r   r   r   r   r	   )r   r   	saved_ends      r   restrict_tozParser.restrict_toC   s     qy$..""--)))HH			!||d*DH ||txx'mm--- ( !DHyDHs   AB$AB B$	B!!B$c              #   d   K   	 d  | j                   | _        y # | j                   | _        w xY wwr   )r   r	   r   s    r   restore_furthestzParser.restore_furthestT   s&     	)J==DL4==DLs   0 0-0)r   )r,   r   )__name__
__module____qualname__bytesr%   r   r   r    r(   r*   r0   r4   r7   r:   strr   r>   r   rD   r   
contextlibcontextmanagerr   rI   rK    r   r   r   r      s    U  S  '3 'c e &S & &0u 093 99C 99C 98C 8N N Nx8 O # $  ! ! ! !  )( ) )r   r   )
rQ   r.   typingr   r   r   dns.exceptionr   dns.namer   rS   r   r   <module>rW      s%      , ,  N) N)r   