o
    jW                     @   s   d Z ddlZddlZddlZdd Zd"ddZd"dd	Zd"d
dZd#ddZd$ddZ	dd Z
dd ZG dd dejZG dd dejZG dd dejZG dd dejZejdd Zeejd d!d  ZdS )%zPython codec for CSS.    Nc                 C   s   d dd | D S )N c                 s   s    | ]}t |V  qd S N)chr).0byte r   O/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/cssutils/codec.py	<genexpr>   s    zchars.<locals>.<genexpr>)join)
bytestringr   r   r   chars   s   r   Fc                 C   s  d}d}d}d}d}d}d}d}	d	}
d
}d}t | }|dkr!| d }|dkr,|| M }|dkr7|||B  M }|dkr@|| M }|dkrM||	|B |B  M }|dkrZ|||
B |B  M }|dkr!| d }|dkrl|| M }|dkrw|||B  M }|dkr|| M }|dkr|||B |	B |
B  M }|dkr|| M }|dkr|| M }|dkr!| d }|dkr|| M }|dkr|| M }|dkr|||	B |
B  M }|dkr|| M }|dkr|| M }|dkr!| d }| dd ddd kr|| M }|dkr|||B |	B  M }|dkr|| M }|dkr||
 M }|dkr!|| M }|dkr(dS ||d @ s||kr;|dkr;dS ||krG|dkrGdS ||krS|dkrSdS ||kr_|dkr_dS ||krk|dkrkdS ||krw|dkrwdS ||kr|dkrdS ||	kr|dkrdS ||
kr|dkrdS ||kr|dkrd}t| }|d t | |kr|d!t |}|dkr|t || d"fS |rdS d#S )$a%  
    Detect the encoding of the byte string ``input``, which contains the
    beginning of a CSS file. This function returns the detected encoding (or
    ``None`` if it hasn't got enough data), and a flag that indicates whether
    that encoding has been detected explicitely or implicitely. To detect the
    encoding the first few bytes are used (or if ``input`` is ASCII compatible
    and starts with a charset rule the encoding name from the rule). "Explicit"
    detection means that the bytes start with a BOM or a charset rule.

    If the encoding can't be detected yet, ``None`` is returned as the encoding.
    ``final`` specifies whether more data will be available in later calls or
    not. If ``final`` is true, ``detectencoding_str()`` will never return
    ``None`` as the encoding.
                       @         i   i  r               c         h   s     a   utf-8F)	utf-8-sigT)zutf-16T)z	utf-16-leF)z	utf-16-beF)zutf-32T)z	utf-32-leF)z	utf-32-beF
@charset "N"TNF)lenr   find)inputfinalZCANDIDATE_UTF_8_SIGZCANDIDATE_UTF_16_AS_LEZCANDIDATE_UTF_16_AS_BEZCANDIDATE_UTF_16_LEZCANDIDATE_UTF_16_BEZCANDIDATE_UTF_32_AS_LEZCANDIDATE_UTF_32_AS_BEZCANDIDATE_UTF_32_LEZCANDIDATE_UTF_32_BEZCANDIDATE_CHARSET
candidateslicprefixZ
charsinputposr   r   r   detectencoding_str   s   

























r.   c                 C   sT   d}|  |r| dt|}|dkr| t|| dfS dS |s&| | s(dS dS )a  
    Detect the encoding of the unicode string ``input``, which contains the
    beginning of a CSS file. The encoding is detected from the charset rule
    at the beginning of ``input``. If there is no charset rule, ``"utf-8"``
    will be returned.

    If the encoding can't be detected yet, ``None`` is returned. ``final``
    specifies whether more data will be available in later calls or not. If
    ``final`` is true, ``detectencoding_unicode()`` will never return ``None``.
    r"   r#   r   Tr   r$   )
startswithr&   r%   )r'   r(   r,   r-   r   r   r   detectencoding_unicode   s   
r0   c                 C   s   d}t | t |kr4| |r2| dt |}|dkr1|dd dkr'd}|| | |d  S n| S || r;|r=| S |rA| S dS )	a  
    Replace the name of the encoding in the charset rule at the beginning of
    ``input`` with ``encoding``. If ``input`` doesn't starts with a charset
    rule, ``input`` will be returned unmodified.

    If the encoding can't be found yet, ``None`` is returned. ``final``
    specifies whether more data will be available in later calls or not.
    If ``final`` is true, ``_fixencoding()`` will never return ``None``.
    r"   r#   r   _-r!   r    N)r%   r/   r&   replacelower)r'   encodingr(   r,   r-   r   r   r   _fixencoding   s   

