Ë
    P/æj5  ã                   óž  — d dl Z d dlZd dlZd dlZd dlmZmZ d dl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mZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ ej>                  j@                  Z!g d	¢Z"i Z#g Z$ejJ                  jL                  jN                  Z'd
„ Z(d„ Z) e(e'jT                  jV                  e'jT                  jX                  e'jZ                  jV                  e'jZ                  jX                  e'j\                  jV                  e'j\                  jX                  e'j^                  jV                  e'j^                  jX                  e'j`                  jV                  e'j`                  jX                  e'jb                  jV                  e'jb                  jX                  e'jb                  jd                  e'jb                  jf                  e'jh                  jV                  e'jh                  jX                  e'jj                  jV                  e'jj                  jX                  e'jl                  jV                  e'jl                  jX                  e'jn                  jV                  e'jn                  jX                  e'jp                  jV                  e'jp                  jX                  e'jr                  jV                  e'jr                  jX                  «      Z: e(e'jv                  jV                  e'jx                  jV                  e'jx                  jX                  e'jz                  jV                  e'j|                  j~                  e'j|                  j€                  e'j‚                  jV                  e'j„                  jV                  e'j„                  jX                  e'j†                  jV                  e'j†                  jX                  «      ZDe'jŠ                  fZFd„ ZG e j�                  d«      defd„«       ZIdeeegeJf   ef   fd„ZK eKe#j˜                  «      d„ «       ZM eKeI«       eKg e:¢«      d„ «       «       ZN eKe'j‚                  jV                  «      d„ «       ZO eKe'j|                  j€                  «       eKe'j|                  j~                  «      d„ «       «       ZPd„ ZQ eKeQ«      d„ «       ZR eKe'j¦                  jV                  «      d„ «       ZS eKe'j¨                  jV                  «      d„ «       ZT eKd„ «      d„ «       ZU	 d;d„ZV eKe'j®                  jV                  «      	 d;d„«       ZX eKe'j²                  jV                  «      	 d;d„«       ZY eKe'j´                  j¶                  «      d<d„«       Z\ eKejL                  jN                  jº                  jV                  «       eKejL                  jN                  j¼                  jV                  «      d„ «       «       Z_ eKejL                  jN                  jÀ                  jV                  «      d „ «       Z` eKejL                  jN                  jÂ                  jV                  «      d!„ «       Za eKd"„ «      d#„ «       Zbd$„ Zcd%„ Zd e(d&d'd(«      Zed)„ Zfd*„ Zg eKd+„ «      d,„ «       Zh eKe'jÒ                  j¶                  «      d-„ «       Zj eKe'jÖ                  jV                  «      d.„ «       Zl eKe'jÚ                  jV                  «       eKe'jÜ                  jV                  «       eKe'jÞ                  jV                  «       eKe'jà                  jV                  «      d/„ «       «       «       «       Zq eKe'jÜ                  jX                  «       eKe'jà                  jX                  «      d0„ «       «       Zr eKe'jæ                  jV                  «       eKe'jè                  jV                  «      d1„ «       «       Zu eKe'jx                  jV                  «       eKe'jx                  jX                  «       eKe'jì                  jV                  «       eKe'jî                  jV                  «      d2„ «       «       «       «       Zx eKeDD � cg c]q  } | e'j‚                  jV                  e'j|                  j~                  e'j|                  j€                  e'jx                  jV                  e'jx                  jX                  fvr| ‘Œs c} «      d3„ «       Zy eKe'jô                  jV                  e'jö                  jV                  g«      d4„ «       Z| eKejL                  jN                  jú                  jV                  «      d5„ «       Z}i Z~defd6„Zd7„ Z€d8„ Z�d9„ Z‚ e j�                  d«      d:„ «       Zƒyc c} w )=é    N)ÚCallableÚUnion)Úno_python_dispatcher)Ú
OpOverload)Úelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚis_boolean_dtypeÚis_float_dtypeÚis_integer_dtype)ÚDataDependentOutputExceptionÚDynamicOutputShapeExceptionÚ
FakeTensorÚin_kernel_invocation_managerÚrun_fallback_kernelÚUnsupportedOperatorException)Únormalize_function©Úcount_label)Úop_implementations_checksÚget_fast_op_implsÚstride_incorrect_opÚhas_metac                  ó.   — t         j                  | d«      S )NT)ÚdictÚfromkeys)Úitemss    ú_/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_subclasses/fake_impls.pyÚordered_setr   1   s   € Ü�=‰=˜ Ó%Ð%ó    c                 ó    — | j                   dk7  S )NÚhpu)Útype©Údevices    r   Úis_noncontiguous_supportedr%   7   s   € Ø�;‰;˜%ÑÐr   c                 ó¸   — t         j                  j                  j                  «       }| j	                  |«      xs  t        d„ | j                  «       D «       «      S )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úcontains_tensor_types)Ú.0Úes     r   ú	<genexpr>z(contains_tensor_types.<locals>.<genexpr>m   s   è ø€ ò 0Ø%&Ô˜a× ñ0ùs   ‚)ÚtorchÚ_CÚ
TensorTypeÚgetÚisSubtypeOfÚanyÚcontainedTypes)r"   Útensor_types     r   r)   r)   k   sO   € Ü—(‘(×%Ñ%×)Ñ)Ó+€KØ×Ñ˜KÓ(ò ¬Cñ 0Ø*.×*=Ñ*=Ó*?ô0ó -ð r   Úfuncc                 ó.  — t        | t        «      sJ ‚| j                  }t        d„ |j                  D «       «      ryt        |j                  «      dk(  xrA |j                  d   j                  t        j                  j                  j                  «       u S )Nc              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wr(   )r)   r"   )r*   Úargs     r   r,   z)_is_tensor_constructor.<locals>.<genexpr>v   s   è ø€ Ò
G¨sÔ  §¡×*Ñ
Gùs   ‚!Fé   r   )Ú
isinstancer   Ú_schemar2   Ú	argumentsÚlenÚreturnsr"   r-   r.   r/   r0   )r5   Úschemas     r   Ú_is_tensor_constructorr@   r   sv   € ä�dœJÔ'Ð'Ð'Ø�\‰\€FÜ
Ñ
G°f×6FÑ6FÔ
GÔGØô 	ˆF�N‰NÓ˜qÑ ÒX V§^¡^°AÑ%6×%;Ñ%;¼u¿x¹x×?RÑ?R×?VÑ?VÓ?XÐ%Xðr   Úrun_impl_checkc                 ó   ‡ — ˆ fd„}|S )Nc                 ó
  •— t        ‰t        «      r‰t        vs
