
    qhX                        S SK r S SKJr  Sr\ R                  " \5      r\ R                  " S\ R                  5      rSr\ R                  " \5      r	Sr
\ R                  " \
5      rS/S-  r\" \" S	5      \" S
5      S-   5       H  rS\\'   M
     \" \" S5      \" S5      S-   5       H  rS\\'   M
     \" \" S5      \" S5      S-   5       H  rS\\'   M
     S\\" S5      '   S\\" S5      '   S\\" S5      '   S\\" S5      '   S rS rS rS rg)    N)	codecutilz9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?z$[^-A-Za-z0-9:/?#[\]@!$&'()*+,;=._~%]z^([^@]*@)?([^:]*)(:.*)?z%([0-9A-Fa-f]{2})F   AZ   T09az-._~c                      [        U R                  S5      S5      n[        U   (       a  [        U5      $ U R                  5       R	                  5       $ ! [
         a    U R                  5       s $ f = fNr      )intgroup_unreservedchrupper
ValueError)mois     @/var/www/html/env/lib/python3.13/site-packages/openid/urinorm.py_pct_encoded_replace_unreservedr   &   s[    R q>q6M88:##%% xxzs   3A A A10A1c                      [        [        U R                  S5      S5      5      $ ! [         a    U R                  5       s $ f = fr   )r   r   r   r   )r   s    r   _pct_encoded_replacer   2   s<    3rxx{B'(( xxzs   #& AAc                 Z   / nU (       Ga  U R                  S5      (       a  U SS  n OU R                  S5      (       a  U SS  n OU R                  S5      (       a  U SS  n OU S:X  a  Sn OU R                  S5      (       a  U SS  n U(       a  UR                  5         OwU S	:X  a  Sn U(       a  UR                  5         OWU S
:X  d  U S:X  a  Sn OHSnU S   S:X  a  SnU R                  SU5      nUS:X  a  [        U 5      nUR	                  U S U 5        XS  n U (       a  GM  SR                  U5      $ )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!!8D__T""8D__U##8DT\D__V$$8D##%U]D##%T\TS[DAAw#~		#q!ABwI""48,8D7 $: 77?##    c                    [        U [        5      (       a
  [        U SS9n U R                  SSS9R	                  S5      n [
        R                  U 5      nU(       a/  [        SUR                  5       < SUR                  5       < 35      e[        R                  U 5      nUR                  S5      nUc  [        S	5      eUR                  5       nUS
;  a  [        SU < 35      eUR                  S5      nUc  [        SU < 35      e[        R                  U5      nUc  [        SU < 35      eUR                  5       u  pgnUc  SnSU;   aJ  UR                  5       n[        R!                  ["        U5      nUR                  S5      R	                  5       nOUR                  5       nU(       a!  US:X  d  US:X  a  US:X  d  US:X  a  US:X  a  SnOSnXg-   U-   nUR                  S5      n	[        R!                  [$        U	5      n	['        U	5      n	U	(       d  Sn	UR                  S5      n
U
c  Sn
UR                  S5      nUc  SnUS-   U-   U	-   U
-   U-   $ )z
Normalize a URI
zutf-8)encodingasciioid_percent_escape)errorszIllegal characters in URI: z at position r!   z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   \   s1   
 #u#(
**W%9*
:
A
A'
JC %++C0J$**,j.>.>.@B C 	C \\#F\\!_F~.//\\^F&&CJKKQIc<==%%i0LcLMM'..0HD
d{zz|!!"6={{6"))+zz|CKFf,w46>D$&I<<?D=tDDt$DLLOE}||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      s4   	  K	K	  jj!H!#-  / zz+,* /0gm	s3xSA	&AKN 
'	s3xSA	&AKN 
'	s3xSA	&AKN 
'CH CH CH CH 	 $FE@r.   