+
    "Ý³jÓ8  ã                   ót  € ^ RI t ^ RIHt ^ RIt^ RIHt ]P
                  P                  RR4      t]P                  R4       ]P                  R4       ]P                  R4       ]P                  R	4       ]P                  R
]P                  P                  P                  .R7       ]P                  R4       ]P                  R4       ]P                  R4       ]P                  R4       ]P                  R4       ]P                  R4       R tR t] P                  R 4       tRJR R llt]! R4      RJR R ll4       tRKR R llt]! R4      RKR R ll4       tR R  lt]! R!4      R" R# l4       tR$ R% lt]! R&4      R' R( l4       tR) R* lt]! R+4      R, R- l4       t] P                  ! 4       R. 4       tR/ t]! R04      R1 R2 l4       tR3 R4 lt]! R54      R6 R7 l4       tR8 R9 lt]! R:4      R; R< l4       t]! R=4      R> R? l4       tR@ RA lt]! RB4      RC RD l4       tRE RF lt]! RG4      RH RI l4       tR# )Lé    N)ÚOptional©ÚTensorÚtorchaoÚFRAGMENTz¼rowwise_scaled_linear_sparse_cutlass_f8f8(Tensor input, Tensor input_scale, Tensor weight, Tensor weight_meta, Tensor weight_scale, Tensor? bias=None, ScalarType? out_dtype=None) -> TensorzLto_sparse_semi_structured_cutlass_sm9x_f8(Tensor weight) -> (Tensor, Tensor)z\swizzle_mm(Tensor mat1, Tensor mat2, bool mat1_is_swizzled, bool mat2_is_swizzled) -> TensorzÍswizzle_scaled_mm(Tensor mat1, Tensor mat2, bool mat1_is_swizzled, bool mat2_is_swizzled, Tensor scale_a, Tensor scale_b, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None) -> TensorzImx_fp8_bf16(Tensor a, Tensor b, Tensor a_scale, Tensor b_scale) -> Tensor)Útagsa6  qscaled_dot_product(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float dropout_p=0.0, bool is_causal=False, float? scale=None, float q_scale=1.0, int q_zp=0, float k_scale=1.0, int k_zp=0, float v_scale=1.0, int v_zp=0, float a_scale=1.0, int a_zp=0, float o_scale=1.0, int o_zp=0) -> Tensorzida8w4_linear_prepack_cpu(Tensor weight, Tensor scales, Tensor qzeros) -> (Tensor, Tensor, Tensor, Tensor)zÉda8w4_linear_cpu(Tensor input, Tensor input_scales, Tensor input_qzeros, Tensor weight, Tensor weight_scales, Tensor weight_qzeros, Tensor compensation, Tensor? bias, ScalarType output_dtype) -> Tensorz°_scaled_embedding_bag(Tensor qweight, Tensor indices, Tensor offsets, Tensor weight_scale, float o_scale, int mode, bool include_last_offset, ScalarType output_dtype) -> TensorzKfloat8_linear_prepack_cpu(Tensor weight, Tensor scales) -> (Tensor, Tensor)zŠfloat8_linear_cpu(Tensor input, Tensor input_scales, Tensor weight, Tensor weight_scales, Tensor? bias, ScalarType output_dtype) -> Tensorc                 ó   a € V 3R  lpV# )c                 óP   <€ \         P                  P                  S 4      ! V 4      # ©N)ÚtorchÚlibraryÚregister_fake©ÚfuncÚnames   &€ÚL/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchao/ops.pyÚ	decoratorÚ%register_custom_op.<locals>.decorator4   s   ø€ Ü�}‰}×*Ñ*¨d¨VÔ5°dÓ;Ð;ó    © ©r   r   s   f r   Úregister_custom_opr   3   s   ø€ õ<ð Ðr   c                 ó   a € V 3R  lpV# )c                 óT   <€ \         P                  P                  S RR 7      ! V 4      # ))Úmutates_argsr   )r   r   Ú	custom_opr   s   &€r   r   Ú*register_custom_op_impl.<locals>.decorator;   s$   ø€ Ü�}‰}×&Ñ&¨$¨¸rÐ&ÔBÀ4ÓHÐHr   r   r   s   f r   Úregister_custom_op_implr   :   s   ø€ õIð Ðr   c                  óÄ   € \         P                  P                  \         P                  P                  4       4      p V P                  ^
,          V P
                  ,           pV# )é
   )r   ÚcudaÚget_device_propertiesÚcurrent_deviceÚmajorÚminor)Údevice_propsÚcompute_capabilitys     r   Úcached_compute_capabilityr(   A   sE   € ä—:‘:×3Ñ3´E·J±J×4MÑ4MÓ4OÓP€LØ%×+Ñ+¨bÕ0°<×3EÑ3EÕEÐØÐr   c          $      ó  € V ^8„  d   QhR\         R\         R\         R\        \         ,          R\        R\        R\        \        ,          R\        R	\        R
\        R\        R\        R\        R\        R\        R\        R\        R\         /# ©é   ÚqueryÚkeyÚvalueÚ	attn_maskÚ	dropout_pÚ	is_causalÚscaleÚq_scaleÚq_zpÚk_scaleÚk_zpÚv_scaleÚv_zpÚa_scaleÚa_zpÚo_scaleÚo_zpÚreturn©r   r   ÚfloatÚboolÚint)Úformats   "r   Ú__annotate__rC   H   sÅ   € ÷ <ñ <Üð<ä	ð<ô ð<ô œÕð	<ô
 ð<ô ð<ô ”E�?ð<ô ð<ô ð<ô ð<ô ð<ô ð<ô ð<ô ð<ô ð<ô  ð!<ô" ð#<ô$ ñ%<r   c                óˆ   € \         P                  P                  P                  P	                  V VVVVVVVVV	V
VVVVVV4      # )a�  
Quantized SDPA with quantized inputs and outputs.
Arguments
    query: input query tensor,
    key: input key tensor,
    value: input value tensor,
    attn_mask: attention mask tensor,
    dropout_p: dropout probability,
    is_causal: causal flag,
    scale: scaling factor applied prior to softmax,
    q_scale: scale for query from linear quantization,
    q_zp: zero point for query from linear quantization,
    k_scale: scale for key from linear quantization,
    k_zp: zero point of key from linear quantization,
    v_scale: zero point for value from linear quantization,
    v_zp: zero point of value from linear quantization,
    a_scale: scale for attention from softmax quantization,
    a_zp: zero point for attention from softmax quantization,
    o_scale: scale for output from linear quantization,
    o_zp: zero point for output from linear quantization,
Returns
    output of quantized SDPA
)r   Úopsr   Úqscaled_dot_productÚdefault©r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   s   &&&&&&&&&&&&&&&&&r   rF   rF   H   s[   € ôT �9‰9×Ñ×0Ñ0×8Ñ8ØØØØØØØØØØØØØØØØØó#ð r   ztorchao::qscaled_dot_productc          $      ó  € V ^8„  d   QhR\         R\         R\         R\        \         ,          R\        R\        R\        \        ,          R\        R	\        R
\        R\        R\        R\        R\        R\        R\        R\        R\         /# r*   r>   )rB   s   "r   rC   rC   ˆ   sÅ   € ÷ >ñ >Üð>ä	ð>ô ð>ô œÕð	>ô
 ð>ô ð>ô ”E�?ð>ô ð>ô ð>ô ð>ô ð>ô ð>ô ð>ô ð>ô ð>ô  ð!>ô" ð#>ô$ ñ%>r   c                 ób   € V P                  ^^4      P                  4       P                  ^^4      # )é   )Ú	transposeÚ
contiguousrH   s   &&&&&&&&&&&&&&&&&r   Ú_rN   ‡   s+   € ð( �?‰?˜1˜aÓ ×+Ñ+Ó-×7Ñ7¸¸1Ó=Ð=r   c                ó¸   € V ^8„  d   QhR\         R\         R\         R\         R\         R\        \         ,          R\        \        P                  ,          R\         /# ©	r+   ÚinputÚinput_scaleÚweightÚweight_metaÚweight_scaleÚbiasÚ	out_dtyper=   ©r   r   r   Údtype)rB   s   "r   rC   rC   ž   sf   € ÷ ñ Üðäðô ðô ð	ô
 ðô ”6Õ
ðô œŸ™Õ$ðô ñr   c           	     ón   € \         P                  P                  P                  P	                  WW#WEV4      # )aþ  
CUTLASS-based row-wise scaled F8F8 linear operator, for sparsified weight case.
Args:
    input: quantized input tensor, in row-major layout.
    input_scale: scale factors for input tensor, has to be tensor of the same shape as the input tensor, minus the last dimension.
    weight: sparsified quantized weight matrix, in row-major layout.
    weight_meta: sparsify metadata for weight tensor.
    weight_scale: scale factors for weight tensor, one value per row of weight matrix (thus also tensor of the same shape as the weight tensor, minus the last dimension).
    bias: an optional vector of size equal to number of rows of weight tensor, or None.
    out_dtype: optional data type for output tensor.
Returns:
    output: result tensor, in row-major layout.
)r   rE   r   Ú)rowwise_scaled_linear_sparse_cutlass_f8f8rG   )rQ   rR   rS   rT   rU   rV   rW   s   &&&&&&&r   r[   r[   ž   s0   € ô. �9‰9×Ñ×FÑF×NÑNØ˜F°ÀYóð r   z2torchao::rowwise_scaled_linear_sparse_cutlass_f8f8c                ó¸   € V ^8„  d   QhR\         R\         R\         R\         R\         R\        \         ,          R\        \        P                  ,          R\         /# rP   rX   )rB   s   "r   rC   rC   »   sp   € ÷ Yñ YÜðYäðYô ðYô ð	Yô
 ðYô ”6Õ
ðYô œŸ™Õ$ðYô ñYr   c                 ó´   € Ve   TMVP                   pV P                  p\        P                  ! . V P                  R R OVP                  ^ ,          N5WxR7      # )N©rY   Údeviceéÿÿÿÿ)rY   r_   r   ÚemptyÚshape)	rQ   rR   rS   rT   rU   rV   rW   rY   r_   s	   &&&&&&&  r   rN   rN   º   sN   € ð #Ò.‰I°K×4EÑ4E€EØ�\‰\€FÜ�;Š;Ð;˜Ÿ™ S bÐ)Ð;¨6¯<©<¸­?Ñ;À5ÔXÐXr   c                ó<   € V ^8„  d   QhR\         R\         \         3/# ©r+   rS   r=   r   )rB   s   "r   rC   rC   Ì   s%   € ÷ Wñ WÜðWäŒfÐñWr   c                óh   € \         P                  P                  P                  P	                  V 4      # )a–  
CUTLASS-based conversion from sparsified input tensor to corresponding compressed tensor, along with corresponding metadata tensor.
Args:
    weight: input tensor, in row-major layout.
Returns:
    weight_compressed: compressed weight tensor, with sparsity eliminated, in row-major layout.
    weight_meta: metadata tensor, describing the sparsity structure of the input tensor, also in row-major layout.
)r   rE   r   Ú)to_sparse_semi_structured_cutlass_sm9x_f8rG   ©rS   s   &r   rf   rf   Ì   s%   € ô �9‰9×Ñ×FÑF×NÑNÈvÓVÐVr   z2torchao::to_sparse_semi_structured_cutlass_sm9x_f8c                ó<   € V ^8„  d   QhR\         R\         \         3/# rd   r   )rB   s   "r   rC   rC   Ü   s!   € ÷ 	ñ 	Üð	äŒfÐñ	r   c                 óÒ   € V P                  V ^ ,          V ^,          ^,          4      V P                  V ^ ,          \        V ^,          ^,          ^4      \        P                  R7      3# )r   ©rY   )Ú	new_emptyÚmaxr   Úcharrg   s   &r   rN   rN   Û   sV   € ð 	×Ñ˜ � F¨1¥I°¥NÓ3Ø×Ñ˜ �¤C¨¨q­	°Q­¸Ó$;Ä5Ç:Á:ÐÓNðð r   c          
      óT   € V ^8„  d   QhR\         R\         R\        R\        R\         /# ©r+   Úmat1Úmat2Úmat1_is_swizzledÚmat2_is_swizzledr=   ©r   r@   )rB   s   "r   rC   rC   è   s4   € ÷ ñ Ü
