§
    ŒWêjM¦  ã                  óä  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	Z	 e	j
        d¦  «        Z e	j
        de	j        ¦  «        Z e	j
        d	e	j        ¦  «        Z e	j
        d
¦  «        Z e	j
        d¦  «        Z e	j
        d¦  «        Z e	j
        de	j        ¦  «        Z e	j
        d¦  «        Z e	j
        d¦  «        Z e	j
        d¦  «        ZdZh d£Zh d£Zdxd„Zdxd„Zdyd„Zdzd„Zdzd„Zd{d„Zd|d"„Zd|d#„Z d}d&„Z!d|d'„Z"d~d(„Z#d~d)„Z$d~d*„Z%d~d+„Z&d~d,„Z'dd.„Z(d~d/„Z)d~d0„Z*d€d1„Z+d�d4„Z,d~d5„Z-d‚d8„Z.d~d9„Z/d~d:„Z0d‚d;„Z1dƒd=„Z2dƒd>„Z3dƒd?„Z4d~d@„Z5d~dA„Z6d~dB„Z7d~dC„Z8d„dE„Z9d…dH„Z:d†dJ„Z;d‡dM„Z<	 dˆd‰dR„Z=dŠdT„Z>d‹dW„Z?dŒdY„Z@d�dZ„ZAdŽd]„ZBdƒd^„ZCd~d_„ZDd�d`„ZEdadbœd�dd„ZFd‘de„ZG edf¬g¦  «         G dh„ di¦  «        ¦   «         ZHd’dj„ZI e	j
        dk¦  «        ZJdzdl„ZKd“dn„ZLd”dq„ZMd•dr„ZNd{ds„ZOd{dt„ZPd{du„ZQd–d—dw„ZRdS )˜aÆ  
Copyright (C) 2023 Artifex Software, Inc.

This file is part of PyMuPDF.

PyMuPDF is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option)
any later version.

PyMuPDF is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
details.

You should have received a copy of the GNU Affero General Public License
along with MuPDF. If not, see <https://www.gnu.org/licenses/agpl-3.0.en.html>

Alternative licensing terms are available from the licensor.
For commercial licensing, see <https://www.artifex.com/> or contact
Artifex Software, Inc., 39 Mesa Street, Suite 108A, San Francisco,
CA 94129, USA, for further information.

---------------------------------------------------------------------

PyMuPDF table header detection and HTML serialization (opt-in extension).

Pure text-grid module (no pymupdf import): the header-region rules operate on a
row-major ``[[cell text]]`` grid, extend_header_leaf_labels completes that region
from a placement grid's spans, and the serializer turns a tagged placement grid
into an HTML ``<table>``. Used only by find_tables(refine=True) (via
pymupdf.table) and Table.to_html(); never runs on the default detection path.
é    )Úannotations)Ú	dataclass)Úmean)ÚAnyNu2   [A-Za-z]+|\d+(?:[.,:/-]\d+)*|[%$â‚¬Â£Â¥()â€“â€”-]+zE\b(?:jan|feb|mar|apr|may|jun|jul|aug|sep|sept|oct|nov|dec)[a-z]*\.?\bu.   (?:[$â‚¬Â£Â¥]\s*[-(]?\d|(?:usd|eur|gbp|jpy)\b)z[-(]?\d+(?:\.\d+)?\s*%z\b(?:19|20)\d{2}\bz:^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9][A-Za-z0-9._/# -]{0,24}$u:   (?:>=|<=|<|>| thru | through | to |\b\d+\s*[-â€“]\s*\d+\b)z^\s*\d+(?:\.\d+){2,}\bz)[\[(]\s*\d{1,2}\s*[\])]|\[\s*\d{1,2}\s*\)z^[\s\d\[\]\(\)=+\-*/xX.]+$)z
in millionzin thousandz
in billionz$ inÚusdz'000ú%>   ÚmoneyÚnumberÚpercent>   ÚunitÚcode_idÚ	long_textÚ
text_labelÚdate_periodÚtextÚstrÚreturnÚintc                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  óB   K  — | ]}|                      ¦   «         ¯d V — ŒdS ©é   N©Úisalpha©Ú.0Úchars     úˆ/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.venv/lib/python3.11/site-packages/pymupdf/_table_headers.pyú	<genexpr>zcount_alpha.<locals>.<genexpr>>   ó/   è è € Ð4Ð4�T T§\¢\¡^¤^Ð4ˆqÐ4Ð4Ð4Ð4Ð4Ð4ó    ©Úsum©r   s    r   Úcount_alphar%   =   ó   € ÝÐ4Ð4˜TÐ4Ñ4Ô4Ñ4Ô4Ð4r!   c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  óB   K  — | ]}|                      ¦   «         ¯d V — ŒdS r   ©Úisdigitr   s     r   r   zcount_digit.<locals>.<genexpr>B   r    r!   r"   r$   s    r   Úcount_digitr+   A   r&   r!   ú	list[str]c                ó6   — t                                | ¦  «        S ©N)Ú	_TOKEN_REÚfindallr$   s    r   Útokensr1   E   s   € Ý×Ò˜TÑ"Ô"Ð"r!   Úboolc                óê   — |                       ¦   «         }|sdS t          |¦  «        }t          |¦  «        }|dk    rdS t                               |¦  «        rdS |t          d||z   ¦  «        z  dk    S )NFr   r   ç333333Ó?)Ústripr%   r+   Ú	_MONTH_REÚsearchÚmax)r   ÚstrippedÚalphaÚdigits       r   Únumeric_liker<   I   s}   € Ø�zŠz‰|Œ|€HØð ØˆuÝ˜Ñ!Ô!€EÝ˜Ñ!Ô!€EØ�‚z€zØˆuÝ×Ò˜Ñ!Ô!ð ØˆuØ•3�q˜% %™-Ñ(Ô(Ñ(¨DÒ0Ð0r!   c                óÀ   — |                       ¦   «         }|sdS t          t                               |¦  «        pt	          j        d|t          j        ¦  «        ¦  «        S )NFz#\b(?:q[1-4]|fy|year|month|period)\b)r5   r2   r6   r7   ÚreÚI)r   r9   s     r   Údate_or_period_liker@   V   sQ   € Ø�zŠz‰|Œ|€HØð ØˆuÝ•	× Ò  Ñ*Ô*Ðo­b¬iÐ8^Ð`hÕjlÔjnÑ.oÔ.oÑpÔpÐpr!   c                ó*  — d                      |                      ¦   «                              ¦   «         ¦  «        }|sdS t          |¦  «        }t	          |¦  «        }t          t          |¦  «        ¦  «        }|                     ¦   «         }t           	                    |¦  «        rdS t                               |¦  «        s!|                     d¦  «        r|dk    r|dk    rdS t          |¦  «        s t                               |¦  «        r|dk    rdS t           	                    |¦  «        r|dk    r|d	k    rd
S t!          |¦  «        rdS |dv rdS t"                               |¦  «        r|dk    rdS |dk    r|dk    r|dk    rdS |d	k    rdS dS )Nú Úemptyr	   r   r   r   r   r   é   Úranger
   >
   ú$mú$000ÚeurÚgbpr   ÚrateÚratioÚamountú$r   r   é   r   é   r   r   )Újoinr5   Úsplitr%   r+   Úlenr1   ÚlowerÚ	_MONEY_REr7   Ú_PERCENT_REÚ	fullmatchÚendswithr@   Ú_YEAR_REÚ	_RANGE_REr<   Ú_CODE_REÚmatch)r   r9   r:   r;   Útoken_countÚlowereds         r   Ú	cell_typer^   ]   s±  € Ø�xŠx˜Ÿ
š
™œ×*Ò*Ñ,Ô,Ñ-Ô-€HØð Øˆwå˜Ñ!Ô!€EÝ˜Ñ!Ô!€EÝ•f˜XÑ&Ô&Ñ'Ô'€KØ�nŠnÑÔ€Gå×Ò˜Ñ!Ô!ð ØˆwÝ×Ò˜XÑ&Ô&ð ¨8×+<Ò+<¸SÑ+AÔ+Að ÀeÈaÂiÀiÐTYÐ]^ÒT^ÐT^ØˆyÝ˜8Ñ$Ô$ð ­×);Ò);¸HÑ)EÔ)Eð È+ÐYZÒJZÐJZØˆ}Ý×Ò˜Ñ!Ô!ð  e¨a¢i i°KÀ1Ò4DÐ4DØˆwÝ�HÑÔð ØˆxØÐZÐZÐZØˆvÝ‡~‚~�hÑÔð  K°1Ò$4Ð$4ØˆyØˆq‚y€y�U˜Q’Y�Y ;°!Ò#3Ð#3ØˆyØ�aÒÐØˆ{Øˆ<r!   Útextsúdict[str, float]c           	     ó˜  — d„ | D ¦   «         }|s	dddddddœS t          |¦  «        }t          d„ |D ¦   «         ¦  «        |z  t          d„ |D ¦   «         ¦  «        |z  t          d„ |D ¦   «         ¦  «        |z  t          d„ |D ¦   «         ¦  «        |z  t          d„ |D ¦   «         ¦  «        |z  t          d	„ |D ¦   «         ¦  «        |z  dœS )
Nc                óT   — g | ]%}|                      ¦   «         ¯t          |¦  «        ‘Œ&S © ©r5   r^   ©r   r   s     r   ú
<listcomp>z$cell_type_ratios.<locals>.<listcomp>}   s+   € ÐHÐHÐH¨$¸4¿:º:¹<¼<ÐH•i ‘o”oÐHÐHÐHr!   ç        )Úvalue_type_ratioÚlabel_type_ratioÚlong_text_type_ratioÚcode_type_ratioÚdate_period_type_ratioÚrange_type_ratioc              3  ó,   K  — | ]}|t           v ¯d V — ŒdS r   ©ÚVALUE_TYPES©r   Úitems     r   r   z#cell_type_ratios.<locals>.<genexpr>‰   ó,   è è € ÐTÐT dÀÍÐ@SÐ@S Ð@SÐ@SÐ@SÐ@SÐTÐTr!   c              3  ó,   K  — | ]}|t           v ¯d V — ŒdS r   ©ÚLABEL_TYPESrq   s     r   r   z#cell_type_ratios.<locals>.<genexpr>Š   rs   r!   c              3  ó&   K  — | ]}|d k    ¯dV — ŒdS ©r   r   Nrc   rq   s     r   r   z#cell_type_ratios.<locals>.<genexpr>‹   s,   è è € Ð#XÐ#X¨$ÀDÈKÒDWÐDW AÐDWÐDWÐDWÐDWÐ#XÐ#Xr!   c              3  ó&   K  — | ]}|d k    ¯dV — ŒdS )r   r   Nrc   rq   s     r   r   z#cell_type_ratios.<locals>.<genexpr>Œ   s,   è è € ÐQÐQ T¸tÀyÒ?PÐ?P˜qÐ?PÐ?PÐ?PÐ?PÐQÐQr!   c              3  ó&   K  — | ]}|d k    ¯dV — ŒdS ©r   r   Nrc   rq   s     r   r   z#cell_type_ratios.<locals>.<genexpr>�   s,   è è € Ð%\Ð%\¨DÀdÈmÒF[ÐF[ aÐF[ÐF[ÐF[ÐF[Ð%\Ð%\r!   c              3  ó&   K  — | ]}|d k    ¯dV — ŒdS )rE   r   Nrc   rq   s     r   r   z#cell_type_ratios.<locals>.<genexpr>Ž   s&   è è € ÐPÐP dÀÈÂÀ ÀÀÀÀÐPÐPr!   )rR   r#   )r_   Únonempty_typesÚtotals      r   Úcell_type_ratiosr   |   s  € ØHÐH°%ÐHÑHÔH€NØð 
à #Ø #Ø$'Ø"Ø&)Ø #ð
ð 
ð 	
õ �ÑÔ€EåÐTÐT¨nÐTÑTÔTÑTÔTÐW\Ñ\ÝÐTÐT¨nÐTÑTÔTÑTÔTÐW\Ñ\Ý #Ð#XÐ#X°.Ð#XÑ#XÔ#XÑ XÔ XÐ[`Ñ `ÝÐQÐQ¨^ÐQÑQÔQÑQÔQÐTYÑYÝ"%Ð%\Ð%\°NÐ%\Ñ%\Ô%\Ñ"\Ô"\Ð_dÑ"dÝÐPÐP¨nÐPÑPÔPÑPÔPÐSXÑXðð ð r!   c                óö  — d„ | D ¦   «         }| sdddddddddœt          g ¦  «        ¥S t          t          | ¦  «        ¦  «        t          t          |¦  «        ¦  «        t          |¦  «        t          | ¦  «        z  t          | ¦  «        t          |¦  «        z
  t          | ¦  «        z  t          d„ |D ¦   «         ¦  «        t	          dt          |¦  «        ¦  «        z  t          d„ |D ¦   «         ¦  «        t	          dt          |¦  «        ¦  «        z  t          d„ |D ¦   «         ¦  «        t	          dt          |¦  «        ¦  «        z  |rt          d„ |D ¦   «         ¦  «        nddœt          | ¦  «        ¥S )	Nc                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rc   ©r5   re   s     r   rf   z row_features.<locals>.<listcomp>“   s%   € Ð7Ð7Ð7˜¨$¯*ª*©,¬,Ð7�Ð7Ð7Ð7r!   rg   )Ú
