U
    ËZj–2  ã                   @   s  d dl mZ 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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é   )Úidnadataé    N)ÚUnionÚOptional)Ú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   úL/var/www/html/TRUCKING_PROJECT/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 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   )Ú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   Úscripts)r   r   r   r   r   Ú
_is_script'   s    r   )Úsr   c                 C   s
   |   d¡S )NÚpunycode)Úencode©r    r   r   r   Ú	_punycode*   s    r$   c                 C   s
   d  | ¡S )NzU+{:04X})Úformatr#   r   r   r   Ú_unot-   s    r&   )Úlabelr   c                 C   s   t | ƒdkrdS dS )Né?   FT©Úlen©r'   r   r   r   Úvalid_label_length1   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_length7   s    r0   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r€d}ntd
 t| ƒ¡ƒ‚d}d }t | dƒD ]¦\}}t |¡}|�r|dkrÒtd |¡ƒ‚|dkràd}n|dkrìd}|dk�rJ|�s|}n||k�rJtdƒ‚q¤|dk�r.td |¡ƒ‚|dk�r>d}q¤|dkr¤d}q¤|�sZtdƒ‚dS )NFr   Ú z1Unknown directionality in label {} at position {})ÚRÚALÚANTr   )r3   r4   ÚLz=First codepoint in label {} must be directionality L, R or AL)
r3   r4   r5   ÚENÚESÚCSÚETÚONÚBNÚNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r3   r4   r7   r5   r=   )r5   r7   z2Can not mix numeral types in a right-to-left label)r6   r7   r8   r9   r:   r;   r<   r=   zGInvalid direction for codepoint at position {} in a left-to-right label)r6   r7   z0Label ends with illegal codepoint directionality)Ú	enumerater   Úbidirectionalr   r%   Úrepr)	r'   r1   Ú
bidi_labelÚidxr   Ú	directionÚrtlÚvalid_endingÚnumber_typer   r   r   Ú
check_bidi=   sP    






rG   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_combinerx   s    rJ   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
    rO   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    rR   )r'   Úposr   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} q�qL|s˜dS d}t|d t| ƒƒD ]B}tj t | | ƒ¡}|t dƒkrÔq®|t d
ƒt d	ƒfkr®d} qòq®|S |dk�r,|dk�r(tt | |d  ƒƒtk�r(dS dS dS d S )Ni   r   r   TFrN   ÚTr6   ÚDr3   i   )r   r   Ú_virama_combining_classÚranger   Újoining_typesÚgetr*   )r'   rS   Úcp_valueÚokÚiÚjoining_typer   r   r   Úvalid_contextj‹   s<    

