Ë
    L²jÆ{ ã                   ó<  — 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	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 ddlmZmZmZmZmZ ddlZddlmZ ddlmc m 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/m0Z0 d
dl1m2Z2 d
dl3m4Z4m5Z5m6Z6 d
dl7m8Z8m9Z9 d
dl:m;Z; d
dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d
dlmCZCmDZDmEZEmFZFmGZGmHZHmIZI ddlJmKZKmLZLmMZM ddlNmOZO ddlPmQZQmRZR ddlSmTZTmUZUmVZV erddlWmXZX ddlYmZZZ  G d„ deM«      Z[ G d„ deM«      Z\ G d„ deM«      Z] G d „ d!eM«      Z^ G d"„ d#eM«      Z_ G d$„ d%e_«      Z` G d&„ d'eM«      Za G d(„ d)eM«      Zb G d*„ d+eM«      Zcd,ed-ed.ef   fd/„Zd G d0„ d1eM«      ZeejÌ                   G d2„ d3«      «       Zg G d4„ d5eV«      Zh G d6„ d7eV«      Zi G d8„ d9eM«      Zj G d:„ d;eM«      Zk G d<„ d=eM«      Zl G d>„ d?eM«      Zm G d@„ dAeM«      Zn G dB„ dCeM«      Zo ejà                  d¬D«      d-eqej$                  ejä                  f   fdE„«       Zs ejà                  d¬D«      d-eqejä                  ej$                  f   fdF„«       Zt G dG„ dHeM«      Zu G dI„ dJeM«      Zv G dK„ dLeM«      Zw G dM„ dNeM«      Zx G dO„ dPeM«      Zy G dQ„ dReM«      Zz G dS„ dTeM«      Z{ G dU„ dVeM«      Z| G dW„ dXeM«      Z} G dY„ dZe}«      Z~ G d[„ d\e}«      Ze�j                   e}e�j                  e}e�j                  eiZƒ G d]„ d^eM«      Z„ G d_„ d`eM«      Z… G da„ dbeM«      Z†y)caÎ  
This module contains miscellaneous variable tracker implementations for various Python types
and features used in Dynamo's symbolic execution. These classes help track and propagate
information about different kinds of variables during graph capture.

Key classes include:
- SuperVariable: Handles super() calls and method resolution
- ExceptionVariable: Tracks exception objects
- RandomVariable: Manages random number generators
- GetAttrVariable: Tracks attribute access
- MethodWrapperVariable: Handles method wrappers
- PythonModuleVariable: Tracks Python modules
- NumpyVariable: Handles numpy functions and types
- StringFormatVariable: Manages string formatting
- DebuggingVariable: Handles print and logging
é    N)ÚCallableÚSequence)ÚRandom)ÚBuiltinFunctionType)ÚAnyÚLiteralÚTYPE_CHECKINGÚ	TypeGuardÚUnion)ÚMutationType)ÚTupleVariable)ÚSourceé   )ÚconfigÚgraph_break_hintsÚtrace_rulesÚ	variables)Úcreate_call_functionÚcreate_call_function_exÚcreate_instruction)Ú$do_not_convert_to_tracable_parameter)Úraise_observed_exceptionÚraise_type_errorÚunimplemented)ÚGuardBuilderÚinstall_guard)Úunpatched_nn_module_init)Ú
AttrSourceÚGenericAttrSourceÚGetItemSourceÚTypeMROSourceÚ
TypeSourceÚWeakRefCallSource)Úcheck_unspec_or_constant_argsÚcmp_name_to_op_mappingÚidentityÚis_tensor_base_attr_getterÚistypeÚproxy_args_kwargsÚraise_args_mismatché   )Ú#AsPythonConstantNotImplementedErrorÚNO_SUCH_SUBOBJÚVariableTracker)ÚConstantVariable)ÚNestedUserFunctionVariableÚUserFunctionVariable)Úcall_random_fnÚis_standard_setattrÚUserDefinedObjectVariable)Ú	PyCodegen)ÚInstructionTranslatorc            
       óÚ   ‡ — e Zd ZeZh ej                  £Z	 ddededz  deddfˆ fd„Zde	fd„Z
dˆ fd„Zd	d
dedeeedz  f   fˆ fd„Zd	d
dedefd„Zd	d
dedee   deeef   def
d„Zˆ xZS )ÚSuperVariableNÚtypevarÚobjvarÚkwargsÚreturnc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y ©N© )ÚsuperÚ__init__r9   r:   )Úselfr9   r:   r;   Ú	__class__s       €ú[/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/variables/misc.pyrA   zSuperVariable.__init__Y   s'   ø€ ô 	‰ÑÑ"˜6Ò"ð ˆŒð
 ˆ�ó    c                 ó"   — t         j                  S ©N)Úbuiltinsr@   ©rB   s    rD   Úpython_typezSuperVariable.python_typej   s   € Ü�~‰~ÐrE   c                 ó   •‡— ‰j                  ˆˆfd„«        ‰| j                  «       | j                  �. ‰| j                  «       ‰j                  t	        dd«      «       y ‰j                  t	        dd«      «       y )Nc                  óB   •—  ‰t        j                  t        «      «      S rG   )r   ÚBuiltinVariabler@   )rC   Úcodegens   €€rD   ú<lambda>z+SuperVariable.reconstruct.<locals>.<lambda>n   s   ø€ ¡g¬i×.GÑ.GÌÓ.NÓ&O€ rE   r   Fr+   )Úadd_push_nullr9   r:   Úextend_outputr   ©rB   rN   rC   s    `€rD   ÚreconstructzSuperVariable.reconstructm   s`   ù€ Ø×ÑÔOÔPÙ�—‘ÔØ�;‰;Ð"Ù�D—K‘KÔ Ø×!Ñ!Ô"6°q¸%Ó"@ÕAà×!Ñ!Ô"6°q¸%Ó"@ÕArE   Útxr6   Únamec                 ó´  •— | j                   s.t        ddd|› d| j                  › d| j                   › d�dg¬«       | j                   €J ‚| j                  j                  «       }| j                   j	                  «       }| j                   j
                  rt        | j                   j
                  «      nd }t        |t        «      r,| j                   j                  }| j                   j
                  }d }|j                  }	 |j                  |«      d	z   }t        |t!        |«      «      D ]W  }	||	   j"                  j%                  |t&        «      x}