cell_countÚnonempty_countÚnonempty_ratioÚempty_ratioÚnumeric_ratioÚalpha_ratioÚdate_period_ratioÚ
avg_tokensc              3  ó8   K  — | ]}t          |¦  «        ¯d V — ŒdS r   ©r<   re   s     r   r   zrow_features.<locals>.<genexpr>¥   s/   è è € ÐJÐJ 4µ|ÀDÑ7IÔ7IÐJ˜QÐJÐJÐJÐJÐJÐJr!   r   c              3  ó@   K  — | ]}t          |¦  «        d k    ¯dV — ŒdS ©r   r   N©r%   re   s     r   r   zrow_features.<locals>.<genexpr>¦   s4   è è € ÐKÐK µ[ÀÑ5FÔ5FÈÒ5JÐ5J˜1Ð5JÐ5JÐ5JÐ5JÐKÐKr!   c              3  ó8   K  — | ]}t          |¦  «        ¯d V — ŒdS r   )r@   re   s     r   r   zrow_features.<locals>.<genexpr>§   s0   è è € Ð UÐ U tÕ;NÈtÑ;TÔ;TÐ U Ð UÐ UÐ UÐ UÐ UÐ Ur!   c                óF   — g | ]}t          t          |¦  «        ¦  «        ‘ŒS rc   )rR   r1   re   s     r   rf   z row_features.<locals>.<listcomp>¨   s&   € ÐCÐCÐC°$�C¥ t¡¤Ñ-Ô-ÐCÐCÐCr!   )r   ÚfloatrR   r#   r8   r   )r_   Únonemptys     r   Úrow_featuresr”   ’   s�  € Ø7Ð7 Ð7Ñ7Ô7€HØð 
àØ!Ø!ØØ ØØ!$Øð

ð 

õ ˜rÑ"Ô"ð

ð 
	