r^   )r'   rS   Ú	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 ršt| ƒdkršt| |d  dƒS dS |d	ks®|d
krÌ|dkrÈt| |d  dƒS dS |dk�r| D ]6}|dkrèqÚt|dƒ�s
t|dƒ�s
t|dƒrÚ dS qÚdS d|  k�r.dk�rhn n6| D ],}dt |ƒ  k�rVdk�r6n n dS �q6dS d|  k�r€dk�rºn n6| D ],}dt |ƒ  k�r¨dk�rˆn n dS �qˆdS dS )Né·   r   r   él   TFiu  ÚGreekió  iô  ÚHebrewiû0  u   ãƒ»ÚHiraganaÚKatakanaÚHani`  ii  ið  iù  )r   r*   r   )r'   rS   r_   rZ   r   r   r   r   Úvalid_contexto¶   s@     (
" 
 
rg   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 ƒrâz,t| |ƒsªt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 LabelÚPVALIDÚCONTEXTJz*Joiner {} not allowed at position {} in {}r   z<Unknown codepoint adjacent to joiner {} at position {} in {}ÚCONTEXTOú-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)Ú
isinstanceÚbytesÚ	bytearrayÚdecoder*   r   rR   rO   rJ   r>   r   r   r   Úcodepoint_classesr^   r   r%   r&   r@   r   rg   r   rG   )r'   rS   r   rZ   r   r   r   Úcheck_labelà   s<    

  ÿ
  ÿ  rq   c                 C   s~   z(|   d¡}t|ƒ t|ƒs$tdƒ‚|W S  tk
r<   Y nX | sJtdƒ‚t| ƒ} t| ƒ t| ƒ}t| }t|ƒsztdƒ‚|S )NÚasciizLabel too longzNo Input)	r"   Úulabelr,   r   ÚUnicodeEncodeErrorÚstrrq   r$   Ú_alabel_prefix©r'   Úlabel_bytesr   r   r   Úalabelÿ   s"    
ry   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r t
dƒ‚nt|ƒ | d¡S z| d¡} W n tk
rÊ   t
dƒ‚Y nX t| ƒ | S )Nrr   z5Malformed A-label, no Punycode eligible content foundrN   rM   z"A-label must not end with a hyphenr!   zInvalid A-label)rl   rm   rn   r"   rt   rq   ÚlowerÚ
startswithrv   r*   r   ro   ÚUnicodeErrorrw   r   r   r   rs     s,    


rs   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râtƒ ‚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   )Ú	uts46datar2   é   ÚZNé   rK   ÚVrU   Ú3rH   ÚIrk   rP   )r€   r>   r   ÚbisectÚbisect_leftr*   Ú
IndexErrorr   r%   r&   r@   r   rQ   )r}   r~   r   r€   ÚoutputrS   ÚcharÚ
code_pointÚuts46rowÚstatusÚreplacementr   r   r   Úuts46_remap4  sZ    ÿÿÿþþþ
ÿÿþþ

  ÿÿr�   )r    ÚstrictÚuts46r~   r   r   c           	      C   sð   t | ttfƒr:z|  d¡} W n tk
r8   tdƒ‚Y nX |rJt| ||ƒ} d}g }|rb|  d¡}n
t | ¡}|rz|dgkr‚tdƒ‚|d dkr˜|d= d}|D ]$}t	|ƒ} | r¸| 
| ¡ qœtd	ƒ‚qœ|rÐ| 
d
¡ d |¡} t| |ƒsìtdƒ‚| S )Nrr   zGshould pass a unicode string to the function rather than a byte string.FÚ.r2   úEmpty domainrN   TúEmpty labeló    ó   .zDomain too long)rl   rm   rn   ro   ÚUnicodeDecodeErrorr   r�   ÚsplitÚ_unicode_dots_rery   ÚappendÚjoinr0   )	r    r‘   r’   r~   r   r-   ÚresultÚlabelsr'   r   r   r   r"   T  s8    




r"   )r    r‘   r’   r~   r   c                 C   sÖ   zt | ttfƒr|  d¡} W n tk
r8   tdƒ‚Y nX |rJt| |dƒ} d}g }|sbt | ¡}n
|  d¡}|rz|dgkr‚tdƒ‚|d s”|d= d}|D ]$}t	|ƒ} | r´| 
| ¡ q˜td	ƒ‚q˜|rÌ| 
d¡ d |¡S )
Nrr   zInvalid ASCII in A-labelFr“   r2   r”   rN   Tr•   )rl   rm   rn   ro   r˜   r   r�   rš   r™   rs   r›   rœ   )r    r‘   r’   r~   r-   r�   rž   r'   r   r   r   ro   u  s2    


ro   )F)F)TF)FFFF)FFF)*r2   r   r‡   r   ÚreÚtypingr   r   Ú	intrangesr   rV   rv   Úcompilerš   r|   r   r   r   r   Úintr   ru   Úboolr   rm   r$   r&   r,   r0   rG   rJ   rO   rR   r^   rg   rn   rq   ry   rs   r�   r"   ro   r   r   r   r   Ú<module>   s<   
;+* $!