Ë
    P/æjE°  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlZd dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@mAZA d dlBmCZCmDZDmEZEmFZG d d	lHmIZI d d
lJmKZKmLZL dZM	 d dlNZNdZMdZPdhZQ eRej¦                  ej¨                  z   ejª                  z   «      ZVd„ ZWe j°                  de jH                  de j:                  de j0                  de jv                  de jZ                  de j$                  de j²                  de j´                  de j¶                  de j.                  de j4                  diZ\e j°                  de jH                  de j:                  de j0                  de jv                  de jZ                  d e j$                  d!e j²                  d"e j´                  d#e j¶                  d$e j.                  d%e j4                  d&iZ]e\j½                  e j¾                  d'e jÀ                  d(e jÂ                  d)e jÄ                  d*e jÆ                  d+i«       e]j½                  e j¾                  d,e jÀ                  d-e jÂ                  d.e jÄ                  d/e jÆ                  d0i«       e\j½                  e jÈ                  d1i«        G d2„ d3ee«      Zf G d4„ d5ef«      Zg G d6„ d7eg«      Zh G d8„ d9ef«      Zid:„ Zjd;„ Zkd<„ Zld=„ Zmd>„ ZndRd?„Zod@„ Zp G dA„ dB«      ZqdC„ ZrdSdD„ZsdEZtdTdF„ZudTdG„ZvdH„ ZwdI„ ZxdJ„ Zy G dK„ dLeq«      Zz G dM„ dNeq«      Z{ G dO„ dPeq«      Z| e|«       Z} e{«       Z~ ez«       ZdUdQ„Z€y# eO$ r Y �Œ¸w xY w)Vé    N)Ú
namedtuple)Údedent)ÚListÚTuple)Ú_jit_internal),ÚApplyÚAssertÚAssignÚ	AttributeÚ	AugAssignÚBinOpÚBreakÚClassDefÚConstÚContinueÚDeclÚDefÚDeleteÚDictCompÚDictLiteralÚDotsÚEmptyTypeAnnotationÚExprStmtÚFalseLiteralÚForÚIdentÚIfÚListCompÚListLiteralÚNoneLiteralÚParamÚPassÚPropertyÚRaiseÚReturnÚSelectÚ	SliceExprÚStarredÚStmtÚStringLiteralÚ	SubscriptÚ	TernaryIfÚTrueLiteralÚTupleLiteralÚUnaryOpÚVarÚWhileÚWithÚWithItem)Ú_is_drop_fnÚFunctionModifiersÚis_static_fnÚshould_drop)Úget_source_lines_and_fileÚmake_source_contextÚ	parse_defÚ	ParsedDef)ÚDATACLASS_MAGIC_METHODS)Úget_qualified_nameÚmonkeytype_traceFTÚ__jitÚprintc                 ó@   — | j                  t        «      xs | t        v S ©N)Ú
startswithÚ_reserved_prefixÚ_reserved_names)Únames    úU/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/jit/frontend.pyÚis_reserved_namerH   ]   s   € Ø�?‰?Ô+Ó,ÒG°¼Ð0GÐGó    zfunction definitionsz	for loopszdel statementszclass definitionszwith statementszraise statementsÚ
assertionszimport statementszglobal variableszbreak statementszcontinue statementsÚdefÚforÚdelÚclassÚwithÚraiseÚassertÚimportÚfromÚglobalÚbreakÚcontinuezasync function definitionszasync for loopszasync with statementsz
try blocksznonlocal variablesz	async defz	async forz
async withÚtryÚnonlocalzannotated assignmentsc                   ó   — e Zd Zd„ Zd„ Zy)ÚFrontendErrorc                 ó|   — || _         || _        t        j                  j	                  | j                   «      | _        y rB   )Úsource_rangeÚmsgÚtorchÚ_CÚErrorReportÚerror_report)Úselfr\   r]   s      rG   Ú__init__zFrontendError.__init__œ   s0   € Ø(ˆÔØˆŒô "ŸH™H×0Ñ0°×1BÑ1BÓCˆÕrI   c                 ól   — | j                   | j                  j                  «       j                  «       z   S rB   )r]   ra   ÚwhatÚlstrip)rb   s    rG   Ú__str__zFrontendError.__str__¤   s)   € Ø�x‰x˜$×+Ñ+×0Ñ0Ó2×9Ñ9Ó;Ñ;Ð;rI   N)Ú__name__Ú
__module__Ú__qualname__rc   rg   © rI   rG   rZ   rZ   ›   s   „ òDó<rI   rZ   c                   ó   — e Zd Zy)ÚNotSupportedErrorN©rh   ri   rj   rk   rI   rG   rm   rm   ¨   ó   „ ØrI   rm   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )ÚUnsupportedNodeErrorc                 ó@  •— t        |«      }t        t        j                  |d«      «      }|j	                  |j
                  |j                  |j                  |z   «      }t        j                  ||j                  «      }|› d|r|dz   nd› d�}t        ‰	| �)  ||«       y )Nú Ú zaren't supported)ÚtypeÚlenÚnode_start_tokensÚgetÚ
make_rangeÚlinenoÚ
col_offsetÚpretty_node_namesrh   Úsuperrc   )
rb   ÚctxÚoffending_nodeÚreasonÚ	node_typeÚ	range_lenr\   Úfeature_namer]   Ú	__class__s
            €rG   rc   zUnsupportedNodeError.__init__­   s˜   ø€ ä˜Ó(ˆ	ÜÔ)×-Ñ-¨i¸Ó=Ó>ˆ	Ø—~‘~Ø×!Ñ!Ø×%Ñ%Ø×%Ñ%¨	Ñ1ó
ˆô
 )×,Ñ,¨Y¸	×8JÑ8JÓKˆØ�˜a± ¨¢¸BÐ?Ð?OÐPˆÜ‰Ñ˜ sÕ+rI   )rt   )rh   ri   rj   rc   Ú__classcell__)r„   s   @rG   rq   rq   ¬   s   ø„ ÷,ñ ,rI   rq   c                   ó   — e Zd Zy)ÚFrontendTypeErrorNrn   rk   rI   rG   r‡   r‡   »   ro   rI   r‡   c                 óT   — |D �cg c]  }t        | |«      ‘Œ }}t        |«      S c c}w rB   )Úbuild_withitemÚlist)r~   ÚitemsÚis      rG   Úbuild_withitemsr�   ¿   s+   € Ø-2Ö3¨Œ^˜C Õ#Ð3€EÐ3Ü�‹;Ðùò 4s   …%c                 óh   — |D �cg c]  }t        | |«      ‘Œ }}t        t        d |«      «      S c c}w rB   )Ú
build_stmtrŠ   Úfilter)r~   ÚstmtsÚss      rG   Úbuild_stmtsr“   Ä   s3   € Ø).Ö/ AŒZ˜˜QÕÐ/€EÐ/Ü”�t˜UÓ#Ó$Ð$ùò 0s   …/c                 óÚ  — t        j                  | d„ ¬«      }t        | dg «      }g }|D ]¾  }|d   |vsŒt        |d   j                  «      rŒ$t        |d   j                  d|d   › d�|¬«      }|d   j                  r"t        |d   j                  d|d   › d	�|¬«      nd
}|j                  t        |j                  «       t        |j                  «       |d   «      ||«      «       ŒÀ |S )aj  
    Get a list of Property objects representing the properties of a class.

    Args:
        cls:  The class to get properties of.
        self_name: The name of the class that the properties should belong to.
    Returns:
        A list of Property objects corresponding to the properties of cls. Property
        here refers to the subclass of TreeView.
    c                 ó"   — t        | t        «      S rB   )Ú
