§
    µYÄj'Z  ã                   ó„  — d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
mZmZmZmZmZmZmZmZ d„ Zd)d„Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zddlm Z  ddl!m"Z"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z.  G d„ d¦  «        Z/d*d„Z0d+d„Z1d„ Z2d„ Z3d „ Z4d!„ Z5d"„ Z6d#„ Z7d$„ Z8 G d%„ d&¦  «        Z9d'„ Z:d(„ Z;dS ),zJBounded, read-only Agent History: normalization, cursors, frames, binding.é    N)ÚHISTORY_MAX_FRAME_BYTESÚHISTORY_MAX_MESSAGESÚHISTORY_MAX_TEXT_BYTESÚ
build_pageÚdecode_cursorÚencode_cursorÚnormalize_codex_turnÚnormalize_pi_messagesc            
      ó2	  — d } t          | ¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}d} t          | ¦  «        }d}||k    }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}}d	D �]¨}t          |¦  «        }t          |¦  «        }||k    }|�sxt          j        d|fd
||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}�ŒªdD �]}
t          |
¦  «        }d }||u }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}�Œd S )Nr   ©ú==)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr   )Úpy0Úpy2Úpy4Úpy7zassert %(py9)sÚpy9Ú )r   é   é   iè  )zN%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py1)s(%(py2)s)
})
} == %(py8)sr   Úoffset)r   Úpy1r   r   Úpy6Úpy8úassert %(py10)sÚpy10)z!!!!Ú
not_base64Á,  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaÚ
aGVsbG86MQ)Úis)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sÚbad)r   r   Úpy3r   úassert %(py8)sr   )
r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   )Ú@py_assert1Ú@py_assert3Ú@py_assert6Ú@py_assert5Ú@py_format8Ú@py_format10r   Ú@py_assert7Ú@py_format9Ú@py_format11r    Ú@py_assert2Ú@py_assert4Ú@py_format7s                 úX/home/lighthouse/esp32-dev/.cache/watch-codex-quota-startup/server/tests/test_history.pyÚ#test_cursor_roundtrip_and_rejectionr8      sì  € ØÐ#�=˜ÑÔÐ# !Ð#Ð !Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�=Ñ#Ô#Ð#Õ#Ô#�=Ñ#Ô#Ð#Ð#Õ#Ô#˜Ñ#Ô#Õ#Ô#ÐÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÐ!�=˜ÑÔÐ! Ð!Ð Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!Ð Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�=Ñ!Ô!Ð!Õ!Ô!�=Ñ!Ô!Ð!Ð!Õ!Ô!˜Ñ!Ô!Õ!Ô!ÐÑ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø!ð >ñ >ˆÝ*¨6Ñ2Ô2Ð=�}Ð2Ñ3Ô3Ð=Ð3°vÒ=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð3°vÐ=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=�}Ñ=Ô=Ð=Õ=Ô=�}Ñ=Ô=Ð=Ð=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=�]Ñ=Ô=Ð=Õ=Ô=�]Ñ=Ô=Ð=Ð=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=¨6Ñ=Ô=Ð=Õ=Ô=¨6Ñ=Ô=Ð=Ð=Õ=Ô=Ð2Ñ=Ô=Õ=Ô=Ð3Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=°vÑ=Ô=Ð=Õ=Ô=°vÑ=Ô=Ð=Ð=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ñ=à>ð *ñ *ˆÝ˜SÑ!Ô!Ð) TÐ)Ð! TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�}Ñ)Ô)Ð)Õ)Ô)�}Ñ)Ô)Ð)Ð)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)˜SÑ)Ô)Ð)Õ)Ô)˜SÑ)Ô)Ð)Ð)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ñ)ð*ð *ó    Ú	completedÚfullc                 ó   — ||| dœS )N)ÚstatusÚ	itemsViewÚitems© )r?   r=   Ú
items_views      r7   ÚturnrB      s   € Ø¨:ÀÐFÐFÐFr9   c                  ó€  — dddœddddœgdœdd	dœd
dddœd
dddœdddœg} t          t          | ¦  «        ¦  «        }d„ |D ¦   «         }ddg}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}t          j        |¦  «        }dD ]Ì}||v}	|	sÂt          j        d|	fd||f¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndd t          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd d!œz  }
d"d#|
iz  }t          t          j        |¦  «        ¦  «        ‚d }	ŒÍd S )$NÚ	reasoningúsecret chain of thought©ÚtypeÚtextÚuserMessagerH   zfix the network©rG   ÚcontentÚfunctionCallzrm -rf /ÚagentMessageÚ
commentaryúthinking out loud©rG   ÚphaserH   Úfinal_answerzdone, tests passÚ
fileChangeú
diff --gitc                 ó   — g | ]
}|d          ‘ŒS ©Úroler@   ©Ú.0Úms     r7   ú
<listcomp>zDtest_codex_normalization_only_user_and_assistant.<locals>.<listcomp>)   ó   € Ð*Ð*Ð*˜!ˆAˆfŒIÐ*Ð*Ð*r9   ÚuserÚ	assistantr   ©z%(py1)s == %(py4)s©r   r   úassert %(py6)sr   r   r   )rE   zrm -rfrO   rT   ©únot in©z%(py0)s not in %(py2)sÚ	forbiddenÚblob©r   r   úassert %(py4)sr   ©r	   rB   r#   r$   r(   r)   r*   ÚjsonÚdumpsr%   r&   r'   )r?   Ú
normalizedÚ@py_assert0r,   r4   Ú@py_format5r6   rf   re   r+   Ú@py_format3s              r7   Ú0test_codex_normalization_only_user_and_assistantrp      s�  € àÐ&?Ð@Ð@Ø°VÐEVÐ,WÐ,WÐ+XÐYÐYØ¨Ð4Ð4Ø¨,Ð@SÐTÐTØ¨.ÐBTÐUÐUØ |Ð4Ð4ð€Eõ &¥d¨5¡k¤kÑ2Ô2€JØ*Ð*˜zÐ*Ñ*Ô*ÐC¨v°{Ð.CÐCÐ*Ð.CÒCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ*Ð.CÐCÑCÔCÕCÔCÐ*ÑCÔCÕCÔCÐ.CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCØ�aŒ=˜Ô Ð5Ð$5Ð5Ð Ð$5Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð Ð$5Ð5Ñ5Ô5Õ5Ô5Ð Ñ5Ô5Õ5Ô5Ð$5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø�aŒ=˜Ô Ð6Ð$6Ð6Ð Ð$6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð Ð$6Ð6Ñ6Ô6Õ6Ô6Ð Ñ6Ô6Õ6Ô6Ð$6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6åŒ:�jÑ!Ô!€DØ]ð %ð %ˆ	Ø Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆy Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Ð$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ Ñ$Ô$Ð$Õ$Ô$ Ñ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$ð%ð %r9   c            	      ó|  — ddddœdddœdddœd	d
ddœdddœgdœ} t          t          | dddœg¦  «        ¦  «        }|d         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}t          j        |¦  «        }dD ]Ì}||v}	|	sÂt          j        d|	fd||f¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndd t          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd d!œz  }
d"d#|
iz  }t          t          j        |¦  «        ¦  «        ‚d }	ŒÍddd$dœgdœg}t          |¦  «        }t          |¦  «        }g }||k    }|�s"t          j        d|fd%||f¦  «        d&t          j
        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nd&d't          j
        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd't          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}t          t          dd+dœg¦  «        ¦  «        }|d         d         }d+}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S ),NrI   rH   z
first linerF   Ú
localImageú/tmp/secret.png)rG   Úpathzsecond lineÚmentionÚdocsú
/repo/docs)rG   Únamert   Úimagezhttps://example.test/x.png)rG   ÚurlrJ   rM   Úanswerr   rW   r]   r   r_   r`   ra   r   zfirst line
second line)rs   ru   zexample.testrw   rb   rd   re   rf   rg   rh   r   zhttps://example.test/y.png)zO%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py1)s(%(py3)s)
})
} == %(py10)sr	   rB   )r   r   r!   Úpy5r   r   zassert %(py12)sÚpy12zlegacy promptri   )Úitemrl   rm   r,   r4   rn   r6   rf   re   r+   ro   r5   r-   Ú@py_assert9Ú@py_assert8r3   Ú@py_format13Úlegacys                     r7   Ú+test_codex_user_message_reads_content_partsrƒ   2   se  € ð "Ø Ð.Ð.ØÐ'8Ð9Ð9Ø Ð/Ð/Ø F°LÐAÐAØÐ!=Ð>Ð>ð/ð ð €Dõ &¥d¨D¸>ÐS[Ð2\Ð2\Ð+]Ñ&^Ô&^Ñ_Ô_€JØ�aŒ=˜Ô Ð* FÐ*Ð  FÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð  FÐ*Ñ*Ô*Õ*Ô*Ð Ñ*Ô*Õ*Ô* FÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�aŒ=˜Ô Ð=Ð$=Ð=Ð Ð$=Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð Ð$=Ð=Ñ=Ô=Õ=Ô=Ð Ñ=Ô=Õ=Ô=Ð$=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ÝŒ:�jÑ!Ô!€DØQð %ð %ˆ	Ø Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆy Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Ð$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ Ñ$Ô$Ð$Õ$Ô$ Ñ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$à/<ØÐ!=Ð>Ð>ðJ@ð 'Að 'Að &Bð J¥ð &Bñ !Cô !Cð JÕð !Cñ Dô Dð JØGIðJð DØGIòJð Jð Jñ Jõ JÜ8IðJð Jð Jð Jð DØGIðJñ Jô Jð Jõ JÜCIñJô Jð Jð Jõ JÜ1Iõ  ñ Jô Jð Jõ JÜ@Iõ  ñ Jô Jð Jð Jð Jõ JÜCIñJô Jð Jð Jõ JÜ1Iõ !%ñ Jô Jð Jõ JÜ@Iõ !%ñ Jô Jð Jð Jõ JÜ@Ið&Bñ Jô Jõ JÜ@Ið!Cñ Jô Jõ JÜ@IðDñ Jô Jõ JÜ@IÀrñJô Jð Jð Jñ Jð Jð Jð Jð Jð Jñ Jð Jõ Jõ JÜ6IðJñ Jô Jñ Jô Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jõ "¥$°ÈÐ(XÐ(XÐ'YÑ"ZÔ"ZÑ[Ô[€FØ�!Œ9�VÔÐ/ Ð/Ð Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð Ð/Ñ/Ô/Õ/Ô/ÐÑ/Ô/Õ/Ô/ Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r9   c                  óÊ  — t          ddddœdddœg¦  «        } t          | ¦  «        d         d         }d}||k    }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}t          dddœddddœdddœg¦  «        }t          |¦  «        d         d         }d}||k    }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NrM   rN   ÚnoiserP   zreal answerrF   r   rH   r   r_   r`   ra   r   ÚdraftrR   ÚfinalÚtrailing)rB   r	   r#   r$   r(   r)   r*   )Úonly_commentaryrm   r,   r4   rn   r6   Úfinal_presents          r7   Ú;test_codex_assistant_prefers_final_then_last_non_commentaryr‹   K   sÛ  € åØ¨,ÀÐHÐHØ¨Ð7Ð7ðñ ô €Oõ   Ñ0Ô0°Ô3°FÔ;ÐL¸}ÐLÐ;¸}ÒLÐLÐLÐLÕLÔLÐLÐLÐLÐLÐ;¸}ÐLÑLÔLÕLÔLÐ;ÑLÔLÕLÔL¸}ÑLÔLÐLÐLÑLÐLÐLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLåØ¨Ð1Ð1Ø¨.À'ÐJÐJØ¨Ð4Ð4ðñ ô €Mõ
   Ñ.Ô.¨qÔ1°&Ô9ÐD¸WÐDÐ9¸WÒDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ9¸WÐDÑDÔDÕDÔDÐ9ÑDÔDÕDÔD¸WÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDr9   c            
      óæ  — ddddœgdœg} d}t          | |¬¦  «        }t          |¦  «        }g }||k    }|�s5t          j        d|fd	||f¦  «        d
