Ë
    S²j¿ˆ  ã                   ój  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ 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mZmZmZ d dlmZ d dlmZ eee  e!d«      e"e#e$e%e&f	Z'eee  e!d«      e"e%fZ( ed	eez  e z  e"z  e#z  e$z  e%z  e&z  dz  ¬
«      Z) e*«       Z+ ed¬«       G d„ dee)   «      «       Z,erAe+dddddddfde)e*z  de"dz  de"e#e"   z  dz  de"e#e"   z  dz  de!dz  de"dz  de de"dz  de)fd„Z-nCe+dddddddfde)e*z  de"dz  de"e#e"   z  dz  de"e#e"   z  dz  de!dz  de"dz  de de"dz  de,e)   fd„Z-de"de e"z  dz  fd„Z.deddfd„Z/dZ0dede$e"   fd „Z1e G d!„ d"«      «       Z2 G d#„ d$e«      Z3 G d%„ d&e jh                  «      Z4 G d'„ d(«      Z5d+de"dede dz  fd)„Z6d*„ Z7y),é    N)ÚCallable)Ú
ContextVar)Ú	dataclass)ÚFunctionTypeÚ
ModuleType)ÚAnyÚGenericÚNoReturnÚOptionalÚTYPE_CHECKINGÚTypeVar)Ú
deprecated)Újustknobs_checkÚT)ÚboundT)Úkw_onlyc                   óô   — e Zd ZU dZeez  ed<   dZedz  ed<   dZ	e
e   dz  ed<   dZe
e   dz  ed<   dZedz  ed<   dZedz  ed<   d	Zeed
<   dZedz  ed<   dd„Zedee
e   z  dz  de
e   dz  fd„«       Zy)Ú_Configa+  Represents a config with richer behaviour than just a default value.
    ::
        i.e.
        foo = Config(justknob="//foo:bar", default=False)
        install_config_module(...)

    This configs must be installed with install_config_module to be used

    Precedence Order:
        alias: If set, the directly use the value of the alias.
        env_name_force: If set, this environment variable has precedence over
            everything after this.
            If multiple env variables are given, the precedence order is from
            left to right.
        user_override: If a user sets a value (i.e. foo.bar=True), that
            has precedence over everything after this.  User overrides are thread-local.
        env_name_default: If set, this environment variable will override everything
            after this.
            If multiple env variables are given, the precedence order is from
            left to right.
        justknob: If this pytorch installation supports justknobs, that will
            override defaults, but will not override the user_override precedence.
        default: This value is the lowest precedence, and will be used if nothing is
            set.

    Environment Variables:
        These are interpreted to be either "0" or "1" to represent true and false.

    Arguments:
        justknob: the name of the feature / JK. In OSS this is unused.
        default: is the value to default this knob to in OSS.
        alias: The alias config to read instead.
        env_name_force: The environment variable, or list of, to read that is a FORCE
            environment variable. I.e. it overrides everything except for alias.
        env_name_default: The environment variable, or list of, to read that changes the
            default behaviour. I.e. user overrides take preference.
    ÚdefaultNÚjustknobÚenv_name_defaultÚenv_name_forceÚ
value_typeÚaliasFr   Údeprecation_messageÚreturnc                 ó0  — t         j                  | j                  «      | _        t         j                  | j                  «      | _        | j                  �B| j
                  t        us$| j                  €| j                  €| j                  �t        d«      ‚y y )Nztif alias is set, none of {default, justknob,                         env_name_default and env_name_force} can be set)	r   Ú string_or_list_of_string_to_listr   r   r   r   Ú_UNSET_SENTINELr   ÚAssertionError©Úselfs    úY/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/utils/_config_module.pyÚ__post_init__z_Config.__post_init__V   s“   € Ü '× HÑ HØ×!Ñ!ó!
ˆÔô &×FÑFØ×Ñó
ˆÔð �:‰:Ð!à—‘¤OÑ3Ø—=‘=Ð,Ø×(Ñ(Ð4Ø×&Ñ&Ð2ä$ðIóð ð 3ð "ó    Úvalc                 ó€   — | €y t        | t        «      r| gS t        | t        «      st        dt	        | «      › �«      ‚| S )Nzval is not a list, got )Ú
isinstanceÚstrÚlistr    Útype)r&   s    r#   r   z(_Config.string_or_list_of_string_to_listj   sC   € ð ˆ;ØÜ�cœ3ÔØ�5ˆLÜ˜#œtÔ$Ü Ð#:¼4À»9¸+Ð!FÓGÐGØˆ
r%   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚobjectÚ__annotations__r   r)   r   r*   r   r   r+   r   r   Úboolr   r$   Ústaticmethodr   © r%   r#   r   r   $   s½   … ñ$ðL �‰ZÓØ€Hˆc�D‰jÓØ)-Ð�d˜3‘i $Ñ&Ó-Ø'+€N�D˜‘I Ñ$Ó+Ø"€J��t‘Ó"Ø€Eˆ3�‰:Óà€J�ÓØ&*Ð˜˜t™Ó*óð( ð	Ø�4˜‘9‰_˜tÑ#ð	à	ˆc‰�TÑ	ò	ó ñ	r%   r   Fr   r   r   r   r   r   r   r   r   c                  ó   — y ©Nr5   ©r   r   r   r   r   r   r   r   s           r#   ÚConfigr9   }   s   € ð r%   c           
      ó(   — t        | |||||||¬«      S )Nr8   )r   r8   s           r#   r9   r9   ‹   s)   € ô ØØØ-Ø)Ø!Øà!Ø 3ô

ð 
	
r%   Únamec                 ó\   — t         j                  j                  | «      }|dk(  ry|dk(  ry|S ©NÚ1TÚ0F©ÚosÚenvironÚget)r;   Úvalues     r#   Ú_read_env_variablerE   £   s-   € Ü�J‰J�N‰N˜4Ó €EØ�‚|ØØ�‚|ØØ€Lr%   Úmodulec                 óð   ‡ ‡‡—  G d„ dt         «      }dt        t        z  dt        t        z  dt        ddfˆˆ ˆfd„Ši Št        ‰ «      } ‰‰ ‰ d	«       ‰‰ _        |‰ _        |‰ _        d
‰ _	        d‰ _
        y)zŸ
    Converts a module-level config into a `ConfigModule()`.

    See _config_typing.pyi for instructions on how to get the converted module to typecheck.
    c                   ó    — e Zd Z eh d£«      Zy)ú3install_config_module.<locals>.ConfigModuleInstance>   Ú	_is_dirtyÚ_hash_digestr2   N)r-   r.   r/   ÚsetÚ_bypass_keysr5   r%   r#   ÚConfigModuleInstancerI   ³   s   „ áÒKÓL‰r%   rN   ÚsourceÚdestÚprefixr   Nc                 óþ  •— t        j                  | «      }t        | j                  j	                  «       «      D �]À  \  }}|j                  d«      slt        |t        t        f«      sVt        |d«      r*|j                  dk(  s;|j                  j                  d«      s t        |t        «      rt        |t        «      rŒ…|› |› �}|j                  |d«      }t        |t        «      r,t!        t        ||¬«      |«      ‰	|<   |‰