sŒ)|
t&        usŒ2|rt)        t+        t-        |«      |	«      |«      }|
|fc S  t        d
dd|› d| j                  › d| j                   › d�ddg¬«       y # t        $ r t        t        ||«      |«      d fcY S w xY w)Nz1-arg super not implementedÚ z"Dynamo failed to trace attribute `z$` accessed via `super()` (for type `z` and object `z4`) because one-argument of super() is not supported.z-Use two-argument super(type, object_or_type).©Úgb_typeÚcontextÚexplanationÚhintsr+   zUnable to resolve super getattrz8`) because the resolved attribute type is not supported.z0Ensure the attribute exists in the parent class.z(Check the arguments passed to `super()`.)r:   r   r9   Úas_python_constantrJ   Úsourcer"   Ú
issubclassÚtypeÚvalueÚ__mro__ÚindexÚ
ValueErrorÚgetattrr@   ÚrangeÚlenÚ__dict__Úgetr-   r   r    r!   )rB   rT   rU   Úsearch_typeÚtype_to_useÚtype_to_use_sourcer^   Ú
search_mroÚstart_indexrc   Úresolved_getattrrC   s              €rD   Ú_resolved_getattr_and_sourcez*SuperVariable._resolved_getattr_and_sourcev   só  ø€ ð �{Š{ÜØ5ØØ@ÀÀð G,Ø,0¯L©L¨>¸ÈÏÉÀ}ð UDðDð Dðõ	ð �{‰{Ð&Ð&Ð&Ø—l‘l×5Ñ5Ó7ˆð —k‘k×-Ñ-Ó/ˆà.2¯k©k×.@Ò.@ŒJ�t—{‘{×)Ñ)Ô*Àdð 	ô �k¤4Ô(ØŸ+™+×+Ñ+ˆKØ!%§¡×!3Ñ!3ÐàˆØ ×(Ñ(ˆ
ð	HØ$×*Ñ*¨;Ó7¸!Ñ;ˆKô ˜;¬¨J«Ó8ò 
	4ˆEà#-¨eÑ#4×#=Ñ#=×#AÑ#AÀ$ÌÓ#WÐWÐÑWØ#¬>Ò9á)Ü!+Ü)¬-Ð8JÓ*KÈUÓSØ ó"˜ð ,¨VÐ3Ò3ð
	4ô 	Ø5ØØ<¸T¸Fð C(Ø(,¯© ~°^ÀDÇKÁKÀ=ð QDðDð CØ:ðö
	
øô' ò 	Hô œ5 ¨kÓ:¸DÓAÀ4ÐGÒGð	Hús   Ä F3 Æ3!GÇGc                 ó.  — | j                  ||«      \  }}t        j                  j                  |«      st	        | |t        |«      ¬«      S |r(t        |j                  t        j                  «      «       t        j                  j                  ||¬«      S )N©Úpy_type©r^   )rp   r   r/   Ú
is_literalÚGetAttrVariabler`   r   Ú
make_guardr   ÚCONSTANT_MATCHÚcreate)rB   rT   rU   ra   r^   s        rD   Úvar_getattrzSuperVariable.var_getattrº   sy   € ð ×9Ñ9¸"¸dÓC‰ˆˆvÜ×)Ñ)×4Ñ4°UÔ;Ü" 4¨´t¸E³{ÔCÐCÙÜ˜&×+Ñ+¬L×,GÑ,GÓHÔIÜ×)Ñ)×0Ñ0°¸vÐ0ÓFÐFrE   Úargsc                 ó²  — | j                  ||«      \  }}| j                  €J ‚|t        j                  u rt	        t
        «      S |t        j                  j                  j                  u rÈ| j                  }ddl	m
} t        |t        j                  «      rkt        |j                  |«      rU|sS|sQt        «       5  t!        j"                  |t$        |¬«      }	|	j'                  || j                  g|z   |«      cd d d «       S t)        dd| › d|› d|› d|› �d|› d�g t*        j,                  ¢¬	«       �n| j                  j.                  r³t1        |d
«      r§|j2                  dk(  r˜t        j4                  j7                  |«      ry|j8                  }
t1        |
d«      r&|
j:                  dk(  rt!        j"                  ||
«      }n'|€J ‚|j<                  }t        j4                  |
|¬«      }|j?                  |d||«      S t        |t@        «      rZt        |jB                  tD        jF                  «      r6t!        j"                  ||jB                  |d¬«      }	|	j'                  |||«      S t        |tH        «      rþt        |jB                  tD        jF                  «      rÚt        | j                  t        j4                  «      r| j                  }nbd }| j                  j.                  rtK        | j                  j.                  «      }t!        j"                  || j                  jL                  |«      }|€J ‚t!        j"                  ||jB                  tO        |d«      d¬«      }	|	j'                  ||g|¢|«      S t        |tD        jF                  «      r:t!        j"                  |||d¬«      }	|	j'                  || j                  g|z   |«      S t        |tD        jP                  «      r=t        jR                  |jB                  | j                  |¬«      j'                  |||«      S tU        |«      r:t        | j                  t        «      r  | j                  jV                  |g|¢­i |¤ŽS |t        jX                  u rí|d   }	 |j[                  «       }|j^                  j                  ja                  | j                  «      s4t)        dd| › d|› �d| j                  › d�dgt*        jb                  ¢¬	«       t        |td        «      sJ ‚|j^                  j                  jg                  | j                  |t        jh                  «       «       t        jj                  jm                  d «      S t        | j                  t        j                  «      rl| j                  jn                  �V| j                  jp                  �@|| j                  jp                  v r(| j                  jn                  j?                  ||||«      S |t        jr                  u �r|d   jt                  }|j^                  j                  jw                  | j                  |«      r^|j^                  j                  jy                  | j                  |d¬«      }t        |t        jh                  «      rt{        t|        |«       |S d }	 t        js                  | j                  jt                  |«      }d }| j                  j.                  � t        | j                  j.                  |«      }t!        j"                  |||«      S |t        j€                  j‚                  u r¦|d   }i }|d   j„                  }|d   j„                  j…                  «       D ]$  \  }}|j†                  j[                  «       }|||<   Œ& |jˆ                  jŠ                  }d|jˆ                  _E        	 |j'                  |||«      ||jˆ                  _E        S t        |tD        jŒ                  «      rP|t�        j�                  «       v r:t!        j"                  |||d¬«      }|j'                  || j                  g|z   |«      S t)        dd| › d|› �d|› d |› d!�d"g¬	«       y # 1 sw Y   Œ'xY w# t\        $ r"}t)        dd| › d|› �ddg|¬«       Y d }~�Œd }~ww xY w# t|        $ r t{        t|        |«       Y �Œïw xY w# ||jˆ                  _E        w xY w)#Nr   )ÚAttributeMutationNewrt   z#Unsupported super().__init__() callúcall_method ú z0Dynamo encountered a super().__init__() call on zK that resolved to a `torch.nn.Module.__init__()` call that we cannot trace.rX   Ú__name__Ú__new__Ú
__module__rH   T©r^   ÚrealizeÚ__func__r   z7Non-constant attribute given to `super().__delattr__()`zbDynamo requires the attribute name passed to `super().__delattr__(...)` to be a constant (string).zEEnsure the attribute name is a string literal or a constant variable.)rY   rZ   r[   r\   Úfrom_exczFAttempted super().__delattr__() on an object without mutation trackingzmDynamo needs to track mutations on an object before `super().__delattr__` can be used on it. But the object (z3) doesn't have attribute mutation tracking enabled.z<Ensure the object is tracked by Dynamo's side effect system.)Ú
deleted_oké   F)r„   zFAttempted to call a super() attribute that is not a function or methodz4Dynamo does not know how to trace the call `super().z()` because `super().z(` is not a function or method attribute.zMEnsure the attribute accessed via `super()` is a standard method or function.)Irp   r:   ÚobjectrA   ÚLambdaVariabler&   ÚtorchÚnnÚModuleÚside_effectsr}   Ú
isinstancer   r4   Úmutation_typer   r.   Úbuildr   Úcall_functionr   r   Ú	DIFFICULTr^   Úhasattrr€   ÚUserDefinedClassVariableÚis_supported_new_methodÚ__self__r‚   ÚmemberÚcall_methodÚstaticmethodr…   ÚtypesÚFunctionTypeÚclassmethodr"   Ú
value_typer   Ú
MethodTypeÚUserMethodVariabler3   Úmethod_setattr_standardÚ__delattr__r]   ÚNotImplementedErrorÚoutputÚis_attribute_mutationÚ
DYNAMO_BUGÚstrÚ
store_attrÚDeletedVariabler/   ry   Ú_base_vtÚ_base_methodsÚ__getattribute__ra   Úhas_pending_mutation_of_attrÚ	load_attrr   ÚAttributeErrorr   Ú_CÚ_disabled_torch_function_implÚitemsÚvtÚsymbolic_torch_function_stateÚtorch_function_subclass_enabledÚMethodDescriptorTyper   Úget_tensor_method)rB   rT   rU   r{   r;   Úinner_fnr^   r:   r}   Úfn_vtÚuser_clsÚuser_cls_vtÚuser_cls_sourceÚcls_variableÚ
cls_sourceÚattrÚexcÚ	attr_nameÚresultÚ
attr_valueÚattr_sourceÚfuncÚ	tf_kwargsÚtf_argsÚhash_key_vtÚvalue_vtÚkey_strÚtx_oldÚfn_vars                                rD   r™   zSuperVariable.call_methodÊ   s  € ð  ×<Ñ<¸RÀÓFÑˆ�&Ø�{‰{Ð&Ð&Ð&ð ”v—‘Ñ&Ü!¤(Ó+Ð+ØœŸ™Ÿ™×1Ñ1Ñ1Ø—[‘[ˆFÝ;ô ˜6¤9×#FÑ#FÔGÜ˜v×3Ñ3Ð5IÔJÙ¡ä9Ó;ñ QÜ+×1Ñ1ØÔ4¸Vô�Eð !×.Ñ.¨r°D·K±K°=À4Ñ3GÈÓP÷	Qñ Qô ØAØ*¨4¨&°°$°°q¸¸¸aÀ¸xÐHð!Ø ˜ð "1ð!1ð 9Ô-×7Ñ7Ð8÷ð �K‰K×ÒÜ˜ *Ô-Ø×!Ñ! YÒ.Ü×2Ñ2×JÑJÈ8ÔTà×(Ñ(ˆHÜ�x Ô.°8×3FÑ3FÈ*Ò3TÜ/>×/DÑ/DÀRÈÓ/R‘àÐ)Ð)Ð)Ø"(§-¡-�Ü'×@Ñ@Ø _ô�ð ×*Ñ*¨2¨y¸$ÀÓGÐGÜ˜¤,Ô/´JØ×Ñœu×1Ñ1ô5
ô $×)Ñ)Ø�H×%Ñ%¨f¸dôˆEð ×&Ñ& r¨4°Ó8Ð8Ü˜¤+Ô.´:Ø×Ñœu×1Ñ1ô4
ô ˜$Ÿ+™+¤y×'IÑ'IÔJð  $Ÿ{™{‘ð "�
Ø—;‘;×%Ò%Ü!+¨D¯K©K×,>Ñ,>Ó!?�JÜ.×4Ñ4ØØ—K‘K×*Ñ*Øó �ð
 Ð%Ð%Ð%Ü#×)Ñ)ØØ×!Ñ!Ü! &¨*Ó5Øô	ˆEð ×&Ñ& r¨LÐ+@¸4Ð+@À&ÓIÐIÜ˜¤%×"4Ñ"4Ô5Ü#×)Ñ)¨"¨h¸vÈtÔTˆEØ×&Ñ& r¨D¯K©K¨=¸4Ñ+?ÀÓHÐHÜ˜¤%×"2Ñ"2Ô3Ü×/Ñ/Ø×!Ñ! 4§;¡;°vôç‰m˜B  fÓ-ð.ô ! Ô*¬zØ�K‰KÔ2ô0
ð 7�4—;‘;×6Ñ6°rÐK¸DÒKÀFÑKÐKØœ×+Ñ+Ñ+Ø˜‘7ˆDðØ×.Ñ.Ó0�ð —9‘9×)Ñ)×?Ñ?ÀÇÁÔLÜØdØ*¨4¨&°°$°Ð8ð!à#Ÿ{™{˜mð ,(ð!(ð
 Wðä*×5Ñ5ðõô ˜d¤CÔ(Ð(Ð(Ø�I‰I×"Ñ"×-Ñ-Ø—‘˜T¤9×#<Ñ#<Ó#>ôô ×-Ñ-×4Ñ4°TÓ:Ð:ä�t—{‘{¤I×$GÑ$GÔHØ—‘×$Ñ$Ð0Ø—‘×)Ñ)Ð5Ø˜DŸK™K×5Ñ5Ñ5à—;‘;×'Ñ'×3Ñ3°B¸¸dÀFÓKÐKØœ×0Ñ0Ò0ð ˜Q™Ÿ™ˆIØ�y‰y×%Ñ%×BÑBØ—‘˜Yôð Ÿ™×/Ñ/×9Ñ9Ø—K‘K °tð :ó �ô ˜f¤i×&?Ñ&?Ô@Ü,¬^¸RÔ@Ø�àˆJð=ô $×4Ñ4°T·[±[×5FÑ5FÈ	ÓR�
ð ˆKØ�{‰{×!Ñ!Ð-ä/°·±×0BÑ0BÀIÓN�Ü"×(Ñ(¨¨Z¸ÓEÐEØœŸ™×?Ñ?Ñ?ð
 ˜‘7ˆDàˆIØ˜1‘g—m‘mˆGà)-¨a©¯©×)<Ñ)<Ó)>ò .Ñ%�˜XØ%Ÿ.™.×;Ñ;Ó=�Ø%-�	˜'Ò"ð.ð ×5Ñ5×UÑUˆFØOTˆB×,Ñ,ÔLðØ×)Ñ)¨"¨g°yÓAð ð ×0Ñ0ÕPô �x¤×!;Ñ!;Ô<ØœK×9Ñ9Ó;Ñ;ô %×*Ñ*¨2¨x¸ÈÔNˆFØ×'Ñ'¨¨T¯[©[¨M¸DÑ,@À&ÓIÐIäð'à" 4 &¨¨$¨Ð0ðØ�vÐ2°4°&ð 9,ð,ð `ðö
	
÷eQð Qûôh 'ò 
ÜØUØ*¨4¨&°°$°Ð8ð!Lð `ðð !÷	ó 	ûð
ûôn "ò =Ü(¬¸×<ð=ûð8 ð ×0Ñ0ÕPúsB   Â;=a)Ñ<a5 Ú&*b# Þ=c á)a2á5	b á>bâb â#c â?c ãcrG   ©rN   r5   r<   N)r€   r‚   Ú__qualname__r@   Ú_cpython_typer.   Ú_nonvar_fieldsr   rA   r`   rJ   rS   r§   Útupler   rp   rz   ÚlistÚdictr™   Ú__classcell__©rC   s   @rD   r8   r8   Q   sþ   ø„ à€MðØ	×	'Ñ	'ð€Nð *.ñà ðð   $Ñ&ðð ð	ð
 
õð"˜Tó õBðB
Ø)ðB
Ø14ðB
à	ˆs�J Ñ%Ð%Ñ	&õB
ðHGÐ5ð G¸Sð GÀ_ó Gð X
à#ðX
ð ðX
ð �?Ñ#ð	X
ð
 �S˜/Ð)Ñ*ðX
ð 
÷X
rE   r8   c                   ód   ‡ — e Zd Zdej                  deddfˆ fd„Zdefd„Zddd	e	de
fˆ fd
„Zˆ xZS )ÚFrameSummaryVariableÚframe_summaryr;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   )r@   rA   rØ   )rB   rØ   r;   rC   s      €rD   rA   zFrameSummaryVariable.__init__¦  s   ø€ Ü‰ÑÑ"˜6Ò"Ø*ˆÕrE   c                 ó"   — t         j                  S rG   )Ú	tracebackÚFrameSummaryrI   s    rD   rJ   z FrameSummaryVariable.python_typeª  s   € Ü×%Ñ%Ð%rE   rT   r6   rU   c                 óœ  •— |dk(  r*t        j                  || j                  j                  «      S |dk(  r*t        j                  || j                  j                  «      S |dk(  r*t        j                  || j                  j
                  «      S |dk(  r*t        j                  || j                  j                  «      S t        ‰| �!  ||«      S )NÚlinenoÚfilenamerU   Úline)	r.   r‘   rØ   rÞ   rß   rU   rà   r@   rz   ©rB   rT   rU   rC   s      €rD   rz   z FrameSummaryVariable.var_getattr­  s¯   ø€ Ø�8ÒÜ"×(Ñ(¨¨T×-?Ñ-?×-FÑ-FÓGÐGØ�ZÒÜ"×(Ñ(¨¨T×-?Ñ-?×-HÑ-HÓIÐIØ�VŠ^Ü"×(Ñ(¨¨T×-?Ñ-?×-DÑ-DÓEÐEØ�VŠ^Ü"×(Ñ(¨¨T×-?Ñ-?×-DÑ-DÓEÐEÜ‰wÑ" 2 tÓ,Ð,rE   )r€   r‚   rÎ   rÛ   rÜ   r   rA   r`   rJ   r§   r.   rz   rÔ   rÕ   s   @rD   r×   r×   ¥  sP   ø„ ð+ i×&<Ñ&<ð +Èð +ÐPTõ +ð&˜Tó &ð	-Ð5ð 	-¸Sð 	-À_÷ 	-ñ 	-rE   r×   c            
       óR  ‡ — e Zd Zdeded ef   deddfˆ fd„Zede	j                  ded ef   dd fd„«       Zededefd	„«       Zdee	j                  ez     fd
„Zdedefd„Zdeej*                     fd„Zdddededefd„Zdddedefˆ fd„Zdddedee   deeef   def
ˆ fd„Zˆ xZS )ÚTracebackVariablerØ   Útb_nextr;   r<   Nc                 óH   •— t        ‰| �  di |¤Ž || _        |€J ‚|| _        y r>   )r@   rA   rØ   rä   )rB   rØ   rä   r;   rC   s       €rD   rA   zTracebackVariable.__init__º  s0   ø€ ô 	‰ÑÑ"˜6Ò"Ø*ˆÔàÐ"Ð"Ð"Øˆ�rE   c                 ó(   —  | t        |«      |¬«      S )N)rä   )r×   )ÚclsrØ   rä   s      rD   Úfrom_frame_summaryz$TracebackVariable.from_frame_summaryÌ  s   € ñ Ô'¨Ó6ÀÔHÐHrE   Úobjc                 óF   — t        | t        «      xs | j                  «       S rG   )r(   rã   Úis_constant_none©ré   s    rD   Úis_valid_tracebackz$TracebackVariable.is_valid_tracebackÔ  s   € ä�cÔ,Ó-ÒG°×1EÑ1EÓ1GÐGrE   c                 ó    — t        | j                  t        «      r| j                  gS | j                  g| j                  j	                  «       z   S rG   )r(   rä   r/   rØ   Ú
extract_tbrI   s    rD   rï   zTracebackVariable.extract_tbØ  sA   € Ü�$—,‘,Ô 0Ô1Ø×&Ñ&Ð'Ð'Ø×"Ñ"Ð# d§l¡l×&=Ñ&=Ó&?Ñ?Ð?rE   Útbc                 ól   — | }t        |t        «      r"||u ry|j                  }t        |t        «      rŒ"y)NTF)r(   rã   rä   )rB   rð   Úcurr_tbs      rD   Úhas_reference_cyclez%TracebackVariable.has_reference_cycleÝ  s7   € à8<ˆÜ�WÔ/Ô0Ø˜"‰}ØØ—o‘oˆGô �WÔ/Õ0ð rE   c                 ó"   — t         j                  S rG   )r›   ÚTracebackTyperI   s    rD   rJ   zTracebackVariable.python_typeæ  s   € Ü×"Ñ"Ð"rE   rT   r6   Úname_varÚvalc                 ón  — |j                  «       }|dk(  r‚| j                  |«      st        t        |«       t	        |t
        t        f«      sJ ‚| j                  |«      s!t        |t
        «      r!|j                  | «      rt        t        |«       || _
        t        j                  j                  d «      S )Nrä   )r]   rí   r   Ú	TypeErrorr�   rã   r/   ró   r(   rd   rä   r   ry   ©rB   rT   rö   r÷   rU   s        rD   Úcall_setattrzTracebackVariable.call_setattré  s—   € ð ×*Ñ*Ó,ˆØ�9ÒØ×*Ñ*¨3Ô/Ü(¬°BÔ7Ü˜cÔ$5Ô7GÐ#HÔIÐIÐIØ×'Ñ'¨Ô,Ü�sÔ-Ô.°3×3JÑ3JÈ4Ô3Pä(¬°RÔ8ØˆDŒLÜ×)Ñ)×0Ñ0°Ó6Ð6rE   rU   c                 óø   •— |dk(  r| j                   S |dk(  r| j                  j                  |d«      S |dk(  r| j                  S |dk(  r"t        d| › d�dg t        j
                  ¢¬	«       t        ‰| �	  ||«      S )
Nrä   Ú	tb_linenorÞ   rØ   Útb_lastiz traceback.tb_lasti not supportedz accessing 'tb_lasti'zNDynamo does not support accessing the tb_lasti attribute of traceback objects.rX   )rä   rØ   rz   r   r   ÚSUPPORTABLEr@   rá   s      €rD   rz   zTracebackVariable.var_getattrû  sŽ   ø€ Ø�9ÒØ—<‘<ÐØ�[Ò Ø×%Ñ%×1Ñ1°"°hÓ?Ð?Ø�_Ò$Ø×%Ñ%Ð%Ø�ZÒÜØ:Ø˜&Ð 5Ð6ØlØ6Ô)×5Ñ5Ð6õ	ô ‰wÑ" 2 tÓ,Ð,rE   r{   c                 ó˜   •— |dk(  rt        j                  || |d   u «      S |dk(  r | j                  |g|¢­Ž S t        ‰| �  ||||«      S )NÚ__eq__r   Ú__setattr__)r.   r‘   rû   r@   r™   )rB   rT   rU   r{   r;   rC   s        €rD   r™   zTracebackVariable.call_method  s^   ø€ ð �8Òä"×(Ñ(¨¨T°T¸!±W¨_Ó=Ð=Ø�]Ò"Ø$�4×$Ñ$ RÐ/¨$Ò/Ð/Ü‰wÑ" 2 t¨T°6Ó:Ð:rE   )r€   r‚   rÎ   r×   r   r/   r   rA   r�   rÛ   rÜ   rè   rš   r.   Úboolrí   rÒ   rï   ró   r`   r›   rõ   rJ   rû   r§   rz   rÓ   r™   rÔ   rÕ   s   @rD   rã   rã   ¹  s  ø„ ðà+ðð Ð*Ð,<Ð<Ñ=ðð ð	ð
 
õð$ ðIà ×-Ñ-ðIð Ð*Ð,<Ð<Ñ=ðIð 
ò	Ió ðIð ðH ð H°Dò Hó ðHð@˜D ×!7Ñ!7Ð:NÑ!NÑOó @ð
 oð ¸$ó ð#˜T %×"5Ñ"5Ñ6ó #ð7à#ð7ð "ð7ð ð	7ð
 
ó7ð$-Ð5ð -¸Sð -À_õ -ð ;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
÷;ñ ;rE   rã   c                   ó   ‡ — e Zd ZeZ	 	 	 ddedee   dee	ef   dz  de
dz  dedz  ddfˆ fd„Zd	eddfd
„Zdd„Zdefd„Zdddededefd„Zddde	dee   dee	ef   def
ˆ fd„Zddde	defˆ fd„Zde	fd„ZeZedede	fd„«       Zde	fd„Zˆ xZS )ÚExceptionVariableNÚexc_typer{   Úinit_kwargsr^   r�   r<   c                 ón  •— t         ‰| �  ||¬«       || _        || _        |r$t	        d| › d|› �dg t
        j                  ¢¬«       t        j                  d «      | _	        t        j                  d «      | _
        t        j                  d«      | _        t        j                  d «      | _        d | _        y )N)r^   r�   z,Keyword args passed to exception constructorz with kwargs zRDynamo does not know how to handle keyword args passed to an exception constructorrX   F)r@   rA   r  r{   r   r   rÿ   r/   ry   Ú__context__Ú	__cause__Ú__suppress_context__Ú__traceback__Úpython_stack)rB   r  r{   r  r^   r�   rC   s         €rD   rA   zExceptionVariable.__init__  s­   ø€ ô 	‰Ñ °mÐÔDØ ˆŒØˆŒ	ÙÜØFØ˜& ¨k¨]Ð;ØpØ6Ô)×5Ñ5Ð6õ	ô -=×,CÑ,CÀDÓ,IˆÔô +;×*AÑ*AÀ$Ó*GˆŒä5E×5LÑ5LÈUÓ5SˆÔ!ä.>×.EÑ.EÀdÓ.KˆÔð <@ˆÕrE   rZ   c                 ó   — || _         y rG   )r	  )rB   rZ   s     rD   Úset_contextzExceptionVariable.set_context@  s
   € Ø"ˆÕrE   c                 ó   ‡ ‡— ‰j                  ˆˆ fd„«       ‰j                  ‰ j                  «       ‰j                  t	        ‰ j                  «      d«       dt
        dd fˆˆ fd„} |d«        |d«        |d«       y )	Nc                  óP   •— ‰ j                  d‰j                  j                  «      S )NrH   )Úload_import_fromr  r€   ©rN   rB   s   €€rD   rO   z/ExceptionVariable.reconstruct.<locals>.<lambda>E  s   ø€ �G×,Ñ,¨Z¸¿¹×9OÑ9OÓP€ rE   FrU   r<   c                 óü   •— t        ‰| «      }t        |t        «      r|j                  dv sJ |«       ‚y ‰j	                  «         ‰|«       ‰j                  ‰j                  d«      «       ‰j                  | «       y )N)TFNr   )re   r(   r/   ra   Údup_toprQ   Úrot_nr¨   )rU   r¿   rN   rB   s     €€rD   Úcodegen_attrz3ExceptionVariable.reconstruct.<locals>.codegen_attrJ  sh   ø€ Ü˜4 Ó&ˆDÜ�dÔ,Ô-Ø—z‘zÐ%8Ñ8Ð>¸$Ó>Ñ8à—‘Ô!Ù˜”Ø×%Ñ% g§m¡m°AÓ&6Ô7Ø×"Ñ" 4Õ(rE   r	  r
  r  )rP   Úforeachr{   r’   rg   r§   )rB   rN   r  s   `` rD   rS   zExceptionVariable.reconstructC  sl   ù€ Ø×ÑÜPô	
ð 	�‰˜Ÿ	™	Ô"Ø×Ñœc $§)¡)›n¨eÔ4ð	)œsð 	) tö 	)ñ 	�]Ô#Ù�[Ô!ÙÐ+Õ,rE   c                 ó   — | j                   S rG   )r  rI   s    rD   rJ   zExceptionVariable.python_typeX  s   € Ø�}‰}ÐrE   rT   r6   rö   r÷   c                 óh  — |j                  «       }|dk(  rf|j                  «       sCt        |t        j                  t        j
                  t        j                  f«      s
