§
    ŠŠtj7 ã                   óà  — d 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
mZ ddlmZ ddlmZm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mZmZ d	dlmZm Z m!Z!m"Z" d	dl#m$Z$ d	dl%m&Z&m'Z'm(Z( d	dl)m*Z*m+Z+m,Z,m-Z-m.Z. d	dlm/Z/m0Z0m1Z1m2Z2 d	dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d	dl<m=Z= erddl>m?Z? ddl@mAZA ddlBmCZC ejD         E                    eFd¦  «        ZGdeHeef         deHeef         deIddfd„ZJdeKe         deKe         ddfd„ZL G d„ d¦  «        ZMejN        d d!de
d"         fd#„¦   «         ZOejN        d d!de
d"         fd$„¦   «         ZPejN        d d!de
d"         fd%„¦   «         ZQdS )&aÛ  
Side effect tracking and management for TorchDynamo's compilation system.

This module provides infrastructure for tracking and managing side effects that occur
during symbolic execution, including:

- Tracking mutations to objects, attributes, and variables
- Managing context changes (cell variables, global namespace modifications)
- Handling aliasing and object identity preservation
- Managing stack frame state and local variable changes
- Tracking function calls with side effects

Key classes:
- SideEffects: Main container for tracking all side effects during execution
- MutableSideEffects: Specialization for mutable object tracking
- AttributeMutation/ValueMutation: Track specific types of mutations
- Various specialized side effect classes for different scenarios