u sŒÌt#        ‰
|«       ŒÙt        |t        «      r8|�|j$                  €||_        t!        ||«      ‰	|<   |‰
u s�Œt#        ‰
|«       �Œ!t        |t        «      rt|j                  ‰
j&                  k7  rt)        d|› d‰
j&                  › �«      ‚t+        ‰
|› d	�«      } ‰|||› d	�«       |‰
u rt-        |||«       �Œ”||j                  |<   �Œ¥t)        d
|› d|› dt        |«      › d�«      ‚ y)z?Walk the module structure and move everything to module._configÚ__r.   Útypingzcollections.abcN)r   r   zsubconfig class z must be defined in module ú.zUnhandled config ú=z (ú))ÚinspectÚget_annotationsr*   Ú__dict__ÚitemsÚ
startswithr(   r   r   Úhasattrr.   r+   Ú
issubclassr   rC   ÚCONFIG_TYPESÚ_ConfigEntryÚdelattrr   r-   r    ÚSubConfigProxyÚsetattr)rO   rP   rQ   Ú
type_hintsÚkeyrD   r;   Úannotated_typeÚproxyÚconfigrF   Úvisits            €€€r#   ri   z$install_config_module.<locals>.visit·   sâ  ø€ ô ×,Ñ,¨VÓ4ˆ
Ü˜vŸ™×4Ñ4Ó6Ó7ó -	X‰JˆC�à—‘˜tÔ$Ü˜e¤j´,Ð%?Ô@ä˜E <Ô0à×(Ñ(¨HÒ4Ø ×+Ñ+×6Ñ6Ð7HÔIô ˜u¤dÔ+´
¸5Ä'Ô0Jàà�X˜c˜UÐ#ˆDØ'Ÿ^™^¨C°Ó6ˆNÜ˜%¤Ô.Ü+Ü E°nÔEÀtó ��t‘ð ˜6’>Ü˜F CÕ(Ü˜E¤7Ô+Ø!Ð-°%×2BÑ2BÐ2JØ'5�EÔ$ä+¨E°4Ó8��t‘à˜6“>Ü˜F CÖ(Ü˜E¤4Ô(Ø×#Ñ# v§¡Ò6Ü(Ø*¨5¨'Ð1LÈVÏ_É_ÐL]Ð^óð ô ' v°$°°q¨zÓ:�Ù�e˜U t f¨A JÔ/Ø˜6‘>Ü˜D # uÖ-à).�D—M‘M #Ó&ä$Ð'8¸¸¸Q¸u¸gÀRÌÈUËÀ}ÐTUÐ%VÓWÐWñ[-	Xr%   Ú T)ÚConfigModuler   r+   rb   r)   Ú-get_assignments_with_compile_ignored_commentsÚ_configÚ_compile_ignored_keysÚ	__class__rJ   rK   )rF   rN   Úcompile_ignored_keysrh   ri   s   `  @@r#   Úinstall_config_modulerq   ¬   s�   ú€ ôMœ|ô Mð4XÜœTÑ!ð4Xäœ>Ñ)ð4Xô ð4Xð 
÷	4Xðl ')€FäHÈÓPÐá	ˆ&�&˜"ÔØ€F„NØ#7€FÔ Ø+€FÔØ€FÔØ€FÕr%   z@compile_ignoredc                 ó
  — t        j                  | «      }t        «       }t        j                  t	        j
                  |j                  d«      «      j                  «      }d}d}|D �]  }|j                  t        j                  k(  rNd}|j                  j                  «       }t        |v sŒF|dk7  rt        dt        › �«      ‚||j                  d   f}Œo|j                  t        j                  k(  r|rŒ�|j                  }Œœ|j                  t        j                   k(  sŒº|j                  dk(  sŒÊt        |d   v r+|d   |j                  d   dz
  k(  r|j#                  |«       d}d}�Œ |dk7  rt        dt        › �«      ‚|S )Núutf-8)rj   éÿÿÿÿrj   zunconsumed r   rV   é   )rX   Ú	getsourcerL   ÚtokenizeÚioÚBytesIOÚencodeÚreadliner+   ÚCOMMENTÚstringÚstripÚCOMPILE_IGNORED_MARKERr    ÚstartÚNAMEÚOPÚadd)rF   Úsource_codeÚassignmentsÚtokensÚcurrent_commentÚ	prev_nameÚtokenÚmaybe_currents           r#   rl   rl   ý   sY  € Ü×#Ñ# FÓ+€KÜ“%€Kô ×ÑœrŸz™z¨+×*<Ñ*<¸WÓ*EÓF×OÑOÓP€FØ€OØ€Iàó ˆØ�:‰:œ×)Ñ)Ò)ØˆIØ!ŸL™L×.Ñ.Ó0ˆMÜ%¨Ò6Ø" hÒ.Ü(¨;Ô7MÐ6NÐ)OÓPÐPØ"/°·±¸Q±Ð"?‘Ø�Z‰Zœ8Ÿ=™=Ò(ò Ø!ŸL™L‘	Ø�Z‰Zœ8Ÿ;™;Ó&¨5¯<©<¸3Ó+>ô '¨/¸!Ñ*<Ñ<Ø# AÑ&¨%¯+©+°a©.¸1Ñ*<Ò<à—‘ 	Ô*Ø"(�ØŠIð-ð. ˜(Ò"Ü˜{Ô+AÐ*BÐCÓDÐDØÐr%   c                   óÈ   — e Zd ZU eed<   eed<   ee   ed<   dZe	dz  ed<   e
Zeed<   e
Zeed<   dZeed	<   dZe	dz  ed
<   dZeed<   dZe	dz  ed<   dZeed<   dede	ddfd„Zy)r`   r   r   Úuser_overrideNr   Úenv_value_forceÚenv_value_defaultFÚhider   r   r   Ú_deprecation_warnedrh   r;   r   c                 óŒ  — |j                   | _         |j                  �|j                  nt        | j                   «      | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        d| _        t        |t        ¬«      | _
        |j                  �'|j                  D ]  }t        |«      x}€Œ|| _         n |j                  �'|j                  D ]  }t        |«      x}€Œ|| _         n | j                  �?| j                   �3t!        | j                   t"        «      st%        d| j                   › d�«      ‚| j                  �c|j                  €|j                  �J| j                  t"        t&        t(        t"           t(        t&           fvrt%        d| j                  › d�«      ‚y y y )NF©r   z!justknobs only support booleans, z is not a booleanz<envvar configs only support (optional) booleans or strings, z is neither)r   r   r+   r   r   r   r   r�   r   r   rŒ   r   rE   rŽ   r   r�   r(   r3   r    r)   r   )r"   rh   r;   r&   Ú	env_values        r#   Ú__init__z_ConfigEntry.__init__B  s´  € Ø—~‘~ˆŒà!'×!2Ñ!2Ð!>ˆF×ÒÄDÈÏÉÓDVð 	Œð Ÿ™ˆŒØ—\‘\ˆŒ
à ×+Ñ+ˆŒØ#)×#=Ñ#=ˆÔ Ø#(ˆÔ ä'¨´oÔFˆÔØ×"Ñ"Ð.Ø×.Ñ.ò �Ü!3°CÓ!8Ð8�IÑEØ-6�DÔ*Ùðð × Ñ Ð,Ø×,Ñ,ò �Ü!3°CÓ!8Ð8�IÑEØ+4�DÔ(Ùðð �=‰=Ð$¨¯©Ð)AÜ˜dŸl™l¬DÔ1Ü$Ø7¸¿¹°~ÐEVÐWóð ð �?‰?Ð&Ø×#Ñ#Ð/°6×3HÑ3HÐ3Tà�‰ÜÜÜœ‘Üœ‘ð	'ñ ô %ØRÐSW×SbÑSbÐRcÐcnÐoóð ðð 4Uð 'r%   )r-   r.   r/   r   r2   r+   r   r1   r   r)   r   r�   rŽ   r�   r3   r   r   r   r�   r   r”   r5   r%   r#   r`   r`   "  s—   … ð ƒLàÓð ˜fÑ%Ó%à€Hˆc�D‰jÓà*€O�SÓ*Ø,Ð�sÓ,ð €Dˆ$ÓØ€Eˆ3�‰:Óà€J�ÓØ&*Ð˜˜t™Ó*Ø %Ð˜Ó%ð)˜wð )¨cð )°dô )r%   r`   c                   ó¦  ‡ — e Zd ZU eeef   ed<   ee   ed<   ee   ed<   eed<   e	dz  ed<   d3d„Z
d	ed
eddfd„Zd	ededdfˆ fd„Zd	edefd„Zd	eddfd„Zdedeeef   dz  fd„Zdedefd„Zdededdfd„Zd	edefd„Z	 	 	 d4dee   dz  dee   dz  dedeeef   fd„Zdedefd„Zde	fd„Zddœdedeeef   fd „Zdefd!„Zde	fd"„Z ed#e ¬$«      deeef   fd%„«       Z! ed&e ¬$«      deeef   fd'„«       Z"d(e	eeef   z  ddfd)„Z#deeef   fd*„Z$deeef   fd+„Z%	 	 d5d,eeeef   z  dz  d-ed.eeef   dd/fd0„Z&d1eeef   defd2„Z'ˆ xZ(S )6rk   rm   rM   rn   rJ   NrK   r   c                 ó(   — t        dt        › d�«      ‚)Nzuse z-.install_config_module(sys.modules[__name__]))ÚNotImplementedErrorr-   r!   s    r#   r”   zConfigModule.__init__z  s   € Ü!Ø”8�*ÐIÐJó
ð 	
r%   r;   rh   c                 óè   — |j                   rf|j                  sYddl}| j                  › d|› d�}|j                  r|d|j                  › �z  }|dz  }|j                  |t        d¬«       d	|_        yyy)
z;Issue deprecation warning for config if not already warned.r   NrU   z is deprecatedz and z4. It will be removed in a future version of PyTorch.é   )Ú
stacklevelT)r   r�   Úwarningsr-   r   ÚwarnÚFutureWarning)r"   r;   rh   r›   Úmsgs        r#   Ú_warn_if_deprecatedz ConfigModule._warn_if_deprecated  s{   € à×Ò V×%?Ò%?Ûà—]‘]�O 1 T F¨.Ð9ˆCØ×)Ò)Ø˜˜v×9Ñ9Ð:Ð;Ñ;�ØÐIÑIˆCØ�M‰M˜#œ}¸ˆMÔ;Ø)-ˆFÕ&ð &@Ðr%   rD   c                 óh  •— || j                   v rt        ‰| �	  ||«       y || j                  vrt	        | j
                  › d|› d�«      ‚| j                  |   }| j                  ||«       |j                  �| j                  ||«       y |j                  j                  |«       d| _        d|_        y )NrU   ú does not existTF)rM   ÚsuperÚ__setattr__rm   ÚAttributeErrorr-   rŸ   r   Ú_set_alias_valrŒ   rL   rJ   r�   )r"   r;   rD   rh   ro   s       €r#   r£   zConfigModule.__setattr__‹  s¤   ø€ Ø�4×$Ñ$Ñ$Ü‰GÑ  eÕ,Ø˜Ÿ™Ñ%Ü  D§M¡M ?°!°D°6¸Ð!IÓJÐJð —\‘\ $Ñ'ˆFØ×$Ñ$ T¨6Ô2à�|‰|Ð'Ø×#Ñ# F¨EÕ2à×$Ñ$×(Ñ(¨Ô/Ø!%�”Ø#�•r%   c                 ó.  — 	 | j                   |   }|j                  rt        | j                  › d|› d�«      ‚| j	                  ||«       | j                  |«      }|t        ur|S |j                  t        ur|j                  S |j                  j                  «       }|t        ur|S |j                  t        ur|j                  S |j                  �!t        |j                  |j                  ¬«      S t        |j                  t        «      sR|j                  j!                  t#        j$                  |j                  «      «       |j                  j                  «       S |j                  S # t&        $ r!}t        | j                  › d|› d�«      |‚d }~ww xY w)NrU   r¡   ©r;   r   )rm   r�   r¤   r-   rŸ   Ú_get_alias_valr   r�   rŒ   rC   rŽ   r   r   r   r(   Ú_IMMUTABLE_CONFIG_TYPESrL   ÚcopyÚdeepcopyÚKeyError)r"   r;   rh   Ú	alias_valrŒ   Úes         r#   Ú__getattr__zConfigModule.__getattr__œ  s`  € ð$	RØ—\‘\ $Ñ'ˆFà�{Š{Ü$¨¯© °a¸°v¸_Ð%MÓNÐNð ×$Ñ$ T¨6Ô2à×+Ñ+¨FÓ3ˆIØ¤Ñ/Ø Ð à×%Ñ%¬_Ñ<Ø×-Ñ-Ð-à"×0Ñ0×4Ñ4Ó6ˆMØ¤OÑ3Ø$Ð$à×'Ñ'¬Ñ>Ø×/Ñ/Ð/à�‰Ð*ä&¨F¯O©OÀVÇ^Á^ÔTÐTô ˜fŸn™nÔ.EÔFØ×$Ñ$×(Ñ(¬¯©°v·~±~Ó)FÔGØ×+Ñ+×/Ñ/Ó1Ð1Ø—>‘>Ð!øäò 	Rä  D§M¡M ?°!°D°6¸Ð!IÓJÐPQÐQûð	Rús=   ‚A"E* Á%E* Â#E* Â'E* Ã,E* Ã2A+E* ÅE* Å*	FÅ3FÆFc                 ó’   — d| _         | j                  |   j                  j                  t        «       d| j                  |   _        y ©NT)rJ   rm   rŒ   rL   r   r�   ©r"   r;   s     r#   Ú__delattr__zConfigModule.__delattr__Ã  s9   € ØˆŒð 	�‰�TÑ×(Ñ(×,Ñ,¬_Ô=Ø"&ˆ�‰�TÑÕr%   Úentryc                 óÀ   — |j                   }|€y |j                  dd«      \  }}	 t        j                  |«      }||fS # t        $ r}t        d|› d�«      |‚d }~ww xY w)NrU   ru   zconfig alias r¡   )r   ÚrsplitÚ	importlibÚimport_moduleÚImportErrorr¤   )r"   r´   r   Úmodule_nameÚconstant_namerF   r®   s          r#   Ú_get_alias_module_and_namez'ConfigModule._get_alias_module_and_nameÊ  sw   € ð —‘ˆØˆ=ØØ%*§\¡\°#°qÓ%9Ñ"ˆ�]ð	PÜ×,Ñ,¨[Ó9ˆFð �}Ð$Ð$øô ò 	PÜ  =°°°Ð!GÓHÈaÐOûð	Pús   ¦? ¿	AÁAÁAc                 óZ   — | j                  |«      }|€t        S |\  }}t        ||«      }|S r7   )r¼   r   Úgetattr)r"   r´   ÚdatarF   r»   Úconstant_values         r#   r¨   zConfigModule._get_alias_val×  s9   € Ø×.Ñ.¨uÓ5ˆØˆ<Ü"Ð"Ø $Ñˆ�Ü  ¨Ó7ˆØÐr%   r&   c                 ód   — | j                  |«      }|€t        d«      ‚|\  }}t        |||«       y )Nz6alias data should not be None when setting alias value)r¼   r    rc   )r"   r´   r&   r¿   rF   r»   s         r#   r¥   zConfigModule._set_alias_valß  s?   € Ø×.Ñ.¨uÓ5ˆØˆ<Ü ØHóð ð !%Ñˆ�Ü�˜ sÕ+r%   c                 ó²  — | j                   |   }|j                  t        u xs |j                  |j                  k(  }|j                  t        u xs |j                  |j                  k(  }|j
                  j                  «       t        u }t        |j                  t        «      s+|xs' |j
                  j                  «       |j                  k(  }|xr |xr |S )z‡
        Returns true if the config is at its default value.
        configs overridden by the env are not considered default.
        )	rm   rŽ   r   r   r�   rŒ   rC   r(   r©   )r"   r;   Ú