õ �C ™JœJÑ'Ô'Ý¥ H¡¤Ñ.Ô.Ý˜h™-œ-­#¨e©*¬*Ñ4Ý˜E™
œ
¥S¨¡]¤]Ñ2µc¸%±j´jÑ@ÝÐJÐJ¨8ÐJÑJÔJÑJÔJÍSÐQRÕTWÐX`ÑTaÔTaÑMbÔMbÑbÝÐKÐK¨ÐKÑKÔKÑKÔKÍcÐRSÕUXÐYaÑUbÔUbÑNcÔNcÑcÝ Ð UÐ U¨xÐ UÑ UÔ UÑUÔUÕX[Ð\]Õ_bÐckÑ_lÔ_lÑXmÔXmÑmØHPÐY•dÐCÐC¸(ÐCÑCÔCÑDÔDÐDÐVYð
ð 
õ ˜5Ñ
!Ô
!ð
ð 
r!   ÚrowÚcolc                ó<   — |t          | ¦  «        k     r| |         ndS )NÚ ©rR   )r•   r–   s     r   Úcolumn_textrš   ­   s   € Ø�S ™XœX’~�~ˆ3ˆsŒ8ˆ8¨2Ð-r!   c                óÚ  — t          | ¦  «        }t          | d¦  «        }d„ | dd …         D ¦   «         }d„ |D ¦   «         }t          |                     ¦   «         ¦  «        }i |¥|rdndt	          |¦  «        dk    rdndt          |¦  «        rdndt          |¦  «        t          v rdndt          |¦  «        t          v rdndt          d„ |D ¦   «         ¦  «        t          dt          |¦  «        ¦  «        z  t          d„ |D ¦   «         ¦  «        t          dt          |¦  «        ¦  «        z  t          d	„ |D ¦   «         ¦  «        t          dt          |¦  «        ¦  «        z  t          d
„ |D ¦   «         ¦  «        t          dt          |¦  «        ¦  «        z  t          d„ |D ¦   «         ¦  «        t          dt          |¦  «        ¦  «        z  t          d|d         dz  ¦  «        dœ¥S )Nr   c                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rc   r‚   re   s     r   rf   zrow_vector.<locals>.<listcomp>´   s%   € Ð7Ð7Ð7�T¨$¯*ª*©,¬,Ð7ˆDÐ7Ð7Ð7r!   r   c                ó,   — g | ]}t          |¦  «        ‘ŒS rc   ©r^   re   s     r   rf   zrow_vector.<locals>.<listcomp>µ   ó   € Ð3Ð3Ð3 d•)˜D‘/”/Ð3Ð3Ð3r!   rg   g      ð?c              3  ó8   K  — | ]}t          |¦  «        ¯d V — ŒdS r   rŒ   re   s     r   r   zrow_vector.<locals>.<genexpr>¾   s/   è è € Ð!KÐ!K¨½ÀTÑ8JÔ8JÐ!K !Ð!KÐ!KÐ!KÐ!KÐ!KÐ!Kr!   c              3  ó@   K  — | ]}t          |¦  «        d k    ¯dV — ŒdS rŽ   r�   re   s     r   r   zrow_vector.<locals>.<genexpr>¿   s4   è è € ÐLÐL dµkÀ$Ñ6GÔ6GÈ!Ò6KÐ6K Ð6KÐ6KÐ6KÐ6KÐLÐLr!   c              3  ó,   K  — | ]}|t           v ¯d V — ŒdS r   ro   rq   s     r   r   zrow_vector.<locals>.<genexpr>À   ó,   è è € Ð$UÐ$U¨4ÀÍÐATÐAT QÐATÐATÐATÐATÐ$UÐ$Ur!   c              3  ó,   K  — | ]}|t           v ¯d V — ŒdS r   ru   rq   s     r   r   zrow_vector.<locals>.<genexpr>Á   r£   r!   c              3  ó&   K  — | ]}|d k    ¯dV — ŒdS rx   rc   rq   s     r   r   zrow_vector.<locals>.<genexpr>Â   s,   è è € Ð(YÐ(Y¨tÀTÈ[ÒEXÐEX¨ÐEXÐEXÐEXÐEXÐ(YÐ(Yr!   rŠ   ç       @)Úfirst_emptyÚfirst_alphaÚfirst_numericÚfirst_value_typeÚfirst_label_typeÚrest_numeric_ratioÚrest_alpha_ratioÚrest_value_type_ratioÚrest_label_type_ratioÚrest_long_text_type_ratioÚavg_tokens_norm)r”   rš   r2   r5   r%   r<   r^   rp   rv   r#   r8   rR   Úmin)r_   ÚfeaturesÚfirstÚrestÚ
rest_typesÚfirst_nonemptys         r   Ú
row_vectorr¸   ±   s  € Ý˜EÑ"Ô"€HÝ˜˜qÑ!Ô!€EØ7Ð7˜U 1 2 2œYÐ7Ñ7Ô7€DØ3Ð3¨dÐ3Ñ3Ô3€JÝ˜%Ÿ+š+™-œ-Ñ(Ô(€NðØ
ðà,Ð5�s�s°#Ý)¨%Ñ0Ô0°1Ò4Ð4�s�s¸#Ý ,¨UÑ 3Ô 3Ð<˜˜¸Ý#,¨UÑ#3Ô#3µ{Ð#BÐ#B˜C˜CÈÝ#,¨UÑ#3Ô#3µ{Ð#BÐ#B˜C˜CÈÝ!Ð!KÐ!K°Ð!KÑ!KÔ!KÑKÔKÍcÐRSÕUXÐY]ÑU^ÔU^ÑN_ÔN_Ñ_ÝÐLÐL¨dÐLÑLÔLÑLÔLÍsÐSTÕVYÐZ^ÑV_ÔV_ÑO`ÔO`Ñ`Ý!$Ð$UÐ$U°:Ð$UÑ$UÔ$UÑ!UÔ!UÕX[Ð\]Õ_bÐcmÑ_nÔ_nÑXoÔXoÑ!oÝ!$Ð$UÐ$U°:Ð$UÑ$UÔ$UÑ!UÔ!UÕX[Ð\]Õ_bÐcmÑ_nÔ_nÑXoÔXoÑ!oÝ%(Ð(YÐ(Y°zÐ(YÑ(YÔ(YÑ%YÔ%YÕ\_Ð`aÕcfÐgqÑcrÔcrÑ\sÔ\sÑ%sÝ˜s H¨\Ô$:¸SÑ$@ÑAÔAðð ð ð r!   c                óŠ   — t          | ¦  «        }|d         dk    rdS |d         dk    p|d         dk    }t          |¦  «        S )Nr„   r   FrŠ   g      @r†   çš™™™™™É?©r”   r2   )r•   r³   Úshort_or_sparses      r   Úheader_candidate_rowr½   Ç   sR   € Ý˜CÑ Ô €HØÐ Ô! QÒ&Ð&ØˆuØ˜|Ô,°Ò3ÐV°xÀÔ7NÐRVÒ7V€OÝ�Ñ Ô Ð r!   c                ó^  — t          | ¦  «        }|d         dk    rdS d„ | D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }t          |¦  «        dk    o0t          |¦  «        t          dt          |¦  «        d	z  ¦  «        k    }|d
         dk    p|d         dk    }t          |p|¦  «        S )Nrƒ   r   Fc                ó6   — g | ]}|                      ¦   «         ‘ŒS rc   r‚   re   s     r   rf   z+grouped_header_scaffold.<locals>.<listcomp>Ó   s    € Ð*Ð*Ð*˜dˆT�ZŠZ‰\Œ\Ð*Ð*Ð*r!   c                ó   — g | ]}|¯|‘ŒS rc   rc   re   s     r   rf   z+grouped_header_scaffold.<locals>.<listcomp>Ô   s   € Ð/Ð/Ð/˜¨$Ð/�Ð/Ð/Ð/r!   c                ó6   — h | ]}|                      ¦   «         ’ŒS rc   )rS   re   s     r   ú	<setcomp>z*grouped_header_scaffold.<locals>.<setcomp>Õ   s    € Ð9Ð9Ð9¨�t—z’z‘|”|Ð9Ð9Ð9r!   é   r   é   r†   rº   r…   çffffffæ?)r”   rR   r8   r2   )r•   r³   r_   r“   Úunique_nonemptyÚrepeated_labelsÚsparse_labelss          r   Úgrouped_header_scaffoldrÉ   Ï   sÉ   € Ý˜CÑ Ô €HØ�Ô Ò"Ð"ØˆuØ*Ð* cÐ*Ñ*Ô*€EØ/Ð/ Ð/Ñ/Ô/€HØ9Ð9°Ð9Ñ9Ô9€OÝ˜(‘m”m qÒ(Ð_­S°Ñ-AÔ-AÅSÈÍCÐPXÉMÌMÐ]^ÑL^ÑE_ÔE_Ò-_€OØ˜]Ô+¨tÒ3ÐY°xÐ@PÔ7QÐUYÒ7Y€MÝ�Ð0 Ñ1Ô1Ð1r!   c                óš   — t          | ¦  «        }t          |d         dk    o#|d         dk    o|d         dk    o|d         dk    ¦  «        S )Nr¨   r   r©   r¬   çffffffÖ?r‡   ç      Ð?©r¸   r2   ©r•   Úvectors     r   Údata_row_likerÐ   Û   se   € Ý˜‰_Œ_€FÝØˆ}Ô Ò!ð 	,Ø�?Ô# qÒ(ð	,àÐ'Ô(¨DÒ0ð	,ð �?Ô# tÒ+ñ	ô ð r!   c                ój   — t          | ¦  «        }t          |d         dk    o|d         dk    ¦  «        S )Nr‡   rÅ   rˆ   rË   rÍ   rÎ   s     r   Údense_numeric_row_likerÒ   å   s4   € Ý˜‰_Œ_€FÝ��Ô'¨4Ò/ÐQ°F¸=Ô4IÈTÒ4QÑRÔRÐRr!   c                ó|   — d„ | D ¦   «         }|sdS t          d„ |D ¦   «         ¦  «        t          |¦  «        z  dk    S )Nc                óT   — g | ]%}|                      ¦   «         ¯t          |¦  «        ‘Œ&S rc   rd   re   s     r   rf   z*money_or_percent_heavy.<locals>.<listcomp>ë   s+   € Ð=Ð=Ð= °·
²
±´Ð=�Y�t‰_Œ_Ð=Ð=Ð=r!   Fc              3  ó"   K  — | ]
}|d v ¯dV — ŒdS )>   r	   r   r   Nrc   rq   s     r   r   z)money_or_percent_heavy.<locals>.<genexpr>î   s-   è è € ÐCÐC�T dÐ.BÐ&BÐ&BˆqÐ&BÐ&BÐ&BÐ&BÐCÐCr!   rÌ   ©r#   rR   )r•   Útypess     r   Úmoney_or_percent_heavyrØ   ê   sP   € Ø=Ð=¨Ð=Ñ=Ô=€EØð ØˆuÝÐCÐC˜UÐCÑCÔCÑCÔCÅcÈ%ÁjÄjÑPÐTXÒXÐXr!   r’   c                ó„   — d„ | dd …         D ¦   «         }|sdS t          d„ |D ¦   «         ¦  «        t          |¦  «        z  S )Nc                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rc   r‚   ©r   Úcells     r   rf   z*rest_date_period_ratio.<locals>.<listcomp>ò   ó%   € Ð5Ð5Ð5�T¨¯
ª
©¬Ð5ˆDÐ5Ð5Ð5r!   r   rg   c              3  ó@   K  — | ]}t          |¦  «        d k    ¯dV — ŒdS r{   rž   rÛ   s     r   r   z)rest_date_period_ratio.<locals>.<genexpr>õ   s2   è è € ÐFÐF�T¥Y¨t¡_¤_¸Ò%EÐ%EˆqÐ%EÐ%EÐ%EÐ%EÐFÐFr!   rÖ   )r•   rµ   s     r   Úrest_date_period_ratiorß   ñ   sR   € Ø5Ð5˜S   œWÐ5Ñ5Ô5€DØð ØˆsÝÐFÐF˜TÐFÑFÔFÑFÔFÍÈTÉÌÑRÐRr!   c                óx   — t          | ¦  «        }t          |d         dk    pt          | ¦  «        dk    ¦  «        S )Nrl   rÌ   rË   )r”   r2   rß   ©r•   r³   s     r   Úfirst_row_period_restore_guardrâ   ø   s=   € Ý˜CÑ Ô €HÝ�Ð1Ô2°dÒ:ÐaÕ>TÐUXÑ>YÔ>YÐ]aÒ>aÑbÔbÐbr!   c                óŽ  ‡— d„ | dd …         D ¦   «         }|sdS d„ |D ¦   «         }t          d„ |D ¦   «         ¦  «        t          |¦  «        z  }t          d„ |D ¦   «         ¦  «        }d                     | ¦  «                             ¦   «         Št          ˆfd„t
          D ¦   «         ¦  «        }t          |d	k    s|o| ¦  «        S )
Nc                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rc   r‚   rÛ   s     r   rf   z8first_row_date_or_unit_restore_guard.<locals>.<listcomp>þ   rÝ   r!   r   Fc                ó,   — g | ]}t          |¦  «        ‘ŒS rc   rž   rÛ   s     r   rf   z8first_row_date_or_unit_restore_guard.<locals>.<listcomp>  rŸ   r!   c              3  ó"   K  — | ]
}|d v ¯dV — ŒdS )>   r   r   r   Nrc   rq   s     r   r   z7first_row_date_or_unit_restore_guard.<locals>.<genexpr>  s-   è è € ÐTÐT˜d°DÐ<SÐ4SÐ4S˜Ð4SÐ4SÐ4SÐ4SÐTÐTr!   c              3  ó   K  — | ]}|d v V — Œ	dS )>   r	   r   Nrc   rq   s     r   r   z7first_row_date_or_unit_restore_guard.<locals>.<genexpr>  s(   è è € ÐOÐO¸D˜4Ð#7Ð7ÐOÐOÐOÐOÐOÐOr!   rB   c              3  ó    •K  — | ]}|‰v V — Œ	d S r.   rc   )r   ÚtermÚrow_texts     €r   r   z7first_row_date_or_unit_restore_guard.<locals>.<genexpr>  s(   øè è € Ð@Ð@¨�4˜8Ð#Ð@Ð@Ð@Ð@Ð@Ð@r!   ç      à?)r#   rR   ÚanyrP   rS   Ú_UNIT_ROW_TERMSr2   )r•   rµ   r¶   Údp_unit_ratioÚmoney_or_percentÚunit_rowrê   s         @r   Ú$first_row_date_or_unit_restore_guardrñ   ý   sä   ø€ Ø5Ð5˜S   œWÐ5Ñ5Ô5€DØð ØˆuØ3Ð3¨dÐ3Ñ3Ô3€JÝÐTÐT jÐTÑTÔTÑTÔTÕWZÐ[eÑWfÔWfÑf€MÝÐOÐOÀJÐOÑOÔOÑOÔOÐØ�xŠx˜‰}Œ}×"Ò"Ñ$Ô$€HÝÐ@Ð@Ð@Ð@µÐ@Ñ@Ô@Ñ@Ô@€HÝ� $Ò&Ð2¨(ÐLÐ<LÐ8LÑMÔMÐMr!   c                óš   — g }t          | ¦  «        r|                     d¦  «         t          | ¦  «        r|                     d¦  «         |S )NÚfirst_row_period_restoreÚfirst_row_date_or_unit_restore)râ   Úappendrñ   )r•   Úguardss     r   Úfirst_row_restore_guardsr÷   	  sR   € Ø€FÝ% cÑ*Ô*ð 2Ø�ŠÐ0Ñ1Ô1Ð1Ý+¨CÑ0Ô0ð 8Ø�ŠÐ6Ñ7Ô7Ð7Ø€Mr!   Úrowsúlist[list[str]]c                ó  — t          | ¦  «        dk     rdS | d         }d„ |D ¦   «         }|r t                               |d         ¦  «        sdS t          |¦  «        }t	          |d         dk    p|d         dk    ¦  «        S )	NrÃ   Fr   c                ób   — g | ],}|¯|                      ¦   «         ¯|                      ¦   «         ‘Œ-S rc   r‚   rÛ   s     r   rf   z0headerless_dotted_enum_guard.<locals>.<listcomp>  s2   € ÐCÐCÐC˜d¨TÐC°d·j²j±l´lÐCˆT�ZŠZ‰\Œ\ÐCÐCÐCr!   rj   rÌ   rŠ   g      @)rR   Ú_DOTTED_ENUM_REr7   r”   r2   )rø   r•   Úcellsr³   s       r   Úheaderless_dotted_enum_guardrþ     sŽ   € Ý
ˆ4�y„y�1‚}€}ØˆuØ
ˆqŒ'€CØCÐC cÐCÑCÔC€EØð �×.Ò.¨u°Q¬xÑ8Ô8ð ØˆuÝ˜CÑ Ô €HÝ�Ð/Ô0°DÒ8ÐY¸HÀ\Ô<RÐVYÒ<YÑZÔZÐZr!   c                ó0  — t          | ¦  «        }|d         dk    s|d         dk    rdS g }d„ | dd …         D ¦   «         D ]<}t          j        d|¦  «        s dS |                     t	          |¦  «        ¦  «         Œ=t          |¦  «        dk     rdS |t          |¦  «        k    }t          t          |¦  «        ¦  «        t          |¦  «        k    }t          |¦  «        t          |¦  «        z
  t          |¦  «        dz
  k    }t          |o|o|¦  «        S )	Nr«   r   rª   Fc                ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S rc   r‚   re   s     r   rf   z3simple_integer_enum_header_like.<locals>.<listcomp>$  s-   € ÐBÐBÐB $°T·Z²Z±\´\ÐB�—’‘”ÐBÐBÐBr!   r   ú\d{1,2}rÄ   )r¸   r>   rV   rõ   r   rR   ÚsortedÚsetr8   r²   r2   )r•   rÏ   Úvaluesr   ÚorderedÚuniqueÚ
contiguouss          r   Úsimple_integer_enum_header_liker    s  € Ý˜‰_Œ_€FØÐ Ô! QÒ&Ð&¨&Ð1CÔ*DÀqÒ*HÐ*HØˆuØ€FØBÐB¨#¨a¨b¨b¬'ÐBÑBÔBð !ð !ˆÝŒ|˜J¨Ñ-Ô-ð 	Ø�5�5Ø�Š•c˜$‘i”iÑ Ô Ð Ð Ý
ˆ6�{„{�Q‚€ØˆuØ�˜v™œÒ&€GÝ•�V‘”ÑÔ¥ V¡¤Ò,€FÝ�V‘”�s 6™{œ{Ñ*­c°&©k¬k¸A©oÒ=€JÝ�Ð1˜FÐ1 zÑ2Ô2Ð2r!   Ú	candidateÚfollowing_rowsc                óœ  — d„ | D ¦   «         }t          |¦  «        dk     rdS t          d„ |D ¦   «         ¦  «        rdS t          d„ |D ¦   «         ¦  «        rdS t          d„ |D ¦   «         ¦  «        sdS d„ |D ¦   «         }d„ |D ¦   «         }t          |¦  «        t          |¦  «        z  d	k     rdS |st          |¦  «        d
k     rdS t          |¦  «        dk     rdS t          |¦  «        }t	          |d¦  «        }t          |¦  «        rdS |d         d         r2t          |¦  «        dk    rt	          |d¦  «        }t          |¦  «        S dS )zMA bracket/formula reference row under a grouped header, e.g. [3] = [1] * [2].c                ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S rc   r‚   re   s     r   rf   z5reference_formula_header_row_like.<locals>.<listcomp>2  s-   € ÐCÐCÐC °d·j²j±l´lÐC�—
’
‘”ÐCÐCÐCr!   rÃ   Fc              3  óH   K  — | ]}t          d „ |D ¦   «         ¦  «        V — ŒdS )c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r.   r   r   s     r   r   z>reference_formula_header_row_like.<locals>.<genexpr>.<genexpr>5  s*   è è € Ð/Ð/ $ˆt�|Š|‰~Œ~Ð/Ð/Ð/Ð/Ð/Ð/r!   N)rì   re   s     r   r   z4reference_formula_header_row_like.<locals>.<genexpr>5  s9   è è € Ð
EÐ
E°D�3Ð/Ð/¨$Ð/Ñ/Ô/Ñ/Ô/Ð
EÐ
EÐ
EÐ
EÐ
EÐ
Er!   c              3  ó.   K  — | ]}d |v pd|v pd|v V — ŒdS )rM   r   ú,Nrc   re   s     r   r   z4reference_formula_header_row_like.<locals>.<genexpr>7  s8   è è € Ð
LÐ
L¸4ˆC�4ˆKÐ5˜3 $˜;Ð5¨#°¨+Ð
LÐ
LÐ
LÐ
LÐ
LÐ
Lr!   c              3  óJ   K  — | ]}t                                |¦  «        V — Œd S r.   )Ú_REF_FORMULA_ALLOWED_REr[   re   s     r   r   z4reference_formula_header_row_like.<locals>.<genexpr>9  s1   è è € ÐHÐH°tÕ&×,Ò,¨TÑ2Ô2ÐHÐHÐHÐHÐHÐHr!   c                óF   — g | ]}t                                |¦  «        ¯|‘ŒS rc   )Ú_REF_TOKEN_REr7   re   s     r   rf   z5reference_formula_header_row_like.<locals>.<listcomp>;  s+   € ÐIÐIÐI˜$­m×.BÒ.BÀ4Ñ.HÔ.HÐI�ÐIÐIÐIr!   c                óp   — g | ]3}d |v ¯t          t                               |¦  «        ¦  «        dk    ¯1|‘Œ4S )ú=rÄ   )rR   r  r0   re   s     r   rf   z5reference_formula_header_row_like.<locals>.<listcomp><  sB   € ÐhÐhÐh˜d°#¸°+°+Å#Åm×F[ÒF[Ð\`ÑFaÔFaÑBbÔBbÐfgÒBgÐBg�TÐBgÐBgÐBgr!   ç      è?rN   rÄ   r   TÚsection_label_rowr   )rR   rì   ÚallÚrow_profilesÚ"body_window_features_from_profilesÚbody_window_is_stable)r	  r
  r“   Ú	ref_cellsÚformula_cellsÚfollowing_profilesÚbody_featuresÚshifteds           r   Ú!reference_formula_header_row_liker"  0  s�  € àCÐC¨ÐCÑCÔC€HÝ
ˆ8�}„}�qÒÐØˆuÝ
Ð
EÐ
E¸HÐ
EÑ
EÔ
EÑEÔEð ØˆuÝ
Ð
LÐ
LÀ8Ð
LÑ
LÔ
LÑLÔLð ØˆuÝÐHÐH¸xÐHÑHÔHÑHÔHð ØˆuØIÐI (ÐIÑIÔI€IØhÐh hÐhÑhÔh€MÝ
ˆ9�~„~�˜H™œÑ%¨Ò,Ð,ØˆuØð �S ™^œ^¨aÒ/Ð/ØˆuÝ
ˆ>ÑÔ˜QÒÐØˆuå% nÑ5Ô5ÐÝ6Ð7IÈ1ÑMÔM€MÝ˜]Ñ+Ô+ð ØˆtØ˜!ÔÐ0Ô1ð .µcÐ:LÑ6MÔ6MÐQRÒ6RÐ6RÝ4Ð5GÈÑKÔKˆÝ$ WÑ-Ô-Ð-Øˆ5r!   c                ó  — g }d}d„ | D ¦   «         }|D ][}t          j        d|¦  «        r#|                     t          |¦  «        ¦  «         Œ:t	          d„ |D ¦   «         ¦  «        r|dz  }ŒY dS t          |¦  «        dk     rdS t          t          |¦  «        ¦  «        }|t          t          |d         |d         dz   ¦  «        ¦  «        k    rdS |d         d	vrdS |t          d
t          |¦  «        dz  ¦  «        k    rdS dS )Nr   c                ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S rc   r‚   re   s     r   rf   z/dense_integer_axis_row_like.<locals>.<listcomp>Q  ó-   € Ð=Ð=Ð= °·
²
±´Ð=�—
’
‘”Ð=Ð=Ð=r!   r  c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r.   r   r   s     r   r   z.dense_integer_axis_row_like.<locals>.<genexpr>U  s*   è è € Ð1Ð1 D�—’‘”Ð1Ð1Ð1Ð1Ð1Ð1r!   r   Fé   éÿÿÿÿ>   r   r   rN   T)r>   rV   rõ   r   rì   rR   r  r  ÚlistrE   r8   )r•   r  Úalpha_cellsr“   r   r  s         r   Údense_integer_axis_row_liker+  N  s"  € Ø€FØ€KØ=Ð=¨Ð=Ñ=Ô=€HØð ð ˆÝŒ<˜
 DÑ)Ô)ð 	Ø�MŠM�#˜d™)œ)Ñ$Ô$Ð$Ð$ÝÐ1Ð1¨DÐ1Ñ1Ô1Ñ1Ô1ð 	Ø˜1ÑˆKˆKà�5�5Ý
ˆ6�{„{�Q‚€ØˆuÝ•C˜‘K”KÑ Ô €FØ••e˜F 1œI v¨b¤z°A¡~Ñ6Ô6Ñ7Ô7Ò7Ð7ØˆuØˆa„y˜ÐÐØˆuØ•S˜�C ™MœM¨QÑ.Ñ/Ô/Ò/Ð/ØˆuØˆ4r!   c                óê   — t          | ¦  «        }|d         dk    rdS |d         dk    r|d         dk    p|d         dk    S |d	         d
k     rdS t          |d         dk    p|d         dk    ¦  «        S )Nr„   r   FrÄ   rˆ   rë   r‰   rº   r†   rÌ   r»   rá   s     r   Ú#sparse_prefix_extension_prefix_liker-  e  s•   € Ý˜CÑ Ô €HØÐ Ô! QÒ&Ð&ØˆuØÐ Ô! QÒ&Ð&Ø˜Ô&¨$Ò.ÐW°(Ð;NÔ2OÐSWÒ2WÐWØ�Ô Ò%Ð%ØˆuÝ�˜Ô'¨4Ò/ÐX°8Ð<OÔ3PÐTXÒ3XÑYÔYÐYr!   c                óˆ  — t          | ¦  «        }t          | ¦  «        }|d         dk     rdS |d         dk    s|d         dk    rdS t          | ¦  «        rdS t          | |¦  «        rdS |d	         d
k    rdS t	          |d         |d         ¦  «        }|d         dk    p|dk    p|d         dk    }|sdS t          |¦  «        dk     rdS t          |¦  «        }t          |d¦  «        }t          |¦  «        sdS |d         dk    s|d	         dk    r"|d         dk    r|dk     rdS |d         dk    rdS d„ | D ¦   «         }t          |¦  «        }	|	sdS t          d„ |D ¦   «         ¦  «        |	z  }
t          d„ |D ¦   «         ¦  «        |	z  }|d	         dk    rt          | ¦  «        S |dk    r|
dk     rt          | ¦  «        S dS )Nr„   rÄ   FrŠ   g      @rj   rË   Trh   g333333ë?r‰   rl   rˆ   r4   rº   r«   r   r‡   rë   rª   c                óT   — g | ]%}|                      ¦   «         ¯t          |¦  «        ‘Œ&S rc   rd   re   s     r   rf   z/next_header_row_value_guard.<locals>.<listcomp>–  s+   € ÐCÐCÐC °d·j²j±l´lÐC�Y�t‰_Œ_ÐCÐCÐCr!   c              3  ó&   K  — | ]}|d k    ¯dV — ŒdS r{   rc   rq   s     r   r   z.next_header_row_value_guard.<locals>.<genexpr>š  s,   è è € ÐGÐG °¸Ò1FÐ1F˜!Ð1FÐ1FÐ1FÐ1FÐGÐGr!   c              3  ó"   K  — | ]
}|d v ¯dV — ŒdS )>   rE   r
   r   r   Nrc   rq   s     r   r   z.next_header_row_value_guard.<locals>.<genexpr>›  s-   è è € Ð!`Ð!`¨¸ÐA_Ð9_Ð9_ !Ð9_Ð9_Ð9_Ð9_Ð!`Ð!`r!   rÌ   )r”   r¸   rØ   r"  r8   rR   r  r  r  r#   r  )r	  r
  r³   rÏ   Údate_period_signalÚhas_label_signalr  r   r×   Ú
type_countÚdate_type_ratioÚcode_range_number_ratios               r   Únext_header_row_value_guardr7  p  sP  € Ý˜IÑ&Ô&€HÝ˜	Ñ"Ô"€FØÐ Ô! AÒ%Ð%ØˆuØ�Ô Ò#Ð# xÐ0FÔ'GÈ4Ò'OÐ'OØˆuÝ˜iÑ(Ô(ð ØˆuÝ(¨°NÑCÔCð ØˆtØÐ"Ô# dÒ*Ð*Øˆuõ ˜XÐ&9Ô:¸HÐE]Ô<^Ñ_Ô_Ðà�Ô 4Ò'ð 	*Ø Ò%ð	*àÐ$Ô%¨Ò)ð ð
 ð Øˆuå
ˆ>ÑÔ˜QÒÐØˆuÝ% nÑ5Ô5ÐÝ6Ð7IÈ1ÑMÔM€MÝ  Ñ/Ô/ð Øˆuà�Ô  DÒ(Ð(¨HÐ5GÔ,HÈDÒ,PÐ,PØÐ$Ô%¨Ò*Ð*Ð/AÀDÒ/HÐ/HØ�5ØÐ$Ô%¨Ò)Ð)Ø�5àCÐC¨ÐCÑCÔC€EÝ�U‘”€JØð ØˆuÝÐGÐG¨ÐGÑGÔGÑGÔGÈ*ÑT€OÝ!Ð!`Ð!`°Ð!`Ñ!`Ô!`Ñ`Ô`ÐcmÑmÐàÐ"Ô# dÒ*Ð*Ý.¨yÑ9Ô9Ð9Ø $Ò&Ð&¨?¸TÒ+AÐ+AÝ.¨yÑ9Ô9Ð9Øˆ4r!   Útop_header_rowsc                óÌ  — |dk    st          | ¦  «        dk     rdS | d         }| d         }t          |¦  «        }t          |¦  «        }|d         dk     rdS |d         dk     r|d         dk     rdS t          |¦  «        sdS |d	         dk     rdS |d
         dk    rdS t          |¦  «        rdS t	          | dd …         ¦  «        }t          |d¦  «        }t          |¦  «        S )Nr   rÃ   Fr   r†   rë   r„   r‰   ri   rh   rÄ   )rR   r”   r-  Úsection_label_row_liker  r  r  )rø   r8  Úprefixr	  Úprefix_featuresÚcandidate_featuresr  r   s           r   Ú*sparse_prefix_conservative_extension_guardr>  ¤  s  € Ø˜!ÒÐ�s 4™yœy¨1š}˜}ØˆuØ�!ŒW€FØ�Q”€IÝ" 6Ñ*Ô*€OÝ% iÑ0Ô0ÐØ�}Ô%¨Ò,Ð,ØˆuØÐ*Ô+¨aÒ/Ð/Ð4FÐGZÔ4[Ð^bÒ4bÐ4bØˆuÝ.¨vÑ6Ô6ð ØˆuØÐ,Ô-°Ò4Ð4ØˆuØÐ,Ô-°Ò5Ð5ØˆuÝ˜iÑ(Ô(ð ØˆuÝ% d¨1¨2¨2¤hÑ/Ô/ÐÝ6Ð7IÈ1ÑMÔM€MÝ  Ñ/Ô/Ð/r!   c                ó^   — |dk     s|t          | ¦  «        dz
  k    rdS t          | |¦  «        S )zNReturn True when the first body row should be included as a second header row.r   F)rR   r>  )rø   r8  s     r   Úsparse_prefix_next_header_guardr@  ¼  s6   € à˜ÒÐ˜oµ°T±´¸Q±Ò>Ð>ØˆuÝ5°d¸OÑLÔLÐLr!   c                óœ  — |dk    st          | ¦  «        dk     rdS t          d„ | D ¦   «         d¬¦  «        }|dk     rdS | d         }| d         }t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        |k     }t	          |d¦  «                             ¦   «         r|sdS t          |¦  «        |k     o0t          |¦  «        t          dt          |dz  ¦  «        ¦  «        k    }	t          |¦  «        s|d	         d
