ó
    Óz	i•  ã                   óB   • S r SSKJr  SSKJr  SSKJr   " S S\5      rg)z3Combine consecutive Cliffords over the same qubits.é    )ÚTransformationPass)Úcontrol_flow)ÚCliffordc                   ó<   • \ rS rSrSr\R                  S 5       rSrg)ÚOptimizeCliffordsé   zšCombine consecutive Cliffords over the same qubits.
This serves as an example of extra capabilities enabled by storing
Cliffords natively on the circuit.
c                 óî  • / nSn/ nUR                  5        Hš  n[        UR                  [        5      (       a\  Uc  UR	                  U5        U/nO@UR
                  UR
                  :X  a  UR	                  U5        OUR	                  U5        U/nUnM~  U(       a  UR	                  U5        Sn/ nMœ     U(       a  UR	                  U5        U Hœ  n[        U5      S::  a  M  [        US   R
                  5       VVs0 s H  u  pxX‡_M	     n	nnUS   R                  n
[        U5       H-  u  pµUS:”  d  M  [        R                  " UR                  U
SS9n
M/     UR                  XjU	SS9  Mž     U$ s  snnf )zŒRun the OptimizeCliffords pass on `dag`.

Args:
    dag (DAGCircuit): the DAG to be optimized.

Returns:
    DAGCircuit: the optimized DAG.
Né   r   T)ÚfrontF)Úcycle_check)
Útopological_op_nodesÚ
isinstanceÚopr   ÚappendÚqargsÚlenÚ	enumerateÚcomposeÚreplace_block_with_op)ÚselfÚdagÚblocksÚ	prev_nodeÚ	cur_blockÚnodeÚ	cur_nodesÚixÚqbÚwire_pos_mapÚcliffÚis               Úr/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/transpiler/passes/optimization/optimize_cliffords.pyÚrunÚOptimizeCliffords.run   s\  € ð ˆØˆ	Øˆ	ð ×,Ñ,Ö.ˆDÜ˜$Ÿ'™'¤8×,Ñ,ØÑ$Ø—M‘M )Ô,Ø!% ‘Ià —‘¨$¯*©*Ó4Ø!×(Ñ(¨Õ.àŸ™ iÔ0Ø%) F˜	à ’	ö Ø—M‘M )Ô,Ø 	Ø’	ñ' /ö* ØM‰M˜)Ô$ó  ˆIä9‹~ Ó"Ùä1:¸9ÀQ¹<×;MÑ;MÔ1NÔOÒ1N¡v r˜BšFÑ1NˆLÑOð ˜a‘L—O‘OˆEÜ$ YÖ/‘Øq•5Ü$×,Ò,¨T¯W©W°eÀ4ÑH’Eñ 0ð
 ×%Ñ% i¸ÐRWÐ%ÓXñ  ð  ˆ
ùó Ps   Ã>E1© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Útrivial_recurser#   Ú__static_attributes__r%   ó    r"   r   r      s!   † ñð
 ×!Ñ!ñ>ó "ó>r-   r   N)r*   Úqiskit.transpiler.basepassesr   Úqiskit.transpiler.passes.utilsr   Úqiskit.quantum_info.operatorsr   r   r%   r-   r"   Ú<module>r1      s"   ðñ :å ;Ý 7Ý 2ôEÐ*õ Er-   