J |› d�«       ‚| j                  |«       �n|dk(  r‘|j                  «       sHt        |t        j                  t        j                  t        j
                  t        j                  f«      r,|| _	        t        j                  j                  d«      | _        n�t        |d«       nƒ|dk(  r'|j                  dd«      r|| _        ndt        |d«       nW|dk(  r)t        j!                  |«      st        |d	«       || _        n)t%        d
d| › d|› �d|› d�g t&        j(                  ¢¬«       t        j                  j                  d «      S )Nr	  z! is not a valid exception contextr
  Tz9exception cause must be None or derive from BaseExceptionr  Fr  z0__traceback__ must be a traceback object or Nonez4Unsupported attribute assignment on Exception objectzcall_setattr r   z/Dynamo does not support setting the attribute 'z{' on tracked exception objects. Only `__context__`, `__cause__`, `__suppress_context__`, and `__traceback__` are supported.rX   )r]   rë   r�   r   r  Ú!UserDefinedExceptionClassVariableÚ"UserDefinedExceptionObjectVariabler  rM   r
  r/   ry   r  r   Úis_constant_matchrã   rí   r  r   r   rÿ   rú   s        rD   rû   zExceptionVariable.call_setattr[  sª  € ð ×*Ñ*Ó,ˆØ�=Ò à×'Ñ'Ô)¬ZØä×/Ñ/Ü×?Ñ?Ü×@Ñ@ðô.ð 9ð �Ð7Ð8ó9ð ð ×Ñ˜SÖ!Ø�[Ò Ø×#Ñ#Ô%¬Øä×-Ñ-Ü×/Ñ/Ü×?Ñ?Ü×@Ñ@ð	ô*ð "%�”Ü,5×,FÑ,F×,MÑ,MÈdÓ,S�Õ)ä ØÐSõð Ð+Ò+Ø×$Ñ$ T¨5Ô1Ø,/�Õ)ä ØÐSõð �_Ò$Ü$×7Ñ7¸Ô<Ü  Ð%WÔXØ!$ˆDÕäØNØ'¨ v¨Q¨t¨fÐ5ðØ�6ð ZðZð 7Ô)×5Ñ5Ð6õô ×)Ñ)×0Ñ0°Ó6Ð6rE   rU   r;   c                 ó¼   •— |dk(  r | j                   |g|¢­Ž S |dk(  r-|\  }| j                  |t        j                  |d«      |«       | S t        ‰| �  ||||«      S )Nr  Úwith_tracebackr  )rû   r.   r‘   r@   r™   )rB   rT   rU   r{   r;   rð   rC   s         €rD   r™   zExceptionVariable.call_method“  so   ø€ ð �=Ò Ø$�4×$Ñ$ RÐ/¨$Ò/Ð/ØÐ%Ò%Ø‰DˆRØ×Ñ˜b¤/×"7Ñ"7¸¸OÓ"LÈbÔQØˆKä‘7Ñ& r¨4°°vÓ>Ð>rE   c                 óš  •— |dk(  r t        j                  || j                  «      S |dk(  r| j                  S |dk(  r| j                  S |dk(  r| j
                  S |dk(  r| j                  S |dk(  rMt        j                  |t        | j                  «      | j                  xr t        | j                  d«      ¬«      S t        ‰| �1  ||«      S )NrC   r	  r
  r  r  r{   rt   )r.   r‘   r  r	  r
  r  r  rÑ   r{   r^   r   r@   rz   rá   s      €rD   rz   zExceptionVariable.var_getattr£  sÅ   ø€ Ø�;ÒÜ"×(Ñ(¨¨T¯]©]Ó;Ð;Ø�]Ò"Ø×#Ñ#Ð#Ø�[Ò Ø—>‘>Ð!ØÐ+Ò+Ø×,Ñ,Ð,Ø�_Ò$Ø×%Ñ%Ð%Ø�VŠ^Ü"×(Ñ(ØÜ�d—i‘iÓ Ø—{‘{ÒF¤z°$·+±+¸vÓ'Fôð ô
 ‰wÑ" 2 tÓ,Ð,rE   c                 óN   — | j                   j                  › d| j                  › d�S )Nú(ú))rC   r€   r  rI   s    rD   Ú__str__zExceptionVariable.__str__¶  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©M¨?¸!Ð<Ð<rE   Úargc                 ót   — 	 t        | j                  «       «      S # t        $ r | j                  «       cY S w xY wrG   )Úreprr]   Ú	ExceptionÚ
debug_repr©r%  s    rD   Ú_debug_format_argz#ExceptionVariable._debug_format_arg»  s7   € ð	$Ü˜×.Ñ.Ó0Ó1Ð1øÜò 	$Ø—>‘>Ó#Ò#ð	$ús   ‚ ›7¶7c                 óx   ‡ — dj                  ˆ fd„‰ j                  D «       «      }‰ j                  «       › d|› d�S )Nú, c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrG   )r+  )Ú.0r%  rB   s     €rD   ú	<genexpr>z/ExceptionVariable.debug_repr.<locals>.<genexpr>Ã  s   øè ø€ ÒJ¸˜×/Ñ/°×4ÑJùs   ƒr"  r#  )Újoinr{   Úpython_type_name)rB   r{   s   ` rD   r)  zExceptionVariable.debug_reprÂ  s8   ø€ Ø�y‰yÓJÀÇ	Á	ÔJÓJˆØ×'Ñ'Ó)Ð*¨!¨D¨6°Ð3Ð3rE   )NNNrÍ   )r€   r‚   rÎ   ÚBaseExceptionrÏ   r   rÒ   r.   rÓ   r§   r   r   rA   r  rS   r`   rJ   rû   r™   rz   r$  Ú__repr__rš   r+  r)  rÔ   rÕ   s   @rD   r  r    se  ø„ à!€Mð :>Ø $Ø-1ñ@àð@ð �?Ñ#ð@ð ˜#˜Ð.Ñ/°$Ñ6ð	@ð
 ˜‘ð@ð $ dÑ*ð@ð 
õ@ðB# ?ð #°tó #ó-ð*˜Tó ð67à#ð67ð "ð67ð ð	67ð
 
ó67ðp?à#ð?ð ð?ð �?Ñ#ð	?ð
 �S˜/Ð)Ñ*ð?ð 
õ?ð -Ð5ð -¸Sð -À_õ -ð&=˜ó =ð €Hàð$˜ð $°3ò $ó ð$ð4˜C÷ 4rE   r  c                   ó   — e Zd ZdZy)ÚUnknownVariablez
    It could be anything!
    N©r€   r‚   rÎ   Ú__doc__r?   rE   rD   r6  r6  Ç  s   „ òrE   r6  c                   ó`   ‡ — e Zd ZdZddedz  deddfˆ fd„Zddd	ee   de	eef   defd
„Z
ˆ xZS )ÚDelayGraphBreakVariablez^
    Used to insert a dummy variable in the stack to do the graph break at CALL_FUNCTION.
    NÚmsgr;   r<   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   )r@   rA   r;  )rB   r;  r;   rC   s      €rD   rA   z DelayGraphBreakVariable.__init__Ò  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�rE   rT   r6   r{   c                 ó¤   — | j                   €dn| j                   j                  }t        dd| j                   › �d|› d| j                  › �g ¬«       y )NrW   z#Unsupported function call (delayed)zsource: z@Dynamo determined that a graph break should occur when calling `z`. Reason: rX   )r^   rU   r   r;  )rB   rT   r{   r;   rU   s        rD   r’   z%DelayGraphBreakVariable.call_functionÖ  sS   € ð —[‘[Ð(‰r¨d¯k©k×.>Ñ.>ˆÜØ9Ø˜tŸ{™{˜mÐ,ðØ!˜F +¨d¯h©h¨Zð9àö	
rE   rG   )r€   r‚   rÎ   r8  r§   r   rA   r   r.   rÓ   r’   rÔ   rÕ   s   @rD   r:  r:  Í  s`   ø„ ññ˜C $™Jð ¸ð Àõ ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
rE   r:  c                   óT   — e Zd ZdZdd„Zdddedefd„Zddd	ee   d
e	eef   defd„Z
y)ÚComptimeVariableza
    This variable is special, it lets you execute arbitrary code at
    Dynamo compile time
    r<   Nc                 ó   — t        d«      ‚)Nzcomptime is special form)r£   ©rB   rN   s     rD   rS   zComptimeVariable.reconstructì  s   € Ü!Ð"<Ó=Ð=rE   rT   r6   rU   c                 ó–   — ddl m } | j                  €J ‚t        j                  |t	        ||«      t        | j                  |«      ¬«      S )Nr   )Úcomptimert   )rC  r^   r.   r‘   re   r   )rB   rT   rU   rC  s       rD   rz   zComptimeVariable.var_getattrï  sA   € Ý'à�{‰{Ð&Ð&Ð&ä×$Ñ$Ø”˜ $Ó'´
¸4¿;¹;ÈÓ0Mô
ð 	
rE   r{   r;   c           
      ó¾  — ddl m} |st        |«      dkD  r&t        |ddt        |«      › dt        |«      › d�«       |d   }t	        |t
        «      r |j                  «        ||«      «       nÑt	        |t        «      rª|j                  «       }|j                  rt        |d|j                  › �«       t        j                  ||j                  |j                  j!                  «       |j"                  rt%        |j"                  j&                  «      nd d	«      } | ||«      «       nt)        d
t+        |«      › �«      ‚t,        j.                  j1                  d «      S )Nr   )ÚComptimeContextz
comptime()zat most 2 args and 0 kwargsz
 args and ú kwargsr   zOcomptime function must not have free variables, but these variables were free: r?   z"unsupported argument to comptime: )rC  rE  rg   r*   r�   r1   Úget_functionr0   Úget_codeÚclosurer   Úco_freevarsr›   rœ   Ú	f_globalsÚfn_namer]   ÚdefaultsrÑ   r²   ÚRuntimeErrorr`   r   r/   ry   )rB   rT   r{   r;   rE  ÚfnÚcoderÅ   s           rD   r’   zComptimeVariable.call_functionø  s-  € õ 	/ñ ”S˜“Y ’]ÜØØØ-Ü�t“9�+˜Z¬¨F« }°GÐ<ô	ð �!‰WˆÜ�bÔ.Ô/ØˆB�O‰OÓ™o¨bÓ1Õ2Ü˜Ô6Ô7à—;‘;“=ˆDØ�zŠzÜ ØØeÐfj×fvÑfvÐewÐxôô ×%Ñ%ØØ—‘Ø—
‘
×-Ñ-Ó/à,.¯KªK”�b—k‘k×'Ñ'Ô(¸Tð óˆDñ ‘ Ó$Õ%äÐ!CÄDÈÃHÀ:ÐNÓOÐOä×)Ñ)×0Ñ0°Ó6Ð6rE   rÍ   )r€   r‚   rÎ   r8  rS   r§   r.   rz   r   rÓ   r’   r?   rE   rD   r?  r?  æ  sa   „ ñó
>ð
Ð5ð 
¸Sð 
À_ó 
ð-7à#ð-7ð �Ñ'ð-7ð �S˜/Ð)Ñ*ð	-7ð
 
ô-7rE   r?  c                   ó€   ‡ — e Zd ZU ej                  Zedz  ed<   dZe	dz  ed<   	 ddedz  de
ddfˆ fd„Zdefd„Zˆ xZS )	ÚCellVariableNÚpre_existing_contentsÚ
local_namer;   r<   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   )r@   rA   rS  )rB   rS  r;   rC   s      €rD   rA   zCellVariable.__init__8  s   ø€ ô 	‰ÑÑ"˜6Ò"Ø%:ˆÕ"rE   c                 ó"   — t         j                  S rG   )r›   ÚCellTyperI   s    rD   rJ   zCellVariable.python_type>  s   € Ü�~‰~ÐrE   rG   )r€   r‚   rÎ   r›   rW  rÏ   r.   Ú__annotations__rT  r§   r   rA   r`   rJ   rÔ   rÕ   s   @rD   rR  rR  (  s]   ø… à—N‘N€Mð +¨TÑ1Ó1ð "€J��d‘
Ó!ð ?Cñ;Ø%4°tÑ%;ð;ØNQð;à	õ;ð˜T÷ rE   rR  c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )ÚNewGlobalVariabler;   r<   Nc                 ó$   •— t        ‰| �  di |¤Ž y r>   ©r@   rA   ©rB   r;   rC   s     €rD   rA   zNewGlobalVariable.__init__C  ó   ø€ Ü‰ÑÑ"˜6Ó"rE   )r€   r‚   rÎ   r   rA   rÔ   rÕ   s   @rD   rZ  rZ  B  s   ø„ ð# ð #¨÷ #ñ #rE   rZ  Úfn_clsr<   .c                 óN   ‡ — dt         dt         dt         fˆ fd„}t        |_        |S )Nr{   r;   r<   c                  ó(   •—  ‰j                   | i |¤ŽS rG   )Úapply)r{   r;   r_  s     €rD   Útrampoline_autograd_applyzDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_applyH  s   ø€ Øˆv�|‰|˜TÐ, VÑ,Ð,rE   )r   Ú!produce_trampoline_autograd_applyÚ_origin)r_  rc  s   ` rD   rd  rd  G  s/   ø€ ð-¬ð -¼ð -Äõ -ô )JÐÔ%Ø$Ð$rE   c            
       óþ   ‡ — e Zd ZdZdhej
                  £Zdededdfˆ fd„Zdefd„Z	dd	d
