+
    Nj                    F  a 0 t $ ^ RIHt ^ RIt^ RIHt ^ RIHt ]P                  R+8  d   ^ RI	H
t
 M ^ RIH
t
 ^RIHtHtHtHtHtHtHtHtHtHtHtHtHt ^RIHtHtHtHtH t H!t!H"t" ]],          ],          ],          ],          t#R	]$R
&   ]
 ! R R4      4       t%]! RR7      R R l4       t&]'! ^4       U u. uF  p ]%! ](! V 4      4      NK  	  up t)R]$R&    ! R R4      t*]
 ! R R]*4      4       t+]
 ! R R]*4      4       t,]
 ! R R]*4      4       t-]
 ! R R]*4      4       t.]
 ! R R]*4      4       t/]
 ! R R]*4      4       t0]
 ! R  R!]*4      4       t1]
 ! R" R#]*4      4       t2]
 ! R$ R%]*4      4       t3]! R&R7      R' R( l4       t4R,R) R* llt5R#   ] d    R t
 EL`i ; iu up i )-    )annotationsN)	lru_cache)	getLogger)finalc                    V # )N )clss   &W/data/cameron/venvs/serve_omidlab/lib/python3.14/site-packages/charset_normalizer/md.pyr   r      s    J    )COMMON_CJK_CHARACTERSCOMMON_SAFE_ASCII_CHARACTERSTRACEUNICODE_SECONDARY_RANGE_KEYWORD_ACCENTUATED_ARABIC_ARABIC_ISOLATED_FORM_CJK_HANGUL	_HIRAGANA	_KATAKANA_LATIN_THAI)_character_flagsis_emoticonis_punctuationis_separator	is_symbolremove_accentunicode_rangeint_GLYPH_MASKc                     ] tR t^/t$ RtR tR]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R R ltRtR# )!CharInfoz>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_arabicis_glyphpunctsymrangesepemoticonsafe
common_cjkstrboolr    
str | Nonec                    V ^8  d   QhRRRR/# )   r$   r:   returnNoner   )formats   "r
   __annotate__CharInfo.__annotate__c   s     q= q=# q=$ q=r   c                   Wn         \        V4      pV^8  EdQ   RV n        RV n        RV n        RV n        RV n        ^ATu;8:  d   ^Z8:  dW   M MSRV n        RV n        RV n	        RV n
        RV n        RV n        RV n        \        V n        RV n        RV n        RV n        EM`^aTu;8:  d   ^z8:  dW   M MSRV n        RV n        RV n	        RV n
        RV n        RV n        RV n        \        V n        RV n        RV n        RV n        EM^0Tu;8:  d   ^98:  dS   M MORV n        RV n        RV n	        RV n
        RV n        RV n        RV n        ^ V n        RV n        RV n        RV n        EMV^ 8X  g   ^	Tu;8:  d   ^8:  dV   M MRRV n        RV n        RV n	        RV n
        RV n        V^ 8H  V n        RV n        ^ V n        RV n        RV n        RV n        EM/VP'                  4       V n        RV n        RV n        RV n	        RV n
        RV n        RV n        ^ V n        RV n        V P                  '       d   \)        V4      MRV n        V P                  '       d   \+        V4      MRV n        EMRV n        VP'                  4       V n        VP-                  4       V n        VP/                  4       V n        VP1                  4       V n	        VP3                  4       V n
        VP5                  4       V n        V P                  V P                  8g  V n        V P                  '       d   \7        V4      pM^ pW0n        \9        V\:        ,          4      V n        \9        V\        ,          4      V n        \9        V\<        ,          4      V n        \9        V\>        ,          4      V n        \9        V\@        ,          4      V n        V P                  '       d   \)        V4      MRV n        V P                  '       d   \+        V4      MRV n        \C        V4      V n"        \G        V4      V n$        \K        V4      V n&        V\N        9   V n(        V\R        9   V n*        R# )zcCompute all properties for *character* (built once per codepoint,
every branch assigns every slot).TFN)+r$   ordr+   r.   r0   r1   r2   r&   r'   r(   r)   r*   r%   r,   r   r-   r/   r3   r4   isprintabler   r   isalphaisupperislowerisspaceisdigitr   r;   r   r   r   r!   r   r5   r   r6   r   r7   r   r8   r   r9   )selfr$   or-   s   &&  r
   __init__CharInfo.__init__c   s    # Ys7 DM$DDK"DN!DMQ}"}!