isinstanceÚproperty)Úms    rG   ú<lambda>z&get_class_properties.<locals>.<lambda>Ô   s   € ¼
À1ÄhÓ8O€ rI   ©Ú	predicateÚ__jit_unused_properties__r   é   Ú__Ú_getter)Ú	self_nameÚ_setterN)ÚinspectÚ
getmembersÚgetattrr7   ÚfgetÚget_jit_defÚfsetÚappendr#   Úranger   )Úclsr    ÚpropsÚunused_propertiesÚ
propertiesÚpropÚgetterÚsetters           rG   Úget_class_propertiesr±   É   sõ   € ô ×Ñ˜sÑ.OÔP€Eä Ð%@À"ÓEÐð €JØò ˆØ�‰7Ð+Ò+´KÀÀQÁÇÁÕ4MÜ Ø�Q‘—‘  4¨¡7 )¨7Ð3¸yôˆFð
 ˜‘7—<’<ô ˜D ™GŸL™L¨B¨t°A©w¨i°wÐ*?È9ÕUàð ð
 ×ÑÜ˜Ÿ™›¬¨v¯|©|«~¸tÀA¹wÓ)GÈÐQWÓXõðð ÐrI   c                 ó  ‡ ‡— g Šˆˆ fd„}|j                   D ]f  }t        |t        j                  «      r |t        j
                  |«       Œ5t        |t        j                  «      sŒP |t        j                  |«       Œh ‰S )Nc                 óV   •— 	 ‰j                   | ‰|«      «       y # t        $ r Y y w xY wrB   )r¨   rm   )ÚbuilderÚentryÚassignsr~   s     €€rG   Úmaybe_build_assignz-get_class_assigns.<locals>.maybe_build_assignî   s-   ø€ ð	Ø�N‰N™7 3¨Ó.Õ/øÜ ò 	Ùð	ús   ƒ œ	(§()Úbodyr–   Úastr
   ÚStmtBuilderÚbuild_AssignÚ	AnnAssignÚbuild_AnnAssign)r~   Úcls_astr·   rµ   r¶   s   `   @rG   Úget_class_assignsr¿   ë   sg   ù€ Ø€Gõð —‘ò CˆÜ�eœSŸZ™ZÔ(Ùœ{×7Ñ7¸Õ?Ü˜œsŸ}™}Õ-Ùœ{×:Ñ:¸EÕBð	Cð
 €NrI   c                 ój  ‡ — t        j                  ‰ ˆ fd„¬«      }ˆ fd„}t        ‰ t        j                  j
                  j                  «       «      \  }}}dj                  |«      }t        |«      }t        j                  |«      }	|	j                  d   }
t        |
t        j                  «      sJ ‚t        j                  ‰ «      rÇ|
j                  D �ch c]:  }t        |t        j                   «      r|j"                  t$        v r|j"                  ’Œ< }}t'        |«      D ]j  \  }\  }}t%        j(                  |«      }|sŒ!||vsŒ& |‰ «      }||f||<   t+        ‰ |«      }t,        j.                  j1                  ||j2                  «       Œl |D ��cg c]  \  }}t5        ||| ||«      ¬«      ‘Œ }}}t7        ‰ |«      }t9        |j;                  dd«      d   «      t9        |j;                  dd«      d   «      z
  }t=        ||||d	«      }t?        ||
«      }tA        ||
||||«      S c c}w c c}}w )
ap  Get definitions for each method within the current class independently.

    Args:
        cls: The class to get definition of.
        self_name: The name of the class that the properties should belong to.

    Returns:
        torch._C._jit_tree_views.ClassDef: A representation of the class,
            the methods in the class and their definition as a tree.
    c                 óÞ   •— t        j                  | «      xs t        j                  | «      xr? t        ‰| j                  «       xr& | j                  ‰j
                  v xr t        | «       S rB   )r¢   ÚismethodÚ
isfunctionr6   rh   Ú__dict__r4   ©r˜   rª   s    €rG   r™   z#get_jit_class_def.<locals>.<lambda>  sa   ø€ œW×-Ñ-¨aÓ0ÒI´G×4FÑ4FÀqÓ4Iò Ü˜S !§*¡*Ó-Ð-òà�J‰J˜#Ÿ,™,Ð&òô ˜A“Ðð rI   rš   c                 óR   •— t        j                  | «      xr t        | dd «      ‰k(  S )NÚ__self__)r¢   rÂ   r¤   )Úfnrª   s    €rG   Úis_classmethodz)get_jit_class_def.<locals>.is_classmethod  s'   ø€ Ü×Ñ Ó#ÒL¬°°JÀÓ(EÈÑ(LÐLrI   rt   r   )r    rÉ   ú
r�   F)!r¢   r£   r8   r^   r_   r`   Ú
call_stackÚjoinr   r¹   Úparser¸   r–   r   ÚdataclassesÚis_dataclassÚFunctionDefrF   r<   Ú	enumeraterx   r¤   r   ÚloaderÚcacheÚsourcer¦   r±   rv   Úsplitr9   r¿   Úbuild_class_def)rª   r    ÚmethodsrÉ   ÚsourcelinesÚfile_linenoÚfilenamerÔ   Ú
dedent_srcÚpy_astÚ	class_astÚmethodÚ	overridesrŒ   rF   Ú_Úsynthesizer_fnÚ
parsed_defÚfuncÚobjÚmethod_defsr­   Úleading_whitespace_lenr~   r¶   s   `                        rG   Úget_jit_class_defrç   ý   s&  ø€ ô × Ñ Øóô€GôMô *CØŒU�X‰X×!Ñ!×,Ñ,Ó.ó*Ñ&€K�˜hð �W‰W�[Ó!€Fä˜“€JÜ�Y‰Y�zÓ"€Fà—‘˜A‘€IÜ�i¤§¡Ô.Ð.Ð.ô ×Ñ Ô$ð
 $Ÿ.™.ö
àÜ˜&¤#§/¡/Ô2Ø—‘Ô6Ñ6ð �K‹Kð
ˆ	ð 
ô & gÓ.ò 	D‰LˆA‰y��aä4×8Ñ8¸Ó>ˆNÚ $¨iÒ"7Ù+¨CÓ0�
Ø! :Ð-�˜‘
Ü˜s DÓ)�Ü×$Ñ$×*Ñ*¨4°×1BÑ1BÕCð	Dð #÷áˆT�3ô 	�C˜¨Á>ÐRUÓCVÖWð€Kñ ô & c¨9Ó5€Jä  §¡¨d°AÓ!6°qÑ!9Ó:¼SØ×Ñ˜˜qÓ! !Ñ$ó>ñ Ðô Ø�˜+Ð'=¸uó€Cô    YÓ/€Gä˜3 	¨;¸
ÀIÈwÓWÐWùò;
ùós   Ã?H*ÆH/c                 ó  — t        | t        «      st        | «      n| }t        j                  j
                  j                  |j                  «      }|j                  j                  d   }|rf|j                  j                  d   j                  }t        j                  |› d|› �«      j                  d   }|j                  j                  d|«       t        | «      �r.t        j                  d«      }	t        |	j                  «      dk7  s't        |	j                  d   t        j                   «      s%t#        d|j$                  › d|j&                  › �«      ‚|	j                  d   }
|
j                  |_	        dx|j                  _        |j                  _        |j                  j                  |j                  j,                  z   D ]*  }|
j                  j                  d   j.                  |_        Œ, t1        | «      rd|_        d|_        t        j                  j6                  j9                  «       }d}t:        r,t        | t        «      st=        | «      }|j?                  |«      }tA        |jB                  |||||¬«      S )	af  
    Build a JIT AST (TreeView) from the given function.

    Args:
        fn: A function object to compile or a pre-parsed ParsedDef object
        def_name: The name to give to the resulting AST object. This is not
            always the same as `fn.__name__`, for example:
                def _forward(self):
                    ...
                forward = _forward
            In this case, the `__name__` attribute of the function object is "_forward",
            but we want the result AST to have the name "forward".
        self_name: If this function is a method, what the type name of `self` is.
    r   ú = zLdef unused_fn(self: Any):
	raise RuntimeError("Cannot call @unused methods")r�   z&Expected a single top-level function: ú:N)r    Úpdt_arg_types)"r–   Ú
_ParsedDefr:   r^   ÚjitÚannotationsÚget_type_linerÔ   r¹   r¸   ÚargsÚargrÍ   Úinsertr7   rv   rÐ   ÚRuntimeErrorrÚ   rÙ   ÚkwargÚvarargÚ
kwonlyargsÚ
annotationr4   ÚreturnsÚtype_commentÚ_scriptÚ_get_type_trace_dbr>   r=   Úget_args_typesÚ	build_defr~   )rÈ   Údef_namer    rÉ   râ   Ú	type_lineÚfn_defÚarg_nameÚassign_stmtÚunused_fn_defÚ
unused_defrñ   Útype_trace_dbrë   Úqualnames                  rG   r¦   r¦   G  s  € ô '1°´ZÔ&@”˜2”Àb€JÜ—	‘	×%Ñ%×3Ñ3°J×4EÑ4EÓF€IØ�^‰^× Ñ  Ñ#€FáØ—;‘;×#Ñ# AÑ&×*Ñ*ˆä—i‘i 8 *¨C°	¨{Ð ;Ó<×AÑAÀ!ÑDˆØ�‰×Ñ˜1˜kÔ*ô �2…ÜŸ	™	Ø\ó
ˆô ˆ}×!Ñ!Ó" aÒ'¬zØ×Ñ˜qÑ!¤3§?¡?ô0
ô Ø8¸×9LÑ9LÐ8MÈQÈz×OeÑOeÐNfÐgóð ð #×'Ñ'¨Ñ*ˆ
Ø —o‘oˆŒà15Ð5ˆ�‰Ô˜FŸK™KÔ.Ø—;‘;×#Ñ# f§k¡k×&<Ñ&<Ñ<ò 	@ˆCà'Ÿ_™_×1Ñ1°!Ñ4×?Ñ?ˆC�Nð	@ô �rŒ?à!ˆFŒNØ"&ˆFÔô —I‘I×%Ñ%×8Ñ8Ó:€MØ€MÝ¤
¨2¬zÔ :Ü% bÓ)ˆØ%×4Ñ4°XÓ>ˆäØ�‰ØØØØØ#ôð rI   c                 óè  — t        | j                  d   j                  t        j                  «      rÁ| j                  d   j                  j
                  }t        |t        j                  «      r„|j                  }|j                  }|dk(  rgt        |t        j                  «      rM|j                  dk(  r>t        |j                  t        j                  «      r|j                  j                  dk(  ryy)Nr   Ú_IgnoreContextManagerrí   r^   TF)r–   r‹   Úcontext_exprr¹   ÚCallrã   r   ÚattrÚvalueÚNameÚid)ÚstmtÚfunctionÚ	attr_nameÚ
attr_values       rG   Ú#is_torch_jit_ignore_context_managerr  Š  s«   € ä�$—*‘*˜Q‘-×,Ñ,¬c¯h©hÔ7à—:‘:˜a‘=×-Ñ-×2Ñ2ˆÜ�h¤§¡Ô.Ø Ÿ™ˆIØ!Ÿ™ˆJØÐ3Ò3¼
ØœCŸM™Mô9ð —?‘? eÒ+´
¸:×;KÑ;KÌSÏXÉXÔ0VØ!×'Ñ'×*Ñ*¨gÒ5Ø#ØrI   c                   ó   — e Zd Zd„ Zy)ÚBuilderc                 óx   — t        | d|j                  j                  z   d «      }|€t        ||«      ‚ |||«      S )NÚbuild_)r¤   r„   rh   rq   )rb   r~   ÚnoderÞ   s       rG   Ú__call__zBuilder.__call__�  s>   € Ü˜˜x¨$¯.©.×*AÑ*AÑAÀ4ÓHˆØˆ>Ü& s¨DÓ1Ð1Ù�c˜4Ó Ð rI   N)rh   ri   rj   r  rk   rI   rG   r  r  œ  s   „ ó!rI   r  c           	      óä   — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        t        ||«      |D �cg c]  }t        |«      ‘Œ c}||«      S c c}w )NrN   )ry   rz   r{   rv   r   r   r)   )r~   Úpy_defr×   r­   r    r¶   ÚrrÞ   s           rG   rÖ   rÖ   ¤  sa   € Ø�‰Ø�‰�v×(Ñ(¨&×*;Ñ*;¼cÀ'»lÑ*Jó	€Aô Üˆa�Ó¸ÖA¨vœd 6�lÒAÀ:Èwóð ùÚAs   ÁA-
c                 óö  — |j                   }| j                  |j                  |j                  |j                  t	        d«      z   «      }t        | |j                  ||«      }d }	t        |dd «      �t        | |j                  «      }	t        |||	«      }
|d u}|�@t        j                  j                  |«      }t        j                  j                  |
||«      }
t        t!        ||«      |
t#        | |«      «      S )NrK   rø   )r¸   ry   rz   r{   rv   Úbuild_param_listrð   r¤   Ú
build_exprrø   r   r^   r_   Úparse_type_commentÚmerge_type_from_type_commentr   r   r“   )r~   r  rÿ   rþ   r    rë   r¸   r  Ú
param_listÚreturn_typeÚdeclÚ	is_methodÚtype_comment_decls                rG   rý   rý   ­  sØ   € Ø�;‰;€DØ�‰�v—}‘} f×&7Ñ&7¸×9JÑ9JÌSÐQVËZÑ9WÓX€Aä! # v§{¡{°I¸}ÓM€JØ€KÜˆv�y $Ó'Ð3Ü   f§n¡nÓ5ˆä��:˜{Ó+€DØ Ð%€IØÐÜ!ŸH™H×7Ñ7¸	ÓBÐÜ�x‰x×4Ñ4°TÐ;LÈiÓXˆäŒu�Q˜Ó! 4¬°S¸$Ó)?Ó@Ð@rI   zfCompiled functions can't take variable number of arguments or use keyword-only arguments with defaultsc                 óD  — |j                   �f|j                   }| j                  |j                  |j                  dz
  |j                  t	        |j
                  «      z   «      }t        |t        «      ‚|j                  �f|j                  }| j                  |j                  |j                  dz
  |j                  t	        |j
                  «      z   «      }t        |t        «      ‚t	        |j                  «      dkD  r=|j                  D ].  }|€Œt        | |«      j                  «       }t        |t        «      ‚ |j                  D �cg c]/  }||r't        ||j
                     «      r||j
                     nd f‘Œ1 }}|j                  D �cg c]/  }||r't        ||j
                     «      r||j
                     nd f‘Œ1 }}|D ��	cg c]  \  }}	t        | ||d|	¬«      ‘Œ }
}}	|
|D ��	cg c]  \  }}	t        | ||d|	¬«      ‘Œ c}	}z  }
|
S c c}w c c}w c c}	}w c c}	}w )Nr�   r   F)Ú
kwarg_onlyÚpdt_arg_typeT)rô   ry   rz   r{   rv   rñ   rm   Ú_vararg_kwarg_errrõ   Úkw_defaultsr  r©   rð   Úboolrö   Úbuild_param)r~   Úpy_argsr    rë   ÚexprÚ	ctx_rangerñ   Úarg_and_typesÚarg_and_types_kwonlyargsÚarg_typeÚresults              rG   r  r  Å  s  € Ø‡}�}Ð Ø�}‰}ˆØ—N‘NØ�K‰K˜Ÿ™¨1Ñ,¨d¯o©oÄÀDÇHÁHÃÑ.Mó
ˆ	ô   	Ô+<Ó=Ð=Ø‡~�~Ð!Ø�~‰~ˆØ—N‘NØ�K‰K˜Ÿ™¨1Ñ,¨d¯o©oÄÀDÇHÁHÃÑ.Mó
ˆ	ô   	Ô+<Ó=Ð=Ü
ˆ7×ÑÓ !Ò#ð ×&Ñ&ò 	FˆCØ‰Ü& s¨CÓ0×6Ñ6Ó8�	Ü'¨	Ô3DÓEÐEð	Fð —<‘<öð ð á¤ m°C·G±GÑ&<Ô!=ð ˜#Ÿ'™'Ò"àò		
ð€Mð ð  ×%Ñ%ö ð ð á¤ m°C·G±GÑ&<Ô!=ð ˜#Ÿ'™'Ò"àò		
ð Ðð  ð +÷áˆC�ô 	�C˜˜i°EÈÖQð€Fñ ð à5÷áˆC�ô 	�C˜˜i°DÀxÖPóñ €Fð €Mùò7ùò ùóùós   Å4HÆ4HÇHÇ*Hc                 óŠ  — |j                   }| j                  |j                  |j                  |j                  t	        |«      z   «      }t        |dd «      �t        | |j                  «      }n@|rt        t        ||«      «      }n(|�|dk(  rt        t        ||«      «      }nt        |«      }t        |t        ||«      |«      S )Nr÷   rb   )rñ   ry   rz   r{   rv   r¤   r  r÷   r0   r   r   r!   )r~   Úpy_argr    r(  r)  rF   r  Úannotation_exprs           rG   r-  r-  ù  s¨   € à�:‰:€DØ�‰�v—}‘} f×&7Ñ&7¸×9JÑ9JÌSÐQUËYÑ9VÓW€AÜˆv�| TÓ*Ð6Ü$ S¨&×*;Ñ*;Ó<‰Ù	Üœe A |Ó4Ó5‰Ø	Ð	 4¨6¢>Üœe A yÓ1Ó2‰ä-¨aÓ0ˆÜ�¤%¨¨4£.°*Ó=Ð=rI   c           	      ót  ‡‡— t        dddg«      Št        dddg«      Šˆˆfd„}d„ }d„ }d„ } ||j                  d	   j                  j                  «      \  }}d
 || |«      z   }d|z   }	|	ddj	                  |D �
cg c]  }
|
j
                  dz   |
j                  z   ‘Œ  c}
«      z   dz   z  }	 ||«      \  }}|	|dz   z  }	t        j                  |	«      j                  d	   }|j                  |_	        t        j                  |«      j                  d	   }|j                  j                  |«       dt        j                  |«      z   }|d|› d|› �z  }t        |«        ||«      }d|› d� ||«      z   dz   }t        |«      d	kD  r	|dz   |z   }n|}t        j                  |«      j                  d	   }|S c c}
w )NÚ	InputTyperF   ÚannÚ
OutputTypec                 ó  •— g }g }| D ]s  }|j                   }|j                  j                  }|j                  d«      \  }}|dk(  r|j                   ‰||«      «       |dk(  sŒ\|j                   ‰||«      «       Œu ||fS )Nrê   ÚinpÚout)rñ   r  rÕ   r¨   )	rð   ÚinputsÚoutputsrñ   Úvar_nameÚvar_annÚvar_decl_typer9  r;  s	          €€rG   Úprocess_ins_outsz6build_ignore_context_manager.<locals>.process_ins_outs  s‰   ø€ ð ˆØˆØò 	>ˆCØ—w‘wˆHØ—i‘i—o‘oˆGØ%,§]¡]°3Ó%7Ñ"ˆM˜7Ø Ò%Ø—‘™i¨°'Ó:Ô;Ø Ó%Ø—‘™z¨(°GÓ<Õ=ð	>ð �wˆÐrI   c                 óf   — t        j                  dd| j                  «      }|› d|j                  › �S )Nz[^a-zA-Z0-9_]rà   )ÚreÚsubrÚ   rz   )r~   r  rÈ   s      rG   Úcreate_unique_name_extz<build_ignore_context_manager.<locals>.create_unique_name_ext  s0   € ô �V‰VÐ$ c¨3¯<©<Ó8ˆØ��Q�t—{‘{�mÐ$Ð$rI   c                 óŒ  — d}d}t        | «      dk(  r|dz  }t        | «      dk(  r$d| d   j                  z   }|| d   j                  z  }t        | «      dkD  r`d}|dd	j                  | D �cg c]  }|j                  ‘Œ c}«      z   d
z   z  }|d	j                  | D �cg c]  }|j                  ‘Œ c}«      z  }||fS c c}w c c}w )Nrt   zreturn r   z -> Noner�   z -> z	 -> Tupleú[ú, ú])rv   r:  rF   rÌ   )r@  Úreturn_type_annÚreturn_statement_strÚvars       rG   Úbuild_return_ann_stmtz;build_ignore_context_manager.<locals>.build_return_ann_stmt"  sÉ   € ØˆØ(ÐÜˆw‹<˜1ÒØ˜zÑ)ˆOÜˆw‹<˜1ÒØ$ w¨q¡z§~¡~Ñ5ˆOØ  G¨A¡J§O¡OÑ3Ð Üˆw‹<˜!ÒØ)ˆOØ˜s T§Y¡YÀ7Ö/K¸C°·³Ò/KÓ%LÑLÈsÑRÑRˆOØ  D§I¡IÀ7Ö.K¸C¨s¯x«xÒ.KÓ$LÑLÐ ØÐ 4Ð4Ð4ùò 0LùÚ.Ks   Á+B<ÂC
c                 ó^   — dj                  | D �cg c]  }|j                  ‘Œ c}«      S c c}w )NrK  )rÌ   rF   )rð   rñ   s     rG   Ú
build_argsz0build_ignore_context_manager.<locals>.build_args0  s#   € Ø�y‰y¨dÖ3 s˜#Ÿ(›(Ò3Ó4Ð4ùÒ3s   �*r   Úfunc_ignore_z
def ú(rK  z :ú)z: passz@torch.jit.ignore
z
globals()["z"] = ztorch.jit.frontend.ré   )r   r‹   r	  ÚkeywordsrÌ   rF   r:  r¹   rÍ   r¸   r¨   Ú
astunparseÚunparseÚexecrv   )r~   r  rD  rH  rP  rR  r?  r@  Úignore_function_nameÚignore_function_strrO  Ú
return_annÚreturn_stmtÚignore_functionÚignore_func_strÚassign_str_lhsÚassign_str_rhsÚ
assign_strÚ
assign_astr9  r;  s                      @@rG   Úbuild_ignore_context_managerrd    så  ù€ Ü˜;¨°¨Ó8€IÜ˜L¨6°5¨/Ó:€Jõò %ò5ò5ñ ' t§z¡z°!¡}×'AÑ'A×'JÑ'JÓK�O€FˆGð *Ñ,BÀ3ÈÓ,MÑMÐØ"Ð%9Ñ9ÐØØˆd�i‰i¸fÖE°s˜Ÿ™ D™¨3¯7©7Ó2ÒEÓFÑFÈÑLñÐñ 4°GÓ<Ñ€J�Ø˜:¨Ñ0Ñ0Ðô —i‘iÐ 3Ó4×9Ñ9¸!Ñ<€Oð  Ÿ9™9€OÔô —)‘)˜KÓ(×-Ñ-¨aÑ0€KØ×Ñ×Ñ Ô,ð ,¬j×.@Ñ.@ÀÓ.QÑQ€OØ˜Ð';Ð&<¸EÐBVÐAWÐXÑX€OÜˆÔñ   Ó(€Nð Ð2Ð3°1Ð5¹
À6Ó8JÑJÈSÑPð ô ˆ7ƒ|�aÒØ# eÑ+¨nÑ<‰
à#ˆ
Ü—‘˜:Ó&×+Ñ+¨AÑ.€JØÐùòE Fs   Á<#F5c                 óü   — | €i S t        j                  | «      }|j                  j                  «       D ��ci c]8  \  }}|j                  t         j
                  j                  ur||j                  “Œ: c}}S c c}}w )a   
    Get a dictionary of default arguments for a function.

    Args:
        fn: Callable - The function to inspect for default arguments.
    Returns:
        (Dict[str, Any]): mapping argument names to their default values if
        :attr:`fn` is not None, else empty dictionary.
    )r¢   Ú	signatureÚ
