+
    œ°³jƒC  ã                   ó�  € R t ^ RIt^ RIHt ^RIHtHt ^RIHt ^RIH	t	 ]P                  ! ]4      tR t ! R R]4      t]P                  t]P"                  ! ]4      P$                  t]P"                  ! ]4      P(                  tR	 R
 ltRR R llt ! R R]P0                  4      tRR ltR t ! R R]4      t ! R R]4      tR# )z"CompressedTensors integration fileN)Únn)ÚConversionOpsÚ_IdentityOp)Úlogging)Úis_torch_greater_or_equalc                óÆ  € \        V P                  P                  4       4      pV FU  p\        ;QJ d&    R VP                   4       F  '       g   K   RM	  RM! R VP                   4       4      '       g   KS  Vu # 	  V FU  p\        ;QJ d&    R VP                   4       F  '       g   K   RM	  RM! R VP                   4       4      '       g   KS  Vu # 	  V^ ,          # )a  Resolve which config group quantizes the MoE experts. Mixed configs quantize
different layers with different schemes (e.g. Kimi: FP8 attention + INT4 experts), so
the experts' scheme cannot be assumed global: the experts' group is the one whose
`re:` targets mention the expert modules.
c              3   ó\   "  € T F"  qP                  R 4      ;'       d    RV9   x € K$  	  R# 5i)úre:ÚexpertsN©Ú
startswith©Ú.0Útargets   & Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/integrations/compressed_tensors.pyÚ	<genexpr>Ú%get_experts_scheme.<locals>.<genexpr>#   s)   é € Ð\ÉmÀF× Ñ  Ó'×?Ð?¨I¸Ñ,?Ô?Ëmùs   ‚,ž,TFc              3   óL   "  € T F  qP                  R 4      '       * x € K  	  R# 5i)r	   Nr   r   s   & r   r   r   (   s   é € ÐH¹-°×$Ñ$ UÓ+×+Ñ+»-ùs   ‚"$)ÚlistÚconfig_groupsÚvaluesÚanyÚtargets)Úquantization_configÚgroupsÚgroups   &  r   Úget_experts_schemer      sœ   € ô Ð%×3Ñ3×:Ñ:Ó<Ó=€FÛˆß‹3Ñ\ÈeÏmÊmÓ\�3�3Š3Ñ\ÈeÏmÊmÓ\×\Ô\ØŠLñ ó
 ˆß‹3ÑH¸%¿-º-ÓH�3�3Š3ÑH¸%¿-º-ÓH×HÔHØŠLñ ð �!�9Ðó    c                   ó`   a € ] tR t^-t o RtR	R ltR	V 3R lR llt]V 3R lR l4       tRt	V t
R# )
ÚDecompressExpertsa…  
Dequantize MoE layers when they are in new layout, because they aren't `nn.Module` anymore!

Takes packed weights and scales from the loaded state dict, creates a dummy Module
to take advantage of higher-lvl API `decompress_module` and dequantizes all weights.

Requires MoE conversion to be defined on conversion mapping, so that decompressed weights
are stacked/merged for all experts.
Nc                ó   € Wn         W n        R # ©N©Úhf_quantizerÚscheme)Úselfr#   r$   s   &&&r   Ú__init__ÚDecompressExperts.__init__8   s   € Ø(Ôð Žr   c                óº   <€ V ^8„  d   QhRS[ S[S[P                  3,          RS[S[,          RS[S[,          RS[R,          RS[ S[S[P                  3,          /# )é   Ú
input_dictÚsource_patternsÚtarget_patternsÚfull_layer_nameNÚreturn)ÚdictÚstrÚtorchÚTensorr   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚDecompressExperts.__annotate__>   sl   ø€ ÷ gñ gá™™eŸl™lÐ*Õ+ðgñ ™c�ðgñ ™c�ð	gñ
 ˜t�ðgñ 
‰c‘5—<‘<ÐÕ	 ñgr   c                ó   € ^ RI Hp ^ RIHp V P                  P
                  P                  pV P                  ;'       g    \        V4      p	V	P                  p
V
P                  R8X  Ed‡   V
P                  ^8X  Edu   / pVP                  4        EF[  w  rÍRV9   d   K  VP                  RR4      pWá9  d   WÛV&   K-  \        V\        4      '       d   TMV.pW,          p\        V\        4      '       d   TMV.pRp\!        \#        VV4      4       FÊ  w  pw  ppVP%                  \&        P(                  4      VP%                  \&        P(                  4      ,          P%                  \&        P*                  4      pVfE   \&        P,                  ! \/        V4      .VP0                  O5VP2                  VP4                  R7      pVV,          P7                  V4       ?KÌ  	  Vf   EKW  VW¼&   EK^  	  V# V	P8                  ;'       g    V! \:        P<                  V	4      pVP?                  V4      p ! R	 R
\:        P@                  4      p^ V	P                  P                  ,          p/ pVP                  4        EF•  w  rÍRV9  d   K  TpWP                  RR4      ,          pVPC                  VP                  RR4      4      pRp\!        \#        VV4      4       EF"  w  pw  ppVf   RMVV,          pVe   VPE                  4       '       d   TpMA\&        PF                  ! VP0                  ^ ,          VP0                  ^,          V,          .4      pV! VVV4      pV	Vn$        VPK                  V4       Vfc   \&        P,                  ! \/        V4      .VPL                  P0                  O5VPL                  P2                  VPL                  P4                  R7      pVV,          P7                  VPL                  4       ?EK%  	  ??Vf   EK‘  VW¼&   EK˜  	  V# )é    )ÚBaseCompressor)Úinfer_module_formatÚfloatÚweight_scalez.weightz.weight_scaleN)ÚdtypeÚdevicec                   ó2   a a€ ] tR t^lt oV 3R ltRtVtV ;t# )Ú.DecompressExperts.convert.<locals>.DummyModulec                óÒ   <€ \         SV `  4        \        P                  ! VR R7      V n        \        P                  ! VR R7      V n        \        P                  ! VR R7      V n        R# )F)Úrequires_gradN)Úsuperr&   r   Ú	ParameterÚweight_packedr<   Úweight_shape)r%   ÚweightÚscaleÚshapeÚ	__class__s   &&&&€r   r&   Ú7DecompressExperts.convert.<locals>.DummyModule.__init__m   sG   ø€ Ü‘Ñ Ô"Ü%'§\¢\°&ÈÔ%N�Ô"Ü$&§L¢L°ÀeÔ$L�Ô!Ü$&§L¢L°ÀeÔ$L�Ö!r   )rE   r<   rF   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r&   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©rJ   r4   s   @@r   ÚDummyModuler@   l   s   ù‡ € ÷Mõ Mr   rT   rE   rF   )'Úcompressed_tensors.compressorsr9   Ú%compressed_tensors.compressors.formatr:   r#   Ú
compressorr   r$   r   ÚweightsÚtypeÚnum_bitsÚitemsÚreplaceÚ
isinstancer   Ú	enumerateÚzipÚtor1   Úfloat32Úbfloat16ÚemptyÚlenrI   r=   r>   Úcopy_r3   r   ÚLinearÚget_value_from_registryÚModuleÚgetÚnumelÚtensorÚquantization_schemeÚdecompress_modulerG   )r%   r*   r+   r,   r-   Úkwargsr9   r:   Úct_quantization_configrl   Úweights_argsÚprocessed_outÚkeyÚvalueÚ	scale_keyÚ	quantizedÚscalesÚoutputÚiÚquantrH   Údenser3   rW   rT   Úpack_factorÚshapesÚstored_shaperI   Úmodules   &&&&&,                        r   ÚconvertÚDecompressExperts.convert>   sg  € õ 	BÝMà!%×!2Ñ!2×!=Ñ!=×!QÑ!QÐà"Ÿk™k×WÐWÔ-?Ð@VÓ-WÐà*×2Ñ2ˆØ×Ñ Õ'¨L×,AÑ,AÀQÕ,Fð ˆMØ(×.Ñ.×0‘
�Ø! SÔ(ÙØŸK™K¨	°?ÓC�	ØÔ.à). #Ñ&ÙÜ%/°´t×%<Ò%<™EÀ5À'�	Ø#Õ.�Ü#-¨f´d×#;Ò#;™À&À�Ø�Ü)2´3°yÀ&Ó3IÖ)JÑ%�A‘~˜˜uØ"ŸX™X¤e§m¡mÓ4°u·x±xÄÇÁÓ7NÕN×RÑRÔSX×SaÑSaÓb�EØ’~ä!&§¢¬c°)«nÐ-K¸u¿{¹{Ñ-KÐSX×S^ÑS^Ðgl×gsÑgsÔ!t˜Ø˜1•I—O‘O EÔ*Úñ *Kð Õ%Ø)/�MÔ&ñ) 1ð* !Ð à$×+Ñ+×bÐbÑ/BÄ2Ç9Á9ÐNaÓ/bˆØ#×;Ñ;¸FÓCˆ
ô	Mœ"Ÿ)™)ô 	Mð Ð/×7Ñ7×@Ñ@Õ@ˆð ˆØ$×*Ñ*×,‰JˆCØ cÔ)ÙØˆIØ§¡¨O¸^Ó LÕMˆFØ—^‘^ C§K¡K°ÀÓ$PÓQˆFð
 ˆFÜ%.¬s°9¸fÓ/E×%FÑ!�‘>�E˜5ð
 (.¢~™t¸6À!½9�ØÒ+°×0BÑ0B×0DÒ0DØ(‘Eä!ŸLšL¨%¯+©+°a­.¸%¿+¹+Àa½.È;Õ:VÐ)WÓX�EÙ$ U¨E°5Ó9�Ø-@�Ô*Ø×,Ñ,¨VÔ4à’>ä"Ÿ[š[Ü˜Y›Ð>¨&¯-©-×*=Ñ*=Ñ>Ø$Ÿm™m×1Ñ1Ø%Ÿ}™}×3Ñ3ô�Fð
 �q•	—‘ §¡Ô.ãñ/ &Gð2 ˜6ØÕ!ð &,�Ô"ñQ -ðT Ðr   c                ó   <€ V ^8„  d   QhRR/# )r)   r.   r   © )r3   r4   s   "€r   r5   r6   ¨   s   ø€ ÷ ñ ˜Oñ r   c                ó   € \        4       # r!   )r   ©r%   s   &r   Ú
reverse_opÚDecompressExperts.reverse_op§   s
   € ä‹}Ðr   r"   r!   )rL   rM   rN   rO   Ú__doc__r&   r   Úpropertyr…   rP   rQ   ©r4   s   @r   r   r   -   s0   ø‡ € ñô÷gò gðR ÷ó ör   r   c                ó8   € V ^8„  d   QhR\         P                  /# )r)   Úx©r1   r2   )r3   s   "r   r5   r5   ±   s   € ÷ ñ œEŸL™Lñ r   c                ó�  € V P                  \        P                  4      pVP                  4       P	                  RR7      p\        P
                  ! V^ 8„  V\        P                  ! V4      4      pV\        ,          p\        P                  ! WP                  R4      ,          \        \        R7      P                  \        4      pWT3# )a"  Quantize a 2D tensor to FP8 per-row using pure PyTorch (torch.compile compatible).

