+
    Tj1e                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHtHtHt ^ RIHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIH t  ^ RI!H"t" ^ RI#H$t$H%t% ^ RI&H't' ]! RRR/R7      t(R t) ! R R]*4      t+ ! R R4      t,]$! / 4      ]%! / 4      R$R l4       4       t-] P\                  R 4       t/R t0R t1R t2 ! R R4      t3 ! R  R!4      t4]$! / 4      ]%! / 4      R" 4       4       t5R# t6R# )%    N)Path)settings)Http404HttpResponseHttpResponseNotFound)ContextEngineTemplateDoesNotExist)pprint)resolve)timezone)MultiValueDict)	force_str)import_string)_lazy_re_compile)get_docs_version)csp_overridecsp_report_only_override)*coroutine_functions_to_sensitive_variablesTi18nzdjango.templatetags.i18n)debug	librariesc                P    \        \        4      P                  R,          V ,          # )z
Return a path to a builtin template.

Avoid calling this function at the module level or in a class-definition
because __file__ may not exist, e.g. in frozen environments.
	templates)r   __file__parent)names   &G/var/www/idalgo/venv/lib/python3.14/site-packages/django/views/debug.pybuiltin_template_pathr   "   s     >  ;.55    c                       ] tR t^,tRtR# )ExceptionCycleWarning N)__name__
__module____qualname____firstlineno____static_attributes__r#   r    r   r"   r"   ,   s    r    r"   c                   0   a  ] tR t^0t o RtR tR tRtV tR# )CallableSettingWrapperz
Object to wrap callable appearing in settings.
* Not to call in the debug page (#21345).
* Not to break the debug page if the callable forbidding to set attributes
  (#23070).
c                    Wn         R # N_wrapped)selfcallable_settings   &&r   __init__CallableSettingWrapper.__init__8   s    (r    c                ,    \        V P                  4      # r,   )reprr.   r/   s   &r   __repr__CallableSettingWrapper.__repr__;   s    DMM""r    r-   N)	r$   r%   r&   r'   __doc__r1   r6   r(   __classdictcell____classdict__s   @r   r*   r*   0   s     )# #r    r*   c                    \        V 4      ! WW#4      pV P                  RR.4      pVR8X  d   VP                  4       p\        WtRR7      # VP	                  4       p\        WRR7      # )z}
Create a technical server error response. The last three arguments are
the values returned from sys.exc_info() and friends.
z	text/htmlz
text/plain)statuscontent_typeztext/plain; charset=utf-8)get_exception_reporter_classget_preferred_typeget_traceback_htmlr   get_traceback_text)	requestexc_type	exc_valuetbstatus_codereporterpreferred_typehtmltexts	   &&&&&    r   technical_500_responserL   ?   sn     ,G4W	VH//l0KLN$**,D;OO**,3N
 	
r    c                  >    \        \        P                  4      ! 4       # r,   )r   r   !DEFAULT_EXCEPTION_REPORTER_FILTERr#   r    r   %get_default_exception_reporter_filterrO   R   s     CCDFFr    c                 0    \        4       p\        V R V4      # )exception_reporter_filter)rO   getattr)rC   default_filters   & r   get_exception_reporter_filterrT   X   s    :<N77HHr    c                 N    \        \        P                  4      p\        V R V4      # )exception_reporter_class)r   r   DEFAULT_EXCEPTION_REPORTERrR   )rC    default_exception_reporter_classs   & r   r?   r?   ]   s.    '4++($ +-M r    c                     V P                   pVf    \        V P                  4      pVf   R# VP                  #   \         d     Li ; i)N )resolver_matchr   pathr   
_func_path)rC   r[   s   & r   
get_callerr^   f   sR    ++N	$W\\2N  '2F^-F-FF  		s   9 AAc                      a  ] tR t^pt o RtRt]! R]P                  R7      t	R t
R tR tR tR	 tR
 tR tR tR tRtV tR# )SafeExceptionReporterFilterz
Use annotations made by the sensitive_post_parameters and
sensitive_variables decorators to filter out sensitive information.
z********************z4API|AUTH|TOKEN|KEY|SECRET|PASS|SIGNATURE|HTTP_COOKIE)flagsc           	        V\         P                  8X  d   RpM V P                  P                  V4      pV'       d   V P
                  pM\        V\        4      '       d4   VP                  4        UUu/ uF  w  rVWPP                  WV4      bK  	  pppMz\        V\        4      '       d"   V Uu. uF  q`P                  RV4      NK  	  ppMC\        V\        4      '       d,   \        V Uu. uF  q`P                  RV4      NK  	  up4      pMTp\        V4      '       d   \        V4      pV#   \         d    Rp ELi ; iu uppi u upi u upi )z
