
    Phu                     0   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m	Z	m
Z
mZmZmZmZmZmZ d dlZd dlZd dlmc mZ d dlmZ d dlmZmZ d dlmZ  ej<                  e      Z 	 d dl!Z!de!jD                  de#fd	Z$e G d
 d             Z%de	ddde	fdZ& G d dej(                  jN                        Z( G d d      Z) G d d      Z*dZ+g dZ,d dl.m/Z0 de1fdZ2de3fdZ4d Z5 G d de      Z6 G d d e      Z7 e5        d! Z8y# e-$ r	 dZ+g dZ,Y Cw xY w)"    N)	dataclass)	AnyCallableDictListOptionalSetTupleTypeUnion)TorchDynamoException)ArgumentTarget)sympy_interpereturnc                 Z  
 t        j                  |       s
J d|         dt         j                  dt        t           fd}t        j
                  |       } t        j                  |       st        d|        t        j                  |       st        j                  |       r| j                         S | j                         }|j                         t	        |      } ||       }t         j                  k(  rd}nt         j                  t         j                  fv r
fd
 
|       }nQt         j                   k(  r| j#                         dk(  sJ | j%                  d	      }t        j                  |      sJ |j                         j                         }t         j&                  d
t         j(                  dt         j*                  di}||v r||   } ||      }nt         j,                  t         j.                  fv rJ| j#                         dk(  sJ t1        | j%                  d	            }|j3                  d      rd|dd  z   S |S t         j4                  k(  r | j#                         d	k(  sJ t	        |      S |dz   dj7                  |      z   }	d|	j9                          dS )Nzunsupported expression type: r   r   c                     t        | j                               D cg c]  }t        | j                  |             c}S c c}w N)rangenum_argsz3strarg)r   is     jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/fx/experimental/validator.pyget_args_strzz3str.<locals>.get_args_str=   s3    -21::<-@A-@E!%%(O-@AAAs   !A zcan't print Z3 expression: powc           	         t        j                  |       r!| j                         j                         k(  st	        |       gS t        | j                               D cg c]   } | j                  |            D ]  }| " c}}S c c}}w r   )z3is_appdeclkindr   r   r   r   )r   r   xcollect_str_argsr"   s      r   r$   zz3str.<locals>.collect_str_argsY   sy    		!D)@!!H:% "'qzz|!4!4A!1!%%(!;A !; !4  s    %B	   r   z!=><z(/z(idiv    ())r   is_exprExprRefr   strsimplifyr    
ValueErroris_int_valueis_rational_value	as_stringr!   r"   Z3_OP_POWER	Z3_OP_ADD	Z3_OP_MUL	Z3_OP_NOTr   r   Z3_OP_EQZ3_OP_LEZ3_OP_GEZ3_OP_TO_INTZ3_OP_TO_REALr   
startswithZ3_OP_UNINTERPRETEDjoinrstrip)r   r   r!   opargsr   argkindlogic_inverseargstrstringr$   r"   s             @@r   r   r   :   s@   zz!}A =aSAA}	BBJJ 	B49 	B
 KKN
 yy|:1#>????1!5!5a!8;;= vvxyy{YA2>>!BbllBLL11 $A&DR\\! ::<1$$$%%(C99S>!>hhjoo'G TSSM -'"7+#C(boor'7'788::<1$$$1558_F   &++ MR+++::<1$$$t9cCHHTN*6==?#1%%    c                   \   e Zd ZU ded<   edej                  dej                  fd       Zedej                  dej                  fd       Zdej                  dej                  dej                  fd	Z	d