J d‰› �«       ‚| t        ‰<   | S t        ‰t        t        f«      r‰D ]  } t        |«      | «       Œ | S t        ‰«      sJ ‚t        j                  ‰| f«       | S )Nzduplicate registration: )	r:   r   Úop_implementations_dictÚlistÚtupleÚregister_op_implÚcallabler   Úappend)Úop_implÚoprA   s     €r   Úimpl_decoratorz(register_op_impl.<locals>.impl_decorator   sž   ø€ Ü�n¤jÔ1àÔ&=Ñ=ð;à)¨.Ð)9Ð:ó;Ø=à6=Ô# NÑ3ð ˆô ˜¬¬u¨Ô6Ø$ò .�Ø$Ô  Ó$ WÕ-ð.ð ˆô ˜NÔ+Ð+Ð+Ü%×,Ñ,¨n¸gÐ-FÔGàˆr   © )rA   rL   s   ` r   rG   rG   ~   s   ø€ ôð Ðr   c                 ó(   — t        |   | |g|¢­i |¤ŽS r(   )rD   ©Ú	fake_moder5   ÚargsÚkwargss       r   Ú#dispatch_to_op_implementations_dictrS   ‘   s   € ä" 4Ñ(¨°DÐJ¸4ÒJÀ6ÑJÐJr   c                 ó¤  — |t         vsJ ‚t        |||d¬«      \  }}d|v rt        d«      ‚|t        v r"|d   j                  }|j                  d«      f}nt        j                  d«      }d}|j                  dd «      }|�|n|}t        j                  d	«      |d<   t        | «      5   ||i |¤Ž}d d d «       t        | |«      S # 1 sw Y   ŒxY w)
NT©rQ   rR   Únormalize_to_only_use_kwargsÚnamesz+torch.compile doesn't support named tensorsÚinputÚcpurM   r$   Úmeta)	Ú_non_kwarg_device_constructorsr   r   Ú_like_tensor_constructorsr$   Úpopr-   r   r   )	rP   r5   rQ   rR   Ú_Ú
new_kwargsÚdefault_deviceÚ
out_deviceÚrs	            r   Úconstructorsrc   –   sñ   € ð Ô5Ñ5Ð5Ð5Ü&Ø�4 ÀTô�M€A€zð �&ÑÜ*Ø9ó
ð 	
ð Ô(Ñ(Ø# GÑ,×3Ñ3ˆà—‘˜wÓ'Ð)‰ô Ÿ™ eÓ,ˆØˆØ—‘ ¨$Ó/€JØ)Ð5‘¸>€JÜ Ÿ<™<¨Ó/€JˆxÑô 
& iÓ	0ñ &Ù�$Ð%˜*Ñ%ˆ÷&ä�i  JÓ/Ð/÷&ð &ús   Â(	CÃCc                 óž   — t        |||d¬«      \  }}|j                  d«      }t        | «      5   ||«      }d d d «       |S # 1 sw Y   S xY w)NT©rV   rX   )r   r]   r   )rP   r5   rQ   rR   r^   r_   Úinprb   s           r   Únon_kwarg_is_pinnedrg   ´   sV   € ä&Øˆd�F¸ô�M€A€zð �.‰.˜Ó
!€Cô 
& iÓ	0ñ Ù�‹Iˆ÷à€H÷à€Hús   ¯	AÁAc                 ó4  — t        |||d¬«      \  }}|d   }|r|n|d   j                  }t        j                  d«      |d<   |j                  d«      }t	        | «      5   ||fi |¤Ž}	d d d «       | j
                  j                  | 	|«      S # 1 sw Y   Œ&xY w)NTre   r$   rX   rZ   )r   r$   r-   r]   r   Úfake_tensor_converterÚfrom_meta_and_device)
rP   r5   rQ   rR   r^   r_   Úinput_devicera   rf   rb   s
             r   Únon_kwarg_torl   Á   sª   € ô 'Øˆd�F¸ô�M€A€zð ˜hÑ'€LÙ!-‘°:¸gÑ3F×3MÑ3M€JÜ Ÿ<™<¨Ó/€JˆxÑØ
�.‰.˜Ó
!€CÜ	% iÓ	0ñ $Ù�Ñ#˜
Ñ#ˆ÷$ð ×*Ñ*×?Ñ?Ø�1�jóð ÷$ð $ús   Á
BÂBc                 ó†   — | j                   dvry| t        j                  j                  u ry| j	                  «       }d|v ryy)N)ÚatenÚprimsFÚfftT)Ú	namespacern   Ú_fft_c2cÚdefaultÚname)rK   Úop_names     r   r   r   Ó   s@   € Ø	‡|�|Ð,Ñ,ØØ	ŒT�]‰]×"Ñ"Ñ"Øà�g‰g‹i€GØ�ÑØØr   c                 óú   ‡— d„ Š| j                   rat        ˆfd„t        j                  ||j	                  «       «      D «       «      }|s)t
        j                  ||f«      \  }}t        | |||d «      S t        |«      ‚)Nc                 ó°   — t        | t        «      r| j                  S t        | t        j                  t        j
                  t        j                  f«      ryy)NTF)r:   r   Ú_has_symbolic_sizes_stridesr-   ÚSymIntÚSymFloatÚSymBool©Úxs    r   Úis_symbolicz3wordaround_stride_incorrect_op.<locals>.is_symbolicä   s;   € Ü�aœÔ$Ø×0Ñ0Ð0Ü�aœ%Ÿ,™,¬¯©¼¿¹ÐFÔGØØr   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr(   rM   )r*   r}   r~   s     €r   r,   z1wordaround_stride_incorrect_op.<locals>.<genexpr>í   s   øè ø€ ò 
