§
    ’Þjâº  ã                   ón  — 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mZ	 ddl
mZmZ dadadddddddddddddddd	œZd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Z eej        j        ¦  «         G d„ deej        j        ¦  «        ¦   «         Zg Zg Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z i Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'dCd„Z(d„ Z)d „ Z*d!„ Z+d"„ Z,d#„ Z-d$„ Z.d%„ Z/d&„ Z0d'„ Z1	 	 	 	 	 	 dDd)„Z2dEd*„Z3dd+œd,„Z4dFd-„Z5dFd.„Z6d/„ Z7d0„ Z8d1„ Z9d2„ Z:i Z;d3„ Z<d4„ Z=d5„ Z>dGd6„Z?dHd7„Z@d8„ ZAd9„ ZBdGd:„ZCd;„ ZDd<„ ZEd=„ ZFd>„ ZGd?„ ZHdId@„ZIdJdA„ZJdB„ ZK eK¦   «          dS )Ké    N)ÚQModuleMixinÚregister_qmodule©Úqtypeé   )Ú	row_viewsÚsafetensors2é   é
   é   )Únvfp4ÚnunchakuÚnunchaku_int4Únunchaku_fp4Úfp8Ú
scaled_fp8Úscaled_float8_e4m3fnÚscaled_float8_e5m2Úqfloat8Úqfloat8_e4m3fnÚqfloat8_e5m2Úfloat8_e4m3fnÚfloat8_e5m2Úint8Úqint8c              #   ó„   K  — t          | ¦  «                             ¦   «         D ]}t          |t          ¦  «        r|V — Œd S ©N)ÚvarsÚvaluesÚ
isinstanceÚ_quanto_qtype©ÚhandlerÚobjs     ú9C:\Users\johnn\OneDrive\Documents\AI\mmgp\quant_router.pyÚ_extract_qtypesr&   $   sM   è è € Ý�G‰}Œ}×#Ò#Ñ%Ô%ð ð ˆÝ�c�=Ñ)Ô)ð 	ØˆIˆIˆIøðð ó    c              #   óþ   K  — t          | ¦  «                             ¦   «         D ]X}t          j        |¦  «        rBt	          |t
          ¦  «        r-t	          |t          j        j        ¦  «        r|t          u rŒT|V — ŒYd S r   )
r   r   ÚinspectÚisclassÚ
issubclassr   ÚtorchÚnnÚLinearÚQLinearQuantoRouterr"   s     r%   Ú_extract_qmodule_classesr0   *   s†   è è € Ý�G‰}Œ}×#Ò#Ñ%Ô%ð ð ˆÝŒ?˜3ÑÔð 	¥J¨sµLÑ$AÔ$Að 	ÅjÐQTÕV[ÔV^ÔVeÑFfÔFfð 	ØÕ)Ð)Ð)ØØˆIˆIˆIøð	ð r'   c                  óì   — i } t          ¦   «         D ]b}t          t          |¦  «        ¦  «        }t          |¦  «        dk    rŒ2|d         }t	          |¦  «        D ]}|                      ||¦  «         ŒŒc| S )Nr   r   )Ú_load_handlersÚlistr0   Úlenr&   Ú
setdefault)Úmappingr#   Úqmodule_classesÚqmodule_clsÚqts        r%   Ú_build_qmodule_cacher:   2   sŒ   € Ø€GÝ!Ñ#Ô#ð 0ð 0ˆÝÕ7¸Ñ@Ô@ÑAÔAˆÝˆÑÔ 1Ò$Ð$ØØ% aÔ(ˆÝ! 'Ñ*Ô*ð 	0ð 	0ˆBØ×Ò˜r ;Ñ/Ô/Ð/Ð/ð	0à€Nr'   c                  óô   — t           �t           S t          j                             ddd¬¦  «        } t	          | j                             ¦   «         ¦  «        a t                                h d£¦  «         t           S )Nr   T©Úbias>   Ú_buffersÚ_modulesÚ_parametersÚ_non_persistent_buffers_set)Ú_QMODULE_BASE_ATTRSr,   r-   r.   ÚsetÚ__dict__ÚkeysÚupdate)Úbases    r%   Ú_get_qmodule_base_attrsrH   >   sr   € åÐ&Ý"Ð"ÝŒ8�?Š?˜1˜a dˆ?Ñ+Ô+€DÝ˜dœm×0Ò0Ñ2Ô2Ñ3Ô3ÐÝ×Òð  ð  ð  ñ ô ð õ Ðr'   c                 óz   — | €d S t           �	| t           vrt          ¦   «         a t                                | ¦  «        S r   )Ú_QTYPE_QMODULE_CACHEr:   Úget)Ú	qtype_objs    r%   Ú_get_qmodule_for_qtyperM   M   s>   € àÐØˆtÝÐ# yÕ8LÐ'LÐ'LÝ3Ñ5Ô5ÐÝ×#Ò# IÑ.Ô.Ð.r'   c	                 óÌ  — t          j        | j        ¦  «        r| j        j        nd }	t          j        | j        ¦  «        r| j        j        j        r| j        j        }
nMt          j        t          | dd ¦  «        ¦  «        r| j        j        j        r| j        j        }
nt           j        }
 || j	        | j
        | j        d u|	|
| j        | j        | j        d¬¦	  «	        }t          |dd ¦  «        }t          |¦  «        r& |t          | dd ¦  «        p| j        j        ¦  «         |                     |||||||¦  «         |j        | _        |j        | _        |j        | _        |j        | _        t%          t'          ¦   «         ¦  «        }|                     h d£¦  «         |j                             ¦   «         D ]\  }}||v rŒ
t/          | ||¦  «         Œ|j        | _        d S )Nr=   T©r=   ÚdeviceÚdtypeÚweightsÚactivationsÚ	optimizerÚquantize_inputÚset_default_dtypeÚ_router_default_dtype>   ÚtrainingÚ_quantize_hooksrW   )r,   Ú	is_tensorÚweightrP   rQ   Úis_floating_pointÚgetattrr=   Úfloat16Úin_featuresÚout_featuresÚweight_qtypeÚactivation_qtyperT   ÚcallableÚ_load_from_state_dictÚinput_scaleÚoutput_scalerC   rH   rF   rD   ÚitemsÚsetattrÚforwardÚ_router_forward_impl)Úmoduler8   Ú
state_dictÚprefixÚlocal_metadataÚstrictÚmissing_keysÚunexpected_keysÚ
error_msgsrP   Úweight_dtypeÚtmpÚsetterÚignoreÚnameÚvalues                   r%   Ú_load_with_qmodulery   V   s  € õ &+¤_°V´]Ñ%CÔ%CÐMˆVŒ]Ô!Ð!È€FÝ„�v”}Ñ%Ô%ð %¨&¬-Ô*=Ô*Oð %Ø”}Ô*ˆˆÝ	Œ� ¨°Ñ6Ô6Ñ	7Ô	7ð %¸F¼KÔ<MÔ<_ð %Ø”{Ô(ˆˆå”}ˆØ
ˆ+ØÔØÔØŒ[ Ð$ØØØÔ#ØÔ+ØÔ"Øð
ñ 
ô 
€Cõ �SÐ-¨tÑ4Ô4€FÝ�ÑÔð VØˆ�w�vÐ6¸Ñ=Ô=ÐTÀÄÔATÑUÔUÐUØ×ÒØ�F˜N¨F°LÀ/ÐS]ñô ð ð ”J€F„MØ”(€F„KØœ€FÔØÔ*€FÔåÕ(Ñ*Ô*Ñ+Ô+€FØ
‡M‚Mð ð ð ñ ô ð ð
 ”|×)Ò)Ñ+Ô+ð %ð %‰ˆˆeØ�6ˆ>ˆ>ØÝ�˜˜eÑ$Ô$Ð$Ð$Ø"-Ô"5€FÔÐÐr'   c                   ó€   ‡ — e Zd Ze	 	 	 d
d„¦   «         Z	 	 	 	 	 	 	 dˆ fd„	Zd„ Zdej        dej        fd„Z	ˆ fd	„Z
ˆ xZS )r/   Nc                 óT  — t          j        |j        ¦  «        r|j        j        j        r|j        j        }nMt          j        t          |dd ¦  «        ¦  «        r|j        j        j        r|j        j        }nt           j        } | |j        |j	        |j        d u|||||d¬¦	  «	        S )Nr=   T)rP   rQ   rR   rS   rT   rU   )
r,   rZ   r[   rQ   r\   r]   r=   r^   r_   r`   )Úclsrk   rR   rS   rT   rP   rs   s          r%   ÚqcreatezQLinearQuantoRouter.qcreateŽ   s´   € õ Œ?˜6œ=Ñ)Ô)ð 	)¨f¬mÔ.AÔ.Sð 	)Ø!œ=Ô.ˆLˆLÝŒ_�W V¨V°TÑ:Ô:Ñ;Ô;ð 	)ÀÄÔ@QÔ@cð 	)Ø!œ;Ô,ˆLˆLå œ=ˆLØˆsØÔØÔØŒK˜tÐ#ØØØØ#ØØð

ñ 

ô 

ð 
	
r'   Tc
                 ój   •— t          ¦   «                              |||||||||	¬¦	  «	         || _        d S )NrO   )ÚsuperÚ__init__rW   )Úselfr_   r`   r=   rP   rQ   rR   rS   rT   rU   Ú	__class__s             €r%   r€   zQLinearQuantoRouter.__init__©   sQ   ø€ õ 	‰Œ×ÒØØØØØØØ#ØØ)ð 	ñ 
	
ô 
	
ð 
	
