
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    'X~,                     @   s>  d dl mZ ddlZddlZddlZddlZd dlmZ dZdZ	e
dZejd dkr`eZeZG d	d
 d
eZG dd deZG dd deZG dd deZdd Zdd Zdd Zdd Zdd Zdd Zd7ddZd d! Zd"d# Zd$d% Zd&d' Z d8d(d)Z!d*d+ Z"d,d- Z#d.d/ Z$d9d1d2Z%d:d3d4Z&d;d5d6Z'dS )<   )idnadata    N)intranges_contain	   s   xn--u   [.。．｡]   c                   @   s   e Zd ZdZdS )	IDNAErrorz7 Base exception for all IDNA-encoding related problems N__name__
__module____qualname____doc__ r   r   :/opt/alt/python38/lib/python3.8/site-packages/idna/core.pyr      s   r   c                   @   s   e Zd ZdZdS )IDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdS )InvalidCodepointz> Exception when a disallowed or unallocated codepoint is used Nr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdS )InvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used Nr   r   r   r   r   r      s   r   c                 C   s   t t| S N)unicodedataZ	combiningunichr)cpr   r   r   _combining_class$   s    r   c                 C   s   t t| tj| S r   )r   ordr   scripts)r   scriptr   r   r   
_is_script'   s    r   c                 C   s
   |  dS )Npunycode)encodesr   r   r   	_punycode*   s    r   c                 C   s
   d | S )Nz	U+{0:04X})formatr   r   r   r   _unot-   s    r!   c                 C   s   t | dkrdS dS )N?   FTlenlabelr   r   r   valid_label_length1   s    r'   c                 C   s   t | |rdndkrdS dS )N      FTr#   )r&   trailing_dotr   r   r   valid_string_length8   s    r+   Fc           	      C   sb  d}t | dD ]>\}}t|}|dkr<tdt| ||dkrd} qNq|sZ|sZdS t| d }|dkrvd}n |d	krd}ntd
t| d}d}t | dD ]\}}t|}|r|dkrtd||dkrd}n|dkrd}|dkrN|s|}n||krNtdq|dkr2td||dkrBd}q|dkrd}q|s^tddS )NFr    z3Unknown directionality in label {0} at position {1})RALANTr   )r-   r.   Lz>First codepoint in label {0} must be directionality L, R or AL)
r-   r.   r/   ENESCSETONBNNSMzHInvalid direction for codepoint at position {0} in a right-to-left label)r-   r.   r1   r/   r7   )r/   r1   z2Can not mix numeral types in a right-to-left label)r0   r1   r2   r3   r4   r5   r6   r7   zHInvalid direction for codepoint at position {0} in a left-to-right label)r0   r1   z0Label ends with illegal codepoint directionality)	enumerater   Zbidirectionalr   r    repr)	r&   Z	check_ltrZ
bidi_labelidxr   	directionZrtlZvalid_endingZnumber_typer   r   r   
check_bidi?   sR    






r<   c                 C   s"   t | d d dkrtddS )Nr   Mz0Label begins with an illegal combining characterT)r   categoryr   r%   r   r   r   check_initial_combiner|   s    r?   c                 C   s<   | dd dkrt d| d dks0| d dkr8t dd	S )
N      z--z4Label has disallowed hyphens in 3rd and 4th positionr   -z)Label must not start or end with a hyphenT)r   r%   r   r   r   check_hyphen_ok   s
    rD   c                 C   s   t d| | krtdd S )NNFCz%Label must be in Normalization Form C)r   	normalizer   r%   r   r   r   	check_nfc   s    rG   c                 C   s4  t | | }|dkr|dkr8tt | |d  tkr8dS d}t|d ddD ]B}tjt | | }|t dkrrqL|t dt d	fkrLd} qqL|sdS d}t|d t| D ]B}tjt | | }|t dkrq|t d
t d	fkrd} qq|S |dkr,|dkr(tt | |d  tkr(dS dS dS d S )Ni   r   r   TFrC   Tr0   Dr-   i   )r   r   _virama_combining_classranger   Zjoining_typesgetr$   )r&   poscp_valueokiZjoining_typer   r   r   valid_contextj   s<    

rQ   c                 C   s  t | | }|dkrdd|  k r0t| d k r`n n,t | |d  dkr`t | |d  dkr`dS dS |dkr|t| d k rt| dkrt| |d  dS dS |d	ks|d
kr|dkrt| |d  dS dS |dkr| D ]6}|dkrqt|ds
t|ds
t|dr dS qdS d|  kr.dkrhn n6| D ],}dt |  krVdkr6n n dS q6dS d|  krdkrn n6| D ],}dt |  krdkrn n dS qdS d S )N   r   r   l   TFiu  ZGreeki  i  ZHebrewi0  u   ・ZHiraganaZKatakanaZHani`  ii  i  i  )r   r$   r   )r&   rM   	exceptionrN   r   r   r   r   valid_contexto   s>     (
" 
 
rU   c                 C   s  t | ttfr| d} t| dkr,tdt|  t|  t|  t	| D ]\}}t
|}t|tjd rpqLqLt|tjd rt| |stdt||d t| qLt|tjd rt| |std	t||d t| qLtd
t||d t| qLt|  d S )Nzutf-8r   zEmpty LabelZPVALIDZCONTEXTJz-Joiner {0} not allowed at position {1} in {2}r   ZCONTEXTO0Codepoint {0} not allowed at position {1} in {2}z0Codepoint {0} at position {1} of {2} not allowed)
isinstancebytes	bytearraydecoder$   r   rG   rD   r?   r8   r   r   r   Zcodepoint_classesrQ   r   r    r!   r9   rU   r   r<   )r&   rM   r   rN   r   r   r   check_label   s&    

 
  r[   c                 C   s   zP|  d} zt|  W n" tk
r:   td| Y nX t| sLtd| W S  tk
rd   Y nX | srtdt| } t|  t| } t	|  } t| std| S )Nasciiz$The label {0} is not a valid A-labelzLabel too longzNo Input)
r   ulabelr   r    r'   UnicodeEncodeErrorunicoder[   r   _alabel_prefixr%   r   r   r   alabel  s(    
ra   c                 C   s   t | ttfs>z| d} W n  tk
r<   t|  |  Y S X |  } | trb| t	td  } nt|  | 
dS | 
d} t|  | S )Nr\   r   )rW   rX   rY   r   r^   r[   lower
startswithr`   r$   rZ   r%   r   r   r   r]     s    