t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd
dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x} x}x}x}x}}ddddœgdœg} d}t          | |¬¦  «        }t          |¦  «        }g }||k    }|�s5t          j        d|fd||f¦  «        d
t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd
dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x} x}x}x}x}}d S )NrI   rH   ÚhirF   rJ   Ú
inProgress)r=   r   )z_%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py1)s(%(py3)s, status=%(py5)s)
})
} == %(py12)sr	   rB   )r   r   r!   r|   r   r   r}   úassert %(py14)sÚpy14Úsummary)rA   )zc%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py1)s(%(py3)s, items_view=%(py5)s)
})
} == %(py12)s)
rB   r	   r#   r$   r%   r&   r'   r(   r)   r*   )r4   r5   r-   r€   Ú@py_assert11Ú@py_assert10r�   Ú@py_format15s           r7   Ú5test_codex_incomplete_and_non_completed_turns_skippedr•   [   sÖ  € Ø/<Ø Ð&Ð&ðJ(ð ')ð ')ð &*ð GØ2>ðG¥ð &*Ø2>ð!@ñ !@ô !@ð GÕð !@ñ Aô Að GØDFðGð AØDFòGð Gð Gñ Gõ GÜ5FðGð Gð Gð Gð AØDFðGñ Gô Gð Gõ GÜ@FñGô Gð Gð Gõ GÜ.Fõ  ñ Gô Gð Gõ GÜ=Fõ  ñ Gô Gð Gð Gð Gõ GÜ@FñGô Gð Gð Gõ GÜ.Fõ !%ñ Gô Gð Gõ GÜ=Fõ !%ñ Gô Gð Gð Gõ GÜ=Fð&*ñ Gô Gõ GÜ=F°,ñGô Gõ GÜ=Fð!@ñ Gô Gõ GÜ=FðAñ Gô Gõ GÜ=FÀBñGô Gð Gð Gñ Gð Gð Gð Gð Gð Gñ Gð Gõ Gõ GÜ3FðGñ Gô Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gà/<Ø Ð&Ð&ðJ(ð ')ð ')ð &*ð HØ6?ðH¥ð &*Ø6?ð!Añ !Aô !Að HÕð !Añ Bô Bð HØEGðHð BØEGòHð Hð Hñ Hõ HÜ6GðHð Hð Hð Hð BØEGðHñ Hô Hð Hõ HÜAGñHô Hð Hð Hõ HÜ/Gõ  ñ Hô Hð Hõ HÜ>Gõ  ñ Hô Hð Hð Hð Hõ HÜAGñHô Hð Hð Hõ HÜ/Gõ !%ñ Hô Hð Hõ HÜ>Gõ !%ñ Hô Hð Hð Hõ HÜ>Gð&*ñ Hô Hõ HÜ>G°iñHô Hõ HÜ>Gð!Añ Hô Hõ HÜ>GðBñ Hô Hõ HÜ>GÀRñHô Hð Hð Hñ Hð Hð Hð Hð Hð Hñ Hð Hõ Hõ HÜ4GðHñ Hô Hñ Hô Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hr9   c                  ó^  — dddœdddœdddd	œd
ddœgdœdddd	œgdœdddd	œgdœg} t          | ¦  «        }d„ |D ¦   «         }ddg}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}}t          j        |¦  «        }dD ]Ì}||v}	|	sÂt          j        d|	fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nddt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nddœz  }
dd|
iz  }t	          t          j        |¦  «        ¦  «        ‚d }	ŒÍd S ) NÚsystemúsystem prompt©rW   rK   r]   Úhellor^   rH   r�   rF   ÚtoolCallÚbash)rG   rx   Ú
toolResultúcommand outputrD   Úhiddenc                 ó   — g | ]
}|d          ‘ŒS rV   r@   rX   s     r7   r[   zAtest_pi_normalization_only_user_and_assistant.<locals>.<listcomp>n   r\   r9   r   r_   r`   ra   r   r   )r˜   rœ   rž   rŸ   rb   rd   re   rf   rg   rh   r   )r
   r#   r$   r(   r)   r*   rj   rk   r%   r&   r'   )Úmessagesrl   rm   r,   r4   rn   r6   rf   re   r+   ro   s              r7   Ú-test_pi_normalization_only_user_and_assistantr¢   d   sú  € à oÐ6Ð6Ø GÐ,Ð,Ø°6À4Ð*HÐ*HØ3=ÀvÐ*NÐ*Nð*Pð 	Qð 	Qà°FÐDTÐ+UÐ+UÐ*VÐWÐWØ°;ÈÐ*QÐ*QÐ)RÐSÐSð€Hõ ' xÑ0Ô0€JØ*Ð*˜zÐ*Ñ*Ô*ÐC¨v°{Ð.CÐCÐ*Ð.CÒCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ*Ð.CÐCÑCÔCÕCÔCÐ*ÑCÔCÕCÔCÐ.CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCØ�aŒ=˜Ô Ð( DÐ(Ð  DÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð  DÐ(Ñ(Ô(Õ(Ô(Ð Ñ(Ô(Õ(Ô( DÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ÝŒ:�jÑ!Ô!€DØJð %ð %ˆ	Ø Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆy Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Ð$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ Ñ$Ô$Ð$Õ$Ô$ Ñ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$ð%ð %r9   c                 ó4   — d„ t          | ¦  «        D ¦   «         S )Nc                 ó4   — g | ]}|d z  dk    rdndd|› �dœ‘ŒS )é   r   r]   r^   zmessage ©rW   rH   r@   ©rY   Úis     r7   r[   zmessages.<locals>.<listcomp>x   sF   € ð #ð #ð #Øð  ! 1™u¨šz˜z�V�V¨{ÀNÈqÀNÀNÐSÐSð #ð #ð #r9   )Úrange)Úcounts    r7   r¡   r¡   w   s)   € ð#ð #Ý˜5‘\”\ð#ñ #ô #ð #r9   c            	      ó@  — t          d¦  «        } t          | d dd¬¦  «        }|d         }t          |¦  «        }|t          k    }|�st	          j        d|fd|t          f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        d	t          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nd	d
œz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|d         d         d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|d         }|s:ddt	          j	        |¦  «        iz  }
t          t	          j        |
¦  «        ¦  «        ‚d }|d         }| }|s:ddt	          j	        |¦  «        iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}t          j        |d         |d         dœdd¬¦  «        }|j        } |¦   «         }t          |¦  «        }|t          k    }|�sRt	          j        d|fd|t          f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        d t          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nd d!œz  }d"d#|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}}d S )$Né
   Úpié   ©ÚagentÚ
generationr¡   r   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py6)sÚlenr   ©r   r   r   r   r"   r   r   rH   z	message 0r_   r`   ra   r   Únext_cursorzassert %(py1)sr   Úoldestzassert not %(py1)s©r¡   r´   F©ú,ú:©Úensure_asciiÚ
separators©ú<=©zc%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.encode
}()
})
} <= %(py9)sÚframer   ©r   r   r!   r|   r   r   úassert %(py11)sÚpy11)r¡   r   r²   r   r#   r$   r%   r&   r'   r(   r)   r*   rj   rk   Úencoder   )Úall_messagesÚpager+   r,   r.   r6   r2   rm   r4   rn   Ú@py_format2ro   rÀ   r5   r-   r€   r0   Ú@py_format12s                     r7   Ú%test_page_is_newest_first_and_boundedrÉ   |   sd  € Ý˜B‘<”<€LÝ�l D°ÀÐCÑCÔC€DØ�JÔÐ8�3ÐÑ Ô Ð8Ð Õ$8Ò8Ð8Ð8Ñ8Õ8Ô8Ð8Ð8Ð8Ð8Ð Õ$8Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8�3Ñ8Ô8Ð8Õ8Ô8�3Ñ8Ô8Ð8Ð8Õ8Ô8ÐÑ8Ô8Õ8Ô8Ð Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8Õ$8Ñ8Ô8Ð8Õ8Ô8Õ$8Ñ8Ô8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø�
Ô˜AÔ˜vÔ&Ð5¨+Ð5Ð&¨+Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð&¨+Ð5Ñ5Ô5Õ5Ô5Ð&Ñ5Ô5Õ5Ô5¨+Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø�ÔÐÐÐÐÐÕÔÐÑÔÐÑÐÕÕÔÐÑÔÑÔÐÐÐØ�HŒ~Ðˆ~ÐÐÐÐÐÐÕÔˆ~ÑÔÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝŒJ D¨Ô$4ÀTÈ-ÔEXÐYÐYØ$)°jðBñ Bô B€EàŒ|Ð9ˆ|ˆ|‰~Œ~Ð9�3ˆ~ÑÔÐ9ÐÕ"9Ò9Ð9Ð9Ñ9Õ9Ô9Ð9Ð9Ð9Ð9ÐÕ"9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9�3Ñ9Ô9Ð9Õ9Ô9�3Ñ9Ô9Ð9Ð9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆuÑ9Ô9Ð9Õ9Ô9ˆuÑ9Ô9Ð9Ð9Õ9Ô9ˆ|Ñ9Ô9Õ9Ô9ˆ~Ñ9Ô9Õ9Ô9ÐÑ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9Õ"9Ñ9Ô9Ð9Õ9Ô9Õ"9Ñ9Ô9Ð9Ð9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r9   c                  óè  — t          d¦  «        } g }d }t          d¦  «        D ]L}t          | |dd¬¦  «        }|                     d„ |d         D ¦   «         ¦  «         |d         r n	|d	         }ŒMd
„ | D ¦   «         }||k    }|s—t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}ddlm}	 t          j        |	¦  «        5  t          | t!          d¦  «        dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né	   r¬   Úcodexr   r¯   c              3   ó&   K  — | ]}|d          V — ŒdS ©rH   Nr@   rX   s     r7   ú	<genexpr>z=test_cursor_pagination_reaches_oldest_once.<locals>.<genexpr>Ž   s&   è è € Ð8Ð8 !�A�f”IÐ8Ð8Ð8Ð8Ð8Ð8r9   r¡   rµ   r´   c                 ó   — g | ]
}|d          ‘ŒS ©rH   r@   rX   s     r7   r[   z>test_cursor_pagination_reaches_oldest_once.<locals>.<listcomp>’   s   € Ð4Ð4Ð4 !�A�f”IÐ4Ð4Ð4r9   r   ©z%(py0)s == %(py3)sÚseen©r   r!   úassert %(py5)sr|   r   )ÚControlErroriç  r­   )r¡   r©   r   Úextendr#   r$   r%   r&   r'   r(   r)   r*   Údevice_gateway.control.modelsrÖ   ÚpytestÚraisesr   )
rÅ   rÓ   ÚcursorÚ_rÆ   r4   r+   Ú@py_format4Ú@py_format6rÖ   s
             r7   Ú*test_cursor_pagination_reaches_oldest_oncerß   ˆ   s  € Ý˜A‘;”;€LØ€DØ€FÝ�2‰YŒYð %ð %ˆÝ˜,¨°gÈ!ÐLÑLÔLˆØ�ŠÐ8Ð8 t¨JÔ'7Ð8Ñ8Ô8Ñ8Ô8Ð8Ø�Œ>ð 	ØˆEØ�mÔ$ˆˆØ4Ð4 |Ð4Ñ4Ô4Ð4ˆ4Ð4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ˆ4Ð4Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆ4Ñ4Ô4Ð4Õ4Ô4ˆ4Ñ4Ô4Ð4Ð4Õ4Ô4Ð4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4à:Ð:Ð:Ð:Ð:Ð:Ý	Œ�|Ñ	$Ô	$ð Oð OÝ�<¥¨sÑ!3Ô!3¸4ÈAÐNÑNÔNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð Oð Os   Ä9!E'Å'E+Å.E+c                  óZ  ‡— dŠˆfd„t          d¦  «        D ¦   «         } t          | d dd¬¦  «        }t          j        |d         |d         d	œd