parametersr‹   ÚdefaultÚ	ParameterÚempty)rÈ   rf  ÚkÚvs       rG   Úget_default_argsrm  ^  ss   € ð 
€zØˆ	ä×!Ñ! "Ó%€Ið ×(Ñ(×.Ñ.Ó0÷áˆAˆqØ�9‰9œG×-Ñ-×3Ñ3Ñ3ð 	
ˆ1�9‰9‰óð ùó s   ·=A8c                 ó„   ‡ — t        j                  ‰ ˆ fd„¬«      }|D ��ci c]  \  }}|t        |«      “Œ }}}|S c c}}w )aC  
    Get default arguments for all methods in a class (except for static methods).

    Args:
        cls: type - The class type to inspect for default arguments.
    Returns:
        A Dict[str, Dict[str, Any]] which maps each method name to a Dict[str, Any]
        that maps each argument name to its default value.
    c                 óÂ   •— t        j                  | «      xs t        j                  | «      xr1 t        ‰| j                  «       xr | j                  ‰j
                  v S rB   )r¢   rÂ   rÃ   r6   rh   rÄ   rÅ   s    €rG   r™   z,get_default_args_for_class.<locals>.<lambda>‚  sP   ø€ œW×-Ñ-¨aÓ0ÒI´G×4FÑ4FÀqÓ4Iò 'Ü˜S !§*¡*Ó-Ð-ò'à�J‰J˜#Ÿ,™,Ð&ð rI   rš   )r¢   r£   rm  )rª   r×   Úmethod_nameÚmethod_implÚdefaultss   `    rG   Úget_default_args_for_classrs  t  sW   ø€ ô × Ñ Øó'ô€Gð )0÷á$ˆK˜ð 	Ô% kÓ2Ñ2ð€Hñ ð
 €Oùós   ¡<c                   ó   — e Zd Zed„ «       Zy)ÚWithItemBuilderc                 óD  — |j                   j                  }|j                   j                  }|t        t        t
        j                     «      z   }|j                  }| j                  |||«      }t        |t        | |j                   «      |rt        | |«      «      S d «      S rB   )r	  rz   r{   rv   r|   r¹   r2   Úoptional_varsry   r3   r  )r~   Úitemrz   ÚstartÚendÚop_varsr  s          rG   r‰   zWithItemBuilder.build_withitem’  s•   € à×"Ñ"×)Ñ)ˆØ×!Ñ!×,Ñ,ˆØ”cÔ+¬C¯H©HÑ5Ó6Ñ6ˆØ×$Ñ$ˆØ�N‰N˜6 5¨#Ó.ˆäØÜ�s˜D×-Ñ-Ó.Ù(/ŒJ�s˜GÓ$ó
