§
    ¹³Ùghâ  ã                   ó
  — 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 ddlmZmZmZmZ ddlmZ ddlmZmZ ddl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"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z8 ddl9m:Z:m;Z; d0d„Z<d0d„Z=d0d„Z>d„ Z?d„ Z@d„ ZAd„ ZBd„ ZCd„ ZDd„ ZEd„ ZFd„ ZGd1d!„ZHd"„ ZId#„ ZJ	 d0d$„ZKd%„ ZLd&„ ZMd'„ ZNd(„ ZOd)„ ZPd*„ ZQd+„ ZRd,„ ZSd-„ ZTdd e,jU        fd.„ZV	 d2d/„ZWdS )3zBinary IO for circuit objects.é    )ÚdefaultdictN)Úcircuit)ÚlibraryÚcontrolflowÚCircuitInstructionÚControlFlowOp)Úexpr)ÚClassicalRegisterÚClbit)ÚGate)ÚSingletonInstructionÚSingletonGate)ÚControlledGate)ÚAnnotatedOperationÚModifierÚInverseModifierÚControlModifierÚPowerModifier)ÚInstruction)ÚQuantumCircuit)ÚQuantumRegisterÚQubit)ÚcommonÚformatsÚ	type_keysÚ
exceptions)ÚvalueÚ	schedules)ÚSparsePauliOpÚClifford)Ú	evolution)ÚLayoutÚTranspileLayoutc                 ó:  — t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|                      |j        ¦  «         	                    t          j        ¦  «        }t          j        |j        |                      |j        ¦  «        ||¬¦  «        }||j        |j        |j        |j        |j        dœ}|                      |j        ¦  «        }t-          j        ||¬¦  «        }	|||	fS )N©ÚversionÚvectors)Úglobal_phaseÚ
num_qubitsÚ
num_clbitsÚnum_registersÚnum_instructionsÚnum_vars©Úcls)r   ÚCIRCUIT_HEADER_V12Ú_makeÚstructÚunpackÚCIRCUIT_HEADER_V12_PACKÚreadÚCIRCUIT_HEADER_V12_SIZEÚ	name_sizeÚdecoder   ÚENCODEr   Úloads_valueÚglobal_phase_typeÚglobal_phase_sizer)   r*   r+   r,   r-   Úmetadata_sizeÚjsonÚloads©
Úfile_objr&   r'   Úmetadata_deserializerÚdataÚnamer(   ÚheaderÚmetadata_rawÚmetadatas
             úS/granary/edev/quantum/lib/python3.11/site-packages/qiskit/qpy/binary_io/circuits.pyÚ_read_header_v12rI   2   sþ   € ÝÔ%×+Ò+ÝŒÝÔ+¨X¯]ª]½7Ô;ZÑ-[Ô-[ñ	
ô 	
ñô €Dð
 �=Š=˜œÑ(Ô(×/Ò/µ´Ñ>Ô>€DÝÔ$ØÔØ�Š�dÔ,Ñ-Ô-ØØð	ñ ô €Lð %Ø”oØ”oØÔ+Ø Ô1Ø”Mðð €Fð —=’= Ô!3Ñ4Ô4€LÝŒz˜,Ð,AÐBÑBÔB€HØ�4˜Ð!Ð!ó    c                 ó.  — t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|                      |j        ¦  «         	                    t          j        ¦  «        }t          j        |j        |                      |j        ¦  «        ||¬¦  «        }||j        |j        |j        |j        dœ}|                      |j        ¦  «        }t+          j        ||¬¦  «        }	|||	fS )Nr%   ©r(   r)   r*   r+   r,   r.   )r   ÚCIRCUIT_HEADER_V2r1   r2   r3   ÚCIRCUIT_HEADER_V2_PACKr5   ÚCIRCUIT_HEADER_V2_SIZEr7   r8   r   r9   r   r:   r;   r<   r)   r*   r+   r,   r=   r>   r?   r@   s
             rH   Ú_read_header_v2rP   L   sú   € ÝÔ$×*Ò*ÝŒÝÔ*Ø�MŠM�'Ô8Ñ9Ô9ñ	
ô 	
ñô €Dð �=Š=˜œÑ(Ô(×/Ò/µ´Ñ>Ô>€DÝÔ$ØÔØ�Š�dÔ,Ñ-Ô-ØØð	ñ ô €Lð %Ø”oØ”oØÔ+Ø Ô1ðð €Fð —=’= Ô!3Ñ4Ô4€LÝŒz˜,Ð,AÐBÑBÔB€HØ�4˜Ð!Ð!rJ   c                 óÎ  — t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|                      |j        ¦  «         	                    t          j        ¦  «        }|j        |j        |j        |j        |j        dœ}|                      |j        ¦  «        }t%          j        ||¬¦  «        }|||fS )NrL   r.   )r   ÚCIRCUIT_HEADERr1   r2   r3   ÚCIRCUIT_HEADER_PACKr5   ÚCIRCUIT_HEADER_SIZEr7   r8   r   r9   r(   r)   r*   r+   r,   r=   r>   r?   )rA   rB   rC   rD   rE   rF   rG   s          rH   Ú_read_headerrU   h   sÀ   € ÝÔ!×'Ò'ÝŒ•gÔ1°8·=²=ÅÔA\Ñ3]Ô3]Ñ^Ô^ñô €Dð �=Š=˜œÑ(Ô(×/Ò/µ´Ñ>Ô>€DàÔ)Ø”oØ”oØÔ+Ø Ô1ðð €Fð —=’= Ô!3Ñ4Ô4€LÝŒz˜,Ð,AÐBÑBÔB€HØ�4˜Ð!Ð!rJ   c           	      óŒ  — i i dœ}t          |¦  «        D �]-}t          j                             t	          j        t          j        |                      t          j        ¦  «        ¦  «        ¦  «        }|                      |j	        ¦  «         
                    d¦  «        }d|j        › d�}|                      t	          j        |¦  «        ¦  «        }t          t	          j        ||¦  «        ¦  «        }|j         
                    d¦  «        dk    r|j        ||j        f|d         |<   �Œ|j        ||j        f|d         |<   �Œ/|S )N©ÚqÚcÚutf8ú!rX   rY   )Úranger   ÚREGISTER_V4r1   r2   r3   ÚREGISTER_V4_PACKr5   ÚREGISTER_V4_SIZEr7   r8   ÚsizeÚcalcsizeÚlistÚtypeÚ