d¬¦  «        }|j        } |¦   «         }t          |¦  «        }|t          k    }|�sRt          j        d|fd|t          f¦  «        dt          j
        ¦   «         v st          j        t
          ¦  «        rt          j        t
          ¦  «        nddt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dt          j
        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|d         D �]Á}	|	d         }
|
j        } |¦   «         }t          |¦  «        }d}t          |z   }||k    }|�s`t          j        d|fd||f¦  «        dt          j
        ¦   «         v st          j        t
          ¦  «        rt          j        t
          ¦  «        nddt          j
        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dt          j
        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}|
                     d¦  «         �ŒÃd S )NuÐ   ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚ä¸­æ–‡æµ‹è¯•å†…å®¹ã€‚c                 ó   •— g | ]}d ‰dœ‘ŒS )r^   r¦   r@   )rY   rÜ   rf   s     €r7   r[   zDtest_long_text_frame_stays_bounded_and_utf8_safe.<locals>.<listcomp>œ   s!   ø€ ÐJÐJÐJ¸A˜[°$Ð7Ð7ÐJÐJÐJr9   r   r­   r   r¯   r¡   r´   r¶   Fr·   rº   r½   r¿   r²   rÀ   r   rÁ   rÂ   rÃ   rH   r®   )zp%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.encode
}()
})
} <= (%(py9)s + %(py11)s)r   )r   r   r!   r|   r   r   rÃ   r�   r�   zutf-8)r©   r   rj   rk   rÄ   r²   r   r#   r$   r%   r&   r'   r(   r)   r*   r   )rÅ   rÆ   rÀ   r4   r5   r-   r€   r0   rÈ   ÚmessagerH   r“   Ú@py_assert12r�   r”   rf   s                  @r7   Ú0test_long_text_frame_stays_bounded_and_utf8_saferä   ™   sÓ  ø€ à(€DØJÐJÐJÐJÅÀqÁÄÐJÑJÔJ€LÝ�l D°ÀÐCÑCÔC€DÝŒJ D¨Ô$4ÀTÈ-ÔEXÐYÐYØ$)°jðBñ Bô B€EàŒ|Ð9ˆ|ˆ|‰~Œ~Ð9�3ˆ~ÑÔÐ9ÐÕ"9Ò9Ð9Ð9Ñ9Õ9Ô9Ð9Ð9Ð9Ð9ÐÕ"9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9�3Ñ9Ô9Ð9Õ9Ô9�3Ñ9Ô9Ð9Ð9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆuÑ9Ô9Ð9Õ9Ô9ˆuÑ9Ô9Ð9Ð9Õ9Ô9ˆ|Ñ9Ô9Õ9Ô9ˆ~Ñ9Ô9Õ9Ô9ÐÑ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9Õ"9Ñ9Ô9Ð9Õ9Ô9Õ"9Ñ9Ô9Ð9Ð9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø˜
Ô#ð ñ ˆØ�vŒˆØ”;Ð?�;�;‘=”=Ð?�s�=Ñ!Ô!Ð?¸aÐ?Õ%;¸aÑ%?Ð?Ð!Ð%?Ò?Ð?Ð?Ñ?Õ?Ô?Ð?Ð?Ð?Ð?Ð!Ð%?Ð?Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?�sÑ?Ô?Ð?Õ?Ô?�sÑ?Ô?Ð?Ð?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?�4Ñ?Ô?Ð?Õ?Ô?�4Ñ?Ô?Ð?Ð?Õ?Ô?�;Ñ?Ô?Õ?Ô?�=Ñ?Ô?Õ?Ô?Ð!Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?Õ%;Ñ?Ô?Ð?Õ?Ô?Õ%;Ñ?Ô?Ð?Ð?Õ?Ô?¸aÑ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø�Š�GÑÔÐÑðð r9   c                  óF  — dddœdddœg} t          | d dd¬¦  «        }t          j        |d	         ¦  «        }d
}||v}|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d}||v}|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d S )Nr]   z&use Bearer abcdef0123456789 to call itr¦   r^   z api_key=sk-abcdefghijklmnop doner­   r   r¯   r¡   Úabcdef0123456789rb   )z%(py1)s not in %(py3)srf   )r   r!   rÕ   r|   zsk-abcdefghijklmnopz
[redacted])Úin)z%(py1)s in %(py3)s)r   rj   rk   r#   r$   r(   r%   r&   r'   r)   r*   )rÅ   rÆ   rf   rm   r4   rÝ   rÞ   s          r7   Útest_credentials_redactedrè   §   sŸ  € àÐ!IÐJÐJØÐ&HÐIÐIð€Lõ �l D°ÀÐCÑCÔC€DÝŒ:�d˜:Ô&Ñ'Ô'€DØÐ)Ð TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð TÐ)Ñ)Ô)Õ)Ô)ÐÑ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô) TÑ)Ô)Ð)Õ)Ô) TÑ)Ô)Ð)Ð)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ø Ð,Ð ¨Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð ¨Ð,Ñ,Ô,Õ,Ô,Ð Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,¨Ñ,Ô,Ð,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,ØÐˆ<˜4ÐÐÐÐÕÔÐÐÐÐˆ<˜4ÐÑÔÕÔˆ<ÑÔÐÕÔÑÔÐÐÕÔ˜4ÑÔÐÕÔ˜4ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr9   )ÚSimpleNamespace)ÚAgentSessionrÖ   ÚProject)Ú	Navigator)Ú
Operations)ÚProjectRegistry)Ú
UserInputs)ÚTargetStorec                   ó*   — e Zd Zdd„Zd„ Zd„ Zd	d„ZdS )
ÚHistoryAgentNTc                 ó�   — || _         || _        t          |¦  «        | _        |�|nt	          d¦  «        | _        |s	d | _        d S d S )Né   )Ú
agent_typer°   Ústrrt   r¡   Ú	_messagesÚread_history)Úselfr°   rt   r?   Úhistorys        r7   Ú__init__zHistoryAgent.__init__¿   sS   € ØˆŒØˆŒ
Ý˜‘I”IˆŒ	Ø"'Ð"3˜˜½À!¹¼ˆŒØð 	%Ø $ˆDÔÐÐð	%ð 	%r9   c              ƒ   ó¨   K  — t          |¦  «                             d¦  «        st          dd¦  «        ‚t          | j        |dd| j        d¬¦  «        S )NÚszSession disappearedi”  ÚpÚnú2026-10-05T00:00:00Z)r°   Ú
session_idÚ
project_idrx   ÚcwdÚ
updated_at)rö   Ú
startswithrÖ   rê   r°   rt   )rù   Úsids     r7   Úget_sessionzHistoryAgent.get_sessionÇ   sa   è è € Ý�3‰xŒx×"Ò" 3Ñ'Ô'ð 	;ÝÐ4°cÑ:Ô:Ð:Ý $¤*¸ÈÐSVØ $¤	Ð6LðNñ Nô Nð 	Nr9   c              ƒ   ó>   K  — |                       d¦  «        ƒ d {V —†gS )NÚs1)r  )rù   Úprojects     r7   Úlist_sessionszHistoryAgent.list_sessionsÍ   s/   è è € Ø×&Ò& tÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð-Ð-r9   é@   c              ƒ   ó$   K  — | j         d |…         S ©N)r÷   )rù   r  Úmax_messagess      r7   rø   zHistoryAgent.read_historyÐ   s   è è € ØŒ~˜m˜|˜mÔ,Ð,r9   ©NT©r  )Ú__name__Ú
__module__Ú__qualname__rû   r  r  rø   r@   r9   r7   rò   rò   ¾   s]   € € € € € ð%ð %ð %ð %ðNð Nð Nð.ð .ð .ð-ð -ð -ð -ð -ð -r9   rò   c                 óL  — t          | dz  ¦  «        }|                     t          ddt          | ¦  «        ¬¦  «        ¦  «         t	          | dz  ¦  «        }t          d| |¦  «        }t          |d|i|t          | dz  ¦  «        t          ¦   «         d„ d	„ d
„ d„ ¦	  «	        }|||fS )Núprojects.jsonrþ   ÚDemo©Úidrx   rt   útargets.jsonrÌ   úo.dbc                 ó   — d S r  r@   )ÚdÚes     r7   ú<lambda>zbuild.<locals>.<lambda>Ú   s   € °T€ r9   c                 ó   — dS r  r@   ©r  s    r7   r  zbuild.<locals>.<lambda>Ú   s   € ÀT€ r9   c                 ó   — i S r  r@   ©Útargets    r7   r  zbuild.<locals>.<lambda>Û   s   € ¨€ r9   c                 ó   — d S r  r@   r!  s    r7   r  zbuild.<locals>.<lambda>Û   s   € °t€ r9   )	rî   Úaddrë   rö   rð   rò   rì   rí   rï   )Útmp_pathÚagent_messagesÚprojectsÚtargetsr°   Ú	navigators         r7   Úbuildr,  Ô   s²   € Ý˜x¨/Ñ9Ñ:Ô:€HØ‡L‚L•˜C fµ3°x±=´=ÐAÑAÔAÑBÔBÐBÝ˜( ^Ñ3Ñ4Ô4€GÝ˜ (¨NÑ;Ô;€EÝ˜( W¨eÐ$4°g½zÈ(ÐU[ÑJ[Ñ?\Ô?\Ý$™,œ,Ð(9Ð(9¸>¸>Ø+Ð+¨^¨^ñ=ô =€Ið �g˜uÐ$Ð$r9   úagent:codex:s1c                 óH   — t          ddt          j        ¦   «         ¬¦  «        S )Nr  Úc)Ú	device_idÚconnection_idÚ	send_lock)ré   ÚasyncioÚLock)Úgeneration_targets    r7   Údevicer6  ß   s   € Ý S¸ÅwÄ|Á~Ä~ÐVÑVÔVÐVr9   c                 óJ   ‡ — ˆ fd„}t          j         |¦   «         ¦  «         d S )Nc            	   “   óÈ	  •K  — t          ‰¦  «        \  } }}|                     ddd¦  «         |                     d¦  «        }t          ¦   «         }t	          ddd|d¬¦  «        }|                      ||¦  «        ƒ d {V —†}|d         }d	}||k    }	|	slt          j        d
|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}	}g }|d         }	d}|	|k    }|}|r|d         }d}||k    }|}|�st          j        d
|fd|	|f¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r`t          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}	x}x}x}x}}|d         }t          |¦  «        }|t          k    }|�st          j        d|fd|t          f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        d t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd d!œz  }d"d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t%          j        t(          ¦  «        5  |                      |t	          ||d#z   ¬$¦  «        ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   t%          j        t(          ¦  «        5  |                      |t	          |d%¬&¦  «        ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   t%          j        t(          ¦  «        5  |                      |t	          |d'¬(¦  «        ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   t%          j        t(          ¦  «        5  |                      |t	          |d)¬*¦  «        ¦  «        ƒ d {V —† d d d ¦  «         d S # 1 swxY w Y   d S )+Nr  r-  rþ   rÌ   r	  Úr1©r$  r°   r  Úexpected_target_generationÚ
request_idrG   Úhistory_pager   r_   r`   ra   r   r°   r  )z%(py3)s == %(py6)s)r!   r   z%(py8)sr   )z%(py11)s == %(py14)s)rÃ   r�   z%(py16)sÚpy16r   zassert %(py19)sÚpy19r¡   r½   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} <= %(py6)sr²   r   r³   r"   r   )r;  zagent:codex:otherr#  Úother)r  r­   )r°   )r,  Úsetr±   r6  Údictrú   r#   r$   r(   r)   r*   ÚappendÚ_format_boolopr²   r   r%   r&   r'   rÙ   rÚ   rÖ   )r+  r*  rÜ   r±   r  ÚeventrÆ   rm   r,   r4   rn   r6   r+   r.   r5   r“   Ú@py_assert13rã   r2   r”   Ú@py_format17Ú@py_format18Ú@py_format20r'  s                          €r7   ÚrunzAtest_history_requires_target_generation_and_identity.<locals>.runä   sÚ  øè è € Ý % h¡¤Ñˆ	�7˜AØ�Š�CÐ)¨3Ñ/Ô/Ð/Ø×'Ò'¨Ñ,Ô,ˆ
Ý‰HŒHˆÝÐ,°GÈØ0:ÀtðMñ Mô Mˆà×&Ò& q¨%Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆØ�FŒ|Ð-˜~Ð-ˆ|˜~Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆ|˜~Ð-Ñ-Ô-Õ-Ô-ˆ|Ñ-Ô-Õ-Ô-˜~Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØFÐFˆt�GŒ}ÐF ÐFˆ} Ò'ÐFÐFÐFÐFÐF¨D°Ô,>ÐFÀ$ÐFÐ,>À$Ò,FÐFÐFÐFÐFÑFÕFÔFÐFÐFÐFÐFˆ} ÐFÑFÔFÕFÔFˆ}ÑFÔFÕFÔF ÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÐF×FÒFÐFÑFÔFÐFÐFÐFÕFÔFÐFÐFÐFÐFÐ,>À$ÐFÑFÔFÕFÔFÐ,>ÑFÔFÕFÔFÀ$ÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÐF×FÒFÐFÑFÔFÐFÕFÔFÐFÐFÑFÔFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFØ˜
Ô#Ð<�sÐ#Ñ$Ô$Ð<Ð$Õ(<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð$Õ(<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<�sÑ<Ô<Ð<Õ<Ô<�sÑ<Ô<Ð<Ð<Õ<Ô<Ð#Ñ<Ô<Õ<Ô<Ð$Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<Õ(<Ñ<Ô<Ð<Õ<Ô<Õ(<Ñ<Ô<Ð<Ð<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<åŒ]�<Ñ(Ô(ð 	_ð 	_Ø×#Ò# A¥t¨EÈjÐ[\ÉnÐ']Ñ']Ô']Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^Ð^ð	_ð 	_ð 	_ñ 	_ô 	_ð 	_ð 	_ð 	_ð 	_ð 	_ð 	_øøøð 	_ð 	_ð 	_ð 	_õ Œ]�<Ñ(Ô(ð 	Pð 	PØ×#Ò# A¥t¨EÐ:MÐ'NÑ'NÔ'NÑOÔOÐOÐOÐOÐOÐOÐOÐOð	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Põ Œ]�<Ñ(Ô(ð 	Hð 	HØ×#Ò# A¥t¨E¸gÐ'FÑ'FÔ'FÑGÔGÐGÐGÐGÐGÐGÐGÐGð	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	HåŒ]�<Ñ(Ô(ð 	@ð 	@Ø×#Ò# A¥t¨E¸Ð'>Ñ'>Ô'>Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@sH   Î/OÏOÏ	OÏ&,PÐP"Ð%P"Ñ,Q:Ñ:Q>ÒQ>Ò,SÓSÓS©r3  rJ  ©r'  rJ  s   ` r7   Ú4test_history_requires_target_generation_and_identityrM  ã   s?   ø€ ð@ð @ð @ð @ð @õ, „K��‘”ÑÔÐÐÐr9   c                 óJ   ‡ — ˆ fd„}t          j         |¦   «         ¦  «         d S )Nc               “   óp  •K  — t          ‰¦  «        \  } }}d |_        |                     ddd¦  «         |                     d¦  «        }t	          j        t          ¦  «        5  |                      t          ¦   «         t          ddd|d¬¦  «        ¦  «        ƒ d {V —† d d d ¦  «         d S # 1 swxY w Y   d S )Nr  r-  rþ   rÌ   r	  r9  r:  )
r,  rø   rA  r±   rÙ   rÚ   rÖ   rú   r6  rB  )r+  r*  r°   r±   r'  s       €r7   rJ  zCtest_history_absent_capability_is_reported_not_crashed.<locals>.runþ   s:  øè è € Ý$)¨(¡O¤OÑ!ˆ	�7˜EØ!ˆÔØ�Š�CÐ)¨3Ñ/Ô/Ð/Ø×'Ò'¨Ñ,Ô,ˆ
ÝŒ]�<Ñ(Ô(ð 	Zð 	ZØ×#Ò#¥F¡H¤H­dÐ:JÐRYØ¸JÐSWð/Yñ /Yô /Yñ Zô Zð Zð Zð Zð Zð Zð Zð Zð	Zð 	Zð 	Zñ 	Zô 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zøøøð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zs   Á#;B+Â+B/Â2B/rK  rL  s   ` r7   Ú6test_history_absent_capability_is_reported_not_crashedrP  ý   s?   ø€ ðZð Zð Zð Zð Zõ „K��‘”ÑÔÐÐÐr9   c                 óJ   ‡ — ˆ fd„}t          j         |¦   «         ¦  «         d S )Nc               “   ó�  •‡‡K  — t          ‰¦  «        \  } Š}‰                     ddd¦  «         ‰                     d¦  «        }|j        Šd
ˆˆfd„	}||_        t	          j        t          ¦  «        5  |                      t          ¦   «         t          ddd|d¬	¦  «        ¦  «        ƒ d {V —† d d d ¦  «         d S # 1 swxY w Y   d S )Nr  r-  rþ   r  c              “   óZ   •K  — ‰                      ddd¦  «          ‰| |¦  «        ƒ d {V —†S )Nr  zagent:codex:s2rþ   )rA  )r  r  Úoriginalr*  s     €€r7   ÚmovingzNtest_history_target_change_during_read_is_ignored.<locals>.run.<locals>.moving  sB   øè è € à�KŠK˜Ð-¨sÑ3Ô3Ð3Ø!˜ # |Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r9   rÌ   r	  r9  r:  r  )
r,  rA  r±   rø   rÙ   rÚ   rÖ   rú   r6  rB  )r+  r°   r±   rU  rT  r*  r'  s       @@€r7   rJ  z>test_history_target_change_during_read_is_ignored.<locals>.run
  si  øøøè è € Ý$)¨(¡O¤OÑ!ˆ	�7˜EØ�Š�CÐ)¨3Ñ/Ô/Ð/Ø×'Ò'¨Ñ,Ô,ˆ
