Ë
    cQêj0Q  ã                  ó„   — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	Z	ddl
mZ e G d„ d	«      «       Z G d
„ de«      Zy)é    )ÚannotationsN)ÚMutableMapping)Ú	dataclass)ÚAnyé   )Ú	QuantTypec                  ó‚   — e Zd ZU dZded<   dZded<   dZded<   dZded	<   dd
„Ze		 	 	 d	 	 	 	 	 	 	 	 	 dd„«       Z
dd„Zy)ÚQuantTypeInfozB
    The quantization type information for a tensor override.
    r   Ú
quant_typeNúbool | NoneÚ	symmetricÚreduce_rangez
int | NoneÚaxisc                ó‚  — t        |t        «      rª| j                  |j                  k(  xr� | j                  d u xs) |j                  d u xs | j                  |j                  k(  xrT | j                  d u xs) |j                  d u xs | j                  |j                  k(  xr | j
                  |j
                  k(  S t        S ©N)Ú
isinstancer
   r   r   r   r   ÚNotImplemented)ÚselfÚothers     út/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/onnxruntime/quantization/tensor_quant_overrides.pyÚ__eq__zQuantTypeInfo.__eq__   s±   € Ü�eœ]Ô+à—‘ 5×#3Ñ#3Ñ3ò .Ø—^‘^ tÐ+Òk¨u¯©À$Ð/FÒkÈ$Ï.É.Ð\a×\kÑ\kÑJkò.à×&Ñ&¨$Ð.Òw°%×2DÑ2DÈÐ2LÒwÐPT×PaÑPaÐej×ewÑewÑPwò.ð —Y‘Y %§*¡*Ñ,ð	ô Ðó    c                óœ   — t        | j                  d|«      | j                  d|«      | j                  d|«      | j                  d«      «      S ©Nr   r   r   r   )r
   Úget)Úraw_dictÚdefault_qtypeÚdefault_symmetricÚdefault_reduce_ranges       r   Úload_from_dictzQuantTypeInfo.load_from_dict'   sI   € ô Ø�L‰L˜ }Ó5Ø�L‰L˜Ð&7Ó8Ø�L‰L˜Ð)=Ó>Ø�L‰L˜Ó ó	
ð 	
r   c                óÆ   — | j                   |d<   | j                  �| j                  |d<   | j                  �| j                  |d<   | j                  �| j                  |d<   y y r   )r   r   r   r   )r   r   s     r   Úsave_to_dictzQuantTypeInfo.save_to_dict5   sa   € Ø!%§¡ˆ�ÑØ�>‰>Ð%Ø$(§N¡NˆH�[Ñ!Ø×ÑÐ(Ø'+×'8Ñ'8ˆH�^Ñ$Ø�9‰9Ð Ø#Ÿy™yˆH�VÒð !r   )r   Úobject)NNN)
r   údict[str, Any]r   úQuantType | Noner   r   r   r   Úreturnr
   )r   r$   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   Ústaticmethodr    r"   © r   r   r
   r
      s„   … ñð ÓØ!€Iˆ{Ó!Ø $€L�+Ó$Ø€Dˆ*Óóð ð +/Ø)-Ø,0ð	
Ø ð
à'ð
ð 'ð
ð *ð	
ð
 
ò
ó ð
ô)r   r
   c                  óX  ‡ — e Zd ZdZdd„Zdd„Zdd„Zdd„Z	 d	 	 	 	 	 dd„Z	 d	 	 	 	 	 dd„Z	dd„Z
	 	 	 	 	 	 dd	„Z	 	 	 	 	 	 d d
„Z	 	 	 	 	 	 d!d„Z	 	 d"	 	 	 	 	 	 	 	 	 d#d„Z	 d	 	 	 	 	 	 	 d$d„Z	 	 d%	 	 	 	 	 	 	 	 	 	 	 d&d„Zdd'd„Zd(d„Zd)d„Zd*d„Zd+d„Zd,d„Zd„ Zd„ Zd'd„Zd'ˆ fd„Zˆ xZS )-ÚTensorQuantOverridesHelperzZ
    Utility wrapper over the tensor quantization overrides passed via extra_options.
    c                ó2   — || _         d | _        h d£| _        y )N>   ÚrmaxÚrminr   r   )Ú	overridesÚquant_typesÚkeys_unsupported_with_scale_zp)r   Úraw_overridess     r   Ú__init__z#TensorQuantOverridesHelper.__init__D   s   € Ø&ˆŒØˆÔÚ.[ˆÕ+r   c                óN   — | j                   j                  |«      }|xr d|d   vS ©Nr   r   ©r3   r   ©r   Útensor_nameÚoverrides_lists      r   Úhas_per_tensor_overridesz3TensorQuantOverridesHelper.has_per_tensor_overridesI   s+   € ØŸ™×+Ñ+¨KÓ8ˆØÒA &°¸qÑ0AÐ"AÐAr   c                óN   — | j                   j                  |«      }|xr d|d   v S r9   r:   r;   s      r   Úhas_per_channel_overridesz4TensorQuantOverridesHelper.has_per_channel_overridesM   s+   € ØŸ™×+Ñ+¨KÓ8ˆØÒ= &¨N¸1Ñ,=Ð"=Ð=r   c                ó`   — | j                   j                  |«      }|xr d|d   v xr d|d   v S )NÚscaler   Ú
