§
    ¹³Ùg½Ÿ  ã                  ó´  — d Z ddlmZ ddlZddlZddlZddlZddlZ	ddl
Z
ddlmZmZmZ ddlmZmZ ddlmZ ddlmZmZmZmZ ddlmZmZ dd	lmZmZmZm Z  dd
l!m"Z" d„ Z#d„ Z$d9d„Z%d„ Z&d„ Z'd„ Z( G d„ dej)        d         ¦  «        Z*d:d„Z+d;d„Z,d „ Z-d!„ Z.d"„ Z/d#„ Z0d$„ Z1d%„ Z2d<d-„Z3d=d.„Z4d/„ Z5d0„ Z6d1„ Z7dddd2œd3„Z8dddd2œd4„Z9d5ddd5d6œd7„Z:d5ddd5d6œd8„Z;dS )>zEBinary IO for any value objects, such as numbers, string, parameters.é    )ÚannotationsN)ÚCASE_DEFAULTÚClbitÚClassicalRegister)ÚexprÚtypes)Ú	Parameter)ÚParameterExpressionÚop_code_to_methodÚ_OPCodeÚ_SUBS)ÚParameterVectorÚParameterVectorElement)ÚcommonÚformatsÚ
exceptionsÚ	type_keys)Úparse_sympy_reprc                ó  — |j                              t          j        ¦  «        }|                      t          j        t          j        t          |¦  «        |j
        j        ¦  «        ¦  «         |                      |¦  «         d S ©N)ÚnameÚencoder   ÚENCODEÚwriteÚstructÚpackr   ÚPARAMETER_PACKÚlenÚuuidÚbytes©Úfile_objÚobjÚ
name_bytess      úP/granary/edev/quantum/lib/python3.11/site-packages/qiskit/qpy/binary_io/value.pyÚ_write_parameterr&   (   s\   € Ø”—’¥¤Ñ/Ô/€JØ‡N‚N•6”;�wÔ5µs¸:±´ÈÌÌÑWÔWÑXÔXÐXØ‡N‚N�:ÑÔÐÐÐó    c           	     óH  — |j         j                             t          j        ¦  «        }|                      t          j        t          j	        t          |¦  «        t          |j         ¦  «        |j        j        |j        ¦  «        ¦  «         |                      |¦  «         d S r   )Ú_vectorÚ_namer   r   r   r   r   r   r   ÚPARAMETER_VECTOR_ELEMENT_PACKr   r   r    Ú_indexr!   s      r%   Ú_write_parameter_vecr-   .   sƒ   € Ø”Ô"×)Ò)­&¬-Ñ8Ô8€JØ‡N‚NÝŒÝÔ1Ý�
‰OŒOÝ�”ÑÔØŒHŒNØŒJñ	
ô 	
ñô ð ð ‡N‚N�:ÑÔÐÐÐr'   Fc           	     óÂ  — d }d }| €d}d}�nPt          | t          ¦  «        rd}| j        j        }�n+t          | t          ¦  «        r$d}t          j        d| j        | j        ¦  «        }�nòt          | t          ¦  «        rd}t          j        dd| ¦  «        }�nÃt          | t          ¦  «        rd	}t          j        d
d| ¦  «        }�n”t          | t          ¦  «        �rj|sJt          j        t          j        dd                     d¦  «        dd                     d¦  «        d¦  «        }nIt          j        t          j        dd                     d¦  «        dd                     d¦  «        d¦  «        }|                     |¦  «         t!          || |¦  «         |sJt          j        t          j        dd                     d¦  «        dd                     d¦  «        d¦  «        }nIt          j        t          j        dd                     d¦  «        dd                     d¦  «        d¦  «        }|                     |¦  «         d}d}nt#          j        d¦  «        ‚||fS )NÚnó    ÚpÚcú!ddÚfú!Qdr   Úiú!Qqéÿ   ÚsÚutf8Úez!Invalid parameter expression type)Ú
isinstancer	   r   r    Úcomplexr   r   ÚrealÚimagÚfloatÚintr
   r   ÚPARAM_EXPR_ELEM_V13_PACKr   r   Ú_write_parameter_expression_v13r   ÚQpyError)Úinstr"   ÚversionÚr_sideÚ	inst_typeÚ	inst_dataÚentrys          r%   Ú_encode_replay_entryrK   <   sR  € Ø€IØ€IØ€|Øˆ	Øˆ	‰	Ý	�D�)Ñ	$Ô	$ð 7GØˆ	Ø”I”Oˆ	‰	Ý	�D�'Ñ	"Ô	"ð 4GØˆ	Ý”K  t¤y°$´)Ñ<Ô<ˆ	‰	Ý	�D�%Ñ	 Ô	 ð 1GØˆ	Ý”K  q¨$Ñ/Ô/ˆ	‰	Ý	�D�#Ñ	Ô	ð .GØˆ	Ý”K  q¨$Ñ/Ô/ˆ	‰	Ý	�DÕ-Ñ	.Ô	.ñ +GØð 	Ý”KÝÔ0ØØ—
