§
    ŠŠtj¨ ã                  ó|
  — U d dl m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mZmZ d dlZd dlmc mZ d dlmZmZmZmZmZmZmZmZ d dlmZ erd dlmZ d dlm Z  d dl!Z!d d	l"m#Z#  ej$        e%¦  «        Z&ej         '                    e%d
¦  «        Z( e)¦   «         Z*de+d<   e,e-z  e.z  dz  Z/g d¢Z0d dl1m2Z3 ed«d„¦   «         Z4ed¬d„¦   «         Z4ed­d„¦   «         Z4ed®d„¦   «         Z4d®d„Z4 G d„ d¦  «        Z5 G d„ d ¦  «        Z6 G d!„ d"e6e.¦  «        Z7i d#ej8        “d$ej9        “d%ej:        “d&ej;        “d'ej;        “d(ej<        “d)ej=        “d*ej>        “d+ej?        “d,ej@        “d-ejA        “d.ejB        “d/d0„ “d1ejC        “d2ejD        “d3ejE        “d4ejF        “i d5ejG        “d6ejH        “d7ejI        “d8ejJ        “d9ejJ        “d:ejK        “d;ejL        “d<ejL        “d=ejM        “d>ejN        “d?ejO        “d@e“dAe“dBe“dCe“dDe“dEejP        “¥dFejP        i¥ZQh dG£ZRd¯dK„ZSdLZTeTD ][ZUdMeU› �ZVdNeV› �ZW eXe5eV eSeU¦  «        ¦  «          eYeeW¦  «        eQeV<   eR :                    eV¦  «         e0 Z                    eV¦  «         Œ\d/hZ[eRe[z  Z\h dO£Z]h dP£Z^d)hZ_e]e_z  Z`h dQ£Zad&d8hZbd&d8dRdSœZch dT£ZdeTD ]ZUdMeU› �ZVed :                    eV¦  «         Œh dU£Zeh dV£Zfd°dZ„Zgd°d[„Zhd°d\„Zid°d]„Zjd°d^„Zkd°d_„Zld°d`„Zmd°da„Znd°db„Zod°dc„Zpd±dh„Zq	 	 d²d³dp„Zrd°dq„Zsd°dr„Ztd°ds„Zui d%ej:        “d?ejO        “d5ejG        “d4ej“d<ek“d;el“d&em“d'es“d8en“d9et“d:eu“dEeg“dFeh“d,ei“d2eo“d>ep“Zvd´dv„Zwdµdw„Zxdµdx„Zydµdy„Zzd°dz„Z{d°d{„Z|d°d|„Z}d°d}„Z~d°d~„Zd°d„Z€d°d€„Z�d°d�„Z‚d¶dƒ„Zƒe	j„        e%         Z…d·d…„Z†eTD ]-ZUd†eU› �Z‡ e†eU¦  «        Zˆe‡xeˆ_‰        eˆ_%         eXe…e‡eˆ¦  «         Œ.[ˆ[U[‡dµd‡„ZŠ	 d¸d¹d‹„Z‹dµdŒ„ZŒdµd�„Z�i ev¥i dDejŽ        “d#ej8        “d)e{“d6e|“d.e}“d3e~“d1e“d-e€“d*ex“d+ey“d@eŒ“d(ez“d7ejI        “dCe�“dBe‚“dAeƒ“d$eŠ“¥e‹e�dŽœ¥Z�eTD ]ZUdMeU› �ZV eYe…d†eU› �¦  «        e�eV<   Œ[U[V[T[…dºd‘„Z�d»d”„Z‘dºd•„Z’dºd–„Z“d»d—„Z”dºd˜„Z•dºd™„Z–dºdš„Z—e�e’e“e•e–e—d›œZ˜d¼dž„Z™d½d¡„Zšd¾d¤„Z›d¿d§„Zœd¿d¨„Z�e� ž                    ¦   «         D ]\  ZŸZ  eœeŸe ¦  «         Œe˜ ž                    ¦   «         D ]\  ZŸZ  e�eŸe ¦  «         ŒdÀdª„Z¡e�D ]TZŸeŸe]v r e¡eŸe¦  «         ŒeŸeav r e¡eŸe¦  «         Œ$eŸe_v seŸe^v r e¡eŸe¦  «          e¡eŸe¦  «         eŸecvr e¡eŸe¦  «         ŒU[Ÿ[ dS )Áé    )ÚannotationsN)Ú	lru_cacheÚupdate_wrapper)ÚAnyÚoverloadÚTYPE_CHECKING)Ú	sym_floatÚsym_iteÚsym_maxÚsym_minÚsym_notÚSymBoolÚSymFloatÚSymInt)Údtrace_structured)ÚCallable)ÚSelf)ÚShapeEnvÚsym_nodeÚobjectÚ_NO_HINT)ÚSymNodeÚmethod_to_operatorÚmagic_methodsÚ
DynamicInt)Úpy_sym_typesÚtú
type[bool]Úreturnútype[SymBool]c                ó   — d S ©N© ©r   s    ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/fx/experimental/sym_node.pyÚ_to_symtyper&   D   s   € Ø14°ó    ú	type[int]útype[SymInt]c                ó   — d S r"   r#   r$   s    r%   r&   r&   F   s   € Ø/2¨sr'   útype[float]útype[SymFloat]c                ó   — d S r"   r#   r$   s    r%   r&   r&   H   s   € Ø36°3r'   Útypec                ó   — d S r"   r#   r$   s    r%   r&   r&   J   s   € Ø"% #r'   c                óf   — | t           u rt          S | t          u rt          S | t          u rt
          S | S r"   )Úboolr   Úintr   Úfloatr   r$   s    r%   r&   r&   L   s1   € Ø�D€y€yÝˆØ�C€x€xÝˆØ�E€z€zÝˆØ€Hr'   c                  óö  — e Zd ZU dZdZded<   	 	 	 dd€d„Zd�d„Zd‚d„Zdƒd„Z	e
d„d„¦   «         Ze
d…d„¦   «         Zd†d„Zd‡d!„Zdˆd#„Zd‰d%„Zd†d&„Zd†d'„Zd†d(„Zd†d)„ZdŠd+„Zd‹d-„ZdŒd.„Zd�d/„ZdŽd1„ZdŽd2„ZdŽd3„ZdŽd4„Zd�d5„Zd�d6„Zd�d�d8„Zd�d9„Z d‘d:„Z!d‘d;„Z"d‘d<„Z#d‘d=„Z$d‘d>„Z%d‘d?„Z&d‘d@„Z'd‘dA„Z(d‘dB„Z)d‘dC„Z*d‘dD„Z+d‘dE„Z,d‘dF„Z-d�dG„Z.d‘dH„Z/d‘dI„Z0d‘dJ„Z1d‘dK„Z2d‘dL„Z3d‘dM„Z4d�dN„Z5d�dO„Z6d�dP„Z7d�dQ„Z8d�dR„Z9d�dS„Z:d‘dT„Z;d‘dU„Z<d’dX„Z=d“d\„Z>d“d]„Z?d“d^„Z@d“d_„ZAd“d`„ZBd“da„ZCd‘db„ZDd‘dc„ZEd‘dd„ZFd‘de„ZGd‘df„ZHd‘dg„ZId‘dh„ZJd‘di„ZKd“dj„ZLdƒdk„ZMd”dm„ZNd•d–dp„ZOd—ds„ZPd˜dt„ZQd™du„ZRd™dv„ZSd™dw„ZTd™dx„ZUd™dy„ZVd™dz„ZWd†d{„ZXd†d|„ZYdšd}„ZZd†d~„Z[dS )›r   z¤
    This is a type erased SymInt/SymFloat which we use to do actual operations.
    End users don't touch this.  Magic methods are NOT defined on this object.
    Fr1   Ú_optimized_summationNÚexprr   Ú	shape_envúShapeEnv | NoneÚpytyper.   ÚhintúHintType | objectÚconstantúint | float | bool | NoneÚfx_nodeÚoptimized_summationr   ÚNonec                ó  ‡ — |‰ _         |‰ _        |‰ _        |‰ _        d‰ _        d ‰ _        d
ˆ fd„}|t          u rd }nž|�’t          |¦  «        |u s@t          |¦  «        t          |¦  «        u s"t          d|› dt          |¦  «        › �¦  «        ‚‰ j        r9‰ j        j
        r- |¦   «         }	||	k    rt          |› d|	› d‰ j        › d	�¦  «        ‚n
 |¦   «         }|‰ _        |‰ _        ‰ j        o‰ j        j
        }
|
o|‰ _        d S )Néÿÿÿÿr   ú&HintType | SymInt | SymFloat | SymBoolc                 ó  •— ddl m}   | ‰j        ¦  «        rd S ‰j        €t	          d¦  «        ‚‰j                             ‰j        d¬¦  «        }|�,t          |t          ¦  «        s‰                     |¦  «        n|}|S )Nr   )Úhas_free_unbacked_symbolsz%shape_env is required to compute hintT)Úcompute_hint)	Ú%torch.fx.experimental.symbolic_shapesrE   r6   r7   ÚRuntimeErrorÚ_maybe_evaluate_staticÚ
isinstanceÚSymTypesr9   )rE   r:   Úselfs     €r%   rF   z&SymNode.__init__.<locals>.compute_hint”   s–   ø€ ØWÐWÐWÐWÐWÐWð )Ð(¨¬Ñ3Ô3ð Ø�tØŒ~Ð%Ý"Ð#JÑKÔKÐKØ”>×8Ò8¸¼ÐQUÐ8ÑVÔVˆDØÐÝ0:¸4ÅÑ0JÔ0JÐT�t—{’{ 4Ñ(Ô(Ð(ÐPT�ØˆKr'   zCannot create SymNode of type z  with incompatible hint of type z != z (for ú)©r   rC   )Ú_exprr7   r9   r5   Ú	_expr_verÚ_expr_cacher   r.   r&   ÚAssertionErrorÚ_translation_validation_enabledr6   Ú_hintr<   r>   )rL   r6   r7   r9   r:   r<   r>   r?   rF   Úcomputed_hintÚtx_validation_ens   `          r%   Ú__init__zSymNode.__init__h   sk  ø€ ð ˆŒ
Ø"ˆŒØˆŒØ$7ˆÔ!ØˆŒØ*.ˆÔð:	ð 	ð 	ð 	ð 	ð 	ð" •8ÐÐàˆDˆDØÐÝ˜‘J”J &Ð(Ð(­D°©J¬J½+ÀfÑ:MÔ:MÐ,MÐ,MÝ$ðLØðLð LÝ?CÀD¹z¼zðLð Lñô ð ð Œ~ð Y $¤.Ô"Pð Yð !- ¡¤�Ø˜=Ò(Ð(Ý(¨DÐ)WÐ)W°mÐ)WÐ)WÈ4Ì9Ð)WÐ)WÐ)WÑXÔXÐXøà�<‘>”>ˆDØˆŒ
Ø3;ˆŒð ŒNÐM˜tœ~ÔMð 	ð (Ð3¨GˆŒˆˆr'   r   c                ó\   — t          | j        || j        | j        | j        | j        ¦  «        S r"   )r   rO   r9   rT   r<   r>   )rL   r7   s     r%   Úwith_shape_envzSymNode.with_shape_envÁ   s+   € ÝØŒJ˜	 4¤;°´
¸D¼MÈ4Ì<ñ
ô 
ð 	
r'   Úotherc                ó¢   — | j         |j         k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r"   )rO   r9   rT   r<   r>   ©rL   rZ   s     r%   Ú	_value_eqzSymNode._value_eqÆ   s]   € ð ŒJ˜%œ+Ò%ð .Ø”˜uœ|Ò+ð.à”
˜eœkÒ)ð.ð ” ¤Ò/ð.ð ” ¤Ò-ð	
r'   r2   c                ó\   — t          | j        | j        | j        | j        | j        f¦  «        S r"   )ÚhashrO   r9   rT   r<   r>   ©rL   s    r%   Ú_value_hashzSymNode._value_hashÐ   s%   € å�T”Z ¤¨d¬j¸$¼-ÈÌÐVÑWÔWÐWr'   úsympy.Basicc                óJ  — t          | j        t          ¦  «        s| j        j        r| j        S | j        €t          d¦  «        ‚| j        j        }|dk    r| j        S | j        �|| j        k    r| j        S | j         	                    | j        ¦  «        }|| _        || _        |S )Nz$shape_env is required to access exprr   )
rJ   rO   r2   Ú	is_numberr7   rR   Ú_replacements_version_counterrQ   rP   Úreplace)rL   ÚverÚresults      r%   r6   zSymNode.exprÔ   sª   € õ �t”z¥3Ñ'Ô'ð	àŒzÔ#ð	ð ”:ÐØŒ>Ð!Ý Ð!GÑHÔHÐHØŒnÔ:ˆØ�!Š8ˆ8Ø”:ÐØÔÐ'¨C°4´>Ò,AÐ,AØÔ#Ð#Ø”×'Ò'¨¬
Ñ3Ô3ˆØˆŒØ!ˆÔØˆr'   rC   c                ó   — | j         S r"   ©rT   r`   s    r%   r:   zSymNode.hintç   s
   € àŒzÐr'   c                ó   — | j         d uS r"   rj   r`   s    r%   Úhas_hintzSymNode.has_hintë   s   € ØŒz Ð%Ð%r'   ú
