Ë
    ÝÍ:jà  ã                   ól   — d dl Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
  G d„ de«      Z G d	„ d
e
«      Zy)é    Né   )ÚTENSOR_NAME_QUANT_SUFFIXÚQuantizedValueÚQuantizedValueTypeÚattribute_to_kwargÚ	ms_domainé   )ÚQuantOperatorBase)ÚQDQOperatorBasec                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )ÚQLinearWherec                  ó   — y)NT© )Úselfs    ú}/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/where.pyÚshould_quantizezQLinearWhere.should_quantize	   s   € Øó    c           	      ó   •— | j                   }|j                  dk(  sJ ‚| j                  j                  s!| j                  xj                  |gz  c_        y | j                  j                  |j                  d   «      \  }}}}}| j                  j                  |ddg«      \  }}}}	|r|€t        ‰| �%  «       S |j                  d   t        z   }
|j                  r|j                  dz   nd}t        |j                  d   |
||t        j                  «      }|| j                  j                  |j                  d   <   i }|j                   D ]  }|j#                  t%        |«      «       Œ t&        |d<   |j(                  d   |d   |d   |d   |d   |d   |d   ||g	}t+        j,                  j.                  d||
g|fi |¤Ž}| j                  xj                  |	z  c_        | j                  xj                  |gz  c_        y )	NÚWherer   r	   r   Ú_quantÚ Údomainr   )ÚnodeÚop_typeÚ	quantizerÚforce_quantize_no_input_checkÚ	new_nodesÚ_get_quantization_paramsÚoutputÚquantize_activationÚsuperÚquantizer   Únamer   r   ÚInputÚquantized_value_mapÚ	attributeÚupdater   r   ÚinputÚonnxÚhelperÚ	make_node)r   r   Ú
data_foundÚoutput_scale_nameÚoutput_zp_nameÚ_Úq_input_namesÚzero_point_namesÚscale_namesÚnodesÚqlinear_outputÚqlinear_output_nameÚq_outputÚkwargsr&   Úqlwhere_inputsÚqlwhere_nodeÚ	__class__s                    €r   r"   zQLinearWhere.quantize   sû  ø€ Ø�y‰yˆØ�|‰|˜wÒ&Ð&Ð&Ø�~‰~×;Ò;Ø�N‰N×$Ò$¨¨Ñ.Õ$Øð �N‰N×3Ñ3°D·K±KÀ±NÓCñ	
ØØØØØð �N‰N×.Ñ.¨t°a¸°VÓ<ñ	
ØØØØá˜]Ð2Ü‘7Ñ#Ó%Ð%ØŸ™ Q™Ô*BÑBˆØ6:·i²i˜dŸi™i¨(Ò2ÀRÐä!Ø�K‰K˜‰NØØØÜ×$Ñ$ó
ˆð >Fˆ�‰×*Ñ*¨4¯;©;°q©>Ñ:àˆØŸ™ò 	9ˆIØ�M‰MÔ,¨YÓ7Õ8ð	9ä$ˆˆxÑð �J‰J�q‰MØ˜!ÑØ˜‰NØ˜QÑØ˜!ÑØ˜‰NØ˜QÑØØð

ˆô —{‘{×,Ñ,Ø˜N¨^Ð,<Ð>Qñ
ØU[ñ
ˆð 	�‰× Ò  EÑ)Õ Ø�‰× Ò  \ NÑ2Ö r   )Ú__name__Ú
__module__Ú__qualname__r   r"   Ú__classcell__)r:   s   @r   r   r      s   ø„ ò÷63ð 63r   r   c                   ó   — e Zd Zd„ Zy)ÚQDQWherec                 ó4  — | j                   }|j                  dk(  sJ ‚| j                  j                  rÚ| j                  j	                  |j
                  d   «      s(| j                  j                  |j
                  d   «       | j                  j	                  |j
                  d   «      s(| j                  j                  |j
                  d   «       | j                  s-|j                  D ]  }| j                  j                  |«       Œ y y | j                  j	                  |j
                  d   «      rc| j                  j	                  |j
                  d   «      r:| j                  s-|j                  D ]  }| j                  j                  |«       Œ y y y y )Nr   r	   r   )	r   r   r   r   Úis_tensor_quantizedr(   Úquantize_activation_tensorÚdisable_qdq_for_node_outputr   )r   r   r   s      r   r"   zQDQWhere.quantizeF   s=  € Ø�y‰yˆØ�|‰|˜wÒ&Ð&Ð&Ø�>‰>×7Ò7Ø—>‘>×5Ñ5°d·j±jÀ±mÔDØ—‘×9Ñ9¸$¿*¹*ÀQ¹-ÔHØ—>‘>×5Ñ5°d·j±jÀ±mÔDØ—‘×9Ñ9¸$¿*¹*ÀQ¹-ÔHØ×3Ò3Ø"Ÿk™kò F�FØ—N‘N×=Ñ=¸fÕEñFð 4ð �N‰N×.Ñ.¨t¯z©z¸!©}Ô=Ø—‘×2Ñ2°4·:±:¸a±=ÔAØ×4Ò4àŸ+™+ò B�Ø—‘×9Ñ9¸&ÕAñBð 5ð Bð >r   N)r;   r<   r=   r"   r   r   r   r@   r@   E   s   „ óBr   r@   )r)   Úquant_utilsr   r   r   r   r   Úbase_operatorr
   Úqdq_base_operatorr   r   r@   r   r   r   ú<module>rH      s0   ðÛ ç uÕ uÝ ,Ý .ô:3Ð$ô :3ôzBˆõ Br   