!
"
"
"
!%%)"#
!
"
 qC!
"
!
"
"
!%%)"#
!
"
 qB"
"
"
"
!
!%%*"
"
"
 bQ!\r\"
"
"
!
"
!"b%*"
"
"
  "+!6!6!8"
"
"
"
"
%*"
"
:>...^I6e
37>>>9Y/u "DM&224DN"**,DJ"**,DJ"**,DJ"**,DJ"**,DJ!%tzz!9D zzz(3J#EL$89Defn-DJut|,DK!%'/2DN !45DM 7;nnn	2%DJ/3~~~y+5DH"9-
	*#I.!==	#'<<r   )r.   r&   r,   r$   r9   r*   r7   r-   r1   r+   r0   r2   r/   r(   r%   r3   r5   r8   r6   r)   r4   r'   N)r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   )	__name__
__module____qualname____firstlineno____doc__	__slots____annotations__rN   __static_attributes__r   r   r
   r#   r#   /   s    HI2 NOKKKKKNJKLONK	I	IN
Jq= q=r   r#   )maxsizec                    V ^8  d   QhRRRR/# )r>   r$   r:   r?   r#   r   )rA   s   "r
   rB   rB      s      # ( r   c                    \        V 4      # )zBBuild (once per codepoint) and cache the CharInfo for *character*.)r#   )r$   s   &r
   
_char_infor[      s     Ir   zlist[CharInfo]_ASCII_CHAR_INFOc                  L    ] tR t^tRtRtR R ltR R lt]R R l4       t	Rt
R	# )
MessDetectorPluginzm
Base abstract class used for mess detection plugins.
All detectors MUST extend and implement given methods.
c               $    V ^8  d   QhRRRRRR/# r>   r$   r:   infor#   r?   r@   r   )rA   s   "r
   rB   MessDetectorPlugin.__annotate__   s!     " "3 "h "4 "r   c                    \         h)zq
The main routine to be executed upon character.
Insert the logic in witch the text would be considered chaotic.
NotImplementedErrorrL   r$   ra   s   &&&r
   	feed_infoMessDetectorPlugin.feed_info   s
    
 "!r   c                   V ^8  d   QhRR/# r>   r?   r@   r   )rA   s   "r
   rB   rb      s     " "t "r   c                    \         h)z2
Permit to reset the plugin to the initial state.
rd   rL   s   &r
   resetMessDetectorPlugin.reset   s
     "!r   c                   V ^8  d   QhRR/# r>   r?   floatr   )rA   s   "r
   rB   rb      s     " "u "r   c                    \         h)zm
Compute the chaos ratio based on what your feed() has seen.
Must NOT be lower than 0.; No restriction gt 0.
rd   rl   s   &r
   ratioMessDetectorPlugin.ratio   s
     "!r   r   N)rP   rQ   rR   rS   rT   rU   rg   rm   propertyrs   rW   r   r   r
   r^   r^      s,    
 I"" " "r   r^   c                  T    ] tR tRtRtR R ltR R ltR R lt]R R	 l4       t	R
t
R# ) TooManySymbolOrPunctuationPlugini  c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   -TooManySymbolOrPunctuationPlugin.__annotate__  s     2 2$ 2r   c                	L    ^ V n         ^ V n        ^ V n        RV n        RV n        R# r   NF_punctuation_count_symbol_count_character_count_last_printable_char_frenzy_symbol_in_wordrl   s   &r
   rN   )TooManySymbolOrPunctuationPlugin.__init__  s*    '("#%&04!,1#r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   ry     s!     
. 
.3 
.h 
.4 
.r   c                ~   V ;P                   ^,          un         WP                  8w  d   VP                  '       g|   VP                  '       d   V ;P                  ^,          un        MOVP
                  '       g>   VP                  '       d,   VP                  '       g   V ;P                  ^,          un        Wn        R# 1Optimized feed using pre-computed character info.N)	r   r   r8   r3   r}   r*   r4   r7   r~   rf   s   &&&r
   rg   *TooManySymbolOrPunctuationPlugin.feed_info  sq    "111$)))zzz''1,'ZZZDHHHT]]]""a'"$-!r   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   ry   !  s      t r   c                	0    ^ V n         ^ V n        ^ V n        R# r   N)r}   r   r~   rl   s   &r
   rm   &TooManySymbolOrPunctuationPlugin.reset!  s    "# !r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   ry   '  s     L Lu Lr   c                	    V P                   ^ 8X  d   R# V P                  V P                  ,           V P                   ,          pVR8  d   V# R# )r           333333?)r   r}   r~   )rL   ratio_of_punctuations   & r
   rs   &TooManySymbolOrPunctuationPlugin.ratio&  sO      A% ##d&8&88!!'" (<s'B#KKr   )r   r   r   r}   r~   Nr|   rP   rQ   rR   rS   rU   rN   rg   rm   ru   rs   rW   r   r   r
   rw   rw     s.    I2
