HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/mdurl/__pycache__/_parse.cpython-310.pyc
o

;jn,�
@s�ddlmZddlmZddlZddlmZejdejd�Z	e�d�Z
e�d�Zd	Zd
eZ
de
ZdeZd
ZdZe�d�Ze�d�Zeeddd��Zeeddddddddddd�
�ZGdd�d�Zdd�d dd�ZdS)!�)�annotations)�defaultdictN)�URLz^([a-z0-9.+-]+:))�flagsz:[0-9]*$z^(//?(?!/)[^?\s]*)(\?[^\s]*)?$)�<�>�"�`� �
�
�	)�{�}�|�\�^r	)�')�%�/�?�;�#)rrr�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*eZdZddd�Zdd
d�Zdd
d�ZdS)�
MutableURL�return�NonecCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)NF)�protocol�slashes�auth�port�hostname�hash�search�pathname)�self�r+�@/opt/saltstack/salt/lib/python3.10/site-packages/mdurl/_parse.py�__init__js
zMutableURL.__init__�url�str�slashes_denote_host�bool�'MutableURL'cCs&d}d}|}|��}|s/t|�d��dkr/t�|�}|r/|�d�|_|�d�r-|�d�|_|Sd}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�||	kr�|}	q�|	d	kr�|�d
�}n	|�d
d|	d�}|d	kr�|d|�}
||dd�}|
|_d	}	ttt��D]}
|�t|
�}|d	kr�|	d	ks�||	kr�|}	q�|	d	kr�t|�}	|	dkr�||	ddkr�|	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|
�}||
dd�}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"�re�
startswith�HOSTLESS_PROTOCOLr#�SLASHED_PROTOCOL�range�HOST_ENDING_CHARS�find�rfindr$�NON_HOST_CHARS�
parse_hostr&�endswith�HOSTNAME_PART_PATTERN�ord�HOSTNAME_PART_START�append�insert�join�HOSTNAME_MAX_LENr')r*r.r0Zlower_protor#�restZsimple_path�protoZproto_matchZhost_end�iZhecZat_signr$�hostZ
ipv6_hostnameZ	hostparts�l�partZnewpart�k�jZvalid_partsZnot_host�bitr'Zqmr+r+r,�parsets�




�����
�



�

�!



zMutableURL.parser[cCsPt�|�}|r|��}|dkr|dd�|_|dt|��}|r&||_dSdS)Nr8r4)�PORT_PATTERNr(rCr%r?r&)r*r[Z
port_matchr%r+r+r,rOs

�zMutableURL.parse_hostN)r r!)r.r/r0r1r r2)r[r/r r!)�__name__�
__module__�__qualname__r-rarOr+r+r+r,ris



+rF)r0r.�	URL | strr0r1r rc	CsFt|t�r|St�}|�||�t|j|j|j|j|j|j	|j
|j�S)N)�
isinstancerrrar"r#r$r%r&r'r(r))r.r0�ur+r+r,�	url_parse)s
 �ri)r.rfr0r1r r)�
__future__r�collectionsrrFZ
mdurl._urlr�compile�
IGNORECASErDrbrAZDELIMSZUNWISEZAUTO_ESCAPErNrKrWrQrSr1rHrIrrir+r+r+r,�<module>sL)



����A