int | Nonec                óF   — | j         j        rt          | j         ¦  «        S d S r"   )r6   rd   r2   r`   s    r%   Úmaybe_as_intzSymNode.maybe_as_intî   s"   € ØŒ9Ôð 	Ý�t”y‘>”>Ð!à�4r'   úfloat | Nonec                ój   — dd l }t          | j        |j        ¦  «        rt	          | j        ¦  «        S d S ©Nr   )ÚsympyrJ   r6   ÚFloatr3   ©rL   rs   s     r%   Úmaybe_as_floatzSymNode.maybe_as_floatõ   s6   € Øˆˆˆå�d”i ¤Ñ-Ô-ð 	Ý˜œÑ#Ô#Ð#à�4r'   úbool | Nonec                óN   — dd l }| j        |j        u rdS | j        |j        u rdS d S )Nr   TF)rs   r6   ÚtrueÚfalseru   s     r%   Úmaybe_as_boolzSymNode.maybe_as_boolý   s8   € ØˆˆˆàŒ9˜œ
Ð"Ð"Ø�4ØŒY˜%œ+Ð%Ð%Ø�5à�4r'   c                ó   — | j         t          u S r"   )r9   r2   r`   s    r%   Úis_intzSymNode.is_int  s   € ØŒ{�cÐ!Ð!r'   c                ó   — | j         t          u S r"   )r9   r3   r`   s    r%   Úis_floatzSymNode.is_float
  s   € ØŒ{�eÐ#Ð#r'   c                ó   — | j         t          u S r"   )r9   r1   r`   s    r%   Úis_boolzSymNode.is_bool  s   € ØŒ{�dÐ"Ð"r'   c                ó„   — | j         d uo7t          | j         t          ¦  «        o| j         j                             ¦   «         S r"   )rT   rJ   r   ÚnodeÚis_nested_intr`   s    r%   r„   zSymNode.is_nested_int  s?   € ð ŒJ˜dÐ"ð 0Ý˜4œ:¥vÑ.Ô.ð0à”
”×-Ò-Ñ/Ô/ð	
r'   Únumc                óÎ   — t          |¦  «        t          urt          dt          |¦  «        › �¦  «        ‚dd l}t	           |j        |¦  «        | j        t          |||¬¦  «        S )NúExpected int, got r   ©r<   r>   )r.   r2   rR   rs   r   ÚIntegerr7   ©rL   r…   rs   s      r%   Úwrap_intzSymNode.wrap_int  sl   € Ý�‰9Œ9�CÐÐÝ Ð!Aµd¸3±i´iÐ!AÐ!AÑBÔBÐBØˆˆˆåØˆEŒM˜#ÑÔ ¤µ°SÀ3ÐPSð
ñ 
ô 
ð 	
r'   r3   c                óÎ   — t          |¦  «        t          urt          dt          |¦  «        › �¦  «        ‚dd l}t	           |j        |¦  «        | j        t          |||¬¦  «        S )NzExpected float, got r   rˆ   )r.   r3   rR   rs   r   rt   r7   rŠ   s      r%   Ú
wrap_floatzSymNode.wrap_float!  sl   € Ý�‰9Œ9�EÐ!Ð!Ý Ð!C½¸S¹	¼	Ð!CÐ!CÑDÔDÐDØˆˆˆåØˆEŒK˜ÑÔ˜dœn­e°SÀ3ÐPSð
ñ 
ô 
ð 	
r'   c                óÎ   — t          |¦  «        t          urt          dt          |¦  «        › �¦  «        ‚dd l}t	          |r|j        n|j        | j        t          |||¬¦  «        S )NzExpected bool, got r   rˆ   )r.   r1   rR   rs   r   ry   rz   r7   rŠ   s      r%   Ú	wrap_boolzSymNode.wrap_bool*  sq   € Ý�‰9Œ9�DÐ Ð Ý Ð!Bµt¸C±y´yÐ!BÐ!BÑCÔCÐCØˆˆˆåØÐ.ˆEŒJˆJ 5¤;ØŒNÝØØØð
ñ 
ô 
ð 	
r'   c                ó   — | S r"   r#   r`   s    r%   ÚclonezSymNode.clone8  s   € Øˆr'   úbuiltins.strc                ó   — | j         › S r"   ©r6   r`   s    r%   ÚstrzSymNode.str;  s   € Ø”)ˆ~Ðr'   c                ó*   — |                       ¦   «         S r"   ©r•   r`   s    r%   Ú__str__zSymNode.__str__>  s   € Ø�xŠx‰zŒzÐr'   c                ó@  — d| j         › d| j        › d| j        › �g}| j        �|                     d| j        › �¦  «         | j        �|                     d| j        › �¦  «         | j        �|                     d| j        › �¦  «         d                     |¦  «        dz   S )	NzSymNode(z, shape_env=z	, pytype=zhint=z	constant=zfx_node=z, rM   )rO   r7   r9   rT   Úappendr<   r>   Újoin)rL   Úreps     r%   Ú__repr__zSymNode.__repr__A  s°   € àU�t”zÐUÐU¨t¬~ÐUÐUÈÌÐUÐUð
ˆð Œ:Ð!Ø�JŠJÐ+˜tœzÐ+Ð+Ñ,Ô,Ð,ØŒ=Ð$Ø�JŠJÐ2 4¤=Ð2Ð2Ñ3Ô3Ð3ØŒ<Ð#Ø�JŠJÐ0 $¤,Ð0Ð0Ñ1Ô1Ð1Ø�yŠy˜‰~Œ~ Ñ#Ð#r'   c                ó*   — |                       ¦   «         S r"   r—   r`   s    r%   Ú_graph_reprzSymNode._graph_reprM  s   € à�xŠx‰zŒzÐr'   c                ó*   — |                       ¦   «         S r"   )Ú_absr`   s    r%   ÚabszSymNode.absS  ó   € Ø�yŠy‰{Œ{Ðr'   c                ó*   — |                       ¦   «         S r"   )Ú_posr`   s    r%   ÚposzSymNode.posV  r£   r'   Úndigitsc                ó,   — |                       |¦  «        S r"   )Ú_round)rL   r§   s     r%   ÚroundzSymNode.roundY  s   € Ø�{Š{˜7Ñ#Ô#Ð#r'   c                ó*   — |                       ¦   «         S r"   )Ú_truncr`   s    r%   ÚtrunczSymNode.trunc\  ó   € Ø�{Š{‰}Œ}Ðr'   c                ó,   — |                       |¦  «        S r"   )Ú_addr\   s     r%   ÚaddzSymNode.add_  ó   € Ø�yŠy˜ÑÔÐr'   c                ó,   — |                       |¦  «        S r"   )Ú_subr\   s     r%   ÚsubzSymNode.subb  r²   r'   c                ó,   — |                       |¦  «        S r"   )Ú_mulr\   s     r%   ÚmulzSymNode.mule  r²   r'   c                ó,   — |                       |¦  «        S r"   )Ú_modr\   s     r%   ÚmodzSymNode.modh  r²   r'   c                ó,   — |                       |¦  «        S r"   )Ú
_float_powr\   s     r%   Ú	float_powzSymNode.float_powk  s   € Ø�Š˜uÑ%Ô%Ð%r'   c                ó,   — |                       |¦  «        S r"   )Ú_pow_by_naturalr\   s     r%   Úpow_by_naturalzSymNode.pow_by_naturaln  s   € Ø×#Ò# EÑ*Ô*Ð*r'   c                ó,   — |                       |¦  «        S r"   )Ú_and_r\   s     r%   Úand_zSymNode.and_q  s   € Ø�zŠz˜%Ñ Ô Ð r'   c                ó,   — |                       |¦  «        S r"   )Ú_or_r\   s     r%   Úor_zSymNode.or_t  r²   r'   c                ó,   — |                       |¦  «        S r"   )Ú_float_truedivr\   s     r%   Úfloat_truedivzSymNode.float_truedivw  s   € Ø×"Ò" 5Ñ)Ô)Ð)r'   c                ó,   — |                       |¦  «        S r"   )Ú_int_truedivr\   s     r%   Úint_truedivzSymNode.int_truedivz  ó   € Ø× Ò  Ñ'Ô'Ð'r'   c                ó,   — |                       |¦  «        S r"   )Ú_int_floordivr\   s     r%   Úint_floordivzSymNode.int_floordiv}  ó   € Ø×!Ò! %Ñ(Ô(Ð(r'   c                ó,   — |                       |¦  «        S r"   )Ú_lshiftr\   s     r%   ÚlshiftzSymNode.lshift€  ó   € Ø�|Š|˜EÑ"Ô"Ð"r'   c                ó,   — |                       |¦  «        S r"   )Ú_rshiftr\   s     r%   ÚrshiftzSymNode.rshiftƒ  rÖ   r'   c                ó*   — |                       ¦   «         S r"   )Ú_sym_notr`   s    r%   r   zSymNode.sym_not†  ó   € Ø�}Š}‰ŒÐr'   c                ó,   — |                       |¦  «        S r"   )Ú_eqr\   s     r%   Úeqz
SymNode.eq‰  ó   € Ø�xŠx˜‰ŒÐr'   c                ó,   — |                       |¦  «        S r"   )Ú_ner\   s     r%   Únez
SymNode.neŒ  rà   r'   c                ó,   — |                       |¦  «        S r"   )Ú_gtr\   s     r%   Úgtz
SymNode.gt�  rà   r'   c                ó,   — |                       |¦  «        S r"   )Ú_ltr\   s     r%   Últz
SymNode.lt’  rà   r'   c                ó,   — |                       |¦  «        S r"   )Ú_ler\   s     r%   Úlez
SymNode.le•  rà   r'   c                ó,   — |                       |¦  «        S r"   )Ú_ger\   s     r%   Úgez
SymNode.ge˜  rà   r'   c                ó*   — |                       ¦   «         S r"   )Ú_floorr`   s    r%   ÚfloorzSymNode.floor›  r®   r'   c                ó*   — |                       ¦   «         S r"   )Ú_is_integerr`   s    r%   Ú
is_integerzSymNode.is_integerž  s   € Ø×ÒÑ!Ô!Ð!r'   c                ó*   — |                       ¦   «         S r"   )Ú
_sym_floatr`   s    r%   r	   zSymNode.sym_float¡  s   € Ø�ŠÑ Ô Ð r'   c                ó*   — |                       ¦   «         S r"   )Ú_sym_intr`   s    r%   Úsym_intzSymNode.sym_int¤  rÜ   r'   c                ó*   — |                       ¦   «         S r"   )Ú_ceilr`   s    r%   ÚceilzSymNode.ceil§  s   € Ø�zŠz‰|Œ|Ðr'   c                ó*   — |                       ¦   «         S r"   )Ú_negr`   s    r%   ÚnegzSymNode.negª  r£   r'   c                ó,   — |                       |¦  «        S r"   )Ú_sym_minr\   s     r%   r   zSymNode.sym_min­  ó   € Ø�}Š}˜UÑ#Ô#Ð#r'   c                ó,   — |                       |¦  «        S r"   )Ú_sym_maxr\   s     r%   r   zSymNode.sym_max°  r  r'   Úthen_valÚelse_valc                ó.   — |                       ||¦  «        S r"   )Ú_sym_ite)rL   r  r  s      r%   r
   zSymNode.sym_ite³  s   € Ø�}Š}˜X xÑ0Ô0Ð0r'   Úsizesúlist[SymNode]Ústridesc                ó.   — |                       ||¦  «        S r"   )Ú_is_contiguous©rL   r
  r  s      r%   Úis_contiguouszSymNode.is_contiguous¶  s   € Ø×"Ò" 5¨'Ñ2Ô2Ð2r'   c                ó.   — |                       ||¦  «        S r"   )Ú_is_channels_last_contiguous_2dr  s      r%   Úis_channels_last_contiguous_2dz&SymNode.is_channels_last_contiguous_2d¹  ó   € ð ×3Ò3°E¸7ÑCÔCÐCr'   c                ó.   — |                       ||¦  «        S r"   )Ú_is_channels_last_contiguous_3dr  s      r%   Úis_channels_last_contiguous_3dz&SymNode.is_channels_last_contiguous_3d¾  r  r'   c                ó.   — |                       ||¦  «        S r"   )Ú_is_channels_last_strides_2dr  s      r%   Úis_channels_last_strides_2dz#SymNode.is_channels_last_strides_2dÃ  ó   € ð ×0Ò0°¸Ñ@Ô@Ð@r'   c                ó.   — |                       ||¦  «        S r"   )Ú_is_channels_last_strides_3dr  s      r%   Úis_channels_last_strides_3dz#SymNode.is_channels_last_strides_3dÈ  r  r'   c                ó.   — |                       ||¦  «        S r"   )Ú'_is_non_overlapping_and_dense_indicatorr  s      r%   Ú&is_non_overlapping_and_dense_indicatorz.SymNode.is_non_overlapping_and_dense_indicatorÍ  s   € ð ×;Ò;¸EÀ7ÑKÔKÐKr'   c                ó,   — |                       |¦  «        S r"   )rÇ   r\   s     r%   Úsym_orzSymNode.sym_orÓ  rà   r'   c                ó,   — |                       |¦  «        S r"   )rÄ   r\   s     r%   Úsym_andzSymNode.sym_andÖ  r²   r'   c                ó,   — |                       |¦  «        S r"   )Ú_bitwise_andr\   s     r%   Úbitwise_andzSymNode.bitwise_andÚ  rÎ   r'   c                ó,   — |                       |¦  «        S r"   )Ú_bitwise_orr\   s     r%   Ú