ØÔ%ˆð	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð
 $ˆÔÝŒ]�<Ñ(Ô(ð 	Zð 	ZØ×#Ò#¥F¡H¤H­dÐ:JÐRYØ¸JÐSWð/Yñ /Yô /Yñ Zô Zð Zð Zð Zð Zð Zð Zð Zð	Zð 	Zð 	Zñ 	Zô 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zøøøð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zs   Á3;B;Â;B?ÃB?rK  rL  s   ` r7   Ú1test_history_target_change_during_read_is_ignoredrV  	  s?   ø€ ðZð Zð Zð Zð Zõ „K��‘”ÑÔÐÐÐr9   c                 óJ   ‡ — ˆ fd„}t          j         |¦   «         ¦  «         d S )Nc               “   ód  •‡K  — t          ‰dz  ¦  «        } |                      t          ddt          ‰¦  «        ¬¦  «        ¦  «         t	          ‰dz  ¦  «        }t          d‰¦  «        }g Šˆfd„}t          | d|i|t          ‰dz  ¦  «        t          ¦   «         |d	„ d
„ d„ ¦	  «	        }| 	                    ddd¦  «         | 
                    d¦  «        }t          ¦   «         }dh|_        |                     |t          dddd|d¬¦  «        ¦  «        ƒ d {V —† g }‰}‰r‰d         d         }	d}