k    s|	sdS |d         t          dt          |dz  ¦  «        ¦  «        k     rdS |d         dk    s|d         d
k    rdS |d         dk     r|d         dk     rdS t          |¦  «        st          |¦  «        rdS t          | dd…         ¦  «        }
t          |
d¦  «        }t          |¦  «        S )zíPromote a leaf-label row under a sparse/grouped rowspan header scaffold.

    An empty first cell in the candidate row is the textual shadow of the row-0
    rowspan label; treat it as header only when later rows form a stable body.
    r   rÃ   Fc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r.   r™   ©r   r•   s     r   r   z,rowspan_leaf_header_guard.<locals>.<genexpr>Ë  ó(   è è € Ð-Ð- •C˜‘H”HÐ-Ð-Ð-Ð-Ð-Ð-r!   r   ©ÚdefaultrÄ   rë   r†   rË   r„   çÍÌÌÌÌÌÜ?rh   rÌ   r‡   r¯   rˆ   N)rR   r8   r”   r¸   rš   r5   r   rÉ   r:  rÒ   r  r  r  )rø   r8  Úmax_colsr;  r	  r<  r=  Úcandidate_vectorÚshifted_by_rowspanÚsparse_rowspan_prefixr  r   s               r   Úrowspan_leaf_header_guardrL  Ã  s   € ð ˜!ÒÐ�s 4™yœy¨1š}˜}ØˆuÝÐ-Ð-¨Ð-Ñ-Ô-°qÐ9Ñ9Ô9€HØ�!‚|€|Øˆuà�!ŒW€FØ�Q”€IÝ" 6Ñ*Ô*€OÝ% iÑ0Ô0ÐÝ! )Ñ,Ô,ÐÝ˜Y™œ¨(Ò2ÐÝ�9˜aÑ Ô ×&Ò&Ñ(Ô(ð Ð1Cð ØˆuÝ ™KœK¨(Ò2Ðbµs¸6±{´{ÅcÈ!ÍSÐQYÐ\`ÑQ`ÑMaÔMaÑFbÔFbÒ7bÐÝ# FÑ+Ô+ð ¨¸}Ô/MÐQUÒ/UÐ/UÐYnÐ/UØˆuØÐ*Ô+­c°!µS¸ÀD¹Ñ5IÔ5IÑ.JÔ.JÒJÐJØˆuØÐ,Ô-°Ò4Ð4Ð8JÈ?Ô8[Ð^bÒ8bÐ8bØˆuØÐ/Ô0°4Ò7Ð7Ð<NÈ}Ô<]Ð`dÒ<dÐ<dØˆuÝ˜iÑ(Ô(ð Õ,BÀ9Ñ,MÔ,Mð Øˆuå% d¨1¨2¨2¤hÑ/Ô/ÐÝ6Ð7IÈ1ÑMÔM€MÝ  Ñ/Ô/Ð/r!   c                ó  — t          | ¦  «        }|d         dk     rdS |d         dk    o|d         dk    }|d         dk    p|d	         dk    }|d
         dk    p|d         dk    }t          |o|o|ot          | ¦  «         ¦  «        S )Nr„   rÄ   Fr«   r   rª   r¬   rë   r®   r‡   rË   rh   )r¸   r2   rÉ   )r•   rÏ   Úfirst_is_labelÚrest_is_valuesÚvalue_heavys        r   Úleading_body_record_likerQ  è  s¯   € Ý˜‰_Œ_€FØÐÔ !Ò#Ð#ØˆuØÐ.Ô/°!Ò3ÐW¸Ð?QÔ8RÐVWÒ8W€NØÐ0Ô1°TÒ9Ðd¸VÐD[Ô=\Ð`dÒ=d€NØ˜Ô)¨TÒ1ÐW°VÐ<NÔ5OÐSWÒ5W€KÝ�Ðf >Ðf°kÐfÕJaÐbeÑJfÔJfÐFfÑgÔgÐgr!   c                óš   — t          | ¦  «        }t          |d         dk    o#|d         dk    o|d         dk    o|d         dk    ¦  «        S )	Nr„   rN   rj   r4   rh   rº   r†   rË   rÍ   rÎ   s     r   Úleading_long_form_row_likerS  ò  sg   € Ý˜‰_Œ_€FÝØÐÔ  AÒ%ð 	*ØÐ)Ô*¨dÒ2ð	*àÐ%Ô&¨$Ò.ð	*ð �=Ô! TÒ)ñ	ô ð r!   c                ó\  — t          | ¦  «        dk     rdS t          | ¦  «        }t          | d¦  «                             ¦   «         }d„ | D ¦   «         }t	          |od„ | dd …         D ¦   «          ¦  «        }|d         dk    o|d	         d