Ø ‰K˜�Nñ
ùs   ƒ)	Úallow_fallback_kernelsr2   Ú	itertoolsÚchainÚvaluesÚpytreeÚtree_flattenr   r   )rP   r5   rQ   rR   Úrequire_dynamicÚ	flat_argsÚ	args_specr~   s          @r   Úwordaround_stride_incorrect_opr‰   à   sw   ø€ òð ×'Ò'Üó 
Ü$-§O¡O°D¸&¿-¹-»/Ó$Jô
ó 
ˆñ Ü#)×#6Ñ#6¸¸f°~Ó#FÑ ˆI�yÜ& y°$¸	À9ÈdÓSÐSä
& tÓ
,Ð,r   c                 óT   — t        | «      5   ||i |¤Žcd d d «       S # 1 sw Y   y xY wr(   )r   rO   s       r   Ú
resize_as_r‹   ù   s,   € ä	% iÓ	0ñ %Ù�TÐ$˜VÑ$÷%÷ %ò %ús   Œž'c                 ó"   — t        | |g|¢­i |¤ŽS r(   )rc   rO   s       r   Ú(_sparse_coo_tensor_with_dims_and_tensorsr�   ÿ   s   € ô ˜	 4Ð9¨$Ò9°&Ñ9Ð9r   c                 óð   — t         j                  j                  | j                  v xrO | t        j
                  j                  t        j                  j                  t        j                  j                  fvS r(   )
r-   ÚTagÚdynamic_output_shapeÚtagsrn   ÚindexÚTensorÚnonzerors   Úrepeat_interleave©r5   s    r   ú<lambda>r—     sU   € ”—‘×/Ñ/°4·9±9Ð<ò TØÜ�J‰J×ÑœtŸ|™|×3Ñ3´T×5KÑ5K×5RÑ5RÐSð	Tð r   c                 ó   — t        |«      ‚r(   )r   rO   s       r   Ú	dyn_shaper™     s   € ô & dÓ
+Ð+r   c                 ó&  — | j                   �| j                   j                  st        |«      ‚|€|j                  x}€ªddlm}m}	  |	|j                  «       «      s|j                  «       dk(  rd}nm| j                   j                  «       }t        j                  dz
  }
|€|j                  «       n|j                  |«      } |	|«      st        |«      }
 |||