|	|
k    }|}|sûdddt          j        ¦   «         v st#          j        ‰¦  «        rt#          j        ‰¦  «        ndiz  }|                     |¦  «         ‰r`t#          j        d|fd|	|
f¦  «        t#          j        |	¦  «        t#          j        |
¦  «        dœz  }dd|iz  }|                     |¦  «         t#          j        |d¦  «        i z  }dd|iz  }t/          t#          j        |¦  «        ¦  «        ‚d x}x}x}	x}}
‰d         d          }d}||k    }|slt#          j        d|fd!||f¦  «        t#          j        |¦  «        t#          j        |¦  «        d"œz  }d#d$|iz  }t/          t#          j        |¦  «        ¦  «        ‚d x}x}}t3          j        ‰d         d%¬&¦  «                             ¦   «         }t9          |¦  «        }|t:          k    }	|	�s,t#          j        d'|	fd(|t:          f¦  «        d)t          j        ¦   «         v st#          j        t8          ¦  «        rt#          j        t8          ¦  «        nd)d*t          j        ¦   «         v st#          j        |¦  «        rt#          j        |¦  «        nd*t#          j        |¦  «        d+t          j        ¦   «         v st#          j        t:          ¦  «        rt#          j        t:          ¦  «        nd+d,œz  }d-d.|iz  }t/          t#          j        |¦  «        ¦  «        ‚d x}}	‰                     ¦   «          |                     |t          dddd|d/z   d0¬¦  «        ¦  «        ƒ d {V —† g }‰}‰r‰d         d         }	d1}
|	|
k    }|}|sûdddt          j        ¦   «         v st#          j        ‰¦  «        rt#          j        ‰¦  «        ndiz  }|                     |¦  «         ‰r`t#          j        d|fd|	|
f¦  «        t#          j        |	¦  «        t#          j        |
¦  «        dœz  }dd|iz  }|                     |¦  «         t#          j        |d¦  «        i z  }dd|iz  }t/          t#          j        |¦  «        ¦  «        ‚d x}x}x}	x}}
d S )2Nr  rþ   r  r  r  rÌ   c              “   ó6   •K  — ‰                      |¦  «         d S r  )rC  )r  rE  Úsents     €r7   ÚsendzLtest_history_handler_emits_bounded_page_and_error.<locals>.run.<locals>.send$  s   øè è € Ø�KŠK˜ÑÔÐÐÐr9   r  c                 ó   — dS r  r@   r!  s    r7   r  zPtest_history_handler_emits_bounded_page_and_error.<locals>.run.<locals>.<lambda>(  s   € ¸D€ r9   c                 ó   — i S r  r@   r#  s    r7   r  zPtest_history_handler_emits_bounded_page_and_error.<locals>.run.<locals>.<lambda>(  s   € ÐQS€ r9   c                 ó   — d S r  r@   r!  s    r7   r  zPtest_history_handler_emits_bounded_page_and_error.<locals>.run.<locals>.<lambda>(  s   € Ð_c€ r9   r  r-  rú   Úhistory_getr	  r9  )rG   r$  r°   r  r;  r<  r   rG   r=  z%(py2)sr   rZ  r   )z%(py5)s == %(py8)s)r|   r   z%(py10)sr   zassert %(py13)sÚpy13r<  r_   r`   ra   r   F)r»   r½   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} <= %(py5)sr²   rÀ   r   )r   r   r!   r|   zassert %(py7)sr   é   Úr2Úhistory_error)rî   r&  rë   rö   rð   rò   rì   rí   rï   rA  r±   r6  ÚcapabilitiesÚhandlerB  r%   r&   r#   r'   r(   rC  r$   rD  r)   r*   rj   rk   rÄ   r²   r   Úclear)r)  r*  r°   r[  r+  r±   r  r+   rm   r5   r1   r-   ro   r2   r3   rÈ   Ú@py_format14r,   r4   rn   r6   rÀ   rÞ   r/   rZ  r'  s                           @€r7   rJ  z>test_history_handler_emits_bounded_page_and_error.<locals>.run  sÒ  øøè è € Ý" 8¨oÑ#=Ñ>Ô>ˆØ�Š•W ¨&µs¸8±}´}ÐEÑEÔEÑFÔFÐFÝ˜h¨Ñ7Ñ8Ô8ˆÝ˜W hÑ/Ô/ˆØˆð	ð 	ð 	ð 	ð 	õ ˜h¨°%Ð(8¸'Å:ÈhÐY_ÑN_ÑC`ÔC`Ý(™lœl¨D°.°.ÐBSÐBSÐUcÐUcñeô eˆ	à�Š�CÐ)¨3Ñ/Ô/Ð/Ø×'Ò'¨Ñ,Ô,ˆ
Ý‰HŒHˆØ#˜ˆŒØ×Ò˜q¥$¨MÐBRÐZaØ¸
Ètð#Uñ #Uô #Uñ Vô Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Và9Ð9ˆtÐ9ˆtÐ9˜˜Qœ œÐ9¨>Ð9˜¨>Ò9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Ð9Ð9Ñ9Ð9Ð9×9Ò9Ð9Ñ9Ô9Ð9ˆtÐ9Õ9Ô9Ð9Ð9Ð9Ð9˜¨>Ð9Ñ9Ô9Õ9Ô9˜Ñ9Ô9Õ9Ô9¨>Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Ð9×9Ò9Ð9Ñ9Ô9Ð9Õ9Ô9Ð9Ð9Ñ9Ô9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø�AŒw�|Ô$Ð,¨Ð,Ð$¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ý”
˜4 œ7°Ð7Ñ7Ô7×>Ò>Ñ@Ô@ˆÝ�5‰zŒzÐ4ˆzÕ4Ò4Ð4Ð4Ñ4Õ4Ô4Ð4Ð4Ð4Ð4ˆzÕ4Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4�sÑ4Ô4Ð4Õ4Ô4�sÑ4Ô4Ð4Ð4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4�5Ñ4Ô4Ð4Õ4Ô4�5Ñ4Ô4Ð4Ð4Õ4Ô4ˆzÑ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4Õ4Ñ4Ô4Ð4Õ4Ô4Õ4Ñ4Ô4Ð4Ð4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4à�
Š
‰ŒˆØ×Ò˜q¥$¨MÐBRÐZaØ¸
ÀQ¹ÐSWð#Yñ #Yô #Yñ Zô Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zð 	Zà:Ð:ˆtÐ:ˆtÐ:˜˜Qœ œÐ:¨?Ð:˜¨?Ò:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆtÑ:Ô:Ð:Õ:Ô:ˆtÑ:Ô:Ð:Ð:Ð:Ñ:Ð:Ð:×:Ò:Ð:Ñ:Ô:Ð:ˆtÐ:Õ:Ô:Ð:Ð:Ð:Ð:˜¨?Ð:Ñ:Ô:Õ:Ô:˜Ñ:Ô:Õ:Ô:¨?Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:×:Ò:Ð:Ñ:Ô:Ð:Õ:Ô:Ð:Ð:Ñ:Ô:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r9   rK  rL  s   ` r7   Ú1test_history_handler_emits_bounded_page_and_errorrh    s:   ø€ ð;ð ;ð ;ð ;ð ;õ6 „K��‘”ÑÔÐÐÐr9   c                 óx   ‡ ‡‡— ddl mŠ  G d„ d¦  «        Šˆˆˆ fd„}t          j         |¦   «         ¦  «         d S )Nr   ©ÚCodexAdapterc                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )ú8test_codex_adapter_read_history_pages_turns.<locals>.RPCr   c                 ó   — g | _         d S r  ©Úcalls©rù   s    r7   rû   zAtest_codex_adapter_read_history_pages_turns.<locals>.RPC.__init__C  ó   € ØˆDŒJˆJˆJr9   c              “   ó
   K  — d S r  r@   rq  s    r7   Ústartz>test_codex_adapter_read_history_pages_turns.<locals>.RPC.startF  ó
   è è € € € r9   c              “   ó
   K  — d S r  r@   ©rù   Úvalues     r7   Úwritez>test_codex_adapter_read_history_pages_turns.<locals>.RPC.writeG  ru  r9   c              “   ó
   K  — d S r  r@   rq  s    r7   Úclosez>test_codex_adapter_read_history_pages_turns.<locals>.RPC.closeH  ru  r9   c              “   óü   K  — | j                              ||f¦  «         |dk    ri S |                     d¦  «        }|€ t          ddddœgdœdd	d