r6   strictTc                 C   s   z|   } W n	 ty   Y nw |d u s|s/t| d\}}|dkr%td|r)|r-|d u r/|}t|| |\} }t| t|d|fS )NTcss css not allowed as encoding name)tobytesAttributeErrorr.   
ValueErrorcodecs
getdecoderr6   str)r'   errorsr5   force	_encodingexplicitconsumedr   r   r   decode   s"   rE   c                 C   s|   t | }|d u r t| dd }|dd dkrt| dd} nt| t|d} |dkr0tdt|}|| |d |fS )	NTr   r1   r2   r!   r    r8   r9   )	r%   r0   r3   r4   r6   r?   r<   r=   
getencoder)r'   r@   r5   rD   encoderr   r   r   encode   s   
rH   c                 C   s"   d}| D ]
}|d> t | }q|S )Nr   r   ord)bytesir   r   r   r   
_bytes2int   s   rM   c                 C   s2   g }| r| dt| d@  | dL } | sd|S )Nr   r   r   r   )insertr   r
   )rL   vr   r   r   
_int2bytes  s   
rP   c                   @   sZ   e Zd ZdddZdd Zdd	d
Zdd Zdd Zdd Ze	eeZ
dd Zdd ZdS )IncrementalDecoderr7   NTc                 C   s6   d | _ || _|| _tj| | || _d| _d| _d S N    F)	decoderr5   rA   r=   rQ   __init___errorsbufferheaderfixed)selfr@   r5   rA   r   r   r   rU     s   
zIncrementalDecoder.__init__c                 c   @    |D ]}|  |d}|r|V  q|  dd}|r|V  d S d S NFr   T)rE   rY   r'   partresultr   r   r   
iterdecode     
zIncrementalDecoder.iterdecodeFc                 C   s   | j d u rF| j| }| jd u s| js7t||\}}|d u r"|| _dS |dkr*td|r/| jr4| jd u r7|| _d| _t| j}|| j| _ | j	rP| j 
||S | j| j 
|| }| j}|dd dkrid}t|t||}|d u rz|| _dS d| _	|S )	Nr   r8   r9   r1   r2   r!   r    T)rT   rW   r5   rA   r.   r<   r=   getincrementaldecoderrV   rX   rE   r3   r4   r6   r?   )rY   r'   r(   r5   rC   rT   output	newoutputr   r   r   rE   $  s<   


zIncrementalDecoder.decodec                 C   s"   t j|  d | _d| _d| _d S rR   )r=   rQ   resetrT   rW   rX   rY   r   r   r   rd   K  s   
zIncrementalDecoder.resetc                 C      | j S r   rV   re   r   r   r   
_geterrorsQ     zIncrementalDecoder._geterrorsc                 C      | j d ur	|| j _|| _d S r   )rT   r@   rV   rY   r@   r   r   r   
_seterrorsT     

zIncrementalDecoder._seterrorsc                 C   sL   | j d ur| j| j| jd| j  f}n
| j| j| jdd f}dtt|fS )NTFr   )rT   r5   rW   rX   getstaterM   marshaldumpsrY   stater   r   r   rn   \  s   
zIncrementalDecoder.getstatec                 C   sn   t t|d }|d | _|d | _|d | _|d d ur2t| j| j| _	| j	
|d  d S d | _	d S )Nr   r   r   r   r   )rP   ro   loadsr5   rW   rX   r=   ra   rV   rT   setstaterq   r   r   r   rt   i  s   



zIncrementalDecoder.setstater7   NTF)__name__
__module____qualname__rU   r_   rE   rd   rh   rl   propertyr@   rn   rt   r   r   r   r   rQ     s    

	'
rQ   c                   @   sZ   e Zd ZdddZdd Zddd	Zd
d Zdd Zdd Ze	eeZ
dd Zdd ZdS )IncrementalEncoderr7   Nc                 C   s*   d | _ || _tj| | || _d| _d S Nr   )rG   r5   r=   r{   rU   rV   rW   )rY   r@   r5   r   r   r   rU   v  s
   