ðÜðÜ26ðÜJNðäñr   c                ój   € \         P                  P                  P                  P	                  WW#4      # )zG
Similar to torch.mm but Tensor inputs can be SwizzleTensor instances.
)r   rE   r   Ú
swizzle_mmrG   ©rp   rq   rr   rs   s   &&&&r   rv   rv   è   s-   € ô �9‰9×Ñ×'Ñ'×/Ñ/ØÐ$óð r   ztorchao::swizzle_mmc          
      óT   € V ^8„  d   QhR\         R\         R\        R\        R\         /# ro   rt   )rB   s   "r   rC   rC   ô   s4   € ÷ 8ñ 8Ü
ð8Üð8Ü26ð8ÜJNð8äñ8r   c                 ój   € V P                  V P                  ^ ,          VP                  ^,          4      # ©r   ©rk   rb   rw   s   &&&&r   rN   rN   ó   s%   € ð �>‰>˜$Ÿ*™* Q�-¨¯©°A­Ó7Ð7r   c                óæ   € V ^8„  d   QhR\         R\         R\        R\        R\         R\         R\        \         ,          R\        \         ,          R	\        \        P                  ,          R
\         /
# ©r+   rp   rq   rr   rs   Úscale_aÚscale_brV   Úscale_resultrW   r=   ©r   r@   r   r   rY   )rB   s   "r   rC   rC   ú   s   € ÷ ñ Ü
ðä
ðô ðô ð	ô
 ðô ðô ”6Õ