’
˜6Ñ"Ô"ØØ—
’
˜6Ñ"Ô"Øñô ˆEˆEõ ”KÝÔ0ØØ—
’
˜6Ñ"Ô"ØØ—
’
˜6Ñ"Ô"Øñô ˆEð 	�Š�uÑÔÐÝ'¨°$¸Ñ@Ô@Ð@Øð 	Ý”KÝÔ0ØØ—
’
˜6Ñ"Ô"ØØ—
’
˜6Ñ"Ô"Øñô ˆEˆEõ ”KÝÔ0ØØ—
’
˜6Ñ"Ô"ØØ—
’
˜6Ñ"Ô"Øñô ˆEð 	�Š�uÑÔÐØˆ	Øˆ	ˆ	åÔ!Ð"EÑFÔFÐFØ�iÐÐr'   c                ó@  — t          j        ¦   «         5 }d„ | j                             ¦   «         D ¦   «         }t	          j        ||t          |¬¦  «         |                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j	        t          j        | j        d                     d¦  «        t          j	        dt          |¦  «        d¦  «        d                     d¦  «        d¦  «        }|                     |¦  «         |                     |¦  «         | j        S )	Nc                ó$   — i | ]\  }}|j         |“ŒS © ©r   ©Ú.0ÚkÚvs      r%   ú
<dictcomp>z'_encode_replay_subs.<locals>.<dictcomp>   s    € Ð>Ð>Ð>¡4 1 a�Q”V˜QÐ>Ð>Ð>r'   )ÚmappingÚ
serializerrF   Úur:   ú!QQr   r/   r0   )ÚioÚBytesIOÚbindsÚitemsr   Úwrite_mappingÚdumps_valueÚgetvaluer   r   r   rB   Úopr   r   r   )Úsubsr"   rF   Úmapping_bufÚ	subs_dictÚdatarJ   s          r%   Ú_encode_replay_subsre   }   s;  € Ý	Œ‰Œð &˜Ø>Ð>¨4¬:×+;Ò+;Ñ+=Ô+=Ð>Ñ>Ô>ˆ	ÝÔØ µ{ÈGð	
ñ 	
ô 	
ð 	
ð ×#Ò#Ñ%Ô%ˆð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &õ ŒKÝÔ(ØŒØ�
Š
�6ÑÔÝŒ�E�3˜t™9œ9 aÑ(Ô(Ø�
Š
�6ÑÔØñô €Eð ‡N‚N�5ÑÔÐØ‡N‚N�4ÑÔÐØŒ:Ðs   ”AA5Á5A9Á<A9c           
     ó¾  — i }|j         D ]Ò}t          |t          ¦  «        r%|                     t	          || |¦  «        ¦  «         Œ<t          |j        | |¦  «        \  }}t          |j        | |d¦  «        \  }}t          j	        t          j        |j        |                     d¦  «        ||                     d¦  «        |¦  «        }	|                      |	¦  «         ŒÓ|S )NTr:   )Ú_qpy_replayr<   r   Úupdatere   rK   ÚlhsÚrhsr   r   r   rB   r`   r   r   )
r"   r#   rF   Ú
symbol_maprE   Úlhs_typeri   Úrhs_typerj   rJ   s
             r%   rC   rC   ‘   sÝ   € ð €JØ”ð ð ˆÝ�d�EÑ"Ô"ð 	Ø×ÒÕ1°$¸À'ÑJÔJÑKÔKÐKØÝ,¨T¬X°xÀÑIÔI‰ˆ�#Ý,¨T¬X°xÀÈ$ÑOÔO‰ˆ�#Ý”ÝÔ,ØŒGØ�OŠO˜FÑ#Ô#ØØ�OŠO˜FÑ#Ô#Øñ
ô 
ˆð 	�Š�uÑÔÐÐØÐr'   c          	     ó–	  — d }|dk     rš|r&|j                              ¦   «         d         d         }nÂddlm}m} t          |j         t          j        ¦  «        st          j	        d¦  «        ‚ | ||j         ¦  «        ¦  «         
                    t          j        ¦  «        }nPt          j        ¦   «         5 }t          |||¦  «        }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t#          |j        ¦  «        }	|r|	dt#          |¦  «        z  z  }	t'          j        t*          j        |	t#          |¦  «        ¦  «        }
|                      |
¦  «         |                      |¦  «         |j                             ¦   «         D �]\  }}t2          j                             |¦  «        }|t2          j        j        k    rt          j        |t<          ¦  «        }nt          j        |t>          ¦  «        }||j         k    r|}tA          ¦   «         }ntC          |||¬¦  «        \  }}t'          j        t*          j"        ||t#          |¦  «        ¦  «        }|                      |¦  «         |                      |¦  «         |                      |¦  «         �Œ|�r'|D ]í}t2          j                             |¦  «        }|t2          j        j        k    rt          j        |t<          ¦  «        }nt          j        |t>          ¦  «        }tC          |||¬¦  «        \  }}t'          j        t*          j"        ||t#          |¦  «        ¦  «        }|                      |¦  «         |                      |¦  «         |                      |¦  «         Œî| #                    ¦   «         D �]#}t2          j                             |¦  «        }|t2          j        j        k    rt          j        |t<          ¦  «        }nM|t2          j        j$        k    rt          j        |tJ          ||¬¦  «        }nt          j        |t>          ¦  «        }tC          |||¬¦  «        \  }}t'          j        t*          j"        ||t#          |¦  «        ¦  «        }|                      |¦  «         |                      |¦  «         |                      |¦  «         �Œ#d S d S )	Né   é   r   )ÚsreprÚsympifyzInvalid ParameterExpressioné   )rF   Úuse_symengine©rt   rF   )&Ú_symbol_exprÚ
__reduce__Úsympyrq   rr   r<   Ú	symengineÚBasicr   rD   r   r   r   rY   rZ   rC   r_   r   Ú_parameter_symbolsr   r   r   ÚPARAMETER_EXPR_PACKr   r\   r   ÚValueÚassignÚPARAMETER_VECTORÚdata_to_binaryr-   r&   r    r^   ÚPARAM_EXPR_MAP_ELEM_V3_PACKÚvaluesÚPARAMETER_EXPRESSIONÚ_write_parameter_expression)r"   r#   rt   rF   Úextra_symbolsÚ
expr_bytesrq   rr   ÚbufÚsymbol_table_lenÚparam_expr_header_rawÚsymbolÚvalueÚ
symbol_keyÚsymbol_dataÚ	value_keyÚ
value_dataÚelem_headers                     r%   r„   r„   §   sÎ  € Ø€MØ�‚|€|Øð 	PØÔ)×4Ò4Ñ6Ô6°qÔ9¸!Ô<ˆJˆJà,Ð,Ð,Ð,Ð,Ð,Ð,Ð,å˜cÔ.µ	´Ñ@Ô@ð IÝ Ô)Ð*GÑHÔHÐHà˜˜w˜w sÔ'7Ñ8Ô8Ñ9Ô9×@Ò@ÅÄÑOÔOˆJˆJåŒZ‰\Œ\ð 	(˜SÝ;¸CÀÀgÑNÔNˆMØŸš™œˆJð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ ˜3Ô1Ñ2Ô2ÐØð 3Ø˜A¥ MÑ 2Ô 2Ñ2Ñ2ÐÝ"œKÝÔ#Ð%5µs¸:±´ñô Ðð ‡N‚NÐ(Ñ)Ô)Ð)Ø‡N‚N�:ÑÔÐØÔ/×5Ò5Ñ7Ô7ð #ñ #‰ˆ�Ý”_×+Ò+¨FÑ3Ô3ˆ
ð �œÔ9Ò9Ð9Ý Ô/°Õ8LÑMÔMˆKˆKå Ô/°Õ8HÑIÔIˆKð �FÔ'Ò'Ð'Ø"ˆIÝ™œˆJˆJå$/°¸wÐVcÐ$dÑ$dÔ$dÑ!ˆI�zå”kÝÔ/ØØÝ�
‰OŒOñ	
ô 
ˆð 	�Š�{Ñ#Ô#Ð#Ø�Š�{Ñ#Ô#Ð#Ø�Š�zÑ"Ô"Ð"Ñ"Øñ 2'Ø#ð 	'ð 	'ˆFÝ"œ×/Ò/°Ñ7Ô7ˆJà�Yœ_Ô=Ò=Ð=Ý$Ô3°FÕ<PÑQÔQ��å$Ô3°FÕ<LÑMÔM�å$/Ø °}ð%ñ %ô %Ñ!ˆI�zõ !œ+ÝÔ3ØØÝ�J‘”ñ	ô ˆKð �NŠN˜;Ñ'Ô'Ð'Ø�NŠN˜;Ñ'Ô'Ð'Ø�NŠN˜:Ñ&Ô&Ð&Ð&Ø#×*Ò*Ñ,Ô,ð 	'ñ 	'ˆFÝ"œ×/Ò/°Ñ7Ô7ˆJà�Yœ_Ô=Ò=Ð=Ý$Ô3°FÕ<PÑQÔQ��Ø�yœÔCÒCÐCÝ$Ô3ØÝ/Ø"/Ø#ð	ñ ô ��õ %Ô3°FÕ<LÑMÔM�õ %0Ø °}ð%ñ %ô %Ñ!ˆI�zõ !œ+ÝÔ3ØØÝ�J‘”ñ	ô ˆKð �NŠN˜;Ñ'Ô'Ð'Ø�NŠN˜;Ñ'Ô'Ð'Ø�NŠN˜:Ñ&Ô&Ð&Ñ&ðe2'ð 2'ð,	'ð 	's   Â6&C(Ã(C,Ã/C,c                  óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )Ú_ExprWriter©r"   Úclbit_indicesÚstandalone_var_indicesrF   c                ó>   — || _         || _        || _        || _        d S r   r“   )Úselfr"   r”   r•   rF   s        r%   Ú__init__z_ExprWriter.__init__  s$   € Ø ˆŒØ*ˆÔØ&<ˆÔ#ØˆŒˆˆr'   c               ó2   — t          j        d|› d�¦  «        ‚)Nzunhandled Expr object 'ú')r   rD   ©r—   Únodes     r%   Úvisit_genericz_ExprWriter.visit_generic  s   € ÝÔ!Ð"C¸DÐ"CÐ"CÐ"CÑDÔDÐDr'   c          
     óÄ  — | j                              t          j        j        ¦  «         t          | j         |j        ¦  «         |j        r|| j                              t          j        j	        ¦  «         | j                              t          j        t          j        gt          j        | j        |         ¦  «        ¢R Ž ¦  «         d S t!          |j        t$          ¦  «        r�| j                              t          j        j        ¦  «         | j                              t          j        t          j        gt          j        | j        |j                 ¦  «        ¢R Ž ¦  «         d S t!          |j        t.          ¦  «        rÉ| j                              t          j        j        ¦  «         | j                              t          j        t          j        gt          j        t7          |j        j        ¦  «        ¦  «        ¢R Ž ¦  «         | j                              |j        j                             t<          j        ¦  «        ¦  «         d S tA          j!        d|j        › d�¦  «        ‚)Nzunhandled Var object 'rš   )"r"   r   r   Ú
ExpressionÚVARÚ_write_expr_typeÚtypeÚ
standaloneÚExprVarÚUUIDr   r   r   ÚEXPR_VAR_UUID_PACKÚEXPR_VAR_UUIDr•   r<   Úvarr   ÚCLBITÚEXPR_VAR_CLBIT_PACKÚEXPR_VAR_CLBITr”   r   ÚREGISTERÚEXPR_VAR_REGISTER_PACKÚEXPR_VAR_REGISTERr   r   r   r   r   r   rD   r›   s     r%   Ú	visit_varz_ExprWriter.visit_var  s  € ØŒ×Ò�IÔ0Ô4Ñ5Ô5Ð5Ý˜œ¨¬	Ñ2Ô2Ð2ØŒ?ð 	LØŒM×Ò¥	Ô 1Ô 6Ñ7Ô7Ð7ØŒM×ÒÝ”ÝÔ.ðåÔ*¨4Ô+FÀtÔ+LÑMÔMðð ð ñô ð ð ð õ ˜œ¥%Ñ(Ô(ð 	LØŒM×Ò¥	Ô 1Ô 7Ñ8Ô8Ð8ØŒM×ÒÝ”ÝÔ/ðåÔ+¨DÔ,>¸t¼xÔ,HÑIÔIðð ð ñô ð ð ð õ ˜œÕ"3Ñ4Ô4ð 		LØŒM×Ò¥	Ô 1Ô :Ñ;Ô;Ð;ØŒM×ÒÝ”ÝÔ2ðÝ5<Ô5NÍsÐSWÔS[ÔS`ÑOaÔOaÑ5bÔ5bðð ð ñô ð ð
 ŒM×Ò ¤¤× 4Ò 4µV´]Ñ CÔ CÑDÔDÐDÐDÐDåÔ%Ð&J¸t¼xÐ&JÐ&JÐ&JÑKÔKÐKr'   c               ó´  — | j                              t          j        j        ¦  «         t          | j         |j        ¦  «         |j        du s	|j        du rv| j                              t          j        j	        ¦  «         | j                              t          j        t          j        gt          j        |j        ¦  «        ¢R Ž ¦  «         d S t          |j        t           ¦  «        r×| j                              t          j        j        ¦  «         |j        dk    rd}d}n<|j                             ¦   «         dz  dz   }|j                             |dd¬¦  «        }| j                              t          j        t          j        gt          j        |¦  «        ¢R Ž ¦  «         | j                              |¦  «         d S t-          j        d	|j        › d
