ó
    ÷Þ j§‰  ã                  ó’  • % S SK Jr  S SKJr  S SKJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJrJrJrJ r J!r!J"r"J#r#  \\-  \-  \-  \-  r$S\%S'    " S	 S
5      r&\" SS9S)S j5       r'\(" S5       V s/ sH  n \&" \)" U 5      5      PM     sn r*S\%S'    " S S5      r+ " S S\+5      r, " S S\+5      r- " S S\+5      r. " S S\+5      r/ " S S\+5      r0 " S S\+5      r1 " S S \+5      r2 " S! S"\+5      r3 " S# S$\+5      r4 " S% S&\+5      r5\" SS9      S*S' j5       r6 S+       S,S( jjr7gs  sn f )-é    )Úannotations)Ú	lru_cache)Ú	getLoggeré   )ÚCOMMON_CJK_CHARACTERSÚCOMMON_SAFE_ASCII_CHARACTERSÚTRACEÚCompatibleFamillyRangeÚ_ACCENTUATEDÚ_ARABICÚ_ARABIC_ISOLATED_FORMÚ&_BASIC_LATIN_COMPATIBLE_RANGE_FAMILIESÚ_CJKÚ_COMPATIBLE_RANGE_FAMILIESÚ#_COMPATIBLE_WITH_ANY_RANGE_FAMILIESÚ_HANGULÚ_HALFWIDTH_KATAKANAÚ	_HIRAGANAÚ	_KATAKANAÚ_LATINÚ	_LIGATUREÚ_RANGE_FAMILIESÚ_SENTENCE_OPEN_PUNCTUATIONÚ_SUPERSCRIPTÚ_THAI)Ú_character_flagsÚis_emoticonÚis_punctuationÚis_separatorÚ	is_symbolÚremove_accentÚunicode_rangeÚintÚ_GLYPH_MASKc                  ó@  • \ rS rSr% SrSrS\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S '   S\S!'   S\S"'   S\S#'   S'S$ jrS%rg&)(ÚCharInfoé,   z>Pre-computed character properties shared across all detectors.)Ú	characterÚ	printableÚalphaÚupperÚlowerÚspaceÚdigitÚis_asciiÚcase_variableÚflagsÚaccentuatedÚlatinÚis_cjkÚis_katakanaÚis_halfwidth_katakanaÚ	is_arabicÚis_ligatureÚis_superscriptÚis_sentence_open_punctuationÚis_glyphÚpunctÚsymÚrangeÚsepÚemoticonÚsafeÚ
common_cjkÚ
unaccentedÚstrr(   Úboolr)   r*   r+   r,   r-   r.   r/   r0   r#   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   ú
str | Noner>   r?   r@   rA   rB   rC   c                óP
  • Xl         [        U5      nUS:  GaŠ  SU l        SU l        Xl        SU l        SU l        U[        ;   U l        SU l	        SU l
        SU l        SU l        SU l        SU l        SU l        SU l        SUs=::  a  S::  aV  O  OSSU l        SU l        SU l        SU l        SU l        SU l        SU l        [0        U l        SU l        SU l        SU l        GO#SUs=::  a  S::  aV  O  OSSU l        SU l        SU l        SU l        SU l        SU l        SU l        [0        U l        SU l        SU l        SU l        GOÀSUs=::  a  S	::  aR  O  OOSU l        SU l        SU l        SU l        SU l        SU l        SU l        S
U l        SU l        SU l        SU l        GOaUS:X  d  SUs=::  a  S::  aU  O  ORSU l        SU l        SU l        SU l        SU l        US:H  U l        SU l        S
U l        SU l        SU l        SU l        GOùUR;                  5       U l        SU l        SU l        SU l        SU l        SU l        SU l        S
U l        SU l        U R,                  (       a  [=        U5      OSU l        U R,                  (       a  [?        U5      OSU l        GOdSU l        SU l        UR;                  5       U l        URA                  5       U l        URC                  5       U l        URE                  5       U l        URG                  5       U l        URI                  5       U l        U R&                  U R$                  :g  U l        [K        U5      nU R"                  (       a  SU l        O[M        U5      U l        X0l        [O        U[P        -  5      U l        [O        U[0        -  5      U l        [O        U[R        -  5      U l	        [O        U[T        -  5      U l
        [O        U[V        -  5      U l        [O        U[X        -  5      U l        [O        U[Z        -  5      U l        [O        U[\        -  5      U l        [O        U[^        -  5      U l        [O        U[`        -  5      U l        U R4                  (       a"  U R                  (       a  [c        U5      U l        OXl        U R                  =(       a	    U[d        ;   U l        U R,                  (       a!  [=        U5      U l        [?        U5      U l        OSU l        SU l        [g        U5      U l4        [k        U5      U l6        g)zcCompute all properties for *character* (built once per codepoint,
every branch assigns every slot).é€   TFéA   éZ   éa   éz   é0   é9   r   é    é	   é   N)7r(   Úordr/   r2   rC   r@   rB   r   rA   r4   r5   r6   r7   r8   r9   r:   r;   r*   r+   r,   r-   r.   r)   r0   r   r1   r3   r<   r=   Úisprintabler   r    ÚisalphaÚisupperÚislowerÚisspaceÚisdigitr   r   rE   r   r   r   r   r   r   r   r   r$   r!   r   r"   r>   r   r?   )Úselfr(   Úor1   s       ÚO/var/www/html/gaurav/venv/lib/python3.13/site-packages/charset_normalizer/md.pyÚ__init__ÚCharInfo.__init__k   sD  € ð #Œô �Y“ˆØˆsŒ7Ø ˆDŒMØ$ˆDÔØ'ŒOØ!ˆDŒMØ#ˆDŒOØ!Ô%AÑAˆDŒIØˆDŒKØ$ˆDÔØ).ˆDÔ&Ø"ˆDŒNØ$ˆDÔØ"'ˆDÔØ05ˆDÔ-Ø!ˆDŒMà�Q�}˜"Ž}à!�”
Ø!�”
Ø"�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ü#�”
Ø!�”
Ø"�”
Ø �–Ø�q•˜C–à!�”
Ø"�”
Ø!�”
Ø"�”
Ø"�”
Ø!%�”Ø%)�Ô"Ü#�”
Ø!�”
Ø"�”
Ø �–Ø�q•˜B–à"�”
Ø"�”
Ø"�”
Ø"�”
Ø!�”
Ø!%�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �–Ø�b“˜Q !�\ rž\à"�”
Ø"�”
Ø"�”
Ø!�”
Ø"�”
Ø!" b¡�”Ø%*�Ô"Ø�”
Ø"�”
Ø"�”
Ø �–ð "+×!6Ñ!6Ó!8�”Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø"�”
Ø%*�Ô"Ø�”
Ø"�”
Ø:>¿.¿.œ^¨IÔ6Èe�”
Ø37·>·>œ9 YÔ/Àu�–ð "ˆDŒMØˆDŒIØ&×2Ñ2Ó4ˆDŒNØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ"×*Ñ*Ó,ˆDŒJØ!%§¡¨t¯z©zÑ!9ˆDÔô *¨)Ó4ˆEØ�z�zØ %�•ä +¨IÓ 6�”ØŒJÜ# E¬LÑ$8Ó9ˆDÔÜ˜e¤f™nÓ-ˆDŒJÜ˜u¤t™|Ó,ˆDŒKÜ# E¬IÑ$5Ó6ˆDÔÜ)-¨eÔ6IÑ.IÓ)JˆDÔ&Ü! %¬'¡/Ó2ˆDŒNÜ# E¬IÑ$5Ó6ˆDÔÜ"& u¬|Ñ';Ó"<ˆDÔÜ04°UÔ=WÑ5WÓ0XˆDÔ-Ü  ¬Ñ!4Ó5ˆDŒMà�z�z˜d×.×.Ü"/°	Ó":�•à"+”à"Ÿk™k×P¨iÔ;PÑ.PˆDŒOð �~�~Ü+¨IÓ6�”
Ü$ YÓ/�•à"�”
Ø �”ä" 9Ó-ˆŒ
Ü 	Ó*ˆ�ó    )r2   r*   r0   r(   rB   r.   r@   r1   r7   r/   r4   r;   r6   r5   r8   r:   r9   r3   r,   r)   r<   r>   rA   r?   r-   r=   rC   r+   N)r(   rD   ÚreturnÚNone)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__Ú__annotations__r\   Ú__static_attributes__© r^   r[   r&   r&   ,   s©   ‡ ÙHð€Ið> ƒNØƒOØƒKØƒKØƒKØƒKØƒKØƒNØÓØƒJØÓØƒKØƒLØÓØÓØƒOØÓØÓØ"&Ó&ØƒNØƒKØ	ƒIØÓØ	ƒIØƒNØ
ƒJØÓØƒO÷H+r^   r&   N)Úmaxsizec                ó   • [        U 5      $ )zBBuild (once per codepoint) and cache the CharInfo for *character*.)r&   )r(   s    r[   Ú
_char_inforl   ø   s   € ô �IÓÐr^   rH   zlist[CharInfo]Ú_ASCII_CHAR_INFOc                  óD   • \ rS rSrSrSrSS jrS	S jr\S
S j5       r	Sr
g)ÚMessDetectorPlugini  zm
Base abstract class used for mess detection plugins.
All detectors MUST extend and implement given methods.
ri   c                ó   • [         e)zq
The main routine to be executed upon character.
Insert the logic in witch the text would be considered chaotic.
©ÚNotImplementedError©rY   r(   Úinfos      r[   Ú	feed_infoÚMessDetectorPlugin.feed_info  s
   € ô
 "Ð!r^   c                ó   • [         e)z2
Permit to reset the plugin to the initial state.
rq   ©rY   s    r[   ÚresetÚMessDetectorPlugin.reset  s
   € ô "Ð!r^   c                ó   • [         e)zm
Compute the chaos ratio based on what your feed() has seen.
Must NOT be lower than 0.; No restriction gt 0.
rq   rx   s    r[   ÚratioÚMessDetectorPlugin.ratio  s
   € ô "Ð!r^   N©r(   rD   rt   r&   r_   r`   ©r_   r`   ©r_   Úfloat)ra   rb   rc   rd   re   rf   ru   ry   Úpropertyr|   rh   ri   r^   r[   ro   ro     s,   † ñð
 €Iô"ô"ð ó"ó ó"r^   ro   c                  óJ   • \ rS rSrSrS	S jrS
S jrS	S jr\SS j5       r	Sr
g)Ú TooManySymbolOrPunctuationPlugini"  ©Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charc                ó<   • SU l         SU l        SU l        S U l        g ©Nr   r…   rx   s    r[   r\   Ú)TooManySymbolOrPunctuationPlugin.__init__*  s"   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà04ˆÕ!r^   c                óX  • U =R                   S-  sl         XR                  :w  a€  UR                  (       do  UR                  (       a  U =R                  S-  sl        OHUR
                  (       d7  UR                  (       a&  UR                  (       d  U =R                  S-  sl        Xl        g)ú1Optimized feed using pre-computed character info.r   é   N)	rˆ   r‰   rA   r<   r†   r.   r=   r@   r‡   rs   s      r[   ru   Ú*TooManySymbolOrPunctuationPlugin.feed_info1  sg   € à×Ò Ñ"Õà×1Ñ1Ó1¸$¿)¿)Ø�z�zØ×'Ò'¨1Ñ,Ö'Ø—Z—Z D§H§H°T·]·]Ø×"Ò" aÑ'Õ"à$-Õ!r^   c                ó.   • SU l         SU l        SU l        g r‹   )r†   rˆ   r‡   rx   s    r[   ry   Ú&TooManySymbolOrPunctuationPlugin.reset=  s   € Ø"#ˆÔØ !ˆÔØˆÕr^   c                ó„   • U R                   S:X  a  gU R                  U R                  -   U R                   -  nUS:¼  a  U$ S$ )Nr   ç        ç333333Ó?)rˆ   r†   r‡   )rY   Úratio_of_punctuations     r[   r|   Ú&TooManySymbolOrPunctuationPlugin.ratioB  sO   € à× Ñ  AÓ%Øð ×#Ñ# d×&8Ñ&8Ñ8Ø×!Ñ!ñ'"Ðð (<¸sÓ'BÐ#ÐKÈÐKr^   )rˆ   r‰   r†   r‡   Nr   r~   r€   ©ra   rb   rc   rd   rf   r\   ru   ry   r‚   r|   rh   ri   r^   r[   r„   r„   "  s.   † ð€Iô5ô
.ôð
 óLó óLr^   r„   c                  óJ   • \ rS rSrSrS	S jrS
S jrS	S jr\SS j5       r	Sr
g)ÚTooManyAccentuatedPluginiN  ©rˆ   Ú_accentuated_countc                ó    • SU l         SU l        g r‹   r›   rx   s    r[   r\   Ú!TooManyAccentuatedPlugin.__init__Q  s   € Ø%&ˆÔØ'(ˆÕr^   c                ó|   • U =R                   S-  sl         UR                  (       a  U =R                  S-  sl        gg©rŽ   r   N)rˆ   r2   rœ   rs   s      r[   ru   Ú"TooManyAccentuatedPlugin.feed_infoU  s2   € à×Ò Ñ"Õà××Ø×#Ò# qÑ(Ö#ð r^   c                ó    • SU l         SU l        g r‹   r›   rx   s    r[   ry   ÚTooManyAccentuatedPlugin.reset\  s   € Ø !ˆÔØ"#ˆÕr^   c                ój   • U R                   S:  a  gU R                  U R                   -  nUS:¼  a  U$ S$ )Né   r”   gffffffÖ?r›   )rY   Úratio_of_accentuations     r[   r|   ÚTooManyAccentuatedPlugin.ratio`  s=   € à× Ñ  1Ó$Øà'+×'>Ñ'>À×AVÑAVÑ'VÐØ(=ÀÓ(EÐ$ÐNÈ3ÐNr^   )rœ   rˆ   Nr   r~   r€   r˜   ri   r^   r[   rš   rš   N  s,   † Ø:€Iô)ô)ô$ð óOó óOr^   rš   c                  óJ   • \ rS rSrSrS	S jrS
S jrS	S jr\SS j5       r	Sr
g)ÚUnprintablePluginii  ©Ú_unprintable_countrˆ   Ú_has_escapec                ó.   • SU l         SU l        SU l        g ©Nr   Frª   rx   s    r[   r\   ÚUnprintablePlugin.__init__l  s   € Ø'(ˆÔØ%&ˆÔØ!&ˆÕr^   c                óÎ   • US:X  a  SU l         UR                  (       d2  UR                  (       d!  US:w  a  US:w  a  U =R                  S-  sl        U =R                  S-  sl        g)rŽ   ÚTÚu   ï»¿r   N)r¬   r)   r-   r«   rˆ   rs   s      r[   ru   ÚUnprintablePlugin.feed_infoq  sT   € à˜ÓØ#ˆDÔð ——Ø—J—JØ˜VÓ#Ø˜XÓ%à×#Ò# qÑ(Õ#Ø×Ò Ñ"Ör^   c                ó    • SU l         SU l        g r®   )r«   r¬   rx   s    r[   ry   ÚUnprintablePlugin.reset  s   € Ø"#ˆÔØ ˆÕr^   c                ó€   • U R                   S:X  a  gU R                  (       a  gU R                  S-  U R                   -  $ )Nr   r”   ç      ð?r¥   ©rˆ   r¬   r«   rx   s    r[   r|   ÚUnprintablePlugin.ratioƒ  s;   € à× Ñ  AÓ%Øà××Øà×'Ñ'¨!Ñ+¨t×/DÑ/DÑDÐDr^   r¸   Nr   r~   r€   r˜   ri   r^   r[   r©   r©   i  s,   † ØI€Iô'ô
#ô!ð óEó óEr^   r©   c                  óJ   • \ rS rSrSrS	S jrS
S jrS	S jr\SS j5       r	Sr
g)ÚSuspiciousDuplicateAccentPluginiŽ  ©Ú_successive_countrˆ   Ú_last_latin_characterÚ_last_was_accentuatedc                ó<   • SU l         SU l        S U l        SU l        g r®   r¼   rx   s    r[   r\   Ú(SuspiciousDuplicateAccentPlugin.__init__–  s"   € Ø&'ˆÔØ%&ˆÔà6:ˆÔ"Ø+0ˆÕ"r^   c                ó®  • U =R                   S-  sl         U R                  bœ  UR                  (       a‹  U R                  (       az  UR                  (       a0  U R                  R                  (       a  U =R
                  S-  sl        UR                  U R                  R                  :X  a  U =R
                  S-  sl        X l        UR                  U l        gr    )rˆ   r¾   r2   r¿   r+   r½   rC   rs   s      r[   ru   Ú)SuspiciousDuplicateAccentPlugin.feed_info�  s”   € à×Ò Ñ"Õà×&Ñ&Ñ2Ø× × Ø×*×*à�z�z˜d×8Ñ8×>×>Ø×&Ò&¨!Ñ+Õ&Ø�‰ $×"<Ñ"<×"GÑ"GÓGØ×&Ò&¨!Ñ+Õ&Ø%)Ô"Ø%)×%5Ñ%5ˆÕ"r^   c                ó<   • SU l         SU l        S U l        SU l        g r®   r¼   rx   s    r[   ry   Ú%SuspiciousDuplicateAccentPlugin.reset¬  s"   € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ø%*ˆÕ"r^   c                ó\   • U R                   S:X  a  gU R                  S-  U R                   -  $ )Nr   r”   r�   )rˆ   r½   rx   s    r[   r|   Ú%SuspiciousDuplicateAccentPlugin.ratio²  s/   € à× Ñ  AÓ%Øà×&Ñ&¨Ñ*¨d×.CÑ.CÑCÐCr^   )rˆ   r¾   r¿   r½   Nr   r~   r€   r˜   ri   r^   r[   r»   r»   Ž  s.   † ð€Iô1ô6ô+ð óDó óDr^   r»   c                  óJ   • \ rS rSrSrS	S jrS
S jrS	S jr\SS j5       r	Sr
g)ÚSuspiciousRangeiº  ©Ú"_suspicious_successive_range_countrˆ   Ú_last_printable_seenÚ_last_printable_rangec                ó<   • SU l         SU l        S U l        S U l        g r‹   rÊ   rx   s    r[   r\   ÚSuspiciousRange.__init__Â  s"   € Ø78ˆÔ/Ø%&ˆÔØ04ˆÔ!Ø15ˆÕ"r^   c                óž  • U =R                   S-  sl         UR                  (       d"  UR                  (       d  UR                  (       a  SU l        SU l        gU R                  c  Xl        UR                  U l        gU R
                  nUR                  nX4:w  d  Uc%  [        X45      (       a  U =R                  S-  sl        Xl        X@l        gr    )	rˆ   r-   r<   rA   rÌ   rÍ   r>   Ú is_suspiciously_successive_rangerË   )rY   r(   rt   Úunicode_range_aÚunicode_range_bs        r[   ru   ÚSuspiciousRange.feed_infoÈ  s£   € à×Ò Ñ"Õà�:�:˜ŸŸ t§y§yØ(,ˆDÔ%Ø)-ˆDÔ&Øà×$Ñ$Ñ,Ø(1Ô%Ø)-¯©ˆDÔ&Øà&*×&@Ñ&@ˆØ&*§j¡jˆð Ó-°Ñ1HÜ/°×QÑQØ×7Ò7¸1Ñ<Õ7à$-Ô!Ø%4Õ"r^   c                ó<   • SU l         SU l        S U l        S U l        g r‹   )rˆ   rË   rÌ   rÍ   rx   s    r[   ry   ÚSuspiciousRange.resetá  s"   € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ø%)ˆÕ"r^   c                ó`   • U R                   S::  a  gU R                  S-  U R                   -  nU$ )NrQ   r”   r�   )rˆ   rË   )rY   Úratio_of_suspicious_range_usages     r[   r|   ÚSuspiciousRange.ratioç  s<   € à× Ñ  BÓ&Øð ×3Ñ3°aÑ7Ø×!Ñ!ñ2"Ð'ð /Ð.r^   )rˆ   rÍ   rÌ   rË   Nr   r~   r€   r˜   ri   r^   r[   rÉ   rÉ   º  s,   † ð€Iô6ô5ô2*ð ó/ó ó/r^   rÉ   c                  óJ   • \ rS rSrSrS	S jrS
S jrS	S jr\SS j5       r	Sr
g)ÚSuperWeirdWordPluginió  ©Ú_word_countÚ_bad_word_countÚ_foreign_long_countÚ_is_current_word_badÚ_foreign_long_watchrˆ   Ú_bad_character_countÚ_buffer_lengthÚ_buffer_last_charÚ_buffer_last_char_accentuatedÚ_buffer_accent_countÚ_buffer_glyph_countÚ_buffer_upper_countÚ_buffer_first_lowerÚ_buffer_has_non_asciiÚ_buffer_last_char_ligatureÚ_buffer_has_internal_ligatureÚ_is_current_word_invalidÚ_invalid_word_countc                ó  • SU l         SU l        SU l        SU l        SU l        SU l        SU l        SU l        S U l        SU l	        SU l
        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        g r®   rÜ   rx   s    r[   r\   ÚSuperWeirdWordPlugin.__init__
  sš   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!à#$ˆÔØ-1ˆÔØ38ˆÔ*Ø)*ˆÔ!Ø()ˆÔ Ø()ˆÔ Ø).ˆÔ Ø+0ˆÔ"Ø05ˆÔ'Ø38ˆÔ*Ø.3ˆÔ%Ø()ˆÕ r^   c                óø  • UR                   (       Ga<  U R                  (       a  SU l        UR                  U l        U R                  S:X  a  UR
                  U l        U =R                  S-  sl        Xl        UR                  (       a  U =R                  S-  sl	        UR                  (       d  SU l        UR                  U l        UR                  (       a  U =R                  S-  sl        UR                  (       a  U =R                   S-  sl        gU R"                  (       d)  UR$                  (       a  UR                  (       a  SU l        gU R                  (       d  gUR&                  (       d"  UR(                  (       a  U R                  (       a  SU l        SU l        UR.                  (       d#  UR0                  (       d  UR2                  (       GaQ  U =R4                  S-  sl        U R                  nU =R6                  U-  sl        US:¼  aö  U R                  U-  S:¼  a  SU l        OÛU R                  (       aL  U R                  R9                  5       (       a-  U R                  U:w  a  U =R:                  S-  sl        SU l        O~U R                   S:X  a  SU l        U =R:                  S-  sl        OQU R                  (       a@  U R                  (       a/  U R                  US-
  :X  a  U =R:                  S-  sl        SU l        US:¼  a\  U R"                  (       aK  U R                  S:„  =(       a    U R                  U-  S:*  nU(       d  U =R:                  S-  sl        SU l        U R*                  (       a1  U =R<                  S-  sl        U =R>                  U-  sl        S	U l        U R,                  (       a  U =R@                  S-  sl         S	U l        S	U l        SU l        SU l        S	U l        SU l        SU l        SU l	        S	U l        S	U l        S	U l        S	U l        gUS
;  aN  URB                  (       d<  URD                  (       a*  SU l        U =R                  S-  sl        Xl        S	U l        gggg)rŽ   Tr   r   Né   ç      à?é   r•   F>   Ú-Ú<Ú=Ú>Ú_Ú|Ú~)#r*   rë   rì   r8   rã   r,   ré   rä   r+   rè   r/   rê   r2   rå   ræ   r;   rç   rá   r3   r:   r9   rà   rí   r-   r<   r?   rÝ   rˆ   rU   rß   rÞ   râ   rî   r.   r=   )rY   r(   rt   Úbuffer_lengthÚprobable_camel_caseds        r[   ru   ÚSuperWeirdWordPlugin.feed_info"  s‡  € à�:�:ˆ:Ø×.×.Ø59�Ô2Ø.2×.>Ñ.>ˆDÔ+Ø×"Ñ" aÓ'Ø+/¯:©:�Ô(Ø×Ò 1Ñ$ÕØ%.Ô"à�z�zØ×(Ò(¨AÑ-Õ(Ø—=—=Ø-1�Ô*à15×1AÑ1AˆDÔ.à××Ø×)Ò)¨QÑ.Õ)Ø�}�}Ø×(Ò(¨AÑ-Õ(ð ð ×-×-°t·z·zÀT×EU×EUØ+/�Ô(ØØ×"×"ØØ×,×,Ø×× D×$F×$Fà(,ˆDÔ%Ø,0ˆDÔ)Ø�:�:˜ŸŸ t§x§x xØ×Ò Ñ!ÕØ!%×!4Ñ!4ˆMà×!Ò! ]Ñ2Õ!à Ó!Ø×,Ñ,¨}Ñ<ÀÓCØ04�DÕ-à×6×6Ø×.Ñ.×6Ñ6×8Ñ8Ø×0Ñ0°MÓAà×,Ò,°Ñ1Õ,Ø04�DÕ-Ø×-Ñ-°Ó2Ø04�DÔ-Ø×,Ò,°Ñ1Ö,à×.×.Ø×0×0Ø×0Ñ0°MÀAÑ4EÓEð
 ×,Ò,°Ñ1Õ,Ø04�DÔ-Ø Ó" t×'?×'?à×,Ñ,¨qÑ0÷ HØ×0Ñ0°=Ñ@ÀCÑGð %ö
 ,Ø×,Ò,°Ñ1Õ,Ø04�DÔ-à×(×(Ø×$Ò$¨Ñ)Õ$Ø×)Ò)¨]Ñ:Õ)Ø,1�Ô)Ø×,×,Ø×(Ò(¨AÑ-Õ(Ø05�Ô-à',ˆDÔ$Ø"#ˆDÔØ%)ˆDÔ"Ø16ˆDÔ.Ø()ˆDÔ%Ø'(ˆDÔ$Ø'(ˆDÔ$Ø',ˆDÔ$Ø).ˆDÔ&Ø.3ˆDÔ+Ø16ˆDÕ.àÐ@Ó@Ø—J—JØ——à(,ˆDÔ%Ø×Ò 1Ñ$ÕØ%.Ô"Ø16ˆDÕ.ð ð ð Ar^   c                ó  • SU l         S U l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l	        SU l
        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        g r®   )rã   rä   rå   rà   rá   rÞ   rÝ   rˆ   râ   rß   ræ   rç   rè   ré   rê   rë   rì   rí   rî   rx   s    r[   ry   ÚSuperWeirdWordPlugin.reset†  sš   € ØˆÔØ!%ˆÔØ-2ˆÔ*Ø$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ø$%ˆÔ!Ø#$ˆÔ Ø#$ˆÔ Ø#(ˆÔ Ø%*ˆÔ"Ø*/ˆÔ'Ø-2ˆÔ*Ø(-ˆÔ%Ø#$ˆÕ r^   c                óš   • U R                   (       a  gU R                  S::  a  U R                  S:X  a  gU R                  U R                  -  $ )Nr·   é
   r   r”   )rî   rÝ   rß   râ   rˆ   rx   s    r[   r|   ÚSuperWeirdWordPlugin.ratio›  sC   € à×#×#Øà×Ñ˜rÓ! d×&>Ñ&>À!Ó&CØà×(Ñ(¨4×+@Ñ+@Ñ@Ð@r^   )râ   rÞ   ræ   ré   rç   rì   rê   rä   rå   rë   rã   rè   rˆ   rß   rá   rî   rà   rí   rÝ   Nr   r~   r€   r˜   ri   r^   r[   rÛ   rÛ   ó  s0   † ð€Iô,*ô0b7ôH%ð* óAó óAr^   rÛ   c                  óN   • \ rS rSrSrSrS	S jrS
S jrS	S jr\	SS j5       r
Srg)ÚCjkUncommonPlugini¦  z4
Detect messy CJK text that probably means nothing.
©rˆ   Ú_uncommon_countc                ó    • SU l         SU l        g r‹   r  rx   s    r[   r\   ÚCjkUncommonPlugin.__init__­  s   € Ø%&ˆÔØ$%ˆÕr^   c                ó|   • U =R                   S-  sl         UR                  (       d  U =R                  S-  sl        ggr    )rˆ   rB   r  rs   s      r[   ru   ÚCjkUncommonPlugin.feed_info±  s0   € à×Ò Ñ"Õà��Ø× Ò  AÑ%Ö ð r^   c                ó    • SU l         SU l        g r‹   r  rx   s    r[   ry   ÚCjkUncommonPlugin.reset¸  s   € Ø !ˆÔØ ˆÕr^   c                óp   • U R                   S:  a  gU R                  U R                   -  nUS:”  a  US-  $ S$ )Nrò   r”   ró   é   r  )rY   Úuncommon_form_usages     r[   r|   ÚCjkUncommonPlugin.ratio¼  sD   € à× Ñ  1Ó$Øà%)×%9Ñ%9¸D×<QÑ<QÑ%QÐð +>ÀÓ*CÐ" QÑ&ÐLÈÐLr^   Nr   r~   r€   ©ra   rb   rc   rd   re   rf   r\   ru   ry   r‚   r|   rh   ri   r^   r[   r  r  ¦  s3   † ñð 8€Iô&ô&ô!ð óMó óMr^   r  c                  óN   • \ rS rSrSrSrS
S jrSS jrS
S jr\	SS j5       r
Srg	)ÚSuspiciousKatakanaPluginiÈ  zDDetect implausible halfwidth Katakana and uncommon CJK combinations.©Ú_katakana_countÚ_halfwidth_katakana_countÚ
_cjk_countÚ_uncommon_cjk_countc                ó<   • SU l         SU l        SU l        SU l        g r‹   r  rx   s    r[   r\   Ú!SuspiciousKatakanaPlugin.__init__Ò  s!   € Ø$%ˆÔØ./ˆÔ&Ø ˆŒØ()ˆÕ r^   c                ó  • UR                   (       a<  U =R                  S-  sl        UR                  (       a  U =R                  S-  sl        gU =R                  S-  sl        UR
                  (       d  U =R                  S-  sl        ggr    )r5   r  r6   r  r  rB   r  rs   s      r[   ru   Ú"SuspiciousKatakanaPlugin.feed_infoØ  sd   € à××Ø× Ò  AÑ%Õ Ø×)×)Ø×.Ò.°!Ñ3Õ.Øà�Š˜1Ñ�Ø��Ø×$Ò$¨Ñ)Ö$ð r^   c                ó<   • SU l         SU l        SU l        SU l        g r‹   r  rx   s    r[   ry   ÚSuspiciousKatakanaPlugin.resetä  s!   € Ø ˆÔØ)*ˆÔ&ØˆŒØ#$ˆÕ r^   c                ó¢   • U R                   S:¼  a?  U R                   U R                  :X  a%  SU R                  s=::  a  U R                  :X  a   g  gg)Nrò   é   r·   r”   )r  r  r  r  rx   s    r[   r|   ÚSuspiciousKatakanaPlugin.ratioê  sK   € ð ×*Ñ*¨aÓ/Ø×.Ñ.°$×2FÑ2FÓFØ�T—_‘_Õ@¨×(@Ñ(@Ô@àð Añ r^   )r  r  r  r  Nr   r~   r€   r  ri   r^   r[   r  r  È  s/   † ÙNð€Iô*ô
*ô%ð óó ór^   r  c                  óJ   • \ rS rSrSrS	S jrS
S jrS	S jr\SS j5       r	Sr
g)ÚArchaicUpperLowerPluginiö  ©Ú_bufÚ_character_count_since_last_sepÚ_successive_upper_lower_countÚ#_successive_upper_lower_count_finalrˆ   Ú_last_alpha_seen_upperÚ_last_alpha_seen_lowerÚ_current_ascii_onlyc                ót   • SU l         SU l        SU l        SU l        SU l        SU l        SU l        SU l        g )NFr   Tr%  rx   s    r[   r\   Ú ArchaicUpperLowerPlugin.__init__  sA   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà,1ˆÔ#Ø,1ˆÔ#Ø)-ˆÕ r^   c                ó�  • UR                   =(       a    UR                  nU(       + nU(       a“  U R                  S:”  aƒ  U R                  S::  aA  UR                  (       d0  U R                  (       d  U =R
                  U R                  -  sl        SU l        SU l        SU l        U =R                  S-  sl        SU l        gU R                  (       a  UR                  (       d  SU l        U R                  S:”  a�  UR                  (       a  U R                  (       d"  UR                  (       aG  U R                  (       a6  U R                  (       a  U =R                  S-  sl        SU l        OSU l        OSU l        U =R                  S-  sl        U =R                  S-  sl        UR                  U l        UR                  U l        g)rŽ   r   é@   Fr   TNr�   )r*   r0   r'  r.   r,  r)  r(  r&  rˆ   r/   r+   r+  r,   r*  )rY   r(   rt   Úis_concernedÚ	chunk_seps        r[   ru   Ú!ArchaicUpperLowerPlugin.feed_info  sE  € à!ŸZ™Z×>¨D×,>Ñ,>ˆØ*Ô*ˆ	æ˜×=Ñ=ÀÓAà×4Ñ4¸Ó:ØŸ
Ÿ
Ø×0×0à×8Ò8Ø×6Ñ6ñÕ8ð 23ˆDÔ.Ø34ˆDÔ0ØˆDŒIØ×!Ò! QÑ&Õ!Ø'+ˆDÔ$àà×#×#¨D¯M¯MØ',ˆDÔ$à×/Ñ/°!Ó3Ø—
—
˜t×:×:Ø—
—
˜t×:×:à—9—9Ø×6Ò6¸!Ñ;Õ6Ø %�D•Ià $�D•Ià!�”	à×Ò Ñ"ÕØ×,Ò,°Ñ1Õ,Ø&*§j¡jˆÔ#Ø&*§j¡jˆÕ#r^   c                ót   • SU l         SU l        SU l        SU l        SU l        SU l        SU l        SU l        g )Nr   FT)rˆ   r'  r(  r)  r*  r+  r&  r,  rx   s    r[   ry   ÚArchaicUpperLowerPlugin.reset;  sA   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø&+ˆÔ#Ø&+ˆÔ#ØˆŒ	Ø#'ˆÕ r^   c                óV   • U R                   S:X  a  gU R                  U R                   -  $ )Nr   r”   )rˆ   r)  rx   s    r[   r|   ÚArchaicUpperLowerPlugin.ratioE  s*   € à× Ñ  AÓ%Øà×7Ñ7¸$×:OÑ:OÑOÐOr^   )r&  rˆ   r'  r,  r+  r*  r(  r)  Nr   r~   r€   r˜   ri   r^   r[   r$  r$  ö  s/   † ð	€Iô.ô)1ôV(ð óPó óPr^   r$  c                  óJ   • \ rS rSrSrSS jrSS jrS	S jr\S
S j5       r	Sr
g)ÚArabicIsolatedFormPluginiM  ©rˆ   Ú_isolated_form_countc                ó    • SU l         SU l        g r‹   r:  rx   s    r[   r\   Ú!ArabicIsolatedFormPlugin.__init__P  s   € Ø%&ˆÔØ)*ˆÕ!r^   c                ó    • SU l         SU l        g r‹   r:  rx   s    r[   ry   ÚArabicIsolatedFormPlugin.resetT  s   € Ø !ˆÔØ$%ˆÕ!r^   c                óŠ   • U =R                   S-  sl         UR                  [        -  (       a  U =R                  S-  sl        ggr    )rˆ   r1   r   r;  rs   s      r[   ru   Ú"ArabicIsolatedFormPlugin.feed_infoX  s6   € à×Ò Ñ"Õà�:‰:Ô-×-Ø×%Ò%¨Ñ*Ö%ð .r^   c                óZ   • U R                   S:  a  gU R                  U R                   -  nU$ )Nr¥   r”   r:  )rY   Úisolated_form_usages     r[   r|   ÚArabicIsolatedFormPlugin.ratio_  s0   € à× Ñ  1Ó$Øà%)×%>Ñ%>À×AVÑAVÑ%VÐà"Ð"r^   Nr   r~   r€   )ra   rb   rc   rd   rf   r\   ry   ru   r‚   r|   rh   ri   r^   r[   r9  r9  M  s*   † Ø<€Iô+ô&ô+ð ó#ó ó#r^   r9  c                óÐ   • U b  Uc  g[         U    n[         U   nX#:X  a  gU[        ;   d
  U[        ;   a  g[        X#5      [        ;   a  gU S:X  a	  U[        ;  $ US:X  a	  U[        ;  $ g)zW
Determine if two Unicode ranges seen next to each other can be considered suspicious.
TFzBasic Latin)r   r   r
   r   r   )rÒ   rÓ   Ú	familly_aÚ	familly_bs       r[   rÑ   rÑ   i  s„   € ð Ñ /Ñ"9Øä$ _Ñ5€IÜ$ _Ñ5€IàÓØð 	Ô8Ó8ØÔ;Ó;àä˜iÓ3Ô7QÓQØð ˜-Ó'ØÔ FÑFÐFà˜-Ó'ØÔ FÑFÐFàr^   c           
     ór  • [        U 5      nUS:  a  SnOUS:  a  SnOSnU R                  5       n[        n[        n[	        5       n[        5       n	[        5       n
[        5       n[        5       n[        5       n[        5       n[        5       n[        5       n[        5       nUR                  nU	R                  nU
R                  nUR                  nUR                  nUR                  nUR                  nUR                  nUR                  nUR                  n[        SX45       GH¯  nU UUU-     GH  n[!        U5      nUS:  a  UU   nOU" U5      nU" UU5        U" UU5        U(       a  UR"                  (       a	  U" UU5        MX  U" UU5        UR"                  (       a  U" UU5        U" UU5        UR$                  (       d  M—  U" UU5        UR&                  (       a	  U" UU5        UR(                  (       a  U" UU5        U" UU5        OUR*                  (       a	  U" UU5        UR,                  (       d  GM  U" UU5        GM     UR.                  U	R.                  -   U
R.                  -   UR.                  -   UR.                  -   UR.                  -   UR.                  -   UR.                  -   UR.                  -   UR.                  -   n U U:¼  d  GM°    Oª   US   n!U" SU!5        U(       d	  U" SU!5        U" SU!5        UR.                  U	R.                  -   U
R.                  -   UR.                  -   UR.                  -   UR.                  -   UR.                  -   UR.                  -   UR.                  -   UR.                  -   n U(       a¦  [1        S	5      n"U"R3                  [4        S
U SU  SU 35        US:”  a8  U"R3                  [4        SU SS  35        U"R3                  [4        SU SS  35        X‰X«XÍXïUU4
 H2  n#U"R3                  [4        U#R6                   SU#R.                   35        M4     [9        U S5      $ )zo
Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
iÿ  rO   i   r0  rH   r   r  Ú
Úcharset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=é   zStarting with: NzEnding with: iðÿÿÿz: r!  )ÚlenÚisasciirm   rl   r„   rš   r©   r»   rÉ   rÛ   r  r  r$  r9  ru   r>   rR   r)   r*   r3   r4   r5   r7   r|   r   Úlogr	   Ú	__class__Úround)$Údecoded_sequenceÚmaximum_thresholdÚdebugÚseq_lenÚstepÚis_pure_asciiÚ
ascii_infoÚ	char_infoÚd_spÚd_taÚd_upÚd_sdaÚd_srÚd_swÚd_cuÚd_skÚd_auÚd_aiÚ	d_sp_feedÚ	d_ta_feedÚ	d_up_feedÚ
d_sda_feedÚ	d_sr_feedÚ	d_sw_feedÚ	d_cu_feedÚ	d_sk_feedÚ	d_au_feedÚ	d_ai_feedÚblock_startr(   Ú	codepointrt   Úmean_mess_ratioÚnl_infoÚloggerÚdts$                                       r[   Ú
mess_ratiors  �  s  € ô Ð'Ó(€Gà�ƒ}Ø‰Ø	�4‹Ø‰àˆð
 +×2Ñ2Ó4€Mô
 "€JÜ€Iô .NÓ-O€DÜ%=Ó%?€DÜ/Ó1€DÜ-LÓ-N€EÜ+Ó-€DÜ!5Ó!7€DÜ/Ó1€DÜ%=Ó%?€DÜ$;Ó$=€DÜ%=Ó%?€Dð —‘€IØ—‘€IØ—‘€IØ—‘€JØ—‘€IØ—‘€IØ—‘€IØ—‘€IØ—‘€IØ—‘€Iä˜Q ×.ˆØ)¨+¸ÀdÑ8JÔKˆIô ! ›^ˆIØ˜3‹Ø! )Ñ,‘á  Ó+�ñ �i Ô&Ù�i Ô&æà—>—>Ù˜i¨Ô.Ùá�i Ô&ð �~�~Ù˜) TÔ*Ù˜) TÔ*ð �z�z‰zÙ˜) TÔ*à—:—:Ù˜y¨$Ô/à—;—;Ù˜i¨Ô.Ù˜i¨Õ.Ø×%×%Ù˜i¨Ô.à—>—>’>Ù˜i¨×.ñS LðX �J‰JØ�j‰jñà�j‰jñð �k‰kñð �j‰jñ	ð
 �j‰jñð �j‰jñð �j‰jñð �j‰jñð �j‰jñ	ð 	ð Ð/Ö/Ùñu /ðz ˜R‘.ˆÙ�$˜Ô ÞÙ�d˜GÔ$Ù�$˜Ô ð �J‰JØ�j‰jñà�j‰jñð �k‰kñð �j‰jñ	ð
 �j‰jñð �j‰jñð �j‰jñð �j‰jñð �j‰jñ	ð 	ö ÜÐ/Ó0ˆà�
‰
Üð1Ø15°Ð6GÈÐGXð Y!Ø!2Ð 3ð5ô	
ð �R‹<Ø�J‰J”u Ð0@ÀÀ"Ð0EÐ/FÐGÔHØ�J‰J”u Ð.>¸s¸uÐ.EÐ-FÐGÔHà˜t¨D¸ÀDÈ$ÓOˆBØ�J‰J”u §¡ ¨b°·±°
Ð;Ö<ñ Pô � !Ó$Ð$r^   )r(   rD   r_   r&   )rÒ   rF   rÓ   rF   r_   rE   )gš™™™™™É?F)rQ  rD   rR  r�   rS  rE   r_   r�   )8Ú
__future__r   Ú	functoolsr   Úloggingr   Úconstantr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úutilsr   r   r   r   r    r!   r"   r$   rg   r&   rl   r>   Úchrrm   ro   r„   rš   r©   r»   rÉ   rÛ   r  r  r$  r9  rÑ   rs  )Ú
_codepoints   0r[   Ú<module>r{     s¿  ðÞ "å Ý ÷÷ ÷ ÷ ÷ õ ÷.÷ ñ ð ˜'‘> IÑ-°	Ñ9¸EÑA€ˆSÓ A÷G+ñ G+ñX �4Ñóó ðñ 16°c´
ó$Ù0: *�H‰S�‹_Ö±
ñ$Ð �.ó ÷
"ñ "ô<)LÐ'9ô )LôXOÐ1ô Oô6"EÐ*ô "EôJ)DÐ&8ô )DôX6/Ð(ô 6/ôrpAÐ-ô pAôfMÐ*ô MôD+Ð1ô +ô\TPÐ0ô TPôn#Ð1ô #ñ8 �4Ñð Øð Ø2<ð à	ó ó ð ðH JOðZ%ØðZ%Ø.3ðZ%ØBFðZ%à
öZ%ùò]$s   Â	E