
    )JfX                     <   d dl Z d dlmZ dZ e j        e          Z e j        de j                  ZdZ e j        e          Z	dZ
 e j        e
          Zdgdz  Z e ed	           ed
          dz             D ]Zdee<    e ed           ed          dz             D ]Zdee<    e ed           ed          dz             D ]Zdee<   de ed          <   de ed          <   de ed          <   de ed          <   d Zd Zd Zd ZdS )    N)	codecutilz9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?z$[^-A-Za-z0-9:/?#[\]@!$&'()*+,;=._~%]z^([^@]*@)?([^:]*)(:.*)?z%([0-9A-Fa-f]{2})F   AZ   T09az-._~c                    	 t          |                     d          d          }t          |         rt          |          S |                                                                 S # t
          $ r |                                 cY S w xY wNr      )intgroup_unreservedchrupper
ValueError)mois     Q/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/openid/urinorm.py_pct_encoded_replace_unreservedr   &   s    R  q> 	&q66M88::##%%%   xxzzs   >A' %A' 'BBc                     	 t          t          |                     d          d                    S # t          $ r |                                 cY S w xY wr   )r   r   r   r   )r   s    r   _pct_encoded_replacer   2   sX    3rxx{{B''(((   xxzzs   /2 AAc                    g }| r3|                      d          r| dd          } n|                      d          r| dd          } n|                      d          r| dd          } n| dk    rd} n|                      d          r!| dd          } |r|                                 n| d	k    rd} |r|                                 nq| d
k    s| dk    rd} nbd}| d         dk    rd}|                     d|          }|dk    rt          |           }|                    | d |                    | |d          } | 3d                    |          S )Nz../   z./   z/./z/./z/../z/..z..r    r   r   )
startswithpopfindlenappendjoin)pathresult_segmentsr   s      r   remove_dot_segmentsr-   9   s   O
 ??5!! 	8DD__T"" 	8DD__U## 	8DDT\\DD__V$$ 	8D &##%%%U]]D &##%%%T\\TS[[DDAAw#~~		#q!!ABwwII""48,,,8D7  : 77?###    c                 ^   t          | t                    rt          | d          } |                     dd                              d          } t
                              |           }|r9t          d|                                d|	                                          t                              |           }|                    d          }|t          d
          |                                }|dvrt          d|           |                    d          }|t          d|           t                              |          }|t          d|           |                                \  }}}|d}d|v r\|                                }t                              t"          |          }|                    d                                          }n|                                }|r!|dk    s|dk    r|dk    s|dk    r|dk    rd}nd}||z   |z   }|                    d          }	t                              t$          |	          }	t'          |	          }	|	sd}	|                    d          }
|
d}
|                    d          }|d}|dz   |z   |	z   |
z   |z   S )z
    Normalize a URI
    zutf-8)encodingasciioid_percent_escape)errorszIllegal characters in URI: z at position r!   NzNo scheme specified)httphttpsz#Not an absolute HTTP or HTTPS URI:    zNot an absolute URI: z%URI does not have a valid authority: r#   %idna:r4   z:80r5   z:443   r"         z://)
isinstancebytesstrencodedecodeuri_illegal_char_researchr   r   starturi_rematchlowerauthority_regroupspct_encoded_resubr   r   r-   )uri
illegal_mouri_moscheme	authorityauthority_mouserinfohostportr+   queryfragments               r   urinormrW   \   s   
 #u )#(((
**W%9*
:
:
A
A'
J
JC %++C00J Cj$**,,,,j.>.>.@.@.@B C C 	C \\#F\\!__F~.///\\^^F&&&jCCJKKKQIjcc<===%%i00LjccLMMM'..00HdD
d{{zz||!!"6=={{6""))++zz|| CKKFf,,w46>>D4$&I<<??D=tDDDt$$D LLOOE}||AHE>I%,u4x??r.   )reopenidr   uri_patterncompilerE   UNICODErB   authority_patternrH   pct_encoded_patternrJ   r   rangeordr   r   r   r-   rW    r.   r   <module>rb      s   				       K	K	 	  !bj!H!#- -  / rz+,,* /00gm	ss3xxSA	&	&  AKNN	ss3xxSA	&	&  AKNN	ss3xxSA	&	&  AKNNCCHH CCHH CCHH CCHH 	 	 	   $  $  $FE@ E@ E@ E@ E@r.   