ðô œ6Õ"ðô œŸ™Õ$ðô ñr   c	                óx   € \         P                  P                  P                  P	                  V VVVVVVVV4	      # )zH
Similar to torch.mm but Tensor inputs can be SwizzleTensor instances.

)r   rE   r   Úswizzle_scaled_mmrG   ©	rp   rq   rr   rs   r~   r   rV   r€   rW   s	   &&&&&&&&&r   rƒ   rƒ   ú   sB   € ô �9‰9×Ñ×.Ñ.×6Ñ6ØØØØØØØØØó
ð 
r   ztorchao::swizzle_scaled_mmc                óæ   € V ^8„  d   QhR\         R\         R\        R\        R\         R\         R\        \         ,          R\        \         ,          R	\        \        P                  ,          R
\         /
# r}   r�   )rB   s   "r   rC   rC     s   € ÷ 8ñ 8Ü
ð8ä
ð8ô ð8ô ð	8ô
 ð8ô ð8ô ”6Õ
ð8ô œ6Õ"ð8ô œŸ™Õ$ð8ô ñ8r   c	                 ój   € V P                  V P                  ^ ,          VP                  ^,          4      # rz   r{   r„   s	   &&&&&&&&&r   rN   rN     s%   € ð �>‰>˜$Ÿ*™* Q�-¨¯©°A­Ó7Ð7r   c                 ó�   € \        \        R4      '       d!   \        P                  \        P                  3# \        P                  3# )zGTODO: when e8m0 is hardened and major release lets remove uint8 supportÚfloat8_e8m0fnu)Úhasattrr   Úuint8rˆ   r   r   r   Ú_get_dtypesr‹   %  s3   € ô ŒuÐ&×'Ò'Ü—‘œU×1Ñ1Ð2Ð2Ü�K‰Kˆ>Ðr   c                 ó¾   a a€ \        4       p\        P                  ! S P                  V9   V 3R  l4       \        P                  ! SP                  V9   V3R l4       R# )c                  ó"   <€ R S P                    2# )z4A_scale tensor must be uint8 or float8_e8m0fnu, got rj   )ÚA_scales   €r   Ú<lambda>Ú%_check_scale_dtypes.<locals>.<lambda>2  ó   ø€ ÐFÀwÇ}Á}ÀoÑVr   c                  ó"   <€ R S P                    2# )z4B_scale tensor must be uint8 or float8_e8m0fnu, got rj   )ÚB_scales   €r   r�   r�   6  r‘   r   N)r‹   r   Ú_checkrY   )rŽ   r“   Úallowed_dtypess   ff r   Ú_check_scale_dtypesr–   -  sB   ù€ Ü “]€Nä	‡L‚LØ�‰˜Ñ'ÜVôô 
‡L‚LØ�‰˜Ñ'ÜVör   ztorchao::mx_fp8_bf16c                óH   € V ^8„  d   QhR\         R\         R\         R\         /# )r+   ÚAÚBrŽ   r“   r   )rB   s   "r   rC   rC   ;  s.   € ÷ Vñ Vœð V¤6ð V´Fð VÄVñ Vr   c                ó¤   € \         P                  ! V P                  ^ 4      VP                  ^4      3\         P                  V P                  R7      # )zMeta impl for mx_fp8_bf16r^   )r   ra   ÚsizeÚbfloat16r_   )r˜   r™   rŽ   r“   s   &&&&r   Úmeta_mx_fp8_bf16r�   :  s4   € ô �;Š;˜Ÿ™˜q›	 1§6¡6¨!£9Ð-´U·^±^ÈAÏHÉHÔUÐUr   c                óH   € V ^8„  d   QhR\         R\         R\         R\         /# ©r+   rS   ÚscalesÚqzerosr=   r   )rB   s   "r   rC   rC   @  s6   € ÷ Vñ VÜðVäðVô ðVô ñ	Vr   c                ój   € \         P                  P                  P                  P	                  WV4      # )zÚ
Prepack weights for DA8W4 linear operator on CPU.
Args:
    weight: weight tensor.
    scales: scales for weight tensor.
    qzeros: zero points for weight tensor.