e
e   deeef   defd„Zdd	d
e
e   deeef   defd„Zdd	d
ee   deeef   dd fd„Zdd	ded
e
e   deeef   def
d„Zˆ xZS )ÚAutogradFunctionVariablez-represents a torch.autograd.Function subclassr_  r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   )r@   rA   r_  )rB   r_  r;   rC   s      €rD   rA   z!AutogradFunctionVariable.__init__X  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�rE   c                 ó   — t         S rG   ©r`   rI   s    rD   rJ   z$AutogradFunctionVariable.python_type\  ó   € ÜˆrE   rT   r6   r{   c           	      ó>  ‡‡— dŠdt         dd fˆˆfd„}t        j                  |||f«       ‰�rzt        j                  «       �re| j                  }ddlm} ddlm} | j                  j                  } || j                  j                  «      }	|	r3 || j                  j                  | j                  j                  «      }d }| j                  j                  }
|
t        j                  j                  j                  ur*t        dd	| › d
|› d
|› �dddgt         j"                  ¢¬«       | j                  j$                  }|t        j                  j                  j$                  ur)t        dd	| › d
|› d
|› �ddgt         j"                  ¢¬«       ddlm} |€E|	sCt+        ‰j-                  | j                  j.                  «      | j                  j0                  «      }|xr t+        |d¬«      } ||| j                  j2                  ||¬«      j5                  ‰||«      }| j                  r~|	r|t+        | j                  d«      }t7        |j9                  t:        j<                  «      «       t+        | j                  d«      }t7        |j9                  t:        j<                  «      «       |S | j                  rt+        | j                  d«      }nd }| j                  j                  }t>        jA                  ‰||«      }|g|¢}tC        |tD        jF                  «      rjtI        jJ                  |«      }tM        |«      dz
  tM        |jN                  «      k(  r|dd  }t        jP                  ‰||d¬«      }|j5                  ‰||«      S tC        |tD        jR                  «      rPtU        jV                  |jX                  tU        jZ                  | j                  «      |¬«      j5                  ‰||«      S t        dd	| › d
|› d
|› �dt]        |«      j0                  › d�dg¬«       y )NFr³   r<   c                 ó¤   •— | j                  «       r| j                  durdŠt        | t        j                  «      r| j                  ‰«      rdŠy y y )NFT)Ú	is_tensorÚrequires_gradr�   r   ÚNNModuleVariableÚis_training)r³   ro  rT   s    €€rD   Úvisitz2AutogradFunctionVariable.call_apply.<locals>.visitg  sJ   ø€ à�|‰|Œ~à×#Ñ#¨5Ñ0Ø$(�MÜ˜"œi×8Ñ8Ô9Ø—>‘> "Ô%Ø$(‘Mð &ð :rE   r   )Ú#autograd_function_forward_rewritten)Ú_is_setup_context_definedzUnsupported custom vjpzcall_apply r   zgDynamo does not support tracing `torch.autograd.Function` subclasses that define a custom `vjp` method.z+Remove the custom `vjp` method if possible.z.Use standard `backward` instead if applicable.rX   zUnsupported custom jvpzgDynamo does not support tracing `torch.autograd.Function` subclasses that define a custom `jvp` method.z+Remove the custom `jvp` method if possible.r+   )ÚAutogradFunctionApplyVariablerb  )r˜   rt   ÚforwardÚsetup_contextTrƒ   z=Non-function or method in subclass of torch.autograd.FunctionzˆDynamo requires the `forward` attribute of a `torch.autograd.Function` subclass to be a standard Python function or method. Found type `z
` instead.zPEnsure the `forward` method is defined as a regular function or instance method.)/r.   rr  r‹   Úis_grad_enabledr^   Ú"torch._functorch.autograd_functionrs  Útorch.autograd.functionrt  r_  rv  rw  ÚvjpÚautogradÚFunctionr   r   rÿ   ÚjvpÚhigher_order_opsru  r   Úimport_sourcer‚   r€   Úbackwardr’   r   rw   r   ÚCLOSURE_MATCHÚAutogradFunctionContextVariablery   r�   r›   rœ   ÚinspectÚ	signaturerg   Ú
parametersr‘   rŸ   r   r    r…   r•   r`   )rB   rT   r{   r;   rr  r^   rs  rt  Ú
forward_fnÚis_setup_ctx_definedÚvjp_fnÚjvp_fnru  Úapply_sourcer÷   Úfwd_srcÚsetup_ctx_srcrO  ÚctxÚsigr¹   ro  s    `                   @rD   Ú
call_applyz#AutogradFunctionVariable.call_apply_  s¯  ù€ ð ˆð	)”oð 	)¨$ö 	)ô 	×Ñ˜e d¨F ^Ô4âœU×2Ñ2Õ4Ø—[‘[ˆFõõ JàŸ™×,Ñ,ˆJá#<¸T¿[¹[×=VÑ=VÓ#WÐ Ù#ñ AØ—K‘K×'Ñ'¨¯©×)BÑ)Bó�
ð �à—[‘[—_‘_ˆFØœUŸ^™^×4Ñ4×8Ñ8Ñ8ÜØ4Ø)¨$¨¨q°°°a¸°xÐ@ð!-ð FØHðô +×6Ñ6ðõð —[‘[—_‘_ˆFØœUŸ^™^×4Ñ4×8Ñ8Ñ8ÜØ4Ø)¨$¨¨q°°°a¸°xÐ@ð!-ð Fðä*×6Ñ6ðõ
õ Hàˆ~Ñ&:Ü#Ø×$Ñ$ T§[¡[×%;Ñ%;Ó<¸d¿k¹k×>RÑ>Ró�ð "ÒH¤j°ÀÔ&HˆLÙ/ØØ—‘×$Ñ$ØØ#ô	÷
 ‰m˜B  fÓ-ð ð �{Š{Ñ3Ü$ T§[¡[°)Ó<�Ü˜g×0Ñ0´×1KÑ1KÓLÔMÜ *¨4¯;©;¸Ó H�Ü˜m×6Ñ6´|×7QÑ7QÓRÔSàˆJà�;Š;Ü §¡¨YÓ7‰FàˆFà�[‰[× Ñ ˆÜ-×4Ñ4°R¸¸vÓFˆØˆ|�dˆ|ˆÜ�bœ%×,Ñ,Ô-Ü×#Ñ# BÓ'ˆCÜ�4‹y˜1‰}¤ C§N¡NÓ 3Ò3Ø˜A˜B�x�Ü#×)Ñ)¨"¨b¸ÈÔNˆEØ×&Ñ& r¨4°Ó8Ð8Ü˜œE×,Ñ,Ô-Ü×/Ñ/Ø—‘Ü×2Ñ2°4·;±;Ó?Øô÷ ‰m˜B  fÓ-ð	.ô ØWØ% d V¨1¨T¨F°!°F°8Ð<ð3ä37¸³8×3DÑ3DÐ2EÀZðQð3ðö
rE   c                 ó‚  — | j                   j                  }t        |d   j                  «      t        j
                  j                  j                  u sJ ‚t        |t        j                  «      sJ ‚| j                  €J ‚t        | j                  d«      }t        j                  |||d¬«      }|j                  |||«      S )Nr   r�  Trƒ   )r_  r�  r`   ra   r‹   Ú_dynamoÚexternal_utilsÚFakeBackwardCFunctionr�   r›   rœ   r^   r   r.   r‘   r’   )rB   rT   r{   r;   rO  Ú	fn_sourcer¹   s          rD   Úcall_backwardz&AutogradFunctionVariable.call_backwardÜ  sŸ   € ð �[‰[×!Ñ!ˆä�D˜‘G—M‘MÓ"¤e§m¡m×&BÑ&B×&XÑ&XÑXÐXÐXÜ˜"œe×0Ñ0Ô1Ð1Ð1Ø�{‰{Ð&Ð&Ð&Ü˜tŸ{™{¨JÓ7ˆ	Ü×%Ñ% b¨"°YÈÔMˆØ×"Ñ" 2 t¨VÓ4Ð4rE   c                 ó,   — t        | j                  «      S rG   )rg  r_  ©rB   rT   r{   r;   s       rD   r’   z&AutogradFunctionVariable.call_functionë  s   € ô (¨¯©Ó4Ð4rE   rU   c           
      ó¤  — ddl m} |dk(  rwt        j                  | j                  «      rEt        | j                  «      } || |j                  j                  d|gt        ||«      ¢­Ž ¬«      S | j                  |||«      S |dk(  r| j                  |||«      S | j                  �t        | j                  |«      nd }	 t        j                  | j                  |«      }t!        |t"        «      rs|j%                  | j                  «      }	t        j&                  |	«      }
|
€J ‚|�$|
j)                  |	|¬«      j+                  |||«      S  |
|	«      j+                  |||«      S t!        |t,        «      r3t/        j0                  |j2                  | |¬«      j+                  |||«      S t5        dd	| › d
|› �d|› d�dg¬«       y # t        $ r d }Y Œîw xY w)Nr+   )Úwrap_fx_proxyrb  r’   )rT   Úproxyr�  rt   z$Unsupported autograd.Function methodr~   r   ú,Dynamo does not support calling the method `z‡` directly on the `torch.autograd.Function` instance. Supported methods include `apply`, `backward`, static methods, and class methods.znEnsure the method is decorated with `@staticmethod` or `@classmethod` if it's meant to be called on the class.rX   )Úbuilderrš  r   Úis_callable_allowedr_  rd  r¤   Úcreate_proxyr)   r�  r–  r^   r   r„  Úgetattr_staticr¯   r�   rš   Ú__get__ÚlookupÚcreate_with_sourcer’   r�   r   r    r…   r   )rB   rT   rU   r{   r;   rš  rc  r^   ré   rÅ   Útraceds              rD   r™   z$AutogradFunctionVariable.call_methodó  sç  € õ 	+à�7Š?Ü×.Ñ.¨t¯{©{Ô;Ü,MØ—K‘Kó-Ð)ñ %ØØ0˜"Ÿ)™)×0Ñ0Ø'Ø1ðô +¨4°Ó8òôð ð —‘ r¨4°Ó8Ð8à�ZÒØ×%Ñ% b¨$°Ó7Ð7à6:·k±kÐ6M”Z §¡¨TÔ2ÐSWˆFðÜ×,Ñ,¨T¯[©[¸$Ó?�ô ˜#œ|Ô,Ø—{‘{ 4§;¡;Ó/�Ü$×+Ñ+¨DÓ1�ØÐ)Ð)Ð)ØÐ%ð ×1Ñ1°$¸vÐ1ÓF×TÑTØ  fóðñ " $›<×5Ñ5°b¸$ÀÓGÐGÜ˜C¤Ô-Ü ×3Ñ3Ø—L‘L $¨vôç‘-  D¨&Ó1ð2ô ØBØ*¨4¨&°°$°Ð8ð!Ø�vð 9ð!9ð
Uðöøô- "ò Ø’ðús   Ã  G ÇGÇG)r€   r‚   rÎ   r8  r.   rÐ   r   rA   r`   rJ   rÒ   rÓ   r§   r�  r–  r   r’   r™   rÔ   rÕ   s   @rD   rg  rg  P  sD  ø„ Ù7ð 	ðà	×	'Ñ	'ð€Nð
˜sð ¨cð °dõ ð˜Tó ð{à#ð{ð �?Ñ#ð{ð �S˜/Ð)Ñ*ð	{ð
 
ó{ðz5à#ð5ð �?Ñ#ð5ð �S˜/Ð)Ñ*ð	5ð
 
ó5ð5à#ð5ð �Ñ'ð5ð �S˜/Ð)Ñ*ð	5ð
 
$ó5ð@à#ð@ð ð@ð �?Ñ#ð	@ð
 �S˜/Ð)Ñ*ð@ð 
÷@rE   rg  c                   óD   — e Zd ZU  ej                  e¬«      Zee   ed<   y)ÚSavedTensorBox)Údefault_factoryÚtensorsN)	r€   r‚   rÎ   ÚdataclassesÚfieldrÒ   r¨  r.   rX  r?   rE   rD   r¦  r¦  6  s   … à%6 [×%6Ñ%6ÀtÔ%L€GˆT�/Ñ"ÔLrE   r¦  c                   ó,  ‡ — e Zd ZdZdddhej
                  £Z	 	 	 	 	 ddededz  dededz  de	ed	f   dz  d
edz  deddfˆ fd„Z
e	 	 ddddee   dz  deeef   dz  defd„«       Zdefd„Zdddedee   deeef   def
ˆ fd„Zdddedefˆ fd„Zˆ xZS )rƒ  zZ
    Tracks an autograd.Function() context using mutation tracking in side_effects.py
    r›  Ú	inferenceÚsaved_tensorsNra   rž   Úneeds_input_grad.Únon_differentiabler;   r<   c                 ób   •— t        ‰| �  d||dœ|¤Ž || _        || _        || _        || _        y ©N)ra   rž   r?   )r@   rA   r¬  r­  r®  r¯  )	rB   ra   rž   r¬  r­  r®  r¯  r;   rC   s	           €rD   rA   z(AutogradFunctionContextVariable.__init__G  s;   ø€ ô 	‰ÑÐF˜u°ÑF¸vÒFØ"ˆŒØ*ˆÔØ 0ˆÔØ"4ˆÕrE   rT   r6   r{   c           
      ó  — d }|r|st        d„ |D «       «      }| j                  j                  j                  d t        j
                  j                  j                  t        j                  t        dt        «       |¬«      i «      }|S )Nc              3   óX   K  — | ]"  }|j                  «       xr |j                  –— Œ$ y ­wrG   )rn  ro  ©r/  Úxs     rD   r0  z9AutogradFunctionContextVariable.create.<locals>.<genexpr>`  s"   è ø€ Ò$UÈ1 Q§[¡[£]Ò%F°q·±Ó%FÑ$Uùs   ‚(*T)r¬  r­  r®  )rÑ   r¤   rŽ   Útrack_object_newr‹   r|  ÚfunctionÚFunctionCtxÚ	functoolsÚpartialrƒ  r¦  )rT   r{   r;   r®  Úouts        rD   ry   z&AutogradFunctionContextVariable.createW  sz   € ð  ÐÙ™ä$Ñ$UÐPTÔ$UÓUÐØ�i‰i×$Ñ$×5Ñ5ØÜ�N‰N×#Ñ#×/Ñ/Ü×ÑÜ/ØÜ,Ó.Ø!1ô	ð ó

ˆð ˆ
rE   c                 óv   — | j                   €"t        dd| › �dg t        j                  ¢¬«       | j                   S )Nzproxy not setz	as_proxy zMDynamo requires the autograd.Function context to be initialized with a proxy.rX   )r›  r   r   r¦   rI   s    rD   Úas_proxyz(AutogradFunctionContextVariable.as_proxyn  sA   € à�:‰:ÐÜØ'Ø# D 6Ð*ð2à5Ô)×4Ñ4Ð5õð �z‰zÐrE   rU   c                 ó*  •— |dk(  rt         ‰| �  ||||«      S |dk(  rO|rt        ||dt        |«      › d�«       t	        |i «      d   | _        t        j                  j                  d «      S |dk7  r)t        dd| › d	|› �d
|› d�g t        j                  ¢¬«       | j                  €t        dd| › d	|› �ddg¬«       | j                  €J ‚| j                  s@|s| j                  st        |d«       |j                   j"                  j%                  | |«       t        | j                  j&                  «      dkD  rg | j                  _        |D ]'  }| j                  j&                  j)                  |«       Œ) t        j                  j                  d «      S )Nr  Úmark_non_differentiablez0 kwargsrF  r   Úsave_for_backwardz,Unsupported autograd.Function context methodr~   r   rœ  z�` on `autograd.Function` context objects. Supported methods are `__setattr__`, `save_for_backward` and `mark_non_differentiable`.rX   z9Unsupported autograd.Function context `save_for_backward`zjDynamo requires the `saved_tensors` attribute to be initialized on the `autograd.Function` context object.zÆEnsure that the `saved_tensors` attribute is properly initialized before calling `save_for_backward`. `save_for_backward` only supported on a newly constructed `torch.autograd.function.FunctionCtx`.z>save_for_backward() requires a source and no keyword arguments)r@   r™   r*   rg   r)   r¯  r   r/   ry   r   r   rÿ   r­  r¬  r^   r   r¤   rŽ   Útrack_save_for_backwardr¨  Úappend)rB   rT   rU   r{   r;   r%  rC   s         €rD   r™   z+AutogradFunctionContextVariable.call_method{  s­  ø€ ð �=Ò Ü‘7Ñ& r¨4°°vÓ>Ð>ØÐ.Ò.ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRÜ&7¸¸bÓ&AÀ!Ñ&DˆDÔ#Ü×-Ñ-×4Ñ4°TÓ:Ð:àÐ&Ò&ÜØFØ& t f¨A¨d¨VÐ4ðØ�6ð -ð-ð 7Ô)×5Ñ5Ð6õð ×ÑÐ%ÜØSØ& t f¨A¨d¨VÐ4ðOðwðõ
ð ×!Ñ!Ð-Ð-Ð-Ø�~Š~Ù˜TŸ[š[Ü ØÐXôð �I‰I×"Ñ"×:Ñ:¸4ÀÔFô ˆt×!Ñ!×)Ñ)Ó*¨QÒ.à)+ˆD×ÑÔ&Øò 	3ˆCØ×Ñ×&Ñ&×-Ñ-¨cÕ2ð	3ä×)Ñ)×0Ñ0°Ó6Ð6rE   c                 óæ  •‡ ‡‡— ‰dv rt        ˆˆ ˆfd„«      S ‰dk(  r>‰ j                  �2t        j                  t	        ‰ j                  j
                  «      «      S ‰dk(  r‚‰ j                  �)t        j                  j                  ‰ j                  «      S ‰ j                  rAt        ‰ j                  d«      }t        j                  ‰‰ j                  j                  |«      S t        ‰‰ �=  ‰‰«      S )N)rÀ  r¿  c                  ó>   •— ‰j                  ‰‰t        | «      |«      S rG   )r™   rÒ   )r{   r;   rU   rB   rT   s     €€€rD   rO   z=AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>³  s   ø€ ¨×(8Ñ(8¸¸TÄ4ÈÃ:ÈvÓ(V€ rE   r­  r®  )rŠ   r­  r   r   rÒ   r¨  r®  r/   ry   r^   r   r.   r‘   ra   r@   rz   ©rB   rT   rU   r^   rC   s   ``` €rD   rz   z+AutogradFunctionContextVariable.var_getattr°  sÎ   û€ ØÐCÑCÜ!ÝVóð ð �?Ò" t×'9Ñ'9Ð'EÜ×*Ñ*¬4°×0BÑ0B×0JÑ0JÓ+KÓLÐLØÐ%Ò%Ø×$Ñ$Ð0Ü ×1Ñ1×8Ñ8¸×9NÑ9NÓOÐOØ�{Š{Ü# D§K¡KÐ1CÓD�ä&×,Ñ,¨R°·±×1LÑ1LÈfÓUÐUä‰wÑ" 2 tÓ,Ð,rE   )NFNNN©NN)r€   r‚   rÎ   r8  r4   rÐ   r   r`   r  rÑ   rA   rš   r   r.   rÓ   r§   ry   r½  rÒ   r™   rz   rÔ   rÕ   s   @rD   rƒ  rƒ  ;  sr  ø„ ñð
 	ØØðð 
#×	1Ñ	1ð	€Nð #'ØØ$(Ø48Ø)-ñ5àð5ð ˜4‘Kð5ð ð	5ð
 ˜T‘zð5ð    c 	Ñ*¨TÑ1ð5ð   $™Jð5ð ð5ð 
õ5ð  ð 26Ø48ñØ#ðà�Ñ'¨$Ñ.ðð �S˜/Ð)Ñ*¨TÑ1ðð 
ò	ó ðð,˜#ó ð37à#ð37ð ð37ð �?Ñ#ð	37ð
 �S˜/Ð)Ñ*ð37ð 
õ37ðj-Ð5ð -¸Sð -À_÷ -ñ -rE   rƒ  c            
       óÀ   ‡ — e Zd ZdZ	 ddej
                  j                  deej
                  j                     dz  deddfˆ fd„Z	dd	d
e
dee   dee
ef   def
d„Zˆ xZS )ÚAutogradEngineVariablez;
    Represents a torch._C._ImperativeEngine instance.
    Nra   rž   r;   r<   c                 ó*   •— t        ‰| �  d||dœ|¤Ž y r±  r\  )rB   ra   rž   r;   rC   s       €rD   rA   zAutogradEngineVariable.__init__Ç  s   ø€ ô 	‰ÑÐF˜u°ÑF¸vÓFrE   rT   r6   rU   r{   c                 óè  — |dk(  rÔt         j                  j                  j                  rš|j                  s|j
                  sJ d«       ‚t        j                  |t         j                  j                  j                  j                  «      }|j                  ||j                  j                  j                  «       g|¢­|«      S t        dd| › d|› �dg ¬«       y t        dd| › d|› �d	|› d
�g ¬«       y )NÚqueue_callbackzXqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=Truez7Unsupported torch._C._ImperativeEngine.queue_callback()r~   r   zYqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=True.rX   z-Unsupported torch._C._ImperativeEngine methodzgDynamo only supports the `queue_callback` method on a torch._C._ImperativeEngine instance, but found: `z`.)r‹   r’  Úcompiled_autogradÚin_compiled_autograd_regionÚ	one_graphÚerror_on_graph_breakr.   r‘   r“  ÚFakeCompiledAutogradEnginerË  r’   r¤   rŽ   Úget_ca_final_callbacks_varr   )rB   rT   rU   r{   r;   r¹   s         rD   r™   z"AutogradEngineVariable.call_methodÏ  sÿ   € ð Ð#Ò#Ü�}‰}×.Ñ.×JÒJØ—|’| r×'>Ò'>ð ØnóÐ>ô (×-Ñ-ØÜ—M‘M×0Ñ0×KÑK×ZÑZó�ð ×*Ñ*ØØ—Y‘Y×+Ñ+×FÑFÓHÐPÈ4ÑPØóð ô ØUØ*¨4¨&°°$°Ð8ð!Hàöô ØGØ& t f¨A¨d¨VÐ4ðIØIMÈÈbðRàörE   rG   )r€   r‚   rÎ   r8  r‹   r°   Ú_ImperativeEnginer`   r   rA   r§   rÒ   r.   rÓ   r™   rÔ   rÕ   s   @rD   rÈ  rÈ  Â  s    ø„ ñð ?CñGà�x‰x×)Ñ)ðGð ˜Ÿ™×3Ñ3Ñ4°tÑ;ðGð ð	Gð
 
õGð%à#ð%ð ð%ð �?Ñ#ð	%ð
 �S˜/Ð)Ñ*ð%ð 
÷%rE   rÈ  c                   ój   ‡ — e Zd Zdedef   deddfˆ fd„Zdefd„Zdd	d
e	e   de
eef   defd„Zˆ xZS )rŠ   rO  .r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   )r@   rA   rO  )rB   rO  r;   rC   s      €rD   rA   zLambdaVariable.__init__ù  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�rE   c                 ó"   — t         j                  S rG   )r›   rœ   rI   s    rD   rJ   zLambdaVariable.python_typeý  s   € Ü×!Ñ!Ð!rE   rT   r6   r{   c                 ó&   —  | j                   |i |¤ŽS rG   )rO  r˜  s       rD   r’   zLambdaVariable.call_function   s   € ð ˆt�w‰w˜Ð' Ñ'Ð'rE   )r€   r‚   rÎ   r   r.   r   rA   r`   rJ   r   rÓ   r§   r’   rÔ   rÕ   s   @rD   rŠ   rŠ   ÷  sm   ø„ ð˜8 C¨Ð$8Ñ9ð ÀSð ÈTõ ð"˜Tó "ð(à#ð(ð �Ñ'ð(ð �S˜/Ð)Ñ*ð	(ð
 
÷(rE   rŠ   c                   ó  ‡ — e Zd Zddhej                  £Z	 ddedededz  deddf
ˆ fd„Zdefˆ fd„Z	defd	„Z
ed
ej                  j                  dedefd„«       Zdefd„Zdefd„Zdddedefd„Zdd„Zdddee   deeef   defd„Zˆ xZS )rv   rU   rs   Nré   r;   r<   c                 ó–   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚t        |t        «      sJ ‚|| _        || _        || _        y r>   )r@   rA   r�   r.   r§   ré   rU   rs   )rB   ré   rU   rs   r;   rC   s        €rD   rA   zGetAttrVariable.__init__  sJ   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜#œÔ/Ð/Ð/Ü˜$¤Ô$Ð$Ð$ØˆŒØˆŒ	Øˆ�rE   c                 óP   •— | j                   �| j                   S t        ‰| �	  «       S rG   )rs   r@   rJ   ©rB   rC   s    €rD   rJ   zGetAttrVariable.python_type  s%   ø€ Ø�<‰<Ð#Ø—<‘<Ðä‘7Ñ&Ó(Ð(rE   c                 óh   — | j                   j                  › d| j                  › d| j                  › d�S ©Nr"  r-  r#  )rC   r€   ré   rU   rI   s    rD   r4  zGetAttrVariable.__repr__$  s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯H©H¨:°R¸¿	¹	°{À!ÐDÐDrE   Ú
base_proxyr¿   c                 ó   — t        | |«      S rG   )re   )rÝ  r¿   s     rD   Úcreate_getattr_proxyz$GetAttrVariable.create_getattr_proxy'  s   € ä�z 4Ó(Ð(rE   c                 ór   — t         j                  | j                  j                  «       | j                  «      S rG   )rv   rß  ré   r½  rU   rI   s    rD   r½  zGetAttrVariable.as_proxy+  s&   € Ü×3Ñ3°D·H±H×4EÑ4EÓ4GÈÏÉÓSÐSrE   c                 óœ   — | j                   j                  «       }	 t        || j                  «      S # t        $ r t        | › d�«      d ‚w xY w)Nz is not a constant)ré   r]   re   rU   r¯   r£   )rB   Úconstants     rD   r]   z"GetAttrVariable.as_python_constant.  sQ   € Ø—8‘8×.Ñ.Ó0ˆð	MÜ˜8 T§Y¡YÓ/Ð/øÜò 	MÜ%¨¨Ð.@Ð&AÓBÈÐLð	Mús	   œ2 ²ArT   r6   c                 ó„  — t        | j                  t        j                  «      st        ‚|j
                  j                  | j                  j                  «      }| j                  |j                  vrt        ‚t        j                  || j                  «      }||j                  vrt        ‚t        j                  ||«      S rG   )r�   ré   r   rp  r£   r¤   Úget_submoduleÚ