The side effect system ensures that mutations performed during symbolic execution
are properly replayed during runtime, maintaining the correctness of compiled code
while enabling optimizations where safe.
é    N)Ú	GeneratorÚMutableMapping)ÚCellType)ÚAnyÚTYPE_CHECKING©ÚAutogradFunctionContextVariable)Ú
OrderedSet)Úis_structseq_classé   )ÚconfigÚgraph_break_hintsÚutilsÚ	variables)Úbytecode_from_templateÚcreate_call_functionÚcreate_call_methodÚcreate_instruction)Ú	PyCodegen)Úcollapse_resume_framesÚget_stack_above_dynamoÚunimplemented)Ú
AttrSourceÚGlobalSourceÚLocalCellSourceÚSourceÚTempLocalSource)Úis_frozen_dataclassÚis_namedtuple_clsÚnn_module_newÚ
object_new)ÚAttributeMutationÚAttributeMutationExistingÚAttributeMutationNewÚAttrMutationKindÚis_side_effect_safeÚValueMutationExistingÚValueMutationNewÚVariableTracker)ÚFrozenDataClassVariable)ÚOutputGraph)ÚInstructionTranslatorBase)ÚListVariableÚside_effectsÚ	dict_fromÚdict_toÚ	mro_indexÚreturnc                 óÆ   — t          |¦  «        j        |         }|                     |¦  «         |                      ¦   «         D ]\  }}|                     |||¦  «         Œd S ©N)ÚtypeÚ__mro__ÚclearÚitemsÚ__setitem__)r/   r0   r1   Ú
dict_classÚkÚvs         úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/side_effects.pyÚ_manual_dict_setitemr>   K   sm   € õ �g‘”Ô& yÔ1€JØ×Ò�WÑÔÐØ—’Ñ!Ô!ð .ð .‰ˆˆ1Ø×Ò˜w¨¨1Ñ-Ô-Ð-Ð-ð.ð .ó    Ú	list_fromÚlist_toc                 óp   — t                                |¦  «         t                                || ¦  «         d S r4   )Úlistr7   Úextend)r@   rA   s     r=   Ú_manual_list_updaterE   X   s.   € Ý‡J‚JˆwÑÔÐÝ‡K‚K�˜Ñ#Ô#Ð#Ð#Ð#r?   c                   ó�  ‡ — e Zd ZU dZeeef         ed<   eeeeef         f         ed<   eeeee	f         f         ed<   e
e         ed<   eee
ej                 f         ed<   	 	 	 	 	 	 	 dqdd	deeef         dz  deeeeef         f         dz  deeeee	f         f         dz  deee
ej                 f         dz  de
e         dz  d
e
eee
e         f                  dz  deeededef         f         dz  ddfˆ fd„Zdeddfd„Zdeddfd„Zej        ded         fd„¦   «         Zdedededefd„Zdrd„Zdeddfd„Zdedefd„Zdd dedz  fd„Zdsd„Zdedefd „Zdedefd!„Z defd"„Z!defd#„Z"defd$„Z#deddfd%„Z$dedefd&„Z%e	j&        fdededed'e	ddf
d(„Z'dedededdfd)„Z(dedede	fd*„Z)	 	 dtdeded,ed-edef
d.„Z*d/ededdfd0„Z+d/edefd1„Z,d2ededefd3„Z-d2edededdfd4„Z.e/d5e0defd6„¦   «         Z1dedefd7„Z2dedefd8„Z3	 dudeded9e	ee	d:f         z  dz  defd;„Z4dedefd<„Z5e6fded=ed>e0defd?„Z7e7Z8ded=edefd@„Z9dAe:dz  dBedCedDeeef         def
dE„Z;dBe0de0fdF„Z<dGedHedIe
e         defdJ„Z=ddKœdGedHedIe
e         dLdMdef
dN„Z>defdO„Z?dPe:dz  dQe@dRedefdS„ZAdPe:dedefdT„ZBdUedVe
e         ddfdW„ZC	 	 	 	 dvdX„ZDdwdZ„ZEdeddfd[„ZFdefd\„ZGde
e         fd]„ZHd^eIddfd_„ZJd`ddaedbddeddf
dc„ZKddeddfde„ZLd^eIddfdf„ZMdxdh„ZNdedefdi„ZOdje
e         ddfdk„ZP	 dyd^eIdleddfdm„ZQdrdn„ZRdefdo„ZSdrdp„ZTˆ xZUS )zÚSideEffectsah  
    Maintain records of mutations and provide methods to apply them during code generation.

    Handles tracking and applying side effects during PyTorch Dynamo compilation,
    maintaining Python semantics by managing mutations, attribute modifications,
    and other side effects that occur during program execution.

    Key responsibilities:
    - Tracks mutations to Python objects, lists, and dictionaries that need to be
    applied after an FX graph is run.
    - Manages attribute modifications and deletions
    - Handles tensor hooks and backward pass state
    - Tracks cell variable mutations and global variable changes
    - Ensures correct ordering and application of side effects after graph execution

    This ensures that optimized code behaves identically to the original Python code with
    respect to object mutations and other side effects.
    Úid_to_variableÚstore_attr_mutationsÚattr_mutation_kindsÚ	keepaliveÚmutation_user_stacksNÚoutput_graphr+   Úsave_for_backwardÚtensor_hookszvariables.TensorVariablez!variables.RemovableHandleVariabler2   c	                 ón  •— t          ¦   «                              ¦   «          t          j        |¦  «        | _        |pi | _        |pi | _        |pi | _        |pi | _        |pg | _	        |pg | _
        |pi | _        d| _        d | _        t          ¦   «         | _        t!          ¦   «         | _        i | _        d S )NF)ÚsuperÚ__init__ÚweakrefÚrefÚoutput_graph_weakrefrH   rI   rJ   rL   rK   rN   rO   Ú_has_existing_dict_mutationÚca_final_callbacks_varÚsetÚ"ignore_mutation_on_these_variablesr
   Úmutated_sourcesÚdeferred_attr_mutations)
ÚselfrM   rH   rI   rJ   rL   rK   rN   rO   Ú	__class__s
            €r=   rR   zSideEffects.__init__x   sË   ø€ õ4 	‰Œ×ÒÑÔÐÝ$+¤K°Ñ$=Ô$=ˆÔ!Ø,Ð2°ˆÔØ$8Ð$>¸BˆÔ!Ø#6Ð#<¸"ˆÔ Ø$8Ð$>¸BˆÔ!Ø"˜ bˆŒØ!2Ð!8°bˆÔØ(Ð.¨BˆÔð ,1ˆÔ(ð <@ˆÔ#õ ILÉÌˆÔ/õ 4>±<´<ˆÔð
 PRˆÔ$Ð$Ð$r?   Úvarc                 ó:   — | j                              |¦  «         dS )z„Mutations to this variable will be executed but not tracked,
        typically used for temporary mutations that are later restored.N)rY   Úadd©r\   r^   s     r=   Úignore_mutations_onzSideEffects.ignore_mutations_on³   s!   € ð 	Ô/×3Ò3°CÑ8Ô8Ð8Ð8Ð8r?   c                 óP   — || j         v r| j                              |¦  «         dS dS )zQRemove a variable from the skip mutation set, restoring normal mutation tracking.N)rY   Úremovera   s     r=   Ústop_ignoring_mutations_onz&SideEffects.stop_ignoring_mutations_on¸   s5   € à�$Ô9Ð9Ð9ØÔ3×:Ò:¸3Ñ?Ô?Ð?Ð?Ð?ð :Ð9r?   ©NNNc              #   ó~   K  — | j         }i | _         	 dV — |                      ¦   «          || _         dS # || _         w xY w)uC  Defer outer-scope attribute mutation checks until tracing completes.

        Context managers that flip-flop a flag (set on enter, restore on exit)
        produce no net side effect. Instead of failing immediately, we track
        original and current values, then validate they match after tracing.

        Note: this context only validates that mutations were nullified â€” it
        does NOT roll back store_attr_mutations. Callers must restore
        side_effects separately (e.g., via prev_side_effects pattern) to
        discard the mutations after the HOP.
        N)r[   Ú validate_deferred_attr_mutations)r\   Úsaveds     r=   Údefer_side_effect_checksz$SideEffects.defer_side_effect_checks½   sZ   è è € ð Ô,ˆØ')ˆÔ$ð	1ØˆEˆEˆEØ×1Ò1Ñ3Ô3Ð3à+0ˆDÔ(Ð(Ð(ø¨5ˆDÔ(Ð0Ð0Ð0Ð0s   ’3 ³	<ÚitemÚnameÚvaluec                 óæ  — t          |¦  «        |f}|                     ¦   «         st          d¦  «        ‚|                     ¦   «         }|| j        v r| j        |         d         }n|                      ¦   «         }|€t          d¦  «        ‚|j        }	 |                     ||¦  «        }	n# t          $ r Y dS w xY w|	                     ¦   «         sdS |	                     ¦   «         }||f| j        |<   dS )u=  Record an attribute mutation for deferred validation.

        Returns True if successfully deferred, False if we cannot read the
        original value (var_getattr raises NotImplementedError) or the
        original is not a python constant â€” caller should fall back to
        check_allowed_side_effect.
        zAvalue must be a python constant (guaranteed by caller store_attr)r   Nzoutput_graph weakref is deadFT)	ÚidÚis_python_constantÚAssertionErrorÚas_python_constantr[   rU   Ú
current_txÚvar_getattrÚNotImplementedError)
r\   rk   rl   rm   ÚkeyÚcurrentÚoriginalrM   ÚtxÚoriginal_vts
             r=   Úsnapshot_attr_mutationz"SideEffects.snapshot_attr_mutationÒ   s  € õ �$‰xŒx˜ÐˆØ×'Ò'Ñ)Ô)ð 	Ý ØSñô ð ð ×*Ò*Ñ,Ô,ˆØ�$Ô.Ð.Ð.ØÔ3°CÔ8¸Ô;ˆHˆHà×4Ò4Ñ6Ô6ˆLØÐ#Ý$Ð%CÑDÔDÐDØÔ(ˆBðØ"×.Ò.¨r°4Ñ8Ô8��øÝ&ð ð ð Ø�u�uðøøøà×1Ò1Ñ3Ô3ð Ø�uØ"×5Ò5Ñ7Ô7ˆHØ-5°wÐ,?ˆÔ$ SÑ)Øˆts   ÂB* Â*
B8Â7B8c                 ó¶   — | j                              ¦   «         D ]>\  \  }}\  }}||k    r-t          dd|› d�d|› d|›d|›d�g t          j        ¢¬¦  «         Œ?dS )	z;Check that all deferred attribute mutations were nullified.zHOP: Non-nullified side effectzAttribute 'z(' was not restored to its original valuez,' on an outer-scope object was changed from z to zý inside a higher-order op subgraph. Dynamo only supports mutations that are undone before the subgraph exits (e.g., context managers that save/restore a flag). If you intentionally want this side effect, move the mutation outside of the higher-order op.©Úgb_typeÚcontextÚexplanationÚhintsN)r[   r8   r   r   ÚFUNDAMENTAL)r\   Ú_rl   rx   rw   s        r=   rh   z,SideEffects.validate_deferred_attr_mutationsó   sª   € à.2Ô.J×.PÒ.PÑ.RÔ.Rð 	ð 	Ñ*‰IˆQ�Ñ*˜ 'Ø˜7Ò"Ð"ÝØ<ØX¨$ÐXÐXÐXð!'¨dð !'ð !'Ø$,ð!'ð !'Ø4;ð!'ð !'ð !'ð ;Õ-Ô9Ð:ðñ ô ð øð	ð 	r?   rv   c                 óÒ   — t           j        dk    rdS || j        vr
g | j        |<   | j        |                              t          j        j                             ¦   «         ¦  «         dS )z?Capture the current user stack from the instruction translator.ÚsilentN)r   Úside_effect_replay_policyrL   ÚappendÚtorchÚ_guardsÚTracingContextÚextract_stack)r\   rv   s     r=   Ú_capture_user_stackzSideEffects._capture_user_stack  sn   € åÔ+¨xÒ7Ð7ØˆFØ�dÔ/Ð/Ð/Ø-/ˆDÔ% cÑ*ØÔ! #Ô&×-Ò-ÝŒMÔ(×6Ò6Ñ8Ô8ñ	
ô 	
ð 	
ð 	
ð 	
r?   Úotherc                 ó
  — t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚| j        |j        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S )NzExpected SideEffects, got )	Ú
isinstancerG   rq   r5   rH   rI   rJ   rN   rO   )r\   r�   s     r=   Ú__eq__zSideEffects.__eq__  s—   € Ý˜%¥Ñ-Ô-ð 	MÝ Ð!K½dÀ5¹k¼kÐ!KÐ!KÑLÔLÐLð Ô 5Ô#7Ò7ð 8ØÔ)¨UÔ-GÒGð8àÔ(¨EÔ,EÒEð8ð Ô&¨%Ô*AÒAð8ð Ô! UÔ%7Ò7ð	
r?   c                 óº  — | j         |j         k    rB| j                              ¦   «         }|j                              ¦   «         }||k    rd|› d|› �S dS | j        |j        k    rB| j                             ¦   «         }|j                             ¦   «         }||k    rd|› d|› �S dS | j        |j        k    rdS | j        |j        k    rdS | j        |j        k    rdS d S )	Nzid_to_variable keys: z != zid_to_variable: unknown diffzstore_attr_mutations keys: z"store_attr_mutations: unknown diffz!attr_mutation_kinds: unknown diffrN   rO   )rH   ÚkeysrI   rJ   rN   rO   )r\   r�   Úsk_itvÚok_itvÚsk_samÚok_sams         r=   ÚdiffzSideEffects.diff  s  € ØÔ %Ô"6Ò6Ð6ØÔ(×-Ò-Ñ/Ô/ˆFØÔ)×.Ò.Ñ0Ô0ˆFØ˜ÒÐØC¨vÐCÐC¸6ÐCÐCÐCð 2Ð1ØÔ&¨%Ô*DÒDÐDØÔ.×3Ò3Ñ5Ô5ˆFØÔ/×4Ò4Ñ6Ô6ˆFØ˜ÒÐØI°VÐIÐIÀÐIÐIÐIØ7Ð7ØÔ%¨Ô)BÒBÐBØ6Ð6ØÔ# uÔ'>Ò>Ð>Ø&Ð&ØÔ %Ô"4Ò4Ð4Ø!�>à�4r?   c           
      óp  — |                       ¦   «         }|€t          d¦  «        ‚|                      |t          | j        ¦  «        d„ | j                             ¦   «         D ¦   «         d„ | j                             ¦   «         D ¦   «         | j        t          | j
        ¦  «        | j        | j        ¬¦  «        S )zCreate a shallow copyNz)output_graph weakref is dead during clonec                 ó4   — i | ]\  }}|t          |¦  «        “ŒS © ©Údict©Ú.0r;   r<   s      r=   ú
<dictcomp>z%SideEffects.clone.<locals>.<dictcomp>:  s1   € ð "ð "ð "Ù#˜q !�•4˜‘7”7ð"ð "ð "r?   c                 ó4   — i | ]\  }}|t          |¦  «        “ŒS rš   r›   r�   s      r=   rŸ   z%SideEffects.clone.<locals>.<dictcomp>=  s1   € ð !ð !ð !Ù#˜q !�•4˜‘7”7ð!ð !ð !r?   )rM   rH   rI   rJ   rL   rK   rN   rO   )rU   rq   r]   rœ   rH   rI   r8   rJ   rL   rC   rK   rN   rO   )r\   rT   s     r=   ÚclonezSideEffects.clone2  sÊ   € à×'Ò'Ñ)Ô)ˆØˆ;Ý Ð!LÑMÔMÐMØ�~Š~ØÝ Ô 3Ñ4Ô4ð"ð "Ø'+Ô'@×'FÒ'FÑ'HÔ'Hð"ñ "ô "ð!ð !Ø'+Ô'?×'EÒ'EÑ'GÔ'Gð!ñ !ô !ð "&Ô!:Ý˜4œ>Ñ*Ô*Ø"Ô4ØÔ*ð ñ 
ô 
ð 	
r?   c                 ó.   — t          |¦  «        | j        v S r4   )ro   rH   ©r\   rk   s     r=   Ú__contains__zSideEffects.__contains__F  s   € Ý�$‰xŒx˜4Ô.Ð.Ð.r?   c                 ó6   — | j         t          |¦  «                 S r4   )rH   ro   r£   s     r=   Ú__getitem__zSideEffects.__getitem__I  s   € ØÔ"¥2 d¡8¤8Ô,Ð,r?   c                 ót   — |                       ¦   «         }t          |o|j        j        j        j        ¦  «        S r4   )rU   Úboolrs   ÚoutputÚcurrent_tracerÚ,unsafe_allow_externally_visible_side_effects©r\   rM   s     r=   Ú9should_allow_externally_visible_side_effects_in_subtracerzESideEffects.should_allow_externally_visible_side_effects_in_subtracerL  s=   € Ø×0Ò0Ñ2Ô2ˆÝØð kØÔ'Ô.Ô=Ôjñ
ô 
ð 	
r?   c                 ót   — |                       ¦   «         }t          |o|j        j        j        j        ¦  «        S r4   )rU   r¨   rs   r©   rª   Úallow_side_effects_in_hopr¬   s     r=   Ú should_allow_side_effects_in_hopz,SideEffects.should_allow_side_effects_in_hopS  s=   € Ø×0Ò0Ñ2Ô2ˆÝØð XØÔ'Ô.Ô=ÔWñ
ô 
ð 	
r?   c                 ót   — |                       ¦   «         }t          |o|j        j        j        j        ¦  «        S r4   )rU   r¨   rs   r©   rª   Úis_reconstructing_generatorr¬   s     r=   r²   z'SideEffects.is_reconstructing_generatorZ  s=   € Ø×0Ò0Ñ2Ô2ˆåØð ZØÔ'Ô.Ô=ÔYñ
ô 
ð 	
r?   c                 óø   — |j         �lt          |j         ¦  «        sZ|                      ¦   «         }|rF|j        j        j        }|j        €0t          j        j	         
                    ¦   «         |_        dS dS dS dS dS )zFRecord the first externally-visible side effect on the current tracer.N)Úmutation_typer&   rU   rs   r©   rª   Úside_effect_stackrˆ   r‰   rŠ   r‹   )r\   rk   rM   Útracers       r=   Ú_maybe_record_side_effectz%SideEffects._maybe_record_side_effectb  s“   € àÔÐ)Õ2EØÔñ3
ô 3
Ð)ð  ×4Ò4Ñ6Ô6ˆLØð Ø%Ô0Ô7ÔF�ØÔ+Ð3åœÔ4×BÒBÑDÔDð Ô,Ð,Ð,ð *Ð)Ð)Ð)ðð à3Ð3r?   c                 óÚ  — ddl m} t          ||¦  «        rdS |                      ¦   «         r|                      |¦  «         dS |                      ¦   «         r|                      |¦  «         dS |                      ¦   «         r#t          dd|› �ddgt          j	        ¢¬¦  «         |j
        €t          d	|› d
�¦  «        ‚t          |j
        ¦  «        st          dd|› �ddg¬¦  «         dS )Nr   r   Tz'Generator reconstruction with mutationszmutating object: z—Cannot reconstruct a generator with variable mutations. Dynamo needs to fully exhaust the generator, which may cause unintended variable modifications.z$Remove mutations from the generator.r}   úmutation_type is None for z in check_allowed_side_effectzHOP: Unsafe side effectzAttempted to mutate zHMutating a variable from outside the scope of this HOP is not supported.aw  If the HOP is activation checkpointing (torch.utils.checkpoint.checkpoint), this points to a side effect in forward method. Eager activation checkpointing replays that side-effect while recomputing the forward in the backward. If you are ok with side-effect not replayed in the backward, try setting `torch._dynamo.config.skip_fwd_side_effects_in_bwd_under_checkpoint = True`F)Útorch._dynamo.variables.miscr	   r�   r­   r·   r°   r²   r   r   r‚   r´   rq   r&   )r\   rk   r	   s      r=   Úcheck_allowed_side_effectz%SideEffects.check_allowed_side_effecto  sW  € ØPÐPÐPÐPÐPÐPõ �dÐ;Ñ<Ô<ð 	Ø�4Ø×IÒIÑKÔKð 	Ø×*Ò*¨4Ñ0Ô0Ð0Ø�4Ø×0Ò0Ñ2Ô2ð 	Ø×*Ò*¨4Ñ0Ô0Ð0Ø�4Ø×+Ò+Ñ-Ô-ð 	õ ØAØ2¨DÐ2Ð2ð5ð ;ðå&Ô2ðð
ñ 
ô 
ð 
ð ÔÐ%Ý ØP¨TÐPÐPÐPñô ð õ # 4Ô#5Ñ6Ô6ð 	ÝØ1Ø5¨tÐ5Ð5Øfðxðð	
ñ 
ô 
ð 
ð ˆur?   Úmutation_kindc                 óä  — |                       |¦  «        st          d|› d�¦  «        ‚d}t          |j        t          ¦  «        r|t          |j        ¦  «        sht          |t          ¦  «        sS|                      ¦   «         s?|                      ¦   «         s+| 	                    ¦   «         r|  
                    |||¦  «        }|s|                      |¦  «         || j        vr
i | j        |<   || j        vr
i | j        |<   || j        |         |<   || j        |         |<   |                      |¦  «         t          |dd ¦  «        }|�*| j                             t%          ||¦  «        ¦  «         d S d S )Nú Expected attribute mutation for z in store_attrFÚsource)Úis_attribute_mutationrq   r�   r´   r#   r&   r	   r°   r­   rp   r{   r»   rI   rJ   rŒ   ÚgetattrrZ   r`   r   )r\   rk   rl   rm   r¼   ÚdeferredÚitem_sources          r=   Ú
store_attrzSideEffects.store_attrœ  s°  € ð ×)Ò)¨$Ñ/Ô/ð 	Ý ØG°4ÐGÐGÐGñô ð ð ˆå�tÔ)Õ+DÑEÔEð	Få'¨Ô(:Ñ;Ô;ð	Fõ ˜tÕ%DÑEÔEð	Fð ×9Ò9Ñ;Ô;ð		Fð
 ×RÒRÑTÔTð	Fð ×(Ò(Ñ*Ô*ð	Fð ×2Ò2°4¸¸uÑEÔEˆHØð 	1Ø×*Ò*¨4Ñ0Ô0Ð0Ø�tÔ0Ð0Ð0Ø.0ˆDÔ% dÑ+Ø�tÔ/Ð/Ð/Ø-/ˆDÔ$ TÑ*Ø05ˆÔ! $Ô'¨Ñ-Ø/<ˆÔ  Ô& tÑ,à× Ò  Ñ&Ô&Ð&Ý˜d H¨dÑ3Ô3ˆØÐ"ØÔ ×$Ò$¥Z°¸TÑ%BÔ%BÑCÔCÐCÐCÐCð #Ð"r?   c                 óJ   — |                       |||t          j        ¦  «         d S r4   )rÄ   r%   ÚINSTANCE_DICT)r\   rk   rl   rm   s       r=   Ústore_instance_dict_attrz$SideEffects.store_instance_dict_attrÂ  s&   € ð 	�Š˜˜d EÕ+;Ô+IÑJÔJÐJÐJÐJr?   c                 óÞ   — || j                              |d¦  «        vrt          j        S || j                             |d¦  «        vrt          d|› d|› �¦  «        ‚| j        |         |         S )Nrš   z$Missing attribute mutation kind for ú.)rI   Úgetr%   ÚGENERIC_SETATTRrJ   rq   )r\   rk   rl   s      r=   Úget_attr_mutation_kindz"SideEffects.get_attr_mutation_kindÇ  s{   € ð �tÔ0×4Ò4°T¸2Ñ>Ô>Ð>Ð>Ý#Ô3Ð3Ø�tÔ/×3Ò3°D¸"Ñ=Ô=Ð=Ð=Ý Ð!UÈÐ!UÐ!UÈtÐ!UÐ!UÑVÔVÐVØÔ'¨Ô-¨dÔ3Ð3r?   FÚ
deleted_okÚcheckc                 ó  — |r(|                       |¦  «        st          d|› d�¦  «        ‚| j        |         |         }|s?t          |t          j        ¦  «        r%t          dd|› d|› �dg t          j        ¢¬¦  «         |S )Nr¾   z in load_attrz$Attempted to read a deleted variablezitem: z, name: Ú r}   )	rÀ   rq   rI   r�   r   ÚDeletedVariabler   r   Ú
USER_ERROR)r\   rk   rl   rÍ   rÎ   Úresults         r=   Ú	load_attrzSideEffects.load_attrÐ  sµ   € ð ð 	Ø×-Ò-¨dÑ3Ô3ð Ý$ØJ°tÐJÐJÐJñô ð ð Ô*¨4Ô0°Ô6ˆØð 	�j¨µÔ1JÑKÔKð 	ÝØ>Ø5 Ð5Ð5¨tÐ5Ð5ØØ5Õ)Ô4Ð5ð	ñ ô ð ð ˆr?   Úcellvarc                 óŽ  — |                      ¦   «         r%t          dd|› d|› �dg t          j        ¢¬¦  «         t	          |t
          j        ¦  «        s t          dt          |¦  «        › d�¦  «        ‚t	          |t
          j	        ¦  «        s t          dt          |¦  «        › d�¦  «        ‚|  
                    |d	|¦  «         d S )