bitwise_orzSymNode.bitwise_orÝ  s   € Ø×Ò Ñ&Ô&Ð&r'   c                ó,   — |                       |¦  «        S r"   )Ú_bitwise_xorr\   s     r%   Úbitwise_xorzSymNode.bitwise_xorà  rÎ   r'   c                ó,   — |                       |¦  «        S r"   )rÊ   r\   s     r%   ÚtruedivzSymNode.truedivä  rÒ   r'   c                ó,   — |                       |¦  «        S r"   )rÑ   r\   s     r%   ÚfloordivzSymNode.floordivç  rÎ   r'   c                ó,   — |                       |¦  «        S r"   )r¾   r\   s     r%   ÚpowzSymNode.powë  s   € Ø�~Š~˜eÑ$Ô$Ð$r'   c                óp   — |                       ||¦  «                             t          | d¦  «        ¦  «        S )Né   )r!  rß   Úto_noder  s      r%   Úis_non_overlapping_and_densez$SymNode.is_non_overlapping_and_denseî  s9   € ð ×:Ò:¸5À'ÑJÔJ×MÒMÝ�D˜!ÑÔñ
ô 
ð 	
r'   c                ó.   — |                       dd¦  «        S ©NÚ r   )Ú	guard_intr`   s    r%   Úint_zSymNode.int_õ  s   € Ø�~Š~˜b !Ñ$Ô$Ð$r'   Úargsc           
     ó<  — dd l }ddlm}m}  |¦   «         r=t	          |  |t
          j        t          d„ |D ¦   «         ¦  «        fi ¦  «        ¦  «        S d„ |D ¦   «         } |j        |Ž }g }t          }|D ]%}	|	j
        € n*|                     |	j
        ¦  «         Œ&t          |¦  «        }| j        €t          d¦  «        ‚| j                             t
          j        t          d„ |D ¦   «         ¦  «        f¦  «        \  }
}t!          || j        t"          ||
¬¦  «        S )Nr   ©Úget_proxy_modeÚhandle_sym_dispatchc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r"   ©Ú	wrap_node©Ú.0Úas     r%   ú	<genexpr>z"SymNode.sym_sum.<locals>.<genexpr>
  s(   è è € Ð6Ð6¨A�9 Q™<œ<Ð6Ð6Ð6Ð6Ð6Ð6r'   c                ó   — g | ]	}|j         ‘Œ
S r#   r”   rF  s     r%   ú
<listcomp>z#SymNode.sym_sum.<locals>.<listcomp>  s   € Ð&Ð&Ð&˜A�”Ð&Ð&Ð&r'   z!shape_env is required for sym_sumc              3  ó$   K  — | ]}|j         V — Œd S r"   ©r>   rF  s     r%   rI  z"SymNode.sym_sum.<locals>.<genexpr>  s$   è è € Ð!:Ð!:° !¤)Ð!:Ð!:Ð!:Ð!:Ð!:Ð!:r'   rM  )rs   Ú"torch.fx.experimental.proxy_tensorrA  rB  r7  ÚtorchÚsym_sumÚtupleÚAddr   r:   rš   Úsumr7   rH   Ú_create_fx_call_functionr   r2   )rL   r>  rs   rA  rB  ÚexprsÚoutÚ
size_hintsÚout_hintrH  r>   Ú_s               r%   rP  zSymNode.sym_sumü  sk  € Øˆˆˆð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 ˆ>ÑÔð 	ÝØØ#Ð#Ý”MÝÐ6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ð8Øñô ñô ð ð 'Ð& Ð&Ñ&Ô&ˆØˆeŒi˜Ðˆàˆ
Ý#ˆØð 	'ð 	'ˆAØŒvˆ~Ø�Ø×Ò˜aœfÑ%Ô%Ð%Ð%å˜:‘”ˆHàŒ>Ð!ÝÐBÑCÔCÐCØ”^×<Ò<ÝŒM�EÐ!:Ð!:°TÐ!:Ñ!:Ô!:Ñ:Ô:Ð<ñ
ô 
‰
ˆ�õ
 �s˜DœN­C°À7ÐKÑKÔKÐKr'   Úsize_obliviousúbool | int | floatc                ód   — | j         €t          d¦  «        ‚| j                              | |¦  «        S )Nz!shape_env is required to evaluate)r7   rH   Úevaluate_sym_node)rL   rZ  s     r%   ÚevaluatezSymNode.evaluate#  s1   € ØŒ>Ð!ÝÐBÑCÔCÐCØŒ~×/Ò/°°nÑEÔEÐEr'   ÚfileÚlinec                óž   — |                       ¦   «         }	 t          |¦  «        S # t          $ r t                               d|¦  «         ‚ w xY w)NzFailed to convert to int: %s)r^  r2   Ú	ExceptionÚlogÚwarning©rL   r_  r`  Úrs       r%   r<  zSymNode.guard_int)  sT   € ð �MŠM‰OŒOˆð	Ý�q‘6”6ˆMøÝð 	ð 	ð 	Ý�KŠKÐ6¸Ñ:Ô:Ð:Øð	øøøó	   –% ¥'Ac                óž   — |                       ¦   «         }	 t          |¦  «        S # t          $ r t                               d|¦  «         ‚ w xY w)NzFailed to convert to float: %s)r^  r3   rb  rc  rd  re  s       r%   Úguard_floatzSymNode.guard_float3  sT   € ð �MŠM‰OŒOˆð	Ý˜‘8”8ˆOøÝð 	ð 	ð 	Ý�KŠKÐ8¸!Ñ<Ô<Ð<Øð	øøørg  c                óž   — |                       ¦   «         }	 t          |¦  «        S # t          $ r t                               d|¦  «         ‚ w xY w)NúFailed to convert to bool: %s©r^  r1   rb  rc  rd  re  s       r%   Ú
guard_boolzSymNode.guard_bool=  sT   € ð �MŠM‰OŒOˆð	Ý˜‘7”7ˆNøÝð 	ð 	ð 	Ý�KŠKÐ7¸Ñ;Ô;Ð;Øð	øøørg  c                ó  — ddl m} | j        €t          d¦  «        ‚|                      ¦   «         r2 || j        ¦  «        s"| j        j        s|                      ||¦  «        S | j                             | j        |› d|› �| j	        ¬¦  «        S )Nr   )Úfree_unbacked_symbolsz%shape_env is required for expect_trueú:rM  )
rG   ro  r7   rH   rl   r6   Ú+prefer_deferred_runtime_asserts_over_guardsrm  Úguard_or_defer_runtime_assertr>   )rL   r_  r`  ro  s       r%   Úexpect_truezSymNode.expect_trueG  s¯   € ØOÐOÐOÐOÐOÐOàŒ>Ð!ÝÐFÑGÔGÐGà�MŠM‰OŒOð	/à)Ð)¨$¬)Ñ4Ô4ð	/ð ”NÔNð	/ð —?’? 4¨Ñ.Ô.Ð.ð
 Œ~×;Ò;ØŒI˜$Ð'Ð' Ð'Ð'°´ð <ñ 
ô 
ð 	
r'   c                ó„   — ddl m} |                      ¦   «         st          d¦  «        ‚ |t	          | ¦  «        ¦  «        S )Nr   )Ústatically_known_trueúExpected bool type)rG   ru  r�   rR   r   )rL   r_  r`  ru  s       r%   ru  zSymNode.statically_known_true[  sJ   € ØOÐOÐOÐOÐOÐOà�|Š|‰~Œ~ð 	7Ý Ð!5Ñ6Ô6Ð6Ø$Ð$¥W¨T¡]¤]Ñ3Ô3Ð3r'   c                ó¢   — |                       d¬¦  «        }	 t          |¦  «        S # t          $ r t                               d|¦  «         ‚ w xY w)aN  
        Like guard_bool, but if we encounter unbacked symbols, if those symbols
        are size-like, we will treat them as >= 2 for the purposes of the analysis.

        This CHANGES the runtime semantics, but all size-oblivious sites have been
        audited to ensure that the runtime semantics don't change in a material way.
        Acceptable runtime semantic changes are, e.g., squeeze() no longer dropping
        an unbacked one size, or a tensor reporting as non-contiguous even if it's
        contiguous if it would have been reported contiguous due to being empty.
        T)rZ  rk  rl  re  s       r%   Úguard_size_obliviouszSymNode.guard_size_obliviousb  sZ   € ð �MŠM¨ˆMÑ.Ô.ˆð	Ý˜‘7”7ˆNøÝð 	ð 	ð 	Ý�KŠKÐ7¸Ñ;Ô;Ð;Øð	øøøs	   ˜' §'Ac                ó„   — ddl m} |                      ¦   «         st          d¦  «        ‚ |t	          | ¦  «        ¦  «        S )Nr   )Úguard_or_falserv  )rG   rz  r�   rR   r   )rL   r_  r`  rz  s       r%   rz  zSymNode.guard_or_falsev  sI   € ØHÐHÐHÐHÐHÐHà�|Š|‰~Œ~ð 	7Ý Ð!5Ñ6Ô6Ð6Øˆ~�g d™mœmÑ,Ô,Ð,r'   c                ó„   — ddl m} |                      ¦   «         st          d¦  «        ‚ |t	          | ¦  «        ¦  «        S )Nr   )Úguard_or_truerv  )rG   r|  r�   rR   r   )rL   r_  r`  r|  s       r%   r|  zSymNode.guard_or_true}  sI   € ØGÐGÐGÐGÐGÐGà�|Š|‰~Œ~ð 	7Ý Ð!5Ñ6Ô6Ð6Øˆ}�W T™]œ]Ñ+Ô+Ð+r'   c                ó.   — |                       dd¦  «        S r:  )rm  r`   s    r%   Úbool_zSymNode.bool_„  s   € Ø�Š˜r 1Ñ%Ô%Ð%r'   c                ó   — dS )NTr#   r`   s    r%   Úis_symboliczSymNode.is_symbolic‡  ó   € Øˆtr'   c                ó   — d S r"   r#   r`   s    r%   Ú
nested_intzSymNode.nested_intŠ  r�  r'   c                ó   — dS )NFr#   r`   s    r%   Úis_constantzSymNode.is_constant�  s   € Øˆur'   )NNF)r6   r   r7   r8   r9   r.   r:   r;   r<   r=   r>   r   r?   r1   r   r@   )r7   r   r   r   )rZ   r   r   r1   )r   r2   )r   rb   rN   )r   r1   )r   rm   )r   rp   )r   rw   )r…   r2   r   r   )r…   r3   r   r   )r…   r1   r   r   )r   r   )r   r’   r"   )r§   rm   r   r   )rZ   r   r   r   )r  r   r  r   r   r   )r
  r  r  r  r   r   )r>  r  r   r   )F)rZ  r1   r   r[  )r_  r’   r`  r2   r   r2   )r_  r’   r`  r2   r   r3   )r_  r’   r`  r2   r   r1   )r   r@   )\Ú__name__Ú
__module__Ú__qualname__Ú__doc__r5   Ú__annotations__rW   rY   r]   ra   Úpropertyr6   r:   rl   ro   rv   r{   r}   r   r�   r„   r‹   r�   r�   r‘   r•   r˜   r�   rŸ   r¢   r¦   rª   r­   r±   rµ   r¸   r»   r¾   rÁ   rÄ   rÇ   rÊ   rÍ   rÑ   rÕ   rÙ   r   rß   rã   ræ   ré   rì   rï   rò   rõ   r	   rú   rý   r   r   r   r
   r  r  r  r  r  r!  r#  r%  r(  r+  r.  r0  r2  r4  r8  r=  rP  r^  r<  ri  rm  rs  ru  rx  rz  r|  r~  r€  rƒ  r…  r#   r'   r%   r   r   Y   s2  € € € € € € ðð ð "'ÐÐ&Ð&Ð&Ñ&ð /3ØØ$)ðW4ð W4ð W4ð W4ð W4ðr
ð 
ð 
ð 
ð

ð 
ð 
ð 
ðXð Xð Xð Xð ðð ð ñ „Xðð$ ðð ð ñ „Xðð&ð &ð &ð &ðð ð ð ðð ð ð ðð ð ð ð"ð "ð "ð "ð$ð $ð $ð $ð#ð #ð #ð #ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ðð ð ð ð
$ð 
$ð 
$ð 
$ðð ð ð ðð ð ð ðð ð ð ð$ð $ð $ð $ð $ðð ð ð ð ð  ð  ð  ð ð  ð  ð  ð ð  ð  ð  ð ð  ð  ð  ð&ð &ð &ð &ð+ð +ð +ð +ð!ð !ð !ð !ð ð  ð  ð  ð*ð *ð *ð *ð(ð (ð (ð (ð)ð )ð )ð )ð#ð #ð #ð #ð#ð #ð #ð #ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð"ð "ð "ð "ð!ð !ð !ð !ðð ð ð ðð ð ð ðð ð ð ð$ð $ð $ð $ð$ð $ð $ð $ð1ð 1ð 1ð 1ð3ð 3ð 3ð 3ðDð Dð Dð Dð
Dð Dð Dð Dð
Að Að Að Að
Að Að Að Að
Lð Lð Lð Lðð ð ð ð ð  ð  ð  ð(ð (ð (ð (ð'ð 'ð 'ð 'ð(ð (ð (ð (ð)ð )ð )ð )ð(ð (ð (ð (ð%ð %ð %ð %ð
ð 
ð 
ð 
ð%ð %ð %ð %ð%Lð %Lð %Lð %LðNFð Fð Fð Fð Fðð ð ð ðð ð ð ðð ð ð ð
ð 
ð 
ð 
ð(4ð 4ð 4ð 4ðð ð ð ð(-ð -ð -ð -ð,ð ,ð ,ð ,ð&ð &ð &ð &ðð ð ð ðð ð ð ðð ð ð ð ð r'   r   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )Ú_DynamicScalarr>  r   r   r   c                óh   •— | t           u rt          d¦  «        ‚ t          ¦   «         j        | g|¢R Ž S )Nz9_DynamicScalar is an abstract base class, use DynamicInt.)r�  Ú	TypeErrorÚsuperÚ__new__)Úclsr>  Ú	__class__s     €r%   r‘  z_DynamicScalar.__new__’  s;   ø€ Ø•.Ð Ð ÝÐWÑXÔXÐXØ�u‰wŒwŒ˜sÐ* TÐ*Ð*Ð*Ð*r'   )r>  r   r   r   )r†  r‡  rˆ  r‘  Ú__classcell__©r“  s   @r%   r�  r�  ‘  s=   ø€ € € € € ð+ð +ð +ð +ð +ð +ð +ð +ð +ð +r'   r�  c                  óR   ‡ — e Zd ZdZdˆ fd„Zdd„Zdd
„Zdd„Z	 ddd„Zddd„Z	ˆ xZ
S )r   a  
    User API for marking dynamic integers in `torch.compile`.
    Intended to be compatible with both compile and eager mode.

    Example usage::

        fn = torch.compile(f)
        x = DynamicInt(4)
        fn(x)  # compiles x as a dynamic integer input; returns f(4)
    Úvalr2   r   r   c                óÎ   •— t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t	          ¦   «                              | t          |¦  «        ¦  «        }|S )Nr‡   )rJ   r2   rR   r.   r�  r‘  )r’  r—  Úobjr“  s      €r%   r‘  zDynamicInt.__new__¤  sU   ø€ Ý˜#�sÑ#Ô#ð 	CÝ Ð!Aµd¸3±i´iÐ!AÐ!AÑBÔBÐBÝ‰gŒg�oŠo˜c¥3 s¡8¤8Ñ,Ô,ˆØˆ
r'   r•   c                ó   — d| j         › d�S )NzDynamicInt(rM   )Úrealr`   s    r%   r�   zDynamicInt.__repr__ª  s   € Ø)˜TœYÐ)Ð)Ð)Ð)r'   rZ   c                ó0   — t          | j        |z  ¦  «        S r"   ©r   r›  r\   s     r%   Ú__floordiv__zDynamicInt.__floordiv__­  s   € õ ˜$œ) uÑ,Ñ-Ô-Ð-r'   c                ó0   — t          || j        z  ¦  «        S r"   r�  r\   s     r%   Ú__rfloordiv__zDynamicInt.__rfloordiv__²  s   € Ý˜% 4¤9Ñ,Ñ-Ô-Ð-r'   NÚmodulorm   úDynamicInt | floatc                ó”   — |�t          | j        ||¦  «        }n
| j        |z  }t          |t          ¦  «        rt	          |¦  «        S |S r"   ©r4  r›  rJ   r2   r   ©rL   rZ   r¡  rh   s       r%   Ú__pow__zDynamicInt.__pow__µ  sR   € ð ÐÝ˜œ E¨6Ñ2Ô2ˆFˆFà”Y Ñ%ˆFõ �f�cÑ"Ô"ð 	&Ý˜fÑ%Ô%Ð%Øˆr'   c                ó”   — |�t          || j        |¦  «        }n
|| j        z  }t          |t          ¦  «        rt	          |¦  «        S |S r"   r¤  r¥  s       r%   Ú__rpow__zDynamicInt.__rpow__Â  sN   € ØÐÝ˜ ¤	¨6Ñ2Ô2ˆFˆFà˜DœIÑ%ˆFå�f�cÑ"Ô"ð 	&Ý˜fÑ%Ô%Ð%Øˆr'   )r—  r2   r   r   )r   r•   )rZ   r2   r   r   r"   )rZ   r2   r¡  rm   r   r¢  )r†  r‡  rˆ  r‰  r‘  r�   rž  r   r¦  r¨  r”  r•  s   @r%   r   r   ˜  sº   ø€ € € € € ð	ð 	ðð ð ð ð ð ð*ð *ð *ð *ð.ð .ð .ð .ð
.ð .ð .ð .ð 04ðð ð ð ð ðð ð ð ð ð ð ð ð r'   r   r¦   r¢   r±   Úandr(  rý   rß   rò   r­   rÑ   rï   ræ   rõ   c                ó*   — |                       ¦   «         S r"   )rõ   ©Úxs    r%   ú<lambda>r­  Û  s   € ˜AŸLšL™NœN€ r'   rì   rÕ   ré   r»   r¸   rã   r   Úorr+  r.  r¾   rÁ   rª   rÙ   rµ   r	   r
   r   r   r   rÊ   rÍ   >	   r¢   r   r¦   rý   rò   r­   rú   r   r	   Únamer•   úCallable[[SymNode], SymNode]c                ó   ‡ — dˆ fd„}|S )NrL   r   r   c                ó:   •—  t          | d‰› �¦  «        ¦   «         S )NÚ_sym_)Úgetattr)rL   r¯  s    €r%   Úfnz_get_sym_node_fn.<locals>.fn  s!   ø€ Ø,�w�t˜^ T˜^˜^Ñ,Ô,Ñ.Ô.Ð.r'   ©rL   r   r   r   r#   ©r¯  rµ  s   ` r%   Ú_get_sym_node_fnr¸    s(   ø€ ð/ð /ð /ð /ð /ð /ð €Ir'   )ÚsqrtÚcosÚcoshÚsinÚsinhÚtanÚtanhÚasinÚacosÚatanÚlog2Úsym_rY  >   r®  r©  r
   r   >   r±   r¸   rµ   >   rª   rú   Úsym_log2rõ   Úxor)r(  r+  r.  >   r¾   r	   rÍ   rÊ   >   rý   rò   r­   rÁ   >   rß   rï   ræ   rì   ré   rã   r®  r©  r   rõ   r8  rH  rb   Úbc                ó&   — ddl m}  || |¦  «        S )Nr   )ÚFloatTrueDiv)Útorch.utils._sympy.functionsrÉ  )rH  rÇ  rÉ  s      r%   Ú_sympy_float_truedivrË  R  ó&   € Ø9Ð9Ð9Ð9Ð9Ð9àˆ<˜˜1ÑÔÐr'   c                ó&   — ddl m}  || |¦  «        S )Nr   )Ú
