U el2@sddlmZddlZddlZddlZddlmZmZddlm Z dZ dZ e dZ Gd d d eZGd d d eZGd ddeZGdddeZeedddZeeedddZeedddZeedddZeeefedddZeeefeedd d!ZdBeeed#d$d%Zeedd&d'Zeedd(d)Zeddd*d+Z eeed,d-d.Z!dCeeeed/d0d1Z"eeee#fddd2d3Z$eedd4d5Z%eeee#fedd6d7Z&dDeeeed9d:d;Z'dEeeee#feeeeed<d=d>Z(dFeeee#feeeed?d@dAZ)dS)G)idnadataN)UnionOptional)intranges_contain sxn--u [.。.。]c@seZdZdZdS) IDNAErrorz7 Base exception for all IDNA-encoding related problems N__name__ __module__ __qualname____doc__rr7/opt/hc_python/lib/python3.8/site-packages/idna/core.pyr src@seZdZdZdS) IDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nr rrrrrsrc@seZdZdZdS)InvalidCodepointz> Exception when a disallowed or unallocated codepoint is used Nr rrrrrsrc@seZdZdZdS)InvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used Nr rrrrrsr)cpreturncCs0tt|}|dkr,tt|s,td|S)Nrz Unknown character in unicodedata) unicodedata combiningchrname ValueError)rvrrr_combining_class s r)rscriptrcCstt|tj|S)N)rordrscripts)rrrrr _is_script'sr)srcCs |dS)Npunycode)encoder rrr _punycode*sr$cCs d|S)NzU+{:04X})formatr#rrr_unot-sr&)labelrcCst|dkrdSdS)N?FTlenr'rrrvalid_label_length1s r,)r' trailing_dotrcCst||rdndkrdSdS)NFTr))r'r-rrrvalid_string_length7sr0F)r' check_ltrrc Cs^d}t|dD]:\}}t|}|dkrd}q|dkrd}q|sZtddS)NFrz1Unknown directionality in label {} at position {})RALANTr)r3r4Lz=First codepoint in label {} must be directionality L, R or AL) r3r4r5ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r3r4r7r5r=)r5r7z2Can not mix numeral types in a right-to-left label)r6r7r8r9r:r;r<r=zGInvalid direction for codepoint at position {} in a left-to-right label)r6r7z0Label ends with illegal codepoint directionality) enumerater bidirectionalrr%repr) r'r1 bidi_labelidxr directionrtl valid_ending number_typerrr check_bidi=sP       rGcCs"t|dddkrtddS)NrMz0Label begins with an illegal combining characterT)rcategoryrr+rrrcheck_initial_combinerxsrJcCs<|dddkrtd|ddks0|ddkr8tdd S) Nz--z4Label has disallowed hyphens in 3rd and 4th positionr-z)Label must not start or end with a hyphenT)rr+rrrcheck_hyphen_ok~s rOcCstd||krtddS)NNFCz%Label must be in Normalization Form C)r normalizerr+rrr check_nfcsrR)r'posrcCs4t||}|dkr|dkr8tt||dtkr8dSd}t|dddD]B}tjt||}|tdkrrqL|tdtd fkrLd}qqL|sdSd}t|dt|D]B}tjt||}|tdkrq|td td fkrd}qq|S|d kr,|dkr(tt||dtkr(dSdSdSdS) Ni rrTFrNTr6Dr3i )rr_virama_combining_classranger joining_typesgetr*)r'rScp_valueoki joining_typerrrvalid_contextjs<     r^)r'rS exceptionrcCst||}|dkrdd|kr0t|dkr`nn,t||ddkr`t||ddkr`dSdS|dkr|t|dkrt|dkrt||ddSdS|d ks|d kr|dkrt||dd SdS|d kr|D]6}|d krqt|ds t|ds t|drdSqdSd|kr.dkrhnn6|D],}dt|krVdkr6nndSq6dSd|krdkrnn6|D],}dt|krdkrnndSqdSdS)NrrlTFiuGreekiiHebrewi0u・HiraganaKatakanaHani`iiii)rr*r)r'rSr_rZrrrrvalid_contextos@  ( "    rgc CsLt|ttfr|d}t|dkr,tdt|t|t|t |D]\}}t |}t |t j drpqLqLt |t j drz,t||stdt||dt|Wn2tk rtdt||dt|YnXqLt |t j d r t||s>td t||dt|qLtd t||dt|qLt|dS) Nzutf-8rz Empty LabelPVALIDCONTEXTJz*Joiner {} not allowed at position {} in {}rzrrrcodepoint_classesr^rr%r&r@rrgrrG)r'rSrrZrrr check_labels<       rqcCs~z(|d}t|t|s$td|WStk r<YnX|sJtdt|}t|t|}t|}t|sztd|S)NasciizLabel too longzNo Input) r"ulabelr,rUnicodeEncodeErrorstrrqr$_alabel_prefixr' label_bytesrrralabels" rycCst|ttfs@z|d}WqDtk r<t||YSXn|}|}|tr|t td}|srt d| dddkrt dnt|| dSz| d}Wnt k rt dYnXt||S)Nrrz5Malformed A-label, no Punycode eligible content foundrNrMz"A-label must not end with a hyphenr!zInvalid A-label) rlrmrnr"rtrqlower startswithrvr*rro UnicodeErrorrwrrrrss,    rsT)domain std3_rules transitionalrc Cs(ddlm}d}t|D]\}}t|}z||dkr:|nt||dfd}|d} d} t|dkrp|d} | d ks| d kr|r| d kr|s| dkr||7}n@| dk r| d ks| d kr|r| d kr|r|| 7}n| d krtWqtk rtdt ||dt |YqXqt d|S)zBRe-map the characters in the string according to UTS46 processing.r) uts46datar2ZNrKVrU3rHIrkrP) rr>rbisect bisect_leftr* IndexErrorrr%r&r@rrQ) r}r~rroutputrSchar code_pointuts46rowstatus replacementrrr uts46_remap4sZ      r)r strictuts46r~rrc Cst|ts6zt|d}Wntk r4tdYnX|rFt|||}d}g}|r^|d}n t|}|rv|dgkr~td|ddkr|d=d}|D]$}t|}|r||qtd q|r|d d |}t ||std |S) NrrzGshould pass a unicode string to the function rather than a byte string.F.r2 Empty domainrNT Empty label.zDomain too long) rlruUnicodeDecodeErrorrrsplit_unicode_dots_reryappendjoinr0) r rrr~rr-resultlabelsr'rrrr"Ts8          r")r rrr~rcCszt|tst|d}Wntk r4tdYnX|rFt||d}d}g}|s^t|}n |d}|rv|dgkr~td|ds|d=d}|D]$}t|}|r||qtd q|r|dd |S) NrrzInvalid ASCII in A-labelFrr2rrNTr) rlrurrrrrrsrr)r rrr~r-rrr'rrrrous2       ro)F)F)TF)FFFF)FFF)*r2rrrretypingrr intrangesrrVrvcompilerr|rrrrintrruboolrrmr$r&r,r0rGrJrOrRr^rgrnrqryrsrr"rorrrrs<   ;+* $!