NzWrite to immutable cellz	cellvar: z	, value: zFDynamo doesn't support writing to immutable/sourceless cell variables.r}   úExpected CellVariable, got z in store_cellúExpected VariableTracker, got Úcell_contents)Úis_immutabler   r   Ú	DIFFICULTr�   r   ÚCellVariablerq   r5   r)   rÄ   )r\   rÕ   rm   s      r=   Ú
store_cellzSideEffects.store_cellæ  sê   € Ø×ÒÑ!Ô!ð 	ÝØ1Ø= GÐ=Ð=°eÐ=Ð=ØdØ4Õ)Ô3Ð4ð	ñ ô ð õ ˜'¥9Ô#9Ñ:Ô:ð 	Ý ØK­d°7©m¬mÐKÐKÐKñô ð õ ˜%¥Ô!:Ñ;Ô;ð 	Ý ØLµ°e±´ÐLÐLÐLñô ð ð 	�Š˜ °%Ñ8Ô8Ð8Ð8Ð8r?   c                 ó
  — t          |t          j        ¦  «        s t          dt	          |¦  «        › d�¦  «        ‚|                      ¦   «         }|rJt          |dd ¦  «        }|�7|j        j        j	        j
                             t          |d¦  «        ¦  «         |                      |d¦  «        r|                      |dd¬¦  «        S |j        r|j        S t!          dt#          |¦  «        dg t$          j        ¢¬	¦  «         d S )
Nr×   z in load_cellr¿   rÙ   F)rÎ   zRead uninitialized cellzBAttempted to read a cell variable that has not been populated yet.r}   )r�   r   rÜ   rq   r5   rU   rÁ   rs   r©   rª   Útraced_sourcesr`   r   Úhas_pending_mutation_of_attrrÔ   Úpre_existing_contentsr   Ústrr   rÒ   )r\   rÕ   rM   Úcell_sources       r=   Ú	load_cellzSideEffects.load_cellø  s#  € Ý˜'¥9Ô#9Ñ:Ô:ð 	Ý ØJ­d°7©m¬mÐJÐJÐJñô ð ð ×0Ò0Ñ2Ô2ˆØð 	Ý! '¨8°TÑ:Ô:ˆKØÐ&ØÔ'Ô.Ô=ÔL×PÒPÝ˜{¨OÑ<Ô<ñô ð ð ×,Ò,¨W°oÑFÔFð 	IØ—>’> '¨?À%�>ÑHÔHÐHØÔ(ð 	1ØÔ0Ð0ÝØ-Ý˜‘L”LØ\Ø1Õ%Ô0Ð1ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r?   Úgvarc                 ó¢   — t          |t          j        ¦  «        s t          dt	          |¦  «        › d�¦  «        ‚|                      ||¦  «        S )NrØ   z in load_global)r�   r   r)   rq   r5   rÔ   )r\   rå   rl   s      r=   Úload_globalzSideEffects.load_global  sS   € Ý˜$¥	Ô 9Ñ:Ô:ð 	Ý ØLµ°d±´ÐLÐLÐLñô ð ð �~Š~˜d DÑ)Ô)Ð)r?   c                 ó  — t          |t          j        ¦  «        s t          dt	          |¦  «        › d�¦  «        ‚t          |t          j        ¦  «        s t          dt	          |¦  «        › d�¦  «        ‚|                      |||¦  «         d S )Nz'Expected VariableTracker for gvar, got z in store_globalz(Expected VariableTracker for value, got )r�   r   r)   rq   r5   rÄ   )r\   rå   rl   rm   s       r=   Ústore_globalzSideEffects.store_global  sš   € õ ˜$¥	Ô 9Ñ:Ô:ð 	Ý ØV½$¸t¹*¼*ÐVÐVÐVñô ð õ ˜%¥Ô!:Ñ;Ô;ð 	Ý ØX½4À¹;¼;ÐXÐXÐXñô ð ð 	�Š˜˜d EÑ*Ô*Ð*Ð*Ð*r?   Úclsc           
      óø   — t          j        | dd ¦  «        t          j        t          j        t
          j        t          j        t          j        t          j        t          j        t          j        t          j        f	v S )NÚ__getattribute__)ÚinspectÚgetattr_staticÚobjectrì   rœ   rX   Ú	frozensetÚintrâ   rC   ÚtupleÚBaseException)rê   s    r=   Ú"cls_supports_mutation_side_effectsz.SideEffects.cls_supports_mutation_side_effects&  s[   € åÔ% cÐ+=¸tÑDÔDÝÔ#ÝÔ!ÝÔ ÝÔ&ÝÔ ÝÔ ÝÔ!ÝÔ"ÝÔ*ð
I
ð 

ð 
	
r?   c                 ó6   — t          |j        t          ¦  «        S r4   )r�   r´   r"   r£   s     r=   rÀ   z!SideEffects.is_attribute_mutation4  s   € Ý˜$Ô,Õ.?Ñ@Ô@Ð@r?   c                 óz   — |                       |¦  «        o&t          | j                             |¦  «        ¦  «        S r4   )rÀ   r¨   rI   rÊ   r£   s     r=   Úhas_pending_mutationz SideEffects.has_pending_mutation7  s=   € Ø×)Ò)¨$Ñ/Ô/ð 
µDØÔ%×)Ò)¨$Ñ/Ô/ñ5
ô 5
ð 	
r?   Úmutation_kinds.c                 óØ   — |                       |¦  «        r|| j                             |d¦  «        v sdS |€dS |                      ||¦  «        }t	          |t
          ¦  «        r||u S ||v S )Nrš   FT)rÀ   rI   rÊ   rÌ   r�   r%   )r\   rk   rl   rø   r¼   s        r=   rà   z(SideEffects.has_pending_mutation_of_attr<  s†   € ð ×&Ò& tÑ,Ô,ð	à˜Ô1×5Ò5°d¸BÑ?Ô?Ð?Ð?à�5ØÐ!Ø�4Ø×3Ò3°D¸$Ñ?Ô?ˆÝ�nÕ&6Ñ7Ô7ð 	3Ø  NÐ2Ð2Ø Ð.Ð.r?   c                 ól  — |                      ¦   «         rdS t          |j        t          t          f¦  «        rdS t          |t
          j        ¦  «        r|| j        v p|                     | ¦  «        S |  	                    |¦  «        r	|| j        v S |j        €t          d|› d�¦  «        ‚|j        j        S )NFTr¹   z in is_modified)rÚ   r�   r´   r$   r(   r   ÚUserDefinedObjectVariablerI   Úis_base_vt_modifiedrÀ   rq   Úis_modifiedr£   s     r=   rý   zSideEffects.is_modifiedN  sÇ   € Ø×ÒÑÔð 	Ø�5Ý�dÔ(Õ+?ÕAQÐ*RÑSÔSð 	Ø�4å�d�IÔ?Ñ@Ô@ð 	Wà˜4Ô4Ð4ÐV¸×8PÒ8PÐQUÑ8VÔ8VÐVà×%Ò% dÑ+Ô+ð 	5Ø˜4Ô4Ð4Ð4ØÔÐ%Ý Ð!S¸dÐ!SÐ!SÐ!SÑTÔTÐTØÔ!Ô-Ð-r?   ÚvariableÚmutation_type_clsc           
      ó&  — t          |¦  «        | j        v r:t          |› d|j        › d| j        t          |¦  «                 j        › d�¦  «        ‚ |¦   «         |_        || j        t          |¦  «        <   | j                             |¦  «         |S )z7Start tracking an existing or new variable for mutationz“ is already tracked for mutation. This could be because you are not using VariableBuilder to construct the variable tracker. Source of new object: z'. Source of previously tracked object: rÉ   )ro   rH   rq   r¿   r´   rK   r‡   )r\   rk   rþ   rÿ   s       r=   Ú
_track_objzSideEffects._track_obj^  sµ   € õ ˆd‰8Œ8�tÔ*Ð*Ð*Ý Øð `ð `ð *2¬ð`ð `ð 9=Ô8KÍBÈtÉHÌHÔ8UÔ8\ð	`ð `ð `ñô ð ð "3Ð!2Ñ!4Ô!4ˆÔØ(0ˆÔ�B˜t™HœHÑ%ØŒ×Ò˜dÑ#Ô#Ð#Øˆr?   c                 ó<   — |                       ||t          ¬¦  «        S )N)rÿ   )r  r#   )r\   rk   rþ   s      r=   Útrack_object_existingz!SideEffects.track_object_existingu  s(   € ð �ŠØØÝ7ð ñ 
ô 
ð 	
r?   Ú
cls_sourceÚuser_clsÚvariable_clsÚoptionsc                 ó~  — |t           j        j        j        u rLt	          j        d¬¦  «        5  t           j                             ¦   «         }d d d ¦  «         n# 1 swxY w Y   nt          |¦  «        } ||fdt          |¦  «        i|¤Ž}|| j	        t          |¦  «        <   | j                             |¦  «         |S )NT)Úrecordr´   )rˆ   ÚautogradÚfunctionÚFunctionCtxÚwarningsÚcatch_warningsÚFunctionr!   r$   rH   ro   rK   r‡   )r\   r  r  r  r  Úobjrþ   s          r=   Útrack_object_newzSideEffects.track_object_new‚  s  € ð •u”~Ô.Ô:Ð:Ð:ÝÔ(°Ð5Ñ5Ô5ð 0ð 0Ý”n×-Ò-Ñ/Ô/�ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øõ ˜XÑ&Ô&ˆCØ�<Øð
ð 
å.¨zÑ:Ô:ð
ð ð
ð 
ˆð
 (0ˆÔ�B˜s™GœGÑ$ØŒ×Ò˜cÑ"Ô"Ð"Øˆs   ®AÁAÁ Ac                 ó4  — ddl m} ddlm} ddlm} ddlm} t          j	        }t          ||¦  «        r|                     |¦  «        r|}�nt          |d¦  «        rt          |d¦  «        r ||¦  «        s|}�nït          |t          j        j        ¦  «        rt          j        }�nÂt          |t"          j        ¦  «        rt          j        }�nšt          |t"          j        ¦  «        rt          j        }�nrt          |t,          ¦  «        rt          j        }�nOt          |t0          t2          f¦  «        rt          j        }�n%t          |t6          ¦  «        r<t9          |¦  «        r t          j                             |¦  «        }nát          j        }nÔt          |t>          ¦  «        rt          j         }n²t          |tB          ¦  «        rt          j"        }n�tG          |¦  «        rtH          }nyt          |tJ          ¦  «        rt          j&        }nWt          |t          j'        j(        ¦  «        rt          j)        }n+t          j*         +                    |¦  «        rt          j*        }t          |t          j	        ¦  «        stY          d	|› �¦  «        ‚|S )