zero_pointr:   r;   s      r   Úoverrides_scale_zpz-TensorQuantOverridesHelper.overrides_scale_zpQ   s<   € ØŸ™×+Ñ+¨KÓ8ˆØÒh 7¨n¸QÑ.?Ð#?ÒhÀlÐVdÐefÑVgÐFgÐhr   c                óŠ   — |�|gnd }| j                   j                  ||«      }|rd|d   v rt        d|› d�«      ‚|r|d   S d S )Nr   r   úExpected tensor 'zL' to use per-tensor quantization overrides, but found per-channel overrides.©r3   r   Ú
ValueError)r   r<   Údefault_valÚdefault_list_valr=   s        r   Úget_per_tensor_overridesz3TensorQuantOverridesHelper.get_per_tensor_overridesU   sk   € ð
 -8Ð,C˜K™=ÈÐØŸ™×+Ñ+¨KÐ9IÓJˆÙ˜f¨°qÑ(9Ñ9ÜØ# K =ð 13ð 4óð ñ
 %3ˆ~˜aÑ Ð<¸Ð<r   c                óp   — | j                   j                  ||«      }|sy d|d   vrt        d|› d�«      ‚|S )Nr   r   rF   zE' to have per-channel quantization overrides (axis value is missing).rG   )r   r<   rI   r=   s       r   Úget_per_channel_overridesz4TensorQuantOverridesHelper.get_per_channel_overridesd   sO   € ð
 Ÿ™×+Ñ+¨K¸ÓEˆáØà˜¨Ñ*Ñ*ÜØ# K =Ð0uÐvóð ð Ðr   c                ól  — | j                   �| j                   S t        «       | _         | j                  rv| j                  j                  «       D ]Y  }|D ]R  }d|v r| j                   j	                  |d   «       d|v sŒ*d|d   v sŒ2| j                   j	                  |d   d   «       ŒT Œ[ | j                   S )Nr   Úconvert)r4   Úsetr3   ÚvaluesÚadd)r   Úquant_overrides_listÚquant_overridess      r   Úget_quant_typesz*TensorQuantOverridesHelper.get_quant_typesu   s½   € Ø×ÑÐ'Ø×#Ñ#Ð#ä›5ˆÔà�>Š>Ø(,¯©×(=Ñ(=Ó(?ò WÐ$Ø';ò W�OØ# Ñ6Ø×(Ñ(×,Ñ,¨_¸\Ñ-JÔKà  OÒ3¸ÈÐXaÑHbÒ8bØ×(Ñ(×,Ñ,¨_¸YÑ-GÈÑ-UÕVñWðWð ×ÑÐr   c                óÌ  — t        |t        «      sdd|› d�fS ||v }|j                  d«      }|r| j                  j	                  |«       d|v }d|v }|r|r|r|sy|r=| j
                  j                  t        |«      «      }	|	rddd	j                  |	«      › d
�fS d|v r	|sdd|› �fS d|v r¹|ryd|d   vrdd|› d�fS d|d   v rdd|› �fS |d   d   }
|�|n|}|
|k(  rdd|› d�fS d|d   v }d|d   v }|r|r|r
|sdd|› d�fS |rC| j
                  j                  t        |d   «      «      }	|	rddd	j                  |	«      › d|› d�fS | j                  j	                  |