k    o|d         dk    }t	          |p|o|¦  «        S )NrÄ   Fr   c                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rc   r‚   re   s     r   rf   z*section_label_row_like.<locals>.<listcomp>  s%   € Ð5Ð5Ð5˜¨¯
ª
©¬Ð5�Ð5Ð5Ð5r!   c                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS rc   r‚   re   s     r   rf   z*section_label_row_like.<locals>.<listcomp>  s%   € Ð$NÐ$NÐ$N¨dÀÇÂÁÄÐ$N TÐ$NÐ$NÐ$Nr!   r   r„   rÃ   r†   ç333333ã?rˆ   rë   )rR   r”   rš   r5   r2   )r•   r³   r´   r“   Ú
first_onlyÚsparse_labels         r   r:  r:  ü  sÎ   € Ý
ˆ3�x„x�!‚|€|ØˆuÝ˜CÑ Ô €HÝ˜˜QÑÔ×%Ò%Ñ'Ô'€EØ5Ð5 Ð5Ñ5Ô5€HÝ�eÐNÐ$NÐ$N°c¸!¸"¸"´gÐ$NÑ$NÔ$NÐ NÑOÔO€JàÐ!Ô" aÒ'ð 	,Ø�]Ô# tÒ+ð	,à�]Ô# tÒ+ð õ
 �
Ð9˜xÐ8¨LÑ:Ô:Ð:r!   c                óÔ   — t          | ¦  «        sdS d„ t          | ¦  «        D ¦   «         }t          t          |¦  «        dk    o|d         dk    ot          | ¦  «        dk    ¦  «        S )NFc                ó@   — g | ]\  }}|                      ¦   «         ¯|‘ŒS rc   r‚   )r   Úidxr   s      r   rf   z3centered_section_label_row_like.<locals>.<listcomp>  s)   € ÐLÐLÐL¡	  T¸t¿zºz¹|¼|ÐL˜ÐLÐLÐLr!   r   r   rÃ   )r:  Ú	enumerater2   rR   )r•   Únonempty_indicess     r   Úcentered_section_label_row_liker_    sm   € Ý! #Ñ&Ô&ð ØˆuØLÐL­Y°s©^¬^ÐLÑLÔLÐÝ•Ð$Ñ%Ô%¨Ò*ÐXÐ/?ÀÔ/BÀQÒ/FÐXÍ3ÈsÉ8Ì8ÐWXÊ=ÑYÔYÐYr!   ú	list[int]c                ó  — g }t          | d|…         ¦  «        D ]d\  }}|dk    st          |¦  «        sŒd„ |D ¦   «         }t          |¦  «        dk    rŒ;t          |¦  «        dk     rŒO|                     |¦  «         Œe|S )zGReturn sparse section-label rows inside the detected top header prefix.Nr   c                ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S rc   r‚   re   s     r   rf   z'section_header_rows.<locals>.<listcomp>  s-   € ÐAÐAÐA T°D·J²J±L´LÐA�D—J’J‘L”LÐAÐAÐAr!   r   rÄ   )r]  r_  rR   rõ   )rø   r8  Úsection_rowsÚrow_idxr•   r“   s         r   Úsection_header_rowsre    sœ   € à€LÝ! $Ð'7¨Ð'7Ô"8Ñ9Ô9ð %ð %‰ˆ�Ø�aŠ<ˆ<Õ>¸sÑCÔCˆ<ØØAÐA¨SÐAÑAÔAˆÝˆx‰=Œ=˜AÒÐØÝˆs‰8Œ8�aŠ<ˆ<ØØ×Ò˜GÑ$Ô$Ð$Ð$ØÐr!   Úindexúdict[str, Any]c                ó  — t          | ¦  «        }t          | ¦  «        }|d         dk    o#|d         dk    o|d         dk    o|d         dk    }|d         dk    o|d	         dk    }|d
         dk    o/|d         dk    o#|d         dk    o|d         dk    o|d         dk    }|rd}d}d}|||d         dk    ||||p|p||t          | ¦  «        t          | ¦  «        t	          | ¦  «        t          | ¦  «        t          | ¦  «        dœS )Nr¨   r   r©   r¬   rË   r‡   rÌ   rÅ   rˆ   r«   rª   r°   rë   rh   r†   Fr„   )rf  rÏ   r“   Úbody_value_rowÚbody_dense_rowÚbody_long_form_rowÚbody_like_rowÚcoordinate_header_rowÚleading_body_record_rowÚleading_long_form_rowr  rÉ   Úheader_candidate)r¸   r+  rQ  rS  r:  rÉ   r½   )r•   rf  rÏ   rm  ri  rj  rk  s          r   Úrow_profilerq  !  sw  € Ý˜‰_Œ_€FÝ7¸Ñ<Ô<Ðàˆ}Ô Ò!ð 	,Ø�?Ô# qÒ(ð	,àÐ'Ô(¨DÒ0ð	,ð �?Ô# tÒ+ð	 ð ˜OÔ,°Ò4ÐV¸ÀÔ9NÐRVÒ9V€NàÐ!Ô" QÒ&ð 	*ØÐ%Ô&¨!Ò+ð	*àÐ.Ô/°4Ò7ð	*ð Ð%Ô&¨$Ò.ð	*ð �=Ô! TÒ)ð ð ð #ØˆØˆØ"ÐàØØÐ+Ô,¨qÒ0Ø(Ø(Ø0Ø'ÐO¨>ÐOÐ=OØ!6Ý#;¸CÑ#@Ô#@Ý!;¸CÑ!@Ô!@Ý3°CÑ8Ô8Ý#:¸3Ñ#?Ô#?Ý0°Ñ5Ô5ðð ð r!   úlist[dict[str, Any]]c                ó4   — d„ t          | ¦  «        D ¦   «         S )Nc                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS rc   )rq  )r   rf  r•   s      r   rf   z row_profiles.<locals>.<listcomp>H  s&   € ÐFÐFÐF©
¨¨s�K˜˜UÑ#Ô#ÐFÐFÐFr!   )r]  )rø   s    r   r  r  G  s   € ØFÐFµiÀ±o´oÐFÑFÔFÐFr!   Úvectorsúlist[dict[str, float]]c                ó"  — | sddddddddddddddœS t          t          | ¦  «        ¦  «        t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d	„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d
„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  dœS )Nrg   )ÚcountÚfirst_label_ratior¬   r‡   rˆ   r±   Úbody_row_ratioÚdense_numeric_row_ratioÚlong_form_row_ratiorh   r®   r°   rj   c              3  óJ   K  — | ]}|d          dk    ¯|d         dk    ¯dV — ŒdS )r«   r   rª   r   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>^  sE   è è € Ð yÐ y t¸$Ð?QÔ:RÐUVÒ:VÐ:VÐ[_Ð`rÔ[sÐwxÒ[xÐ[x Ð[xÐ[xÐ[xÐ[xÐ yÐ yr!   c              3  ó&   K  — | ]}|d          V — ŒdS )r¬   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>`  s(   è è € Ð!QÐ!QÀ $Ð';Ô"<Ð!QÐ!QÐ!QÐ!QÐ!QÐ!Qr!   c              3  ó&   K  — | ]}|d          V — ŒdS )r‡   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>a  s'   è è € ÐGÐG°t˜T /Ô2ÐGÐGÐGÐGÐGÐGr!   c              3  ó&   K  — | ]}|d          V — ŒdS )rˆ   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>b  s'   è è € ÐCÐC°4˜4 Ô.ÐCÐCÐCÐCÐCÐCr!   c              3  ó&   K  — | ]}|d          V — ŒdS )r±   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>c  s(   è è € ÐKÐK¸4˜tÐ$5Ô6ÐKÐKÐKÐKÐKÐKr!   c              3  ó&   K  — | ]}|d          V — ŒdS )rh   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>d  s(   è è € ÐMÐM¸T Ð%7Ô 8ÐMÐMÐMÐMÐMÐMr!   c              3  ó&   K  — | ]}|d          V — ŒdS )r®   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>e  s(   è è € Ð$WÐ$WÀt TÐ*AÔ%BÐ$WÐ$WÐ$WÐ$WÐ$WÐ$Wr!   c              3  ó&   K  — | ]}|d          V — ŒdS )r°   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>f  s(   è è € Ð(_Ð(_Èt¨Ð.IÔ)JÐ(_Ð(_Ð(_Ð(_Ð(_Ð(_r!   c              3  ó&   K  — | ]}|d          V — ŒdS )rj   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>g  s(   è è € Ð#UÐ#UÀT DÐ)?Ô$@Ð#UÐ#UÐ#UÐ#UÐ#UÐ#Ur!   c              3  óª   K  — | ]N}|d          dk    r$|d         dk    r|d         dk    r|d         dk    s|d         dk    ¯>|d         dk    ¯Jd	V — ŒOd
S )r¨   r   r©   r¬   rË   r‡   rÌ   rÅ   rˆ   r   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>h  s‘   è è € ð 

ð 

àà�]Ô# aÒ'Ð'Ø˜Ô)¨QÒ.Ð.ØÐ-Ô.°$Ò6Ð6Ø˜Ô)¨TÒ1Ð1à�_Ô%¨Ò-Ð-°$°}Ô2EÈÒ2MÐ2Mð ð 3NÐ2MÐ2MÐ2Mð

ð 

