Ë
    cQêj¨	  ã                   óV   — d dl Z d dl mZ ddlmZmZmZmZmZ ddl	m
Z
  G d„ de
«      Zy)	é    N)Úonnx_pbé   )ÚTENSOR_NAME_QUANT_SUFFIXÚQuantizedValueÚQuantizedValueTypeÚattribute_to_kwargÚ	ms_domainé   )ÚQuantOperatorBasec                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚQLinearBinaryOpc                 ó&   •— t         ‰| �  ||«       y )N)ÚsuperÚ__init__)ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s      €úq/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/binary_op.pyr   zQLinearBinaryOp.__init__	   s   ø€ Ü‰Ñ˜¨Õ3ó    c                 óP  •— | j                   }| j                  j                  |j                  d   «      \  }}}}}| j                  j	                  |ddg«      \  }}}}	|r|€t
        ‰| �  «       S |j                  d   t        z   }
|j                  r|j                  dz   nd}i }|j                  D ]  }|j                  t        |«      «       Œ t        |d<   g }|j                  |d   «       |j                  |d   «       |j                  |d   «       |j                  |d   «       |j                  |d   «       |j                  |d   «       |j                  |«       |j                  |«       t        j                  j                   d|j"                  z   ||
g|fi |¤Ž}|	j                  |«       t%        |j                  d   |
||t&        j(                  «      }|| j                  j*                  |j                  d   <   | j                  xj,                  |	z  c_        y )Nr   r
   Ú_quantÚ ÚdomainÚQLinear)ÚnodeÚ	quantizerÚ_get_quantization_paramsÚoutputÚquantize_activationr   Úquantizer   ÚnameÚ	attributeÚupdater   r	   ÚappendÚonnxÚhelperÚ	make_nodeÚop_typer   r   ÚInputÚquantized_value_mapÚ	new_nodes)r   r   Ú
data_foundÚoutput_scale_nameÚoutput_zp_nameÚ_Úquantized_input_namesÚzero_point_namesÚscale_namesÚnodesÚqlinear_binary_math_outputÚqlinear_binary_math_nameÚkwargsr#   Úqlinear_binary_math_inputsÚqlinear_binary_math_nodeÚq_outputr   s                    €r   r!   zQLinearBinaryOp.quantize   s  ø€ Ø�y‰yˆð �N‰N×3Ñ3°D·K±KÀ±NÓCñ	
ØØØØØð �N‰N×.Ñ.¨t°a¸°VÓ<ñ	
Ø!ØØØáÐ2Ð:Ü‘7Ñ#Ó%Ð%à%)§[¡[°¡^Ô6NÑ%NÐ"Ø;?¿9º9 4§9¡9¨xÒ#7È"Ð àˆØŸ™ò 	9ˆIØ�M‰MÔ,¨YÓ7Õ8ð	9ä$ˆˆxÑà%'Ð"à"×)Ñ)Ð*?ÀÑ*BÔCØ"×)Ñ)¨+°a©.Ô9Ø"×)Ñ)Ð*:¸1Ñ*=Ô>à"×)Ñ)Ð*?ÀÑ*BÔCØ"×)Ñ)¨+°a©.Ô9Ø"×)Ñ)Ð*:¸1Ñ*=Ô>ð 	#×)Ñ)Ð*;Ô<Ø"×)Ñ)¨.Ô9ä#'§;¡;×#8Ñ#8Ø˜Ÿ™Ñ$Ø&Ø'Ð(Ø$ñ	$
ð
 ñ$
Ð ð 	�‰Ð-Ô.ô "Ø�K‰K˜‰NØ&ØØÜ×$Ñ$ó
ˆð >Fˆ�‰×*Ñ*¨4¯;©;°q©>Ñ:à�‰× Ò  EÑ)Ö r   )Ú__name__Ú
__module__Ú__qualname__r   r!   Ú__classcell__)r   s   @r   r   r      s   ø„ ô4÷<*ð <*r   r   )r&   r   Ú
onnx_protoÚquant_utilsr   r   r   r   r	   Úbase_operatorr   r   © r   r   ú<module>rC      s#   ðÛ Ý &ç uÕ uÝ ,ô@*Ð'õ @*r   