Returns:
    packed weight, scales, and zero points.
)r   rE   r   Úda8w4_linear_prepack_cpurG   ©rS   r    r¡   s   &&&r   r£   r£   @  s'   € ô �9‰9×Ñ×5Ñ5×=Ñ=¸fÈfÓUÐUr   z!torchao::da8w4_linear_prepack_cpuc                óH   € V ^8„  d   QhR\         R\         R\         R\         /# rŸ   r   )rB   s   "r   rC   rC   R  s(   € ÷ 2ñ 2Œfð 2œfð 2¬fð 2¼ñ 2r   c                 ó2   € WV\         P                  ! 4       3# r   )r   r   r¤   s   &&&r   rN   rN   Q  s   € à˜6¤5§<¢<£>Ð1Ð1r   c                ó®   € V ^8„  d   QhR\         R\         R\         R\         R\         R\         R\         R\        \         ,          R	\        P                  /	# )
r+   rQ   Úinput_scalesÚinput_qzerosrS   Úweight_scalesÚweight_qzerosÚcompensationrV   rW   rX   )rB   s   "r   rC   rC   V  sk   € ÷ $ñ $Üð$äð$ô ð$ô ð	$ô
 ð$ô ð$ô ð$ô ”6Õ
ð$ô �{‰{ñ$r   c	                óx   € \         P                  P                  P                  P	                  V VVVVVVVV4	      # )a¯  
DA8W4 linear operator on CPU.
Args:
    input: input tensor.
    input_scales: scales for input tensor.
    input_qzeros: zero points for input tensor.
    weight: weight tensor.
    weight_scales: scales for weight tensor.
    weight_qzeros: zero points for weight tensor.
    compensation: compensation tensor for weight.
    bias: optional bias tensor.
    out_dtype: output data type.
Returns:
    output tensor in out_dtype.
)r   rE   r   Úda8w4_linear_cpurG   )	rQ   r¨   r©   rS   rª   r«   r¬   rV   rW   s	   &&&&&&&&&r   r®   r®   V  sB   € ô4 �9‰9×Ñ×-Ñ-×5Ñ5ØØØØØØØØØó
ð 
r   ztorchao::da8w4_linear_cpuc                óº   € V ^8„  d   QhR\         R\         R\         R\         R\         R\         R\         R\        \         ,          R	\        P                  R
\         /
# )r+   rQ   r¨   r©   rS   rª   r«   r¬   rV   rW   r=   rX   )rB   s   "r   rC   rC   ~  s�   € ÷ Bñ BÜðBäðBô ðBô ð	Bô
 ðBô ðBô ðBô ”6Õ