ð 	
ð 6:ó
ð 	
rI   N)rh   ri   rj   Ústaticmethodr‰   rk   rI   rG   ru  ru  ‘  s   „ Øñ
ó ñ
rI   ru  c                   ó  — e Zd Z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j                  d	ej                  d
ej                  diZed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z y)rº   ú+ú-Ú*ú/ú%ú|ú&ú^ú<<ú>>ú**c                 óx   — |j                   }|j                  j                  dk(  ry t        t	        | |«      «      S )NÚStr)r  r„   rh   r   r  )r~   r  r  s      rG   Ú
build_ExprzStmtBuilder.build_Expr°  s4   € à—
‘
ˆØ�?‰?×#Ñ# uÒ,ð äœJ s¨EÓ2Ó3Ð3rI   c                 ó–   — t        | |j                  «      }|j                  D �cg c]  }t        | |«      ‘Œ }}t        ||«      S c c}w rB   )r  r  Útargetsr
   )r~   r  ÚrhsÚxÚlhss        rG   r»   zStmtBuilder.build_Assignº  sB   € ä˜˜dŸj™jÓ)ˆØ+/¯<©<Ö8 aŒz˜#˜qÕ!Ð8ˆÐ8Ü�c˜3ÓÐùò 9s   ¥Ac                 óÎ  — |j                   €t        | |d¬«      ‚t        |j                  «      t        j
                  k(  rÖ|j                  j                   j                  dk(  r³| j                  dk7  r¤|j                  }|t        d|j                  j                  › �«      z   }t        |j                  d«      r%|t        d|j                  j                  › �«      z  }| j                  |j                  ||«      }t        d| j                  › d	|› �«      ‚t!        | |j                   «      }t!        | |j                  «      }t!        | |j                  «      }t#        |g||«      S )
Nzwithout assigned value)r€   rb   rc   zself.r  z: zKType annotations on instance attributes must be declared in __init__, not 'z': )r  rq   ru   Útargetr¹   r   r  Úfuncnamer{   rv   r  Úhasattrr÷   ry   rz   Ú
ValueErrorr  r
   )r~   r  ry  rz  ÚsrrŽ  r�  Úthe_types           rG   r½   zStmtBuilder.build_AnnAssignÀ  s/  € à�:‰:ÐÜ& s¨DÐ9QÔRÐRô �—‘Ó¤§¡Ò.Ø—‘×!Ñ!×$Ñ$¨Ò.Ø—‘ 
Ò*à—O‘OˆEØœ#  d§k¡k×&6Ñ&6Ð%7Ð8Ó9Ñ9ˆCÜ�t—‘¨Ô-Ø”s˜R §¡× 2Ñ 2Ð3Ð4Ó5Ñ5�Ø—‘ §¡¨U°CÓ8ˆBÜð"Ø"%§,¡, ¨s°2°$ð8óð ô
 ˜˜dŸj™jÓ)ˆÜ˜˜dŸk™kÓ*ˆÜ˜c 4§?¡?Ó3ˆÜ�s�e˜S (Ó+Ð+rI   c           
      óâ   — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        ||j
                  D �cg c]  }t        | |«      ‘Œ c}«      S c c}w )NrM   )ry   rz   r{   rv   r   r�  r  )r~   r  r  r’  s       rG   Úbuild_DeletezStmtBuilder.build_DeleteÚ  sO   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈuË:Ñ9UÓVˆä�aÀÇÁÖM°fœ* S¨&Õ1ÒMÓNÐNùÒMs   ÁA,
c                 óà   — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        ||j
                  €d «      S t        | |j
                  «      «      S )NÚreturn)ry   rz   r{   rv   r%   r  r  ©r~   r  r  s      rG   Úbuild_ReturnzStmtBuilder.build_Returnà  sW   € à�N‰NØ�K‰K˜Ÿ™¨$¯/©/¼CÀ»MÑ*Ió
ˆô �a §¡Ð!3˜ÓUÐU¼ÀCÈÏÉÓ9TÓUÐUrI   c                 óÀ   — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        | |j
                  «      }t        ||«      S )NrP   )ry   rz   r{   rv   r  Úexcr$   )r~   r  r  r/  s       rG   Úbuild_RaisezStmtBuilder.build_Raiseç  sE   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈwË<Ñ9WÓXˆÜ˜#˜tŸx™xÓ(ˆÜ�Q˜‹~ÐrI   c                 ó
  — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        | |j
                  «      }|j                  �t	        | |j                  «      nd }t        |||«      S )NrQ   )ry   rz   r{   rv   r  Útestr]   r	   )r~   r  r  r¢  r]   s        rG   Úbuild_AssertzStmtBuilder.build_Assertí  sh   € à�N‰NØ�K‰K˜Ÿ™¨$¯/©/¼CÀ»MÑ*Ió