�¦  «        ‚)NTFr   r'   é   rp   Úbig©Úsignedzunhandled Value object 'rš   )r"   r   r   rŸ   ÚVALUEr¡   r¢   r‹   Ú	ExprValueÚBOOLr   r   r   ÚEXPR_VALUE_BOOL_PACKÚEXPR_VALUE_BOOLr<   rA   ÚINTÚ
bit_lengthÚto_bytesÚEXPR_VALUE_INT_PACKÚEXPR_VALUE_INTr   rD   )r—   rœ   Ú	num_bytesÚbuffers       r%   Úvisit_valuez_ExprWriter.visit_value7  s²  € ØŒ×Ò�IÔ0Ô6Ñ7Ô7Ð7Ý˜œ¨¬	Ñ2Ô2Ð2ØŒ:˜ÐÐ ¤¨uÐ!4Ð!4ØŒM×Ò¥	Ô 3Ô 8Ñ9Ô9Ð9ØŒM×ÒÝ”�GÔ8Ð_½7Ô;RÐSWÔS]Ñ;^Ô;^Ð_Ð_Ð_ñô ð ð ð õ ˜œ
¥CÑ(Ô(ð 	PØŒM×Ò¥	Ô 3Ô 7Ñ8Ô8Ð8ØŒz˜QŠˆØ�	Ø��ð
 "œZ×2Ò2Ñ4Ô4¸Ñ9¸QÑ>�	Øœ×,Ò,¨Y¸ÀdÐ,ÑKÔK�ØŒM×ÒÝ”�GÔ7Ð\½'Ô:PÐQZÑ:[Ô:[Ð\Ð\Ð\ñô ð ð ŒM×Ò Ñ'Ô'Ð'Ð'Ð'åÔ%Ð&NÀÄÐ&NÐ&NÐ&NÑOÔOÐOr'   c               óV  — | j                              t          j        j        ¦  «         t          | j         |j        ¦  «         | j                              t          j        t          j
        gt          j        |j        ¦  «        ¢R Ž ¦  «         |j                             | ¦  «         d S r   )r"   r   r   rŸ   ÚCASTr¡   r¢   r   r   r   ÚEXPRESSION_CAST_PACKÚEXPRESSION_CASTÚimplicitÚoperandÚacceptr›   s     r%   Ú
visit_castz_ExprWriter.visit_castQ  s�   € ØŒ×Ò�IÔ0Ô5Ñ6Ô6Ð6Ý˜œ¨¬	Ñ2Ô2Ð2ØŒ×ÒÝŒK�Ô4Ð^µwÔ7NÈtÌ}Ñ7]Ô7]Ð^Ð^Ð^ñ	
ô 	
ð 	
ð 	Œ×Ò˜DÑ!Ô!Ð!Ð!Ð!r'   c               ó`  — | j                              t          j        j        ¦  «         t          | j         |j        ¦  «         | j                              t          j        t          j
        gt          j        |j        j        ¦  «        ¢R Ž ¦  «         |j                             | ¦  «         d S r   )r"   r   r   rŸ   ÚUNARYr¡   r¢   r   r   r   ÚEXPRESSION_UNARY_PACKÚEXPRESSION_UNARYr`   r‹   rÇ   rÈ   r›   s     r%   Úvisit_unaryz_ExprWriter.visit_unaryY  s”   € ØŒ×Ò�IÔ0Ô6Ñ7Ô7Ð7Ý˜œ¨¬	Ñ2Ô2Ð2ØŒ×ÒÝŒK�Ô5Ð`½Ô8PÐQUÔQXÔQ^Ñ8_Ô8_Ð`Ð`Ð`ñ	
ô 	
ð 	
ð 	Œ×Ò˜DÑ!Ô!Ð!Ð!Ð!r'   c               ó”  — | j                              t          j        j        ¦  «         t          | j         |j        ¦  «         | j                              t          j        t          j
        gt          j        |j        j        ¦  «        ¢R Ž ¦  «         |j                             | ¦  «         |j                             | ¦  «         d S r   )r"   r   r   rŸ   ÚBINARYr¡   r¢   r   r   r   ÚEXPRESSION_BINARY_PACKÚEXPRESSION_BINARYr`   r‹   ÚleftrÈ   Úrightr›   s     r%   Úvisit_binaryz_ExprWriter.visit_binarya  sª   € ØŒ×Ò�IÔ0Ô7Ñ8Ô8Ð8Ý˜œ¨¬	Ñ2Ô2Ð2ØŒ×ÒÝŒK�Ô6Ðb½Ô9RÐSWÔSZÔS`Ñ9aÔ9aÐbÐbÐbñ	
ô 	
ð 	
ð 	Œ	×Ò˜ÑÔÐØŒ
×Ò˜$ÑÔÐÐÐr'   c               óB  — | j         dk     rt          j        dd| j         ¬¦  «        ‚| j                             t
          j        j        ¦  «         t          | j        |j	        ¦  «         |j
                             | ¦  «         |j                             | ¦  «         d S )Né   zthe 'Index' expression)ÚrequiredÚtarget)rF   r   ÚUnsupportedFeatureForVersionr"   r   r   rŸ   ÚINDEXr¡   r¢   rÙ   rÈ   Úindexr›   s     r%   Úvisit_indexz_ExprWriter.visit_indexj  s–   € ØŒ<˜"ÒÐÝÔ9Ø(°2¸d¼lðñ ô ð ð 	Œ×Ò�IÔ0Ô6Ñ7Ô7Ð7Ý˜œ¨¬	Ñ2Ô2Ð2ØŒ×Ò˜4Ñ Ô Ð ØŒ
×Ò˜$ÑÔÐÐÐr'   N)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r˜   r�   r¯   rÁ   rÉ   rÎ   rÕ   rÝ   rN   r'   r%   r’   r’     sš   € € € € € ØR€Iðð ð ðEð Eð EðLð Lð Lð<Pð Pð Pð4"ð "ð "ð"ð "ð "ð ð  ð  ð ð  ð  ð  ð  r'   r’   rœ   ú	expr.Exprr”   ú#collections.abc.Mapping[Clbit, int]r•   ú&collections.abc.Mapping[expr.Var, int]rF   rA   c                óP   — |                      t          | |||¦  «        ¦  «         d S r   )rÈ   r’   )r"   rœ   r”   r•   rF   s        r%   Ú_write_exprræ   u  s+   € ð 	‡K‚K•˜H mÐ5KÈWÑUÔUÑVÔVÐVÐVÐVr'   Útype_ú
types.Typec                ó¢  — |j         t          j        u r&|                      t          j        j        ¦  «         d S |j         t          j        u rl|                      t          j        j        ¦  «         |                      t          j
        t          j        gt          j        |j        ¦  «        ¢R Ž ¦  «         d S t          j        d|› d�¦  «        ‚)Nzunhandled Type object 'ú;)Úkindr   ÚBoolr   r   ÚExprTyper·   ÚUintÚUINTr   r   r   ÚEXPR_TYPE_UINT_PACKÚEXPR_TYPE_UINTÚwidthr   rD   )r"   rç   s     r%   r¡   r¡     sº   € Ø„z•U”ZÐÐØ�Š•yÔ)Ô.Ñ/Ô/Ð/Ð/Ð/Ø	Œ•u”zÐ	!Ð	!Ø�Š•yÔ)Ô.Ñ/Ô/Ð/Ø�ŠÝŒK�Ô3ÐZµgÔ6LÈUÌ[Ñ6YÔ6YÐZÐZÐZñ	
ô 	
ð 	
ð 	
ð 	
õ Ô!Ð"D¸EÐ"DÐ"DÐ"DÑEÔEÐEr'   c                óV  — t          j        t          j        t           j        |                      t           j        ¦  «        ¦  «        Ž }t          j        |j        ¬¦  «        }|                      |j	        ¦  «         
                    t          j        ¦  «        }t          ||¬¦  «        S )N©r    ©r   )r   Ú	PARAMETERr   Úunpackr   ÚreadÚPARAMETER_SIZEr   r¥   Ú	name_sizeÚdecoder   r   r	   )r"   rd   Ú