module_keyrU   rh   r„  r   )rB   rT   rU   Ústep1Ústep2s        rD   Úconst_getattrzGetAttrVariable.const_getattr5  s‹   € Ü˜$Ÿ(™(¤I×$>Ñ$>Ô?Ü%Ð%Ø—	‘	×'Ñ'¨¯©×(;Ñ(;Ó<ˆØ�9‰9˜EŸN™NÑ*Ü%Ð%Ü×&Ñ& u¨d¯i©iÓ8ˆØ�u—~‘~Ñ%Ü%Ð%Ü×%Ñ% e¨TÓ2Ð2rE   c                 ó|   —  || j                   «       |j                  |j                  | j                  «      «       y rG   )ré   rQ   Úcreate_load_attrsrU   rA  s     rD   rS   zGetAttrVariable.reconstruct@  s+   € Ù�—‘ÔØ×Ñ˜g×7Ñ7¸¿	¹	ÓBÕCrE   r{   c                 ód   — | j                   j                  || j                  t        |«      |«      S rG   )ré   r™   rU   rÒ   r˜  s       rD   r’   zGetAttrVariable.call_functionD  s'   € ð �x‰x×#Ñ# B¨¯	©	´4¸³:¸vÓFÐFrE   rG   rÍ   )r€   r‚   rÎ   r.   rÐ   r§   r`   r   rA   rJ   r4  rš   r‹   ÚfxÚProxyrß  r½  r]   rè  rS   r   rÓ   r’   rÔ   rÕ   s   @rD   rv   rv   	  s%  ø„ àØðð 
×	'Ñ	'ð€Nð  $ñ	àðð ðð ˜‘ð	ð
 ðð 
õð)˜Tõ )ðE˜#ó Eð ð)¨¯©¯©ð )¸sð )Àsò )ó ð)ðT˜#ó TðM Có Mð	3Ð 7ð 	3¸sð 	3Àsó 	3óDðGà#ðGð �Ñ'ðGð �S˜/Ð)Ñ*ð	Gð
 
÷GrE   rv   c                   óì   ‡ — e Zd Zdej                  deddfˆ fd„Zdej                  fd„Zddd	ee	   de
ee	f   de	fˆ fd
„Zded   fd„Zdej                  fd„Zded   fd„Zdefd„Zdedefd„Zˆ xZS )ÚMethodWrapperVariableÚmethod_wrapperr;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   )r@   rA   rð  )rB   rð  r;   rC   s      €rD   rA   zMethodWrapperVariable.__init__N  s   ø€ Ü‰ÑÑ"˜6Ò"Ø,ˆÕrE   c                 ó   — | j                   S rG   ©rð  rI   s    rD   Úget_real_python_backed_valuez2MethodWrapperVariable.get_real_python_backed_valueR  ó   € Ø×"Ñ"Ð"rE   rT   r6   r{   c           	      ó¦  •— t        | j                  «      rxt        |d   t        j                  «      r[t        |«      dk(  rt        |«      dk(  st        |d«       |d   j                  || j                  j                  j                  «      S | j                  j                  }| j                  j                  }|dk(  rWt        |«      j                  }|t        j                  u �r t        j                  |t        «      j                  |||g|¢|«      S t         j"                  dk\  r�|t        j$                  d   u rz|dk(  ruddlm} t        |«      dk(  r5|s3	 |j+                  || j                  |d   j-                  «       «      «      S t5        d	d
| › d|› d|› �dddgt6        j8                  ¢¬«       �nO|t        j$                  d   u r|dk(  s|t        j$                  d   u �r|dk(  �r|t        j$                  d   u rdnd}t        |«      dk(  r¸|s¶	 | j                  |d   j-                  «       «      }	|d   j:                  }
|
�j|d   j-                  «       }t=        j>                  t        |«      |«      }||u r4|dk(  rtA        |
«      }
ntC        |
|«      }
t        j                  ||	|
«      S ddlm} |j+                  ||	«      S t5        d|› d�d
| › d|› d|› �d|› d�d|› d�d|› d�gt6        j8                  ¢¬«       tD        ‰| ��  |||«      S # t.        $ r t1        t.        |«       Y �Œ¨t2        $ r Y �Œ³w xY w# t2        $ r Y Œ�w xY w)Nr   r+   z2tensor attribute getter takes exactly one argumentrA   )rˆ   é   rX  r¡  )ÚSourcelessBuilderz9unsupported type.__dict__['__annotations__'].__get__ callzcall_function ú, args: ú
, kwargs: z{`torch.compile` only supports calling type.__dict__['__annotations__'].__get__ on a single constant argument (i.e. a type).zpMake sure your call to type.__dict__['__annotations__'] only has one positional argument (no keyword arguments).z„Make sure the argument to type.__dict__['__annotations__'] is a constant (i.e. type). For example, `object`, `int`, `MyCustomClass`.rX   rb   rh   zunsupported type.__dict__['z'].__get__ callz5`torch.compile` only supports calling type.__dict__['z7'].__get__ on a single constant argument (i.e. a type).z&Make sure your call to type.__dict__['zC'].__get__ only has one positional argument (no keyword arguments).z)Make sure the argument to type.__dict__['zT'].__get__ is a constant (i.e. type). For example, `object`, `int`, `MyCustomClass`.)$r'   rð  r�   r   ÚTensorVariablerg   r   rz   r—   r€   r`   rA   r‰   r.   r‘   r™   ÚsysÚversion_inforh   r�  rø  ry   r]   r¯   r   r,   r   r   rÿ   r^   r„  r   r!   r   r@   r’   )rB   rT   r{   r;   Úself_objÚwrapper_nameÚfn_objrø  rÁ   ra   r^   Úcls_valÚstatic_descrC   s                €rD   r’   z#MethodWrapperVariable.call_functionU  s�  ø€ ô & d×&9Ñ&9Ô:¼zØ�‰G”Y×-Ñ-ô@
ô ˜“I ’N¤s¨6£{°aÒ'7Ü ØÐLôð ˜‘7×&Ñ& r¨4×+>Ñ+>×+GÑ+G×+PÑ+PÓQÐQð ×&Ñ&×/Ñ/ˆØ×*Ñ*×3Ñ3ˆð ˜:Ò%Ü˜(“^×,Ñ,ˆFØœŸ™Ò(Ü&×,Ñ,¨R´Ó8×DÑDØØ àÐ% Ð%Øóð ô ×Ñ Ò'ð œDŸM™MÐ*;Ñ<Ñ<Ø 	Ò)å2ä�4‹y˜AŠ~¡fðØ,×3Ñ3Ø˜D×/Ñ/°°Q±×0JÑ0JÓ0LÓMóð ô ØSØ(¨¨¨h°t°f¸JÀvÀhÐOð?ðFðRðô
 '×2Ñ2ð÷ð œ$Ÿ-™-¨	Ñ2Ñ2°|ÀyÒ7PØœŸ™ jÑ1Ò1°lÀiÓ6Oð &¬¯©°yÑ)AÑA‘	Àzð ô �4‹y˜AŠ~¡fð?Ø ×/Ñ/°°Q±×0JÑ0JÓ0LÓM�Eð " !™WŸ^™^�FØÐ)Ø"& q¡'×"<Ñ"<Ó">˜Ü&-×&<Ñ&<¼TÀ'»]ÈIÓ&V˜Ø&¨(Ñ2Ø(¨IÒ5Ü)6°vÓ)>¡ä)3°F¸IÓ)F Ü#2×#8Ñ#8¸¸UÀFÓ#KÐKå:à,×3Ñ3°B¸Ó>Ð>äØ5°i°[ÀÐPØ(¨¨¨h°t°f¸JÀvÀhÐOØSÐT]ÐS^ð _?ð ?ð =¸Y¸Kð HFð Fà?À	¸{ð KRð Rðô
 '×2Ñ2ðõô ‰wÑ$ R¨¨vÓ6Ð6øô} &ò AÜ,¬^¸R×@Ü:ò Úðûô4 ;ò Ùðús*   Å1L È"M ÌMÌ5MÍ MÍ	MÍMTc                  ó   — y©NTr?   rI   s    rD   Úis_python_constantz(MethodWrapperVariable.is_python_constantÆ  ó   € ØrE   c                 ó   — | j                   S rG   ró  rI   s    rD   r]   z(MethodWrapperVariable.as_python_constantÉ  rõ  rE   c                  ó   — yr  r?   rI   s    rD   Úis_python_hashablez(MethodWrapperVariable.is_python_hashableÌ  r  rE   c                 ó4   — t        | j                  «       «      S rG   ©Úhashr]   rI   s    rD   Úget_python_hashz%MethodWrapperVariable.get_python_hashÏ  ó   € Ü�D×+Ñ+Ó-Ó.Ð.rE   Úotherc                 óh   — t        |t        «      xr! | j                  «       |j                  «       k(  S rG   ©r�   r.   r]   ©rB   r  s     rD   Úis_python_equalz%MethodWrapperVariable.is_python_equalÒ  ó1   € ä�uœoÓ.ò HØ×'Ñ'Ó)¨U×-EÑ-EÓ-GÑGð	
rE   )r€   r‚   rÎ   r›   ÚMethodWrapperTyper   rA   rô  r   r.   rÓ   r§   r’   r   r  r]   r	  Úintr  r‰   r  r  rÔ   rÕ   s   @rD   rï  rï  M  sÇ   ø„ ð- u×'>Ñ'>ð -È#ð -ÐRVõ -ð#¨e×.EÑ.Eó #ðo7à#ðo7ð �Ñ'ðo7ð �S˜/Ð)Ñ*ð	o7ð
 
õo7ðb G¨D¡Mó ð# E×$;Ñ$;ó #ð G¨D¡Mó ð/ ó /ð
 Vð 
°÷ 
rE   rï  c                   óª   ‡ — e Zd Zdej                  deddfˆ fd„Zdej                  fd„Zddd	ede	fˆ fd
„Z
ded   fd„Zdej                  fd„Zˆ xZS )ÚGetSetDescriptorVariableÚdescr;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   )r@   rA   r  )rB   r  r;   rC   s      €rD   rA   z!GetSetDescriptorVariable.__init__Ú  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�	rE   c                 ó   — | j                   S rG   ©r  rI   s    rD   rô  z5GetSetDescriptorVariable.get_real_python_backed_valueÞ  ó   € Ø�y‰yÐrE   rT   r6   rU   c                 ón  •— |dk(  rM| j                   rAt        | j                   d«      }t        j                  || j                  j
                  |«      S |dv rO| j                   xr t        | j                   |«      }t        j                  |t        | j                  |«      |«      S t        ‰| �!  ||«      S )Nr¡  )Ú__objclass__r€   )	r^   r   r.   r‘   r  r¡  re   r@   rz   rÅ  s       €rD   rz   z$GetSetDescriptorVariable.var_getattrá  s”   ø€ Ø�9Ò §¢Ü §¡¨YÓ7ˆFÜ"×(Ñ(¨¨T¯Y©Y×->Ñ->ÀÓGÐGØÐ1Ñ1Ø—[‘[ÒB¤Z°·±¸TÓ%BˆFÜ"×(Ñ(¨¬W°T·Y±YÀÓ-EÀvÓNÐNä‘7Ñ& r¨4Ó0Ð0rE   Tc                  ó   — yr  r?   rI   s    rD   r  z+GetSetDescriptorVariable.is_python_constantë  r  rE   c                 ó   — | j                   S rG   r  rI   s    rD   r]   z+GetSetDescriptorVariable.as_python_constantî  r  rE   )r€   r‚   rÎ   r›   ÚGetSetDescriptorTyper   rA   rô  r§   r.   rz   r   r  r]   rÔ   rÕ   s   @rD   r  r  Ù  sr   ø„ ð˜U×7Ñ7ð À3ð È4õ ð¨e×.HÑ.Hó ð1Ð5ð 1¸Sð 1À_õ 1ð G¨D¡Mó ð E×$>Ñ$>÷ rE   r  c                   ó  ‡ — e Zd Zej                  Zddhej                  £Zdej                  deddfˆ fd„Z	de
ej                     fd„Zdej                  fd„Zdej                  fd	„Zdefd
„Zdddeddfd„Zdddedefd„Zˆ xZS )ÚPythonModuleVariablera   Úis_torchr;   r<   Nc                 ó®   •— t        ‰| �  di |¤Ž || _        | j                  t        u xs% | j                  j                  j                  d«      | _        y )Nztorch.r?   )r@   rA   ra   r‹   r€   Ú
startswithr%  ©rB   ra   r;   rC   s      €rD   rA   zPythonModuleVariable.__init__ü  sD   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
ØŸ
™
¤eÐ+ÒW¨t¯z©z×/BÑ/B×/MÑ/MÈhÓ/Wˆ�rE   c                 ó"   — t         j                  S rG   )r›   Ú
ModuleTyperI   s    rD   rJ   z PythonModuleVariable.python_type  s   € Ü×ÑÐrE   c                 ó   — | j                   S rG   ©ra   rI   s    rD   r]   z'PythonModuleVariable.as_python_constant  ó   € Ø�z‰zÐrE   c                 ó   — | j                   S rG   r,  rI   s    rD   rô  z1PythonModuleVariable.get_real_python_backed_value  r-  rE   c                 ó"   — d| j                   › d�S )NzPythonModuleVariable(r#  r,  rI   s    rD   r4  zPythonModuleVariable.__repr__
  s   € Ø& t§z¡z l°!Ð4Ð4rE   rT   r6   rU   r/   c                 óZ   — t        | j                  |«      }t        j                  ||«      S rG   )r”   ra   r.   r‘   ©rB   rT   rU   rÂ   s       rD   Úcall_obj_hasattrz%PythonModuleVariable.call_obj_hasattr  s'   € ô ˜Ÿ™ TÓ*ˆÜ×$Ñ$ R¨Ó0Ð0rE   c                 óü  — |j                   j                  j                  | |«      r&|j                   j                  j                  | |«      S d }| j                  s|| j
                  j                  vr	 t        | j
                  |«      }n| j
                  j                  |   }| j                  xr t        | j                  |«      }t        j                  |||«      S # t        $ r t        t        |«       Y ŒVw xY wrG   )r¤   rŽ   r­   r®   r%  ra   rh   re   r¯   r   r^   r   r.   r‘   )rB   rT   rU   rÃ   r^   s        rD   rz   z PythonModuleVariable.var_getattr  sÊ   € Ø�9‰9×!Ñ!×>Ñ>¸tÀTÔJØ—9‘9×)Ñ)×3Ñ3°D¸$Ó?Ð?àˆ
Ø�=Š=˜D¨¯
©
×(;Ñ(;Ñ;ð=Ü$ T§Z¡Z°Ó6‘
ð Ÿ™×,Ñ,¨TÑ2ˆJà—‘Ò>¤¨D¯K©K¸Ó!>ˆÜ×$Ñ$ R¨°VÓ<Ð<øô "ò =Ü(¬¸Ö<ð=ús   Á4C ÃC;Ã:C;)r€   r‚   rÎ   r›   r*  rÏ   r.   rÐ   r   rA   r`   rJ   r]   rô  r§   r4  r2  rz   rÔ   rÕ   s   @rD   r$  r$  ò  sÐ   ø„ à×$Ñ$€Mð 	Øðð 
×	'Ñ	'ð€NðX˜e×.Ñ.ð X¸#ð XÀ$õ Xð
 ˜T %×"2Ñ"2Ñ3ó  ð E×$4Ñ$4ó ð¨e×.>Ñ.>ó ð5˜#ó 5ð1Ø)ð1Ø14ð1à	ó1ð=Ð5ð =¸Sð =À_÷ =rE   r$  c            
       óÒ   ‡ — e Zd Zdededdfˆ fd„Zdddedefd	„Zddd
edee   de	eef   def
d„Z
ddd
edefd„Zdefd„Zdefd„Zdˆ fd„Zded   fd„Zdefd„Zdedefd„Zˆ xZS )ÚTypingVariablera   r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   ©r@   rA   ra   r(  s      €rD   rA   zTypingVariable.__init__%  ó   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�
rE   rT   r6   Úkeyc                 óR   — | j                   |j                  «          }t        |«      S rG   )ra   r]   r5  )rB   rT   r9  Ú
new_typings       rD   Úmp_subscript_implz TypingVariable.mp_subscript_impl)  s&   € ð —Z‘Z × 6Ñ 6Ó 8Ñ9ˆ
Ü˜jÓ)Ð)rE   rU   r{   c                 ó~  — |dk(  r`t        |«      dk(  rR|sPt        |d   t        «      xr | j                  |d   j                  k(  }t        j
                  j                  |«      S t        dd| j                  › d|› d|› d|› �d	|› d
| j                  › d�d|› d| j                  › d�gt        j                  ¢¬«       y )Nr  r+   r   z,unsupported method call on `typing` variableztyping variable: z, method name: rù  rú  z.`torch.compile` does not support method call `z` on `typing` variable fú.zAvoid calling the z method on rX   )
rg   r(   r5  ra   r   r/   ry   r   r   rÿ   )rB   rT   rU   r{   r;   rÂ   s         rD   r™   zTypingVariable.call_method3  sÌ   € ð �8ÒÜ�4‹y˜AŠ~¡fÜ  Q¡¬Ó8ÒX¸T¿Z¹ZÈ4ÐPQÉ7Ï=É=Ñ=X�Ü ×1Ñ1×8Ñ8¸Ó@Ð@ÜØBØ'¨¯
©
 |°?À4À&ÈÐQUÐPVÐV`ÐagÐ`hÐiØHÈÈÐNfÐgk×gqÑgqÐfrÐrsÐtà$ T F¨+°d·j±j°\ÀÐCðä"×.Ñ.ðö		
rE   c           
      óÖ  — ddl m}m} |t        v r5t	        j
                  | |t        t        | j                  |«      «      ¬«      S |j                  j                  j                  | |«      r&|j                  j                  j                  | |«      S t        | j                  |«      }| j                  r%t        | j                  |«      }  |||«      |«      S |j                  ||«      S )Nr+   )rø  ÚVariableBuilderrr   )r�  rø  r@  r%   r   rv   r`   re   ra   r¤   rŽ   r­   r®   r^   r   ry   )rB   rT   rU   rø  r@  ra   rÄ   s          rD   rz   zTypingVariable.var_getattrH  s¿   € ß?àÔ)Ñ)Ü×,Ñ,Ø�d¤D¬°·±¸TÓ)BÓ$Côð ð �9‰9×!Ñ!×>Ñ>¸tÀTÔJØ—9‘9×)Ñ)×3Ñ3°D¸$Ó?Ð?ä˜Ÿ