.
 L Lr   rw   c                  T    ] tR tRtRtR R ltR R ltR R lt]R R	 l4       t	R
t
R# )TooManyAccentuatedPlugini2  c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   %TooManyAccentuatedPlugin.__annotate__6  s     ) )$ )r   c                	"    ^ V n         ^ V n        R# r   r   _accentuated_countrl   s   &r
   rN   !TooManyAccentuatedPlugin.__init__6  s    %&'(r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   r   :  s!     ) )3 )h )4 )r   c                    V ;P                   ^,          un         VP                  '       d   V ;P                  ^,          un        R# R# r   )r   r.   r   rf   s   &&&r
   rg   "TooManyAccentuatedPlugin.feed_info:  s5    "##q(# r   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   r   A  s     $ $t $r   c                	"    ^ V n         ^ V n        R# r   r   rl   s   &r
   rm   TooManyAccentuatedPlugin.resetA  s     !"#r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   r   F  s     O Ou Or   c                	x    V P                   ^8  d   R# V P                  V P                   ,          pVR8  d   V# R# )   r   gffffff?r   )rL   ratio_of_accentuations   & r
   rs   TooManyAccentuatedPlugin.ratioE  s=      1$'+'>'>AVAV'V(=(E$N3Nr   )r   r   Nr   r   r   r   r
   r   r   2  s,    :I))$ O Or   r   c                  T    ] tR tRtRtR R ltR R ltR R lt]R R	 l4       t	R
t
R# )UnprintablePluginiN  c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   UnprintablePlugin.__annotate__R  s     ' '$ 'r   c                	"    ^ V n         ^ V n        R# r   _unprintable_countr   rl   s   &r
   rN   UnprintablePlugin.__init__R  s    '(%&r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   r   V  s!     	# 	#3 	#h 	#4 	#r   c                    VP                   '       g:   VP                  '       g(   VR8w  d!   VR8w  d   V ;P                  ^,          un        V ;P                  ^,          un        R# )r   u   ﻿N)r)   r%   r   r   rf   s   &&&r
   rg   UnprintablePlugin.feed_infoV  sH     


NNNV#X%##q(#"r   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   r   a  s     $ $t $r   c                	    ^ V n         R# r   )r   rl   s   &r
   rm   UnprintablePlugin.reseta  s
    "#r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   r   e  s     E Eu Er   c                	p    V P                   ^ 8X  d   R# V P                  ^,          V P                   ,          # r   r   r   r   rl   s   &r
   rs   UnprintablePlugin.ratiod  s/      A%''!+t/D/DDDr   r   Nr   r   r   r   r
   r   r   N  s,    :I'	#$ E Er   r   c                  T    ] tR tRtRtR R ltR R ltR R lt]R R	 l4       t	R
t
R# )SuspiciousDuplicateAccentPluginil  c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   ,SuspiciousDuplicateAccentPlugin.__annotate__u  s     1 1$ 1r   c                	>    ^ V n         ^ V n        RV n        RV n        R# r{   _successive_countr   _last_latin_character_last_was_accentuatedrl   s   &r
   rN   (SuspiciousDuplicateAccentPlugin.__init__u  s"    &'%&15"+0"r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   r   |  s!     6 63 6h 64 6r   c                   V ;P                   ^,          un         V P                  e   VP                  '       d   V P                  '       d   VP                  '       d:   V P                  P                  4       '       d   V ;P                  ^,          un        \        V4      \        V P                  4      8X  d   V ;P                  ^,          un        Wn        VP                  V n        R# r   )r   r   r.   r   r'   rH   r   r   rf   s   &&&r
   rg   )SuspiciousDuplicateAccentPlugin.feed_info|  s    "&&2   ***zzzd88@@BB&&!+&Y'=9S9S+TT&&!+&%."%)%5%5"r   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   r     s     + +t +r   c                	>    ^ V n         ^ V n        RV n        RV n        R# r{   r   rl   s   &r
   rm   %SuspiciousDuplicateAccentPlugin.reset  s"    !" !%)"%*"r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   r     s     D Du Dr   c                	p    V P                   ^ 8X  d   R# V P                  ^,          V P                   ,          # r   )r   r   rl   s   &r
   rs   %SuspiciousDuplicateAccentPlugin.ratio  s/      A%&&*d.C.CCCr   )r   r   r   r   Nr   r   r   r   r
   r   r   l  s.    I16+ D Dr   r   c                  T    ] tR tRtRtR R ltR R ltR R lt]R R	 l4       t	R