ð &+ˆÔ"Ð"Ð"r'   c                 ó   — || _         d S r   )rW   )r�   rQ   s     r%   rV   z%QLinearQuantoRouter.set_default_dtypeÂ   s   € Ø%*ˆÔ"Ð"Ð"r'   ÚinputÚreturnc                 ó¢   — t          | dd ¦  «        }|� || |¦  «        S t          j        j                             || j        | j        ¬¦  «        S )Nrj   r<   )r]   r,   r-   Ú
functionalÚlinearÚqweightr=   )r�   r„   Úimpls      r%   ri   zQLinearQuantoRouter.forwardÅ   sP   € Ý�tÐ3°TÑ:Ô:ˆØÐØ�4˜˜eÑ$Ô$Ð$ÝŒxÔ"×)Ò)¨%°´ÀDÄIÐ)ÑNÔNÐNr'   c                 ó¾   •— t          | j        ¦  «        }|� |t          urt          | ||||||||¦	  «	        S t	          ¦   «                              |||||||¦  «        S r   )rM   ra   r/   ry   r   rd   )
r�   rl   rm   rn   ro   rp   rq   rr   r8   r‚   s
            €r%   rd   z)QLinearQuantoRouter._load_from_state_dictË   s{   ø€ õ -¨TÔ->Ñ?Ô?ˆØÐ" {Õ:MÐ'MÐ'MÝ%Ø�k :¨v°~ÀvÈ|Ð]lÐnxñô ð õ ‰wŒw×,Ò,Ø˜ °¸ÀoÐWañ
ô 
ð 	
r'   )NNN)TNNNNNT)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr}   r€   rV   r,   ÚTensorri   rd   Ú__classcell__)r‚   s   @r%   r/   r/   Œ   sÑ   ø€ € € € € àð
 ØØð
ð 
ð 
ñ „[ð
ð< ØØØØØØð+ð +ð +ð +ð +ð +ð2+ð +ð +ðO˜Uœ\ð O¨e¬lð Oð Oð Oð Oð

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

r'   r/   c                 óÈ   — t          | t          ¦  «        r'| t          vrt                               | ¦  «         d a| S | t
          vrt
                               | ¦  «         d a| S r   )r    ÚstrÚ_HANDLER_MODULESÚappendrJ   Ú_HANDLER_OBJECTS©r#   s    r%   Úregister_handlerr˜   Ü   sj   € å�'�3ÑÔð ØÕ*Ð*Ð*Ý×#Ò# GÑ,Ô,Ð,Ø#'Ð ØˆØÕ&Ð&Ð&Ý×Ò Ñ(Ô(Ð(Ø#ÐØ€Nr'   c                 óÒ   — d}t          | t          ¦  «        r&| t          v rt                               | ¦  «         d}n%| t          v rt                               | ¦  «         d}|rd a|S )NFT)r    r“   r”   Úremover–   rJ   )r#   Úremoveds     r%   Úunregister_handlerrœ   é   sw   € à€GÝ�'�3ÑÔð ØÕ&Ð&Ð&Ý×#Ò# GÑ,Ô,Ð,ØˆGøØ	Õ$Ð	$Ð	$Ý×Ò Ñ(Ô(Ð(ØˆØð $Ø#ÐØ€Nr'   c                  óØ  — g } t           D ]e}t          j        |t          ¬¦  «        }t	          |d¦  «        rt	          |d¦  «        st          d|› d�¦  «        ‚|                      |¦  «         Œft          D ]F}t	          |d¦  «        rt	          |d¦  «        st          d¦  «        ‚|                      |¦  «         ŒG t          t          j
        j        ¦  «        t          ¦  «         | S )N)ÚpackageÚdetectÚconvert_to_quantozQuant handler 'z9' must define detect() and convert_to_quanto() functions.zLQuant handler object must define detect() and convert_to_quanto() functions.)r”   Ú	importlibÚimport_moduleÚ__package__ÚhasattrÚRuntimeErrorr•   r–   r   r,   r-   r.   r/   )ÚhandlersÚmod_pathrk   r#   s       r%   r2   r2   ø   s  € Ø€HÝ$ð  ð  ˆÝÔ(¨½;ÐGÑGÔGˆÝ�v˜xÑ(Ô(ð 	µ¸Ð@SÑ0TÔ0Tð 	ÝØe (ÐeÐeÐeñô ð ð 	�Š˜ÑÔÐÐÝ#ð !ð !ˆÝ�w Ñ)Ô)ð 	µ¸ÐBUÑ1VÔ1Vð 	ÝØ^ñô ð ð 	�Š˜Ñ Ô Ð Ð Ø%Õ•U”X”_Ñ%Ô%Õ&9Ñ:Ô:Ð:Ø€Or'   c                 ó`   — t          | d| j                             d¦  «        d         ¦  «        S )NÚHANDLER_NAMEú.éÿÿÿÿ)r]   rŒ   Úsplitr—   s    r%   Ú_handler_namer­     s*   € Ý�7˜N¨GÔ,<×,BÒ,BÀ3Ñ,GÔ,GÈÔ,KÑLÔLÐLr'   c                  ó2   — d„ t          ¦   «         D ¦   «         S )z{Routed-expert storage formats (mmgp.expert_compute.ExpertFormat) of the registered handlers: their optional EXPERT_FORMATS.c                 ó:   — g | ]}t          |d d¦  «        D ]}|‘ŒŒS )ÚEXPERT_FORMATS© )r]   )Ú.0r#   Úformats      r%   ú
<listcomp>z"expert_formats.<locals>.<listcomp>  s3   € ÐhÐhÐh�wÅÈÐRbÐdfÑAgÔAgÐhÐh°vˆFÐhÐhÐhÐhr'   )r2   r±   r'   r%   Úexpert_formatsrµ     s   € àhÐh¥.Ñ"2Ô"2ÐhÑhÔhÐhr'   c                 óR   ‡ — t          ˆ fd„t          ¦   «         D ¦   «         ¦  «        S )zÖWhether a registered handler computes linears with this weight on the CPU, in its storage (its optional cpu_compute_supported(tensor)):
    the blocks that MMGP leaves on the CPU then compute it there (cpuCompute).c              3   óh   •K  — | ],}t          |d d¦  «        duo|                     ‰¦  «        V — Œ-dS )Úcpu_compute_supportedN)r]   r¸   )r²   r#   Útensors     €r%   ú	<genexpr>z(cpu_compute_supported.<locals>.<genexpr>  sf   øè è € ð  Vð  Vð  zA�w�wÐ 7¸Ñ>Ô>ÀdÐJÐtÈw×OlÒOlÐmsÑOtÔOtð  Vð  Vð  Vð  Vð  Vð  Vr'   )Úanyr2   )r¹   s   `r%   r¸   r¸     sY   ø€ õ ð  Vð  Vð  Vð  Võ  ESñ  EUô  EUð  Vñ  Vô  Vñ  Vô  Vð  Vr'   c                 ó®   — | r|€d S t          | ¦  «                             ¦   «         }|                     d¦  «        r
|dd …         }|sd S |t          |<   d S )Nrª   r   )r“   ÚlowerÚ
startswithÚ_FILE_EXTENSION_HANDLERS)Ú	extensionr#   Úexts      r%   Úregister_file_extensionrÂ     si   € Øð ˜˜ØˆÝ
ˆi‰.Œ.×
Ò
Ñ
 Ô
 €CØ
‡~‚~�cÑÔð Ø�!�"�"ŒgˆØð ØˆØ$+Õ˜SÑ!Ð!Ð!r'   c                 ó   — t          | t          ¦  «        sd S t          j                             | ¦  «        d                              ¦   «                              d¦  «        }|sd S t                               |¦  «        S )Nr   rª   )	r    r“   ÚosÚpathÚsplitextr½   Úlstripr¿   rK   )Ú	file_pathrÁ   s     r%   Úget_extension_handlerrÉ   &  sn   € Ý�i¥Ñ%Ô%ð ØˆtÝ
Œ'×
Ò
˜9Ñ
%Ô
% aÔ
(×
.Ò
.Ñ
0Ô
0×
7Ò
7¸Ñ
<Ô
<€CØð ØˆtÝ#×'Ò'¨Ñ,Ô,Ð,r'   c                 ó8  — t          | ¦  «        }|€| S t          |dd ¦  «        }t          |¦  «        s]t          j                             | ¦  «        d                              ¦   «                              d¦  «        }t          d|› d�¦  «        ‚ || ¦  «        S )NÚ	normalizer   rª   zMissing normalize for *.z handler)	rÉ   r]   rc   rÄ   rÅ   rÆ   r½   rÇ   Ú	Exception)rÈ   r#   Ú
normalizerrÁ   s       r%   Únormalize_extension_pathrÎ   /  sš   € Ý# IÑ.Ô.€GØ€ØÐÝ˜ +¨tÑ4Ô4€JÝ�JÑÔð BÝŒg×Ò˜yÑ)Ô)¨!Ô,×2Ò2Ñ4Ô4×;Ò;¸CÑ@Ô@ˆÝÐ@°3Ð@Ð@Ð@ÑAÔAÐAØˆ:�iÑ Ô Ð r'   c                 ó   — | €dS t          | t          ¦  «        r| j                             ¦   «         S t	          | dd ¦  «        }t          |t
          ¦  «        r|r|                     ¦   «         S t          | ¦  «                             ¦   «         S )NÚ rw   )r    r!   rw   r½   r]   r“   )rx   rw   s     r%   Ú_normalize_kind_keyrÑ   9  s‚   € Ø€}ØˆrÝ�%�Ñ'Ô'ð "ØŒz×ÒÑ!Ô!Ð!Ý�5˜& $Ñ'Ô'€DÝ�$�ÑÔð  ð Ø�zŠz‰|Œ|ÐÝˆu‰:Œ:×ÒÑÔÐr'   c                 óÆ   — t          | ¦  «        }|sd S |t          v rt          |         S d|v rt          d         S d|v sd|v rt          d         S d|v rt          d         S d S )Nr   Úfloat8r   r   )rÑ   Ú_DEFAULT_KIND_PRIORITIES)ÚkindÚkeys     r%   Ú_priority_for_kindr×   D  s~   € Ý
