§
    Qp°dúH  ã            
       ó  — d dl mZ d dlmZ d dlmZmZ ddlmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  G d„ d¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ ed¬¦  «        dee%         dee%         de&fd„¦   «         Z' ed¬¦  «        	 d'd"e%d#e(d$e&de(fd%„¦   «         Z)d&S )(é    )Ú	lru_cache)Ú	getLogger)ÚListÚOptionalé   )ÚCOMMON_SAFE_ASCII_CHARACTERSÚTRACEÚUNICODE_SECONDARY_RANGE_KEYWORD)Úis_accentuatedÚis_asciiÚis_case_variableÚis_cjkÚis_emoticonÚ	is_hangulÚis_hiraganaÚis_katakanaÚis_latinÚis_punctuationÚis_separatorÚ	is_symbolÚis_thaiÚis_unprintableÚremove_accentÚunicode_rangec                   óV   — e Zd ZdZdedefd„Zdeddfd„Zd	d„Ze	de
fd„¦   «         ZdS )
ÚMessDetectorPluginzy
    Base abstract class used for mess detection plugins.
    All detectors MUST extend and implement given methods.
    Ú	characterÚreturnc                 ó   — t           ‚)z@
        Determine if given character should be fed in.
        ©ÚNotImplementedError©Úselfr   s     úZ/var/www/pp.vulcan-creative.com/venv/lib/python3.11/site-packages/charset_normalizer/md.pyÚeligiblezMessDetectorPlugin.eligible$   ó
   € õ "Ð!ó    Nc                 ó   — t           ‚)z‰
        The main routine to be executed upon character.
        Insert the logic in witch the text would be considered chaotic.
        r    r"   s     r$   ÚfeedzMessDetectorPlugin.feed*   s
   € õ
 "Ð!r'   c                 ó   — t           ‚)zB
        Permit to reset the plugin to the initial state.
        r    ©r#   s    r$   ÚresetzMessDetectorPlugin.reset1   r&   r'   c                 ó   — t           ‚)z…
        Compute the chaos ratio based on what your feed() has seen.
        Must NOT be lower than 0.; No restriction gt 0.
        r    r+   s    r$   ÚratiozMessDetectorPlugin.ratio7   s
   € õ "Ð!r'   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚboolr%   r)   r,   ÚpropertyÚfloatr.   © r'   r$   r   r      s�   € € € € € ðð ð
" #ð "¨$ð "ð "ð "ð "ð"˜cð " dð "ð "ð "ð "ð"ð "ð "ð "ð ð"�uð "ð "ð "ñ „Xð"ð "ð "r'   r   c                   óZ   — e Zd Zd	d„Zdedefd„Zdeddfd„Zd	d„Ze	de
fd„¦   «         ZdS )
Ú TooManySymbolOrPunctuationPluginr   Nc                 óL   — d| _         d| _        d| _        d | _        d| _        d S )Nr   F)Ú_punctuation_countÚ_symbol_countÚ_character_countÚ_last_printable_charÚ_frenzy_symbol_in_wordr+   s    r$   Ú__init__z)TooManySymbolOrPunctuationPlugin.__init__A   s0   € Ø'(ˆÔØ"#ˆÔØ%&ˆÔà37ˆÔ!Ø,1ˆÔ#Ð#Ð#r'   r   c                 ó*   — |                      ¦   «         S ©N©Úisprintabler"   s     r$   r%   z)TooManySymbolOrPunctuationPlugin.eligibleI   ó   € Ø×$Ò$Ñ&Ô&Ð&r'   c                 ó(  — | xj         dz  c_         || j        k    ro|t          vrft          |¦  «        r| xj        dz  c_        nF|                     ¦   «         du r0t          |¦  «        r!t          |¦  «        du r| xj        dz  c_        || _        d S )Nr   Fé   )	r>   r?   r   r   r<   Úisdigitr   r   r=   r"   s     r$   r)   z%TooManySymbolOrPunctuationPlugin.feedL   sµ   € ØÐÔ Ñ"ÐÔð ˜Ô2Ò2Ð2ØÕ!=Ð=Ð=å˜iÑ(Ô(ð (ØÐ'Ô'¨1Ñ,Ð'Ô'Ð'à×!Ò!Ñ#Ô# uÐ,Ð,Ý˜iÑ(Ô(ð -å 	Ñ*Ô*¨eÐ3Ð3àÐ"Ô" aÑ'Ð"Ô"à$-ˆÔ!Ð!Ð!r'   c                 ó0   — d| _         d| _        d| _        d S ©Nr   )r<   r>   r=   r+   s    r$   r,   z&TooManySymbolOrPunctuationPlugin.reset^   s    € Ø"#ˆÔØ !ˆÔØˆÔÐÐr'   c                 ó^   — | j         dk    rdS | j        | j        z   | j         z  }|dk    r|ndS )Nr   ç        ç333333Ó?)r>   r<   r=   )r#   Úratio_of_punctuations     r$   r.   z&TooManySymbolOrPunctuationPlugin.ratioc   sK   € àÔ  AÒ%Ð%Ø�3ð Ô# dÔ&8Ñ8ØÔ!ñ'"Ðð (<¸sÒ'BÐ'BÐ#Ð#ÈÐKr'   r/   ©r0   r1   r2   rA   r4   r5   r%   r)   r,   r6   r7   r.   r8   r'   r$   r:   r:   @   s®   € € € € € ð2ð 2ð 2ð 2ð' #ð '¨$ð 'ð 'ð 'ð 'ð.˜cð . dð .ð .ð .ð .ð$ð ð ð ð
 ðL�uð Lð Lð Lñ „XðLð Lð Lr'   r:   c                   óZ   — e Zd Zd	d„Zdedefd„Zdeddfd„Zd	d„Ze	de
