+
    –°³j6#  ã                   óZ   € ^ RI t ^ RIt^RIHtHt ^RIHt R tR
R R lltR R lt	R	 t
R# )é    N)Ú	PointwiseÚ	TensorBox)Úopsc                 ó‚   € \         P                  ! V! V .4      V^,           4      pV! V ^,           .4      pWA,           pWe3# )é   )r   Úindirect_indexing)Ú	batch_idxÚseq_idxÚoffsets_loaderÚ
jagged_lenÚ	begin_idxÚend_idxÚ
jagged_idxs   &&&&   Úa/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/jagged_lowerings.pyÚdense_idx_to_jagged_idxr      sH   € ô ×%Ò%Ù˜	�{Ó#Ø�Q�ó€Iñ ˜i¨!�m˜_Ó-€GØÕ$€JØÐÐó    c                ór   € V ^8„  d   QhR\         R\        \        P                  ,          R\        R\         /# )é   Úoffsetsr   ÚrealizeÚreturn)r   ÚintÚsympyÚExprÚbool)Úformats   "r   Ú__annotate__r      s9   € ÷ ?ñ ?Üð?ä”e—j‘jÕ ð?ô ð?ô ñ	?r   c                ó(  a a€ \        S R4      '       d   S P                  # S P                  4        S P                  4       pS P	                  4       oVV 3R lp\
        P                  ! VSVV.R7      pV'       d   VP                  4        VS n        V# )aœ  
Returns "inverse_offsets" - the inverse of the offsets array.
offsets maps batch index (dense) to jagged index (i.e. offset into jagged tensor).
inverse_offsets maps jagged index to batch index.

e.g. for offsets [0, 3, 4, 9, 10] this will return
inverse_offsets = [0, 0, 0, 1, 2, 2, 2, 2, 2, 3]

For the given offsets, the computed inverse_offsets are cached
on the first call and reused in the further calls.
Úinverse_offsetsc                 ób  <€ V ^ ,          p\         P                  ! \         P                  ! VS4      SP                  4       SP	                  4       R,          SP	                  4       ^ ,          SP                  4       ^ ,          ,          SP                  4       R,          3^ SRR7      pV^,
          # )r   T)ÚvaluesÚ
boundariesÚboundary_indicesÚindexing_dtypeÚrightéÿÿÿÿ)r   Ú	bucketizeÚ
index_exprÚget_nameÚget_sizeÚ
get_stride)ÚindexÚidxÚbucketÚdtyper   s   &  €€r   Úinner_fnÚ%get_inverse_offsets.<locals>.inner_fn7   s–   ø€ Ø�A�hˆÜ—’Ü—>’> # uÓ-à× Ñ Ó"Ø× Ñ Ó" 2Õ&Ø× Ñ Ó" 1Õ%¨×(:Ñ(:Ó(<¸QÕ(?Õ?Ø×"Ñ"Ó$ RÕ(ð	ð Ø Øô
ˆð ˜�zÐr   ©Údevicer/   r0   Úranges)Úhasattrr   r   Úget_device_or_errorÚ	get_dtyper   Úcreate)r   r   r   r3   r0   r   r/   s   f&&   @r   Úget_inverse_offsetsr9      s�   ù€ ô" ˆwÐ)×*Ò*ð ×&Ñ&Ð&ð ‡O�OÔØ"×6Ñ6Ó8€FØ ×*Ñ*Ó,€Eöô$  ×&Ò&ØØØØˆ|ô	€O÷ à×ÑÔ!ð .€GÔàÐr   c          
      óú   € V ^8„  d   QhR\         \        P                  ,          R\         \        P                  ,          R\        P                  R\
        \        P                  \        P                  3,          /# )r   Ú
batch_sizeÚmax_seq_lenÚoffsets_dtyper   )r   r   r   Útorchr/   Útuple)r   s   "r   r   r   Z   s\   € ÷ ñ ô ”e—j‘jÕ ð	ô
 ”u—z‘zÕ!ðô —;‘;ðô Œ5�:‰:”u—z‘zÐ!Õ"ñr   c                 óÎ   € \         P                  ! V! V .4      V^,           4      pV! V.4      p\         P                  ! W4      V,
          p\         P                  ! W„RR7      p	Wi3# )r   F)Úcheck)r   r   r(   )
r   Úinverse_offsets_loaderr   r;   r<   r=   r	   Úbatch_startÚseqr
   s
   &&&&&&    r   Újagged_idx_to_dense_idxrE   Z   sa   € ô ×%Ò%Ù 