Args:
    x: Input tensor of shape (num_rows, hidden_dim).

Returns:
    Tuple of (x_fp8, scales) where x_fp8 is the quantized tensor and
    scales is a 1D tensor of shape (num_rows,) with per-row scales.
)Údim)ÚminÚmaxéÿÿÿÿ)r`   r1   ra   ÚabsÚamaxÚwhereÚ	ones_likeÚ_FP8_MAXÚclampÚ	unsqueezeÚ_FP8_MINÚ
_FP8_DTYPE)r‹   Úx_floatÚrow_maxÚsafe_maxrv   Úx_fp8s   &     r   Úquantize_fp8_per_rowrŸ   ±   sŒ   € ð �d‰d”5—=‘=Ó!€GØ�k‰k‹m× Ñ  RÐ Ó(€Gä�{Š{˜7 Q™;¨´·²ÀÓ1IÓJ€HØœÕ €FÜ�KŠK˜×"2Ñ"2°2Ó"6Õ6¼HÌ(ÔS×VÑVÔWaÓb€EØˆ=Ðr   c                ó  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R,          R\         P                  /# )	r)   ÚinputrG   Úscale_aÚscale_bÚ	out_dtypeÚbiasNr.   )r1   r2   r=   )r3   s   "r   r5   r5   Ä   sx   € ÷  mñ  mÜ�<‰<ð mä�L‰Lð mô �\‰\ð mô �\‰\ð	 mô
 �{‰{ð mô �,‰,˜Õ
ð mô ‡\�\ñ mr   c                ó,  € \        RRR7      '       dj   \        P                  P                  P                  p\        P                  P                  P                  V VVVP                  VVP                  VVR7      # \        P                  ! WW#WER7      # )a  Row-wise scaled FP8 matmul dispatcher that uses the public `torch.nn.functional.scaled_mm`
(torch >= 2.10) if available, else falls back to `torch._scaled_mm`.

Args:
    input (`torch.Tensor`): FP8 input of shape (M, K), scaled per-row.
    weight (`torch.Tensor`): FP8 weight of shape (K, N), scaled per-column.
    scale_a (`torch.Tensor`): Input scales of shape (M, 1), float32.
    scale_b (`torch.Tensor`): Weight scales of shape (1, N), float32.
Returns:
    `torch.Tensor`: Output tensor of shape (M, N) in `out_dtype`.
z2.10T)Ú
accept_dev)r¥   Úoutput_dtype©r¢   r£   r¤   r¥   )r   r1   r   Ú
functionalÚScalingTypeÚ	scaled_mmÚRowWiseÚ
_scaled_mm)r¡   rG   r¢   r£   r¤   r¥   r«   s   &&&&&& r   Ú_scaled_mm_rowwiser¯   Ä   s„   € ô( ! °D×9Ó9Ü—h‘h×)Ñ)×5Ñ5ˆÜ�x‰x×"Ñ"×,Ñ,ØØØØ×ÑØØ×ÑØØ"ð -ó 	
ð 		
ô ×Ò˜E°7ÐW`ÔlÐlr   c                   óX   a a€ ] tR t^çt oRtRV3R lV 3R llltV3R lR ltRtVtV ;t	# )ÚCompressedTensorsFP8Lineara·  Linear layer for compressed-tensors FP8 models.