ˆô ˜#˜tŸy™yÓ)ˆØ+/¯8©8Ð+?Œj˜˜dŸh™hÔ'ÀTˆÜ�a˜˜sÓ#Ð#rI   c                 óf  — t        | |j                  «      }t        | |j                  «      }t        |j                  «      }|t
        j                  v rt
        j                  |   }n>t        t        | |j                  «       j                  dd¬«      d|j                  z   «      ‚t        |||«      S )Nú=)éÿÿÿÿr   )Úoffsetsz*unsupported kind of augmented assignment: )r  r’  r  ru   Úoprº   Úaugassign_maprm   Úfind_beforer©   ry  rh   r   )r~   r  r�  rŽ  r¨  Úop_tokens         rG   Úbuild_AugAssignzStmtBuilder.build_AugAssignö  s‘   € ä˜˜dŸk™kÓ*ˆÜ˜˜dŸj™jÓ)ˆÜ�$—'‘'‹]ˆØ”×*Ñ*Ñ*Ü"×0Ñ0°Ñ4‰Hä#Ü˜C §¡£×!2Ñ!2°CÀÔIØ<¸r¿{¹{ÑJóð ô ˜˜h¨Ó,Ð,rI   c                 ó  — |j                   rt        d d«      ‚| j                  |j                  |j                  |j                  t        d«      z   «      }t        |t        | |j                  «      t        | |j                  «      «      S )Nz-else branches of while loops aren't supportedÚwhile)Úorelserm   ry   rz   r{   rv   r1   r  r¢  r“   r¸   rœ  s      rG   Úbuild_WhilezStmtBuilder.build_While  sl   € à�;Š;ô $ØÐEóð ð �N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈwË<Ñ9WÓXˆÜ�Qœ
 3¨¯	©	Ó2´KÀÀTÇYÁYÓ4OÓPÐPrI   c           	      óD  — | j                  |j                  |j                  |j                  t        d«      z   «      }|j                  rt        |d«      ‚t        |t        | |j                  «      gt        | |j                  «      gt        | |j                  «      «      S )NrL   z+else branches of for loops aren't supported)ry   rz   r{   rv   r¯  rm   r   r  r’  Úiterr“   r¸   rœ  s      rG   Ú	build_ForzStmtBuilder.build_For  s~   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈuË:Ñ9UÓVˆØ�;Š;Ü# AÐ'TÓUÐUäØÜ˜˜TŸ[™[Ó)Ð*Ü˜˜TŸY™YÓ'Ð(Ü˜˜TŸY™YÓ'ó	
ð 	
rI   c           	      ó  — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        |t        | |j                  «      t        | |j                  «      t        | |j                  «      «      S )NÚif)
ry   rz   r{   rv   r   r  r¢  r“   r¸   r¯  rœ  s      rG   Úbuild_IfzStmtBuilder.build_If  sc   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈtË9Ñ9TÓUˆÜØÜ�s˜DŸI™IÓ&Ü˜˜TŸY™YÓ'Ü˜˜TŸ[™[Ó)ó	
ð 	
rI   c           
      óN  — | j                  |j                  |j                  |j                  t        d«      z   «      }|j                  rt        |d«      ‚|j                  D �cg c]  }t        | |«      ‘Œ }}t        t        t        t        |d«      «      |g «      «      S c c}w )Nr@   z?print statements with non-default destinations aren't supported)ry   rz   r{   rv   Údestrm   Úvaluesr  r   r   r0   r   )r~   r  r  Úvalrð   s        rG   Úbuild_PrintzStmtBuilder.build_Print&  sˆ   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈwË<Ñ9WÓXˆØ�9Š9Ü#ØÐTóð ð 15·±Ö<¨”
˜3 Õ$Ð<ˆÐ<Üœœc¤%¨¨7Ó"3Ó4°d¸BÓ?Ó@Ð@ùò =s   Á$B"c                 ó’   — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        |«      S )NÚpass)ry   rz   r{   rv   r"   rœ  s      rG   Ú
build_PasszStmtBuilder.build_Pass0  s2   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈvË;Ñ9VÓWˆÜ�A‹wˆrI   c                 ó’   — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        |«      S )NrU   )ry   rz   r{   rv   r   rœ  s      rG   Úbuild_BreakzStmtBuilder.build_Break5  s2   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈwË<Ñ9WÓXˆÜ�Q‹xˆrI   c                 ó’   — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        |«      S )NrV   )ry   rz   r{   rv   r   rœ  s      rG   Úbuild_ContinuezStmtBuilder.build_Continue:  s8   € à�N‰NØ�K‰K˜Ÿ™¨$¯/©/¼CÀ
»OÑ*Kó
ˆô ˜‹{ÐrI   c                 óN  — | j                  |j                  |j                  |j                  t        d«      z   «      }t	        |«      r)t
        st        d«      ‚t        | |«      }t        | |«      S t        |t        | |j                  «      t        | |j                  «      «      S )NrO   z torch.jit._IgnoreContextManager requires installing Python library `astunparse`,                                    please install it in your Python environment)ry   rz   r{   rv   r  Ú_IS_ASTUNPARSE_INSTALLEDró   rd  r�   r2   r�   r‹   r“   r¸   )r~   r  r  rc  s       rG   Ú
build_WithzStmtBuilder.build_WithA  s‡   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈvË;Ñ9VÓWˆä.¨tÔ4Ý+Ü"ðQóð ô 6°c¸4Ó@ˆJÜ˜c :Ó.Ð.Ü�A” s¨D¯J©JÓ7¼ÀSÈ$Ï)É)Ó9TÓUÐUrI   N)!rh   ri   rj   r¹   ÚAddÚSubÚMultÚDivÚModÚBitOrÚBitAndÚBitXorÚLShiftÚRShiftÚPowr©  r|  r‹  r»   r½   r™  r�  r   r£  r¬  r°  r³  r¶  r»  r¾  rÀ  rÂ  rÅ  rk   rI   rG   rº   rº   ¡  s¶  „ à�‰�Ø�‰�Ø�‰�#Ø�‰�Ø�‰�Ø�	‰	�3Ø�
‰
�CØ�
‰
�CØ�
‰
�DØ�
‰
�DØ�‰�ð€Mð ñ4ó ð4ð ñ ó ð ð
 ñ,ó ð,ð2 ñOó ðOð
 ñVó ðVð ñó ðð
 ñ$ó ð$ð ñ-ó ð-ð ñQó ðQð ñ

ó ð

ð ñ
ó ð
ð ñAó ðAð ñó ðð ñó ðð ñó ðð ñVó ñVrI   rº   c                   ó"  — e Zd Z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j                  d	ej                  d
ej                  dej                  diZdeej"                  <   ej$                  dej&                  dej(                  diZej,                  dej.                  diZej2                  dej4                  dej6                  dej8                  dej:                  dej<                  dej>                  dej@                  dejB                  dejD                  di
Z#e$d„ «       Z%e$d„ «       Z&e$d„ «       Z'e$d„ «       Z(e$d „ «       Z)e$d!„ «       Z*e$d"„ «       Z+e$d#„ «       Z,e$d$„ «       Z-e$d%„ «       Z.e$d&„ «       Z/e$d'„ «       Z0e$d(„ «       Z1e$d)„ «       Z2e$d*„ «       Z3e$d+„ «       Z4e$d,„ «       Z5e$d-„ «       Z6e$d.„ «       Z7e$d/„ «       Z8e$d0„ «       Z9e$d1„ «       Z:y2)3ÚExprBuilderr~  r  r€  r�  rˆ  r‚  z//r„  r…  rƒ  r†  r‡  ú@Únotú~ÚandÚorz==z!=z<=ú<z>=ú>Úiszis notÚinznot inc                 óª  ‡— t        | |j                  «      }| j                  j                  d«      Šˆfd„}|j	                  «       j
                  dz   } ||«      t        j                  v r|dz  } ||«      t        j                  v rŒ|t        |j                  «      z   }| j                  ||«      }t        |t        ||j                  «      «      S )Nzutf-8c                 ó    •— t        ‰|    «      S rB   )Úchr)ÚindexrÔ   s    €rG   Úget_charz-ExprBuilder.build_Attribute.<locals>.get_char�  s   ø€ Ü�v˜e‘}Ó%Ð%rI   r�   )r  r  rÔ   Úencoder©   rz  ÚstringÚ