¬«       |€||_        |€|j                  |f«      g}n4 |j                  g |j                  d | ¢|‘|j                  |dz   d  ¢­Ž g}|d uxr" |j                  t!        j"                  d«      k(  }|s|r.|j                  |€|j                  n|j                  |   f«      }n|j                  d«      }|j%                  |«       |s|r4|j                  |€|d   j                  n|d   j                  |   f«      }n|j                  d«      }|j%                  |«       t'        |«      S )Nr   ©Ú_constrain_range_for_sizeÚhas_free_symbolsr9   ©ÚmaxrY   )Ú	shape_envÚallow_dynamic_output_shape_opsr   Úunique_memoÚ%torch.fx.experimental.symbolic_shapesrœ   r�   ÚnumelÚcreate_unbacked_symintÚsysÚmaxsizeÚsizeÚintÚ	new_emptyÚshapeÚfake_devicer-   r$   rI   rF   )rP   r5   r8   ÚdimÚsortedÚreturn_inverseÚreturn_countsÚnnzrœ   r�   Úmaxvalr¤   ÚretÚreturn_if_dim_and_cpuÚinverseÚcountss                   r   Ú_uniquer·     s×  € ð 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/ð € #§/¡/Ð1˜3Ð:÷	
ñ
   §	¡	£Ô,°·±³ÀÒ1Að ‰Cà×%Ñ%×<Ñ<Ó>ˆCä—[‘[ 1‘_ˆFà#& ;�C—I‘I”K°C·H±H¸S³MˆEÙ# EÔ*Ü˜U›�á% c¨vÕ6àˆ;Ø!ˆCŒOà
€{Ø�}‰}˜c˜VÓ$Ð%‰àˆs�}‰}ÐJ˜cŸi™i¨¨˜oÐJ¨sÐJ°S·Y±Y¸sÀQ¹w¸yÐ5IÒJÐKˆà t˜OÒV°·±Ä5Ç<Á<ÐPUÓCVÑ0VÐÙÑ.Ø—-‘-¨S¨[ §	¢	¸s¿y¹yÈ¹~Ð>OÓP‰à—-‘- Ó"ˆØ‡J�JˆwÔáÑ-Ø—‘¨s¨{˜s 1™vŸ|š|ÀÀQÁÇÁÈcÑARÐ@TÓU‰à—‘˜qÓ!ˆØ‡J�JˆvÔä�‹:Ðr   c           	      ó$   — t        | ||d |||«      S r(   )r·   )rP   r5   r8   r®   r¯   r°   s         r   Úunique2r¹   N  s   € ô �9˜d C¨¨v°~À}ÓUÐUr   c           
      ó`   — t        | |||dk\  r|n|t        |j                  d«      z  |||«      S )Nr   r9   )r·   rŸ   Úndim)rP   r5   r8   r­   r®   r¯   r°   s          r   Ú
unique_dimr¼   U  s>   € ô ØØØà�aŠx‰˜S¤3 s§x¡x°Ó#3Ñ3ØØØó	ð 	r   c                 óÒ   — |€U| j                   �| j                   j                  st        |«      ‚| j                   j                  «       }ddlm}  ||«       |j                  |«      S )Nr   ©rœ   )r    r¡   r   r¥   r£   rœ   rª   )rP   r5   ÚrepeatsÚoutput_sizerœ   s        r   Úrepeat_interleave_tensorrÁ   e  sa   € àÐà×ÑÐ'Ø×&Ñ&×EÒEä-¨dÓ3Ð3à×)Ñ)×@Ñ@ÓBˆõ 	Tá! +Ô.à×Ñ˜[Ó)Ð)r   c                 óö  — |j                   x}�|S | j                  �"| j                  j                  s| j                  st        |«      ‚t	        |j
                  «      r| j                  j                  «       }nxt        |j
                  «      r| j                  j                  «       }nHt        |j
                  «      r| j                  j                  «       }nt        d|j
                  › �«      ‚||_         |S )Nz local_scalar_dense/item NYI for )Ú	item_memor    Úallow_scalar_outputsr   r
   ÚdtypeÚcreate_unbacked_symfloatr   r¥   r	   Úcreate_unbacked_symboolÚNotImplementedError)rP   r5   r8   rb   s       r   Úlocal_scalar_denserÉ   x  sÌ   € ð �]‰]ÐˆÐ'ØˆØ×ÑÐ"Ø×Ñ×4Ò4Ø×.Ò.ô +¨4Ó0Ð0Ü�c—i‘iÔ Ø×Ñ×8Ñ8Ó:‰Ü	˜#Ÿ)™)Ô	$Ø×Ñ×6Ñ6Ó8‰Ü	˜#Ÿ)™)Ô	$Ø×Ñ×7Ñ7Ó9‰ä!Ð$DÀSÇYÁYÀKÐ"PÓQÐQØ€C„MØ€Hr   c                 ó  — | j                   �| j                   j                  st        |«      ‚|j                  x}€¡ddlm}m}  ||j                  «       «      s|j                  «       dk(  rd}nf| j                   j                  «       }t        j                  dz
  } ||j                  «       «      st        |j                  «       «      } |||¬«       ||_        |j                  ||j                  «       ft        j                  ¬«      S )Nr   r›   r9   rž   )rÅ   )r    r¡   r   Únonzero_memor£   rœ   r�   r¤   r¥   r¦   r§   r©   rª   r­   r-   Úint64)rP   r5   r8   r±   rœ   r�   r²   s          r   r”   r”   �  sÙ   € ð 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/à×ÑÐˆÐ(÷	
ñ
   §	¡	£Ô,°·±³ÀÒ1Að ‰Cà×%Ñ%×<Ñ<Ó>ˆCä—[‘[ 1‘_ˆFá# C§I¡I£KÔ0Ü˜SŸY™Y›[Ó)�á% c¨vÕ6àˆÔà�=‰=˜#˜sŸw™w›yÐ)´·±ˆ=Ó=Ð=r   c                 ó�  — | j                   �| j                   j                  st        |«      ‚| j                   j                  «       }t        j
                  dz
  }ddlm}m} ddl	m
} ddlm}	  ||j                  «       «      st        |j                  «       «      }
n†t        j                   |j"                  «      j$                  } |	|j&                  |j                   j(                  «      }t+        |j,                  |«      rt        j
                  dz
  }
n|j,                  }
|
dkD  r|
} |||¬«       |j/                  |f«      S )Nr9   r   r›   )ÚIntInfinity)Úbound_sympyé   rž   )r    r¡   r   r¥   r¦   r§   r£   rœ   r�   Útorch.utils._sympy.numbersrÎ   Útorch.utils._sympy.value_rangesrÏ   r¤   r©   ÚmathÚprodr«   ÚnodeÚexprÚvar_to_ranger:   Úupperrª   )rP   r5   ÚselfÚmaskr±   r²   rœ   r�   rÎ   rÏ   Únum_elementsÚ	prod_nodeÚ
prod_ranges                r   Úmasked_selectrÞ   ¸  s   € ð 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/à
×
Ñ
×
4Ñ
4Ó
6€Cô �[‰[˜1‰_€F÷õ 7Ý;ñ
 ˜DŸJ™J›LÔ)Ü˜4Ÿ:™:›<Ó(‰ä—I‘I˜dŸj™jÓ)×.Ñ.ˆ	Ù  §¡°×1DÑ1D×1QÑ1QÓRˆ
Ü�j×&Ñ&¨Ô4ÜŸ;™;¨™?‰Là%×+Ñ+ˆLØ�aÒØˆá˜c vÕ.à�>‰>˜3˜&Ó!Ð!r   c                 óN   — t         j                  j                  | j                  v S r(   )r-   r�   Údata_dependent_outputr‘   r–   s    r   r—   r—   ã  s   € œuŸy™y×>Ñ>À$Ç)Á)ÐK€ r   c                 ó   — t        |«      ‚r(   )r   rO   s       r   Údata_deprâ   ã  s   € ä
& tÓ
,Ð,r   c                 ó†   — |D ]<  }|€Œ|j                   t        j                  t        j                  fv sŒ3t	        | «      ‚ y r(   )rÅ   r-   ÚboolÚuint8r   )r5   rÙ   Úindicesr’   s       r   Úcheck_no_bool_index_tensorsrç   ê  s:   € Øò 4ˆØÑ §¡´·±¼U¿[¹[Ð0IÒ!IÜ-¨dÓ3Ð3ñ4r   c                 ó  — t        |||d¬«      \  }}|d   j                  }t        | «      5   ||i |¤Ž}t        |«      s|j	                  |j
                  «      }d d d «       |d   u r|S t        | ||«      S # 1 sw Y   ŒxY w©NTrU   rX   )r   r$   r   r%   rª   r«   r   )rP   r5   rQ   rR   r^   r_   ra   Úouts           r   Ú)run_and_return_new_tensor_of_input_devicerë   ð  s”   € Ü&Ø�4 ÀTô�M€A€zð ˜GÑ$×+Ñ+€JÜ	% iÓ	0ñ +Ù�DÐ#˜FÑ#ˆÜ)¨*Ô5Ø—-‘- §	¡	Ó*ˆC÷+ð
 ˆj˜Ñ!Ñ!Øˆ
Ü�i  jÓ1Ð1÷+ð +ús   ­/A:Á:Brn   ro   Úprimc                 ó&   — | j                   t        v S r(   )rq   Ú_is_builtin_namespaces)rK   s    r   Ú
is_builtinrï     s   € Ø�<‰<Ô1Ð1Ð1r   c                 ó^   — t         j                  j                  | j                  «       d«      S )NÚMeta)r-   r.   Ú._dispatch_has_computed_kernel_for_dispatch_keyrt   r–   s    r   r   r     s    € Ü�8‰8×BÑBÀ4Ç9Á9Ã;ÐPVÓWÐWr   c                 óZ   — t        | «      xr d| j                  «       v xr t        | «      S )NÚforeach)rï   rt   r   r–   s    r   r—   r—     s$   € ”˜DÓ!ÒQ i°4·9±9³;Ð&>ÒQÄ8ÈDÃ>€ r   c           	      óz  — g }t        j                  ||j                  «       «      D ]T  }t        |t        t
        f«      sŒt        |«      sŒ&t        |d   t        j                  «      sŒD|j                  |«       ŒV 	 t        | «      5   ||i |¤Ž}d d d «       s|S |sJ ‚g }t        |«      D ][  \  }	}
t        j                  ||D �cg c]  }||	   ‘Œ	 c}«      \  }}|j                  | j                   j#                  | |
|«      «       Œ] |S # 1 sw Y   Œ~xY w# t        $ r}t        cY d }~S d }~ww xY wc c}w ©Nr   )r�   r‚   rƒ   r:   rE   rF   r=   r-   r“   rI   r   rÈ   ÚNotImplementedÚ	enumerater   Ú_find_common_deviceri   rj   )rP   r5   rQ   rR   Útensor_listsr8   Úout_metaÚnot_implemented_errorÚout_fakeÚiÚmeta_tÚtlr$   r^   s                 r   Ú foreach_run_and_map_input_devicer    s+  € ð €LÜ�‰˜t V§]¡]£_Ó5ò %ˆä�sœT¤5˜MÕ*Ü�C•Ü˜3˜q™6¤5§<¡<Õ0à×Ñ Õ$ð%ðÜ)¨)Ó4ñ 	-Ù˜TÐ, VÑ,ˆH÷	-ñ
 ØˆáÐˆ<Ø€Hä˜xÓ(ò 
‰	ˆˆ6Ü×2Ñ2°4È,Ö9WÀB¸"¸Q»%Ò9WÓX‰	ˆ�Ø�‰Ø×+Ñ+×@Ñ@Ø˜6 6óõ	
ð
ð €O÷'	-ð 	-ûäò ÜÕûðüò :Xs<   Á?D Â
	DÂD Ã
D8ÄDÄD Ä	D5Ä%D0Ä*D5Ä0D5c                 ó²   — ddl m} t        |||d¬«      \  }}|d   j                  }| 5   ||i |¤Ž}|j	                  |«      cd d d «       S # 1 sw Y   y xY w)Nr   )Úmeta_index_TensorTrU   rX   )Útorch._meta_registrationsr  r   r$   Úto)	rP   r5   rQ   rR   r  r^   r_   ra   rê   s	            r   Úindex_tensorr  2  sa   € å;ä&Ø�4 ÀTô�M€A€zð ˜GÑ$×+Ñ+€Jà	ñ "Ù Ð0¨Ñ0ˆØ�v‰v�jÓ!÷"÷ "ò "ús   ªAÁAc                 óN   — ddl m} | 5   ||i |¤Žcd d d «       S # 1 sw Y   y xY w)Nr   )Úmeta_embedding_bag)r  r  )rP   r5   rQ   rR   r  s        r   Úembedding_bagr	  C  s*   € å<à	ñ 3Ù! 4Ð2¨6Ñ2÷3÷ 3ò 3ús   ‰›$c                 ó   — t        | |||«      S r(   )rë   rO   s       r   Úmulti_device_op_defaultr  L  s   € ô
 5°YÀÀdÈFÓSÐSr   c                 ó€   — t        | «      5   ||i |¤Ž}d d d «       t        |||d¬«      \  }}|d   S # 1 sw Y   Œ xY wré   )r   r   )rP   r5   rQ   rR   rê   r^   r_   s          r   Úmulti_device_op_outr  U  sV   € ô 
& iÓ	0ñ $Ù�DÐ#˜FÑ#ˆ÷$ô 'Ø�4 ÀTô�M€A€zð �gÑÐ÷$ð $ús   Œ	4´=c                 óR  ‡‡‡— t        ‰||d¬«      \  }}|d   Š|d   j                  Št        j                  ‰‰j                  k(  xs$ ‰j                  dk(  xr ‰j                  «       dk(  ˆˆˆfd„«       t        | ‰||«      }‰t        j                  j                  u r|d   S |S )NTrU   rƒ   rX   r   r9   c                  ó0   •— d‰ › d‰› d‰j                   › d�S )NzMismatching z device between self (z) and values (ú)r#   )r5   Úself_devicerƒ   s   €€€r   r—   z index_put_impl.<locals>.<lambda>m  s&   ø€ �,˜t˜fÐ$:¸;¸-À~ÐV\×VcÑVcÐUdÐdeÐf€ r   )
r   r¬   r-   Ú_checkr»   r¤   rë   rn   Ú
index_put_rs   )	rP   r5   rQ   rR   r^   r_   rê   r  rƒ   s	    `     @@r   Úindex_put_implr  b  s¨   ú€ ô 'Ø�4 ÀTô�M€A€zð ˜Ñ!€FØ˜WÑ%×1Ñ1€KÜ	‡L�LØ�v×)Ñ)Ñ)ÒW¨f¯k©k¸QÑ.>Ò.VÀ6Ç<Á<Ã>ÐUVÑCVÝfôô
 4°I¸tÀTÈ6Ó
R€CØŒt�‰×&Ñ&Ñ&Ø˜'Ñ"Ð"àˆ
r   c                 ó   — t        d«      ‚)Nz3torch.compile does not support strided NestedTensor)r   rO   s       r   Únested_tensors_unsupportedr  w  s   € ô
 'Ø=óð r   c                 ó(   — |t         vs