standaloneÚ
in_circuit©	rA   r+   Ú	registersÚ_regrC   rD   ÚREGISTER_ARRAY_PACKÚbit_indices_rawÚbit_indicess	            rH   Ú_read_registers_v4rl   y   s,  € Ø˜rÐ"Ð"€IÝ�mÑ$Ô$ð Sñ SˆÝÔ"×(Ò(ÝŒMÝÔ(Ø—’�gÔ6Ñ7Ô7ñô ñ
ô 
ˆð �}Š}˜Tœ^Ñ,Ô,×3Ò3°FÑ;Ô;ˆØ. $¤)Ð.Ð.Ð.ÐØ"Ÿ-š-­¬Ð8KÑ(LÔ(LÑMÔMˆÝ�6œ=Ð)<¸oÑNÔNÑOÔOˆØŒ9×Ò˜FÑ#Ô# sÒ*Ð*Ø$(¤O°[À$Ä/Ð#RˆI�cŒN˜4Ñ Ñ à$(¤O°[À$Ä/Ð#RˆI�cŒN˜4Ñ Ñ ØÐrJ   c           	      óx  — i i dœ}t          |¦  «        D �]#}t          j                             t	          j        t          j        |                      t          j        ¦  «        ¦  «        ¦  «        }|                      |j	        ¦  «         
                    d¦  «        }d|j        › d�}|                      t	          j        |¦  «        ¦  «        }t          t	          j        ||¦  «        ¦  «        }|j         
                    d¦  «        dk    r|j        |df|d         |<   �Œ|j        |df|d         |<   �Œ%|S )NrW   rZ   r[   ÚIrX   TrY   )r\   r   ÚREGISTERr1   r2   r3   ÚREGISTER_PACKr5   ÚREGISTER_SIZEr7   r8   r`   ra   rb   rc   rd   rf   s	            rH   Ú_read_registersrr   �   s(  € Ø˜rÐ"Ð"€IÝ�mÑ$Ô$ð Hñ HˆÝÔ×%Ò%ÝŒMÝÔ%Ø—’�gÔ3Ñ4Ô4ñô ñ
ô 
ˆð �}Š}˜Tœ^Ñ,Ô,×3Ò3°FÑ;Ô;ˆØ. $¤)Ð.Ð.Ð.ÐØ"Ÿ-š-­¬Ð8KÑ(LÔ(LÑMÔMˆÝ�6œ=Ð)<¸oÑNÔNÑOÔOˆØŒ9×Ò˜FÑ#Ô# sÒ*Ð*Ø$(¤O°[À$Ð#GˆI�cŒN˜4Ñ Ñ à$(¤O°[À$Ð#GˆI�cŒN˜4Ñ Ñ ØÐrJ   c                 óâ  — | t           j        j        k    rt          j        |t
          |¬¦  «        }�n»| t           j        j        k    rt          j        |t          ¦  «        }�nŠ| t           j	        j
        k    r^t          j
                             t          j        t          j        |¦  «        ¦  «        }	t!          |	j        |	j        |	j        ¦  «        }�n| t           j	        j        k    r/t+          t          j        |t.          ||||||¬¦  «        ¦  «        }nÓ| t           j        j        k    rt          j        d|¦  «        d         }n¢| t           j        j        k    rt          j        d|¦  «        d         }nq| t           j        j        k    r/t7          |                     t          j        ¦  «        ||¦  «        }n-|�|j        nd}
t?          j         | ||||
|d         ||¬¦  «        }|S )	N©r&   )r&   r'   rg   r   Úuse_symengineÚstandalone_varsú<qr   ú<d© rY   ©ÚclbitsÚcregsru   rv   )!r   ÚProgramÚCIRCUITr   Údata_from_binaryÚread_circuitÚValueÚMODIFIERÚ_read_modifierÚ	ContainerÚRANGEr   r1   r2   r3   Ú
RANGE_PACKr\   ÚstartÚstopÚstepÚTUPLEÚtupleÚsequence_from_binaryÚ_loads_instruction_parameterÚINTEGERÚFLOATro   Ú_loads_register_paramr8   r9   r{   r   r:   )Útype_keyÚ
data_bytesr&   r'   rg   r   ru   rv   ÚparamrC   r{   s              rH   r�   r�   ¡   s¿  € ð •9Ô$Ô,Ò,Ð,ÝÔ'¨
µLÈ'ÐRÑRÔRˆ‰Ø	•Y”_Ô-Ò	-Ð	-ÝÔ'¨
µNÑCÔCˆ‰Ø	•YÔ(Ô.Ò	.Ð	.ÝŒ}×"Ò"¥6¤=µÔ1CÀZÑ#PÔ#PÑQÔQˆÝ�d”j $¤)¨T¬YÑ7Ô7ˆ‰Ø	•YÔ(Ô.Ò	.Ð	.ÝÝÔ'ØÝ,ØØØ#ØØ+Ø /ð	ñ 	ô 	ñ
ô 
ˆˆð 
•Y”_Ô,Ò	,Ð	,å”˜d JÑ/Ô/°Ô2ˆˆØ	•Y”_Ô*Ò	*Ð	*å”˜d JÑ/Ô/°Ô2ˆˆØ	•Y”_Ô-Ò	-Ð	-Ý% j×&7Ò&7½¼Ñ&FÔ&FÈÐQZÑ[Ô[ˆˆà#*Ð#6�”�¸BˆÝÔ!ØØØØØØ˜C”.Ø'Ø+ð	
ñ 	
ô 	
ˆð €LrJ   c                 ó~   — | d         dk    r$t          | dd …         ¦  «        }|j        |         S |d         |          S )Nr   ú é   rY   )Úintr{   )r’   r   rg   Úconditional_bits       rH   r�   r�   ×   sB   € à�!„}˜ÒÐÝ˜j¨¨¨œnÑ-Ô-ˆØŒ~˜oÔ.Ð.Ø�SŒ>˜*Ô%Ð%rJ   c                 óŠ  — |dk     rZt           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }nYt           j                             t          j        t           j	        |                      t           j
        ¦  «        ¦  «        ¦  «        }|                      |j        ¦  «                             t          j        ¦  «        }	|                      |j        ¦  «                             t          j        ¦  «        }
|                      |j        ¦  «                             t          j        ¦  «        }g }g }g }d }|dk     r|j        s |dk    r3|j        t&          j        j        k    rt-          |||¦  «        |j        f}nF|dk    r@|j        t&          j        j        k    r&t3          j        | |||j        |d         ||¬¦  «        }|��˜t9          |j        ¦  «        D ]·}t           j                             t          j        t           j        |                      t           j         ¦  «        ¦  «        ¦  «        }|j!                             t          j        ¦  «        dk    rtE          d¦  «        ‚| #                    |j$        |j%                 ¦  «         Œ¸t9          |j&        ¦  «        D ]·}t           j                             t          j        t           j        |                      t           j         ¦  «        ¦  «        ¦  «        }|j!                             t          j        ¦  «        dk    rtE          d¦  «        ‚| #                    |j        |j%                 ¦  «         Œ¸t9          |j'        ¦  «        D ]D}t          j(        | ¦  «        \  }}tS          ||||||||¦  «        }| #                    |¦  «         ŒE|	dv rntU          ||	||||||¦  «        }|� tW          j,        d|	› d	�tZ          d
¬¦  «         ||_.        |j        dk    r|
|_/        |€|S | 0                    |||¦  «         d S |	|v rLtU          ||	||||||¦  «        }||_.        |j        dk    r|
|_/        |€|S | 0                    |||¦  «         d S tc          td          |	¦  «        rtg          td          |	¦  «        }nvtc          th          |	¦  «        rtg          th          |	¦  «        }nKtc          tj          |	¦  «        rtg          tj          |	¦  «        }n |	dk    rtl          }nto          d|	› �¦  «        ‚|j        dk    rd }
|	dv r ||g|¢R d|
iŽ}�n|dk    rŽtq          |tr          ¦  «        ry|	dv r |g |¢|j:        ‘R d|
iŽ}nT ||d|
iŽ}|j:        |j:        k    s|j;        |j;        k    r,| <                    ¦   «         }|j:        |_:        |j;        |_;        |r
 |j=        |Ž }�nq|	dv r…t}          |d         t~          ¦  «        r) |d @                    d„ |D ¦   «         ¦  «        ¦  «        }nà|j'        dk    r* |tƒ          |d         jB        ¦  «        |j        ¦  «        }n« ||¦  «        }nŸ|	dv r ||¦  «        }n�|	dk    r |t‡          |¦  «        g|¢R Ž }nr|	dk    rt‡          |¦  «        g}n"|	dv rt‡          |¦  «        t‡          |¦  «        g}|
�2tq          |tˆ          tŠ          f¦  «        r	 ||d|
iŽ}n ||Ž }|
|_/        n ||Ž }|rGt}          |tŒ          ¦  «        s+tW          j,        d|› d	�tZ          d
¬¦  «          |j=        |Ž }n||_.        |€|S t}          |tŽ          ¦  «        s| #                    |||¦  «         n$| 0                    t‘          |||¦  «        ¦  «         d S )Né   rY   rz   z%Invalid input carg prior to all qargsrX   z"Invalid input qarg after all qargs>   r   r   r   zThe .condition attribute on z5 will be loaded as an IfElseOp starting in Qiskit 2.0é   )Ú
stacklevelr   r    zInvalid instruction type: >   ÚIfElseOpÚWhileLoopOpÚlabel>   ÚMCXGateÚMCU1GateÚ	MCXVChainÚMCPhaseGateÚMCXGrayCodeÚMCXRecursive>   Ú
InitializeÚStatePreparationÚ c              3   ó   K  — | ]}|V — Œd S ©Nry   )Ú.0rŸ   s     rH   ú	<genexpr>z$_read_instruction.<locals>.<genexpr>‰  s"   è è € Ð)DÐ)D°E¨%Ð)DÐ)DÐ)DÐ)DÐ)DÐ)DrJ   r–   >   ÚUCRXGateÚUCRYGateÚUCRZGateÚDiagonalGateÚQFTGateÚBarrier>   ÚBreakLoopOpÚContinueLoopOp)Ir   ÚCIRCUIT_INSTRUCTIONr1   r2   r3   ÚCIRCUIT_INSTRUCTION_PACKr5   ÚCIRCUIT_INSTRUCTION_SIZEÚCIRCUIT_INSTRUCTION_V2ÚCIRCUIT_INSTRUCTION_V2_PACKÚCIRCUIT_INSTRUCTION_V2_SIZEr7   r8   r   r9   Ú
label_sizeÚcondition_register_sizeÚhas_conditionÚconditional_keyr   Ú	ConditionÚ	TWO_TUPLEr�   Úcondition_valueÚ
EXPRESSIONr   Ú
read_valuer{   r\   Ú	num_qargsÚCIRCUIT_INSTRUCTION_ARGÚCIRCUIT_INSTRUCTION_ARG_PACKÚCIRCUIT_INSTRUCTION_ARG_SIZErc   Ú	TypeErrorÚappendÚqubitsr`   Ú	num_cargsÚnum_parametersÚread_generic_typed_datar�   Ú_parse_custom_operationÚwarningsÚwarnÚFutureWarningÚ	conditionrŸ   Ú_appendÚhasattrr   ÚgetattrÚcircuit_modr   r    ÚAttributeErrorÚ
issubclassr   Únum_ctrl_qubitsÚ
ctrl_stateÚ
to_mutableÚc_ifÚ
isinstanceÚstrÚjoinr—   ÚrealÚlenr   r   r   r   r   )rA   r   rg   Úcustom_operationsr&   r'   ru   rv   ÚinstructionÚ	gate_namerŸ   Úcondition_registerÚqargsÚcargsÚparamsrÒ   Ú_qargÚqargÚ_cargÚcargÚ_paramr‘   r’   r“   Úinst_objÚ
gate_classÚgates                              rH   Ú_read_instructionrñ   ß   sk  € ð �‚{€{ÝÔ1×7Ò7ÝŒMÝÔ0Ø—’�gÔ>Ñ?Ô?ñô ñ
ô 
ˆˆõ Ô4×:Ò:ÝŒMÝÔ3Ø—’�gÔAÑBÔBñô ñ
ô 
ˆð —’˜kÔ3Ñ4Ô4×;Ò;½F¼MÑJÔJ€IØ�MŠM˜+Ô0Ñ1Ô1×8Ò8½¼ÑGÔG€EØ!Ÿš {Ô'JÑKÔK×RÒRÕSYÔS`ÑaÔaÐØ€EØ€EØ€FØ€IØ�!Šˆ˜Ô1ˆØ�1Šˆ˜Ô4½	Ô8KÔ8UÒUÐUõ "Ð"4°g¸yÑIÔIØÔ'ð
ˆ	ˆ	ð 
�AŠˆ˜+Ô5½Ô9LÔ9WÒWÐWÝÔ$ØØØØ”>Ø˜C”.Ø'Ø+ð
ñ 
ô 
ˆ	ð ÑÝ˜;Ô0Ñ1Ô1ð 		4ð 		4ˆEÝÔ2×8Ò8Ý”ÝÔ8Ø—M’M¥'Ô"FÑGÔGñô ñô ˆDð Œy×Ò¥¤Ñ.Ô.°#Ò5Ð5ÝÐ GÑHÔHÐHØ�LŠL˜œ¨¬	Ô2Ñ3Ô3Ð3Ð3Ý˜;Ô0Ñ1Ô1ð 		4ð 		4ˆEÝÔ2×8Ò8Ý”ÝÔ8Ø—M’M¥'Ô"FÑGÔGñô ñô ˆDð Œy×Ò¥¤Ñ.Ô.°#Ò5Ð5ÝÐ DÑEÔEÐEØ�LŠL˜œ¨¬	Ô2Ñ3Ô3Ð3Ð3õ ˜Ô2Ñ3Ô3ð ð ˆÝ%Ô=¸hÑGÔGÑˆ�*Ý,ØØØØØØØØñ	
ô 	
ˆð 	�Š�eÑÔÐÐð Ð=Ð=Ð=Ý*ØØØØØØØØñ	
ô 	
ˆð Ð ÝŒMð)¨yð )ð )ð )åØð	ñ ô ð ð 'ˆÔØÔ! AÒ%Ð%Ø"ˆHŒNØˆ?ØˆOØ�Š˜ %¨Ñ/Ô/Ð/ØˆtØ	Ð'Ð	'Ð	'Ý*ØØØØØØØØñ	
ô 	
ˆð 'ˆÔØÔ! AÒ%Ð%Ø"ˆHŒNØˆ?ØˆOØ�Š˜ %¨Ñ/Ô/Ð/ØˆtÝ	•˜)Ñ	$Ô	$ð 	GÝ�W iÑ0Ô0ˆ
ˆ
Ý	•˜iÑ	(Ô	(ð GÝ�[¨)Ñ4Ô4ˆ
ˆ
Ý	•˜iÑ	(Ô	(ð GÝ�[¨)Ñ4Ô4ˆ
ˆ
Ø	�jÒ	 Ð	 Ýˆ
ˆ
åÐE¸)ÐEÐEÑFÔFÐFàÔ Ò"Ð"ØˆØÐ/Ð/Ð/Øˆz˜)Ð: fÐ:Ð:Ð:°EÐ:Ð:ˆ‰Ø	�AŠˆ�* ZµÑ@Ô@ˆØð 
ð 
ð 
ð �:ÐP˜vÐP {Ô'BÐPÐPÐPÈ%ÐPÐPˆDˆDà�:˜vÐ3¨UÐ3Ð3ˆDàÔ$¨Ô(CÒCÐCØ”? kÔ&<Ò<Ð<à—’Ñ(Ô(�Ø'2Ô'B�Ô$Ø"-Ô"8�”Øð 	)Ø�4”9˜iÐ(ˆDùàÐ:Ð:Ð:Ý˜& œ)¥SÑ)Ô)ð *à!�z "§'¢'Ð)DÐ)D¸VÐ)DÑ)DÔ)DÑ"DÔ"DÑEÔE��ØÔ+¨qÒ0Ð0à!�z¥# f¨Q¤i¤nÑ"5Ô"5°{Ô7LÑMÔM��ð "�z &Ñ)Ô)��Øð 
ð 
ð 
ð �:˜fÑ%Ô%ˆDˆDØ˜)Ò#Ð#Ø�:�c %™jœjÐ2¨6Ð2Ð2Ð2ˆDˆDà˜IÒ%Ð%Ý˜e™*œ*˜��ØÐ?Ð?Ð?Ý˜e™*œ*¥c¨%¡j¤jÐ1�ØÐ Ý˜jÕ+?ÅÐ*OÑPÔPð 'Ø%˜: vÐ;°UÐ;Ð;�D�Dà%˜: vÐ.�DØ!&�D”J�Jà!�z 6Ð*�Øð 
	+Ý˜d¥MÑ2Ô2ð 	+Ý”ð6°4ð 6ð 6ð 6å!Ø ð	ñ ô ð ð !�t”y )Ð,��à!*�”Ø€ØˆÝ�d�KÑ(Ô(ð @Ø�Š�t˜U EÑ*Ô*Ð*Ð*à�ŠÕ*¨4°¸Ñ>Ô>Ñ?Ô?Ð?Øˆ4rJ   c                 ó&  — |dk    r| |         \  }}	}
}}}}n| |         \  }}	}
}d x}x}}|dk    r0d                      |                     d¦  «        d d…         ¦  «        }t          j        |¦  «        }|t          j        j        k    rt          ||	|
|¦  «        }|�||_        |S |t          j        j        k    rt          ||	|¦  «        }||_        |S |dk    r�|t          j        j	        k    rˆt          j        |¦  «        5 }t          |d || ||||¦  «        }d d d ¦  «         n# 1 swxY w Y   |d|z  dz
  k     r|                     dd¦  «        d         }t          ||	||||¬¦  «        }||_        |S |dk    rj|t          j        j        k    rUt          j        |¦  «        5 }t          |d || ||||¦  «        }d d d ¦  «         n# 1 swxY w Y   t!          ||¬	¦  «        }|S |t          j        j        k    r|S t%          d