Stores weights in FP8 format and uses a row-wise scaled matmul (`_scaled_mm_rowwise`) for FP8 matmul.
Activations are always dynamically quantized per-row via ``quantize_fp8_per_row``,
which works for both ``dynamic`` and ``static`` checkpoints (the checkpoint's
static input scale, if any, is simply not needed). The weight scale (per-channel
or per-tensor) is stored as ``weight_scale``.
c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )r)   Úin_featuresÚout_featuresÚhas_bias)ÚintÚbool)r3   r4   s   "€r   r5   Ú'CompressedTensorsFP8Linear.__annotate__ñ   s"   ø€ ÷ 
2ñ 
2¡Cð 
2±sð 
2Ádñ 
2r   c                óÜ  <€ \         SV `  W4       W0n        \        P                  ! \
        P                  ! W!\        R 7      4      V n        \        P                  ! \
        P                  ! ^V3\
        P                  R 7      4      V n        V P                  '       d<   \        P                  ! \
        P                  ! V P                  4      4      V n        R# V P                  RR4       R# ))r=   r¥   N)rC   r&   rµ   r   rD   r1   rc   rš   rG   Úzerosra   r<   r´   r¥   Úregister_parameter)r%   r³   r´   rµ   rJ   s   &&&&€r   r&   Ú#CompressedTensorsFP8Linear.__init__ñ   sŽ   ø€ Ü‰Ñ˜Ô3à ŒÜ—l’l¤5§;¢;¨|ÔPZÔ#[Ó\ˆŒÜŸLšL¬¯ª°a¸Ð5FÌeÏmÉmÔ)\Ó]ˆÔà�=�=ˆ=ÜŸš¤U§[¢[°×1BÑ1BÓ%CÓDˆDŽIà×#Ñ# F¨DÖ1r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r)   r¡   r.   rŒ   )r3   r4   s   "€r   r5   r¸   ý   s#   ø€ ÷ ,ñ ,™UŸ\™\ð ,©e¯l©lñ ,r   c           	     óX  € . VP                   R R ORN5pVP                  RVP                   R,          4      p\        V4      w  rE\        VV P                  P                  4       VP                  R4      V P                  VP                  V P                  R7      pVP                  V4      # )Nr©   r‘   )
rI   ÚreshaperŸ   r¯   rG   Útr˜   r<   r=   r¥   )r%   r¡   Úoutput_shaper‹   Úx_quantizedÚx_scalerw   s   &&     r   ÚforwardÚ"CompressedTensorsFP8Linear.forwardý   s“   € ð /˜Ÿ™ S bÐ)Ð.¨2Ñ.ˆØ�M‰M˜"˜eŸk™k¨"�oÓ.ˆä3°AÓ6Ñˆä#ØØ�K‰K�M‰M‹OØ×%Ñ% bÓ)Ø×%Ñ%Ø—k‘kØ—‘ô
ˆð �~‰~˜lÓ+Ð+r   )r¥   rµ   rG   r<   )F)
rL   rM   rN   rO   r‡   r&   rÄ   rP   rQ   rR   rS   s   @@r   r±   r±   ç   s#   ù‡ € ñ÷
2õ 
2÷,÷ ,ð ,r   r±   c                óü  € ^ RI Hp ^RIHp RpVe   V! WVR7       UUu0 uF  w  rxVkK	  	  ppp. p	V P	                  4        F“  w  r«Ve	   W¦9  d   K  V! W£4      '       g   K!  \        V\        P                  4      '       g   KC  \        VP                  VP                  VP                  RJR7      pV P                  W¬4       V	P                  V
4       K•  	  V	'       g   \        P                  R4       V	# u uppi )u®  Replace nn.Linear modules with CompressedTensorsFP8Linear for compressed-tensors FP8 loading.

Quantization may only cover part of the model: `targets` / `ignore` are the
compressed-tensors patterns (class names or `re:` regexes) from the config â€” only
matching modules are replaced, everything else keeps its dense weights.
`modules_to_not_convert` holds additional transformers-side exclusions
(e.g. `_keep_in_fp32_modules`).
)Úmatch_named_modules)Úshould_convert_moduleN)Úignore)r³   r´   rµ   z†You are loading your model using compressed-tensors FP8 but no linear modules were found. Please double check your model architecture.)Úcompressed_tensors.utils.matchrÇ   Úquantizers.quantizers_utilsrÈ   Únamed_modulesr]   r   rf   r±   r³   r´   r¥   Úset_submoduleÚappendÚloggerÚwarning)Úmodelr   rÉ   Úmodules_to_not_convertrÇ   rÈ   ÚmatchedÚnameÚ_Úreplaced_namesÚmodule_namer~   Ú
new_modules   &&&&         r   Ú*replace_with_compressed_tensors_fp8_linearrÙ     sí   € õ Cõ Dà€GØÒÙ':¸5ÐRXÕ'YÔZÑ'Y™G˜D“4Ñ'YˆÑZà€NØ$×2Ñ2Ö4ÑˆØÒ ;Ô#=ÙÙ$ [×IÒIÙä�fœbŸi™i×(Ô(ô 4Ø"×.Ñ.Ø#×0Ñ0ØŸ™¨DÐ0ôˆJð
 ×Ñ Ô8Ø×!Ñ! +Ö.ñ  5÷" Ü�‰ð;ô	
ð Ðùó3 [s    C8c                ó†   € V P                  VP                  R^4      ^ ,          4      p\        V\        4      '       d   V# R# )z·Return the `CompressedTensorsFP8Linear` owning `full_layer_name` (a `weight_scale` key),
or None if the key belongs to another kind of module (e.g. a non-FP8 group of a mixed config).Ú.N)Úget_submoduleÚrsplitr]   r±   )rÑ   r-   r~   s   && r   Ú_get_fp8_linearrÞ   =  s>   € ð × Ñ  ×!7Ñ!7¸¸QÓ!?ÀÕ!BÓC€FÜ Ô(B×CÒCˆ6ÐMÈÐMr   c                   óJ   a € ] tR tRt o RtRR lt]V 3R lR l4       tRtV t	R# )	ÚConvertFP8LinearScaleiD  a#  Reshape the checkpoint ``weight_scale`` into the row-wise kernel layout at load time.

compressed-tensors checkpoints store the dequantization scale as ``(out_features, 1)``
(channel strategy) or a single element (tensor strategy). The row-wise scaled matmul in
:class:`CompressedTensorsFP8Linear` needs a contiguous float32 ``(1, out_features)`` scale;
converting once at load time avoids a transpose + expand + copy on every forward call.
Scales of modules that were not replaced with :class:`CompressedTensorsFP8Linear` pass
through untouched.
Nc                ó¬  € \        \        VP                  4       4      4      w  rV\        V\        4      '       d
   V^ ,          MTp\        W#4      pVf   WV/# VP                  \        P                  4      P                  ^R4      pVP                  ^,          VP                  8w  d+   VP                  ^VP                  4      P                  4       pWV/# )r8   r‘   )ÚnextÚiterr[   r]   r   rÞ   r`   r1   ra   r¿   rI   r´   ÚexpandÚ
