File: //opt/saltstack/salt/lib/python3.10/site-packages/mdurl/__pycache__/_parse.cpython-310.pyc
o
;jn, �
@ s� d dl mZ d dlmZ d dlZd dlmZ ejdejd�Z e�d�Z
e�d�Zd Zd
e Z
de
Zde Zd
ZdZe�d�Ze�d�Zeeddd��Zeeddddddddddd�
�ZG dd� d�Zdd�d dd�ZdS )!� )�annotations)�defaultdictN)�URLz^([a-z0-9.+-]+:))�flagsz:[0-9]*$z^(//?(?!/)[^?\s]*)(\?[^\s]*)?$)�<�>�"�`� �
�
� )�{�}�|�\�^r )�')�%�/�?�;�#)r r r � z^[+a-z0-9A-Z_-]{0,63}$z^([+a-z0-9A-Z_-]{0,63})(.*)$T)Z
javascriptzjavascript:)
�http�https�ftp�gopher�filezhttp:zhttps:zftp:zgopher:zfile:c @ s* e Zd Zddd�Zdd
d�Zdd
d�ZdS )�
MutableURL�return�Nonec C s4 d | _ d| _d | _d | _d | _d | _d | _d | _d S )NF)�protocol�slashes�auth�port�hostname�hash�search�pathname)�self� r+ �@/opt/saltstack/salt/lib/python3.10/site-packages/mdurl/_parse.py�__init__j s
zMutableURL.__init__�url�str�slashes_denote_host�bool�'MutableURL'c C s& d}d}|}|� � }|s/t|�d��dkr/t�|�}|r/|�d�| _|�d�r-|�d�| _| S d}t�|�}|rK|�� }|� � }|| _
|t|�d � }|sU|sUt�d|�rk|�d�}|rk|rbt
| sk|dd � }d| _t
| �s�|sz|�r�t| �s�d } ttt��D ]}
|�t|
�}|d kr�| d ks�|| k r�|} q�| d kr�|�d
�}n |�d
d| d �}|d kr�|d |� }
||d d � }|
| _d } ttt��D ]}
|�t|
�}|d kr�| d ks�|| k r�|} q�| d kr�t|�} | dkr�|| d dkr�| d8 } |d | � }|| d � }| �|� | j�pd| _| j�d
��o| j�d�}|�s�| j�d�}t|�}d}
|
|k �r�||
}|�s@|
d7 }
�q.t�|��s�d}t|�}d}||k �rpt|| �dk�ra|d7 }n||| 7 }|d7 }||k �sSt�|��s�|d |
� }||
d d � }t�|�}|�r�|�|�d�� |�d|�d�� |�r�d�|�| }d�|�| _n |
d7 }
|
|k �s3t| j�tk�r�d| _|�r�| jdd � | _|�d�}|d k�r�||d � | _ |d |� }|�d�}|d k�r�||d � | _|d |� }|�r|| _t| �r| j�r| j�sd| _| S )N� Fr � � z^//[^@/]+@[^@/]+z//T����@r �:�[�]�.� �xr )!�strip�len�split�SIMPLE_PATH_PATTERN�match�groupr) r( �PROTOCOL_PATTERN�lowerr"