˜dÑ
#Ô
#€CØð ØˆtØ
Õ&Ð&Ð&Ý'¨Ô,Ð,Ø�SÐÐÝ'¨
Ô3Ð3Ø�3€€˜% 3˜,˜,Ý'¨Ô.Ð.Ø�€}€}Ý'¨Ô/Ð/Øˆ4r'   c                 óÀ   — dD ]@}t          | |d ¦  «        }t          |t          t          f¦  «        rt          |¦  «        c S ŒAt	          t          | ¦  «        ¦  «        S )N)ÚHANDLER_PRIORITYÚPRIORITYÚpriority)r]   r    ÚintÚfloatr×   r­   )r#   Úattrrx   s      r%   Ú_get_handler_priorityrß   S  se   € Ø<ð ð ˆÝ˜  tÑ,Ô,ˆÝ�e�c¥5˜\Ñ*Ô*ð 	Ý�u‘:”:ÐÐÐð	å�m¨GÑ4Ô4Ñ5Ô5Ð5r'   c                 ó¤   — | sd S d }d }| D ]<}d }|�|                      |¦  «        }|€t          |¦  «        }|€d}|�||k     r|}|}Œ=|p| d         S )Néè  r   )rK   r×   )ÚnamesÚpriority_mapÚ	best_nameÚbest_priorityrw   rÛ   s         r%   Ú_select_primary_kindræ   [  sŽ   € Øð ØˆtØ€IØ€MØð 
ð 
ˆØˆØÐ#Ø#×'Ò'¨Ñ-Ô-ˆHØÐÝ)¨$Ñ/Ô/ˆHØÐØˆHØÐ  H¨}Ò$<Ð$<Ø$ˆMØˆIøØÐ ˜˜aœÐ r'   c                 ó¢  — |s| S | €i } |                      ¦   «         D ]±\  }}|| vr|| |<   Œ| |         |k    rŒt          | |         t          ¦  «        r*t          | |         pi                      d¦  «        ¦  «        nd }t          |t          ¦  «        r$t          |pi                      d¦  «        ¦  «        nd }|€d}|€d}||k     r|| |<   Œ²| S )NrR   rá   )rg   r    Údictr×   rK   )ÚtargetÚsourcerÖ   ÚcfgÚcurrent_priorityÚincoming_prioritys         r%   Ú_merge_quant_mapsrî   n  s	  € Øð ØˆØ€~ØˆØ—L’L‘N”Nð ð ‰ˆˆSØ�fÐÐØˆF�3‰KØØ�#Œ;˜#ÒÐØÝU_Ð`fÐgjÔ`kÕmqÑUrÔUrÐ|Õ-¨v°c¬{Ð/@¸b×.EÒ.EÀiÑ.PÔ.PÑQÔQÐQÐx|ÐÝNXÐY\Õ^bÑNcÔNcÐmÕ.°°	°r¯ª¸yÑ/IÔ/IÑJÔJÐJÐimÐØÐ#Ø#ÐØÐ$Ø $ÐØÐ/Ò/Ð/ØˆF�3‰KøØ€Mr'   c                 óX   — | sdS t          | t          ¦  «        r| fS t          | ¦  «        S )Nr±   )r    r“   Útuple)rx   s    r%   Ú_as_field_tuplerñ   „  s4   € Øð ØˆrÝ�%�ÑÔð ØˆxˆÝ�‰<Œ<Ðr'   c                 ó  — |                       d¦  «        p|                       d¦  «        pi }|r|                      |¦  «        }|�|S |                       d¦  «        r|dv rt          S |r|                      |¦  «        S d S )NÚsplit_handlersÚfield_handlersÚinterleaved©r[   r=   )rK   Ú_split_interleaved)ÚinfoÚfieldÚdefault_handlersr¦   r#   s        r%   Ú_get_split_handlerrû   Œ  s•   € Ø�xŠxÐ(Ñ)Ô)ÐM¨T¯XªXÐ6FÑ-GÔ-GÐMÈ2€HØð Ø—,’,˜uÑ%Ô%ˆØÐØˆNØ‡x‚x�ÑÔð " 5Ð,>Ð#>Ð#>Ý!Ð!Øð +Ø×#Ò# EÑ*Ô*Ð*Øˆ4r'   c                 ó\   ‡ ‡‡— ˆˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         S )Nc           	      óp   •— g | ]2}t          j        ‰|t          ‰¦  «        ‰d          d         ¦  «        ‘Œ3S )rø   Úattention_head_dim)r   Úgatherr4   )r²   ÚslotÚcontextÚsplit_sizesÚsrcs     €€€r%   r´   z&_split_interleaved.<locals>.<listcomp>›  sO   ø€ ð  Fð  Fð  FÐei�IÔ˜S $­¨KÑ(8Ô(8¸'À&¼/ÐJ^Ô:_Ñ`Ô`ð  Fð  Fð  Fr'   )Úranger4   ©r  Údimr  r  s   ` ``r%   r÷   r÷   ™  sj   øøø€ ð Fð  Fð  Fð  Fð  Fð  FÕmrÕsvð  xCñ  tDô  tDñ  nEô  nEð  Fñ  Fô  Fð  Fr'   c                 óÞ   — t          |                      d¦  «        p|                      d¦  «        ¦  «        }|r|S |r/t          t          |                     ¦   «         ¦  «        ¦  «        fS dS )NÚbase_fieldsÚ
base_fieldr±   )rñ   rK   ÚnextÚiterrE   )rø   Úsplit_fieldsr  s      r%   Ú_get_split_base_fieldsr  ž  sl   € Ý! $§(¢(¨=Ñ"9Ô"9Ð"S¸T¿XºXÀlÑ=SÔ=SÑTÔT€KØð ØÐØð 2Ý•T˜,×+Ò+Ñ-Ô-Ñ.Ô.Ñ/Ô/Ð1Ð1Øˆ2r'   c           	      ó  — t          |                      d¦  «        p|                      d¦  «        ¦  «        }t          t          t	          |¦  «                             t          |¦  «        ¦  «        ¦  «        ¦  «        S )NÚshare_fieldsÚshared_fields)rñ   rK   rð   ÚsortedrC   Úunion)rø   r  Úinfo_fieldss      r%   Ú_merge_share_fieldsr  §  s`   € Ý! $§(¢(¨>Ñ":Ô":Ð"W¸d¿hºhÀÑ>WÔ>WÑXÔX€KÝ•�˜KÑ(Ô(×.Ò.­¸|Ñ/LÔ/LÑMÔMÑNÔNÑOÔOÐOr'   c                óÎ   — | €d S 	  | ||||¬¦  «        }n# t           $ r Y d S w xY wt          |t          t          f¦  «        r t	          |¦  «        t	          |¦  «        k    rd S |S )Nr  )rÌ   r    r3   rð   r4   )r#   r  r  r  r  Úchunkss         r%   Ú_call_split_handlerr  ¬  s…   € Ø€ØˆtðØ�˜S c°{ÈGÐTÑTÔTˆˆøÝð ð ð Øˆtˆtðøøøå�f�t¥U˜mÑ,Ô,ð µ°F±´½sÀ;Ñ?OÔ?OÒ0OÐ0OØˆtØ€Ms   † –
$£$c                 ó   — | D ]}|||<   Œd S r   r±   )Úsub_mapsrw   rx   Úsub_maps       r%   Ú_fill_sub_mapsr  ¸  s&   € Øð ð ˆØˆ�‰ˆðð r'   c                 ó0  — t          | dd ¦  «        }|€d S  |¦   «         }|sd S t          |t          ¦  «        r!t          |                     ¦   «         ¦  «        }g }|D ]3\  }}|€Œt          j        |¦  «        r|                     ||f¦  «         Œ4|r|nd S )NÚget_quantized_subtensors)r]   r    rè   r3   rg   r,   rZ   r•   )ÚpÚgetterÚsub_tensorsÚoutrw   r¹   s         r%   Ú_get_quantized_subtensorsr"  ½  s¹   € Ý�QÐ2°DÑ9Ô9€FØ€~ØˆtØ�&‘(”(€KØð ØˆtÝ�+�tÑ$Ô$ð 0Ý˜;×,Ò,Ñ.Ô.Ñ/Ô/ˆØ
€CØ#ð 'ð '‰ˆˆfØˆ>ØÝŒ?˜6Ñ"Ô"ð 	'Ø�JŠJ˜˜f�~Ñ&Ô&Ð&øØÐˆ3ˆ3˜4Ðr'   Fc                 ój  ‡ ‡‡)‡*‡+‡,— |s|r‰ g fn‰ S ‰pi Š|pd}|pi }ˆfd„|                      ¦   «         D ¦   «         }d„ }	i }
‰                      ¦   «         D ]s}|                      ¦   «         D ]\\  }}|D ]T}|› d|› �}|                     |¦  «        sŒ|d t          d|z   ¦  «         …         Š*‰*                     |¦  «        r||
‰*<    Œ]Œt|�/t	          |¦  «        Š)ˆ)fd„|
                      ¦   «         D ¦   «         }
|
s|r‰ g fn‰ S g }|
                      ¦   «         D �]\  Š*}|                     |¦  «        pi }|                     d¦  «        p+|                     d¦  «        p|                     d¦  «        pg }|sŒa|                     |¦  «        pt          |‰¦  «        }|                     d	¦  «        p|r|d
         nd }|r‰                      ‰*dz   |z   ¦  «        nd }|                     dd
¦  «        }t          |                     d¦  «        pg ¦  «        }|s´|€�Œ|                     ¦   «         |k    r' |	‰*› d|                     ¦   «         › d|› �¦  «         �ŒE| 	                    |¦  «        }|t          |¦  «        z  d
k    r" |	‰*› d|› dt          |¦  «        › �¦  «         �Œ’|t          |¦  «        z  gt          |¦  «        z  }n¿d |v r»|€�Œ¾|                     ¦   «         |k    r' |	‰*› d|                     ¦   «         › d|› �¦  «         �Œýt          d„ |D ¦   «         ¦  «        }|                     d ¦  «        }| 	                    |¦  «        |z
  }|d
k     s	||z  d
k    r |	‰*› d�¦  «         �Œb||z  Š+ˆ+fd„|D ¦   «         }t          |¦  «        }‰*d t          |¦  «         …         Š,ˆ,fd„|D ¦   «         }d
}ˆ*ˆ fd„t	          ‰                     ¦   «         ¦  «                             |¦  «        D ¦   «         }‰ ‰*||||||‰||||||dœ}t          ‰                      ¦   «         ¦  «        d„ |D ¦   «         z   } | D �]x\  }!}"|                     |!¦  «        }#|#€Œ|"€|D ]}$|$dz   |!z   }%|%‰ vr
|#‰ |%<   |dz  }ŒŒ<t          ||!|¦  «        }&t          |&|#|"|t          ||!¬¦  «        ¬¦  «        }'|'€ž|#                     ¦   «         |"k    r) |	‰*› d|!› d|#                     ¦   «         › d|"› �¦  «         Œ³|# 	                    |"¦  «        |k    r- |	‰*› d|!› d|"› d|# 	                    |"¦  «        › d|› �	¦  «         Œùt!          j        |#||"¬¦  «        }'t%          ||'¦  «        D ]W\  }$}(t!          j        |(¦  «        r(|(                     ¦   «         s|(                     ¦   «         }(|$dz   |!z   }%|%‰ vr
|(‰ |%<   |dz  }ŒX�Œz|ret          ‰                     ¦   «         ¦  «        t          |¦  «        z   D ]}!‰                      ‰*dz   |!z   d ¦  «         Œ|                     ‰*¦  «         �Œ|r‰ |fS ‰ S )Nr±   c                 ó<   •— i | ]\  }}|t          |pi ‰¦  «        “ŒS r±   )r  )r²   Úsuffixrø   r  s      €r%   ú
<dictcomp>z#sd_split_linear.<locals>.<dictcomp>Þ  s>   ø€ ð ð ð áˆF�Dð 	Õ& t z¨r°<Ñ@Ô@ðð ð r'   c                 ó   — d S r   r±   )Úmsgs    r%   Ú_skipzsd_split_linear.<locals>._skipâ  s   € Øˆr'   rª   c                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r±   r±   )r²   rG   r%  Úallowed_sets      €r%   r&  z#sd_split_linear.<locals>.<dictcomp>ó  s)   ø€ ÐWÐWÐW¡, $¨À4È;ÐCVÐCV��vÐCVÐCVÐCVr'   Úmapped_modulesÚmapped_suffixesÚmappedÚ
size_fieldr   Ú	split_dimr  z: dim=z split_dim=z
: out_dim=z not divisible by c              3   ó   K  — | ]}|®|V — Œ	d S r   r±   )r²   Úsizes     r%   rº   z"sd_split_linear.<locals>.<genexpr>  s'   è è € ÐIÐI ¸Ð8H˜Ð8HÐ8HÐ8HÐ8HÐIÐIr'   z: cannot resolve split sizesc                 ó   •— g | ]}|€‰n|‘Œ	S r   r±   )r²   r2  Úfills     €r%   r´   z#sd_split_linear.<locals>.<listcomp>  s!   ø€ ÐRÐRÐR¸d 4 <˜4˜4°TÐRÐRÐRr'   c                 ó   •— g | ]}‰|z   ‘ŒS r±   r±   ©r²   rw   rm   s     €r%   r´   z#sd_split_linear.<locals>.<listcomp>!  s   ø€ Ð9Ð9Ð9¨$˜ ™Ð9Ð9Ð9r'   c                 óH   •— i | ]}|‰                      ‰d z   |z   ¦  «        “ŒS )rª   )rK   )r²   rù   rG   rl   s     €€r%   r&  z#sd_split_linear.<locals>.<dictcomp>$  s@   ø€ ð 
ð 
ð 
àð �:—>’> $¨¡*¨uÑ"4Ñ5Ô5ð
ð 
ð 
r'   )rl   rG   r%  r  Útotalr.  Útarget_basesÚverboseLevelr  r  Úfield_tensorsr/  Úsize_tensorr0  rø   c                 ó   — g | ]}|d f‘ŒS r   r±   )r²   rù   s     r%   r´   z#sd_split_linear.<locals>.<listcomp>9  s   € Ð3\Ð3\Ð3\Àe°U¸D°MÐ3\Ð3\Ð3\r'   r   )rù   r  z: size(ú)=z
 expected=©r  )rg   rE   Úendswithr4   rC   rK   r  r3   r  r2  ÚsumÚcountr  rû   r  rè   r,   r¬   ÚziprZ   Úis_contiguousÚ