param_uuidr   s       r%   Ú_read_parameterrý   ‹  s|   € ÝÔÝ	Œ•wÔ-¨x¯}ª}½WÔ=SÑ/TÔ/TÑ	UÔ	Uð€Dõ ” ¤Ð+Ñ+Ô+€JØ�=Š=˜œÑ(Ô(×/Ò/µ´Ñ>Ô>€DÝ�T 
Ð+Ñ+Ô+Ð+r'   c                ó~  — t          j        t          j        t           j        |                      t           j        ¦  «        ¦  «        Ž }t          j        |j        ¬¦  «        }|                      |j	        ¦  «         
                    t          j        ¦  «        }||vr&t          ||j        ¦  «        t          ¦   «         f||<   ||         d         }||j                 j        |k    rJ||         d                              |j        ¦  «         t%          ||j        |¬¦  «        |j        |j        <   ||j                 S )Nrô   r   rp   rõ   )r   ÚPARAMETER_VECTOR_ELEMENTr   r÷   r+   rø   ÚPARAMETER_VECTOR_ELEMENT_SIZEr   r¥   Úvector_name_sizerû   r   r   r   Úvector_sizeÚsetrÜ   Úaddr   Ú_params)r"   Úvectorsrd   rü   r   Úvectors         r%   Ú_read_parameter_vecr  ”  s	  € ÝÔ+Ý	ŒÝÔ1Ø�MŠM�'Ô?Ñ@Ô@ñ

ô 

ð€Dõ ” ¤Ð+Ñ+Ô+€JØ�=Š=˜Ô.Ñ/Ô/×6Ò6µv´}ÑEÔE€DØ�7ÐÐÝ(¨¨tÔ/?Ñ@Ô@Å#Á%Ä%ÐHˆ�‰Ø�TŒ]˜1Ô€FØˆdŒjÔÔ *Ò,Ð,Ø�Œ�aÔ×Ò˜TœZÑ(Ô(Ð(Ý%;¸FÀDÄJÐU_Ð%`Ñ%`Ô%`ˆŒ�t”zÑ"Ø�$”*ÔÐr'   c           	     ó¢  — t          j        t          j        t           j        |                      t           j        ¦  «        ¦  «        Ž }|                      |j        ¦  «                             t          j
        ¦  «        }t          j        t          |¦  «        ¦  «        }i }t          |j        ¦  «        D �]ˆ}t          j        t          j        t           j        |                      t           j        ¦  «        ¦  «        Ž }t'          | ¦  «        }t)          j        |j        ¦  «        }|                      |j        ¦  «        }	|t(          j        j        k    rt          j        d|	¦  «        }
nË|t(          j        j        k    rt          j        d|	¦  «        }
n |t(          j        j        k    r't7          t          j        t           j        |	¦  «        Ž }
nd|t(          j        j        k    r|j        }
nG|t(          j        j        k    rt          j         |	tB          ¦  «        }
ntE          j#        d|› �¦  «        ‚|
||<   �ŒŠtI          ||¦  «        S )Nú!qú!dú'Invalid parameter expression map type: )%r   ÚPARAMETER_EXPRr   r÷   r|   rø   ÚPARAMETER_EXPR_SIZEÚ	expr_sizerû   r   r   ry   rr   r   ÚrangeÚmap_elementsÚPARAM_EXPR_MAP_ELEMÚPARAM_EXPR_MAP_ELEM_PACKÚPARAM_EXPR_MAP_ELEM_SIZErý   r   r}   r¢   ÚsizeÚINTEGERÚFLOATÚCOMPLEXr=   ÚCOMPLEX_PACKrö   rv   rƒ   Údata_from_binaryÚ_read_parameter_expressionr   rD   r
   )r"   rd   Ú	sympy_strÚexpr_rk   Ú_Ú	elem_datarŠ   Úelem_keyÚbinary_datar‹   s              r%   r  r  ¦  sÜ  € ÝÔ!Ý	Œ•wÔ2°H·M²MÅ'ÔB]Ñ4^Ô4^Ñ	_Ô	_ð€Dð —’˜dœnÑ-Ô-×4Ò4µV´]ÑCÔC€IÝÔÕ.¨yÑ9Ô9Ñ:Ô:€EØ€JÝ�4Ô$Ñ%Ô%ð #ñ #ˆÝÔ/ÝŒ]ÝÔ0Ø—’�gÔ>Ñ?Ô?ñô ð
ˆ	õ ! Ñ*Ô*ˆå”? 9¤>Ñ2Ô2ˆØ—m’m I¤NÑ3Ô3ˆØ•y”Ô.Ò.Ð.Ý”M $¨Ñ4Ô4ˆEˆEØ�œÔ.Ò.Ð.Ý”M $¨Ñ4Ô4ˆEˆEØ�œÔ0Ò0Ð0Ý�Vœ]­7Ô+?ÀÑMÔMÐNˆEˆEØ�œÔ2Ò2Ð2ØÔ'ˆEˆEØ�œÔ=Ò=Ð=ÝÔ+¨KÕ9SÑTÔTˆEˆEåÔ%Ð&ZÐPXÐ&ZÐ&ZÑ[Ô[Ð[Ø"ˆ
�6ÑÑå˜z¨5Ñ1Ô1Ð1r'   c           	     óÐ  — t          j        t          j        t           j        |                      t           j        ¦  «        ¦  «        Ž }|                      |j        ¦  «        }|rt          j	        |¦  «        }n@| 
                    t          j        ¦  «        }t          j        t          |¦  «        ¦  «        }i }t          |j        ¦  «        D �]}t          j        t          j        t           j        |                      t           j        ¦  «        ¦  «        Ž }	t)          j        |	j        ¦  «        }
|
t(          j        j        k    rt1          | ¦  «        }n=|
t(          j        j        k    rt5          | |¦  «        }nt7          j        d|
› �¦  «        ‚t)          j        |	j        ¦  «        }|                      |	j        ¦  «        }|t(          j        j        k    rt          j        d|¦  «        }nÝ|t(          j        j         k    rt          j        d|¦  «        }n²|t(          j        j!        k    r'tE          t          j        t           j#        |¦  «        Ž }nv|t(          j        j        t(          j        j        fv r|j$        }nJ|t(          j        j%        k    rt          j&        |tN          ||¬¦  «        }nt7          j        d|› �¦  «        ‚|||<   �ŒtQ          ||¦  «        S )Nr  r
  r  ©r  rt   ))r   r  r   r÷   r|   rø   r  r  r   Úload_symengine_payloadrû   r   ry   rr   r   r  r  ÚPARAM_EXPR_MAP_ELEM_V3r�   ÚPARAM_EXPR_MAP_ELEM_V3_SIZEr   r}   Úsymbol_typerö   rý   r   r  r   rD   r¢   r  r  r  r  r=   r  rv   rƒ   r  Ú_read_parameter_expression_v3r
   )r"   r  rt   rd   Úpayloadr  r  rk   r  r  rŒ   rŠ   r   r!  r‹   s                  r%   r(  r(  Ê  su  € ÝÔ!Ý	Œ•wÔ2°H·M²MÅ'ÔB]Ñ4^Ô4^Ñ	_Ô	_ð€Dð �mŠm˜DœNÑ+Ô+€GØð ?ÝÔ-¨gÑ6Ô6ˆˆà—N’N¥6¤=Ñ1Ô1ˆ	ÝÔ!Õ"2°9Ñ"=Ô"=Ñ>Ô>ˆà€JÝ�4Ô$Ñ%Ô%ð ##ñ ##ˆÝÔ2ÝŒ]ÝÔ3Ø—’�gÔAÑBÔBñô ð
ˆ	õ ”_ YÔ%:Ñ;Ô;ˆ
à�œÔ2Ò2Ð2Ý$ XÑ.Ô.ˆFˆFØ�9œ?Ô;Ò;Ð;Ý(¨°7Ñ;Ô;ˆFˆFåÔ%Ð&\ÐPZÐ&\Ð&\Ñ]Ô]Ð]å”? 9¤>Ñ2Ô2ˆØ—m’m I¤NÑ3Ô3ˆØ•y”Ô.Ò.Ð.Ý”M $¨Ñ4Ô4ˆEˆEØ�œÔ.Ò.Ð.Ý”M $¨Ñ4Ô4ˆEˆEØ�œÔ0Ò0Ð0Ý�Vœ]­7Ô+?ÀÑMÔMÐNˆEˆEØ�)œ/Ô3µY´_Ô5UÐVÐVÐVØÔ'ˆEˆEØ�œÔ=Ò=Ð=ÝÔ+ØÝ-ØØ+ð	ñ ô ˆEˆEõ Ô%Ð&ZÐPXÐ&ZÐ&ZÑ[Ô[Ð[Ø"ˆ
�6ÑÑå˜z¨5Ñ1Ô1Ð1r'   c           	     óÐ  — t          j        t          j        t           j        |                      t           j        ¦  «        ¦  «        Ž }|                      |j        ¦  «        }i }t          |j	        ¦  «        D �]-}t          j
        t          j        t           j        |                      t           j        ¦  «        ¦  «        Ž }t          j        |j        ¦  «        }|t          j        j        k    rt#          | ¦  «        }	nd|t          j        j        k    rt'          | |¦  «        }	n>|t          j        j        k    rt+          | ||¦  «        }	nt-          j        d|› �¦  «        ‚t          j        |j        ¦  «        }