J d|› �«       ‚y )NzNYI: )Ú_device_not_kwarg_opsrO   s       r   Únyir  �  s   € ð  Ô,Ñ,Ð<°°d°V¨nÓ<Ñ,r   c                 ót  ‡ ‡— t        |||d¬«      \  }}|d   j                  Š‰ 5  |d   j                  }|d   j                  d   }ddlm}  ||«      sd }nÍ|dk(  r!|d   j                  s|d   j                  sd }n§|t        j                  j                  u r t        j                  j                  di |¤Ž}	nDt        j                  j                  |d   |d   d |d   |d	   |d
   |d   |d   |d   |d   ¬«
      }	t        j                  j                  |d   |d   |	«      }d d d «       ˆˆ fd„}
t        ‰ «      5   |di |¤Ž}|t        j                  j                  u r |
|«      cd d d «       S  |
|d   «       |
|d   |«       |
|d   d «      fcd d d «       S # 1 sw Y   Œ}xY w# 1 sw Y   y xY w)NTrU   rX   Úweightr   )Úhas_hinté   ÚstrideÚpaddingÚdilationÚ
transposedÚoutput_paddingÚgroupsÚ
bias_sizes)Úbiasr  r  r   r!  r"  r#  r$  c                 óN   •— | €| S |�| j                  |¬«      } t        ‰| ‰«      S )N©Úmemory_format)r  r   )ÚtÚmem_fmtr$   rP   s     €€r   Úconvertzconv.<locals>.convert½  s2   ø€ Øˆ9ØˆHØÐØ—‘ 7�Ó+ˆAÜ˜) Q¨Ó/Ð/r   r9   rÐ   rM   )r   r¬   r»   r«   r£   r  Ú	is_mkldnnÚis_xpurn   Úconvolutionrs   r-   r.   Ú_select_conv_backendÚ%_conv_determine_backend_memory_formatr   )rP   r5   rQ   rR   r^   ÚkÚbatchr  r*  Úconv_backendr+  rê   r$   s   `           @r   Úconvr4  ”  sä  ù€ ä"Ø�4 ÀTô�I€A€vð �G‰_×(Ñ(€Fà	ñ  à�8Ñ×!Ñ!ˆØ�w‘×%Ñ% aÑ(ˆõ 	Cá˜Œð ‰GØ�!ŠV˜F 7™O×5Ò5¸fÀW¹o×>TÒ>TØ‰Gà”t×'Ñ'×/Ñ/Ñ/Ü$Ÿx™x×<Ñ<ÑF¸vÑF‘ä$Ÿx™x×<Ñ<Ø˜7‘OØ˜8Ñ$ØØ! (Ñ+Ø" 9Ñ-Ø# JÑ/Ø% lÑ3Ø#)Ð*:Ñ#;Ø! (Ñ+Ø% lÑ3ð  =ó  �ô —h‘h×DÑDØ�w‘ ¨Ñ!1°<óˆG÷= õD0ô 
& iÓ	0ñ 
Ù‰n�V‰nˆà”4×#Ñ#×+Ñ+Ñ+Ù˜3 Ó(÷	
ñ 
ñ ˜˜A™ Ó(Ù˜˜A™ Ó(Ù˜˜A™ Ó%ð÷
ñ 
÷S ð  ú÷R
ð 
ús   ¦D F"Ä?-F.Å6"F.Æ"F+Æ.F7c                 ó@  — | j                   �| j                   j                  st        |«      ‚| j                   j                  «       }ddlm}  ||«       |s|j                  dd«      }|j                  dd  }|j                  |«      }|j                  |f«      }	||	fS )Nr   r¾   r9   )	r    r¡   r   r¥   r£   rœ   Ú	transposer«   rª   )
rP   r5   ÚinputsÚlengthsÚbatch_firstÚnew_batch_sizerœ   Úres_sizeÚpacked_dataÚ
batch_sizes
             r   Ú_pack_padded_sequencer>  Ñ  sž   € ð 	×ÑÐ#Ø×"Ñ"×AÒAô *¨$Ó/Ð/à×(Ñ(×?Ñ?ÓA€NåOá˜nÔ-áà×!Ñ! ! QÓ'ˆà�|‰|˜A˜BÐ€HØ×"Ñ" 8Ó,€KØ×!Ñ! >Ð"3Ó4€JØ˜Ð$Ð$r   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó   •— | t         ‰<   | S r(   )ÚFAST_OP_IMPLEMENTATIONS)rJ   r5   s    €r   rL   z-register_fast_op_impl.<locals>.impl_decoratorð  s   ø€ Ø(/Ô Ñ%Øˆr   rM   )r5   rL   s   ` r   Úregister_fast_op_implrB  ï  s   ø€ ôð Ðr   c                 ó˜  ‡
‡‡— ddl m} t        | «      }t        |«      }t        ||«      }dg|z  }t	        |dz
  dd«      D ]|  Š