|› d�¦  «        ‚)Nrš   é   Ú_éÿÿÿÿé   r–   r   )rÙ   rÚ   Ú	base_gate)Úbase_opÚ	modifiersz!Invalid custom instruction type 'ú')rß   Úsplitr   r   ÚINSTRUCTIONr   Ú
definitionÚGATEr   ÚCONTROLLED_GATEÚioÚBytesIOrñ   Úrsplitr   ÚANNOTATED_OPERATIONr   ÚPAULI_EVOL_GATEÚ
ValueError)râ   rä   rè   r&   r'   rg   ru   rv   Útype_strr)   r*   rý   rÙ   rÚ   Úbase_gate_rawr‘   rî   Úbase_gate_objr÷   s                      rH   rÎ   rÎ   º  sñ  € ð �!‚|€|ð ˜iÔ(ñ	
ØØØØØØØˆMð 8IÈÔ7SÑ4ˆ�*˜j¨*Ø7;Ð;ˆÐ;˜
 _à�"‚}€}Ø—H’H˜YŸ_š_¨SÑ1Ô1°#°2°#Ô6Ñ7Ô7ˆ	ÝÔ+¨HÑ5Ô5€Hà•9Ô/Ô;Ò;Ð;Ý˜y¨*°jÀ&ÑIÔIˆØÐ!Ø",ˆHÔØˆà•9Ô/Ô4Ò4Ð4Ý˜	 :¨vÑ6Ô6ˆØ(ˆÔØˆà�!‚|€|˜¥IÔ$@Ô$PÒPÐPÝŒZ˜Ñ&Ô&ð 
	¨-Ý)ØØØØ!ØØØØñ	ô 	ˆIð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð ˜˜?Ñ*¨QÑ.Ò.Ð.à!×(Ò(¨¨aÑ0Ô0°Ô3ˆIÝ!ØØØØ+Ø!Øð
ñ 
ô 
ˆð )ˆÔØˆà�"‚}€}˜¥YÔ%AÔ%UÒUÐUÝŒZ˜Ñ&Ô&ð 
	¨-Ý)ØØØØ!ØØØØñ	ô 	ˆIð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	õ &¨iÀ6ÐJÑJÔJˆØˆà•9Ô/Ô?Ò?Ð?ØÐå
ÐD¸ÐDÐDÐDÑ
EÔ
EÐEs$   ÄD(Ä(D,Ä/D,Æ(GÇGÇGc           	      óü  — t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|j        dk    r|j	        rt          d¦  «        ‚g }t          |j        ¦  «        D ]¹}t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }t          j        |                      |j        ¦  «        t$          j        ¦  «        }|                     t+          j        |¦  «        ¦  «         Œº|j	        r	|d         }n|}t/          j        |j        |                      |j        ¦  «        ||¬¦  «        }	t7          j        |                      |j        ¦  «        ¦  «        }
 t=          t>          |
d         ¦  «        di |
d         ¤Ž}tA          j!        ||	|¬¦  «        }|S )	Nr–   zWCan't have a standalone operator with {pauli_evolution_raw[0]} operators in the payloadr   r%   ÚclassÚsettings)ÚtimeÚ	synthesisry   )"r   ÚPAULI_EVOLUTION_DEFr1   r2   r3   ÚPAULI_EVOLUTION_DEF_PACKr5   ÚPAULI_EVOLUTION_DEF_SIZEÚoperator_sizeÚstandalone_opr  r\   ÚSPARSE_PAULI_OP_LIST_ELEMÚSPARSE_PAULI_OP_LIST_ELEM_PACKÚSPARSE_PAULI_OP_LIST_ELEM_SIZEr   r   r`   ÚnpÚloadrÉ   r   Ú	from_listr   r:   Ú	time_typeÚ	time_sizer>   r?   Úsynth_method_sizerÕ   Ú	evo_synthr   ÚPauliEvolutionGate)rA   r&   r'   Úpauli_evolution_defÚoperator_listrô   Úop_elemÚop_raw_dataÚpauli_opr  Ú
synth_datar  Úreturn_gates                rH   Ú_read_pauli_evolution_gater%    sÑ  € Ý!Ô5×;Ò;ÝŒÝÔ,¨h¯mªm½GÔ<\Ñ.]Ô.]ñ	
ô 	
ñô Ðð
 Ô(¨AÒ-Ð-Ð2EÔ2SÐ-ÝØeñ
ô 
ð 	
ð €MÝÐ&Ô4Ñ5Ô5ð Cð CˆÝÔ3×9Ò9ÝŒMÝÔ6Ø—’�gÔDÑEÔEñô ñ
ô 
ˆõ Ô-¨h¯mªm¸G¼LÑ.IÔ.IÍ2Ì7ÑSÔSˆØ×Ò�]Ô4°[ÑAÔAÑBÔBÐBÐBàÔ(ð !Ø  Ô#ˆˆà ˆåÔØÔ%Ø�ŠÐ)Ô3Ñ4Ô4ØØð	ñ ô €Dõ ”˜HŸMšMÐ*=Ô*OÑPÔPÑQÔQ€JØ7•�	 :¨gÔ#6Ñ7Ô7ÐQÐQ¸*ÀZÔ:PÐQÐQ€IÝÔ,¨X¸DÈIÐVÑVÔV€KØÐrJ   c                 ó�  — t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|j        dk    rt          ¦   «         S |j        dk    rt          |j        |j        ¬¦  «        S |j        dk    rt          |j        ¬¦  «        S t          d¦  «        ‚)Nó   ió   c)rÙ   rÚ   ó   p)ÚpowerúUnsupported modifier.)r   ÚMODIFIER_DEFr1   r2   r3   ÚMODIFIER_DEF_PACKr5   ÚMODIFIER_DEF_SIZErc   r   r   rÙ   rÚ   r   r*  rÈ   )rA   Úmodifiers     rH   rƒ   rƒ   7  s¼   € ÝÔ#×)Ò)ÝŒÝÔ%Ø�MŠM�'Ô3Ñ4Ô4ñ	
ô 	
ñô €Hð „}˜ÒÐÝÑ Ô Ð Ø	Œ˜$Ò	Ð	ÝØ$Ô4ÀÔATð
ñ 
ô 
ð 	
ð 
Œ˜$Ò	Ð	Ý 8¤>Ð2Ñ2Ô2Ð2åÐ/Ñ0Ô0Ð0rJ   c           	      ó´  — i }t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|j        dk    �rðt          |j        ¦  «        D �]Ú}|dk     rZt           j
                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }nYt           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|                      |j        ¦  «                             t$          j        ¦  «        }|j        }d }	|j        r„|                      |j        ¦  «        }