˜|Ó,Ø�Q�ó€Iñ ! ) Ó-€KÜ
�.Š.˜Ó
3°kÕ
A€Cä×#Ò# C¸EÔB€GØÐÐr   c                  ó.  aaa€ ^RI HoHoHp  V ! \        P
                  P                  P                  P                  4      R	R VV3R lll4       pR
R VV3R llloV ! \        P
                  P                  P                  4      R
R V3R lll4       pR# )r   )Úfallback_handlerÚis_integer_typeÚregister_loweringc          
      ó€   € V ^8„  d   QhR\         R\        \         ,          R\        \        ,          R\        R\         /# )r   Újagged_valuesÚjagged_offsetsÚmax_lengthsÚpadding_valuer   )r   Úlistr   Úfloat)r   s   "r   r   Ú)register_jagged_ops.<locals>.__annotate__s   sI   € ÷ D
ñ D
Ü ðD
äœY�ðD
ô œ#•YðD
ô ð	D
ô
 
ñD
r   c                 ób  <aaaaa€ V P                  4       pV P                  4       pV P                  4       p\        V4      ^8w  g�   VP                  R8w  g   WA^ ,          P                  4       8w  gd   \        V4      ^8w  gT   \        V^ ,          P                  4       4      ^8w  g/   \        V4      \        V4      8w  g   S! V^ ,          4      '       g@   S! \        P                  P                  P                  P                  RR7      ! V VVS4      # V^ ,          pVP                  4       ^ ,          pVP                  4       oV^,
          p	V^ ,          p
