U
    d                     @   s   d Z G dd dZdS )z&Serial Number Arthimetic from RFC 1982c                   @   sv   e Zd ZdeedddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )Serial    valuebitsc                 C   s   |d|  | _ || _d S )N   r   )selfr   r    r   ./tmp/pip-unpacked-wheel-pk5slln3/dns/serial.py__init__   s    zSerial.__init__c                 C   s   d| j  d| j dS )Nzdns.serial.Serial(z, )r   )r   r   r   r	   __repr__   s    zSerial.__repr__c                 C   s>   t |trt|| j}nt |tr.|j| jkr2tS | j|jkS N
isinstanceintr   r   NotImplementedr   r   otherr   r   r	   __eq__   s
    
zSerial.__eq__c                 C   s>   t |trt|| j}nt |tr.|j| jkr2tS | j|jkS r   r   r   r   r   r	   __ne__   s
    
zSerial.__ne__c                 C   s   t |trt|| j}nt |tr.|j| jkr2tS | j|jk r\|j| j d| jd  k r\dS | j|jkr| j|j d| jd  krdS dS d S Nr      TFr   r   r   r   r	   __lt__   s    
&zSerial.__lt__c                 C   s   | |kp| |k S r   r   r   r   r   r	   __le__*   s    zSerial.__le__c                 C   s   t |trt|| j}nt |tr.|j| jkr2tS | j|jk r\|j| j d| jd  kr\dS | j|jkr| j|j d| jd  k rdS dS d S r   r   r   r   r   r	   __gt__-   s    
&zSerial.__gt__c                 C   s   | |kp| |kS r   r   r   r   r   r	   __ge__;   s    zSerial.__ge__c                 C   sl   | j }t|tr|j }nt|tr(|}ntt|d| jd  d krJt||7 }|d| j  }t|| jS Nr   r   r   r   r   r   
ValueErrorabsr   r   r   vdeltar   r   r	   __add__>   s    

zSerial.__add__c                 C   sj   | j }t|tr|j }nt|tr(|}ntt|d| jd  d krJt||7 }|d| j  }|| _ | S r   r   r    r   r   r	   __iadd__L   s    

zSerial.__iadd__c                 C   sl   | j }t|tr|j }nt|tr(|}ntt|d| jd  d krJt||8 }|d| j  }t|| jS r   r   r    r   r   r	   __sub__[   s    

zSerial.__sub__c                 C   sj   | j }t|tr|j }nt|tr(|}ntt|d| jd  d krJt||8 }|d| j  }|| _ | S r   r   r    r   r   r	   __isub__i   s    

zSerial.__isub__N)r   )__name__
__module____qualname__r   r
   r   r   r   r   r   r   r   r#   r$   r%   r&   r   r   r   r	   r      s   r   N)__doc__r   r   r   r   r	   <module>   s   