IntTrueDiv)rÊ  rÎ  )rH  rÇ  rÎ  s      r%   Ú_sympy_int_truedivrÏ  X  s&   € Ø7Ð7Ð7Ð7Ð7Ð7àˆ:�a˜ÑÔÐr'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚFloorDiv)rÊ  rÑ  )rH  rÇ  rÑ  s      r%   Ú_sympy_floordivrÒ  ^  ó$   € Ø5Ð5Ð5Ð5Ð5Ð5àˆ8�A�q‰>Œ>Ðr'   c                ó^   — ddl m}m} | j        r|j        r || |¦  «        S  || |¦  «        S )Nr   ©ÚModÚ	PythonMod)rÊ  rÖ  r×  Úis_nonnegative)rH  rÇ  rÖ  r×  s       r%   Ú
_sympy_modrÙ  d  sO   € Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;àÔð ˜AÔ,ð Øˆs�1�a‰yŒyÐàˆy˜˜A‰ŒÐr'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚPowByNatural)rÊ  rÛ  )rH  rÇ  rÛ  s      r%   Ú_sympy_pow_by_naturalrÜ  m  rÌ  r'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚFloatPow)rÊ  rÞ  )rH  rÇ  rÞ  s      r%   Ú_sympy_float_powrß  s  rÓ  r'   c                ó,   — dd l } |j        | |¦  «        S rr   )rs   ÚAnd©rH  rÇ  rs   s      r%   Ú
_sympy_andrã  y  s   € Ø€L€L€Làˆ5Œ9�Q˜‰?Œ?Ðr'   c                ó,   — dd l } |j        | |¦  «        S rr   )rs   ÚOrrâ  s      r%   Ú	_sympy_orræ    ó   € Ø€L€L€Làˆ5Œ8�A�q‰>Œ>Ðr'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚLShift)rÊ  ré  )rH  rÇ  ré  s      r%   Ú_sympy_lshiftrê  …  ó$   € Ø3Ð3Ð3Ð3Ð3Ð3àˆ6�!�Q‰<Œ<Ðr'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚRShift)rÊ  rí  )rH  rÇ  rí  s      r%   Ú_sympy_rshiftrî  ‹  rë  r'   Úordered_argsúlist[sympy.Basic]Únew_argúlist[sympy.Basic] | Nonec                ó¸  — t          | ¦  «        dk    r|gS ddlm}m}  || d         ¦  «         ||¦  «        k     r| |gz   S  || d         ¦  «         ||¦  «        k    r|g| z   S dt          | ¦  «        dz
  }}||k    rC||z   dz  }|                     | |         |¦  «        }|dk    rdS |dk     r|dz   }n|dz
  }||k    °C|                      ||¦  «         | S )zs
    If new_arg is found in ordered_args None is returned, else the new
    ordered_args with new_arg inserted
    r   )Ú_args_sortkeyÚBasicrB   r6  é   N)ÚlenÚsympy.core.basicrô  rõ  ÚcompareÚinsert)rï  rñ  Úsort_keyrõ  ÚlowÚhighÚmidÚcompare_results           r%   Ú_binary_search_insert_argr   ‘  s9  € õ ˆ<ÑÔ˜AÒÐØˆyÐàAÐAÐAÐAÐAÐAÐAÐAð €x�˜RÔ Ñ!Ô! H H¨WÑ$5Ô$5Ò5Ð5Ø˜w˜iÑ'Ð'ð €x�˜Q”Ñ Ô  8 8¨GÑ#4Ô#4Ò4Ð4Øˆy˜<Ñ'Ð'à•3�|Ñ$Ô$ qÑ(ˆ€Cà
�Š+ˆ+Ø�T‰z˜aÑˆØŸš |°CÔ'8¸'ÑBÔBˆØ˜QÒÐØ�4Ø˜aÒÐØ˜‘'ˆCˆCà˜‘7ˆDð �Š+ˆ+ð ×Ò˜˜WÑ%Ô%Ð%ØÐr'   FÚlhsÚrhsÚlhs_is_optimized_summationr1   Úrhs_is_optimized_summationútuple[bool, sympy.Basic]c                ó‚  ‡
— ddl Š
ddlm} dˆ
fd„}dd	lm} | || ¦  «        z  }| ||¦  «        z  }|rý|rû || j        d
         ¦  «         ||j        d         ¦  «        k     r || j        |j        z   ¦  «        S  || j        d         ¦  «         ||j        d
         ¦  «        k    r ||j        | j        z   ¦  «        S t          | j        ¦  «        dk    rWt          |j        ¦  «        dk    r?t          | j        ¦  «        }|j        D ]}t          ||¦  «        }|€ nŒ|� ||¦  «        S |r6|j	        r/t          t          | j        ¦  «        |¦  «        }|� ||¦  «        S |r6| j	        r/t          t          |j        ¦  «        | ¦  «        }|� ||¦  «        S  ‰
j
        | |¦  «        }	 ||	¦  «        |	fS )a÷  
    Custom optimization for Add used to optimize incremental binary summations of certain properties. The idea
    is when we know the expression is a summation of unique symbols all we need to know is the correct order of symbols,
    and no other optimizations are needed. We pass evaluate=false, with the correct order of args and save the following.
    1. Avoid running other optimizations when the Add is constructed.
    2. Manually figure out the order of the args for the new expression in log(n) comparisons instead of nLog(n)
    (comparing terms is expensive and shows in the profiles).
    The function returns a tuple of (1) a boolean that indicates whether the output is a summation of unique symbols,
    (2) the result sympy expression.
    r   N)rô  rï  rð  r   r  c                óf   •— | €t          d¦  «        ‚‰j                             | d¬¦  «        }d|fS )Nzordered_args is NoneT)Úis_commutative)rR   rR  Ú
_from_args)rï  rh   rs   s     €r%   Úmake_optimizedz&_optimized_add.<locals>.make_optimizedÈ  s>   ø€ ØÐÝ Ð!7Ñ8Ô8Ð8ð
 ”×%Ò% lÀ4Ð%ÑHÔHˆØ�fˆ~Ðr'   )Ú_is_symbols_binary_summationrB   rö  )rï  rð  r   r  )rs   rø  rô  rÊ  r  Ú_argsr÷  Úlistr   Ú	is_symbolrR  )r  r  r  r  Úsortkeyr
  r  Únew_argsrH  rh   rs   s             @r%   Ú_optimized_addr  µ  s>  ø€ ð  €L€L€LØ9Ð9Ð9Ð9Ð9Ð9ðð ð ð ð ð ð JÐIÐIÐIÐIÐIàÐ">Ð">¸sÑ"CÔ"CÑCÐØÐ">Ð">¸sÑ"CÔ"CÑCÐà!ð 0Ð&@ð 0àˆ7�3”9˜R”=Ñ!Ô! G G¨C¬I°a¬LÑ$9Ô$9Ò9Ð9Ø!�> #¤)¨c¬iÑ"7Ñ8Ô8Ð8àˆ7�3”9˜Q”<Ñ Ô  7 7¨3¬9°R¬=Ñ#9Ô#9Ò9Ð9Ø!�> #¤)¨c¬iÑ"7Ñ8Ô8Ð8õ ˆsŒy‰>Œ>˜QÒÐ¥3 s¤y¡>¤>°QÒ#6Ð#6Ý˜CœI‘”ˆHØ”Yð ð �Ý4°X¸qÑAÔA�ØÐ#Ø�Eð $ð Ð#Ø%�~ hÑ/Ô/Ð/ð "ð , c¤mð ,Ý,­T°#´)©_¬_¸cÑBÔBˆàÐØ!�> (Ñ+Ô+Ð+ð "ð , c¤mð ,Ý,­T°#´)©_¬_¸cÑBÔBˆàÐØ!�> (Ñ+Ô+Ð+àˆUŒY�s˜CÑ Ô €FØ(Ð(¨Ñ0Ô0°&Ð9Ð9r'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚBitwiseFn_bitwise_and)rÊ  r  )rH  rÇ  r  s      r%   r'  r'  ü  ó'   € ØBÐBÐBÐBÐBÐBà Ð   AÑ&Ô&Ð&r'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚBitwiseFn_bitwise_or)rÊ  r  )rH  rÇ  r  s      r%   r*  r*    s'   € ØAÐAÐAÐAÐAÐAàÐ  1Ñ%Ô%Ð%r'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚBitwiseFn_bitwise_xor)rÊ  r  )rH  rÇ  r  s      r%   r-  r-    r  r'   rµ  úCallable[..., sympy.Basic]c                óÄ  — dd l }t          | |j        ¦  «        ro| j        }t	          |¦  «        dk    rUt          |d         |j        ¦  «        r:|d         j        r- |j        |d         ¦  «        }|d         |k    r||d         z  S t          | |j        ¦  «        r|  |j        | ¦  «        k    st          | |j        ¦  «        r |j        | ¦  «        S  || ¦  «        S )Nr   rö  r6  )rs   rJ   ÚMulr>  r÷  rt   rõ   r‰   )rH  rµ  rs   ÚaaÚcoefs        r%   Ú_floor_ceil_helperr  "  sä   € Ø€L€L€Lå�!�U”YÑÔð $ØŒVˆÝˆr‰7Œ7�aŠ<ˆ<�J r¨!¤u¨e¬kÑ:Ô:ˆ<¸rÀ!¼uÔ?Oˆ<Ø �5”=  A¤Ñ'Ô'ˆDØ�!Œu˜Š}ˆ}Ø˜b œe‘|Ð#å�1�e”kÑ"Ô"ð à��”˜qÑ!Ô!Ò!Ð!Ý�a˜œÑ'Ô'ð "ð ˆuŒ}˜QÑÔÐØˆ2ˆa‰5Œ5€Lr'   c                ó$   — ddl m}  || ¦  «        S )Nr   )Ú
