a
    »ÏOc–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   ú@/var/www/html/gsl.tools/lib/python3.9/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v rd}q|sV|sVdS t | d ¡}|dv rrd}n |d	kr€d}ntd
 t| ƒ¡ƒ‚d}d }t | dƒD ]¦\}}t |¡}|�r|dvrÒtd |¡ƒ‚|dv ràd}n|dkrìd}|dv �rJ|�s|}n||k�rJtdƒ‚q¤|dv�r.td |¡ƒ‚|dv �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v 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v 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   sJ  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 n0 tyÜ   td t|ƒ|d t| ƒ¡ƒ‚Y n0 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à   s4    

ÿ
ÿ  rq   c                 C   s|   z(|   d¡}t|ƒ t|ƒs$tdƒ‚|W S  ty:   Y n0 | sHtdƒ‚t| ƒ} t| ƒ t| ƒ}t| }t|ƒsxtdƒ‚|S )NÚasciizLabel too longzNo Input)	r"   Úulabelr,   r   ÚUnicodeEncodeErrorÚstrrq   r$   Ú_alabel_prefix©r'   Zlabel_bytesr   r   r   Úalabelÿ   s"    
rx   c                 C   sÔ   t | ttfƒs>z|  d¡}W qB ty:   t| ƒ |  Y S 0 n| }| ¡ }| t¡rŒ|t	tƒd … }|spt
dƒ‚| d¡d dkržt
dƒ‚nt|ƒ | d¡S z| d¡} W n tyÆ   t
dƒ‚Y n0 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 r8|nt ||df¡d  }|d }	d}
t|ƒdkrn|d }
|	d	ks–|	d
kr‚|r–|	dkr |s |
du r ||7 }n@|
durÒ|	dksÈ|	dkr¼|rÈ|	d
krÒ|rÒ||
7 }n|	dkràtƒ ‚W q t�y   td t	|ƒ|d t
| ƒ¡ƒ‚Y q0 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  sV    ÿÿÿþþþ
ÿÿþþ

ÿÿr�   )r    ÚstrictÚuts46r}   r~   r   c           	      C   sî   t | ttfƒr8z|  d¡} W n ty6   tdƒ‚Y n0 |rHt| ||ƒ} d}g }|r`|  d¡}n
t | ¡}|rx|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_rerx   Ú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y6   tdƒ‚Y n0 |rHt| |dƒ} d}g }|s`t | ¡}n
|  d¡}|rx|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   rx   rs   r�   r"   ro   r   r   r   r   Ú<module>   s<   
;+* $!