«       y)NFú#Tensor quantization overrides for 'ú' are not in a dictr   rB   rC   ©FzNMust provide both 'scale' and 'zero_point' if one of the overrides is providedúTensor override option(s) [ú, ú+] are invalid with 'scale' and 'zero_point'r   zMOption 'reduce_range' is only supported for initializers, not for activation rO   )Fz.Cannot use 'convert' override for initializersz'convert' options (tensor 'z') must specify a 'quant_type'zC'convert' quant_type must differ from original quant_type (tensor 'z')zXMust provide both 'scale' and 'zero_point' if one of the overrides is provided (tensor 'z5] are invalid with 'scale' and 'zero_point' (tensor '©TN)	r   Údictr   r4   rR   r5   ÚintersectionrP   Újoin)r   ÚinitializersÚdefault_activation_qtyper<   rT   Úis_initializerr   Ú	has_scaleÚhas_zero_pointÚkeysÚconvert_quant_typeÚoriginal_quant_typeÚconvert_has_scaleÚconvert_has_zero_points                 r   Ú_is_valid_per_tensorz/TensorQuantOverridesHelper._is_valid_per_tensor†   sB  € ô ˜/¬4Ô0àØ5°k°]ÐBUÐVðð ð
 %¨Ð4ˆà$×(Ñ(¨Ó6ˆ
ÙØ×Ñ× Ñ  Ô,à˜Ð.ˆ	Ø%¨Ð8ˆá™n±.Éðñ
 Ø×6Ñ6×CÑCÄCÈÓDXÓYˆDÙàØ1°$·)±)¸D³/Ð1BÐBmÐnðð ð
 ˜_Ñ,±^àØ_Ð`kÐ_lÐmðð ð
 ˜Ñ'ÙØNà ?°9Ñ#=Ñ=ØÐ ;¸K¸=ÐHfÐgÐgÐgà °Ñ!;Ñ;àØcÐdoÐcpÐqðð ð
 "1°Ñ!;¸LÑ!IÐØ0:Ð0F¡*ÐLdÐØ!Ð%8Ò8àØYÐZeÐYfÐfhÐiðð ð
 !(¨?¸9Ñ+EÐ EÐØ%1°_ÀYÑ5OÐ%OÐ"á!Ñ*@ÑF\ÑevàØnÐozÐn{Ð{}Ð~ðð ñ
 !Ø×:Ñ:×GÑGÌÈOÐ\eÑLfÓHgÓh�ÙàØ5°d·i±iÀ³oÐ5Fð G$Ø$/ =°ð4ðð ð ×Ñ× Ñ Ð!3Ô4àr   c                ó:  — ||v }|sdd|› d�fS |d   j                  d«      }|€dd|› d�fS t        ||   j                  «      }t        |«      }|}|dk  r||z  }|dk  s|t        |«      k\  rdd|› d	t        |«      › d
�fS t        |«      dkD  r.t        |«      ||   k7  rdd|› d|› d||   › dt        |«      › d�	fS d|d   v rdd|› d�fS |d   j                  d«      }	|	r| j                  j                  |	«       |d   j                  d«      }
|d   j                  d«      }d|d   v }d|d   v }|xr |}|r|r|r|sy|r@| j                  j                  t        |d   «      «      }|rdddj                  |«      › d�fS d|d   v }d|d   v }|xr |}|r|r|s|ryt        |dd  «      D ]è  \  }}t        |t        «      sdd|› d |› d!�fc S d|v r
dd|› d�fc S d|v r
|	|d   k7  r y"d|v r||d   k7  r
||d   k7  r y#d|v r
|
|d   k7  r y$d|v r
||d   k7  r y%d|v xr d|v }|r|sdd&|› d'|› d�fc S |r?| j                  j                  t        |«      «      }|rdddj                  |«      › d�fc S d|v xr d|v }|sŒÚ|rŒÝdd(|› d'|› d�fc S  y))*NFúTensor 'z6' has per-channel overrides, but is not an initializerr   r   z!Per-channel overrides for tensor z< is missing an 'axis' value in the first channel dictionary.z0Axis override value is out-of-bounds for tensor z (rank ú)r   z1Incorrect number of channel overrides for tensor z (axis z), expected z, but found ú.rO   z8Cannot use 'convert' override for initializers, such as r   r   r   rB   rC   rY   rZ   r[   r\   r2   r1   )Fz6Must provide both 'rmin' and 'rmax' if one is providedz'Tensor quantization overrides at index z for 'rX   )FzTChannel quantization types for tensor '{tensor_name}' do not match at index {index}.)FzHChannel axis for tensor '{tensor_name}' does not match at index {index}.)FzSChannel symmetric value for tensor '{tensor_name}' does not match at index {index}.)FzVChannel reduce_range value for tensor '{tensor_name}' does not match at index {index}.z]Per-channel overrides that specify scale/zero_point must do so for all channels, but tensor 'z' is missing them at index zVPer-channel overrides that specify rmin/rmax must do so for all channels, but tensor 'r]   )r   ÚlistÚdimsÚlenr4   rR   r5   r_   rP   r`   Ú	enumerater   r^   )r   ra   r<   rS   rc   r   Úweight_shapeÚweight_rankÚ	norm_axisr   r   r   rd   re   Úhas_scale_zprf   Úhas_rminÚhas_rmaxÚhas_rmin_rmaxÚindexrT   Úchan_has_scale_zpÚchan_has_rmin_rmaxs                          r   Ú_is_valid_per_channelz0TensorQuantOverridesHelper._is_valid_per_channelÛ   s=  € ð %¨Ð4ˆáàØ˜;˜-Ð']Ð^ðð ð
 $ AÑ&×*Ñ*¨6Ó2ˆàˆ<àØ3°K°=ð A0ð 0ðð ô ˜L¨Ñ5×:Ñ:Ó;ˆÜ˜,Ó'ˆØˆ	Ø�qŠ=Ø˜Ñ$ˆIà�qŠ=˜I¬¨\Ó):Ò:àØBÀ;À-ÈwÔWZÐ[gÓWhÐViÐijÐkðð ô
 Ð#Ó$ qÒ(¬SÐ1EÓ-FÈ,ÐW`ÑJaÒ-aàØCÀKÀ=ÐPWÐX\ÐW]ð ^Ø(¨Ñ.Ð/¨|¼CÐ@TÓ<UÐ;VÐVWðYðð ð Ð,¨QÑ/Ñ/ØÐTÐU`ÐTaÐabÐcÐcÐcà)¨!Ñ,×0Ñ0°Ó>ˆ