whitespacerv   r  Úmake_raw_ranger&   r   )r~   r/  Úbaserà  Ú	start_posÚend_posÚ
name_rangerÔ   s          @rG   Úbuild_AttributezExprBuilder.build_Attributez  s³   ø€ ä˜#˜tŸz™zÓ*ˆð —‘×"Ñ" 7Ó+ˆô	&ð —J‘J“L×$Ñ$ qÑ(ˆ	Ù�yÓ!¤V×%6Ñ%6Ñ6Ø˜‰NˆIñ �yÓ!¤V×%6Ñ%6Ò6àœc $§)¡)›nÑ,ˆØ×'Ñ'¨	°7Ó;ˆ
Ü�dœE *¨d¯i©iÓ8Ó9Ð9rI   c           	      óH  — t        | |j                  «      }|j                  D �cg c]  }t        | |«      ‘Œ }}t        |d«      r@|j                  r4t        | |j                  «      }|t        |j                  «       |«      gz  }g }|j                  D ]{  }t        | |j                  «      }|j                  st        |j                  «       d«      ‚|j                  t        t        |j                  «       |j                  «      |«      «       Œ} t        |||«      S c c}w )NÚstarargsz&keyword-arg expansion is not supported)r  rã   rð   r”  rë  r(   r©   rV  r  rñ   rm   r¨   r   r   r   )	r~   r/  rã   r6  rð   Ústararg_exprÚkwargsÚkwÚkw_exprs	            rG   Ú
build_CallzExprBuilder.build_Call‹  sô   € ä˜#˜tŸy™yÓ)ˆØ6:·i±iÖ@¨F”
˜3 Õ'Ð@ˆÐ@Ü�4˜Ô$¨¯ªÜ% c¨4¯=©=Ó9ˆLØ”W˜\×/Ñ/Ó1°<Ó@ÐAÑAˆDØˆØ—-‘-ò 	NˆBÜ   b§h¡hÓ/ˆGà—6’6Ü'Ø—M‘M“OÐ%Móð ð �M‰Mœ)¤E¨'¯-©-«/¸2¿6¹6Ó$BÀGÓLÕMð	Nô �T˜4 Ó(Ð(ùò As   ¥Dc                 ó€   — | j                  |j                  |j                  |j                  dz   «      }t        |«      S )Né   )ry   rz   r{   r   ©r~   r/  r  s      rG   Úbuild_EllipsiszExprBuilder.build_Ellipsis�  s3   € à�N‰NØ�K‰K˜Ÿ™¨$¯/©/¸AÑ*=ó
ˆô �A‹wˆrI   c                 ó  — | j                  |j                  |j                  |j                  t        |j                  «      z   «      }|j                  j                  t        «      rt        |dt        z   «      ‚|j                  dk(  rt        |«      S |j                  dk(  rt        |«      S |j                  dk(  rt        |«      S |j                  dk(  rt        |«      S t        t        ||j                  «      «      S )Nz=names of variables used in JIT-ed functions can't start with ÚTrueÚFalseÚNoneÚEllipsis)ry   rz   r{   rv   r  rC   rD   rm   r-   r   r    r   r0   r   ró  s      rG   Ú
build_NamezExprBuilder.build_Name¤  sÌ   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈtÏwÉwË<Ñ9WÓXˆØ�7‰7×ÑÔ.Ô/Ü#Øð$Ü&6ñ7óð ð
 �7‰7�fÒÜ˜q“>Ð!Ø�W‰W˜ÒÜ “?Ð"Ø�W‰W˜ÒÜ˜q“>Ð!Ø�W‰W˜
Ò"Ü˜“7ˆNÜ”5˜˜DŸG™GÓ$Ó%Ð%rI   c           
      ó²  — | j                  |j                  |j                  |j                  t        t	        |j
                  «      «      z   «      }|j
                  du rt        |«      S |j
                  du rt        |«      S |j
                  €t        |«      S |j
                  t        k(  rt        |«      S t        dt	        |j
                  «      z   «      ‚)NTFz!Name constant value unsupported: )ry   rz   r{   rv   Ústrr  r-   r   r    rù  r   r•  ró  s      rG   Úbuild_NameConstantzExprBuilder.build_NameConstant·  s¥   € à�N‰NØ�K‰K˜Ÿ™¨$¯/©/¼CÄÀDÇJÁJÃÓ<PÑ*Pó
ˆð �:‰:˜ÑÜ˜q“>Ð!Ø�Z‰Z˜5Ñ Ü “?Ð"Ø�Z‰ZÐÜ˜q“>Ð!Ø�Z‰Zœ8Ò#Ü˜“7ˆNäÐ@Ä3ÀtÇzÁzÃ?ÑRÓSÐSrI   c                 óp  — t        | |j                  «      }t        | |j                  «      }t        |j                  «      }|t
        j                  k(  rZ| j                  sN| j                  |j                  «       j                  |j                  «       j                  «      }t        |d«      ‚t        j                  j                  |«      }|€[| j                  |j                  «       j                  |j                  «       j                  «      }t!        |d|j"                  z   «      ‚t%        |||«      S )Nz‹Division of ints in TorchScript uses Python 3 true division semantics. Please put `from __future__ import division` at the top of your filezunsupported binary operator: )r  ÚleftÚrightru   r¨  r¹   rÉ  Úuses_true_divisionrä  r©   rz  ry  rZ   rÒ  Ú	binop_maprx   rm   rh   r   )r~   r/  r�  rŽ  r¨  Ú	err_ranger«  s          rG   Úbuild_BinOpzExprBuilder.build_BinOpÇ  sò   € ä˜˜dŸi™iÓ(ˆÜ˜˜dŸj™jÓ)ˆÜ�$—'‘'‹]ˆà”—‘Š= ×!7Ò!7Ø×*Ñ*¨3¯9©9«;¯?©?¸C¿I¹I»K×<MÑ<MÓNˆIÜØð;óð ô ×(Ñ(×,Ñ,¨RÓ0ˆØÐØ×*Ñ*¨3¯9©9«;¯?©?¸C¿I¹I»K×<MÑ<MÓNˆIÜ#ØÐ:¸R¿[¹[ÑHóð ô �X˜s CÓ(Ð(rI   c                 ó|  — t        | |j                  «      }t        |j                  «      }t        j
                  j                  |«      }|€'t        |j                  «       d|j                  z   «      ‚| j                  |j                  |j                  |j                  t        |«      z   «      }t        |||«      S )Nzunsupported unary operator: )r  Úoperandru   r¨  rÒ  Úunop_maprx   rm   r©   rh   ry   rz   r{   rv   r/   )r~   r/  Úsub_exprr¨  r«  r  s         rG   Úbuild_UnaryOpzExprBuilder.build_UnaryOpÝ  sš   € ä˜c 4§<¡<Ó0ˆÜ�$—'‘'‹]ˆÜ×'Ñ'×+Ñ+¨BÓ/ˆØÐÜ#Ø—
‘
“Ð<¸r¿{¹{ÑJóð ð �N‰NØ�K‰K˜Ÿ™¨$¯/©/¼CÀ»MÑ*Ió
ˆô �q˜( HÓ-Ð-rI   c                 ó@  — t        |j                  «      dk  r*t        dt        t        |j                  «      «      z   «      ‚|j                  D �cg c]  }t	        | |«      ‘Œ }}t        |j                  «      }t        j                  j                  |«      }|€a| j                  |d   j                  «       j                  |d   j                  «       j                  «      }t        |d|j                  z   «      ‚|d   }|dd  D ]  }t!        |||«      }Œ |S c c}w )Né   z.expected at least 2 values in BoolOp, but got r   r�   zunsupported boolean operator: )rv   r¹  ÚAssertionErrorrü  r  ru   r¨  rÒ  Ú
boolop_maprx   rä  r©   rz  ry  rm   rh   r   )	r~   r/  r  Ú	sub_exprsr¨  r«  r  r�  rŽ  s	            rG   Úbuild_BoolOpzExprBuilder.build_BoolOpë  s  € äˆt�{‰{Ó˜aÒÜ Ø@Ä3ÄsÈ4Ï;É;ÓGWÓCXÑXóð ð @D¿{¹{ÖK°8”Z  XÕ.ÐKˆ	ÐKÜ�$—'‘'‹]ˆÜ×)Ñ)×-Ñ-¨bÓ1ˆØÐØ×*Ñ*Ø˜!‘×"Ñ"Ó$×(Ñ(¨)°A©,×*<Ñ*<Ó*>×*DÑ*DóˆIô $ØÐ;¸b¿k¹kÑIóð ð ˜‰lˆØ˜Q˜R�=ò 	,ˆCÜ˜ # sÓ+‰Cð	,àˆ
ùò Ls   ÁDc                 ó”   — t        t        | |j                  «      t        | |j                  «      t        | |j                  «      «      S rB   )r,   r  r¢  r¸   r¯  )r~   r/  s     rG   Úbuild_IfExpzExprBuilder.build_IfExp   s9   € äÜ�s˜DŸI™IÓ&Ü�s˜DŸI™IÓ&Ü�s˜DŸK™KÓ(ó
ð 	
rI   c                 óv  — |j                   gt        |j                  «      z   D �cg c]  }t        | |«      ‘Œ }}d }t	        ||j
                  |dd  «      D ]Ú  \  }}}t        |«      }t        j                  j                  |«      }	| j                  |j                  «       j                  |j                  «       j                  «      }
|	€t        |
d|j                  z   «      ‚|t         j"                  k(  rt%        d||«      }t'        |
d|«      }nt%        |	||«      }|€|}ŒÎt%        d||«      }ŒÜ |S c c}w )Nr�   z!unsupported comparison operator: rÛ  rÔ  rÖ  )rÿ  rŠ   Úcomparatorsr  ÚzipÚopsru   rÒ  Ú	cmpop_maprx   rä  r©   rz  ry  rm   rh   r¹   ÚNotInr   r/   )r~   r/  ÚeÚoperandsr4  r�  Úop_rŽ  r¨  r«  r  Úin_exprÚcmp_exprs                rG   Úbuild_ComparezExprBuilder.build_Compare  s&  € à15·±°¼dÀ4×CSÑCSÓ>TÑ0TÖU¨1”J˜s AÕ&ÐUˆÐUØˆÜ  ¨4¯8©8°X¸a¸b°\ÓBò 	8‰MˆC��cÜ�c“ˆBÜ"×,Ñ,×0Ñ0°Ó4ˆHØ×"Ñ" 3§9¡9£;§?¡?°C·I±I³K×4EÑ4EÓFˆAØÐÜ'ØÐ:¸R¿[¹[ÑHóð ð ”S—Y‘YŠô    c¨3Ó/�Ü" 1 e¨WÓ5‘ä  ¨3°Ó4�àˆ~Ø!‘ä˜u f¨hÓ7‘ð)	8ð* ˆùò/ Vs   ¦D6c                 ó  ‡	‡
— d„ Š
d„ Š	ˆ	ˆ
fd„}t        | |j                  «      }t        |j                  «      }|t        j
                  u �rt        |j                  j                  t        j                  «      r¾|j                  j                  j                  D �cg c]  }t        | |«      ‘Œ }}|sy| j                  |j                  |j                  j                  j                  |j                  j                  j                  dz   «      }t        |g «      }|j                  |«       t        ||«      S t        |t        | |j                  j                  «      g«      S |t        j                  u rt        | ‰