Cleanse an individual setting key/value of sensitive content. If the
value is a dictionary, recursively cleanse the keys in that dictionary.
TFrZ   )r   SESSION_COOKIE_NAMEhidden_settingssearch	TypeErrorcleansed_substitute
isinstancedictitemscleanse_settinglisttuplecallabler*   )r/   keyvalueis_sensitivecleansedkvs   &&&    r   rk   +SafeExceptionReporterFilter.cleanse_setting{   s   
 (...L%#33::3? //Ht$$BG++-P-$!//55-HPHt$$=BCU,,R3UHCHu%%5I5a222q95IJHHH-h7H#  %$% QCIs#   D+ 3D?-E)E
+D<;D<c                    / p\        \        4       F=  pVP                  4       '       g   K  V P                  V\	        \        V4      4      W&   K?  	  V# )zo
Return a dictionary of the settings module with values of sensitive
settings replaced with stars (*********).
)dirr   isupperrk   rR   )r/   settings_dictrs   s   &  r   get_safe_settings-SafeExceptionReporterFilter.get_safe_settings   sF    
 XAyy{{#'#7#778Q;O#P   r    c           	         \        VR4      '       g   / # VP                  P                  4        UUu/ uF  w  r#W P                  W#4      bK  	  upp# u uppi )zE
Return a dictionary of request.META with sensitive values redacted.
META)hasattrr}   rj   rk   r/   rC   rs   rt   s   &&  r   get_safe_request_meta1SafeExceptionReporterFilter.get_safe_request_meta   sM     w''I:A,,:L:L:NO:N$!''--:NOOO   Ac           	         \        VR4      '       g   / # VP                  P                  4        UUu/ uF  w  r#W P                  W#4      bK  	  upp# u uppi )zH
Return a dictionary of request.COOKIES with sensitive values redacted.
COOKIES)r~   r   rj   rk   r   s   &&  r   get_safe_cookies,SafeExceptionReporterFilter.get_safe_cookies   sM     w	**I:A//:O:O:QR:Q$!''--:QRRRr   c                &    \         P                  RJ # )z
This filter is to add safety in production environments (i.e. DEBUG
is False). If DEBUG is True then your site is not safe anyway.
This hook is provided as a convenience to easily activate or
deactivate the filter on a per request basis.
F)r   DEBUG)r/   rC   s   &&r   	is_active%SafeExceptionReporterFilter.is_active   s     ~~&&r    c                    \        VR. 4      pV P                  V4      '       d8   V'       d0   VP                  4       pV F  pWB9   g   K  V P                  W$&   K  	  V# )z
Replace the keys in a MultiValueDict marked as sensitive with stars.
This mitigates leaking sensitive POST parameters if something like
request.POST['nonexistent_key'] throws an exception (#21098).
sensitive_post_parameters)rR   r   copyrg   )r/   rC   multivaluedictr   params   &&&  r   get_cleansed_multivaluedict7SafeExceptionReporterFilter.get_cleansed_multivaluedict   s[     %,G5PRT$U!>>'""'@+002N2*,0,D,DN) 3 r    c                4   Vf   / # \        VR. 4      pV P                  V4      '       dd   V'       d\   VP                  P                  4       pVR8X  d   V F  pV P                  W4&   K  	  V# V F  pWS9   g   K  V P                  W5&   K  	  V# VP                  # )zS
Replace the values of POST parameters marked as sensitive with
stars (*********).
r   __ALL__)rR   r   POSTr   rg   )r/   rC   r   rr   rs   r   s   &&    r   get_post_parameters/SafeExceptionReporterFilter.get_post_parameters   s    
 ?I(/4b)% ~~g&&+D"<<,,.,	9%&*&>&> &#O "; ,.2.F.FHO "; $O||#r    c                     \        V\        4      pT'       d   T P	                  Y4      pT#   \         d   pR P                  YB4      u Rp?# Rp?ii ; i)z{!r} while evaluating {!r}N)rh   r   	Exceptionformatr   )r/   rC   rp   is_multivalue_dictes   &&&  r   cleanse_special_types1SafeExceptionReporterFilter.cleanse_special_types   sX    	A ",E>!B  44WDE  	A/66q@@	As   - AAAAc                P   RpVP                   P                  \        P                  ,          ^ 8w  dk   VP                   P                  R8w  dP   \        VP                   P                   RVP                   P                   24      p\        P                  ! VR4      pVfb   TpVe\   VP                   P                  R8X  d3   RVP                  9   d"   VP                  R,          p\        VRR4      pMVP                  pK_  / pV P                  V4      '       d~   V'       dv   VR8X  d#   VP                   F  pV P                  Wx&   K  	  MVP                  P                  4        F-  w  rW9   d   V P                  p	MV P!                  W4      p	WV&   K/  	  M6VP                  P                  4        F  w  rV P!                  W4      Wx&   K  	  VP                   P                  R8X  d0   RVP                  9   d   V P                  VR&   V P                  VR&   VP                  4       # )zM