contiguousÚpopr•   )-rl   Ú	split_mapr  r  r:  ró   Úallowed_basesÚreturn_split_basesÚbase_fields_by_suffixr)  ÚbasesrÖ   r%  r  r	  Úsuffix_tokenÚsplit_basesrø   r.  r/  r<  r0  r  Úout_dimÚknownÚ
none_countÚ	remainingr8  r9  Úaddedr;  Úbase_ctxÚfields_iterrù   r  r  Útarget_baseÚdest_keyr#   r  Úchunkr+  rG   r4  rm   s-   ` `                                      @@@@r%   Úsd_split_linearrX  Ï  s  øøøøøø€ ð ð FØ#5ÐE�
˜BÐÐ¸:ÐEØÐ% 2€LØÐ% 2€LØ#Ð) r€Nðð ð ð à%ŸOšOÑ-Ô-ðñ ô Ððð ð ð €EØ�ŠÑ Ô ð 	ð 	ˆØ#8×#>Ò#>Ñ#@Ô#@ð 	ð 	ÑˆF�KØ)ð ð �
Ø"(Ð7Ð7¨:Ð7Ð7�Ø—|’| LÑ1Ô1ð ØØÐ3�c #¨
Ñ"2Ñ3Ô3Ð3Ð3Ô4�Ø—=’= Ñ(Ô(ð )Ø"(�E˜$‘KØøð	ð Ð Ý˜-Ñ(Ô(ˆØWÐWÐWÐW°%·+²+±-´-ÐWÑWÔWˆàð FØ#5ÐE�
˜BÐÐ¸:ÐEà€KàŸš™œð f%ñ f%‰ˆˆfØ�}Š}˜VÑ$Ô$Ð*¨ˆØ—’Ð*Ñ+Ô+Ðf¨t¯xªxÐ8IÑ/JÔ/JÐfÈdÏhÊhÐW_ÑN`ÔN`ÐfÐdfˆØð 	Øà+×/Ò/°Ñ7Ô7ÐeÕ;QÐRVÐXdÑ;eÔ;eˆØ—X’X˜lÑ+Ô+ÐXÀ+Ð0W°¸A´°ÐSWˆ
ØAKÐU�j—n’n T¨C¡Z°*Ñ%<Ñ=Ô=Ð=ÐQUˆØ—H’H˜[¨!Ñ,Ô,ˆ	Ý˜4Ÿ8š8 MÑ2Ô2Ð8°bÑ9Ô9ˆØð 	SØÐ"ÙØ�ŠÑ Ô  IÒ-Ð-Ø�˜ÐNÐN [§_¢_Ñ%6Ô%6ÐNÐNÀ9ÐNÐNÑOÔOÐOÙØ!×&Ò& yÑ1Ô1ˆGØ�˜V™œÑ$¨Ò)Ð)Ø�˜ÐQÐQ¨ÐQÐQÅCÈÁKÄKÐQÐQÑRÔRÐRÙØ"¥c¨&¡k¤kÑ1Ð2µS¸±[´[Ñ@ˆKˆKØ�[Ð Ð ØÐ"ÙØ�ŠÑ Ô  IÒ-Ð-Ø�˜ÐNÐN [§_¢_Ñ%6Ô%6ÐNÐNÀ9ÐNÐNÑOÔOÐOÙÝÐIÐI¨ÐIÑIÔIÑIÔIˆEØ$×*Ò*¨4Ñ0Ô0ˆJØ#×(Ò(¨Ñ3Ô3°eÑ;ˆIØ˜1Š}ˆ} 	¨JÑ 6¸!Ò ;Ð ;Ø�˜Ð;Ð;Ð;Ñ<Ô<Ð<ÙØ 
Ñ*ˆDØRÐRÐRÐRÀkÐRÑRÔRˆKå�KÑ Ô ˆØ�n�˜V™œ˜�nÔ%ˆØ9Ð9Ð9Ð9°&Ð9Ñ9Ô9ˆØˆð
ð 
ð 
ð 
ð 
å˜\×.Ò.Ñ0Ô0Ñ1Ô1×7Ò7¸ÑEÔEð
ñ 
ô 
ˆð
 %ØØØ&ØØØ(Ø(Ø(Ø(Ø*Ø$Ø&Ø"Øð
ð 
ˆõ" ˜<×-Ò-Ñ/Ô/Ñ0Ô0Ð3\Ð3\È|Ð3\Ñ3\Ô3\Ñ\ˆØ%ð !	ñ !	‰JˆE�3Ø×#Ò# EÑ*Ô*ˆCØˆ{ØØˆ{Ø#/ð #ð #�KØ*¨SÑ0°5Ñ8�HØ zÐ1Ð1Ø/2˜
 8Ñ,Ø ™
˜øØÝ(¨¨u°nÑEÔEˆGÝ(ØØØØ'Ý˜X¨UÐ3Ñ3Ô3ðñ ô ˆFð ˆ~Ø—7’7‘9”9 Ò#Ð#Ø�E˜TÐLÐL EÐLÐL°·²±´ÐLÐLÀsÐLÐLÑMÔMÐMØØ—8’8˜C‘=”= EÒ)Ð)Ø�E˜TÐYÐY EÐYÐY°#ÐYÐY¸¿ºÀ#¹¼ÐYÐYÐRWÐYÐYÑZÔZÐZØÝœ S¨+¸3Ð?Ñ?Ô?�Ý&)¨,¸Ñ&?Ô&?ð ð Ñ"�˜UÝ”? 5Ñ)Ô)ð /°%×2EÒ2EÑ2GÔ2Gð /Ø!×,Ò,Ñ.Ô.�EØ&¨Ñ,¨uÑ4�Ø :Ð-Ð-Ø+0�J˜xÑ(Ø˜Q‘J�Eøñð ð 	%Ý˜l×/Ò/Ñ1Ô1Ñ2Ô2µT¸,Ñ5GÔ5GÑGð 9ð 9�Ø—’˜t c™z¨EÑ1°4Ñ8Ô8Ð8Ð8Ø×Ò˜tÑ$Ô$Ð$ùØð 'Ø˜;Ð&Ð&ØÐr'   c                 ó^  — ddl m} |pi }|pd}d„ |                      ¦   «         D ¦   «         }|                     ¦   «         D �]ê\  }}|d         }|d         }	t	          ||¦  «        }
|                     d¦  «        pi }|                     ¦   «         D �]—\  }}|                     d|z   ¦  «        �rx||d t          |¦  «        t          |¦  «        z
  d	z
  …                  }|j        }t          |d
d ¦  «        }t          |t          ¦  «        �r|                     d¦  «        }t          |	¦  «        |k    rt          d|	› d|› d|› d�¦  «        ‚|                     d	¦  «        }|�I|                     ¦   «         dk    r1|                     d¦  «        |k    rt!          j        ||	d¬¦  «        }n|gt          |	¦  «        z  }t%          |¦  «        }|st          d|› d�¦  «        ‚d„ |	D ¦   «         }d„ |D ¦   «         }|||||	||||dœ	}|D �]†\  }}|�||
v s|                     ¦   «         d	k    rt'          |||¦  «         Œ6|                     |¦  «        }|€R|                     d¦  «        |k    rd}n6|                     ¦   «         d	k    r|                     d	¦  «        |k    rd	}nd}t)          |||¦  «        }t+          ||||	t-          ||¬¦  «        ¬¦  «        }|€–|                     ¦   «         |k    s|                     |¦  «        |k    rN|                     ¦   «         |k    rdn|                     |¦  «        }t          d|› d|› d|› d|› d|› d�¦  «        ‚t!          j        ||	|¬¦  «        }t/          ||¦  «        D ]
\  }}|||<   Œ�Œˆt          |j        dd ¦  «        } t3          | ¦  «        st          d|j        j        › d�¦  «        ‚t7          j        | ¦  «        }!t          |dd ¦  «        t          |d d ¦  «        |                     ¦   «         |j        t          |d!d ¦  «        |j        t          |d"d ¦  «        |j         d#œ}"|j        }#t/          ||	||¦  «        D �]¬\  }$}%}}& |¦   «         5   |#||%|d ud$|j        |j!        |j"        |j#        d%¬&¦	  «	        }'d d d ¦  «         n# 1 swxY w Y   tI          |                     ¦   «         ¦  «        }(|(r|%|(d<   tK          |(¦  «        |"d'<   i })g }*|!j&                             ¦   «         D ]W\  }}+|d(k    rŒ||v r||         |)|<   Œ||"v r|"|         �|"|         |)|<   Œ4|+j'        |+j(        u r|* )                    |¦  «         ŒX|*rt          d)|› d|$› d*|*› d�¦  «        ‚ | di |)¤Ž},t           j*         +                    |,|j        ¬+¦  «        |'_        |&�$t           j*         +                    |&¦  «        |'_,        |j#        |'_#        |j!        |'_!        |j"        |'_"        t[          ||$|'¦  «         �Œ®nþt!          j        ||	d¬¦  «        }-|�t!          j        ||	d¬¦  «        nd gt          |	¦  «        z  }&t/          ||-|&¦  «        D ]©\  }$},}t           j*         .                    |j/        |,                     d¦  «        |d u|j         |j        ¬,¦  «        }'t           j*         +                    |,¦  «        |'_        |�$t           j*         +                    |¦  «        |'_,        t[          ||$|'¦  «         Œªta          ||¦  «         �Œ™�Œìd S )-Nr   )Úinit_empty_weightsr±   c                 ó   — i | ]\  }}||“Œ	S r±   r±   )r²   ÚkÚms      r%   r&  z(split_linear_modules.<locals>.<dictcomp>l  s   € Ð<Ð<Ð<™d˜a �Q˜Ð<Ð<Ð<r'   r,  r  Ú
split_dimsrª   r   r=   zSplit sizes z do not match out_features z for 'z'.r?  z&Unable to split quantized weight for 'c                 ó*   — g | ]}t          ¦   «         ‘ŒS r±   )rè   )r²   Ú_s     r%   r´   z(split_linear_modules.<locals>.<listcomp>†  s   € Ð<Ð<Ð<¨1¥¡¤Ð<Ð<Ð<r'   c                 ó   — i | ]\  }}||“Œ	S r±   r±   )r²   rw   r¹   s      r%   r&  z(split_linear_modules.<locals>.<dictcomp>‡  s   € Ð$RÐ$RÐ$R±l°d¸F T¨6Ð$RÐ$RÐ$Rr'   )	rk   Úmodule_nameÚmodule_suffixr,  r  r`   r_   r;  rø   )r0  r  zn/azCannot split 'z' quantized tensor 'z': expected size(r>  z, got ÚcreatezQuantized weight class 'z' has no create()r   Úaxisrb   Ú_group_size)r   re  ÚstriderQ   rb   Úrequires_gradÚ
group_sizerP   ÚcpuTrO   r2  r�   z(Unable to rebuild quantized weight for 'z': missing )rh  )r=   rP   rQ   )1Ú
acceleraterZ  Únamed_modulesrg   r  rK   r@  r4   r[   r]   r    r   r2  rA  Ú
ValueErrorr  r,   r¬   r"  r  rû   r  rè   rC  r‚   rc   rŒ   r)   Ú	signaturerg  rQ   rh  rP   ra   rb   rT   r3   rð   Ú
parametersÚdefaultÚemptyr•   r-   Ú	Parameterr=   rh   r.   r_   Údelattr).ÚmodelÚmapró   r  rZ  Úmodules_dictrc  Ú
split_infor,  r  Úsplit_share_fieldsr^  r\  rk   Úparent_moduler[   r=   Úout_features_totalr_   Ú
sub_biasesr   r  r;  rS  rw   r¹   r0  r#   r  Úgot_sizer  rW  Ú	create_fnÚ
create_sigÚbase_kwargsr8   Úsub_nameÚsub_sizeÚsub_biasÚ
sub_moduler2  Úcreate_kwargsÚmissingÚparamÚ
sub_weightÚsub_datas.                                                 r%   Úsplit_linear_modulesr‰  f  sÛ  € Ø-Ð-Ð-Ð-Ð-Ð-à#Ð) r€NØÐ% 2€Là<Ð< e×&9Ò&9Ñ&;Ô&;Ð<Ñ<Ô<€LØ%(§Y¢Y¡[¤[ð O6ñ O6Ñ!ˆ�zØ#Ð$4Ô5ˆØ  Ô/ˆÝ0°¸\ÑJÔJÐØ—^’^ LÑ1Ô1Ð7°Rˆ
Ø%×+Ò+Ñ-Ô-ð J	6ñ J	6‰IˆAˆvØ�zŠz˜# Ñ-Ñ.Ô.ñ I6Ø ,¨QÐ/Kµ°A±´µs¸=Ñ7IÔ7IÑ0IÈ!Ñ0KÐ/KÔ-LÔ M�Øœ�Ý˜v v¨tÑ4Ô4�Ý˜f¥lÑ3Ô3ñ DEØ)/¯ª°Q©¬Ð&Ý˜;Ñ'Ô'Ð+=Ò=Ð=Ý(Ør¨;ÐrÐrÐSeÐrÐrÐmnÐrÐrÐrñô ð ð #)§+¢+¨a¡.¤.�KØÐ'¨D¯HªH©J¬J¸ªN¨N¸t¿yºyÈ¹|¼|ÐOaÒ?aÐ?aÝ%*¤[°°{ÈÐ%JÑ%JÔ%J˜
˜
à&* V­c°+Ñ.>Ô.>Ñ%>˜
å";¸FÑ"CÔ"C�KØ&ð YÝ(Ð)WÐRSÐ)WÐ)WÐ)WÑXÔXÐXØ<Ð<°Ð<Ñ<Ô<�HØ$RÐ$RÀkÐ$RÑ$RÔ$R�Mà"(Ø'(Ø)6Ø*8Ø'2Ø(:Ø'2Ø)6Ø *ð
 ð 
 �Hð )4ð 2ñ 2™˜˜fØ!˜>¨TÐ5GÐ-GÐ-GÈ6Ï:Ê:É<Ì<Ð[\ÒK\ÐK\Ý*¨8°T¸6ÑBÔBÐBØ$Ø$.§N¢N°4Ñ$8Ô$8˜	Ø$Ð,Ø%Ÿ{š{¨1™~œ~Ð1CÒCÐCØ,- 	 	Ø!'§¢¡¤°Ò!1Ð!1°f·k²kÀ!±n´nÐHZÒ6ZÐ6ZØ,- 	 	à,- 	Ý"4°ZÀÀ~Ñ"VÔ"V˜Ý!4Ø#Ø &Ø )Ø(3Ý$(¨¸YÐ$GÑ$GÔ$Gð"ñ "ô "˜ð "˜>Ø%Ÿzšz™|œ|¨yÒ8Ð8¸F¿KºKÈ	Ñ<RÔ<RÐVhÒ<hÐ<hØ4:·J²J±L´LÀIÒ4MÐ4M¨5¨5ÐSY×S^ÒS^Ð_hÑSiÔSi Ý&0ð%h°Qð %hð %hÈDð %hð %hØ5>ð%hð %hØBTð%hð %hØ\dð%hð %hð %hñ'"ô '"ð !"õ &+¤[°¸È)Ð%TÑ%TÔ%T˜FÝ.1°(¸FÑ.CÔ.Cð 2ð 2™N˜G UØ,1˜G D™M˜Mñ2õ !(¨Ô(8¸(ÀDÑ IÔ I�IÝ# IÑ.Ô.ð rÝ(Ð)pÀFÔDTÔD]Ð)pÐ)pÐ)pÑqÔqÐqÝ!(Ô!2°9Ñ!=Ô!=�Jå!(¨°¸$Ñ!?Ô!?Ý '¨°¸Ñ =Ô =Ø"(§-¢-¡/¤/Ø!'¤Ý,3°FÐ<NÐPTÑ,UÔ,UØ)/Ô)=Ý&-¨f°mÀTÑ&JÔ&JØ"(¤-ð	#ð 	#�Kð #)Ô"2�KÝADØ&¨°X¸zñBô Bð *Eñ *EÑ=˜ (¨G°Xð 0Ð/Ñ1Ô1ð ð Ø)4¨Ø +Ø (Ø%)°Ð%5Ø',Ø&,¤lØ(.Ô(;Ø,2Ô,CØ*0Ô*:Ø/3ð
*ñ 
*ô 
*˜Jðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ  $ F§K¢K¡M¤MÑ2Ô2˜Øð /Ø&.˜D ™GÝ.3°D©k¬k˜ FÑ+Ø(*˜Ø"$˜Ø+5Ô+@×+FÒ+FÑ+HÔ+Hð 5ð 5™K˜D %Ø# vš~˜~Ø (Ø# w˜˜Ø6=¸d´m ¨dÑ 3Ð 3Ø!%¨Ð!4Ð!4¸ÀTÔ9JÐ9VØ6AÀ$Ô6G ¨dÑ 3Ð 3Ø!&¤°%´+Ð!=Ð!=Ø '§¢¨tÑ 4Ô 4Ð 4øØ"ð Ý",ð!6È1ð !6ð !6Èxð !6ð !6Ø+2ð!6ð !6ð !6ñ#ô #ð ð &/ YÐ%?Ð%?°Ð%?Ð%?˜
Ý,1¬H×,>Ò,>¸zÐY_ÔYmÐ,>Ñ,nÔ,n˜
Ô)Ø#Ð/Ý.3¬h×.@Ò.@ÀÑ.JÔ.J˜JœOØ/5Ô/?˜
Ô,Ø28Ô2E˜
Ô/Ø6<Ô6M˜
Ô3Ý ¨x¸ÑDÔDÐDÑDðU*EõX  %œ{¨6°;ÀAÐFÑFÔF�HØHLÐHX�uœ{¨4°À!ÐDÑDÔDÐDÐ_cÐ^dÕgjÐkvÑgwÔgwÑ^w�HÝ<?ÀÐPXÐZbÑ<cÔ<cð Eð EÑ8˜ *¨jÝ%*¤X§_¢_Ø"Ô.Ø&ŸOšO¨AÑ.Ô.Ø!%¨TÐ!1Ø#)¤=Ø"(¤,ð &5ñ &ô &˜
õ -2¬H×,>Ò,>¸zÑ,JÔ,J˜
Ô)Ø%Ð1Ý.3¬h×.@Ò.@ÀÑ.LÔ.L˜JœOÝ ¨x¸ÑDÔDÐDÐDÝ˜ }Ñ5Ô5Ð5ùñUJ	6ðO6ð O6s   Ñ>+R5	Ò5R9Ò<R9)Úmetadatac                óR   — dt          j        | ¦  «        j        v r||d<    | |i |¤ŽS )NrŠ  )r)   rn  ro  )ÚfnrŠ  ÚargsÚkwargss       r%   Ú_call_quant_handlerr�  ÿ  s:   € Ø•WÔ& rÑ*Ô*Ô5Ð5Ð5Ø%ˆˆzÑØˆ2ˆtÐ�vÐÐÐr'   c                 óV  — g }i }i }t          ¦   «         D ]k}t          |j        | ||¬¦  «        }t          |¦  «        }|||<   |                     dd¦  «        r'|                     |¦  «         t          |¦  «        ||<   Œlt          ||¦  «        pd}	|	||t          |¦  «        dk    dœS )N©r:  rŠ  ÚmatchedFÚnoner   )rÕ   ÚfoundÚdetailsÚmixed)	r2   r�  rŸ   r­   rK   r•   rß   ræ   r4   )
rl   r:  rŠ  Úmatchesr•  Ú
prioritiesr#   Úresultrw   rÕ   s
             r%   Údetect_safetensors_formatrš    sÂ   € Ø€GØ€GØ€JÝ!Ñ#Ô#ð >ð >ˆÝ$ W¤^°ZÈlÐemÐnÑnÔnˆÝ˜WÑ%Ô%ˆØˆ�‰Ø�:Š:�i Ñ'Ô'ð 	>Ø�NŠN˜4Ñ Ô Ð Ý4°WÑ=Ô=ˆJ�tÑøÝ ¨Ñ4Ô4Ð>¸€DØ 7°wÍÈWÉÌÐXYÒIYÐZÐZÐZr'   c           	      ó¦  ‡— t          | ||¬¦  «        }|                     dd¦  «        }|                     dg ¦  «        pg }|dv r	|s| i ||dœS t          ¦   «         }d„ |D ¦   «         Š|st          d|› d	�¦  «        ‚t	          |¦  «        d