| ||j                  «      g«      S |t        j                   u rt        | || ||j                  «      «      S t"        j$                  dk\  �r|t        j                  u rßg }|j                  j                  D ]Q  }t        |t        j                  «      r|j                   ‰
| ||«      «       Œ7|j                  t        | |«      «       ŒS |se| j                  |j                  |j                  j                  |j                  j                  dz   «      }t        |g «      }|j                  |«       t        ||«      S t        |t        | |j                  «      g«      S t'        |j)                  «       d«      ‚c c}w )Nc                 ó  — |j                   �t        | |j                   «      nd }|j                  �t        | |j                  «      nd }|j                  �t        | |j                  «      nd }t	        |j                  «       |||«      S rB   )Úlowerr  ÚupperÚstepr'   r©   )r~   rå  Ú
slice_exprr   r!  r"  s         rG   Úbuild_SliceExprz4ExprBuilder.build_Subscript.<locals>.build_SliceExpr%  s�   € ð ×#Ñ#Ð/ô ˜3 
× 0Ñ 0Ô1àð ð ×#Ñ#Ð/ô ˜3 
× 0Ñ 0Ô1àð ð —?‘?Ð.ô ˜3 
§¡Ô0àð ô
 ˜TŸZ™Z›\¨5°%¸Ó>Ð>rI   c                 óª   — t        |j                  t        j                  «      rt	        |j                  «       d«      ‚t        | |j                  «      S )Nz9slicing multiple dimensions with tuples not supported yet)r–   r  r¹   r   rm   r©   r  )r~   rå  Ú
index_exprs      rG   Úbuild_Indexz0ExprBuilder.build_Subscript.<locals>.build_Index7  sD   € Ü˜*×*Ñ*¬C¯I©IÔ6Ü'Ø—J‘J“LØOóð ô ˜c :×#3Ñ#3Ó4Ð4rI   c                 óÈ  •— g }|j                   D ]Ï  }t        |«      }|t        j                  u r|j	                   ‰| ||«      «       Œ:|t        j
                  u r|j	                   ‰| ||«      «       Œf|t        j                  u r;|j                  t        u r)|j	                  t        |j                  «       «      «       Œ³t        |j                  «       d|› d�«      ‚ |S )Nz!slicing multiple dimensions with z not supported)Údimsru   r¹   ÚIndexr¨   ÚSliceÚConstantr  rù  r   r©   rm   )r~   rå  Úextslicer  r/  Úsub_typer'  r$  s         €€rG   Úbuild_ExtSlicez3ExprBuilder.build_Subscript.<locals>.build_ExtSlice?  sÄ   ø€ ØˆIØ Ÿ™ò �Ü ›:�ØœsŸy™yÑ(Ø×$Ñ$¡[°°d¸DÓ%AÕBØ¤§¡Ñ*Ø×$Ñ$¡_°S¸$ÀÓ%EÕFØ¤§¡Ñ-°$·*±*ÄÑ2HØ×$Ñ$¤T¨$¯*©*«,Ó%7Õ8ä+ØŸ
™
›Ø;¸H¸:À^ÐTóð ðð ÐrI   r  )rò  é	   zellipsis is not supported)r  r  ru   Úslicer¹   r*  r–   r   Úeltsry   rz   r{   r.   r¨   r+   r+  ÚExtSliceÚsysÚversion_inform   r©   )r~   r/  r/  rå  r.  r&  Úindicesr  Útupr'  r$  s            @@rG   Úbuild_SubscriptzExprBuilder.build_Subscript#  sr  ù€ ò	?ò$	5õ	ô" ˜#˜tŸz™zÓ*ˆÜ˜Ÿ
™
Ó#ˆØ”s—y‘yÒ Ü˜$Ÿ*™*×*Ñ*¬C¯I©IÔ6ð CGÇ*Á*×BRÑBR×BWÑBWöØ4>”J˜s JÕ/ð�ð ñ ð Ÿ™ØŸ™ØŸ
™
×(Ñ(×3Ñ3ØŸ
™
×(Ñ(×3Ñ3°aÑ7ó�Aô
 ' q¨"Ó-�CØ—N‘N 3Ô'Ü   wÓ/Ð/ä  ¬
°3¸¿
¹
×8HÑ8HÓ(IÐ'JÓKÐKØœŸ™Ñ"Ü˜T¡O°C¸¸t¿z¹zÓ$JÐ#KÓLÐLØœŸ™Ñ%Ü˜T¡>°#°t¸T¿Z¹ZÓ#HÓIÐIÜ×Ñð "
ó 
ð œ3Ÿ9™9Ñ$à�Ø"&§*¡*§/¡/ò D�JÜ! *¬c¯i©iÔ8ØŸ™¡°s¸DÀ*Ó'MÕNàŸ™¤z°#°zÓ'BÕCð	Dñ àŸ™ØŸ™ T§Z¡Z×%:Ñ%:¸D¿J¹J×<QÑ<QÐTUÑ<Uó�Aô ' q¨"Ó-�CØ—N‘N 3Ô'Ü   wÓ/Ð/Ü˜T¤J¨s°D·J±JÓ$?Ð#@ÓAÐAä# D§J¡J£LÐ2MÓNÐNùòYs   ÂLc           
      óÌ   — t        | j                  |j                  |j                  |j                  dz   «      |j                  D �cg c]  }t        | |«      ‘Œ c}«      S c c}w ©Nr�   )r   ry   rz   r{   r2  r  ©r~   r/  r  s      rG   Ú
build_ListzExprBuilder.build_List„  sL   € äØ�N‰N˜4Ÿ;™;¨¯©¸¿¹È1Ñ9LÓMØ)-¯©Ö3 AŒZ˜˜QÕÒ3ó
ð 	
ùâ3ó   ÁA!
c           
      óÌ   — t        | j                  |j                  |j                  |j                  dz   «      |j                  D �cg c]  }t        | |«      ‘Œ c}«      S c c}w r:  )r.   ry   rz   r{   r2  r  r;  s      rG   Úbuild_TuplezExprBuilder.build_Tuple‹  sL   € äØ�N‰N˜4Ÿ;™;¨¯©¸¿¹È1Ñ9LÓMØ)-¯©Ö3 AŒZ˜˜QÕÒ3ó
ð 	
ùâ3r=  c                 ón  — | j                  |j                  |j                  |j                  dz   «      }|j                  r|j                  d   st	        |d«      ‚t        ||j                  D �cg c]  }t        | |«      ‘Œ c}|j                  D �cg c]  }t        | |«      ‘Œ c}«      S c c}w c c}w )Nr�   r   z1Dict expansion (e.g. `{**dict}`) is not supported)ry   rz   r{   Úkeysrm   r   r  r¹  )r~   r/  r©   r  s       rG   Ú
build_DictzExprBuilder.build_Dict’  s“   € à—‘˜tŸ{™{¨D¯O©O¸T¿_¹_ÈqÑ=PÓQˆØ�9Š9˜TŸY™Y qš\Ü#ØÐJóð ô ØØ)-¯©Ö3 AŒZ˜˜QÕÒ3Ø)-¯©Ö5 AŒZ˜˜QÕÒ5ó
ð 	
ùâ3ùÚ5s   Á0B-
ÂB2c                 ó¾   — t        |j                  «      }| j                  |j                  |j                  |j                  t        |«      z   «      }t        ||«      S rB   )rü  r  ry   rz   r{   rv   r   ©r~   r/  r  r  s       rG   Ú	build_NumzExprBuilder.build_NumŸ  sB   € ä�D—J‘J“ˆØ�N‰N˜4Ÿ;™;¨¯©¸¿¹Ì3ÈuË:Ñ9UÓVˆÜ�Q˜‹ÐrI   c           
      ó  — |j                   }|�t        |t        «      rt        j	                  | |«      S t        |t
        t        t        f«      rt        j                  | |«      S t        |t        «      rt        j                  | |«      S t        |t        t        «      «      rt        j                  | |«      S | j                  |j                  |j                   |j                   t#        t        |«      «      z   «      }t%        |d«      ‚)Nz Unknown Constant expression type)r  r–   r,  rÒ  rý  ÚintÚfloatÚcomplexrE  rü  Ú	build_Strru   rù  rô  ry   rz   r{   rv   rZ   )r~   r/  r  Úerror_ranges       rG   Úbuild_ConstantzExprBuilder.build_Constant¥  sÎ   € à—
‘
ˆØˆ=œJ u¬dÔ3ô ×1Ñ1°#°tÓ<Ð<Ü�eœc¤5¬'Ð2Ô3Ü×(Ñ(¨¨dÓ3Ð3Ü˜œsÔ#Ü×(Ñ(¨¨dÓ3Ð3Ü˜œt¤H›~Ô.Ü×-Ñ-¨c°4Ó8Ð8àŸ.™.Ø—‘˜TŸ_™_¨d¯o©oÄÄCÈÃJÃÑ.OóˆKô   Ð-OÓPÐPrI   c                 óÄ   — t        |j                  «      }| j                  |j                  |j                  |j                  t        |«      z   dz   «      }t        ||«      S r:  )rü  r  ry   rz   r{   rv   r*   rD  s       rG   rJ  zExprBuilder.build_Str¸  sM   € ä�D—J‘J“ˆØ�N‰NØ�K‰K˜Ÿ™¨$¯/©/¼CÀ»JÑ*FÈÑ*Jó
ˆô ˜Q Ó&Ð&rI   c           	      ó¬  — d}g }|j                   D ]ã  }| j                  |j                  |j                  |j                  dz   «      }t	        |t
        j                  «      r^|j                  dk7  rt        |d«      ‚|j                  �t        |d«      ‚|dz  }|j                  t        | |j                  «      «       Œ¯t	        |t
        j                  «      r||j                  z  }ŒÙt        |d«      ‚ | j                  |j                  |j                  |j                  dz   «      }t        t        t!        ||«      t#        |d«      «      |g «      S )	Nrt   r�   r¦  z%Don't support conversion in JoinedStrz%Don't support formatting in JoinedStrz{}zUnsupported value in JoinedStrÚformat)r¹  ry   rz   r{   r–   r¹   ÚFormattedValueÚ