Nr   )ÚTorchFunctionModer   )ÚGenericContextWrappingVariable)ÚTorchFunctionModeVariable)Úis_forbidden_context_managerÚ	__enter__Ú__exit__z4Expected subclass of UserDefinedObjectVariable, got )-Útorch.overridesr  Úvariables.ctx_managerr  Úvariables.torch_functionr  Úvariables.user_definedr  r   rû   Ú
issubclassÚ is_supported_torch_function_modeÚhasattrrˆ   ÚnnÚModuleÚUnspecializedNNModuleVariableÚcollectionsÚdefaultdictÚDefaultDictVariableÚOrderedDictÚOrderedDictVariablerœ   ÚUserDefinedDictVariablerX   rð   ÚUserDefinedSetVariablerò   r   ÚUserDefinedTupleVariableÚ
get_vt_clsrC   ÚUserDefinedListVariabler   ÚMutableMappingVariabler   r*   ró   Ú"UserDefinedExceptionObjectVariableÚuser_definedÚ_CONSTANT_BASE_TYPESÚUserDefinedConstantVariableÚInspectVariableÚis_matching_classrq   )r\   r  r  r  r  r  r  s          r=   Úget_variable_clszSideEffects.get_variable_cls—  s¢  € Ø5Ð5Ð5Ð5Ð5Ð5àIÐIÐIÐIÐIÐIØGÐGÐGÐGÐGÐGØHÐHÐHÐHÐHÐHõ Ô/ð 	õ ØÐ'ñ
ô 
ð '	5à'×HÒHÈÑRÔRð'	5ð 5ˆL‰Lå�H˜kÑ*Ô*ð#	5å˜ *Ñ-Ô-ð#	5ð 1Ð0°Ñ:Ô:ð#	5ð
 :ˆL‰LÝ˜¥%¤(¤/Ñ2Ô2ð 	5Ý$ÔBˆL‰LÝ˜¥+Ô"9Ñ:Ô:ð 	5Ý$Ô8ˆL‰LÝ˜¥+Ô"9Ñ:Ô:ð 	5Ý$Ô8ˆL‰LÝ˜¥$Ñ'Ô'ð 	5Ý$Ô<ˆL‰LÝ˜¥3­	Ð"2Ñ3Ô3ð 	5Ý$Ô;ˆL‰LÝ˜¥%Ñ(Ô(ð 	5Ý  Ñ*Ô*ð BÝ(ÔA×LÒLÈXÑVÔV��å(ÔA��Ý˜¥$Ñ'Ô'ð 	5Ý$Ô<ˆLˆLÝ˜¥.Ñ1Ô1ð 	5Ý$Ô;ˆLˆLÝ  Ñ*Ô*ð 
	5Ý2ˆLˆLÝ˜¥-Ñ0Ô0ð 	5Ý$ÔGˆLˆLÝØÝÔ"Ô7ñ
ô 
ð 	5õ %Ô@ˆLˆLÝÔ&×8Ò8¸ÑBÔBð 	5Ý$Ô4ˆLÝ˜,­	Ô(KÑLÔLð 	Ý ØUÀ|ÐUÐUñô ð ð Ðr?   Úbase_cls_vtÚcls_vtÚ	init_argsc           
      óÌ  — |j         }t          |t          j        j        ¦  «        rt          |¦  «        }�n¬t          |t          j        ¦  «        r|j	        }nxt          |t          j
        ¦  «        rt          }nVt          |t          j        ¦  «        rt          }n4t          |t          j        ¦  «        r|j         }nt          d|› �¦  «        ‚t          j                             |j        ¦  «        st%          d|› �¦  «        ‚t'          |¦  «        r |d g|j        z  ¦  «        }n¸|r`t          |t          j        j        ¦  «        rAd„ |D ¦   «         }	  |j        |g|¢R Ž }n{# t.          $ r |                     |¦  «        }Y nZw xY w	 |                     |¦  «        }n?# t0          $ r2}t3          dd|› d|› d|› �dg t4          j        ¢¬	¦  «         Y d }~nd }~ww xY w|S )
NzUnexpected base_cls_vt zUnsupported __new__ method for c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rš   )rr   )rž   Úargs     r=   ú
<listcomp>z1SideEffects.get_example_value.<locals>.<listcomp>ñ  s$   € ÐNÐNÐN¸S × 6Ò 6Ñ 8Ô 8ÐNÐNÐNr?   zHUnsupported user-defined object construction during side-effect trackingzclass=z, base=z, error=zcDynamo could not construct an example object for side-effect replay using the class __new__ method.r}   )rm   r  rˆ   r   r!  r    r�   r   ÚBuiltinVariableÚfnÚDictBuiltinVariablerœ   ÚListBuiltinVariablerC   ÚUserDefinedClassVariableÚRuntimeErrorÚis_supported_new_methodÚ__new__rq   r   Ún_fieldsr/  r0  Ú	ExceptionÚ	TypeErrorr   r   ÚSUPPORTABLE)	r\   r5  r6  r7  r  r  Úbase_clsÚexample_argsÚexcs	            r=   Úget_example_valuezSideEffects.get_example_valueÏ  sm  € ð ”<ˆÝ�h¥¤¤Ñ0Ô0ð 5	å Ñ)Ô)ˆC‰Cå˜+¥yÔ'@ÑAÔAð 	LØ&œ>��Ý˜K­Ô)FÑGÔGð LÝ��Ý˜K­Ô)FÑGÔGð LÝ��Ý˜K­Ô)KÑLÔLð LØ&Ô,��å"Ð#J¸[Ð#JÐ#JÑKÔKÐKåÔ5×MÒMØÔ ñô ð Sõ %Ð%QÀxÐ%QÐ%QÑRÔRÐRÝ! (Ñ+Ô+ð "ð �h ˜v¨Ô(9Ñ9Ñ:Ô:��Øð �zØÝÔ&Ô;ñ ô  ð ð  OÐNÀIÐNÑNÔN�ð
Ø*˜(Ô*Ø ðØ#/ðð ð �C�Cøõ !ð ð ð ð #×*Ò*Ø ñô �C�C�Cð	øøøðØ"×*Ò*¨8Ñ4Ô4�C�CøÝ ð ð ð õ "Ø jØ Q¨Ð QÐ Q¸(Ð QÐ QÈCÐ QÐ QðQð ?Õ 1Ô =Ð>ðñ ô ð ð ð ð ð ð øøøøðøøøð ˆ
s*   ÅE) Å)FÆ
FÆF% Æ%
G!Æ/(GÇG!)ry   ry   z InstructionTranslatorBase | Nonec          	      ó.  — |j         }|j        }|                      |¦  «        }|                      |||¦  «        }i }	|�||	d<    ||f|j         ||t	          |¦  «        dœ|	¤Ž}
|
| j        t          |¦  «        <   | j                             |¦  «         |
S )aM  
        Creates a UserDefinedObjectVariable (or its subclass) variable tracker
        and mark it for attribute mutation tracking.

        Also records the variable trackers to call __new__ method on
        reconstruction. Roughly, the reconstruction looks like this
            base_cls_vt.__new__(user_cls, *init_args)
        Nry   )r  r5  r7  r´   )	r¿   rm   r4  rK  r$   rH   ro   rK   r‡   )r\   r5  r6  r7  ry   r  r  r  r  Úkwargsrþ   s              r=   Útrack_new_user_defined_objectz)SideEffects.track_new_user_defined_object  s½   € ð  ”]ˆ