r!   c              3  óJ   K  — | ]}|d          dk    ¯|d         dk    ¯dV — ŒdS )r‡   rÅ   rˆ   rË   r   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>t  sJ   è è € ð '
ð '
Ø T¨/Ô%:¸dÒ%BÐ%BÀtÈMÔGZÐ^bÒGbÐGbˆAÐGbÐGbÐGbÐGbð'
ð '
r!   c              3  ó’   K  — | ]B}|d          dk    r4|d         dk    r(|d         dk    r|d         dk    r|d         dk    ¯>d	V — ŒCd
S )r«   r   rª   r°   rë   rh   rÌ   r†   rË   r   Nrc   rq   s     r   r   z'combine_body_vectors.<locals>.<genexpr>x  s„   è è € ð 
#
ð 
#
ààÐ'Ô(¨1Ò,Ð,ØÐ+Ô,°Ò1Ð1ØÐ4Ô5¸Ò=Ð=ØÐ+Ô,°Ò4Ð4Ø˜Ô'¨4Ò/Ð/ð ð 0Ð/Ð/Ð/ð
#
ð 
#
r!   )rx  ry  r¬   r‡   rˆ   r±   rh   r®   r°   rj   rz  r{  r|  )r’   rR   r#   )ru  s    r   Úcombine_body_vectorsr‰  K  sw  € Øð 
àØ!$Ø"%Ø ØØ"Ø!Ø'*Ø#&Ø #Ø%(Ø),Ø$'ð
ð 
ð 	
õ  •s˜7‘|”|Ñ$Ô$Ý Ð yÐ y¨wÐ yÑ yÔ yÑyÔyÝ
ˆg‰,Œ,ñå!Ð!QÐ!QÈÐ!QÑ!QÔ!QÑQÔQÕTWÐX_ÑT`ÔT`Ñ`ÝÐGÐG¸wÐGÑGÔGÑGÔGÍ#ÈgÉ,Ì,ÑVÝÐCÐC¸7ÐCÑCÔCÑCÔCÅcÈ'ÁlÄlÑRÝÐKÐKÀ7ÐKÑKÔKÑKÔKÍcÐRYÉlÌlÑZÝÐMÐMÀWÐMÑMÔMÑMÔMÕPSÐT[ÑP\ÔP\Ñ\Ý!$Ð$WÐ$WÈwÐ$WÑ$WÔ$WÑ!WÔ!WÕZ]Ð^eÑZfÔZfÑ!fÝ%(Ð(_Ð(_ÐW^Ð(_Ñ(_Ô(_Ñ%_Ô%_ÕbeÐfmÑbnÔbnÑ%nÝ #Ð#UÐ#UÈWÐ#UÑ#UÔ#UÑ UÔ UÕX[Ð\cÑXdÔXdÑ dÝð 

ð 

àð

ñ 

ô 

ñ 

ô 

õ ˆg‰,Œ,ñõ $'ð '
ð '
Ø!ð'
ñ '
ô '
ñ $
ô $
õ ˆg‰,Œ,ñ$õ  #ð 
#
ð 
#
àð
#
ñ 
#
ô 
#
ñ 
 
ô 
 
õ ˆg‰,Œ,ñ ð9(ð (ð (r!   rN   ÚprofilesÚstartÚsizec                óN   — d„ | |||z   …         D ¦   «         }t          |¦  «        S )Nc                ó.   — g | ]}|d          ¯
|d         ‘ŒS )r“   rÏ   rc   ©r   Úprofiles     r   rf   z6body_window_features_from_profiles.<locals>.<listcomp>Š  s)   € ÐfÐfÐf WÐRYÐZdÔReÐfˆw�xÔ ÐfÐfÐfr!   )r‰  )rŠ  r‹  rŒ  ru  s       r   r  r  ‡  s4   € ð gÐf°¸ÀÈÁÐ9MÔ0NÐfÑfÔf€GÝ Ñ(Ô(Ð(r!   r³   c                ó2  — | d         dk     rdS | d         dk    o| d         dk    o| d         d	k    }| d
         dk    o| d         dk    o| d         dk    }| d         dk    o/| d         dk    o#| d         dk    o| d         dk    o| d         dk    }|p|p|S )Nrx  rÄ   Frz  rë   r¬   rG  ry  rË   r{  r‡   rW  rˆ   gš™™™™™á?r|  r°   rh   rÌ   rc   )r³   Ú
value_bodyÚdense_numeric_bodyÚlong_form_bodys       r   r  r  Ž  s   € Ø�Ô˜1ÒÐØˆuàÐ!Ô" dÒ*ð 	2ØÐ)Ô*¨dÒ2ð	2àÐ(Ô)¨TÒ1ð ð 	Ð*Ô+¨tÒ3ð 	,Ø�_Ô%¨Ò-ð	,à�]Ô# tÒ+ð ð 	Ð&Ô'¨4Ò/ð 	.ØÐ(Ô)¨TÒ1ð	.àÐ0Ô1°TÒ9ð	.ð Ð'Ô(¨DÒ0ð	.ð �_Ô%¨Ò-ð ð Ð=Ð+Ð=¨~Ð=r!   Ú
header_rowr   c                óš  — t          | ¦  «        }d}|t          |d         |d         z
  ¦  «        z  }|t          |d         |d         z
  ¦  «        z  }|t          |d         |d         z
  ¦  «        z  }|t          |d         |d         z
  ¦  «        z  }|dt          |d         |d         z
  ¦  «        z  z  }|d	         d
k    r|dz  }|S )Nrg   r‡   rˆ   r¬   r¨   ry  rë   r±   r†   rº   rÌ   )r¸   Úabs)r•  r   ÚheaderÚdistances       r   Úboundary_distancerš  ¥  sâ   € Ý˜
Ñ#Ô#€FØ€HØ•�F˜?Ô+¨m¸OÔ.LÑLÑMÔMÑM€HØ•�F˜=Ô)¨M¸-Ô,HÑHÑIÔIÑI€HØ•�FÐ/Ô0°=ÐAUÔ3VÑVÑWÔWÑW€HØ•�F˜=Ô)¨MÐ:MÔ,NÑNÑOÔOÑO€HØ�•c˜&Ð!2Ô3°mÐDUÔ6VÑVÑWÔWÑWÑW€HØˆmÔ Ò$Ð$Ø�DÑˆØ€Or!   Ú
body_startc                óô  ‡ — g }|dk    rdS |dk    rdS |d|…         }|sdS t          ˆ fd„|D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }g }|D ]‘}	|	d         sŒt          |	d         ¦  «        }
|oB|
|dz
  k    o9|	d	         o1|	d
          o(|	d         d         dk    o|
dk    o||
dz
           d	         }t          ‰ |
         ¦  «        s|s|                     |	¦  «         Œ’t          d„ |D ¦   «         ¦  «        r|s|r|                     d¦  «         n|r|                     d¦  «         t          d„ |D ¦   «         ¦  «        r|                     d¦  «         t          d„ |D ¦   «         ¦  «        s|                     d¦  «         ||dz
           }||dz
           }t          ‰ |dz
           |¦  «        }|dk    rA|d         d         dk    r/|d         d         dk    r|d         s|                     d¦  «         |d         r|d         s|                     d¦  «         |d         d         dk     r|d         s|                     d¦  «         |d k     r|                     d!¦  «         | S )"Nr   Tr'  Fc              3  óN   •K  — | ]}t          ‰|d                   ¦  «        V — Œ dS )rf  N)r_  )r   r�  rø   s     €r   r   z#header_prefix_ok.<locals>.<genexpr>Â  s7   øè è € Ð {Ð {Ð]dÕ!@ÀÀgÈgÔFVÔAWÑ!XÔ!XÐ {Ð {Ð {Ð {Ð {Ð {r!   c              3  óB   K  — | ]}|                      d d¦  «        V — ŒdS )rm  FN©Úgetr�  s     r   r   z#header_prefix_ok.<locals>.<genexpr>Ã  s1   è è € ÐjÐjÈG˜GŸKšKÐ(?ÀÑGÔGÐjÐjÐjÐjÐjÐjr!   r  rf  rp  rl  rÏ   r„   rÃ   c              3  ó&   K  — | ]}|d          V — ŒdS )r  Nrc   r�  s     r   r   z#header_prefix_ok.<locals>.<genexpr>Ô  s(   è è € Ð
JÐ
J¨Gˆ7Ð&Ô'Ð
JÐ
JÐ
JÐ
JÐ
JÐ
Jr!   Úsection_label_before_bodyc              3  ó&   K  — | ]}|d          V — ŒdS )rl  Nrc   r�  s     r   r   z#header_prefix_ok.<locals>.<genexpr>Ù  s'   è è € Ð
FÐ
F¨ˆ7�?Ô#Ð
FÐ
FÐ
FÐ
FÐ
FÐ
Fr!   Úbody_like_row_before_bodyc              3  ó&   K  — | ]}|d          V — ŒdS )rp  Nrc   r�  s     r   r   z#header_prefix_ok.<locals>.<genexpr>Û  s(   è è € ÐMÐM¨wˆwÐ)Ô*ÐMÐMÐMÐMÐMÐMr!   Ú non_header_candidate_before_bodyrÄ   r§   r   r‡   rg   rÉ   Ú(numeric_first_row_without_group_scaffoldrj  Ú&dense_candidate_without_group_scaffoldrˆ   rº   Ú*low_alpha_candidate_without_group_scaffoldgÍÌÌÌÌÌð?Úweak_header_body_contrast)r  rì   r   r_  rõ   rš  )rø   rŠ  r›  r   ÚreasonsÚcandidate_profilesÚallowed_section_prefixÚcoordinate_prefixÚdisallowed_section_profilesr�  r\  Úsparse_coordinate_tailÚpreviousÚlast_candidateÚcontrasts   `              r   Úheader_prefix_okr´  ²  s?  ø€ ð €GØ�Q‚€ØˆtØ�A‚~€~Øˆuà! ! J ,Ô/ÐØð Øˆtå Ð {Ð {Ð {Ð {ÐhzÐ {Ñ {Ô {Ñ{Ô{ÐÝÐjÐjÐWiÐjÑjÔjÑjÔjÐØ"$ÐØ%ð 8ð 8ˆØÐ*Ô+ð 	ØÝ�'˜'Ô"Ñ#Ô#ˆàð 6Ø�z A‘~Ò%ð6àÐ*Ô+ð6ð ˜OÔ,Ð,ð6ð ˜Ô!Ð"2Ô3°qÒ8ð	6ð
 �a’ð6ð ˜˜q™Ô!Ð"4Ô5ð 	õ /¨t°C¬yÑ9Ô9ð 	8ÐBXð 	8Ø'×.Ò.¨wÑ7Ô7Ð7øÝ
Ð
JÐ
JÐ7IÐ
JÑ
JÔ
JÑJÔJð 4ÐSið 4Ø&ð 	8Ø�NŠNÐ6Ñ7Ô7Ð7øØ	$ð 4Ø�ŠÐ2Ñ3Ô3Ð3Ý
Ð
FÐ
FÐ3EÐ
FÑ
FÔ
FÑFÔFð 4Ø�ŠÐ2Ñ3Ô3Ð3ÝÐMÐMÐ:LÐMÑMÔMÑMÔMð ;Ø�ŠÐ9Ñ:Ô:Ð:à˜
 Q™Ô'€HØ˜j¨1™nÔ-€NÝ   j°1¡nÔ!5°}ÑEÔE€Hà�aŠˆØ˜8Ô$ ]Ô3°qÒ8Ð8Ø˜8Ô$ _Ô5¸Ò;Ð;ØÐ2Ô3ð <ð 	�ŠÐAÑBÔBÐBØÐ&Ô'ð A°Ð9RÔ0Sð AØ�ŠÐ?Ñ@Ô@Ð@Ø�hÔ Ô.°Ò5Ð5¸hÐG`Ô>aÐ5Ø�ŠÐCÑDÔDÐDØ�$‚€Ø�ŠÐ2Ñ3Ô3Ð3àˆ;Ðr!   c           	     óL  — g }t          dt          | ¦  «        dz
  ¦  «        }t          d|dz   ¦  «        D ]m}t          | |¦  «        }| |         d         }|ot	          |¦  «        }t          d„ | d|…         D ¦   «         ¦  «        }|                     |||||dœ¦  «         Œn|S )Nr'  rÄ   r   rl  c              3  óT   K  — | ]#}|d          o|                      dd¦  «         V — Œ$dS )rl  rm  FNrŸ  r�  s     r   r   z(body_start_candidates.<locals>.<genexpr>û  sS   è è € ð 
ð 
àð �OÔ$ÐX¨W¯[ª[Ð9PÐRWÑ-XÔ-XÐ)Xð
ð 
ð 
ð 
ð 
ð 
r!   )r›  Ú	body_likeÚstart_row_body_likeÚprior_body_seenÚbody)r²   rR   rE   r  r  rì   rõ   )rŠ  Ú
candidatesÚ	max_startr‹  r   r¸  Ústabler¹  s           r   Úbody_start_candidatesr¾  ò  så   € ð €JÝ�A•s˜8‘}”} qÑ(Ñ)Ô)€IÝ�q˜) a™-Ñ(Ô(ð 
ð 
ˆÝ:¸8ÀUÑKÔKˆØ& uœo¨oÔ>ÐØ$ÐMÕ)>¸}Ñ)MÔ)MˆÝð 
ð 
à# A e GÔ,ð
ñ 
ô 
ñ 
ô 
ˆð 	×Òà#Ø#Ø':Ø#2Ø%ðð ñ	
ô 	
ð 	
ð 	
ð Ðr!   rH  úset[int]c           	     óp   ‡ — ˆ fd„t          t          |t          ‰ ¦  «        ¦  «        ¦  «        D ¦   «         S )Nc                óX   •— h | ]&}t          ‰|¦  «                             ¦   «         ¯$|’Œ'S rc   ©rš   r5   )r   r\  r•   s     €r   rÂ   z(_nonempty_col_indices.<locals>.<setcomp>  s4   ø€ Ð[Ð[Ð[�C½[ÈÈcÑ=RÔ=R×=XÒ=XÑ=ZÔ=ZÐ[ˆCÐ[Ð[Ð[r!   )rE   r²   rR   )r•   rH  s   ` r   Ú_nonempty_col_indicesrÃ    s5   ø€ Ø[Ð[Ð[Ð[�5¥ X­s°3©x¬xÑ!8Ô!8Ñ9Ô9Ð[Ñ[Ô[Ð[r!   c                ó\  — |dk    rdS t          d„ | D ¦   «         d¬¦  «        }|dk     rdS t          ¦   «         }| d |…         D ]%}|                     t          ||¦  «        ¦  «         Œ&t	          |¦  «        |k     o0t	          |¦  «        t          dt          |dz  ¦  «        ¦  «        k    S )Nr   Fc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r.   r™   rC  s     r   r   z,_header_column_incomplete.<locals>.<genexpr>  rD  r!   rE  rÃ   r   r  )r8   r  ÚupdaterÃ  rR   r   )rø   r8  rH  Úfilledr•   s        r   Ú_header_column_incompleterÈ    s»   € Ø˜!ÒÐØˆuÝÐ-Ð-¨Ð-Ñ-Ô-°qÐ9Ñ9Ô9€HØ�!‚|€|ØˆuÝ‘u”u€FØÐ$�_Ð$Ô%ð <ð <ˆØ�ŠÕ+¨C°Ñ:Ô:Ñ;Ô;Ð;Ð;Ýˆv‰;Œ;˜Ò!ÐQ¥c¨&¡k¤kµS¸½CÀÈ4ÁÑ<PÔ<PÑ5QÔ5QÒ&QÐQr!   c                óv   — d„ | D ¦   «         }t          |¦  «        dk     rdS t          d„ |D ¦   «         ¦  «        S )Nc                ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S rc   r‚   re   s     r   rf   z-_bare_year_value_row_like.<locals>.<listcomp>  r%  r!   rÄ   Fc              3  óJ   K  — | ]}t                                |¦  «        V — Œd S r.   )rX   rV   re   s     r   r   z,_bare_year_value_row_like.<locals>.<genexpr>  s0   è è € Ð=Ð=¨D�x×!Ò! $Ñ'Ô'Ð=Ð=Ð=Ð=Ð=Ð=r!   )rR   r  )r•   r“   s     r   Ú_bare_year_value_row_likerÌ    sH   € Ø=Ð=¨Ð=Ñ=Ô=€HÝ
ˆ8�}„}�qÒÐØˆuÝÐ=Ð=°HÐ=Ñ=Ô=Ñ=Ô=Ð=r!   c           
     óŽ  ‡ — t          ‰ ¦  «        }t          ‰ d¦  «        }t          t          ‰ |¦  «        ¦  «        }ˆ fd„t	          dt          |t          ‰ ¦  «        ¦  «        ¦  «        D ¦   «         }g }|d         dk     st          |¦  «        dk     r|                     d¦  «         t          |¦  «        dk     r|                     d¦  «         |d         st          ‰ ¦  «        st          ‰ ¦  «        r|                     d¦  «         t          ‰ ¦  «        s|d	         d