|dz
  ‰
z
  }|dz
  |z
  }|dz
  |z
  }	|dk\  r| |   ndŠ|	dk\  r||	   ndŠt        j                   |‰dk(  «      xs  |‰dk(  «      xs ‰‰k(  ˆ
ˆˆfd„«        |‰dk(  «      r‰n‰|‰
<   Œ~ t        |«      S )Nr   )Úguard_size_obliviousr9   éÿÿÿÿc                  ó   •— d‰› d‰› d‰ › d�S )NzThe size of tensor a (z#) must match the size of tensor b (z) at non-singleton dimension r  rM   )rþ   ÚsizeAÚsizeBs   €€€r   r—   zinfer_size.<locals>.<lambda>  s'   ø€ Ð,¨U¨Gð 40Ø05¨wð 7*Ø*+¨¨Að/€ r   )r£   rD  r=   rŸ   Úranger-   r  rF   )ÚaÚbrD  ÚdimsAÚdimsBr»   ÚexpandedSizesÚoffsetÚdimAÚdimBrþ   rG  rH  s             @@@r   Ú
infer_sizerR  ø  sú   ú€ ÝJä�‹F€EÜ�‹F€EÜˆu�eÓ€DØ�C˜$‘J€MÜ�4˜!‘8˜R Ó$ò PˆØ˜‘˜A‘ˆØ�q‰y˜6Ñ!ˆØ�q‰y˜6Ñ!ˆØ 1š9��$’¨!ˆØ 1š9��$’¨!ˆô 	�‰Ù  ¨!¡Ó,ò Ù# E¨Q¡JÓ/òà˜‰~õ/ô		
ñ %9¸À!¹Ô$D™5È%ˆ�aÒð5Pô6 �ÓÐr   c                 ó   ‡ — ˆ fd„}|S )Nc           	      ó  •‡ ‡‡— ˆˆˆ ˆfd„}t        d«       ‰}d}d}d }|D ]M  }t        |t        j                  «      r|j                  nd}	t        |	«      dk(  rd}nd}|€|	}t        ||	«      }ŒO |€J ‚ddlm}
m	} |D ]Z  }t        |t        j                  «      sŒt        |j                  «      t        |«      k(  sŒ@ |
 ||j                  |«      «      sŒZ n	  |d«      S t        j                  d	«      }|}d }d }d}|D ]j  }t        |t        j                  «      sd}Œ ||k(  r%|j                  j                  d	k(  s|j                  }|€|j                  }ŒY||j                  k7  sŒid}Œl |rt        |d