contiguous)r%   r*   rÑ   r-   rn   rr   rH   r~   s   &&&&,   r   r   ÚConvertFP8LinearScale.convertO  s¨   € Üœ$˜z×/Ñ/Ó1Ó2Ó3‰
ˆÜ& u¬d×3Ò3��a–¸ˆÜ  Ó8ˆØŠ>Ø�<ÐØ—‘œŸ™Ó'×/Ñ/°°2Ó6ˆØ�;‰;�q�>˜V×0Ñ0Ô0ð —L‘L  F×$7Ñ$7Ó8×CÑCÓEˆEØˆ|Ðr   c                ó    <€ V ^8„  d   QhRS[ /# ©r)   r.   ©r   )r3   r4   s   "€r   r5   Ú"ConvertFP8LinearScale.__annotate__]  s   ø€ ÷ &ñ &™Mñ &r   c                ó   € \        4       # r!   )ÚRevertFP8LinearScaler„   s   &r   r…   Ú ConvertFP8LinearScale.reverse_op\  s   € ä#Ó%Ð%r   r‚   ©NN©
rL   rM   rN   rO   r‡   r   rˆ   r…   rP   rQ   r‰   s   @r   rà   rà   D  s#   ø‡ € ñôð ÷&ó ö&r   rà   c                   óJ   a € ] tR tRt o RtRR lt]V 3R lR l4       tRtV t	R# )	rì   ia  aP  Save-time inverse of :class:`ConvertFP8LinearScale`: restore the checkpoint layout,
``(out_features, 1)`` for the channel strategy and ``(1, 1)`` for the tensor strategy.
The strategy is read from the config group targeting the module, so the saved checkpoint
stays loadable by other compressed-tensors consumers (llm-compressor, vLLM).Nc                óœ  € ^ RI Hp \        \        VP	                  4       4      4      w  rg\        V\        4      '       d
   V^ ,          MTp\        W#4      pVf   Wg/# VP                  R^4      ^ ,          p	VP                  P                  P                  p
