
                            d dl Z d dlZd dlZddl  ej
                  d      Zd Zdej                  z   ej                  z   Z
 ej                  e
      j                  d      Z ej                   ej                  dej                  z   ej                  z          ej                  d	      z         j                  d
      Zej"                  j%                         j                  d      j'                  e      Zej%                         j                  d      j+                  ej,                        Ze ej0                  d	      z   eez  z   Z ej4                   ej6                   ej8                  e                  Z ed      Ze ed       ed      z  z   Zej%                         Z  ej6                   ej8                  e            Z!ddZ"ddZ#y)    N   )*z\\(.)c                 :    t         j                  d|d   dd       S )Nz\1r   r   )UNQUOTE_PAIRSsub)slts      0platform/bq/third_party/httplib2/python3/auth.py<lambda>r   	   s    -++E1Q4":>    z!#$%&'*+-.^_`|~tokenz-._~+/=token68zquoted-stringzauth-param-nameschemeparamsc                     | j                  |d      j                         }|si S 	 t        j                  |      }|j                         S # t        j
                  $ r}t        |      d}~ww xY w)z(https://tools.ietf.org/html/rfc7615
     N)getstripauthentication_infoparseStringppParseExceptionMalformedHeaderasDict)headers
headernameheaderparsedexs        r   _parse_authentication_infor#      sk     [[R(..0F	*$008
 ==?	  *j))*s   A A.A))A.c                 b   | j                  |d      j                         }|si S 	 t        j                  |      }|D ci c]>  }|d   j                         d|v r|d   j                         nd|j                  d      i@ }}|S # t        j
                  $ r}t        |      d}~ww xY wc c}w )z?Returns a dictionary of dictionaries, one dict per auth_scheme.r   Nr   r   r   )	r   r   www_authenticater   r   r   r   lowerr   )r   r   r    r!   r"   	challengeretvals          r   _parse_www_authenticater)   ,   s    [[R(..0F	*!--f5  	  I 	(!!#y  &/x%8%?%?%Ay}}W-.	/  	   M  *j))*s   B AB,B)B$$B))zauthentication-info)zwww-authenticate)$base64re	pyparsingr   errorcompiler   unquotenumsalphastcharWordsetNamer   Combine
ZeroOrMorer   dblQuotedStringcopysetParseActionquoted_stringaddParseActiondowncaseTokensauth_param_nameSuppress
auth_paramDictdelimitedListGroupr   r   r'   r   r%   r#   r)    r   r   <module>rD      s    	  

8$
> 	BGG#bii/w'
"**WRWWX/"));<}r}}S?QQ
R
Z
Z[d
e""'')11/BQQRYZ**,&&'89HHIZIZ[{r{{3//5=3HI
	!!!("((:"67	8	xgg&)99:	kkm #2##HBHHY$78 r   