t
R# )SuspiciousRangei  c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   SuspiciousRange.__annotate__  s     6 6$ 6r   c                	>    ^ V n         ^ V n        RV n        RV n        R# r   "_suspicious_successive_range_countr   _last_printable_seen_last_printable_rangerl   s   &r
   rN   SuspiciousRange.__init__  s"    78/%&04!15"r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   r     s!     5 53 5h 54 5r   c                   V ;P                   ^,          un         VP                  '       g%   VP                  '       g   VP                  '       d   RV n        RV n        R# V P                  f   Wn        VP                  V n        R# V P
                  pVP                  pW48w  g   Vf+   \        W44      '       d   V ;P                  ^,          un        Wn        W@n        R# r   )	r   r)   r3   r8   r   r   r5    is_suspiciously_successive_ranger   )rL   r$   ra   unicode_range_aunicode_range_bs   &&&  r
   rg   SuspiciousRange.feed_info  s    ":::tyyy(,D%)-D&$$,(1%)-D&&*&@&@&*jj -1H/QQ771<7$-!%4"r   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   r     s     * *t *r   c                	>    ^ V n         ^ V n        RV n        RV n        R# r   )r   r   r   r   rl   s   &r
   rm   SuspiciousRange.reset  s"     !23/$(!%)"r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   r     s     / /u /r   c                	t    V P                   ^8:  d   R# V P                  ^,          V P                   ,          pV# )   r   )r   r   )rL   ratio_of_suspicious_range_usages   & r
   rs   SuspiciousRange.ratio  s<      B& 33a7!!2"' /.r   )r   r   r   r   Nr   r   r   r   r
   r   r     s,    I652* / /r   r   c                  T    ] tR tRtRtR R ltR R ltR R lt]R R	 l4       t	R