Ø”<ˆØ×,Ò,¨XÑ6Ô6ˆØ×$Ò$ [°&¸)ÑDÔDˆà!#ˆØˆ>ØˆF�4‰LØ�<Øð
à”}Ø#ØÝ.¨zÑ:Ô:ð
ð 
ð ð
ð 
ˆð (0ˆÔ�B˜s™GœGÑ$ØŒ×Ò˜cÑ"Ô"Ð"Øˆr?   c                 óÆ   — t          ¦   «         }t          j        t          ¦   «         ¬¦  «        }|| j        t          |¦  «        <   | j                             |¦  «         |S )N©r´   )rï   r   rÜ   r$   rH   ro   rK   r‡   )r\   r  rþ   s      r=   Útrack_cell_newzSideEffects.track_cell_new2  s]   € õ ‰hŒhˆÝÔ)Ý.Ñ0Ô0ð
ñ 
ô 
ˆð (0ˆÔ�B˜s™GœGÑ$ØŒ×Ò˜cÑ"Ô"Ð"Øˆr?   r¿   ÚcellÚcontentsc                 ó¶   — t          j        |€d nt          ¦   «         ||¬¦  «        }|| j        t	          |¦  «        <   | j                             |¦  «         |S )N)r´   rá   r¿   )r   rÜ   r#   rH   ro   rK   r‡   )r\   r¿   rR  rS  rþ   s        r=   Útrack_cell_existingzSideEffects.track_cell_existing=  se   € õ Ô)ð #) .˜$˜$Õ6OÑ6QÔ6QØ"*Øð
ñ 
ô 
ˆð )1ˆÔ�B˜t™HœHÑ%ØŒ×Ò˜dÑ#Ô#Ð#Øˆr?   c                 ó¬   — t          j        t          ¦   «         |¬¦  «        }|| j        t	          |¦  «        <   | j                             |¦  «         |S )N)r´   r¿   )r   ÚNewGlobalVariabler#   rH   ro   rK   r‡   )r\   r¿   rk   rþ   s       r=   Útrack_global_existingz!SideEffects.track_global_existingK  sU   € ÝÔ.Ý3Ñ5Ô5Øð
ñ 
ô 
ˆð )1ˆÔ�B˜t™HœHÑ%ØŒ×Ò˜dÑ#Ô#Ð#Øˆr?   ÚctxÚargsc                 ó°   — t          |t          j        ¦  «        st          dt	          |¦  «        › �¦  «        ‚| j                             ||f¦  «         d S )Nz.Expected AutogradFunctionContextVariable, got )r�   r   r	   rq   r5   rN   r‡   )r\   rY  rZ  s      r=   Útrack_save_for_backwardz#SideEffects.track_save_for_backwardT  s_   € õ ˜#�yÔHÑIÔIð 	Ý ØLÅÀcÁÄÐLÐLñô ð ð 	Ô×%Ò% s¨D kÑ2Ô2Ð2Ð2Ð2r?   c                 óÜ   — |j         D ]c}t          |¦  «        }|j        |         }|| j        vr<t          |t          j        t          j        f¦  «        r|                      ||¦  «         Œdd S r4   )rK   ro   rH   r�   r   ÚTensorVariableÚSymNodeVariabler  )r\   r�   Ú
other_itemÚother_idÚother_variables        r=   Ú-track_runahead_tensor_and_symvar_side_effectsz9SideEffects.track_runahead_tensor_and_symvar_side_effects]  s�   € ð  œ/ð 	Gð 	GˆJÝ˜*‘~”~ˆHØ"Ô1°(Ô;ˆNØ˜tÔ2Ð2Ð2µzØ¥Ô!9½9Ô;TÐ Uñ8ô 8Ð2ð ×*Ò*¨:°~ÑFÔFÐFøð	Gð 	Gr?   r,   c                 óú  ‡ ‡‡‡‡— t          ¦   «         Št          ¦   «         Šdt          dd fˆˆ ˆˆfd„Šdt          dt          fˆfd„Šd„ ‰ j                             ¦   «         D ¦   «         }g }|}|�a|                     |j        |j        g¦  «         |j        �0|j	        €t          d¦  «        ‚|                     |j	        ¦  «         |j        }|­at          j        ‰|||j        j        ‰ j        gz   ¦  «         ‹ˆfd„‰ j                             ¦   «         D ¦   «         ‰ _        ˆfd„‰ j                             ¦   «         D ¦   «         ‰ _        ˆfd	„‰ j                             ¦   «         D ¦   «         ‰ _        d S )
Nr^   r2   c                 óò   •— | ‰v rd S ‰                      | ¦  «         t          | j        t          ¦  «        r‰                      | ¦  «         | ‰j        v r"t          j        ‰‰j        |          ¦  «         d S d S r4   )r`   r�   r´   r$   rI   r)   Úvisit)r^   Úlive_new_objectsr\   rf  Úvisiteds    €€€€r=   rf  z0SideEffects.prune_dead_object_new.<locals>.visitp  s’   ø€ Ø�gˆ~ˆ~Ø�Ø�KŠK˜ÑÔÐå˜#Ô+Õ-AÑBÔBð *Ø ×$Ò$ SÑ)Ô)Ð)ð �dÔ/Ð/Ð/ÝÔ%ØØÔ-¨cÔ2ñô ð ð ð ð 0Ð/r?   c                 óD   •— t          | j        t          ¦  «        r| ‰v S dS ©NT©r�   r´   r$   )r^   rg  s    €r=   Úis_livez2SideEffects.prune_dead_object_new.<locals>.is_live€  s*   ø€ Ý˜#Ô+Õ-AÑBÔBð /ØÐ.Ð.Ð.Ø�4r?   c                 óF   — g | ]}t          |j        t          ¦  «        °|‘ŒS rš   rk  )rž   r^   s     r=   r;  z5SideEffects.prune_dead_object_new.<locals>.<listcomp>…  s<   € ð 
ð 
ð 
àÝ˜cÔ/Õ1EÑFÔFð
Øð
ð 
ð 
r?   z4post_prune_cell_and_freevars is None for non-root txc                 ó2   •— i | ]\  }} ‰|¦  «        ¯||“ŒS rš   rš   ©rž   r;   r<   rl  s      €r=   rŸ   z5SideEffects.prune_dead_object_new.<locals>.<dictcomp>²  s<   ø€ ð 
ð 
ð 
Ù�Q˜¸G¸GÀA¹J¼Jð
Øˆqð
ð 
ð 
r?   c                 ó2   •— i | ]\  }} ‰|¦  «        ¯||“ŒS rš   rš   ro  s      €r=   rŸ   z5SideEffects.prune_dead_object_new.<locals>.<dictcomp>µ  s<   ø€ ð %
ð %
ð %
Ù�Q˜À'À'È!Á*Ä*ð%
Øˆqð%
ð %
ð %
r?   c                 ó2   •— i | ]\  }} ‰|¦  «        ¯||“ŒS rš   rš   ro  s      €r=   rŸ   z5SideEffects.prune_dead_object_new.<locals>.<dictcomp>¸  s<   ø€ ð $
ð $
ð $
Ù�Q˜ÀÀÈÁÄð$
Øˆqð$
ð $
ð $
r?   )rX   r)   r¨   rH   ÚvaluesrD   ÚstackÚsymbolic_localsÚparentÚpost_prune_cell_and_freevarsrq   r‡   rf  r©   Úbackward_staterO   r8   rI   rJ   )	r\   ry   Úpre_existing_varsÚinit_live_varsÚcur_txrl  rg  rf  rh  s	   `    @@@@r=   Úprune_dead_object_newz!SideEffects.prune_dead_object_newk  s   øøøøø€ å(+©¬ˆÝ14±´Ðð	•ð 	¨4ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	�ð 	­Tð 	ð 	ð 	ð 	ð 	ð 	ð

ð 
àÔ*×1Ò1Ñ3Ô3ð
ñ 
ô 
Ðð ˆà35ˆØÐ Ø×!Ò! 6¤<°Ô1GÐ"HÑIÔIÐIØŒ}Ð(ð Ô6Ð>Ý(ØNñô ð ð ×%Ò% fÔ&IÑJÔJÐJØ”]ˆFð Ð õ 	ÔØàà!Ø”	Ô(ØÔ!ðññ		
ô 		
ð 		
ð ð
ð 
ð 
ð 
Ø!Ô0×6Ò6Ñ8Ô8ð
ñ 
ô 
ˆÔð%
ð %
ð %
ð %
Ø!Ô6×<Ò<Ñ>Ô>ð%
ñ %
ô %
ˆÔ!ð$
ð $
ð $
ð $
Ø!Ô5×;Ò;Ñ=Ô=ð$
ñ $
ô $
ˆÔ Ð Ð r?   c                 ó`  — || j         v rd S |                      |¦  «         |                      |¦  «         t          |j        t
          ¦  «        rd|j        _        |j        �| j         	                    |j        ¦  «         |j        r#t          |t          j        ¦  «        rd| _        d S d S d S rj  )rY   r»   rŒ   r�   r´   r'   rý   r¿   rZ   r`   r   ÚConstDictVariablerV   ra   s     r=   ÚmutationzSideEffects.mutation¼  s¿   € Ø�$Ô9Ð9Ð9ØˆFà×&Ò& sÑ+Ô+Ð+à× Ò  Ñ%Ô%Ð%å�cÔ'Õ)>Ñ?Ô?ð 	1Ø,0ˆCÔÔ)ØŒ:Ð!ØÔ ×$Ò$ S¤ZÑ0Ô0Ð0ØŒ:ð 	4�* S­)Ô*EÑFÔFð 	4Ø/3ˆDÔ,Ð,Ð,ð	4ð 	4ð 	4ð 	4r?   c                 ó   — | j         S r4   )rV   ©r\   s    r=   Úhas_existing_dict_mutationz&SideEffects.has_existing_dict_mutationË  s   € ØÔ/Ð/r?   c                 óN   ‡ — ˆ fd„‰ j                              ¦   «         D ¦   «         S )Nc                 ó>   •— g | ]}‰                      |¦  «        ¯|‘ŒS rš   )rý   )rž   r^   r\   s     €r=   r;  z2SideEffects._get_modified_vars.<locals>.<listcomp>Ï  s-   ø€ ÐUÐUÐU˜¸t×?OÒ?OÐPSÑ?TÔ?TÐU�ÐUÐUÐUr?   )rH   rr  r€  s   `r=   Ú_get_modified_varszSideEffects._get_modified_varsÎ  s,   ø€ ØUÐUÐUÐU˜tÔ2×9Ò9Ñ;Ô;ÐUÑUÔUÐUr?   Úcgc           	      óB	  ‡‡— |                       ¦   «         D �]Št          ‰j        t          ¦  «        s‰j        €t          d‰› d�¦  «        ‚Œ8t          ‰t          j        t          j        f¦  «        r|  	                    ‰¦  «        sŒtt          ‰t          j
        ¦  «        rš‰j        €q‰                     ˆfd„¦  «         ‰                     t          dd¦  «        ¦  «         ‰                     ‰¦  «         t!          ‰j        ‰         ¦  «        ‰_        �Œ‰j        €t%          ‰j        ¦  «        ‰_        �Œ(‰                     ¦   «         rvt          ‰t          j        j        ¦  «        rU ‰‰d¬¦  «         ‰                     ‰¦  «         ‰                     ¦   «          t!          ‰j        ‰         ¦  «        ‰_        �Œ²t          ‰t          j        ¦  «        rt1          ddd	g ¬
¦  «         �Œát          ‰t          j        ¦  «        rdˆˆfd„}‰                     |¦  «         n‰                     ˆfd„¦  «         ‰j        j        €Tt1          dd‰                     ¦   «         j        › �d‰                     ¦   «         j        › d�g t:          j        ¢¬
¦  «          ‰‰j        j        ¦  «         ‰j        D ]} ‰|¦  «         Œ‰                     t          dtA          ‰j        ¦  «        z   d¦  «        ¦  «         ‰                     ‰¦  «         t!          ‰j        ‰         ¦  «        ‰_        t          ‰t          j!        ¦  «        rÄ‰| j"        v r»| j"        ‰          #                    ¦   «         D ]›\  }}‰ $                    dd¦  «         ‰ %                    d¦  «          ‰‰j        ¦  «          ‰t          j&        |¦  «        ¦  «          ‰|¦  «         ‰                     g tO          d¦  «        ¢tQ          d¦  «        ‘¦  «         Œœ�Œ| j)        D ]z\  }} ‰|j        ¦  «         ‰ %                    d¦  «         |D ]} ‰|¦  «         Œ‰                     g tO          tA          |¦  «        ¦  «        ¢tQ          d¦  «        ‘¦  «         Œ{d S )Nz!Expected source for modified var z with non-new mutation typec                  óD   •— ‰                       t          j        d¦  «        S )NÚ	make_cell©Úload_import_fromr   Ú__name__©r…  s   €r=   ú<lambda>z3SideEffects.codegen_save_tempvars.<locals>.<lambda>õ  ó   ø€  × 3Ò 3µE´NÀKÑ PÔ P€ r?   r   F©Úallow_cachez<AutogradFunctionContextVariable escaped Dynamo-traced regionrÐ   zAWe cannot reconstruct a torch.autograd.Function's context object.r}   r2   c                  ó¦   •— ‰j         €t          d¦  «        ‚ ‰ ‰j         ¦  «         ‰                      ‰                      d¦  «        g¦  «         d S )Nz&base_cls_vt is None in load_new_methodrC  )r5  rq   Úextend_outputÚcreate_load_attr©r…  r^   s   €€r=   Úload_new_methodz:SideEffects.codegen_save_tempvars.<locals>.load_new_method  s_   ø€ àœ?Ð2Ý"0Ø Hñ#ô #ð ð ˜˜3œ?Ñ+Ô+Ð+Ø×(Ò(¨"×*=Ò*=¸iÑ*HÔ*HÐ)IÑJÔJÐJÐJÐJr?   c                  óD   •— ‰                       t          j        d¦  «        S )Nr!   r‰  rŒ  s   €r=   r�  z3SideEffects.codegen_save_tempvars.<locals>.<lambda>*  s   ø€  × 3Ò 3µE´NÀLÑ QÔ Q€ r?   z/Reconstruct user defined class without a sourcezClass: z"Cannot reconstruct an instance of a=   that escapes the compiled region. This happens when the class is defined dynamically (e.g., inside the compiled function) and the class object itself has no source that can be reconstructed. To fix this, move the class definition outside the compiled function or prevent the object from escaping the compiled region.r   Úbuiltinsrï   Ú__setattr__é   ÚPOP_TOPrN   ©r2   N)*r„  r�   r´   r$   r¿   rq   r   ÚNamedTupleVariableÚStructSequenceVariabler÷   rÜ   Ú
local_nameÚadd_push_nullr’  r   Ú	add_cacher   Útempvarsr   Ú	is_tensorÚtorch_functionÚTensorWithTFOverrideVariableÚ	clear_tosr	   r   rû   r  Úpython_typer‹  r   rG  r7  Úlenr*   rI   r8   rŠ  Úload_methodÚConstantVariabler   r   rN   )	r\   r…  r•  r:  rl   rm   rY  rZ  r^   s	    `      @r=   Úcodegen_save_tempvarsz!SideEffects.codegen_save_tempvarsÑ  s.  øø€ ð ×*Ò*Ñ,Ô,ð @	ñ @	ˆCÝ˜cÔ/Õ1EÑFÔFð Ø”:Ð%Ý(ð5¸Cð 5ð 5ð 5ñô ð ð õ ØÝÔ-­yÔ/OÐPñô ð ð ×/Ò/°Ñ4Ô4ðð å˜#�yÔ5Ñ6Ô6ð jð
 ”>Ð)Ø×$Ò$ØPÐPÐPÐPñô ð ð ×$Ò$Õ%9¸!¸UÑ%CÔ%CÑDÔDÐDØ—L’L Ñ%Ô%Ð%Ý!0°´¸SÔ1AÑ!BÔ!B�C”J‘JØ”ZÐ'Ý!0°´Ñ!@Ô!@�C”JùØ—’‘”ð \õ Ø�Ô1ÔNñô ð 	Cð �B�s¨Ð.Ñ.Ô.Ð.Ø—L’L Ñ%Ô%Ð%ð —L’L‘N”N�NÝ!0°´¸SÔ1AÑ!BÔ!B�C”JùÝ˜C¥Ô!JÑKÔKð FÝØZØØ cØð	ñ ô ð ñ õ ˜c¥9Ô#FÑGÔGð ðKð Kð Kð Kð Kð Kð Kð ×$Ò$ _Ñ5Ô5Ð5Ð5à×$Ò$ØQÐQÐQÐQñô ð ð Ô$Ô/Ð7Ý!Ø QØ F¨#¯/ª/Ñ*;Ô*;Ô*DÐ FÐ FðWÀÇÂÑARÔARÔA[ð Wð Wð Wð ?Õ 1Ô =Ð>ðñ ô ð ð ��3Ô$Ô/Ñ0Ô0Ð0ð œ=ð ð �CØ�B�s‘G”G�G�Gð × Ò Õ!5°a½#¸c¼mÑ:LÔ:LÑ6LÈeÑ!TÔ!TÑUÔUÐUà—’˜SÑ!Ô!Ð!Ý,¨R¬[¸Ô-=Ñ>Ô>�”
õ ˜s¥IÔ$EÑFÔFðà˜tÔ8Ð8Ð8à'+Ô'@ÀÔ'E×'KÒ'KÑ'MÔ'Mð ð ™˜˜eØ×+Ò+¨J¸ÑAÔAÐAØŸš }Ñ5Ô5Ð5Ø˜˜3œ:™œ˜Ø˜�9Ô5°dÑ;Ô;Ñ<Ô<Ð<Ø˜˜5™	œ	˜	Ø×(Ò(ØSÕ0°Ñ3Ô3ÐSÕ5GÈ	Ñ5RÔ5RÐSñô ð ð ùð Ô/ð 
	ð 
	‰IˆC�ØˆBˆsŒz‰NŒNˆNØ�NŠNÐ.Ñ/Ô/Ð/Øð ð �Ø��3‘”��Ø×ÒðÝ'­¨D©	¬	Ñ2Ô2ðå& yÑ1Ô1ðñô ð ð ð
	ð 
	r?   ÚtensorÚhookÚhandlec                 óÒ  — |                      ¦   «         s t          dt          |¦  «        › d�¦  «        ‚t          |t          j        ¦  «        st          dt          |¦  «        › �¦  «        ‚t          |t          j        ¦  «        st          dt          |¦  «        › �¦  «        ‚|                     ¦   «         st          d¦  «        ‚t          t          j
        |¦  «        st          d|› d�¦  «        ‚t          | j                             ¦   «         ¦  «        }|| j        v r|dz  }|| j        v °||||f| j        |<   |j        rt          d	|j        › �¦  «        ‚||_        d S )
NzExpected tensor variable, got z in register_hookz'Expected VariableTracker for hook, got z&Expected RemovableHandleVariable, got z'handle must be mutable in register_hookztorch.Tensor has no attribute 'ú'r   z handle.idx should be falsy, got )r¢  rq   r5   r�   r   r)   ÚRemovableHandleVariableÚ
is_mutabler  rˆ   ÚTensorr§  rO   r’   Úidx)r\   r«  r¬  r­  rl   r³  s         r=   Úregister_hookzSideEffects.register_hookf  s‰  € ð ×ÒÑ!Ô!ð 	Ý ØPµ°f±´ÐPÐPÐPñô ð õ ˜$¥	Ô 9Ñ:Ô:ð 	YÝ Ð!WÍ4ÐPTÉ:Ì:Ð!WÐ!WÑXÔXÐXÝ˜&¥)Ô"CÑDÔDð 	Ý ØG½¸f¹¼ÐGÐGñô ð ð × Ò Ñ"Ô"ð 	LÝ Ð!JÑKÔKÐKÝ•u”| TÑ*Ô*ð 	LÝ Ð!JÀ4Ð!JÐ!JÐ!JÑKÔKÐKÝ�$Ô#×(Ò(Ñ*Ô*Ñ+Ô+ˆà�TÔ&Ð&Ð&Ø�1‰HˆCð �TÔ&Ð&Ð&à"(¨$°¸Ð!=ˆÔ˜#ÑØŒ:ð 	RÝ Ð!PÀFÄJÐ!PÐ!PÑQÔQÐQØˆŒ
ˆ
ˆ
r?   r³  c                 ó   — | j         |= d S r4   )rO   )r\   r³  s     r=   Úremove_hookzSideEffects.remove_hook„  s   € ØÔ˜cÐ"Ð"Ð"r?   c                 ó:  ‡‡‡— | j                              ¦   «         D ]}\  Š}}Š‰j        st          d¦  «        ‚dˆˆˆfd„}‰                     |¦  «          ‰|¦  «         ‰                     t          dd¦  «        ¦  «         ‰                     |¦  «         Œ~d S )Nz4Hooks on non input tensors NYI - should not get herer2   c                  óp   •—  ‰ ‰¦  «         ‰                       ‰                      ‰¦  «        g¦  «         d S r4   )r’  r“  )r…  rl   r«  s   €€€r=   Úgen_fnz)SideEffects.codegen_hooks.<locals>.gen_fn´  s;   ø€ Ø��6‘
”
�
Ø× Ò  "×"5Ò"5°dÑ";Ô";Ð!<Ñ=Ô=Ð=Ð=Ð=r?   r   Fr›  )rO   rr  r¿   rq   rŸ  r’  r   r   )r\   r…  r¬  r­  r¹  rl   r«  s    `   @@r=   Úcodegen_hookszSideEffects.codegen_hooks‡  sâ   øøø€ ð Ô×%Ò%Ñ'Ô'ð6	!ð 6	!ñ 
ØØØØðF ”=ð Ý$ØJñô ð ð>ð >ð >ð >ð >ð >ð >ð >ð ×Ò˜VÑ$Ô$Ð$ØˆBˆt‰HŒHˆHØ×ÒÕ1°!°UÑ;Ô;Ñ<Ô<Ð<ð �LŠL˜Ñ Ô Ð Ð ðm6	!ð 6	!r?   úvariables.ListVariablec                 óp   — ddl m} | j        €#t          j        g  |¦   «         ¬¦  «        | _        | j        S )Nr   )r(   rP  )Úvariables.baser(   rW   r   r-   )r\   r(   s     r=   Úget_ca_final_callbacks_varz&SideEffects.get_ca_final_callbacks_varÀ  sQ   € Ø4Ð4Ð4Ð4Ð4Ð4àÔ&Ð.Ý*3Ô*@ØÐ"2Ð"2Ñ"4Ô"4ð+ñ +ô +ˆDÔ'ð Ô*Ð*r?   c                 ó„  — t           j        dk    rt          d¦  «        ‚| j                             |g ¦  «        }d|                     ¦   «         › �}d}|j        �|t          |j        t          ¦  «        rd}n_t          |t          j
        ¦  «        r|j        �d|j        › d�}n2t          |t          j        j        ¦  «        rd	}nd