k    r†‰                     |d         ¦  «        }|€t          d|› d	�¦  «        ‚|                     di ¦  «                             |d         i ¦  «        }	t          |j        | |||	|¬¦  «        }
||
d<   ||
d<   |
S ˆfd„}t          ||¬¦  «        }| }i }|D ]˜}‰                     |¦  «        }|€Œ|                     di ¦  «                             |i ¦  «        }	t          |j        ||||	|¬¦  «        }
|
                     d|¦  «        }t          ||
                     di ¦  «        ¦  «        }Œ™||||dœS )Nr‘  rÕ   r“  r”  )r“  Úquanto)rl   Ú	quant_maprÕ   r•  c                 ó.   — i | ]}t          |¦  «        |“ŒS r±   )r­   )r²   r#   s     r%   r&  z&detect_and_convert.<locals>.<dictcomp>  s"   € ÐKÐKÐK°w•= Ñ)Ô)¨7ÐKÐKÐKr'   z!Unsupported quantization format 'ú'r   r   r•  )Údefault_dtyper:  Ú	detectionrŠ  c                 ó‚   •— ‰                      | ¦  «        }|�t          |¦  «        nd }|€t          | ¦  «        }|€d}|S )Nrá   )rK   rß   r×   )rw   r#   rÛ   Úhandler_maps      €r%   Ú_match_priorityz+detect_and_convert.<locals>._match_priority1  sO   ø€ Ø—/’/ $Ñ'Ô'ˆØ5<Ð5HÕ(¨Ñ1Ô1Ð1ÈdˆØÐÝ)¨$Ñ/Ô/ˆHØÐØˆHØˆr'   ©rÖ   rl   r�  )	rš  rK   r2   r¥   r4   r�  r    r  rî   )rl   r   r:  rŠ  rø   rÕ   r—  r¦   r#   r¡  Úconvr¤  Úordered_matchesÚmerged_stateÚ