r]   Tc              
   C   s(  ddl m } d}zt| D ]\}}t|}||dk r8|nt||dfd  }|d }	t|dkrj|d nd}
|	d	ks|	d
kr|r|	dkr|r|
dkr||7 }q|
dk	r|	dks|	dkr|s|	d
kr|r||
7 }q|	dkrt qtd|W S  tk
r"   t	d
t||d t| Y nX dS )zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar,      Zr   r@   NVrI   3r=   IrE   rV   )rd   r8   r   bisectbisect_leftr$   
IndexErrorr   rF   r   r    r!   r9   )domain
std3_rulestransitionalrd   outputrM   charZ
code_pointZuts46rowstatusreplacementr   r   r   uts46_remap3  sV    

  rt   c           	      C   s   t | ttfr| d} |r(t| ||} d}g }|r@| d}n
t| }|r^|d s^|d= qJ|sjtd|d dkr|d= d}|D ]}|t	| q|r|d	 d

|} t| |std| S )Nr\   F.r   Empty domainrC   r,   T       .zDomain too long)rW   rX   rY   rZ   rt   split_unicode_dots_rer   appendra   joinr+   )	r   strictuts46rn   ro   r*   resultlabelsr&   r   r   r   r   O  s0    




r   c                 C   s   t | ttfr| d} |r(t| |d} d}g }|s@t| }n
| d}|r^|d s^|d= qJ|sjtd|d s||d= d}|D ]}|t	| q|r|d d
|S )	Nr\   Fru   r   rv   rC   Tr,   )rW   rX   rY   rZ   rt   rz   ry   r   r{   r]   r|   )r   r}   r~   rn   r*   r   r   r&   r   r   r   rZ   l  s*    


rZ   )F)F)TF)FFFF)FFF)(r,   r   rj   r   resysZ	intrangesr   rJ   r`   compilerz   version_infostrr_   chrr   UnicodeErrorr   r   r   r   r   r   r   r!   r'   r+   r<   r?   rD   rG   rQ   rU   r[   ra   r]   rt   r   rZ   r   r   r   r   <module>   sB   

=	,
)

