+
    ÆÜ³j‘#  ã                   óž  € R t ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIt^RI	H
t
 ^RIHtHtHt ^RIHt R^R	^/tRs]P&                  ! 4       ^ ,          '       d5   ]! ]P&                  ! 4       ^ ,          P+                  R
4      ^ ,          4      M^ t]^8  sR t]! RR7      R R l4       t]
! RR4      R R l4       t]! RR7      R R l4       tR R lt]
! RR4      R R l4       tR R lt]
! RR4      R R l4       t]
! R R4      R! R" l4       tR# R$ lt]
! R%R4      R& R' l4       t]
! R(R4      R) R* l4       t]
! R+R4      R.R, R- ll4       tR# )/a�  MPS backend for bitsandbytes quantization ops.

Hub kernels (kernels-community/bitsandbytes-mps) are attempted lazily on
macOS 26+. On older macOS the hub kernel path is skipped entirely and
default fallbacks or MPS-specific pure PyTorch fallbacks are used for all ops.

Note: not all ops have implementations on the Hub kernels. Those that do not are also
implemented using pure PyTorch fallbacks.
)ÚSequence)ÚprodN)ÚOptional)Úregister_kernel)Ú_dequantize_4bit_computeÚ_get_4bit_quantize_boundsÚ_try_torch_compile)Ú_get_4bit_codeÚfp4Únf4Ú.c                  ó�   € \         '       d   R # \        e   \        #  ^ RIHp  V ! R^R7      s\        #   \         d    Rs  R # i ; i)N©Ú
get_kernelz"kernels-community/bitsandbytes-mps)ÚversionT)Ú_kernel_load_failedÚ_kernelÚkernelsr   Ú	Exceptionr   s    Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/bitsandbytes/backends/mps/ops.pyÚ_get_kernelr   $   sL   € çÓÙÜÒÜˆðÝ&áÐAÈ1ÔMˆô €Nøô ô Ø"ÐÚðús   ž4 ´AÁAT)Údynamicc          
      óº   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        \         P                  \         P                  3,          /# )é   ÚA_flatÚcodeÚ	blocksizeÚreturn©ÚtorchÚTensorÚintÚtuple)Úformats   "r   Ú__annotate__r$   5   sF   € ÷ &ñ &Ü�L‰Lð&Ü %§¡ð&Ü9<ð&ä
Œ5�<‰<œŸ™Ð%Õ&ñ&ó    c                óˆ  € V P                  4       pW2,          pW4,
          pWR,          pV RV P                  Wb4      pVP                  4       P                  RR7      ^ ,          p\        P
                  ! VRVP                  RR7      P                  R^4      ,          ,          R^4      P                  R4      p	V'       dŽ   WR P                  4       P                  4       P                  RR7      p
\        P                  ! WŠP                  ^ 4      .4      p\        P                  ! V	\        P
                  ! WR V