|dk     s|                     d¦  «        st%          j        |
t0          |¬¦  «        }	n2|                     d¦  «        rt%          j        |
t2          ||¬¦  «        }	|dk     r||j        |j        |	f}n7|                      |j        ¦  «        }||j        |j        |	|j        |j        |f}|||<   �ŒÜ|S )Nr   rš   r›   ú###PauliEvolutionGate_rt   r%   )r   ÚCUSTOM_CIRCUIT_DEF_HEADERr1   r2   r3   ÚCUSTOM_CIRCUIT_DEF_HEADER_PACKr5   ÚCUSTOM_CIRCUIT_DEF_HEADER_SIZEr`   r\   ÚCUSTOM_CIRCUIT_INST_DEFÚCUSTOM_CIRCUIT_INST_DEF_PACKÚCUSTOM_CIRCUIT_INST_DEF_SIZEÚCUSTOM_CIRCUIT_INST_DEF_V2ÚCUSTOM_CIRCUIT_INST_DEF_V2_PACKÚCUSTOM_CIRCUIT_INST_DEF_V2_SIZEÚgate_name_sizer8   r   r9   rc   Úcustom_definitionÚ
startswithr   r€   r%  r)   r*   Úbase_gate_sizerÙ   rÚ   )rA   r&   r'   râ   Úcustom_definition_headerrô   rC   rD   r  Údefinition_circuitÚ
def_binaryÚdata_payloadr÷   s                rH   Ú_read_custom_operationsrC  J  s4  € ØÐÝ&Ô@×FÒFÝŒÝÔ2Ø�MŠM�'Ô@ÑAÔAñ	
ô 	
ñ ô  Ðð  Ô$ qÒ(Ñ(ÝÐ/Ô4Ñ5Ô5ð *	3ñ *	3ˆAØ˜Š{ˆ{ÝÔ6×<Ò<Ý”MÝÔ<Ø Ÿš¥gÔ&JÑKÔKñô ñô ��õ Ô9×?Ò?Ý”MÝÔ?Ø Ÿš¥gÔ&MÑNÔNñô ñô �ð —=’= Ô!4Ñ5Ô5×<Ò<½V¼]ÑKÔKˆDØ”yˆHØ!%ÐØÔ%ð 	Ø%Ÿ]š]¨4¬9Ñ5Ô5�
Ø˜Q’;�; d§o¢oÐ6OÑ&PÔ&P�;Ý)/Ô)@Ø"¥L¸'ð*ñ *ô *Ð&Ð&ð —_’_Ð%>Ñ?Ô?ð Ý)/Ô)@Ø"Õ$>ÈÐY`ð*ñ *ô *Ð&ð ˜Š{ˆ{Ø (¨$¬/¸4¼?ÐL^Ð_��à$ŸMšM¨$Ô*=Ñ>Ô>�	àØ”OØ”OØ&ØÔ(Ø”OØð �ð '3Ð˜dÑ#Ñ#ØÐrJ   Fc           	      ó4  ‡ ‡‡— i }t           j                             t          j        t           j        ‰                      t           j        ¦  «        ¦  «        ¦  «        }t          |j	        ¦  «        D �]#}t           j
                             t          j        t           j        ‰                      t           j        ¦  «        ¦  «        ¦  «        }‰                      |j        ¦  «                             t          j        ¦  «        }	t#          ˆ fd„t          |j        ¦  «        D ¦   «         ¦  «        }
t#          ˆ ˆˆfd„t          |j        ¦  «        D ¦   «         ¦  «        }t)          j        ‰ ‰||¬¦  «        }|	|vr|
|f|i||	<   �Œ|||	         |
|f<   �Œ%|S )Nc           	   3   ó˜   •K  — | ]D}t          j        d ‰                     t          j        d ¦  «        ¦  «        ¦  «        d         V — ŒEdS )ú!qr   N)r2   r3   r5   ra   )r«   rô   rA   s     €rH   r¬   z%_read_calibrations.<locals>.<genexpr>Œ  s^   øè è € ð 
ð 
àõ ŒM˜$ §¢­f¬o¸dÑ.CÔ.CÑ DÔ DÑEÔEÀaÔHð
ð 
ð 
ð 
ð 
ð 
rJ   c              3   óD   •K  — | ]}t          j        ‰‰‰¦  «        V — Œd S rª   )r   rÃ   )r«   rô   rA   r'   r&   s     €€€rH   r¬   z%_read_calibrations.<locals>.<genexpr>�  sC   øè è € ð 
ð 
Ø=>�EÔ˜X w°Ñ8Ô8ð
ð 
ð 
ð 
ð 
ð 
rJ   ©Útrust_input)r   ÚCALIBRATIONr1   r2   r3   ÚCALIBRATION_PACKr5   ÚCALIBRATION_SIZEr\   Únum_calsÚCALIBRATION_DEFÚCALIBRATION_DEF_PACKÚCALIBRATION_DEF_SIZEr7   r8   r   r9   r‹   r)   Ú
num_paramsr   Úread_schedule_block)rA   r&   r'   rB   rI  ÚcalibrationsrE   rô   Ú	defheaderrD   rÊ   rè   Úschedules   ```          rH   Ú_read_calibrationsrV  �  s¯  øøø€ Ø€LåÔ ×&Ò&ÝŒ•gÔ.°·²½gÔ>VÑ0WÔ0WÑXÔXñô €Fõ �6”?Ñ#Ô#ð <ñ <ˆÝÔ+×1Ò1ÝŒM�'Ô6¸¿ºÅgÔFbÑ8cÔ8cÑdÔdñ
ô 
ˆ	ð �}Š}˜YÔ0Ñ1Ô1×8Ò8½¼ÑGÔGˆÝð 
ð 
ð 
ð 
å˜9Ô/Ñ0Ô0ð
ñ 
ô 
ñ 
ô 
ˆõ ð 
ð 
ð 
ð 
ð 
ð 
ÝBGÈ	ÔH\ÑB]ÔB]ð
ñ 
ô 
ñ 
ô 
ˆõ Ô0ØØØ!Ø#ð	
ñ 
ô 
ˆð �|Ð#Ð#Ø#)¨6Ð"2°HÐ!=ˆL˜ÑÑà3;ˆL˜Ô ¨Ð/Ñ0Ñ0àÐrJ   c                 óê   — t          | t          ¦  «        r$| j                             t          j        ¦  «        S dt          |d         |          ¦  «                             t          j        ¦  «        z   S )Nó    rY   )rÝ   r
   rD   Úencoder   r9   rÞ   )ÚregisterÚ	index_maps     rH   Ú_dumps_registerr\  ¢  sY   € Ý�(Õ-Ñ.Ô.ð 3ØŒ}×#Ò#¥F¤MÑ2Ô2Ð2à•S˜ 3œ¨Ô1Ñ2Ô2×9Ò9½&¼-ÑHÔHÑHÐHrJ   c                óö  — t          | t          ¦  «        r/t          j        j        }t          j        | t          |¬¦  «        }�n²t          | t          ¦  «        r-t          j	        j
        }t          j        | t          ¦  «        }�npt          | t          ¦  «        rCt          j        j        }t          j        t"          j        | j        | j        | j        ¦  «        }�nt          | t,          ¦  «        r1t          j        j        }t          j        | t2          ||||¬¦  «        }nÒt          | t4          ¦  «        r't          j	        j        }t          j        d| ¦  «        }n–t          | t8          ¦  «        r't          j	        j        }t          j        d| ¦  «        }nZt          | t<          t>          f¦  «        r"t          j	        j         }tC          | |¦  «        }ntE          j#        | ||||¬¦  «        \  }}||fS )Nrt   )r[  ru   r&   Ústandalone_var_indicesrw   rx   )r[  ru   r^  r&   )$rÝ   r   r   r}   r~   r   Údata_to_binaryÚwrite_circuitr   r�   r‚   Ú_write_modifierr\   r„   r…   r2   Úpackr   r†   r‡   rˆ   r‰   r‹   rŠ   Úsequence_to_binaryÚ_dumps_instruction_parameterr—   rŽ   Úfloatr�   r   r
   ro   r\  r   Údumps_value)r“   r[  ru   r&   r^  r‘   r’   s          rH   rd  rd  ©  sº  € õ �%�Ñ(Ô(ð %
ÝÔ$Ô,ˆÝÔ*¨5µ-ÈÐQÑQÔQˆ
‰
Ý	�E�8Ñ	$Ô	$ð "
Ý”?Ô+ˆÝÔ*¨5µ/ÑBÔBˆ
‰
Ý	�E�5Ñ	!Ô	!ð 
ÝÔ&Ô,ˆÝ”[¥Ô!3°U´[À%Ä*ÈeÌjÑYÔYˆ
‰
Ý	�E�5Ñ	!Ô	!ð 
ÝÔ&Ô,ˆÝÔ.ØÝ(ØØ'ØØ#9ð
ñ 
ô 
ˆ
ˆ
õ 
�E�3Ñ	Ô	ð 
å”?Ô*ˆÝ”[  uÑ-Ô-ˆ
ˆ
Ý	�E�5Ñ	!Ô	!ð 
å”?Ô(ˆÝ”[  uÑ-Ô-ˆ
ˆ
Ý	�E�EÕ#4Ð5Ñ	6Ô	6ð 

Ý”?Ô+ˆÝ$ U¨IÑ6Ô6ˆ
ˆ
å$Ô0ØØØ'Ø#9Øð 
ñ  
ô  
Ñˆ�*ð �ZÐÐrJ   c                 ó   — t          |j        t          ¦  «        r|j        j        j        }n|j        j        j        }g }t          t          |¦  «        s0t          t          |¦  «        st          t          |¦  «        s|dk    s+|dk    s%|dk    st          |j        t          j
        ¦  «        rv|j        j        }|dk    r|› dt          j        ¦   «         j        › �}n&|j        j        dv r|› dt          j        ¦   «         › �}|j        ||<   |                     |¦  «         nµ|dv rP|j        j        dz   t!          t          j        ¦   «         ¦  «        z   }|j        ||<   |                     |¦  «         nat          |j        t          j        ¦  «        rBdt!          t          j        ¦   «         ¦  «        z   }|j        ||<   |                     |¦  «         t$          j        j        }	d	}
d
}t+          |j        dd ¦  «        x}�|t          |t,          j        ¦  «        rt$          j        j        }	nPt$          j        j        }	t5          |j        j        d
         |¦  «        }
t9          |j        j        d         ¦  «        }|                     t<          j        ¦  «        }t+          |j        dd ¦  «        }|r |                     t<          j        ¦  «        }nd	}t          |j        t          j         ¦  «        r3|j        j!        tE          |j         #                    ¦   «         ¦  «        g}net          |j        tH          ¦  «        r|j        j%        g}n=t          |j        tL          ¦  «        r|j        j'        }nt+          |j        dg ¦  «        }t+          |j        dd
¦  «        }t+          |j        dd
¦  «        }tQ          j)        tT          j+        tY          |¦  «        tY          |¦  «        tY          |¦  «        |j        j-        |j        j.        |	j/        tY          |
¦  «        |||¦  «        }|  0                    |¦  «         |  0                    |¦  «         |  0                    |¦  «         |	t$          j        j        u rt_          j1        | ||||¬¦  «         n|  0                    |
¦  «         |j2        D ]C}tQ          j)        tT          j3        d|d         |         ¦  «        }|  0                    |¦  «         ŒD|j4        D ]C}tQ          j)        tT          j3        d|d         |         ¦  «        }|  0                    |¦  «         ŒD|D ]/}tk          |||||¬¦  «        \  }}t=          j6        | ||¦  «         Œ0|S )Nr    r   r   ró   rô   >   Úucrx_dgÚucry_dgÚucrz_dg>   r   r   r1  rJ   r   Ú
_conditionr–   rŸ   rè   rÙ   rÚ   )r&   r[  r^  ó   qrX   r(  rY   )r&   r^  )7rÝ   Ú	operationr   Ú
base_classÚ__name__Ú	__class__rÔ   r   rÖ   r   ÚBlueprintCircuitrD   ÚuuidÚuuid4ÚhexrÉ   rÞ   r  r   r¿   ÚNONErÕ   r	   ÚExprrÂ   rÀ   r\  rk  r—   rY  r   r9   ÚSwitchCaseOpÚtargetr‹   Úcases_specifierr    Útableaur   rù   r2   rb  r   r¹   rá   r)   r*   r   ÚwriteÚwrite_valuerÊ   rÆ   r{   rd  Úwrite_generic_typed_data)rA   rã   râ   r[  ru   r&   r^  Úgate_class_nameÚcustom_operations_listÚcondition_typerå   rÁ   Úop_conditionrŸ   Ú	label_rawÚinstruction_paramsrÙ   rÚ   Úinstruction_rawÚqbitÚinstruction_arg_rawÚclbitr“   r‘   r’   s                            rH   Ú_write_instructionrˆ  ×  s~  € õ �+Ô'­Ñ5Ô5ð CØ%Ô/Ô:ÔCˆˆà%Ô/Ô9ÔBˆàÐõ � Ñ1Ô1ð#7õ �K¨Ñ9Ô9ð#7õ �K¨Ñ9Ô9ð	#7ð
   :Ò-Ð-à˜fÒ$Ð$Ø˜mÒ+Ð+Ý�kÔ+­WÔ-EÑFÔFð ,ð &Ô/Ô4ˆØ�bŠ=ˆ=à!0ÐEÐEµ4´:±<´<Ô3CÐEÐEˆOˆOð Ô"Ô'Ð+LÐLÐLØ!0ÐAÐAµ4´:±<´<ÐAÐAˆOà-8Ô-BÐ˜/Ñ*Ø×%Ò% oÑ6Ô6Ð6Ð6à	ÐDÐ	DÐ	Dð &Ô/Ô4°sÑ:½SÅÄÁÄÑ=NÔ=NÑNˆØ-8Ô-BÐ˜/Ñ*Ø×%Ò% oÑ6Ô6Ð6Ð6å	�KÔ)­7Ô+EÑ	FÔ	Fð 7Ø3µc½$¼*¹,¼,Ñ6GÔ6GÑGˆØ-8Ô-BÐ˜/Ñ*Ø×%Ò% oÑ6Ô6Ð6åÔ(Ô-€NØÐØ€OÝ Ô 5°|ÀTÑJÔJÐJˆÐWÝ�l¥D¤IÑ.Ô.ð 	GÝ&Ô0Ô;ˆNˆNå&Ô0Ô:ˆNÝ!0°Ô1FÔ1QÐRSÔ1TÐV_Ñ!`Ô!`ÐÝ! +Ô"7Ô"BÀ1Ô"EÑFÔFˆOà%×,Ò,­V¬]Ñ;Ô;€OÝ�KÔ)¨7°DÑ9Ô9€EØð Ø—L’L¥¤Ñ/Ô/ˆ	ˆ	àˆ	õ �+Ô'­Ô)AÑBÔBð 