ej                  dej                  fdZ
dej                  dej                  dej                  fdZd
ej                  dej                  fdZdej                  dej                  dej                  fdZdej                  dej                  dej                  fdZdej                  dej                  dej                  fdZdej                  dej                  dej                  fdZd
ej                  dej                  fdZd
ej                  dej                  fdZy)_Z3OpsTranslationValidator	validatorr#   r   c                 P    | j                         r| S t        j                  |       S r   )is_realr   ToRealr#   s    r   to_realz_Z3Ops.to_real   s    		1515rG   c                 P    | j                         r| S t        j                  |       S r   )is_intr   ToIntrO   s    r   to_intz_Z3Ops.to_int   s    
133rG   	numeratordenominatorc                     | j                   j                  |dk7         t        j                  |      t        j                  |      z  S Nr   )rK   add_assertionrI   rP   selfrU   rV   s      r   divz
_Z3Ops.div   s6    NN(()9:>>),v~~k/JJJrG   numberc                 ,    t         j                  |      S r   )rI   rT   r[   r]   s     r   floorz_Z3Ops.floor   s    ==((rG   c                     |j                         xs |j                         }t        j                  | j                  ||            }|rt        j	                  |      S |S r   )rM   rI   rT   r\   rP   )r[   rU   rV   cast_result_to_realresults        r   floordivz_Z3Ops.floordiv   sQ    "+"3"3"5"N9L9L9N]]488I{#CDF .A6>>&)LfLrG   c                 x    t        j                  | j                  |      |k  | j                  |dz         |      S Nr%   )r   Ifr`   r_   s     r   ceilz_Z3Ops.ceil   s7    55

6"V+

6A:& rG   abc                 6    t        j                  ||kD  ||      S r   r   rg   r[   ri   rj   s      r   maxz
_Z3Ops.max       55Q1%%rG   c                 6    t        j                  ||k  ||      S r   rl   rm   s      r   minz
_Z3Ops.min   ro   rG   pqc                 2    || j                  ||      |z  z
  S r   )rd   r[   rr   rs   s      r   modz
_Z3Ops.mod   s    t}}Q*Q...rG   baseexpc                 v    | j                   j                  t        j                  |dk7  |dkD               ||z  S rX   )rK   rY   r   Orr[   rw   rx   s      r   r   z
_Z3Ops.pow   s1    NN((tqy#')BC3;rG   c                 r    t         j                  |      }| j                  j                  |dk\         |dz  S )Nr   g      ?)rI   rP   rK   rY   r_   s     r   sqrtz_Z3Ops.sqrt   s4     ^^F+F NN((15S= rG   c                 ,    t        j                  |      S r   )r   Absr_   s     r   absz
_Z3Ops.abs   s    66&>!rG   N)__name__
__module____qualname____annotations__staticmethodr   ArithRefrP   rT   r\   r`   rd   rh   rn   rq   rv   r   r}   r    rG   r   rI   rI      s    *) 
	6r{{ 	6r{{ 	6 
	6 
	4bkk 	4bkk 	4 
	4	K 	K2;; 	K2;; 	K	) 	) 	)	Mbkk 	M 	MPRP[P[ 	M	r{{ 	r{{ 		& 	& 	& 	&	& 	& 	& 	&
	/ 	/ 	/ 	/	BKK 	bkk 	bkk 	
	!r{{ 	!r{{ 	!	"bkk 	"bkk 	"rG   rI   rA   rK   rJ   c                 b   ddl m} t        j                  t        j                  t        j
                  h}| |v fd}t        |      }t        j                   |t        j                        t        j                   |t        j                        t        j
                   |t        j                        t        j                   ||j                        t        j                   ||j                        t        j                   ||j                        t        j                   ||j                        t         j"                   ||j"                        t         j$                   ||j$                        t&        j(                   ||j*                        t&        j,                   ||j.                        t&        j0                   ||j2                        t&        j4                   |d       | ||j6                        t&        j8                  t&        j8                  i}| |v r||    S  ||       S )Nr   )sym_sqrtc                 t     dt         j                  ffdt        j                          fd       }|S )Nr   c                    t        | t        j                  t        j                  f      r| S t        | t              sr.t        | t
              rt        j                  t	        |             S t        | t
        t        j                  f      rt        j                  t        |             S t        | t        t        j                  f      rt        j                  t        |             S t        dt        |              )Nzcan't lift type: )
isinstancer   r   BoolRefboolintBoolValsympyIntegerIntValfloatFloatRealValr0   type)ri   as_bools    r   wrapz z3op.<locals>.lift.<locals>.wrap   s    a"++rzz!:;H a&7z!S7I::d1g..a#u}}!5699SV,,a%!56::eAh// #4T!WI!>??rG   c                  $    fd| D        } | S )Nc              3   .   K   | ]  } |        y wr   r   ).0ri   r   s     r   	<genexpr>z6z3op.<locals>.lift.<locals>.wrapper.<locals>.<genexpr>   s     6AQs   r   )rB   wrapped_argsfuncr   s     r   wrapperz#z3op.<locals>.lift.<locals>.wrapper   s      76\**rG   )r   r-   	functoolswraps)r   r   r   r   s   ` @r   liftzz3op.<locals>.lift   s9    @2:: @ __T"+ #+ NrG   c                     | r|S |S r   r   )rj   tfs      r   <lambda>zz3op.<locals>.<lambda>  s    QArG   )torch.fx.experimental.sym_noder   operatornot_and_or_rI   r   NotAndrz   rd   truedivr\   rv   r   mathrh   r`   torch	sym_floatrP   sym_maxrn   sym_minrq   sym_iter}   _assert)rA   rK   r   boolean_opsr   opsreplacement_mapr   s          @r   z3opr      sb   ;  }}hmmX\\B#	. Y MM4<MM4<LL$ruu+tCLL1d377mLL$sww-LL$sww- IItCHH~JJSYY OOT#++.MM4=MM4=MM4 =>d388n MM5==-
0 ')O&;r"IbIrG   c                        e Zd Zdej                  j
                  ddf fdZdedee	df   de
eef   d	efd
Zdedee	df   de
eef   d	ef fdZ xZS )PopulateValidatorgraphrK   rJ   c                 x    || _         t        j                  j                  i |      }t        |   |d       y )N)rootr   T)garbage_collect_values)rK   r   fxGraphModulesuper__init__)r[   r   rK   module	__class__s       r   r   zPopulateValidator.__init__)  s7    &DN XX))r)?FGVDArG   targetrB   .kwargsr   c                 f    t        j                         d   }| j                  j                  |      S )Nsymbol)fx_tracebackget_current_metarK   z3var)r[   r   rB   r   r   s        r   placeholderzPopulateValidator.placeholder1  s*    !224X>F>>''//rG   c                     |t         j                  k7  rt        |   |||      S t	        |      dk(  sJ dt	        |       d       | j
                  j                  |d          y )Nr%   z'expected 1 argument on assertion. Got: r)   r   )r   r   r   call_functionlenrK   add_source_expr)r[   r   rB   r   r   s       r   r   zPopulateValidator.call_function5  sb    & w,VT6BB t9>Y%LSQUYKWX#YY>NN**473rG   )r   r   r   r   r   Graphr   r   r
   r   r   r.   r   r   r   __classcell__)r   s   @r   r   r   (  s    	B%((.. 	B=S 	B	0f 	0E(C-4H 	0RVWZ\_W_R` 	0eh 	0	4 	4eHcM6J 	4TXY\^aYaTb 	4gj 	4 	4rG   r   c                   8   e Zd Zh dZ	 	 	 	 ddZdedej                  dej                  fdZ
dej                  d	ej                  dej                  fd
Zdej                  d	ej                  dej                  fdZdej                  d	ej                  dej                  fdZdej                  dej                  dej                  fdZdej                  dej                  dej                  fdZdedefdZdej(                  dej                  fdZy)	SympyToZ3>   eqgegtleltneaddmulr   Nc                 F    || _         t        | j                         | _        y r   )
_validatorrI   _ops)r[   rK   s     r   r   zSympyToZ3.__init__H  s     (DOt/DIrG   valuedtypec                 >   |t         j                  u rt        j                  t	        |            S |t         j
                  u rt        j                  t        |            S |t         j                  u rt        j                  t        |            S t        d|       )Nzunsupported dtype (SympyToZ3): )r   int64r   r   r   doubler   r   r   r   r0   )r[   r   r   s      r   constantzSympyToZ3.constantO  sr    #yyU,,$zz%,//

"zz$u+..>ugFGGrG   rU   rV   c                 :    | j                   j                  ||      S r   )r   r\   rZ   s      r   r   zSympyToZ3.truedivX  s    99==K88rG   c                 :    | j                   j                  ||      S r   r   rd   rZ   s      r   rd   zSympyToZ3.floordiv[      99%%i==rG   c                 :    | j                   j                  ||      S r   r   rZ   s      r   r\   zSympyToZ3.div^  r   rG   rw   rx   c                 :    | j                   j                  ||      S r   )r   r   r{   s      r   r   zSympyToZ3.powa  s    99==s++rG   rr   rs   c                 :    | j                   j                  ||      S r   )r   rv   ru   s      r   rv   zSympyToZ3.modd  s    99==A&&rG   namec                 t   t         j                  t         j                  t         j                  | j                  j
                  | j                  j                  | j                  j                  | j                  j                  d}||v r||   S || j                  v rt        t        |      S t        d|       )N)r   r   r   r`   rh   minimummaximumzunhandled operator: )r   r   rz   r   r   r`   rh   rq   rn   OPERATOR_HANDLESgetattrr   AttributeError)r[   r   REPLACEMENTs      r   __getattr__zSympyToZ3.__getattr__g  s    uu		99==99==K {""4((t,,,x.. #7v!>??rG   exprc                 D    t        | | j                  j                  |      S r   )r   r   symbols)r[   r   s     r   runzSympyToZ3.runx  s    doo&=&=tDDrG   )rK   rJ   r   N)r   r   r   r   r   r   r   r   r   r-   r   r   r   rd   r\   r   rv   r.   r   r   Basicr   r   rG   r   r   r   E  s:   M	01	0 	0	H# 	Hekk 	Hbjj 	H	9R[[ 	9r{{ 	9r{{ 	9	>bkk 	> 	>PRP[P[ 	>	> 	>2;; 	>2;; 	>	,BKK 	,bkk 	,bkk 	,	' 	' 	' 	'	@C 	@C 	@"	EEKK 	EBJJ 	ErG   r   c                   v   e Zd ZddZdej
                  dej                  fdZdej
                  de	dej                  fdZ
dej                  ddfd	Zdej                  dej                  fd
Zdej                  ddfdZdej                   ddfdZdeej                  ej                  f   ddfdZddZy)rJ   r   Nc                     t         j                  d       i | _        t               | _        t               | _        t               | _        y )Nznew instance)logdebugr   set_source_exprs_target_exprs_assertionsr[   s    r   r   zTranslationValidator.__init__  s;    IIn% <>DL
 36%D
 36%D 14DrG   r   c                 P    || j                   v s
J d|        | j                   |   S )NzZ3 variable not found for: )r   )r[   r   s     r   r   zTranslationValidator.z3var  s0    T\\)Q-H+QQ)<<''rG   r   c                    || j                   v r| j                   |   S t        j                  d|j                  |j                         |t
        u rJt        j                  |j                        }|j                  r}| j                  j                  |dkD         n^|t        u r t        j                  |j                        }n6|t        u r t        j                  |j                        }nt        d|       || j                   |<   |S )Nznew variable: %s (%s)r   z"unsupported type for Z3 variable: )r   r   r   r   r   r   r   Intis_positiver  r   r   Realr   BoolRuntimeError)r[   r   r   vars       r   add_varzTranslationValidator.add_var  s    %||F++II-v{{DMMJs{ffV[[) %%&&**373ggfkk*ggfkk*"%Gv#NOO#&DLL JrG   r   c                     |j                   D ]/  }t        |t        j                        sJ | j	                  |       1 y r   )free_symbolsr   r   Symbolr   )r[   r   ss      r   _check_freesymbolsz'TranslationValidator._check_freesymbols  s1    ^^!!U\\222 

1	 $rG   c                     t        |       j                  |      }t        |t        j                        s
J d|        |S )Nz"expected boolean expression. Got: )r   r   r   r   r   r[   r   z3exprs      r   to_z3_boolean_exprz'TranslationValidator.to_z3_boolean_expr  s>    t_((+Ffbjj1`5WX^W_3``1MrG   c                     || j                   vrt        j                  dt        |             | j                   j	                  |       y )Nzadd source guard: %s)r  r   r   r   r   )r[   r   s     r   r   z$TranslationValidator.add_source_expr  s7    ***		0%(;""1%rG   c                     | j                  |       | j                  |      }|| j                  vrt        j	                  dt        |             | j                  j                  |       y )Nzadd target guard: %s)r  r  r  r   r   r   r   r  s      r   add_target_exprz$TranslationValidator.add_target_expr  sU    ##A&,,Q/F***		0%-@""6*rG   c                 J   t        |t        j                        r#| j                  |       | j	                  |      }n|}t        |t
        j                        sJ || j                  vrt        j                  dt        |             | j                  j                  |       y )Nzadd assertion: %s)r   r   r   r  r  r   r   r  r   r   r   r   )r[   r   refs      r   rY   z"TranslationValidator.add_assertion  s|    !U[[)''*--a0c2::...$***		-uSz:  %rG   c                    ddl m} t        | j                        dk(  st        | j                        dk(  ry t        j                  d      }|j                  t                      | j                  D ]  }|j                  |        |j                  t        j                  t        j                  | j                                 |j                  | j                    t        j                  d          |       |j                               }|t
        j                   k(  r]|j#                         }t%        || j                  | j                  | j                  D cg c]  }|j'                  |      r| c}      |t
        j(                  k(  rt        j+                  d       y |t
        j,                  k(  sJ t        j                  d       y c c}w )	Nr   )dynamo_timedQF_NRA)timeoutztranslation validation: start)failed_source_exprsz:translation validation: could not validate: got z3.unknownztranslation validation: success)torch._dynamo.utilsr  r   r  r  r   	SolverForr  translation_validation_timeoutr  r   r   r   r   r   checksatmodelValidationExceptionevaluateunknownwarningunsat)r[   r  solver	assertionrr'  inps          r   validatezTranslationValidator.validate  so   84%%&!+s43E3E/F!/K  \\(+FJJ=?J@ "--	

9% .
 JJrvvbffd&8&89:;FJJ**+II56,v||,.ABFF{ )4++T-?-?'+'9'9)'9PSAT'9)  

? KK \] =(=II?@)s   G5G)r   N)r   r   r   r   r   r  r   r-   r   r   r  r   r  r   r  r   Exprr  r   rY   r1  r   rG   r   rJ   rJ     s    	6*	( 	( 	(
	%,, 	d 	rzz 	0	 	 		 	

 	
	&RZZ 	&D 	&
	+UZZ 	+D 	+		&5U[[)@#A 		&d 		&4	ArG   T)	r   r   r   r   rJ   translation_validation_enabledr$  r(  BisectValidationExceptionF)r3  r$  r(  r4  )_configc                  F    t                t        xr t        j                  S r   )_assert_z3_installed_if_tv_set_HAS_Z3configtranslation_validationr   rG   r   r3  r3  )  s     #$4v444rG   c                  "    t         j                  S r   )r9  r$  r   rG   r   r$  r$  0  s    000rG   c                  @    t         st        j                  rJ d       y y )Nzotranslation validation requires Z3 package. Please, either install z3-solver or disable translation validation.)r8  r9  r:  r   rG   r   r7  r7  4  s$    &77 	7777rG   c                       e Zd Zd Zd Zy)r(  c                 f   t         sJ dt        ffd}dt        fd} |t        t        |                  } |t        t        t        |                  } |t        t        t        |                  }	 |t        t        t        |                  }
d| _        d| d| d|	 d|
 | _        y )	Nr   c                     |  d|     S )N: r   )symr'  s    r   	symbolstrz/ValidationException.__init__.<locals>.symbolstr?  s    U"U3ZL))rG   c                 2    dj                  d | D              S )N
c              3   &   K   | ]	  }d |   yw)z  ==> Nr   )r   r#   s     r   r   zBValidationException.__init__.<locals>.joinlines.<locals>.<genexpr>C  s     62avaS\2s   )r?   )xss    r   	joinlinesz/ValidationException.__init__.<locals>.joinlinesB  s    9962666rG   ztranslation validation failed.zModel:
z