V^,          pV^ ,          oWšV.pV P                  4       oVP                  4       oVVVVV3R lp\        P                  ! VVVVR7      # )r   ÚcudaF©Úadd_to_fallback_setc                 óÆ   <aa€ V w  ro\        VVSSR 7      w  op\        P                  ! \        P                  ! \        P                  ! SS4      V4      VVV
3R lS	4      # ))r	   r
   r   r   c                  ó   <€ S! SS .4      # ©N© )Úemb_idxr   Úvalues_loaders   €€€r   Ú<lambda>Ú`register_jagged_ops.<locals>._jagged_to_padded_dense_forward.<locals>.inner_fn.<locals>.<lambda>®   s   ø€ ™ z°7Ð&;Ô<r   )r   r   ÚmaskedÚltr(   )r,   r	   r
   r   rZ   r   r   r=   r   rN   r[   s   &   @@€€€€€r   r0   ÚNregister_jagged_ops.<locals>._jagged_to_padded_dense_forward.<locals>.inner_fn    s`   ú€ à*/Ñ'ˆI Ü"9Ø#ØØ-Ø%ô	#ÑˆJ˜ô —:’:Ü—’Ü—N’N :¨}Ó=Øóö =Øóð r   r2   )r6   r7   r*   ÚlenÚtypeÚ
get_devicer>   r   ÚatenÚ_jagged_to_padded_dense_forwardÚdefaultÚmake_loaderr   r8   )rK   rL   rM   rN   r3   r/   Újagged_values_sizer   Úoffsets_lenr;   r<   Úembedding_lenÚoutput_sizer0   r   r=   r   r[   rG   rH   s   &&&f          @@@@€€r   re   Ú<register_jagged_ops.<locals>._jagged_to_padded_dense_forwardr   sˆ  ý€ ð ×2Ñ2Ó4ˆØ×'Ñ'Ó)ˆà*×3Ñ3Ó5Ðô �Ó 1Ô$Ø�{‰{˜fÔ$Ø¨Õ*×5Ñ5Ó7Ô7ÜÐ%Ó&¨!Ô+Ü�> !Õ$×-Ñ-Ó/Ó0°AÔ5Ü�;Ó¤3 ~Ó#6Ô6Ù" >°!Õ#4×5Ò5á#Ü—	‘	—‘×>Ñ>×FÑFØ$)õð ØØØóð ð ,¨AÕ.ˆØ×&Ñ&Ó(¨Õ+ˆØ×)Ñ)Ó+ˆØ  1•_ˆ
Ø! !•nˆØ*¨1Õ-ˆØ'¨Õ*ˆ
à!°Ð>ˆà%×1Ñ1Ó3ˆØ ×,Ñ,Ó.ˆ÷	ñ 	ô$ ×ÒØØØØô	
ð 	
r   Nc                ól   € V ^8„  d   QhR\         R\        \         ,          R\        R,          R\         /# ©r   ÚdenserL   r   Nr   ©r   rO   r   )r   s   "r   r   rQ   ¹   s@   € ÷ F
ñ F
äðF
ô œY�ðF
ô ˜$•Jð	F
ô
 
ñF
r   c                 óÚ  <aaaaaa€ VP                  4       pVP                  4       pVP                  4       p\        V4      ^8w  g{   VP                  R8w  gj   WB^ ,          P                  4       8w  gO   \        V^ ,          P                  4       4      ^8w  g*   \        V4      ^8w  g   Ve   S! V^ ,          4      '       g   S! V RR7      ! VVV4      # V^ ,          pVP                  4       oV^ ,          oV^,          oVR,          pW8.p	VP                  4       oVP                  4       o\        VVR7      p
V
P                  4       oVVVVVV3R lp\        P                  ! VVVV	R7      # )r   rS   FrT   )r   r   c           	      óø   <aaa€ V w  po\        VS
SSSS	R 7      w  oo\        P                  ! \        P                  ! \        P                  ! SS	4      \        P                  ! SS	4      4      VVVV3R lR4      # ))r   r   rB   r;   r<   r=   c                  ó   <€ S! S SS.4      # rX   rY   )r	   Údense_loaderrZ   r
   s   €€€€r   r\   Ú^register_jagged_ops.<locals>._dense_to_jagged_forward_impl.<locals>.inner_fn.<locals>.<lambda>ö   s   ø€ ™ i°¸'Ð%BÔCr   ç        )rE   r   r^   r_   r(   )r,   r   r	   rZ   r
   r;   rt   rB   r<   r=   r   s   & @@@€€€€€€r   r0   ÚLregister_jagged_ops.<locals>._dense_to_jagged_forward_impl.<locals>.inner_fnæ   sr   û€ à"'ÑˆJ˜Ü!8Ø%Ø-Ø'=Ø%Ø'Ø+ô"ÑˆI�wô —:’:Ü—’Ü—N’N 7¨MÓ:Ü—N’N ;°Ó>ó÷ DØóð r   r2   r&   )
r6   r7   r*   ra   rb   rc   rg   r9   r   r8   )Úfallback_opro   rL   r   r3   r/   Ú
dense_sizer   rj   rk   r   r0   r;   rt   rB   r<   r=   r   rG   rH   s   &&&&        @@@@@@€€r   Ú_dense_to_jagged_forward_implÚ:register_jagged_ops.<locals>._dense_to_jagged_forward_impl¹   sY  þ€ ð ×*Ñ*Ó,ˆØ—‘Ó!ˆà—^‘^Ó%ˆ
ô �Ó 1Ô$Ø�{‰{˜fÔ$Ø¨Õ*×5Ñ5Ó7Ô7Ü�> !Õ$×-Ñ-Ó/Ó0°AÔ5Ü�:‹ !Ô#ØÒ!Ù" >°!Õ#4×5Ò5á# KÀUÕKØØØóð ð ,¨AÕ.ˆØ×)Ñ)Ó+ˆØ •]ˆ
Ø  •mˆØ" 2�ˆà!Ð1ˆà×(Ñ(Ó*ˆØ ×,Ñ,Ó.ˆä-ØØ!ô
ˆð "1×!<Ñ!<Ó!>Ð÷	ò 	ô( ×ÒØØØØô	
ð 	
r   c                ól   € V ^8„  d   QhR\         R\        \         ,          R\        R,          R\         /# rn   rp   )r   s   "r   r   rQ     s8   € ÷ 

ñ 

Üð

äœY�ð

ô ˜$•Jð

ô 
ñ	

r   c                 ót   <€ S! \         P                  P                  P                  P                  V VVR 7      # ))rx   ro   rL   r   )r>   r   rd   Ú_padded_dense_to_jagged_forwardrf   )ro   rL   r   rz   s   &&&€r   Ú_dense_to_jagged_forwardÚ5register_jagged_ops.<locals>._dense_to_jagged_forward  s2   ø€ ñ -ÜŸ	™	Ÿ™×FÑF×NÑNØØ)Ø!ô	
ð 	
r   )rv   rX   )
ÚloweringrG   rH   rI   r>   r   rd   re   rf   r~   )rI   re   r   rz   rG   rH   s      @@@r   Úregister_jagged_opsr‚   m   sz   ú€ çNÑNñ ”u—y‘y—~‘~×EÑE×MÑMÓN÷D
ò D
ó OðD
÷LF
ó F
ñR ”u—y‘y—~‘~×EÑEÓF÷

ñ 

ó Gò

r   )T)r   r>   Úirr   r   Úvirtualizedr   r   r9   rE   r‚   rY   r   r   Ú<module>r…      s)   ðó ã ç $Ý ò	÷?õDô&`
r   