Replace the values of variables marked as sensitive with
stars (*********).
Nsensitive_variables_wrapper:sensitive_variablesr   	func_argsfunc_kwargs)f_codeco_flagsinspectCO_COROUTINEco_namehashco_filenameco_firstlinenor   getf_localsrR   f_backr   rg   rj   r   )
r/   rC   tb_framer   ro   current_framewrapperrr   r   rp   s
   &&&       r   get_traceback_frame_variables9SafeExceptionReporterFilter.get_traceback_frame_variables   s   
 # OO$$w';';;q@''+HH??../q1O1O0PQC #M"P"PT# & %M+!((004QQ59O9OO ,445RSG*1';PRV*W' - 4 4>>'""':"i/$--D%)%=%=HN . $,#4#4#:#:#<KD2 $ 8 8 $ : :7 J%*TN $=  (00668!%!;!;G!K  9 OO##'DD-1B1BB %)$<$<H[!&*&>&>H]#~~r    r#   N)r$   r%   r&   r'   r8   rg   r   reIrd   rk   rz   r   r   r   r   r   r   r   r(   r9   r:   s   @r   r`   r`   p   s[     
 1&>bddO:	PS'$6D  D r    r`   c                      a  ] tR tRt o Rt]R 4       t]R 4       tRR ltR t	R t
R tR	 tR
 tRR ltR tR tR tRtV tR# )ExceptionReporteri;  z0Organize and coordinate reporting on exceptions.c                    \        R 4      # )ztechnical_500.htmlr   r5   s   &r   html_template_path$ExceptionReporter.html_template_path>  s    $%9::r    c                    \        R 4      # )ztechnical_500.txtr   r5   s   &r   text_template_path$ExceptionReporter.text_template_pathB  s    $%899r    c                    Wn         \        V P                   4      V n        W n        W0n        W@n        WPn        \        V P                  R R4      V n        RV n	        RV n
        R# )template_debugNF)rC   rT   filterrD   rE   rF   is_emailrR   template_infotemplate_does_not_exist
postmortem)r/   rC   rD   rE   rF   r   s   &&&&&&r   r1   ExceptionReporter.__init__F  sP    3DLLA " $T^^5EtL',$r    c                    RP                  V P                  P                  V P                  P                  4       V P                  P	                  4       R7      # )z}
Return an absolute URI from variables available in this request. Skip
allowed hosts protection, so may return insecure URI.
z{scheme}://{host}{path})schemehostr\   )r   rC   r   _get_raw_hostget_full_pathr5   s   &r   _get_raw_insecure_uri'ExceptionReporter._get_raw_insecure_uriR  sI    
 )//<<&&++-++- 0 
 	
r    c           
     8	   V P                   '       dX   \        V P                   \        4      '       d8   RV n        V P                  P
                  ;'       g    V P                  .V n        V P                  4       p\        V4       Fp  w  r#RV9   da   . pVR,           FM  w  rV\        V4      p\        V4      R8  d   RVR,          \        V4      3,          pVP                  WV34       KO  	  WCR&   W1V&   Kr  	  RpV P                   '       d   \        V P                   \        4      '       d   \        V P                  RR4      p\        V P                  R	R4      p	Ve^   V	eZ   V P                  P                  ^,          p
