§
    kŠtjà  ã                   óz   — 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dS )é    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                 ó   — dS )NT© )Úselfs    úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/quantization/operators/where.pyÚshould_quantizezQLinearWhere.should_quantize	   s   € Øˆtó    c           	      óž  •— | j         }|j        dk    sJ ‚| j        j        s| j        xj        |gz  c_        d S | j                             |j        d         ¦  «        \  }}}}}| 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 ]$}|                     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_        d S )	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ˆØŒ|˜wÒ&Ð&Ð&Ð&ØŒ~Ô;ð 	ØŒNÐ$Ô$¨¨Ñ.Ð$Ô$ØˆFð ŒN×3Ò3°D´KÀ´NÑCÔCñ	
ØØØØØð ŒN×.Ò.¨t°a¸°VÑ<Ô<ñ	
ØØØØàð 	&˜]Ð2Ý‘7”7×#Ò#Ñ%Ô%Ð%Øœ QœÕ*BÑBˆØ6:´iÐG˜dœi¨(Ñ2Ð2ÀRÐå!ØŒK˜ŒNØØØÝÔ$ñ
ô 
ˆð >FˆŒÔ*¨4¬;°q¬>Ñ:àˆØœð 	9ð 	9ˆIØ�MŠMÕ,¨YÑ7Ô7Ñ8Ô8Ð8Ð8Ý$ˆˆxÑð Œ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      sG   ø€ € € € € ðð ð ð63ð 63ð 63ð 63ð 63ð 63ð 63ð 63ð 63r   r   c                   ó   — e Zd Zd„ ZdS )ÚQDQWherec                 óÂ  — | j         }|j        dk    sJ ‚| j        j        rÃ| j                             |j        d         ¦  «        s%| j                             |j        d         ¦  «         | j                             |j        d         ¦  «        s%| j                             |j        d         ¦  «         | j        s$|j        D ]}| j                             |¦  «         Œd S d S | j                             |j        d         ¦  «        rP| j                             |j        d         ¦  «        r-| j        s(|j        D ]"}| j                             |¦  «         Œd S d S d S d S )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ˆØŒ|˜wÒ&Ð&Ð&Ð&ØŒ>Ô7ð 	BØ”>×5Ò5°d´jÀ´mÑDÔDð IØ”×9Ò9¸$¼*ÀQ¼-ÑHÔHÐHØ”>×5Ò5°d´jÀ´mÑDÔDð IØ”×9Ò9¸$¼*ÀQ¼-ÑHÔHÐHØÔ3ð FØ"œkð Fð F�FØ”N×=Ò=¸fÑEÔEÐEÐEðFð FðFð Fð ŒN×.Ò.¨t¬z¸!¬}Ñ=Ô=ð	Bà”×2Ò2°4´:¸a´=ÑAÔAð	Bð Ô4ð	Bð
 œ+ð Bð B�Ø”×9Ò9¸&ÑAÔAÐAÐAð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð
Bð Br   N)r;   r<   r=   r"   r   r   r   r@   r@   E   s(   € € € € € ðBð Bð Bð Bð Br   r@   )r)   Úquant_utilsr   r   r   r   r   Úbase_operatorr
   Úqdq_base_operatorr   r   r@   r   r   r   ú<module>rH      sÆ   ðØ €€€à uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ð:3ð :3ð :3ð :3ð :3Ð$ñ :3ô :3ð :3ðzBð Bð Bð Bð Bˆñ Bô Bð Bð Bð Br   