dœg¦  «        gddœS t          ddddœgdœdd	ddœg¦  «        gd dœS )NÚ
initializerÛ   rI   rH   zsecond questionrF   rJ   rM   rR   úsecond answerrP   Úpage2©ÚdataÚ
nextCursorúfirst questionzfirst answer)rp  rC  ÚgetrB   )rù   ÚmethodÚparamsrÛ   s       r7   Úcallz=test_codex_adapter_read_history_pages_turns.<locals>.RPC.callJ  sç   è è € ØŒJ×Ò˜v vÐ.Ñ/Ô/Ð/Ø˜Ò%Ð%Ø�	Ø—Z’Z Ñ)Ô)ˆFØˆ~Ý!%Ø*ÀÐQbÐ8cÐ8cÐ7dÐeÐeØ+°nÈoÐ^Ð^ð'ñ "ô "ð !ð $+ð,ð ,ð ,õ "Ø&¸VÐM]Ð4^Ð4^Ð3_Ð`Ð`Ø'°.È.ÐYÐYð#ñ ô ð ð  $ð%ð %ð %r9   N)	r  r  r  r±   rû   rt  ry  r{  r‡  r@   r9   r7   ÚRPCrm  @  sT   € € € € € Øˆ
ð	ð 	ð 	ð 	$Ð#Ð#Ø*Ð*Ð*Ø#Ð#Ð#ð	%ð 	%ð 	%ð 	%ð 	%r9   rˆ  c            	   “   ó2  •K  — t          ‰
dz  ¦  «        } |                      t          ddt          ‰
¦  «        ¬¦  «        ¦  «          ‰|  ‰	¦   «         ¦  «        }|                     dd¬¦  «        ƒ d {V —†}d„ |D ¦   «         }g d	¢}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Nr  rþ   ÚPr  r	  r  ©r  c                 ó   — g | ]
}|d          ‘ŒS rV   r@   r§   s     r7   r[   zLtest_codex_adapter_read_history_pages_turns.<locals>.run.<locals>.<listcomp>_  ó   € Ð)Ð)Ð)˜a��&”	Ð)Ð)Ð)r9   )r^   r]   r^   r]   r   r_   r`   ra   r   r   rH   r~  éÿÿÿÿrƒ  ©
rî   r&  rë   rö   rø   r#   r$   r(   r)   r*   )r)  Úadapterr?   rm   r,   r4   rn   r6   rk  rˆ  r'  s           €€€r7   rJ  z8test_codex_adapter_read_history_pages_turns.<locals>.runY  s¡  øè è € Ý" 8¨oÑ#=Ñ>Ô>ˆØ�Š•W ¨#µC¸±M´MÐBÑBÔBÑCÔCÐCØ�,˜x¨¨©¬Ñ/Ô/ˆØ×*Ò*¨4¸bÐ*ÑAÔAÐAÐAÐAÐAÐAÐAˆà)Ð) 5Ð)Ñ)Ô)ÐWÐ-WÐ-WÐ-WÐWÐ)Ð-WÒWÐWÐWÐWÕWÔWÐWÐWÐWÐWÐ)Ð-WÐWÑWÔWÕWÔWÐ)ÑWÔWÕWÔWÐ-WÑWÔWÐWÐWÑWÐWÐWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWÐWÐWØ�QŒx˜ÔÐ2 ?Ð2Ð ?Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð ?Ð2Ñ2Ô2Õ2Ô2ÐÑ2Ô2Õ2Ô2 ?Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø�RŒy˜Ô Ð4Ð$4Ð4Ð Ð$4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð Ð$4Ð4Ñ4Ô4Õ4Ô4Ð Ñ4Ô4Õ4Ô4Ð$4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r9   ©Údevice_gateway.control.codexrk  r3  rJ  ©r'  rJ  rk  rˆ  s   ` @@r7   Ú+test_codex_adapter_read_history_pages_turnsr”  =  s€   øøø€ Ø9Ð9Ð9Ð9Ð9Ð9ð%ð %ð %ð %ð %ñ %ô %ð %ð25ð 5ð 5ð 5ð 5ð 5ð 5õ „K��‘”ÑÔÐÐÐr9   c                 óŒ   ‡ ‡‡‡— ddl mŠ ddlmŠ  G ˆ fd„d¦  «        Šˆˆˆˆ fd„}t	          j         |¦   «         ¦  «         d S )Nr   ©Ú	PiAdapter©ÚPiSessionRegistryc                   ó    •— e Zd Zd„ Zˆ fd„ZdS )úHtest_pi_adapter_read_history_normalizes_and_does_not_resume.<locals>.RPCc                 ó   — g | _         d S r  ro  rq  s    r7   rû   zQtest_pi_adapter_read_history_normalizes_and_does_not_resume.<locals>.RPC.__init__k  rr  r9   c              “   ó"  •K  — | j                              ||f¦  «         |dk    r&t          ddt          ‰¦  «        dddddd¬¦	  «	        gS |d	k    �r/|d
         }t          ‰¦  «        }||k    }|sòt	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        t          ¦  «        rt	          j        t          ¦  «        nddt          j        ¦   «         v st	          j	        ‰¦  «        rt	          j        ‰¦  «        ndt	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}ddddœddddœgdœddddœgdœgiS t          |¦  «        ‚)NÚlistr	  ÚNr   FÚDORMANTr   ©	r  rx   r  r  ÚliveÚstateÚrecent_textÚ
