
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aã  ã                   @   sÚ   d Z ddlZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdZdd„ Zdd„ Z	dd„ Z
dd„ Z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ejƒZG d$d%„ d%eejƒZd&d'„ ZdS )(uY    Codec for the Punicode encoding, as specified in RFC 3492

Written by Martin v. LÃ¶wis.
é    Nc                 C   sP   t ƒ }tƒ }| D ]*}t|ƒdk r0| t|ƒ¡ q| |¡ qt|ƒ}t|ƒ|fS )z 3.1 Basic code point segregationé€   )Ú	bytearrayÚsetÚordÚappendÚaddÚsortedÚbytes)ÚstrÚbaseÚextendedÚc© r   ú7/opt/alt/python38/lib64/python3.8/encodings/punycode.pyÚ	segregate
   s    r   c                 C   s&   d}| D ]}t |ƒ|k r|d7 }q|S )z@Return the length of str, considering only characters below max.r   é   )r   )r
   ÚmaxÚresr   r   r   r   Úselective_len   s
    
r   c                 C   sN   t | ƒ}|d7 }||krdS | | }||kr8|d |fS ||k r|d7 }qdS )a  Return a pair (index, pos), indicating the next occurrence of
    char in str. index is the position of the character considering
    only ordinals up to and including char, and pos is the position in
    the full string. index/pos is the starting position in the full
    string.r   )éÿÿÿÿr   N)Úlen)r
   ÚcharÚindexÚposÚlr   r   r   r   Úselective_find   s    r   c                 C   sˆ   d}g }d}|D ]r}d }}t |ƒ}t| |ƒ}	|	d ||  }
t| |||ƒ\}}|dkrZq~|
|| 7 }
| |
d ¡ |}d}
q>|}q|S )ú3.2 Insertion unsort codingr   r   r   r   )r   r   r   r   )r
   r   ZoldcharÚresultZoldindexr   r   r   r   ZcurlenÚdeltar   r   r   Úinsertion_unsort0   s"    
r   c                 C   s,   d| d  | }|dk rdS |dkr(dS |S )Né$   r   é   r   )ÚjÚbiasr   r   r   r   ÚTF   s      r$   s$   abcdefghijklmnopqrstuvwxyz0123456789c                 C   sn   t ƒ }d}t||ƒ}| |k r2| t|  ¡ t|ƒS | t|| | d|    ¡ | | d|  } |d7 }q
dS )ú(3.3 Generalized variable-length integersr   r    r   N)r   r$   r   Údigitsr	   )ÚNr#   r   r"   Útr   r   r   Úgenerate_generalized_integerN   s    
r)   c                 C   sX   |r| d } n| d } | | | 7 } d}| dkr@| d } |d7 }q&|d|  | d   }|S )Ni¼  é   r   iÇ  é#   r    é&   r   )r   ÚfirstÚnumcharsZ	divisionsr#   r   r   r   Úadapt[   s    

r/   c                 C   sP   t ƒ }d}t|ƒD ]4\}}t||ƒ}| |¡ t||dk| | d ƒ}qt|ƒS )z3.4 Bias adaptationéH   r   r   )r   Ú	enumerater)   Úextendr/   r	   )ZbaselenÚdeltasr   r#   Zpointsr   Úsr   r   r   Úgenerate_integersj   s    

r5   c                 C   s8   t | ƒ\}}t| |ƒ}tt|ƒ|ƒ}|r4|d | S |S )Nó   -)r   r   r5   r   )Útextr   r   r3   r   r   r   Úpunycode_encodeu   s    
r8   c           
      C   s   d}d}d}zt | | ƒ}W n0 tk
rL   |dkr<tdƒ‚|d df Y S X |d7 }d|  krjdkrxn n
|d }nHd|  krŒd	kršn n
|d
 }n&|dkr¸td| |d   ƒ‚n|dfS t||ƒ}	||| 7 }||	k ræ||fS |d|	  }|d7 }qdS )r%   r   r   Ústrictzincomplete punicode stringNéA   éZ   é0   é9   é   z Invalid extended code point '%s'r    )r   Ú
IndexErrorÚUnicodeErrorr$   )
r   Úextposr#   Úerrorsr   Úwr"   r   Zdigitr(   r   r   r   Údecode_generalized_number   s2    


ÿ
rD   c           	      C   sÌ   d}d}d}d}|t |ƒk rÈt||||ƒ\}}|dkr:| S ||d 7 }||t | ƒd  7 }|dkr~|dkrvtd	| ƒ‚td
ƒ}|t | ƒd  }| d|… t|ƒ | |d…  } t||dkt | ƒƒ}|}q| S )r   r   r   r0   r   Nr   iÿÿ r9   zInvalid character U+%xú?)r   rD   r@   r   Úchrr/   )	r   r   rB   r   r   r#   rA   Znewposr   r   r   r   Úinsertion_sort�   s,     ÿ rG   c                 C   s†   t | tƒr|  d¡} t | tƒr&t| ƒ} |  d¡}|dkrLd}t| dƒ ¡ }n.t| d |… d|ƒ}t| |d d … dƒ ¡ }t|||ƒS )NÚasciir6   r   Ú r   )Ú
isinstancer
   ÚencodeÚ
memoryviewr	   ÚrfindÚupperrG   )r7   rB   r   r   r   r   r   r   Úpunycode_decode¶   s    



rO   c                   @   s    e Zd Zddd„Zddd„ZdS )	ÚCodecr9   c                 C   s   t |ƒ}|t|ƒfS ©N)r8   r   ©ÚselfÚinputrB   r   r   r   r   rK   È   s    zCodec.encodec                 C   s*   |dkrt d| ƒ‚t||ƒ}|t|ƒfS ©N)r9   ÚreplaceÚignorezUnsupported error handling )r@   rO   r   rR   r   r   r   ÚdecodeÌ   s    
zCodec.decodeN)r9   )r9   )Ú__name__Ú
__module__Ú__qualname__rK   rX   r   r   r   r   rP   Æ   s   
rP   c                   @   s   e Zd Zddd„ZdS )ÚIncrementalEncoderFc                 C   s   t |ƒS rQ   )r8   ©rS   rT   Úfinalr   r   r   rK   Ó   s    zIncrementalEncoder.encodeN)F)rY   rZ   r[   rK   r   r   r   r   r\   Ò   s   r\   c                   @   s   e Zd Zddd„ZdS )ÚIncrementalDecoderFc                 C   s$   | j dkrtd| j  ƒ‚t|| j ƒS rU   )rB   r@   rO   r]   r   r   r   rX   ×   s    
zIncrementalDecoder.decodeN)F)rY   rZ   r[   rX   r   r   r   r   r_   Ö   s   r_   c                   @   s   e Zd ZdS )ÚStreamWriterN©rY   rZ   r[   r   r   r   r   r`   Ü   s   r`   c                   @   s   e Zd ZdS )ÚStreamReaderNra   r   r   r   r   rb   ß   s   rb   c                	   C   s    t jdtƒ jtƒ jttttd�S )NZpunycode)ÚnamerK   rX   ÚincrementalencoderÚincrementaldecoderÚstreamwriterÚstreamreader)	ÚcodecsÚ	CodecInforP   rK   rX   r\   r_   r`   rb   r   r   r   r   Úgetregentryä   s    ùrj   )Ú__doc__rh   r   r   r   r   r$   r&   r)   r/   r5   r8   rD   rG   rO   rP   r\   r_   r`   rb   rj   r   r   r   r   Ú<module>   s(   
