
    ?wg;                         d dl Z d dlZd dlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ  e j2                  d      Z e j2                  d      ZddZd	 Zd
 Zd Zd Z d Z!d Z"d Z#y)    N)ascii_lower   )AtKeywordTokenCommentCurlyBracketsBlockDimensionTokenFunctionBlock	HashToken
IdentTokenLiteralTokenNumberTokenParenthesesBlock
ParseErrorPercentageTokenSquareBracketsBlockStringTokenUnicodeRangeTokenURLTokenWhitespaceToken)serialize_string_valueserialize_urlz([-+]?([0-9]*\.)?[0-9]+([eE][+-]?[0-9]+)?z([0-9A-Fa-f]{1,6})[ \n\t]?c           
      p   | j                  dd      j                  dd      j                  dd      j                  dd      } t        |       }dx}}d}d	}g x}}d
}	g }
||k  rR| j                  d||      }|d	k7  r|d| j                  d||      z   z  }|}||z
  }|}| |   }|dv rQ|dz  }| j	                  d|      r|dz  }| j	                  d|      r| || }|j                  t        |||             |dv rN|dz   |k  rF| |dz      dk(  r;| |dz      dv r1t        | |dz         \  }}}|j                  t        ||||             | j	                  d|      r#|j                  t        ||d             |dz  }!t        | |      rIt        | |      \  }}| j	                  d|      s|j                  t        |||             m|dz  }t        |      dk(  r|}| j	                  d|      r|dz  }| j	                  d|      r||k\  s| |   dvrt        | |      \  }}}|Udj                  t!        |            }||d   }|dk(  r|d
d }n|dk(  sJ |d
d	 }|j                  t#        ||||             ||j                  t%        ||g|        ?g }|j                  t'        ||||             |
j                  ||	f       d}	|}wt(        j+                  | |      }|r|j-                         }| || }t/        |      }t1        |j3                               st5        |      nd
}||k  r<t        | |      r0t        | |      \  }}|j                  t7        ||||||             n;| j	                  d|      r%|dz  }|j                  t9        |||||             n|j                  t;        |||||             n|dk(  ra|dz  }||k  r9t        | |      r-t        | |      \  }}|j                  t=        |||             n|j                  t        ||d             n~|dk(  r|dz  }||k  rl| |   dv s+t?        | |         dkD  s| |   d k(  rL| j	                  d!|      s:t        | |      }t        | |      \  }}|j                  tA        ||||             n|j                  t        ||d             n|d"k(  r<g }|j                  tC        |||             |
j                  ||	f       d#}	|}|dz  }n|d$k(  r<g }|j                  tE        |||             |
j                  ||	f       d%}	|}|dz  }nc|dk(  r<g }|j                  tG        |||             |
j                  ||	f       d}	|}|dz  }n"||	k(  r|
jI                         \  }}	|dz  }n|d&v r'|j                  t%        |||d'|z                |dz  }n|dv rqtK        | |      \  }}}|>d(j                  tM        |            }||d
d	 }|j                  tO        ||||             ||j                  t%        ||g|        nc| j	                  d)|      rk| jQ                  d*|dz         }|d	k(  r'|s"|j                  tS        ||| |dz   d
              	 |S |s"|j                  tS        ||| |dz   |              |dz  }n| j	                  d+|      r"|j                  t        ||d+             |d,z  }n| j	                  d-|      r"|j                  t        ||d-             |dz  }n~|d.v rY|dz  }| j	                  d/|      r%|dz  }|j                  t        |||d/z                n>|j                  t        |||             n!|j                  t        |||             |dz  }||k  rR|S )0aw  Parse a list of component values.

    :type css: :obj:`str`
    :param css: A CSS string.
    :type skip_comments: :obj:`bool`
    :param skip_comments:
        Ignore CSS comments.
        The return values (and recursively its blocks and functions)
        will not contain any :class:`~tinycss2.ast.Comment` object.
    :returns: A list of :term:`component values`.

        �z