final_textÚlatest_activityrú   r  r   )z0%(py1)s == %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}rö   r'  )r   r!   r   r   r"   r   r¡   r]   Úqr™   r�   rH   ztool outputrF   r^   Úa)rp  rC  rB  rö   r#   r$   r(   r%   r&   r'   r)   r*   )	rù   r…  r†  rm   r.   r4   r6   r2   r'  s	           €r7   r‡  zMtest_pi_adapter_read_history_normalizes_and_does_not_resume.<locals>.RPC.calln  sï  øè è € ØŒJ×Ò˜v vÐ.Ñ/Ô/Ð/Ø˜ÒÐÝ¨°3½CÀ¹M¼MØ(>ÀUÐR[Ø)+¸ÈBðPñ Pô Pð Qð Qð ˜Ò"Ñ"Ø˜e”}Ð5­¨H©¬Ð5�}¨Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5�}¨Ð5Ñ5Ô5Õ5Ô5�}Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5­Ñ5Ô5Ð5Õ5Ô5­Ñ5Ô5Ð5Ð5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¨HÑ5Ô5Ð5Õ5Ô5¨HÑ5Ô5Ð5Ð5Õ5Ô5¨Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø"Ø#°Ð4Ð4Ø)ÀÐP]Ð7^Ð7^Ð6_Ð`Ð`Ø(¸vÈsÐ6SÐ6SÐ5TÐUÐUð%ð ð õ
 ! Ñ(Ô(Ð(r9   N)r  r  r  rû   r‡  ©r'  s   €r7   rˆ  r›  j  s=   ø€ € € € € ð	ð 	ð 	ð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)r9   rˆ  c            	   “   óº  •K  —  ‰¦   «         } t          ‰dz  ¦  «        }|                     t          ddt          ‰¦  «        ¬¦  «        ¦  «          ‰
| ‰¦   «         | ¦  «        }|                     d¦  «        ƒ d {V —†}d„ |D ¦   «         }ddg}||k    }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|d         d         }d}||k    }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d„ | j
        D ¦   «         }	t          |	¦  «        }|s•ddt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚d x}	}d S )Nr  rþ   rŠ  r  r	  c                 ó   — g | ]
}|d          ‘ŒS rV   r@   r§   s     r7   r[   z\test_pi_adapter_read_history_normalizes_and_does_not_resume.<locals>.run.<locals>.<listcomp>…  r�  r9   r^   r]   r   r_   r`   ra   r   r   rH   r¨  r   r§  c              3   ó$   K  — | ]\  }}|d v V — ŒdS ))rž  rú   Nr@   )rY   r…  rÜ   s      r7   rÏ   z[test_pi_adapter_read_history_normalizes_and_does_not_resume.<locals>.run.<locals>.<genexpr>‰  s,   è è € ÐLÐL±Y°V¸Q�6Ð0Ð0ÐLÐLÐLÐLÐLÐLr9   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úall)r   r   r   )rî   r&  rë   rö   rø   r#   r$   r(   r)   r*   rp  r­  r%   r&   r'   )Úrpcr)  r�  r?   rm   r,   r4   rn   r6   r+   r—  r™  rˆ  r'  s             €€€€r7   rJ  zHtest_pi_adapter_read_history_normalizes_and_does_not_resume.<locals>.run}  sa  øè è € Øˆc‰eŒeˆÝ" 8¨oÑ#=Ñ>Ô>ˆØ�Š•W ¨#µC¸±M´MÐBÑBÔBÑCÔCÐCØ�)˜HÐ&7Ð&7Ñ&9Ô&9¸3Ñ?Ô?ˆØ×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆð *Ð) 5Ð)Ñ)Ô)ÐB¨k¸6Ð-BÐBÐ)Ð-BÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ)Ð-BÐBÑBÔBÕBÔBÐ)ÑBÔBÕBÔBÐ-BÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBØ�QŒx˜ÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø�QŒx˜ÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&àLÐLÀ#Ä)ÐLÑLÔLÐL�sÐLÑLÔLÐLÐLÐLÐLÐLÕLÔLÑLÔLÐLÐLÕLÔL�sÑLÔLÐLÕLÔL�sÑLÔLÐLÐLÕLÔLÐLÑLÔLÕLÔLÐLÑLÔLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLr9   ©Údevice_gateway.control.pir—  Údevice_gateway.integrations.pir™  r3  rJ  ©r'  rJ  r—  r™  rˆ  s   ` @@@r7   Ú;test_pi_adapter_read_history_normalizes_and_does_not_resumer³  f  sª   øøøø€ Ø3Ð3Ð3Ð3Ð3Ð3Ø@Ð@Ð@Ð@Ð@Ð@ð)ð )ð )ð )ð )ð )ð )ñ )ô )ð )ð&Mð Mð Mð Mð Mð Mð Mð Mõ „K��‘”ÑÔÐÐÐr9   c                 óŒ   ‡ ‡‡‡— ddl mŠ ddlmŠ  G ˆ fd„d¦  «        Šˆˆˆˆ fd„}t	          j         |¦   «         ¦  «         dS )z=The Pi SDK tail is oldest-first; the adapter must reverse it.r   r–  r˜  c                   ó   •— e Zd Zˆ fd„ZdS )ú4test_pi_adapter_history_is_newest_first.<locals>.RPCc              “   ó²   •K  — |dk    r&t          ddt          ‰¦  «        dddddd¬¦	  «	        gS |d	k    rd
dddœddddœgdœdddœgiS t          |¦  «        ‚)Nrž  r	  rŸ  r   Fr   r   r¡  rú   r¡   r]   rµ   r™   r^   rH   ÚmiddlerF   Únewest)rB  rö   r)   )rù   r…  r†  r'  s      €r7   r‡  z9test_pi_adapter_history_is_newest_first.<locals>.RPC.call”  s©   øè è € Ø˜ÒÐÝ¨°3½CÀ¹M¼MØ(>ÀUÐR[Ø)+¸ÈBðPñ Pô Pð Qð Qð ˜Ò"Ð"Ø"Ø#°Ð9Ð9Ø(¸vÈxÐ6XÐ6XÐ5YÐZÐZØ#°Ð9Ð9ð%ð ð õ
 ! Ñ(Ô(Ð(r9   N)r  r  r  r‡  r©  s   €r7   rˆ  r¶  “  s.   ø€ € € € € ð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)r9   rˆ  c            	   “   ó  •K  — t          ‰dz  ¦  «        } |                      t          ddt          ‰¦  «        ¬¦  «        ¦  «          ‰|  ‰	¦   «          ‰
¦   «         ¦  «        }|                     d¦  «        ƒ d {V —†}d„ |D ¦   «         }g d¢}||k    }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Nr  rþ   rŠ  r  r	  c                 ó   — g | ]
}|d          ‘ŒS rÑ   r@   r§   s     r7   r[   zHtest_pi_adapter_history_is_newest_first.<locals>.run.<locals>.<listcomp>¦  r�  r9   )r¹  r¸  rµ   r   r_   r`   ra   r   r�  )r)  r�  r?   rm   r,   r4   rn   r6   r—  r™  rˆ  r'  s           €€€€r7   rJ  z4test_pi_adapter_history_is_newest_first.<locals>.run¡  sJ  øè è € Ý" 8¨oÑ#=Ñ>Ô>ˆØ�Š•W ¨#µC¸±M´MÐBÑBÔBÑCÔCÐCØ�)˜HÐ&7Ð&7Ñ&9Ô&9¸3¸3¹5¼5ÑAÔAˆØ×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆØ)Ð) 5Ð)Ñ)Ô)ÐKÐ-KÐ-KÐ-KÐKÐ)Ð-KÒKÐKÐKÐKÕKÔKÐKÐKÐKÐKÐ)Ð-KÐKÑKÔKÕKÔKÐ)ÑKÔKÕKÔKÐ-KÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKÐKr9   Nr¯  r²  s   ` @@@r7   Ú'test_pi_adapter_history_is_newest_firstr¼  Ž  sª   øøøø€ à3Ð3Ð3Ð3Ð3Ð3Ø@Ð@Ð@Ð@Ð@Ð@ð)ð )ð )ð )ð )ð )ð )ñ )ô )ð )ðLð Lð Lð Lð Lð Lð Lð Lõ „K��‘”ÑÔÐÐÐr9   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú_HistoryRPCzDMinimal Pi SDK host stand-in returning one oldest-first native tail.c                 ó   — || _         d S r  )r¡   )rù   r¡   s     r7   rû   z_HistoryRPC.__init__°  s   € Ø ˆŒˆˆr9   c              ƒ   óŠ   K  — |dk    rt          dd| j        dddddd¬¦	  «	        gS |d	k    r	d
| j        iS t          |¦  «        ‚)Nrž  r	  rŸ  r   Fr   r   r¡  rú   r¡   )rB  r  r¡   r)   ©rù   r…  r†  s      r7   r‡  z_HistoryRPC.call³  sp   è è € Ø�VÒÐÝ D¨s¸¼ÐMcØ#¨9À"ÐQSÐegðiñ iô ið jð jà�YÒÐØ ¤Ð.Ð.Ý˜VÑ$Ô$Ð$r9   N)r  r  r  Ú__doc__rû   r‡  r@   r9   r7   r¾  r¾  ­  s8   € € € € € ØNÐNð!ð !ð !ð%ð %ð %ð %ð %r9   r¾  c                 ó¨   ‡ ‡‡‡‡— ddl mŠ ddlmŠ dŠd„ t	          ‰¦  «        D ¦   «         Šˆˆˆˆˆ fd„}t          j         |¦   «         ¦  «         dS )zßnative adapter -> normalized history -> pagination, end to end.

    The first page must be the newest message, and Older pages must walk strictly
    backwards in time until the oldest message is reached exactly once.
    r   r–  r˜  rË   c                 ó4   — g | ]}|d z  dk    rdndd|› �dœ‘ŒS )r¥   r   r]   r^   rZ   r™   r@   r§   s     r7   r[   z9test_adapter_to_pagination_full_chain.<locals>.<listcomp>Æ  sF   € ð %ð %ð %Øð "# Q¡¨!¢ �v�v°ÈÈQÈÈÐQÐQð %ð %ð %r9   c            	   “   ó  •K  — t          ‰¦  «        } t          ‰¦  «        | _        t          ‰dz  ¦  «        }|                     t          ddt          ‰¦  «        ¬¦  «        ¦  «          ‰| ‰¦   «         | ¦  «        }|                     dd¬¦  «        ƒ d {V —†}|d         d	         }d
‰dz
  › �}||k    }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         d	         }d}||k    }|slt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}g d d}}
}	t          d¦  «        D ]Q}t          ||
dd¬¦  «        }|	                     d„ |d         D ¦   «         ¦  «         |dz  }|d         r n	|d         }
ŒRd„ t          t          ‰¦  «        ¦  «        D ¦   «         }|	|k    }|s—t          j        d|fd|	|f¦  «        dt!          j        ¦   «         v st          j        |	¦  «        rt          j	        |	¦  «        ndt          j	        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}d }||k    }|s—t          j        d|fd||f¦  «        d!t!          j        ¦   «         v st          j        |¦  «        rt          j	        |¦  «        nd!t          j	        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}d S )"Nr  rþ   rŠ  r  r	  r  r‹  r   rH   rZ   r   r   r_   r`   ra   r   rŽ  Úm0r¬   r­   r¯   c              3   ó&   K  — | ]}|d          V — ŒdS rÎ   r@   rX   s     r7   rÏ   zEtest_adapter_to_pagination_full_chain.<locals>.run.<locals>.<genexpr>Ö  s&   è è € Ð<Ð< a˜˜&œ	Ð<Ð<Ð<Ð<Ð<Ð<r9   r¡   rµ   r´   c                 ó   — g | ]}d |› �‘ŒS )rZ   r@   r§   s     r7   r[   zFtest_adapter_to_pagination_full_chain.<locals>.run.<locals>.<listcomp>Ü  s   € Ð@Ð@Ð@ A˜˜A˜˜Ð@Ð@Ð@r9   rÒ   rÓ   rÔ   rÕ   r|   r®   Úpages)r¾  rö   r  rî   r&  rë   rø   r#   r$   r(   r)   r*   r©   r   r×   Úreversedr%   r&   r'   )r®  r)  r�  rl   rm   r,   r4   rn   r6   rÓ   rÛ   rÉ  rÜ   rÆ   r+   rÝ   rÞ   r—  r™  rª   Únativer'  s                    €€€€€r7   rJ  z2test_adapter_to_pagination_full_chain.<locals>.runÉ  s1  øè è € Ý˜&Ñ!Ô!ˆÝ�h‘-”-ˆŒÝ" 8¨oÑ#=Ñ>Ô>ˆØ�Š•W ¨#µC¸±M´MÐBÑBÔBÑCÔCÐCØ�)˜HÐ&7Ð&7Ñ&9Ô&9¸3Ñ?Ô?ˆØ"×/Ò/°À2Ð/ÑFÔFÐFÐFÐFÐFÐFÐFˆ
Ø˜!Œ}˜VÔ$Ð7¨¨E°A©I¨¨Ð7Ð$¨Ò7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð$¨Ð7Ñ7Ô7Õ7Ô7Ð$Ñ7Ô7Õ7Ô7¨Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø˜"Œ~˜fÔ%Ð-¨Ð-Ð%¨Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð%¨Ð-Ñ-Ô-Õ-Ô-Ð%Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-à  $¨�eˆfˆÝ�r‘”ð 	)ð 	)ˆAÝ˜j¨&¸ÈÐKÑKÔKˆDØ�KŠKÐ<Ð<¨4°
Ô+;Ð<Ñ<Ô<Ñ<Ô<Ð<Ø�Q‰JˆEØ�HŒ~ð Ø�Ø˜-Ô(ˆFˆFà@Ð@­µ%¸±,´,Ñ)?Ô)?Ð@Ñ@Ô@Ð@ˆtÐ@Ò@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@ˆtÐ@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆtÑ@Ô@Ð@Õ@Ô@ˆtÑ@Ô@Ð@Ð@Õ@Ô@Ð@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@ØÐˆu˜ŠzÐÐÐÕÔÐÐÐÐˆu˜ÐÑÔÐÕÔÑÔÐÐÕÔˆuÑÔÐÕÔˆuÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr9   N)r°  r—  r±  r™  r©   r3  rJ  )r'  rJ  r—  r™  rª   rË  s   ` @@@@r7   Ú%test_adapter_to_pagination_full_chainrÌ  ¼  s¡   øøøøø€ ð 4Ð3Ð3Ð3Ð3Ð3Ø@Ð@Ð@Ð@Ð@Ð@à€Eð%ð %Ý˜U‘|”|ð%ñ %ô %€Fðð ð ð ð ð ð ð ð õ, „K��‘”ÑÔÐÐÐr9   c                 óx   ‡ ‡‡— ddl mŠ  G d„ d¦  «        Šˆˆˆ fd„}t          j         |¦   «         ¦  «         dS )z@Codex content[] -> normalized history -> pagination, end to end.r   rj  c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ú8test_codex_adapter_to_pagination_full_chain.<locals>.RPCr   c              “   ó
   K  — d S r  r@   rq  s    r7   rt  z>test_codex_adapter_to_pagination_full_chain.<locals>.RPC.starté  ru  r9   c              “   ó
   K  — d S r  r@   rw  s     r7   ry  z>test_codex_adapter_to_pagination_full_chain.<locals>.RPC.writeê  ru  r9   c              “   ó
   K  — d S r  r@   rq  s    r7   r{  z>test_codex_adapter_to_pagination_full_chain.<locals>.RPC.closeë  ru  r9   c              “   óÀ   K  — |dk    ri S |                      d¦  «        € t          ddddœgdœdd	d
dœg¦  «        gddœS t          ddddœgdœdd	ddœg¦  «        gd dœS )Nr}  rÛ   rI   rH   únewest qrF   rJ   rM   rR   únewest arP   Úp2r€  úolder qúolder a)r„  rB   rÁ  s      r7   r‡  z=test_codex_adapter_to_pagination_full_chain.<locals>.RPC.callí  sÇ   è è € Ø˜Ò%Ð%Ø�	à�zŠz˜(Ñ#Ô#Ð+Ý!%Ø*ÀÐQ[Ð8\Ð8\Ð7]Ð^Ð^Ø+°nÈjÐYÐYð'ñ "ô "ð !ð $(ð)ð )ð )õ "Ø&¸VÈYÐ4WÐ4WÐ3XÐYÐYØ'°.È)ÐTÐTð#ñ ô ð ð  $ð%ð %ð %r9   N)r  r  r  r±   rt  ry  r{  r‡  r@   r9   r7   rˆ  rÏ  æ  sC   € € € € € Øˆ
à#Ð#Ð#Ø*Ð*Ð*Ø#Ð#Ð#ð	%ð 	%ð 	%ð 	%ð 	%r9   rˆ  c            	   “   óÚ  •K  — t          ‰dz  ¦  «        } |                      t          ddt          ‰¦  «        ¬¦  «        ¦  «          ‰|  ‰¦   «         ¦  «        }|                     dd¬¦  «        ƒ d {V —†}d„ |D ¦   «         }g d	¢}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}t          |d dd¬¦  «        }d„ |d         D ¦   «         }g d	¢}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}g }	|d         }|}|r|d         }
|
 }|}|sžddt          j        |¦  «        iz  }|	                     |¦  «         |r.ddt          j        |