merged_maprw   r£  s                   @r%   Údetect_and_convertrª    sJ  ø€ Ý$ Z¸lÐU]Ð^Ñ^Ô^€DØ�8Š8�F˜FÑ#Ô#€DØ�hŠh�w Ñ#Ô#Ð) r€GØÐ!Ð!Ð!¨'Ð!Ø(°rÀ4ÐTXÐYÐYÐYåÑÔ€HØKÐKÀ(ÐKÑKÔK€KØð HÝÐF¸tÐFÐFÐFÑGÔGÐGå
ˆ7�|„|�qÒÐØ—/’/ '¨!¤*Ñ-Ô-ˆØˆ?ÝÐJÀ4ÐJÐJÐJÑKÔKÐKØ—H’H˜Y¨Ñ+Ô+×/Ò/°¸´
¸BÑ?Ô?ˆ	Ý"ØÔ%ØØ'Ø%ØØð
ñ 
ô 
ˆð ˆˆV‰ØˆˆY‰Øˆðð ð ð ð õ ˜W¨/Ð:Ñ:Ô:€OØ€LØ€JØð Nð NˆØ—/’/ $Ñ'Ô'ˆØˆ?ØØ—H’H˜Y¨Ñ+Ô+×/Ò/°°bÑ9Ô9ˆ	Ý"ØÔ%ØØ'Ø%ØØð
ñ 
ô 
ˆð —x’x ¨lÑ;Ô;ˆÝ& z°4·8²8¸KÈÑ3LÔ3LÑMÔMˆ
ˆ
Ø&°ZÈÐZ^Ð_Ð_Ð_r'   c                  óx   — 	 ddl m}  n# t          $ r g cY S w xY wt          |                      ¦   «         ¦  «        S )Nr   )Úqtypes)Úoptimum.quanto.tensor.qtyper¬  rÌ   r  rE   )Ú_quanto_qtypess    r%   Úget_available_qtypesr¯  O  sZ   € ðØHÐHÐHÐHÐHÐHÐHøÝð ð ð Øˆ	ˆ	ˆ	ðøøøå�.×%Ò%Ñ'Ô'Ñ(Ô(Ð(s   ‚	 ‰—c                  ól  — t          ¦   «         } t          ¦   «         D ]–}t          |¦  «                             ¦   «         }|                      |¦  «         |                     d¦  «        r0t          |¦  «        dk    r|                      |dd …         ¦  «         d|v r|                      d¦  «         Œ—| S )NÚqr   rÓ   r   )rC   r¯  r“   r½   Úaddr¾   r4   )Úaliasesrw   rÖ   s      r%   Úget_available_qtype_aliasesr´  W  s¤   € Ý‰eŒe€GÝ$Ñ&Ô&ð ð ˆÝ�$‰iŒi�oŠoÑÔˆØ�Š�CÑÔÐØ�>Š>˜#ÑÔð 	!¥3 s¡8¤8¨a¢< <Ø�KŠK˜˜A˜B˜BœÑ Ô Ð Ø�sˆ?ˆ?Ø�KŠK˜ÑÔÐøØ€Nr'   c                 óþ  — | €g S t          | ¦  «                             ¦   «         }t          |¦  «        dk    rg S t          ¦   «         }||vrg S |h}|                     d¦  «        r0t          |¦  «        dk    r|                     |dd …         ¦  «         d|v s|dk    r|                     d¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         t          |t          d¬	¦  «        S )
Nr   r±  r   rÓ   r   Úint4r   T©rÖ   Úreverse)r“   r½   r4   r´  r¾   r²  r  )ÚquantizationrÖ   r³  Útokenss       r%   Úget_quantization_tokensr»  c  s  € ØÐØˆ	Ý
ˆlÑ
Ô
×
!Ò
!Ñ
#Ô
#€CÝ
ˆ3�x„x�1‚}€}Øˆ	Ý)Ñ+Ô+€GØ
�'ÐÐØˆ	ØˆU€FØ
‡~‚~�cÑÔð �s 3™xœx¨!š|˜|Ø�
Š
�3�q�r�r”7ÑÔÐØ�3€€˜# š,˜,Ø�
Š
�5ÑÔÐØ�€}€}Ø�
Š
�6ÑÔÐØ�€}€}Ø�
Š
�6ÑÔÐÝ�&�c¨4Ð0Ñ0Ô0Ð0r'   c                 ó&  — | €dS t          | ¦  «                             ¦   «         }|dv rdS t          ¦   «         }||vrdS d|v s|dk    rdS |                     d¦  «        r
|dd …         }|                     dd	¦  «                             ¦   «         S )
NrÐ   )rÐ   r“  Úbf16Úfp16r^   Úbfloat16rÓ   r   ÚFP8r±  r   r`  ú )r“   r½   r´  r¾   ÚreplaceÚupper)r¹  rÖ   r³  s      r%   Úget_quantization_labelrÄ  x  s©   € ØÐØˆrÝ
ˆlÑ
Ô
×
!Ò
!Ñ
#Ô
#€CØ
ÐAÐAÐAØˆrÝ)Ñ+Ô+€GØ
�'ÐÐØˆrØ�3€€˜# š,˜,ØˆuØ
‡~‚~�cÑÔð Ø�!�"�"ŒgˆØ�;Š;�s˜CÑ Ô ×&Ò&Ñ(Ô(Ð(r'   c                 óÞ   — 	 t           j                             t           j                             | ¦  «        ¦  «        S # t          $ r$ t          | ¦  «                             ¦   «         cY S w xY wr   )rÄ   rÅ   ÚnormcaseÚabspathrÌ   r“   r½   ©rÈ   s    r%   Ú_normalize_quant_file_keyrÉ  ‹  sd   € ð&ÝŒw×Ò¥¤§¢°	Ñ :Ô :Ñ;Ô;Ð;øÝð &ð &ð &Ý�9‰~Œ~×#Ò#Ñ%Ô%Ð%Ð%Ð%ð&øøøs   ‚;> ¾+A,Á+A,c                 óX   — | sd S t                                t          | ¦  «        ¦  «        S r   )Ú_quantization_filename_cacherK   rÉ  rÈ  s    r%   Ú get_cached_quantization_for_filerÌ  ’  s,   € Øð ØˆtÝ'×+Ò+Õ,EÀiÑ,PÔ,PÑQÔQÐQr'   c                 óZ   — | r|sd S t          | ¦  «        }|t          vr|t          |<   d S d S r   )rÉ  rË  )rÈ   rÕ   rÖ   s      r%   Úcache_quantization_for_filerÎ  ˜  sH   € Øð ˜Dð ØˆÝ
# IÑ
.Ô
.€CØ
Õ.Ð.Ð.Ø,0Õ$ SÑ)Ð)Ð)ð /Ð.r'   c                 óB  — g }t          ¦   «         D ]f}t          |dd ¦  «        }|€Œ	  || |¬¦  «        }n# t          $ r  || ¦  «        }Y nw xY w|r$|                     |t	          |¦  «        f¦  «         Œg|sd S |                     d„ ¬¦  «         |d         d         S )NÚ!detect_quantization_kind_for_file©r:  c                 ó&   — | d         �| d         ndS )Nr   rá   r±   ©Úentrys    r%   ú<lambda>z,_detect_kind_from_handlers.<locals>.<lambda>®  s   € ¨U°1¬XÐ-A  q¤ Àt€ r'   r¥  r   )r2   r]   Ú	TypeErrorr•   rß   Úsort)rÈ   r:  r”  r#   rŒ  rÕ   s         r%   Ú_detect_kind_from_handlersrØ     sÜ   € Ø€EÝ!Ñ#Ô#ð 	Að 	AˆÝ�WÐAÀ4ÑHÔHˆØˆ:Øð	!Ø�2�i¨lÐ;Ñ;Ô;ˆDˆDøÝð 	!ð 	!ð 	!Ø�2�i‘=”=ˆDˆDˆDð	!øøøàð 	AØ�LŠL˜$Õ 5°gÑ >Ô >Ð?Ñ@Ô@Ð@øØð ØˆtØ	‡J‚JÐKÐK€JÑLÔLÐLØ�Œ8�AŒ;Ðs   ¨6¶AÁAc                 ó°   — t          ¦   «         D ]F}t          |dd ¦  «        }|€Œ	  || |¬¦  «        }n# t          $ r  || ¦  «        }Y nw xY w|r|c S ŒGdS )NÚ'detect_quantization_label_from_filenamerÑ  rÐ   )r2   r]   rÖ  )rÈ   r:  r#   rŒ  Úlabels        r%   Ú_detect_label_from_handlersrÜ  ²  s“   € Ý!Ñ#Ô#ð 	ð 	ˆÝ�WÐGÈÑNÔNˆØˆ:Øð	"Ø�B�y¨|Ð<Ñ<Ô<ˆEˆEøÝð 	"ð 	"ð 	"Ø�B�y‘M”MˆEˆEˆEð	"øøøàð 	ØˆLˆLˆLð	àˆ2s   ¦4´AÁAc                 óª  — | sd S i }|                       ¦   «         D ]d}t          |t          ¦  «        sŒ|                     d¦  «        }|r|dk    rŒ6t	          |¦  «        }|sŒH|                     |d¦  «        dz   ||<   Œe|sd S d }d }d }|                     ¦   «         D ]4\  }}t          |¦  «        }	|	€d}	|�|	|k     s|	|k    r|�||k    r|	}|}|}Œ5|S )NrR   r“  r   r   rá   )r   r    rè   rK   rÑ   rg   r×   )
Úquantization_mapÚcountsrÔ  rR   rÖ   Úbest_keyrå   Ú
best_countrB  rÛ   s
             r%   Ú"_infer_qtype_from_quantization_maprâ  À  s/  € Øð ØˆtØ€FØ!×(Ò(Ñ*Ô*ð 	-ð 	-ˆÝ˜%¥Ñ&Ô&ð 	ØØ—)’)˜IÑ&Ô&ˆØð 	˜' VÒ+Ð+ØÝ! 'Ñ*Ô*ˆØð 	ØØ—j’j  aÑ(Ô(¨1Ñ,ˆˆs‰ˆØð ØˆtØ€HØ€MØ€JØ—l’l‘n”nð ð ‰
ˆˆUÝ% cÑ*Ô*ˆØÐØˆHàÐ!Ø˜-Ò'Ð'Ø˜MÒ)Ð)¨zÐ/AÀUÈZÒEWÐEWà$ˆMØˆJØˆHøØ€Or'   c                 óð   — t          | t          ¦  «        rGt          | ¦  «        �8t          | ¦  «        }t          |d¦  «        r|                     | ¦  «        S i i fS t          j        | ¦  «        \  }}||fS )NÚget_file_metadata)r    r“   rÉ   r¤   rä  r	   Úload_metadata_state_dict)rÈ   Úext_handlerrl   rŠ  s       r%   rå  rå  â  s   € å�)�SÑ!Ô!ð Õ&;¸IÑ&FÔ&FÐ&RÝ+¨IÑ6Ô6ˆÝ�;Ð 3Ñ4Ô4ð 	Ø×0Ò0°Ñ;Ô;Ð;à�r�6ˆMÝ'Ô@ÀÑKÔKÑ€J�Ø�xÐÐr'   c                 ó„  ‡ ‡— t          ‰ ¦  «        }|r|S ‰ rt          j                             ‰ ¦  «        sd S d‰ v s+d‰ v s't	          ‰ ‰¬¦  «        }|rt          ‰ |¦  «         |S d S ˆ fd„}ˆfd„}d}	 t          ‰ ¦  «        \  }}d}n1# t          $ r$ 	  |¦   «         \  }}n# t          $ r Y Y d S w xY wY nw xY w |||¦  «        \  }}	|r2|	s0	  |¦   «         \  }} |||¦  «        \  }}	n# t          $ r d }Y nw xY w|r|dk    r(|�&t          | 	                    d	¦  «        ¦  «        }
|
r|
}t          ‰ |pd¦  «         |S )
Nz.safetensorsz.sftrÑ  c                  óö   •— i } t          j        ‰ddd¬¦  «        5 }|                     ¦   «         D ]}|                     |¦  «        | |<   Œ|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   | |fS )NÚptrj  F)Ú	frameworkrP   Úwritable_tensors)r	   Ú	safe_openrE   Ú
get_tensorrŠ  )rl   ÚfrÖ   rŠ  rÈ   s       €r%   Ú
_load_fullz5detect_quantization_kind_for_file.<locals>._load_fullú  sÉ   ø€ Øˆ
ÝÔ#ØØØØ"ð	
ñ 
ô 
ð 	$ð
 Ø—v’v‘x”xð 4ð 4�Ø"#§,¢,¨sÑ"3Ô"3�
˜3‘�Ø—z’z‘|”|ˆHð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð ˜8Ð#Ð#s   œAA,Á,A0Á3A0c                 óz   •— 	 t          | ‰|¬¦  «        }|                     d¦  «        dfS # t          $ r Y dS w xY w)Nr‘  rÕ   T)NF)rš  rK   rÌ   )rl   rŠ  rø   r:  s      €r%   Ú_try_detectz6detect_quantization_kind_for_file.<locals>._try_detect  sV   ø€ ð	Ý,¨ZÀlÐ]eÐfÑfÔfˆDØ—8’8˜FÑ#Ô# TÐ)Ð)øÝð 	ð 	ð 	Ø�;�;ð	øøøs   ƒ(, ¬
:¹:FTr“  rÞ  )
rÌ  rÄ   rÅ   ÚisfilerØ  rÎ  rå  rÌ   râ  rK   )rÈ   r:  ÚcachedrÕ   rï  rñ  Úmetadata_onlyrl   rŠ  ÚokÚinferreds   ``         r%   rÐ  rÐ  í  s
  øø€ Ý-¨iÑ8Ô8€FØð ØˆØð �BœGŸNšN¨9Ñ5Ô5ð ØˆtØ˜iÐ'Ð'¨6°YÐ+>Ð+>Ý)¨)À,ÐOÑOÔOˆØð 	Ý'¨	°4Ñ8Ô8Ð8ØˆKØˆtð$ð $ð $ð $ð $ðð ð ð ð ð €MðÝ7¸	ÑBÔBÑˆ
�HØˆˆøÝð ð ð ð	Ø#- :¡<¤<Ñ ˆJ˜˜øÝð 	ð 	ð 	Ø�4�4�4ð	øøøð !˜ðøøøð ˆ{˜: xÑ0Ô0�H€Dˆ"Øð ˜Rð ð	Ø#- :¡<¤<Ñ ˆJ˜Ø"�{ :¨xÑ8Ô8‰HˆD�"�"øÝð 	ð 	ð 	ØˆDˆDˆDð	øøøð ð �D˜F’N�N¨Ð(<Ý5°h·l²lÐCUÑ6VÔ6VÑWÔWˆØð 	ØˆDå 	¨4¨>°6Ñ:Ô:Ð:Ø€KsH   Á5B
 Â

B8ÂB#Â"B8Â#
B2Â-B8Â1B2Â2B8Â7B8ÃC, Ã,C;Ã:C;c                 ó¬  — | sdS t          | d¬¦  «        }|r|S t          | ¦  «        }|rt          |¦  «        S t          | d¬¦  «        }|rt          |¦  «        }|r|S t          j                             | ¦  «                             ¦   «         }t          t          ¦   «         t          d¬¦  «        D ]}|r||v rt          |¦  «        c S Œd|v rdS dS )NrÐ   r   rÑ  Tr·  rœ  ÚQUANTO)rÜ  rÌ  rÄ  rÐ  rÄ   rÅ   Úbasenamer½   r  r´  r4   )ÚfilenamerÛ  ró  rÕ   rG   Útokens         r%   rÚ  rÚ  )  s  € Øð ØˆrÝ'¨¸qÐAÑAÔA€EØð ØˆÝ-¨hÑ7Ô7€FØð .Ý% fÑ-Ô-Ð-Ý,¨XÀAÐFÑFÔF€DØð Ý& tÑ,Ô,ˆØð 	ØˆLÝŒ7×Ò˜HÑ%Ô%×+Ò+Ñ-Ô-€DÝÕ3Ñ5Ô5½3ÈÐMÑMÔMð 1ð 1ˆØð 	1�U˜d�]�]Ý)¨%Ñ0Ô0Ð0Ð0Ð0øØ�4ÐÐØˆxØˆ2r'   c                 ó|   — | €dS t          | t          ¦  «        r|                      d¦  «        } t          | ¦  «        S )NrÐ   rR   )r    rè   rK   rÑ   rÓ  s    r%   Ú_get_qtype_name_from_quant_maprý  @  s=   € Ø€}ØˆrÝ�%�ÑÔð %Ø—	’	˜)Ñ$Ô$ˆÝ˜uÑ%Ô%Ð%r'   c                  óð   — i } t          ¦   «         D ]d}t          |¦  «        D ]R}t          |dd ¦  «        }t          |t          ¦  «        r*|r(|                      |                     ¦   «         |¦  «         ŒSŒe| S )Nrw   )r2   r&   r]   r    r“   r5   r½   )r6   r#   r9   rw   s       r%   Ú_build_qtype_handler_maprÿ  H  sˆ   € Ø€GÝ!Ñ#Ô#ð :ð :ˆÝ! 'Ñ*Ô*ð 	:ð 	:ˆBÝ˜2˜v tÑ,Ô,ˆDÝ˜$¥Ñ$Ô$ð :¨ð :Ø×"Ò" 4§:¢:¡<¤<°Ñ9Ô9Ð9øð	:ð €Nr'   c                 óR  — |r| si S t          |                     ¦   «         ¦  «        }|si S i }|                      ¦   «         D ]d}|                     d¦  «        r|d d…         }n!|                     d¦  «        r|d d…         }nŒC|D ]}|                     |¦  «        r|||<    nŒŒe|S )Nú.weightiùÿÿÿz.qweightiøÿÿÿ)r3   rE   r@  )rl   Úfused_split_mapÚsuffixesrK  rÖ   rG   r%  s          r%   Ú_collect_fused_basesr  R  sá   € Øð  *ð Øˆ	Ý�O×(Ò(Ñ*Ô*Ñ+Ô+€HØð Øˆ	Ø€EØ�ŠÑ Ô ð 
ð 
ˆØ�<Š<˜	Ñ"Ô"ð 	Ø�s˜�s”8ˆDˆDØ�\Š\˜*Ñ%Ô%ð 	Ø�s˜�s”8ˆDˆDàØð 	ð 	ˆFØ�}Š}˜VÑ$Ô$ð Ø$��d‘Ø�ðøð €Lr'   c                 ó|   — | r|sd S dD ]2}|r||z   n|}|| vrŒ|                       |¦  «        }|D ]
}|| ||z   <   ŒŒ3d S )N)rÐ   r  )rF  )rÞ  rG   Útargetsr%  rÖ   rë   ré   s          r%   Ú_remap_quantization_entriesr  g  s‰   € Øð  7ð ØˆØ!ð 4ð 4ˆØ%Ð/ˆd�V‰mˆm¨4ˆØÐ&Ð&Ð&ØØ×"Ò" 3Ñ'Ô'ˆØð 	4ð 	4ˆFØ03Ð˜V f™_Ñ-Ð-ð	4ð4ð 4r'   c           	      ó  ‡‡— |r| s| |fS |pi }t          | |¦  «        }|s| |fS t          ¦   «         }i }|                     ¦   «         D �]\  }	}
|                     |
¦  «        pi }|                     d¦  «        p+|                     d¦  «        p|                     d¦  «        pg }|sŒa|	dt	          |
¦  «         …         Šˆfd„|D ¦   «         }t          |                     |	¦  «        ¦  «        }|s%t          |                     |	dz   ¦  «        ¦  «        }|s?|                      |	dz   ¦  «        }t          j        |¦  «        rt          |dd¦  «        �d}|
||d	œ||	<   �Œ|s| |fS i }|                     ¦   «         D ]¿\  }	}|d
         }|sŒ|                     |d         ¦  «        pi                      d¦  «        rt          d|	› d�¦  «        ‚|                     |¦  «        }|€Œkt          t          |dd¦  «        ¦  «        sŒŠ|                     |t          ¦   «         ¦  «                             |	¦  «         ŒÀt          ¦   «         Š|                     ¦   «         D ]‚\  }}t          |dd¦  «        }t          |¦  «        sŒ& || |||||¬¦  «        }t          |t          ¦  «        rt	          |¦  «        dk    r|\  } }n|p| } g }‰                     |pg ¦  «         Œƒˆfd„|                     ¦   «         D ¦   «         }|��t#          |¦  «        D ]€}	|||	         d                  }|                     d¦  «        rUt%          j        | |	dz            j        |d         ¦  «        r,|                     |	|f¦  «         |                     |	¦  «         Œ�|r2t/          | |dddœ||d¬¦  «        \  } }‰                     |pg ¦  «         |r6‰r4‰D ]1}	|                     |	¦  «        }|sŒt1          ||	|d         ¦  «         Œ2| |fS )a   Splits the fused weights of fused_split_map. Unquantized weights whose entry declares "interleaved" rows are kept fused when the
    registered row view kernel computes their projections (appended to row_view_bases as (base, entry), see row_views.install).r,  r-  r.  Nc                 ó   •— g | ]}‰|z   ‘ŒS r±   r±   r6  s     €r%   r´   z'split_fused_weights.<locals>.<listcomp>†  s   ø€ Ð4Ð4Ð4 T�6˜D‘=Ð4Ð4Ð4r'   r  Útensor_typeÚgguf)r%  r  r   r   r%  rõ   rŸ  z]': quantized weights with rows interleaved head by head are not supported; store them groupedÚsplit_fused_weights)rÞ  rH  r   r:  r
   c                 ó2   •— g | ]\  }}|d          s|‰v¯|‘ŒS r   r±   )r²   rG   rø   Úhandled_basess      €r%   r´   z'split_fused_weights.<locals>.<listcomp>¹  s>   ø€ ð ð ð Ù��tØ�GŒ}ðà!%¨]Ð!:Ð!:ð 	Ø!:Ð!:Ð!:r'   rþ   r   rö   T)r  r:  rH  rI  r  )r  rÿ  rg   rK   r4   rý  r,   rZ   r]   rm  rc   r5   rC   r²  r    rð   rF   r3   r   Ú	availablerQ   r•   rš   rX  r  )rl   rÞ  r  r   r:  Úrow_view_basesÚfused_basesr£  Ú
bases_inforG   r%  rø   r.  r  Ú
qtype_namer[   Úhandler_basesr#   rK  rŒ  r™  rM  Údefault_basesr  rm   s                          @@r%   r  r  s  s  øø€ ð ð , *ð ,ØÐ+Ð+Ð+à'Ð-¨2ÐÝ& z°?ÑCÔC€KØð ,ØÐ+Ð+Ð+å*Ñ,Ô,€KØ€JØ#×)Ò)Ñ+Ô+ð 
ñ 
‰ˆˆfØ×"Ò" 6Ñ*Ô*Ð0¨bˆØ—’Ð*Ñ+Ô+Ðf¨t¯xªxÐ8IÑ/JÔ/JÐfÈdÏhÊhÐW_ÑN`ÔN`ÐfÐdfˆØð 	ØØ�m�˜F™œ�|�mÔ$ˆØ4Ð4Ð4Ð4¨VÐ4Ñ4Ô4ˆÝ3Ð4D×4HÒ4HÈÑ4NÔ4NÑOÔOˆ
Øð 	`Ý7Ð8H×8LÒ8LÈTÐT]ÑM]Ñ8^Ô8^Ñ_Ô_ˆJØð 	$Ø—^’^ D¨9Ñ$4Ñ5Ô5ˆFÝŒ˜vÑ&Ô&ð $­7°6¸=È$Ñ+OÔ+OÐ+[Ø#�
àØØð
ð 
ˆ
�4ÑÑð ð ,ØÐ+Ð+Ð+à€MØ ×&Ò&Ñ(Ô(ð ;ð ;‰
ˆˆdØ˜'”]ˆ
Øð 	ØØ×Ò  X¤Ñ/Ô/Ð5°2×:Ò:¸=ÑIÔIð 	FÝð  E ð  Eð  Eð  Eñ  Fô  Fð  FØ—/’/ *Ñ-Ô-ˆØˆ?ØÝ� Ð)>ÀÑEÔEÑFÔFð 	ØØ× Ò  ­#©%¬%Ñ0Ô0×4Ò4°TÑ:Ô:Ð:Ð:å‘E”E€MØ'×-Ò-Ñ/Ô/ð 0ð 0‰ˆ�Ý�WÐ3°TÑ:Ô:ˆÝ˜‰|Œ|ð 	ØØ�ØØØ-ØØ'Ø%ð
ñ 
ô 
ˆõ �f�eÑ$Ô$ð 	­¨V©¬¸Ò)9Ð)9Ø&,Ñ#ˆJ˜˜àÐ- :ˆJØˆKØ×Ò˜[Ð.¨BÑ/Ô/Ð/Ð/ðð ð ð Ø)×/Ò/Ñ1Ô1ðñ ô €Mð Ð!Ý˜Ñ'Ô'ð 	+ð 	+ˆDØ" :¨dÔ#3°HÔ#=Ô>ˆDØ�xŠx˜Ñ&Ô&ð +­9Ô+>¸zÈ$ÐQZÑJZÔ?[Ô?aÐcgÐh|Ôc}Ñ+~Ô+~ð +Ø×%Ò% t¨T lÑ3Ô3Ð3Ø×$Ò$ TÑ*Ô*Ð*øØð 	0Ý"1ØØØ$%¨qÐ1Ð1Ø%Ø'Ø#ð#
ñ #
ô #
Ñˆ
�Kð 	×Ò˜[Ð.¨BÑ/Ô/Ð/àð Q˜Mð QØ!ð 	Qð 	QˆDØ—>’> $Ñ'Ô'ˆDØð ØÝ'Ð(8¸$ÀÀYÄÑPÔPÐPÐPàÐ'Ð'Ð'r'   c                 óÎ   — t          |pi ¦  «        }g }t          ¦   «         D ]@}t          |dd ¦  «        }|€Œ || ||||¬¦  «        \  }}	|	r|                     |	¦  «         ŒA||fS )NÚapply_pre_quantization)r   r:  )rè   r2   r]   Úextend)
rt  rl   rÞ  r   r:  rQ  Ú	post_loadr#   rŒ  Úhookss
             r%   r  r  Ø  s�   € ÝÐ%Ð+¨Ñ,Ô,€IØ€IÝ!Ñ#Ô#ð $ð $ˆÝ�WÐ6¸Ñ=Ô=ˆØˆ:ØØ˜2ØØØØ'Ø%ð
ñ 
ô 
Ñˆ	�5ð ð 	$Ø×Ò˜UÑ#Ô#Ð#øØ�iÐÐr'   c                  óð   ‡— 	 ddl m}  n# t          $ r Y dS w xY wt          | j        dd¦  «        rdS | j        j        Šdˆfd„	}t          |¦  «        | j        _        d| j        _        ‰| j        _        dS )	zš
    Quanto's Marlin FP8 CUDA kernel currently ignores the bias argument.
    Add it back manually (in-place) so outputs stay correct on CUDA builds.
    r   )ÚqbitsNÚ_wan2gp_bias_patchFc                 ó&  •—  ‰| ||d ¦  «        }|€|S |}|j         |j         k    s|j        |j        k    r!|                     |j         |j        ¬¦  «        }dg|j        z  }|j        d         |d<    |j        |Ž }|                     |¦  «         |S )N)rP   rQ   r   r   r«   )rP   rQ   ÚtoÚndimÚshapeÚviewÚadd_)	Úctxr„   Úotherr=   r!  Úbias_to_addÚ