k    s|d         dk    r|                     d¦  «         t          ‰ ¦  «        r|                     d¦  «         t          ‰ ¦  «        r|                     d¦  «         |d         dk    s|d         d
k    r|                     d¦  «         t          |¦  «        dk    rCt          |¦  «        }t          |d¦  «        }	t          |	¦  «        s|                     d¦  «         |d         dk    p|d         dk    }
|
s|                     d¦  «         | S )Nr   c                ót   •— g | ]4}t          ‰|¦  «                             ¦   «         ¯$t          ‰|¦  «        ‘Œ5S rc   rÂ  )r   r–   r•   s     €r   rf   z1_undertag_extension_candidate.<locals>.<listcomp>&  sA   ø€ ÐÐÐ°SÕalÐmpÐruÑavÔav×a|Òa|Ña~Ôa~Ð�; s¨CÑ0Ô0ÐÐÐr!   r   r„   rÄ   Úsingle_or_sparse_rowÚ!no_column_header_cells_after_stubrl  rh   rË   r‡   rë   Ústrong_value_rowÚbare_year_value_rowr  rŠ   r¦   rj   Úlong_text_rowÚfollowing_body_not_stablerˆ   rÌ   r‰   rº   Úweak_label_signal)r”   rq  r  rÃ  rE   r²   rR   rõ   rÐ   rÒ   rØ   rÌ  r:  r  r  r  )r•   r
  rH  r³   r�  Úfilled_colsÚnonempty_after_stubr«  r  r   Úlabel_signals   `          r   Ú_undertag_extension_candidaterÙ  "  sc  ø€ Ý˜CÑ Ô €HÝ˜#˜qÑ!Ô!€GÝÕ.¨s°HÑ=Ô=Ñ>Ô>€KØÐÐÐ½EÀ!ÅSÈÕSVÐWZÑS[ÔS[ÑE\ÔE\Ñ<]Ô<]ÐÑÔÐØ€GàÐ Ô! AÒ%Ð%­¨[Ñ)9Ô)9¸AÒ)=Ð)=Ø�ŠÐ-Ñ.Ô.Ð.Ý
ÐÑÔ !Ò#Ð#Ø�ŠÐ:Ñ;Ô;Ð;ØˆÔð (¥=°Ñ#5Ô#5ð (Õ9OÐPSÑ9TÔ9Tð (Ø�Š�Ñ'Ô'Ð'Ý˜cÑ"Ô"ð + hÐ/AÔ&BÀTÒ&IÐ&IÈXÐVeÔMfÐimÒMmÐMmØ�ŠÐ)Ñ*Ô*Ð*Ý  Ñ%Ô%ð .Ø�ŠÐ,Ñ-Ô-Ð-Ý˜cÑ"Ô"ð ,Ø�ŠÐ*Ñ+Ô+Ð+Ø�Ô Ò#Ð# xÐ0FÔ'GÈ4Ò'OÐ'OØ�Š�Ñ'Ô'Ð'Ý
ˆ>ÑÔ˜aÒÐÝ)¨.Ñ9Ô9ÐÝ:Ð;MÈqÑQÔQˆÝ$ ]Ñ3Ô3ð 	8Ø�NŠNÐ6Ñ7Ô7Ð7à˜MÔ*¨dÒ2Ð[°hÐ?RÔ6SÐW[Ò6[€LØð ,Ø�ŠÐ*Ñ+Ô+Ð+àˆ;Ðr!   rÃ   )ÚcaprÚ  c               ó†  — t          d„ | D ¦   «         d¬¦  «        }|dk    r|S |t          | ¦  «        k    r|S t          | |¦  «        s|S |}t          |t	          t          | ¦  «        ||z   ¦  «        ¦  «        D ]E}|t          | ¦  «        dz
  k    r n,t          | |         | |dz   d…         |¦  «        }|s n|dz   }ŒF|S )zLPromote under-tagged column-header rows immediately below the base boundary.c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r.   r™   rC  s     r   r   z)extend_header_undertag.<locals>.<genexpr>K  rD  r!   r   rE  r   N)r8   rR   rÈ  rE   r²   rÙ  )rø   r8  rÚ  rH  Únew_toprd  Úoks          r   Úextend_header_undertagrß  D  sñ   € õ Ð-Ð-¨Ð-Ñ-Ô-°qÐ9Ñ9Ô9€HØ˜!ÒÐØÐØ�#˜d™)œ)Ò#Ð#ØÐÝ$ T¨?Ñ;Ô;ð ØÐà€GÝ˜­#­c°$©i¬i¸È3Ñ9NÑ*OÔ*OÑPÔPð ð ˆØ•c˜$‘i”i !‘mÒ#Ð#ØˆEÝ*¨4°¬=¸$¸wÈ¹{¸}¸}Ô:MÈxÑXÔXˆØð 	ØˆEØ˜A‘+ˆˆà€Nr!   c                ó¬  — | sdS t          | ¦  «        dk    rdS t          | ¦  «        }t          |¦  «        }|D ]ä}t          |d         ¦  «        }|d         r|d         rŒ(|dk    rš|d         d         rt	          | d         ¦  «        }|r dS  dS t          | ¦  «        r dS t          | d¦  «        r dS t          | d¦  «        r dS t          | ¦  «        dk    r!t          | d         | dd …         ¦  «        r dS  dS t          | |||d	         ¦  «        r|c S Œåt          | ¦  «        rdS t          | d¦  «        rdS t          | d¦  «        rdS dS )
Nr   r   r›  r·  r¹  rn  rÄ   rÃ   rº  )
rR   r  r¾  r   r÷   rþ   r@  rL  r7  r´  )rø   rŠ  r»  r	  r›  Úrestore_guardss         r   Ú#find_top_header_rows_by_body_changerâ  _  s¸  € ð ð ØˆqÝ
ˆ4�y„y�A‚~€~Øˆqå˜DÑ!Ô!€HÝ& xÑ0Ô0€JØð ð ˆ	Ý˜ <Ô0Ñ1Ô1ˆ
Ø˜Ô%ð 	¨Ð3DÔ)Eð 	Øà˜Š?ˆ?Ø˜Œ{Ð4Ô5ð Ý!9¸$¸q¼'Ñ!BÔ!B�Ø!ð Ø˜1˜1Ø�q�qÝ+¨DÑ1Ô1ð Ø�q�qÝ.¨t°QÑ7Ô7ð Ø�q�qÝ(¨¨qÑ1Ô1ð Ø�q�qõ �4‰yŒy˜AŠ~ˆ~Õ"=¸dÀ1¼gÀtÈAÈBÈBÄxÑ"PÔ"Pˆ~Ø�q�qØ�1�1å˜D (¨J¸	À&Ô8IÑJÔJð 	ØÐÐÐð	õ $ DÑ)Ô)ð Øˆqå& t¨QÑ/Ô/ð Øˆqå   qÑ)Ô)ð Øˆqàˆ1r!   T)Úfrozenc                  ó$   — e Zd ZU ded<   ded<   dS )ÚHeaderRegionr   r8  ztuple[int, ...]re  N)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rc   r!   r   rå  rå  �  s*   € € € € € € àÐÐÑØ(Ð(Ð(Ñ(Ð(Ð(r!   rå  c                óœ   — t          | ¦  «        }t          | |¦  «        }t          t          | |¦  «        ¦  «        }t	          ||¬¦  «        S )N)r8  re  )râ  rß  Útuplere  rå  )rø   r8  rc  s      r   Úfind_header_regionrì  •  sU   € Ý9¸$Ñ?Ô?€Oõ -¨T°?ÑCÔC€OÝÕ,¨T°?ÑCÔCÑDÔD€LÝØ'Ø(ðñ ô ð r!   u    ^[\s$â‚¬Â£(),.%\-â€“â€”+0-9/:]+$c                ó‚   — t          t                               | ¦  «        ¦  «        ot          d„ | D ¦   «         ¦  «        S )Nc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r.   r)   r   s     r   r   z _plain_number.<locals>.<genexpr>¨  s*   è è € Ð5VÐ5VÈ°d·l²l±n´nÐ5VÐ5VÐ5VÐ5VÐ5VÐ5Vr!   )r2   Ú_PLAIN_NUMBER_REr[   rì   r$   s    r   Ú_plain_numberrð  §  s<   € ÝÕ ×&Ò& tÑ,Ô,Ñ-Ô-ÐVµ#Ð5VÐ5VÐQUÐ5VÑ5VÔ5VÑ2VÔ2VÐVr!   ú0tuple[list[tuple[int, int, int, int, str]], int]c                óâ  ‡‡— t          ¦   «         }g }t          | ¦  «        D ]®\  }}dŠ|D ]¤}|‰f|v r‰dz  Š|‰f|v °|t          d|j        ¦  «        z   ‰t          d|j        ¦  «        z   c}Š|                     ˆˆfd„t          ||¦  «        D ¦   «         ¦  «         |                     ||‰‰t          |j	        pd¦  «        f¦  «         ‰ŠŒ¥Œ¯|t          d„ |D ¦   «         d¬¦  «        dz   fS )zÕPlace a ragged span grid on its slots, as an HTML renderer does.

    Returns one ``(row0, row1, col0, col1, text)`` entry per cell (end-exclusive
    slots, whitespace-collapsed text) and the grid's column count.r   r   c              3  óF   •K  — | ]}t          ‰‰¦  «        D ]}||fV — Œ	Œd S r.   )rE   )r   ÚrÚcÚcol0Úcol1s      €€r   r   z_span_slots.<locals>.<genexpr>¸  s?   øè è € ÐYÐY qÅuÈTÐSWÑGXÔGXÐYÐYÀ!˜Q ˜FÐYÐYÐYÐYÐYÐYÐYr!   r˜   c              3  ó    K  — | ]	\  }}|V — Œ
d S r.   rc   )r   Ú_r–   s      r   r   z_span_slots.<locals>.<genexpr>»  s&   è è € Ð2Ð2™v˜q #�sÐ2Ð2Ð2Ð2Ð2Ð2r!   r(  rE  )
r  r]  r8   ÚrowspanÚcolspanrÆ  rE   rõ   Úcollapse_cell_wsr   )	ÚgridÚoccupiedÚslotsÚrow0r•   rÜ   Úrow1rö  r÷  s	          @@r   Ú_span_slotsr  «  s2  øø€ õ
 &)¡U¤U€HØ€EÝ˜t‘_”_ð ð ‰	ˆˆcØˆØð 	ð 	ˆDØ˜�, (Ð*Ð*Ø˜‘	�ð ˜�, (Ð*Ð*à¥ A t¤|Ñ 4Ô 4Ñ4°d½SÀÀDÄLÑ=QÔ=QÑ6QˆJˆD�$Ø�OŠOÐYÐYÐYÐYÐY­E°$¸Ñ,=Ô,=ÐYÑYÔYÑYÔYÐYØ�LŠL˜$  d¨DÕ2BÀ4Ä9À?ÐPRÑ2SÔ2SÐTÑUÔUÐUØˆDˆDð	ð •#Ð2Ð2¨Ð2Ñ2Ô2¸BÐ?Ñ?Ô?À!ÑCÐCÐCr!   Úncolsútuple[str, ...]c                óØ   — dg|z  }| D ]S\  }}}}}||cxk    r|k     r>n Œ|r9t          |¦  «        rdnd}	t          |t          ||¦  «        ¦  «        D ]}
|	||
<   ŒŒTt          |¦  «        S )zHPer column, whether ``row`` shows nothing, a plain number or text there.r˜   r
   r   )rð  rE   r²   rë  )rÿ  r•   r  Úshaper   r  rö  r÷  r   Úkindr–   s              r   Ú
_row_shaper  ¾  sŸ   € àˆD�5‰L€EØ(-ð "ð "Ñ$ˆˆd�D˜$ Ø�3ÐÐÒÐ˜ÒÐÐÐÐ $ÐÝ,¨TÑ2Ô2Ð>�8�8¸ˆDÝ˜T¥3 t¨UÑ#3Ô#3Ñ4Ô4ð "ð "�Ø!��c‘
�
øÝ�‰<Œ<Ðr!   c                óš  ‡‡‡‡	— t          | ¦  «        \  }Š	|Šd‰cxk     rt          | ¦  «        k     r	n n‰	dk     r‰S ‰t          | ¦  «        dz
  k     r÷ˆfd„|D ¦   «         }d„ |D ¦   «         Šˆˆ	fd„|D ¦   «         }ˆfd„|D ¦   «         }|r6|r4t          |¦  «        dk    r"|d         d         |d         d         z
  ‰	k    rn‡d„ |D ¦   «         Št          ˆfd	„|D ¦   «         ¦  «        sn_t          ˆfd
„|D ¦   «         ¦  «        rnCt          |‰‰	¦  «        t          |‰dz   ‰	¦  «        k    rn‰dz  Š‰t          | ¦  «        dz
  k     °÷‰S )aÔ  Extend the header over the row naming the columns of a spanning header cell.

    A header cell spanning more than one column but not all of them, with no
    single-column label under any of its columns, leaves those columns unnamed.
    The row below the header joins it when it supplies the names: a non-empty
    single-column cell under every column of such a span, no plain number under
    a column that is already labeled, not one full-width cell, and not the same
    blank/number/text shape per column as the row after it (that repeat marks
    the first record of a regular body). Repeats for nested spans; never shrinks
    the header, leaves a header of 0 rows alone and never takes the last row, so
    the table always keeps a body row.

    ``grid`` is a row-major placement grid duck-typed like ``render_table_html``
    input (``text`` / ``colspan`` / ``rowspan``). Only its text and spans are
    read, so the result depends on nothing but the grid itself.
    r   rÄ   r   c                ó<   •— g | ]}|d          ‰k    ¯|d         ¯|‘ŒS )r   rN   rc   )r   ÚslotÚdepths     €r   rf   z-extend_header_leaf_labels.<locals>.<listcomp>ß  s0   ø€ ÐIÐIÐI˜4¨D°¬G°uÒ,<Ð,<ÀÀaÄÐ,<�$Ð,<Ð,<Ð,<r!   c                ó0   — h | ]\  }}}}}||z
  d k    ¯|’ŒS ©r   rc   )r   rù  rö  r÷  s       r   rÂ   z,extend_header_leaf_labels.<locals>.<setcomp>à  s1   € ÐNÐNÐNÑ/˜A˜q $¨¨a¸TÀD¹[ÈAÒ=MÐ=M�4Ð=MÐ=MÐ=Mr!   c                ó¨   •— g | ]N\  }}}}}d ||z
  cxk     r‰k     ¯n n3‰                      t          ||¦  «        ¦  «        ¯>t          ||¦  «        ‘ŒOS r  )Ú
isdisjointrE   )r   rù  rö  r÷  Úlabeledr  s       €€r   rf   z-extend_header_leaf_labels.<locals>.<listcomp>á  sz   ø€ ð 
ð 
ð 
á#��1�d˜D !Ø�4˜$‘;Ð&Ð&Ò&Ð& Ò&Ð&Ð&Ð&Ð&¨7×+=Ò+=½eÀDÈ$Ñ>OÔ>OÑ+PÔ+PÐ&õ �$˜ÑÔà&Ð&Ð&r!   c                ó6   •— g | ]\  }}}}}|‰k    ¯|¯|||f‘ŒS rc   rc   )r   r   rù  rö  r÷  r   r  s         €r   rf   z-extend_header_leaf_labels.<locals>.<listcomp>æ  s6   ø€ ÐcÐcÐcÑ&? d¨A¨t°T¸4ÈDÐTYÊMÈMÐ^bÈM��d˜DÐ!ÈMÈMÈMr!   c                ó,   — h | ]\  }}}||z
  d k    ¯|’ŒS r  rc   )r   rö  r÷  rù  s       r   rÂ   z,extend_header_leaf_labels.<locals>.<setcomp>é  s,   € ÐDÐDÐD™=˜4  q°4¸$±;À!Ò3CÐ3C�$Ð3CÐ3CÐ3Cr!   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r.   )Ú
issuperset)r   ÚspanÚleavess     €r   r   z,extend_header_leaf_labels.<locals>.<genexpr>ê  s1   øè è € Ð=Ð=¨t�6×$Ò$ TÑ*Ô*Ð=Ð=Ð=Ð=Ð=Ð=r!   c              3  ó†   •K  — | ];\  }}}t          |¦  «        o#‰                     t          ||¦  «        ¦  «         V — Œ<d S r.   )rð  r  rE   )r   rö  r÷  r   r  s       €r   r   z,extend_header_leaf_labels.<locals>.<genexpr>ì  sU   øè è € ÐmÐmÑUeÐUYÐ[_Ðae�}˜TÑ"Ô"ÐP¨7×+=Ò+=½eÀDÈ$Ñ>OÔ>OÑ+PÔ+PÐ'PÐmÐmÐmÐmÐmÐmr!   )r  rR   rì   r  )
rý  r8  rÿ  r˜  Úspansr•   r  r  r  r  s
         @@@@r   Úextend_header_leaf_labelsr  É  sÑ  øøøø€ õ" ˜tÑ$Ô$�L€Eˆ5Ø€EØˆuÐ Ð Ò Ð •s˜4‘y”yÒ Ð Ð Ð Ð  E¨A¢I IØˆØ
•#�d‘)”)˜a‘-Ò
Ð
ØIÐIÐIÐI 5ÐIÑIÔIˆØNÐN°6ÐNÑNÔNˆð
ð 
ð 
ð 
ð 
à'-ð
ñ 
ô 
ˆð
 dÐcÐcÐcÀ5ÐcÑcÔcˆØð 	˜Cð 	¥C¨¡H¤H°¢M M°c¸!´f¸Q´iÀ#ÀaÄ&ÈÄ)Ñ6KÈuÒ6TÐ6TØØDÐD¨CÐDÑDÔDˆÝÐ=Ð=Ð=Ð=°uÐ=Ñ=Ô=Ñ=Ô=ð 	ØÝÐmÐmÐmÐmÐilÐmÑmÔmÑmÔmð 	ØÝ�e˜U EÑ*Ô*­j¸ÀÈÁ	È5Ñ.QÔ.QÒQÐQØØ�‰
ˆð% •#�d‘)”)˜a‘-Ò
Ð
ð& €Lr!   c                óP   — d                      |                      ¦   «         ¦  «        S )zMWhitespace-collapse a cell's text (runs of whitespace/newlines -> one space).rB   )rP   rQ   r$   s    r   rü  rü  õ  s   € à�8Š8�D—J’J‘L”LÑ!Ô!Ð!r!   c                ó~   — |                       dd¦  «                              dd¦  «                              dd¦  «        S )zNEscape a cell's text for the serializer: only ``& < >`` (quotes left literal).ú&z&amp;ú<z&lt;ú>z&gt;)Úreplacer$   s    r   Úescape_html_textr!  ú  s6   € à�<Š<˜˜WÑ%Ô%×-Ò-¨c°6Ñ:Ô:×BÒBÀ3ÈÑOÔOÐOr!   c                ód   — d                      d„ |                      ¦   «         D ¦   «         ¦  «        S )zAA cell's inner HTML: escaped non-empty lines joined by ``<br/>``.z<br/>c              3  ó€   K  — | ]9}|                      ¦   «         ¯t          |                      ¦   «         ¦  «        V — Œ:d S r.   )r5   r!  )r   Úparts     r   r   z_cell_inner.<locals>.<genexpr>  sE   è è € ÐeÐe¸4ÐX\×XbÒXbÑXdÔXdÐeÕ(¨¯ª©¬Ñ6Ô6ÐeÐeÐeÐeÐeÐer!   )rP   Ú
splitlinesr$   s    r   Ú_cell_innerr&  ÿ  s-   € à�<Š<ÐeÐeÀ4Ç?Â?ÑCTÔCTÐeÑeÔeÑeÔeÐer!   rc   c                óÊ  — t          |pd¦  «        }dg}t          | ¦  «        D �]\  }}||v rmd„ |D ¦   «         }t          |¦  «        dk    rNt          |¦  «        dk    r;|                     dt          |¦  «        t	          |d         ¦  «        fz  ¦  «         Œw|                     d¦  «         |D ]q}d	}|j        dk    r|d
|j        z  z  }|j        dk    r|d|j        z  z  }|                     d|j        ›|›dt          |j	        ¦  «        ›d|j        ›d�¦  «         Œr|                     d¦  «         �Œ|                     d¦  «         d	 
                    |¦  «        S )aò  Serialize a tagged placement grid to its final ``<table>`` HTML in one pass.

    ``rows`` is a row-major grid of cells duck-typed with ``text`` / ``colspan``
    / ``rowspan`` / ``tag`` (e.g. :class:`pymupdf.table.SpanCell`): each cell
    emits its tag, its ``colspan`` / ``rowspan`` attributes and its ``<br/>``-
    joined escaped inner HTML. A row whose index is in ``section_header_rows``
    and that carries a single non-empty label collapses to one
    ``<th colspan=N>`` spanning the row.rc   z<table>c                ó^   — g | ]*}t          |j        ¦  «        ¯t          |j        ¦  «        ‘Œ+S rc   )rü  r   rÛ   s     r   rf   z%render_table_html.<locals>.<listcomp>  s5   € ÐeÐeÐe¸ÕIYÐZ^ÔZcÑIdÔIdÐeÕ(¨¬Ñ3Ô3ÐeÐeÐer!   r   rÄ   z!<tr><th colspan="%d">%s</th></tr>r   z<tr>r˜   z colspan="%d"z rowspan="%d"r  r  z</z</tr>z</table>)r  r]  rR   rõ   r!  rû  rú  Útagr&  r   rP   )	rø   re  rc  Úpartsrd  rý   r“   rÜ   Úattrss	            r   Úrender_table_htmlr,    s•  € õ Ð*Ð0¨bÑ1Ô1€LØˆK€EÝ# D™/œ/ð ñ ‰ˆ�Ø�lÐ"Ð"ØeÐeÀÐeÑeÔeˆHÝ�8‰}Œ} Ò!Ð!¥c¨%¡j¤j°A¢o oØ—’Ø7Ý˜5‘z”zÕ#3°H¸Q´KÑ#@Ô#@ÐAñBñô ð ð Ø�Š�VÑÔÐØð 	ð 	ˆDØˆEØŒ|˜aÒÐØ˜¨4¬<Ñ7Ñ7�ØŒ|˜aÒÐØ˜¨4¬<Ñ7Ñ7�Ø�LŠLˆLØ#'¤8 8¨U¨U¨UµKÀÄ	Ñ4JÔ4JÐ4JÐ4JÈDÌHÈHÈHÐUñô ð ð ð 	�Š�WÑÔÐÑØ	‡L‚L�ÑÔÐØ�7Š7�5‰>Œ>Ðr!   )r   r   r   r   )r   r   r   r,   )r   r   r   r2   )r   r   r   r   )r_   r,   r   r`   )r•   r,   r–   r   r   r   )r•   r,   r   r2   )r•   r,   r   r’   )r•   r,   r   r,   )rø   rù   r   r2   )r	  r,   r
  rù   r   r2   )rø   rù   r8  r   r   r2   )rø   rù   r8  r   r   r`  )r•   r,   rf  r   r   rg  )rø   rù   r   rr  )ru  rv  r   r`   )rN   )rŠ  rr  r‹  r   rŒ  r   r   r`   )r³   r`   r   r2   )r•  r,   r   r`   r   r’   )
rø   rù   rŠ  rr  r›  r   r   r`   r   r2   )rŠ  rr  r   rr  )r•   r,   rH  r   r   r¿  )r•   r,   r
  rù   rH  r   r   r2   )rø   rù   r8  r   rÚ  r   r   r   )rø   rù   r   r   )rø   rù   r   rå  )r   rñ  )r•   r   r  r   r   r  )r8  r   r   r   )rc   )r   r   )SÚ__doc__Ú