fd„¦   «         ZdS )
ÚTooManyAccentuatedPluginr   Nc                 ó"   — d| _         d| _        d S rK   ©r>   Ú_accentuated_countr+   s    r$   rA   z!TooManyAccentuatedPlugin.__init__p   s   € Ø%&ˆÔØ'(ˆÔÐÐr'   r   c                 ó*   — |                      ¦   «         S rC   )Úisalphar"   s     r$   r%   z!TooManyAccentuatedPlugin.eligiblet   s   € Ø× Ò Ñ"Ô"Ð"r'   c                 óh   — | xj         dz  c_         t          |¦  «        r| xj        dz  c_        d S d S ©Nr   )r>   r   rU   r"   s     r$   r)   zTooManyAccentuatedPlugin.feedw   sJ   € ØÐÔ Ñ"ÐÔå˜)Ñ$Ô$ð 	)ØÐ#Ô# qÑ(Ð#Ô#Ð#Ð#ð	)ð 	)r'   c                 ó"   — d| _         d| _        d S rK   rT   r+   s    r$   r,   zTooManyAccentuatedPlugin.reset}   s   € Ø !ˆÔØ"#ˆÔÐÐr'   c                 ód   — | j         dk    s| j         dk     rdS | j        | j         z  }|dk    r|ndS )Nr   é   rM   gffffffÖ?rT   )r#   Úratio_of_accentuations     r$   r.   zTooManyAccentuatedPlugin.ratio�   sI   € àÔ  AÒ%Ð%¨Ô)>ÀÒ)BÐ)BØ�3Ø'+Ô'>ÀÔAVÑ'VÐØ(=ÀÒ(EÐ(EÐ$Ð$È3ÐNr'   r/   rP   r8   r'   r$   rR   rR   o   s®   € € € € € ð)ð )ð )ð )ð# #ð #¨$ð #ð #ð #ð #ð)˜cð ) dð )ð )ð )ð )ð$ð $ð $ð $ð ðO�uð Oð Oð Oñ „XðOð Oð Or'   rR   c                   óZ   — e Zd Zd	d„Zdedefd„Zdeddfd„Zd	d„Ze	de
fd„¦   «         ZdS )
ÚUnprintablePluginr   Nc                 ó"   — d| _         d| _        d S rK   )Ú_unprintable_countr>   r+   s    r$   rA   zUnprintablePlugin.__init__Š   s   € Ø'(ˆÔØ%&ˆÔÐÐr'   r   c                 ó   — dS ©NTr8   r"   s     r$   r%   zUnprintablePlugin.eligibleŽ   ó   € Øˆtr'   c                 ód   — t          |¦  «        r| xj        dz  c_        | xj        dz  c_        d S rY   )r   ra   r>   r"   s     r$   r)   zUnprintablePlugin.feed‘   s@   € Ý˜)Ñ$Ô$ð 	)ØÐ#Ô# qÑ(Ð#Ô#ØÐÔ Ñ"ÐÔÐÐr'   c                 ó   — d| _         d S rK   )ra   r+   s    r$   r,   zUnprintablePlugin.reset–   s   € Ø"#ˆÔÐÐr'   c                 ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   rM   r\   )r>   ra   r+   s    r$   r.   zUnprintablePlugin.ratio™   s+   € àÔ  AÒ%Ð%Ø�3àÔ'¨!Ñ+¨tÔ/DÑDÐDr'   r/   rP   r8   r'   r$   r_   r_   ‰   s®   € € € € € ð'ð 'ð 'ð 'ð #ð ¨$ð ð ð ð ð#˜cð # dð #ð #ð #ð #ð
$ð $ð $ð $ð ðE�uð Eð Eð Eñ „XðEð Eð Er'   r_   c                   óZ   — e Zd Zd	d„Zdedefd„Zdeddfd„Zd	d„Ze	de
fd„¦   «         ZdS )
ÚSuspiciousDuplicateAccentPluginr   Nc                 ó0   — d| _         d| _        d | _        d S rK   ©Ú_successive_countr>   Ú_last_latin_characterr+   s    r$   rA   z(SuspiciousDuplicateAccentPlugin.__init__¢   s    € Ø&'ˆÔØ%&ˆÔà48ˆÔ"Ð"Ð"r'   r   c                 óH   — |                      ¦   «         ot          |¦  «        S rC   )rW   r   r"   s     r$   r%   z(SuspiciousDuplicateAccentPlugin.eligible¨   s!   € Ø× Ò Ñ"Ô"Ð:¥x°	Ñ':Ô':Ð:r'   c                 ól  — | xj         dz  c_         | j        �•t          |¦  «        r†t          | j        ¦  «        rr|                     ¦   «         r)| j                             ¦   «         r| xj        dz  c_        t          |¦  «        t          | j        ¦  «        k    r| xj        dz  c_        || _        d S rY   )r>   rm   r   Úisupperrl   r   r"   s     r$   r)   z$SuspiciousDuplicateAccentPlugin.feed«   sÂ   € ØÐÔ Ñ"ÐÔàÔ&Ð2Ý˜yÑ)Ô)ð 3å˜tÔ9Ñ:Ô:ð 3ð × Ò Ñ"Ô"ð , tÔ'A×'IÒ'IÑ'KÔ'Kð ,ØÐ&Ô&¨!Ñ+Ð&Ô&å˜YÑ'Ô'­=¸Ô9SÑ+TÔ+TÒTÐTØÐ&Ô&¨!Ñ+Ð&Ô&Ø%.ˆÔ"Ð"Ð"r'   c                 ó0   — d| _         d| _        d | _        d S rK   rk   r+   s    r$   r,   z%SuspiciousDuplicateAccentPlugin.reset¹   s    € Ø!"ˆÔØ !ˆÔØ%)ˆÔ"Ð"Ð"r'   c                 ó@   — | j         dk    rdS | j        dz  | j         z  S )Nr   rM   rH   )r>   rl   r+   s    r$   r.   z%SuspiciousDuplicateAccentPlugin.ratio¾   s+   € àÔ  AÒ%Ð%Ø�3àÔ&¨Ñ*¨dÔ.CÑCÐCr'   r/   rP   r8   r'   r$   ri   ri   ¡   s®   € € € € € ð9ð 9ð 9ð 9ð; #ð ;¨$ð ;ð ;ð ;ð ;ð/˜cð / dð /ð /ð /ð /ð*ð *ð *ð *ð
 ðD�uð Dð Dð Dñ „XðDð Dð Dr'   ri   c                   óZ   — e Zd Zd	d„Zdedefd„Zdeddfd„Zd	d„Ze	de