ÙØ×Ñ× Ñ  Ô,à(¨Ñ+×/Ñ/°Ó<ˆ	Ø+¨AÑ.×2Ñ2°>ÓBˆàÐ3°AÑ6Ð6ˆ	Ø%Ð)=¸aÑ)@Ð@ˆØ Ò3 ^ˆá™n±.Éðñ
 Ø×6Ñ6×CÑCÄCÐH\Ð]^ÑH_ÓD`ÓaˆDÙàØ1°$·)±)¸D³/Ð1BÐBmÐnðð ð
 Ð1°!Ñ4Ð4ˆØÐ1°!Ñ4Ð4ˆØ Ò- XˆÙ™X©x¹Hðô
 '0Ð0DÀQÀRÐ0HÓ&Iò ;	Ñ"ˆE�?Ü˜o¬tÔ4àØ=¸e¸WÀFÈ;È-ÐWjÐkðò ð
 ˜OÑ+ØÐ XÐYdÐXeÐefÐgÐgÒgð
 ˜Ñ.°:ÀÐQ]ÑA^Ò3^ñð ˜Ñ(¨T°_ÀVÑ5LÒ-LÐQZÐ^mÐntÑ^uÒQuñð ˜oÑ-°)¸È{Ñ?[Ò2[ñð  Ñ0°\À_ÐUcÑEdÒ5dñð !(¨?Ð :Ò ^¸|ÈÐ?^ÐáÑ$5àð#Ø#. -Ð/JÈ5È'ÐQRðTðò ñ !Ø×:Ñ:×GÑGÌÈOÓH\Ó]�ÙàØ5°d·i±iÀ³oÐ5FÐFqÐrðò ð "(¨?Ð!:Ò!X¸vÈÐ?XÐÚÒ%7àð#Ø#. -Ð/JÈ5È'ÐQRðTðò ðo;	ðz r   c                óÐ  — t        «       | _        | j                  rË| j                  j                  «       D ]®  \  }}||vr||vr
dd|› d�fc S t	        |t
        «      s
dd|› d�fc S |sŒ5t	        |d   t        «      s
dd|› d�fc S |d   sŒX|d   j                  d	«      }t        |«      d
kD  xs |d u}|r| j                  |||«      c S | j                  ||||d   «      c S  y)NFrm   z5' in TensorQuantOverrides is not present in the modelrW   z' are not in a listr   z.Tensor quantization overrides at index 0 for 'rX   r   r   r]   )rP   r4   r3   Úitemsr   rp   r^   r   rr   r~   rk   )r   ra   Úactivation_namesrb   r<   rS   r   Úis_per_channels           r   Úis_validz#TensorQuantOverridesHelper.is_validi  s)  € ô ›5ˆÔð �>Š>Ø59·^±^×5IÑ5IÓ5Kò Ñ1�Ð1Ø lÑ2°{ÐJZÑ7ZØ  H¨[¨MÐ9nÐ"oÐoÒoä!Ð"6¼Ô=Ø Ð$GÈÀ}ÐTgÐ"hÐhÒhá+Øä!Ð"6°qÑ"9¼4Ô@Ø Ð$RÐS^ÐR_Ð_rÐ"sÐsÒsà+¨AÒ.Øà+¨AÑ.×2Ñ2°6Ó:�Ü!$Ð%9Ó!:¸QÑ!>Ò!RÀ$ÈdÐBR�á!Ø×5Ñ5°lÀKÐQeÓfÒfà×0Ñ0Ø Ð":¸KÐI]Ð^_ÑI`óò ð-ð4 r   c                ó   — |sy|�t        |«      nd }| j                  j                  |«      }d}|sP|rNt        | j                  |   «      D ]3  \  }}|�||vrŒt        |«      j	                  t        |«      «      sŒ1d} n |rJ|si g| j                  |<   t        | j                  |   «      D ]  \  }}|�||vrŒ|j                  |«       Œ |S )NFT)rP   r3   r   rs   r_   Úupdate)	r   r<   Únew_valsÚchannelsÚ	overwriteÚhave_overridesÚ	do_updateÚchannelr3   s	            r   Úupdate_tensor_overridesz2TensorQuantOverridesHelper.update_tensor_overrides�  sê   € ñ Øà$,Ð$8”3�x”=¸dˆØŸ™×+Ñ+¨KÓ8ˆð ˆ	Ù™^Ü&/°·±¸{Ñ0KÓ&Lò Ñ"�˜ØÐ'¨G¸8Ñ,CØÜ�x“=×-Ñ-¬c°)«nÕ=Ø %�IÙðñ Ù!Ø/1¨d�—‘˜{Ñ+ä&/°·±¸{Ñ0KÓ&Lò +Ñ"�˜ØÐ'¨G¸8Ñ,CØØ× Ñ  Õ*ð+ð
 Ðr   c                ó²   — || j                   vrt        ||«      S | j                   |   d   }t        |j                  d|«      |j                  d|«      «      S )Nr   r   r   )r3   r
   r   )r   Úoutput_namer   r   Útensor_overridess        r   Úget_node_output_qtype_infoz5TensorQuantOverridesHelper.get_node_output_qtype_info²  s`   € ð ˜dŸn™nÑ,Ü  Ð0AÓBÐBàŸ>™>¨+Ñ6°qÑ9ÐäØ× Ñ  ¨}Ó=Ø× Ñ  Ð.?Ó@ó
ð 	
r   c                ó�  — || j                   vs| j                   |   st        |||«      S | j                   |   d   }|j                  d|«      }d|vr=t        ||j                  d|«      |j                  d|«      |j                  d«      «      S |d   }t        ||j                  d|«      «      }	d|vs||d   v r
|d   |	_        |	S )Nr   r   rO   r   r   r   Ú
recv_nodes)r3   r
   r   r   )
r   Ú
input_nameÚ	node_namer   r   r   r�   Úproducer_typeÚconvert_dictÚ
qtype_infos
             r   Úget_node_input_qtype_infoz4TensorQuantOverridesHelper.get_node_input_qtype_infoÃ  sð   € ð ˜TŸ^™^Ñ+°4·>±>À*Ò3MÜ  Ð0AÐCWÓXÐXð  Ÿ>™>¨*Ñ5°aÑ8ÐØ(×,Ñ,¨\¸=ÓIˆàÐ,Ñ,Ü ØØ ×$Ñ$ [Ð2CÓDØ ×$Ñ$ ^Ð5IÓJØ ×$Ñ$ VÓ,ó	ð ð (¨	Ñ2ˆÜ"ØØ×Ñ˜[Ð*;Ó<ó
ˆ
ð  Ñ,°)¸|ÈLÑ?YÑ2YØ$0°Ñ$>ˆJÔ!àÐr   c                óN   — t        j                  | j                  t        |¬«      S )N)ÚdefaultÚindent)ÚjsonÚdumpsr3   Ústr)r   r›   s     r   Ú
pprint_strz%TensorQuantOverridesHelper.pprint_strê  s   € Ü�z‰z˜$Ÿ.™.´#¸fÔEÐEr   c                ó   — | j                    S r   ©r3   ©r   s    r   Úemptyz TensorQuantOverridesHelper.emptyí  s   € Ø—>‘>Ð!Ð!r   c                ó   — | j                   S r   r¡   r¢   s    r   Úget_dictz#TensorQuantOverridesHelper.get_dictð  s   € Ø�~‰~Ðr   c                ó"   — || j                   |<   y r   r¡   )r   ÚkeyÚvalues      r   Ú__setitem__z&TensorQuantOverridesHelper.__setitem__õ  s   € Ø#ˆ�‰�sÒr   c                ó    — | j                   |   S r   r¡   ©r   r§   s     r   Ú__getitem__z&TensorQuantOverridesHelper.__getitem__ø  s   € Ø�~‰~˜cÑ"Ð"r   c                ó   — | j                   |= y r   r¡   r«   s     r   Ú__delitem__z&TensorQuantOverridesHelper.__delitem__û  s   € Ø�N‰N˜3Ñr   c                ó,   — t        | j                  «      S r   )Úiterr3   r¢   s    r   Ú__iter__z#TensorQuantOverridesHelper.__iter__þ  s   € Ü�D—N‘NÓ#Ð#r   c                ó,   — t        | j                  «      S r   )rr   r3   r¢   s    r   Ú__len__z"TensorQuantOverridesHelper.__len__  ó   € Ü�4—>‘>Ó"Ð"r   c                ó,   — t        | j                  «      S r   )rž   r3   r¢   s    r   Ú__str__z"TensorQuantOverridesHelper.__str__  r´   r   c                ó@   •— t         ‰| �  «       › d| j                  › d�S )Nz, TensorQuantOverridesHelper(rn   )ÚsuperÚ__repr__r3   )r   Ú	__class__s    €r   r¹   z#TensorQuantOverridesHelper.__repr__  s&   ø€ Ü‘'Ñ"Ó$Ð%Ð%BÀ4Ç>Á>ÐBRÐRSÐTÐTr   )r6   údict[str, list[dict[str, Any]]])r<   rž   r&   Úboolr   )r<   rž   rI   údict[str, Any] | Noner&   r½   )r<   rž   rI   úlist[dict[str, Any]] | Noner&   r¾   )r&   zset[QuantType])r<   rž   rT   r$   r&   útuple[bool, str | None])r<   rž   rS   zlist[dict[str, Any]]r&   r¿   )ra   zdict[str, onnx.TensorProto]r�   zset[str]r&   r¿   )NT)
r<   rž   r†   r$   r‡   zlist[int] | Nonerˆ   r¼   r&   r¼   )rŽ   rž   r   r%   r   r   r&   r
   )NN)r“   rž   r”   rž   r   r%   r   r   r   r   r&   r
   )r&   rž   )r&   r¼   )r&   r»   )r§   rž   r¨   ú
list[dict])r§   rž   r&   rÀ   )r§   rž   )r'   r(   r)   r*   r7   r>   r@   rD   rK   rM   rU   rk   r~   rƒ   rŒ   r�   r˜   rŸ   r£   r¥   r©   r¬   r®   r±   r³   r¶   r¹   Ú__classcell__)rº   s   @r   r/   r/   ?   sÒ  ø„ ñó\ó
Bó>óið .2ð=àð=ð +ð=ð 
ó	=ð$ 48ðàðð 1ðð 
%ó	ó" ð"Sð ð	Sð
 (ðSð 
!óSðjLð ðLð 3ð	Lð
 
!óLð\$à1ð$ð #ð$ð
 
!ó$ðT &*Øð!àð!ð !ð!ð #ð	!ð
 ð!ð 
ó!ðN *.ð	
àð
ð (ð
ð 'ð	
ð
 
ó
ð, *.Ø,0ð%àð%ð ð%ð (ð	%ð
 'ð%ð *ð%ð 
ó%ôNFó"óó
$ó#ó ò$ò#ó#÷Uñ Ur   r/   )Ú
__future__r   rœ   Úcollections.abcr   Údataclassesr   Útypingr   ÚonnxÚquant_utilsr   r
   r/   r-   r   r   ú<module>rÈ      sF   ðõ #ã Ý *Ý !Ý ã å "ð ÷))ð ))ó ð))ôXIU õ IUr   