FloorToInt)rÊ  r   )rH  r   s     r%   Ú_sympy_floorr!  4  ó"   € Ø7Ð7Ð7Ð7Ð7Ð7àˆ:�a‰=Œ=Ðr'   c                ó$   — ddl m}  || ¦  «        S )Nr   )Ú
TruncToInt)rÊ  r$  )rH  r$  s     r%   Ú_sympy_truncr%  <  r"  r'   c                ó$   — ddl m}  || ¦  «        S )Nr   )Ú	CeilToInt)rÊ  r'  )rH  r'  s     r%   Ú_sympy_ceilr(  B  s"   € Ø6Ð6Ð6Ð6Ð6Ð6àˆ9�Q‰<Œ<Ðr'   c                ó,   — dd l } |j        | |¦  «        S rr   )rs   ÚEqrâ  s      r%   Ú	_sympy_eqr+  H  rç  r'   c                ó,   — dd l } |j        | |¦  «        S rr   )rs   ÚNerâ  s      r%   Ú	_sympy_ner.  N  rç  r'   c                ó,   — dd l } |j        | |¦  «        S rr   )rs   ÚGtrâ  s      r%   Ú	_sympy_gtr1  T  rç  r'   c                ó,   — dd l } |j        | |¦  «        S rr   )rs   ÚLtrâ  s      r%   Ú	_sympy_ltr4  Z  rç  r'   c                ó,   — dd l } |j        | |¦  «        S rr   )rs   ÚLerâ  s      r%   Ú	_sympy_ler7  `  rç  r'   c                ó,   — dd l } |j        | |¦  «        S rr   )rs   ÚGerâ  s      r%   Ú	_sympy_ger:  f  rç  r'   c                ó&   — ddl m}  || |¦  «        S )Nr   )ÚMin)rÊ  r<  )rH  rÇ  r<  s      r%   Ú
_sympy_minr=  l  ó$   € Ø0Ð0Ð0Ð0Ð0Ð0àˆ3ˆq�!‰9Œ9Ðr'   c                ó&   — ddl m}  || |¦  «        S )Nr   ©ÚMax)rÊ  rA  )rH  rÇ  rA  s      r%   Ú
_sympy_maxrB  r  r>  r'   Úfc                ó4   — dd l } |j        || f|df¦  «        S )Nr   T)rs   Ú	Piecewise)rH  r   rC  rs   s       r%   Ú
_sympy_iterF  x  s'   € Ø€L€L€Làˆ5Œ?˜A˜q˜6 A t 9Ñ-Ô-Ð-r'   ú$Callable[[sympy.Basic], sympy.Basic]c                ó   ‡ — dˆ fd„}|S )NrH  rb   r   c                ób   •— dd l } t          |j        j        j        d‰› �¦  «        | ¦  «        S )Nr   ÚOpaqueUnaryFn_)rÊ  r´  ÚutilsÚ_sympyÚ	functions)rH  rO  r¯  s     €r%   rµ  z_get_sym_math_fn.<locals>.fn‚  s:   ø€ Ø+Ð+Ð+Ð+àM�w�u”{Ô)Ô3Ð5LÀdÐ5LÐ5LÑMÔMÈaÑPÔPÐPr'   ©rH  rb   r   rb   r#   r·  s   ` r%   Ú_get_sym_math_fnrO  �  s.   ø€ ðQð Qð Qð Qð Qð Qð
 €Ir'   Ú_sympy_c                ó*   — dd l } |j        | ¦  «        S rr   )rs   ÚAbs)rH  rs   s     r%   Ú
_sympy_absrS  “  s   € Ø€L€L€Làˆ5Œ9�Q‰<Œ<Ðr'   Únumberr§   úsympy.Basic | Nonec                óD   — ddl m}m} |€ || ¦  «        S  || |¦  «        S )Nr   )ÚRoundDecimalÚ
RoundToInt)rÊ  rW  rX  )rT  r§   rW  rX  s       r%   Ú_sympy_roundrY  ™  sD   € ð FÐEÐEÐEÐEÐEÐEÐEà€Øˆz˜&Ñ!Ô!Ð!àˆ|˜F GÑ,Ô,Ð,r'   c                ó$   — ddl m}  || ¦  «        S ©Nr   )ÚToFloat)rÊ  r\  )rH  r\  s     r%   Ú_sympy_sym_floatr]  ¤  s$   € Ø4Ð4Ð4Ð4Ð4Ð4ð ˆ7�1‰:Œ:Ðr'   c                óf   — dd l }ddlm}  |j         | |j        | ¦  «        ¦  «        | ¦  «        S r[  )rs   rÊ  r\  r*  rò   )rH  rs   r\  s      r%   Ú_sympy_is_integerr_  ¬  sE   € Ø€L€L€Là4Ð4Ð4Ð4Ð4Ð4àˆ5Œ8�G�G˜K˜EœK¨™NœNÑ+Ô+¨QÑ/Ô/Ð/r'   )rª   rõ   r
  r  c                ó€   — t          | ¦  «        }t          | |t          t          |dz
  dd¦  «        ¦  «        ¦  «        S )Nr6  rB   )r÷  Úsympy_is_contiguous_genericr  Úrange)r
  r  Údims      r%   Úsympy_is_contiguousrd  Ó  s9   € õ ˆe‰*Œ*€CÝ& u¨gµt½EÀ#ÈÁ'È2ÈrÑ<RÔ<RÑ7SÔ7SÑTÔTÐTr'   Ú	dim_orderú	list[int]c                óŠ  — dd l }t          | ¦  «        }t          |¦  «        |k    r|j        S |j        }|j        j        }|D ]I}| |j        | |         |j        j        ¦  «         |j        ||         |¦  «        z  z  }|| |         z  }ŒJt          |¦  «        D ]&}| |j        | |         |j        j        ¦  «        z  }Œ'|S rr   )	rs   r÷  rz   ry   ÚSÚOner*  rb  ÚZero)r
  r  re  rs   rc  r  ÚzÚds           r%   ra  ra  Ú  sÔ   € ð €L€L€Lå
ˆe‰*Œ*€Cå
ˆ9�~„~˜ÒÐØŒ{Ðà”J€MØŒŒ€Aàð ð ˆØ˜˜œ %¨¤(¨E¬G¬KÑ8Ô8¸8¸5¼8ÀGÈAÄJÐPQÑ;RÔ;RÑRÑRˆØ	ˆU�1ŒX‰ˆˆå�3‰ZŒZð :ð :ˆØ˜˜œ %¨¤(¨E¬G¬LÑ9Ô9Ñ9ˆˆØÐr'   c                ó(   — t          | |g d¢¦  «        S ©N)r6  é   rö  r   ©ra  ©r
  r  s     r%   Ú$sympy_is_channels_last_contiguous_2drr  ô  s   € õ ' u¨g°|°|°|ÑDÔDÐDr'   c                ó(   — t          | |g d¢¦  «        S ©N)r6  é   ro  rö  r   rp  rq  s     r%   Ú$sympy_is_channels_last_contiguous_3drv  ú  s   € õ ' u¨g°°°ÑGÔGÐGr'   c                ó”  — dd l }ddlm} t          | ¦  «        }|t          |¦  «        k    r|j        S |j        j        }|j        }| |j        |d         d¦  «        z  }|D ]d}| |j        | |         d¦  «        ||         |k    z  z  }|dk    r| |j        ||d         ¦  «        z  }||          || |         d¦  «        z  }Œe|S )Nr   r@  r6  )	rs   rÊ  rA  r÷  rz   rh  rj  ry   r-  )	r
  r  re  rs   rA  rc  Úmrf  rl  s	            r%   Ú&sympy_is_channels_last_strides_genericry     s÷   € ð €L€L€Là0Ð0Ð0Ð0Ð0Ð0å
ˆe‰*Œ*€Cà
�c�)‰nŒnÒÐØŒ{ÐàŒŒ€AØŒ
€Að ˆˆŒ�'˜!”*˜aÑ	 Ô	 Ñ €Aàð *ð *ˆØ	ˆXˆUŒX�e˜A”h Ñ"Ô" g¨a¤j°A¢oÑ6Ñ6ˆð �Š6ˆ6Ø��”˜!˜W QœZÑ(Ô(Ñ(ˆAð �AŒJ˜˜˜U 1œX qÑ)Ô)Ñ)ˆˆà€Hr'   c                ó(   — t          | |g d¢¦  «        S rn  ©ry  rq  s     r%   Ú!sympy_is_channels_last_strides_2dr|  *  s   € õ 2°%¸À,À,À,ÑOÔOÐOr'   c                ó(   — t          | |g d¢¦  «        S rt  r{  rq  s     r%   Ú!sympy_is_channels_last_strides_3dr~  0  s   € õ 2°%¸À/À/À/ÑRÔRÐRr'   c                ó"   — ddl m}  |g | ¢|¢R Ž S )Nr   )Ú!IsNonOverlappingAndDenseIndicator)rÊ  r€  )r
  r  r€  s      r%   Ú-_sympy_is_non_overlapping_and_dense_indicatorr�  6  s3   € ð OÐNÐNÐNÐNÐNà,Ð,Ð>¨eÐ>°gÐ>Ð>Ð>Ð>r'   )r  r  r  r  r  r!  rL   r…   c                óJ  — t          |t          ¦  «        r|j        S t          |¦  «        t          u r|                      |¦  «        S t          |¦  «        t          u r|                      |¦  «        S t          |¦  «        t          u r|  	                    |¦  «        S t          S r"   )rJ   rK   rƒ   r.   r1   r�   r2   r‹   r3   r�   ÚNotImplemented)rL   r…   s     r%   r7  r7  J  sŒ   € Ý�#•xÑ Ô ð ØŒxˆÝ	ˆc‰Œ•dÐ	Ð	Ø�~Š~˜cÑ"Ô"Ð"Ý	ˆc‰Œ•cÐ	Ð	Ø�}Š}˜SÑ!Ô!Ð!Ý	ˆc‰Œ•eÐ	Ð	Ø�Š˜sÑ#Ô#Ð#õ Ðr'   r¬  ú0SymInt | SymFloat | SymBool | int | float | boolc                ó>  — t          | t          ¦  «        r| j        �| j        S |                      ¦   «         rt	          | ¦  «        S |                      ¦   «         rt          | ¦  «        S |                      ¦   «         rt          | ¦  «        S t          d| › �¦  «        ‚)Nzunrecognized return type )
rJ   r   r<   r}   r   r   r   r�   r   rR   r«  s    r%   rE  rE  Y  sŽ   € å�!•WÑÔð  !¤*Ð"8ØŒzÐØ‡x‚x�z„zð >Ý�a‰yŒyÐØ	
�Š‰Œð >Ý˜‰{Œ{ÐØ	
�Š‰Œð >Ý�q‰zŒzÐåÐ<¸Ð<Ð<Ñ=Ô=Ð=r'   ÚmethodúCallable[..., object]c                ó   — t           |          S r"   )ÚMETHOD_TO_OPERATOR)r†  s    r%   r   r   g  s   € Ý˜fÔ%Ð%r'   Úfuncr@   c                óÈ  ‡ ‡—  t          d¦  «        ‰¦  «        Š‰ t          v r‰ › d�}n‰ }dd„}dˆ fd„}|dˆˆ fd„¦   «         }|dˆˆ fd„¦   «         }‰ t          v rt          t          d|› �|¦  «         d S ‰ dk    r"dˆˆ fd„}t          t          d|› �|¦  «         d S ‰ dk    r#ddˆˆ fd„}t          t          d|› �|¦  «         d S t          t          d|› �|¦  «         d S )Né   rY  r   úset[str]c                 óÂ   — dd l } | j        j        | j        j        | j        j        j        | g}dd l} d„ |D ¦   «         | j        j         	                    ¦   «         z  dhz  S )Nr   c                ó6   — h | ]}t          j        |¦  «        ’ŒS r#   )ÚinspectÚgetfile)rG  rx  s     r%   ú	<setcomp>z@_make_node_magic.<locals>.uninteresting_files.<locals>.<setcomp>  s"   € Ð.Ð.Ð. A�WŒ_˜QÑÔÐ.Ð.Ð.r'   z<string>)
rO  Ú_dynamoÚ
eval_framerK  ÚfxÚexperimentalr   Útorch._dynamo.guardsÚguardsÚuninteresting_files)rO  Úmodss     r%   r™  z-_make_node_magic.<locals>.uninteresting_filess  s{   € Øˆˆˆð ŒMÔ$ØŒMÔØŒHÔ!Ô*Øð	
ˆð 	$Ð#Ð#Ð#ð /Ð.¨Ð.Ñ.Ô.ØŒmÔ"×6Ò6Ñ8Ô8ñ9àˆlñð	
r'   rµ  úCallable[..., SymNode]c                óN   •‡ — t          j        ‰ ¦  «        ddˆ ˆfd„¦   «         }|S )	NrL   r   rZ   úSymNode | Noner   c                ó¼   •‡‡‡— |€ ‰| ¦  «        Šn ‰| |¦  «        Št           j        j        j        r'|�| |gŠn| gŠd	ˆfd„Št	          dˆˆˆˆfd„¬¦  «         ‰S )
Nr   r   r   rm   c                óô   •— dd l }| j        �d S t          | ¦  «        t          ‰¦  «        k    rd S t          | j        |j        |j        f¦  «        rd S | j        |j        |j        fv rd S t          | ¦  «        S rr   )	rs   r<   ÚidrJ   r6   r‰   rt   ry   rz   )r   rs   rh   s     €r%   Úget_idzM_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.get_id‘  s   ø€ à �L�L�LàÔ(Ð4Ø#˜tÝ˜H™œ­¨F©¬Ò3Ð3Ø#˜tÝ# H¤M°E´MÀ5Ä;Ð3OÑPÔPð $Ø#˜tØ!œ¨5¬:°u´{Ð*CÐCÐCØ#˜tÝ˜h™<œ<Ð'r'   Úexpression_createdc            	     óÀ   •— ‰t          ‰¦  «        t          ‰¦  «        d„ ‰ D ¦   «         ˆfd„‰ D ¦   «         t          j        d¦  «        t          j        d¦  «        dœS )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r#   r—   rF  s     r%   rK  zc_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.<lambda>.<locals>.<listcomp>¥  s   € Ð%@Ð%@Ð%@°¥c¨!¡f¤fÐ%@Ð%@Ð%@r'   c                ó<   •— g | ]} ‰|¦  «        ® ‰|¦  «        ‘ŒS r"   r#   )rG  Úir¡  s     €r%   rK  zc_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.<lambda>.<locals>.<listcomp>¦  s5   ø€ ð )ð )ð )Ø*+¸F¸FÀ1¹I¼IÐ<Q˜F˜F 1™IœIÐ<QÐ<QÐ<Qr'   ro  )r†  rh   Ú	result_idÚ	argumentsÚargument_idsÚ
user_stackÚstack)r•   r   Ú
structuredÚget_user_stackÚget_framework_stack)r¨  r¡  r†  rh   s   €€€€r%   r­  zO_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.<lambda>¡  sy   ø€ Ø"(Ý"% f¡+¤+Ý%'¨¡Z¤ZØ%@Ð%@°iÐ%@Ñ%@Ô%@ð)ð )ð )ð )Ø/8ð)ñ )ô )õ '1Ô&?ÀÑ&BÔ&BÝ!+Ô!?ÀÑ!BÔ!Bð
)ð 
)€ r'   )Úmetadata_fn)r   r   r   rm   )rO  Ú_loggingÚ	_internalÚGET_DTRACE_STRUCTUREDr   )rL   rZ   r¨  r¡  rh   rµ  r†  s     @@@€€r%   Úwrapperz=_make_node_magic.<locals>.capture_provenance.<locals>.wrapper…  sµ   øøøø€ àˆ}Ø˜˜D™œ��à˜˜D %™œ�ÝŒ~Ô'Ô=ð !ØÐ$Ø!% u �I�Ià!% �Ið(ð (ð (ð (ð (ð (õ "Ø(ð
!ð 
!ð 
!ð 
!ð 
!ð 
!ð 
!ðñ ô ð ð ˆMr'   r"   )rL   r   rZ   r�  r   r   )Ú	functoolsÚwraps)rµ  r³  r†  s   ` €r%   Úcapture_provenancez,_make_node_magic.<locals>.capture_provenance„  sI   øø€ Ý	Œ˜Ñ	Ô	ð(	ð (	ð (	ð (	ð (	ð (	ð (	ñ 
Ô	ð(	ðT ˆr'   rL   r   rZ   c           
     óp  •— ddl m}m} t          ‰¦  «        }t          }| j        �|j        � || j        |j        ¦  «        } |¦   «         r7t          |  ||t          | ¦  «        t          |¦  «        fi ¦  «        ¦  «        S t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚d}	 ‰dk    r®ddlm}m} | j        }	|	€t          d¦  «        ‚| j        j        s#|	                     | j        ¦  «        j        dk    rG|j        j        s#|	                     |j        ¦  «        j        dk    r || j        |j        ¦  «        }