zIncrementalEncoder.__init__c                 c   rZ   r[   )rH   r\   r   r   r   
iterencode  r`   zIncrementalEncoder.iterencodeFc                 C   s   | j d u rr| j| }| jd ur2| j}|dd dkrd}t|t||}|d u r/|| _dS |}nt||d | _| jd urm| jdkrHtdt	
| j}| j}| jdd dkrbt|dd	}|| j| _ d| _n|| _dS | j ||S )
Nr1   r2   r!   r    r   r   r8   r9   T)rG   rW   r5   r3   r4   r6   r?   r0   r<   r=   lookupincrementalencoderrV   rH   )rY   r'   r(   r5   newinputinfor   r   r   rH     s0   




zIncrementalEncoder.encodec                 C   s   t j|  d | _d| _d S r|   )r=   r{   rd   rG   rW   re   r   r   r   rd     s   
zIncrementalEncoder.resetc                 C   rf   r   rg   re   r   r   r   rh     ri   zIncrementalEncoder._geterrorsc                 C   rj   r   )rG   r@   rV   rk   r   r   r   rl     rm   zIncrementalEncoder._seterrorsc                 C   s@   | j d ur| j| jd| j  f}n| j| jdd f}tt|S )NTF)rG   r5   rW   rn   rM   ro   rp   rq   r   r   r   rn     s   
zIncrementalEncoder.getstatec                 C   s`   t t|}|d | _|d | _|d d ur+t| j| j| _| j	|d  d S d | _d S )Nr   r   r   r   )
rP   ro   rs   r5   rW   r=   getincrementalencoderrV   rG   rt   rq   r   r   r   rt     s   


zIncrementalEncoder.setstater7   Nrv   )rw   rx   ry   rU   r}   rH   rd   rh   rl   rz   r@   rn   rt   r   r   r   r   r{   u  s    
	
	
r{   c                   @   :   e Zd ZdddZdddZdd	 Zd
d ZeeeZdS )StreamWriterr7   NFc                 C   s,   t j| || d | _|| _|| _d| _d S r|   )r=   r   rU   streamwriterr5   rV   rW   )rY   streamr@   r5   headerr   r   r   rU     
   
zStreamWriter.__init__c                 C   s  t |}| jd u ry| j| }t |}| jd ur:| j}|dd dkr&d}t|t|d}|d u r7|| _dS |}nt|dd | _| jd urt| jdkrPt	d	t
| j| j| j| _| j}| jdd dkrpt|dd
}d| _n|| _dS | j||d |fS )Nr1   r2   r!   r    Fr   r   r   r8   r9   Tr   )r%   r   rW   r5   r3   r4   r6   r?   r0   r<   r=   	getwriterr   rV   rH   )rY   r'   r@   r*   r5   r   r   r   r   rH     s6   





zStreamWriter.encodec                 C   rf   r   rg   re   r   r   r   rh     ri   zStreamWriter._geterrorsc                 C   4   z| j d ur
|| j _W n	 ty   Y nw || _d S r   )r   r@   r;   rV   rk   r   r   r   rl        

zStreamWriter._seterrors)r7   NFr7   )	rw   rx   ry   rU   rH   rh   rl   rz   r@   r   r   r   r   r     s    

!r   c                   @   r   )StreamReaderr7   NTc                 C   s,   t j| || d | _|| _|| _|| _d S r   )r=   r   rU   streamreaderr5   rA   rV   )rY   r   r@   r5   rA   r   r   r   rU     r   zStreamReader.__init__c           	      C   s   | j d u rh| jd u s| js/t|d\}}|d u rdS |dkr"td|r'| jr,| jd u r/|| _t| j}|| j| j}|	||\}}| j}|
dd dkrSd}t|t|d}|d urf|| _ ||fS dS | j 	||S )	NFr   r8   r9   r1   r2   r!   r    )r   r5   rA   r.   r<   r=   	getreaderr   rV   rE   r3   r4   r6   r?   )	rY   r'   r@   r5   rC   r   rb   rD   rc   r   r   r   rE   
  s2   

zStreamReader.decodec                 C   rf   r   rg   re   r   r   r   rh   #  ri   zStreamReader._geterrorsc                 C   r   r   )r   r@   r;   rV   rk   r   r   r   rl   &  r   zStreamReader._seterrorsru   r   )	rw   rx   ry   rU   rE   rh   rl   rz   r@   r   r   r   r   r     s    

r   c              	   C   s$   | dkrd S t jdttttttdS )Nr8   )namerH   rE   r   incrementaldecoderr   r   )r=   	CodecInforH   rE   r{   rQ   r   r   )r   r   r   r   search_function4  s   r   	cssescapec                 C   s>   t | tstd|  ddd | j| j| j D | jfS )z)
    Error handler for CSS escaping.
    zdon't know how to handle %rr   c                 s   s    | ]	}d t | V  qdS )z\%06xNrI   )r   r+   r   r   r   r	   K  s    zcssescape.<locals>.<genexpr>)
isinstanceUnicodeEncodeError	TypeErrorr
   objectstartend)excr   r   r   r   C  s
   
 rv   ru   r   )__doc__r=   	functoolsro   r   r.   r0   r6   rE   rH   rM   rP   rQ   r{   r   r   registerr   partialregister_errorr   r   r   r   r   <module>   s*    
 



	fS:2