__future__r   Údataclassesr   Ú
statisticsr   Útypingr   r>   Úcompiler/   Ú
IGNORECASEr6   rT   rU   rX   rZ   rY   rü   r  r  rí   rp   rv   r%   r+   r1   r<   r@   r^   r   r”   rš   r¸   r½   rÉ   rÐ   rÒ   rØ   rß   râ   rñ   r÷   rþ   r  r"  r+  r-  r7  r>  r@  rL  rQ  rS  r:  r_  re  rq  r  r‰  r  r  rš  r´  r¾  rÃ  rÈ  rÌ  rÙ  rß  râ  rå  rì  rï  rð  r  r  r  rü  r!  r&  r,  rc   r!   r   ú<module>r4     sy  ðð ð  ðB #Ð "Ð "Ð "Ð "Ð "Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 	€	€	€	ð ˆBŒJÐLÑMÔM€	ØˆBŒJØLØ„Mñô €	ð ˆBŒJÐHÈ"Ì-ÑXÔX€	ØˆbŒjÐ2Ñ3Ô3€Øˆ2Œ:Ð+Ñ,Ô,€Øˆ2Œ:ÐSÑTÔT€ØˆBŒJÐTÐVXÔVcÑdÔd€	Ø�"”*Ð6Ñ7Ô7€Ø�”
ÐGÑHÔH€Ø$˜"œ*Ð%BÑCÔCÐ ØY€à,Ð,Ð,€ØKÐKÐK€ð5ð 5ð 5ð 5ð5ð 5ð 5ð 5ð#ð #ð #ð #ð
1ð 
1ð 
1ð 
1ðqð qð qð qðð ð ð ð>ð ð ð ð,ð ð ð ð6.ð .ð .ð .ðð ð ð ð,!ð !ð !ð !ð	2ð 	2ð 	2ð 	2ðð ð ð ðSð Sð Sð Sð
Yð Yð Yð YðSð Sð Sð Sðcð cð cð cð
	Nð 	Nð 	Nð 	Nðð ð ð ð[ð [ð [ð [ð3ð 3ð 3ð 3ð"ð ð ð ð<ð ð ð ð.Zð Zð Zð Zð1ð 1ð 1ð 1ðh0ð 0ð 0ð 0ð0Mð Mð Mð Mð"0ð "0ð "0ð "0ðJhð hð hð hðð ð ð ð;ð ;ð ;ð ;ðZð Zð Zð Zðð ð ð ð#ð #ð #ð #ðLGð Gð Gð Gð9ð 9ð 9ð 9ðz =>ð)ð )ð )ð )ð )ð>ð >ð >ð >ð.
ð 
ð 
ð 
ð=ð =ð =ð =ð@ð ð ð ð2\ð \ð \ð \ð	Rð 	Rð 	Rð 	Rð>ð >ð >ð >ðð ð ð ðL ð	ð ð ð ð ð ð6-ð -ð -ð -ð` €�$ÐÑÔð)ð )ð )ð )ð )ñ )ô )ñ Ôð)ð
	ð 	ð 	ð 	ð �2”:ÐAÑBÔBÐ ðWð Wð Wð WðDð Dð Dð Dð&ð ð ð ð(ð (ð (ð (ðX"ð "ð "ð "ð
Pð Pð Pð Pð
fð fð fð fð
 ð  ð  ð  ð  ð  ð  r!   