JàÔ!Ô(Ý�+Ô'×7Ò7Ñ9Ô9Ñ:Ô:ð
ÐÐõ 
�KÔ)­8Ñ	4Ô	4ð JØ)Ô3Ô;Ð<ÐÐÝ	�KÔ)Õ+=Ñ	>Ô	>ð JØ(Ô2Ô<ÐÐå$ [Ô%:¸HÀbÑIÔIÐå˜kÔ3Ð5FÈÑJÔJ€OÝ˜Ô.°¸aÑ@Ô@€JÝ”kÝÔ+ÝˆOÑÔÝˆI‰ŒÝÐÑÔØÔÔ(ØÔÔ(ØÔÝÐÑÔØØØñô €Oð ‡N‚N�?Ñ#Ô#Ð#Ø‡N‚N�?Ñ#Ô#Ð#Ø‡N‚N�9ÑÔÐØ�Ô,Ô7Ð7Ð7ÝÔØØØØØ#9ð	
ñ 	
ô 	
ð 	
ð 	
ð 	�ŠÐ)Ñ*Ô*Ð*àÔ"ð ,ð ,ˆÝ$œkÝÔ0°$¸	À#¼ÀtÔ8Lñ
ô 
Ðð 	�ŠÐ*Ñ+Ô+Ð+Ð+ØÔ#ð ,ð ,ˆÝ$œkÝÔ0°$¸	À#¼ÀuÔ8Mñ
ô 
Ðð 	�ŠÐ*Ñ+Ô+Ð+Ð+à#ð Hð HˆÝ;ØØØØØ#9ð 
ñ  
ô  
Ñˆ�*õ 	Ô'¨°(¸JÑGÔGÐGÐGØ!Ð!rJ   c                 ór  — |j         }d}t          |t          ¦  «        s|g}d}t          |¦  «        }d„ }t	          j        ¦   «         }|D ],}t          j        ||¦  «        }	|                     |	¦  «         Œ-t          j
        |j        |¬¦  «        \  }
}t          |¦  «        }t          t          |j        ¦  «        j        ¦  «        }|j        j        }t#          j        ||dœ¦  «                             t          j        ¦  «        }t          |¦  «        }t+          j        t.          j        |||
||¦  «        }|                      |¦  «         |                      |                     ¦   «         ¦  «         |                     ¦   «          |                      |¦  «         |                      |¦  «         d S )NFTc                 ó  — t          j        |                     d¬¦  «        t          j        ¦  «        }t          j        t          j        t          |¦  «        ¦  «        }|  
                    |¦  «         |  
                    |¦  «         d S )NT)Úarray)r   r_  Úto_listr  Úsaver2   rb  r   r  rá   r{  )ÚbufferÚopÚ	elem_dataÚelem_metadatas       rH   Ú_write_elemz0_write_pauli_evolution_gate.<locals>._write_elemg  si   € ÝÔ)¨"¯*ª*¸4¨*Ñ*@Ô*@Å"Ä'ÑJÔJˆ	Ýœ¥GÔ$JÍCÐPYÉNÌNÑ[Ô[ˆØ�Š�]Ñ#Ô#Ð#Ø�Š�YÑÔÐÐÐrJ   rt   )r
  r  )ÚoperatorrÝ   rb   rá   r   r  r   r_  r{  r   rf  r  rÞ   rc   r  ro  r  r>   ÚdumpsrY  r9   r2   rb  r   r  ÚgetvalueÚclose)rA   Úevolution_gater&   r  rd   Únum_operatorsr’  Úpauli_data_bufr“  rC   r  Ú	time_datar  Úsynth_classÚsettings_dictr#  Ú
synth_sizeÚpauli_evolution_raws                     rH   Ú_write_pauli_evolution_gaterŸ  _  s¦  € Ø"Ô+€MØ€JÝ�m¥TÑ*Ô*ð Ø&˜ˆØˆ
Ý˜Ñ&Ô&€Mð ð  ð  õ ”Z‘\”\€NØ!ð #ð #ˆÝÔ$ X¨{Ñ;Ô;ˆØ×Ò˜TÑ"Ô"Ð"Ð"å Ô,¨^Ô-@È'ÐRÑRÔRÑ€IˆyÝ�I‘”€IÝ•d˜>Ô3Ñ4Ô4Ô=Ñ>Ô>€KØ"Ô,Ô5€MÝ” k¸}ÐMÐMÑNÔN×UÒUÕV\ÔVcÑdÔd€JÝ�Z‘”€JÝ œ+ÝÔ(ØØØØØñô Ðð ‡N‚NÐ&Ñ'Ô'Ð'Ø‡N‚N�>×*Ò*Ñ,Ô,Ñ-Ô-Ð-Ø×ÒÑÔÐØ‡N‚N�9ÑÔÐØ‡N‚N�:ÑÔÐÐÐrJ   c                 ód  — t          |t          ¦  «        r	d}d}d}d}nZt          |t          ¦  «        rd}|j        }|j        }d}n2t          |t
          ¦  «        rd}d}d}|j        }nt          d¦  «        ‚t          j	        t          j        ||||¦  «        }|                      |¦  «         d S )Nr'  r   g        r(  r)  r+  )rÝ   r   r   rÙ   rÚ   r   r*  rÈ   r2   rb  r   r-  r{  )rA   r/  r‘   rÙ   rÚ   r*  Úmodifier_datas          rH   ra  ra  ‡  sÊ   € Ý�(�OÑ,Ô,ð 1ØˆØˆØˆ
ØˆˆÝ	�H�oÑ	.Ô	.ð 1ØˆØ"Ô2ˆØÔ(ˆ
ØˆˆÝ	�H�mÑ	,Ô	,ð 1ØˆØˆØˆ
Ø”ˆˆåÐ/Ñ0Ô0Ð0å”KÝÔ! 8¨_¸jÈ%ñô €Mð ‡N‚N�=Ñ!Ô!Ð!Ð!Ð!rJ   c                ó¸  — t           j                             |¦  «        }d}d}	d }
|j        }|j        }d}d}d }g }|t           j        j        k    r.d}t          j        |t          |¬¦  «        }
t          |
¦  «        }	n¼|t           j        j
        k    rOd}|j         t          j        |j        t          |¬¦  «        }
t          |
¦  «        }	|j        }|j        }|j        }nX|t           j        j        k    r
d}|j        }n9|j        �2d}t          j        |j        t          |¬¦  «        }
t          |
¦  «        }	|€d}ndt'          j        ¦   «         5 }t+          |t          |dd¦  «        |i |||¬¦  «        }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                     t          j        ¦  «        }t3          j        t6          j        t          |¦  «        |||||	||t          |¦  «        ¦
  «
        }|                      |¦  «         |                      |¦  «         |
r|                      |
¦  «         |                      |¦  «         |S )NFr   Trt   rJ   ry   ©r^  )r   r   Úassignr)   r*   r  r   r_  rŸ  rá   rÿ   rý   Ú_definitionr`  rÙ   rÚ   r÷   r  rø   r   r  rˆ  r•  rY  r9   r2   rb  r   r9  r{  )rA   rD   rm  râ   ru   r&   r^  r‘   Úhas_definitionr`   rC   r)   r*   rÚ   rÙ   r÷   Únew_custom_instructionr  Úbase_gate_bufferÚname_rawÚcustom_operation_raws                        rH   Ú_write_custom_operationr«     s¥  € õ Ô+×2Ò2°9Ñ=Ô=€HØ€NØ€DØ€DØÔ%€JØÔ%€JØ€JØ€OØ€IØÐà•9Ô/Ô?Ò?Ð?ØˆÝÔ$ YÕ0KÐU\Ð]Ñ]Ô]ˆÝ�4‰yŒyˆˆØ	•YÔ1ÔAÒ	AÐ	Að
 ˆð 	ÔÐÝÔ$ YÔ%:½MÐSZÐ[Ñ[Ô[ˆÝ�4‰yŒyˆØ#Ô3ˆØÔ)ˆ
ØÔ'ˆ	ˆ	Ø	•YÔ1ÔEÒ	EÐ	EØˆØÔ%ˆ	ˆ	Ø	Ô	Ð	)ØˆÝÔ$ YÔ%9½=ÐRYÐZÑZÔZˆÝ�4‰yŒyˆØÐØˆˆåŒZ‰\Œ\ð 
	8Ð-Ý%7Ø Ý" 9¨b°"Ñ5Ô5Ø!ØØØØ'=ð&ñ &ô &Ð"ð -×5Ò5Ñ7Ô7ˆMð
	8ð 
	8ð 
	8ñ 
	8ô 
	8ð 
	8ð 
	8ð 
	8ð 
	8ð 
	8ð 
	8øøøð 
	8ð 
	8ð 
	8ð 
	8ð �{Š{�6œ=Ñ)Ô)€HÝ!œ;ÝÔ/ÝˆH‰ŒØØØØØØØÝˆMÑÔñô Ðð ‡N‚NÐ'Ñ(Ô(Ð(Ø‡N‚N�8ÑÔÐØð Ø�Š�tÑÔÐØ‡N‚N�=Ñ!Ô!Ð!Ø!Ð!s   Å:FÆFÆ Fc           
      ón  — i }|                      ¦   «         D ],\  }}|                      ¦   «         D ]\  \  }}}	|||f}
|	||
<   ŒŒ-t          j        t          j        t          |¦  «        ¦  «        }|                      |¦  «         |                      ¦   «         D �]\  \  }}}}	|                     t          j	        ¦  «        }t          j        t          j
        t          |¦  «        t          |¦  «        t          |¦  «        t          j                             |	¦  «        ¦  «        }|                      |¦  «         |                      |¦  «         |D ]*}|                      t          j        d|¦  «        ¦  «         Œ+|D ]}t          j        | ||¬¦  «         Œt!          j        | |	||¬¦  «         �Œd S )NrF  rt   )Úitemsr2   rb  r   rK  rá   r{  rY  r   r9   rO  r   r}   r¤  r   r|  r   Úwrite_schedule_block)rA   rS  Úmetadata_serializerr&   Úflatten_dictrð   ÚcaldefrÊ   rè   rU  ÚkeyrE   rD   Ú