fd„¦   «         ZdS )
ÚSuspiciousRanger   Nc                 ó0   — d| _         d| _        d | _        d S rK   )Ú"_suspicious_successive_range_countr>   Ú_last_printable_seenr+   s    r$   rA   zSuspiciousRange.__init__Ç   s    € Ø78ˆÔ/Ø%&ˆÔØ37ˆÔ!Ð!Ð!r'   r   c                 ó*   — |                      ¦   «         S rC   rD   r"   s     r$   r%   zSuspiciousRange.eligibleÌ   rF   r'   c                 óD  — | xj         dz  c_         |                     ¦   «         st          |¦  «        s	|t          v r	d | _        d S | j        €	|| _        d S t          | j        ¦  «        }t          |¦  «        }t          ||¦  «        r| xj        dz  c_        || _        d S rY   )r>   Úisspacer   r   rw   r   Ú is_suspiciously_successive_rangerv   )r#   r   Úunicode_range_aÚunicode_range_bs       r$   r)   zSuspiciousRange.feedÏ   s¾   € ØÐÔ Ñ"ÐÔð ×ÒÑÔð	å˜iÑ(Ô(ð	ð Õ8Ð8Ð8à(,ˆDÔ%ØˆFàÔ$Ð,Ø(1ˆDÔ%ØˆFå)6°tÔ7PÑ)QÔ)QˆÝ)6°yÑ)AÔ)Aˆå+¨O¸_ÑMÔMð 	9ØÐ3Ô3°qÑ8Ð3Ô3à$-ˆÔ!Ð!Ð!r'   c                 ó0   — d| _         d| _        d | _        d S rK   )r>   rv   rw   r+   s    r$   r,   zSuspiciousRange.resetæ   s    € Ø !ˆÔØ23ˆÔ/Ø$(ˆÔ!Ð!Ð!r'   c                 óT   — | j         dk    rdS | j        dz  | j         z  }|dk     rdS |S )Nr   rM   rH   gš™™™™™¹?)r>   rv   )r#   Úratio_of_suspicious_range_usages     r$   r.   zSuspiciousRange.ratioë   sH   € àÔ  AÒ%Ð%Ø�3ð Ô3°aÑ7ØÔ!ñ2"Ð'ð +¨SÒ0Ð0Ø�3à.Ð.r'   r/   rP   r8   r'   r$   rt   rt   Æ   s§   € € € € € ð8ð 8ð 8ð 8ð
' #ð '¨$ð 'ð 'ð 'ð 'ð.˜cð . dð .ð .ð .ð .ð.)ð )ð )ð )ð
 ð/�uð /ð /ð /ñ „Xð/ð /ð /r'   rt   c                   óZ   — e Zd Zd	d„Zdedefd„Zdeddfd„Zd	d„Ze	de