�n+ || j        |j        ¦  «        }
�n‰dk    r*t)          | j        |j        | j        |j        ¦  «        \  }}
nã‰d	v rÉdd l}dd
lm}m} | j        j        o || j        |j        ¦  «        }|j        j        o ||j        |j        ¦  «        }|r|j        j        s|rR| j        j        rF|j        |j        |j        |j         |j!        |j"        d	œ‰         } || j        |j        d¬¦  «        }
n- ‰| j        |j        ¦  «        }
n ‰| j        |j        ¦  «        }
n6# tF          $ r) tH           %                    d‰| j        |j        ¦  «         ‚ w xY wtL           '                    d‰| j        |j        |
¦  «         ‰tP          v rtR          }n<‰tT          v rtV          }n+| j,        tR          u s|j,        tR          u rtR          }n| j,        }|�+|t          ur"|� t          |tZ          ¦  «        s ||¦  «        }| j        €t]          d¦  «        ‚| j         /                    || j0        |j0        f¦  «        \  }}t          |
| j        ||||¬¦  «        }|S )Nr   r@  zExpected SymNode, got Fr»   rÕ  zshape_env is required for modr±   )rß   rã   rï   ræ   rì   ré   )Úsymbol_is_typeÚSymT)r^  úfailed to eval %s(%s, %s)z%s %s %s -> %sz#shape_env is required for binary op)r>   r?   )1rN  rA  rB  r   r   r:   r7  rE  rJ   r   rR   r.   rÊ  rÖ  r×  r7   r6   rØ  Úbound_sympyÚlowerr  r5   rs   Útorch.utils._sympy.symbolr¸  r¹  r  ÚUNBACKED_INTrd   r*  r-  r9  r0  r6  r3  rb  rc  rd  Úsym_node_logÚdebugÚalways_float_magic_methodsr3   Úalways_bool_magic_methodsr1   r9   rK   rH   rT  r>   )rL   rZ   rA  rB  ÚoprX  r?   rÖ  r×  r7   rV  rs   r¸  r¹  Úlhs_is_unbackedÚrhs_is_unbackedÚ	rel_classr9   r>   rY  rh   rŠ  r†  s                        €€r%   Úbinary_magic_implz+_make_node_magic.<locals>.binary_magic_impl²  sr  ø€ ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ
   Ñ'Ô'ˆå#ˆØŒ9Ð  U¤ZÐ%;Ø�r˜$œ) U¤ZÑ0Ô0ˆHàˆ>ÑÔð 	ÝØÐ)Ð)¨"­y¸©¬Å	È%Ñ@PÔ@PÐ.QÐSUÑVÔVñô ð õ ˜%¥Ñ)Ô)ð 	IÝ Ð!G½$¸u¹+¼+Ð!GÐ!GÑHÔHÐHØ#Ðð?	Ø˜ŠˆØGÐGÐGÐGÐGÐGÐGÐGð !œN�	ØÐ$Ý(Ð)HÑIÔIÐIà”IÔ,ð	;à ×,Ò,¨T¬YÑ7Ô7Ô=ÀÒBÐBà”JÔ-ð Cð !×,Ò,¨U¬ZÑ8Ô8Ô>À!ÒCÐCà˜#˜dœi¨¬Ñ4Ô4�C‘Cà#˜) D¤I¨u¬zÑ:Ô:�C‘CØ˜5’�å-;Ø”IØ”JØÔ-ØÔ.ñ	.ô .Ñ*Ð$ c cð Ð?Ð?Ð?Ø���àJÐJÐJÐJÐJÐJÐJÐJð #'¤)Ô"5ð #¸.¸.Ø”I˜tÔ0ñ;ô ;�ð #(¤*Ô"6ð #¸>¸>Ø”J Ô 1ñ<ô <�ð $ð 6¨¬
Ô(<ð 6Ø#ð6Ø(,¬	Ô(;ð6ð $œhØ#œhØ#œhØ#œhØ#œhØ#œhð!ð !ð ô!�Ið $˜) D¤I¨u¬zÀEÐJÑJÔJ�C�Cà˜$˜tœy¨%¬*Ñ5Ô5�C�Cð �d˜4œ9 e¤jÑ1Ô1�øøÝð 	ð 	ð 	Ý�KŠKÐ3°V¸T¼YÈÌ
ÑSÔSÐSØð	øøøõ 	×ÒÐ+¨V°T´YÀÄ
ÈCÑPÔPÐPð Õ/Ð/Ð/ÝˆFˆFØÕ0Ð0Ð0ÝˆFˆFØŒ[�EÐ!Ð! U¤\µUÐ%:Ð%:ÝˆFˆFà”[ˆFð ÐØ¥Ð(Ð(ØÐ$Ý˜x­Ñ2Ô2ð %ð �v˜hÑ'Ô'ˆHð Œ>Ð!ÝÐDÑEÔEÐEØ”^×<Ò<Ø�”˜uœ}Ð-ñ
ô 
‰
ˆ�õ ØØŒNØØØØ 3ð
ñ 
ô 
ˆð ˆs   Â<GJ Ê3J7c           	     óò  •— ddl m}m} t          ‰¦  «        } |¦   «         r)t	          |  ||t          | ¦  «        fi ¦  «        ¦  «        S | j        }| j        €t          d¦  «        ‚‰dk    s‰dk    r| j         	                    |¦  «        }	  ‰
|¦  «        }n+# t          $ r t                               d‰|¦  «         ‚ w xY wt                               d‰
||¦  «         t          }| j        � || j        ¦  «        }‰t"          v rt$          }n)‰t&          v rt(          }n‰t*          v rt,          }n| j        }| j                             || j        f¦  «        \  }}	t5          || j        |||¬¦  «        S )	Nr   r@  z"shape_env is required for unary oprò   Úceilingzfailed to eval %s(%s)z%s %s -> %srM  )rN  rA  rB  r   r7  rE  r6   r7   rH   Ú_simplify_floor_divrb  rc  rd  r¿  rÀ  r   r:   Úalways_int_magic_methodsr2   rÂ  r1   rÁ  r3   r9   rT  r>   r   )rL   rA  rB  rÃ  r6   rV  rX  r9   r>   rY  rŠ  r†  s             €€r%   Úunary_magic_implz*_make_node_magic.<locals>.unary_magic_impl2  s·  ø€ ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ
   Ñ'Ô'ˆØˆ>ÑÔð 	RÝ˜4Ð!4Ð!4°R½)ÀD¹/¼/Ð9KÈRÑ!PÔ!PÑQÔQÐQàŒyˆØŒ>Ð!ÝÐCÑDÔDÐDØ�WÒÐ ¨)Ò 3Ð 3Ø”>×5Ò5°dÑ;Ô;ˆDð	Ø�$�t‘*”*ˆCˆCøÝð 	ð 	ð 	Ý�KŠKÐ/°¸Ñ>Ô>Ð>Øð	øøøõ 	×Ò˜=¨$°°cÑ:Ô:Ð:Ý#ˆØŒ9Ð Ø�r˜$œ)‘}”}ˆHàÕ-Ð-Ð-ÝˆFˆFØÕ0Ð0Ð0ÝˆFˆFØÕ1Ð1Ð1ÝˆFˆFà”[ˆFà”^×<Ò<¸RÀ$Ä,ÀÑQÔQ‰
ˆ�Ý�s˜DœN¨F°HÀgÐNÑNÔNÐNs   ÂB Â(Cr
   Ú	pred_nodeÚ	then_nodeÚ	else_nodec                ó‚  •— ddl m}m} | j        €d }n| j        r|j        }n|j        } |¦   «         rJt	          |  |t
          t          | ¦  «        t          |¦  «        t          |¦  «        fi ¦  «        ¦  «        S 	  ‰	| j        |j        |j        ¦  «        }n<# t          $ r/ t           
                    d‰
| j        |j        |j        ¦  «         ‚ w xY w| j        €t          d¦  «        ‚| j                             t
          | j        |j        |j        f¦  «        \  }}t          || j        |j        ||¬¦  «        S )Nr   r@  zfailed to eval %s(%s, %s, %s)z!shape_env is required for sym_iterM  )rN  rA  rB  r:   r7  r
   rE  r6   rb  rc  rd  r7   rH   rT  r>   r   r9   )rÍ  rÎ  rÏ  rA  rB  rX  rV  r>   rY  rŠ  r†  s            €€r%   Úsym_ite_implz&_make_node_magic.<locals>.sym_ite_impl]  s™  ø€ ðð ð ð ð ð ð ð ð
 Œ~Ð%Ø��Ø”ð *Ø$œ>��à$œ>�Øˆ~ÑÔð ÝØØ'Ð'Ýå% iÑ0Ô0Ý% iÑ0Ô0Ý% iÑ0Ô0ðð
 ñô ñô ð ð
Ø�d˜9œ>¨9¬>¸9¼>ÑJÔJ��øÝð ð ð Ý—’Ø3ØØ”NØ”NØ”Nñô ð ð ðøøøð Ô"Ð*Ý"Ð#FÑGÔGÐGØ"Ô,×EÒEÝ˜)Ô+¨YÔ->À	Ô@QÐRñô ‰JˆG�Qõ Ø�YÔ(¨)Ô*:¸HÈgðñ ô ð s   Á?B Â9Crª   r§   rm   c           	     ó^  •— ddl m}m} t          j        } |¦   «         r*t          |  ||t          | ¦  «        |fi ¦  «        ¦  «        S | j        }	  ‰||¦  «        }n,# t          $ r t           
                    d‰||¦  «         ‚ w xY w|€t          }n| j        }d }| j        � || j        |¦  «        }| j        g}	|�|	                     |¦  «         | j        €t#          d¦  «        ‚| j                             |t'          |	¦  «        ¦  «        \  }
}t)          || j        |||
¬¦  «        S )Nr   r@  z!failed to eval %s(%s, ndigits=%s)zshape_env is required for roundrM  )rN  rA  rB  Úbuiltinsrª   r7  rE  r6   rb  rc  rd  r2   r9   r:   r>   rš   r7   rH   rT  rQ  r   )rL   r§   rA  rB  rÃ  r6   rV  r9   rX  r>  r>   rY  rŠ  r†  s               €€r%   Ú
round_implz$_make_node_magic.<locals>.round_impl‘  s~  ø€ ðð ð ð ð ð ð ð õ
 ”ˆBØˆ~ÑÔð ÝØÐ-Ð-¨bµ9¸T±?´?ÀGÐ2LÈbÑQÔQñô ð ð ”9ˆDðØ�d˜4 Ñ)Ô)��øÝð ð ð Ý—’Ð?ÀÈÈwÑWÔWÐWØðøøøð ˆÝ��àœ�àˆHØŒyÐ$Ø˜2Ø”I˜wñô �ð ”L�>ˆDØÐ"Ø—’˜GÑ$Ô$Ð$ØŒ~Ð%Ý"Ð#DÑEÔEÐEØœ×@Ò@ÀÅUÈ4Á[Ä[ÑQÔQ‰JˆG�QÝ˜3 ¤°¸È'ÐRÑRÔRÐRs   ÁA Á)B)r   r�  )rµ  r›  r   r›  )rL   r   rZ   r   r   r   r¶  )rÍ  r   rÎ  r   rÏ  r   r   r   r"   )rL   r   r§   rm   r   r   )r   Ú2magic_methods_on_operator_with_trailing_underscoreÚunary_methodsÚsetattrr   )	r†  rŠ  Úmethod_attrr™  r¶  rÇ  rÌ  rÑ  rÔ  s	   ``       r%   Ú_make_node_magicrÙ  k  sÜ  øø€ Ø�9�S‰>Œ>˜$ÑÔ€DàÕCÐCÐCØ�l�l�lˆˆàˆð
ð 
ð 
ð 
ð",ð ,ð ,ð ,ð ,ð ,ð\ ð}ð }ð }ð }ð }ð }ñ Ôð}ð~ ð$Oð $Oð $Oð $Oð $Oð $Oñ Ôð$OðL •ÐÐÝ•Ð*˜[Ð*Ð*Ð,<Ñ=Ô=Ð=Ð=Ð=Ø	�9Ò	Ð	ð/	ð /	ð /	ð /	ð /	ð /	ð /	õb 	•Ð*˜[Ð*Ð*¨LÑ9Ô9Ð9Ð9Ð9Ø	�7Ò	Ð	ð+	Sð +	Sð +	Sð +	Sð +	Sð +	Sð +	Sð +	SõZ 	•Ð*˜[Ð*Ð*¨JÑ7Ô7Ð7Ð7Ð7å•Ð*˜[Ð*Ð*Ð,=Ñ>Ô>Ð>Ð>Ð>r'   c                óò   ‡ ‡— dˆˆ fd„}t          t          d‰ › �|¦  «         dˆˆ fd„}t          t          j        t
                   ‰ ¦  «        s(t          t          j        t
                   ‰ |¦  «         d S d S )NrL   r   r
  r  r  r   c           	     ó²  •— ddl m}m} t          t          j        t                   ‰¦  «        } |¦   «         r1t          |  ||d„ |D ¦   «         d„ |D ¦   «         fi ¦  «        ¦  «        S d„ |D ¦   «         }d„ |D ¦   «         }	  ‰||¦  «        }n,# t          $ r t           
                    d‰||¦  «         ‚ w xY wg }	d }
