
    BhG                         S r SSKJr  SSKrSSKJr  SSKJr  SSK	J
r
Jr  SS	KJr  S
 rS rS rS rS rS rS\R(                  44S jr\" SS5      4S jr\R0                  R3                  S5      rS rg)z+Layout for tables and internal table boxes.    )infN   )boxes)LOGGER   )resolve_one_percentageresolve_percentages)"table_and_columns_preferred_widthsc                   ^ ^^^^^^^%^&^'^(^)^*^+^,^-^.^/^0^1^2^3^4^5^6^7 SSK Jm%Jm&Jm'Jm.Jm/Jm4  TR                  =(       a    TR                  S   R                  m2TR                  =(       a    TR                  S   R                  m1TR                  S   S:H  m+TSL=(       a    T2(       + nTR                  USS	9  T+(       a  S=m)m*OTR                  S
   u  m)m*TR                  m-/ =m,Tl        TR                  5       T)-   m5TR                  S   S:X  a=  TR                  5       n	U	T)-   n
T- H  nU	T)-  n	T,R                  U	5        X-  n	M     X-
  m6OITR                  5       TR                   -   n	U	T)-
  n
T- H  nU	T)-  n	X-  n	T,R                  U	5        M     X-
  m6T+(       a  STl        STl        SnT(       ak  TR'                  5       u  u  pU(       a  UR'                  5       u  u  nnU(       a  SnOSnTR                  SU  H  nU[)        UR                  5      -  nM     OSnU(       d:  T2(       d3  TR*                  u  nnU(       a  [-        S UU    5       5      S-  Tl        UU%U&U'U)U*U+U,U-U U.UU/U1U2U4U5U6U4S jm0UU%U'U*U U.UU/U0U4
S jm(TR1                  5       m3Tc  T3T*-  m3T3nTR                   Vs/ s H+  nUR                  (       a  M  UR                  (       a  M)  UPM-     snm7U%U(U*UU U0U1U2UU3UUU74S jnS nU" 5       u  nnnm3nnUc  Ub   eSm/ nSnTUUUU4$ TR3                  Ub  U/O/ U-   Ub  U/O/ -   5      m[5        S TR6                   5       5      Tl        USL=(       a    T1(       + nTR                  UU5        T+(       a  WTl        [-        TR:                  S:w  a  TR:                  OST3TR1                  5       -
  5      Tl        T3U-
  n TR                  (       a  U T*-  n TR6                   GH  nUR                   H  n![=        U!TS9  U!R>                  [)        T,5      :  a7  T,U!R>                     U!l         UU!l!        T-U!R>                     U!l        U U!l        OSU!l         SU!l!        SU!l        SU!l        [=        UTS9  U" TU!5      U!l"        M     UR                  S   n"UR                  S   n#U"R@                  Ul         UUl!        U#R@                  U#R                   -   U"R@                  -
  Ul        U Ul        GM     TR                  S   S:X  a   T-RG                  5         T,RG                  5         T%" TR                  S   T 5      n$U(       a  T(       d  U$(       a  T4" T T/TT5        SmSn/ nSnTUUUU4$ s  snf )zLayout for a table box.r   )avoid_page_breakblock_container_layoutblock_level_page_breakfind_earlier_page_breakforce_page_breakremove_placeholdersr   border_collapsecollapseNF)endborder_spacing	directionltrTc              3   0   #    U  H  u  nu  pov   M     g 7fN .0_widths      I/var/www/html/env/lib/python3.13/site-packages/weasyprint/layout/table.py	<genexpr>table_layout.<locals>.<genexpr>J   s      -97 /a!AE7   r   c                    > S nSS S.nUn[        U T>S9  T<U l        Xl        T=U l        / nU R                   V	s/ s H  n	/ PM     n
n	US L nU(       a  SnOUR                  5       u  u  p[        U R                  US  US9 GHe  u  pXl        U(       a%  T/" US   U	5      nT8" UT55      (       a  XS'   US 0n  GO2[        U	T>S9  T<U	l        Xl        T=U	l        / n[        U	R                  5       GHF  u  nnT4UR                  S  S UR                   n[        U5      Ul	        UR                  S:X  aR  U	R                  R                  U5      nU	R                  US  n[        R                  " S[        U5       S	U 35          GO[        UT>S9  T>R                  S
   S:X  a  T3UR                     Ul        O$T3UR                  UR                  -   S-
     Ul        U	R                  Ul        SUl        SUl        SUl        UR!                  5       n[#        U5      T0UR                  S-
  -  -   U-
  Ul        U(       a$  UU;   a  UU   nO[        UR                  5      S 0nOS nU(       a|  T2(       au  T:(       ag  T>R                  S   R                  nU(       aF  US   R                  (       a2  U=R                  [%        S US   R                   5       5      -  sl        OST>l        UR(                  Ul        SUl        UR                  nUR                  S   S:w  a&  UR                  R-                  5       nSUS'   UUl        T." T5UUUUT,T7S SS S9
u  nn      nUUl        Uc,  UR/                  / 5      nT." T5UUUS/ / S SS S9
u  n        nSS 0nOUnUR1                  US LSS9  U(       a  Uc  U0 0nUX]   U'   [3        S UR                   5       5      (       + Ul        UR(                  Ul        UR*                  S:w  a%  [%        UR(                  UR*                  5      Ul        UR9                  U5        GMI     U(       a]  U(       dV  T-" U	R                  S   T55      =(       d     [3        U-U54S jU	R                   5       5      nU(       a  U0 0nT;" T5UT,T75          GONU(       a  U H  nUR1                  SSS9  M     U	R/                  U5      n	/ nU	R                   HI  nUR                  S   nUS;   a	  UUl        M!  SUl        [=        U5      Ul        UR9                  U5        MK     U(       aj  [%        S U 5       5      U	l        U HM  nU	R>                  UR>                  -
  n UR>                  U	R>                  :w  d  M8  U (       d  MA  [A        UU 5        MO     U	R                   H$  nU
URB                  S-
     R9                  U5        M&     U
RE                  S5      n!U!(       a  U	R(                  S:X  a1  [%        S U! 5       5      n"[%        U"U	R                  -
  S5      U	l        OX[%        U	R(                  [%        S U! 5       5      5      U	l        U	R                  U	R(                  -   n"OU	R                  n"SU	l        U(       d  U"U	l        U! GH+  nUR                  URG                  5       -   n#U"U#-
  n U (       ai  UR:                  S:X  a  [A        UU 5        OLUR:                  S:X  a'  U S-  n [A        UU 5        U=RH                  U -  sl$        OU=RH                  U -  sl$        UR*                  S:w  d  M  Sn$UR:                  S:X  a  UR*                  UR6                  -
  S-  n$O)UR:                  S:X  a  UR*                  UR6                  -
  n$U$S:  d  GM	  UR                   H  n%U%RK                  U$S 9  M     GM.     U	R                  U	R(                  -   n&Uc  U&T1-  n&Sn'U(       a.  [M        S! U	R                   5       5      (       a  [N        n&SnS nOSn'T5RQ                  UU&5      n(U(       ds  U((       al  T;" T5U	R                  T,T75        U(       a;  US   n)T/" U)U	5      nT-" UT55      (       a  T6" T5UT,T75      n*U*(       a  U*u  p  OdOUS 0n  O]U(       a  US 0nOS S U4s  $   OHUR9                  U	5        U&nSnS nU'(       a  T2(       a  T9(       d  ST>l)        U'(       d
  U(       d  GMf    O   U=(       a2    U(       + =(       a$    T-" U R                  S   T55      =(       d    U(       + n+U+(       a  T;" T5UT,T75        S S U4$ U R/                  U5      n U R1                  U(       + US LS9  U R                   HZ  n	U	R>                  b  M  U	R                  (       a0  [%        S" U	R                   5       5      U	R                  -
  U	l        MS  SU	l        M\     XR                  -
  U l        U R                  (       a  U =R(                  T1-  sl        XU4$ s  sn	f )#Nanybreakpagecontaining_blockr   startr   r'   z8This table row has more columns than the table, ignored z cells: r   r   r   c              3   :   #    U  H  nUR                   v   M     g 7fr   )border_bottom_width)r   headers     r    r!   5table_layout.<locals>.group_layout.<locals>.<genexpr>   s      3H.FF !' : :.Fs   TautoheightF)page_is_emptyabsolute_boxesfixed_boxesadjoining_marginsdiscard	max_lines)r,   r   c              3   p   #    U  H,  nUR                  5       =(       d    UR                  5       v   M.     g 7fr   )
is_floatedis_in_normal_flowr   childs     r    r!   r0      s1      %0!. $$&C%*A*A*CC!.s   46break_insidec              3   P   >#    U  H  nT" UR                   S    T5      v   M     g7f)r>   N)style)r   cellr   contexts     r    r!   r0      s,      P2$0D )N)CWMM$0s   #&vertical_align)topmiddlebottombaselinec              3   8   #    U  H  oR                   v   M     g 7fr   )rG   r   rA   s     r    r!   r0      s     "L^T==^   c              3   \   #    U  H"  nUR                   UR                  5       -   v   M$     g 7fr   )
position_yborder_heightrI   s     r    r!   r0     s)      '2$0D $*<*<*>>$0   *,c              3   @   #    U  H  oR                  5       v   M     g 7fr   )rM   )r   row_cells     r    r!   r0     s      5OAMX..00   rF   rE   r   dyc              3   8   #    U  H  oR                   v   M     g 7fr   )emptyr<   s     r    r!   r0   3  s     =u{{rJ   c              3   \   #    U  H"  nUR                  5       UR                  -   v   M$     g 7fr   )content_box_yr2   rI   s     r    r!   r0   q  s)      '2$0D **,t{{:$0rN   )*r	   
position_xrL   r   childrenitems	enumerateindexgrid_xcolspanlenr   warningr@   
margin_topmargin_leftborder_widthsummaxskip_cell_border_topr2   computed_heightcopycopy_with_childrenremove_decorationr%   rU   content_heightappendrC   cell_baselinerG   add_top_paddingrowspanpoprM   padding_bottom	translateallr   overflows_pageskip_cell_border_bottom)?grouprL   bottom_spacer3   
skip_stack	resume_at	next_pageoriginal_page_is_emptynew_group_childrenrowending_cells_by_rowis_group_startskip	index_row
page_breaknew_row_children
index_cellrA   spanned_widths
cell_indexignored_cellsborders_plus_paddingcell_skip_stackheader_rowsoriginal_style
style_copynew_cellcell_resume_atr   avoid_breakbaseline_cellsrC   extraending_cellsrow_bottom_ycell_bottom_yvertical_align_shiftr=   next_position_y
break_celloverflowprevious_rowearlier_page_breakabortr4   r   r   r   border_spacing_xborder_spacing_yr   column_positionscolumn_widthsrB   r   r5   r   
has_footer
has_headerr   rows_left_x
rows_widthtables?                                               r    group_layout"table_layout.<locals>.group_layoutP   s	   	#T2	!.EE:&% -2^^<^cr^<#t+D","2"2"4T'tu(=TJNI!I!3&r*C1
#J88)3g&!*D 1Ie<(CN'N"CI!$-cll$; 
D!.t{{|!<]dll!K
  #>2<<1$ "%!3!3D!9J$'LL$=MNN##&}#5"6h}oOP #D5A;;{+u4&6t{{&CDO&6t{{T\\7QTU7U&VDO"%.."##$ 
'+'8'8':$ '$q(89:() 
 !Z/*4Z*@+.t}}+=t*D&*O #x! ',nnQ&7&@&@&;r?+C+C OOs 3H.9"o.F.F3H 0H HO 6:2 (,{{$$!%::h'61!%!2J+1Jx(!+DJ7MT<"/ +t!T	834.!Q1
 ,
#2226D*@|_&*22*.+O'D!Q1a '(YN#D&&_D-He&T! (%.O	7EI(4!$ %0!%%0 "0 0
 '+kk#''61"%dkk43G3G"HDK ''-A %<D  %SYY~%>H 2C P2$'LLP2 M2  !*BI'!1>;P,D**D*A - (()9:C  N!%,<!=!%@@*8D' +5D'$1$$7DM"))$/ % ""L^"LL*DLL4==8E}}4'e4 + #DLL1$45<<TB %.2215L::'#& '2$0'2 $2L "%\CNN%BA!FCJ!$SZZ 5OAM5O 2O "PCJ#&>>CJJ#>L"~~
!+ % $$2D2D2F F$}4**h6'e4,,8
'e4++u4+++u4+''61+,(**h6 0043F3FF!0L,,,8 0043F3FF -+a/%)]]E!OO/COD &3+ %0 "nnszz9O #33 J====&)O$)M $I!%J --lOLH X#GS\\>;W%#5b#9L!7c!JJ'
G<<-D#%7.V*-<N9.! . &/$5	)!*D 1Iy00%%c*(J!MJhz04-YYu K~  (&&( ^!<gF '&&	 	
 +^[Jy(((();<.&8it>ST >>C||#<<#& '2$'LL'2 $247NN$CCL $%CL " "$4$44>>LL,,L**C	 =s   hc                 R  >
 U c  SnOU R                  5       u  u  p@/ nS nSS S.n[        TR                  US  5       H  u  pU	R                  (       d  U	R                  (       a  M)  X-   n
Xl        U(       a$  T" US   U	5      nT" UT5      (       a
  XS'   U
S 0n  OT" XX#U 5      u  pnS n UcD  U(       a4  US   nT" X5      nT" UT5      (       a  T" TUTT5      nUb  Uu  pV  OBU
S 0nOS S Xq4s  $   O4UR                  U5        XR                  T-   -  nSnU(       d  M  X0n  O   XVXq4$ )Nr   r%   r&   r   r'   F)rZ   r[   rY   	is_header	is_footerr\   rl   r2   )rx   rL   rw   r3   r   new_table_childrenry   rz   irv   index_groupr   	new_groupprevious_groupr   r4   r   r   r   rB   r   r5   r   r   r   s                  r    body_groups_layout(table_layout.<locals>.body_groups_layout}  sv   D","2"2"4T	#T2	!%.."78HA%// (K%K!34Fr4JER
#J88)3g&!,d 3I.:<
/L+I)J %%7%;N!7!NJ'
G<<-D#%7.V*-9<N9.!!,d 3Iy<<%%i0**-===J!My(4	S 9V "iCC    c                  &  > T(       a  Tn O[         * n T(       a=  TR                  S   nT" UTU S SS9u  pnU(       a  U(       d  UR                  T-   nOS nOS nT(       a=  TR                  S   nT" UTU S SS9u  pRnU(       a  U(       d  UR                  T-   nOS nOS nT(       a  Tu  nOSnSnTR                  US   H?  n	U	R                  (       a  M  U	R                  (       a  M)  T" U	R
                  S   T5      n  O   U(       aU  U(       aN  T" TTW-   TW-   US9u  pp;U
(       d  T(       a  T(       d%  UR                  XR                  -
  S9  X-  nXX[UU4$ S nU(       a3  U(       d,  T" TTW-   TUS9u  pp;U
(       d  T(       a  T(       d  XX[UU4$ S nU(       aR  U(       dK  T" TTTW-   US9u  pp;U
(       d  T(       a  T(       d%  UR                  XR                  -
  S9  X-  nXX[UU4$ S nU(       d  U(       a   eT" TTTT5      u  pp;XX[X#4$ )Nr   F)rx   r3   r   r>   )r3   rR   )r   rY   r2   r   r   r@   rr   rL   )header_footer_bottom_spacer/   ry   rz   header_heightfooterfooter_heightr   avoid_breaksrv   r   end_position_yr   r   r   rw   rB   r   r   r   r3   rL   rx   r   
table_rowss               r    all_groups_layout'table_layout.<locals>.all_groups_layout  sl    )5&*-&^^A&F+7
$>u,6(Fy i &0@ @ F^^B'F+7
$>u,6(Fy i &0@ @ F EDD^^DE*E???5???/N0KWU +
 f #
] : =0N E9 "=  N5F5F$F G/	 
 & #
] :L".0 E9 "=	 
 & #
L=,H".0 E9 "=  N5F5F$F G/	 
 f%%z:|]S 	Ay69WWr   c                    ^ ^ UU 4S j$ )z(Return closure getting the column cells.c            	         > TR                    V VVs/ s HI  n U R                     H5  nUR                     H!  nUR                  TR                  :X  d  M  UPM#     M7     MK     snnn $ s  snnn f r   )rY   r]   )	row_groupr}   rA   columnr   s      r    <lambda>8table_layout.<locals>.get_column_cells.<locals>.<lambda>$  s]    "^^-+	 )){{fmm+	  % ) +- -s   >A'A'r   )r   r   s   ``r    get_column_cells&table_layout.<locals>.get_column_cells"  s    - 	-r   c              3   @   #    U  H  oR                  5       v   M     g 7fr   )deepcopy)r   column_groups     r    r!   r"   9  s       I4GL4GrQ   r1   r)   rtlr>   )$blockr   r   r   r   r   r   rY   r   r   r@   rj   r   r   content_box_xrl   r   rf   ru   rZ   r_   collapsed_border_gridre   border_top_widthrW   ri   tuplecolumn_groupsskipped_rowsr2   r	   r]   rX   rL   	get_cellsreverse)8rB   r   rw   rx   r*   r3   r4   r5   remove_start_decorationrX   rows_xr   split_cellsskipped_groupsgroup_skip_stackr   cells_skip_stackrv   r   horizontal_bordersinitial_position_yr=   r   r   r/   r   r   ry   rz   r6   collapsing_throughremove_end_decorationcolumns_heightr   firstlastr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   r   r   r   r   s8   ```` ```                             @@@@@@@@@@@@@@@@@@@r    table_layoutr      s   H H
 ?ENN1$5$?$?J@ENN2$6$@$@J{{,-;H(4GZ	3? .//+-2[[9I-J** ''M022u-%%'*::K{{;5(((*
.."E**J##J/J #  (
((*U[[8
.."E**JJ##J/ # (
 %*"(-%2<2B2B2D/.^4D4J4J4L10/#"&K 8ENN 33 9 L:$)$?$?!A!!), -9),7-9 *9;<*=&k+ k+ k+Z	4D 4Dn $$&J&&
# >>8)% 	', 	>8JdX dX dXL- 	 IF
Iy !   "i,=?QQQ$$'&R	'&R	12E    I494G4G I IE%T1D*n	35JK) .AU((**,EL
  "44N~~**$$nnF?}}s#344$4V]]$C!$6!,V]]; . %&!$%!  !>/v>F % q!~~b! ++-oo

2U5E5EE%+ %0 {{;5(  ""5;;~#>HK;GeWnkJ	)Y(9;MMMo8s   1V
VVc                 r    U =R                   U-  sl         U R                   H  nUR                  US9  M     g)zHIncrease the top padding of a box.

This also translates the children.

rR   N)padding_toprY   rr   )boxextra_paddingr=   s      r    rn   rn   r  s.     OO}$O=) r   c                    U R                  5       nUR                  S:w  d   eUR                   VVs/ s H  nUR                    H  nUPM     M     nnnUR                  (       aG  UR                  S   R                  (       a)  UR                  S   nUR                  S   R                  nO/ n[	        [        U5      [        S U 5       5      5      nS/U-  n[        U5       H<  u  p[        USUR                  5        UR                  S:w  d  M.  UR                  X'   M>     UR                  S   S:X  a  UR                  S   u  pOSn
Sn	U H  n[        X5        UR                  S:w  a  UR                  5       nXUR                  S	-
  -  -  n/ n[        XUR                  -   5       H"  nX   c  UR                  U5        M  XU   -  nM$     U(       a  U[        U5      -  nU H  nUX'   M	     XR                  -  n	M     XS	-   -  n[        S
 U 5       5      U-   n[        U5       V	Vs/ s H  u  n	nUb  M  U	PM     nn	nU(       a;  UR                  U:  a+  UR                  U-
  nU[        U5      -  nU H  n	UX'   M	     OU H  n	SX'   M	     UR                  [        U5      -
  U-
  nUS::  a  U=R                  U-  sl        O!U(       a  UU-  nU Vs/ s H  nUU-   PM
     nnXl        gs  snnf s  snn	f s  snf )z|Run the fixed table layout and return a list of column widths.

https://www.w3.org/TR/CSS21/tables.html#fixed-table-layout

r1   r   c              3   8   #    U  H  oR                   v   M     g 7fr   )r^   rI   s     r    r!   %fixed_table_layout.<locals>.<genexpr>  s     +U_TLL_rJ   Nr   r   separater   r   c              3   .   #    U  H  oc  M  Uv   M     g 7fr   r   )r   ws     r    r!   r     s     Em11ms   	)get_wrapped_tabler   r   rY   re   r_   rd   r[   r   r@   r	   rc   r^   rangerl   r   )r   r   r   r   all_columnsfirst_rowgroupfirst_row_cellsnum_columnsr   r   r   r   rA   r   columns_without_widthjwidth_per_columnall_border_spacingmin_table_widthr   remaining_widthextra_widthextra_per_columns                          r    fixed_table_layoutr   }  s    !!#E;;&    $)#6#6-#6<"++F 	+ 	#6  - ~~%..+44*(11!4==c+&+U_+U(UVKF[(M {+	vw<<<6!%||M ,
 {{$%3#kk*:;! 	
AD(::%%'E)9::E %'!1$,,./ #+)0031--E	 0
 %#(3/D+E#E .A'7M$ /	\\%  , *1_=EmEE)*O+4]+C ++C41a ! +C +!?++7*S1F-GG&A/M ' 'A M '
 ++M 225GGKa{"	&47DE}!--}E (U-d+( Fs    K50
K;>K;Lc           	      N   UR                  5       n[        XSS9u  pEpgppSnUR                  S:w  a  XR                  -  nUR                  S:w  a  XR                  -  nUR                  UR
                  -   nUR                  UR                  -   nUu  nnX-
  U-
  U-
  nUR                  S:X  a"  UU::  a  XCl        O+UU:  a  UUl        OXSl        OUR                  U:  a  XCl        U(       d  / Ul	        gUR                  U
-
  nUSS nUSS nUSS nUSS nUUUU4n[        [        U5      5       HN  nUU   (       a-  [        UU   S-  U-  UU   5      UU'   UU   UU'   UU   UU'   M:  U	U   (       d  MF  UU   UU'   MP     U[        U5      :  a  US   nUS   nU H  n[        U5      US-  ::  a  UnM    O   USSS2    H  n[        U5      US	-  :  a  UnM    O   UU:X  a  UUl	        g[        [        U5      5       Vs/ s H  nUU   UU   -
  PM     nnU[        U5      -
  [        U5      -  n[        [        U5      5       Vs/ s H  nUU   UU   U-  -   PM     snUl	        gUUl	        U[        U5      -
  n[        XUUR                  U	X5        gs  snf s  snf )
zzRun the auto table layout and return a list of column widths.

https://www.w3.org/TR/CSS21/tables.html#auto-table-layout

F)outerr   r1   Nd   r   g0D   ?gv?)r   r
   rb   margin_rightpadding_leftpadding_rightborder_left_widthborder_right_widthr   r   r   r_   re   rd   distribute_excess_width)rB   r   r*   r   table_min_content_widthtable_max_content_widthcolumn_min_content_widthscolumn_max_content_widthscolumn_intrinsic_percentagesconstrainednesstotal_horizontal_border_spacinggridmarginspaddingsborderscb_widthr   available_widthassignable_widthmin_content_guessmin_content_percentage_guessmin_content_specified_guessmax_content_guessguessesr   lower_guessupper_guessguessadded_widthsavailable_ratioexcess_widths                                  r    auto_table_layoutr    s3    !!#E /Q	U/$,!$ G
& ??"
6!###!!E$7$77H%%(@(@@G"KHa(83g=O{{f551K66)EK1K;;001K {{%DD1!4#<Q#? ";A">1!47#%68G 3t9'*.1,Q/#58HH)!,/.(+ .J!-L'*#?#Ba Q .Gq-I'*  #/00 ajbk E5z-::#	 
 TrT]E5z-::#	 #
 +%"-E :?s4y9IK9IAAQ/9I  K/#k2BBc,FWWO s4y)#+)A Aa?!BB)#+E 0'#.?*@@<)<)<o(	EK#+s   JJ"c                     UR                  5       n[        X25        UR                  S   S:X  a  UR                  S:w  a  [	        U5        O[        XU5        UR                  5       Ul        g)z;Find the width of each column and derive the wrapper width.r   fixedr1   N)r   r	   r@   r   r   r  rc   )rB   wrapperr*   r   s       r    table_wrapper_widthr  2  sW    %%'E0{{>"g-%++2G7#',<=&&(GMr   c                     [         R                  [         R                  4n[        XS9nUb  X R                  -
  $ U R
                  U R                  -   U R                  -   $ )zReturn the y position of a cell baseline from the top of its border box.

See https://www.w3.org/TR/CSS21/tables.html#height-layout

)baseline_types)r   LineBoxTableRowBoxfind_in_flow_baselinerL   r   r   r2   )rA   r   results      r    rm   rm   ?  sW     mmU%6%67N"4GF'' $$t'7'77$++EEr   Fc                 L   [        X5      (       a  U R                  U R                  -   $ [        U [        R                  5      (       a  gU(       a  [        U R                  5      OU R                  nU H-  nUR                  5       (       d  M  [        XAU5      nUc  M+  Us  $    g)uz   Return the absolute y position for the first (or last) in-flow baseline.

If there’s no in-flow baseline, return None.

N)	
isinstancerL   rG   r   TableCaptionBoxreversedrY   r;   r#  )r   r   r   rY   r=   r$  s         r    r#  r#  N  s~     #&&~~,,	C..	/	/)-x%3<<H""$$*5GF!	 r   c                   ^^ [        X   UR                  S9 VV	s/ s H(  u  pXH   (       a  M  TU   S:X  d  M  TU   S:  d  M&  UPM*     n
nn	U
(       a5  [        U4S jU
 5       5      nX+-  nU
 H  nX8==   TU   U-  -  ss'   M     g[        X   UR                  S9 VV	s/ s H  u  pXH   (       a  M  TU   S:X  d  M  UPM     n
nn	U
(       a"  U
 H  nX8==   U[        U
5      -  -  ss'   M     g[        X   UR                  S9 VV	s/ s H(  u  pXH   (       d  M  TU   S:X  d  M  TU   S:  d  M&  UPM*     n
nn	U
(       a5  [        U4S jU
 5       5      nX+-  nU
 H  nX8==   TU   U-  -  ss'   M     g[        X   UR                  S9 VV	s/ s H  u  pTU   S:  d  M  TU   S:  d  M  UPM     n
nn	U
(       a5  [        U4S jU
 5       5      nX--  nU
 H  nX8==   TU   U-  -  ss'   M     g[        X   UR                  S9 VVs/ s H  u  pU(       d  M  UPM     n
nnU
(       a"  U
 H  nX8==   U[        U
5      -  -  ss'   M     g[        X   UR                  S9 VV	s/ s H  u  pUPM	     n
nn	U
 H  nX8==   U[        U
5      -  -  ss'   M     gs  sn	nf s  sn	nf s  sn	nf s  sn	nf s  snnf s  sn	nf )zoDistribute available width to columns.

See https://www.w3.org/TR/css-tables-3/#distributing-width-to-columns

r+   r   c              3   .   >#    U  H
  nTU   v   M     g 7fr   r   r   r   r  s     r    r!   *distribute_excess_width.<locals>.<genexpr>q       $S7a%>q%A7   Nc              3   .   >#    U  H
  nTU   v   M     g 7fr   r   r+  s     r    r!   r,    r-  r.  c              3   .   >#    U  H
  nTU   v   M     g 7fr   r   )r   r   r  s     r    r!   r,    s      (>5<(+Wr.  )r[   r,   rd   r_   )rB   r  r  r   r  r  r  column_slicer   r   columnssum_max_content_widthsratiosum_intrinsic_percentagesr   s        ``        r    r   r   b  s0      2,:L:LM*Mda! 	
$Q'1, 	
 	"!$q( 	
M  *
 !$$S7$S!S5A 9! <u DD    2,:L:LMLMda! 	
&B1&E&J 	
M  L As7| ;;    2,:L:LM*Mda 	
$Q'1, 	
 	"!$q( 	
M  *
 !$$S7$S!S5A 9! <u DD    2,:L:LMUMda'*Q. 	
3LQ3ORS3S 	
M  U $' (>5<(> %>!8A <Q ?% GG  %T%7|?Q?QRRia 	
R   As7| ;;  't'9ASASTUTTQqTGUL3w<77 s*L*U Vsc   JJJJ#J$6J$J$J*J**J*5J*J0&J01J0J6 J6+J<transparentc           
      p	  ^ ^ ^!^"^#^$^% U(       a  U(       d  / / 4$ [        / SQ5      n[        U5       VVs0 s H  u  pEXT_M	     snnm$SSS.m#SST$S   4SS[        44n[        U5       Vs/ s H  ov/US-   -  PM     snm%[        US-   5       Vs/ s H  ov/U-  PM
     snm U#U$4S jm"U U"U U%4S	 jnSST$S
   4S
S[        44n	Sn
T R                   GH  nUR                   H  nUR                   H  nUR
                  UR                  UR                  npT R                  S   S:X  a   [        US-   X-   5      n[        XU-   5      nO,[        SU-
  SU-
  U-
  S5      n[        SU-
  SU-
  U-
  S5      nU H   n[        XU-   5       H  nU	T%U   U'   M     M"     U H$  n[        U
S-   U
U-   5       H  nU	T U   U'   M     M&     U" XXU5        M     U
S-  n
M     GM     Sn
T R                   H&  nUR                   H  nU" USXS5        U
S-  n
M     M(     Sn
T R                   H(  n[        UR                  5      nU" USXU5        U
U-  n
M*     T R                   H,  nUR                   H  nU" UUR
                  SSU5        M     M.     T R                   H#  nU" UUR
                  SUR                  U5        M%     U" T SSX5        S m!U!4S jnU%4S jnU 4S jnSn
T R                   GH3  nU" U5        UR                   GH  nU" U5        UR                   H  nUR
                  U
nnUR                  UR                  nnT R                  S   S:X  a;  U" UUUU-   5      nU" UUU-   UU-   5      nU" UUUU-   5      nU" UU-   UUU-   5      nOVU" U* U-
  UU* =(       d    S5      nU" U* U-
  UU-   U* =(       d    S5      nU" SU-
  U-
  UUU-   5      nU" SU-
  UUU-   5      nT!" USU5        T!" USU5        T!" USU5        T!" USU5        M     U
S-  n
GM     GM6     T R                   H&  nU" U5        UR                   H  nU" U5        M     M(     T!" T SU" SSU5      5        T!" T SU" SX!5      5        T!" T SU" SSS5      5        T!" T SU" USS5      5        T%T 4$ s  snnf s  snf s  snf )a  Resolve border conflicts for a table in the collapsing border model.

Take a :class:`TableBox`; set appropriate border widths on the table,
column group, column, row group, row, and cell boxes; and return
a data structure for the resolved collapsed border grid.

)
hiddendoublesoliddasheddottedridgeoutsetgrooveinsetnoner=  r?  )r@  r>  r   rA  r   c                    > SSK Jn  USU S3   nUSU S3   nU" USU S35      nUS:X  a  SOS	UTU   4n	TR                  Xf5      nX   U   u  pX:  a  XXx44X   U'   g g )
Nr   )	get_colorborder__style_width_colorr8  r   r   )
draw.colorrC  get)border_grid	box_stylesider]   grid_yrC  r@   r   colorscoreprevious_scorer   	style_mapstyle_scoress               r    set_one_border.collapse_table_borders.<locals>.set_one_border  s    *GD601GD601)wtfF%;< (!a%e9LMe+'/7!+0%2G*HK' "r   c           	        > U R                   nT
R                   S   S:X  a]  [        X"U-   5       H  nT	" TUSX5        T	" TUSX-   U5        M     [        XU-   5       H  nT	" TUSXr5        T	" TUSXrU-   5        M     g [        X"U-   5       H$  nT	" TUSSU-
  U-
  U5        T	" TUSSU-
  U5        M&     [        SU-
  SU-
  U-
  S5       H  nT	" TUSXr5        T	" TUSXrU-   5        M     g )Nr   r   leftrightrD   rF   r   )r@   r   )r   xyr   hr@   yyxxr   rS  r   vertical_borderss           r    set_borders+collapse_table_borders.<locals>.set_borders  s   		 ;;{#u,A1uo/F/K & A1uo15%G15(BAN & A1uo/Q
BO/aL & BFBFQJ315%G15(BAN 4r   r8  r   r   r   c                 .    SU S3n[        XUS-  5        g )NrD  rF  r   )setattr)r   rL  twice_widthprops       r    set_border_used_width5collapse_table_borders.<locals>.set_border_used_width   s    f%;?+r   c                 V   > T" U SS5        T" U SS5        T" U SS5        T" U SS5        g )NrD   r   rW  rF   rV  r   )r   re  s    r    remove_borders.collapse_table_borders.<locals>.remove_borders$  s3    c5!,c7A.c8Q/c61-r   c                 4   >^  [        U 4S jTX  5       5      $ )Nc              3   8   >#    U  H  oT   S    S    v   M     g7f)r   Nr   )r   grid_rowrX  s     r    r!   Ecollapse_table_borders.<locals>.max_vertical_width.<locals>.<genexpr>+  s     M5LA;q>!$5Ls   re   )rX  y1y2r]  s   `  r    max_vertical_width2collapse_table_borders.<locals>.max_vertical_width*  s    M5Eb5LMMMr   c                 2   > [        S TU   X  5       5      $ )Nc              3   0   #    U  H  u  nu  pov   M     g 7fr   r   r   s      r    r!   Gcollapse_table_borders.<locals>.max_horizontal_width.<locals>.<genexpr>.  s     N1M-Q151Mr#   rn  )x1rY  x2r   s      r    max_horizontal_width4collapse_table_borders.<locals>.max_horizontal_width-  s    N1CA1Fr1MNNNr   NrD   rF   rV  rW  )r(  r[   TRANSPARENTr   rY   r]   r^   ro   r@   r_   r   span)&r   
grid_widthgrid_heightstylesrO  r@   weak_null_borderr   r^  strong_null_borderrM  r   r}   rA   r]   r^   ro   vertical_x_rangehorizontal_x_ranger\  r[  r   r   rh  rq  rx  rX  rY  rD   rF   rV  rW  r   re  rS  rQ  rR  r]  s&   `                               @@@@@@r    collapse_table_bordersr    sK    ;2v # $F 6?v5FG5F\UEL5FGL!X6IA|F34vq+6NO 8=[7IK7I!j1n-7IK 27{Q1GI1GAZ'1GII O O. ah!788Q:TUF^^	%%C+/;;dll;;{+u4',VaZ9I'J$).v7G)H&',R&["v+:OQS'T$).rF{BK'<QSU)V&*B#FW,<=3E(,R0 > + -B#FQJ0@A5G*2.r2 B - D&7C! %" aKF% & $, F^^	%%CQA6aKF & $ F^^	i(()Iq&g>' $ ++"++Fq![A , ,
 ++,--q,2C2C[	R ,
 q!Z5
,.NO F^^	y!%%C3{{F1#'<<;;{+u4.q!Q[AC1!Q[!g+NF-aAK@D.q7{Aq7{KE.x!|Q
dKC17(Q,GaRZSWXF-b7lQ.>1w;OD.rAvq!g+FE%dE37%dHf=%dFD9%dGU;! %" aKF' & $. ++|$"++F6" , ,
 %(<Q:(NOx-aIK %);Aq!)DE%*<ZA*NO///{ H
KIs   R(*R.R3)__doc__mathr   tinycss2.color4tinycss2formatting_structurer   loggerr   percentr   r	   	preferredr
   r   rn   r   r  r  rm   r!  r#  slicer   color4parse_colorrz  r  r   r   r    <module>r     s    1   (  @ 9b	NJ*S(l\E~
)F %*5==:J , */q$C8L oo))-8l0r   