,          R^4      .4      p	VRR VR,          ,           ^,          pVP                  ^ ,          pVP                  4       p\        P                  ! V	P                  \        P                  V	P                  R7      p\        P                  ! V	P                  V\        P                  V	P                  R7      p\        V4       F’  pWï,           ^,	          pVVP!                  \        P"                  4      ,          p\        P$                  ! VV	8  V^,           P!                  \        P                  4      V4      p\        P$                  ! VV	8¬  VV4      pK”  	  VP!                  \        P&                  4      V3# )	z�
On torch <= 2.12, torch.bucketize does not perform well.
Implements blockwise quantization using a binary search instead of using the default.
N©Údimç      ð?çäxª�û88©Úmin:é   NN©ÚdtypeÚdeviceéÿÿÿÿ)ÚnumelÚreshapeÚabsÚmaxr   ÚclampÚviewÚcatÚ	unsqueezeÚshapeÚ
bit_lengthÚzerosÚint16r0   ÚfullÚrangeÚtoÚint64ÚwhereÚuint8)r   r   r   ÚnÚremr>   ÚblocksÚA_comÚabsmaxÚscaledÚamÚboundsÚn_boundsÚn_itersÚloÚhiÚ_ÚmidÚvals   &&&                r   Ú_quantize_blockwise_computerS   4   sþ  € ð 	�‰‹€AØ
�-€CØ�7€DØÕ€FØ�5�DˆM×!Ñ! &Ó4€EØ�Y‰Y‹[�_‰_ ˆ_Ó$ QÕ'€FÜ�[Š[˜ #¨¯©¸¨Ó(?×(DÑ(DÀRÈÓ(KÕ"KÕLÈbÐRSÓT×\Ñ\Ð]_Ó`€Fß
Ø�Eˆ]×ÑÓ ×$Ñ$Ó&×,Ñ,°Ð,Ó7ˆÜ—’˜F§L¡L°£OÐ4Ó5ˆÜ—’˜F¤E§K¢K°°u°ÀÕ0BÀBÈÓ$JÐKÓLˆØ�3�Bˆi˜$˜r�(Õ" aÕ'€FØ�|‰|˜A�€HØ×!Ñ!Ó#€GÜ	�Š�V—\‘\¬¯©¸V¿]¹]Ô	K€BÜ	�Š�F—L‘L (´%·+±+ÀfÇmÁmÔ	T€BÜ�7Ž^ˆØ�w˜1�nˆØ�S—V‘VœEŸK™KÓ(Õ)ˆÜ�[Š[˜˜v™¨¨a­§|¡|´E·K±KÓ'@À"ÓEˆÜ�[Š[˜ ™¨¨RÓ0Šñ	 ð
 �5‰5”—‘Ó˜vÐ%Ð%r%   z bitsandbytes::quantize_blockwiseÚmpsc          
      óº   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        \         P                  \         P                  3,          /# )r   ÚAr   r   r   r   )r#   s   "r   r$   r$   U   sE   € ÷ &ñ &Œ�‰ð &œUŸ\™\ð &´cð &¼eÄEÇLÁLÔRW×R^ÑR^ÐD^Õ>_ñ &r%   c                 ó°   € \        V P                  R4      P                  4       VP                  4       V4      w  r4VP                  V P                  4      V3# )r-   r1   )rS   r3   Úfloatr:   )rV   r   r   ÚqrH   s   &&&  r   rP   rP   T   sB   € ä+¨A¯I©I°b«M×,?Ñ,?Ó,AÀ4Ç:Á:Ã<ÐQZÓ[�I€AØ�9‰9�Q—W‘WÓ˜vÐ%Ð%r%   c                óæ   € V ^8„  d   QhR\         P                  R\        R\         P                  R\         P                  R\        R\        \         P                  \         P                  3,          /# )r   r   r   rK   Úorderr   r   )r   r    r!   Úboolr"   )r#   s   "r   r$   r$   [   sb   € ÷ -ñ -Ü�L‰Lð-äð-ô �L‰Lð-ô �<‰<ð	-ô
 
ð-ô Œ5�<‰<œŸ™Ð%Õ&ñ-r%   c                 óÚ  € V P                  4       pWQ,          pWV,
          pWq,          pV R V P                  W�4      p	V	P                  4       P                  RR7      ^ ,          p
\        P
                  ! V	RV
P                  RR7      P                  R^4      ,          ,          R^4      P                  R4      pV'       dŽ   WR  P                  4       P                  4       P                  RR7      p\        P                  ! W¬P                  ^ 4      .4      p
\        P                  ! V\        P
                  ! WR  V,          R^4      .4      pVP                  4       ^,          '       d+   \        P                  P                  P                  VR	4      p\        P                  ! VP                  \        P                  VP                  R7      pV F+  pWÛV8„  P!                  \        P                  4      ,           pK-  	  V'       g&   W=P!                  \        P"                  4      ,          pVP!                  \        P$                  4      pVR,          ^,          VR,          ,          V
3# )
Nr'   r)   r*   r+   r.   :NNr   :r-   Nr   r1   )é    r-   )r2   r3   r4   r5   r   r6   r7   r8   r9   ÚnnÚ
functionalÚpadr<   r:   Úint8r0   r@   Úint32rC   )r   r   rK   r[   r   rD   rE   r>   rF   rG   rH   rI   rJ   ÚidxÚbÚq8s   &&&&&           r   Ú_quantize_4bit_computerg   Z   s¹  € ð 	�‰‹€AØ
�-€CØ�7€DØÕ€FØ�5�DˆM×!Ñ! &Ó4€EØ�Y‰Y‹[�_‰_ ˆ_Ó$ QÕ'€FÜ�[Š[˜ #¨¯©¸¨Ó(?×(DÑ(DÀRÈÓ(KÕ"KÕLÈbÐRSÓT×\Ñ\Ð]_Ó`€Fß
Ø�Eˆ]×ÑÓ ×$Ñ$Ó&×,Ñ,°Ð,Ó7ˆÜ—’˜F§L¡L°£OÐ4Ó5ˆÜ—’˜F¤E§K¢K°°u°ÀÕ0BÀBÈÓ$JÐKÓLˆØ‡|�|ƒ~˜×ÔÜ—‘×$Ñ$×(Ñ(¨°Ó8ˆÜ
�+Š+�f—l‘l¬%¯*©*¸V¿]¹]Ô
K€CÛˆØ˜a‘Z—O‘O¤E§J¡JÓ/Õ/Šñ çØ—F‘Fœ5Ÿ;™;Ó'Õ(ˆØ	�‰”—‘Ó	€BØˆs�G�q�L˜B˜t�HÕ$ fÐ,Ð,r%   c                óÆ   € V ^8„  d   QhR\         P                  R\        R\        R\         P                  R\
        \         P                  \         P                  3,          /# ©r   rV   r   Ú
quant_typeÚquant_storager   ©r   r    r!   Ústrr/   r"   )r#   s   "r   r$   r$   x   sN   € ÷ ñ Ü‡|�|ðÜ #ðÜ14ðÜEJÇ[Á[ðä
Œ5�<‰<œŸ™Ð%Õ&ñr%   c                 ó<  € \        W P                  4      w  rE\        V P                  R4      P	                  4       WWRR8H  4      w  rgVP                  ^4      pV\        P                  8w  d/   VP                  4       P                  V4      P                  ^4      pWg3# )r-   r   r1   )
r   r0   rg   r3   rX   r9   r   rC   Úsqueezer7   )rV   r   rj   rk   rK   r[   ÚpackedrH   s   &&&&    r   Ú_quantize_4bit_fallbackrq   x   s‚   € ô .¨j¿(¹(ÓC�M€FÜ+¨A¯I©I°b«M×,?Ñ,?Ó,AÀ9ÐV[ÐkpÑ]pÓq�N€FØ×Ñ˜aÓ €FØœŸ™Ô#Ø—‘Ó!×&Ñ& }Ó5×?Ñ?ÀÓBˆØˆ>Ðr%   zbitsandbytes::quantize_4bitc                óÆ   € V ^8„  d   QhR\         P                  R\        R\        R\         P                  R\
        \         P                  \         P                  3,          /# ri   rl   )r#   s   "r   r$   r$   „   s[   € ÷ 
Lñ 
LÜ‡|�|ð
Läð
Lô ð
Lô —;‘;ð	
Lô
 Œ5�<‰<œŸ™Ð%Õ&ñ
Lr%   c                 óæ   € VR9   d`   \        4       ;peR   VP                  V P                  4       V\        V,          4      w  rVVP	                  V4      P                  ^4      pWV3# \        WW#4      # )é@   ©rt   é€   é   i   )r   Úquantize_4bitÚ
contiguousÚ
_QUANT_MAPr7   r9   rq   )rV   r   rj   rk   Úkrp   rH   s   &&&&   r   rP   rP   ƒ   sf   € ð Ð'Ô'´+³-Ð-?¨QÒ,LØŸ™¨¯©«¸ÄJÈzÕDZÓ[‰ˆØ—‘˜]Ó+×5Ñ5°aÓ8ˆØˆ~ÐÜ" 1°ÓKÐKr%   c                óÒ   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        R\        \        ,          R\         P
                  R\         P                  /# ©r   rV   rH   r   rj   r:   r/   r   ©r   r    r!   rm   r   r/   )r#   s   "r   r$   r$   ‘   sk   € ÷ Zñ ZÜ‡|�|ðZä�L‰LðZô ðZô ð	Zô
 ”C�=ðZô �;‰;ðZô ‡\�\ñZr%   c                 ó‚  € V P                   \        P                  8w  d    V P                  \        P                  4      p VR9   dJ   \	        4       ;pe<   \        V4      pVP                  WV\        V,          Wu4      pVP                  V4      # \        W0P                  4      p	\        V P                  R4      WW$V4      # )rt   ru   r1   )r/   r   rC   r7   r   r   Údequantize_4bitrz   r3   r	   r0   r   )
rV   rH   r   rj   r:   r/   r{   r2   Úoutr   s
   &&&&&&    r   Ú_dequantize_4bit_implr‚   ‘   sš   € ð 	‡w�w”%—+‘+ÔØ�F‰F”5—;‘;Óˆð Ð'Ô'´+³-Ð-?¨QÒ,LÜ�U“ˆØ×Ñ ¨9´jÀÕ6LÈeÓ[ˆØ�{‰{˜5Ó!Ð!ô ˜*§h¡hÓ/€DÜ# A§I¡I¨b£M°6ÀÐSXÓYÐYr%   zbitsandbytes::dequantize_4bitc                óÒ   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        R\        \        ,          R\         P
                  R\         P                  /# r}   r~   )r#   s   "r   r$   r$   ¨   sk   € ÷ Qñ QÜ‡|�|ðQä�L‰LðQô ðQô ð	Qô
 ”C�=ðQô �;‰;ðQô ‡\�\ñQr%   c                 ó   € \        WW#WE4      # ©N)r‚   )rV   rH   r   rj   r:   r/   s   &&&&&&r   rP   rP   §   s   € ô ! ¨IÀ5ÓPÐPr%   z!bitsandbytes::dequantize_4bit.outc                óÖ   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        R\        \        ,          R\         P
                  R\         P                  RR	/# )
r   rV   rH   r   rj   r:   r/   r�   r   Nr~   )r#   s   "r   r$   r$   ´   sl   € ÷ 
ñ 
Ü‡|�|ð
ä�L‰Lð
ô ð
ô ð	
ô
 ”C�=ð
ô �;‰;ð
ô 
�‰ð
ð 
ñ
r%   c                 óB   € \        WW#WE4      pVP                  V4       R # r…   )r‚   Úcopy_)rV   rH   r   rj   r:   r/   r�   Úresults   &&&&&&& r   rP   rP   ³   s   € ô # 1¨iÀUÓR€FØ‡I�IˆfÖr%   c                óæ   € V ^8„  d   QhR\         P                  R\         P                  R\        \        ,          R\         P                  R\         P                  R\        R\         P                  /# ©r   rV   ÚBÚshapeBrH   r   r   r   ©r   r    r   r!   )r#   s   "r   r$   r$   Á   sf   € ÷ /ñ /Ü‡|�|ð/ä‡|�|ð/ô ”S�Mð/ô �L‰Lð	/ô
 �,‰,ð/ô ð/ô ‡\�\ñ/r%   c                 óÔ  € VR9   d‘   \        4       ;peƒ   VP                  \        P                  8w  d    VP	                  \        P                  4      pV^ ,          pV^,          ^ 8”  d   \
        R,          M\
        R,          pVP                  WW7WX4      # V^,          ^ 8”  d   RMRp	\        WWYW P                  4      p
\        P                  P                  P                  W
4      # )rt   r
   r   ©rt   rv   rw   )r   r/   r   rC   r7   rz   Ú	gemv_4bitr‚   r_   r`   Úlinear)rV   rŒ   r�   rH   r   r   r{   Úoutput_featuresÚquant_type_intrj   ÚB_dqs   &&&&&&     r   Ú_gemv_4bit_implr–   Á   s¯   € ð �NÔ"¬[«]Ð(:¨Ò'GØ�7‰7”e—k‘kÔ!Ø—‘”u—{‘{Ó#ˆAà  �)ˆØ.2°1­g¸¬kœ EÖ*¼zÈ%Õ?Pˆà�{‰{˜1 ¸)ÓTÐTà˜q�' Aœ+‘¨5€JÜ  ¨IÀ6Ï7É7ÓS€DÜ�8‰8×Ñ×%Ñ% aÓ.Ð.r%   zbitsandbytes::gemv_4bitc                óæ   € V ^8„  d   QhR\         P                  R\         P                  R\        \        ,          R\         P                  R\         P                  R\        R\         P                  /# r‹   rŽ   )r#   s   "r   r$   r$   Ø   so   € ÷ Bñ BÜ‡|�|ðBä‡|�|ðBô ”S�MðBô �L‰Lð	Bô
 �,‰,ðBô ðBô ‡\�\ñBr%   c                 ó   € \        WW#WE4      # r…   )r–   )rV   rŒ   r�   rH   r   r   s   &&&&&&r   rP   rP   ×   s   € ô ˜1 °ÓAÐAr%   zbitsandbytes::gemv_4bit.outc                óê   € V ^8„  d   QhR\         P                  R\         P                  R\        \        ,          R\         P                  R\         P                  R\        R\         P                  RR	/# )
r   rV   rŒ   r�   rH   r   r   r�   r   NrŽ   )r#   s   "r   r$   r$   ä   sp   € ÷ 
ñ 
Ü‡|�|ð
ä‡|�|ð
ô ”S�Mð
ô �L‰Lð	
ô
 �,‰,ð
ô ð
ô 
�‰ð
ð 
ñ
r%   c                 óB   € \        WW#WE4      pVP                  V4       R # r…   )r–   rˆ   )rV   rŒ   r�   rH   r   r   r�   r‰   s   &&&&&&& r   rP   rP   ã   s   € ô ˜Q 6°4ÓC€FØ‡I�IˆfÖr%   zbitsandbytes::gemm_4bitc                óª  € V ^8„  d   QhR\         P                  R\         P                  R\        \        ,          R\         P                  R\        R\        R\
        \         P                  ,          R\
        \         P                  ,          R	\
        \         P                  ,          R
\
        \         P                  ,          R\         P                  /# )r   rV   rŒ   r�   rH   r   rj   ÚbiasÚabsmax_8bitÚabsmax_codeÚabsmax_offsetr   )r   r    r   r!   rm   r   )r#   s   "r   r$   r$   ò   s®   € ÷ #5ñ #5Ü‡|�|ð#5ä‡|�|ð#5ô ”S�Mð#5ô �L‰Lð	#5ô
 ð#5ô ð#5ô ”5—<‘<Õ
 ð#5ô œ%Ÿ,™,Õ'ð#5ô œ%Ÿ,™,Õ'ð#5ô œEŸL™LÕ)ð#5ô ‡\�\ñ#5r%   c
           	      ó¶  € V P                   R,          p
V P                  4       V
,          pV^ ,          pVeL   \        P                  P                  P
                  P                  WsVR\        P                  4      V	,           pV^8X  d‘   VR9   dŠ   \        4       ;pe|   VP                  \        P                  8w  d    VP                  \        P                  4      pVP                  WVP                  VR4      WÄ\        V,          4      pVe	   Wæ,           pV# \        WWEW P                  4      p\        P                  P                   P#                  WV4      # )r-   rw   r1   r�   )r:   r2   r   ÚopsÚbitsandbytesÚdequantize_blockwiseÚdefaultÚfloat32r   r/   rC   r7   r‘   rz   r‚   r_   r`   r’   )rV   rŒ   r�   rH   r   rj   rœ   r�   rž   rŸ   ÚKÚMÚNr{   r‰   r•   s   &&&&&&&&&&      r   rP   rP   ñ   s  € ð 	
�‰��€AØ	�‰‹	�Q�€AØˆq�	€Að Òä�I‰I×"Ñ"×7Ñ7×?Ñ?ÀÐU`ÐbeÔgl×gtÑgtÓuØõð 	ð 	ˆA„v�)˜~Ô-¼»Ð3E°1Ò2RØ�7‰7”e—k‘kÔ!Ø—‘”u—{‘{Ó#ˆAØ—‘˜Q 6§;¡;¨q°"Ó#5°qÄZÐPZÕE[Ó\ˆØÒØ•]ˆFØˆô ! ¨IÀ6Ï7É7ÓS€DÜ�8‰8×Ñ×%Ñ% a¨tÓ4Ð4r%   )NNNN)Ú__doc__Úcollections.abcr   Úmathr   ÚplatformÚtypingr   r   Ú_opsr   Údefault.opsr   r   r   Úutilsr	   rz   r   Úmac_verr!   ÚsplitÚ_macos_majorr   r   rS   rP   rg   rq   r‚   r–   © r%   r   Ú<module>rµ      sœ  ðñõ %Ý Û Ý ã å #÷ñ õ
 #à�Q˜˜qÐ!€
à
€à;C×;KÒ;KÓ;MÈa×;PÔ;P‰s�8×#Ò#Ó% aÕ(×.Ñ.¨sÓ3°AÕ6Ô7ÐVW€ð # RÑ'Ð òñ  ˜DÔ!ô&ó "ð&ñ> Ð3°UÓ;ô&ó <ð&ñ
 ˜DÔ!ô-ó "ð-õ:ñ Ð.°Ó6ô
Ló 7ð
LõZñ, Ð0°%Ó8ôQó 9ðQñ Ð4°eÓ<ô
ó =ð
õ/ñ, Ð*¨EÓ2ôBó 3ðBñ Ð.°Ó6ô
ó 7ð
ñ Ð*¨EÓ2ö#5ó 3ò#5r%   