config_valÚnot_set_env_defaultÚnot_set_env_forceÚunsets         r#   Ú_is_defaultzConfigModule._is_defaultè  sÒ   € ð
 —\‘\ $Ñ'ˆ
ð
 ×(Ñ(¬OÐ;ò BØ×+Ñ+¨z×/AÑ/AÑAð 	ð
 ×&Ñ&¬/Ð9ò @Ø×)Ñ)¨Z×-?Ñ-?Ñ?ð 	ð
 ×(Ñ(×,Ñ,Ó.´/ÐAˆä˜*×,Ñ,Ô.EÔFØÒQ˜Z×5Ñ5×9Ñ9Ó;¸z×?QÑ?QÑQˆEØÒBÐ,ÒBÐ1BÐBr%   Úignored_keysÚignored_prefixesÚskip_defaultc                 ó`  ‡— i }| j                   j                  «       D �]  \  Š}|j                  �Œ|r‰|v rŒ|rt        ˆfd„|D «       «      rŒ2|r| j	                  ‰«      rŒF|j
                  j                  «       }|j                  t        ur|j                  }nd|t        ur|}nY|j                  t        ur|j                  }n:|j                  �"t        |j                  |j                  ¬«      }n|j                  }t        |t        «      st        j                   |«      }||‰<   �Œ |S )aÏ  Export a dictionary of current configuration keys and values.

        This function is design to provide a single point which handles
        accessing config options and exporting them into a dictionary.
        This is used by a number of different user facing export methods
        which all have slightly different semantics re: how and what to
        skip.
        If a config is aliased, it skips this config.

        Arguments:
            ignored_keys are keys that should not be exported.
            ignored_prefixes are prefixes that if a key matches should
                not be exported
            skip_default does two things. One if a key has not been modified
                it skips it.
        c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr7   )r\   )Ú.0rQ   re   s     €r#   ú	<genexpr>z)ConfigModule._get_dict.<locals>.<genexpr>  s   øè ø€ ÒM°&�s—~‘~ f×-ÑMùs   ƒr§   )rm   r[   r   ÚanyrÇ   rŒ   rC   r�   r   rŽ   r   r   r   r(   r©   rª   r«   )	r"   rÈ   rÉ   rÊ   rh   r´   rŒ   r&   re   s	           @r#   Ú	_get_dictzConfigModule._get_dict   s  ø€ ð, "$ˆØŸ,™,×,Ñ,Ó.ó 	‰JˆC�Ø�{‰{Ð&ØÙ  |Ñ 3ØÙÜÓMÐ<LÔMÔMØÙ × 0Ñ 0°Ô 5Øð "×/Ñ/×3Ñ3Ó5ˆMØ×$Ñ$¬OÑ;Ø×+Ñ+‘Ø¤oÑ5Ø#‘Ø×(Ñ(´Ñ?Ø×-Ñ-‘Ø—‘Ð+Ü%¨5¯>©>À5Ç=Á=ÔQ‘à—m‘m�Ü˜cÔ#:Ô;Ü—m‘m CÓ(�ØˆF�3‹Kð5	ð8 ˆr%   Úconfig_namec                 ó4   — | j                   |   j                  S r7   )rm   r   )r"   rÑ   s     r#   Úget_typezConfigModule.get_type5  s   € Ø�|‰|˜KÑ(×3Ñ3Ð3r%   c                 ój   — t        | dg «      }t        j                  | j                  |¬«      d¬«      S )z Convert config to a pickled blobÚ_save_config_ignore©rÈ   é   )Úprotocol)r¾   ÚpickleÚdumpsrÐ   )r"   rÈ   s     r#   Úsave_configzConfigModule.save_config8  s3   € ä˜tÐ%:¸BÓ?ˆÜ�|‰|Ø�N‰N¨ˆNÓ5Øô
ð 	
r%   T)Úignore_private_configsrÜ   c                óB  — g }|r|j                  d«       |j                  t        | dg «      «       | j                  |¬«      }t        | dg «      D ]K  }||v sŒ||   €Œ ||   «       }t	        |d«      r|j                  «       ||<   Œ8t        d|› d||   › d�«      ‚ |S )	z!Convert config to portable formatÚ_Ú_cache_config_ignore_prefix)rÉ   Ú_cache_config_factory_keysÚuuidzConfig 'z' is set to zO which does not implement uuid(). Implement uuid() for cache key participation.)ÚappendÚextendr¾   rÐ   r]   rá   ÚRuntimeError)r"   rÜ   Úprefixesrh   re   Úinstances         r#   Úsave_config_portablez!ConfigModule.save_config_portable@  s½   € ð ˆÙ!Ø�O‰O˜CÔ Ø�‰œ Ð&CÀRÓHÔIØ—‘°�Ó:ˆÜ˜4Ð!=¸rÓBò 
	ˆCØ�fŠ} ¨¡Ñ!8Ø&˜6 #™;›=�Ü˜8 VÔ,Ø"*§-¡-£/�F˜3’Kä&Ø" 3 % |°F¸3±K°=ð A)ð *óð ð
	ð ˆr%   c                 óø  ‡‡‡	‡
‡— t        «       Š
dt        dt        dt        fd„Šdt        ddfˆˆ
fd„Šdt        t         z  dt        t           fˆfd„Šdt
        dt        fd	„Š	dt        fˆˆˆ	ˆfd
„}g }| j                  }| j                  t        | dg «      d¬«      j                  «       D ]  \  }}|j                   ||||«      «       Œ  ‰
D ]  }|j                  dd|› �«       Œ dj                  |«      S )z•Convert config to Python statements that replicate current config.
        This does NOT include config settings that are at default values.
        ÚfuncÚadd_dotr   c                 óD   — | j                   }|dk(  rd}|r
|dk7  r|dz  }|S )NÚbuiltinsrj   rU   )r.   )ré   rê   rº   s      r#   Úget_module_namez4ConfigModule.codegen_config.<locals>.get_module_name^  s2   € ØŸ/™/ˆKØ˜jÒ(Ø �Ù˜;¨"Ò,Ø˜sÑ"�ØÐr%   Nc                 ó@   •—  ‰| d«      }|r‰j                  |«       y y )NF)rƒ   )ré   rº   rí   Úimportss     €€r#   Ú
add_importz/ConfigModule.codegen_config.<locals>.add_importf  s#   ø€ Ù)¨$°Ó6ˆKÙØ—‘˜KÕ(ð r%   Úvc                 óX   •— | D �cg c]  } ‰|d«      › |j                   › �‘Œ c}S c c}w r±   )r-   )rñ   Úitemrí   s     €r#   Úlist_of_callables_to_stringz@ConfigModule.codegen_config.<locals>.list_of_callables_to_stringk  s,   ø€ ØPQÖRÈ‘ t¨TÓ2Ð3°D·M±M°?ÒCÒRÐRùÒRs   †'c                 óP   — t        | «      xr t        | d«      xr t        | d«      S )Nr.   r-   )Úcallabler]   )rñ   s    r#   Úimportable_callablez8ConfigModule.codegen_config.<locals>.importable_callablen  s$   € ä˜A“;ÒV¤7¨1¨lÓ#;ÒVÄÈÈ:Ó@VÐVr%   c                 ó\  •—  ‰|«      r% ‰|«       | › d|› d ‰|d«      › |j                   › �S t        |t        t        f«      r_t	        ˆfd„|D «       «      rK|D ]
  } ‰|«       Œ  ‰|«      }t        |t        «      r
| › d|› d|› �S | › d|› ddj                  |«      › d�S | › d|› d|›�S )að  
            Return a string version of the config line.
            Handle v when v is a callable, or a list/dict of callables. Add import statements for callables if necessary.
            We assume that the value of a single config won't be a mix of callables and non-callables.

            Example output:
                import logging
                import _warnings
                torch._dynamo.config.reorderable_logging_functions = { _warnings.warn, logging.warn, print }
            rU   z = Tc              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr7   r5   )rÍ   ró   r÷   s     €r#   rÎ   zGConfigModule.codegen_config.<locals>.get_config_line.<locals>.<genexpr>€  s   øè ø€ ò 4Ø.2Ñ# D×)ñ4ùs   ƒz = { z, z })r-   r(   r*   rL   ÚallÚjoin)	ÚmodÚkrñ   ró   Úv_listrð   rí   r÷   rô   s	        €€€€r#   Úget_config_linez4ConfigModule.codegen_config.<locals>.get_config_liner  sÛ   ø€ ñ # 1Ô%Ù˜1”Ø˜˜a ˜s #¡o°a¸Ó&>Ð%?ÀÇ
Á
¸|ÐLÐLÜ˜A¤¤c˜{Ô+´ó 4Ø67ô4ô 1ð ò %�DÙ˜tÕ$ð%á4°QÓ7�Ü˜a¤Ô&Ø!˜U ! A 3 c¨&¨Ð2Ð2à!˜U ! A 3 f¨T¯Y©Y°vÓ->Ð,?¸sÐCÐCà˜˜a ˜s # a UÐ+Ð+r%   rÕ   T)rÈ   rÊ   r   zimport ú
)rL   r   r3   r)   r*   r   r-   rÐ   r¾   r[   râ   Úinsertrû   )r"   rÿ   Úlinesrü   rý   rñ   Úimport_namerð   rí   r÷   rï   rô   s          @@@@@r#   Úcodegen_configzConfigModule.codegen_configV  s  ü€ ô “%ˆð	¤(ð 	´Tð 	¼có 	ð	)œXð 	)¨$ö 	)ð
	S¬4´#©:ð 	S¼$¼s¹)õ 	Sð	W¤3ð 	W¬4ó 	Wð	,¬#÷ 	,ð 	,ð6 ˆØ�m‰mˆØ—N‘NÜ  Ð'<¸bÓAÐPTð #ó 
ç
‰%‹'ò	5‰DˆAˆqð �L‰L™¨¨a°Ó3Õ4ð	5ð #ò 	5ˆKØ�L‰L˜˜g k ]Ð3Õ4ð	5à�y‰y˜ÓÐr%   c                 óX  — | j                   s| j                  €‡| j                  t        | j                  «      ¬«      }t        t        |j                  «       «      «      }t        j                  |j                  d«      d¬«      j                  «       | _        d| _         | j                  S )z/Hashes the configs that are not compile_ignoredrÖ   rs   F)Úusedforsecurity)rJ   rK   rÐ   r*   rn   ÚreprÚsortedr[   ÚhashlibÚmd5rz   Údigest)r"   Údict_to_hashÚstring_to_hashs      r#   Úget_hashzConfigModule.get_hash—  s‡   € à�>Š>˜T×.Ñ.Ð6ØŸ>™>´t¸D×<VÑ<VÓ7W˜>ÓXˆLÜ!¤&¨×);Ñ);Ó)=Ó">Ó?ˆNÜ '§¡Ø×%Ñ% gÓ.Àô!ç‰f‹hð Ôð #ˆDŒNØ× Ñ Ð r%   zÒ`config.to_dict()` has been deprecated. It no longer changes the underlying config. use `config.get_config_copy()` instead if you just want a copy of the config, or config.load_config if you need mutable access)Úcategoryc                 ó"   — | j                  «       S r7   ©Úget_config_copyr!   s    r#   Úto_dictzConfigModule.to_dict¢  ó   € ð ×#Ñ#Ó%Ð%r%   zÜ`config.shallow_copy_dict()` has been deprecated. It no longer changes the underlying config. use `config.get_config_copy()` instead if you just want a copy of the config, or config.load_config if you need mutable accessc                 ó"   — | j                  «       S r7   r  r!   s    r#   Úshallow_copy_dictzConfigModule.shallow_copy_dict«  r  r%   Úmaybe_pickled_configc                 óæ   — t        |t        «      st        j                  |«      }n|}|j	                  «       D ]6  \  }}|| j
                  v rt        | ||«       Œ"ddlm}  |d|› d|› d�«       Œ8 y)zARestore from a prior call to save_config() or shallow_copy_dict()r   )Ú	warn_oncezkey z with value z! is not understood by this configN)	r(   ÚdictrÙ   Úloadsr[   rm   rc   Útorch._dynamo.utilsr  )r"   r  rh   rý   rñ   r  s         r#   Úload_configzConfigModule.load_config´  so   € äÐ.´Ô5Ü—\‘\Ð"6Ó7‰Fà)ˆFØ—L‘L“Nò 	V‰DˆAˆqØ�D—L‘LÑ Ü˜˜a Õ#å9á˜D   <°¨sÐ2SÐTÕUñ	Vr%   c                 ó"   — | j                  «       S r7   )rÐ   r!   s    r#   r  zConfigModule.get_config_copyÂ  s   € Ø�~‰~ÓÐr%   c                 ó<   — | j                  t        | dg «      ¬«      S )NrÕ   rÖ   )rÐ   r¾   r!   s    r#   Úget_serializable_config_copyz)ConfigModule.get_serializable_config_copyÅ  s   € Ø�~‰~¬7°4Ð9NÐPRÓ+Sˆ~ÓTÐTr%   Úarg1Úarg2ÚkwargsÚContextDecoratorc                 óD  ‡‡— |�L|� t        |t        «      st        d«      ‚||iŠnt        |t        «      st        d«      ‚|Š|rt        d«      ‚|Š|�t        d«      ‚t        ‰t        «      st        dt	        ‰«      › �«      ‚| Š G ˆˆfd„dt
        «      } |«       S )aÂ  
        Decorator and/or context manager to make temporary changes to a config.  Note that patched settings are thread-local.

        As a decorator:

            @config.patch("name", val)
            @config.patch(name1=val1, name2=val2)
            @config.patch({"name1": val1, "name2", val2})
            def foo(...):
                ...

        As a context manager:

            with config.patch("name", val):
                ...
        zGfirst argument must be a string when passing 2 positional args to patchzKfirst argument must be a dict when passing a single positional arg to patchz:cannot pass both positional and keyword arguments to patchzLsecond positional argument is only valid when first argument is a key stringzexpected `dict` got c                   ó2   •— e Zd Zdˆ ˆfd„Zdˆfd„Zˆfd„Zy)ú'ConfigModule.patch.<locals>.ConfigPatchNc                 ój   •— ‰| _         t        ‰j                  › dt        | «      › d�d¬«      | _        y )Nz.ConfigPatch[ú]r5   r’   )Úchangesr   r-   ÚidÚ_prior)r"   r*  rh   s    €€r#   r”   z0ConfigModule.patch.<locals>.ConfigPatch.__init__þ  s3   ø€ Ø&�”ÜFPØ—‘Ð' }´R¸³X°J¸aÐ@ØôG�•r%   c                 ó„  •— i }| j                   D ]  }‰j                  |«      ||<   Œ | j                  j                  «       }| j                  j	                  g |¢|‘­«       	 | j                   j                  «       D ]  \  }}‰j                  ||«       Œ y # t        $ r | j                  j	                  |«       ‚ w xY wr7   )r*  r¯   r,  rC   rL   r[   r£   Ú	Exception)r"   Úpriorre   Úprior_stackrý   rñ   rh   s         €r#   Ú	__enter__z1ConfigModule.patch.<locals>.ConfigPatch.__enter__  s³   ø€ Ø(*�ØŸ<™<ò 9�Cà!'×!3Ñ!3°CÓ!8�E˜#’Jð9ð #Ÿk™kŸo™oÓ/�Ø—‘—‘Ð 5 +Ð 5¨uÑ 5Ô6ðØ $§¡× 2Ñ 2Ó 4ò 1™˜˜1Ø×*Ñ*¨1¨aÕ0ñ1øä ò Ø—K‘K—O‘O KÔ0Øðús   Á$4B Â&B?c                 óî   •— | j                   j                  «       }|st        d«      ‚|d   }| j                   j                  |d d «       |j	                  «       D ]  \  }}‰j                  ||«       Œ y )Nz2prior should not be empty when exiting ConfigPatchrt   )r,  rC   r    rL   r[   r£   )	r"   Úexc_typeÚexc_valÚexc_tbr0  r/  rý   rñ   rh   s	           €r#   Ú__exit__z0ConfigModule.patch.<locals>.ConfigPatch.__exit__  sq   ø€ Ø"Ÿk™kŸo™oÓ/�Ù"Ü(ØLóð ð $ B™�Ø—‘—‘ ¨C¨RÐ 0Ô1Ø!ŸK™K›Mò -‘D�A�qØ×&Ñ& q¨!Õ,ñ-r%   r,   )r-   r.   r/   r”   r1  r6  )r*  rh   s   €€r#   ÚConfigPatchr'  ý  s   ø„ öõõ	-r%   r7  )r(   r)   r    r  r+   r$  )r"   r!  r"  r#  r7  r*  rh   s        @@r#   ÚpatchzConfigModule.patchÈ  sÇ   ù€ ð. ÐØÐÜ! $¬Ô,Ü(Øaóð ð   ˜,‘ä! $¬Ô-Ü(Øeóð ð �ÙÜ$ØPóð ð
 ˆGØÐÜ$Øbóð ô ˜'¤4Ô(Ü Ð#7¼¸W»°Ð!GÓHÐHØˆ÷	-Ô*ô 	-ñB ‹}Ðr%   r*  c                 óJ   ‡ ‡‡— ‰ j                   Šdt        g df   fˆˆˆ fd„}|S )aV  
        A lower-overhead version of patch() for things on the critical path.

        Usage:

            # do this off the critical path
            change_fn = config.make_closure_patcher(foo=True)

            ...

            revert = change_fn()
            try:
              ...
            finally:
                revert()

        r   Nc                  óú   •‡— ‰D � ci c]   } | ‰|    j                   j                  «       “Œ" c} Š‰j                  «       D ]-  \  } }‰j                  |    j                   j	                  |«       Œ/ dˆˆfd„}|S c c} w )Nc                  ó†   •— ‰j                  «       D ]-  \  } }‰j                  |    j                  j                  |«       Œ/ y r7   )r[   rm   rŒ   rL   )rý   rñ   r/  r"   s     €€r#   ÚrevertzBConfigModule._make_closure_patcher.<locals>.change.<locals>.revert9  s8   ø€ Ø!ŸK™K›Mò 9‘D�A�qØ—L‘L ‘O×1Ñ1×5Ñ5°aÕ8ñ9r%   r,   )rŒ   rC   r[   rm   rL   )rý   rñ   r<  r/  r*  rh   r"   s      @€€€r#   Úchangez2ConfigModule._make_closure_patcher.<locals>.change4  sr   ù€ Ø?FÖG¸!�Q˜˜q™	×/Ñ/×3Ñ3Ó5Ñ5ÒGˆEØŸ™›ò 5‘��1Ø—‘˜Q‘×-Ñ-×1Ñ1°!Õ4ð5ö9ð ˆMùò Hs   ‡%A8)rm   r   )r"   r*  r=  rh   s   `` @r#   Ú_make_closure_patcherz"ConfigModule._make_closure_patcher   s*   ú€ ð$ —‘ˆð		œ  T Ñ*÷ 		ð ˆr%   r,   )NNF)NN))r-   r.   r/   r  r)   r`   r2   rL   r3   Úbytesr”   rŸ   r1   r£   r   r¯   r³   Útupler   r¼   r¨   r¥   rÇ   r*   rÐ   r+   rÓ   rÛ   rç   r  r  r   r�   r  r  r  r  r   r8  r>  Ú__classcell__©ro   s   @r#   rk   rk   n  sË  ø… ð �#�|Ð#Ñ$Ó$Ø�c‘(ÓØ˜s™8Ó#ØƒOØ˜$‘,Óó
ð

.¨ð 
.°\ð 
.Àdó 
.ð$ ð $¨Fð $°tõ $ð"%R ð %R¨ó %RðN' ð '¨ó 'ð%Ø!ð%à	ˆz˜3ˆÑ	 $Ñ	&ó%ð Lð °Só ð, Lð ,°sð ,¸tó ,ðC ð C¨ó Cð4 *.Ø-1Ø"ñ	3à˜3‘i $Ñ&ð3ð ˜s™) dÑ*ð3ð ð	3ð
 
ˆc�3ˆh‰ó3ðj4 Cð 4¨Dó 4ð
˜Uó 
ð 15òØ)-ðà	ˆc�3ˆh‰óð,?  ó ? ðB	!˜%ó 	!ñ ð	8ð ô	ð&˜˜c 3˜h™ò &óð&ñ ð	8ð ô	ð& 4¨¨S¨¡>ò &óð&ðV°¸¸SÀ#¸X¹Ñ0Fð VÈ4ó Vð   c¨3 h¡ó  ðU¨d°3¸°8©nó Uð
 -1ØñVà�D˜˜c˜‘NÑ" TÑ)ðVð ðVð �s˜C�x‘.ð	Vð
 