™
 DÓ)ˆØ�;Š;Ü$ T§[¡[°$Ó7ˆKØ3‘? 2 {Ó3°EÓ:Ð:à$×+Ñ+¨B°Ó6Ð6rE   c                 ó   — | j                   S rG   r,  rI   s    rD   r]   z!TypingVariable.as_python_constantZ  r-  rE   c                 ó   — | j                   S rG   r,  rI   s    rD   rô  z+TypingVariable.get_real_python_backed_value]  r-  rE   c                 óÀ   •— t        | j                  t        j                  «      st        ‰| �  |«      S |j                  |j                  | j                  «      «       y rG   )r�   ra   r›   ÚGenericAliasr@   rS   Úappend_outputÚcreate_load_constrR   s     €rD   rS   zTypingVariable.reconstruct`  sF   ø€ Ü˜$Ÿ*™*¤e×&8Ñ&8Ô9Ü‘7Ñ& wÓ/Ð/ð0 	×Ñ˜g×7Ñ7¸¿
¹
ÓCÕDrE   Tc                  ó   — yr  r?   rI   s    rD   r	  z!TypingVariable.is_python_hashable|  r  rE   c                 ó4   — t        | j                  «       «      S rG   r  rI   s    rD   r  zTypingVariable.get_python_hash  r  rE   r  c                 óh   — t        |t        «      xr! | j                  «       |j                  «       k(  S rG   r  r  s     rD   r  zTypingVariable.is_python_equal‚  r  rE   rÍ   )r€   r‚   rÎ   r   rA   r.   r<  r§   rÒ   rÓ   r™   rz   r]   rô  rS   r   r	  r  r  r‰   r  r  rÔ   rÕ   s   @rD   r5  r5  $  sê   ø„ ð˜cð ¨Sð °Tõ ð*à#ð*ð ð*ð 
ó	*ð
à#ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
ó
ð*7Ð5ð 7¸Sð 7À_ó 7ð$ Có ð¨có õEð8 G¨D¡Mó ð/ ó /ð
 Vð 
°÷ 
rE   r5  )Úmaxsizec                  óÌ   — ddl m}  i }| j                  «       D ]H  \  }}|j                  j                  «       D ]&  \  }}t	        |«      sŒt        ||d«      x}sŒ"|||<   Œ( ŒJ |S )zd
    This generates a mapping from numpy modules to their torch._numpy
    modules equivalents.
    r   )ÚNP_TO_TNP_MODULEN)ÚutilsrL  r²   rh   Úcallablere   )rL  Únp_fn_to_tnp_fnÚnp_modÚtnp_modrL  Útnp_fnÚnp_fns          rD   Úget_np_to_tnp_maprT  ‰  sz   € õ )à€Oà+×1Ñ1Ó3ò 4‰ˆ�Ø&×/Ñ/×5Ñ5Ó7ò 	4‰OˆG�VÜ˜Õô $ F¨G°TÓ:Ð:�5Ñ:Ø-3�O EÒ*ñ	4ð4ð ÐrE   c                  ój   — t        «       } | j                  «       D ��ci c]  \  }}||“Œ
 c}}S c c}}w )z
    This is just the reverse mapping of get_np_to_tnp_map() - mapping from
    torch._numpy modules to numpy equivalents.
    )rT  r²   )ÚmÚkÚvs      rD   Úget_tnp_to_np_maprY  ž  s.   € ô 	Ó€AØŸW™W›Y×'‘T�Q˜ˆAˆq‰DÓ'Ð'ùÓ's   ž/c            
       óP  ‡ — e Zd ZdZej
                  fZdededdfˆ fd„Zdefd„Z	e
dej                  defd	„«       Ze
dej                  defd
„«       Zdddee   deeef   defd„Zdddedee   deeef   def
d„Zdefd„Zdefˆ fd„Zded   fd„Zdefd„Zdedefd„Zˆ xZ S )ÚNumpyVariablezz
    Wrapper around `numpy.*`. Currently, is able to trace a small subset of numpy functions as well as numpy dtypes.
    ra   r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   r7  r(  s      €rD   rA   zNumpyVariable.__init__¯  r8  rE   c                 ó   — | j                   S rG   r,  rI   s    rD   rô  z*NumpyVariable.get_real_python_backed_value³  r-  rE   rO  c                 óˆ   — |j                   j                  d«      }t        |«      dk\  r
|d d ddgk(  sJ ‚|| j                  v S ©Nr>  r   r‹   Ú_numpy)r‚   Úsplitrg   Úconstant_fold_functions©rç   rO  Úmods      rD   Úcan_constant_fold_throughz'NumpyVariable.can_constant_fold_through¶  sJ   € à�m‰m×!Ñ! #Ó&ˆÜ�3‹x˜1Š}  R a ¨W°hÐ,?Ò!?Ð?Ð?Ø�S×0Ñ0Ð0Ð0rE   c                 ó–   — |j                   j                  d«      }t        |«      dk\  r
|d d ddgk(  sJ ‚t        j	                  |«      S r_  )r‚   ra  rg   Únp_constant_collections_mapri   rc  s      rD   Ú get_constant_collection_for_funcz.NumpyVariable.get_constant_collection_for_func¼  sJ   € à�m‰m×!Ñ! #Ó&ˆÜ�3‹x˜1Š}  R a ¨W°hÐ,?Ò!?Ð?Ð?Ü*×.Ñ.¨rÓ2Ð2rE   rT   r6   r{   c                 óæ  — t         j                  s1t        dd| j                  › d|› d|› �d| j                  › d�dg¬«       d	d
lm} ddlm} t        «       j                  | j                  «      }|€Dt        dd| j                  › d|› d|› d|› d�	d| j                  › d�g t        j                  ¢¬«       |€J ‚| j                  |«      x}	 �e	  | | j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž«      S |j"                  dk(  rTt         j$                  rDt        dd| j                  › d|› d|› d|› d�	d| j                  › d�dd| j                  › d�g¬«       |j'                  |j(                  ||«      \  }}| j+                  |«      r‚t-        ||«      rvt/        j0                  | | j                  «       |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž«      S  |j2                  j4                  d ||«      gt7        ||«      ¢­Ž }|j9                  ||«      S c c}w c c}
}	w # t        $ rG t        dd| j                  › d|› d|› d|› d�	d| j                  › d�g t        j                   ¢¬«       Y y w xY wc c}w c c}
}	w )Nz?attempted to trace numpy function with config.trace_numpy=Falseúnumpy function: rù  rú  z"Attempted to trace numpy function z; while `torch._dynamo.config.trace_numpy` was set to False.zHSet `torch._dynamo.config.trace_numpy` to True to trace numpy functions.rX   r   )Únumpy_to_tensor_wrapperr+   )ÚNumpyNdarrayVariablez8attempted to trace numpy function unsupported by PyTorchz  (corresponding torch function: r#  z Can't find numpy numpy function z in torch._numpy.zTnumpy function that produces a const collection type encountered non-const argumentsznumpy function zs that produces a const collection type (e.g. np.dtype, np.iinfo/np.finfo) received arguments that are not constant.ztorch._numpy.randomzXattempted to trace torch._numpy.random function with config.use_numpy_random_stream=TruezAttempted to trace zD when `torch._dynamo.config.use_numpy_random_stream` is set to True.z<Set `torch._dynamo.config.use_numpy_random_stream` to False.zAvoid calling r>  r’   )r   Útrace_numpyr   ra   rM  rk  Útensorrl  rT  ri   r   rÿ   rh  r]   r²   r,   Ú
USER_ERRORr‚   Úuse_numpy_random_streamÚ
patch_argsr€   re  r$   r.   r‘   r¤   rŸ  r)   ry   )rB   rT   r{   r;   rk  rl  rÅ   Úcollection_variable_typrµ  rW  rX  r›  s               rD   r’   zNumpyVariable.call_functionÂ  sZ  € ô ×!Ò!ÜØYØ*¨4¯:©:¨,°h¸t¸fÀJÈvÈhÐWØ@ÀÇÁÀð MMð Mð _ðõõ 	4Ý0ä Ó"×&Ñ& t§z¡zÓ2ˆØˆ<ÜØRØ*¨4¯:©:¨,°h¸t¸fÀJÈvÈhÐVvÐw{Ðv|Ð|}Ð~Ø>¸t¿z¹z¸lÐJ[Ð\ðÜ&×2Ñ2ðõ	ð ÐÐÐà'+×'LÑ'LÈTÓ'RÐRÐ#ØððÙ.Ø�D—J‘JØ:>Ö?°Q˜!×.Ñ.Õ0Ò?ðàAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPñóð ð& —‘Ð#8Ò8Ü×2Ò2äØvØ.¨t¯z©z¨l¸(À4À&È
ÐSYÐRZÐZzÐ{ð  {Að  ABð  CØ"5°d·j±j°\ð B&ð !&ð WØ(¨¯©¨°AÐ6ðõ	ð 0×:Ñ:¸4¿=¹=È$ÐPVÓW‰LˆD�&à×-Ñ-¨dÔ3Ü-¨d°FÔ;ô '×,Ñ,ØØ-�D×+Ñ+Ó-Ø:>Ö?°Q˜!×.Ñ.Õ0Ò?ðàAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPñóð ð +�B—I‘I×*Ñ*ØÙ'¨Ó-ðô # 4¨Ó0òˆEð
 (×.Ñ.¨r°5Ó9Ð9ùòg @ùÛPøô 7ò 
ÜØrØ.¨t¯z©z¨l¸(À4À&È
ÐSYÐRZÐZzÐ{ð  {Að  ABð  CØ"1°$·*±*°ð >@ð !@ðÜ*×5Ñ5ð÷	ð
üòH @ùÛPs=   ÃJ Ã"J
Ã9J ÄJÄ*	J Ç8K(È%K-Ê
J ÊAK%Ë$K%rU   c           	      óh   — t        dd| j                  › d|› d|› �dg t        j                  ¢¬«       y )Nz/attempted to trace numpy.* function as a methodrj  rù  rú  z6Tracing numpy.* functions as methods is not supported.rX   )r   ra   r   r“   )rB   rT   rU   r{   r;   s        rD   r™   zNumpyVariable.call_method  s?   € ô 	ØEØ& t§z¡z l°(¸4¸&À
È6È(ÐSØPðÜ"×,Ñ,ðö		
rE   c                 ó   — | j                   S rG   r,  rI   s    rD   r]   z NumpyVariable.as_python_constant.  r-  rE   c                 ó   •— t         j                  r`t        | j                  t        j
                  «      r| j                  S t        | j                  t        «      r| j                  j                  S t        ‰| �%  «       S rG   )
r   rm  r�   ra   ÚenumÚEnumMetar`   r€   r@   r½  rÚ  s    €rD   r½  zNumpyVariable.as_proxy1  sV   ø€ Ü×Òä˜$Ÿ*™*¤d§m¡mÔ4à—z‘zÐ!Ü˜$Ÿ*™*¤dÔ+ð —z‘z×*Ñ*Ð*ä‰wÑÓ!Ð!rE   Tc                  ó   — yr  r?   rI   s    rD   r	  z NumpyVariable.is_python_hashable?  r  rE   c                 ó4   — t        | j                  «       «      S rG   r  rI   s    rD   r  zNumpyVariable.get_python_hashB  r  rE   r  c                 óh   — t        |t        «      xr! | j                  «       |j                  «       k(  S rG   r  r  s     rD   r  zNumpyVariable.is_python_equalE  r  rE   )!r€   r‚   rÎ   r8  ÚtnpÚ
issubdtyperb  r   rA   rô  r�   r›   rœ   r  re  rh  r   r.   rÓ   r§   r’   rÒ   r™   r   r]   r½  r   r	  r  r  r‰   r  rÔ   rÕ   s   @rD   r[  r[  ¨  sY  ø„ ñð  #Ÿ~™~Ð/Ðð˜cð ¨Sð °Tõ ð¨có ð ð1¨5×+=Ñ+=ð 1À$ò 1ó ð1ð
 ð3°%×2DÑ2Dð 3Èò 3ó ð3ð
Z:à#ðZ:ð �Ñ'ðZ:ð �S˜/Ð)Ñ*ð	Z:ð
 
óZ:ðx
à#ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
ó
ð Ð$7ó ð"˜#õ "ð G¨D¡Mó ð/ ó /ð
 Vð 
°÷ 
rE   r[  c                   ó<   ‡ — e Zd Zdeddfˆ fd„Zdefd„Zdd„Zˆ xZS )ÚNullVariabler;   r<   Nc                 ó$   •— t        ‰| �  di |¤Ž y r>   r\  r]  s     €rD   rA   zNullVariable.__init__N  r^  rE   c                  ó   — y)Nr~  r?   rI   s    rD   r4  zNullVariable.__repr__Q  s   € ØrE   c                 óœ   — t         j                  dk  rt        dddg t        j                  ¢¬«       |j                  t        d«      «       y )N)rˆ   é   z0cannot reconstruct NullVariable in Python < 3.11rW   zdAttempted to generate PUSH_NULL instruction in Python < 3.11; where this instruction does not exist.rX   Ú	PUSH_NULL)rü  rý  r   r   r¦   rE  r   rA  s     rD   rS   zNullVariable.reconstructT  sL   € Ü×Ñ˜gÒ%ÜØJØð9ðÜ&×1Ñ1ðõð 	×ÑÔ0°Ó=Õ>rE   rÍ   )	r€   r‚   rÎ   r   rA   r§   r4  rS   rÔ   rÕ   s   @rD   r~  r~  M  s'   ø„ ð# ð #¨õ #ð˜#ó ÷?rE   r~  c                   ó   — e Zd ZdZy)r©   z"Marker used to implement delattr()Nr7  r?   rE   rD   r©   r©   b  s   „ Ú,rE   r©   c            
       óÞ   ‡ — e Zd ZdZdhej
                  £Zdefd„Zede	de
e   dee	ef   defd„«       Zde	de
e   dee	ef   dedd	f
ˆ fd
„Zde	fd„Zededefd„«       Zde	fd„Zdd„Zˆ xZS )ÚStringFormatVariablez[
    Represents a call to str.format(), we delay calling format until after the graph.
    Úformat_stringr<   c                 ó   — t         S rG   )r§   rI   s    rD   rJ   z StringFormatVariable.python_typem  s   € Üˆ
rE   Úsym_argsÚ
sym_kwargsc                 ó®  — t        d„ t        j                  ||j                  «       «      D «       «      r{t        j
                  j                   |j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž«      S  | |t        |«      t        |«      «      S c c}w c c}}w )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrG   )r  r´  s     rD   r0  z.StringFormatVariable.create.<locals>.<genexpr>w  s!   è ø€ ò 
àð × Ñ ×"ñ
ùs   ‚)ÚallÚ	itertoolsÚchainÚvaluesr   r/   ry   Úformatr]   r²   rÒ   rÓ   )rç   r‡  r‰  rŠ  rX  rW  s         rD   ry   zStringFormatVariable.createp  sÀ   € ô ñ 
ä—_‘_ X¨z×/@Ñ/@Ó/BÓCô
ô 
ô ×-Ñ-×4Ñ4Ø$�×$Ñ$Ø6>Ö?°�a×*Ñ*Õ,Ò?ðà=G×=MÑ=MÓ=O×P±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓPñóð ñ �=¤$ x£.´$°zÓ2BÓCÐCùò	 @ùÛPs   ÁCÂCr;   Nc                 ór   •— t        ‰| �  di |¤Ž t        |t        «      sJ ‚|| _        || _        || _        y r>   )r@   rA   r�   r§   r‡  r‰  rŠ  )rB   r‡  r‰  rŠ  r;   rC   s        €rD   rA   zStringFormatVariable.__init__ƒ  s;   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜-¬Ô-Ð-Ð-Ø*ˆÔØ ˆŒØ$ˆ�rE   c                 ó‚   — | j                   j                  › d| j                  ›d| j                  ›d| j                  ›d�S rÜ  )rC   r€   r‡  r‰  rŠ  rI   s    rD   r4  zStringFormatVariable.__repr__�  sB   € Ø—.‘.×)Ñ)Ð*¨!¨D×,>Ñ,>Ð+AÀÀDÇMÁMÐCTÐTVÐW[×WfÑWfÐViÐijÐkÐkrE   r%  c                 ób   — 	 | j                  «       S # t        $ r | j                  «       cY S w xY wrG   )r]   r(  r)  r*  s    rD   r+  z&StringFormatVariable._debug_format_arg“  s2   € ð	$Ø×)Ñ)Ó+Ð+øÜò 	$Ø—>‘>Ó#Ò#ð	$ús   ‚ ’.­.c                 ó`  — 	  | j                   j                  | j                  D �cg c]  }| j                  |«      ‘Œ c}i | j                  j                  «       D ��ci c]  \  }}|| j                  |«      “Œ c}}¤Ž}t        |«      S c c}w c c}}w # t        $ r t        | «      cY S w xY wrG   )r‡  r‘  r‰  r+  rŠ  r²   r(  r'  )rB   r%  r9  ra   Úrendereds        rD   r)  zStringFormatVariable.debug_reprš  s¬   € ð		Ø0�t×)Ñ)×0Ñ0Ø9=¿¹ÖG°#�$×(Ñ(¨Õ-ÒGðð '+§o¡o×&;Ñ&;Ó&=÷á"˜˜Uð ˜×/Ñ/°Ó6Ñ6óñˆHô �H‹~Ðùò Hùóøô
 ò 	Ü˜“:Òð	ús-   ‚$B ¦B¾ B ÁBÁ:B ÂB ÂB-Â,B-c                 óž  ‡ ‡— ‰j                  ˆˆ fd„d¬«        ‰t        j                  t        ‰ j                  «      «      «       ‰ j
                  j                  «       D ��ci c]%  \  }}t        j                  j                  |«      |“Œ' }}} ‰t        j                  |«      «       ‰j                  t        dd«      «       y c c}}w )Nc                  óz   •— ‰ j                  ‰ j                  ‰j                  «      ‰ j                  d«      g«      S )Nr‘  )rQ   rF  r‡  Úcreate_load_attrr  s   €€rD   rO   z2StringFormatVariable.reconstruct.<locals>.<lambda>©  s9   ø€ �G×)Ñ)à×-Ñ-¨d×.@Ñ.@ÓAØ×,Ñ,¨XÓ6ðó€ rE   T)Úcall_function_exF)rP   r   r   rÒ   r‰  rŠ  r²   r/   ry   ÚConstDictVariablerQ   r   )rB   rN   rW  rX  r;   s   ``   rD   rS   z StringFormatVariable.reconstruct§  s¯   ù€ Ø×Ñôð "ð 	ô 	