|j        j        › d�}|ràt          ¦   «         }g }t!          t#          ¦   «         ¦  «        }|D ]€}t%          d„ |D ¦   «         ¦  «        }	|	|vra|                     |	¦  «         t!          ||z   ¦  «        }
|                     d                     t-          j        |
¦  «        ¦  «        ¦  «         Œ�d                     |¦  «        }|› |› dt1          j        |d¦  «        › �}n|› |› d�}|S )z1Format a side effect log message with user stack.r…   z[_format_side_effect_message should not be called when side_effect_replay_policy is 'silent'zMutating object of type z (no source)Nz* (source: created in torch.compile region)z
 (source: ú)z- (source: torch function mode stack mutation)z (source name: c              3   óª   K  — | ]N}|j         |j        |j        |j        t	          |d d¦  «        t	          |dd¦  «        t	          |dd¦  «        fV — ŒOdS )ÚcolnoNÚ
end_linenoÚ	end_colno)ÚfilenameÚlinenorl   ÚlinerÁ   )rž   Úfs     r=   ú	<genexpr>z:SideEffects._format_side_effect_message.<locals>.<genexpr>ê  s{   è è € ð $ð $ð ð œ
ØœØœØœÝ  7¨DÑ1Ô1Ý  <°Ñ6Ô6Ý  ;°Ñ5Ô5ðð$ð $ð $ð $ð $ð $r?   rÐ   z
********

z

z    z+ (unable to find user stacks for mutations))r   r†   rq   rL   rÊ   Úpython_type_namer¿   r�   r   r   rÜ   rž  r£  ÚTorchFunctionModeStackVariablerl   rX   r   r   rò   r`   r‡   ÚjoinÚ	tracebackÚformat_listÚtextwrapÚindent)r\   r^   Ú	locationsÚdescriptionÚsource_infoÚseenÚunique_formatted_stacksÚstack_above_dynamors  Ústack_tupleÚstack_augmentedÚformatted_linesÚlog_strs                r=   Ú_format_side_effect_messagez'SideEffects._format_side_effect_messageÊ  s  € åÔ+¨xÒ7Ð7Ý ð=ñô ð ð Ô-×1Ò1°#°rÑ:Ô:ˆ	ØI°×1EÒ1EÑ1GÔ1GÐIÐIˆØ$ˆØŒ:Ð!Ý˜#œ*¥oÑ6Ô6ð 
CØJ��Ý˜C¥Ô!7Ñ8Ô8ð C¸S¼^Ð=WØ<¨3¬>Ð<Ð<Ð<��ÝØ•YÔ-ÔLñô ð Cð N��ð C°´
´ÐBÐBÐB�àð  	å‘5”5ˆDØ13Ð#Ý!7Õ8NÑ8PÔ8PÑ!QÔ!QÐØ"ð ð �õ $ð $ð $ð #ð$ñ $ô $ñ ô �ð  dÐ*Ð*Ø—H’H˜[Ñ)Ô)Ð)Ý&<Ð=OÐRWÑ=WÑ&XÔ&X�OØ+×2Ò2ØŸš¥	Ô 5°oÑ FÔ FÑGÔGñô ð øð $4×#8Ò#8Ð9PÑ#QÔ#QˆOØ$Ða kÐaÐaµx´ÀÐX^Ñ7_Ô7_ÐaÐaˆGˆGð ÐX ÐXÐXÐXð ð ˆr?   Úside_effect_messagesc                 óš   ‡— ‰sd S ‰D ]}t                                |¦  «         Œt          j                             dd„ ˆfd„¬¦  «         d S )NÚartifactc                  ó   — dddœS )NÚdynamo_side_effectsÚstring)rl   Úencodingrš   rš   r?   r=   r�  z8SideEffects._emit_side_effect_messages.<locals>.<lambda>  s   € Ø-Ø$ð!ð !€ r?   c                  ó.   •— d                      ‰ ¦  «        S )Nz,

========================================

)rÌ  )rÜ  s   €r=   r�  z8SideEffects._emit_side_effect_messages.<locals>.<lambda>  s   ø€ ÐQ×VÒVØ$ñ ô  € r?   )Úmetadata_fnÚ
payload_fn)Úside_effects_logÚdebugrˆ   Ú_loggingÚtrace_structured)r\   rÜ  Úmsgs    ` r=   Ú_emit_side_effect_messagesz&SideEffects._emit_side_effect_messages  s€   ø€ Ø#ð 	ØˆFà'ð 	(ð 	(ˆCÝ×"Ò" 3Ñ'Ô'Ð'Ð'åŒ×'Ò'Øðð ðð ð ð ð 	(ñ 		
ô 		
ð 		
ð 		
ð 		
r?   Úlog_side_effectsc           	      ó0  ‡ ‡‡‡‡— g Šdt           dd fˆˆ ˆfd„}g }‰                      ¦   «         D �]!Št          j        st	          ‰j        t          ¦  «        sŒ*t	          ‰t          j        ¦  «        r™ ‰‰d¬¦  «          ‰‰j        ¦  «         ‰ 	                    ‰ 
                    d ¦  «        ‰ 
                    d ¦  «        t          dd¬¦  «        g¦  «         |                     t          d	¦  «        g¦  «          |‰¦  «         ŒÝt	          ‰t          j        j        ¦  «        r÷‰j                             ¦   «         st#          d