view_shapeÚ	bias_viewÚorig_forwards	           €r%   Úforward_with_biasz1_patch_marlin_fp8_bias.<locals>.forward_with_biasø  s£   ø€ Øˆl˜3  u¨dÑ3Ô3ˆØˆ<ØˆJØˆØÔ ¤Ò+Ð+¨{Ô/@ÀCÄIÒ/MÐ/MØ%Ÿ.š.°´
À#Ä)˜.ÑLÔLˆKØ�S˜3œ8‘^ˆ
Ø$Ô*¨1Ô-ˆ
�2‰Ø$�KÔ$ jÐ1ˆ	Ø�Š�ÑÔÐØˆ
r'   Tr   )	Ú(optimum.quanto.tensor.weights.marlin.fp8r  rÌ   r]   ÚMarlinF8QBytesLinearFunctionri   Ústaticmethodr  Ú_wan2gp_bias_orig)Ú
marlin_fp8r*  r)  s     @r%   Ú_patch_marlin_fp8_biasr0  ê  s¸   ø€ ð
ØPÐPÐPÐPÐPÐPÐPøÝð ð ð ØˆˆðøøøåˆzÔ6Ð8LÈeÑTÔTð ØˆàÔ:ÔB€Lðð ð ð ð ð õ 7CÐCTÑ6UÔ6U€JÔ+Ô3ØAE€JÔ+Ô>Ø@L€JÔ+Ô=Ð=Ð=s   ƒ
 Š