|                      |j        ¦  «        }|
t          j        j        k    rt          j        d|¦  «        }nÝ|
t          j        j        k    rt          j        d|¦  «        }n²|
t          j        j        k    r't;          t          j        t           j        |¦  «        Ž }nv|
t          j        j        t          j        j        fv r|	j        }nJ|
t          j        j        k    rtA          j!        |t*          ||¬¦  «        }nt-          j        d|
› �¦  «        ‚|||	<   �Œ/tE          j#        |¦  «        5 }tI          ||||¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr  r
  r  ©r  rF   )%r   r  r   r÷   r|   rø   r  r  r  r  r%  r�   r&  r   r}   r'  rö   rý   r   r  rƒ   Ú_read_parameter_expression_v13r   rD   r¢   r  r  r  r  r=   r  rv   r   r  rY   rZ   Ú_read_parameter_expr_v13)r"   r  rF   rd   r)  rk   r  r  rŒ   rŠ   r   r!  r‹   r‡   s                 r%   r,  r,  ÿ  s×  € ÝÔ!Ý	Œ•wÔ2°H·M²MÅ'ÔB]Ñ4^Ô4^Ñ	_Ô	_ð€Dð �mŠm˜DœNÑ+Ô+€Gà€JÝ�4Ô$Ñ%Ô%ð &#ñ &#ˆÝÔ2ÝŒ]ÝÔ3Ø—’�gÔAÑBÔBñô ð
ˆ	õ ”_ YÔ%:Ñ;Ô;ˆ
à�œÔ2Ò2Ð2Ý$ XÑ.Ô.ˆFˆFØ�9œ?Ô;Ò;Ð;Ý(¨°7Ñ;Ô;ˆFˆFØ�9œ?Ô?Ò?Ð?Ý3°H¸gÀwÑOÔOˆFˆFåÔ%Ð&\ÐPZÐ&\Ð&\Ñ]Ô]Ð]å”? 9¤>Ñ2Ô2ˆà—m’m I¤NÑ3Ô3ˆØ•y”Ô.Ò.Ð.Ý”M $¨Ñ4Ô4ˆEˆEØ�œÔ.Ò.Ð.Ý”M $¨Ñ4Ô4ˆEˆEØ�œÔ0Ò0Ð0Ý�Vœ]­7Ô+?ÀÑMÔMÐNˆEˆEØ�)œ/Ô3µY´_Ô5UÐVÐVÐVØÔ'ˆEˆEØ�œÔ=Ò=Ð=ÝÔ+ØÝ.ØØð	ñ ô ˆEˆEõ Ô%Ð&ZÐPXÐ&ZÐ&ZÑ[Ô[Ð[Ø"ˆ
�6ÑÑÝ	Œ�GÑ	Ô	ð K Ý'¨¨Z¸À'ÑJÔJðKð Kð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð Kð Ks   Ê<KËKË"Kc                óz  ‡— d„ |D ¦   «         }d„ |                      ¦   «         D ¦   «         Š|                      t          j        ¦  «        }g }|�rYt          j                             t          j        t          j        |¦  «        ¦  «        }|j	        dk    r5| 
                    |t          j        |j        ¬¦  «                 ¦  «         �n÷|j	        dk    r5| 
                    t          j        d|j        ¦  «        d         ¦  «         �n·|j	        dk    r�nª|j	        d	k    r6| 
                    t          t          j        d
|j        ¦  «        Ž ¦  «         �ni|j	        dk    r5| 
                    t          j        d|j        ¦  «        d         ¦  «         �n)|j	        dk    r!|                      t          j        ¦  «        }�Œy|j	        dk    r!|                      t          j        ¦  «        }�Œ¥|j	        dk    r²t          j        d|j        ¦  «        d         }|                      |¦  «        }	t!          j        |	¦  «        5 }
t%          j        |
t(          ||¬¦  «        }d d d ¦  «         n# 1 swxY w Y   | 
                    ˆfd„|                      ¦   «         D ¦   «         ¦  «         nt+          j        d¦  «        ‚|j        dk    r5| 
                    |t          j        |j        ¬¦  «                 ¦  «         �n>|j        dk    r4| 
                    t          j        d|j        ¦  «        d         ¦  «         nÿ|j        dk    rnó|j        d	k    r5| 
                    t          t          j        d
|j        ¦  «        Ž ¦  «         n³|j        dk    r4| 
                    t          j        d|j        ¦  «        d         ¦  «         nt|j        dk    r!|                      t          j        ¦  «        }�Œ¬|j        dk    r!|                      t          j        ¦  «        }�ŒØt+          j        d|j        › �¦  «        ‚|j        dk    r�Œt5          t7          |j        ¦  «        ¦  «        }|j        dv rÐ|                     ¦   «         }|                     ¦   «         }t;          |t<          ¦  «        sft;          |t<          ¦  «        rQ|j        dv rH|j        dk    rd}n|j        dk    rd}| 
                     t?          ||¦  «        |¦  «        ¦  «         nl| 
                     t?          ||¦  «        |¦  «        ¦  «         n?|                     ¦   «         }| 
                     t?          ||¦  «        ¦   «         ¦  «         |                      t          j        ¦  «        }|�°Y|                     ¦   «         S )Nc                óH   — i | ]}t          |t          ¦  «        ¯|j        |“Œ S rN   )r<   r	   r   )rQ   rŠ   s     r%   rT   z,_read_parameter_expr_v13.<locals>.<dictcomp>3  s-   € ÐdÐdÐd¨fÅjÐQWÕYbÑFcÔFcÐd�f”k 6ÐdÐdÐdr'   c                ó4   — i | ]\  }}t          |¦  «        |“ŒS rN   )ÚstrrP   s      r%   rT   z,_read_parameter_expr_v13.<locals>.<dictcomp>4  s$   € Ð9Ð9Ð9™d˜a •�A‘”˜Ð9Ð9Ð9r'   ó   prô   ó   fr5   rp   ó   nó   cr3   ó   ir7   ó   só   eó   urX   r   )ÚdeserializerrF   r  c                ó(   •— i | ]\  }}‰|         |“ŒS rN   rN   )rQ   rR   rS   Úname_maps      €r%   rT   z,_read_parameter_expr_v13.<locals>.<dictcomp>S  s#   ø€ ÐEÐEÐE©T¨Q°˜( 1œ+ qÐEÐEÐEr'   zEUnknown ParameterExpression operation type {expression_data.LHS_TYPE}z+Unknown ParameterExpression operation type r8   >
   r   rp   rs   é   é   ro   é   é   é   é   >   r   rs   Ú__radd__rs   Ú__rmul__) r\   rø   r   ÚPARAM_EXPR_ELEM_V13_SIZEÚPARAM_EXPR_ELEM_V13Ú_maker   r÷   rB   ÚLHS_TYPEÚappendr   r¥   ÚLHSr=   Úunpack_fromrY   rZ   r   Úread_mappingÚloads_valuer   rD   ÚRHS_TYPEÚRHSÚOP_CODEr   r   Úpopr<   r
   Úgetattr)r‡   rk   rF   r  Úparam_uuid_maprd   ÚstackÚexpression_datar  Úsubs_map_datarb   rU   Ú