|D ]%}|j        € nQ|	                     |j        ¦  «         Œ&g }|D ]%}|j        € n'|                     |j        ¦  «         Œ& ||	|¦  «        }
‰                     d¦  «        rt          }nt          }t!          || j        ||
¦  «        S )	Nr   r@  c                ó,   — g | ]}t          |¦  «        ‘ŒS r#   rD  ©rG  Úss     r%   rK  zH_make_node_sizes_strides.<locals>.sizes_strides_impl.<locals>.<listcomp>Ô  s   € Ð2Ð2Ð2 q•i ‘l”lÐ2Ð2Ð2r'   c                ó,   — g | ]}t          |¦  «        ‘ŒS r#   rD  rÝ  s     r%   rK  zH_make_node_sizes_strides.<locals>.sizes_strides_impl.<locals>.<listcomp>Ô  s   € Ð4SÐ4SÐ4SÀaµY¸q±\´\Ð4SÐ4SÐ4Sr'   c                ó   — g | ]	}|j         ‘Œ
S r#   r”   rÝ  s     r%   rK  zH_make_node_sizes_strides.<locals>.sizes_strides_impl.<locals>.<listcomp>Ø  s   € Ð,Ð,Ð, �a”fÐ,Ð,Ð,r'   c                ó   — g | ]	}|j         ‘Œ
S r#   r”   rÝ  s     r%   rK  zH_make_node_sizes_strides.<locals>.sizes_strides_impl.<locals>.<listcomp>Ù  s   € Ð0Ð0Ð0 1˜œÐ0Ð0Ð0r'   rº  Ú
_indicator)rN  rA  rB  r´  ÚsysÚmodulesr†  r7  rb  rc  rd  r:   rš   Úendswithr2   r1   r   r7   )rL   r
  r  rA  rB  rÃ  Ú
size_exprsÚstride_exprsrV  rW  rX  rÞ  Ústride_hintsr9   rŠ  r†  s                 €€r%   Úsizes_strides_implz4_make_node_sizes_strides.<locals>.sizes_strides_implÆ  sÜ  ø€ ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ
 •S”[¥Ô*¨FÑ3Ô3ˆØˆ>ÑÔð 	ÝØØ#Ð#ØØ2Ð2¨EÐ2Ñ2Ô2Ð4SÐ4SÈ7Ð4SÑ4SÔ4SÐTØñô ñô ð ð -Ð, eÐ,Ñ,Ô,ˆ
Ø0Ð0¨Ð0Ñ0Ô0ˆð	Ø�$�z <Ñ0Ô0ˆCˆCøÝð 	ð 	ð 	Ý�KŠKÐ3°V¸ZÈÑVÔVÐVØð	øøøð
 ˆ
ØˆØð 	8ð 	8ˆAØŒvˆ~Ø�Ø×Ò˜aœfÑ%Ô%Ð%Ð%àˆLØð 8ð 8�Ø”6�>Ø�EØ×#Ò# A¤FÑ+Ô+Ð+Ð+à˜2˜j¨,Ñ7Ô7�ð �?Š?˜<Ñ(Ô(ð 	ÝˆFˆFåˆFÝ�s˜DœN¨F°HÑ=Ô=Ð=s   ÂB Â)B9rY  úlist[object]r„  c                óˆ  •‡‡— dd l Šddlm} t          j        | |¦  «        D ]]Št          ‰t          ¦  «        rFt           t          ‰j	        ‰¦  «        ˆfd„| D ¦   «         ˆfd„|D ¦   «         ¦  «        ¦  «        c S Œ^‰dk    r || |¦  «        S t           ‰ˆfd„| D ¦   «         ˆfd„|D ¦   «         ¦  «        ¦  «        S )Nr   )Ú!eval_is_non_overlapping_and_densec                ó:   •— g | ]}t          ‰j        |¦  «        ‘ŒS r#   ©r7  rƒ   ©rG  rÇ  rH  s     €r%   rK  zH_make_node_sizes_strides.<locals>.sizes_strides_user.<locals>.<listcomp>
  s%   ø€ Ð;Ð;Ð;°� ¤¨Ñ+Ô+Ð;Ð;Ð;r'   c                ó:   •— g | ]}t          ‰j        |¦  «        ‘ŒS r#   rî  rï  s     €r%   rK  zH_make_node_sizes_strides.<locals>.sizes_strides_user.<locals>.<listcomp>  s%   ø€ Ð=Ð=Ð=°� ¤¨Ñ+Ô+Ð=Ð=Ð=r'   r!  c                ó0   •— g | ]} ‰j         |¦  «        ‘ŒS r#   ©Úsympify©rG  rH  rs   s     €r%   rK  zH_make_node_sizes_strides.<locals>.sizes_strides_user.<locals>.<listcomp>  s%   ø€ Ð5Ð5Ð5¨!�]�U”] 1Ñ%Ô%Ð5Ð5Ð5r'   c                ó0   •— g | ]} ‰j         |¦  «        ‘ŒS r#   rò  rô  s     €r%   rK  zH_make_node_sizes_strides.<locals>.sizes_strides_user.<locals>.<listcomp>  s%   ø€ Ð7Ð7Ð7¨!�]�U”] 1Ñ%Ô%Ð7Ð7Ð7r'   )rs   rG   rì  Ú	itertoolsÚchainrJ   r   rE  r´  rƒ   r1   )r
  r  rì  rH  rs   rŠ  r†  s      @@€€r%   Úsizes_strides_userz4_make_node_sizes_strides.<locals>.sizes_strides_userý  sA  øøø€ ð 	ˆˆˆð	
ð 	
ð 	
ð 	
ð 	
ð 	
õ ” ¨Ñ0Ô0ð 	ð 	ˆAÝ˜!�VÑ$Ô$ð Ý Ø+•G˜AœF FÑ+Ô+Ø;Ð;Ð;Ð;°UÐ;Ñ;Ô;Ø=Ð=Ð=Ð=°WÐ=Ñ=Ô=ñô ñô ð ð ð ðð Ð=Ò=Ð=Ø4Ð4ØØñô ð õ Ø�Ø5Ð5Ð5Ð5¨uÐ5Ñ5Ô5Ø7Ð7Ð7Ð7¨wÐ7Ñ7Ô7ñô ñô ð r'   )rL   r   r
  r  r  r  r   r   )r
  rê  r  rê  r   r„  )r×  r   Úhasattrrã  rä  r†  )r†  rŠ  ré  rø  s   ``  r%   Ú_make_node_sizes_stridesrú  Ã  s¯   øø€ ð0>ð 0>ð 0>ð 0>ð 0>ð 0>ð 0>õd �G�\˜�\�\Ð#5Ñ6Ô6Ð6ð
ð ð ð ð ð ð õ@ •3”;�xÔ(¨&Ñ1Ô1ð CÝ•”�HÔ% vÐ/AÑBÔBÐBÐBÐBðCð Cr'   Ú	user_typec                ón  ‡ ‡
‡‡‡‡— ‰ t           v rd‰ › �Šn‰ Šd(d„Š
d)d„Š‰ t          v rd*d„Šnd*d„Šd+ˆ fd„Šd,ˆ
ˆˆ ˆˆfd„}d-ˆ
ˆˆ ˆˆˆfd„}d-ˆ
ˆˆ ˆˆˆfd„}d.d„}‰ t          v r ||d‰ › d�|¦  «         d S ‰ t          v r-t	          |‰ ¦  «        } ||‰ t          ||¦  «        ¦  «         d S ‰ dk    rd/ˆ
ˆfd!„} ||d‰ › d�|¦  «         d S ‰ d"k    rd0d1ˆ
ˆˆ fd&„} ||d‰ › d�|¦  «         d S ‰ }	‰ t          v rt          ‰          }	 ||d|	› d�|¦  «         ‰ t          v r ||d'|	› d�|¦  «         d S d S )2NrÄ  r¬  ú0SymInt | int | SymFloat | float | SymBool | boolr   úint | float | boolc                ó(  — t          | t          t          t          f¦  «        r| S t          | t          ¦  «        r| j                             dd¦  «        S t          | t          ¦  «        r| j                             dd¦  «        S t          d¦  «        ‚)Nr;  r   z*expect to be called with constant SymBools)
rJ   r2   r3   r1   r   rƒ   r<  r   rm  rR   r«  s    r%   Úget_constantz&_make_user_magic.<locals>.get_constant0  s…   € õ �a�#�u¥dÐ+Ñ,Ô,ð 	ØˆHÝ�a�Ñ Ô ð 	+Ø”6×#Ò# B¨Ñ*Ô*Ð*Ý�a�Ñ!Ô!ð 	,Ø”6×$Ò$ R¨Ñ+Ô+Ð+ÝÐIÑJÔJÐJr'   r1   c                óÄ   — t          | t          t          t          f¦  «        rdS t          | t          t
          t          f¦  «        r| j                             ¦   «         S dS )NTF)	rJ   r2   r3   r1   r   r   r   rƒ   r…  r«  s    r%   r…  z%_make_user_magic.<locals>.is_constant;  sR   € Ý�a�#�u¥dÐ+Ñ,Ô,ð 	Ø�4Ý�a�&¥(­GÐ4Ñ5Ô5ð 	(Ø”6×%Ò%Ñ'Ô'Ð'Øˆur'   r   r   c                óâ   — t          | t          ¦  «        r4t          | j                             t          | ¦  «        ¦  «        ¦  «        S t          | ¦  «        t          u rt          | ¦  «        S | S )z;Implements True+True=2, which works in python but not sympy)rJ   r   r   rƒ   r‹   r2   r.   r1   r«  s    r%   Úpromotez!_make_user_magic.<locals>.promote^  sU   € å˜!�WÑ%Ô%ð 7Ý˜aœfŸošo­c°!©f¬fÑ5Ô5Ñ6Ô6Ð6Ý�A‰wŒw�$ˆˆÝ˜1‘v”v�ØˆHr'   c                ó   — | S r"   r#   r«  s    r%   r  z!_make_user_magic.<locals>.promoteh  s   € ØˆHr'   rL   rZ   útuple[Any, Any]c                ó   •— ‰dvr| |fS t          | t          t          j        f¦  «        }t          |t          t          j        f¦  «        }|s|r,|st          j        | ¦  «        } |st          j        |¦  «        }| |fS )N)r±   rµ   r¸   r»   r¾   rÊ   rÑ   r   r   rß   rã   ræ   ré   rì   rï   )rJ   r3   rO  r   r	   )rL   rZ   Úf_selfÚf_otherr†  s       €r%   Úpromote2z"_make_user_magic.<locals>.promote2k  s–   ø€ ð ð 
ð 
ð 
ð$ ˜�;ÐÝ˜D¥5­%¬.Ð"9Ñ:Ô:ˆÝ˜U¥U­E¬NÐ$;Ñ<Ô<ˆØð 	/�Wð 	/Øð -Ý” tÑ,Ô,�Øð /Ýœ¨Ñ.Ô.�Ø�Uˆ{Ðr'   c                óÆ   •—  ‰| ¦  «        }  ‰| ¦  «        r! t          ‰¦  «         ‰| ¦  «        ¦  «        S t           t          | j        ‰¦  «        ¦   «         ¦  «        S r"   )r   rE  r´  rƒ   )rL   r   r…  r†  rØ  r  s    €€€€€r%   rÌ  z*_make_user_magic.<locals>.unary_magic_impl•  si   ø€ Øˆw�t‰}Œ}ˆØˆ;�tÑÔð 	DØ.Õ& vÑ.Ô.°°¸TÑ0BÔ0BÑCÔCÐCÝÐ8� ¤¨KÑ8Ô8Ñ:Ô:Ñ;Ô;Ð;r'   c           	     óT  •— t          |t          t          t          t          t
          t          f¦  «        st          S t           	                    d‰| |¦  «          ‰| ¦  «        }  ‰|¦  «        } ‰	| |¦  «        \  } } ‰| ¦  «        r" t          ‰¦  «         ‰| ¦  «        |¦  «        S  ‰|¦  «        r ‰|¦  «        }t          | j        |¦  «        }|t          u rt          S t           t          | j        ‰¦  «        |¦  «        ¦  «        } ‰|¦  «        r ‰|¦  «        n|S )NzMAGIC %s %s %s)rJ   r2   r3   r1   r   r   r   rƒ  r¿  rÀ  r   r7  rƒ   rE  r´  ©
rL   rZ   Ú
other_nodeÚretr   r…  r†  rØ  r  r	  s
       €€€€€€r%   rÇ  z+_make_user_magic.<locals>.binary_magic_impl›  s5  ø€ Ý˜%¥#¥u­dµF½HÅgÐ!NÑOÔOð 	"Ý!Ð!Ý×ÒÐ+¨V°T¸5ÑAÔAÐAØˆw�t‰}Œ}ˆØ�˜‘”ˆØ�h˜t UÑ+Ô+‰ˆˆeØˆ;�tÑÔð 	KØ.Õ& vÑ.Ô.°°¸TÑ0BÔ0BÀEÑJÔJÐJØˆ;�uÑÔð 	(Ø �L Ñ'Ô'ˆEÝ˜TœY¨Ñ.Ô.ˆ
Ø�Ð'Ð'Ý!Ð!ÝÐ7� ¤	¨;Ñ7Ô7¸
ÑCÔCÑDÔDˆØ$/ K°Ñ$4Ô$4Ð=ˆ|ˆ|˜CÑ Ô Ð ¸#Ð=r'   c           	     ó  •— t          |t          t          t          t          t
          t          f¦  «        st          S  ‰| ¦  «        }  ‰|¦  «        } ‰	| |¦  «        \  } } ‰| ¦  «        r" t          ‰¦  «        | ‰| ¦  «        ¦  «        S  ‰|¦  «        r ‰|¦  «        }t          | j
        |¦  «        }|t          u rt          S t           t          |‰¦  «        | j
        ¦  «        ¦  «        } ‰|¦  «        r ‰|¦  «        n|S r"   )rJ   r2   r3   r1   r   r   r   rƒ  r   r7  rƒ   rE  r´  r  s
       €€€€€€r%   Úrbinary_magic_implz,_make_user_magic.<locals>.rbinary_magic_impl¬  s  ø€ Ý˜%¥#¥u­dµF½HÅgÐ!NÑOÔOð 	"Ý!Ð!Øˆw�t‰}Œ}ˆØ�˜‘”ˆØ�h˜t UÑ+Ô+‰ˆˆeØˆ;�tÑÔð 	KØ.Õ& vÑ.Ô.°°|°|ÀDÑ7IÔ7IÑJÔJÐJØˆ;�uÑÔð 	(Ø �L Ñ'Ô'ˆEÝ˜TœY¨Ñ.Ô.ˆ