ñ 	”	×'Ñ'¬¨T¯]©]Ó(;Ó<Ô=à@DÇÁ×@UÑ@UÓ@W÷
Ù8<¸¸1ŒI×&Ñ&×-Ñ-¨aÓ0°!Ñ3ð
ˆñ 
ñ 	”	×+Ñ+¨FÓ3Ô4Ø×ÑÔ5°d¸EÓBÕCùó	
s   Á%*C	rÍ   )r€   r‚   rÎ   r8  r.   rÐ   r`   rJ   r�   r§   r   rÓ   ry   r   rA   r4  rš   r‰   r+  r)  rS   rÔ   rÕ   s   @rD   r†  r†  f  sþ   ø„ ñð &ÐG¨×(FÑ(FÐG€Nð˜Tó ð ðDàðDð ˜?Ñ+ðDð ˜˜oÐ-Ñ.ð	Dð
 
òDó ðDð$%àð%ð ˜?Ñ+ð%ð ˜˜oÐ-Ñ.ð	%ð
 ð%ð 
õ%ðl˜#ó lð ð$˜ð $°6ò $ó ð$ð˜Có ÷DrE   r†  c                   óN   ‡ — e Zd ZeZdededdfˆ fd„Zdefd„Zdee   fd„Z	ˆ xZ
S )ÚObjectVariablera   r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   r7  r(  s      €rD   rA   zObjectVariable.__init__¾  r8  rE   c                 ó   — | j                   S rG   r,  rI   s    rD   rô  z+ObjectVariable.get_real_python_backed_valueÂ  r-  rE   c                 ó   — t         S rG   )r‰   rI   s    rD   rJ   zObjectVariable.python_typeÅ  s   € ÜˆrE   )r€   r‚   rÎ   r‰   rÏ   r   rA   rô  r`   rJ   rÔ   rÕ   s   @rD   r�  r�  ¹  s>   ø„ à€Mð˜fð °ð ¸õ ð¨fó ð˜T &™\÷ rE   r�  c            	       óì   ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zedede	e
j                  e
j                  z     fd	„«       Zd
ddee   deeef   defd„Zdd„Zededee   deeef   defd„«       Zˆ xZS )ÚDebuggingVariablez†
    Represents a call to a debugging function like print(), or something
    registered to config.reorderable_logging_functions.
    ra   r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   r7  r(  s      €rD   rA   zDebuggingVariable.__init__Ï  r8  rE   c                 ó,   — t        | j                  «      S rG   ©r`   ra   rI   s    rD   rJ   zDebuggingVariable.python_typeÓ  ó   € Ü�D—J‘JÓÐrE   ré   c                 óÀ   — t        | «      xrR t        | t        j                  t        j                  f«      xr& | t
        j                  j                  j                  v S rG   )	rN  r�   r›   rœ   r   r‹   r’  r   Úreorderable_logging_functionsrì   s    rD   Úis_reorderable_logging_functionz1DebuggingVariable.is_reorderable_logging_functionÖ  sO   € ô
 �S‹Mò JÜ˜3¤×!3Ñ!3´U×5NÑ5NÐ OÓPòJà”u—}‘}×+Ñ+×IÑIÐIð	
rE   rT   r6   r{   c           	      óV  — |j                   rt        j                  d «      S | j                  | j                  ||«      s1t        dd| j                  › d|› d|› �dd| j                  › d�g¬«       |j                  j                  | t        |«      f«       t        j                  d «      S )	NzJattempted to reorder a debugging function that can't actually be reorderedzfn: rù  rú  zl`torch.compile` can only reorder functions where the arguments are Tensors, constants, or string formatters.z#Avoid calling the logging function z" with args that are not supported.rX   )	Úexportr/   ry   Úcan_reorder_logsra   r   Údebug_localsrÂ  rÒ   r˜  s       rD   r’   zDebuggingVariable.call_functionà  s£   € ð �9Š9ä#×*Ñ*¨4Ó0Ð0à×$Ñ$ T§Z¡Z°°vÔ>ÜØdØ˜tŸz™z˜l¨(°4°&¸
À6À(ÐKð@ð :¸$¿*¹*¸ÐEgÐhðõð 	�‰×Ñ ¤d¨4£jÐ1Ô2Ü×&Ñ& tÓ,Ð,rE   c                 óT   — | j                   €J ‚| j                   j                  |«      S rG   )r^   rS   rA  s     rD   rS   zDebuggingVariable.reconstructø  s'   € Ø�{‰{Ð&Ð&Ð&Ø�{‰{×&Ñ& wÓ/Ð/rE   rO  c                 ó¦   — t         j                  t         j                  t        f}t	        j
                  ||g«      }|D ]  }t        ||«      rŒ y y)zm
        Run some additional checks for what sort of function calls can we
        actually reorder.
        FT)r   rû  r/   r†  ÚpytreeÚtree_leavesr�   )rO  r{   r;   Úallowed_input_typesÚ	flat_argsr%  s         rD   r¬  z"DebuggingVariable.can_reorder_logsü  sY   € ô ×$Ñ$Ü×&Ñ&Ü ð
Ðô ×&Ñ&¨¨f ~Ó6ˆ	Øò 	ˆCÜ˜cÐ#6Õ7Ùð	ð rE   rÍ   )r€   r‚   rÎ   r8  r   rA   r`   rJ   rš   r
   r›   rœ   r   r©  r   r.   rÓ   r§   r’   rS   r  r¬  rÔ   rÕ   s   @rD   r¢  r¢  É  sä   ø„ ñð
˜cð ¨Sð °Tõ ð ˜Tó  ð ð
Øð
à	�5×%Ñ%¨×(AÑ(AÑAÑ	Bò
ó ð
ð-à#ð-ð �Ñ'ð-ð �S˜/Ð)Ñ*ð	-ð
 
ó-ó00ð ð˜Sð ¨°©ð ¸tÀCÈÀH¹~ð ÐRVò ó ôrE   r¢  c                   óp   ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zdefd„Zd	d
de	e
   deee
f   de
fd„Zˆ xZS )ÚIgnoredFunctionVariablezL
    Represents a call to an arbitrary function that should be ignored.
    ra   r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   r7  r(  s      €rD   rA   z IgnoredFunctionVariable.__init__  r8  rE   c                 ó,   — t        | j                  «      S rG   r¥  rI   s    rD   rJ   z#IgnoredFunctionVariable.python_type  r¦  rE   c                 ó   — | j                   S rG   r,  rI   s    rD   rô  z4IgnoredFunctionVariable.get_real_python_backed_value  r-  rE   rT   r6   r{   c                 ó@   — t         j                  j                  d «      S rG   )r   r/   ry   r˜  s       rD   r’   z%IgnoredFunctionVariable.call_function   s   € ô ×)Ñ)×0Ñ0°Ó6Ð6rE   )r€   r‚   rÎ   r8  r   rA   r`   rJ   rô  r   r.   rÓ   r§   r’   rÔ   rÕ   s   @rD   rµ  rµ    st   ø„ ñð˜cð ¨Sð °Tõ ð ˜Tó  ð¨có ð7à#ð7ð �Ñ'ð7ð �S˜/Ð)Ñ*ð	7ð
 
÷7rE   rµ  c            
       óœ   ‡ — e Zd ZdZdej
                  deddfˆ fd„Zdefd„Z	dej
                  fd„Z
d	d
dedee   deeef   def
d„Zˆ xZS )ÚLoggingLoggerVariablez:
    Represents a call to any logging.Logger methods.
    ra   r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   r7  r(  s      €rD   rA   zLoggingLoggerVariable.__init__.  r8  rE   c                 ó,   — t        | j                  «      S rG   r¥  rI   s    rD   rJ   z!LoggingLoggerVariable.python_type2  r¦  rE   c                 ó   — | j                   S rG   r,  rI   s    rD   rô  z2LoggingLoggerVariable.get_real_python_backed_value5  r-  rE   rT   r6   rU   r{   c                 ó„  — |j                   rt        j                  j                  d «      S t	        | j
                  |d «      }t	        |dd «      }t        j                  j                  j                  }||v s||v rt        j                  j                  d «      S t        dd| j
                  › d|› d|› d|› �ddg¬	«       y )
Nr…   z8logging.Logger method not supported for non-export caseszmethod: r>  rù  rú  z>logging.Logger methods are not supported for non-export cases.zJAdd the logging method to `torch._dynamo.config.ignore_logging_functions`.rX   )r«  r   r/   ry   re   ra   r‹   r’  r   Úignore_logging_functionsr   )rB   rT   rU   r{   r;   Úmethodr·  Ú
ignore_sets           rD   r™   z!LoggingLoggerVariable.call_method8  sµ   € ð �9Š9ä×-Ñ-×4Ñ4°TÓ:Ð:ä˜Ÿ™ T¨4Ó0ˆÜ˜6 :¨tÓ4ˆô —]‘]×)Ñ)×BÑBˆ
à�ZÑ 8¨zÑ#9Ü×-Ñ-×4Ñ4°TÓ:Ð:äØNØ˜tŸz™z˜l¨!¨D¨6°¸$¸¸zÈ&ÈÐRØXà\ðö		
rE   )r€   r‚   rÎ   r8  ÚloggingÚLoggerr   rA   r`   rJ   rô  r§   rÒ   r.   rÓ   r™   rÔ   rÕ   s   @rD   r»  r»  )  s†   ø„ ñð˜gŸn™nð ¸ð Àõ ð ˜Tó  ð¨g¯n©nó ð
à#ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
÷
rE   r»  c            
       óæ   ‡ — e Zd ZdZ	 ddlmZmZm	Z
 dededd	fˆ fd
„Zedefd„«       Zdefd„Zdddedee   deeef   def
d„Zdddedefd„Zˆ xZS # e$ r  eddi «      Z eddi «      ZY Œ\w xY w)ÚConstantLikeVariablez8self.value is a compile-time constant, but not a literalr   )ÚdtypeÚfloatingÚgenericÚinvalid_typer?   ra   r;   r<   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r>   r7  r(  s      €rD   rA   zConstantLikeVariable.__init__e  r8  rE   c                 ó˜   — t        | j                  «      }|j                  dk(  r|j                  S |j                  › d|j                  › �S )z4Dynamically compute the prefix from the value's typerH   r>  )r`   ra   r‚   rÎ   )rB   Úts     rD   Ú_error_prefixz"ConstantLikeVariable._error_prefixi  sD   € ô �—‘Óˆð �<‰<˜:Ò%Ø—>‘>Ð!à—,‘,�˜q §¡Ð 0Ð1Ð1rE   c                 ó   — | j                   S rG   r,  rI   s    rD   r]   z'ConstantLikeVariable.as_python_constantt  r-  rE   rT   r6   rU   r{   c                 óÐ  — g i }}	 |D �cg c]  }|j                  «       ‘Œ }}|j                  «       D ��	ci c]  \  }}	||	j                  «       “Œ }}}	 t        | j                  |«      |i |¤Ž}
t        j                  j                  |
«      rt        j                  ||
«      S t        |
t        j                  «      rt        |
«      S t        d
| j                  › d|› d|› d|› d|
› �	d| j                  › d|› d|
› d�g t         j"                  ¢¬	«       y c c}w c c}	}w # t        $ r; t        d| j                  › d|› d|› d|› d�d| j                  › d|› d�dg¬	«       Y �Œw xY w)Nz0constant-like method call with non-constant argsr>  z(*z, **r#  zAttempted to call z with non-constant args.zFEnsure that the args to the method call are constant (int, str, etc.).rX   z6constant-like method call with unsupported return typez) returned z, got unsupported return value )r]   r²   r£   r   rÎ  re   ra   r   r/   ru   r.   r‘   r�   ÚreÚMatchrÆ  r   rÿ   )rB   rT   rU   r{   r;   ÚcargsÚckwargsrµ  rW  rX  rÂ   s              rD   r™   z ConstantLikeVariable.call_methodw  s�  € ð ˜Rˆwˆð	à59Ö:°�Q×)Ñ)Õ+Ð:ˆEÐ:Ø=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÐLˆGÑLð +”˜Ÿ™ TÓ*¨EÐ=°WÑ=ˆä×%Ñ%×0Ñ0°Ô8Ü"×(Ñ(¨¨VÓ4Ð4Ü�fœbŸh™hÔ'Ü'¨Ó/Ð/äØLØ×)Ñ)Ð*¨!¨D¨6°°D°6¸¸f¸XÀ[ÐQWÐPXÐYØ,¨T×-?Ñ-?Ð,@ÀÀ$ÀÐGfÐgmÐfnÐnoÐpðÜ"×.Ñ.ðö		
ùò' ;ùÛLøÜ"ò 	ÜØJØ×-Ñ-Ð.¨a°¨v°R¸°v¸TÀ&ÀÈÐKØ0°×1CÑ1CÐ0DÀAÀdÀVÐKcÐdà\ð÷	ð ð	ús-   †D! ŠD¡D! ¶DÁD! ÄD! Ä!A E%Å$E%c                 ó¬  — t        | j                  |«      }t        || j                  «      rt	        |«      }t        || j
                  «      rt        |«      S t        |t        «      r!t        || j                  «      rt        |«      S t        j                  j                  |«      rt        j                  ||«      S t!        | |t        |«      ¬«      S )Nrr   )re   ra   r�   Únp_floatingÚfloatÚnp_dtypeÚNumpyDTypeVariabler`   r_   Ú
np_genericr[  r   r/   ru   r.   r‘   rv   r1  s       rD   rz   z ConstantLikeVariable.var_getattrž  s    € Ü˜Ÿ™ TÓ*ˆÜ�f˜d×.Ñ.Ô/Ü˜6“]ˆFÜ�f˜dŸm™mÔ,Ü% fÓ-Ð-Ü�fœdÔ#¬
°6¸4¿?¹?Ô(Kä  Ó(Ð(Ü×%Ñ%×0Ñ0°Ô8Ü"×(Ñ(¨¨VÓ4Ð4Ü˜t T´4¸³<Ô@Ð@rE   )r€   r‚   rÎ   r8  ÚnumpyrÇ  rØ  rÈ  rÖ  rÉ  rÚ  ÚImportErrorr`   r   rA   Úpropertyr§   rÎ  r]   rÒ   r.   rÓ   r™   rz   rÔ   rÕ   s   @rD   rÆ  rÆ  V  sè   ø„ ÙBð
0÷	
ñ 	
ð˜cð ¨Sð °Tõ ð ð2˜sò 2ó ð2ð Có ð%
à#ð%
ð ð%
ð �?Ñ#ð	%
ð
 �S˜/Ð)Ñ*ð%
ð 
ó%
ðNAÐ5ð A¸Sð AÀ_÷ Aøð ò 0á˜>¨2¨rÓ2ˆá˜¨¨BÓ/Šð	0ús   ‰
A ÁA0Á/A0rÆ  c                   ó,   ‡ — e Zd ZdZdeddfˆ fd„Zˆ xZS )ÚTorchVersionVariableztorch.__version__r;   r<   Nc                 ó’   •— |j                  dt        j                  «       |d   t        j                  u sJ ‚t        ‰| �  di |¤Ž y )Nra   r?   )Ú
setdefaultr‹   Ú__version__r@   rA   r]  s     €rD   rA   zTorchVersionVariable.__init__¯  sA   ø€ Ø×Ñ˜'¤5×#4Ñ#4Ô5Ø�g‰¤%×"3Ñ"3Ñ3Ð3Ð3Ü‰ÑÑ"˜6Ó"rE   )r€   r‚   rÎ   rÎ  r   rA   rÔ   rÕ   s   @rD   rß  rß  ¬  s    ø„ Ø'€Mð# ð #¨÷ #ñ #rE   rß  c                   ó   — e Zd Zdefd„Zy)rÙ  r<   c                 óB   — | j                   j                  j                  S )a0  Similar to how numpy dtype descriptors (e.g. np.float32 ) are handled by NumpyVariable:

        np.dtype() objects are serialized as strings, torch._numpy wrappers will normalize to the torch dtype.
        This also handles unsupported things nicely (i.e. structured arrays and object arrays).
        )ra   r`   r€   rI   s    rD   r½  zNumpyDTypeVariable.as_proxy¶  s   € ð �z‰z�‰×'Ñ'Ð'rE   N)r€   r‚   rÎ   r§   r½  r?   rE   rD   rÙ  rÙ  µ  s   „ ð(˜#ô (rE   rÙ  c                   ó`   ‡ — e Zd ZdZdeddfˆ fd„Zdefd„Zddd	ee	   de