\        V
\!        V^,
          ^ 4      \#        V	^,           \        V
4      4       R
RR7      p^ RIHp V P(                  f   RpM  \+        V P(                  P,                  4      p/ RV P0                  bRVbRVbRV P(                  bRV P2                  P5                  V P(                  4      bRV P2                  P7                  V P(                  4      P9                  4       bRVbR\;        V P2                  P=                  V P(                  4      P9                  4       4      bRV P2                  P?                  4       bR\@        PB                  bRR\@        PD                  R,          ,          bR\F        PH                  ! 4       bRV! 4       bR\@        PJ                  bRV PL                  bR V P                  bR!V P                  bpV P(                  ez   V P(                  PN                  P9                  4       VR"&   V P(                  PP                  P9                  4       VR#&   V PS                  4       VR$&   \U        V P(                  4      VR%&   V P                   '       d   V P                   PV                  VR&&   V P                  '       d_   \        V P                  R'V P                  4      VR(&   \        V P                  R)R4      ;p'       d   R*R*PY                  V4      ,           VR+&   V'       d   VR-,          VR,&   V#   \.         d    Rp ELi ; i).z5Return a dictionary containing traceback information.Tvarsi   u   %s… <trimmed %d bytes string>:r   i   NrZ   startNendasciireplace)errors)get_versionz%[unable to retrieve the current user]r   unicode_hintframesrC   request_metarequest_COOKIES_itemsuser_strfiltered_POST_itemsr   sys_executablesys_version_infoz%d.%d.%d:r      Nserver_timedjango_version_infosys_pathr   r   r   request_GET_itemsrequest_FILES_itemsrequest_insecure_uriraising_view_nameexception_typeraw_error_messageexception_value	__notes__
exception_notes	lastframe)-rD   
issubclassr
   r   rE   chainr   get_traceback_frames	enumerater   lenappendUnicodeErrorrR   argsr   maxmindjangor   rC   struserr   r   r   r   r   rj   rl   r   rz   sys
executableversion_infor   nowr\   r   GETFILESr   r^   r$   join)r/   r   iframe
frame_varsrs   rt   r   r   r   unicode_strr   r   c	exc_notess   &              r   get_traceback_data$ExceptionReporter.get_traceback_data]  s   ===Z7KLL+/D("nn22FFt~~6FDO**,!&)HA
!&MMDAq	A1v}=6CPQF@SS%%qf- * !+f1I * ===Z|DDDNNGT:E$..%6C S_"nn11!4(EAIq 1Ca[AQ4RS$ 
 	'<<HCt||001

L
 f
 t||	

 DKK==dllK
 $T[[%A%A$,,%O%U%U%W
 
 "4//=CCE$
 557
 cnn
 
S-=-=c-B B
 8<<>
 ";=
  !
" T//#
$ &t'C'C%
& $//'
* <<#%)\\%5%5%;%;%=A!"'+||'9'9'?'?'AA#$(,(B(B(DA$%%/%=A!" ==="&--"8"8A>>>#* 3T^^$A  $DNNKFFyF'+dii	.B'B#$#BZAkNW  C CCs   R RRc                    V P                   P                  RR7      ;_uu_ 4       p\        P                  VP	                  4       4      pRRR4       \        V P                  4       RR7      pXP                  V4      #   + '       g   i     L<; i)z1Return HTML version of debug 500 HTTP error page.utf-8encodingNF)use_l10n)r   openDEBUG_ENGINEfrom_stringreadr   r  renderr/   fhtr  s   &   r   rA   $ExceptionReporter.get_traceback_html  se    $$))7);;r((3A <D++->xx{ <;s   $A==B	c                "   V P                   P                  RR7      ;_uu_ 4       p\        P                  VP	                  4       4      pRRR4       \        V P                  4       RRR7      pXP                  V4      #   + '       g   i     L=; i)z7Return plain text version of debug 500 HTTP error page.r  r  NF)
autoescaper  )r   r  r  r  r  r   r  r  r  s   &   r   rB   $ExceptionReporter.get_traceback_text  sg    $$))7);;r((3A <D++-%%Pxx{ <;s   $A>>B	c                l   R p\        VR4      '       d'    VP                  V4      pVe   VP                  4       pVf?    \	        VR4      ;_uu_ 4       pVP                  4       P                  4       pR R R 4       V# V#   \         d     Lei ; i  + '       g   i     T# ; i  \         d     T# i ; i)N
get_sourcerb)r~   r  ImportError
splitlinesr  r  OSError)r/   filenameloadermodule_namesourcefps   &&&&  r   _get_sourceExceptionReporter._get_source  s    6<((**;7 !**,>(D))RWWY113F * v   *)   sA   A?  B$ B3B$ ?BBB!	B$ !B$ $B32B3Nc                   V P                  WV4      pVf   R. R. 3# \        V^ ,          \        4      '       dg   RpVR,           F<  p\        P                  ! RV4      p	V	'       g   K$  V	^,          P                  R4      p M	  V U
u. uF  p
\        WR4      NK  	  pp
\        ^ W#,
          4      pW#,           p WkV pWb,          pWb^,           V pYY3# u up
i   \         d
    R. R. 3u # i ; i)z
Return context_lines before and after lineno from file.
Return (pre_context_lineno, pre_context, context_line, post_context).
Nr   :N   Ns   coding[:=]\s*([-\w.]+)r   )	r&  rh   bytesr   re   decoder   r   
IndexError)r/   r!  linenocontext_linesr"  r#  r$  r  linematchslinelower_boundupper_boundpre_contextcontext_linepost_contexts   &&&&&&          r   _get_lines_from_file&ExceptionReporter._get_lines_from_file  s    !!(K@>T2%%
 fQi''Hr

 		"<dC5$Qxw7H # DJJ6%c%956FJ!V34,	& V4K!>L!1*{;L CC K  	&T2%%	&s   	C;C C/.C/c                |    \        VR R4      p\        VRR4      p\        VRR4      pT;'       g    V'       d   R# T# )	__cause__N__suppress_context____context__)rR   )r/   rE   explicitsuppress_contextimplicits   &&   r   _get_explicit_or_implicit_cause1ExceptionReporter._get_explicit_or_implicit_cause  sD    9k48"9.DdK9mT:CC$4DC(Cr    c                   . pV P                   pV'       dN   VP                  V4       V P                  V4      pW!9   g   K2  \        P                  ! R V,          \
        4        . pV'       g   V# VP                  4       pV'       g   V P                  MVP                  p VP                  V P                  W$4      4        VP                  4       pTP                  pK@    \         d     T# i ; i)zHCycle in the exception chain detected: exception '%s' encountered again.)rE   r   r@  warningswarnr"   poprF   __traceback__extendget_exception_traceback_framesr,  )r/   
exceptionsrE   r   rF   s   &    r   r   &ExceptionReporter.get_traceback_frames  s    
NN	i(<<YGI&)+45) M NN$	&TWWI,C,CMM$==iLM&NN,	 ((B  s   C   C/.C/c              #    "   V P                  V4      p\        VR R4      pVf   RVRVRRRR/x  VEe   VP                  P                  P	                  R4      '       d   VP
                  pK>  VP                  P                  P                  pVP                  P                  P                  pVP                  ^,
          pVP                  P                  P	                  R	4      pVP                  P                  P	                  R
4      ;'       g    Rp	V P                  VV^VV	4      w  p
pppV
f	   Tp
. pRp. pR;r\        \        P                  ! VP                  P                  P                  4       VP                   ^,          R4      4      w   pppV'       d   V'       d   RVV,
          ,          pRV\#        \%        V^,           4      4      ,           ^,           ,          pRV V 2pR^V,           \#        V4      \#        VP'                  4       4      ,
          ,
          ,          pRV V 2pRTRTRTRV	P)                  R4      '       d   RMRRVRVRV^,           RV P*                  P-                  V P.                  VP                  4      R\1        V4      RVRVRVRV
^,           RVRV/x  VP
                  pEK  R# 5i)r:  TN	exc_causeexc_cause_explicitrF   typer   __traceback_hide__
__loader__r$   rZ   z<source code not available>^ r   zdjango.r   r!  functionr-  r   idr4  r5  r6  pre_context_linenocolnotb_area_colno)r@  rR   r   r   r   tb_nextr   r   r   	tb_lineno	f_globalsr7  next	itertoolsisliceco_positionstb_lastir   r   lstrip
startswithr   r   rC   rT  )r/   rE   rF   rL  rM  r!  rS  r-  r"  r#  rU  r4  r5  r6  rV  rW  _start_column
end_column	underlinespacestb_area_spacess   &&&                   r   rH  0ExceptionReporter.get_exception_traceback_frames  s    88C	$YTB:Y$&8d	  n {{##''(<==ZZ{{))55H{{))11H\\A%F[[**..|<F++//33J?EE2K ))" ")%+" <!$&&E-1  KK&&335r{{a7G.*Aq,

 
:#<=	s3vz?/C Ca GHVHYK0!$$L(9C@S@S@U<V(VW" #%^$4YK @Y$&8bK$:$:9$E$E6HH&1*AALL"++ bf{$&81&<# & B} s"   AK!B1KBK(B)KA3K)	rD   rE   r   r   r   rC   rF   r   r   )F)NN)r$   r%   r&   r'   r8   propertyr   r   r1   r   r  rA   rB   r&  r7  r@  r   rH  r(   r9   r:   s   @r   r   r   ;  sm     :; ; : :
	
Pd""DHDBH Hr    r   c                    VP                   ^ ,          R,          p VP                   ^ ,          R,          pRpV'       d}   V P                  R8X  dw   \        V4      ^8X  dg   \        V^ ,          4      ^8X  dP   \        V^ ,          ^ ,          RR4      \        V^ ,          ^ ,          RR4      u;8X  d   R	8X  d   M M\        V 4      # \        V R\        P                  4      p\        V\        P                  4      '       d   VP                  p\!        R4      P#                  RR7      ;_uu_ 4       p\$        P'                  VP)                  4       4      pRRR4       \+        4       p\-        RVR\        P                  RVRVRVR\/        V4      RV RVP1                  4       R\3        V 4      /	4      p	\5        XP7                  V	4      4      #   \        \        \        3 d    T P                  R,          p ELi ; i  \        \        \        3 d1    R
pT P                  '       d   T P                  P                  MRp ELzi ; i  + '       g   i     L; i)zBCreate a technical 404 error response. `exception` is the Http404.r\   :   NNtriedF/app_namerZ   	namespaceadminTNurlconfztechnical_404.htmlr  r  root_urlconfrequest_pathurlpatternsresolvedreasonrC   r   r   )r   r,  rf   KeyError	path_infor   rR   default_urlconfr[   rl  r   ROOT_URLCONFrh   types
ModuleTyper$   r   r  r  r  r  rO   r   r   rz   r^   r   r  )
rC   	exception	error_urlrl  ru  rq  r  r  reporter_filterr  s
   &&        r   technical_404_responser  d  s   *NN1%f-	,q!'*
 $E
aE!H"aZ4uQx{K4 #7++gy(*?*?@G'5++,,""	3	4	9	97	9	K	Kr$$RWWY/ 
L;=OwH11I5c)nw99;G!4
	
	A  ,,Q 	8, *%%b)	*
 	8, Q070F0F0F&&,,DQ& 