ðBô �{‰{ðBô ñBr   c	                 óÔ   € VP                  4       ^8X  g   Q hVP                  ^ 4      VP                  ^4      ,          ^,          p	V P                  ! . V P                  RR OV	N5RV/ # )é   NrY   r`   ©Údimr›   rk   rb   )
rQ   r¨   r©   rS   rª   r«   r¬   rV   rW   ÚNs
   &&&&&&&&& r   rN   rN   }  s^   € ð �:‰:‹<˜1ÔÐÐØ�‰�A‹˜Ÿ™ Q›Õ'¨!Õ+€AØ�?Š?ÐA˜EŸK™K¨¨Ð,ÐA¨aÒA°yÑAÐAr   ztorchao::_scaled_embedding_bagc                ó˜   € V ^8„  d   QhR\         R\         R\         R\         R\        R\        R\        R\        P
                  R	\         /	# )
r+   ÚqweightÚindicesÚoffsetsÚw_scalesr;   ÚmodeÚinclude_last_offsetrW   r=   )r   r?   rA   r@   r   rY   )rB   s   "r   rC   rC   �  sq   € ÷ Lñ LÜðLäðLô ðLô ð	Lô
 ðLô ðLô ðLô �{‰{ðLô ñLr   c                 ó�   € VR 8X  g   Q hVP                   ^ ,          ^,
          pV P                  W€P                   ^,          VR7      # )Trj   )rb   rk   )	r¶   r·   r¸   r¹   r;   rº   r»   rW   Ú
batch_sizes	   &&&&&&&& r   rN   rN   Ž  sD   € ð  $Ô&Ð&Ð&Ø—‘˜qÕ! AÕ%€JØ×Ñ˜Z¯©°qÕ)9ÀÐÓKÐKr   c                ó<   € V ^8„  d   QhR\         R\         R\         /# ©r+   rS   r    r=   r   )rB   s   "r   rC   rC   Ÿ  s+   € ÷ Oñ OÜðOäðOô ñOr   c                óh   € \         P                  P                  P                  P	                  W4      # )z¥
Prepack weights for float8 linear operator on CPU.
Args:
    weight: weight tensor.
    scales: scales for weight tensor.
Returns:
    packed weight, packed scales
)r   rE   r   Úfloat8_linear_prepack_cpurG   ©rS   r    s   &&r   rÁ   rÁ   Ÿ  s%   € ô �9‰9×Ñ×6Ñ6×>Ñ>¸vÓNÐNr   z"torchao::float8_linear_prepack_cpuc                ó<   € V ^8„  d   QhR\         R\         R\         /# r¿   r   )rB   s   "r   rC   rC   ¯  s!   € ÷ ñ Œfð œfð ¬ñ r   c                 ó   € W3# r   r   rÂ   s   &&r   rN   rN   ®  s
   € àˆ>Ðr   c                óŠ   € V ^8„  d   QhR\         R\         R\         R\         R\        \         ,          R\        P                  /# )r+   rQ   r¨   rS   rª   rV   rW   rX   )rB   s   "r   rC   rC   ³  sM   € ÷ ñ Üðäðô ðô ð	ô
 ”6Õ