name_bytesrT  Úqubitr“   s                    rH   Ú_write_calibrationsrµ  ê  sÆ  € Ø€LØ$×*Ò*Ñ,Ô,ð )ð )‰ˆˆfØ*0¯,ª,©.¬.ð 	)ð 	)Ñ&ÑˆV�V˜hØ˜ Ð(ˆCØ (ˆL˜ÑÐð	)õ Œ[�Ô1µ3°|Ñ3DÔ3DÑEÔE€FØ‡N‚N�6ÑÔÐØ,8×,>Ò,>Ñ,@Ô,@ð añ aÑ(Ñˆˆv�v ð —[’[¥¤Ñ/Ô/ˆ
Ý”KÝÔ(Ý�
‰OŒOÝ�‰KŒKÝ�‰KŒKÝÔ×$Ò$ XÑ.Ô.ñ
ô 
ˆ	ð 	�Š�yÑ!Ô!Ð!Ø�Š�zÑ"Ô"Ð"Øð 	5ð 	5ˆEØ�NŠN�6œ; t¨UÑ3Ô3Ñ4Ô4Ð4Ð4Øð 	@ð 	@ˆEÝÔ˜h¨°wÐ?Ñ?Ô?Ð?Ð?ÝÔ& x°Ð;NÐX_Ð`Ñ`Ô`Ð`Ñ`ð#að arJ   c                 ó\  ‡— d„ t          |¦  «        D ¦   «         }t          ¦   «         }|D ],}|j        �#|j        |vr|                     |j        ¦  «         Œ-|df|dffD �]-\  }}|D �]#Št	          ˆfd„‰D ¦   «         ¦  «        }‰j                             t          j        ¦  «        }	‰j	                             t          j        ¦  «        }
|  
                    t          j        t          j        |
|‰j        t!          |	¦  «        |¦  «        ¦  «         |  
                    |	¦  «         d‰j        › d�}g }‰D ]+}|                     |                     |d¦  «        ¦  «         Œ,|  
                    t          j        |g|¢R Ž ¦  «         �Œ%�Œ/t!          |¦  «        t!          |¦  «        z   S )Nc                 ó   — i | ]\  }}||“Œ	S ry   ry   ©r«   ÚindexÚbits      rH   ú
<dictcomp>z$_write_registers.<locals>.<dictcomp>  s   € Ð@Ð@Ð@™Z˜U Cˆc�5Ð@Ð@Ð@rJ   TFc              3   ó*   •K  — | ]}|j         ‰u V — Œd S rª   )Ú	_register)r«   rº  Úregs     €rH   r¬   z#_write_registers.<locals>.<genexpr>  s*   øè è € ÐAÐA°c˜Sœ]¨cÐ1ÐAÐAÐAÐAÐAÐArJ   r[   rX   rõ   )Ú	enumerateÚsetr½  ÚaddÚallrD   rY  r   r9   Úprefixr{  r2   rb  r   r^   r`   rá   rÉ   Úget)rA   Úin_circ_regsÚ	full_bitsÚbitmapÚout_circ_regsrº  ÚregsÚis_in_circuitrd   Úreg_nameÚreg_typeri   rk   r¾  s                @rH   Ú_write_registersrÍ    sÏ  ø€ Ø@Ð@­9°YÑ+?Ô+?Ð@Ñ@Ô@€Få‘E”E€MØð -ð -ˆØŒ=Ð$¨¬¸lÐ)JÐ)JØ×Ò˜cœmÑ,Ô,Ð,øà!-¨tÐ 4°}ÀeÐ6LÐMð Kñ KÑˆˆmØð 	Kñ 	KˆCÝÐAÐAÐAÐA¸SÐAÑAÔAÑAÔAˆJØ”x—’¥v¤}Ñ5Ô5ˆHØ”z×(Ò(­¬Ñ7Ô7ˆHØ�NŠNÝ”ÝÔ,ØØØ”HÝ˜‘M”MØ!ñô ñ	ô 	ð 	ð �NŠN˜8Ñ$Ô$Ð$Ø"1 c¤h / / /ÐØˆKØð 8ð 8�Ø×"Ò" 6§:¢:¨c°2Ñ#6Ô#6Ñ7Ô7Ð7Ð7Ø�NŠN�6œ;Ð':ÐI¸[ÐIÐIÐIÑJÔJÐJÑJñ'	Kõ* ˆ|ÑÔ�s =Ñ1Ô1Ñ1Ð1rJ   c                 ó2  — |j         €9|                      t          j        t          j        dddddd¦  «        ¦  «         d S d}i }g }t          t          ¦  «        }|j         j        �Ît          |j         j        ¦  «        }|j         j         
                    ¦   «         }t          |j        ¦  «        D ]‚}||         }|||<   |j        €|j        �P|j        |j        vr ||j                                      |¦  «         |                     |j        |j        f¦  «         Œm|                     d¦  «         Œƒd}	g }
|j         j        �Èt          |j         j        ¦  «        }	d g|	z  }
|j         j                             ¦   «         }|j         j                             ¦   «         D ]l\  }}t)          |dd ¦  «        �Kt)          |dd ¦  «        �:|j        |j        vr ||j                                      |¦  «         ||         |
|<   Œa||         |
|<   Œmd}g }|j         j        �ƒt          |j         j        ¦  «        }|j         j         
                    ¦   «         }t          |j        ¦  «        D ]7}||         }|                     |                     |¦  «        j        ¦  «         Œ8|j        j        }|€d}|                      t          j        t          j        d||	|t          |¦  «        |¦  «        ¦  «         t5          | t          |¦  «        d„ |                     ¦   «         D ¦   «         ¦  «         |D ]Œ\  }}|€d n#|j                             t<          j        ¦  «        }|                      t          j        t          j         |€dn||€dnt          |¦  «        ¦  «        ¦  «         |�|                      |¦  «         Œ�|
D ]*}|                      t          j        d	|¦  «        ¦  «         Œ+|D ]*}|                      t          j        d	|¦  «        ¦  «         Œ+d S )
NFrõ   r   )NNr½  Ú_indexTc                 ó   — g | ]	}|D ]}|‘ŒŒ
S ry   ry   )r«   ÚbitsÚxs      rH   ú
<listcomp>z!_write_layout.<locals>.<listcomp>d  s'   € Ð)_Ð)_Ð)_°ÐZ^Ð)_Ð)_ÐUV¨!Ð)_Ð)_Ð)_Ð)_rJ   ú!I)!Úlayoutr{  r2   rb  r   ÚLAYOUT_V2_PACKr   rb   Úinitial_layoutrá   Úget_physical_bitsr\   r)   r½  rÏ  ÚqregsrÉ   Úinput_qubit_mappingÚget_virtual_bitsr­  rÕ   Úfinal_layoutÚfind_bitr¹  Ú_layoutÚ_input_qubit_countrÍ  ÚvaluesrD   rY  r   r9   ÚINITIAL_LAYOUT_BIT_PACK)rA   r   Úinitial_sizerÚ  Úinitial_layout_arrayÚextra_registersÚlayout_mappingÚir´  Úinput_qubit_sizeÚinput_qubit_mapping_arrayr¹  Úfinal_layout_sizeÚfinal_layout_arrayÚfinal_layout_physicalÚvirtual_bitÚinput_qubit_countrZ  Úreg_name_bytess                      rH   Ú_write_layoutrï  '  s@  € Ø„~Ðà�Š•v”{¥7Ô#9¸5À"ÀbÈ"ÈaÐQRÑSÔSÑTÔTÐTØˆØ€LØÐØÐÝ!¥$Ñ'Ô'€OØ„~Ô$Ð0Ý˜7œ>Ô8Ñ9Ô9ˆØ œÔ6×HÒHÑJÔJˆÝ�wÔ)Ñ*Ô*ð 	:ð 	:ˆAØ" 1Ô%ˆEØ)*Ð Ñ&ØŒÐ*¨e¬lÐ.FØ”?¨'¬-Ð7Ð7Ø# E¤OÔ4×;Ò;¸EÑBÔBÐBØ$×+Ò+¨U¬\¸5¼?Ð,KÑLÔLÐLÐLà$×+Ò+¨LÑ9Ô9Ð9Ð9ØÐØ "ÐØ„~Ô)Ð5Ý˜wœ~ÔAÑBÔBÐØ%) FÐ-=Ñ$=Ð!Ø œÔ6×GÒGÑIÔIˆØ#œNÔ>×DÒDÑFÔFð 		Ið 		I‰LˆE�5å˜˜{¨DÑ1Ô1Ð=Ý˜E 8¨TÑ2Ô2Ð>à”?¨'¬-Ð7Ð7Ø# E¤OÔ4×;Ò;¸EÑBÔBÐBØ3AÀ%Ô3HÐ)¨%Ñ0Ð0à3AÀ%Ô3HÐ)¨%Ñ0Ð0ØÐØÐØ„~Ô"Ð.Ý ¤Ô ;Ñ<Ô<ÐØ '¤Ô ;× MÒ MÑ OÔ OÐÝ�wÔ)Ñ*Ô*ð 	Kð 	KˆAØ/°Ô2ˆKØ×%Ò% g×&6Ò&6°{Ñ&CÔ&CÔ&IÑJÔJÐJÐJàœÔ:ÐØÐ ØÐØ‡N‚NÝŒÝÔ"ØØØØÝ�Ñ Ô Øñ	
ô 	
ñ
ô 
ð 
õ Ø•$�Ñ'Ô'Ð)_Ð)_¸×8NÒ8NÑ8PÔ8PÐ)_Ñ)_Ô)_ñô ð ð 0ð 
+ð 
+‰ˆˆxØ!)Ð!1˜˜°x´}×7KÒ7KÍFÌMÑ7ZÔ7ZˆØ�ŠÝŒKÝÔ/Ø�m��¨Ø$Ð,��µ#°nÑ2EÔ2Eñô ñ	
ô 	
ð 	
ð Ð%Ø�NŠN˜>Ñ*Ô*Ð*øØ&ð -ð -ˆØ�Š•v”{ 4¨Ñ+Ô+Ñ,Ô,Ð,Ð,Øð -ð -ˆØ�Š•v”{ 4¨Ñ+Ô+Ñ,Ô,Ð,Ð,ð-ð -rJ   c                 óì   — t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|j        sd S t          | ||¦  «         d S rª   )
r   ÚLAYOUTr1   r2   r3   ÚLAYOUT_PACKr5   ÚLAYOUT_SIZEÚexistsÚ_read_common_layout©rA   r   rE   s      rH   Ú_read_layoutr÷  w  sc   € ÝŒ^×!Ò!ÝŒ•gÔ)¨8¯=ª=½Ô9LÑ+MÔ+MÑNÔNñô €Fð Œ=ð ØˆÝ˜ &¨'Ñ2Ô2Ð2Ð2Ð2rJ   c                 ó°  ‡— d„ t          | |j        ¦  «        d                              ¦   «         D ¦   «         }d }g }t          |j        ¦  «        D �]}t
          j                             t          j	        t
          j
        |                      t
          j        ¦  «        ¦  «        ¦  «        }|j        dk    r|j        dk    rt          ¦   «         }n�|                      |j        ¦  «                             t"          j        ¦  «        }	|	|v r||	         |j                 }n2t'          t)          |	fd„‰j        ¦  «        ¦  «        }