¦  «        iz  }|	                     |¦  «         t          j        |	d¦  «        i z  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}	x}x}
}d S )Nr  rþ   rŠ  r  r	  r  r‹  c                 ó   — g | ]
}|d          ‘ŒS rÑ   r@   rX   s     r7   r[   zLtest_codex_adapter_to_pagination_full_chain.<locals>.run.<locals>.<listcomp>  s   € Ð.Ð.Ð.˜a��&”	Ð.Ð.Ð.r9   )rÕ  rÔ  rØ  r×  r   r_   r`   ra   r   rÌ   r   r¯   c                 ó   — g | ]
}|d          ‘ŒS rÑ   r@   rX   s     r7   r[   zLtest_codex_adapter_to_pagination_full_chain.<locals>.run.<locals>.<listcomp>  s   € Ð4Ð4Ð4˜a��&”	Ð4Ð4Ð4r9   r¡   rµ   r´   z%(py3)sr!   znot %(py6)sr   r   r   )rî   r&  rë   rö   rø   r#   r$   r(   r)   r*   r   rC  rD  )r)  r�  rl   rm   r,   r4   rn   r6   rÆ   r+   r.   r1   rÝ   r/   r2   r3   rk  rˆ  r'  s                   €€€r7   rJ  z8test_codex_adapter_to_pagination_full_chain.<locals>.runû  s"  øè è € Ý" 8¨oÑ#=Ñ>Ô>ˆØ�Š•W ¨#µC¸±M´MÐBÑBÔBÑCÔCÐCØ�,˜x¨¨©¬Ñ/Ô/ˆØ"×/Ò/°À2Ð/ÑFÔFÐFÐFÐFÐFÐFÐFˆ
à.Ð. :Ð.Ñ.Ô.Ð`Ð2`Ð2`Ð2`Ð`Ð.Ð2`Ò`Ð`Ð`Ð`Õ`Ô`Ð`Ð`Ð`Ð`Ð.Ð2`Ð`Ñ`Ô`Õ`Ô`Ð.Ñ`Ô`Õ`Ô`Ð2`Ñ`Ô`Ð`Ð`Ñ`Ð`Ð`Ð`Ð`Ð`Ñ`Ð`Õ`Õ`Ô`Ð`Ñ`Ô`Ñ`Ô`Ð`Ð`Ð`Ð`Ð`Ð`Ð`Ý˜* d°'ÀaÐHÑHÔHˆØ4Ð4 4¨
Ô#3Ð4Ñ4Ô4ÐfÐ8fÐ8fÐ8fÐfÐ4Ð8fÒfÐfÐfÐfÕfÔfÐfÐfÐfÐfÐ4Ð8fÐfÑfÔfÕfÔfÐ4ÑfÔfÕfÔfÐ8fÑfÔfÐfÐfÑfÐfÐfÐfÐfÐfÑfÐfÕfÕfÔfÐfÑfÔfÑfÔfÐfÐfÐfÐfÐfÐfÐfØ9Ð9ˆt�HŒ~Ð9ˆ~Ð9ˆ~Ð9 d¨=Ô&9Ð9Ð&9Ð"9Ð9Ð"9Ð9Ð9Ð9Ð9Ð9Õ9Ô9ˆ~Ñ9Ô9Ð9Ñ9Ð9Ð9×9Ò9Ð9Ñ9Ô9Ð9ˆ~Ð9Ð9Ð9Õ9Ô9Ð&9Ñ9Ô9Ð9Ñ9Ð9Ð9×9Ò9Ð9Ñ9Ô9Ð9Õ9Ô9Ð9Ð9Ñ9Ô9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r9   Nr‘  r“  s   ` @@r7   Ú+test_codex_adapter_to_pagination_full_chainrÜ  â  s€   øøø€ à9Ð9Ð9Ð9Ð9Ð9ð%ð %ð %ð %ð %ñ %ô %ð %ð*	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:õ „K��‘”ÑÔÐÐÐr9   )r:   r;   r  )r-  )<rÂ  Úbuiltinsr%   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter#   r3  rj   rÙ   Údevice_gateway.control.historyr   r   r   r   r   r   r	   r
   r8   rB   rp   rƒ   r‹   r•   r¢   r¡   rÉ   rß   rä   rè   Útypesré   rØ   rê   rÖ   rë   Ú device_gateway.control.navigatorrì   Ú!device_gateway.control.operationsrí   Údevice_gateway.control.projectsrî   Ú!device_gateway.control.user_inputrï   Údevice_gateway.staterð   rò   r,  r6  rM  rP  rV  rh  r”  r³  r¼  r¾  rÌ  rÜ  r@   r9   r7   ú<module>rè     s  ðØ PÐ PØ  € € € € € € € € € € € € €€€€Ø €€€à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð*ð *ð *ðGð Gð Gð Gð%ð %ð %ð&0ð 0ð 0ð2Eð Eð Eð Hð Hð Hð%ð %ð %ð&#ð #ð #ð
	:ð 	:ð 	:ðOð Oð Oð"ð ð ð	 ð 	 ð 	 ð "Ð !Ð !Ð !Ð !Ð !à MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð-ð -ð -ð -ð -ñ -ô -ð -ð,%ð %ð %ð %ðWð Wð Wð Wðð ð ð4	ð 	ð 	ðð ð ð&ð ð ðB&ð &ð &ðR%ð %ð %ðPð ð ð>%ð %ð %ð %ð %ñ %ô %ð %ð#ð #ð #ðL$ð $ð $ð $ð $r9   