t        j                  iŽ\  }}d}d}|D ]r  }t        |t        j                  «      sŒ||k7  r7|j!                  «       dk(  r$|j                  |k(  r||k\  r
 |d«      c S |dz  }ŒZ|j                  |k7  sŒj |d«      c S  d}d}t#        |«      rj|D ]e  }t        |t        j                  «      sŒ|xr  |j%                  t        j&                  ¬«      }|xr  |j%                  t        j(                  ¬«      }Œg |r>t        d«       t+        ‰ t        j,                  ||dt        j&                  ¬«      |¬«      S |r>t        d«       t+        ‰ t        j,                  ||dt        j(                  ¬«      |¬«      S  |d«      S )Nc                 ó`   •— t        d| › �«       ‰5   ‰‰i ‰¤Žcd d d «       S # 1 sw Y   y xY w)Nzslow r   )ÚmsgrQ   rR   ÚmodeÚslow_refs    €€€€r   Úslowz=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow  s6   ø€ Ü˜% ˜u˜Ô&Øñ 1Ù Ð0¨Ñ0÷1÷ 1ò 1ús   ’$¤-zattempt fastFrM   r   T)rD  Úsym_eqz#both tensors nontrivially broadcastrY   Útype_promotion_kindr9   Úerrorr'  zfast is_contiguousrZ   )rÅ   r$   r(  r#   zfast channels_lastzno contiguity match)r   r:   r-   r“   r«   r=   rR  r£   rD  rZ  r$   r"   rÅ   r   r   ÚDEFAULTr­   r%   Úis_contiguousÚcontiguous_formatÚchannels_lastr   Úempty)rW  rQ   rR   rY  ÚoperandsÚhas_scalarsÚhas_tensorsÚfinal_shaperK   r«   rD  rZ  rY   Úcommon_deviceÚcommon_dtypeÚoutput_dtypeÚhas_different_input_dtypesr^   Úcurrent_cpu_scalars_on_non_cpuÚmax_cpu_scalars_on_non_cpur^  Úis_channels_lastrX  s   ```                   €r   Úfast_binary_implz/make_fast_binary_impl.<locals>.fast_binary_impl  s1  û€ ÷	1ô
 	�NÔ#ð ˆð ˆØˆØˆØò 	9ˆBÜ *¨2¬u¯|©|Ô <�B—H’HÀ"ˆEÜ�5‹z˜QŠØ"‘à"�ØÐ"Ø#�ô % [°%Ó8‰Kð	9ð Ð&Ð&Ð&çVð ò 	?ˆBä˜2œuŸ|™|Õ,Ü˜Ÿ™“M¤S¨Ó%5Ó5Ù(©°·±¸+Ó)FÕGáð	?ñ Ð=Ó>Ð>ô �l‰l˜5Ó!ˆØˆØˆØˆØ%*Ð"Øò 	2ˆBÜ˜b¤%§,¡,Ô/à-1Ð*ØØ Ò#¨B¯I©I¯N©N¸eÒ,CØ "§	¡	�àÐ#Ø!Ÿx™x‘Ø §¡Ó)Ø-1Ñ*ð	2ñ &ô 1ØðÜ/N×/VÑ/Vñ‰OˆAˆ|ð *+Ð&Ø%&Ð"Øò 	%ˆBÜ˜b¤%§,¡,Ô/ØØ Ò#¨¯©«°Aª¸"¿)¹)ÀsÒ:JØ1Ð5OÒOÙ ›=Ò(Ø.°!Ñ3Ñ.Ø—‘˜mÓ+Ù˜G“}Ò$ð	%ð ˆØÐô & mÔ4Øò �Ü! "¤e§l¡lÔ3ØØ -ò !°"×2BÑ2BÜ"'×"9Ñ"9ð 3Có 3�ð $4ò $¸×8HÑ8HÜ"'×"5Ñ"5ð 9Ió 9Ñ ðñ äÐ,Ô-ÜØÜ—‘ØØ&Ø!Ü"'×"9Ñ"9ô	ð %ô	ð 	ñ ÜÐ,Ô-äØÜ—‘ØØ&Ø!Ü"'×"5Ñ"5ô	ð %ô	ð 	ñ Ð)Ó*Ð*r   rM   )rX  rm  s   ` r   Úmake_fast_binary_implrn    s   ø€ ôE+ðN Ðr   c                 ó  — t        «       5  t        | «      5  t        j                  j                  j
                  j                  |«      }d d d «       d d d «       t        | |j                  «      S # 1 sw Y   Œ(xY w# 1 sw Y   Œ,xY wr(   )	r   r   r-   Úopsrn   Údetachrs   r   r$   )rP   r}   rê   s      r   Úfast_detachrr  ª  sk   € Ü	Ó	ñ /Ô!=¸iÓ!Hñ /Ü�i‰i�n‰n×#Ñ#×+Ñ+¨AÓ.ˆ÷/÷ /ä�i  a§h¡hÓ/Ð/÷/ð /ú÷ /ð /ús"   ‹A>—4A2ÁA>Á2A;	Á7A>Á>Bc                  ó@  — dd l }  t        | j                  j                  j                  j
                  «      t        | j                  j                  «      «        t        | j                  j                  j                  j
                  «      t        | j                  j                  «      «        t        | j                  j                  j                  j
                  «      t        | j                  j                  «      «        t        | j                  j                  j                  j
                  «      t        | j                  j                  «      «        t        | j                  j                  j                  j                  «      t        «       t        S rö   )Útorch._refsrB  rp  rn   Úaddr“   rn  Ú_refsÚsubÚmulÚdivrq  rs   rr  rA  )r-   s    r   r   r   °  s  € ãà4Ô˜%Ÿ)™)Ÿ.™.×,Ñ,×3Ñ3Ó4Ü˜eŸk™kŸo™oÓ.ôð 5Ô˜%Ÿ)™)Ÿ.™.×,Ñ,×3Ñ3Ó4Ü˜eŸk™kŸo™oÓ.ôð 5Ô˜%Ÿ)™)Ÿ.™.×,Ñ,×3Ñ3Ó4Ô5JÈ5Ï;É;Ï?É?Ó5[Ô\Ø4Ô˜%Ÿ)™)Ÿ.™.×,Ñ,×3Ñ3Ó4Ü˜eŸk™kŸo™oÓ.ôð 9Ô˜%Ÿ)™)Ÿ.™.×/Ñ/×7Ñ7Ó8¼ÔEÜ"Ð"r   )TFFr(   )„Ú	functoolsr�   rÓ   r¦   Útypingr   r   r-   Útorch._custom_opÚtorch._loggingÚtorch._dispatch.pythonr   Ú