|
|j                 }|                     |¦  «         �Œ|rt/          j        |¦  «        }d }g }t          |j        ¦  «        D ]U}|                     t          j	        d|                      t          j        d¦  «        ¦  «        ¦  «        d         ¦  «         ŒV|r6i }|                     ¦   «         }t9          |¦  «        D ]\  }}||||         <   Œd }g }t          |j        ¦  «        D ]U}|                     t          j	        d|                      t          j        d¦  «        ¦  «        ¦  «        d         ¦  «         ŒV|r*ˆfd„t9          |¦  «        D ¦   «         }t/          |¦  «        }t=          |||¦  «        ‰_        d S )Nc           	      ó\   — i | ])\  }}|t          t          |d          ¦  «        |¦  «        “Œ*S )r–   )r   rá   )r«   rD   Úvs      rH   r»  z'_read_common_layout.<locals>.<dictcomp>�  sB   € ð ð ð áˆD�!ð 	�o�c ! A¤$™iœi¨Ñ.Ô.ðð ð rJ   rX   rõ   c                 ó   — | j         |k    S rª   )rD   )rÒ  rD   s     rH   ú<lambda>z%_read_common_layout.<locals>.<lambda>•  s   € ÀQÄVÈtÂ^€ rJ   rÔ  r   c                 ó2   •— i | ]\  }}‰j         |         |“ŒS ry   )rÊ   )r«   r¹  rº  r   s      €rH   r»  z'_read_common_layout.<locals>.<dictcomp>«  s&   ø€ ÐbÐbÐb±j°e¸S�w”~ cÔ*¨EÐbÐbÐbrJ   ) rl   rä  r­  r\   Úinitial_layout_sizer   ÚINITIAL_LAYOUT_BITr1   r2   r3   rá  r5   ÚINITIAL_LAYOUT_BIT_SIZEr¹  Úregister_sizer   r8   r   r9   ÚnextÚfilterrÙ  rÉ   r"   Úfrom_qubit_listÚinput_mapping_sizera   rØ  r¿  ré  r#   rÞ  )rA   rE   r   rg   r×  Úinitial_layout_virtual_bitsrô   rì  r´  Úregister_namerZ  rÚ  rè  Úphysical_bitsr¹  rº  rÜ  rê  Úlayout_dicts     `                rH   rõ  rõ  €  så  ø€ ðð å)¨(°FÔ4JÑKÔKÈCÔP×VÒVÑXÔXðñ ô €Ið €NØ"$ÐÝ�6Ô-Ñ.Ô.ð 2ñ 2ˆÝÔ0×6Ò6ÝŒMÝÔ/Ø—’�gÔ=Ñ>Ô>ñô ñ
ô 
ˆð Ô Ò"Ð" {Ô'@ÀBÒ'FÐ'FÝ‘G”GˆEˆEà$ŸMšM¨+Ô*CÑDÔD×KÒKÍFÌMÑZÔZˆMØ 	Ð)Ð)Ø! -Ô0°Ô1BÔC��å¥°mÐ'SÐ'SÐ'SÐU\ÔUbÑ cÔ cÑdÔd�Ø  Ô!2Ô3�Ø#×*Ò*¨5Ñ1Ô1Ð1Ñ1Ø"ð MÝÔ/Ð0KÑLÔLˆØÐØ "ÐÝ�6Ô,Ñ-Ô-ð 
ð 
ˆØ!×(Ò(ÝŒM˜$ §¢­f¬o¸dÑ.CÔ.CÑ DÔ DÑEÔEÀaÔHñ	
ô 	
ð 	
ð 	
ð !ð <Ø ÐØ&×8Ò8Ñ:Ô:ˆÝ#Ð$=Ñ>Ô>ð 	<ð 	<‰JˆE�3Ø6;Ð ¨cÔ 2Ñ3Ð3Ø€LØÐÝ�6Ô+Ñ,Ô,ð `ð `ˆØ×!Ò!¥&¤-°°h·m²mÅFÄOÐTXÑDYÔDYÑ6ZÔ6ZÑ"[Ô"[Ð\]Ô"^Ñ_Ô_Ð_Ð_àð +ØbÐbÐbÐbÅIÐN`ÑDaÔDaÐbÑbÔbˆÝ˜kÑ*Ô*ˆå% nÐ6IÈ<ÑXÔX€G„O€O€OrJ   c                 óJ  — t           j                             t          j        t           j        |                      t           j        ¦  «        ¦  «        ¦  «        }|j        sd S t          | ||¦  «         |j
        dk    r$|j
        |j        _        |j        |j        _        d S d S )Nr   )r   Ú	LAYOUT_V2r1   r2   r3   rÖ  r5   ÚLAYOUT_V2_SIZErô  rõ  rí  rÞ  rß  rÊ   Ú_output_qubit_liströ  s      rH   Ú_read_layout_v2r  ±  s“   € ÝÔ×$Ò$ÝŒ•gÔ,¨h¯mªm½GÔ<RÑ.SÔ.SÑTÔTñô €Fð Œ=ð ØˆÝ˜ &¨'Ñ2Ô2Ð2ØÔ 1Ò$Ð$Ø-3Ô-EˆŒÔ*Ø-4¬^ˆŒÔ*Ð*Ð*ð %Ð$rJ   c                 ó€	  — t          j        |j        d|¬¦  «                             t          j        ¦  «        }t          |¦  «        }t          |¦  «        }|j                             t          j        ¦  «        }t          j	        |j
        |¬¦  «        \  }	}
t          j        ¦   «         5 }t          ||j        |j        ¦  «        }t          ||j        |j        ¦  «        }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ||z   }|dk    rát'          j        t          |¦  «        |	t          |
¦  «        |j        |j        ||||j        ¬¦	  «	        }t1          j        t&          j        g|¢R Ž }|                      |¦  «         |                      |¦  «         |                      |
¦  «         |                      |¦  «         |                      |¦  «         t          j        | |¦  «        }nå|j        rt;          j        dd|¬¦  «        ‚t'          j        t          |¦  «        |	t          |
¦  «        |j        |j        |||¬	¦  «        }t1          j        t&          j         g|¢R Ž }|                      |¦  «         |                      |¦  «         |                      |
¦  «         |                      |¦  «         |                      |¦  «         i }t          j        ¦   «         }i }i }d
„ tC          |j        ¦  «        D ¦   «         |d<   d„ tC          |j        ¦  «        D ¦   «         |d<   |j"        D ]}tG          |||||||¬¦  «         Œt          j        ¦   «         5 }tI          | %                    ¦   «         ¦  «        }|rN| &                    ¦   «         }g }|D ]3}||         }| '                    tQ          |||||||¬¦  «        ¦  «         Œ4|°N|                      t1          j        t&          j)        t          |¦  «        ¦  «        ¦  «         |                      |                     ¦   «         ¦  «         ddd¦  «         n# 1 swxY w Y   |                      |                     ¦   «         ¦  «         | *                    ¦   «          tW          | |j,        ||¬¦  «         t[          | |¦  «         dS )aÔ  Write a single QuantumCircuit object in the file like object.

    Args:
        file_obj (FILE): The file like object to write the circuit data in.
        circuit (QuantumCircuit): The circuit data to write.
        metadata_serializer (JSONEncoder): An optional JSONEncoder class that
            will be passed the :attr:`.QuantumCircuit.metadata` dictionary for
            ``circuit`` and will be used as the ``cls`` kwarg
            on the ``json.dump()`` call to JSON serialize that dictionary.
        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.
        version (int): The QPY format version to use for serializing this circuit
    )ú,ú:)Ú
separatorsr/   rt   Né   )	r7   r;   r<   r)   r*   r=   r+   r,   r-   z&circuits containing realtime variables)Úrequiredrx  )r7   r;   r<   r)   r*   r=   r+   r,   c                 ó   — i | ]\  }}||“Œ	S ry   ry   r¸  s      rH   r»  z!write_circuit.<locals>.<dictcomp>  ó   € ÐMÐMÐM¡Z U¨C�c˜5ÐMÐMÐMrJ   rX   c                 ó   — i | ]\  }}||“Œ	S ry   ry   r¸  s      rH   r»  z!write_circuit.<locals>.<dictcomp>  r  rJ   rY   r£  ).r>   r”  rG   rY  r   r9   rá   rD   r   rf  r(   r   r  rÍ  rÙ  rÊ   r|   r{   r•  r   r0   r)   r*   r-   r2   rb  r4   r{  Úwrite_standalone_varsr   ÚUnsupportedFeatureForVersionrM   rN   r¿  rC   rˆ  rb   ÚkeysÚcopyÚextendr«  r3  r–  rµ  Ú_calibrations_proprï  )rA   r   r¯  ru   r&   rF   r=   r,   Úcircuit_namer;   Úglobal_phase_dataÚreg_bufÚ	num_qregsÚ	num_cregsÚregisters_rawr+   Ú
header_rawrE   r^  Úinstruction_bufferrâ   r[  rã   Úcustom_operations_bufferÚnew_custom_operationsÚoperations_to_serializerD   rm  s                               rH   r`  r`  ½  sS  € õ$ ”:ØÔ ZÐ5Hðñ ô ç‚f�VŒ]ÑÔð õ ˜Ñ%Ô%€MÝ˜7‘|”|ÐØ”<×&Ò&¥v¤}Ñ5Ô5€LÝ+0Ô+<¸WÔ=QÐ[bÐ+cÑ+cÔ+cÑ(ÐÐ(å	Œ‰Œð +˜Ý$ W¨g¬m¸W¼^ÑLÔLˆ	Ý$ W¨g¬m¸W¼^ÑLÔLˆ	Ø×(Ò(Ñ*Ô*ˆð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð  	Ñ)€Mð �"‚}€}ÝÔ/Ý˜,Ñ'Ô'Ø/Ý!Ð"3Ñ4Ô4ØÔ)ØÔ)Ø'Ø'Ø-ØÔ%ð

ñ 

ô 

ˆ
õ ”�WÔ<ÐJ¸zÐJÐJÐJˆØ�Š�vÑÔÐØ�Š�|Ñ$Ô$Ð$Ø�ŠÐ(Ñ)Ô)Ð)Ø�Š�|Ñ$Ô$Ð$à�Š�}Ñ%Ô%Ð%Ý!&Ô!<¸XÀwÑ!OÔ!OÐÐàÔð 	ÝÔ9Ø8À2Ègðñ ô ð õ Ô.Ý˜,Ñ'Ô'Ø/Ý!Ð"3Ñ4Ô4ØÔ)ØÔ)Ø'Ø'Ø-ð	
ñ 	
ô 	
ˆ
õ ”�WÔ;ÐI¸jÐIÐIÐIˆØ�Š�vÑÔÐØ�Š�|Ñ$Ô$Ð$Ø�ŠÐ(Ñ)Ô)Ð)Ø�Š�|Ñ$Ô$Ð$Ø�Š�}Ñ%Ô%Ð%Ø!#Ðåœ™œÐØÐØ€IØMÐMµ9¸W¼^Ñ3LÔ3LÐMÑMÔM€Iˆc�NØMÐMµ9¸W¼^Ñ3LÔ3LÐMÑMÔM€Iˆc�NØ”|ð 	
ð 	
ˆÝØØØØØØØ#9ð	
ñ 	
ô 	
ð 	
ð 	
õ 
Œ‰Œð <Ð1Ý $Ð%6×%;Ò%;Ñ%=Ô%=Ñ >Ô >ÐØ#ð 	Ø&;×&@Ò&@Ñ&BÔ&BÐ#Ø$&Ð!Ø/ð ð �Ø-¨dÔ3�	Ø%×,Ò,Ý+Ø0ØØ!Ø)Ø%ØØ/Eðñ ô ñ
ô 
ð 
ð 
ð $ð 	ð" 	�Š•v”{¥7Ô#IÍ3ÐO`ÑKaÔKaÑbÔbÑcÔcÐcØ�ŠÐ/×8Ò8Ñ:Ô:Ñ;Ô;Ð;ð)<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð, ‡N‚NÐ%×.Ò.Ñ0Ô0Ñ1Ô1Ð1Ø×ÒÑÔÐõ ˜ 'Ô"<Ð>QÐ[bÐcÑcÔcÐcÝ�(˜GÑ$Ô$Ð$Ð$Ð$s&   Â-ADÄDÄDÍ,CQÑQÑQc                 ó´  ‡'‡(— i }|dk     rt          | |¬¦  «        \  }}}n5|dk     rt          | |||¬¦  «        \  }}}nt          | |||¬¦  «        \  }}}|d         }	|d         }
|d         }|d         }|d         }|                     d	d
¦  «        }i i dœ}g }dg|
z  dg|z  dœ}|d
k    �rA|dk     rt	          | |¦  «        }nt          | |¦  «        }dt          t          fdt          t          ffD ]ú\  }Š'}||         Š(||         }| 
                    ¦   «         D ]Q\  }\  }}}|sŒ |t          |¦  «        |¦  «        }|||         |<   t          ||¦  «        D ]\  }}|d