t
R# )SuperWeirdWordPlugini  c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   !SuperWeirdWordPlugin.__annotate__  s     1 1$ 1r   c                	    ^ V n         ^ V n        ^ V n        RV n        RV n        ^ V n        ^ V n        ^ V n        RV n        RV n	        ^ V n
        ^ V n        ^ V n        RV n        RV n        R# )r   FN_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_asciirl   s   &r
   rN   SuperWeirdWordPlugin.__init__  sz     !$%() */!). %&)*!#$-138*)*!() () ). +0"r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   r     s&     Y7 Y73 Y7h Y74 Y7r   c                   VP                   '       Ed>   V P                  ^ 8X  d   VP                  V n        V ;P                  ^,          un        Wn        VP
                  '       d   V ;P                  ^,          un        VP                  '       g   RV n        VP                  V n
        VP                  '       d   V ;P                  ^,          un        V P                  '       g>   VP                  '       d   VP                  '       d   VP                  '       g   RV n        VP                  '       d   V ;P                  ^,          un        R# V P                  '       g   R# VP                   '       g&   VP"                  '       g   VP$                  '       EdS   V ;P&                  ^,          un        V P                  pV ;P(                  V,          un        V^8  Ed   V P                  V,          R8  d	   RV n        MV P                  '       dS   V P                  P-                  4       '       d3   V P                  V8w  d"   V ;P.                  ^,          un        RV n        MV P                  ^8X  d"   RV n        V ;P.                  ^,          un        M\V P                  '       dK   V P                  '       d9   V P                  V^,
          8X  d!   V ;P.                  ^,          un        RV n        V^8  dh   V P                  '       dV   V P                  ^ 8  ;'       d    V P                  V,          R8*  pV'       g!   V ;P.                  ^,          un        RV n        V P*                  '       d:   V ;P0                  ^,          un        V ;P2                  V,          un        RV n        RV n        ^ V n        RV n        RV n
        ^ V n        ^ V n        ^ V n        RV n        RV n        R# VR9  dX   VP4                  '       gD   VP6                  '       d0   RV n        V ;P                  ^,          un        Wn        RV n
        R# R# R# R# )r   TN      ?r   F>   -<=>_|~)r&   r   r(   r   r   r'   r   r+   r   r.   r   r   r   r/   r2   r   r)   r3   r6   r   r   r   rH   r   r   r   r*   r4   )rL   r$   ra   buffer_lengthprobable_camel_caseds   &&&  r
   rg   SuperWeirdWordPlugin.feed_info  s@   :::""a'+/::(1$%."zzz((A-(===-1*151A1AD.))Q.),,,t'7'7'7+/(}}}((A-(""":::txxx!!%!4!4M!!]2!!,,}<C04D-666..668800MA,,1,04D---204D-,,1,...00000MA4EE
 ,,1,04D-"t'?'?'?,,q0 H H00=@CG %
 ,,,1,04D-((($$)$))]:),1)',D$"#D%)D"16D.()D%'(D$'(D$',D$).D&@@JJJ(,D%1$%."16D.   Ar   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   r   V  s     + +t +r   c                	    ^ V n         RV n        RV n        RV n        RV n        ^ V n        ^ V n        ^ V n        ^ V n        ^ V n	        ^ V n
        ^ V n        ^ V n        RV n        RV n        R# r{   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   s   &r
   rm   SuperWeirdWordPlugin.resetV  sz    !%-2*$)!#(   !$%!#$ $%!#$ #$ #( %*"r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   r   h  s     A Au Ar   c                	    V P                   ^
8:  d   V P                  ^ 8X  d   R# V P                  V P                  ,          # )
   r   )r   r   r   r   rl   s   &r
   rs   SuperWeirdWordPlugin.ratiog  s7    r!d&>&>!&C((4+@+@@@r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Nr   r   r   r   r
   r   r     s0    I$1(Y7v+" A Ar   r   c                  X    ] tR tRtRtRtR R ltR R ltR R lt]	R	 R
 l4       t
RtR# )CjkUncommonPluginio  z4
Detect messy CJK text that probably means nothing.
c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   CjkUncommonPlugin.__annotate__w  s     & &$ &r   c                	"    ^ V n         ^ V n        R# r   r   _uncommon_countrl   s   &r
   rN   CjkUncommonPlugin.__init__w  s    %&$%r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   r  {  s!     & &3 &h &4 &r   c                    V ;P                   ^,          un         VP                  '       g   V ;P                  ^,          un        R# R# r   )r   r9   r  rf   s   &&&r
   rg   CjkUncommonPlugin.feed_info{  s2    "  A%  r   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   r    s     ! !t !r   c                	"    ^ V n         ^ V n        R# r   r  rl   s   &r
   rm   CjkUncommonPlugin.reset  s     ! r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   r    s     N Nu Nr   c                	    V P                   ^8  d   R# V P                  V P                   ,          pVR8  d
   V^
,          # R# )r   r   r   r  )rL   uncommon_form_usages   & r
   rs   CjkUncommonPlugin.ratio  sD      1$%)%9%9D<Q<Q%Q ,?+D"R'M#Mr   r  N)rP   rQ   rR   rS   rT   rU   rN   rg   rm   ru   rs   rW   r   r   r
   r  r  o  s3     8I&&! N Nr   r  c                  T    ] tR tRtRtR R ltR R ltR R lt]R R	 l4       t	R
t
R# )ArchaicUpperLowerPlugini  c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   $ArchaicUpperLowerPlugin.__annotate__  s     . .$ .r   c                	    R V n         ^ V n        ^ V n        ^ V n        ^ V n        RV n        R V n        R V n        RV n        R# )FNT	_buf_character_count_since_last_sep_successive_upper_lower_count#_successive_upper_lower_count_finalr   _last_alpha_seen_last_alpha_seen_upper_last_alpha_seen_lower_current_ascii_onlyrl   s   &r
   rN    ArchaicUpperLowerPlugin.__init__  sI    	45,23*890%&,0,1#,1#)- r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   r#    s!     +1 +13 +1h +14 +1r   c                   VP                   ;'       d    VP                  pV'       * pV'       d   V P                  ^ 8  d   V P                  ^@8:  dH   VP                  '       g6   V P                  '       g$   V ;P
                  V P                  ,          un        ^ V n        ^ V n        RV n        RV n        V ;P                  ^,          un	        RV n        R# V P                  '       d   VP                  '       g   RV n        V P                  e   VP                  '       d   V P                  '       g%   VP                  '       dN   V P                  '       d<   V P                  '       d"   V ;P                  ^,          un        RV n        MRV n        MRV n        V ;P                  ^,          un	        V ;P                  ^,          un        Wn        VP                  V n        VP                  V n        R# )r   NFT)r&   r,   r'  r*   r-  r)  r(  r*  r&  r   r+   r'   r,  r(   r+  )rL   r$   ra   is_concerned	chunk_seps   &&&  r
   rg   !ArchaicUpperLowerPlugin.feed_info  sj   !ZZ>>D,>,>**	==A44:


00088668 23D.34D0$(D!DI!!Q&!'+D$###DMMM',D$  ,


t:::


t:::99966!;6 %DI $DI!	",,1, )&*jj#&*jj#r   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   r#    s     	( 	(t 	(r   c                	    ^ V n         ^ V n        ^ V n        ^ V n        RV n        RV n        RV n        RV n        RV n        R# )r   NFT)	r   r'  r(  r)  r*  r+  r,  r&  r-  rl   s   &r
   rm   ArchaicUpperLowerPlugin.reset  sI     !/0,-.*340 $&+#&+#	#' r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   r#    s     P Pu Pr   c                	b    V P                   ^ 8X  d   R# V P                  V P                   ,          # r   )r   r)  rl   s   &r
   rs   ArchaicUpperLowerPlugin.ratio  s*      A%77$:O:OOOr   )	r&  r   r'  r-  r*  r,  r+  r(  r)  Nr%  r   r   r   r
   r!  r!    s/    
I.+1Z	( P Pr   r!  c                  T    ] tR tRtR
tR R ltR R ltR R lt]R R	 l4       t	R
t
R# )ArabicIsolatedFormPlugini  c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   %ArabicIsolatedFormPlugin.__annotate__  s     + +$ +r   c                	"    ^ V n         ^ V n        R# r   r   _isolated_form_countrl   s   &r
   rN   !ArabicIsolatedFormPlugin.__init__  s    %&)*!r   c                   V ^8  d   QhRR/# rj   r   )rA   s   "r
   rB   r=    s     & &t &r   c                	"    ^ V n         ^ V n        R# r   r?  rl   s   &r
   rm   ArabicIsolatedFormPlugin.reset  s     !$%!r   c               $    V ^8  d   QhRRRRRR/# r`   r   )rA   s   "r
   rB   r=    s!     + +3 +h +4 +r   c                    V ;P                   ^,          un         VP                  \        ,          '       d   V ;P                  ^,          un        R# R# r   )r   r-   r   r@  rf   s   &&&r
   rg   "ArabicIsolatedFormPlugin.feed_info  s9    "::---%%*% .r   c                   V ^8  d   QhRR/# rp   r   )rA   s   "r
   rB   r=    s     # #u #r   c                	f    V P                   ^8  d   R# V P                  V P                   ,          pV# )r   r   r?  )rL   isolated_form_usages   & r
   rs   ArabicIsolatedFormPlugin.ratio  s0      1$%)%>%>AVAV%V""r   r?  N)rP   rQ   rR   rS   rU   rN   rm   rg   ru   rs   rW   r   r   r
   r;  r;    s*    <I+&+ # #r   r;     c               $    V ^8  d   QhRRRRRR/# )r>   r   r<   r   r?   r;   r   )rA   s   "r
   rB   rB     s)     F FF2<F	Fr   c                   V e   Vf   R# W8X  d   R# RV 9   d
   RV9   d   R# RV 9   g   RV9   d   R# RV 9   g   RV9   d   RV 9   g   RV9   d   R# V P                  R4      VP                  R4      r2V F  pV\        9   d   K  WC9   g   K   R# 	  V R9   VR9   reV'       g	   V'       d   RV 9   g   RV9   d   R# V'       d   V'       d   R# RV 9   g   RV9   d!   RV 9   g   RV9   d   R# V R	8X  g   VR	8X  d   R# RV 9   g   RV9   g   V R9   d8   VR9   d1   R
V 9   g   R
V9   d   R# RV 9   g   RV9   d   R# V R	8X  g   VR	8X  d   R# R# )zY
Determine if two Unicode range seen next to each other can be considered as suspicious.
TFLatin	Emoticons	Combining CJKHangulzBasic LatinPunctuationForms)HiraganaKatakana)rX  rW  )splitr   )r   r   keywords_range_akeywords_range_belrange_a_jp_charsrange_b_jp_charss   &&     r
   r   r     sw    /"9)/!g&@o%)G 	?"g&@&+*H 	c"c" '
 00!	  	
	

 	33 ' 	, E_$<,?"h/&AO#u'?m+-/O 	 E_$<3377O+}/Oo%O)Cm+-/Or   c               (    V ^8  d   QhRRRRRRRR/# )r>   decoded_sequencer:   maximum_thresholdrq   debugr;   r?   r   )rA   s   "r
   rB   rB   V  s2     T% T%T%.3T%BFT%
T%r   c           	     ~   \        V 4      pVR8  d   ^ pMVR8  d   ^@pM^pV P                  4       p\        p\        p\	        4       p\        4       p	\        4       p
\        4       p\        4       p\        4       p\        4       p\        4       p\        4       pVP                  pV	P                  pV
P                  pVP                  pVP                  pVP                  pVP                  pVP                  pVP                  p\        ^ W44       EF  pV VVV,             F  p\        V4      pV^8  d   VV,          pMV! V4      pV! VV4       V! VV4       V'       d   VP                   '       d
   V! VV4       K^  V! VV4       VP                   '       d   V! VV4       V! VV4       VP"                  '       g   K  V! VV4       VP$                  '       d
   V! VV4       VP&                  '       d
   V! VV4       VP(                  '       g   K  V! VV4       K  	  VP*                  V	P*                  ,           V
P*                  ,           VP*                  ,           VP*                  ,           VP*                  ,           VP*                  ,           VP*                  ,           VP*                  ,           pVV8  g   EK   M	  V^
,          pV! RV4       V'       g
   V! RV4       V! RV4       VP*                  V	P*                  ,           V
P*                  ,           VP*                  ,           VP*                  ,           VP*                  ,           VP*                  ,           VP*                  ,           VP*                  ,           pV'       d   \-        R4      p V P/                  \0        RV RV RV 24       V^8  d=   V P/                  \0        RV R	,           24       V P/                  \0        R
V RR  24       WWWWV3	 F2  p!V P/                  \0        V!P2                   RV!P*                   24       K4  	  \5        V^4      # )zo
Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
i  rL  
charset_normalizerzIMess-detector extended-analysis start. intermediary_mean_mess_ratio_calc=z mean_mess_ratio=z maximum_threshold=zStarting with: :N   NzEnding with: Nz: i)lenisasciir\   r[   rw   r   r   r   r   r   r  r!  r;  rg   r5   rE   r%   r&   r/   r0   r1   rs   r   logr   	__class__round)"r`  ra  rb  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_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_au_feed	d_ai_feedblock_startr$   	codepointra   mean_mess_rationl_infologgerdts"   &&&                               r
   
mess_ratior  V  s    '(G}	4
 +224M
 "JI .N-OD%=%?D/1D-L-NE+-D!5!7D/1D$;$=D%=%?D IIIJIIIIIQ.)+d8JKI
 !^I3!), + i&i&>>>i.i& ~~~)T*)T* zzz)T*:::y$/;;;i.>>>i.O LT JJjjjj kk jj	
 jj jj jj jj 	 //o /t R.$ dG$$  JJjjjj kk jj	
 jj jj jj jj 	 /0

1156GGX Y!!2 35	
 R<JJu0@0E/FGHJJu.>su.E-FGHtDDIBJJub
;< J !$$r   )   r   )g?F)6__conditional_annotations__
__future__r   sys	functoolsr   loggingr   version_infotypingr   typing_extensionsImportErrorconstantr   r   r   r   r   r   r   r   r   r   r   r   r   utilsr   r   r   r   r   r   r   r!   rV   r#   r[   r5   chrr\   r^   rw   r   r   r   r   r   r  r!  r;  r   r  )
_codepointr  s   0@r
   <module>r     sA   " " 
  v+      '>I-	9EAS A d= d= d=R 4  16c
$0:*HS_
$ . 
" "< +L'9 +L +L\ O1 O O6 E* E E: )D&8 )D )DX 6/( 6/ 6/r XA- XA XAv N* N ND YP0 YP YPx #1 # #8 4F FRT% T%U  	h$s   F 8F
FF