L	Ks4   G G= 2$I)G:9G:=)I'III	c                $   \        R4      P                  RR7      ;_uu_ 4       p\        P                  VP	                  4       4      pRRR4       \        R\        4       /4      p\        XP                  V4      4      #   + '       g   i     L?; i)z+Create an empty URLconf 404 error response.zdefault_urlconf.htmlr  r  Nversion)	r   r  r  r  r  r   r   r   r  )rC   r  r  r  s   &   r   ry  ry    sr    	5	6	;	;W	;	M	MQS$$RWWY/ 
N')	
	A $$ 
N	Ms   $A??B	)i  )7	functoolsr   r\  r   r   r{  rC  pathlibr   django.confr   django.httpr   r   r   django.templater   r	   r
   django.template.defaultfiltersr   django.urlsr   django.utilsr   django.utils.datastructuresr   django.utils.encodingr   django.utils.module_loadingr   django.utils.regex_helperr   django.utils.versionr   django.views.decorators.cspr   r   django.views.decorators.debugr   r  r   UserWarningr"   r*   rL   	lru_cacherO   rT   r?   r^   r`   r   r  ry  r#   r    r   <module>r     s      	 
      C C A A 1  ! 6 + 5 6 1 N T 
126	K 	# # b"
  
" G G
I
GH  H Vf fR	 b",-  ,-^
%r    