fd„¦   «         ZdS )
ÚSuperWeirdWordPluginr   Nc                 ó„   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S )Nr   FÚ )	Ú_word_countÚ_bad_word_countÚ_foreign_long_countÚ_is_current_word_badÚ_foreign_long_watchr>   Ú_bad_character_countÚ_bufferÚ_buffer_accent_countr+   s    r$   rA   zSuperWeirdWordPlugin.__init__û   sO   € Ø !ˆÔØ$%ˆÔØ()ˆÔ à*/ˆÔ!Ø).ˆÔ à%&ˆÔØ)*ˆÔ!àˆŒØ)*ˆÔ!Ð!Ð!r'   r   c                 ó   — dS rc   r8   r"   s     r$   r%   zSuperWeirdWordPlugin.eligible	  rd   r'   c                 óx  — |                      ¦   «         r¶| xj        |z  c_        t          |¦  «        r| xj        dz  c_        | j        du r|t          |¦  «        du st          |¦  «        r\t          |¦  «        du rKt          |¦  «        du r:t          |¦  «        du r)t          |¦  «        du rt          |¦  «        du rd| _        d S | j        sd S |                     ¦   «         st          |¦  «        st          |¦  «        �rm| j        �re| xj        dz  c_        t          | j        ¦  «        }| xj        |z  c_        |dk    re| j        |z  dk    rd| _        t          | j        d         ¦  «        r6| j        d                              ¦   «         r| xj        dz  c_        d| _        |dk    ri| j        rbd„ t)          | j        t+          d	|¦  «        ¦  «        D ¦   «         }d}|rt          |¦  «        |z  d
k    rd}|s| xj        dz  c_        d| _        | j        r9| xj        dz  c_        | xj        t          | j        ¦  «        z  c_        d| _        d| _        d| _        d	| _        d S |dvr>|                     ¦   «         du r*t3          |¦  «        rd| _        | xj        |z  c_        d S d S d S d S )Nr   FTé   gÃõ(\�ÂÕ?éÿÿÿÿé   c                 ó@   — g | ]\  }}|                      ¦   «         ¯|‘ŒS r8   )rp   )Ú.0ÚcÚis      r$   ú
<listcomp>z-SuperWeirdWordPlugin.feed.<locals>.<listcomp>/  s:   € ð "ð "ð "á˜˜1Ø—y’y‘{”{ð"Øð"ð "ð "r'   r   rN   r„   >   Ú_ú-ú<ú=ú>ú|ú~)rW   r‹   r   rŒ   r‰   r   r   r   r   r   r   rz   r   r   r…   Úlenr>   rˆ   rp   r‡   ÚzipÚranger†   rŠ   rI   r   )r#   r   Úbuffer_lengthÚcamel_case_dstÚprobable_camel_caseds        r$   r)   zSuperWeirdWordPlugin.feed  s?  € Ø×ÒÑÔð 	ØˆLŒL˜IÑ%ˆLŒLÝ˜iÑ(Ô(ð /ØÐ)Ô)¨QÑ.Ð)Ô)àÔ(¨EÐ1Ð1Ý˜iÑ(Ô(¨EÐ1Ð1µ^ÀIÑ5NÔ5NÐ1Ý˜9Ñ%Ô%¨Ð.Ð.Ý˜iÑ(Ô(¨EÐ1Ð1Ý 	Ñ*Ô*¨eÐ3Ð3Ý 	Ñ*Ô*¨eÐ3Ð3Ý˜IÑ&Ô&¨%Ð/Ð/à+/�Ô(ØˆFØŒ|ð 	ØˆFà×ÒÑÔð-	&Ý#1°)Ñ#<Ô#<ð-	&Ý@LÈYÑ@WÔ@Wñ-	&àŒlñ-	&ð ÐÔ Ñ!ÐÔÝ!$ T¤\Ñ!2Ô!2ˆMàÐ!Ô! ]Ñ2Ð!Ô!à Ò!Ð!ØÔ,¨}Ñ<¸tÒCÐCØ04�DÔ-õ " $¤,¨rÔ"2Ñ3Ô3ð 5¸¼ÀRÔ8H×8PÒ8PÑ8RÔ8Rð 5ØÐ,Ô,°Ñ1Ð,Ô,Ø04�DÔ-Ø Ò"Ð" tÔ'?Ð"ð"ð "å # D¤Lµ%¸¸=Ñ2IÔ2IÑ JÔ Jð"ñ "ô "�ð
 .3Ð$à!ð 0¥s¨>Ñ':Ô':¸]Ñ'JÈcÒ'QÐ'QØ+/Ð(à+ð 5ØÐ,Ô,°Ñ1Ð,Ô,Ø04�DÔ-àÔ(ð 2ØÐ$Ô$¨Ñ)Ð$Ô$ØÐ)Ô)­S°´Ñ->Ô->Ñ>Ð)Ô)Ø,1�Ô)à',ˆDÔ$ØˆDŒLØ()ˆDÔ%Ð%Ð%àÐ@Ð@Ð@Ø×!Ò!Ñ#Ô# uÐ,Ð,Ý˜)Ñ$Ô$ð -ð )-ˆDÔ%ØˆLŒL˜IÑ%ˆLŒLˆLˆLð AÐ@Ø,Ð,Ð,Ð,r'   c                 óv   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S )Nr„   Fr   )r‹   rˆ   r‰   r†   r…   r>   rŠ   r‡   r+   s    r$   r,   zSuperWeirdWordPlugin.resetM  sG   € ØˆŒØ$)ˆÔ!Ø#(ˆÔ Ø ˆÔØˆÔØ !ˆÔØ$%ˆÔ!Ø#$ˆÔ Ð Ð r'   c                 óP   — | j         dk    r| j        dk    rdS | j        | j        z  S )Né
   r   rM   )r…   r‡   rŠ   r>   r+   s    r$   r.   zSuperWeirdWordPlugin.ratioW  s3   € àÔ˜rÒ!Ð! dÔ&>À!Ò&CÐ&CØ�3àÔ(¨4Ô+@Ñ@Ð@r'   r/   rP   r8   r'   r$   r‚   r‚   ú   s¯   € € € € € ð+ð +ð +ð +ð #ð ¨$ð ð ð ð ð?&˜cð ?& dð ?&ð ?&ð ?&ð ?&ðB%ð %ð %ð %ð ðA�uð Að Að Añ „XðAð Að Ar'   r‚   c                   ó^   — e Zd ZdZd
d„Zdedefd„Zdeddfd„Zd
d„Z	e
defd	„¦   «         ZdS )ÚCjkInvalidStopPluginu²   
    GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and
    can be easily detected. Searching for the overuse of 'ä¸…' and 'ä¸„'.
    r   Nc                 ó"   — d| _         d| _        d S rK   ©Ú_wrong_stop_countÚ_cjk_character_countr+   s    r$   rA   zCjkInvalidStopPlugin.__init__e  s   € Ø&'ˆÔØ)*ˆÔ!Ð!Ð!r'   r   c                 ó   — dS rc   r8   r"   s     r$   r%   zCjkInvalidStopPlugin.eligiblei  rd   r'   c                 ót   — |dv r| xj         dz  c_         d S t          |¦  «        r| xj        dz  c_        d S d S )N>   õ   ä¸„õ   ä¸…r   )r«   r   r¬   r"   s     r$   r)   zCjkInvalidStopPlugin.feedl  sZ   € Ø˜Ð&Ð&ØÐ"Ô" aÑ'Ð"Ô"ØˆFÝ�)ÑÔð 	+ØÐ%Ô%¨Ñ*Ð%Ô%Ð%Ð%ð	+ð 	+r'   c                 ó"   — d| _         d| _        d S rK   rª   r+   s    r$   r,   zCjkInvalidStopPlugin.resets  s   € Ø!"ˆÔØ$%ˆÔ!Ð!Ð!r'   c                 ó:   — | j         dk     rdS | j        | j         z  S )Né   rM   )r¬   r«   r+   s    r$   r.   zCjkInvalidStopPlugin.ratiow  s&   € àÔ$ rÒ)Ð)Ø�3ØÔ%¨Ô(AÑAÐAr'   r/   )r0   r1   r2   r3   rA   r4   r5   r%   r)   r,   r6   r7   r.   r8   r'   r$   r¨   r¨   _  s¸   € € € € € ðð ð
+ð +ð +ð +ð #ð ¨$ð ð ð ð ð+˜cð + dð +ð +ð +ð +ð&ð &ð &ð &ð ðB�uð Bð Bð Bñ „XðBð Bð Br'   r¨   c                   óZ   — e Zd Zd	d„Zdedefd„Zdeddfd„Zd	d„Ze	de
fd„¦   «         ZdS )
ÚArchaicUpperLowerPluginr   Nc                 óh   — d| _         d| _        d| _        d| _        d| _        d | _        d| _        d S )NFr   T)Ú_bufÚ_character_count_since_last_sepÚ_successive_upper_lower_countÚ#_successive_upper_lower_count_finalr>   Ú_last_alpha_seenÚ_current_ascii_onlyr+   s    r$   rA   z ArchaicUpperLowerPlugin.__init__  s?   € ØˆŒ	à45ˆÔ,à23ˆÔ*Ø89ˆÔ0à%&ˆÔà/3ˆÔØ)-ˆÔ Ð Ð r'   r   c                 ó   — dS rc   r8   r"   s     r$   r%   z ArchaicUpperLowerPlugin.eligibleŒ  rd   r'   c                 ó  — |                      ¦   «         ot          |¦  «        }|du }|r| j        dk    rt| j        dk    r4|                     ¦   «         du r| j        du r| xj        | j        z  c_        d| _        d| _        d | _        d| _        | xj	        dz  c_	        d| _        d S | j        du rt          |¦  «        du rd| _        | j        �Š|                     ¦   «         r| j                             ¦   «         s-|                     ¦   «         rB| j                             ¦   «         r)| j        du r| xj        dz  c_        d| _        nd| _        nd| _        | xj	        dz  c_	        | xj        dz  c_        || _        d S )NFr   é@   r   TrH   )rW   r   r¸   rI   r¼   rº   r¹   r»   r·   r>   r   rp   Úislower)r#   r   Úis_concernedÚ	chunk_seps       r$   r)   zArchaicUpperLowerPlugin.feed�  sÇ  € Ø ×(Ò(Ñ*Ô*ÐJÕ/?À	Ñ/JÔ/JˆØ  EÐ)ˆ	àð 	˜Ô=ÀÒAÐAàÔ4¸Ò:Ð:Ø×%Ò%Ñ'Ô'¨5Ð0Ð0ØÔ,°Ð5Ð5àÐ8Ô8ØÔ6ñÐ8Ô8ð 23ˆDÔ.Ø34ˆDÔ0Ø$(ˆDÔ!ØˆDŒIØÐ!Ô! QÑ&Ð!Ô!Ø'+ˆDÔ$àˆFàÔ# tÐ+Ð+µ¸Ñ0CÔ0CÀuÐ0LÐ0LØ',ˆDÔ$àÔ Ð,Ø×!Ò!Ñ#Ô#ð 	"¨Ô(=×(EÒ(EÑ(GÔ(Gð 	"Ø×!Ò!Ñ#Ô#ð	"Ø(,Ô(=×(EÒ(EÑ(GÔ(Gð	"ð ”9 Ð$Ð$ØÐ6Ô6¸!Ñ;Ð6Ô6Ø %�D”I�Ià $�D”I�Ià!�”	àÐÔ Ñ"ÐÔØÐ,Ô,°Ñ1Ð,Ô,Ø )ˆÔÐÐr'   c                 óh   — d| _         d| _        d| _        d| _        d | _        d| _        d| _        d S )Nr   FT)r>   r¸   r¹   rº   r»   r·   r¼   r+   s    r$   r,   zArchaicUpperLowerPlugin.reset¹  s?   € Ø !ˆÔØ/0ˆÔ,Ø-.ˆÔ*Ø34ˆÔ0Ø $ˆÔØˆŒ	Ø#'ˆÔ Ð Ð r'   c                 ó:   — | j         dk    rdS | j        | j         z  S )Nr   rM   )r>   rº   r+   s    r$   r.   zArchaicUpperLowerPlugin.ratioÂ  s&   € àÔ  AÒ%Ð%Ø�3àÔ7¸$Ô:OÑOÐOr'   r/   rP   r8   r'   r$   rµ   rµ   ~  s¯   € € € € € ð.ð .ð .ð .ð #ð ¨$ð ð ð ð ð(*˜cð (* dð (*ð (*ð (*ð (*ðT(ð (ð (ð (ð ðP�uð Pð Pð Pñ „XðPð Pð Pr'   rµ   é   )Úmaxsizer|   r}   r   c                 ó®  — | �|€dS | |k    rdS d| v rd|v rdS d| v sd|v rdS d| v sd|v r
d| v sd|v rdS |                       d¦  «        |                      d¦  «        }}|D ]}|t          v rŒ||v r dS Œ| dv |dv }}|s|r
d	| v sd	|v rdS |r|rdS d
| v sd
|v rd	| v sd	|v rdS | dk    s|dk    rdS d	| v sd	|v s| dv r|dv rd| v sd|v rdS d| v sd|v rdS dS )za
    Determine if two Unicode range seen next to each other can be considered as suspicious.
    NTFÚLatinÚ	EmoticonsÚ	Combiningú )ÚHiraganaÚKatakanaÚCJKÚHangulzBasic Latin)rÍ   rÌ   ÚPunctuationÚForms)Úsplitr
   )r|   r}   Úkeywords_range_aÚkeywords_range_bÚelÚrange_a_jp_charsÚrange_b_jp_charss          r$   r{   r{   Ê  s  € ð Ð /Ð"9Øˆtà˜/Ò)Ð)Øˆuà�/Ð!Ð! g°Ð&@Ð&@Øˆuà�oÐ%Ð%¨¸Ð)GÐ)GØˆuð 	�?Ð"Ð" g°Ð&@Ð&@Ø�Ð&Ð&¨+¸Ð*HÐ*Hàˆuà)8×)>Ò)>Øñ*ô *à×Ò˜SÑ!Ô!ð 'Ðð ð ð ˆØÕ0Ð0Ð0ØØÐ!Ð!Ð!Ø�5�5ð "ð
 	ð
ð	
ð
 	Ð3Ð3ð 'Ðð 	ð Ð,ð Ø�Ð Ð  E¨_Ð$<Ð$<àˆuØð Ð,ð Øˆuà�?Ð"Ð" h°/Ð&AÐ&AØ�OÐ#Ð# u°Ð'?Ð'?Ø�5Ø˜mÒ+Ð+¨À-Ò/OÐ/OØ�5ð 	�Ð Ð  E¨_Ð$<Ð$<ØÐ3Ð3Ð3ØÐ7Ð7Ð7à˜OÐ+Ð+¨}ÀÐ/OÐ/OØ�5Ø�oÐ%Ð%¨°OÐ)CÐ)CØ�5àˆ4r'   i   çš™™™™™É?FÚdecoded_sequenceÚmaximum_thresholdÚdebugc           	      óZ  — d„ t                                ¦   «         D ¦   «         }t          | ¦  «        dz   }d}|dk     rd}n|dk    rd}nd}t          | d	z   t	          |¦  «        ¦  «        D ]m\  }}|D ],}	|	                     |¦  «        r|	                     |¦  «         Œ-|d