RpV
P                  P                  4        FY  pVP                  f   K  T! Y˜VP                  V
P                  ;'       g    R4      '       g   KC  VP                  P                   p M	  VR8X  d   WgR,          P#                  4       /# WgP%                  4       P'                  4       /# )r8   )Úis_matchNrÛ   rk   r‚   ):NNN:Né   N)rÊ   rò   râ   rã   r[   r]   r   rÞ   rÝ   Úconfigr   r   r   rX   r   rÉ   ÚstrategyÚclonerÀ   rå   )r%   r*   rÑ   r-   rn   rò   rr   rH   r~   r×   Ú	ct_configrõ   r   s   &&&&,        r   r   ÚRevertFP8LinearScale.convertg  s  € Ý;äœ$˜z×/Ñ/Ó1Ó2Ó3‰
ˆÜ& u¬d×3Ò3��a–¸ˆÜ  Ó8ˆØŠ>Ø�<Ðà%×,Ñ,¨S°!Ó4°QÕ7ˆØ—L‘L×4Ñ4×HÑHˆ	ØˆØ×,Ñ,×3Ñ3Ö5ˆEØ�}‰}Ô(©X°kÈ5Ï=É=ÐZc×ZjÑZj×ZpÐZpÐnp×-qÔ-qØ Ÿ=™=×1Ñ1�Ùñ 6ð �xÔà˜u�×+Ñ+Ó-Ð.Ð.Ø—W‘W“Y×)Ñ)Ó+Ð,Ð,r   c                ó    <€ V ^8„  d   QhRS[ /# rè   ré   )r3   r4   s   "€r   r5   Ú!RevertFP8LinearScale.__annotate__}  s   ø€ ÷ 'ñ '™Mñ 'r   c                ó   € \        4       # r!   )rà   r„   s   &r   r…   ÚRevertFP8LinearScale.reverse_op|  s   € ä$Ó&Ð&r   r‚   rî   rï   r‰   s   @r   rì   rì   a  s$   ø‡ € ñTô
-ð* ÷'ó ö'r   rì   r!   )NNN)r‡   r1   r   Úcore_model_loadingr   r   Úutilsr   Úutils.import_utilsr   Ú
get_loggerrL   rÏ   r   r   Úfloat8_e4m3fnrš   Úfinfor�   r™   r�   r–   rŸ   r¯   rf   r±   rÙ   rÞ   rà   rì   r‚   r   r   Ú<module>r     sµ   ðñ %ã Ý ç ;Ý Ý :ð 
×	Ò	˜HÓ	%€òô$|˜ô |ð~ × Ñ €
Ø�;Š;�zÓ"×&Ñ&€Ø�;Š;�zÓ"×&Ñ&€õ÷& môF&, §¡ô &,ôR*òZNô&˜Mô &ô:'˜=ö 'r   