—r   )NNr   NNF)NN)r   N)r   )r   )Nr   N)Nr   )Lr¡   r)   rÄ   r,   Úoptimum.quantor   r   r­  r   r!   rÐ   r   r	   rJ   rB   rÔ   r&   r0   r:   rH   rM   ry   r-   r.   r/   r”   r–   r˜   rœ   r2   r­   rµ   r¸   r¿   rÂ   rÉ   rÎ   rÑ   r×   rß   ræ   rî   rñ   rû   r÷   r  r  r  r  r"  rX  r‰  r�  rš  rª  r¯  r´  r»  rÄ  rË  rÉ  rÌ  rÎ  rØ  rÜ  râ  rå  rÐ  rÚ  rý  rÿ  r  r  r  r  r0  r±   r'   r%   ú<module>r2     sã  ðà Ð Ð Ð Ø €€€Ø 	€	€	€	à €€€à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø >Ð >Ð >Ð >Ð >Ð >à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ð Ð ØÐ ð ØØØØØØØØØØØØØØðð Ð ð&ð ð ðð ð ð	ð 	ð 	ðð ð ð/ð /ð /ð36ð 36ð 36ðl Ð�%”(”/Ñ"Ô"ðH
ð H
ð H
ð H
ð H
˜,¨¬¬ñ H
ô H
ñ #Ô"ðH
ðV Ð ØÐ ð
ð 
ð 
ðð ð ðð ð ð&Mð Mð Mðið ið iðVð Vð Vð
 Ð ð,ð ,ð ,ð-ð -ð -ð!ð !ð !ðð ð ðð ð ð6ð 6ð 6ð!ð !ð !ð !ð&ð ð ð,ð ð ð
ð 
ð 
ðFð Fð Fð
ð ð ðPð Pð Pð
	ð 	ð 	ðð ð ð
 ð  ð  ð* ØØØØØðTð Tð Tð TðnV6ð V6ð V6ð V6ðr -1ð ð ð ð ð ð[ð [ð [ð [ð8`ð 8`ð 8`ð 8`ðv)ð )ð )ð	ð 	ð 	ð1ð 1ð 1ð*)ð )ð )ð   "Ð ð&ð &ð &ðRð Rð Rð1ð 1ð 1ðð ð ð ð$ð ð ð ðð ð ðD	 ð 	 ð 	 ð9ð 9ð 9ð 9ðxð ð ð.&ð &ð &ðð ð ðð ð ð*	4ð 	4ð 	4ðb(ð b(ð b(ð b(ðJ ð  ð  ð  ð$Mð Mð Mð@ Ð Ñ Ô Ð Ð Ð r'   