Ø�Ð'Ð'Ý!Ð!ÝÐ8� 
¨KÑ8Ô8¸¼ÑCÔCÑDÔDˆØ$/ K°Ñ$4Ô$4Ð=ˆ|ˆ|˜CÑ Ô Ð ¸#Ð=r'   rû  r.   Úattrr•   Úsymnode_implr@   c                óx   ‡— t          | ‰|¦  «         dˆfd„}| t          u rt          t          ‰|¦  «         dS dS )z™
        Registers the SymNode magic method on SymInt/Float/Bool,
        and optionally registers a corresponding wrapped method on DynamicInt.
        r>  r   r   r   c                 óÂ   •— d„ | D ¦   «         }  t          t          ‰¦  «        | Ž }t          |t          ¦  «        r$t          |t          ¦  «        st	          |¦  «        S |S )Nc                óJ   — g | ] }t          |t          ¦  «        r|j        n|‘Œ!S r#   )rJ   r   r›  )rG  r¬  s     r%   rK  zP_make_user_magic.<locals>.setattrs.<locals>.dynamic_int_impl.<locals>.<listcomp>Ç  s:   € ð ð ð Ø?@�* Q­
Ñ3Ô3Ð:�”�¸ðð ð r'   )r´  r2   rJ   r1   r   )r>  rV  r  s     €r%   Údynamic_int_implz<_make_user_magic.<locals>.setattrs.<locals>.dynamic_int_implÆ  sm   ø€ ðð ØDHðñ ô ˆDð %•'�#˜tÑ$Ô$ dÐ+ˆCÝ˜#�sÑ#Ô#ð '­J°s½DÑ,AÔ,Að 'Ý! #‘”Ð&ØˆJr'   N)r>  r   r   r   )r×  r   r   )rû  r  r  r  s    `  r%   Úsetattrsz"_make_user_magic.<locals>.setattrs¼  sc   ø€ õ 	�	˜4 Ñ.Ô.Ð.ð	ð 	ð 	ð 	ð 	ð 	ð �ÐÐÝ•J Ð&6Ñ7Ô7Ð7Ð7Ð7ð Ðr'   Ú__r
   Úpredr   r  r  c                óº  •— | j         }t          ||¦  «        }t          ||¦  «        }|t          u s	|t          u rt          S t          |t          ¦  «        r%t          |t          ¦  «        r|j        |j        k    st          d¦  «        ‚t           t          | j         ‰¦  «        ||¦  «        ¦  «        }|j          	                    ¦   «         r ‰|¦  «        n|S )Nz9then_node and else_node must be SymNodes with same pytype)
rƒ   r7  rƒ  rJ   r   r9   rR   rE  r´  r…  )	r  r  r  rÍ  rÎ  rÏ  r  r   rØ  s	          €€r%   Úsym_ite_magic_implz,_make_user_magic.<locals>.sym_ite_magic_implÙ  sê   ø€ ð œ	ˆIÝ 	¨8Ñ4Ô4ˆIÝ 	¨8Ñ4Ô4ˆIØ�NÐ*Ð*¨i½>Ð.IÐ.IÝ%Ð%å˜9¥gÑ.Ô.ðå˜y­'Ñ2Ô2ðð Ô$¨	Ô(8Ò8Ð8å$ØOñô ð õ Ð;�G D¤I¨{Ñ;Ô;¸IÀyÑQÔQÑRÔRˆCð ”8×'Ò'Ñ)Ô)ð��˜SÑ!Ô!Ð!ð ð	r'   rª   r   r§   rm   c                ó¬   •—  ‰| ¦  «        rt          j         ‰| ¦  «        |¦  «        S t           t          | j        ‰¦  «        |¦  «        ¦  «        S r"   )rÓ  rª   rE  r´  rƒ   )rL   r§   r   r…  r†  s     €€€r%   Úround_magic_implz*_make_user_magic.<locals>.round_magic_implô  sW   ø€ Øˆ{˜4Ñ Ô ð CÝ”~ l l°4Ñ&8Ô&8¸'ÑBÔBÐBåÐ7�W T¤Y°Ñ7Ô7¸Ñ@Ô@ÑAÔAÐAr'   Ú__r)r¬  rý  r   rþ  )r¬  rý  r   r1   )r¬  r   r   r   )rL   r   rZ   r   r   r  )rL   r   r   r   )rL   r   rZ   r   r   r   )rû  r.   r  r•   r  r   r   r@   )r  r   r  r   r  r   r   r   r"   )rL   r   r§   rm   r   r   )rÕ  Úbool_becomes_int_magic_methodsÚunary_magic_methodsÚunary_nonmagic_methodsr´  r   Úbitwise_opsÚreflectable_magic_methods)r†  rû  rÌ  rÇ  r  r  Úorigr  r  Úmethod_namer   r…  rØ  r  r	  s   `         @@@@@r%   Ú_make_user_magicr&  (  s  øøøøøø€ ð ÕCÐCÐCØ%˜V�o�oˆˆàˆð	Kð 	Kð 	Kð 	Kðð ð ð ðB Õ/Ð/Ð/ð	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð!ð !ð !ð !ð !ð !ðT<ð <ð <ð <ð <ð <ð <ð <ð <ð <ð>ð >ð >ð >ð >ð >ð >ð >ð >ð >ð >ð">ð >ð >ð >ð >ð >ð >ð >ð >ð >ð >ð 8ð 8ð 8ð 8ð, Õ$Ð$Ð$Øˆ�˜O ˜O˜O˜OÐ-=Ñ>Ô>Ð>Ð>Ð>Ø	Õ)Ð	)Ð	)Ý�y &Ñ)Ô)ˆØˆ�˜F¥NÐ3CÀTÑ$JÔ$JÑKÔKÐKÐKÐKØ	�9Ò	Ð	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð0 	ˆ�˜O ˜O˜O˜OÐ-?Ñ@Ô@Ð@Ð@Ð@Ø	�7Ò	Ð	ð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	ˆ�˜O ˜O˜O˜OÐ-=Ñ>Ô>Ð>Ð>Ð>àˆØ•[Ð Ð Ý% fÔ-ˆKØˆ�Ð0 Ð0Ð0Ð0Ð2CÑDÔDÐDØÕ.Ð.Ð.ØˆH�YÐ 5 kÐ 5Ð 5Ð 5Ð7IÑJÔJÐJÐJÐJð /Ð.r'   )r   r   r   r    )r   r(   r   r)   )r   r+   r   r,   )r   r.   r   r.   )r¯  r•   r   r°  )rH  rb   rÇ  rb   r   rb   )rï  rð  rñ  rb   r   rò  )FF)
r  rb   r  rb   r  r1   r  r1   r   r  )rH  rb   rµ  r  r   rb   rN  )rH  rb   r   rb   rC  rb   r   rb   )r¯  r•   r   rG  r"   )rT  rb   r§   rU  r   rb   )r
  rð  r  rð  r   rb   )r
  rð  r  rð  re  rf  r   rb   )rL   r   r…   r   r   r   )r¬  r   r   r„  )r†  r•   r   r‡  )r†  r•   rŠ  r  r   r@   )r†  r•   rû  r.   r   r@   )¢Ú
__future__r   rÓ  r´  r�  rö  ÚloggingÚmathÚoperatorrã  r   r   Útypingr   r   r   rO  Útorch._logging.structuredr°  r¬  r	   r
   r   r   r   r   r   r   Útorch._loggingr   Úcollections.abcr   r   rs   rG   r   Ú	getLoggerr†  rc  ÚgetArtifactLoggerr¿  r   r   rŠ  r1   r3   r2   ÚHintTypeÚ__all__Útorch.typesr   rK   r&   r   r�  r   r¦   r¢   r±   rÄ   rý   rß   rò   r­   r2  rï   ræ   rì   rÕ   ré   r»   r¸   rã   r   rÇ   rÆ  r4  rª   rÙ   rµ   r0  r‰  r   r¸  Úmath_op_namesr¯  Úsym_nameÚpriv_sym_namer×  r´  rš   r!  rÖ  Úonly_bool_magic_methodsr  Úalso_bool_magic_methodsÚbool_magic_methodsÚonly_float_magic_methodsrÕ  r"  rÁ  rË  rÂ  rË  rÏ  rÒ  rÙ  rÜ  rß  rã  ræ  rê  rî  r   r  r'  r*  r-  r#  r  r!  r%  r(  r+  r.  r1  r4  r7  r:  r=  rB  rF  rä  Úcurrent_modulerO  Úpriv_sympy_namerµ  rˆ  rS  rY  r]  r_  Úinvertr   rd  ra  rr  rv  ry  r|  r~  r�  Úsizes_strides_methodsr7  rE  r   rÙ  rú  Úitemsr†  rŠ  r&  r#   r'   r%   ú<module>r@     s;  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "ðð €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð -Ð ,Ð ,Ð ,Ð ,Ð ,ð ð ?Ø(Ð(Ð(Ð(Ð(Ð(ØÐÐÐÐÐà€L€L€Là>Ð>Ð>Ð>Ð>Ð>à€gÔ˜Ñ!Ô!€ØŒ~×/Ò/°¸*ÑEÔE€ð
 �6‘8”8€Ð Ð Ð Ñ à�%‰<˜#Ñ Ñ$€ð KÐ
JÐ
J€ð 1Ð 0Ð 0Ð 0Ð 0Ð 0ð 
Ø 4Ð 4Ð 4ñ 
„Ø 4Ø	Ø 2Ð 2Ð 2ñ 
„Ø 2Ø	Ø 6Ð 6Ð 6ñ 
„Ø 6Ø	Ø %Ð %Ð %ñ 
„Ø %ðð ð ð ðuð uð uð uð uñ uô uð uðp+ð +ð +ð +ð +ñ +ô +ð +ð2ð 2ð 2ð 2ð 2� ñ 2ô 2ð 2ðl$Ø	ˆ8Œ<ð$à	ˆ8Œ<ð$ð 
ˆ8Œ<ð$ð 
ˆ8Œ=ð	$ð
 �8”=ð$ð ˆDŒIð$ð 	ˆ(Œ+ð$ð ˆTŒZð$ð ˆTŒZð$ð �HÔ%ð$ð 	ˆ(Œ+ð$ð 	ˆ(Œ+ð$ð Ð*Ð*ð$ð 	ˆ(Œ+ð$ð ˆhŒoð$ð  	ˆ(Œ+ð!$ð" 
ˆ8Œ<ð#$ð $ð$ 
ˆ8Œ<ð%$ð& 	ˆ(Œ+ð'$ð( 
ˆ8Œ<ð)$ð* 	ˆ(Œ,ð+$ð, �(”,ð-$ð. �8”<ð/$ð0 �”ð1$ð2 �h”lð3$ð4 ˆXŒ^ð5$ð6 ˆhŒoð7$ð8 
ˆ8Œ<ð9$ð: �ð;$ð< ˆwð=$ð> ˆwð?$ð@ ˆwðA$ðB ˆwðC$ðD �XÔ%ðE$ð $ðF �8Ô#ðG$ð $Ð ðL
ð 
ð 
Ð ðð ð ð ð€ð ð ð €DØ�dˆ}ˆ}€HØ"˜�N�N€MØ€GˆG�XÐ/Ð/°Ñ5Ô5Ñ6Ô6Ð6Ø#* 7¨5°-Ñ#@Ô#@Ð�xÑ Ø×Ò˜HÑ%Ô%Ð%à‡N‚N�8ÑÔÐÐð
 ðÐ ð $Ð&<Ñ<€ð >Ð=Ð=Ð à!6Ð!6Ð!6Ð à˜&Ð Ø,Ð/FÑFÐ ð JÐIÐIÐ ð 7<¸T°]Ð 2à#°4ÈÐNÐN€ð XÐWÐWÐ àð -ð -€DØ�dˆ}ˆ}€HØ×"Ò" 8Ñ,Ô,Ð,Ð,ð HÐGÐGÐ ðð ð Ð ð"ð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð!ð !ð !ð !ðN (-Ø',ð	D:ð D:ð D:ð D:ð D:ðN'ð 'ð 'ð 'ð&ð &ð &ð &ð'ð 'ð 'ð 'ðØ	ˆ8Œ<ðà	ˆ8Œ<ðð 
ˆ8Œ<ðð 
ˆ:ð	ð
 Ð+ðð Ð!ðð 
ˆ:ðð �<ðð 	ˆ)ðð �+ðð �<ðð Ð)ðð Ð%ðð �Oðð ˆmðð  ˆmð!Ð ð(ð ð ð ð$ð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð.ð .ð .ð .ð ”˜XÔ&€ðð ð ð ð ð 1ð 1€DØ& Ð&Ð&€OØ	Ð	˜$Ñ	Ô	€BØ$3Ð3€B„O�b”kØ€GˆN˜O¨RÑ0Ô0Ð0Ð0àˆˆoðð ð ð ð 8<ð-ð -ð -ð -ð -ðð ð ð ð0ð 0ð 0ð 0ðØðð àˆxŒðð 
ˆ8Œ<ðð 	ˆ)ð	ð
 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð ˆ\ðð ˆ\ðð Ð!ðð ˆKðð 
ˆ8Œ<ðð ˆzðð  ˆzð!ð" ˆzð#ð$ 
ˆ:ð%ð ð& Ø#ð)ð ð €ð0 ð Hð H€DØ�dˆ}ˆ}€HØ%˜g nÐ6FÀÐ6FÐ6FÑGÔG€M�(ÑÐàˆ(�M >ðUð Uð Uð Uðð ð ð ð4Eð Eð Eð EðHð Hð Hð Hð'ð 'ð 'ð 'ðTPð Pð Pð PðSð Sð Sð Sð?ð ?ð ?ð ?ð )Ø&JØ&JØ#DØ#DØ.[ð	ð 	Ð ðð ð ð ð>ð >ð >ð >ð&ð &ð &ð &ðU?ð U?ð U?ð U?ðp
[Cð [Cð [Cð [Cð| "×'Ò'Ñ)Ô)ð #ð #�L€FˆDØÐ�V˜TÑ"Ô"Ð"Ð"à)×/Ò/Ñ1Ô1ð +ð +�L€FˆDØÐ˜V TÑ*Ô*Ð*Ð*ðYKð YKð YKð YKðx ð +ð +€FØÐ(Ð(Ð(ØÐ˜ Ñ)Ô)Ð)ØØÐ)Ð)Ð)ØÐ˜ Ñ*Ô*Ð*ØØÐ(Ð(Ð(¨FÐ6TÐ,TÐ,TØÐ˜ Ñ)Ô)Ð)ØÐ�V˜VÑ$Ô$Ð$Ø�[Ð Ð ØÐ˜ Ñ*Ô*Ð*øà
Ø€D€Dr'   