Assertions:
z

Target Expressions:
z

Failed Source Expressions:
)r8  r.   sortedmapr   msgdetails)r[   r'  
assertionstarget_exprsr!  rB  rG  	model_strassertions_strtarget_exprs_strfailed_source_exprs_strs    `         r   r   zValidationException.__init__<  s    w	*c 	*	7S 	7 fSE%:;<	"6#eZ*@#AB$VC|,D%EF"+F3u>Q3R,S"T3
         rG   c                 8    | j                    d| j                   S N

rJ  rK  r  s    r   __str__zValidationException.__str__X      ((4~..rG   Nr   r   r   r   rV  r   rG   r   r(  r(  ;  s    8/rG   r(  c                       e Zd Zd Zd Zy)r4  c                 h    d| d| | _         d|j                          d|j                   | _        y )Nz#translation validation failed when r@  z)Failure occurred while running node:
    rT  )rJ  format_noderK  )r[   validation_excr   failed_actiontraced_nodes        r   r   z"BisectValidationException.__init__]  sD    8r$P   	rG   c                 8    | j                    d| j                   S rS  rU  r  s    r   rV  z!BisectValidationException.__str__e  rW  rG   NrX  r   rG   r   r4  r4  \  s    /rG   r4  c                 6   ddl m}mm} ddlmm}m | j                  dt        j                  j                  d|ffd}d|dt        ffdd|d	t        t        t              dt        t           ffd
dt        j                  j                  dt        t           ffd} | | j!                               }|st"        j%                  d       y | j&                  rt(        j*                  r|i }| j,                  j.                  D cg c]"  }|j0                  t        j2                  k(  s!|$ }	}ddt5        |	      dz
  }}}
|
|k  rH|
|z   dz  }|	|   }t"        j7                  d| ||              ||      ||<   ||   r|}n|dz   }
|
|k  rH|
|v rt9        ||
   t              sJ |	|
   } ||      }|j;                         rd}n|j=                         s
J d|        d}|j>                  }|J t5        |      dk\  s J d|j@                   dt5        |              t9        |d   tB        jD                        s#J d|j@                   dtG        |d                 tI        ||
   |d   ||jJ                  |         c c}w )Nr   )ShapeEnvSHAPEENV_EVENT_KEYCURRENT_NODE_KEY)FakeTensorMetaShapeEnvEventreplay_shape_env_eventsnoder   c                 H    | j                   v sJ | j                         S r   )meta)rg  rb  eventss    r   get_node_eventzbisect.<locals>.get_node_eventz  s*    !TYY...dii 2344rG   	shape_envc           	          t        |t              r|S t        |t        j                        r.t        j                  |j                  j                               S t        |      sJ  t         fd|j                         D              t         fd|j                         D                |j                               |j                        S )Nc              3   0   K   | ]  } |        y wr   r   r   r  new_with_shape_envrl  s     r   r   z5bisect.<locals>.new_with_shape_env.<locals>.<genexpr>  s     HKq$Y2K   c              3   0   K   | ]  } |        y wr   r   ro  s     r   r   z5bisect.<locals>.new_with_shape_env.<locals>.<genexpr>  s     JMq$Y2Mrq  )r   r   r   SymIntrg  with_shape_envtuplesizestridestorage_offset	is_nested)rl  fakerd  rp  s   ` r   rp  z"bisect.<locals>.new_with_shape_env  s    dC KdELL)<<		 8 8 CDD$///HDIIKHHJDKKMJJy$*=*=*?@NN	
 	
rG   tracked_fakesc           	      $   |J 	 | j                  |D cg c]  } | |j                         c}|D cg c]  }|j                   c}|D cg c]  }|j                   c}       y c c}w c c}w c c}w # t        $ r}|cY d }~S d }~ww xY w)N)constraint_inputs)produce_guardsrz  sourceconstraint_dimsr(  )rl  r{  ri   r   rp  s       r   check_shapeenv_failsz$bisect.<locals>.check_shapeenv_fails  s    (((	 $$@MN1#Iqvv6N#01=a=1>K"Lm1#4#4m"L % 
 	 O1"L # 	H	sD   A: A+A: A0
	A: A5"A: +A: :	BB