r   r   N 
	 r   	Uu   +z0123456789abcdefABCDEF?z-->   (url"'zurl({})eof-in-string
eof-in-url)%@#z@0123456789abcdefghijklmnopqrstuvwxyz-_ABCDEFGHIJKLMNOPQRSTUVWXYZ   \\
{}[]z}])z
Unmatched z"{}"z/*z*/z<!--   z||z~|^$*=)*replacelenrfindcount
startswithappendr   _consume_unicode_ranger   r   _is_ident_start_consume_identr   r   _consume_urlformatr   r   r   r	   
_NUMBER_REmatchendfloatanygroupsintr   r   r   r   ordr
   r   r   r   pop_consume_quoted_stringr   r   findr   )cssskip_commentslengthtoken_start_posposlinelast_newlineroottokensend_charstacknewlinecolumncvaluestartrI   url_poserrorrepr	error_key	argumentsrH   repr_	int_valueunitis_identifiercontents                               I/var/www/horilla/myenv/lib/python3.12/site-packages/tinycss2/tokenizer.pyparse_component_value_listrm      s    ;;tX&GFD!''$"5ggdD6I  XFOcDLD6HE
,))D/37b=A		$AAAD"L|#H<1HC..!2C8q ..!2C8,EMM/$>?4iC!Gf,S1W1D#'l774S#'BOE3MM+D&%EF^^E3'MM,tVU;<1HCS#&'S1JE3>>#s+jvu=>1HC5!U*nn%6@qLG nn%6@f$GJ(F(4S#(>%E3((//e0DE ,(-aI(O;'+CRy'0L'@ @'@'+CRyhtVUD&IJ(jv&F&FGIMM-feYGHLL&(+,HF  c*))+C,E%LE*-elln*=E
4IV|S 9*34	cn&%E4A BS)qodFE9eTUk$y%PQ#X1HCV|S 9+C5
snT65ABl4=>#X1HCV|H !? ?CMD(X%cnnVS.I /S 9+C5
sife]KLl4=>#XGMM,T67CDLL&(+,HF1HC#XGMM-dFGDELL&(+,HF1HC#XGMM*4ABLL&(+,HF1HC(]  %yy{FH1HC%ZMM*T61lQ6FGH1HC*_ 6sC @E3 }}%;E%BC$9Dk$tDE jv>>?^^D#&((4q)Cby$MM'$Oa<O<P8Q"RS( K' !gdFC!8KC4PQR1HC^^FC(MM,tVV<=1HC^^D#&MM,tVT:;1HC'\1HC~~c3'ql4SABl4;<MM,tVQ781HCw ,x K    c                 4    | |   }|dv xs t        |      dkD  S )z>Return true if the given character is a name-start code point.5abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_r3   )rN   )rR   rV   r_   s      rl   _is_name_startrq      s+     	CA	DD 	Arn   c                    t        | |      ry| |   dk(  rT|dz  }|t        |       k  xr t        | |      xs | |   dk(  xs' | j                  d|      xr | j                  d|       S | |   dk(  r| j                  d|       S y)zCReturn True if the given position is the start of a CSS identifier.T-r   r4   r5   F)rq   r=   r@   )rR   rV   s     rl   rC   rC      s     c3	SSq 3s8^MS!9!LSX_ L^^D#&Js~~fc/J+J		M
 
ST	>>&#...rn   c                 b   g }t        |       }|}||k  ru| |   }|dv st        |      dkD  r|dz  }nR|dk(  rL| j                  d|      s:|j                  | ||        t	        | |dz         \  }}|j                  |       |}nn||k  ru|j                  | ||        dj                  |      |fS )ztReturn (unescaped_value, new_pos).

    Assumes pos starts at a valid identifier. See :func:`_is_ident_start`.

    z@abcdefghijklmnopqrstuvwxyz-_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZr3   r   r4   r5    )r=   rN   r@   rA   _consume_escapejoin)rR   rV   chunksrT   	start_posr_   s         rl   rD   rD      s     FXFI