óVðp¨t°C¸°H©~ð À#÷ r%   rk   c                   óL   ‡ — e Zd ZdZdd„Zdefd„Zdeegef   defˆ fd„Z	ˆ xZ
S )r$  z[
    Same as contextlib.ContextDecorator, but with support for
    `unittest.TestCase`
    r   c                 ó   — t        d«      ‚©NÚNYI©r—   r!   s    r#   r1  zContextDecorator.__enter__H  ó   € Ü! %Ó(Ð(r%   c                 ó   — t        d«      ‚rE  rG  )r"   r3  r4  r5  s       r#   r6  zContextDecorator.__exit__K  rH  r%   ré   c                 óü   •‡ — t        |t        «      r\t        |t        j                  «      rB G ˆ fd„d|«      }|j
                  |_        |j                  |_        |j                  |_        |S t        ‰‰ �%  |«      S )Nc                   óF   •‡ — e Zd Zedˆ ˆfd„«       Zedˆ ˆfd„«       Zˆ xZS )ú,ContextDecorator.__call__.<locals>._TestCasec                 ó†   •— ‰j                  «        	 t        ‰| �	  «        y # t        $ r ‰j	                  d d d «       ‚ w xY wr7   )r1  r¢   Ú
setUpClassr.  r6  ©Úclsro   r"   s    €€r#   rN  z7ContextDecorator.__call__.<locals>._TestCase.setUpClassR  s?   ø€ à—N‘NÔ$ðÜ™Ñ*Õ,øÜ$ò ØŸ™ d¨D°$Ô7Øðús	   “" ¢A c                 óz   •— 	 t         ‰| �  «        ‰j                  d d d «       y # ‰j                  d d d «       w xY wr7   )r¢   ÚtearDownClassr6  rO  s    €€r#   rR  z:ContextDecorator.__call__.<locals>._TestCase.tearDownClass[  s4   ø€ ð8Ü™Ñ-Ô/àŸ™ d¨D°$Õ7ø˜Ÿ™ d¨D°$Õ7ús   ƒ% ¥:r,   )r-   r.   r/   ÚclassmethodrN  rR  rA  )ro   r"   s   @€r#   Ú	_TestCaserL  Q  s)   ù„ Øõó ðð õ8ó ô8r%   rT  )
r(   r+   r^   ÚunittestÚTestCaser-   r/   r.   r¢   Ú__call__)r"   ré   rT  ro   s   `  €r#   rW  zContextDecorator.__call__N  sf   ù€ Ü�dœDÔ!¤j°´x×7HÑ7HÔ&Iö8˜Dô 8ð" "&§¡ˆIÔØ%)×%6Ñ%6ˆIÔ"Ø#'§?¡?ˆIÔ àÐä‰wÑ Ó%Ð%r%   r,   )r-   r.   r/   r0   r1  r
   r6  r   r   rW  rA  rB  s   @r#   r$  r$  B  s<   ø„ ñó
)ð)°Xó )ð&˜X s e¨S jÑ1ð &°c÷ &ñ &r%   r$  c                   ód   ‡ — e Zd ZdZdededdfˆ fd„Zdededdfd	„Zdedefd
„Z	deddfd„Z
ˆ xZS )rb   zn
    Shim to redirect to main config.
    `config.triton.cudagraphs` maps to _config["triton.cudagraphs"]
    rh   rQ   r   Nc                 óF   •— t         ‰| �  d|«       t         ‰| �  d|«       y )Nrm   Ú_prefix)r¢   r£   )r"   rh   rQ   ro   s      €r#   r”   zSubConfigProxy.__init__q  s!   ø€ ä‰Ñ˜I vÔ.Ü‰Ñ˜I vÕ.r%   r;   rD   c                 óT   — | j                   j                  | j                  |z   |«      S r7   )rm   r£   rZ  )r"   r;   rD   s      r#   r£   zSubConfigProxy.__setattr__v  s"   € Ø�|‰|×'Ñ'¨¯©°tÑ(;¸UÓCÐCr%   c                 óR   — | j                   j                  | j                  |z   «      S r7   )rm   r¯   rZ  r²   s     r#   r¯   zSubConfigProxy.__getattr__y  ó    € Ø�|‰|×'Ñ'¨¯©°tÑ(;Ó<Ð<r%   c                 óR   — | j                   j                  | j                  |z   «      S r7   )rm   r³   rZ  r²   s     r#   r³   zSubConfigProxy.__delattr__|  r]  r%   )r-   r.   r/   r0   r1   r)   r”   r£   r   r¯   r³   rA  rB  s   @r#   rb   rb   k  sf   ø„ ñð
