a
Z��^�" c @ s� d Z ddlZdZdZG dd� de�ZG dd� de�Zd d
� Zd<dd
�Zdd� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zd d!� ZG d"d#� d#�ZdaejG d$d%� d%e��ZejG d&d'� d'e��ZG d(d)� d)�ZG d*d+� d+ee�ZG d,d-� d-e�ZG d.d/� d/ee�ZG d0d1� d1�Zee_G d2d3� d3�ZG d4d5� d5ee�ZG d6d7� d7e�Z G d8d9� d9ee�Z!G d:d;� d;�Z"e"e_dS )=z1.0� N� i� c @ � e Zd ZdS )�AddressValueErrorN��__name__�
__module__�__qualname__� r r �!/usr/lib64/python3.9/ipaddress.pyr � r c @ r )�NetmaskValueErrorNr r r r r r r
r c C �T z
t | �W S ttfy Y n0 z
t| �W S ttfyB Y n0 td| ��d S )Nz0%r does not appear to be an IPv4 or IPv6 address)�IPv4Addressr r �IPv6Address�
ValueError��addressr r r �
ip_address s
�r Tc C sX zt | |�W S ttfy" Y n0 zt| |�W S ttfyF Y n0 td| ��d S )Nz0%r does not appear to be an IPv4 or IPv6 network)�IPv4Networkr r �IPv6Networkr )r �strictr r r �
ip_network9 s �r c C r )Nz2%r does not appear to be an IPv4 or IPv6 interface)�
IPv4Interfacer r �
IPv6Interfacer r r r r �ip_interfaceW s
�r c C �. z| � dd�W S ty( td��Y n0 d S )N� �bigz&Address negative or too large for IPv4��to_bytesZ
OverflowErrorr r r r r �v4_int_to_packedz s r c C r )N� r z&Address negative or too large for IPv6r r r r r �v6_int_to_packed� s
r! c C s* t | ��d�}t|�dkr&td| ��|S )N�/� zOnly one '/' permitted in %r)�str�split�lenr )r �addrr r r �_split_optional_netmask� s r( c c sN t | �}t|� }}|D ]&}|j|jd kr:||fV |}|}q||fV d S �N� )ZiterZnext�_ip)� addressesZit�first�last�ipr r r �_find_address_range� s
r0 c C s$ | dkr|S t || | d @ �� �S )Nr r* )�min�
bit_length)ZnumberZbitsr r r �_count_righthand_zero_bits� s r3 c c s� t | t�rt |t�std��| j|jkr8td| |f ��| |krHtd��| jdkrXt}n| jdkrht}ntd��| j}| j}|j}||kr�t t
||�|| d �� d �}|||| f�}|V |d|>