,H . /25a&4-1HC$Ys~~fc:MM#i,-$S#'2FAsMM!I , MM#i$%776?Crn   c                    d}| |   }|dv sJ |dz  }g }t        |       }|}||k  r| |   }||k(  r|j                  | ||        |dz  }n|dk(  rO|j                  | ||        |dz  }||k  r.| |   dk(  r|dz  }n t        | |      \  }}|j                  |       |}n|dk(  rd|dfS |dz  }||k  rd}|j                  | ||        dj                  |      ||fS )	z"Return (unescaped_value, new_pos).Nr)   r   r4   r   )z
bad-stringzBad string token)r,   zEOF in stringru   )r=   rA   rv   rw   )rR   rV   rc   quoterx   rT   ry   r_   s           rl   rP   rP      s(    EHEJ1HCFXFI
,H:MM#i,-1HC$YMM#i,-1HCV|s8t#1HC,S#6FAsMM!$I$Y@@@1HC) ,, 3c)C()776?C&&rn   c                    t         j                  | |      }|rTt        |j                  d      d      }d|cxk  rt        j
                  k  rn nt        |      nd|j                         fS |t        |       k  r
| |   |dz   fS d|fS )ztReturn (unescaped_char, new_pos).

    Assumes a valid escape: pos is just after '\' and not followed by '\n'.

    r      r   r   )	_HEX_ESCAPE_RErH   rM   groupsys
maxunicodechrrI   r=   )rR   rV   	hex_match	codepoints       rl   rv   rv   "  s     $$S#.I	*B/	)=s~~=C	N8MMO 	 
s3x3xq  }rn   c                    d}t        |       }| j                  d|      r|dz  }| j                  d|      r||k\  rd|dfS | |   }|dv rt        | |      \  }}}n|dk(  rd|dz   |fS g }|}	 ||k\  r(|j                  | ||        dj	                  |      |dfS | |   }|dk(  r-|j                  | ||        |dz  }dj	                  |      ||fS |dv r+|j                  | ||        dj	                  |      }|dz  }nc|d	k(  rL| j                  d
|      s:|j                  | ||        t        | |dz         \  }}|j                  |       |}n|dv rd}|dz  }n|dz  }|H| j                  d|      r|dz  }| j                  d|      r||k  r| |   dk(  r||dz   |fS |d}|||fS ||k  r1| j                  d|      r|dz  }n| |   dk(  r|dz  }n|dz  }||k  r1d|dfS )zgReturn (unescaped_url, new_pos)

    The given pos is assumed to be just after the '(' of 'url('.

    Nr    r   ru   )r.   z
EOF in URLr)   r/   r   r4   r5   z "'( z\)r$   )zbad-urlzbad URL token)r=   r@   rP   rA   rw   rv   )rR   rV   rc   rT   r_   r`   rx   ry   s           rl   rE   rE   5  s}    EXF ..*C
0q ..*C
0
f}3444CAJ23<sE	
c37E!!	f}c)C01wwv-IIICACxc)C01qwwvU22gc)C01qd3>>&##>c)C01(cAg63a 	11 qq= @ nn.41HC nn.4<3x3cAgu,,}4#u$$ ,>>%%1HCX_1HC1HC , 222rn   c                    t        |       }|}t        |dz   |      }||k  r| |   dv r|dz  }||k  r| |   dv r| || }|}||k  r| |   dk(  r|dz  }||k  r	| |   dk(  r||z
  }|r|d|z  z   }|d|z  z   }nV|dz   |k  rL| |   dk(  rD| |dz      dv r:|dz  }|}t        |dz   |      }||k  r| |   dv r|dz  }||k  r| |   dv r| || }n|}t        |d      t        |d      |fS )	zdReturn (range, new_pos)

    The given pos is assume to be just after the '+' of 'U+' or 'u+'.

       0123456789abcdefABCDEFr   ?F0rs   r}   )r=   minrM   )rR   rV   rT   ry   max_posra   question_marksrI   s           rl   rB   rB     s[    XFI#'6"G
-CH(@@q -CH(@@	#EI
-CHOq -CHO9_NcN**n,,
'F
s3x3
cAg,2
2q	cAgv&GmC,D D1HC GmC,D D)C ub>3sB<,,rn   )F)$rer   webencodingsr   astr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   
serializerr   r   compilerG   r~   rm   rq   rC   rD   rP   rv   rE   rB    rn   rl   <module>r      s{    	 
 $    
 >RZZCD
9:tn" 6"'J&J3Z!-rn   