k    r|‰(|<   ŒŒRˆ'fd„‰(D ¦   «         Š(| 
                    ¦   «         D ]V\  }\  }}}|r||         |         }n% ||ˆ'ˆ(fd„|D ¦   «         ¬¦  «        }|||         |<   |r|                     |¦  «         ŒW‰(||<   Œûn%d„ |d         D ¦   «         d„ |d         D ¦   «         dœ}t          j        | |¦  «        \  }}t!          |d         |d         g|¢R ||	||t"          j        j                 |t"          j        j                 dœŽ} |t"          j        j                 D ]}!|                      |!¦  «         Œt/          | ||¦  «        }"t1          |¦  «        D ]}#t3          | | ||"||||¦  «         Œ|dk    rt5          | ||||¬¦  «        | _        | 
                    ¦   «         D ]—\  }$\  }%}&t          |&¦  «        t          |%¦  «        k    rot9          j        d|$› dd                     d„ t?          t1          t          |%¦  «        ¦  «        ¦  «        |&z
  D ¦   «         ¦  «        › d| j         › �tB          ¦  «         Œ˜|dk    r'|dk    rtE          | | ¦  «         ntG          | | ¦  «         | S )a  Read a single QuantumCircuit object from the file like object.

    Args:
        file_obj (FILE): The file like object to read the circuit data from.
        version (int): QPY version.
        metadata_deserializer (JSONDecoder): An optional JSONDecoder class
            that will be used for the ``cls`` kwarg on the internal
            ``json.load`` call used to deserialize the JSON payload used for
            the :attr:`.QuantumCircuit.metadata` attribute for a circuit
            in the file-like object. If this is not specified the circuit metadata will
            be parsed as JSON with the stdlib ``json.load()`` function using
            the default ``JSONDecoder`` class.
        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.
        trust_input (bool): If true, deserialize vulnerable schedule block payloads.
    Returns:
        QuantumCircuit: The circuit object from the file.

    Raises:
        QpyError: Invalid register.
    rö   )rB   r  r(   r)   r*   r+   r,   r-   r   rW   Né   rX   rY   c                 ó,   •— g | ]}|�|n	 ‰¦   «         ‘ŒS rª   ry   )r«   rº  Úbit_types     €rH   rÓ  z read_circuit.<locals>.<listcomp>ˆ  s'   ø€ ÐWÐWÐWÀS  ˜#˜#°h°h±j´jÐWÐWÐWrJ   c                 ó@   •— g | ]}|d k    r‰|         n	 ‰¦   «         ‘ŒS )r   ry   )r«   rÒ  r,  Ú
typed_bitss     €€rH   rÓ  z read_circuit.<locals>.<listcomp>‘  s/   ø€ ÐWÐWÐWÈ!¨q°Aªv¨v˜j¨œm˜m¸8¸8¹:¼:ÐWÐWÐWrJ   )rD   rÑ  c                 ó*   — g | ]}t          ¦   «         ‘ŒS ry   )r   ©r«   rô   s     rH   rÓ  z read_circuit.<locals>.<listcomp>™  ó   € Ð1Ð1Ð1˜a•%‘'”'Ð1Ð1Ð1rJ   c                 ó*   — g | ]}t          ¦   «         ‘ŒS ry   )r   r0  s     rH   rÓ  z read_circuit.<locals>.<listcomp>š  r1  rJ   )rD   r(   rG   ÚinputsÚcapturesrš   rH  zThe ParameterVector: 'zB' is not fully identical to its pre-serialization state. Elements z, c                 ó,   — g | ]}t          |¦  «        ‘ŒS ry   )rÞ   )r«   rÒ  s     rH   rÓ  z read_circuit.<locals>.<listcomp>Å  s   € Ð[Ð[Ð[¨�c !™fœfÐ[Ð[Ð[rJ   zu in the ParameterVector will be not equal to the pre-serialized ParameterVector as they weren't used in the circuit: é   é
   )$rU   rP   rI   rÄ  rr   rl   r   r   r   r
   r­  rá   ÚziprÉ   r   Úread_standalone_varsr   r   ÚExprVarDeclarationÚINPUTÚCAPTUREÚLOCALÚadd_uninitialized_varrC  r\   rñ   rV  r  rÏ   rÐ   rß   rÀ  rD   ÚUserWarningr  r÷  ))rA   r&   rB   ru   rI  r'   rE   rD   rG   r(   r)   r*   r+   r,   r-   Úout_registersÚall_registersÚout_bitsrg   Úbit_type_labelrÌ  Útyped_registersr  rd   ÚindicesÚ
_incircuitrZ  Úownedr¹  re   Úvar_segmentsr^  ÚcircÚdeclarationrâ   Ú_instructionÚvec_nameÚvectorÚinitialized_paramsr,  r.  s)                                          @@rH   r€   r€   7  sJ  øø€ ð6 €GØ�‚{€{Ý!-¨hÐNcÐ!dÑ!dÔ!dÑˆ��h�hØ	�2ŠˆÝ!0Ø�g˜wÐ>Sð"
ñ "
ô "
Ñˆ��h�hõ "2Ø�g˜wÐ>Sð"
ñ "
ô "
Ñˆ��hð ˜.Ô)€LØ˜Ô%€JØ˜Ô%€JØ˜?Ô+€MØÐ0Ô1ÐØ�zŠz˜* aÑ(Ô(€Hð  2Ð&Ð&€MØ€MØ�V˜jÑ(°¨v¸
Ñ/BÐCÐC€HØ�qÒÑØ�QŠ;ˆ;Ý'¨°-Ñ@Ô@ˆIˆIå*¨8°]ÑCÔCˆIà•%�Ð)Ø•%Õ*Ð+ð3
ð (	2ð (	2Ñ.ˆN˜H hð " .Ô1ˆJØ'¨Ô7ˆOØDS×DYÒDYÑD[ÔD[ð 2ð 2Ñ@�Ñ@ 
¨G°ZØ!ð ØØ#˜8¥C¨¡L¤L°-Ñ@Ô@�Ø?G�˜nÔ-¨mÑ<Ý$'¨°'Ñ$:Ô$:ð 2ð 2‘L�E˜5à ’z�zØ,1˜
 5Ñ)øð2ð
 XÐWÐWÐWÈJÐWÑWÔWˆJð ET×DYÒDYÑD[ÔD[ð 
3ð 
3Ñ@�Ñ@ 
¨G°ZØð LØ,¨^Ô<¸]ÔK�H�Hà'˜xØ*ØWÐWÐWÐWÐWÈwÐWÑWÔWð ñ  ô  �Hð DL�M .Ô1°-Ñ@Øð 3Ø!×(Ò(¨Ñ2Ô2Ð2øØ'1ˆH�^Ñ$Ð$ðQ(	2ðV 2Ð1 8¨C¤=Ð1Ñ1Ô1Ø1Ð1 8¨C¤=Ð1Ñ1Ô1ð
ð 
ˆõ ,1Ô+EÀhÐPXÑ+YÔ+YÑ(€LÐ(ÝØ�ŒØ�Œð	ð 
ð	ð 	ð Ø!ØØ�IÔ8Ô>Ô?Ø�iÔ:ÔBÔCð	ð 	ð 	€Dð $¥IÔ$@Ô$FÔGð 0ð 0ˆØ×"Ò" ;Ñ/Ô/Ð/Ð/Ý/°¸'À7ÑKÔKÐÝÐ.Ñ/Ô/ð 

ð 

ˆÝØØØØØØØØ"ñ		
ô 		
ð 		
ð 		
ð �!‚|€|Ý"4ØØØØ!Ø#ð#
ñ #
ô #
ˆÔð 3:·-²-±/´/ð 	ð 	Ñ.ˆÑ.�6Ð-ÝÐ!Ñ"Ô"¥c¨&¡k¤kÒ1Ð1ÝŒMðD¨ð Dð Dà—9’9Ð[Ð[­cµ%½¸F¹¼Ñ2DÔ2DÑ.EÔ.EÐHZÑ.ZÐ[Ñ[Ô[Ñ\Ô\ðDð Dð 9=¼	ð	Dð Dõ
 ñô ð øð �!‚|€|Ø�bŠ=ˆ=Ý˜H dÑ+Ô+Ð+Ð+å˜ 4Ñ(Ô(Ð(Ø€KrJ   rª   )F)NFF)XÚ__doc__Úcollectionsr   r   r>   r2   rr  rÏ   Únumpyr  Úqiskitr   rÖ   Úqiskit.circuitr   r   r   r   Úqiskit.circuit.classicalr	   Ú qiskit.circuit.classicalregisterr
   r   Úqiskit.circuit.gater   Úqiskit.circuit.singletonr   r   Úqiskit.circuit.controlledgater   Ú"qiskit.circuit.annotated_operationr   r   r   r   r   Úqiskit.circuit.instructionr   Úqiskit.circuit.quantumcircuitr   Úqiskit.circuit.quantumregisterr   r   Ú
qiskit.qpyr   r   r   r   Úqiskit.qpy.binary_ior   r   Úqiskit.quantum_info.operatorsr   r    Úqiskit.synthesisr!   r  Úqiskit.transpiler.layoutr"   r#   rI   rP   rU   rl   rr   r�   r�   rñ   rÎ   r%  rƒ   rC  rV  r\  rd  rˆ  rŸ  ra  r«  rµ  rÍ  rï  r÷  rõ  r  ÚQPY_VERSIONr`  r€   ry   rJ   rH   ú<module>rc     s  ðð %Ð $à #Ð #Ð #Ð #Ð #Ð #Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€à Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ )Ð )Ð )Ð )Ð )Ð )Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ $Ð $Ð $Ð $Ð $Ð $Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ð"ð "ð "ð "ð4"ð "ð "ð "ð8"ð "ð "ð "ð"ð ð ð(ð ð ð(3ð 3ð 3ðl&ð &ð &ðXð Xð XðvSFð SFð SFðl$ð $ð $ðN1ð 1ð 1ð&4ð 4ð 4ðnð ð ð ðBIð Ið Ið* ð * ð * ðj  ðE"ð E"ð E"ð E"ðP%ð %ð %ðP"ð "ð "ð2G"ð G"ð G"ðTað að að82ð 2ð 2ðBM-ð M-ð M-ð`3ð 3ð 3ð.Yð .Yð .Yðb	<ð 	<ð 	<ð ,0¸uÈfÔN`ðw%ð w%ð w%ð w%ðv UZðXð Xð Xð Xð Xð XrJ   