B
Bc                     | j                      } d |dz          }|j                  j                           ||   j                        S rf   )ri  r   lintr{  )rg  r]   rl  rb  r  rj  rf  s      r   check_node_failsz bisect.<locals>.check_node_fails  sN    -.+F;FQJ,?@	#Ivf~/K/KLLrG   z2translation validation succeeded: no errors found.r%   r(   zbisecting at %s: %s
evaluatingzunexpected event type: zadding runtime assertzbisecting expects z/ to have at least 2 positional arguments. Got: z9 to have a SymPy expression as its second argument. Got: )r   r]  r^  )&%torch.fx.experimental.symbolic_shapesra  rb  rc  torch.fx.experimental.recordingrd  re  rf  rj  r   r   Noder   r   r   r(  snapshot_tracked_fakesr   infoshould_record_eventsr9   translation_validation_no_bisectr   nodesr   r   r   r   r   is_evaluate_expris_defer_runtime_assertrB   r   r   r   r   r4  ri  )rl  ra  rc  re  rk  r  last_exception	exceptionrg  assert_nodesleftmidrighteventr]  rB   rd  rb  r  rj  rp  rf  s                   @@@@@@r   bisectr  s  s   ddffF5UXX]] 5} 5
h 
 
 $s)AT YabuYv "Muxx}} M:M1N M M *)Y5U5U5WXN 	EF))V-T-T  I &/__%:%:[%:TdkkU]]>ZD%:L[ !S.2u#D
,e|!C 		'nT.BC *$/	#S>E7D , 9IdO=P!QQQD4 E$,,.Q2I%0QQ./::Dt9> 
UZZL )D	{	> d1gu{{+ 
UZZL )T!W	 +
 $$!W#II./	 S \s   "J<J)9r   loggingr   r   r   dataclassesr   typingr   r   r   r   r   r	   r
   r   r   r   torch.fxtorch.fx.tracebackr   	tracebackr   torch._dynamo.excr   torch.fx.noder   r   torch.utils._sympy.interpr   	getLoggerr   r   r   r-   r.   r   rI   r   Interpreterr   r   rJ   r8  __all__ImportErrortorch.fx.experimentalr5  r9  r   r3  r   r$  r7  r(  r4  r  r   rG   r   <module>r     sR        ! O O O   ) ) 2 * 2g!QJQ& Q& Q&p E" E" E"^;J ;J&< ;J ;JL4EHH00 4:4E 4EHKA KAl GG 45 51 1/. /B
/ 4 
/   v{  GGs   )A"D DD