method_strrj   ri   r<  s                  @r%   r-  r-  2  s‰  ø€ ØdÐd¸
ÐdÑdÔd€NØ9Ð9 j×&6Ò&6Ñ&8Ô&8Ð9Ñ9Ô9€HØ�8Š8•GÔ4Ñ5Ô5€DØ€EØ
ñ O:Ý!Ô5×;Ò;ÝŒM�'Ô:¸DÑAÔAñ
ô 
ˆð Ô# tÒ+Ð+Ø�LŠL˜­¬	¸Ô8KÐ(LÑ(LÔ(LÔMÑNÔNÐNÑNØÔ%¨Ò-Ð-Ø�LŠL�œ u¨oÔ.AÑBÔBÀ1ÔEÑFÔFÐFÑFØÔ%¨Ò-Ð-ÙØÔ%¨Ò-Ð-Ø�LŠL�¥&¤-°°Ô7JÑ"KÔ"KÐLÑMÔMÐMÑMØÔ%¨Ò-Ð-Ø�LŠL�œ u¨oÔ.AÑBÔBÀ1ÔEÑFÔFÐFÑFØÔ%¨Ò-Ð-Ø—8’8�GÔ<Ñ=Ô=ˆDÙØÔ%¨Ò-Ð-Ø—8’8�GÔ<Ñ=Ô=ˆDÙØÔ%¨Ò-Ð-ÝÔ% e¨_Ô-@ÑAÔAÀ!ÔDˆDØŸHšH T™NœNˆMÝ”˜MÑ*Ô*ð ¨kÝ Ô-Ø­kÀ7ÐT[ðñ ô �ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð �LŠLÐEÐEÐEÐE°W·]²]±_´_ÐEÑEÔEÑFÔFÐFÐFåÔ%ØWñô ð ð Ô# tÒ+Ð+Ø�LŠL˜­¬	¸Ô8KÐ(LÑ(LÔ(LÔMÑNÔNÐNÑNØÔ%¨Ò-Ð-Ø�LŠL�œ u¨oÔ.AÑBÔBÀ1ÔEÑFÔFÐFÐFØÔ%¨Ò-Ð-ØØÔ%¨Ò-Ð-Ø�LŠL�¥&¤-°°Ô7JÑ"KÔ"KÐLÑMÔMÐMÐMØÔ%¨Ò-Ð-Ø�LŠL�œ u¨oÔ.AÑBÔBÀ1ÔEÑFÔFÐFÐFØÔ%¨Ò-Ð-Ø—8’8�GÔ<Ñ=Ô=ˆDÙØÔ%¨Ò-Ð-Ø—8’8�GÔ<Ñ=Ô=ˆDÙåÔ%ØX¸oÔ>VÐXÐXñô ð ð Ô" cÒ)Ð)ÙÝ&¥w¨Ô/FÑ'GÔ'GÑHÔHˆ
ØÔ"Ð&IÐIÐIØ—)’)‘+”+ˆCØ—)’)‘+”+ˆCõ ˜sÕ$7Ñ8Ô8ð<å˜sÕ$7Ñ8Ô8ð<ð $Ô+¨vÐ5Ð5à"Ô*¨aÒ/Ð/Ø!+�J�JØ$Ô,°Ò1Ð1Ø!+�JØ—’Ð5�W S¨*Ñ5Ô5°cÑ:Ô:Ñ;Ô;Ð;Ð;à—’Ð5�W S¨*Ñ5Ô5°cÑ:Ô:Ñ;Ô;Ð;Ð;à—)’)‘+”+ˆCØ�LŠLÐ1�  jÑ1Ô1Ñ3Ô3Ñ4Ô4Ð4Ø�xŠx�Ô8Ñ9Ô9ˆð_ ñ O:ð` �9Š9‰;Œ;Ðs   ÉI0É0I4É7I4Úclbitsúcollections.abc.Sequence[Clbit]Úcregsú/collections.abc.Mapping[str, ClassicalRegister]Ústandalone_varsú"collections.abc.Sequence[expr.Var]Úreturnc           
     ó„  — |                       t          j        ¦  «        }t          | ¦  «        }|t          j        j        k    �rü|                       t          j        ¦  «        }|t          j        j	        k    rft          j
                             t          j        t          j        |                       t          j        ¦  «        ¦  «        ¦  «        }||j                 S |t          j        j        k    ryt          j                             t          j        t          j        |                       t          j        ¦  «        ¦  «        ¦  «        }t+          j        ||j                 |¦  «        S |t          j        j        k    r«t          j                             t          j        t          j        |                       t          j        ¦  «        ¦  «        ¦  «        }|                       |j        ¦  «                             t<          j        ¦  «        }t+          j        ||         |¦  «        S tA          j!        d¦  «        ‚|t          j        j"        k    �rq|                       t          j#        ¦  «        }	|	t          j$        j%        k    rst          j&                             t          j        t          j'        |                       t          j(        ¦  «        ¦  «        ¦  «        }t+          j)        |j*        |¦  «        S |	t          j$        j+        k    r¡t          j,                             t          j        t          j-        |                       t          j.        ¦  «        ¦  «        ¦  «        }t+          j)        t^           0                    |                       |j1        ¦  «        dd¬¦  «        |¦  «        S tA          j!        d¦  «        ‚|t          j        j2        k    r…t          j3                             t          j        t          j4        |                       t          j5        ¦  «        ¦  «        ¦  «        }t+          j6        to          | |||¦  «        ||j8        ¬¦  «        S |t          j        j9        k    r¡t          j:                             t          j        t          j;        |                       t          j<        ¦  «        ¦  «        ¦  «        }t+          j=        t*          j=         >                    |j?        ¦  «        to          | |||¦  «        |¦  «        S |t          j        j@        k    r²t          jA                             t          j        t          jB        |                       t          jC        ¦  «        ¦  «        ¦  «        }t+          jD        t*          jD         >                    |j?        ¦  «        to          | |||¦  «        to          | |||¦  «        |¦  «        S |t          j        jE        k    r6t+          jF        to          | |||¦  «        to          | |||¦  «        |¦  «        S tA          j!        d|› d�¦  «        ‚)	Nz5Invalid classical-expression Var key '{var_type_key}'r²   Tr³   z9Invalid classical-expression Value key '{value_type_key}')rÆ   z'Invalid classical-expression Expr key 'rš   )Grø   r   ÚEXPRESSION_DISCRIMINATOR_SIZEÚ_read_expr_typer   rŸ   r    ÚEXPR_VAR_DISCRIMINATOR_SIZEr¤   r¥   r§   rG  r   r÷   r¦   ÚEXPR_VAR_UUID_SIZEÚ	var_indexr©   r«   rª   ÚEXPR_VAR_CLBIT_SIZEr   ÚVarrÜ   r¬   r®   r­   ÚEXPR_VAR_REGISTER_SIZEÚreg_name_sizerû   r   r   r   rD   rµ   ÚEXPR_VALUE_DISCRIMINATOR_SIZEr¶   r·   r¹   r¸   ÚEXPR_VALUE_BOOL_SIZEr}   r‹   rº   r¾   r½   ÚEXPR_VALUE_INT_SIZErA   Ú
from_bytesr¿   rÃ   rÅ   rÄ   ÚEXPRESSION_CAST_SIZEÚCastÚ
_read_exprrÆ   rË   rÍ   rÌ   ÚEXPRESSION_UNARY_SIZEÚUnaryÚOpÚopcoderÐ   rÒ   rÑ   ÚEXPRESSION_BINARY_SIZEÚBinaryrÛ   ÚIndex)
r"   rX  rZ  r\  Útype_keyrç   Úvar_type_keyr)  r   Úvalue_type_keys
             r%   ro  ro  Š  së  € ð �}Š}�WÔBÑCÔC€HÝ˜HÑ%Ô%€EØ•9Ô'Ô+Ò+Ñ+Ø—}’}¥WÔ%HÑIÔIˆØ�9Ô,Ô1Ò1Ð1ÝÔ+×1Ò1Ý”�gÔ8¸(¿-º-ÍÔHbÑ:cÔ:cÑdÔdñô ˆGð # 7Ô#4Ô5Ð5Ø�9Ô,Ô2Ò2Ð2ÝÔ,×2Ò2Ý”ÝÔ/°·²½wÔ?ZÑ1[Ô1[ñô ñô ˆGõ
 ”8˜F 7¤=Ô1°5Ñ9Ô9Ð9Ø�9Ô,Ô5Ò5Ð5ÝÔ/×5Ò5Ý”ÝÔ2°H·M²MÅ'ÔB`Ñ4aÔ4añô ñô ˆGð
 —=’= Ô!6Ñ7Ô7×>Ò>½v¼}ÑMÔMˆDÝ”8˜E $œK¨Ñ/Ô/Ð/ÝÔ!Ð"YÑZÔZÐZØ•9Ô'Ô-Ò-Ñ-Ø!Ÿš¥wÔ'LÑMÔMˆØ�YÔ0Ô5Ò5Ð5ÝÔ-×3Ò3Ý”ÝÔ0°(·-²-ÅÔ@\Ñ2]Ô2]ñô ñô ˆGõ
 ”:˜gœm¨UÑ3Ô3Ð3Ø�YÔ0Ô4Ò4Ð4ÝÔ,×2Ò2Ý”ÝÔ/°·²½wÔ?ZÑ1[Ô1[ñô ñô ˆGõ
 ”:Ý—’˜xŸ}š}¨WÔ->Ñ?Ô?ÀÈt�ÑTÔTÐV[ñô ð õ Ô!Ð"]Ñ^Ô^Ð^Ø•9Ô'Ô,Ò,Ð,ÝÔ)×/Ò/ÝŒM�'Ô6¸¿ºÅgÔFbÑ8cÔ8cÑdÔdñ
ô 
ˆõ ŒyÝ�x ¨°Ñ@Ô@À%ÐRYÔRbð
ñ 
ô 
ð 	
ð •9Ô'Ô-Ò-Ð-ÝÔ*×0Ò0ÝŒMÝÔ-¨x¯}ª}½WÔ=ZÑ/[Ô/[ñô ñ
ô 
ˆõ
 ŒzÝŒJ�MŠM˜'œ.Ñ)Ô)Ý�x ¨°Ñ@Ô@Øñ
ô 
ð 	
ð
 •9Ô'Ô.Ò.Ð.ÝÔ+×1Ò1ÝŒMÝÔ.°·²½gÔ>\Ñ0]Ô0]ñô ñ
ô 
ˆõ
 Œ{ÝŒK�NŠN˜7œ>Ñ*Ô*Ý�x ¨°Ñ@Ô@Ý�x ¨°Ñ@Ô@Øñ	
ô 
ð 	
ð •9Ô'Ô-Ò-Ð-ÝŒzÝ�x ¨°Ñ@Ô@Ý�x ¨°Ñ@Ô@Øñ
ô 
ð 	
õ
 Ô
ÐSÈÐSÐSÐSÑ
TÔ
TÐTr'   c                óÎ  — |                       t          j        ¦  «        }|t          j        j        k    rt          j        ¦   «         S |t          j        j        k    rrt          j	         
                    t          j        t          j        |                       t          j        ¦  «        ¦  «        ¦  «        }t          j        |j        ¦  «        S t#          j        d|› d�¦  «        ‚)Nz'Invalid classical-expression Type key 'rš   )rø   r   ÚEXPR_TYPE_DISCRIMINATOR_SIZEr   rí   r·   r   rì   rï   rñ   rG  r   r÷   rð   ÚEXPR_TYPE_UINT_SIZErî   rò   r   rD   )r"   rw  Úelems      r%   ra  ra  ä  s®   € Ø�}Š}�WÔAÑBÔB€HØ•9Ô%Ô*Ò*Ð*ÝŒz‰|Œ|ÐØ•9Ô%Ô*Ò*Ð*ÝÔ%×+Ò+ÝŒM�'Ô5°x·}²}ÅWÔE`Ñ7aÔ7aÑbÔbñ
ô 
ˆõ Œz˜$œ*Ñ%Ô%Ð%Ý
Ô
ÐSÈÐSÐSÐSÑ
TÔ
TÐTr'   c           	     ó¦  — t           j        j        g t           j        j        g t           j        j        g i}g }t          |¦  «        D �]}t          j                             t          j
        t          j        |                      t          j        ¦  «        ¦  «        ¦  «        }t          | ¦  «        }|                      |j        ¦  «                             t"          j        ¦  «        }t'          j        t+          j        |j        ¬¦  «        ||¬¦  «        }||j                                      |¦  «         |                     |¦  «         �Œ||fS )a¬  Read the ``num_vars`` standalone variable declarations from the file.

    Args:
        file_obj (File): a file-like object to read from.
        num_vars (int): the number of variables to read.

    Returns:
        tuple[dict, list]: the first item is a mapping of the ``ExprVarDeclaration`` type keys to
        the variables defined by that type key, and the second is the total order of variable
        declarations.
    rô   rO   )r   ÚExprVarDeclarationÚINPUTÚCAPTUREÚLOCALr  r   ÚEXPR_VAR_DECLARATIONrG  r   r÷   ÚEXPR_VAR_DECLARATION_PACKrø   ÚEXPR_VAR_DECLARATION_SIZEra  rú   rû   r   r   r   rf  r   r¥   Ú