ee	f   dd
fd„Zˆ xZS )ÚRandomClassVariablezrandom.Randomr;   r<   Nc                 ó$   •— t        ‰| �  di |¤Ž y r>   r\  r]  s     €rD   rA   zRandomClassVariable.__init__É  r^  rE   c                 ó   — t         S rG   rj  rI   s    rD   rJ   zRandomClassVariable.python_typeÌ  rk  rE   rT   r6   r{   ÚRandomVariablec                 ó"  — t        |«      dkD  s|r%t        dd|› d|› �dg t        j                  ¢¬«       t        |«      dk(  rt        j
                  j                  d «      n|d   }t        |t        j                  j                  «       ¬«      S )	Nr+   z'random.Random() with improper argumentszargs: rú  z=random.Random() with > 1 arg or with kwargs is not supported.rX   r   )Úseedr�   )
rg   r   r   ro  r   r/   ry   ré  ÚbaseÚValueMutationNew)rB   rT   r{   r;   rë  s        rD   r’   z!RandomClassVariable.call_functionÏ  sŠ   € ô ˆt‹9�qŠ=™FÜØAØ    j°°Ð9Ø[ðÜ&×1Ñ1ðõ	ô ;>¸d»)Àqº.Œy×)Ñ)×0Ñ0°Ô6ÈdÐSTÉgˆÜØ¤Y§^¡^×%DÑ%DÓ%Fô
ð 	
rE   )r€   r‚   rÎ   r8  r   rA   r`   rJ   r   r.   rÓ   r§   r’   rÔ   rÕ   s   @rD   ræ  ræ  Æ  s_   ø„ Ùð# ð #¨õ #ð˜Tó ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
rE   ræ  c            
       óÒ  ‡ — e Zd ZdZej
                  Zdhej                  £Zh d£Z		 	 ddej
                  dz  dedz  de
ddfˆ fd	„Zdeej
                     fd
„Zdej
                  fd„Zededefd„«       Zedeeeedf   edz  f   ddfd„«       Zedeeeedf   edz  f   defd„«       Zededeeeedf   edz  f   fd„«       Zdddedee   deeef   def
ˆ fd„Zdd„Zˆ xZS )ré  zúrandom.Random()

    Implemented by wrapping a VariableTracker around a random.Random object.
    The supported methods for the random.Random object cannot be overridden.
    Assumes that random objects behave the same given a set seed or state.
    Úrandom>   rï  ÚrandintÚuniformÚ	randrangeNÚrandrë  r;   r<   c                 ó0  •— t        ‰| �  di |¤Ž |�V| j                  |«      sJ ‚t        j                  «       | _        | j                  j                  |j                  «       «       y |�|j                  «       nd }t        j                  |«      | _        y r>   )r@   rA   Úis_supported_random_objrï  r   ÚsetstateÚgetstater]   )rB   ró  rë  r;   rC   s       €rD   rA   zRandomVariable.__init__ú  sy   ø€ ô 	‰ÑÑ"˜6Ò"ØÐØ×/Ñ/°Ô5Ð5Ð5Ü Ÿ-™-›/ˆDŒKØ�K‰K× Ñ  §¡£Õ1à04Ð0@�4×*Ñ*Ô,ÀdˆDÜ Ÿ-™-¨Ó-ˆD�KrE   c                 ó"   — t         j                  S rG   )rï  r   rI   s    rD   rJ   zRandomVariable.python_type		  s   € Ü�}‰}ÐrE   c                 ó   — | j                   S rG   )rï  rI   s    rD   r]   z!RandomVariable.as_python_constant	  s   € Ø�{‰{ÐrE   r÷   c                 óœ  — t        | «      t        j                  uryt        j                  t
        j                  d«      D ]‰  }t        | |«      s yt        | |«      }t        j                  |«      r/|t        t        j                  |«      j                  | «      k7  sŒ_ yt        |dd «      t        t        j                  |«      usŒ‰ y y)NF)rë  r÷  rö  r…   T)r`   rï  r   rŽ  r�  ré  Ú_supported_fn_namesr”   re   r„  Ú	isbuiltinr¡  )r÷   rU   Úmeths      rD   rõ  z&RandomVariable.is_supported_random_obj	  s¨   € ä�‹9œFŸM™MÑ)ØÜ—O‘OÜ×.Ñ.Ð0Pó
ò 	!ˆDô ˜3 Ô%ÙÜ˜3 Ó%ˆDÜ× Ñ  Ô&àœ7¤6§=¡=°$Ó7×?Ñ?ÀÓDÓDÙ ä˜4 ¨TÓ2¼'Ä&Ç-Á-ÐQUÓ:VÒVÙ ð	!ð rE   Ústate.c                 óè   — t        | «      t        u sJ ‚t        | d   «      t        u sJ ‚t        | d   «      t        u sJ ‚t        d„ | d   D «       «      sJ ‚| d   �t        | d   «      t        u sJ ‚y y )Nr   r+   c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wrG   )r`   r  r´  s     rD   r0  z-RandomVariable.check_state.<locals>.<genexpr>'	  s   è ø€ Ò4 a”4˜“7œc”>Ñ4ùs   ‚r   )r`   rÑ   r  r�  r×  )rþ  s    rD   Úcheck_statezRandomVariable.check_state"	  s}   € ä�E‹{œeÑ#Ð#Ð#Ü�E˜!‘H‹~¤Ñ$Ð$Ð$Ü�E˜!‘H‹~¤Ñ&Ð&Ð&ÜÑ4¨5°©8Ô4Ô4Ð4Ð4Ø�Q‰xÐ¤4¨¨a©£>´UÑ#:Ð:Ð:Ð#:ÐrE   c                 óh  — t         j                  | «       t        j                  t        j                  j                  | d   «      t        j                  | d   D �cg c]!  }t        j                  j                  |«      ‘Œ# c}«      t        j                  j                  | d   «      g«      S c c}w )Nr   r+   r   )ré  r  r   r   r/   ry   )rþ  rµ  s     rD   Ú
wrap_statezRandomVariable.wrap_state*	  s‘   € ä×"Ñ" 5Ô)Ü×&Ñ&ä×*Ñ*×1Ñ1°%¸±(Ó;Ü×'Ñ'ØCHÈÁ8ÖL¸a”Y×/Ñ/×6Ñ6°qÕ9ÒLóô ×*Ñ*×1Ñ1°%¸±(Ó;ðó
ð 	
ùò Ms   Á&B/c                 óP   — | j                  «       }t        j                  |«       |S rG   )r]   ré  r  )rþ  Ú	state_objs     rD   Úunwrap_statezRandomVariable.unwrap_state7	  s&   € ð ×,Ñ,Ó.ˆ	Ü×"Ñ" 9Ô-ØÐrE   rT   r6   rU   r{   c                 óº  •‡‡— ‰dk(  r¬|j                   j                  j                  | «        | j                  j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž t        j                  j                  d «      S ‰dk(  r)| j                  | j                  j                  «       «      S ‰dk(  rq|j                   j                  j                  | «       | j                  j                  | j                  |d   «      «       t        j                  j                  d «      S ‰| j                  v rÎ|j                   j                  j                  | «       | j                  j                  «       Šdt        dt        dt        fˆˆfd„} t!        | j                  ‰«      |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž t#        ||||«      S t$        ‰| �M  |‰||«      S c c}w c c}}w c c}w c c}
}	w )	Nrë  r÷  rö  r   r{   r;   r<   c                  ór   •— t        j                  «       }|j                  ‰«        t        |‰«      | i |¤ŽS rG   )rï  r   rö  re   )r{   r;   ÚrrU   rþ  s      €€rD   Úcall_random_methz4RandomVariable.call_method.<locals>.call_random_methW	  s3   ø€ Ü—M‘M“O�Ø—
‘
˜5Ô!Ø'”w˜q $Ó'¨Ð8°Ñ8Ð8rE   )r¤   rŽ   Úmutationrï  rë  r]   r²   r   r/   ry   r  r÷  rö  r  rû  r   re   r2   r@   r™   )rB   rT   rU   r{   r;   rµ  r9  r÷   r
  rW  rX  rþ  rC   s     `        @€rD   r™   zRandomVariable.call_method?	  sô  ú€ ð �6Š>Ø�I‰I×"Ñ"×+Ñ+¨DÔ1ØˆD�K‰K×ÑØ26Ö7¨Q�!×&Ñ&Õ(Ò7ðàAGÇÁÃ×P±X°S¸#�3˜×.Ñ.Ó0Ñ0ÓPòô ×-Ñ-×4Ñ4°TÓ:Ð:Ø�ZÒØ—?‘? 4§;¡;×#7Ñ#7Ó#9Ó:Ð:Ø�ZÒØ�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�K‰K× Ñ  ×!2Ñ!2°4¸±7Ó!;Ô<Ü×-Ñ-×4Ñ4°TÓ:Ð:Ø�T×-Ñ-Ñ-Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø—K‘K×(Ñ(Ó*ˆEð9¬ð 9´sð 9¼sö 9ð 'ŒG�D—K‘K Ó&Ø26Ö7¨Q�!×&Ñ&Õ(Ò7ðà9?¿¹»×H±°°A�1�a×*Ñ*Ó,Ñ,ÓHòô
 " "Ð&6¸¸fÓEÐEÜ‰wÑ" 2 t¨T°6Ó:Ð:ùò7 8ùÛPùò* 8ùÛHs   ÁIÁ5IÇIÈIc                 ó6  ‡— ‰j                  ˆfd„«       ‰j                  dd«       ‰j                  «        ‰j                  d«        ‰| j	                  | j
                  j                  «       «      «       ‰j                  dd«       ‰j                  «        y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nr   )rQ   Úcreate_load_python_modulerï  r™  ©rN   s   €rD   rO   z,RandomVariable.reconstruct.<locals>.<lambda>h	  s3   ø€ �G×)Ñ)à×5Ñ5´fÓ=Ø×,Ñ,¨XÓ6ðó€ rE   r   Frö  r+   T)rP   r’   r  r®   r  rï  r÷  Úpop_toprA  s    `rD   rS   zRandomVariable.reconstructf	  sz   ø€ Ø×Ñóô	
ð 	×Ñ˜a Ô'ð 	�‰ÔØ×Ñ˜*Ô%Ù�—‘ §¡× 4Ñ 4Ó 6Ó7Ô8Ø×Ñ˜a Ô&Ø�‰ÕrE   rÆ  rÍ   )r€   r‚   rÎ   r8  rï  r   rÏ   r.   rÐ   rû  r   rA   r`   rJ   r]   rš   r  rõ  rÑ   r  r×  r  r   r  r  r§   rÒ   rÓ   r™   rS   rÔ   rÕ   s   @rD   ré  ré  ä  s·  ø„ ñð —M‘M€Mð 	ðà	×	'Ñ	'ð€Nò
Ðð &*Ø'+ñ.à�m‰m˜dÑ"ð.ð  Ñ$ð.ð ð	.ð
 
õ.ð˜T &§-¡-Ñ0ó ð F§M¡Mó ð ð Vð °ò ó ðð$ ð;˜5  e¨C°¨H¡o°u¸t±|Ð!CÑDð ;Èò ;ó ð;ð ð

˜%  U¨3°¨8¡_°e¸d±lÐ BÑCð 

Èò 

ó ð

ð ðØðà	ˆs�E˜#˜s˜(‘O U¨T¡\Ð1Ñ	2òó ðð%;à#ð%;ð ð%;ð �?Ñ#ð	%;ð
 �S˜/Ð)Ñ*ð%;ð 
õ%;÷NrE   ré  c                   óÚ   ‡ — e Zd Zdefd„Zedddej                  e   de	dz  dedd f
d	„«       Z
d
edededdfˆ fd„Zdddee   deeef   defd„Zdd„Zdefd„Zdefd„Zdedefd„Zˆ xZS )ÚWeakRefVariabler<   c                 ó"   — t         j                  S rG   )ÚweakrefÚrefrI   s    rD   rJ   zWeakRefVariable.python_typez	  s   € Ü�{‰{ÐrE   rT   r6   Úweakref_valuer^   NÚoptionsc                 óî   — |€J ‚|j                   }|xr t        |d«      }t        j                  | ||«      } |«       }|xr t	        |«      }t        j                  | ||«      }||d<   t        ||fi |¤ŽS )NÚ__callback__r^   )r  r   r.   r‘   r#   r  )	rT   r  r^   r  ÚcallbackÚcallback_sourceÚcallback_vtÚreferentÚreferent_vts	            rD   r‘   zWeakRefVariable.build}	  s‡   € ð Ð!Ð!Ð!Ø ×-Ñ-ˆØ ÒG¤Z°¸Ó%GˆÜ%×+Ñ+¨B°¸/ÓJˆÙ “?ˆØÒ5Ô-¨fÓ5ˆÜ%×+Ñ+¨B°¸&ÓAˆØ"ˆ�ÑÜ˜{¨KÑC¸7ÑCÐCrE   r  r  c                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r>   )r@   rA   r  r  )rB   r  r  r  rC   s       €rD   rA   zWeakRefVariable.__init__�	  s%   ø€ ô 	‰ÑÑ#˜7Ò#Ø&ˆÔØ&ˆÕrE   r{   r;   c                 ó   — | j                   S rG   )r  r˜  s       rD   r’   zWeakRefVariable.call_function–	  s   € ð ×ÑÐrE   c                 ó¬   ‡— ‰j                  ˆfd„«        ‰| j                  «        ‰| j                  «       ‰j                  t	        dd«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )Nr  r  )r  r  s   €rD   rO   z-WeakRefVariable.reconstruct.<locals>.<lambda>Ÿ	  s   ø€  g×&>Ñ&>¸yÈ%Ó&P€ rE   r   F)rP   r  r  rQ   r   rA  s    `rD   rS   zWeakRefVariable.reconstructž	  sD   ø€ Ø×ÑÓPÔQÙ�× Ñ Ô!Ù�× Ñ Ô!Ø×ÑÔ2°1°eÓ<Õ=rE   c                 ó6   — | j                   j                  «       S rG   )r  r	  rI   s    rD   r	  z"WeakRefVariable.is_python_hashable¤	  s   € Ø×Ñ×2Ñ2Ó4Ð4rE   c                 ó6   — | j                   j                  «       S rG   )r  r  rI   s    rD   r  zWeakRefVariable.get_python_hash§	  s   € à×Ñ×/Ñ/Ó1Ð1rE   r  c                 ón   — t        |t        «      sy| j                  j                  |j                  «      S )NF)r�   r  r  r  r  s     rD   r  zWeakRefVariable.is_python_equal«	  s,   € Ü˜%¤Ô1ØØ×Ñ×/Ñ/°×0AÑ0AÓBÐBrE   rÍ   )r€   r‚   rÎ   r`   rJ   rš   r  ÚReferenceTyper   r   r‘   r.   rA   r   rÓ   r§   r’   rS   r  r	  r  r  r‰   r  rÔ   rÕ   s   @rD   r  r  y	  sù   ø„ ð˜Tó ð ðDØ#ðDà×,Ñ,¨SÑ1ðDð ˜‘ðDð ð	Dð
 
òDó ðDð 'Ø*ð'Ø9Hð'ØUXð'à	õ'ð à#ð ð �Ñ'ð ð �S˜/Ð)Ñ*ð	 ð
 
ó ó>ð5 Dó 5ð2 ó 2ðC Vð C°÷ CrE   r  )‡r8  rH   r©  rv  r¹  r„  rŽ  rÃ  rï  rÑ  rü  rÛ   r›   r  Úcollections.abcr   r   r   r   Útypingr   r   r	   r
   r   Útorch._Cr‹   Útorch._numpyr`  r{  Útorch.utils._pytreerM  Ú_pytreer°  Útorch._dynamo.variables.baser   Útorch._dynamo.variables.listsr   Útorch._guardsr   rW   r   r   r   r   Úbytecode_transformationr   r   r   Úcreate_parameter_opr   rÀ   r   r   r   Úguardsr   r   Úmutation_guardr   r^   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   rì  r,   r-   r.   râ  r/   Ú	functionsr0   r1   Úuser_definedr2   r3   r4   Útorch._dynamo.codegenr5   Útorch._dynamo.symbolic_convertr6   r8   r×   rã   r  r6  r:  r?  rR  rZ  rd  rg  Ú	dataclassr¦  rƒ  rÈ  rŠ   rv   rï  r  r$  r5  Ú	lru_cacherÓ   rœ   rT  rY  r[  r~  r©   r†  r�  r¢  rµ  r»  rÆ  rß  rÙ  ÚfinfoÚiinforÇ  rg  ræ  ré  r  r?   rE   rD   ú<module>r<     sK  ðñó" Û Û Û Û Û Û Û Û 	Û 
Û Û Û ß .Ý Ý %ß @Õ @ã Ý ß $Ð $Ý 5Ý 7Ý  ç @Ó @÷ñ õ
 Gß KÑ Kß 0Ý 5÷÷ ÷÷ ñ ÷ WÑ VÝ &ß Gß XÑ Xñ Ý/ÝDôQ
�Oô Q
ôh
-˜?ô -ô(^;˜ô ^;ôBj4˜ô j4ôZ�oô ô
˜oô 
ô2?7�ô ?7ôD�?ô ô4#˜ô #ð
%¨cð %°h¸sÀC¸xÑ6Hó %ôc˜ô cðL ×Ñ÷Mð Mó ðMôD-Ð&?ô D-ôN2Ð6ô 2ôj(�_ô (ô$AG�oô AGôHI
˜Oô I
ôX˜ô ô2/=˜?ô /=ôdb
�_ô b
ðJ €×Ñ˜QÔð˜4 × 9Ñ 9¸5×;MÑ;MÐ MÑNò ó  ðð( €×Ñ˜QÔð(˜4 × 2Ñ 2°E×4MÑ4MÐ MÑNò (ó  ð(ôa
�Oô a
ôJ?�?ô ?ô*-�oô -ôPD˜?ô PDôf�_ô ô E˜ô EôP7˜oô 7ô0*
˜Oô *
ôZSA˜?ô SAôl#Ð/ô #ô(Ð-ô (ð ‡I‚IÐ#Ø‡I‚IÐ#Ø‡I‚IÐ!ðÐ ô
˜/ô 
ô<R�_ô Rôj5C�oõ 5CrE   