U
    Rh3                     @   s  d dl Z d dlZd dlZd dlmZmZ ddlmZ ddlm	Z	 dZ
dZed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eedddZeeedddZeedddZeedddZeeef edddZeeef eedd d!ZdBeeed#d$d%Zeedd&d'Zeedd(d)Zeddd*d+Z eeed,d-d.Z!dCeeeed/d0d1Z"eeee#f ddd2d3Z$eedd4d5Z%eeee#f edd6d7Z&dDeeeed9d:d;Z'dEeeee#f eeeeed<d=d>Z(dFeeee#f eeeed?d@dAZ)dS )G    N)OptionalUnion   )idnadata)intranges_contain	   s   xn--u   [.。．｡]c                   @   s   e Zd ZdZdS )	IDNAErrorz5Base exception for all IDNA-encoding related problemsN__name__
__module____qualname____doc__ r   r   M/var/www/html/timesheet/backend/venv/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 satisfiedNr	   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 usedNr	   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdS )InvalidCodepointContextzCException when the codepoint is not valid in the context it is usedNr	   r   r   r   r   r       s   r   )cpreturnc                 C   s0   t t| }|dkr,t t| s,td|S )Nr   z Unknown character in unicodedata)unicodedata	combiningchrname
ValueError)r   vr   r   r   _combining_class&   s
    r   )r   scriptr   c                 C   s   t t| tj| S )N)r   ordr   Zscripts)r   r   r   r   r   
_is_script.   s    r   )sr   c                 C   s
   |  dS )Npunycode)encoder   r   r   r   	_punycode2   s    r#   c                 C   s
   d | S )NzU+{:04X})formatr"   r   r   r   _unot6   s    r%   )labelr   c                 C   s   t | dkrdS dS )N?   FTlenr&   r   r   r   valid_label_length:   s    r+   )r&   trailing_dotr   c                 C   s   t | |rdndkrdS dS )N      FTr(   )r&   r,   r   r   r   valid_string_length@   s    r/   F)r&   	check_ltrr   c           	      C   s^  d}t | dD ]:\}}t|}|dkr<tdt| ||dkrd}q|sV|sVdS t| d }|dkrrd}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rJ|s|}n||krJtdq|dkr.td||dkr>d}q|dkrd}q|sZtddS )NFr    z1Unknown directionality in label {} at position {})RALANTr   )r2   r3   Lz=First codepoint in label {} must be directionality L, R or AL)
r2   r3   r4   ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r2   r3   r6   r4   r<   )r4   r6   z2Can not mix numeral types in a right-to-left label)r5   r6   r7   r8   r9   r:   r;   r<   zGInvalid direction for codepoint at position {} in a left-to-right label)r5   r6   z0Label ends with illegal codepoint directionality)	enumerater   bidirectionalr   r$   repr)	r&   r0   Z
bidi_labelidxr   	directionZrtlZvalid_endingnumber_typer   r   r   
check_bidiF   sP    






rC   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    rF   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
    rK   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    rN   )r&   posr   c                 C   sL  t | | }|dkr|dkr:tt | |d  tkr:dS d}t|d ddD ]J}tjt | | }|t dkrvqNqN|t dt d	fkrd} qqN qqN|sdS d}t|d t| D ]P}tjt | | }|t dkrqq|t d
t d	fkrd} q
q q
q|S |dkrD|dkr@tt | |d  tkr@dS dS dS d S )Ni   r   r   TFrJ   Tr5   Dr2   i   )r   r   _virama_combining_classranger   Zjoining_typesgetr)   )r&   rO   cp_valueokiZjoining_typer   r   r   valid_contextj   s@    


rX   )r&   rO   	exceptionr   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&   rO   rY   rU   r   r   r   r   valid_contexto   s@     (
" 
 
r\   c                 C   sL  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 rz,t| |stdt||d t| W n2 tk
r   tdt||d t| Y nX qLt|tjd	 r t| |s>td
t||d t| qLtdt||d t| qLt|  d S )Nzutf-8r   zEmpty LabelZPVALIDZCONTEXTJz*Joiner {} not allowed at position {} in {}r   z<Unknown codepoint adjacent to joiner {} at position {} in {}ZCONTEXTO-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)
isinstancebytes	bytearraydecoder)   r   rN   rK   rF   r=   r   r   r   Zcodepoint_classesrX   r   r$   r%   r?   r   r\   r   rC   )r&   rO   r   rU   r   r   r   check_label   sD    

  rb   c                 C   sf   z(|  d}t| t|s$td|W S  tk
r<   Y nX t|  tt|  }t|sbtd|S )NasciizLabel too long)r!   ulabelr+   r   UnicodeEncodeErrorrb   _alabel_prefixr#   r&   Zlabel_bytesr   r   r   alabel  s    
rh   c                 C   s   t | ttfs@z| d}W qD tk
r<   t|  |  Y S X n| }| }|tr|t	td  }|srt
d|dd dkrt
dnt| |dS z|d} W n tk
r   t
dY nX t|  | S )Nrc   z5Malformed A-label, no Punycode eligible content foundrJ   rI   z"A-label must not end with a hyphenr    zInvalid A-label)r^   r_   r`   r!   re   rb   lower
startswithrf   r)   r   ra   UnicodeErrorrg   r   r   r   rd   /  s,    


rd   T)domain
std3_rulestransitionalr   c                 C   s(  ddl m } d}t| D ] \}}t|}z||dk r:|nt||dfd  }|d }	d}
t|dkrp|d }
|	d	ks|	d
kr|r|	dkr|s|
dkr||7 }n@|
dk	r|	dks|	dkr|r|	d
kr|r||
7 }n|	dkrt W q tk
r   tdt	||d t
| Y qX qtd|S )zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar1      ZN   rG   VrQ   3rD   Ir]   rL   )ro   r=   r   bisectbisect_leftr)   
IndexErrorr   r$   r%   r?   r   rM   )rl   rm   rn   ro   outputrO   charZ
code_pointZuts46rowstatusZreplacementr   r   r   uts46_remapL  sT    $


r|   )r   strictuts46rm   rn   r   c           	      C   s   t | ts6zt| d} W n tk
r4   tdY nX |rFt| ||} d}g }|r^| d}n
t| }|rv|dgkr~td|d dkr|d= d}|D ]$}t|} | r||  qtd	q|r|d
 d	|} t
| |std| S )Nrc   zGshould pass a unicode string to the function rather than a byte string.F.r1   Empty domainrJ   TEmpty label       .zDomain too long)r^   strUnicodeDecodeErrorr   r|   split_unicode_dots_rerh   appendjoinr/   )	r   r}   r~   rm   rn   r,   resultlabelsr&   r   r   r   r!   n  s8    





r!   )r   r}   r~   rm   r   c                 C   s   zt | tst| d} W n tk
r4   tdY nX |rFt| |d} d}g }|s^t| }n
| d}|rv|dgkr~td|d s|d= d}|D ]$}t|} | r||  qtd	q|r|d d	|S )
Nrc   zInvalid ASCII in A-labelFr   r1   r   rJ   Tr   )
r^   r   r   r   r|   r   r   rd   r   r   )r   r}   r~   rm   r,   r   r   r&   r   r   r   ra     s2    



ra   )F)F)TF)FFFF)FFF)*rv   rer   typingr   r   r1   r   	intrangesr   rR   rf   compiler   rk   r   r   r   r   intr   r   boolr   r_   r#   r%   r+   r/   rC   rF   rK   rN   rX   r\   r`   rb   rh   rd   r|   r!   ra   r   r   r   r   <module>   sd   
F,*'$    )   