conversionrm   Úformat_specr¨   r  r  r,  r   r&   r*   r   )r~   r/  r’   rð   r  r  s         rG   Úbuild_JoinedStrzExprBuilder.build_JoinedStrÀ  s"  € àˆØˆØ—[‘[ò 	MˆEØ—‘˜uŸ|™|¨U×-=Ñ-=¸u×?OÑ?OÐRSÑ?SÓTˆAÜ˜%¤×!3Ñ!3Ô4Ø×#Ñ# rÒ)Ü+¨AÐ/VÓWÐWØ×$Ñ$Ð0Ü+¨AÐ/VÓWÐWØ�T‘	�Ø—‘œJ s¨E¯K©KÓ8Õ9Ü˜E¤3§<¡<Ô0Ø�U—[‘[Ñ ‘ä'¨Ð+KÓLÐLð	Mð �N‰N˜4Ÿ;™;¨¯©¸¿¹È1Ñ9LÓMˆÜ”VœM¨!¨QÓ/´°q¸(Ó1CÓDÀdÈBÓOÐOrI   c                 óâ  — | j                  |j                  |j                  |j                  «      }t        |j                  «      dk7  rt        |d«      ‚t        |j                  d   j                  «      dk7  rt        |d«      ‚t        | |j                  «      }t        | |j                  d   j                  «      }t        | |j                  d   j                  «      }t        ||||«      S ©Nr�   z.Only a single generator is currently supportedr   z'Comprehension ifs are not supported yet)ry   rz   r{   rv   Ú
generatorsrm   Úifsr  Úeltr’  r²  r   )r~   r  r  Úelt_exprÚtarget_exprÚ	iter_exprs         rG   Úbuild_ListCompzExprBuilder.build_ListCompÕ  sÀ   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹ÓIˆÜˆt�‰Ó 1Ò$Ü# AÐ'WÓXÐXäˆt�‰˜qÑ!×%Ñ%Ó&¨!Ò+Ü# AÐ'PÓQÐQä˜c 4§8¡8Ó,ˆÜ   d§o¡o°aÑ&8×&?Ñ&?Ó@ˆÜ˜s D§O¡O°AÑ$6×$;Ñ$;Ó<ˆ	ä˜˜8 [°)Ó<Ð<rI   c                 ó.   — t         j                  | |«      S rB   )rÒ  r\  )r~   r  s     rG   Úbuild_GeneratorExpzExprBuilder.build_GeneratorExpä  s   € ô ×)Ñ)¨#¨tÓ4Ð4rI   c                 ó  — | j                  |j                  |j                  |j                  «      }t        |j                  «      dk7  rt        |d«      ‚t        |j                  d   j                  «      dk7  rt        |d«      ‚t        | |j                  «      }t        | |j                  «      }t        | |j                  d   j                  «      }t        | |j                  d   j                  «      }t        |||||«      S rU  )ry   rz   r{   rv   rV  rm   rW  r  Úkeyr  r’  r²  r   )r~   r  r  Úkey_exprÚ
value_exprrZ  r[  s          rG   Úbuild_DictCompzExprBuilder.build_DictCompé  sÒ   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹ÓIˆÜˆt�‰Ó 1Ò$Ü# AÐ'WÓXÐXäˆt�‰˜qÑ!×%Ñ%Ó&¨!Ò+Ü# AÐ'PÓQÐQä˜c 4§8¡8Ó,ˆÜ  T§Z¡ZÓ0ˆ
Ü   d§o¡o°aÑ&8×&?Ñ&?Ó@ˆÜ˜s D§O¡O°AÑ$6×$;Ñ$;Ó<ˆ	ä˜˜8 Z°¸iÓHÐHrI   c                 óª   — | j                  |j                  |j                  |j                  dz   «      }t        |t	        | |j
                  «      «      S r:  )ry   rz   r{   r(   r  r  ró  s      rG   Úbuild_StarredzExprBuilder.build_Starredù  s=   € à�N‰N˜4Ÿ;™;¨¯©¸¿¹È1Ñ9LÓMˆÜ�qœ* S¨$¯*©*Ó5Ó6Ð6rI   N);rh   ri   rj   r¹   rÆ  rÇ  rÈ  rÉ  rÐ  rÊ  ÚFloorDivrÌ  rÍ  rË  rÎ  rÏ  r  ÚMatMultÚNotÚUSubÚInvertr  ÚAndÚOrr  ÚEqÚNotEqÚLtEÚLtÚGtEÚGtÚIsÚIsNotÚInr  r  r|  ré  rð  rô  rú  rý  r  r	  r  r  r  r8  r<  r?  rB  rE  rL  rJ  rS  r\  r^  rc  re  rk   rI   rG   rÒ  rÒ  P  sì  „ à�‰�Ø�‰�Ø�‰�#Ø�‰�Ø�‰�Ø�‰�Ø�‰�dØ�
‰
�CØ�
‰
�CØ�	‰	�3Ø�
‰
�DØ�
‰
�Dð€Ið !€Iˆc�k‰kÑð 	�‰�Ø�‰�#Ø�
‰
�Cð€Hð 	�‰�Ø�‰�ð€Jð 	�‰�Ø�	‰	�4Ø�‰�Ø�‰�Ø�‰�Ø�‰�Ø�‰�Ø�	‰	�8Ø�‰�Ø�	‰	�8ð€Ið ñ:ó ð:ð  ñ)ó ð)ð" ñó ðð ñ&ó ð&ð$ ñTó ðTð ñ)ó ð)ð* ñ.ó ð.ð ñó ðð( ñ
ó ð
ð ñó ðð4 ñ^Oó ð^Oð@ ñ
ó ð
ð ñ
ó ð
ð ñ

ó ð

ð ñó ðð
 ñQó ðQð$ ñ'ó ð'ð ñPó ðPð( ñ=ó ð=ð ñ5ó ð5ð ñIó ðIð ñ7ó ñ7rI   rÒ  c                 ó’   — | j                   d | j                  |«      }| j                  ||d   z   |t        |«      z   |d   z   «      S )Nr   r�   )rÔ   Úrindexrä  rv   )r~   ÚposÚsubstrr§  Únew_poss        rG   rª  rª    sL   € Ø�j‰j˜˜#Ð×%Ñ% fÓ-€GØ×Ñ˜g¨°©
Ñ2°G¼cÀ&»kÑ4IÈGÐTUÉJÑ4VÓWÐWrI   )NF)NNrB   ))r   r   )�r¹   rÎ   r¢   rF  râ  r4  Úcollectionsr   Útextwrapr   Útypingr   r   r^   Útorch.jit.annotationsr   Útorch._C._jit_tree_viewsr   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   r1   r2   r3   Útorch._jit_internalr4   r5   r6   r7   Útorch._sourcesr8   r9   r:   r;   rì   Útorch.jit._dataclass_implsr<   Útorch.jit._monkeytype_configr=   r>   rÄ  rW  ÚImportErrorrD   rE   ÚsetÚascii_lowercaseÚascii_uppercaseÚdigitsÚ_identifier_charsrH   rÐ   ÚImportÚ
ImportFromÚGlobalr|   rw   ÚupdateÚAsyncFunctionDefÚAsyncForÚ	AsyncWithÚTryÚNonlocalr¼   Ú	ExceptionrZ   rm   rq   r‡   r�   r“   r±   r¿   rç   r¦   r  r  rÖ   rý   r*  r  r-  rd  rm  rs  ru  rº   rÒ  r  r�   r‰   rª  rk   rI   rG   ú<module>r”     sf  ðã 
Û Û Û 	Û Û 
Ý "Ý ß ã Û Ý ÷-÷ -÷ -÷ -÷ -÷ -÷ -÷ -÷ -÷ -÷ -ó -÷\ó ÷ó õ ?ß Mð !Ð ð	Ûà#Ðð Ð Ø�)€Ù˜×.Ñ.°×1GÑ1GÑGÈ&Ï-É-ÑWÓXÐ òHð
 ‡O�OÐ+Ø‡G�Gˆ[Ø‡J�JÐ Ø‡L�LÐ%Ø‡H�HÐØ‡I�IÐ!Ø‡J�J�Ø‡J�JÐ#Ø‡N�NÐ'Ø‡J�JÐ"Ø‡I�IÐ!Ø‡L�LÐ'ðÐ ð  ‡O�O�UØ‡G�GˆUØ‡J�J�Ø‡L�L�'Ø‡H�HˆfØ‡I�IˆwØ‡J�J�Ø‡J�J�Ø‡N�N�FØ‡J�J�Ø‡I�IˆwØ‡L�L�*ðÐ ð × Ñ à×ÑÐ:Ø�‰Ð'Ø�‰Ð.Ø�‰�Ø�‰Ð*ðôð × Ñ à×Ñ˜kØ�‰�kØ�‰�|Ø�‰�Ø�‰�jðôð × Ñ à�‰Ð.ðôô
<�Iô 
<ô	˜ô 	ô,Ð,ô ,ô	˜ô 	òò
%ò
òDò$GXóT?òF÷$!ñ !òóAð&2ð ó1óh>òSòlò,ô:
�gô 
ô lV�'ô lVô^l7�'ô l7ñ^ ‹]€
Ù‹]€
Ù Ó"€ôXøðe% ò 	Úð	ús   Ã M6 Í6M?Í>M?