o
    2c	                     @   s2   d dl Z d dlZd dlZd dlZG dd dZdS )    Nc                   @   s   e Zd Zd ddZdd Zdd Zd!d	d
Zdd Zdd Zdd Z	dd Z
dd Zdd Zd"ddZdd Zejdd Zejdd ZdS )#Parserr   c                 C   s0   || _ d| _t| j | _|r| | || _d S Nr   )wirecurrentlenendseekfurthest)selfr   r    r   >/var/www/html/gps/gps/lib/python3.10/site-packages/dns/wire.py__init__
   s   

zParser.__init__c                 C   s   | j | j S N)r   r   r
   r   r   r   	remaining   s   zParser.remainingc                 C   sL   ||   kr
tjj| j| j| j|  }|  j|7  _t| j| j| _|S r   )r   dns	exception	FormErrorr   r   maxr	   )r
   sizeoutputr   r   r   	get_bytes   s   zParser.get_bytes   c                 C   s   t | |d}| |S )Nbigint
from_bytesr   )r
   length_sizelengthr   r   r   get_counted_bytes   s   
zParser.get_counted_bytesc                 C   s   |  |  S r   )r   r   r   r   r   r   get_remaining!   s   zParser.get_remainingc                 C      t d| dd S )Nz!Br   r   structunpackr   r   r   r   r   	get_uint8$      zParser.get_uint8c                 C   r!   )Nz!H   r   r"   r   r   r   r   
get_uint16'   r&   zParser.get_uint16c                 C   r!   )Nz!I   r   r"   r   r   r   r   
get_uint32*   r&   zParser.get_uint32c                 C   s   t | ddS )N   r   r   r   r   r   r   
get_uint48-   s   zParser.get_uint48c                 C   s   t || t |S r   )r#   r$   r   calcsize)r
   formatr   r   r   
get_struct0   s   zParser.get_structNc                 C   s   t j| }|r||}|S r   )r   namefrom_wire_parser
relativize)r
   originr0   r   r   r   get_name3   s   
zParser.get_namec                 C   s$   |dk s	|| j krtjj|| _d S r   )r   r   r   r   r   )r
   wherer   r   r   r   9   s   
zParser.seekc                 c   sX    ||   krtjj| j}z| j| | _d V  | j| jkr"tjjW || _d S || _w r   )r   r   r   r   r   r   )r
   r   	saved_endr   r   r   restrict_to@   s   zParser.restrict_toc                 c   s"    z
d V  W | j | _d S | j | _w r   )r	   r   r   r   r   r   restore_furthestP   s   zParser.restore_furthest)r   )r   r   )__name__
__module____qualname__r   r   r   r   r    r%   r(   r*   r,   r/   r4   r   
contextlibcontextmanagerr7   r8   r   r   r   r   r   	   s"    



r   )r<   r#   dns.exceptionr   dns.namer   r   r   r   r   <module>   s
   