k    r	||z  d
k    s	||dz
  k    r!t          d„ |D ¦   «         ¦  «        }||k    r nŒn|rÁt          d¦  «        }
|
 	                    t          d|› d|› d|› �¦  «         t          | ¦  «        dk    rL|
 	                    t          d| dd…         › �¦  «         |
 	                    t          d| dd…         › �¦  «         |D ],}|
 	                    t          |j        › d|j        › �¦  «         Œ-t          |d¦  «        S )zw
    Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
    c                 ó"   — g | ]} |¦   «         ‘ŒS r8   r8   )r“   Úmd_classs     r$   r–   zmess_ratio.<locals>.<listcomp>  s+   € ð +ð +ð +Øˆˆ‰
Œ
ð+ð +ð +r'   r   rM   i   é    rÅ   r¿   é€   ú
r   c              3   ó$   K  — | ]}|j         V — Œd S rC   )r.   )r“   Údts     r$   ú	<genexpr>zmess_ratio.<locals>.<genexpr>0  s$   è è € Ð!?Ð!?¨r "¤(Ð!?Ð!?Ð!?Ð!?Ð!?Ð!?r'   Úcharset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=r³   zStarting with: NzEnding with: iðÿÿÿz: é   )r   Ú__subclasses__rž   rŸ   r    r%   r)   Úsumr   Úlogr	   Ú	__class__r.   Úround)rÙ   rÚ   rÛ   Ú	detectorsÚlengthÚmean_mess_ratioÚ!intermediary_mean_mess_ratio_calcr   ÚindexÚdetectorÚloggerrã   s               r$   Ú
mess_ratioró     s1  € ð+ð +Ý#5×#DÒ#DÑ#FÔ#Fð+ñ +ô +€Iõ Ð&Ñ'Ô'¨!Ñ+€Fà €Oà�‚|€|Ø13Ð)Ð)Ø	�4ŠˆØ,.Ð)Ð)à,/Ð)åÐ 0°4Ñ 7½¸v¹¼ÑGÔGð ð Ñˆ	�5Ø!ð 	)ð 	)ˆHØ× Ò  Ñ+Ô+ð )Ø—’˜iÑ(Ô(Ð(øð �AŠIˆI˜%Ð"CÑCÀqÒHÐHØ�f˜q‘jÒ Ð Ý!Ð!?Ð!?°YÐ!?Ñ!?Ô!?Ñ?Ô?ˆOàÐ"3Ò3Ð3Ø�øàð =ÝÐ/Ñ0Ô0ˆà�
Š
Ýð5Ø1Rð5ð 5Øetð5ð 5à!2ð5ð 5ñ	
ô 	
ð 	
õ ÐÑ Ô  2Ò%Ð%Ø�JŠJ•uÐGÐ0@ÀÀ"ÀÔ0EÐGÐGÑHÔHÐHØ�JŠJ•uÐGÐ.>¸s¸u¸uÔ.EÐGÐGÑHÔHÐHàð 	=ð 	=ˆBØ�JŠJ•u ¤Ð;Ð;°´Ð;Ð;Ñ<Ô<Ð<Ð<å� !Ñ$Ô$Ð$r'   N)rØ   F)*Ú	functoolsr   Úloggingr   Útypingr   r   Úconstantr   r	   r
   Úutilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   rR   r_   ri   rt   r‚   r¨   rµ   r4   r5   r{   r7   ró   r8   r'   r$   ú<module>rù      s«  ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð("ð "ð "ð "ð "ñ "ô "ð "ðD,Lð ,Lð ,Lð ,Lð ,LÐ'9ñ ,Lô ,Lð ,Lð^Oð Oð Oð Oð OÐ1ñ Oô Oð Oð4Eð Eð Eð Eð EÐ*ñ Eô Eð Eð0"Dð "Dð "Dð "Dð "DÐ&8ñ "Dô "Dð "DðJ1/ð 1/ð 1/ð 1/ð 1/Ð(ñ 1/ô 1/ð 1/ðhbAð bAð bAð bAð bAÐ-ñ bAô bAð bAðJBð Bð Bð Bð BÐ-ñ Bô Bð Bð>IPð IPð IPð IPð IPÐ0ñ IPô IPð IPðX €�4ÐÑÔðCØ˜c”]ðCØ5=¸c´]ðCà	ðCð Cð Cñ ÔðCðL €�4ÐÑÔàINð4%ð 4%Øð4%Ø.3ð4%ØBFð4%à
ð4%ð 4%ð 4%ñ Ôð4%ð 4%ð 4%r'   