torch._opsr   Útorch._prims_commonr   r   r	   r
   r   Útorch._subclasses.fake_tensorr   r   r   r   r   r   Útorch.fx.operator_schemasr   Útorch.utils._statsr   ÚutilsÚ_pytreer„   Ú__all__rD   r   Ú_opsrp  rn   r   r%   Ú
empty_likers   rê   Ú	full_likeÚ	ones_likeÚ	rand_likeÚ
randn_likeÚrandint_likeÚ	low_dtypeÚlow_dtype_outÚ
zeros_likerª   Únew_empty_stridedÚnew_fullÚ	new_zerosÚnew_onesr\   Ú_resize_output_Ú_nested_tensor_from_tensor_listÚ
pin_memoryr  r$   Úprim_DeviceÚ	is_pinnedÚ_pin_memoryÚ_resize_outputr  Ú_list_to_tensorr[   r)   Ú	lru_cacher@   rä   rG   Ú__contains__rS   rc   rg   rl   r   r‰   r‹   r�   r™   r·   Ú_unique2r¹   r¼   r•   r“   rÁ   ÚitemÚ_local_scalar_denserÉ   r”   rÞ   râ   rç   rë   rî   rï   r   r  r’   r  Ú_embedding_bagr	  Ú_unsafe_index_putÚcopyÚcopy_Úslice_scatterr  r  Ú	index_putr  r  Ú_nested_view_from_bufferÚ_nested_view_from_buffer_copyr  r  r.  Úconvolution_backwardr4  r>  rA  rB  rR  rn  rr  r   r|   s   0r   ú<module>r«     s„  ðó Û Û Û 
ß "ã Û Û Ý 7Ý !÷õ ÷÷ õ 9Ý *ð 
�‰×	Ñ	€ò€ð Ð ØÐ ð ‡z�z‡~�~×Ñ€ò&ò ñ (Ø‡O�O×ÑØ‡O�O×ÑØ‡N�N×ÑØ‡N�N×ÑØ‡N�N×ÑØ‡N�N×ÑØ‡N�N×ÑØ‡N�N×ÑØ‡O�O×ÑØ‡O�O×ÑØ×Ñ×ÑØ×Ñ×ÑØ×Ñ×ÑØ×Ñ×#Ñ#Ø‡O�O×ÑØ‡O�O×ÑØ‡N�N×ÑØ‡N�N×ÑØ×Ñ×"Ñ"Ø×Ñ×ÑØ‡M�M×ÑØ‡M�M×ÑØ‡N�N×ÑØ‡N�N×ÑØ‡M�M×ÑØ‡M�M×Ñó5Ð ñ< $Ø×Ñ× Ñ Ø×(Ñ(×0Ñ0Ø×(Ñ(×,Ñ,Ø‡O�O×ÑØ‡G�G‡N�NØ‡G�G×ÑØ‡N�N×ÑØ×Ñ×ÑØ×Ñ×ÑØ×Ñ×ÑØ×Ñ×ÑóÐ ð #'×"6Ñ"6Ð!8Ð òð €×Ñ�TÓð ò ó ðð U¨8°Z°LÀ$Ð4FÑ+GÈÐ+SÑ%Tó ñ& Ð)×6Ñ6Ó7ñKó 8ðKñ Ð(Ó)ÙÐ.Ð-Ð.Ó/ñ0ó 0ó *ð0ñ8 �$—.‘.×(Ñ(Ó)ñ	ó *ð	ñ �$—'‘'×%Ñ%Ó&Ù�$—'‘'—.‘.Ó!ñó "ó 'ðò 	ñ Ð%Ó&ñ-ó 'ð-ñ0 �$—/‘/×)Ñ)Ó*ñ%ó +ð%ñ
 �$×?Ñ?×GÑGÓHñ:ó Ið:ñ ñTóñ
,óð
,ð
 QVó<ñ~ �$—-‘-×'Ñ'Ó(àKPòVó )ðVñ �$—/‘/×)Ñ)Ó*àPUòó +ðñ �$×(Ñ(×/Ñ/Ó0ò*ó 1ð*ñ$ �%—)‘)—.‘.×%Ñ%×-Ñ-Ó.Ù�%—)‘)—.‘.×4Ñ4×<Ñ<Ó=ñó >ó /ðñ* �%—)‘)—.‘.×(Ñ(×0Ñ0Ó1ñ%>ó 2ð%>ñP �%—)‘)—.‘.×.Ñ.×6Ñ6Ó7ñ&"ó 8ð&"ñT ÑKÓLñ-ó Mð-ò4ò2ñ  % V¨W°fÓ=Ð ò2òXñ ÙQóñóðñH �$—*‘*×#Ñ#Ó$ñ"ó %ð"ñ  �$×%Ñ%×-Ñ-Ó.ñ3ó /ð3ñ �$×(Ñ(×0Ñ0Ó1Ù�$—)‘)×#Ñ#Ó$Ù�$—*‘*×$Ñ$Ó%Ù�$×$Ñ$×,Ñ,Ó-ñTó .ó &ó %ó 2ðTñ
 �$—)‘)—-‘-Ó Ù�$×$Ñ$×(Ñ(Ó)ñó *ó !ðñ �$—.‘.×(Ñ(Ó)Ù�$—/‘/×)Ñ)Ó*ñó +ó *ðñ& �$×6Ñ6×>Ñ>Ó?Ù�$×6Ñ6×:Ñ:Ó;Ù�$×/Ñ/×7Ñ7Ó8Ù�$×4Ñ4×<Ñ<Ó=ñó >ó 9ó <ó @ðñ ð 'öàØð �N‰N×"Ñ"Ø�G‰G�N‰NØ�G‰G×ÑØ×0Ñ0×8Ñ8Ø×0Ñ0×4Ñ4ð
ñ
ò 	
òóñ=óð=ñ �4×#Ñ#×+Ñ+¨T×-FÑ-F×-NÑ-NÐOÓPñ9ó Qð9ñx �%—)‘)—.‘.×6Ñ6×>Ñ>Ó?ñ%ó @ð%ð0 Ð ð
 
ó ò" òJHòZ0ð €×Ñ�TÓñ#ó ñ#ùò_	s   à/A6e
