
    ޺iv                       % S SK Jr  S SKrS SKJr  S SKJr  \R                  S:  a  S SKJ	r	  O 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  SS
KJrJrJrJrJrJ r J!r!  \\-  \-  \-  \-  r"S\#S'   \	 " S S5      5       r$ " S S5      r%\	 " S S\%5      5       r&\	 " S S\%5      5       r'\	 " S S\%5      5       r(\	 " S S\%5      5       r)\	 " S S\%5      5       r*\	 " S S\%5      5       r+\	 " S S\%5      5       r,\	 " S S \%5      5       r-\	 " S! S"\%5      5       r.\" S#S$9      S(S% j5       r/\" S&S$9 S)       S*S' jj5       r0g! \ a    S r	 GN%f = f)+    )annotationsN)	lru_cache)	getLogger)      )finalc                    U $ )N )clss    T/var/www/piano.thomer.com/venv/lib/python3.13/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                  0    \ rS rSrSrSrSS jrS	S jrSrg)
CharInfo/   uc  Pre-computed character properties shared across all detectors.

Instantiated once and reused via :meth:`update` on every character
in the hot loop so that redundant calls to str methods
(``isalpha``, ``isupper``, …) and cached utility functions
(``_character_flags``, ``is_punctuation``, …) are avoided when
several plugins need the same information.
	character	printablealphaupperlowerspacedigitis_asciicase_variableflagsaccentuatedlatinis_cjk	is_arabicis_glyphpunctsymc                    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 )N Fr   r(   selfs    r   __init__CharInfo.__init__N   s{     $ 
 
 
 
 
##(
!& 
!$# 
r   c                   Xl         [        U5      nUS:  Ga@  SU l        SU l        SU l        SU l        SU l        SUs=::  a  S::  aU  O  ORSU l        SU l        SU l	        SU l
        SU l        SU l        SU l        [        U l        SU l        SU l        SU l        gSUs=::  a  S::  aU  O  ORSU l        SU l        SU l	        SU l
        SU l        SU l        SU l        [        U l        SU l        SU l        SU l        gSUs=::  a  S	::  aQ  O  ONS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:X  d  SUs=::  a  S::  aT  O  OQS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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SU l        UR'                  5       U l        UR-                  5       U l        UR/                  5       U l        UR1                  5       U l	        UR3                  5       U l
        UR5                  5       U l        U R                  U R                  :g  U l        U R                  (       a  [7        U5      nOS
nX0l        [9        U[:        -  5      U l        [9        U[        -  5      U l        [9        U[<        -  5      U l        [9        U[>        -  5      U l        [9        U[@        -  5      U l        U R                  (       a  [)        U5      OSU l        U R                  (       a  [+        U5      OSU l        g)zBUpdate all properties for *character* (called once per character).   TFA   Z   a   z   0   9   r       	      N)!r)   ordr0   r3   r5   r6   r7   r+   r,   r-   r.   r/   r*   r1   r   r2   r4   r8   r9   isprintabler   r    isalphaisupperislowerisspaceisdigitr   boolr   r   r   r$   )r=   r)   or2   s       r   updateCharInfo.updatea   s6   " 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 zz(3J#EL$89Defn-DJut|,DK!%'/2DN !45DM 7;nn	2%DJ/3~~y+5DHr   )r3   r+   r1   r)   r/   r2   r6   r0   r5   r7   r4   r-   r*   r8   r.   r9   r,   NreturnNone)r)   strrW   rX   )	__name__
__module____qualname____firstlineno____doc__	__slots__r>   rT   __static_attributes__r
   r   r   r&   r&   /   s    I(&jIr   r&   c                  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)MessDetectorPlugin   zm
Base abstract class used for mess detection plugins.
All detectors MUST extend and implement given methods.
r
   c                    [         e)zq
The main routine to be executed upon character.
Insert the logic in witch the text would be considered chaotic.
NotImplementedErrorr=   r)   infos      r   	feed_infoMessDetectorPlugin.feed_info   s
    
 "!r   c                    [         e)z2
Permit to reset the plugin to the initial state.
re   r<   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.
re   r<   s    r   ratioMessDetectorPlugin.ratio   s
     "!r   Nr)   rY   rh   r&   rW   rX   rV   rW   float)rZ   r[   r\   r]   r^   r_   ri   rl   propertyro   r`   r
   r   r   rb   rb      s,    
 I"" " "r   rb   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) TooManySymbolOrPunctuationPlugin   _punctuation_count_symbol_count_character_count_last_printable_char_frenzy_symbol_in_wordc                J    SU l         SU l        SU l        S U l        SU l        g Nr   Frx   r<   s    r   r>   )TooManySymbolOrPunctuationPlugin.__init__   s*    '("#%&04!,1#r   c                H   U =R                   S-  sl         XR                  :w  ax  U[        ;  an  UR                  (       a  U =R                  S-  sl        OGUR
                  (       d6  UR                  (       a%  [        U5      (       d  U =R                  S-  sl        Xl        g)1Optimized feed using pre-computed character info.r      N)	r{   r|   r   r8   ry   r/   r9   r   rz   rg   s      r   ri   *TooManySymbolOrPunctuationPlugin.feed_info   sp    " 222!==zz''1,'ZZDHH[5K5K""a'"$-!r   c                .    SU l         SU l        SU l        g Nr   )ry   r{   rz   r<   s    r   rl   &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{   ry   rz   )r=   ratio_of_punctuations     r   ro   &TooManySymbolOrPunctuationPlugin.ratio  sO      A% ##d&8&88!!'" (<s'B#KKr   )r{   r}   r|   ry   rz   NrV   rq   rr   rZ   r[   r\   r]   r_   r>   ri   rl   rt   ro   r`   r
   r   r   rv   rv      s.    I2.
 L Lr   rv   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)TooManyAccentuatedPlugini  r{   _accentuated_countc                     SU l         SU l        g r   r   r<   s    r   r>   !TooManyAccentuatedPlugin.__init__"  s    %&'(r   c                |    U =R                   S-  sl         UR                  (       a  U =R                  S-  sl        ggr   r   N)r{   r3   r   rg   s      r   ri   "TooManyAccentuatedPlugin.feed_info&  s2    "##q(# r   c                     SU l         SU l        g r   r   r<   s    r   rl   TooManyAccentuatedPlugin.reset-  s     !"#r   c                j    U R                   S:  a  gU R                  U R                   -  nUS:  a  U$ S$ )Nr   r   gffffff?r   )r=   ratio_of_accentuations     r   ro   TooManyAccentuatedPlugin.ratio1  s=      1$'+'>'>AVAV'V(=(E$N3Nr   )r   r{   NrV   rq   rr   r   r
   r   r   r   r     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)UnprintablePlugini:  _unprintable_countr{   c                     SU l         SU l        g r   r   r<   s    r   r>   UnprintablePlugin.__init__>  s    '(%&r   c                    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   u   ﻿r   N)r.   r*   r   r{   rg   s      r   ri   UnprintablePlugin.feed_infoB  sD     

NNV#X%##q(#"r   c                    SU l         g r   )r   r<   s    r   rl   UnprintablePlugin.resetM  s
    "#r   c                \    U R                   S:X  a  gU R                  S-  U R                   -  $ )Nr   r   r   r{   r   r<   s    r   ro   UnprintablePlugin.ratioP  s/      A%''!+t/D/DDDr   r   NrV   rq   rr   r   r
   r   r   r   r   :  s,    :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)SuspiciousDuplicateAccentPluginiX  _successive_countr{   _last_latin_character_last_was_accentuatedc                <    SU l         SU l        S U l        SU l        g r   r   r<   s    r   r>   (SuspiciousDuplicateAccentPlugin.__init__a  s"    &'%&15"+0"r   c                   U =R                   S-  sl         U R                  b  UR                  (       a  U R                  (       a|  UR                  (       a4  U R                  R                  5       (       a  U =R                  S-  sl        [        U5      [        U R                  5      :X  a  U =R                  S-  sl        Xl        UR                  U l        gr   )r{   r   r3   r   r,   rN   r   r!   rg   s      r   ri   )SuspiciousDuplicateAccentPlugin.feed_infoh  s    "&&2  **zzd88@@BB&&!+&Y'=9S9S+TT&&!+&%."%)%5%5"r   c                <    SU l         SU l        S U l        SU l        g r   r   r<   s    r   rl   %SuspiciousDuplicateAccentPlugin.resetw  s"    !" !%)"%*"r   c                \    U R                   S:X  a  gU R                  S-  U R                   -  $ )Nr   r   r   )r{   r   r<   s    r   ro   %SuspiciousDuplicateAccentPlugin.ratio}  s/      A%&&*d.C.CCCr   )r{   r   r   r   NrV   rq   rr   r   r
   r   r   r   r   X  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   r<   s    r   r>   SuspiciousRange.__init__  s"    78/%&04!15"r   c                |   U =R                   S-  sl         UR                  (       d  UR                  (       d
  U[        ;   a  SU l        SU l        gU R                  c  Xl        [        U5      U l        gU R
                  n[        U5      n[        X45      (       a  U =R                  S-  sl        Xl        X@l        gr   )	r{   r.   r8   r   r   r   r"    is_suspiciously_successive_ranger   )r=   r)   rh   unicode_range_aunicode_range_bs        r   ri   SuspiciousRange.feed_info  s    "::y4P'P(,D%)-D&$$,(1%)6y)AD&&*&@&@&3I&>+OMM33q83$-!%4"r   c                <    SU l         SU l        S U l        S U l        g r   )r{   r   r   r   r<   s    r   rl   SuspiciousRange.reset  s"     !23/$(!%)"r   c                `    U R                   S::  a  gU R                  S-  U R                   -  nU$ )NrJ   r   r   )r{   r   )r=   ratio_of_suspicious_range_usages     r   ro   SuspiciousRange.ratio  s<      B& 33a7!!2"' /.r   )r{   r   r   r   NrV   rq   rr   r   r
   r   r   r   r     s,    I65.* / /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_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        g r   r   r<   s    r   r>   SuperWeirdWordPlugin.__init__  sj     !$%() */!). %&)*!#$-138*)*!() () r   c                   UR                   (       a  U =R                  S-  sl        Xl        UR                  (       a  U =R                  S-  sl        UR
                  U l        UR
                  (       a  U =R                  S-  sl        U R                  (       d:  UR                  (       a  UR
                  (       a  UR                  (       d  SU l        UR                  (       a  U =R                  S-  sl        gU R                  (       d  gUR                  (       d"  UR                  (       d  [        U5      (       Ga  U =R                  S-  sl        U R                  nU =R                   U-  sl        US:  a  U R                  U-  S:  a  SU l        OU R                  (       aL  U R                  R%                  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        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        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R,                  (       d<  UR.                  (       a*  SU l        U =R                  S-  sl        Xl        S	U l        gggg)r   r   TN         ?   r   r   F>   -<=>_|~)r+   r   r   r,   r   r3   r   r   r   r4   r7   r   r.   r8   r   r   r{   r   rN   r   r   r   r/   r9   )r=   r)   rh   buffer_lengthprobable_camel_caseds        r   ri   SuperWeirdWordPlugin.feed_info  s   ::1$%."zz((A-(151A1AD.))Q.),,t'7'7+/(}}((A-(""::|I'>'>!!%!4!4M!!]2!!,,}<C04D-66..668800MA,,1,04D---204D-,,1,"t'?'?,,q0 H00=@CG %
 ,,,1,04D-(($$)$))]:),1)',D$"#D%)D"16D.()D%'(D$'(D$@@JJ(,D%1$%."16D.   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        g r   )r   r   r   r   r   r   r   r{   r   r   r   r   r   r<   s    r   rl   SuperWeirdWordPlugin.reset,  sj    !%-2*$)!#(   !$%!#$ $%!#$ #$ r   c                v    U R                   S::  a  U R                  S:X  a  gU R                  U R                  -  $ )N
   r   r   )r   r   r   r{   r<   s    r   ro   SuperWeirdWordPlugin.ratio;  s7    r!d&>&>!&C((4+@+@@@r   )r   r   r   r   r   r   r   r   r{   r   r   r   r   NrV   rq   rr   r   r
   r   r   r   r     s0    I *$I7V% 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)CjkUncommonPluginiC  z4
Detect messy CJK text that probably means nothing.
r{   _uncommon_countc                     SU l         SU l        g r   r   r<   s    r   r>   CjkUncommonPlugin.__init__K  s    %&$%r   c                n    U =R                   S-  sl         U[        ;  a  U =R                  S-  sl        ggr   )r{   r   r   rg   s      r   ri   CjkUncommonPlugin.feed_infoO  s2    "11  A%  2r   c                     SU l         SU l        g r   r   r<   s    r   rl   CjkUncommonPlugin.resetV  s     ! r   c                p    U R                   S:  a  gU R                  U R                   -  nUS:  a  US-  $ S$ )Nr   r   r   r   r   )r=   uncommon_form_usages     r   ro   CjkUncommonPlugin.ratioZ  sD      1$%)%9%9D<Q<Q%Q ,?+D"R'M#Mr   NrV   rq   rr   )rZ   r[   r\   r]   r^   r_   r>   ri   rl   rt   ro   r`   r
   r   r   r   r   C  s3     8I&&! N N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)ArchaicUpperLowerPluginif  	_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_onlyc                    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 )NFr   Tr   r<   s    r   r>    ArchaicUpperLowerPlugin.__init__t  sI    	45,23*890%&,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        SU l        U =R                  S-  sl	        SU l        gU R                  (       a  UR                  (       d  SU l        U R                  b  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        Xl        UR                  U l        UR                  U l        g)r   r   @   NFr   Tr   )r+   r1   r   r/   r  r  r   r  r   r{   r0   r,   r  r-   r  )r=   r)   rh   is_concerned	chunk_seps        r   ri   !ArchaicUpperLowerPlugin.feed_info  sQ   !ZZ>D,>,>**	==A44:

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

t::

t::9966!;6 %DI $DI!	",,1, )&*jj#&*jj#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        g )Nr   FT)	r{   r   r   r  r  r  r  r   r  r<   s    r   rl   ArchaicUpperLowerPlugin.reset  sI     !/0,-.*340 $&+#&+#	#' r   c                V    U R                   S:X  a  gU R                  U R                   -  $ )Nr   r   )r{   r  r<   s    r   ro   ArchaicUpperLowerPlugin.ratio  s*      A%77$:O:OOOr   )	r   r{   r   r  r  r  r  r   r  NrV   rq   rr   r   r
   r   r   r   r   f  s/    
I.+1Z	( 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)ArabicIsolatedFormPlugini  r{   _isolated_form_countc                     SU l         SU l        g r   r  r<   s    r   r>   !ArabicIsolatedFormPlugin.__init__  s    %&)*!r   c                     SU l         SU l        g r   r  r<   s    r   rl   ArabicIsolatedFormPlugin.reset  s     !$%!r   c                    U =R                   S-  sl         UR                  [        -  (       a  U =R                  S-  sl        ggr   )r{   r2   r   r  rg   s      r   ri   "ArabicIsolatedFormPlugin.feed_info  s6    "::--%%*% .r   c                Z    U R                   S:  a  gU R                  U R                   -  nU$ )Nr   r   r  )r=   isolated_form_usages     r   ro   ArabicIsolatedFormPlugin.ratio  s0      1$%)%>%>AVAV%V""r   NrV   rq   rr   )rZ   r[   r\   r]   r_   r>   rl   ri   rt   ro   r`   r
   r   r   r  r    s*    <I+&+ # #r   r     )maxsizec                .   U b  Uc  gX:X  a  gSU ;   a  SU;   a  gSU ;   d  SU;   a  gSU ;   d  SU;   a  SU ;   d  SU;   a  gU R                  S5      UR                  S5      p2U H  nU[        ;   a  M  XC;   d  M    g   U S;   US;   peU(       d  U(       a  SU ;   d  SU;   a  gU(       a  U(       a  gS	U ;   d  S	U;   a  SU ;   d  SU;   a  gU S
:X  d  US
:X  a  gSU ;   d  SU;   d  U S;   a-  US;   a'  SU ;   d  SU;   a  gSU ;   d  SU;   a  gU S
:X  d  US
:X  a  gg)zY
Determine if two Unicode range seen next to each other can be considered as suspicious.
TF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     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   i   c           	     :   [        U 5      nUS:  a  SnOUS:  a  SnOS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[        5       nUR                  n[        SX45       GHA  nU UUU-     H  nU" U5        U" UU5        U" UU5        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R$                  (       d  M  U" UU5        M     UR&                  UR&                  -   UR&                  -   UR&                  -   U	R&                  -   U
R&                  -   UR&                  -   UR&                  -   UR&                  -   nUU:  d  GMB    O   U" S5        U" SU5        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&                  -   nU(       a  [)        S5      nUR+                  [,        S	U S
U SU 35        US:  a8  UR+                  [,        SU SS  35        UR+                  [,        SU SS  35        XVXxXXU4	 H2  nUR+                  [,        UR.                   SUR&                   35        M4     [1        US5      $ )zo
Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier.
i  rH   r  r	  rA   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: iz: r   )lenrv   r   r   r   r   r   r   r   r  ri   r&   rT   ranger*   r+   r4   r5   r6   ro   r   logr   	__class__round)decoded_sequencemaximum_thresholddebugseq_lenstep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_feedrh   info_updateblock_startr)   mean_mess_ratiologgerdts                                 r   
mess_ratiorV  *  s    '(G}	4 .N-OD%=%?D/1D-L-NE+-D!5!7D/1D$;$=D%=%?D IIIJIIIII ZD++K Q.)+d8JKI	" i&i&i& ~~)T*)T* zzz)T*::y$/;;i.>>>i.3 L8 JJjjjj kk jj	
 jj jj jj jj 	 //S /X 	D$$$ 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   
str | Noner   rW  rW   rR   )g?F)r:  rY   r;  rs   r<  rR   rW   rs   )1
__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$   __annotations__r&   rb   rv   r   r   r   r   r   r   r   r  r   rV  r
   r   r   <module>rc     sC   " 
  v+      '>I-	9EAS A [I [I [I|" "< .L'9 .L .Lb O1 O O6 E* E E: )D&8 )D )DX 4/( 4/ 4/n BA- BA BAJ N* N ND YP0 YP YPx #1 # #8 4FF2<F	F FR 4IN}%}%.3}%BF}%
}% }%  	s   E 	EE