ðô �{‰{ñr   c                ór   € \         P                  P                  P                  P	                  V VVVVV4      # )a  
float8 linear operator on CPU.
Args:
    input: input tensor.
    input_scales: scales for input tensor.
    weight: weight tensor.
    weight_scales: scales for weight tensor.
    bias: optional bias tensor.
    out_dtype: output data type.
Returns:
    output tensor in out_dtype.
)r   rE   r   Úfloat8_linear_cpurG   )rQ   r¨   rS   rª   rV   rW   s   &&&&&&r   rÇ   rÇ   ³  s9   € ô( �9‰9×Ñ×.Ñ.×6Ñ6ØØØØØØóð r   ztorchao::float8_linear_cpuc                ó–   € V ^8„  d   QhR\         R\         R\         R\         R\        \         ,          R\        P                  R\         /# )r+   rQ   r¨   rS   rª   rV   rW   r=   rX   )rB   s   "r   rC   rC   Ò  s`   € ÷ 
Bñ 
BÜð
Bäð
Bô ð
Bô ð	
Bô
 ”6Õ
ð
Bô �{‰{ð
Bô ñ
Br   c                 ó  € VP                  4       R9   g   Q hVP                  4       ^8X  d(   VP                  ^ 4      VP                  ^4      ,          MVP                  ^ 4      pV P                  ! . V P                  RR OVN5RV/ # )r+   NrY   )r+   r±   r`   r²   )rQ   r¨   rS   rª   rV   rW   r´   s   &&&&&& r   rN   rN   Ñ  sp   € ð �:‰:‹<˜6Ô!Ð!Ð!Ø+1¯:©:«<¸1Ô+<ˆ�‰�A‹˜Ÿ™ Q›Ö'À&Ç+Á+ÈaÃ.€AØ�?Š?ÐA˜EŸK™K¨¨Ð,ÐA¨aÒA°yÑAÐAr   )Ng        FNç      ð?r   rÊ   r   rÊ   r   rÊ   r   rÊ   r   )NN)Ú	functoolsÚtypingr   r   r   r   ÚLibraryÚlibÚdefineÚ_CÚTagÚneeds_fixed_stride_orderr   r   Ú	lru_cacher(   rF   rN   r[   rf   rv   rƒ   r‹   r–   r�   r£   r®   rÁ   rÇ   r   r   r   Ú<module>rÔ      s¯  ðó Ý ã Ý à‡m�m×Ñ˜I zÓ2€Ø ‡
�
ð Côð ‡
�
ØRôð ‡
�
Øbôð ‡
�
ð Tôð
 ‡
�
ØOØ
�(‰(�,‰,×
/Ñ
/Ð	0ð ô ð ‡
�
ð }ôð ‡
�
Øoôð ‡
�
ð Pôð ‡
�
ð wôð ‡
�
ØQôð ‡
�
ð Qôò
òð ×Ññó ð÷<ñ~ Ð2Ó3ö>ó 4ð>÷,ñ8 ÐHÓIöYó JðYõ"Wñ ÐHÓIô	ó Jð	õñ Ð)Ó*ô8ó +ð8õñ8 Ð0Ó1ô8ó 2ð8ð ×ÒÓñó ðò
ñ Ð*Ó+ôVó ,ðVõ
Vñ" Ð7Ó8ô2ó 9ð2õ$ñN Ð/Ó0ôBó 1ðBñ  Ð4Ó5ôLó 6ðLõ Oñ Ð8Ó9ôó :ðõñ< Ð0Ó1ô
Bó 2ò
Br   