U &�.e���@s�ddlZddlZddlZddlZddlZdddddddd d d d d dddddddddgZdddddddddd d!d"d#d$d%d&d'd(d)gZdddddd*dddd!dd d+d"d#d$d,d&d'd%d-d.d/d(d)gZddd0d"dddd d#d$d1d2d!d%d3gZdd0d4d5d*ddd+d1d2g Z dddddd d!dd#d$d1d2g Z ddd0ddd5dddd d+dd"g Z d6Z d7Z d8d9d:gZd;ZiZdZd?Zd@dA�ZeefdBdC�ZeefdDdE�ZdFdG�ZGdHdI�dIe�ZGdJdK�dKe�ZGdLdM�dMe�ZGdNdO�dOee�ZGdPdQ�dQee�ZddRlmZeddS�ZeddT�Z eddU�Z!dVe_"dWej#_"dXej$_"dYe _"dZe j%_"d[e j&_"d\e j'_"d]e j(_"d^e j$_"d_e!_"e j%j"e!j%_"e j&j"e!j&_"e j'j"e!j'_"d`e!j)_"e j(j"e!j(_"e j$j"e!j$_"eZ*Gdad�dee�Z+Gdbd�de e�Z,Gdcd�de!e�Z-Gddd�dee�Z.Gded�de e�Z/Gdfd�de!e�Z0dgdh�Z1e1�[1d�djd�Z2dkdl�Z3d�dmdn�Z4dodp�Z5dqdr�Z6d�dsd�Z7dtd�Z8dud�Z9d�dvd�Z:dwd�Z;dxZe�?dz�Z@d�d}d�ZAd�dd �ZBGd�d��d�eC�ZDd�ZEdaFd�d�d �ZGd�d�d�ZHeId��ZJeKeJ�ZLiZMGd�d��d�ejN�ZOd�d�d �ZPd�d�d �ZQd�d�d �ZRd~dddeQfd�d�ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWdaXd�d��ZYd�d��ZZda[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zadabd�d��Zcd�d�d��Zdd�d�d��Zed�d��Zfd�d��Zgd�d��Zhd�d��Zid�d��Zjd�d��Zkd�d��Zld�d��ZmdS)��N�urlparse� urlunparse�urljoin� urldefrag�urlsplit� urlunsplit� urlencode�parse_qs� parse_qsl�quote� quote_plus�quote_from_bytes�unquote� unquote_plus�unquote_to_bytes� DefragResult� ParseResult� SplitResult�DefragResultBytes�ParseResultBytes�SplitResultBytes�Zftp�httpZgopherZnntpZimapZwais�fileZhttpsZshttpZmmsZprosperoZrtspZrtspuZsftpZsvnzsvn+sshZwsZwssZtelnetZsnewsZrsyncZnfsZgitzgit+sshZhdlZsipZsipsZtelZmailtoZnewszAabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.z!  � � � �cCst��t��dS�N)� _parse_cache�clear� _safe_quoters�r"r"�$/usr/lib64/python3.8/urllib/parse.py� clear_cache`sr$�ascii�strictcCs|Srr")�objr"r"r#�_nooposr(cCs |�||�Sr��encode)r'�encoding�errorsr"r"r#�_encode_resultrsr-cst��fdd�|D��S)Nc3s"|]}|r|����ndVqdS)rN��decode��.0�x�r+r,r"r#� xsz_decode_args..)�tuple)�argsr+r,r"r3r#� _decode_argsvsr7cGsVt|dt�}|dd�D]}|rt|t�|krtd��q|rH|tfSt|�tfS)Nr�z$Cannot mix str and non-str arguments)� isinstance�str� TypeErrorr(r7r-)r6Z str_input�argr"r"r#� _coerce_argszs  r=c@seZdZdZddd�ZdS)�_ResultMixinStrr"r%r&cs|j��fdd�|D��S)Nc3s|]}|����VqdSrr)r0r3r"r#r4�sz)_ResultMixinStr.encode..)�_encoded_counterpart��selfr+r,r"r3r#r*�sz_ResultMixinStr.encodeN)r%r&)�__name__� __module__� __qualname__� __slots__r*r"r"r"r#r>�sr>c@seZdZdZddd�ZdS)�_ResultMixinBytesr"r%r&cs|j��fdd�|D��S)Nc3s|]}|����VqdSrr.r0r3r"r#r4�sz+_ResultMixinBytes.decode..)�_decoded_counterpartr@r"r3r#r/�sz_ResultMixinBytes.decodeN)r%r&)rBrCrDrEr/r"r"r"r#rF�srFc@s@eZdZdZedd��Zedd��Zedd��Zedd ��Zd S) �_NetlocResultMixinBaser"cCs |jdS)Nr�� _userinfo�rAr"r"r#�username�sz_NetlocResultMixinBase.usernamecCs |jdS)Nr8rIrKr"r"r#�password�sz_NetlocResultMixinBase.passwordcCsD|jd}|sdSt|t�r dnd}|�|�\}}}|��||S)Nr�%�%)� _hostinfor9r:� partition�lower)rA�hostname� separatorZpercentZzoner"r"r#rS�s  z_NetlocResultMixinBase.hostnamecCsl|jd}|dk rhzt|d�}Wn(tk rHd|��}t|�d�YnXd|kr^dkshntd��|S)Nr8� z+Port could not be cast to integer value as ri��zPort out of range 0-65535)rP�int� ValueError)rA�port�messager"r"r#rX�s  z_NetlocResultMixinBase.portN) rBrCrDrE�propertyrLrMrSrXr"r"r"r#rH�s   rHc@s(eZdZdZedd��Zedd��ZdS)�_NetlocResultMixinStrr"cCsD|j}|�d�\}}}|r4|�d�\}}}|s.)r=r��lstrip�_WHATWG_C0_CONTROL_OR_SPACE�strip�bool�typer�getr��MAX_CACHE_SIZEr$r�r�rW�splitr�r� scheme_chars�anyrR) rrr|r}r~�key�cachedr_rrqr��vr��restr"r"r#r�sn       ��   �� cCs<t|�\}}}}}}}|r&d||f}|t|||||f��S)Nz%s;%s)r=r)� componentsr|r_rrr�rrqr~r"r"r#r�s � cCs�t|�\}}}}}}|s4|r`|tkr`|dd�dkr`|rP|dd�dkrPd|}d|pXd|}|rp|d|}|r�|d|}|r�|d|}||�S) Nr�r�r8r�rr]r�ro)r=� uses_netloc)r�r|r_rrrrqr~r"r"r#r�s�    c Cs�|s|S|s|St||�\}}}t|d|�\}}}}}} t|||�\} } } } }}| |ks`| tkrh||�S| tkr�| r�|t| | | | ||f��S|} | s�| s�|} |} |s�|}|t| | | | ||f��S|�d�}|ddkr�|d=| dd�dkr�| �d�}n(|| �d�}td|dd��|dd�<g}|D]P}|dk�r\z |��Wntk �rXYnXn|dk�rl�q(n |� |��q(|ddk�r�|� d�|t| | d� |��p�d| ||f��S)Nrr������r8�..�.)r�r�) r=r� uses_relativer�rr��filter�pop� IndexError�append�join)�baserrr}r~ZbschemeZbnetlocZbpathZbparamsZbqueryZ bfragmentr|r_�pathr�rrqZ base_partsZsegmentsZ resolved_pathZsegr"r"r#rsp � � � �        ��c CsTt|�\}}d|kr>t|�\}}}}}}t|||||df�}nd}|}|t||��S)Nror)r=rrr) rrr~�sr��p�a�qZfragZdefragr"r"r#rTs Z0123456789ABCDEFabcdefc Cs�|s|jdSt|t�r"|�d�}|�d�}t|�dkr<|S|dg}|j}tdkrbdd�tD�a|dd�D]R}z(|t|dd��||dd��Wqntk r�|d�||�YqnXqnd� |�S) N��utf-8rOr8rcSs.i|]&}tD]}||��t�||��q qSr")�_hexdigr*�bytes�fromhex)r1r�r�r"r"r#� zs � z$unquote_to_bytes..r�) r�r9r:r*r�r�� _hextobyter��KeyErrorr�)�string�bits�resr��itemr"r"r#rgs,     �z([-]+)r�r�cCs�t|t�rtd��d|kr$|j|S|dkr0d}|dkr|| �| �q| g|| <q|S)N)r+r,�max_num_fieldsrT)r r�) �qs�keep_blank_values�strict_parsingr+r,r�rTZ parsed_result�pairs�name�valuer"r"r#r �s�  c@s eZdZdS)�_QueryStringSeparatorWarningN)rBrCrDr"r"r"r#r��sr�z/etc/python/urllib.cfgc Cs�t|�\}}t|t�r |�d�}|r2t|ttf�sB|dk rBtd��t�}|dk�rRt}d} |dkrrtj � | �}d} |dkr�z t t �} Wnt k r�YnJX| �:ddl} | jddd�} | �| �| j d| dd �}|aW5QRXt } |dk�rd |k�rdd lm}|d td d�d}n:|dk�r(|}n*t|�dk�rRt| �d| �d�dd��|dk �r�||k�r�d|�d�|�d �}nd|�|�}||k�r�td��||k�r�dd�|�d�D�}ndd�|�|�D�}g}|D]�}|�s�|�s�q�|�dd�}t|�d k�r4|�rtd|f��|�r�|�d�n�q�t|d��sH|�r�|d�dd�}t|||d�}||�}|d�dd�}t|||d�}||�}|�||f��q�|S) Nr%z*Separator must be of type string or bytes.ZPYTHON_URLLIB_QS_SEPARATORzenvironment variabler)ro)Z interpolationZcomment_prefixesr )Zfallbackry)�warnaThe default separator of urllib.parse.parse_qsl and parse_qs was changed to '&' to avoid a web cache poisoning issue (CVE-2021-23336). By default, semicolons no longer act as query field separators. See https://access.redhat.com/articles/5860431 for more details.r��� stacklevel�&Zlegacyr8z (from z) must contain z1 character, or "legacy". See z7s zparse_qsl..cSsg|]}|�qSr"r")r1r�r"r"r#r�9s�=zbad query field: %rr�+� r3)r=r9r�r/r:rW�object�_default_qs_separator�os�environr��open�_QS_SEPARATOR_CONFIG_FILENAME�FileNotFoundError� configparserZ ConfigParserZ read_file�warningsr�r�r��countr�r�r�r)r�r�r�r+r,r�rTr~Z_legacyZ envvar_nameZ config_sourcerr�Zconfigr�� num_fieldsr��rZ name_valueZnvr�r�r"r"r#r �s�      �    � ���       cCs|�dd�}t|||�S)Nr�r�)r�r)r�r+r,r"r"r#rQs sBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-~c@s$eZdZdd�Zdd�Zdd�ZdS)�QuotercCst�|�|_dSr)� _ALWAYS_SAFE�union�safe)rAr�r"r"r#�__init__iszQuoter.__init__cCsd|jjt|�fS)Nz<%s %r>)� __class__rB�dictrKr"r"r#�__repr__mszQuoter.__repr__cCs(||jkrt|�nd�|�}|||<|S)Nz%{:02X})r��chr�format)rAr�r�r"r"r#� __missing__qszQuoter.__missing__N)rBrCrDr�r�r�r"r"r"r#r�asr�r�cCsbt|t�r8|s|S|dkrd}|dkr*d}|�||�}n |dk rHtd��|dk rXtd��t||�S)Nr�r&z,quote() doesn't support 'encoding' for bytesz*quote() doesn't support 'errors' for bytes)r9r:r*r;r )r�r�r+r,r"r"r#r ws' cCsdt|t�rd|ks$t|t�r2d|kr2t||||�St|t�rBd}nd}t|||||�}|�dd�S)Nr�� r�)r9r:r�r r�)r�r�r+r,Zspacer"r"r#r �s�� cs�t|ttf�std��|sdSt|t�r6|�dd�}ntdd�|D��}|�t|�s^|��Sz t |�Wn&t k r�t |�j t |<�YnXd� �fdd�|D��S)Nz!quote_from_bytes() expected bytesrr%�ignorecSsg|]}|dkr|�qS)�r"r�r"r"r#r��sz$quote_from_bytes..csg|] }�|��qSr"r")r1�char�Zquoterr"r#r��s)r9r�� bytearrayr;r:r*�rstrip�_ALWAYS_SAFE_BYTESr/r!r�r�� __getitem__r�)Zbsr�r"r�r#r �s  c Cs t|d�r|��}nPzt|�r0t|dt�s0t�Wn0tk rbt��\}}}td��|��YnXg} |s�|D]j\} } t| t �r�|| |�} n|t | �|||�} t| t �r�|| |�} n|t | �|||�} | � | d| �qp�n"|D�]\} } t| t ��r|| |�} n|t | �|||�} t| t ��rB|| |�} | � | d| �q�t| t ��rp|| |||�} | � | d| �q�z t| �} Wn:tk �r�|t | �|||�} | � | d| �Yq�X| D]B} t| t ��r�|| |�} n|t | �|||�} | � | d| ��q�q�d� | �S)N�itemsrz1not a valid non-string sequence or mapping objectr�r�) �hasattrr�r�r9r5r;�sys�exc_info�with_tracebackr�r:r�r�)rZdoseqr�r+r,Z quote_viaZtyZva�tb�l�kr�r2Zeltr"r"r#r�sR  �              cCstjdtdd�t|�S)Nz/urllib.parse.to_bytes() is deprecated as of 3.8r�r�)r�r��DeprecationWarning� _to_bytes�rrr"r"r#�to_bytes%s �rcCsJt|t�rFz|�d���}Wn(tk rDtdt|�d��YnX|S)N�ASCIIzURL z contains non-ASCII characters)r9r:r*r/� UnicodeError�reprrr"r"r#r+s  � rcCs`t|���}|dd�dkr<|dd�dkr<|dd���}|dd�dkr\|dd���}|S)Nr8��zURL:)r:r�rr"r"r#�unwrap9s   r cCstjdtdd�t|�S)NzUurllib.parse.splittype() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splittyperr"r"r#� splittypeFs �rcCsDtdkrt�dtj�at�|�}|r<|��\}}|��|fSd|fS)Nz ([^/:]+):(.*))� _typeprog�re�compile�DOTALL�match�groupsrR)rrrr|�datar"r"r#rNs   rcCstjdtdd�t|�S)NzUurllib.parse.splithost() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splithostrr"r"r#� splithost[s �rcCsXtdkrt�dtj�at�|�}|rP|��\}}|rH|ddkrHd|}||fSd|fS)Nz//([^/#?]*)(.*)rr�)� _hostprogrrrrr)rrrZ host_portr�r"r"r#rcs  rcCstjdtdd�t|�S)NzUurllib.parse.splituser() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splituser��hostr"r"r#� splituserrs �rcCs |�d�\}}}|r|nd|fS)Nr\�r`)r�userr�r"r"r#rysrcCstjdtdd�t|�S)NzWurllib.parse.splitpasswd() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splitpasswd)rr"r"r#� splitpasswds �r!cCs |�d�\}}}||r|ndfS�Nr]�rQ)rr�Zpasswdr"r"r#r �sr cCstjdtdd�t|�S)NzUurllib.parse.splitport() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splitportrr"r"r#� splitport�s �r%cCsDtdkrt�dtj�at�|�}|r<|��\}}|r<||fS|dfS)Nz (.*):([0-9]*))� _portprogrrr� fullmatchr)rrrXr"r"r#r$�s  r$r�cCstjdtdd�t||�S)NzVurllib.parse.splitnport() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splitnport)r�defportr"r"r#� splitnport�s �r*cCsT|�d�\}}}|s|}n2|rLz t|�}Wntk rBd}YnX||fS||fSr")r`rVrW)rr)r�rXZnportr"r"r#r(�s  r(cCstjdtdd�t|�S)NzVurllib.parse.splitquery() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splitqueryrr"r"r#� splitquery�s �r,cCs$|�d�\}}}|r||fS|dfS)Nr�r)rrr�r�rr"r"r#r+�sr+cCstjdtdd�t|�S)NzTurllib.parse.splittag() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splittagrr"r"r#�splittag�s �r.cCs$|�d�\}}}|r||fS|dfSrnr)rrr�r��tagr"r"r#r-�sr-cCstjdtdd�t|�S)NzUurllib.parse.splitattr() is deprecated as of 3.8, use urllib.parse.urlparse() insteadr�r�)r�r�r� _splitattrrr"r"r#� splitattr�s �r1cCs|�d�}|d|dd�fS)Nryrr8r�)rrZwordsr"r"r#r0�s r0cCstjdtdd�t|�S)NzWurllib.parse.splitvalue() is deprecated as of 3.8, use urllib.parse.parse_qsl() insteadr�r�)r�r�r� _splitvalue)�attrr"r"r#� splitvalue�s �r4cCs |�d�\}}}||r|ndfS)Nr�r#)r3r�r�r"r"r#r2�sr2)rT)r)rT)T)r�r�)FFr�r�NN)FFr�r�NN)r�r�)r�NN)rNN)r�)r�)r�)nrr�r�� collectionsr��__all__r�r�rzZnon_hierarchicalZ uses_queryZ uses_fragmentr�r�r�r�rr$Z_implicit_encodingZ_implicit_errorsr(r-r7r=r�r>rFrHr[rhrmZ_DefragResultBaseZ_SplitResultBaseZ_ParseResultBase�__doc__rrrqr|r_r�rr�Z ResultBaserrrrrrrxrr{r�r�r�rrrrrr�r�rrr�rr �RuntimeWarningr�r�r�r r� frozensetr�r�r�r!� defaultdictr�r r r rrrr rrrrrrrrr!r r%r&r$r*r(r,r+r.r-r1r0r4r2r"r"r"r#�"s�� � � ��� �  � � %  ��         ?  E  � )� }  6  � Q