ó
    1¼„j\­  ã                  ó  • S r SSKJr  SSKrSSKJs  Jr  SSK	r	SSK
r
SSKrSSKJr  SSKJrJrJrJrJrJr  SSKrSSKJrJrJr  SSKJrJrJrJrJr  SSK J!r!  SS	K"J#r#J$r$J%r%  SS
K&J'r'  SSK(J)r)  SSK*J+r+J,r,J-r-J.r.  SSK/J0r0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7  Su  r8r9\\:\:\:\:4   r;Sr<SUS jr=   SV           SWS jjr>SXSYS jjr?   SZ         S[S jjr@   S\         S]S jjrAS^S jrBS_S jrCS`S jrDSaS jrES rFS rGS rHS rIS  rJS! rKS" rLS# rMS$ rNS% rO    SbS& jrPS' rQS( rRScS) jrSS* rTS+ rUS, rVS- rWS. rXS/ rYS0 rZS1 r[S2 r\S3 r]S4 r^S5 r_S6 r`S7 raSdS8 jrbS9 rcS: rdS; reS< rfS= rgS> rhS? riS@ rjSA rkSB rlSeSC jrmSD rnSE roSF rpSeSG jrqSfSH jrrSI rsSJ rtSK ruSL rvSM rw\" \x5      Ró                  5       Rô                  SN   SO-  SP-  SQ-  r{\Rø                  Rû                  \{Rý                  5       (       + SRSS9ST 5       rg)gu‰  Tests for the dpt-3 track: digestion, the corrected graft, footnote resolution.

The responses are synthetic but carry the shape a live dpt-3 scan returns â€” one
long markdown string and a structure tree whose nodes point at stretches of it
by codepoint range, boxes keyed xmin/ymin/xmax/ymax, metadata reporting
model_version and billing.total_credits. The builders assemble the string and
the ranges together so the two can never disagree.

The dpt-2 path's tests live in `test_figures.py` and are untouched â€” that is
the frozen-path guarantee. A final test digests real saved responses from live
runs when the local data directory holds them.
é    )ÚannotationsN)ÚPath)ÚAnyÚDictÚListÚOptionalÚSequenceÚTuple)ÚBoundingBoxÚCoordOriginÚSize)ÚDoclingDocumentÚPictureClassificationMetaFieldÚPictureClassificationPredictionÚPictureMetaÚProvenanceItem)ÚDocItemLabel)ÚMarkerÚMockFigureCorrectorÚNote)Údpt3)Úcorrect_figures)ÚUnrecognizedResponseÚdigest_pageÚfigure_textÚproject_scan)ÚFOOTNOTE_MARKS_FIELDÚFOOTNOTES_FIELD)ÚPageScan)Ú_page_response)Ú	page_scan)g     €†@g     à€@zdpt-3-pro-latestc                ó   • U u  pp4XX4S.$ )N©ÚxminÚyminÚxmaxÚymax© ©ÚboxÚx1Úy1Úx2Úy2s        Ú6/home/mande/repo/quber/tests/core/test_figures_dpt3.pyÚ_v2_boxr0   3   s   € Ø�N€BˆBØ¨BÑ;Ð;ó    c                ót   • SnU(       a  SSR                  S U 5       5      -   S-   nSU  SU SU S3nS	XFUS
.$ )NÚ z<table>c              3  ó^   #   • U  H#  nS SR                  S U 5       5      -   S-   v •  M%     g7f)ú<tr>r3   c              3  ó.   #   • U  H  nS U S3v •  M     g7f)ú<td>ú</td>Nr(   )Ú.0Úcells     r/   Ú	<genexpr>Ú'_v2_figure.<locals>.<genexpr>.<genexpr>C   s   é € Ð&JÂc¸d¨¨d¨V°5Õ'9Âcùs   ‚z</tr>N©Újoin)r9   Úrows     r/   r;   Ú_v2_figure.<locals>.<genexpr>C   s,   é € ÐeÒ`dÐY\�f˜rŸw™wÑ&JÁcÓ&JÓJÑJÈWÖTÒ`dùs   ‚+-ú</table>z<figure type="z">