uuid_bytesÚusagerI  )	r"   Únum_varsÚ	read_varsÚ	var_orderr  rd   rç   r   r¨   s	            r%   Úread_standalone_varsr‹  ð  s  € õ 	Ô$Ô*¨BÝÔ$Ô,¨bÝÔ$Ô*¨Bð€Ið
 €IÝ�8‰_Œ_ð ñ ˆÝÔ+×1Ò1ÝŒMÝÔ1Ø—’�gÔ?Ñ@Ô@ñô ñ
ô 
ˆõ   Ñ)Ô)ˆØ�}Š}˜Tœ^Ñ,Ô,×3Ò3µF´MÑBÔBˆÝŒh•t”y t¤Ð7Ñ7Ô7¸ÀTÐJÑJÔJˆØ�$”*Ô×$Ò$ SÑ)Ô)Ð)Ø×Ò˜ÑÔÐÑØ�iÐÐr'   c                óV  — |j                              t          j        ¦  «        }|                      t          j        t          j        gt          j	        |j
        j        |t          |¦  «        ¦  «        ¢R Ž ¦  «         t          | |j        ¦  «         |                      |¦  «         d S r   )r   r   r   r   r   r   r   r   r„  rƒ  r¨   r    r   r¡   r¢   )r"   r¨   rw  r   s       r%   Ú_write_standalone_varr�    s”   € ØŒ8�?Š?�6œ=Ñ)Ô)€DØ‡N‚NÝŒÝÔ-ð	
åÔ)¨#¬'¬-¸Å3ÀtÁ9Ä9ÑMÔMð	
ð 	
ð 	
ñô ð õ �X˜sœxÑ(Ô(Ð(Ø‡N‚N�4ÑÔÐÐÐr'   c                ó”  — d}i }|                      ¦   «         D ],}t          | |t          j        j        ¦  «         |||<   |dz  }Œ-|                     ¦   «         D ],}t          | |t          j        j        ¦  «         |||<   |dz  }Œ-|                     ¦   «         D ],}t          | |t          j        j        ¦  «         |||<   |dz  }Œ-|S )aE  Write the standalone variables out from a circuit.

    Args:
        file_obj (File): the file-like object to write to.
        circuit (QuantumCircuit): the circuit to take the variables from.

    Returns:
        dict[expr.Var, int]: a mapping of the variables written to the index that they were written
        at.
    r   rp   )	Úiter_input_varsr�  r   r  r€  Úiter_captured_varsr�  Úiter_declared_varsr‚  )r"   ÚcircuitrÜ   Úoutr¨   s        r%   Úwrite_standalone_varsr”    sè   € ð €EØ
€CØ×&Ò&Ñ(Ô(ð ð ˆÝ˜h¨­YÔ-IÔ-OÑPÔPÐPØˆˆC‰Ø�‰
ˆˆØ×)Ò)Ñ+Ô+ð ð ˆÝ˜h¨­YÔ-IÔ-QÑRÔRÐRØˆˆC‰Ø�‰
ˆˆØ×)Ò)Ñ+Ô+ð ð ˆÝ˜h¨­YÔ-IÔ-OÑPÔPÐPØˆˆC‰Ø�‰
ˆˆØ€Jr'   )Ú	index_maprt   r•   c               ó‚  — t           j                             | ¦  «        }|t           j        j        k    rt	          j        d| ¦  «        }�nñ|t           j        j        k    rt	          j        d| ¦  «        }�nÅ|t           j        j        k    r,t	          j        t          j	        | j
        | j        ¦  «        }�n„|t           j        j        k    r!t          j        | t          j        ¦  «        }�nN|t           j        j        k    r!|                      t          j        ¦  «        }�n|t           j        j        t           j        j        fv rd}nñ|t           j        j        k    rt          j        | t.          ¦  «        }nÁ|t           j        j        k    rt          j        | t2          ¦  «        }n‘|t           j        j        k    rt          j        | t6          ||¬¦  «        }n^|t           j        j        k    r1|€i n|d         }|€i n|}t          j        | t:          |||¬¦  «        }nt=          j        d|› d	�¦  «        ‚||fS )
a)  Serialize input value object.

    Args:
        obj (any): Arbitrary value object to serialize.
        version (int): the target QPY version for the dump.
        index_map (dict): Dictionary with two keys, "q" and "c".  Each key has a value that is a
            dictionary mapping :class:`.Qubit` or :class:`.Clbit` instances (respectively) to their
            integer indices.
        use_symengine (bool): If True, symbolic objects will be serialized using symengine's
            native mechanism. This is a faster serialization alternative, but not supported in all
            platforms. Please check that your target platform is supported by the symengine library
            before setting this option, as it will be required by qpy to deserialize the payload.
        standalone_var_indices (dict): Dictionary that maps standalone :class:`.expr.Var` entries to
            the index that should be used to refer to them.

    Returns:
        tuple: TypeKey and binary data.

    Raises:
        QpyError: Serializer for given format is not ready.
    r
  r  r'   ru   Nr2   )r”   r•   rF   úSerialization for ú! is not implemented in value I/O.) r   r}   r~   r  r   r   r  r  r   r  r>   r?   Ú	NUMPY_OBJr   r€   ÚnpÚsaveÚSTRINGr   r   ÚNULLr   r   r-   rö   r&   rƒ   r„   Ú
