� M�gn,��~�ddlmZddlmZddlZddlmZejdej���Z ejd��Z ejd��Z d Z d e zZ d e zZd ezZd ZdZejd��Zejd��Zeeddd���Zeeddddddddddd� ��ZGd�d��Zdd�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)� javascriptz javascript:) �http�https�ftp�gopher�filezhttp:zhttps:zftp:zgopher:zfile:c�&�eZdZd d�Zdd �Zdd �Zd S)� MutableURL�return�Nonec�v�d|_d|_d|_d|_d|_d|_d|_d|_dS)NF)�protocol�slashes�auth�port�hostname�hash�search�pathname)�selfs �\/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/mdurl/_parse.py�__init__zMutableURL.__init__js>��$(�� �"�� � $�� � $�� �$(�� � $�� �"&�� �$(�� � � ��url�str�slashes_denote_host�bool� 'MutableURL'c� �d}d}|}|���}|s�t|�d����dkrgt�|��}|rK|�d��|_|�d��r|�d��|_|Sd}t�|��}|rF|���}|� ��}||_ |t|��d�}|s|stjd|��r7|� d��}|r |r t|s|dd�}d|_t|�s�|s|�r}t|�sod } t!tt"����D]6} |�t"| ��} | d kr| d ks| | kr| } �7| d kr|�d ��} n|�d d | dz��} | d kr|d| �} || dzd�}| |_d } t!tt*����D]6} |�t*| ��} | d kr| d ks| | kr| } �7| d krt|��} | d kr|| dz d kr| dz} |d| �}|| d�}|�|��|jpd|_|j� d ��o|j�d��}|�s�|j�d��}t|��}d } | |k�rX|| }|s| dz } �t2�|���s!d}t|��}d }||kr5t5||��dkr|dz }n |||z }|dz }||k�5t2�|��s�|d| �}|| dzd�}t6�|��}|rQ|�|�d����|�d |�d����|rd�|��|z}d�|��|_n | dz } | |k��Xt|j��t>krd|_|r|jdd �|_|�d��}|d kr||d�|_ |d|�}|�d��}|d kr||d�|_|d|�}|r||_t|r|jr|jsd|_|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.r2r4� lower_protor'�rest� simple_path�proto� proto_match�host_end�i�hec�at_signr(�host� ipv6_hostname� hostparts�l�part�newpart�k�j� valid_parts�not_host�bitr+�qms r/�parsezMutableURL.parsets���� ������z�z�|�|��"� �s�3�9�9�S�>�>�':�':�a�'?�'?�-�3�3�D�9�9�K�� � +� 1� 1�!� 4� 4�� ��$�$�Q�'�'�7�"-�"3�"3�A�"6�"6�D�K�� ���&�,�,�T�2�2� � � &��%�%�'�'�E��+�+�-�-�K�!�D�M���E� � � � �%�D� � $�%� $�2�9�5H�$�+O�+O� $��o�o�d�+�+�G�� $�� $�*;�E�*B� $��A�B�B�x��#�� � ��'�s 4� �s 4��s 4�&6�u�&=�s 4�(�H��3�0�1�1�2�2� #� #���i�i� 1�!� 4�5�5���"�9�9�(�b�.�.�C�(�N�N�"�H���2�~�~��*�*�S�/�/����*�*�S�!�X��\�:�:���"�}�}��H�W�H�~���G�a�K�M�M�*�� �� ��H��3�~�.�.�/�/� #� #���i�i��q� 1�2�2���"�9�9�(�b�.�.�C�(�N�N�"�H���2�~�~��t�9�9���!�|�|��X��\� 2�c� 9� 9��A� ��� �� �?�D��� � �?�D� �O�O�D� !� !� !�!�M�/�R�D�M�!�M�4�4�S�9�9��d�m�>T�>T��?�?�M� !�# � �M�/�/��4�4� �� �N�N�����!�e�e�$�Q�<�D��!��Q��� �0�7�7��=�=�"�"$����I�I�����!�e�e�"�4��7�|�|�c�1�1�!(�3���� '�4��7� 2����F�A� �!�e�e� 5�;�;�G�D�D� "�*3�B�Q�B�-�K�'0��Q����'9�H�"5�"<�"<�T�"B�"B�C�"�A� +� 2� 2�3�9�9�Q�<�<� @� @� @� (����3�9�9�Q�<�<� @� @� @�'�A�'*�x�x��'9�'9�D�'@��,/�H�H�[�,A�,A�D�M�!���F�A�?�!�e�e�B�4�=�!�!�$4�4�4� "�� �� 4� $� �a��d� 3�� ��y�y��~�~�� �2�:�:��T�U�U� �D�I�����;�D� �Y�Y�s�^�^�� ��8�8��r�s�s�)�D�K�����9�D� � !� �D�M� �K� (� �T�]� �4�=� ��D�M�� r1rfc���t�|��}|rA|���}|dkr|dd�|_|dt |�� �}|r ||_dSdS)Nr=r9)� PORT_PATTERNr,rHr)rDr*)r.rf� port_matchr)s r/rTzMutableURL.parse_hostsy��!�(�(��.�.� � � &��#�#�%�%�D��s�{�{� ����H�� �� �3�t�9�9�*� �%�D� � !� �D�M�M�M� !� !r1N)r#r$)r2r3r4r5r#r6)rfr3r#r$)�__name__� __module__� __qualname__r0rrrT�r1r/r"r"isU������)�)�)�)�h�h�h�h�T!�!�!�!�!�!r1r"F)r4r2� URL | strr4r5r#rc ���t|t��r|St��}|�||��t|j|j|j|j|j|j |j |j ��S)N) � isinstancerr"rrr&r'r(r)r*r+r,r-)r2r4�us r/� url_parser~)sj���#�s����� �� � �A��G�G�C�$�%�%�%� � � �A�I�q�v�q�v�q�z�1�6�1�8�Q�Z� � �r1)r2rzr4r5r#r)� __future__r� collectionsrrK� mdurl._urlr�compile� IGNORECASErIrtrF�DELIMS�UNWISE� AUTO_ESCAPErSrPr\rVrXr5rMrNr"r~ryr1r/�<module>r�s���T#�"�"�"�"�"�#�#�#�#�#�#� � � � ������� �2�:�1���G�G�G���r�z�+�&�&� �!�b�j�!B�C�C�� 5�� )�6� 1���v�o� � +�[�8��#����"�� �#<�=�=�� �b�j�!@�A�A�� �K����������;������������ � ����"}!�}!�}!�}!�}!�}!�}!�}!�@>C��������r1
Memory