dddg¬¦  «          ‰‰j        ¦  «         ‰                     d¦  «          ‰‰d¬¦  «         |                     g t'          d¦  «        ¢t          d¦  «        ‘¦  «          ‰‰j        ¦  «         ‰                     d¦  «         |                     g t'          d¦  «        ¢t          d¦  «        ‘¦  «          |‰¦  «         �Œót	          ‰t          j        t          j        f¦  «        rì‰                     ¦   «         rÖ ‰‰j        ¦  «         ‰                     d¦  «          ‰‰d¬¦  «         ‰j        r% ‰‰j        ¦  «         ‰                     d¦  «         |                     g t'          d¦  «        ¢t          d¦  «        ‘¦  «         ‰j        r3|                     g t'          d¦  «        ¢t          d¦  «        ‘¦  «          |‰¦  «         �Œt	          ‰t          j        j        ¦  «        r­‰                     ˆfd„¦  «         ‰                     ‰j        ¦  «         ‰                     t          dt=          ‰j        ¦  «        ¬¦  «        ¦  «         ‰                     dd¦  «         ‰                     t          d¦  «        ¦  «          |‰¦  «         �ŒÑt	          ‰t          j         ¦  «        rk‰j!        �d‰‰ j"        v rY‰  #                    ‰¦  «        } ‰|¦  «         |                     ‰ $                    ‰j!        ¦  «        g¦  «          |‰¦  «         �ŒV‰  %                    ‰¦  «        �rÏt	          ‰j&        tN          ¦  «        rt	          ‰t          j(        ¦  «        r�Œ¢t	          ‰t          j)        ¦  «        �rò‰  *                    ‰j+        ¦  «        �r×‰j+                             ¦   «         �r½i }tX          j-        j.        D ]#}‰j/        j0         1                    ¦   «         ||<   Œ$	 te          ‰j3        ¦  «        j4         5                    tl          j7        ¦  «        }nA# tp          $ r4 te          ‰j3        ¦  «        j4         5                    tr          ¦  «        }Y nw xY w‰ 	                    t          d|¬¦  «        t          d|d         ¬¦  «        g¦  «          ‰‰j        ¦  «         ‰ 	                    t          d|d         ¬¦  «        g¦  «         d‰j+        _         ‰‰j+        d¬¦  «         ‰ 	                    t          d|d         ¬¦  «        g¦  «         tu          tX          |¬¦  «        }	|                     g |	¢t          d¦  «        ‘¦  «          |‰j+        ¦  «         �n0t	          ‰t          j;        ¦  «        �r‰  *                    ‰j+        ¦  «        rûi }tx          j-        j.        D ]#}‰j/        j0         1                    ¦   «         ||<   Œ$ ‰‰j        ¦  «         ‰ 	                    t          d|d         ¬¦  «        g¦  «          ‰‰j+        d¬¦  «         ‰ 	                    t          d|d          ¬¦  «        g¦  «         tu          tx          |¬¦  «        }
|                     g |
¢t          d¦  «        ‘¦  «          |‰j+        ¦  «         d}t{          ‰ j"         >                    ‰i ¦  «         ?                    ¦   «         ¦  «        D �]\  }}‰  @                    ‰|¦  «        }t	          ‰t          jA        ¦  «        r�‰j/        j0         B                    |¦  «          ‰|¦  «         t	          ‰j        t†          ¦  «        s$t‰          d!te          ‰j        ¦  «        › �¦  «        ‚|                     t          d"|¬¦  «        g¦  «         d}ŒÆt	          |t          jE        ¦  «        �rZt	          ‰t          jF        ¦  «        r¯|tŽ          jH        u r¡t“          t“          ‰d#d ¦  «        d$i ¦  «        }||v r{‰                     ˆfd%„¦  «          ‰‰j        ¦  «          ‰t          jJ        |¦  «        ¦  «         |                     g t—          dd¦  «        ¢t          d¦  «        ‘¦  «         d}�Œªt	          ‰j&        t˜          ¦  «        rut›          t“          ‰d#d ¦  «        |¦  «        rV‰j/        j0         B                    |¦  «          ‰‰j        ¦  «         |                     t          d&|¬¦  «        g¦  «         d}�Œ;t	          ‰t          jF        ¦  «        r–|tŽ          jH        u rˆ‰                     ˆfd'„¦  «          ‰‰j        ¦  «          ‰t          jJ        |¦  «        ¦  «          ‰|¦  «         |                     g t—          d(d¦  «        ¢t          d¦  «        ‘¦  «         d}�Œët	          ‰t          jF        ¦  «        r®‰ N                    ¦   «         rš‰ O                    d)d*¦  «         ‰                     d+¦  «          ‰‰j        ¦  «          ‰t          jJ        |¦  «        ¦  «          ‰|¦  «         |                     g t'          d(¦  «        ¢t          d¦  «        ‘¦  «         d}�Œ³‰j/        j0         B                    |¦  «          ‰|¦  «          ‰‰¦  «         |                     t          d,|¬¦  «        g¦  «         d}�Œ|r |‰¦  «         �Œ;t	          ‰t          jP        ¦  «        rvt£          ‰j5        ¦  «        D ]T}‰                     ˆfd-„¦  «          ‰‰j        ¦  «         ‰                     dd¦  «         ‰ R                    ¦   «          ŒU |‰¦  «         �ŒËt	          ‰t          jS        ¦  «        rvt£          ‰jT        ¦  «        D ]T}‰                     ˆfd.„¦  «          ‰‰j        ¦  «         ‰                     dd¦  «         ‰ R                    ¦   «          ŒU |‰¦  «         �Œ[t	          ‰t          jU        ¦  «        r’d0ˆˆfd/„}‰                     |¦  «          ‰‰ V                    ‰jW         X                    ¦   «         ¦  «        ¦  «         |                     g t—          dd¦  «        ¢t          d¦  «        ‘¦  «          |‰¦  «         �Œt‰          te          ‰¦  «        ¦  «        ‚t{          |¦  «        D ]}‰ 	                    |¦  «         Œ‰r‰r‰  Y                    ‰¦  «         d S d S d S )1Nr^   r2   c                 óˆ   •— t           j        dk    r.‰r.‰                     | ¦  «        }‰                     |¦  «         d S d S d S ©Nr…   )r   r†   rÛ  r‡   )r^   rê  rì  r\   rÜ  s     €€€r=   Ú_maybe_log_side_effectzBSideEffects.codegen_update_mutated.<locals>._maybe_log_side_effect  sR   ø€ ÝÔ/°8Ò;Ð;Ð@PÐ;Ø×6Ò6°sÑ;Ô;�Ø$×+Ò+¨CÑ0Ô0Ð0Ð0Ð0ð <Ð;Ð;Ð;r?   Fr�  ÚBUILD_SLICEé   )r:  ÚSTORE_SUBSCRz1Side effect on existing deque with limited maxlenrÐ   zThis is not supported.z*Don't use a deque with `maxlen` specified.r}   rD   r   rš  r7   r   Úupdatec                  óD   •— ‰                       t          j        d¦  «        S )NÚset_torch_function_mode_stackr‰  rŒ  s   €r=   r�  z4SideEffects.codegen_update_mutated.<locals>.<lambda>�  s   ø€ ˜B×/Ò/ÝœÐ(Gñô € r?   Ú
BUILD_LISTÚ
LOAD_CONST)ÚargvalÚ
STORE_FASTr1   r0   Tr/   )Úvarname_maprA   r@   z1Expected GlobalSource for NewGlobalVariable, got ÚSTORE_GLOBALrm   Ú__dict__c                  óD   •— ‰                       t          j        d¦  «        S )NÚ object_delattr_ignore_descriptorr‰  rŒ  s   €r=   r�  z4SideEffects.codegen_update_mutated.<locals>.<lambda>=  s   ø€ ¨B×,?Ò,?Ý(-¬Ø(Jñ-&ô -&€ r?   ÚDELETE_ATTRc                  óD   •— ‰                       t          j        d¦  «        S )NÚ object_setattr_ignore_descriptorr‰  rŒ  s   €r=   r�  z4SideEffects.codegen_update_mutated.<locals>.<lambda>\  s   ø€  B×$7Ò$7Ý %¤Ð0Rñ%ô %€ r?   r™  r—  rï   r˜  Ú
STORE_ATTRc                  óD   •— ‰                       t          j        d¦  «        S ©NÚ	iter_nextr‰  rŒ  s   €r=   r�  z4SideEffects.codegen_update_mutated.<locals>.<lambda>„  rŽ  r?   c                  óD   •— ‰                       t          j        d¦  «        S r  r‰  rŒ  s   €r=   r�  z4SideEffects.codegen_update_mutated.<locals>.<lambda>�  rŽ  r?   c                  óR   •—  ‰ ‰j         ¦  «         ‰                      d¦  «         d S )NÚsetstate)r¿   rÔ   r”  s   €€r=   r¹  z2SideEffects.codegen_update_mutated.<locals>.gen_fn•  s*   ø€ Ø�B�s”z‘N”N�NØ—L’L Ñ,Ô,Ð,Ð,Ð,r?   r›  )Zr)   r„  r   Úreplay_side_effectsr�   r¿   r   r   r-   r’  Úcreate_load_constr   r‡   ÚlistsÚDequeVariableÚmaxlenÚis_constant_noner   r¨  r   r}  ÚSetVariableÚhas_new_itemsÚshould_reconstruct_allr£  rË  rŸ  ÚforeachÚsymbolic_stackÚappend_outputr§  Úcall_functionrÜ   rž  rI   rä   Úcreate_store_derefrÀ   r´   r$   r*   r(  rý   Ú_base_vtr>   Ú__code__Úco_varnamesry   r©   Únew_varr5   rm   r6   Úindexr#  r&  Ú
ValueErrorrœ   r   r,  rE   ÚreversedrÊ   r8   rÌ   rW  Úupdate_co_namesr   rq   rÑ   rû   r%   rÆ   rÁ   r©  r   r#   r  Úneeds_slow_setattrrŠ  ÚListIteratorVariableÚrangeÚpop_topÚCountIteratorVariableÚadvance_countÚRandomVariableÚ
wrap_stateÚrandomÚgetstaterë  )r\   r…  rì  rð  ÚsuffixesÚcontents_varrû  rl   r1   Údict_update_instsÚlist_update_instsÚside_effect_occurredrm   r¼   Úoriginal_dictrƒ   r¹  ÚsuffixrÜ  r^   s   ```               @@r=   Úcodegen_update_mutatedz"SideEffects.codegen_update_mutated  sª  øøøøø€ ð +-Ðð	1­ð 	1¸Dð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð
 ˆØ×*Ò*Ñ,Ô,ð A	0ñ A	0ˆCåÔ-ð µjØ”
�Oñ7ô 7ð ð Ý˜#�yÔ5Ñ6Ô6ð {0à��3 EÐ*Ñ*Ô*Ð*Ø��3”:‘”�Ø× Ò à×,Ò,¨TÑ2Ô2Ø×,Ò,¨TÑ2Ô2Ý*¨=¸aÐ@Ñ@Ô@ðñô ð ð —’Õ!3°NÑ!CÔ!CÐ DÑEÔEÐEØ&Ð& sÑ+Ô+Ð+Ð+Ý˜C¥¤Ô!>Ñ?Ô?ð n0ð ”z×2Ò2Ñ4Ô4ð Ý!Ø SØ "Ø$<àHðð	ñ ô ð ð ��3”:‘”�Ø—’˜xÑ(Ô(Ð(Ø��3 EÐ*Ñ*Ô*Ð*Ø—’ðÝ+¨AÑ.Ô.ðå*¨9Ñ5Ô5ðñô ð ð ��3”:‘”�Ø—’˜wÑ'Ô'Ð'Ø—’ðÝ+¨AÑ.Ô.ðå*¨9Ñ5Ô5ðñô ð ð 'Ð& sÑ+Ô+Ð+Ñ+å˜C¥)Ô"=½yÔ?TÐ!UÑVÔVð K0ð ×$Ò$Ñ&Ô&ð 0Ø�B�s”z‘N”N�NØ—N’N 8Ñ,Ô,Ð,Ø�B�s¨Ð.Ñ.Ô.Ð.àÔ1ð 0Ø˜˜3œ:™œ˜ØŸš wÑ/Ô/Ð/à—O’OðÝ/°Ñ2Ô2ðå.¨yÑ9Ô9ðñô ð ð Ô1ð ð !ŸšðÝ!3°AÑ!6Ô!6ðå 2°9Ñ =Ô =ðñô ð ð +Ð*¨3Ñ/Ô/Ð/ùåØ•YÔ-ÔLñô ð g0ð × Ò ðð ð ð ñô ð ð —
’
˜3Ô-Ñ.Ô.Ð.Ø× Ò Ý& |½¸SÔ=OÑ9PÔ9PÐQÑQÔQñô ð ð × Ò   EÑ*Ô*Ð*Ø× Ò Õ!3°IÑ!>Ô!>Ñ?Ô?Ð?Ø&Ð& sÑ+Ô+Ð+Ñ+å˜C¥Ô!7Ñ8Ô8ð V0¸S¼^Ð=Wð ˜$Ô3Ð3Ð3Ø#'§>¢>°#Ñ#6Ô#6�LØ�B�|Ñ$Ô$Ð$Ø—O’O R×%:Ò%:¸3¼>Ñ%JÔ%JÐ$KÑLÔLÐLØ*Ð*¨3Ñ/Ô/Ð/ùà×+Ò+¨CÑ0Ô0ñ M0õ ˜cÔ/Õ1EÑFÔFð Í:Ø�Ô:ñLô Lð ñ õ ØÝ!Ô9ñô ñnð
 ×(Ò(Øœñô ñnð œ×2Ò2ñ ô ñnð #%�KÝ 4Ô =Ô Ið Cð C˜Ø,.¬E¬L×,@Ò,@Ñ,BÔ,B˜ DÑ)Ð)ðHÝ$(¨¬¡O¤OÔ$;×$AÒ$AÝ'Ô3ñ%ô %˜	˜	øõ &ð Hð Hð HÝ$(¨¬¡O¤OÔ$;×$AÒ$AÅ$Ñ$GÔ$G˜	˜	˜	ðHøøøð ×$Ò$å.¨|ÀIÐNÑNÔNÝ.Ø ,°[ÀÔ5Mðñ ô ðñô ð ð �B�s”z‘N”N�NØ×$Ò$å.Ø ,°[ÀÔ5Kðñ ô ðñô ð ð ;?�C”LÔ7Ø�B�s”|°Ð7Ñ7Ô7Ð7Ø×$Ò$å.Ø ,°[ÀÔ5Mðñ ô ðñô ð õ )?Ý,¸+ð)ñ )ô )Ð%ð —O’OðØ.ðå.¨yÑ9Ô9ðñô ð ð +Ð*Øœñô ð ñ õ  ØÝÔ5ñô ñ *ð ×&Ò&Ø”Lñô ð*ð #%�KÝ 3Ô <Ô Hð Cð C˜Ø,.¬E¬L×,@Ò,@Ñ,BÔ,B˜ DÑ)Ð)à�B�s”z‘N”N�NØ×$Ò$å.Ø ,°[ÀÔ5Kðñ ô ðñô ð ð �B�s”|°Ð7Ñ7Ô7Ð7Ø×$Ò$å.Ø ,°[ÀÔ5Mðñ ô ðñô ð õ )?Ý+¸ð)ñ )ô )Ð%ð —O’OðØ.ðå.¨yÑ9Ô9ðñô ð ð +Ð*Øœñô ð ð( (-Ð$Ý#+ØÔ-×1Ò1°#°rÑ:Ô:×@Ò@ÑBÔBñ$ô $ð \4ñ \4‘K�D˜%ð %)×$?Ò$?ÀÀTÑ$JÔ$J�MÝ! #¥yÔ'BÑCÔCð X4Øœœ×4Ò4°TÑ:Ô:Ð:Ø˜˜5™	œ	˜	Ý)¨#¬*µlÑCÔCð Ý"0ð!:Ý'+¨C¬JÑ'7Ô'7ð!:ð !:ñ#ô #ð ð !ŸšÝ/°ÀtÐLÑLÔLÐMñô ð ð 04Ð,Ð,Ý# E­9Ô+DÑEÔEñ L4å& s­IÔ,OÑPÔPð$8à -Õ1AÔ1OÐ OÐ Oå,3Ý '¨¨W°dÑ ;Ô ;¸ZÈñ-ô -˜Mð
  $ }Ð4Ð4Ø "× 0Ò 0ð%&ð %&ð %&ð %&ñ!"ô !"ð !"ð !#  3¤:¡¤ Ø " ¥9Ô#=¸dÑ#CÔ#CÑ DÔ DÐ DØ (§¢ð%&Ý)=¸aÀÑ)GÔ)Gð%&å(:¸9Ñ(EÔ(Eð%&ñ!"ô !"ð !"ð 8<Ð 4ùõ (ØÔ-Õ/Hñô ð 8å%¥g¨c°7¸DÑ&AÔ&AÀ4ÑHÔHð8ð œEœL×8Ò8¸Ñ>Ô>Ð>Ø˜B˜sœz™NœN˜NØ$ŸOšOÝ!3°MÈ$Ð!OÑ!OÔ!OÐ Pñô ð ð 48Ð0ùå" 3­	Ô(KÑLÔLð&4à)Õ-=Ô-KÐKÐKà×(Ò(ðð ð ð ñô ð ð
 ˜˜3œ:™œ˜Ø˜�9Ô5°dÑ;Ô;Ñ<Ô<Ð<Ø˜˜5™	œ	˜	Ø ŸšðÝ!5°a¸Ñ!?Ô!?ðå 2°9Ñ =Ô =ðñô ð ð 04Ð,Ñ,å" 3­	Ô(KÑLÔLð4à×2Ò2Ñ4Ô4ð4ð
 ×+Ò+¨J¸ÑAÔAÐAØŸš }Ñ5Ô5Ð5Ø˜˜3œ:™œ˜Ø˜�9Ô5°dÑ;Ô;Ñ<Ô<Ð<Ø˜˜5™	œ	˜	Ø ŸšØSÕ0°Ñ3Ô3ÐSÕ5GÈ	Ñ5RÔ5RÐSñô ð ð 04Ð,Ñ,àœœ×4Ò4°TÑ:Ô:Ð:Ø˜˜5™	œ	˜	Ø˜˜3™œ˜Ø ŸšÕ);¸LÐQUÐ)VÑ)VÔ)VÐ(WÑXÔXÐXØ/3Ð,Ñ,à'ð 0Ø*Ð*¨3Ñ/Ô/Ð/ùÝ˜C¥Ô!?Ñ@Ô@ð #0Ý˜sœyÑ)Ô)ð !ð !�AØ×$Ò$ØPÐPÐPÐPñô ð ð �B�s”z‘N”N�NØ×$Ò$ Q¨Ñ.Ô.Ð.Ø—J’J‘L”L�L�LØ&Ð& sÑ+Ô+Ð+Ñ+Ý˜C¥Ô!@ÑAÔAð 0Ý˜sÔ0Ñ1Ô1ð !ð !�AØ×$Ò$ØPÐPÐPÐPñô ð ð �B�s”z‘N”N�NØ×$Ò$ Q¨Ñ.Ô.Ð.Ø—J’J‘L”L�L�LØ&Ð& sÑ+Ô+Ð+Ñ+Ý˜C¥Ô!9Ñ:Ô:ð 0ð-ð -ð -ð -ð -ð -ð -ð × Ò  Ñ(Ô(Ð(Ø��3—>’> #¤*×"5Ò"5Ñ"7Ô"7Ñ8Ô8Ñ9Ô9Ð9à—’ðÝ-¨a°Ñ7Ô7ðå*¨9Ñ5Ô5ðñô ð ð 'Ð& sÑ+Ô+Ð+Ñ+å$¥T¨#¡Y¤YÑ/Ô/Ð/õ ˜xÑ(Ô(ð 	%ð 	%ˆFØ×Ò˜VÑ$Ô$Ð$Ð$ð ð 	BÐ 4ð 	BØ×+Ò+Ð,@ÑAÔAÐAÐAÐAð	Bð 	Bð 	Bð 	Bs   Õ6VÖ;W×Wc                 ó  — t           j        dk    rd S t                               t          j        ¦  «        sd S |                      ¦   «         D ]1}|                      |¦  «        }t                               |¦  «         Œ2d S rï  )	r   r†   ræ  ÚisEnabledForÚloggingÚDEBUGr„  rÛ  rç  )r\   r^   rê  s      r=   Úlog_side_effects_summaryz$SideEffects.log_side_effects_summary®  s�   € ÝÔ+¨xÒ7Ð7ØˆFÝ×,Ò,­W¬]Ñ;Ô;ð 	ØˆFØ×*Ò*Ñ,Ô,ð 	(ð 	(ˆCØ×2Ò2°3Ñ7Ô7ˆCÝ×"Ò" 3Ñ'Ô'Ð'Ð'ð	(ð 	(r?   c                 ó    — t          t          | j        | j                             ¦   «         ¦  «        ¦  «        p| j        p| j        p| j         S r4   )ÚanyÚmaprý   rH   rr  rO   rN   r€  s    r=   Úis_emptyzSideEffects.is_empty·  sV   € å•�DÔ$ dÔ&9×&@Ò&@Ñ&BÔ&BÑCÔCÑDÔDð !ØÔ ð!àÔ%ð!ð Ô ð	
ð 	
r?   c                 ój   — | j                              ¦   «          | j                             ¦   «          d S r4   )rK   r7   rH   r€  s    r=   r7   zSideEffects.clear¿  s1   € ØŒ×ÒÑÔÐØÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#r?   )NNNNNNNr›  )r2   rG   )FFr4   )r�   rG   r2   N)ry   r,   r2   N)r2   r»  )F)Vr‹  Ú
__module__Ú__qualname__Ú__doc__rœ   rñ   r)   Ú__annotations__râ   r%   rC   r   rÍ  ÚStackSummaryrò   r	   rR   rb   re   Ú
contextlibÚcontextmanagerr   rj   r¨   r{   rh   rŒ   rï   r�   r—   r¡   r¤   r¦   r­   r°   r²   r·   r»   rË   rÄ   rÇ   rÌ   rÔ   rÝ   rä   rç   ré   Ústaticmethodr5   rô   rÀ   r÷   rà   rý   r'   r  Útrack_mutabler  r   r  r4  rK  rN  rQ  r   rU  rX  r\  rc  r{  r~  r�  r„  r   rª  r´  r¶  rº  r¾  rÛ  rë  r1  r6  r:  r7   Ú__classcell__)r]   s   @r=   rG   rG   ]   sX  ø€ € € € € € ðð ð& ˜˜oÐ-Ô.Ð.Ð.Ñ.Ø˜°°S¸/Ð5IÔ0JÐJÔKÐKÐKÑKØ˜o¨t°CÐ9IÐ4IÔ/JÐJÔKÐKÐKÑKØ�CŒyÐÐÑà˜°°YÔ5KÔ0LÐLÔMÐMÐMÑMð
 =AàààØ&*ð ð ð19Rð 9Rà#ð9Rð ˜S /Ð1Ô2°TÑ9ð9Rð # ?°D¸¸oÐ9MÔ4NÐ#NÔOØ
ñð	9Rð " /°4¸Ð=MÐ8MÔ3NÐ"NÔOØ
ñð9Rð # ?°D¸Ô9OÔ4PÐ#PÔQØ
ñð9Rð ˜”9˜tÑ#ð9Rð  ØÐ1°4¸Ô3HÐHÔIô
ð ñð9Rð ØØØ*ØØ3Øðôðô
ð ñ	ð9Rð2 
ð39Rð 9Rð 9Rð 9Rð 9Rð 9Rðv9 ð 9¸4ð 9ð 9ð 9ð 9ð
@¨oð @À$ð @ð @ð @ð @ð
 Ôð1¨)Ð4DÔ*Eð 1ð 1ð 1ñ Ôð1ð(Ø#ðØ+.ðØ7Fðà	ðð ð ð ðBð ð ð ð"
 ð 
¸4ð 
ð 
ð 
ð 
ð

˜Fð 

 tð 

ð 

ð 

ð 

ð˜-ð ¨C°$©Jð ð ð ð ð0
ð 
ð 
ð 
ð(/ ð /¨ð /ð /ð /ð /ð- ð -¨ð -ð -ð -ð -ð
È4ð 
ð 
ð 
ð 
ð
°$ð 
ð 
ð 
ð 
ð
¨Tð 
ð 
ð 
ð 
ð¨oð À$ð ð ð ð ð+¨oð +À$ð +ð +ð +ð +ðd +;Ô*Jð$Dð $Dàð$Dð ð$Dð ð	$Dð
 (ð$Dð 
ð$Dð $Dð $Dð $DðLKØ#ðKØ+.ðKØ7FðKà	ðKð Kð Kð Kð
4Ø#ð4Ø+.ð4à	ð4ð 4ð 4ð 4ð !Øðð àðð ðð ð	ð
 ðð 
ðð ð ð ð,9 /ð 9¸/ð 9Èdð 9ð 9ð 9ð 9ð$
 ð 
°_ð 
ð 
ð 
ð 
ð4* ð *°sð *¸ð *ð *ð *ð *ð+Ø#ð+Ø+.ð+Ø7Fð+à	ð+ð +ð +ð +ð ð
°ð 
¸ð 
ð 
ð 
ñ „\ð
ðA¨/ð A¸dð Að Að Að Að
¨ð 
¸Tð 
ð 
ð 
ð 
ð RVð	/ð /àð/ð ð/ð )¨5Ð1AÀ3Ð1FÔ+GÑGÈ$ÑNð	/ð
 
ð/ð /ð /ð /ð$. ð .°Dð .ð .ð .ð .ð( #8ð	ð àðð "ðð  ð	ð
 
ðð ð ð ð* €Mð
àð
ð "ð
ð 
ð	
ð 
ð 
ð 
ðà˜T‘Mðð ðð ð	ð
 �c˜3�h”ðð 
ðð ð ð ð*6¨ð 6°$ð 6ð 6ð 6ð 6ðp=à$ð=ð  ð=ð ˜Ô(ð	=ð
 
ð=ð =ð =ð =ðJ 26ð"ð "ð "à$ð"ð  ð"ð ˜Ô(ð	"ð /ð"ð 
ð"ð "ð "ð "ðH	à	ð	ð 	ð 	ð 	ðØ˜t‘mðØ+3ðØ?Nðà	ðð ð ð ð¨Fð ¸#ð À/ð ð ð ð ð3Ø"ð3Ø*.¨Ô*?ð3à	ð3ð 3ð 3ð 3ðGØ"ðGà	ðGð Gð Gð GðO
ð O
ð O
ð O
ðb4˜Oð 4°ð 4ð 4ð 4ð 4ð0¨Dð 0ð 0ð 0ð 0ðV D¨Ô$9ð Vð Vð Vð VðS¨	ð S°dð Sð Sð Sð Sðjà*ðð ðð 4ð	ð
 ðð 
ðð ð ð ð<#˜sð # tð #ð #ð #ð #ð7! 	ð 7!¨dð 7!ð 7!ð 7!ð 7!ðr+ð +ð +ð +ð9¨ð 9À3ð 9ð 9ð 9ð 9ðv
¸tÀC¼yð 
ÈTð 
ð 
ð 
ð 
ð& 7<ðUBð UBØðUBØ/3ðUBà	ðUBð UBð UBð UBðn(ð (ð (ð (ð
˜$ð 
ð 
ð 
ð 
ð$ð $ð $ð $ð $ð $ð $ð $r?   rG   ry   r,   rf   c              #   ó¦   K  — | j         j        j        }	 d| j         j        _        dV — || j         j        _        dS # || j         j        _        w xY w)zÜContext manager to temporarily allow side effects with extra outputs.

    This is used for special cases (like FSDP functions) that need to perform
    side effects even when the general policy is to disallow them.
    TN)r©   rª   r¯   ©ry   Úorig_vals     r=   r¯   r¯   Ä  s]   è è € ð ŒyÔ'ÔA€HðFØ=AˆŒ	Ô Ô:Øˆˆˆà=EˆŒ	Ô Ô:Ð:Ð:ø¸XˆŒ	Ô Ô:ÐEÐEÐEÐEó	   •= ½Ac              #   óÈ   K  — | j         j        j        }	 d| j         j        _        d| j         j        _        d V — || j         j        _        d S # || j         j        _        w xY wrj  )r©   rª   r«   Ú+traced_with_externally_visible_side_effectsrG  s     r=   Ú2allow_externally_visible_side_effects_in_subtracerrL  Õ  sk   è è € ð ŒyÔ'ÔT€HðYØPTˆŒ	Ô ÔMØOSˆŒ	Ô ÔLØˆˆˆàPXˆŒ	Ô ÔMÐMÐMøÐPXˆŒ	Ô ÔMÐXÐXÐXÐXs   •&A ÁA!c              #   ó¦   K  — | j         j        j        }	 d| j         j        _        d V — || j         j        _        d S # || j         j        _        w xY wrj  )r©   rª   r²   rG  s     r=   Ú"disallow_side_effects_in_generatorrN  â  s]   è è € ð ŒyÔ'ÔC€HðHØ?CˆŒ	Ô Ô<Øˆˆˆà?GˆŒ	Ô Ô<Ð<Ð<ø¸xˆŒ	Ô Ô<ÐGÐGÐGÐGrI  )Rr>  r#  rA  rí   r4  rÏ  rÍ  r  rS   Úcollections.abcr   r   Útypesr   Útypingr   r   rˆ   Útorch.nnrº   r	   Útorch.utils._ordered_setr
   Útorch.utils._pytreer   rÐ   r   r   r   r   Úbytecode_transformationr   r   r   r   Úcodegenr   rJ  r   r   r   r¿   r   r   r   r   r   r   r   r    r!   r½  r"   r#   r$   r%   r&   r'   r(   r)   r  r*   Útorch._dynamo.output_graphr+   Útorch._dynamo.symbolic_convertr,   Útorch._dynamo.variables.listsr-   rè  ÚgetArtifactLoggerr‹  ræ  rœ   rñ   r>   rC   rE   rG   rB  r¯   rL  rN  rš   r?   r=   ú<module>r[     s  ððð ð. Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø €€€Ø HÐ HÐ HÐ HÐ HÐ HØ /Ð /Ð /Ð /Ð /Ð /Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð <Ð ;Ð ;Ð ;Ð ;Ð ;ð ð ;Ø6Ð6Ð6Ð6Ð6Ð6ØHÐHÐHÐHÐHÐHØ:Ð:Ð:Ð:Ð:Ð:ð ”>×3Ò3°H¸nÑMÔMÐ ð
.Ø�C˜�HŒ~ð
.Ø(,¨S°#¨X¬ð
.ØCFð
.à	ð
.ð 
.ð 
.ð 
.ð$ 4¨¤9ð $°t¸C´yð $ÀTð $ð $ð $ð $ð
d$ð d$ð d$ð d$ð d$ñ d$ô d$ð d$ðN3 ÔðFØ#ðFàÐÔ ðFð Fð Fñ ÔðFð  Ôð	YØ#ð	YàÐÔ ð	Yð 	Yð 	Yñ Ôð	Yð ÔðHØ#ðHàÐÔ ðHð Hð Hñ ÔðHð Hð Hr?   