<description>z</description>z	</figure>Úfigure©ÚtypeÚidÚcontentr*   r=   )ÚkindÚdescriptionÚrowsr*   Únode_idÚtablerF   s          r/   Ú
_v2_figurerL   8   sb   € ð €EÞàØ�g‰gÑeÑ`dÓeÓeñfàñð 	ð
 ˜t˜fÐ$7¸°}ÀNÐSXÐRYÐYbÐc€GØ GÈÑLÐLr1   c                ó   • XXS.$ )NrC   r(   )rG   Útextr*   rJ   s       r/   Ú_v2_textrO   J   s   € Ø°DÑEÐEr1   c                ó    • SX X=(       d    0 S.$ )zIA table node spec: rows of (cell text, cell box), spans keyed (row, col).rK   )rD   rE   rI   r*   Úspansr(   )rI   r*   rJ   rQ   s       r/   Ú	_v2_tablerR   N   s   € ð  7ÀÏ{ÐXZÑ[Ð[r1   c                ó$  • Sn/ nU  GHW  nU(       a  US-  n[        U5      nUS   S:X  aô  / nUS-  n[        US   5       Hž  u  pšUS-  n[        U
5       H€  u  nu  pÍUS-  n[        U5      nXL-  nUS	   R                  X›4S
5      u  nnUR                  SUS    SU	 SU 3U	UUUSU[        U5      S.U(       a  [	        U5      OSS.S.5        US-  nM‚     US-  nM      US-  nUR                  SUS   SU[        U5      S.[	        US   5      S.US.5        GM  XFS   -  nUR                  US   US   SU[        U5      S.[	        US   5      S./ S.5        GMZ     USSUUSS[        U5      S.SSSSS.S.US ./S!.SS"S#SS$US%./ S&.S'.$ )(zDAssemble the markdown string and the tree together, ranges computed.r3   z

rD   rK   z<table>
rI   r5   r7   rQ   )é   rT   Ú
table_cellrE   z-cell-Ú-rT   )ÚstartÚendN)ÚpageÚranger*   )rD   rE   r?   ÚcolÚrowspanÚcolspanÚ	groundingr8   z</tr>
rA   r*   )rD   rE   r^   ÚchildrenrF   ÚdocumentrY   r   g        ç      ð?r#   )rD   ÚstatusÚreasonr^   r_   )rD   r_   zparse-01syntheticúdpt-3-pro-20260710Ústandard)Úservice_tierÚtotal_credits)Újob_idÚmodel_versionÚ
page_countÚbillingÚfailed_pages)ÚmarkdownÚ	structurer^   Úmetadata)ÚlenÚ	enumerateÚgetÚappendr0   )ÚnodesÚcreditsÚpage_statusÚpage_reasonrm   r_   ÚspecrW   Ú
cell_nodesÚrr?   ÚcrN   ÚcboxÚ
cell_startr\   r]   s                    r/   Ú_v2_responser~   X   s4  € ð €HØ%'€HÜˆÞØ˜ÑˆHÜ�H“ˆØ�‰<˜7Ó"Ø/1ˆJØ˜Ñ#ˆHÜ# D¨¡LÖ1‘�Ø˜FÑ"�Ü'0°¦~‘O�A‘|˜Ø Ñ&�HÜ!$ X£�JØÑ$�HØ'+¨G¡}×'8Ñ'8¸!¸ÀÓ'HÑ$�G˜WØ×%Ñ%à$0Ø%)¨$¡Z L°°q°c¸¸1¸#Ð">Ø#$Ø#$Ø'.Ø'.à()Ø3=ÄcÈ(ÃmÑ)TÞ8<¤w¨t¤}À$ñ*ñôð  Ñ'’Hñ) (6ð* ˜IÑ%’ñ/ 2ð0 ˜
Ñ"ˆHØ�O‰Oà#Ø˜t™*à !Ø+0¼¸X»Ñ!GÜ& t¨E¡{Ó3ñ"ð
 !+ñ	÷ð ˜Y™Ñ'ˆHØ�O‰Oà  ™LØ˜t™*à !Ø+0¼¸X»Ñ!GÜ& t¨E¡{Ó3ñ"ð
 !#ñ	÷ñ] ðv àð #Ø)Ø)à !Ø+,´S¸³]Ñ!CØ(+°SÀ#ÈsÑSñ"ð
 !)ñ
ðñ
ð  à)Ø1ØØ(2ÀWÑMØñ
ñ'ð r1   c                ó†   • U u  pp4[        U[        -  U[        -  SU-
  [        -  SU-
  [        -  [        R                  S9$ )Nra   )Úlrz   ÚtÚbÚcoord_origin)r   ÚPAGE_WÚPAGE_Hr   Ú
BOTTOMLEFTr)   s        r/   Ú_bottomleftr‡   »   sG   € Ø�N€BˆBÜØ
Œv‰+Ø
Œv‰+Ø�‰8”vÑ
Ø�‰8”vÑ
Ü ×+Ñ+ñð r1   c           
     ó`  • [        SS9n[        U  VVVs1 s H  u  p#oBiM	     snnn5       H#  nUR                  U[        [        [
        S9S9  M%     U  HN  u  pVnUR                  [        U[        U5      SS9S9nU(       d  M0  [        [        [        USS	9/S
9S9Ul        MP     U$ s  snnnf )NÚ	synthetic)Úname©ÚwidthÚheight©Úpage_noÚsize©r   r   ©r�   ÚbboxÚcharspan)Úprovgö(\�Âõà?)Ú
class_nameÚ
confidence)Úpredictions)Úclassification)r   ÚsortedÚadd_pager   r„   r…   Úadd_picturer   r‡   r   r   r   Úmeta)	ÚpicturesÚdocÚpÚ_boxÚ_clsrY   r*   ÚclsÚpictures	            r/   Ú	_documentr¥   Æ   s¦   € Ü
˜{Ñ
+€CÜ©xÕ8ªx™m˜a tš©xÓ8Ö9ˆØ�‰˜T¬´6Ä&Ñ(IˆÓJñ :ã"‰ˆ�3Ø—/‘/¤~¸dÌÐUXÓIYÐdjÑ'k�/Ðlˆßˆ3Ü&Ü=Ü!@ÈCÐ\`Ñ!aÐ bñ ñˆGŽLñ #ð €Jùô 9s   •B)c                óB   • [         R                  U [        [        45      $ ©N)ÚdictÚfromkeysr„   r…   ©Úpagess    r/   Ú
_page_dimsr¬   Õ   s   € Ü�=‰=˜¤¬Ð 0Ó1Ð1r1   c                óÖ   • SS K nUR                  5       n[        U5       H  nUR                  [        [
        S9  M     UR                  [        U 5      5        UR                  5         U $ )Nr   r‹   )	ÚfitzÚopenrZ   Únew_pager„   r…   ÚsaveÚstrÚclose)Údestr«   r®   rŸ   Ú_s        r/   Ú
_blank_pdfr¶   Ù   sL   € Ûà
�)‰)‹+€CÜ�5Ž\ˆØ�‰œ6¬&ˆÓ1ñ à‡H�HŒS�‹YÔØ‡I�I„KØ€Kr1   c            	     óò  • [        [        SSSS/SS//SS9/5      n [        U S	[        S
5      nUR                  nS	o2U:H  oD(       dº  [
        R                  " SU4SX#45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=pCUR                  nSo2U:H  oD(       dº  [
        R                  " SU4SX#45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=pCUR                  nSo2U:H  oD(       dº  [
        R                  " SU4SX#45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=pCUR                  S   nUR                   nSo2U:H  oD(       dº  [
        R                  " SU4SX#45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=pCUR"                  nSo2U:H  oD(       dº  [
        R                  " SU4SX#45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=pCUR$                  nSSSSS.o2U:H  oD(       dº  [
        R                  " SU4SX#45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=pCUR&                  S   R(                   VV	s/ s H  oˆ V	s/ s H  o™R*                  PM     sn	PM      n
nn	SS/SS//oJU:H  o»(       do  [
        R                  " SU4S X¤45      [
        R                  " U
5      [
        R                  " U5      S!.-  nS"S#U0-  n[        [
        R                  " U5      5      eS =n
=p´S$ UR&                  S   R(                   5       n[-        U5      oD(       d¢  S%S&[        R                  " 5       ;   d  [
        R                  " [,        5      (       a  [
        R                  " [,        5      OS&[
        R                  " U5      [
        R                  " U5      S'.-  n[        [
        R                  " U5      5      eS =p$g s  sn	f s  sn	nf )(NÚCHARTz(Two pie charts of portfolio composition.zIndustrial: 26%zSunbelt: 25%zMultifamily: 25%zUK: 17%)çš™™™™™©?çš™™™™™É?çffffffî?ç333333ë?©rI   r*   é	   údeck.p9.ade.json©ú==)z,%(py2)s
{%(py2)s = %(py0)s.page
} == %(py5)sÚdigest©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7rd   ©z/%(py2)s
{%(py2)s = %(py0)s.version
} == %(py5)sçš™™™™™é?©z/%(py2)s
{%(py2)s = %(py0)s.credits
} == %(py5)sr   Úchart©z,%(py2)s
{%(py2)s = %(py0)s.kind
} == %(py5)srB   )z3%(py2)s
{%(py2)s = %(py0)s.description
} == %(py5)sr¹   rº   r»   r¼   ©ÚleftÚtopÚrightÚbottom©z+%(py2)s
{%(py2)s = %(py0)s.box
} == %(py5)s©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6c              3  óP   #   • U  H  o  H  o"R                   S :H  v •  M     M     g7f)ÚunclassifiedN)Ú
provenance)r9   r?   r:   s      r/   r;   ÚStest_a_figure_node_digests_into_kind_description_and_value_table.<locals>.<genexpr>   s%   é € ÐbÒ<Q°SÓ^aÐVZ�‰ .Ö0Ñ^aÑ0Ò<Qùs   ‚$&ú,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úall©rÄ   rÅ   r×   )r~   rL   r   ÚMODELrY   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚversionru   ÚfiguresrG   rH   r*   ÚvaluesrI   rN   rß   )ÚresponserÂ   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8rB   r?   r:   Ú@py_assert0Ú@py_assert2Ú@py_format5Ú@py_format7s                 r/   Ú@test_a_figure_node_digests_into_kind_description_and_value_tabler÷   ç   sK  € ÜäØØ:Ø(¨.Ð9Ð<NÐPYÐ;ZÐ[Ø+ñ	ð	
ó	€Hô ˜ 1¤eÐ-?Ó@€Fà�;‰;Ð˜!Ð˜!Ñ×××Òˆ;×××××Õˆ6×××Ñˆ6××Õˆ;××Ó˜!××××××ÓØ�>‰>Ð1Ð1Ð1Ð1Ñ1×1×1×1Ò1ˆ>×1×1×1×1×1Õ1ˆ6×1×1×1Ñ1ˆ6×1×1Õ1ˆ>×1×1Ó1Ð1×1×1×1×1×1×1Ó1Ø�>‰>Ð ˜SÐ ˜SÑ × × × Ò ˆ>× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ ˆ>× × Ó ˜S× × × × × × Ó Ø�^‰^˜AÑ€FØ�;‰;Ð!˜'Ð!˜'Ñ!×!×!×!Ò!ˆ;×!×!×!×!×!Õ!ˆ6×!×!×!Ñ!ˆ6×!×!Õ!ˆ;×!×!Ó!˜'×!×!×!×!×!×!Ó!Ø×ÑÐKÐ!KÐKÐ!KÑK×K×K×KÒKÐ×K×K×K×K×KÕKˆ6×K×K×KÑKˆ6×K×KÕKÐ×K×KÓKÐ!K×K×K×K×K×K×KÓKØ�:‰:ÐR $¨s¸TÈTÑRÐRÐRÑR×R×R×RÒRˆ:×R×R×R×R×RÕRˆ6×R×R×RÑRˆ6×R×RÕRˆ:×R×RÓRÐR×R×R×R×R×R×RÓRØ39·=±=ÀÑ3C×3HÒ3HÔIÒ3H¨C 3Ó'¢3˜4�YŒY¡3Ô'Ñ3Hð ÑIØ	˜NÐ+Ø	˜YÐ'ðNð ð Nñ ÷ ó ïé ôÐI÷ ñ ïé ðÐI÷ ð ïé ðð N÷ ÷ ÷ ñ ïé ÷÷ ñ
 c¸F¿M¹MÈ!Ñ<L×<QÒ<QÓbÐbŒ3ÐbÓbÐbÕb×b×b×b×b×bÑbŒ3×b×b×bÑbŒ3×b×bÕbÐb×b×bÓbÐb×b×b×b×b×bÓbùò (ùÓIs   Õ)	[3Õ2[.Ö[3Û.[3c                 ó  • [        [        SS5      /5      n [        U S[        5      R                  S   nUR
                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS =n=pCUR                  n/ o2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS =n=pC[        U5      nSo‡U:H  o3(       Gd  [        R                  " SU4SXx45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p8g )NÚDIAGRAMz!A process flow with three stages.é   r   ÚdiagramrÀ   rÍ   rB   rÃ   rÇ   rÈ   )z.%(py2)s
{%(py2)s = %(py0)s.values
} == %(py5)s©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   ©rÄ   rÖ   Úpy3rÙ   úassert %(py8)sÚpy8)r~   rL   r   rá   rë   rG   râ   rã   rä   rå   ræ   rç   rè   ré   rì   r   )rí   rB   rî   rï   rð   rñ   rò   rô   Ú@py_assert5rö   Ú@py_format9s              r/   Ú5test_a_description_only_figure_digests_without_valuesr    s¥  € ÜœZ¨	Ð3VÓWÐXÓY€HÜ˜ 2¤uÓ-×5Ñ5°aÑ8€FØ�;‰;Ð#˜)Ð#˜)Ñ#×#×#×#Ò#ˆ;×#×#×#×#×#Õ#ˆ6×#×#×#Ñ#ˆ6×#×#Õ#ˆ;×#×#Ó#˜)×#×#×#×#×#×#Ó#Ø�=‰=Ð˜BÐ˜BÑ×××Òˆ=×××××Õˆ6×××Ñˆ6××Õˆ=××Ó˜B××××××ÓÜ�vÓÐEÐ"EÐEÐ"EÑE×E×E×EÓEÐ×E×E×E×E×EÕEŒ;×E×E×EÑEŒ;×E×E×E×E×EÖE�v×E×E×EÑE�v×E×EÕEÐ×E×EÓEÐ"E×E×E×E×E×E×EÔEr1   c                 ó  • [        [        SS/SS//SS9/5      n [        U S[        5      nUR                  S   nUR
                  nS	S
/SS//oCU:H  oU(       dº  [        R                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTUR                  S   S   nSSSSS.oXU:H  o™(       do  [        R                  " SU	4SX…45      [        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=p•UR                  nSSSSS.oCU:H  oU(       dº  [        R                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTg ) N)ÚHeader)çš™™™™™¹?rº   ç      à?ç      Ð?)ÚValue)r  rº   çÍÌÌÌÌÌì?r  )ÚLoans)r  r  r  ç333333Ó?)ú$1.2B)r  r  r
  r  )r  rº   r
  r  r½   é   r   r  r	  r  r  rÀ   ©z-%(py2)s
{%(py2)s = %(py0)s.cells
} == %(py5)srK   rÃ   rÇ   rÈ   rT   r  r  r
  r  rÎ   rÔ   rÕ   rØ   rÙ   r  rº   rÓ   )r~   rR   r   rá   ÚtablesÚcellsrâ   rã   rä   rå   ræ   rç   rè   ré   Ú
cell_boxesr*   )rí   rÂ   rK   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   s               r/   Ú;test_a_table_node_digests_into_a_dense_grid_with_cell_boxesr    s´  € Üäà6Ð8XÐYØ5Ð7WÐXðð )ñð	
ó
€Hô ˜ 2¤uÓ-€FØ�M‰M˜!Ñ€EØ�;‰;ÐC˜H gÐ.°¸'Ð0BÐCÐCÐCÑC×C×C×CÒCˆ;×C×C×C×C×CÕCˆ5×C×C×CÑCˆ5×C×CÕCˆ;×C×CÓCÐC×C×C×C×C×C×CÓCØ×Ñ˜AÑ˜qÑ!Ð\¨c¸$ÈÐX[Ñ%\Ð\Ð%\Ñ\×\×\×\Ò\Ð!×\×\Ô\Ð!×\×\Ó\Ð%\×\×\×\×\×\×\Ó\Ø�9‰9ÐN ¨S¸3È#ÑNÐNÐNÑN×N×N×NÒNˆ9×N×N×N×N×NÕNˆ5×N×N×NÑNˆ5×N×NÕNˆ9×N×NÓNÐN×N×N×N×N×N×NÔNr1   c                 óR  • [        [        S/SS//SS0S9/5      n [        U S[        5      R                  S   nUR
                  nS	S
/SS//o2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUR                  S   S   nS oGUL oˆ(       do  [        R                  " SU4SXt45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p„g )N)ú
Spans both)r  rº   r
  r  ©ÚaN)r‚   Nr‘   )rT   é   )rI   rQ   rT   r   r  r3   r  r‚   rÀ   r  rK   rÃ   rÇ   rÈ   ©Úis)z%(py1)s is %(py4)srÕ   rØ   rÙ   )r~   rR   r   rá   r  r  râ   rã   rä   rå   ræ   rç   rè   ré   r  )rí   rK   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   s              r/   ÚEtest_a_spanning_cell_is_written_once_and_covered_positions_stay_blankr    s&  € ÜäØ<Ð=ÀÈ[Ð?YÐZØ˜vÐ&ñð	
ó€Hô ˜ !¤UÓ+×2Ñ2°1Ñ5€EØ�;‰;Ð:˜L¨"Ð-°°S¨zÐ:Ð:Ð:Ñ:×:×:×:Ò:ˆ;×:×:×:×:×:Õ:ˆ5×:×:×:Ñ:ˆ5×:×:Õ:ˆ;×:×:Ó:Ð:×:×:×:×:×:×:Ó:Ø×Ñ˜AÑ˜qÑ!Ð) TÐ) TÐ)×)×)×)Ò)Ð!×)×)Ô)Ð!×)×)Ó) T×)×)×)×)×)×)Ô)r1   c            
     óÄ  • [        [        SSSS5      [        SSSS5      [        S	S
SS5      /5      n [        U S[        5      n/ o!R                  n/ oCU:H  oUoe(       a  UR
                  n/ o‡U:H  o™nU(       Gdž  [        R                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  o²R                  U5        U(       a¬  [        R                  " SW	4SWW45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  oÒR                  U5        [        R                  " US5      0 -  nSSU0-  n[        [        R                  " U5      5      eS =n=n=n=n=n=n=p˜UR                    Vs/ s H  nUR"                  UR$                  4PM     nn/ SQo6U:H  nU(       do  [        R                  " SU4SXc45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=nng s  snf ) NrN   úPortfolio Overview(1))r  r¹   r  r  útext-0Ú
marginaliaú(1) As of quarter end.©r  r
  r  r»   úmarginalia-0ÚlogoÚSTARWOOD)rÊ   ç{®Gáz”?r»   ç{®Gáz´?zlogo-0é   rÀ   )z/%(py4)s
{%(py4)s = %(py2)s.figures
} == %(py7)srÂ   ©rÅ   r×   rÈ   ú%(py9)sÚpy9)z2%(py13)s
{%(py13)s = %(py11)s.tables
} == %(py16)s)Úpy11Úpy13Úpy16z%(py18)sÚpy18r   zassert %(py21)sÚpy21))rN   r  )r  r   )r#  r$  rÔ   rÕ   rØ   rÙ   )r~   rO   r   rá   rë   r  râ   rã   rä   rå   ræ   rç   rs   Ú_format_booloprè   ré   ÚcontextrG   rN   )rí   rÂ   rî   rð   Ú@py_assert6r  ró   Ú@py_assert12Ú@py_assert15Ú@py_assert14rò   Ú@py_format10Ú@py_format17Ú@py_format19Ú@py_format20Ú@py_format22r{   rô   rõ   rö   s                       r/   Ú0test_text_and_page_furniture_digest_into_contextr;  ,  sé  € Üä�VÐ4Ð6KÈXÓVÜ�\Ð#;Ð=RÐTbÓcÜ�V˜ZÐ)@À(ÓKð	
ó€Hô ˜ 1¤eÓ,€FÙ7�>‰>Ð7˜RÐ7˜RÑ×7 F§M¡MÐ7°RÐ7°RÑ$7×7×7×7Õ7ˆ>×7×7×7×7×7Õ7ˆ6×7×7×7Ñ7ˆ6×7×7Õ7ˆ>×7×7Ó7˜R×7×7×7×7×7×7×7Ò7 M°R×7×7×7×7×7Õ7 F×7×7×7Ñ7 F×7×7Õ7 M×7×7Ó7°R×7×7×7×7×7×7×7×7×7×7×7×7×7Ö7Ø&,§n¢nÓ5¢n ˆQ�V‰V�Q—V‘VÓ¡nð Ð5ò :ð ð :ñ ÷ ô ïé ô	Ð5÷ ñ ïé ð	Ð5÷ ð ïé ð	ð :÷ ÷ ÷ ñ ïé ÷	÷ ñ ùÒ5s   È4"Kc            	     óü  • [        [        SSS//SS9[        SSSS	5      /5      n [        U S
[        S5      n[        US/SSS9nUR                  nSoCU:H  oU(       dº  [        R                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTUR                  o3[        :H  oU(       dý  [        R                  " SU4SU[        45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS.-  nSSU0-  n	[        [        R                  " U	5      5      eS =p5UR                   nSoCU:H  oU(       dº  [        R                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTUR"                  nSoCU:H  oU(       dº  [        R                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTUR$                  S   n
U
R&                  nS oCU:H  oU(       dº  [        R                  " SU4S!X445      S"[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OS"[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTU
R(                  nS#S$S%SS&.oCU:H  oU(       dº  [        R                  " SU4S'X445      S"[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OS"[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTSoºR*                  oKU;   oÌ(       dº  [        R                  " S(U4S)X´45      [        R                  " U5      S"[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OS"[        R                  " U5      S*.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pÄS+oºR*                  oKU;   oÌ(       dº  [        R                  " S(U4S)X´45      [        R                  " U5      S"[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OS"[        R                  " U5      S*.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pÄUR,                   Vs/ s H  oÝR.                  PM     nnS/o[U:H  oÌ(       do  [        R                  " SU4S,Xµ45      [        R                  " U5      [        R                  " U5      S-.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=pÅg s  snf ).Nr¸   zA bar chart.z	2025: 560©r  rº   r
  rÊ   r½   r  zNote: unaudited.r!  r"  é   údeck.p7.ade.jsonÚ	bar_chartF)Úreusedrë   rÀ   ©z.%(py2)s
{%(py2)s = %(py0)s.status
} == %(py5)sÚscanrÃ   rÇ   rÈ   )z-%(py2)s
{%(py2)s = %(py0)s.model
} == %(py4)srá   rà   rØ   rÙ   rd   rÉ   rÊ   rË   r   úfigure-0)z0%(py2)s
{%(py2)s = %(py0)s.chunk_id
} == %(py5)sÚrecordr  rº   r
  rÎ   rÓ   ©Úin©z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.text
}©rÖ   rþ   rÆ   z| 2025: 560 |rÔ   rÕ   )r~   rL   rO   r   rá   r   rb   râ   rã   rä   rå   ræ   rç   rè   ré   Úmodelrê   ru   rë   Úchunk_idr*   rN   r1  rG   )rí   rÂ   rC  rî   rï   rð   rñ   rò   rõ   rö   rE  ró   rô   r{   s                 r/   ÚCtest_projection_carries_figures_tables_and_context_to_the_page_scanrL  =  sb  € Üä�w °{°m°_ÐJ^Ñ_Ü�\Ð#5Ð7LÈnÓ]ð	
ó€Hô ˜ 1¤eÐ-?Ó@€FÜ˜  Ð/AÈ%ÑP€Dà�;‰;Ð#˜)Ð#˜)Ñ#×#×#×#Ò#ˆ;×#×#×#×#×#Õ#ˆ4×#×#×#Ñ#ˆ4×#×#Õ#ˆ;×#×#Ó#˜)×#×#×#×#×#×#Ó#Ø�:‰:ÐœÑ×××Òˆ:œ×××××Õˆ4×××Ñˆ4××Õˆ:×××××Ôœ×××Ñœ××××××ÓØ�<‰<Ð/Ð/Ð/Ð/Ñ/×/×/×/Ò/ˆ<×/×/×/×/×/Õ/ˆ4×/×/×/Ñ/ˆ4×/×/Õ/ˆ<×/×/Ó/Ð/×/×/×/×/×/×/Ó/Ø�<‰<Ð˜3Ð˜3Ñ×××Òˆ<×××××Õˆ4×××Ñˆ4××Õˆ<××Ó˜3××××××ÓØ�\‰\˜!‰_€FØ�?‰?Ð(˜jÐ(˜jÑ(×(×(×(Ò(ˆ?×(×(×(×(×(Õ(ˆ6×(×(×(Ñ(ˆ6×(×(Õ(ˆ?×(×(Ó(˜j×(×(×(×(×(×(Ó(Ø�:‰:ÐO #¨c¸CÈ3ÑOÐOÐOÑO×O×O×OÒOˆ:×O×O×O×O×OÕOˆ6×O×O×OÑOˆ6×O×OÕOˆ:×O×OÓOÐO×O×O×O×O×O×OÓOàÐ(Ÿ[™[Ð(˜[Ñ(×(×(×(Ò(ˆ>×(×(Ô(ˆ>×(×(×(×(×(Ô(˜V×(×(×(Ñ(˜V×(×(Õ(˜[×(×(×(×(×(×(Ó(ØÐ)Ÿk™kÐ)˜kÑ)×)×)×)Ò)ˆ?×)×)Ô)ˆ?×)×)×)×)×)Ô)˜f×)×)×)Ñ)˜f×)×)Õ)˜k×)×)×)×)×)×)Ó)Ø ŸLšLÓ)šL�q�FŒF™LÐ;Ð)¨l¨^Ð;¨^Ñ;×;×;×;Ò;Ð)×;×;Ô;Ð)×;×;Ó;¨^×;×;×;×;×;×;Ô;ùÒ)s   Ý _9c                 óx  • [        [        S//S9/5      n [        [        U S[        5      / 5      nUR
                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=pCUR                  S   owR                  nS//o˜U	:H  o3(       d„  [        R                  " SU4SX‰45      [        R                  " U5      [        R                  " U5      [        R                  " U	5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=n=p9g )Nr  )rI   r  r  rÀ   rB  rC  rÃ   rÇ   rÈ   r   r  )z-%(py3)s
{%(py3)s = %(py1)s.cells
} == %(py6)s©rÖ   rþ   rÙ   rÿ   r   )r~   rR   r   r   rá   rb   râ   rã   rä   rå   ræ   rç   rè   ré   r  r  )rí   rC  rî   rï   rð   rñ   rò   ró   rô   r  rö   r  s               r/   Ú4test_a_page_of_only_tables_projects_as_tables_statusrO  T  s  € ÜœY¨k¨]¨OÑ<Ð=Ó>€HÜœ H¨a´Ó7¸Ó<€DØ�;‰;Ð"˜(Ð"˜(Ñ"×"×"×"Ò"ˆ;×"×"×"×"×"Õ"ˆ4×"×"×"Ñ"ˆ4×"×"Õ"ˆ;×"×"Ó"˜(×"×"×"×"×"×"Ó"Ø�;‰;�q‰>Ð*×ÑÐ* S E 7Ð* 7Ñ*×*×*×*Ò*Ð×*×*Ô*ˆ>×*×*Ó*Ð×*×*Ó* 7×*×*×*×*×*×*Ö*r1   c                 ó  • [        [        SSS5      /5      n [        [        U S[        5      / 5      nUR
                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS =n=pCg )NrN   zProse only.)r  r  r
  rº   r'  ÚemptyrÀ   rB  rC  rÃ   rÇ   rÈ   )r~   rO   r   r   rá   rb   râ   rã   rä   rå   ræ   rç   rè   ré   )rí   rC  rî   rï   rð   rñ   rò   s          r/   ÚCtest_a_recognized_response_with_no_figure_or_table_is_an_empty_pagerR  [  s�   € ÜœX f¨mÐ=QÓRÐSÓT€HÜœ H¨a´Ó7¸Ó<€DØ�;‰;Ð!˜'Ð!˜'Ñ!×!×!×!Ò!ˆ;×!×!×!×!×!Õ!ˆ4×!×!×!Ñ!ˆ4×!×!Õ!ˆ;×!×!Ó!˜'×!×!×!×!×!×!Ô!r1   c                 óR  • [         R                  " [        5       n [        SS0S[        S5        S S S 5        SnW R
                  n[        U5      o1U;   oD(       Gd"  [        R                  " SU4SX45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS =n=n=p#U R
                  n[        U5      n[        U;   o™(       Gde  [        R                  " SU	4S[        U45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n	=pxg ! , (       d  f       GNî= f)NÚ
unexpectedTé   zdeck.p5.ade.jsonrF  )zK%(py1)s in %(py8)s
{%(py8)s = %(py3)s(%(py6)s
{%(py6)s = %(py4)s.value
})
}r²   Úexcinfo)rÖ   rþ   r×   rÙ   r   úassert %(py10)sÚpy10)zK%(py0)s in %(py7)s
{%(py7)s = %(py2)s(%(py5)s
{%(py5)s = %(py3)s.value
})
}rá   )rÄ   rÅ   rþ   rÆ   rÈ   úassert %(py9)sr*  )ÚpytestÚraisesr   r   rá   Úvaluer²   râ   rã   rç   rä   rå   ræ   rè   ré   )rV  ró   r  Ú@py_assert7rô   r  Ú@py_format11rï   r2  rî   rò   r6  s               r/   Ú<test_an_unrecognized_format_raises_naming_the_file_and_modelr_  a  sœ  € Ü	�ŠÔ+Ô	,°Ü�\ 4Ð(¨!¬UÐ4FÔG÷ 
-àÐ3 W§]¡]Ð3¤ ]Ó!3Ð3Ð!3Ñ3×3×3×3Ó3Ð×3×3Ô3Ð×3×3×3×3×3Ô3¤×3×3×3Ñ3¤×3×3×3×3×3Ö3 W×3×3×3Ñ3 W×3×3Õ3 ]×3×3Ó3Ð!3×3×3×3×3×3×3Õ3ØŸ™Ð&”C˜Ó&Ð&Œ5Ð&Ñ&×&×&×&Ó&Œ5Ð&×&×&×&×&×&Õ&Œ5×&×&×&Ñ&Œ5×&×&×&×&×&Ö&”C×&×&×&Ñ&”C×&×&×&×&×&Ö&˜×&×&×&Ñ&˜×&×&Õ&˜×&×&Ó&Ð&×&×&×&×&×&×&Ô&÷ 
-Ö	,ús   ›LÌ
L&c                 ó¤   • [        / SSS9n [        R                  " [        SS9   [	        U S[
        S5        S S S 5        g ! , (       d  f       g = f)NÚfailedzrender error)rv   rw   ©Úmatché   zdeck.p3.ade.json)r~   rZ  r[  Ú
ValueErrorr   rá   )rí   s    r/   Ú:test_a_failed_page_status_raises_with_the_responses_reasonrf  h  s9   € Ü˜B¨HÀ.ÑQ€HÜ	�Š”z¨Ó	8Ü�H˜a¤Ð(:Ô;÷ 
9×	8Ö	8ús   ¥AÁ
Ac                óÔ  • [        S/5      nUR                  S   nU  H4  u  p4UR                  UU[        S[	        S5      S[        U5      4S9US9  M6     [        [        SSS	/S
//SS9/5      n[        US[        5      n[        US/5      n[        R                  " X/[        S/5      5      u  p‰/ o©U
:H  o»(       d¥  [        R                  " SU4SXš45      S[         R"                  " 5       ;   d  [        R$                  " U	5      (       a  [        R&                  " U	5      OS[        R&                  " U
5      S.-  nSSU0-  n[)        [        R*                  " U5      5      eS=pºX‡U4$ )z‘One page: a picture with `texts` filed under it, grafted by the track.

The scan comes from a digested response whose figure covers the picture.
)r>  )r&  g333333Ã?g¸…ëQ¸Þ?ç{®Gázä?r@  r   r>  )r  rº   r  r  r’   )ÚlabelrN   r•   Úparentr¸   z+Undepreciated book value per share by year.ú2024: $21.13z2025: $21.38)gìQ¸…ë±?gìQ¸…ëÁ?g\�Âõ(\ß?çÍÌÌÌÌÌä?r½   r@  rÀ   ©z%(py0)s == %(py3)sÚerrors©rÄ   rþ   úassert %(py5)srÆ   N)r¥   rž   Úadd_textr   r‡   rp   r~   rL   r   rá   r   r   Úgraft_figuresr¬   râ   rã   rä   rå   ræ   rç   rè   ré   )ÚtextsrŸ   r¤   rN   ri  rí   rÂ   rC  Úrefinedrn  rô   rî   Ú@py_format4rñ   s                 r/   Ú_grafted_pagerv  q  s3  € ô Ð?Ð@Ó
A€CØ�l‰l˜1‰o€GÛ‰ˆØ�‰ØØÜ¨´Ð<QÓ0RÐ^_ÔadÐeiÓajÐ]kÑlØð	 	ó 	
ñ ô äØØ=Ø%Ð&¨Ð(8Ð9Ø,ñ	ð	
ó	€Hô ˜ 1¤eÓ,€FÜ˜  Ó.€DÜ×(Ò(¨¨f´jÀ!À³oÓF�O€GØÐ�R‰<×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�R××××××ÑØ˜&Ð Ð r1   c                 ó,
  • [        S[        R                  4S[        R                  4/5      u  pnU R                   Vs/ s H  o3R                  PM     nn/ oTU:H  of(       do  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=peU R                  S   n	/ o©R                  nS oµULoÌoL(       a  U	R                  oÝR                  nS oþULnUnU(       Gdµ  [
        R                  " S	U4S
X[45      S[        R                  " 5       ;   d  [
        R                  " U	5      (       a  [
        R                  " U	5      OS[
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  nU
R!                  U5        U(       aÂ  [
        R                  " S	W4SWW45      S[        R                  " 5       ;   d  [
        R                  " U	5      (       a  [
        R                  " U	5      OS[
        R                  " W5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  nU
R!                  U5        [
        R"                  " U
S5      0 -  nSSU0-  n[        [
        R                  " U5      5      eS =n=n
=n=n=n=n=n=nnSoIR                  nUR                  o»R                  nUU;   of(       då  [
        R                  " SU4SUU45      [
        R                  " U5      S[        R                  " 5       ;   d  [
        R                  " U	5      (       a  [
        R                  " U	5      OS[
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=n=nnUR$                  S   oDR&                  oiR(                  o¶U:H  nU(       dÏ  [
        R                  " SU4SXk45      [
        R                  " U5      [
        R                  " U5      S[        R                  " 5       ;   d  [
        R                  " U	5      (       a  [
        R                  " U	5      OS[
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=nng s  snf )Nú$21.13z$21.38rÀ   rÔ   rÕ   rØ   rÙ   r   ©úis not)z0%(py4)s
{%(py4)s = %(py2)s.meta
} is not %(py7)sr¤   r(  r)  r*  )zW%(py15)s
{%(py15)s = %(py13)s
{%(py13)s = %(py11)s.meta
}.description
} is not %(py18)s)r+  r,  Úpy15r.  z%(py20)sÚpy20zassert %(py23)sÚpy23zUndepreciated book valuerF  )zg%(py1)s in %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.meta
}.description
}.text
})rÖ   rþ   rÆ   rÈ   r*  úassert %(py11)sr+  )zQ%(py3)s
{%(py3)s = %(py1)s.picture_ref
} == %(py7)s
{%(py7)s = %(py5)s.self_ref
})rÖ   rþ   rÆ   rÈ   rY  )rv  r   ÚTEXTrs  rN   râ   rã   rç   rè   ré   rž   r�   rH   rä   rå   ræ   rs   r0  rë   Úpicture_refÚself_ref)rt  rC  Ú_digestr�   ró   rð   rô   rõ   rö   r¤   rî   r2  r  r3  r5  Ú@py_assert17Ú@py_assert16rò   r6  r8  Ú@py_format21r:  Ú@py_format24rï   Ú@py_assert8Ú@py_format12s                             r/   Ú?test_the_grafts_reading_replaces_content_text_under_the_picturer‰  ’  sÝ  € Ü*¨X´|×7HÑ7HÐ,IÈHÔVb×VgÑVgÐKhÐ+iÓjÑ€G�7Ø#ŸMšMÓ*šM�q�FŒF™MÐ0Ð*¨bÐ0¨bÑ0×0×0×0Ò0Ð*×0×0Ô0Ð*×0×0Ó0¨b×0×0×0×0×0×0Ó0Ø×Ñ˜qÑ!€GÙL�<‰<ÐL˜tÐL˜tÐ#×L¨¯©ÐL×(@Ñ(@ÐLÈÐLÈÐ(L×L×L×LÖLˆ<×L×L×L×L×LÕLˆ7×L×L×LÑLˆ7×L×LÕLˆ<×L×LÓL˜t×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Ø%ÐF¯©ÐF¨×)AÑ)AÐ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Ð)A×F×FÓFÐ)F×F×F×F×F×F×F×FÐFØ�<‰<˜‰?Ð:×&Ñ&Ð:×*:Ñ*:Ð:Ð*:Ñ:×:×:×:Ó:Ð&×:×:Ô:ˆ?×:×:Ó:Ð&×:×:×:×:×:Ô:¨'×:×:×:Ñ:¨'×:×:Õ:Ð*:×:×:×:×:×:×:×:ùò	 +s   ¿Tc                 óÞ  • [        S[        R                  4S[        R                  4S[        R                  4/5      u  pnU R
                   Vs/ s H  o3R                  PM     nnSS/oTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peg s  snf )	Nrx  ú'(1) Based on undepreciated book equity.zBook Value Per SharerÀ   rÔ   rÕ   rØ   rÙ   )rv  r   r  ÚFOOTNOTEÚCAPTIONrs  rN   râ   rã   rç   rè   ré   )	rt  Ú_scanr‚  r�   ró   rð   rô   rõ   rö   s	            r/   Ú:test_footnote_and_caption_labelled_text_survives_the_graftr�  ›  sç   € Ü+à”|×(Ñ(Ð)Ø6¼×8MÑ8MÐNØ#¤\×%9Ñ%9Ð:ð	
óÑ€G�Gð $ŸMšMÓ*šM�q�FŒF™Mð Ð*Ø1Øð/ð ð /ñ ÷ ó ïé ôÐ*÷ ñ ïé ðÐ*÷ ð ïé ðð /÷ ÷ ÷ ñ ïé ÷÷ ð ùÒ*s   ÁC*c                ó¢   • U R                   =(       d
    [        5       nUR                  [        [	        U5      [
        [	        U5      0S9U l         g)z@What the correction agent leaves on a picture, written directly.)ÚupdateN)r�   r   Ú
model_copyr   Úlistr   )r¤   ÚmarksÚnotesÚbases       r/   Ú_markr—  ¬  s9   € à�<‰<×(œ;›=€DØ—?‘?Ô+?ÄÀeÃÌoÔ_cÐdiÓ_jÐ*k�?Ðl€G…Lr1   c                 óP  • [        S[        R                  4/5      u  pn[        U R                  S   SSSS./SSS./S	9  [
        R                  " X/S
U05      n/ oCU:H  oU(       d¥  [        R                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =pTUR                  S   R                   S   nUR"                  nSo•U	L oª(       dº  [        R                  " SU
4SXY45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p©UR$                  n['        U5      n	SS/oÉU:H  oÝ(       Gd"  [        R                  " SU4SXœ45      S[        R                  " 5       ;   d  [        R                  " [&        5      (       a  [        R                  " [&        5      OSS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U	5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n	=pÜUR(                  nSo•U	:H  oª(       dº  [        R                  " SU
4SXY45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p©g ) Nr‹  r   ú(1)Úfootnoterk  ©ÚmarkerrG   ri  ú#Based on undepreciated book equity.©rœ  rN   ©r”  r•  r>  rÀ   rm  Úflagsro  rp  rÆ   Tr  ©z4%(py2)s
{%(py2)s = %(py0)s.corroborated
} is %(py5)sÚnoterÃ   rÇ   rÈ   Úagentr`   )zM%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.sources
})
} == %(py8)srš   ©rÄ   rÖ   rþ   rÆ   r   rW  rX  ©z,%(py2)s
{%(py2)s = %(py0)s.text
} == %(py5)s)rv  r   rŒ  r—  rž   r   Úresolve_figure_footnotesrâ   rã   rä   rå   ræ   rç   rè   ré   rë   Ú	footnotesÚcorroboratedÚsourcesrš   rN   )rt  rC  rÂ   r   rô   rî   ru  rñ   r¢  rï   rð   rò   r]  r2  r  r^  s                   r/   Ú*test_agreeing_sources_corroborate_the_noterª  ²  st  € Ü)Ø
3´\×5JÑ5JÐ	KÐLóÑ€G�6ô 
Ø×Ñ˜ÑØ¨¸nÑMÐNØÐ)NÑOÐPòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EØÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××ÑØ�>‰>˜!Ñ×&Ñ& qÑ)€DØ×ÑÐ$ Ð$ Ð$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆ4×$×$×$Ñ$ˆ4×$×$Õ$Ð×$×$Ó$ ×$×$×$×$×$×$Ó$Ø—,‘,Ð8Œ6�,ÓÐ8 G¨ZÐ#8Ð8Ð#8Ñ8×8×8×8Ó8Ð×8×8×8×8×8Õ8Œ6×8×8×8Ñ8Œ6×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Ø�9‰9Ð=Ð=Ð=Ð=Ñ=×=×=×=Ò=ˆ9×=×=×=×=×=Õ=ˆ4×=×=×=Ñ=ˆ4×=×=Õ=ˆ9×=×=Ó=Ð=×=×=×=×=×=×=Ô=r1   c                 óø  • [        S[        R                  4/5      u  pn[        U R                  S   SSSS./SSS./S	9  [
        R                  " X/S
U05      n[        U5      nSoTU:H  of(       Gd  [        R                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peSo“S   o©U
;   oD(       do  [        R                  " SU4SXš45      [        R                  " U	5      [        R                  " U
5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=pJUR                   S   R"                  S   nUR$                  nSomUL oª(       dº  [        R                  " SU
4SXÖ45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p¦g ) Nz (1) Excludes the CMBS portfolio.r   r™  rš  rk  r›  r�  rž  rŸ  r>  rT   rÀ   rü   rp   r   rý   rÿ   r   zreads differentlyrF  ©z%(py1)s in %(py4)srÕ   rØ   rÙ   Fr  r¡  r¢  rÃ   rÇ   rÈ   )rv  r   rŒ  r—  rž   r   r¦  rp   râ   rã   rä   rå   ræ   rç   rè   ré   rë   r§  r¨  )rt  rC  rÂ   r   rô   r  rï   rö   r  ró   rð   rõ   r¢  rî   rñ   rò   s                   r/   Ú3test_disagreeing_sources_resolve_with_a_review_flagr­  Ã  sÓ  € Ü)Ð,NÔP\×PeÑPeÐ+fÐ*gÓhÑ€G�6Ü	Ø×Ñ˜ÑØ¨¸nÑMÐNØÐ)NÑOÐPòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EÜˆu‹:Ð˜Ð˜‰?×××Óˆ:×××××ÕŒ3×××ÑŒ3×××××Öˆu×××Ñˆu××Õˆ:××Ó˜××××××ÓØÐ*¨¡(Ð* (Ñ*×*×*×*Ò*Ð×*×*Ô*Ð×*×*Ó* (×*×*×*×*×*×*Ó*Ø�>‰>˜!Ñ×&Ñ& qÑ)€DØ×ÑÐ% Ð% Ð%×%×%×%Ò%Ð×%×%×%×%×%Õ%ˆ4×%×%×%Ñ%ˆ4×%×%Õ%Ð×%×%Ó% ×%×%×%×%×%×%Ô%r1   c                 ó®  • [        S[        R                  4/5      u  pn[        U R                  S   SSSS.// S9  [
        R                  " X/SU05      n/ oCU:H  oU(       d¥  [        R                  " S	U4S
X445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=pTUR                  S   R                   S   nUR"                  nS/o•U	:H  oª(       dº  [        R                  " S	U
4SXY45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=p©UR$                  nSo•U	:H  oª(       dº  [        R                  " S	U
4SXY45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=p©g)z;A failed agent call no longer costs the page its footnotes.r‹  r   r™  rš  rk  r›  rŸ  r>  rÀ   rm  r   ro  rp  rÆ   Nr`   ©z/%(py2)s
{%(py2)s = %(py0)s.sources
} == %(py5)sr¢  rÃ   rÇ   rÈ   r�  r¥  )rv  r   rŒ  r—  rž   r   r¦  râ   rã   rä   rå   ræ   rç   rè   ré   rë   r§  r©  rN   )rt  rC  rÂ   r   rô   rî   ru  rñ   r¢  rï   rð   rò   s               r/   Ú@test_the_documents_own_text_resolves_when_the_agent_read_nothingr°  Ñ  sº  € ä)Ø
3´\×5JÑ5JÐ	KÐLóÑ€G�6ô 
Ø×Ñ˜ÑØ¨¸nÑMÐNØòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EØÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××ÑØ�>‰>˜!Ñ×&Ñ& qÑ)€DØ�<‰<Ð'˜J˜<Ð'˜<Ñ'×'×'×'Ò'ˆ<×'×'×'×'×'Õ'ˆ4×'×'×'Ñ'ˆ4×'×'Õ'ˆ<×'×'Ó'˜<×'×'×'×'×'×'Ó'Ø�9‰9Ð=Ð=Ð=Ð=Ñ=×=×=×=Ò=ˆ9×=×=×=×=×=Õ=ˆ4×=×=×=Ñ=ˆ4×=×=Õ=ˆ9×=×=Ó=Ð=×=×=×=×=×=×=Ô=r1   c                 ó\  • [        / 5      u  pn[        U R                  S   SSSS.// S9  [        R                  " X/SU05      n[        U5      nSoTU:H  of(       Gd  [        R                  " S	U4S
XE45      S[        R                  " 5       ;   d  [        R                  " [
        5      (       a  [        R                  " [
        5      OSS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pe/ n	SoCS   oTU;   ofo¦(       a  So³S   oËU;   oÝn
U
(       Gd  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  o‰R                  U5        U(       aa  [        R                  " SW4SWW45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  oùR                  U5        [        R                  " U	S5      0 -  nSSU0-  n[        [        R                  " U5      5      eS =n
=n	=n=n=n=n=pÜg )Nr   z(9)rš  rk  r›  rŸ  r>  rT   rÀ   rü   rp   r   rý   rÿ   r   zdefined by no noterF  ©z%(py3)s in %(py6)s©rþ   rÙ   ú%(py8)s©z%(py11)s in %(py14)s©r+  Úpy14ú%(py16)sr-  úassert %(py19)sÚpy19)rv  r—  rž   r   r¦  rp   râ   rã   rä   rå   ræ   rç   rè   ré   rs   r0  )rt  rC  rÂ   r   rô   r  rï   rö   r  rî   ró   Ú@py_assert10Ú@py_assert13r3  Ú@py_format15r7  Ú@py_format18r9  s                     r/   Ú8test_a_marker_no_source_defines_is_flagged_never_droppedr¿  â  sŒ  € Ü)¨"Ó-Ñ€G�6Ü	Ø×Ñ˜ÑØ¨¸nÑMÐNØòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EÜˆu‹:Ð˜Ð˜‰?×××Óˆ:×××××ÕŒ3×××ÑŒ3×××××Öˆu×××Ñˆu××Õˆ:××Ó˜××××××ÓÙAˆ5ÐA˜!‘HÐA�HÑ×AÐ!5ÐA¸q¹ÐA¸Ñ!A×A×A×AÕAˆ5×A×AÔAˆ5×A×AÓA�H×A×A×A×A×A×A×AÒAÐ!5¸×A×AÔAÐ!5×A×AÓA¸×A×A×A×A×A×A×A×A×A×A×A×A×A×Ar1   c                 óè  • [        / 5      u  pn[        U R                  S   / SSS./S9  [        R                  " X/SU05      n[        U5      nSoTU:H  of(       Gd  [        R                  " SU4S	XE45      S
[        R                  " 5       ;   d  [        R                  " [
        5      (       a  [        R                  " [
        5      OS
S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peSo“S   o©U
;   oD(       do  [        R                  " SU4SXš45      [        R                  " U	5      [        R                  " U
5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=pJg )Nr   z(2)zAn orphaned definition.rž  rŸ  r>  rT   rÀ   rü   rp   r   rý   rÿ   r   z	no markerrF  r¬  rÕ   rØ   rÙ   )rv  r—  rž   r   r¦  rp   râ   rã   rä   rå   ræ   rç   rè   ré   )rt  rC  rÂ   r   rô   r  rï   rö   r  ró   rð   rõ   s               r/   Ú*test_a_note_no_marker_points_at_is_flaggedrÁ  î  s+  € Ü)¨"Ó-Ñ€G�6Ü	Ø×Ñ˜ÑØØÐ)BÑCÐDòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EÜˆu‹:Ð˜Ð˜‰?×××Óˆ:×××××ÕŒ3×××ÑŒ3×××××Öˆu×××Ñˆu××Õˆ:××Ó˜××××××ÓØÐ" ™(Ð"˜(Ñ"×"×"×"Ò"ˆ;×"×"Ô"ˆ;×"×"Ó"˜(×"×"×"×"×"×"Ô"r1   c                 ó&	  • [        / 5      u  pn[        U R                  S   SSSS./SSS./S9  [        R                  " X/S	U05        U R                  S   nUR
                  nS oTULof(       dº  [        R                  " S
U4SXE45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peUR
                  R                  U 5      R                   V	s/ s H  o™R                   PM     n
n	U R"                   Vs/ s H$  o»R$                  [&        R(                  :X  d  M"  UPM&     nnUS   oÝR*                  nSoþU:H  oU(       d„  [        R                  " SU4SXï45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=p_U
R,                  oLS   ofR.                  oô" U5      nU
R,                  nUR.                  nU" U5      nSnUU-   nUU:H  nU(       GdÏ  [        R                  " SU4SUU45      S[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OS[        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=n=n=n=n=n=n=nng s  sn	f s  snf )Nr   r™  rš  rk  r›  r�  rž  rŸ  r>  ry  )z2%(py2)s
{%(py2)s = %(py0)s.parent
} is not %(py5)sr¤   rÃ   rÇ   rÈ   r‹  rÀ   ©z,%(py3)s
{%(py3)s = %(py1)s.text
} == %(py6)srN  rÿ   r   rT   )zÕ%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.index
}(%(py6)s
{%(py6)s = %(py4)s.self_ref
})
} == (%(py17)s
{%(py17)s = %(py12)s
{%(py12)s = %(py10)s.index
}(%(py15)s
{%(py15)s = %(py13)s.self_ref
})
} + %(py19)s)Úbody)rÄ   rÅ   r×   rÙ   r   rX  Úpy12r,  r{  Úpy17rº  zassert %(py22)sÚpy22)rv  r—  rž   r   r¦  rj  râ   rã   rä   rå   ræ   rç   rè   ré   Úresolver_   Úcrefrs  ri  r   rŒ  rN   Úindexr�  )rt  rC  rÂ   r¤   rî   rï   rð   rñ   rò   ÚrefrÄ  r�   Úinsertedró   rô   r  rö   r  r]  Ú@py_assert11r5  r„  Ú@py_assert18Ú@py_assert20Ú@py_assert9r…  Ú@py_format23s                              r/   ÚBtest_a_resolved_note_is_inserted_after_the_picture_in_the_documentrÒ  ú  sæ  € Ü)¨"Ó-Ñ€G�6Ü	Ø×Ñ˜ÑØ¨¸nÑMÐNØÐ)NÑOÐPòô
 	×!Ò! '¨6°A°v°;Ô?Ø×Ñ˜qÑ!€GØ�>‰>Ð% Ð% Ð%×%×%×%Ò%ˆ>×%×%×%×%×%Õ%ˆ7×%×%×%Ñ%ˆ7×%×%Õ%ˆ>×%×%Ó% ×%×%×%×%×%×%Ó%Ø '§¡× 6Ñ 6°wÓ ?× HÒ HÓIÒ H˜�HŒHÑ H€DÐIØ"Ÿ=š=ÓMš=�a¯G©G´|×7LÑ7LÑ,L—™=€HÐMØ�A‰;ÐH×ÑÐHÐHÐHÐHÑH×H×H×HÒHÐ×H×HÔHˆ;×H×HÓHÐ×H×HÓHÐH×H×H×H×H×H×HÕHà�:‰:ÐO˜q‘kÐO×*Ñ*ÐOˆ:Ð*Ó+ÐO¨t¯z©zÐO¸'×:JÑ:JÐO©zÐ:JÓ/KÐOÈaÐOÐ/KÈaÑ/OÐOÐ+Ð/OÑO×O×O×OÔOÐ+Ð/O×O×O×O×O×OÕOˆ4×O×O×OÑOˆ4×O×OÕOˆ:×O×OÓO�k×O×OÓOÐ*×O×OÓOÐ+×O×O×O×O×OÔO¨t×O×O×OÑO¨t×O×OÕO¨z×O×O×O×O×OÔO¸'×O×O×OÑO¸'×O×OÕOÐ:J×O×OÓOÐ/K×O×OÓOÈa×O×O×O×O×O×O×O×OÓOùò	 JùÚMs   ÅR	Å;!RÆ Rc                 óž  • [        / 5      u  pn[        U R                  S   SSSS./SSS./S9  [        R                  " X/S	U05        [        R                  " X/S	U05        U R
                   Vs/ s H$  o3R                  [        R                  :X  d  M"  UPM&     nn[        U5      nS
oeU:H  ow(       Gd  [        R                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[!        [        R"                  " U	5      5      eS=n=pvgs  snf )zwReusing stored scans reruns the workflow over the enriched parse; the
notes it inserted the first time must not double.r   r™  rš  Ú2024r›  r�  rž  rŸ  r>  rT   rÀ   rü   rp   rÌ  rý   rÿ   r   N)rv  r—  rž   r   r¦  rs  ri  r   rŒ  rp   râ   rã   rä   rå   ræ   rç   rè   ré   )
rt  rC  rÂ   r�   rÌ  rô   r  rï   rö   r  s
             r/   Ú7test_resolving_twice_does_not_double_the_inserted_notesrÕ    s.  € ô *¨"Ó-Ñ€G�6Ü	Ø×Ñ˜ÑØ¨¸fÑEÐFØÐ)NÑOÐPòô
 	×!Ò! '¨6°A°v°;Ô?Ü×!Ò! '¨6°A°v°;Ô?Ø"Ÿ=š=ÓMš=�a¯G©G´|×7LÑ7LÑ,L—™=€HÐMÜˆx‹=Ð˜AÐ˜AÑ×××Óˆ=×××××ÕŒ3×××ÑŒ3×××××Öˆx×××Ñˆx××Õˆ=××Ó˜A××××××Ôùò Ns   Á2!G
ÂG
c                 ó>  • [        / 5      u  pn[        U R                  S   / SSS./S9  [        R                  " X/SU05      n/ oCU:H  oU(       d¥  [
        R                  " SU4SX445      S	[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS	[
        R                  " U5      S
.-  nSSU0-  n[        [
        R                  " U5      5      eS =pTUR                  S   R                  S   oˆR                  nSo”U	:H  oª(       d„  [
        R                  " SU
4SXI45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U	5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=p©U R                    Vs/ s H$  oÝR"                  [$        R&                  :X  d  M"  UPM&     nnUS   oˆR(                  nSo”U	:H  oª(       d„  [
        R                  " SU
4SXI45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U	5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=p©g s  snf )Nr   r3   zNote: As of 03/31/2026.rž  rŸ  r>  rÀ   rm  r   ro  rp  rÆ   ©z.%(py3)s
{%(py3)s = %(py1)s.marker
} == %(py6)srN  rÿ   r   rÃ  )rv  r—  rž   r   r¦  râ   rã   rä   rå   ræ   rç   rè   ré   rë   r§  rœ  rs  ri  r   rŒ  rN   )rt  rC  rÂ   r   rô   rî   ru  rñ   ró   r  rï   rö   r  r�   rÌ  s                  r/   Ú1test_an_unmarked_general_note_lands_on_its_figurerØ    s±  € Ü)¨"Ó-Ñ€G�6Ü	Ø×Ñ˜ÑØØÐ&?Ñ@ÐAòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EØÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××ÑØ�>‰>˜!Ñ×&Ñ& qÑ)Ð6×0Ñ0Ð6°BÐ6°BÑ6×6×6×6Ò6Ð0×6×6Ô6Ð)×6×6Ó6Ð0×6×6Ó6°B×6×6×6×6×6×6Õ6Ø"Ÿ=š=ÓMš=�a¯G©G´|×7LÑ7LÑ,L—™=€HÐMØ�A‰;Ð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ùò Ns   Ç!JÇ*Jc            
     óì  • [        / 5      u  pnU R                  [        R                  S[	        S[        S5      SS9S9  [        U R                  S   SS	S
S.// S9  [        R                  " X/SU05      n/ oCU:H  oU(       d¥  [        R                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[!        [        R"                  " U5      5      eS =pTUR$                  S   R&                  S   nUR(                  nS/o•U	:H  oª(       dº  [        R                  " SU
4SXY45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[!        [        R"                  " U5      5      eS =n=p©SoÈR*                  oœU	;   oD(       dº  [        R                  " SU4SXÉ45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U	5      S.-  nSSU0-  n[!        [        R"                  " U5      5      eS =n=pIg )Nz&Note 16. Commitments and Contingenciesr>  )r  r%  ç333333ã?g¸…ëQ¸®?)r   é&   r’   ©ri  rN   r•   r   zNote 16Úsectionrk  r›  rŸ  rÀ   rm  r   ro  rp  rÆ   Úheadingsr¯  r¢  rÃ   rÇ   rÈ   rF  rH  rI  )rv  rq  r   ÚSECTION_HEADERr   r‡   r—  rž   r   r¦  râ   rã   rä   rå   ræ   rç   rè   ré   rë   r§  r©  rN   )rt  rC  rÂ   r   rô   rî   ru  rñ   r¢  rï   rð   rò   ró   s                r/   Ú3test_a_section_marker_resolves_to_a_heading_pointerrà  (  sØ  € Ü)¨"Ó-Ñ€G�6Ø×ÑÜ×)Ñ)Ø5Ü A¬KÐ8NÓ,OÐZaÑbð ñ ô
 
Ø×Ñ˜ÑØ#¨YÀÑPÐQØòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EØÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××ÑØ�>‰>˜!Ñ×&Ñ& qÑ)€DØ�<‰<Ð'˜J˜<Ð'˜<Ñ'×'×'×'Ò'ˆ<×'×'×'×'×'Õ'ˆ4×'×'×'Ñ'ˆ4×'×'Õ'ˆ<×'×'Ó'˜<×'×'×'×'×'×'Ó'Ø3Ð@·y±yÐ@°yÑ@×@×@×@Ò@Ð3×@×@Ô@Ð3×@×@×@×@×@Ô@°t×@×@×@Ñ@°t×@×@Õ@°y×@×@×@×@×@×@Ô@r1   c                 ó"	  • [        / 5      u  pn[        U R                  S   SSSS./SSS./S9  [        R                  " X/S	U05      n/ oCU:H  oU(       d¥  [
        R                  " S
U4SX445      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =pTUR                  S   R                  S   R                  nU V	V
s/ s H6  o™  H-  oªR                   (       d  M  U
R"                  U
R                   4PM/     M8     nn	n
[%        U5      nSoÄU:H  oÝ(       Gd  [
        R                  " S
U4SXL45      S[        R                  " 5       ;   d  [
        R                  " [$        5      (       a  [
        R                  " [$        5      OSS[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=pÜUS   S   nSnUU:H  oD(       dp  [
        R                  " S
U4SUU45      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=nnUS   S   S   nUR&                  nSoÄU:H  oÝ(       d„  [
        R                  " S
U4SXL45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=pÜUR                  S   R                   S   nUR(                  nSoÄUL oÝ(       d„  [
        R                  " SU4S XL45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=pÜg s  sn
n	f )!Nr   r™  rš  rÔ  r›  r�  rž  rŸ  r>  rÀ   rm  r   ro  rp  rÆ   rT   rü   rp   Úplacedrý   rÿ   r   rk  rÔ   rÕ   rØ   rÙ   r×  rN  Tr  ©z.%(py3)s
{%(py3)s = %(py1)s.placed
} is %(py6)s)rv  r—  rž   r   r¦  râ   rã   rä   rå   ræ   rç   rè   ré   rë   rì   rI   r§  rN   rp   rœ  râ  )rt  rC  rÂ   r   rô   rî   ru  rñ   rI   r?   r:   râ  r  rï   rö   r  ró   rð   rõ   s                      r/   Ú9test_a_note_attaches_to_the_value_its_markers_label_namesrä  >  sÔ  € Ü)¨"Ó-Ñ€G�6Ü	Ø×Ñ˜ÑØ¨¸fÑEÐFØÐ)NÑOÐPòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EØÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××ÑØ�>‰>˜!Ñ×#Ñ# AÑ&×+Ñ+€DÙ59Ô\²T¨cÃc¸dÏ^Í^Ó)ˆt�y‰y˜$Ÿ.™.Ó)ÁcÑ)±T€FÑ\Üˆv‹;Ð˜!Ð˜!Ñ×××Óˆ;×××××ÕŒ3×××ÑŒ3×××××Öˆv×××Ñˆv××Õˆ;××Ó˜!××××××ÓØ�!‰9�Q‰<Ð)˜>Ð)ˆ<˜>Ñ)×)×)×)Ò)ˆ<˜>×)×)Ô)ˆ<×)×)Ó)˜>×)×)×)×)×)×)Ô)Ø�!‰9�Q‰<˜‰?Ð*ˆ?×!Ñ!Ð* UÐ* UÑ*×*×*×*Ò*Ð!×*×*Ô*ˆ?×*×*Ó*Ð!×*×*Ó* U×*×*×*×*×*×*Õ*Ø�>‰>˜!Ñ×&Ñ& qÑ)Ð8Ð)×0Ñ0Ð8°DÐ8°DÐ8×8×8×8Ò8Ð0×8×8Ô8Ð)×8×8Ó8Ð0×8×8Ó8°D×8×8×8×8×8×8Ö8ùó	 ]s   Ä)RÅ Rc                 ó¤  • [        / 5      u  pn[        U R                  S   SSSS.SSSS./SSS./S	9  [        R                  " X/S
U05      n/ oCU:H  oU(       d¥  [
        R                  " SU4SX445      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS=pTUR                  S   oUR                  n[        U5      n	So©U
:H  o»(       dì  [
        R                  " SU4SXš45      S[        R                  " 5       ;   d  [
        R                  " [        5      (       a  [
        R                  " [        5      OS[
        R                  " U5      [
        R                  " U5      [
        R                  " U	5      [
        R                  " U
5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS=n=n=n	=pºUR                  S   R                  S   oîR                   nSo”U	L oÿ(       d„  [
        R                  " SU4SXI45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U	5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS=n=n=pùU R"                   Vs/ s H%  nUR$                  [&        R(                  :X  d  M#  UPM'     nn[        U5      nSo”U	:H  oÿ(       Gd  [
        R                  " SU4SXI45      S[        R                  " 5       ;   d  [
        R                  " [        5      (       a  [
        R                  " [        5      OSS[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      [
        R                  " U	5      S .-  nSSU0-  n[        [
        R                  " U5      5      eS=n=pùgs  snf )!uÊ   One printed note line, one resolution, one inserted node â€” the chart-title
label misses the value table, the series label hits it, and neither raises
an unplaced flag because the note found its value.r   r™  rš  zBook Value Per Share(1)r›  rÔ  r�  rž  rŸ  r>  rÀ   rm  r   ro  rp  rÆ   NrT   )zO%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py2)s.footnotes
})
} == %(py9)srp   )rÄ   rÅ   r×   rÙ   r*  r~  r+  Tr  rã  rN  rÿ   r   rü   rÌ  rý   )rv  r—  rž   r   r¦  râ   rã   rä   rå   ræ   rç   rè   ré   rë   r§  rp   râ  rs  ri  r   rŒ  )rt  rC  rÂ   r   rô   rî   ru  rñ   rð   r  r‡  r]  r6  rˆ  ró   rï   rö   r  r�   rÌ  s                       r/   ÚLtest_a_marker_on_two_labels_of_one_figure_resolves_once_and_places_by_eitherræ  O  s›  € ô *¨"Ó-Ñ€G�6Ü	Ø×Ñ˜Ñà jÐ;TÑUØ j¸6ÑBð
ð  Ð)NÑOÐPòô ×)Ò)¨'°6¸A¸v¸;ÓG€EØÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××ÑØ�~‰~˜aÑ Ð0×*Ñ*Ð0Œ3Ð*Ó+Ð0¨qÐ0¨qÑ0×0×0×0Ò0Ð+×0×0×0×0×0Õ0Œ3×0×0×0Ñ0Œ3×0×0Õ0Ð ×0×0Ó0Ð*×0×0Ó0Ð+×0×0Ó0¨q×0×0×0×0×0×0×0Ø�>‰>˜!Ñ×&Ñ& qÑ)Ð8×0Ñ0Ð8°DÐ8°DÐ8×8×8×8Ò8Ð0×8×8Ô8Ð)×8×8Ó8Ð0×8×8Ó8°D×8×8×8×8×8×8Õ8Ø"Ÿ=š=ÓMš=�a¨A¯G©G´|×7LÑ7LÑ,L—™=€HÐMÜˆx‹=Ð˜AÐ˜AÑ×××Óˆ=×××××ÕŒ3×××ÑŒ3×××××Öˆx×××Ñˆx××Õˆ=××Ó˜A××××××Ôùò Ns   Ë4"QÌQc            
     ó*  • [        SS/5      n [        [        SSSSS9[        SSS	S
S9/5      n[        US[        5      n[        US/5      n[        R                  " X/[        S/5      5      u  pE/ oeU:H  ow(       d¥  [        R                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n	[        [        R                   " U	5      5      eS =pvUR"                   H  n
[%        U
SSSS.// S9  M     [        R&                  " XC/SU05      n[)        U5      nSoÆU:H  oÝ(       Gd  [        R                  " SU4SXl45      S[        R                  " 5       ;   d  [        R                  " [(        5      (       a  [        R                  " [(        5      OSS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                   " U5      5      eS =n=pÜSnUS   nUU;   of(       dp  [        R                  " S U4S!UU45      [        R                  " U5      [        R                  " U5      S".-  nS#S$U0-  n[        [        R                   " U5      5      eS =n=nng )%N©r>  ©r¹   rº   çÍÌÌÌÌÌÜ?rÊ   Ú	pie_chart©r>  ©çš™™™™™á?rº   r»   rÊ   rë  r¸   zLeft.ré  rD  )r*   rJ   zRight.rí  úfigure-1r>  rë  rÀ   rm  rn  ro  rp  rÆ   z(k)rš  ÚTotalr›  rŸ  rT   rü   rp   r   rý   rÿ   r   r   rF  r¬  rÕ   rØ   rÙ   )r¥   r~   rL   r   rá   r   r   rr  r¬   râ   rã   rä   rå   ræ   rç   rè   ré   rž   r—  r¦  rp   )rŸ   rí   rÂ   rC  rt  rn  rô   rî   ru  rñ   r¤   r   r  rï   rö   r  ró   rð   rõ   s                      r/   Ú<test_an_unresolvable_marker_shared_by_two_figures_flags_oncerñ  d  sô  € Ü
Ð=Ð?gÐhÓ
i€CÜä�w Ð-CÈZÑXÜ�w Ð.DÈjÑYð	
ó€Hô ˜ 1¤eÓ,€FÜ˜  Ó.€DÜ×(Ò(¨¨f´jÀ!À³oÓF�O€GØÐ�R‰<×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�R××××××ÑØ×#Ô#ˆÜˆg¨¸
ÈWÑUÐVÐ^`Ôañ $ä×)Ò)¨'°6¸A¸v¸;ÓG€EÜˆu‹:Ð˜Ð˜‰?×××Óˆ:×××××ÕŒ3×××ÑŒ3×××××Öˆu×××Ñˆu××Õˆ:××Ó˜××××××ÓØÐ�E˜!‘HÐˆ5�HÑ×××Òˆ5�H××Ôˆ5××Ó�H××××××Õr1   c                 ór  • [        / 5      u  pn[        U R                  S   SSSS./SSS./S9  [        R                  " X/S	U05      n[        U5      nS
oTU:H  of(       Gd  [        R                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " [
        5      (       a  [        R                  " [
        5      OSS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peSo“S   o©U
;   oD(       do  [        R                  " SU4SXš45      [        R                  " U	5      [        R                  " U
5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=pJUR                  S   R                  S   o™R                   nSoTUL of(       d„  [        R                  " SU4SXE45      [        R                  " U	5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=n=peU R"                   Vs/ s H$  oÌR$                  [&        R(                  :X  d  M"  UPM&     n	nU	(       d:  SS[        R                  " U	5      0-  n[        [        R                  " U5      5      eS n	g s  snf )Nr   r™  rš  zWoodstar Fund Debtr›  r�  rž  rŸ  r>  rT   rÀ   rü   rp   r   rý   rÿ   r   zno value under that labelrF  r¬  rÕ   rØ   rÙ   Fr  rã  rN  zassert %(py1)srÖ   )rv  r—  rž   r   r¦  rp   râ   rã   rä   rå   ræ   rç   rè   ré   rë   r§  râ  rs  ri  r   rŒ  )rt  rC  rÂ   r   rô   r  rï   rö   r  ró   rð   rõ   r�   Ú@py_format2s                 r/   Ú>test_a_marker_whose_label_matches_no_value_is_flagged_unplacedrô  w  sõ  € Ü)¨"Ó-Ñ€G�6Ü	Ø×Ñ˜ÑØ¨Ð>RÑSÐTØÐ)NÑOÐPòô
 ×)Ò)¨'°6¸A¸v¸;ÓG€EÜˆu‹:Ð˜Ð˜‰?×××Óˆ:×××××ÕŒ3×××ÑŒ3×××××Öˆu×××Ñˆu××Õˆ:××Ó˜××××××ÓØ&Ð2°©(Ð2¨(Ñ2×2×2×2Ò2Ð&×2×2Ô2Ð&×2×2Ó2¨(×2×2×2×2×2×2Ó2à�>‰>˜!Ñ×&Ñ& qÑ)Ð9×0Ñ0Ð9°EÐ9°EÐ9×9×9×9Ò9Ð0×9×9Ô9Ð)×9×9Ó9Ð0×9×9Ó9°E×9×9×9×9×9×9Õ9Ø—}’}ÓI’}�!¯©´<×3HÑ3HÑ(H�A‘}ÐI×I×I×IÑIÐI×I×I×I×I×IÑIùÒIs   Ë!L4Ë(L4c                 ó¾  • [        SS/5      n [        [        SSS//SSS9[        SS	S
//SSS9/5      n[        US[        5      n[        US/5      n[        R                  " X/[        S/5      5      u  pE/ oeU:H  ow(       d¥  [        R                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n	[        [        R                   " U	5      5      eS=pv[#        [%        SSSS9/['        SSSS9/S9n
[(        R*                  " 5        n[-        [/        U5      S-  SS9n[0        R2                  " [5        XC/[        S/5      XÊ5      5        SSS5        U
R6                  S   nU Vs/ s H  oîR8                  PM     nnSS/nUU:H  of(       dp  [        R                  " SU4S UU45      [        R                  " U5      [        R                  " U5      S!.-  nS"S#U0-  n[        [        R                   " U5      5      eS=n=nnSoýS   nUR:                  nUU;   of(       d…  [        R                  " S$U4S%UU45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S&.-  nS'S(U0-  n[        [        R                   " U5      5      eS=n=n=nnS	oýS   nUR:                  nUU;   of(       d…  [        R                  " S$U4S%UU45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S&.-  nS'S(U0-  n[        [        R                   " U5      5      eS=n=n=nn[        R<                  " XC/SU05      n/ nUU:H  ow(       d¦  [        R                  " SU4SUU45      S)[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS)[        R                  " U5      S.-  nSSU0-  n	[        [        R                   " U	5      5      eS=pvUR6                  S   nUR>                  S   oÿR@                  nSnUU:H  nU(       d…  [        R                  " SU4S*UU45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S+.-  nS'S(U0-  n[        [        R                   " U5      5      eS=n=n=nnURB                  S   RD                  S   S   R>                  S   oÿRF                  nSnUU:H  nU(       d…  [        R                  " SU4S,UU45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S+.-  nS'S(U0-  n[        [        R                   " U5      5      eS=n=n=nnUR6                  S   oÿR>                  n/ nUU:H  nU(       d…  [        R                  " SU4S-UU45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S+.-  nS'S(U0-  n[        [        R                   " U5      5      eS=n=n=nng! , (       d  f       GN.= fs  snf ).z€Marker binding is by figure index, so the list the agent sees must be the
digested figures, in digestion order, with their text.rè  rì  r¸   zLeft donut.zA: 60%ré  rD  ©rI   r*   rJ   zRight donut.zB: 40%rí  rï  r>  rë  rÀ   rm  rn  ro  rp  rÆ   NrT   r™  ÚB)rB   rœ  ri  zRight-hand note.)rB   rœ  rN   )Úmarkersr•  údoc.pdfrª   r   rÔ   rÕ   rØ   rÙ   rF  )z3%(py1)s in %(py6)s
{%(py6)s = %(py4)s.description
})rÖ   r×   rÙ   rÿ   r   r   rÃ  rN  r×  )z1%(py3)s
{%(py3)s = %(py1)s.footnotes
} == %(py6)s)$r¥   r~   rL   r   rá   r   r   rr  r¬   râ   rã   rä   rå   ræ   rç   rè   ré   r   r   r   ÚtempfileÚTemporaryDirectoryr¶   r   ÚasyncioÚrunr   rë   rÊ  rH   r¦  r§  rN   rì   rI   rœ  )rŸ   rí   rÂ   rC  rt  rn  rô   rî   ru  rñ   ÚfinderÚtmpÚsourceÚbriefedÚfró   rð   rõ   rö   r  r  r   rÑ   rï   s                           r/   ÚGtest_the_correction_agent_is_briefed_with_the_digested_figures_in_orderr  ‰  sš  € ô Ð=Ð?gÐhÓ
i€CÜäØ˜¨x¨j¨\Ð?UÐ_iñô Ø˜°¨z¨lÐ@VÐ`jñð		
ó	€Hô ˜ 1¤eÓ,€FÜ˜  Ó.€DÜ×(Ò(¨¨f´jÀ!À³oÓF�O€GØÐ�R‰<×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�R××××××Ñä Ü˜q¨°cÑ:Ð;Ü˜1 UÐ1CÑDÐEñ€Fô 
×	$Ò	$Ô	&¨#ÜœD ›I¨	Ñ1¸Ñ;ˆÜ�Š”O G¨V´ZÀÀ³_ÀfÓUÔV÷ 
'ð �n‰n˜QÑ€GÙ$Ó%šW˜�GŒG™WÐ/Ð%¨!¨Q¨Ð/Ð%¨Ñ/×/×/×/Ò/Ð%¨×/×/Ô/Ð%×/×/Ó/¨×/×/×/×/×/×/Ô/ØÐ2 A™JÐ2˜J×2Ñ2Ð2ˆ=Ð2Ñ2×2×2×2Ò2ˆ=Ð2×2×2Ô2ˆ=×2×2Ó2˜J×2×2Ó2Ð2×2×2×2×2×2×2Ö2ØÐ3 Q™ZÐ3˜Z×3Ñ3Ð3ˆ>Ð3Ñ3×3×3×3Ò3ˆ>Ð3×3×3Ô3ˆ>×3×3Ó3˜Z×3×3Ó3Ð3×3×3×3×3×3×3Ö3ä×)Ò)¨'°6¸A¸v¸;ÓG€EØÐˆ5�B‰;×××Òˆ5�B×××××Õˆ5×××Ñˆ5××Õ�B××××××Ñà�N‰N˜1Ñ€EØ�?‰?˜1ÑÐ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Ø�<‰<˜‰?×Ñ Ñ" 1Ñ%×/Ñ/°Ñ2ÐB×9Ñ9ÐB¸UÐBÐ9¸UÑB×B×B×BÓBÐ9¸U×B×BÔBÐ2×B×BÓBÐ9×B×BÓB¸U×B×B×B×B×B×BÖBØ�>‰>˜!ÑÐ,×&Ñ&Ð,¨"Ð,Ð&¨"Ñ,×,×,×,Ó,Ð&¨"×,×,Ô,Ð×,×,Ó,Ð&×,×,Ó,¨"×,×,×,×,×,×,×,÷ 
'Ö	&üò
 &s   ÅA[Æ<[Û
[c                 ó0  • [        / 5      n U R                  S[        [        [        S9S9  SS[
        R                  4SS[
        R                  4SS	[
        R                  4S
S[
        R                  4SS[
        R                  4SS[
        R                  44 H4  u  pnU R                  UU[        S[        U5      S[        U5      4S9S9  M6     [        [        SSSS5      [        SSSS5      /5      n[        US[        5      n[!        U/ 5      nXU4$ )z“A stat-panel page: four value/label atoms in two blocks, one prose line
outside every block, and a footnote inside a block that must keep its role.r'  r‹   rŽ   ú$78B©r  rê  rº   r  úInvestor capital)r  ç¤p=
×£à?r  çìQ¸…ëá?ú165+)rÚ  rê  çffffffæ?r  úBREDS professionals)rÚ  r  rÊ   r	  ú/BREDS invests across Core and Core+ strategies.)r  r¹   rÚ  r  ú%(f) Based on originations since 2019.)g¸…ëQ¸¾?rÚ  çš™™™™™Ù?rh  r   r’   rÜ  rN   z%Global Scale 
$78B 
Investor capital ©r¹   r  rê  rÊ   r  z165+ 
BREDS professionals )rî  r  r»   rÊ   ztext-1)r¥   r›   r   r„   r…   r   r  rŒ  rq  r   r‡   rp   r~   rO   r   rá   r   )rŸ   rN   r*   ri  rí   rÂ   rC  s          r/   Ú_panel_pager  µ  s)  € ô �B‹-€CØ‡L�L˜¤¬F¼6Ñ!B€LÑCà	Ð)¬<×+<Ñ+<Ð=Ø	Ð5´|×7HÑ7HÐIØ	Ð)¬<×+<Ñ+<Ð=Ø	Ð 8¼,×:KÑ:KÐLØ	:Ð<TÔVb×VgÑVgÐhØ	0Ð2JÌL×LaÑLaÐbóÑˆ�5ð 	�‰ØØÜ¨´¸CÓ0@ÈAÌsÐSWËyÈ>ÑZð 	ó 	
ñô ä�VÐFÐH`ÐbjÓkÜ�VÐ:Ð<TÐV^Ó_ð	
ó€Hô ˜ 1¤eÓ,€FÜ˜ Ó#€DØ�fÐÐr1   c                 ó
  ^^• [        5       u  mp[        R                  " TU /SU0[        S/5      5      nSo2U:H  oD(       d¥  [        R
                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =pCTR                   Vs/ s H$  owR                  [        R                  :X  d  M"  UPM&     snm[        T5      nSoƒU:H  o™(       Gd  [        R
                  " SU	4S	X845      S
[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS
S[        R                  " 5       ;   d  [        R                  " T5      (       a  [        R                  " T5      OS[        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=p˜TS   R                    Vs/ s H  oÌR#                  T5      R$                  PM     nnTS   R                    Vs/ s H  oÌR#                  T5      R$                  PM     nnSS/o=U:H  oD(       d¥  [        R
                  " SU4SXÓ45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =pCSS/o>U:H  oD(       d¥  [        R
                  " SU4SXã45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =pCUU4S jTS   R                    5       n['        U5      oÿ(       d¢  SS[        R                  " 5       ;   d  [        R                  " [&        5      (       a  [        R                  " [&        5      OS[        R                  " U5      [        R                  " U5      S.-  n[        [        R                  " U5      5      eS =pOg s  snf s  snf s  snf )Nr'  r  rÀ   rm  Úwrittenro  rp  rÆ   rü   rp   Úgroupsrý   rÿ   r   r   rT   r  r  rÏ   r
  r  rÑ   c              3  óŒ   >#   • U  H9  oR                  T5      R                  R                  TS    R                  :H  v •  M;     g7f)r   N)rÈ  rj  rÉ  r�  )r9   rË  rŸ   r  s     €€r/   r;   ÚJtest_scanned_text_groups_under_the_blocks_the_scan_drew.<locals>.<genexpr>Þ  s5   øé € Ð`ÒM_Àc�{‰{˜3Ó×&Ñ&×+Ñ+¨v°a©y×/AÑ/AÖAÒM_ùs   ƒAArÞ   rß   rà   )r  r   Úgroup_scanned_textr¬   râ   rã   rä   rå   ræ   rç   rè   ré   r  rŠ   Ú
SCAN_BLOCKrp   r_   rÈ  rN   rß   )rC  rÂ   r  rô   rî   ru  rñ   Úgr  rï   rö   r  rË  rÏ   rÑ   rð   rõ   rŸ   r  s                    @@r/   Ú7test_scanned_text_groups_under_the_blocks_the_scan_drewr  Ò  sÝ  ù€ Ü#›Ñ€CˆÜ×%Ò% c¨D¨6°A°v°;Ä
ÈAÈ3ÃÓP€GØÐ�a‰<×××Òˆ7×××××Õˆ7×××Ñˆ7××Õ�a××××××ÑàŸšÓAš�A§v¡v´·±Ñ'@�a™ÑA€FÜˆv‹;Ð˜!Ð˜!Ñ×××Óˆ;×××××ÕŒ3×××ÑŒ3×××××Öˆv×××Ñˆv××Õˆ;××Ó˜!××××××ÓØ-3°A©Y×-?Ò-?Ó@Ò-? c�K‰K˜Ó×!Ô!Ñ-?€DÐ@Ø.4°Q©i×.@Ò.@ÓAÒ.@ s�[‰[˜Ó×"Ô"Ñ.@€EÐAØÐ.Ð/Ð/Ð/Ñ/×/×/×/Ò/ˆ4×/×/×/×/×/Õ/ˆ4×/×/×/Ñ/ˆ4×/×/Õ/Ð/×/×/×/×/×/×/Ñ/ØÐ2Ð3Ð3Ð3Ñ3×3×3×3Ò3ˆ5×3×3×3×3×3Õ3ˆ5×3×3×3Ñ3ˆ5×3×3Õ3Ð3×3×3×3×3×3×3Ñ3å`ÈVÐTUÉY×M_ÒM_Ó`Ð`Œ3Ð`Ó`Ð`Õ`×`×`×`×`×`Ñ`Œ3×`×`×`Ñ`Œ3×`×`Õ`Ð`×`×`Ó`Ð`×`×`×`×`×`Ó`ùò Bùâ@ùÚAs   Ã8!S;ÄS;É!$T Ê$Tc                 óþ  • [        5       u  pn[        R                  " X/SU0[        S/5      5        U R                   Vs/ s HG  o3R
                  c  M  UR
                  R                  U 5      U R                  L d  M;  UR                  PMI     nnSoUU;   of(       d¥  [        R                  " SU4SXT45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS.-  nSSU0-  n[        [        R                   " U5      5      eS =pVS	oUU;   of(       d¥  [        R                  " SU4SXT45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS.-  nSSU0-  n[        [        R                   " U5      5      eS =pVg s  snf )
Nr'  r  rF  ©z%(py1)s in %(py3)sÚ
body_texts©rÖ   rþ   rp  rÆ   r  )r  r   r  r¬   rs  rj  rÈ  rÄ  rN   râ   rã   rç   rä   rå   ræ   rè   ré   )	rŸ   rC  rÂ   r�   r  ró   rô   ru  rñ   s	            r/   ÚDtest_text_outside_every_block_and_labelled_text_stay_where_they_werer  á  s.  € Ü#›Ñ€CˆvÜ×Ò˜C ¨!¨V¨´jÀ!À³oÔFØ"%§)¢)Ój¢)˜Q¯x©x“&ÈÏÉ×HXÑHXÐY\ÓH]Ðad×aiÑaiÐHi“&�!—&”&¡)€JÐjØ<ÐJÀ
ÑJ×J×J×JÒJÐ<×J×JÔJÐ<×J×J×J×J×JÔJÀ
×J×J×JÑJÀ
×J×J×J×J×J×JÓJØ2Ð@°jÑ@×@×@×@Ò@Ð2×@×@Ô@Ð2×@×@×@×@×@Ô@°j×@×@×@Ñ@°j×@×@×@×@×@×@Ô@ùò ks   ÁG:Á&G:Á?G:c                 óˆ  • [        5       u  pn[        R                  " X/SU0[        S/5      5        U R                  R
                   Vs/ s H  o3R                  PM     nnUR                  U R                  S   R                  5      nSoeU:H  ow(       d¥  [        R                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n	[!        [        R"                  " U	5      5      eS =pvg s  snf )	Nr'  r   rÀ   rm  Ú	group_posro  rp  rÆ   )r  r   r  r¬   rÄ  r_   rÉ  rÊ  r  r�  râ   rã   rä   rå   ræ   rç   rè   ré   )
rŸ   rC  rÂ   rË  Úrefsr!  rô   rî   ru  rñ   s
             r/   Ú;test_a_group_keeps_the_first_members_reading_order_positionr#  é  sÉ   € Ü#›Ñ€CˆvÜ×Ò˜C ¨!¨V¨´jÀ!À³oÔFØ #§¡× 1Ò 1Ó2Ò 1˜�HŒHÑ 1€DÐ2Ø—
‘
˜3Ÿ:™: a™=×1Ñ1Ó2€IàÐ˜‰>×××Òˆ9×××××Õˆ9×××Ñˆ9××Õ˜××××××Òùò 3s   ÁD?c            
     ó„  • [        / 5      n U R                  S[        [        [        S9S9  U R                  [        R                  S[        S[        S5      SS9S9  [        [        S	S
SS5      /5      n[        US[        5      n[        R                  " U [!        U/ 5      /SU0[#        S/5      5      nSoCU:H  oU(       d¥  [$        R&                  " SU4SX445      S[(        R*                  " 5       ;   d  [$        R,                  " U5      (       a  [$        R.                  " U5      OS[$        R.                  " U5      S.-  nSSU0-  n[1        [$        R2                  " U5      5      eS =pTU R4                  n/ o…U:H  o™(       dº  [$        R&                  " SU	4SXX45      S[(        R*                  " 5       ;   d  [$        R,                  " U 5      (       a  [$        R.                  " U 5      OS[$        R.                  " U5      [$        R.                  " U5      S.-  nSSU0-  n
[1        [$        R2                  " U
5      5      eS =n=p˜g )Nr'  r‹   rŽ   r  r  )r   r'  r’   rÜ  rN   zGlobal Scaler  r  r   rÀ   rm  r  ro  rp  rÆ   )z.%(py2)s
{%(py2)s = %(py0)s.groups
} == %(py5)srŸ   rÃ   rÇ   rÈ   )r¥   r›   r   r„   r…   rq  r   r  r   r‡   r~   rO   r   rá   r   r  r   r¬   râ   rã   rä   rå   ræ   rç   rè   ré   r  )rŸ   rí   rÂ   r  rô   rî   ru  rñ   rï   rð   rò   s              r/   Ú(test_a_block_with_one_item_gets_no_groupr%  ò  ss  € Ü
�B‹-€CØ‡L�L˜¤¬F¼6Ñ!B€LÑCØ‡L�LÜ×ÑØÜ A¬KÐ8PÓ,QÐ\bÑcð ñ ô
 œX f¨nÐ>VÐX`ÓaÐbÓc€HÜ˜ 1¤eÓ,€FÜ×%Ò% c¬L¸ÀÓ,DÐ+EÈÈ6À{ÔT^Ð`aÐ_bÓTcÓd€GØÐ�a‰<×××Òˆ7×××××Õˆ7×××Ñˆ7××Õ�a××××××ÑØ�:‰:Ð˜Ð˜Ñ×××Òˆ:×××××Õˆ3×××Ñˆ3××Õˆ:××Ó˜××××××Ôr1   c                 ó„  • [        5       u  pn[        R                  " X/SU0[        S/5      5        [        R                  " X/SU0[        S/5      5      nSoCU:H  oU(       d¥  [        R
                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =pTU R                   Vs/ s H$  oˆR                  [        R                  :X  d  M"  UPM&     nn[        U5      n	S	o©U
:H  o»(       d×  [        R
                  " SU4S
Xš45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U	5      [        R                  " U
5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n	=pºg s  snf )Nr'  r   rÀ   rm  Úwritten_againro  rp  rÆ   r  )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)srp   )rÄ   rÅ   r×   rÈ   rY  r*  )r  r   r  r¬   râ   rã   rä   rå   ræ   rç   rè   ré   r  rŠ   r  rp   )rŸ   rC  rÂ   r'  rô   rî   ru  rñ   r  rð   r2  r  rò   r6  s                 r/   Ú#test_grouping_twice_changes_nothingr(    sP  € Ü#›Ñ€CˆvÜ×Ò˜C ¨!¨V¨´jÀ!À³oÔFÜ×+Ò+¨C°¸!¸V¸ÄjÐRSÐQTÃoÓV€MØÐ˜AÑ×××Òˆ=×××××Õˆ=×××Ñˆ=××Õ˜A××××××ÑØŸ:š:ÓCš:�a¯©´4·?±?Ñ)B—™:ÐIÐCŒ3ÐCÓDÐIÈÐIÈÑI×I×I×IÒIÐD×I×I×I×I×IÕIŒ3×I×I×IÑIŒ3×I×IÕIÐC×I×IÓIÐD×I×IÓIÈ×I×I×I×I×I×IÖIùÒCs   Ä!H=Ä?H=c            
     óÞ  • [        5       u  pn[        R                  " X/SU0[        S/5      5        [        R
                  " U R                  5       5      nUR                   Vs/ s H$  oDR                  [        R                  :X  d  M"  UPM&     nnU VVs/ s H7  oDR                   Vs/ s H  ofR                  U5      R                  PM     snPM9     nnnSS/SS//o‡U:H  o™(       do  [        R                  " SU	4SXx45      [        R                  " U5      [        R                  " U5      S.-  n
S	S
U
0-  n[!        [        R"                  " U5      5      eS =n=p˜g s  snf s  snf s  snnf )Nr'  r  r  r
  r  rÀ   rÔ   rÕ   rØ   rÙ   )r  r   r  r¬   r   Úmodel_validateÚexport_to_dictr  rŠ   r  r_   rÈ  rN   râ   rã   rç   rè   ré   )rŸ   rC  rÂ   Úreloadedr  r  rË  ró   rð   rô   rõ   rö   s               r/   Ú9test_a_grouped_document_round_trips_through_serializationr-  	  s?  € Ü#›Ñ€CˆvÜ×Ò˜C ¨!¨V¨´jÀ!À³oÔFÜ×-Ò-¨c×.@Ñ.@Ó.BÓC€HØ!ŸšÓFš�A¯F©F´d·o±oÑ,E�a™€FÐFÙHNÔOÊÀ1·:²:Ó>²:¨C�[‰[˜Ó"×'Ô'±:Ô>Éð ÑOØ	Ð#Ð$Ø	Ð&Ð'ðTð ð Tñ ÷ ó ïé ôÐO÷ ñ ïé ðÐO÷ ð ïé ðð T÷ ÷ ÷ ñ ïé ÷÷ ð ùò GùÚ>ùÓOs$   Á%!EÂ
EÂE)Â*$E$ÃE)Å$E)c                 ó0  • [        / 5      n U R                  S[        [        [        S9S9  S HA  u  pU R                  [        R                  U[        S[        U5      S[        U5      4S9S9  MC     [        [        SS	//S
S9/5      n[        US[        5      n[        U/ 5      n[         R"                  " X/SU0[%        S/5      5      nSovU:H  oˆ(       d¥  [&        R(                  " SU4SXg45      S[*        R,                  " 5       ;   d  [&        R.                  " U5      (       a  [&        R0                  " U5      OS[&        R0                  " U5      S.-  n	SSU	0-  n
[3        [&        R4                  " U
5      5      eS=p‡U R6                   Vs/ s H$  o»R8                  [         R:                  :X  d  M"  UPM&     nnU VVs/ s H7  o»R<                   Vs/ s H  oÝR?                  U 5      R@                  PM     snPM9     nnnSS/SS//oþU:H  ow(       do  [&        R(                  " SU4SXï45      [&        R0                  " U5      [&        R0                  " U5      S.-  nSSU0-  n[3        [&        R4                  " U5      5      eS=n=pgs  snf s  snf s  snnf )z¨A panel collage the scan read as a table still partitions the page: each
cell is a block, so a value and its label bind at the cell and two cells'
contents never merge.rd  r‹   rŽ   ))ú$1.6 billion)r  çáz®GáÚ?çìQ¸…ëÑ?ç®GázÞ?)úTotal Financing Capacity)r  r  r  rî  )ú~ 67%)rÚ  r0  r  r2  )úNon-Mark-toMarket Borrowings)rÚ  r  r¼   rî  r   r’   rÜ  )z%$1.6 billion Total Financing Capacity)r¹   r  rê  rÚ  )z"~67% Non-Mark-to-Market Borrowings)rî  r  r»   rÚ  )r¹   gffffffÖ?r»   rl  r½   r  rÀ   rm  r  ro  rp  rÆ   Nr/  r3  r4  r5  rÔ   rÕ   rØ   rÙ   )!r¥   r›   r   r„   r…   rq  r   r  r   r‡   rp   r~   rR   r   rá   r   r   r  r¬   râ   rã   rä   rå   ræ   rç   rè   ré   r  rŠ   r  r_   rÈ  rN   )rŸ   rN   r*   rí   rÂ   rC  r  rô   rî   ru  rñ   r  r  rË  ró   rð   rõ   rö   s                     r/   Ú;test_a_table_nodes_cells_are_blocks_and_bind_value_to_labelr6    s,  € ô �B‹-€CØ‡L�L˜¤¬F¼6Ñ!B€LÑCó‰	ˆð 	�‰Ü×#Ñ#ØÜ¨´¸CÓ0@ÈAÌsÐSWËyÈ>ÑZð 	ó 	
ñô äð \ØXððð -ñð
	
ó€Hô ˜ 1¤eÓ,€FÜ˜ Ó#€DÜ×%Ò% c¨6°A°v°;Ä
ÈAÈ3ÃÓP€GØÐ�a‰<×××Òˆ7×××××Õˆ7×××Ñˆ7××Õ�a××××××ÑØŸšÓAš�A§v¡v´·±Ñ'@�a™€FÐAÙCIÔJÂ6¸a¯jªjÓ9ªj s�[‰[˜Ó×"Ô"©jÔ9Á6ð ÑJØ	Ð3Ð4Ø	Ð0Ð1ðOð ð Oñ ÷ ó ïé ôÐJ÷ ñ ïé ðÐJ÷ ð ïé ðð O÷ ÷ ÷ ñ ïé ÷÷ ð ùò BùÚ9ùÓJs$   Æ!JÆ3JÇ JÇ$JÇ7JÊJc                 óð	  • [        / 5      n U R                  S[        [        [        S9S9  [        [        S//SSS9/5      n[        [        US[        5      / 5      n[        R                  " U/U [        S/5      5      n[        U5      nSoTU:H  of(       Gd  [        R                  " S	U4S
XE45      S[         R"                  " 5       ;   d  [        R$                  " [        5      (       a  [        R&                  " [        5      OSS[         R"                  " 5       ;   d  [        R$                  " U5      (       a  [        R&                  " U5      OS[        R&                  " U5      [        R&                  " U5      S.-  nSSU0-  n[)        [        R*                  " U5      5      eS =n=pe/ n	SoCS   oTU;   ofo¦(       a  So³S   oËU;   oÝn
U
(       Gd  [        R                  " SU4SXE45      [        R&                  " U5      [        R&                  " U5      S.-  nSSU0-  o‰R-                  U5        U(       aa  [        R                  " SW4SWW45      [        R&                  " U5      [        R&                  " U5      S.-  nSSU0-  oùR-                  U5        [        R.                  " U	S5      0 -  nSSU0-  n[)        [        R*                  " U5      5      eS =n
=n	=n=n=n=n=pÜSUR0                  S   l        [        R                  o’/nS/n[        U5      nU	" UU U5      n/ nUU:H  oÌ(       Gdµ  [        R                  " S	U4SUU45      S[         R"                  " 5       ;   d  [        R$                  " [        5      (       a  [        R&                  " [        5      OS[        R&                  " U	5      [        R&                  " U5      S[         R"                  " 5       ;   d  [        R$                  " U 5      (       a  [        R&                  " U 5      OSS [         R"                  " 5       ;   d  [        R$                  " [        5      (       a  [        R&                  " [        5      OS [        R&                  " U5      [        R&                  " U5      [        R&                  " U5      [        R&                  " U5      S!.	-  nS"S#U0-  n[)        [        R*                  " U5      5      eS =n	=n=n=n=n=nng )$Nrd  r‹   rŽ   r  ©r  rº   r
  rÚ  útable-1rö  rT   rÀ   rü   rp   r   rý   rÿ   r   r   zno table or picturerF  r²  r³  r´  rµ  r¶  r¸  r-  r¹  rº  Ú	extracted©z‰%(py12)s
{%(py12)s = %(py2)s
{%(py2)s = %(py0)s.unhomed_tables
}(%(py4)s, %(py5)s, %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
})
} == %(py15)sr   rŸ   r¬   ©	rÄ   rÅ   r×   rÆ   rÙ   r   rX  rÅ  r{  úassert %(py17)srÆ  )r¥   r›   r   r„   r…   r~   rR   r   r   rá   r   Úunhomed_tablesr¬   rp   râ   rã   rä   rå   ræ   rç   rè   ré   rs   r0  r  Útable_id)rŸ   rí   rC  r   rô   r  rï   rö   r  rî   ró   r»  r¼  r3  r½  r7  r¾  r9  rð   r]  rÐ  rÍ  r5  Ú@py_format16s                           r/   Ú:test_a_scanned_table_nothing_homed_is_flagged_never_silentrA  =  sÊ  € Ü
�B‹-€CØ‡L�L˜¤¬F¼6Ñ!B€LÑCÜœY¨k¨]¨OÐAUÐ_hÑiÐjÓk€HÜœ H¨a´Ó7¸Ó<€DÜ×Ò  ¨¬Z¸¸«_Ó=€EÜˆu‹:Ð˜Ð˜‰?×××Óˆ:×××××ÕŒ3×××ÑŒ3×××××Öˆu×××Ñˆu××Õˆ:××Ó˜××××××ÓÙFˆ9ÐF˜a™ÐF˜Ñ ×FÐ%:ÐFÀA¹hÐF¸hÑ%F×F×F×FÕFˆ9×F×FÔFˆ9×F×FÓF˜×F×F×F×F×F×F×FÒFÐ%:¸h×F×FÔFÐ%:×F×FÓF¸h×F×F×F×F×F×F×F×F×F×F×F×F×FÖFà)€D‡K�K��NÔÜ×ÑÐB˜vÐB¸°sÐB¬J°s«OÐBÑ˜v s¨OÓ<ÐBÀÐBÐ<ÀÑB×B×B×BÓBÐ<À×B×B×B×B×BÕBŒ4×B×B×BÑBŒ4×B×BÕBÐ×B×BÓB˜v×B×B×B×B×BÔB s×B×B×BÑB s×B×B×B×B×BÖB¬J×B×B×BÑB¬J×B×BÕB°s×B×BÓB¨O×B×BÓBÐ<×B×BÓBÀ×B×B×B×B×B×B×BÕBr1   c                 ó  • SSK Jn   [        / 5      nUR                  S[	        [
        [        S9S9  UR                  U " / SSS9[        S[        S5      SS	9S
9  [        [        S//SSS9/5      n[        [        US[        5      / 5      n[        R                   oC/nS/n[#        U5      ot" XQU5      n/ o˜U	:H  oª(       Gd´  [$        R&                  " SU
4SX‰45      S[(        R*                  " 5       ;   d  [$        R,                  " [        5      (       a  [$        R.                  " [        5      OS[$        R.                  " U5      [$        R.                  " U5      S[(        R*                  " 5       ;   d  [$        R,                  " U5      (       a  [$        R.                  " U5      OSS[(        R*                  " 5       ;   d  [$        R,                  " ["        5      (       a  [$        R.                  " ["        5      OS[$        R.                  " U5      [$        R.                  " U5      [$        R.                  " U5      [$        R.                  " U	5      S.	-  nSSU0-  n[1        [$        R2                  " U5      5      eS=n=n=n=n=n=p©g)zISet-of-Mark owns text-layer tables; the scan re-reading one is by design.r   )Ú	TableDatard  r‹   rŽ   )Útable_cellsÚnum_rowsÚnum_colsr8  r‘   r’   )Údatar•   r  r9  rö  rÀ   r;  r   rŸ   r¬   r<  r=  rÆ  N)Údocling_core.types.doc.documentrC  r¥   r›   r   r„   r…   Ú	add_tabler   r‡   r~   rR   r   r   rá   r   r>  r¬   râ   rã   rä   rå   ræ   rç   rè   ré   )rC  rŸ   rí   rC  rî   rð   r]  rÐ  rÍ  r5  r¼  r@  r¾  s                r/   ÚCtest_a_scanned_table_over_a_document_table_is_redundancy_not_a_flagrJ  J  s‘  € å9ä
�B‹-€CØ‡L�L˜¤¬F¼6Ñ!B€LÑCØ‡M�MÙ 2°¸AÑ>Ü A¬KÐ8LÓ,MÐX^Ñ_ð ñ ô œY¨k¨]¨OÐAUÐ_hÑiÐjÓk€HÜœ H¨a´Ó7¸Ó<€DÜ×ÑÐB˜vÐB¸°sÐB¬J°s«OÐBÐ˜v¨OÓ<ÐBÀÐBÀÑB×B×B×BÓBÐ<×B×B×B×B×BÕBŒ4×B×B×BÑBŒ4×B×BÕBÐ×B×BÓB˜v×B×B×B×B×BÔB s×B×B×BÑB s×B×B×B×B×BÖB¬J×B×B×BÑB¬J×B×BÕB°s×B×BÓB¨O×B×BÓBÐ<×B×BÓBÀ×B×B×B×B×B×B×BÔBr1   c                óò  • SSK Jn  U S-  R                  [        R                  " [        / 5      5      SS9  U S-  R                  [        R                  " [        5       5      SS9  U S-  R                  [        R                  " [        / 5      5      SS9  U S-  R                  [        R                  " [        5       5      SS9  U" S	[        U 5      S
1S9nU Vs/ s H  o3R                  PM     nnS/oTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peg s  snf )Nr   )Ú_stored_track_pageszdeck.p4.ade.jsonúutf-8©Úencodingr?  r¿   zdeck.p9.ade.dpt2.jsonÚdeckr¾   )Ú	nominatedr'  rÀ   rÔ   rÕ   rØ   rÙ   )Úquber.core.figures.orchestratorrL  Ú
write_textÚjsonÚdumpsr~   Ú_dpt2_responser²   rY   râ   rã   rç   rè   ré   )	Útmp_pathrL  ÚextraÚnró   rð   rô   rõ   rö   s	            r/   Ú5test_a_stored_dpt3_response_beyond_nomination_is_readrZ  Y  s  € ÝCàÐ"Ñ"×.Ñ.¬t¯zªz¼,ÀrÓ:JÓ/KÐV]Ð.Ñ^ØÐ"Ñ"×.Ñ.¬t¯zªz¼.Ó:JÓ/KÐV]Ð.Ñ^ØÐ"Ñ"×.Ñ.¬t¯zªz¼,ÀrÓ:JÓ/KÐV]Ð.Ñ^ØÐ'Ñ'×3Ñ3´D·J²J¼~Ó?OÓ4PÐ[bÐ3Ñcá ¬¨H«À!ÀÑE€Eñ "Ó"šE�q�FŒF™EÐ)Ð" q cÐ) cÑ)×)×)×)Ò)Ð"×)×)Ô)Ð"×)×)Ó) c×)×)×)×)×)×)Ô)ùÒ"s   ÃE4c                 ó8   • [        [        SS/SS//SSS9/5      $ )zIA map-legend table: printed values the parse's text layer never captured.)Ú	Northeast©ç®Gáz®ç?ç¸…ëQ¸Î?çáz®Gáê?r1  )ú17 %)ç…ëQ¸…ë?r_  ç®Gázî?r1  )Ú	Southwest)r^  r  r`  çÃõ(\�ÂÕ?)ra  )rb  r  rc  re  )g\�Âõ(\ç?gq=
×£pÍ?g¸…ëQ¸î?r0  útable-0rö  )r~   rR   r(   r1   r/   Ú_legend_responserg  j  s;   € ääà<Ð>`ÐaØ<Ð>`Ðaðð -Ø!ñð		
óð r1   c                 óî  • SSK Jn   SSKJn  SSKJn  SSKJn  [        / 5      nUR                  S[        [        [        S9S9  [        [        5       S[        5      n[!        U/ 5      n["        R$                  " 5        n['        [)        U5      S	-  SS
9nU" X€" [*        S 5      [,        R.                  " S5      S5      n	[,        R0                  " U" XF/U[3        S/5      X‘" 5       SS95      u  p«S S S 5        / nWU:H  oÝ(       d¥  [4        R6                  " SU4SX¼45      S[8        R:                  " 5       ;   d  [4        R<                  " U5      (       a  [4        R>                  " U5      OS[4        R>                  " U5      S.-  nSSU0-  n[A        [4        RB                  " U5      5      eS =pÜ[E        W
5      nSnUU:H  nU(       Gd  [4        R6                  " SU4SUU45      S[8        R:                  " 5       ;   d  [4        R<                  " [D        5      (       a  [4        R>                  " [D        5      OSS[8        R:                  " 5       ;   d  [4        R<                  " U
5      (       a  [4        R>                  " U
5      OS[4        R>                  " U5      [4        R>                  " U5      S.-  nSSU0-  n[A        [4        RB                  " U5      5      eS =n=nnURF                  S   nURH                  nS nUULnU(       d…  [4        R6                  " SU4SUU45      [4        R>                  " U5      [4        R>                  " U5      [4        R>                  " U5      S.-  nSSU0-  n[A        [4        RB                  " U5      5      eS =n=n=nn[J        RL                  " XF/U
[3        S/5      5      n/ nUU:H  oÝ(       d¦  [4        R6                  " SU4SUU45      S[8        R:                  " 5       ;   d  [4        R<                  " U5      (       a  [4        R>                  " U5      OS[4        R>                  " U5      S.-  nSSU0-  n[A        [4        RB                  " U5      5      eS =pÜURF                  n[E        U5      nSnUU:H  nU(       Gd#  [4        R6                  " SU4SUU45      S[8        R:                  " 5       ;   d  [4        R<                  " [D        5      (       a  [4        R>                  " [D        5      OSS [8        R:                  " 5       ;   d  [4        R<                  " U5      (       a  [4        R>                  " U5      OS [4        R>                  " U5      [4        R>                  " U5      [4        R>                  " U5      S!.-  nS"S#U0-  n[A        [4        RB                  " U5      5      eS =n=n=nnURF                  S   RN                  RP                   Vs/ s H  nURR                  PM     snS S$ nS%S&/nUU:H  oÌ(       dp  [4        R6                  " SU4S'UU45      [4        R>                  " U5      [4        R>                  " U5      S(.-  nS)S*U0-  n[A        [4        RB                  " U5      5      eS =n=nnURF                  S   nURT                  oÄRF                  S   nURV                  nUU:H  nU(       dš  [4        R6                  " SU4S+UU45      [4        R>                  " U5      [4        R>                  " U5      [4        R>                  " U5      [4        R>                  " U5      S,.-  nS"S#U0-  n[A        [4        RB                  " U5      5      eS =n=n=n=nn[J        RX                  oÖ/nS/n[3        U5      nU" UUU5      n/ nUU:H  nU(       Gdµ  [4        R6                  " SU4S-UU45      S.[8        R:                  " 5       ;   d  [4        R<                  " [J        5      (       a  [4        R>                  " [J        5      OS.[4        R>                  " U5      [4        R>                  " U5      S [8        R:                  " 5       ;   d  [4        R<                  " U5      (       a  [4        R>                  " U5      OS S/[8        R:                  " 5       ;   d  [4        R<                  " [2        5      (       a  [4        R>                  " [2        5      OS/[4        R>                  " U5      [4        R>                  " U5      [4        R>                  " U5      [4        R>                  " U5      S0.	-  n S1S2U 0-  n![A        [4        RB                  " U!5      5      eS =n=n=n=n=n=nng ! , (       d  f       GNy= fs  snf )3Nr   ©Úcast©ÚMockCellReader©ÚTableAssembly©Úcapture_tablesrU  r‹   rŽ   rù  rª   rT   éÈ   T©ÚorphansrÀ   rm  rn  ro  rp  rÆ   rü   rp   r  rý   rÿ   r   ry  )z4%(py3)s
{%(py3)s = %(py1)s.table_id
} is not %(py6)srN  Úinsert_errors)zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.tables
})
} == %(py8)srŸ   r¤  rW  rX  r  r\  ra  rÔ   rÕ   rØ   rÙ   )zO%(py3)s
{%(py3)s = %(py1)s.table_ref
} == %(py8)s
{%(py8)s = %(py6)s.self_ref
})rÖ   rþ   rÙ   r   r;  r   r¬   r<  r=  rÆ  )-Útypingrj  Úquber.agents.cell_readerrl  Ú*quber.core.extractors.set_of_mark.assemblern  Úquber.core.figures.capturerp  r¥   r›   r   r„   r…   r   rg  rá   r   rú  rû  r¶   r   r   rü  Ú	Semaphorerý  r¬   râ   rã   rä   rå   ræ   rç   rè   ré   rp   r  r?  r   Úinsert_orphan_tablesrG  rD  rN   Ú	table_refr�  r>  )"rj  rl  rn  rp  rŸ   rÂ   rC  rÿ  r   Úassemblyr  rn  rô   rî   ru  rñ   r  rï   rö   r  ró   rt  r]  r2  r^  r{   rð   rõ   rÐ  rÍ  r5  r¼  r@  r¾  s"                                     r/   Ú<test_a_grid_over_nothing_is_captured_and_inserted_as_a_tabler}  z  s  € Ýå7ÝHÝ9ä
�B‹-€CØ‡L�L˜¤¬F¼6Ñ!B€LÑCÜÔ)Ó+¨Q´Ó6€FÜ˜ Ó#€Dä	×	$Ò	$Ô	&¨#ÜœD ›I¨	Ñ1¸Ñ;ˆÙ  ¨¬c°4«¼'×:KÒ:KÈAÓ:NÐPSÓTˆÜ ŸšÙ˜3 ¨´
¸A¸3³ÀÈ>ÓK[ÐeiÑjó
‰ˆ÷ 
'ð Ðˆ6�R‰<×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�R××××××ÑÜˆv‹;Ð˜!Ðˆ;˜!Ñ×××Ôˆ;˜!×××××ÕŒ3×××ÑŒ3×××××Öˆv×××Ñˆv××Õˆ;××Ó˜!××××××ÔØ�;‰;�q‰>Ð.ˆ>×"Ñ"Ð.¨$Ð.Ð"¨$Ð.×.×.×.Ó.Ð"¨$×.×.Ô.ˆ>×.×.Ó.Ð"×.×.Ó.¨$×.×.×.×.×.×.Ö.ä×-Ò-¨c°6¸6Ä:ÈqÈcÃ?ÓS€MØÐˆ=˜BÑ×××Òˆ=˜B×××××Õˆ=×××Ñˆ=××Õ˜B××××××ÑØ�z‰zÐŒ3ˆz‹?Ð˜aÐˆ?˜aÑ×××Ôˆ?˜a×××××ÕŒ3×××ÑŒ3×××××Öˆs×××Ñˆs××Õˆz××Óˆ?××Ó˜a××××××ÖØŸJ™J q™M×.Ñ.×:Ò:Ó;Ò:�qˆA�FŒFÑ:Ñ;¸B¸QÐ?ÐXÀKÐQWÐCXÐXÐ?ÐCXÑX×X×X×XÒXÐ?ÐCX×X×XÔXÐ?×X×XÓXÐCX×X×X×X×X×X×XÔXØ�;‰;�q‰>Ð=ˆ>×#Ñ#Ð=§z¡z°!¡}Ð= }×'=Ñ'=Ð=Ð#Ð'=Ñ=×=×=×=Ó=Ð#Ð'=×=×=Ô=ˆ>×=×=Ó=Ð#×=×=Ó= }×=×=Ó=Ð'=×=×=×=×=×=×=×=Ð=ä×ÑÐB˜vÐB¸°sÐB¬J°s«OÐBÑ˜v s¨OÓ<ÐBÀÐBÐ<ÀÑB×B×B×BÔBÐ<À×B×B×B×B×BÕBŒ4×B×B×BÑBŒ4×B×BÕBÐ×B×BÓB˜v×B×B×B×B×BÔB s×B×B×BÑB s×B×B×B×B×BÖB¬J×B×B×BÑB¬J×B×BÕB°s×B×BÓB¨O×B×BÓBÐ<×B×BÓBÀ×B×B×B×B×B×B×BÕB÷! 
'Ö	&üò <s   Á>A0e ×e2å 
e/c                 óB  • SSK Jn   SSKJn  SSKJn  SSKJn  [        / 5      nUR                  S[        [        [        S9S9  UR                  [        R                  S	[!        S[#        S
5      SS9S9  [%        ['        [)        5       S[*        5      / 5      n[,        R.                  " 5        n[1        [3        U5      S-  SS9nU" Xp" [4        S5      [6        R8                  " S5      S5      n[6        R:                  " U" XE/U[=        S/5      X�" 5       SS95      u  pšSSS5        / nW	U:H  oÌ(       d¥  [>        R@                  " SU4SX›45      S[B        RD                  " 5       ;   d  [>        RF                  " U	5      (       a  [>        RH                  " U	5      OS[>        RH                  " U5      S.-  nSSU0-  n[K        [>        RL                  " U5      5      eS=pËURN                  S   oÿRP                  nSnUUL nU(       d…  [>        R@                  " SU4SUU45      [>        RH                  " U5      [>        RH                  " U5      [>        RH                  " U5      S.-  nSSU0-  n[K        [>        RL                  " U5      5      eS=n=n=nng! , (       d  f       GNy= f) z�A stat panel's strings the parse does hold belong to the block grouping;
inserting the scan's grid would state the content twice.r   ri  rk  rm  ro  rU  r‹   rŽ   r\  r]  )r   r¾   r’   rÜ  rù  rª   NrT   rq  Trr  rÀ   rm  r  ro  rp  rÆ   r  ©z0%(py3)s
{%(py3)s = %(py1)s.table_id
} is %(py6)srN  rÿ   r   ))ru  rj  rv  rl  rw  rn  rx  rp  r¥   r›   r   r„   r…   rq  r   r  r   r‡   r   r   rg  rá   rú  rû  r¶   r   r   rü  ry  rý  r¬   râ   rã   rä   rå   ræ   rç   rè   ré   r  r?  ©rj  rl  rn  rp  rŸ   rC  rÿ  r   r|  r  Ú_errorsrô   rî   ru  rñ   ró   r  rï   rö   r  s                       r/   Ú,test_a_grid_over_parse_text_is_not_an_orphanr‚  ™  sÆ  € õ å7ÝHÝ9ä
�B‹-€CØ‡L�L˜¤¬F¼6Ñ!B€LÑCØ‡L�LÜ×ÑØÜ A¬KÐ8PÓ,QÐ\bÑcð ñ ô
 œÔ$4Ó$6¸¼5ÓAÀ2ÓF€Dä	×	$Ò	$Ô	&¨#ÜœD ›I¨	Ñ1¸Ñ;ˆÙ  ¨¬c°4«¼'×:KÒ:KÈAÓ:NÐPSÓTˆÜ!Ÿ+š+Ù˜3 ¨´
¸A¸3³ÀÈ>ÓK[ÐeiÑjó
‰ˆ÷ 
'ð Ðˆ6�R‰<×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�R××××××ÑØ�;‰;�q‰>Ð*×"Ñ"Ð* dÐ*Ð" dÐ*×*×*×*Ó*Ð" d×*×*Ô*ˆ>×*×*Ó*Ð"×*×*Ó* d×*×*×*×*×*×*×*÷ 
'Ö	&ús   Â-A0JÊ
Jc                 óâ  • SSK Jn   SSKJn  SSKJn  SSKJn  [        / 5      nUR                  S[        [        [        S9S9  [        [        [        5       S[         5      / 5      n["        R$                  " 5        n['        [)        U5      S	-  SS
9nU" Xp" [*        S5      [,        R.                  " S5      S5      n[,        R0                  " U" XE/U[3        S/5      X�" 5       5      5      u  pšSSS5        / nW	U:H  oÌ(       d¥  [4        R6                  " SU4SX›45      S[8        R:                  " 5       ;   d  [4        R<                  " U	5      (       a  [4        R>                  " U	5      OS[4        R>                  " U5      S.-  nSSU0-  n[A        [4        RB                  " U5      5      eS=pËURD                  S   oÿRF                  nSnUUL nU(       d…  [4        R6                  " SU4SUU45      [4        R>                  " U5      [4        R>                  " U5      [4        R>                  " U5      S.-  nSSU0-  n[A        [4        RB                  " U5      5      eS=n=n=nng! , (       d  f       GNy= f)zfThe dpt-2 path's behavior, unchanged: capture with default arguments
leaves a grid over nothing alone.r   ri  rk  rm  ro  rU  r‹   rŽ   rù  rª   NrT   rq  rÀ   rm  r  ro  rp  rÆ   r  r  rN  rÿ   r   )$ru  rj  rv  rl  rw  rn  rx  rp  r¥   r›   r   r„   r…   r   r   rg  rá   rú  rû  r¶   r   r   rü  ry  rý  r¬   râ   rã   rä   rå   ræ   rç   rè   ré   r  r?  r€  s                       r/   Ú>test_without_the_orphan_tier_an_unclaimed_grid_stays_unclaimedr„  µ  s‘  € õ å7ÝHÝ9ä
�B‹-€CØ‡L�L˜¤¬F¼6Ñ!B€LÑCÜœÔ$4Ó$6¸¼5ÓAÀ2ÓF€Dä	×	$Ò	$Ô	&¨#ÜœD ›I¨	Ñ1¸Ñ;ˆÙ  ¨¬c°4«¼'×:KÒ:KÈAÓ:NÐPSÓTˆÜ!Ÿ+š+Ù˜3 ¨´
¸A¸3³ÀÈ>ÓK[Ó\ó
‰ˆ÷ 
'ð Ðˆ6�R‰<×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�R××××××ÑØ�;‰;�q‰>Ð*×"Ñ"Ð* dÐ*Ð" dÐ*×*×*×*Ó*Ð" d×*×*Ô*ˆ>×*×*Ó*Ð"×*×*Ó* d×*×*×*×*×*×*×*÷ 
'Ö	&ús   Á<A1IÉ
I.c            	     ó2   • SSSSSSSSS.S	S
.S./SSSS.S.$ )Nza chartÚc1rB   r  rº   r
  rÊ   rÎ   r   )r*   rY   )rE   rD   rm   r^   g      @zjob-v1zdpt-2-20260410)Úcredit_usagerh   rê   )rm   Úchunksro   r(   r(   r1   r/   rV  rV  Ï  sD   € àð Ø Ø%Ø.1¸#ÈÐWZÑ%[ÐefÑgñ	ð
ð &)°HÐIYÑZñð r1   c                ó(   ^ ^• / mSSUU 4S jjjnUT4$ )Nc              “  ó2   >#   • TR                  U5        T$ 7fr§   )rs   )r   rY   rJ  Úcallsrí   s      €€r/   rC  Ú_fake_scan.<locals>.scaná  s   øé € Ø�‰�TÔØˆùs   ƒ)Úunused)r   r   rY   ÚintrJ  r²   ÚreturnúDict[str, Any]r(   )rí   rC  r‹  s   ` @r/   Ú
_fake_scanr‘  Þ  s   ù€ Ø€E÷ò ð �ˆ;Ðr1   c                ó
  • U S-  R                  [        R                  " [        / 5      5      SS9  [	        [        / 5      5      u  p#UR                  SU5        [        R                  " [        [        S5      SS[        [        U 5      5      5      u  pEnSovUL oˆ(       d¥  [        R                  " S	U4S
Xg45      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OS[        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS =p‡/ osU:H  oˆ(       d¥  [        R                  " SU4SX745      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OS[        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS =p‡US   S   nSoËU:H  ow(       do  [        R                  " SU4SX¼45      [        R"                  " U5      [        R"                  " U5      S.-  nSSU0-  n[%        [        R&                  " U5      5      eS =n=p|g )Nr?  rM  rN  ú)quber.core.figures.orchestrator.scan_pagerù  rP  r>  Tr  ©z%(py0)s is %(py3)srA  ro  rp  rÆ   rÀ   rm  r‹  rn   rD   r`   rÔ   rÕ   rØ   rÙ   )rS  rT  rU  r~   r‘  Úsetattrrü  rý  r    r   rá   r²   râ   rã   rä   rå   ræ   rç   rè   ré   )rW  ÚmonkeypatchÚfaker‹  rí   Ú	_artifactrA  rô   rî   ru  rñ   ró   rð   rõ   rö   s                  r/   Ú8test_a_matching_stored_response_is_reused_without_a_scanr™  è  s‚  € ØÐ"Ñ"×.Ñ.¬t¯zªz¼,ÀrÓ:JÓ/KÐV]Ð.Ñ^Üœ\¨"Ó-Ó.�K€DØ×ÑÐCÀTÔJä")§+¢+Ü”t˜I“¨°´5¼#¸h»-ÓHó#Ñ€H˜ð Ð�Tˆ>×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�T××××××ÑØÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××ÑØ�KÑ  Ñ(Ð6¨JÐ6¨JÑ6×6×6×6Ò6Ð(×6×6Ô6Ð(×6×6Ó6¨J×6×6×6×6×6×6Ô6r1   c                óz  • U S-  R                  [        R                  " [        5       5      SS9  [	        / 5      n[        U5      u  p4UR                  SU5        [        R                  " [        [        S5      SS[        [        U 5      5      5      u  pVnSo‡UL o™(       d¥  [        R                  " S	U	4S
Xx45      S[        R                   " 5       ;   d  [        R"                  " U5      (       a  [        R$                  " U5      OS[        R$                  " U5      S.-  n
SSU
0-  n['        [        R(                  " U5      5      eS =p˜S/o„U:H  o™(       d¥  [        R                  " SU	4SXH45      S[        R                   " 5       ;   d  [        R"                  " U5      (       a  [        R$                  " U5      OS[        R$                  " U5      S.-  n
SSU
0-  n['        [        R(                  " U5      5      eS =p˜US   S   nSoÜU:H  oˆ(       do  [        R                  " SU4SXÍ45      [        R$                  " U5      [        R$                  " U5      S.-  nSSU0-  n['        [        R(                  " U5      5      eS =n=p�[        R*                  " U S-  R-                  SS95      nSoÌU;   oˆ(       d¦  [        R                  " SU4SUU45      [        R$                  " U5      S[        R                   " 5       ;   d  [        R"                  " U5      (       a  [        R$                  " U5      OSS.-  n
SSU
0-  n['        [        R(                  " U5      5      eS =pÈ[        R*                  " U S-  R-                  SS95      nSoÌU;   oˆ(       d¦  [        R                  " SU4SUU45      [        R$                  " U5      S[        R                   " 5       ;   d  [        R"                  " U5      (       a  [        R$                  " U5      OSS.-  n
SSU
0-  n['        [        R(                  " U5      5      eS =pÈg ) Nr?  rM  rN  r“  rù  rP  r>  Fr  r”  rA  ro  rp  rÆ   rÀ   rm  r‹  rn   rD   r`   rÔ   rÕ   rØ   rÙ   údeck.p7.ade.dpt2.jsonrˆ  rF  r  Úasider  Ústored)rS  rT  rU  rV  r~   r‘  r•  rü  rý  r    r   rá   r²   râ   rã   rä   rå   ræ   rç   rè   ré   ÚloadsÚ	read_text)rW  r–  Úfreshr—  r‹  rí   r˜  rA  rô   rî   ru  rñ   ró   rð   rõ   rö   rœ  r�  s                     r/   ÚFtest_a_dpt2_response_under_a_dpt3_request_is_moved_aside_and_rescannedr¡  ö  s…  € ØÐ"Ñ"×.Ñ.¬t¯zªz¼.Ó:JÓ/KÐV]Ð.Ñ^Ü˜Ó€EÜ˜UÓ#�K€DØ×ÑÐCÀTÔJä")§+¢+Ü”t˜I“¨°´5¼#¸h»-ÓHó#Ñ€H˜ð Ð�Uˆ?×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�U××××××ÑØ�CÐ�C‰<×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�C××××××ÑØ�KÑ  Ñ(Ð6¨JÐ6¨JÑ6×6×6×6Ò6Ð(×6×6Ô6Ð(×6×6Ó6¨J×6×6×6×6×6×6Ó6ä�JŠJ˜Ð#:Ñ:×EÑEÈwÐEÐWÓX€EØÐ�uÑ×××Òˆ8�u××Ôˆ8×××××Ô�u×××Ñ�u××××××ÓÜ�ZŠZ˜Ð$6Ñ6×AÑAÈ7ÐAÐSÓT€FØÐ ˜&Ñ × × × Ò ˆ;˜&× × Ô ˆ;× × × × × Ô ˜&× × × Ñ ˜&× × × × × × Ô r1   c                ót  • U S-  R                  [        R                  " [        / 5      5      SS9  [	        [        5       5      u  p#UR                  SU5        [        R                  " [        [        S5      SSS[        U 5      5      5      u  pEn/ nS	o†UL o™o©(       a  S/o³U:H  oÌn
U
(       Gdu  [        R                  " S
U	4SXh45      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OS[        R"                  " U5      S.-  nSSU0-  oçR%                  U5        U	(       a˜  [        R                  " SW4SUW45      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OS[        R"                  " U5      S.-  nSSU0-  nUR%                  U5        [        R&                  " US5      0 -  nSSU0-  n[)        [        R*                  " U5      5      eS =n
=n=n	=n=pËSoªU;   nU(       d¥  [        R                  " SU4SX¤45      [        R"                  " U
5      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OSS.-  nSSU0-  n[)        [        R*                  " U5      5      eS =n
nS opU-  o™R,                  oˆ" 5       nU(       d¯  S!S"[        R                  " 5       ;   d  [        R                   " U 5      (       a  [        R"                  " U 5      OS"[        R"                  " U5      [        R"                  " U5      [        R"                  " U5      S#.-  n[)        [        R*                  " U5      5      eS =n=n	=nng )$Nr?  rM  rN  r“  rù  rP  r>  údpt-2Fr  )z%(py2)s is %(py5)srA  )rÅ   rÆ   z%(py7)srÈ   rÀ   )z%(py9)s == %(py12)sr‹  )r*  rÅ  z%(py14)sr·  r   r=  rÆ  rˆ  rF  r  rí   r  rp  rÆ   údeck.p7.ade.dpt3.jsonzMassert %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).exists
}()
}rW  )rÄ   rÅ   rÆ   rÈ   )rS  rT  rU  r~   r‘  rV  r•  rü  rý  r    r   r²   râ   rã   rä   rå   ræ   rç   rs   r0  rè   ré   Úexists)rW  r–  r—  r‹  rí   r˜  rA  rî   rï   rð   ró   rÍ  r»  rñ   rò   Ú@py_format13r½  r@  r¾  rô   ru  r2  s                         r/   ÚFtest_a_dpt3_response_under_a_dpt2_request_is_moved_aside_and_rescannedr§  
  s  € ØÐ"Ñ"×.Ñ.¬t¯zªz¼,ÀrÓ:JÓ/KÐV]Ð.Ñ^Üœ^Ó-Ó.�K€DØ×ÑÐCÀTÔJä")§+¢+Ü”t˜I“¨°°7¼CÀ»MÓJó#Ñ€H˜ñ ,�UÐ+�Uˆ?×+¨¨Ð+¨™|×+×+×+Õ+ˆ6×+×+×+×+×+Õ+ˆ6×+×+×+Ñ+ˆ6×+×+Õ+�U×+×+×+×+×+×+×+Ò+˜u¨×+×+×+×+×+Õ+˜u×+×+×+Ñ+˜u×+×+Õ+¨×+×+×+×+×+×+×+×+×+×+×+×+×+Ó+ØÐ�xÑ×××Óˆ8××Ôˆ8×××××Ô�x×××Ñ�x××××××ÔØ.Ð8Ð.Ñ.Ð8×6Ñ6Ð8Ð6Ó8Ð8Ö8×8×8×8×8×8Ñ8ˆH×8×8×8Ñ8ˆH×8×8Õ8Ð.×8×8Ó8Ð6×8×8Ó8Ð8×8×8×8×8×8×8Ð8r1   c                óÖ  • U S-  R                  [        R                  " [        / 5      5      SS9  U S-  R                  [        R                  " [	        5       5      SS9  [        [	        5       5      u  p#UR                  SU5        [        R                  " [        [        S5      SSS	[        U 5      5      5      u  pEnS
ovUL oˆ(       d¥  [        R                  " SU4SXg45      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OS[        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS=p‡/ osU:H  oˆ(       d¥  [        R                  " SU4SX745      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OS[        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS=p‡So»U;   ow(       d¥  [        R                  " SU4SX´45      [        R"                  " U5      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OSS.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS=p·Sn[        R(                  nSoÐU-  oîR*                  nSnU" US9nU" U5      nUU;   ow(       Gdw  [        R                  " SU4SUU45      [        R"                  " U5      S[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OS[        R"                  " U5      S[        R                  " 5       ;   d  [        R                   " U 5      (       a  [        R"                  " U 5      OS[        R"                  " U5      [        R"                  " U5      [        R"                  " U5      [        R"                  " U5      [        R"                  " U5      S.	-  nSSU0-  n[%        [        R&                  " U5      5      eS=n=n=n=n=n=n=n=nnS n[        R(                  nS!oÐU-  oîR*                  nSnU" US9nU" U5      nUU;   ow(       Gdw  [        R                  " SU4SUU45      [        R"                  " U5      S[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OS[        R"                  " U5      S[        R                  " 5       ;   d  [        R                   " U 5      (       a  [        R"                  " U 5      OS[        R"                  " U5      [        R"                  " U5      [        R"                  " U5      [        R"                  " U5      [        R"                  " U5      S.	-  nSSU0-  n[%        [        R&                  " U5      5      eS=n=n=n=n=n=n=n=nng)"zJA later run under the old model finds its paid response by the same check.r?  rM  rN  r›  r“  rù  rP  r>  r£  Tr  r”  rA  ro  rp  rÆ   NrÀ   rm  r‹  rˆ  rF  r  rí   r  )z¤%(py1)s in %(py17)s
{%(py17)s = %(py5)s
{%(py5)s = %(py3)s.loads
}(%(py15)s
{%(py15)s = %(py11)s
{%(py11)s = (%(py6)s / %(py8)s).read_text
}(encoding=%(py13)s)
})
}rT  rW  )	rÖ   rþ   rÆ   rÙ   r   r+  r,  r{  rÆ  r¹  rº  rn   r¤  )rS  rT  rU  r~   rV  r‘  r•  rü  rý  r    r   r²   râ   rã   rä   rå   ræ   rç   rè   ré   rž  rŸ  )rW  r–  r—  r‹  rí   r˜  rA  rô   rî   ru  rñ   ró   rï   r]  rÐ  r»  r3  r5  r„  r¾  r9  s                        r/   Ú?test_a_previously_asided_response_is_found_again_without_a_scanr©    sÈ  € àÐ"Ñ"×.Ñ.¬t¯zªz¼,ÀrÓ:JÓ/KÐV]Ð.Ñ^ØÐ'Ñ'×3Ñ3´D·J²J¼~Ó?OÓ4PÐ[bÐ3ÑcÜœ^Ó-Ó.�K€DØ×ÑÐCÀTÔJä")§+¢+Ü”t˜I“¨°°7¼CÀ»MÓJó#Ñ€H˜ð Ð�Tˆ>×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�T××××××ÑØÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××ÑØÐ�xÑ×××Òˆ8××Ôˆ8×××××Ô�x×××Ñ�x××××××ÓàÐ^”t—z‘zÐ^Ð.@Ð^Ð.@Ñ#@Ð^×"KÑ"KÐ^ÐU\Ð^Ñ"KÐU\Ñ"]Ð^‘zÐ"]Ó^Ð^ˆ8Ð^Ñ^×^×^×^Ó^ˆ8Ð^×^×^Ô^ˆ8×^×^×^×^×^Ô^”t×^×^×^Ñ^”t×^×^Õ^�z×^×^×^×^×^Ô^ 8×^×^×^Ñ^ 8×^×^Õ^Ð.@×^×^Ó^Ð"K×^×^Ó^ÐU\×^×^Ó^Ð"]×^×^Ó^Ð^×^×^×^×^×^×^×^×^Ð^ØÐfœ$Ÿ*™*ÐfÐ1HÐfÐ1HÑ&HÐf×%SÑ%SÐfÐ]dÐfÑ%SÐ]dÑ%eÐf™*Ð%eÓ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 h×f×f×fÑf h×f×fÕfÐ1H×f×fÓfÐ%S×f×fÓfÐ]d×f×fÓfÐ%e×f×fÓfÐf×f×f×f×f×f×f×f×fÑfr1   c                óÜ  • U S-  R                  [        R                  " SS05      SS9  [        [	        5       5      u  p#UR                  SU5        [        R                  " [        SS9   [        R                  " [        [        S	5      S
SS[        U 5      5      5        S S S 5        / oCU:H  oU(       d¥  [        R                  " SU4SX445      S[         R"                  " 5       ;   d  [        R$                  " U5      (       a  [        R&                  " U5      OS[        R&                  " U5      S.-  nSSU0-  n[)        [        R*                  " U5      5      eS =pTg ! , (       d  f       NÃ= f)Nr?  ÚnonsenserT   rM  rN  r“  Úneitherrb  rù  rP  r>  r£  rÀ   rm  r‹  ro  rp  rÆ   )rS  rT  rU  r‘  rV  r•  rZ  r[  re  rü  rý  r    r   r²   râ   rã   rä   rå   ræ   rç   rè   ré   )rW  r–  r—  r‹  rô   rî   ru  rñ   s           r/   Ú/test_a_stored_response_in_neither_format_raisesr­  +  sà   € ØÐ"Ñ"×.Ñ.¬t¯zªz¸:Àq¸/Ó/JÐU\Ð.Ñ]Üœ^Ó-Ó.�K€DØ×ÑÐCÀTÔJä	�Š”z¨Ó	3Ü�Š”N¤4¨	£?°F¸A¸wÌÈHËÓVÔW÷ 
4àÐ�B‰;×××Òˆ5×××××Õˆ5×××Ñˆ5××Õ�B××××××Ò÷ 
4Õ	3ús   Á*6EÅ
E+r  rG  zade-comparezQUE-341z'local ADE compare artifacts not present)rc   c                 óÖ  • [        [        S-  R                  S5      5      n [        [        S-  R                  S5      5      n[        [        R
                  " U R                  SS95      S[        U R                  5      n[        US/5      nUR                  nSoTU:H  of(       dº  [        R                  " S	U4S
XE45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                   " U5      OS[        R                   " U5      [        R                   " U5      S.-  nSSU0-  n[#        [        R$                  " U5      5      eS=n=peUR&                  S   o™R(                  n
SoºU:H  oU(       d„  [        R                  " S	U4SX«45      [        R                   " U	5      [        R                   " U
5      [        R                   " U5      S.-  nSSU0-  n[#        [        R$                  " U5      5      eS=n	=n
=p[UR&                  S   o™R*                  oª(       df  [        R,                  " S5      S-   [        R                   " U	5      [        R                   " U
5      S.-  n[#        [        R$                  " U5      5      eS=pš/ oCR.                  ofo–(       a  UR0                  oÿn	U	(       Gd4  SS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                   " U5      OS[        R                   " U5      S.-  nUR3                  U5        U(       av  SS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                   " U5      OS[        R                   " W5      S.-  oÔR3                  U5        [        R4                  " US5      0 -  nSSU0-  n[#        [        R$                  " U5      5      eS=n	=n=po[7        [        R
                  " UR                  SS95      SSS/UR                  5      nUR                  nSoTU:H  of(       dº  [        R                  " S	U4S
XE45      S [        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                   " U5      OS [        R                   " U5      [        R                   " U5      S.-  nSSU0-  n[#        [        R$                  " U5      5      eS=n=pe/ oCR&                  n[9        U5      nS!nUU:¬  nUn	U(       a   UR&                  n[9        U5      nS!nUU:¬  nUn	U	(       Gdr  [        R                  " S"U4S#UU45      S$[        R                  " 5       ;   d  [        R                  " [8        5      (       a  [        R                   " [8        5      OS$S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                   " U5      OS[        R                   " U5      [        R                   " U5      [        R                   " U5      S%.-  nS&S'U0-  nUR3                  U5        U(       Ga  [        R                  " S"W4S(WW45      S$[        R                  " 5       ;   d  [        R                  " [8        5      (       a  [        R                   " [8        5      OS$S [        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                   " U5      OS [        R                   " W5      [        R                   " U5      [        R                   " U5      S).-  nS*S+U0-  nUR3                  U5        [        R4                  " US5      0 -  nS,S-U0-  n [#        [        R$                  " U 5      5      eS=n	=n=n=n=n=n=n=n=nng).uP   The same live page, read by each generation's own path â€” no mocks, no network.zp9-dpt3z
*.ade.jsonzp9-dpt2rM  rN  r¾   rë  rë   rÀ   rB  Úv2_scanrÃ   rÇ   rÈ   Nr   rÌ   )z,%(py3)s
{%(py3)s = %(py1)s.kind
} == %(py6)srN  rÿ   r   z$the live chart carries a value tablez,
>assert %(py3)s
{%(py3)s = %(py1)s.values
}r  z$%(py4)s
{%(py4)s = %(py2)s.version
})rÅ   r×   z$%(py8)s
{%(py8)s = %(py6)s.credits
})rÙ   r   r~  r+  r£  Úv1_scanrT   )ú>=)zN%(py7)s
{%(py7)s = %(py2)s(%(py5)s
{%(py5)s = %(py3)s.figures
})
} >= %(py10)srp   )rÅ   rþ   rÆ   rÈ   rX  z%(py12)srÅ  )zT%(py19)s
{%(py19)s = %(py14)s(%(py17)s
{%(py17)s = %(py15)s.figures
})
} >= %(py22)s)r·  r{  rÆ  rº  rÇ  z%(py24)sÚpy24zassert %(py27)sÚpy27)ÚnextÚ_REALÚglobr   rT  rž  rŸ  rá   rŠ   r   rb   râ   rã   rä   rå   ræ   rç   rè   ré   rë   rG   rì   Ú_format_assertmsgrê   ru   rs   r0  r!   rp   )!Úv2_pathÚv1_pathrÂ   r¯  rî   rï   rð   rñ   rò   ró   rô   r  rö   r  ru  r]  rõ   r6  rˆ  r°  r2  rÐ  r‡  r„  rÎ  Ú@py_assert21rÏ  r^  r¦  rÑ  Ú@py_format25Ú@py_format26Ú@py_format28s!                                    r/   Ú7test_real_saved_responses_digest_under_both_generationsr¾  :  sO  € ô ”E˜IÑ%×+Ñ+¨LÓ9Ó:€GÜ”E˜IÑ%×+Ñ+¨LÓ9Ó:€GäœŸš G×$5Ñ$5¸wÐ$5Ð$GÓHÈ!ÌUÐT[×T`ÑT`Óa€FÜ˜6 K =Ó1€GØ�>‰>Ð&˜YÐ&˜YÑ&×&×&×&Ò&ˆ>×&×&×&×&×&Õ&ˆ7×&×&×&Ñ&ˆ7×&×&Õ&ˆ>×&×&Ó&˜Y×&×&×&×&×&×&Ó&Ø�>‰>˜!ÑÐ,×!Ñ!Ð, WÐ, WÑ,×,×,×,Ò,Ð!×,×,Ô,Ð×,×,Ó,Ð!×,×,Ó, W×,×,×,×,×,×,Õ,Ø�>‰>˜!ÑÐK×#Ñ#ÐKÕ#×K×KÐ%K×K×KÖKÐ×K×KÓKÐ#×K×K×K×K×KÒKÙ.�?‰?Ñ.�?˜wŸ™×.×.×.×.×.×.Ó.ˆ7×.×.×.Ñ.ˆ7×.×.Õ.ˆ?×.×.×.Ñ.Ž?×.×.×.×.×.Ñ.˜w×.×.×.Ñ.˜w×.×.Õ.˜×.×.×.×.×.×.×.×.×.×.×.×.äÜ�
Š
�7×$Ñ$¨gÐ$Ð6Ó7¸¸GÀkÀ]ÐT[×T`ÑT`ó€Gð �>‰>Ð&˜YÐ&˜YÑ&×&×&×&Ò&ˆ>×&×&×&×&×&Õ&ˆ7×&×&×&Ñ&ˆ7×&×&Õ&ˆ>×&×&Ó&˜Y×&×&×&×&×&×&Ó&áB�‰ÐBŒ3ˆÓÐB 1ÐBÐ 1Ñ$×BÑB¨W¯_©_ÐB¬¨_Ó)=ÐBÀÐBÐ)=ÀÑ)B×B×B×BÖBÐ 1×B×B×B×B×BÕBŒ3×B×B×BÑBŒ3×B×B×B×B×BÖBˆw×B×B×BÑBˆw×B×BÕBˆ×B×BÓBÐ×B×BÓB 1×B×B×B×B×B×B×BÔBÐ)=À×B×B×B×B×BÕB¬×B×B×BÑB¬×B×B×B×B×BÖB¨W×B×B×BÑB¨W×B×BÕB¨_×B×BÓBÐ)=×B×BÓBÀ×B×B×B×B×B×B×B×B×B×B×B×B×B×BÕBr1   )r*   ÚNormBoxr�  zDict[str, float])r(   r=  rD  )rG   r²   rH   r²   rI   zSequence[Sequence[str]]r*   r¿  rJ   r²   r�  r�  )r  )
rG   r²   rN   r²   r*   r¿  rJ   r²   r�  r�  )r=  rf  N)
rI   z1Sequence[Sequence[Tuple[str, Optional[NormBox]]]]r*   r¿  rJ   r²   rQ   z0Optional[Dict[Tuple[int, int], Tuple[int, int]]]r�  r�  )rÊ   ÚokN)
rt   zSequence[Dict[str, Any]]ru   Úfloatrv   r²   rw   zOptional[str]r�  r�  )r*   r¿  r�  r   )rž   z"Sequence[Tuple[int, NormBox, str]]r�  r   )r«   zSequence[int]r�  zDict[int, Tuple[float, float]])r´   r   r«   rŽ  r�  r   )rs  z"Sequence[Tuple[str, DocItemLabel]]r�  ú1Tuple[DoclingDocument, PageScan, dpt3.PageDigest])r”  úSequence[Dict[str, str]]r•  rÃ  r�  ÚNone)r�  rÂ  )r�  r�  )rí   r�  )€Ú__doc__Ú
__future__r   Úbuiltinsrä   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterâ   rü  rT  rú  Úpathlibr   ru  r   r   r   r   r	   r
   rZ  Údocling_core.types.doc.baser   r   r   rH  r   r   r   r   r   Údocling_core.types.doc.labelsr   Úquber.agents.figure_correctionr   r   r   Úquber.core.figuresr   Úquber.core.figures.correctr   Úquber.core.figures.dpt3.digestr   r   r   r   Úquber.core.figures.graftr   r   Úquber.core.figures.modelsr   rR  r    Úquber.core.figures.scanr!   r„   r…   rÁ  r¿  rá   r0   rL   rO   rR   r~   r‡   r¥   r¬   r¶   r÷   r  r  r  r;  rL  rO  rR  r_  rf  rv  r‰  r�  r—  rª  r­  r°  r¿  rÁ  rÒ  rÕ  rØ  rà  rä  ræ  rñ  rô  r  r  r  r  r#  r%  r(  r-  r6  rA  rJ  rZ  rg  r}  r‚  r„  rV  r‘  r™  r¡  r§  r©  r­  Ú__file__rÈ  Úparentsrµ  ÚmarkÚskipifr¥  r¾  r(   r1   r/   Ú<module>rÙ     sò  ðñõ #ç  „ ƒÛ Û Ý ß =× =ã ß FÑ F÷õ õ 7ç LÑ LÝ #Ý 6ß gÓ gß JÝ .Ý :Ý -à�€ˆØ
��u˜e UÐ*Ñ
+€à€ô<ð %'Ø'ØðMØ
ðMàðMð "ðMð 
ð	Mð
 ðMð õMö$Fð (ØØ>Bð	\Ø
;ð\à	ð\ð ð\ð <ð	\ð
 õ\ð ØØ!%ð	]Ø#ð]àð]ð ð]ð ð	]ð
 õ]ôFôô2ôòcò8FòOò&*òò"<ò.+ò"ò'ò<ð!Ø-ð!à6ô!òB;òô"mò>ò"&ò>ò"	Bò	#òPò"ò9òAò,9ò"ò*ò&Jò$&-ôXò:aòAòòòJòò&òR
CòCò*ô"ò Cò>+ò8+ô4ôò7ò!ò(9ògò&ñ 	ˆX‹×ÑÓ ×(Ñ(¨Ñ+¨fÑ4°}ÑDÀyÑP€ð ‡�×Ñ˜Ÿ™›Ô&Ð/XÐÐYñCó ZñCr1   