/˜vð /¨sð /°tõ /ð
D ð D¨Fð D°tó Dð= ð =¨ó =ð= ð =¨÷ =r%   rb   c                 ó\   — t         j                  j                  | «      }|dk(  ry|dk(  ry|S r=   r@   )r;   r   rD   s      r#   Úget_tristate_envr`  €  s-   € Ü�J‰J�N‰N˜4Ó €EØ�‚|ØØ�‚|ØØ€Nr%   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó¨   •— ‰j                   j                  «       D ]3  \  }}|j                  d«      rŒ|| j                   vsŒ't        | ||«       Œ5 | S )NrÞ   )rZ   r[   r\   rc   )Ú	child_clsrý   rñ   Ú
parent_clss      €r#   Úwrapperz$inherit_fields_from.<locals>.wrapperŠ  sR   ø€ Ø×'Ñ'×-Ñ-Ó/ò 	)‰DˆAˆqà—<‘< Õ$¨°)×2DÑ2DÒ)DÜ˜	 1 aÕ(ð	)ð Ðr%   r5   )rd  re  s   ` r#   Úinherit_fields_fromrf  ‰  s   ø€ ôð €Nr%   r7   )8Ú
contextlibrª   r	  r·   rX   rx   rA   rÙ   rw   rU  Úcollections.abcr   Úcontextvarsr   Údataclassesr   Útypesr   r   rT   r   r	   r
   r   r   r   Útyping_extensionsr   Útorch._utils_internalr   ÚintÚfloatr3   r+   r)   r*   rL   r@  r  r_   r©   r   r1   r   r   r9   rE   rq   r   rl   r`   rk   r$  rb   r`  rf  r5   r%   r#   ú<module>rp     sæ  ðÛ Û Û Û Û Û 	Û 	Û Û Û Ý $Ý "Ý !ß *ß K× KÝ (å 1ð �U˜D¡$ t£*¨c°4¸¸eÀTÐJ€ð   t©T°$«Z¸¸eÐDÐ ñ ˆC�s˜U‘{ TÑ)¨CÑ/°$Ñ6¸Ñ<¸uÑDÀtÑKÈdÑRÔS€ñ “(€ñ �4ÔôOˆg�a‰jó Oó ðOñl ð .Ø#Ø37Ø15Ø"&Ø à Ø*.ñ
Ø�V‘ð
à˜‘*ð
ð   S¡	™/¨DÑ0ð
ð ˜d 3™i™¨$Ñ.ð	
ð
 ˜4‘Kð
ð �T‰zð
ð ð
ð ! 4™Zð
ð 
ô
ð .Ø#Ø37Ø15Ø"&Ø à Ø*.ñ
Ø�V‘ð
à˜‘*ð
ð   S¡	™/¨DÑ0ð
ð ˜d 3™i™¨$Ñ.ð	
ð
 ˜4‘Kð
ð �T‰zð
ð ð
ð ! 4™Zð
ð 
�‰ó
ð0˜Sð  T¨C¡Z°$Ñ%6ó ðJ *ð J°ó JðZ ,Ð ð"¸*ð "ÈÈSÉó "ðJ ÷Hð Hó ðHôVQ�:ô Qôh&&�z×2Ñ2ô &&÷R=ñ =ñ*˜3ð ¨ð ¸¸t¹ó ór%   