EXPRESSIONræ   r   rD   )r#   rF   r•  rt   r•   rw  r!  r”   s           r%   r^   r^   9  sû  € õ: Œ×%Ò% cÑ*Ô*€Hà•9”?Ô*Ò*Ð*Ý”k $¨Ñ,Ô,ˆ‰Ø	•Y”_Ô*Ò	*Ð	*Ý”k $¨Ñ,Ô,ˆ‰Ø	•Y”_Ô,Ò	,Ð	,Ý”k¥'Ô"6¸¼À#Ä(ÑKÔKˆ‰Ø	•Y”_Ô.Ò	.Ð	.ÝÔ+¨Cµ´Ñ9Ô9ˆ‰Ø	•Y”_Ô+Ò	+Ð	+Ø—j’j¥¤Ñ/Ô/ˆ‰Ø	•i”oÔ*­I¬OÔ,HÐIÐ	IÐ	IØˆˆØ	•Y”_Ô5Ò	5Ð	5ÝÔ+¨CÕ1EÑFÔFˆˆØ	•Y”_Ô.Ò	.Ð	.ÝÔ+¨CÕ1AÑBÔBˆˆØ	•Y”_Ô9Ò	9Ð	9ÝÔ+ØÕ,¸MÐSZð
ñ 
ô 
ˆˆð 
•Y”_Ô/Ò	/Ð	/Ø'Ð/˜˜°Y¸s´^ˆØ'=Ð'E  ÐKaÐÝÔ+ØÝØ'Ø#9Øð
ñ 
ô 
ˆˆõ Ô!Ð"b°xÐ"bÐ"bÐ"bÑcÔcÐcà�[Ð Ð r'   c               ó`   — t          |||||¬¦  «        \  }}t          j        | ||¦  «         dS )aÙ  Write a value to the file like object.

    Args:
        file_obj (File): A file like object to write data.
        obj (any): Value to write.
        version (int): the target QPY version for the dump.
        index_map (dict): Dictionary with two keys, "q" and "c".  Each key has a value that is a
            dictionary mapping :class:`.Qubit` or :class:`.Clbit` instances (respectively) to their
            integer indices.
        use_symengine (bool): If True, symbolic objects will be serialized using symengine's
            native mechanism. This is a faster serialization alternative, but not supported in all
            platforms. Please check that your target platform is supported by the symengine library
            before setting this option, as it will be required by qpy to deserialize the payload.
        standalone_var_indices (dict): Dictionary that maps standalone :class:`.expr.Var` entries to
            the index that should be used to refer to them.
    )rF   r•  rt   r•   N)r^   r   Úwrite_generic_typed_data)r"   r#   rF   r•  rt   r•   rw  rd   s           r%   Úwrite_valuer¡  |  sH   € õ& !ØØØØ#Ø5ðñ ô �N€Hˆdõ Ô# H¨h¸Ñ=Ô=Ð=Ð=Ð=r'   rN   ©rX  rZ  rt   r\  c               ó  — t          | t          ¦  «        rt          j        | ¦  «        } | t          j        j        k    rt          j        d|¦  «        d         S | t          j        j        k    rt          j        d|¦  «        d         S | t          j        j        k    r&t          t          j        t          j        |¦  «        Ž S | t          j        j        k    rt          j        |t          j        ¦  «        S | t          j        j        k    r|                     t          j        ¦  «        S | t          j        j        k    rdS | t          j        j        k    rt*          S | t          j        j        k    rt          j        |t.          |¬¦  «        S | t          j        j        k    rt          j        |t2          ¦  «        S | t          j        j        k    r`|dk     rt          j        |t6          ¦  «        S |dk     rt          j        |t8          ||¬¦  «        S t          j        |t:          ||¬	¦  «        S | t          j        j        k    r t          j        |t>          ||pi |¬
¦  «        S tA          j!        d| › d�¦  «        ‚)a=  Deserialize input binary data to value object.

    Args:
        type_key (ValueTypeKey): Type enum information.
        binary_data (bytes): Data to deserialize.
        version (int): QPY version.
        vectors (dict): ParameterVector in current scope.
        clbits (Sequence[Clbit]): Clbits in the current scope.
        cregs (Mapping[str, ClassicalRegister]): Classical registers in the current scope.
        use_symengine (bool): If True, symbolic objects will be de-serialized using symengine's
            native mechanism. This is a faster serialization alternative, but not supported in all
            platforms. Please check that your target platform is supported by the symengine library
            before setting this option, as it will be required by qpy to deserialize the payload.
        standalone_vars (Sequence[Var]): standalone :class:`.expr.Var` nodes in the order that they
            were declared by the circuit header.

    Returns:
        any: Deserialized value object.

    Raises:
        QpyError: Serializer for given format is not ready.
    r
  r   r  N)r  r=  ro   r#  r+  )rX  rZ  r\  r—  r˜  )"r<   r    r   r}   r  r   r÷   r  r  r=   r   r  r™  r   r  rš  Úloadrœ  rû   r   r�  r   r   r  rö   rý   rƒ   r  r(  r,  rž  ro  r   rD   )rw  r!  rF   r  rX  rZ  rt   r\  s           r%   rM  rM  ™  sB  € õF �(�EÑ"Ô"ð -Ý”? 8Ñ,Ô,ˆà•9”?Ô*Ò*Ð*ÝŒ}˜T ;Ñ/Ô/°Ô2Ð2Ø•9”?Ô(Ò(Ð(ÝŒ}˜T ;Ñ/Ô/°Ô2Ð2Ø•9”?Ô*Ò*Ð*Ý�œ¥gÔ&:¸KÑHÔHÐIÐIØ•9”?Ô,Ò,Ð,ÝÔ& {µB´GÑ<Ô<Ð<Ø•9”?Ô)Ò)Ð)Ø×!Ò!¥&¤-Ñ0Ô0Ð0Ø•9”?Ô'Ò'Ð'ØˆtØ•9”?Ô/Ò/Ð/ÝÐØ•9”?Ô3Ò3Ð3ÝÔ& {Õ4GÐQXÐYÑYÔYÐYØ•9”?Ô,Ò,Ð,ÝÔ& {µOÑDÔDÐDØ•9”?Ô7Ò7Ð7Ø�QŠ;ˆ;ÝÔ*¨;Õ8RÑSÔSÐSØ�rŠ\ˆ\ÝÔ*ØÝ-ØØ+ð	ñ ô ð õ Ô*ØÕ;ÀWÐV]ðñ ô ð ð •9”?Ô-Ò-Ð-ÝÔ&ØÝØØ�+˜2Ø+ð
ñ 
ô 
ð 	
õ Ô
Ð^°8Ð^Ð^Ð^Ñ
_Ô
_Ð_r'   c          
     ó^   — t          j        | ¦  «        \  }}t          ||||||||¬¦  «        S )a«  Read a value from the file like object.

    Args:
        file_obj (File): A file like object to write data.
        version (int): QPY version.
        vectors (dict): ParameterVector in current scope.
        clbits (Sequence[Clbit]): Clbits in the current scope.
        cregs (Mapping[str, ClassicalRegister]): Classical registers in the current scope.
        use_symengine (bool): If True, symbolic objects will be de-serialized using symengine's
            native mechanism. This is a faster serialization alternative, but not supported in all
            platforms. Please check that your target platform is supported by the symengine library
            before setting this option, as it will be required by qpy to deserialize the payload.
        standalone_vars (Sequence[expr.Var]): standalone variables in the order they were defined in
            the QPY payload.

    Returns:
        any: Deserialized value object.
    r¢  )r   Úread_generic_typed_datarM  )	r"   rF   r  rX  rZ  rt   r\  rw  rd   s	            r%   Ú
read_valuer§  ë  sG   € õ8 Ô3°HÑ=Ô=�N€HˆdåØØØØØØØ#Ø'ð	ñ 	ô 	ð 	r'   )F)rœ   râ   r”   rã   r•   rä   rF   rA   )rç   rè   )rX  rY  rZ  r[  r\  r]  r^  râ   )r^  rè   )<Ú__doc__Ú
__future__r   Úcollections.abcÚcollectionsrY   r   r   Únumpyrš  ry   Úqiskit.circuitr   r   r   Úqiskit.circuit.classicalr   r   Úqiskit.circuit.parameterr	   Ú"qiskit.circuit.parameterexpressionr
   r   r   r   Úqiskit.circuit.parametervectorr   r   Ú
qiskit.qpyr   r   r   r   Ú%qiskit.qpy.binary_io.parse_sympy_reprr   r&   r-   rK   re   rC   r„   ÚExprVisitorr’   ræ   r¡   rý   r  r  r(  r,  r-  ro  ra  r‹  r�  r”  r^   r¡  rM  r§  rN   r'   r%   ú<module>rµ     s  ðð LÐ Kà "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€à Ð Ð Ð Ø Ð Ð Ð ð BÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø BÐ BÐ BÐ BÐ BÐ Bðð ð ðð ð ð> ð > ð > ð > ðBð ð ð(ð ð ð,c'ð c'ð c'ðLe ð e ð e ð e ð e �$Ô" 4Ô(ñ e ô e ð e ðPWð Wð Wð Wð	Fð 	Fð 	Fð 	Fð,ð ,ð ,ðð ð ð$!2ð !2ð !2ðH22ð 22ð 22ðj0Kð 0Kð 0KðfUð Uð UðpWUð WUð WUð WUðt	Uð 	Uð 	Uð 	Uð ð  ð  ðB	ð 	ð 	ðð ð ð@ ØØð@!ð @!ð @!ð @!ð @!ðH *.¸UÐ[_ð>ð >ð >ð >ð >ðF Ø
ØØðO`ð O`ð O`ð O`ð O`ðn Ø
ØØð'ð 'ð 'ð 'ð 'ð 'ð 'r'   