Ë
    ìì�iBU  ã                   óª  — d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d d	l m	Z	  G d
„ d«      Z
 G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ dee«      Z G d„ dee«      Z G d „ d!e«      Z G d"„ d#e«      Z G d$„ d%ee«      Z G d&„ d'e«      Z G d(„ d)e«      Z G d*„ d+e«      Z G d,„ d-e«      Z G d.„ d/e«      Z G d0„ d1e«      Z G d2„ d3e«      Z G d4„ d5e«      Z G d6„ d7e«      Z  G d8„ d9e«      Z! G d:„ d;e!«      Z" G d<„ d=e!«      Z#y>)?é   )ÚINF)ÚPlane)Ú	get_bound)Úuniq)Úcsort)Úfsplit)Úbbox2str)Ú
matrix2str©Úapply_matrix_ptc                   ó   — e Zd Zdd„Zd„ Zy)ÚIndexAssignerc                 ó   — || _         y ©N©Úindex)Úselfr   s     út/var/www/ITT-ServiceAPI-Services/ITT-Document-Scan/mrzscanner/mrzenv/lib/python3.12/site-packages/pdfminer/layout.pyÚ__init__zIndexAssigner.__init__   s   € ØˆŒ
Øó    c                 óÂ   — t        |t        «      r'| j                  |_        | xj                  dz  c_        y t        |t        «      r|D ]  }| j	                  |«       Œ y ©Nr   )Ú
isinstanceÚ	LTTextBoxr   ÚLTTextGroupÚrun)r   ÚobjÚxs      r   r   zIndexAssigner.run   sR   € Ü�cœ9Ô%ØŸ
™
ˆCŒIØ�JŠJ˜!‰O�Jð 	ô ˜œ[Ô)Øò �Ø—‘˜•ðàr   N©é    )Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r   r      s   „ óór   r   c                   ó(   — e Zd Z	 	 	 	 	 	 	 dd„Zd„ Zy)ÚLAParamsc                 óf   — || _         || _        || _        || _        || _        || _        || _        y r   )Úline_overlapÚchar_marginÚline_marginÚword_marginÚ
boxes_flowÚdetect_verticalÚ	all_texts)r   r(   r)   r*   r+   r,   r-   r.   s           r   r   zLAParams.__init__#   s=   € ð )ˆÔØ&ˆÔØ&ˆÔØ&ˆÔØ$ˆŒØ.ˆÔØ"ˆŒØr   c                 ód   — d| j                   | j                  | j                  | j                  fz  S )NzM<LAParams: char_margin=%.1f, line_margin=%.1f, word_margin=%.1f all_texts=%r>)r)   r*   r+   r.   ©r   s    r   Ú__repr__zLAParams.__repr__4   s3   € Ø_Ø×!Ñ! 4×#3Ñ#3°T×5EÑ5EÀtÇ~Á~ÐVñWð 	Xr   N)ç      à?g       @r2   gš™™™™™¹?r2   FF©r!   r"   r#   r   r1   r$   r   r   r&   r&   !   s$   „ ð "Ø Ø Ø ØØ!&Ø óó"Xr   r&   c                   ó   — e Zd Zd„ Zy)ÚLTItemc                  ó   — y)zPerform the layout analysis.Nr$   ©r   Úlaparamss     r   ÚanalyzezLTItem.analyze=   s   € àr   N©r!   r"   r#   r9   r$   r   r   r5   r5   ;   ó   „ ór   r5   c                   ó   — e Zd Zd„ Zd„ Zy)ÚLTTextc                 óX   — d| j                   j                  ›d| j                  «       ›d�S ©Nú<ú ú>)Ú	__class__r!   Úget_textr0   s    r   r1   zLTText.__repr__F   s!   � à—‘×(Ó(¨$¯-©-­/ð;ð 	<r   c                 ó   — t         ‚r   ©ÚNotImplementedErrorr0   s    r   rD   zLTText.get_textJ   ó   € Ü!Ð!r   N)r!   r"   r#   r1   rD   r$   r   r   r=   r=   D   s   „ ò<ó"r   r=   c                   ó`   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zy)ÚLTComponentc                 óP   — t         j                  | «       | j                  |«       y r   )r5   r   Úset_bbox©r   Úbboxs     r   r   zLTComponent.__init__R   s   € Ü�‰˜ÔØ�‰�dÔØr   c                 ób   — d| j                   j                  ›dt        | j                  «      ›d�S r?   )rC   r!   r	   rN   r0   s    r   r1   zLTComponent.__repr__W   s%   � à—‘×(Ó(¬(°4·9±9Õ*=ð?ð 	@r   c                 ó   — t         ‚r   ©Ú
ValueError©r   Ú_s     r   Ú__lt__zLTComponent.__lt__\   ó   € ÜÐr   c                 ó   — t         ‚r   rQ   rS   s     r   Ú__le__zLTComponent.__le__^   rV   r   c                 ó   — t         ‚r   rQ   rS   s     r   Ú__gt__zLTComponent.__gt__`   rV   r   c                 ó   — t         ‚r   rQ   rS   s     r   Ú__ge__zLTComponent.__ge__b   rV   r   c                 ó€   — |\  }}}}|| _         || _        || _        || _        ||z
  | _        ||z
  | _        || _        y r   )Úx0Úy0Úx1Úy1ÚwidthÚheightrN   )r   rN   r^   r_   r`   ra   s         r   rL   zLTComponent.set_bboxe   sL   € ØÑˆˆR��RØˆŒØˆŒØˆŒØˆŒØ˜‘UˆŒ
Ø˜‘eˆŒØˆŒ	Ør   c                 óB   — | j                   dk  xs | j                  dk  S ©Nr    )rb   rc   r0   s    r   Úis_emptyzLTComponent.is_emptyp   s   € Ø�z‰z˜Q‰Ò2 $§+¡+°Ñ"2Ð2r   c                 óŽ   — t        |t        «      sJ ‚|j                  | j                  k  xr | j                  |j                  k  S r   )r   rJ   r^   r`   ©r   r   s     r   Úis_hoverlapzLTComponent.is_hoverlaps   ó7   € Ü˜#œ{Ô+Ð+Ð+Ø�v‰v˜Ÿ™Ñ Ò6 T§W¡W°·±Ñ%6Ð6r   c                 óâ   — t        |t        «      sJ ‚| j                  |«      ryt        t	        | j
                  |j                  z
  «      t	        | j                  |j
                  z
  «      «      S re   ©r   rJ   ri   ÚminÚabsr^   r`   rh   s     r   Ú	hdistancezLTComponent.hdistancew   óR   € Ü˜#œ{Ô+Ð+Ð+Ø×Ñ˜CÔ Øä”s˜4Ÿ7™7 3§6¡6™>Ó*¬C°·±¸¿¹±Ó,?Ó@Ð@r   c                 óâ   — t        |t        «      sJ ‚| j                  |«      rLt        t	        | j
                  |j                  z
  «      t	        | j                  |j
                  z
  «      «      S yre   rl   rh   s     r   ÚhoverlapzLTComponent.hoverlap~   óR   € Ü˜#œ{Ô+Ð+Ð+Ø×Ñ˜CÔ Ü”s˜4Ÿ7™7 3§6¡6™>Ó*¬C°·±¸¿¹±Ó,?Ó@Ð@àr   c                 óŽ   — t        |t        «      sJ ‚|j                  | j                  k  xr | j                  |j                  k  S r   )r   rJ   r_   ra   rh   s     r   Úis_voverlapzLTComponent.is_voverlap…   rj   r   c                 óâ   — t        |t        «      sJ ‚| j                  |«      ryt        t	        | j
                  |j                  z
  «      t	        | j                  |j
                  z
  «      «      S re   ©r   rJ   ru   rm   rn   r_   ra   rh   s     r   Ú	vdistancezLTComponent.vdistance‰   rp   r   c                 óâ   — t        |t        «      sJ ‚| j                  |«      rLt        t	        | j
                  |j                  z
  «      t	        | j                  |j
                  z
  «      «      S yre   rw   rh   s     r   ÚvoverlapzLTComponent.voverlap�   rs   r   N)r!   r"   r#   r   r1   rU   rX   rZ   r\   rL   rf   ri   ro   rr   ru   rx   rz   r$   r   r   rJ   rJ   P   sK   „ òò
@ò
òòòò	ò3ò7òAòò7òAór   rJ   c                   ó   — e Zd Zd„ Zd„ Zy)ÚLTCurvec                 ó^   — t         j                  | t        |«      «       || _        || _        y r   )rJ   r   r   ÚptsÚ	linewidth)r   r   r~   s      r   r   zLTCurve.__init__œ   s'   € Ü×Ñ˜T¤9¨S£>Ô2ØˆŒØ"ˆŒØr   c                 óF   — dj                  d„ | j                  D «       «      S )Nú,c              3   ó&   K  — | ]	  }d |z  –— Œ y­w)z	%.3f,%.3fNr$   )Ú.0Úps     r   ú	<genexpr>z"LTCurve.get_pts.<locals>.<genexpr>£   s   è ø€ Ò:¨A˜ a�Ñ:ùs   ‚)Újoinr~   r0   s    r   Úget_ptszLTCurve.get_pts¢   s   € Ø�x‰xÑ:°·±Ô:Ó:Ð:r   N)r!   r"   r#   r   r‡   r$   r   r   r|   r|   š   s   „ òó;r   r|   c                   ó   — e Zd Zd„ Zy)ÚLTLinec                 ó6   — t         j                  | |||g«       y r   ©r|   r   )r   r   Úp0Úp1s       r   r   zLTLine.__init__ª   s   € Ü×Ñ˜˜y¨2¨r¨(Ô3Ør   N©r!   r"   r#   r   r$   r   r   r‰   r‰   ¨   r;   r   r‰   c                   ó   — e Zd Zd„ Zy)ÚLTRectc           	      óX   — |\  }}}}t         j                  | |||f||f||f||fg«       y r   r‹   )r   r   rN   r^   r_   r`   ra   s          r   r   zLTRect.__init__³   s>   € ØÑˆˆR��RÜ×Ñ˜˜y¨B°¨8°b¸"°XÀÀB¸xÈ"ÈbÈÐ*RÔSØr   NrŽ   r$   r   r   r�   r�   ±   ó   „ ór   r�   c                   ó   — e Zd Zd„ Zd„ Zy)ÚLTImagec                 óx  — t         j                  | |«       || _        || _        |j	                  d«      |j	                  d«      f| _        |j	                  d«      | _        |j	                  dd«      | _        |j	                  d«      | _        t        | j                  t        «      s| j                  g| _        y )N)ÚWÚWidth)ÚHÚHeight)ÚIMÚ	ImageMask)ÚBPCÚBitsPerComponentr   )ÚCSÚ
ColorSpace)rJ   r   ÚnameÚstreamÚget_anyÚsrcsizeÚ	imagemaskÚbitsÚ
colorspacer   Úlist)r   r    r¡   rN   s       r   r   zLTImage.__init__½   s•   € Ü×Ñ˜T 4Ô(ØˆŒ	ØˆŒØŸ™ ~Ó6ØŸ™ Ó7ð9ˆŒàŸ™Ð(;Ó<ˆŒØ—N‘NÐ#>ÀÓBˆŒ	Ø Ÿ.™.Ð)=Ó>ˆŒÜ˜$Ÿ/™/¬4Ô0Ø#Ÿ™Ð/ˆDŒOØr   c           	      ó–   — d| j                   j                  ›d| j                  ›dt        | j                  «      ›d| j
                  ›d�	S ©Nr@   ú(ú) rA   rB   )rC   r!   r    r	   rN   r£   r0   s    r   r1   zLTImage.__repr__Ê   s1   � à—‘×(Ó(¨$¯)«)Ü˜$Ÿ)™)Õ$ d§l£lð4ð 	5r   Nr3   r$   r   r   r”   r”   »   s   „ òó5r   r”   c                   ó   — e Zd Zd„ Zd„ Zy)ÚLTAnnoc                 ó   — || _         y r   ©Ú_text)r   Útexts     r   r   zLTAnno.__init__Ô   s   € ØˆŒ
Ør   c                 ó   — | j                   S r   r¯   r0   s    r   rD   zLTAnno.get_textØ   ó   € Ø�z‰zÐr   N©r!   r"   r#   r   rD   r$   r   r   r­   r­   Ò   s   „ òór   r­   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚLTCharc	                 óJ  — t         j                  | «       || _        || _        |j                  | _        ||z  |z  | _        |j                  «       rT|j                  «       |z  }	|\  }
}|
€|	dz  }
n|
|z  dz  }
d|z
  |z  dz  }|
 }||z   }||| j
                  z   f}||	z   |f}n@|j                  «       |z  }|j                  «       |z  }||z   }d|f}| j
                  ||z   f}| j                  \  }}}}}}d||z  |z  k  xr ||z  dk  | _
        t        | j                  |«      \  }}t        | j                  |«      \  }}||k  r||}}||k  r||}}t        j                  | ||||f«       |j                  «       r| j                  | _        y | j                  | _        y )Nr2   gü©ñÒMbP?iè  r    )r=   r   r°   ÚmatrixÚfontnameÚadvÚis_verticalÚ	get_widthÚ
get_heightÚget_descentÚuprightr   rJ   rb   Úsizerc   )r   r¸   ÚfontÚfontsizeÚscalingÚriser±   Ú	textwidthÚtextdisprb   ÚvxÚvyÚtxÚtyÚbllÚburrc   ÚdescentÚaÚbÚcÚdÚeÚfr^   r_   r`   ra   s                               r   r   zLTChar.__init__à   sÉ  € ä�‰˜ÔØˆŒ
ØˆŒØŸ™ˆŒØ˜xÑ'¨'Ñ1ˆŒà×ÑÔà—N‘NÓ$ xÑ/ˆEØ‰HˆR�ØˆzØ˜S‘[‘à˜(‘] TÑ)�Ø˜‘)˜xÑ'¨$Ñ.ˆBØ�ˆBØ�d‘ˆBØ�r˜$Ÿ(™(‘{Ð#ˆCØ�e‘8˜R�.‰Cð —_‘_Ó&¨Ñ1ˆFØ×&Ñ&Ó(¨8Ñ3ˆGØ˜4‘ˆBØ�b�'ˆCØ—8‘8˜R ™YÐ'ˆCØ!Ÿ[™[ÑˆˆAˆq�!�Q˜Ø˜A˜a™C ™K™Ò4¨A¨a©C°1©HˆŒÜ" 4§;¡;°Ó4‰ˆˆRÜ" 4§;¡;°Ó4‰ˆˆRØ�Š7Ø˜B�ˆRØ�Š7Ø˜B�ˆRÜ×Ñ˜T B¨¨B°Ð#3Ô4Ø×ÑÔØŸ
™
ˆDŒIð 	ð Ÿ™ˆDŒIØr   c                 óä   — d| j                   j                  ›dt        | j                  «      ›dt	        | j
                  «      ›d| j                  ›d| j                  ›d| j                  «       ›d�S )Nr@   rA   ú matrix=z font=z adv=z text=rB   )	rC   r!   r	   rN   r
   r¸   r¹   rº   rD   r0   s    r   r1   zLTChar.__repr__  sE   � à—‘×(Ó(¬(°4·9±9Õ*=Ü˜DŸK™KÕ(¨$¯-«-¸¿»Ø—‘•ð"ð 	#r   c                 ó   — | j                   S r   r¯   r0   s    r   rD   zLTChar.get_text  r³   r   c                  ó   — y)z<Returns True if two characters can coexist in the same line.Tr$   rh   s     r   Úis_compatiblezLTChar.is_compatible  s   € àr   N)r!   r"   r#   r   r1   rD   rØ   r$   r   r   r¶   r¶   Þ   s   „ ò)òV#òór   r¶   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚLTContainerc                 ó>   — t         j                  | |«       g | _        y r   )rJ   r   Ú_objsrM   s     r   r   zLTContainer.__init__  s   € Ü×Ñ˜T 4Ô(ØˆŒ
Ør   c                 ó,   — t        | j                  «      S r   )ÚiterrÜ   r0   s    r   Ú__iter__zLTContainer.__iter__"  s   € Ü�D—J‘JÓÐr   c                 ó,   — t        | j                  «      S r   )ÚlenrÜ   r0   s    r   Ú__len__zLTContainer.__len__%  s   € Ü�4—:‘:‹Ðr   c                 ó:   — | j                   j                  |«       y r   )rÜ   Úappendrh   s     r   ÚaddzLTContainer.add(  s   € Ø�
‰
×Ñ˜#ÔØr   c                 ó4   — |D ]  }| j                  |«       Œ y r   )rå   )r   Úobjsr   s      r   ÚextendzLTContainer.extend,  s   € Øò 	ˆCØ�H‰H�S�Mð	àr   c                 óH   — | j                   D ]  }|j                  |«       Œ y r   )rÜ   r9   )r   r8   r   s      r   r9   zLTContainer.analyze1  s$   € Ø—:‘:ò 	"ˆCØ�K‰K˜Õ!ð	"àr   N)	r!   r"   r#   r   rß   râ   rå   rè   r9   r$   r   r   rÚ   rÚ     s    „ òò
 òòòó
r   rÚ   c                   ó   — e Zd Zd„ Zd„ Zy)ÚLTExpandableContainerc                 ó`   — t         j                  | t        ­t        ­t         t         f«       y r   )rÚ   r   r   r0   s    r   r   zLTExpandableContainer.__init__;  s&   € Ü×Ñ˜T¤S D¬3¨$´°´s°dÐ#;Ô<Ør   c           	      óJ  — t         j                  | |«       | j                  t        | j                  |j                  «      t        | j
                  |j
                  «      t        | j                  |j                  «      t        | j                  |j                  «      f«       y r   )	rÚ   rå   rL   rm   r^   r_   Úmaxr`   ra   rh   s     r   rå   zLTExpandableContainer.add?  sk   € Ü�‰˜˜cÔ"Ø�‰”s˜4Ÿ7™7 C§F¡FÓ+¬S°·±¸#¿&¹&Ó-AÜ˜4Ÿ7™7 C§F¡FÓ+¬S°·±¸#¿&¹&Ó-AðCô 	Dàr   N)r!   r"   r#   r   rå   r$   r   r   rë   rë   9  s   „ òór   rë   c                   ó   — e Zd Zd„ Zd„ Zy)ÚLTTextContainerc                 óX   — t         j                  | «       t        j                  | «       y r   )r=   r   rë   r0   s    r   r   zLTTextContainer.__init__J  s   € Ü�‰˜ÔÜ×&Ñ& tÔ,Ør   c                 ó2   — dj                  d„ | D «       «      S )NÚ c              3   ó^   K  — | ]%  }t        |t        «      sŒ|j                  «       –— Œ' y ­wr   )r   r=   rD   )rƒ   r   s     r   r…   z+LTTextContainer.get_text.<locals>.<genexpr>P  s   è ø€ ÒQ¨#¼ÀCÌÕ9P�s—|‘|—~ÑQùs   ‚-˜-)r†   r0   s    r   rD   zLTTextContainer.get_textO  s   € Ø�w‰wÑQ°ÔQÓQÐQr   Nr´   r$   r   r   rð   rð   H  s   „ òó
Rr   rð   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú
LTTextLinec                 ó<   — t         j                  | «       || _        y r   )rð   r   r+   ©r   r+   s     r   r   zLTTextLine.__init__W  s   € Ü× Ñ  Ô&Ø&ˆÔØr   c                 ó„   — d| j                   j                  ›dt        | j                  «      ›d| j	                  «       ›d�S r?   )rC   r!   r	   rN   rD   r0   s    r   r1   zLTTextLine.__repr__\  s-   � à—‘×(Ó(¬(°4·9±9Õ*=Ø—‘•ð"ð 	#r   c                 ón   — t         j                  | |«       t        j                  | t	        d«      «       y )Nú
)rð   r9   rÚ   rå   r­   r7   s     r   r9   zLTTextLine.analyzea  s'   € Ü×Ñ  hÔ/Ü�‰˜œf T›lÔ+Ør   c                 ó   — t         ‚r   rF   )r   ÚplaneÚratios      r   Úfind_neighborszLTTextLine.find_neighborsf  rH   r   N)r!   r"   r#   r   r1   r9   rÿ   r$   r   r   rö   rö   U  s   „ òò
#ò
ó
"r   rö   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚLTTextLineHorizontalc                 óH   — t         j                  | |«       t        ­| _        y r   )rö   r   r   Ú_x1rø   s     r   r   zLTTextLineHorizontal.__init__l  ó   € Ü×Ñ˜D +Ô.Ü�4ˆŒØr   c                 óZ  — t        |t        «      rt| j                  rh| j                  t        |j                  |j
                  «      z  }| j                  |j                  |z
  k  rt        j                  | t        d«      «       |j                  | _        t        j                  | |«       y ©NrA   )r   r¶   r+   rî   rb   rc   r  r^   rÚ   rå   r­   r`   rö   ©r   r   Úmargins      r   rå   zLTTextLineHorizontal.addq  su   € Ü�cœ6Ô" t×'7Ò'7Ø×%Ñ%¬¨C¯I©I°s·z±zÓ(BÑBˆFØ�x‰x˜#Ÿ&™& ™-Ò'Ü—‘ ¤f¨S£kÔ2Ø—6‘6ˆŒÜ�‰�t˜SÔ!Ør   c                 óÎ  — || j                   z  }|j                  | j                  | j                  |z
  | j                  | j
                  |z   f«      }|D �cg c]ƒ  }t        |t        «      rqt        |j                   | j                   z
  «      |k  rLt        |j                  | j                  z
  «      |k  s%t        |j                  | j                  z
  «      |k  r|‘Œ… c}S c c}w r   )	rc   Úfindr^   r_   r`   ra   r   r  rn   ©r   rý   rþ   rÑ   rç   r   s         r   rÿ   z#LTTextLineHorizontal.find_neighborsz  sµ   € Ø�$—+‘+ÑˆØ�z‰z˜4Ÿ7™7 D§G¡G¨A¡I¨t¯w©w¸¿¹À¹	ÐBÓCˆØ#ö 0˜Ü˜sÔ$8Ô9Ü˜Ÿ
™
 4§;¡;Ñ.Ó/°!Ò3Ü˜Ÿ™ §¡™Ó(¨1Ò,Ü˜Ÿ™ §¡™Ó(¨1Ò,ò	 ò 0ð 	0ùò 0ó   ÁBC"N©r!   r"   r#   r   rå   rÿ   r$   r   r   r  r  j  ó   „ òò
ó0r   r  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚLTTextLineVerticalc                 óH   — t         j                  | |«       t         | _        y r   )rö   r   r   Ú_y0rø   s     r   r   zLTTextLineVertical.__init__†  r  r   c                 óZ  — t        |t        «      rt| j                  rh| j                  t        |j                  |j
                  «      z  }|j                  |z   | j                  k  rt        j                  | t        d«      «       |j                  | _        t        j                  | |«       y r  )r   r¶   r+   rî   rb   rc   ra   r  rÚ   rå   r­   r_   rö   r  s      r   rå   zLTTextLineVertical.add‹  su   € Ü�cœ6Ô" t×'7Ò'7Ø×%Ñ%¬¨C¯I©I°s·z±zÓ(BÑBˆFØ�v‰v�f‰}˜tŸx™xÒ'Ü—‘ ¤f¨S£kÔ2Ø—6‘6ˆŒÜ�‰�t˜SÔ!Ør   c                 óÎ  — || j                   z  }|j                  | j                  |z
  | j                  | j                  |z   | j
                  f«      }|D �cg c]ƒ  }t        |t        «      rqt        |j                   | j                   z
  «      |k  rLt        |j                  | j                  z
  «      |k  s%t        |j
                  | j
                  z
  «      |k  r|‘Œ… c}S c c}w r   )	rb   r
  r^   r_   r`   ra   r   r  rn   r  s         r   rÿ   z!LTTextLineVertical.find_neighbors”  sµ   € Ø�$—*‘*ÑˆØ�z‰z˜4Ÿ7™7 1™9 d§g¡g¨t¯w©w°q©y¸$¿'¹'ÐBÓCˆØ#ö 0˜Ü˜sÔ$6Ô7Ü˜Ÿ	™	 $§*¡*Ñ,Ó-°Ò1Ü˜Ÿ™ §¡™Ó(¨1Ò,Ü˜Ÿ™ §¡™Ó(¨1Ò,ò	 ò 0ð 	0ùò 0r  Nr  r$   r   r   r  r  „  r  r   r  c                   ó   — e Zd Zd„ Zd„ Zy)r   c                 ó<   — t         j                  | «       d| _        y )Néÿÿÿÿ)rð   r   r   r0   s    r   r   zLTTextBox.__init__¥  s   € Ü× Ñ  Ô&ØˆŒ
Ør   c           	      óž   — d| j                   j                  ›d| j                  ›dt        | j                  «      ›d| j                  «       ›d�	S r©   )rC   r!   r   r	   rN   rD   r0   s    r   r1   zLTTextBox.__repr__ª  s5   � à—‘×(Ó(Ø—“œX d§i¡iÕ0°$·-±-µ/ðCð 	Dr   Nr3   r$   r   r   r   r   £  s   „ òó
Dr   r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚLTTextBoxHorizontalc                 ój   — t         j                  | |«       t        | j                  d„ ¬«      | _        y )Nc                 ó   — | j                    S r   )ra   ©r   s    r   ú<lambda>z-LTTextBoxHorizontal.analyze.<locals>.<lambda>´  ó   € ¸¿¹°w€ r   ©Úkey©r   r9   r   rÜ   r7   s     r   r9   zLTTextBoxHorizontal.analyze²  ó(   € Ü×Ñ˜$ Ô)Ü˜4Ÿ:™:Ñ+>Ô?ˆŒ
Ør   c                  ó   — y)Nzlr-tbr$   r0   s    r   Úget_writing_modez$LTTextBoxHorizontal.get_writing_mode·  ó   € Ør   N©r!   r"   r#   r9   r%  r$   r   r   r  r  °  ó   „ òó
r   r  c                   ó   — e Zd Zd„ Zd„ Zy)ÚLTTextBoxVerticalc                 ój   — t         j                  | |«       t        | j                  d„ ¬«      | _        y )Nc                 ó   — | j                    S r   )r`   r  s    r   r  z+LTTextBoxVertical.analyze.<locals>.<lambda>¿  r  r   r   r"  r7   s     r   r9   zLTTextBoxVertical.analyze½  r#  r   c                  ó   — y)Nztb-rlr$   r0   s    r   r%  z"LTTextBoxVertical.get_writing_modeÂ  r&  r   Nr'  r$   r   r   r*  r*  »  r(  r   r*  c                   ó   — e Zd Zd„ Zy)r   c                 óP   — t         j                  | «       | j                  |«       y r   )rð   r   rè   )r   rç   s     r   r   zLTTextGroup.__init__Ê  s   € Ü× Ñ  Ô&Ø�‰�DÔØr   NrŽ   r$   r   r   r   r   È  r’   r   r   c                   ó   — e Zd Zd„ Zy)ÚLTTextGroupLRTBc                 óp   ‡— t         j                  | ‰«       t        | j                  ˆfd„¬«      | _        y )Nc                 ó�   •— d‰j                   z
  | j                  z  d‰j                   z   | j                  | j                  z   z  z
  S r   )r,   r^   r_   ra   ©r   r8   s    €r   r  z)LTTextGroupLRTB.analyze.<locals>.<lambda>Õ  sD   ø€ Ø˜h×1Ñ1Ñ1°C·F±FÑ;Ø˜h×1Ñ1Ñ1°C·F±F¸3¿6¹6±MÑBñCð r   r   ©r   r9   r   rÜ   r7   s    `r   r9   zLTTextGroupLRTB.analyzeÒ  s1   ø€ Ü×Ñ˜D (Ô+ä˜4Ÿ:™:ó ,Cô DˆŒ
ð 	r   Nr:   r$   r   r   r1  r1  Ð  ó   „ ór   r1  c                   ó   — e Zd Zd„ Zy)ÚLTTextGroupTBRLc                 óp   ‡— t         j                  | ‰«       t        | j                  ˆfd„¬«      | _        y )Nc                 ó’   •— d‰j                   z    | j                  | j                  z   z  d‰j                   z
  | j                  z  z
  S r   )r,   r^   r`   ra   r4  s    €r   r  z)LTTextGroupTBRL.analyze.<locals>.<lambda>à  sF   ø€ Ø˜x×2Ñ2Ñ2Ð3°S·V±V¸C¿F¹F±]ÑCØ × 3Ñ 3Ñ3°c·f±fÑ=ñ>ð r   r   r5  r7   s    `r   r9   zLTTextGroupTBRL.analyzeÝ  s/   ø€ Ü×Ñ˜D (Ô+ä˜4Ÿ:™:ó ,>ô ?ˆŒ
ð 	r   Nr:   r$   r   r   r8  r8  Û  r6  r   r8  c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚLTLayoutContainerc                 ó>   — t         j                  | |«       d | _        y r   )rÚ   r   ÚgroupsrM   s     r   r   zLTLayoutContainer.__init__ê  s   € Ü×Ñ˜T 4Ô(ØˆŒØr   c              #   ó  K  — d }d }|D �]E  }|��=|j                  |«      xr“ |j                  |«      xr€ t        |j                  |j                  «      |j                  z  |j                  |«      k  xr? |j                  |«      t        |j                  |j                  «      |j                  z  k  }|j                  xr¦ |j                  |«      xr“ |j                  |«      xr€ t        |j                  |j                  «      |j                  z  |j                  |«      k  xr? |j                  |«      t        |j                  |j                  «      |j                  z  k  }|rt        |t        «      s|r"t        |t         «      r|j#                  |«       n­|�|–— d }n¤|r:|s8t!        |j$                  «      }|j#                  |«       |j#                  |«       nh|r:|s8t        |j$                  «      }|j#                  |«       |j#                  |«       n,t        |j$                  «      }|j#                  |«       |–— d }|}�ŒH |€&t        |j$                  «      }|j#                  |«       |–— y ­wr   )rØ   ru   rm   rc   r(   rz   ro   rî   rb   r)   r-   ri   rr   rx   r   r  r  rå   r+   )r   r8   rç   Úobj0ÚlineÚobj1ÚhalignÚvaligns           r   Úgroup_objectszLTLayoutContainer.group_objectsð  sA  è ø€ ØˆØˆØó =	ˆDØÑð ×,Ñ,¨TÓ2ò OØ×*Ñ*¨4Ó0òOä˜tŸ{™{¨D¯K©KÓ8¸8×;PÑ;PÑPØŸ=™=¨Ó.ñ/òOð  Ÿ>™>¨$Ó/Ü˜tŸz™z¨4¯:©:Ó6¸×9MÑ9MÑMñNð	 ð* #×2Ñ2ò QØ×,Ñ,¨TÓ2òQà×*Ñ*¨4Ó0òQô ˜tŸz™z¨4¯:©:Ó6¸×9NÑ9NÑNØŸ=™=¨Ó.ñ/òQð
  Ÿ>™>¨$Ó/Ü˜tŸ{™{¨D¯K©KÓ8¸8×;OÑ;OÑOñPð ñ ¤
¨4Ô1EÔ FÙ¤
¨4Ô1CÔ DØ—H‘H˜T•NØÐ%Ø’JØ‘Dá¡fÜ1°(×2FÑ2FÓG˜ØŸ™ œØŸ™ �Ù©Ü3°H×4HÑ4HÓI˜ØŸ™ œØŸ™ �ä3°H×4HÑ4HÓI˜ØŸ™ œØ"š
Ø#˜ØŠDð{=	ð| ˆ<Ü'¨×(<Ñ(<Ó=ˆDØ�H‰H�TŒNØŠ
Øùs   ‚I=I?c              #   óL  K  — t        | j                  «      }|j                  |«       i }|D ]­  }|j                  ||j                  «      }||vrŒ$g }|D ]8  }|j                  |«       ||v sŒ|j                  |j                  |«      «       Œ: t        |t        «      rt        «       }	n
t        «       }	t        |«      D ]  }
|	j                  |
«       |	||
<   Œ Œ¯ t        «       }|D ]7  }||vrŒ||   }	|	|v rŒ|j                  |	«       |	j                  «       rŒ4|	–— Œ9 y ­wr   )r   rN   rè   rÿ   r*   rä   Úpopr   r  r  r*  r   rå   Úsetrf   )r   r8   Úlinesrý   ÚboxesrA  Ú	neighborsÚmembersrB  Úboxr   Údones               r   Úgroup_textlinesz!LTLayoutContainer.group_textlines8  s(  è ø€ Ü�d—i‘iÓ ˆØ�‰�UÔØˆØò 	!ˆDØ×+Ñ+¨E°8×3GÑ3GÓHˆIØ˜9Ñ$ hØˆGØ!ò 4�Ø—‘˜tÔ$Ø˜5’=Ø—N‘N 5§9¡9¨T£?Õ3ð4ô ˜$Ô 4Ô5Ü)Ó+‘ä'Ó)�Ü˜G“}ò !�Ø—‘˜”Ø ��c’
ñ!ð	!ô ‹uˆØò 	ˆDØ˜5Ñ  (Ø˜‘+ˆCØ�d‰{ØØ�H‰H�SŒMØ—<‘<•>Ø“	ð	ð 	ùs   ‚A+D$Á.B.D$ÄD$c           
      ó¬  ‡— |sJ ‚d„ }ˆfd„}d„ }g }t        t        |«      «      D ]E  }||   }t        |dz   t        |«      «      D ]#  }	||	   }
|j                  d |||
«      ||
f«       Œ% ŒG t        ||¬«      }t	        | j
                  «      Š‰j                  |«       |�r|j                  d«      \  }}}}
|dk(  r |||
«      r|j                  d|||
f«       Œ=t        |t        t        f«      st        |
t        t        f«      rt        ||
g«      }nt        ||
g«      }‰j                  |«       ‰j                  |
«       |D ����
cg c]  \  }}}}
|‰v r
|
‰v r||||
f‘Œ }}}}}
‰D ]  }|j                  d |||«      ||f«       Œ  t        ||¬«      }‰j                  |«       |r�Œt        ‰«      dk(  sJ ‚t        ‰«      S c c}
}}}w )Nc                 ó€  — t        | j                  |j                  «      }t        | j                  |j                  «      }t        | j                  |j                  «      }t        | j
                  |j
                  «      }||z
  ||z
  z  | j                  | j                  z  z
  |j                  |j                  z  z
  S )aÄ  A distance function between two TextBoxes.

            Consider the bounding rectangle for obj1 and obj2.
            Return its area less the areas of obj1 and obj2,
            shown as 'www' below. This value may be negative.
                    +------+..........+ (x1, y1)
                    | obj1 |wwwwwwwwww:
                    +------+www+------+
                    :wwwwwwwwww| obj2 |
            (x0, y0) +..........+------+
            )rm   r^   r_   rî   r`   ra   rb   rc   )rB  Úobj2r^   r_   r`   ra   s         r   Údistz/LTLayoutContainer.group_textboxes.<locals>.distZ  sŠ   € ô �T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBØ˜‘U˜R ™U‘O d§j¡j°·±Ñ&<Ñ<¸t¿z¹zÈ$Ï+É+Ñ?UÑUÐVr   c                 óf  •— t        | j                  |j                  «      }t        | j                  |j                  «      }t        | j                  |j                  «      }t        | j
                  |j
                  «      }t        ‰j                  ||||f«      «      }|j                  | |f«      S )zECheck if there's any other object between obj1 and obj2.
            )	rm   r^   r_   rî   r`   ra   rH  r
  Ú
difference)rB  rR  r^   r_   r`   ra   rç   rý   s          €r   Úisanyz0LTLayoutContainer.group_textboxes.<locals>.isanyl  s„   ø€ ô �T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�T—W‘W˜dŸg™gÓ&ˆBÜ�u—z‘z 2 r¨2¨rÐ"2Ó3Ó4ˆDØ—?‘? D¨$ <Ó0Ð0r   c                 ó   — | \  }}}}||fS r   r$   )ÚtrÐ   rÑ   rT   s       r   Úkey_objz2LTLayoutContainer.group_textboxes.<locals>.key_objv  s   € Ø‰IˆQˆq��1Ø�a�5ˆLr   r   r    r   )Úrangerá   rä   r   r   rN   rè   rG  r   r*  r8  r1  Úremoverå   r§   )r   r8   rJ  rS  rV  rY  ÚdistsÚirB  ÚjrR  rÐ   rÑ   ÚgroupÚotherrý   s                  @r   Úgroup_textboxesz!LTLayoutContainer.group_textboxesW  sï  ø€ Ùˆˆuò	Wô$	1ò	ð
 ˆÜ”s˜5“zÓ"ò 	@ˆAØ˜‘8ˆDÜ˜1˜Q™3¤ E£
Ó+ò @�Ø˜Q‘x�Ø—‘˜a¡ d¨DÓ!1°4¸Ð>Õ?ñ@ð	@ô �e Ô)ˆÜ�d—i‘iÓ ˆØ�‰�UÔÚØ!&§¡¨1£ÑˆQ��4˜Ø�AŠv™%  dÔ+Ø—‘˜a  D¨$Ð/Ô0ØÜ˜4Ô"3´_Ð!EÔFÜ˜4Ô"3´_Ð!EÔFÜ'¨¨t¨Ó5‘ä'¨¨t¨Ó5�Ø�L‰L˜ÔØ�L‰L˜ÔØ=B÷ =ñ =©/¨1¨Q¨t°DØ %™-¨D°E©Mð ˜˜4 ’oð =ˆEó =àò D�Ø—‘˜a¡ e¨UÓ!3°U¸EÐBÕCðDä˜% WÔ-ˆEØ�I‰I�eÔó# ô$ �5‹z˜QŠÐˆÜ�E‹{Ðùõ=s   ÅG
c                 ój  — t        d„ | «      \  }}|D ]  }|j                  |«       Œ |sy t        | j                  ||«      «      }t        d„ |«      \  }}|D ]  }|j                  |«       Œ t        | j	                  ||«      «      }d|j
                  k  ry|j
                  dk  rj|rh| j                  ||«      | _        t        «       }| j                  D ]$  }	|	j                  |«       |j                  |	«       Œ& |j                  d„ ¬«       nd„ }
|j                  |
¬«       ||z   |z   | _        y )Nc                 ó"   — t        | t        «      S r   )r   r¶   r  s    r   r  z+LTLayoutContainer.analyze.<locals>.<lambda>�  s   € ´:¸cÄ6Ó3J€ r   c                 ó"   — | j                  «       S r   )rf   r  s    r   r  z+LTLayoutContainer.analyze.<locals>.<lambda>£  s   € °#·,±,³.€ r   r  r   c                 ó   — | j                   S r   r   ©rM  s    r   r  z+LTLayoutContainer.analyze.<locals>.<lambda>­  s
   € ¨3¯9©9€ r   r   c                 óˆ   — t        | t        «      rd| j                   | j                  fS d| j                  | j                  fS )Nr    r   )r   r*  r`   r_   r^   rf  s    r   Úgetkeyz)LTLayoutContainer.analyze.<locals>.getkey¯  s9   € Ü˜cÔ#4Ô5Ø §¡˜w¨¯©Ð/Ð/à˜sŸv™v s§v¡vÐ.Ð.r   )r   r9   r§   rE  rO  r,   ra  r>  r   r   ÚsortrÜ   )r   r8   ÚtextobjsÚ	otherobjsr   Ú	textlinesÚemptiesÚ	textboxesÚassignerr_  rh  s              r   r9   zLTLayoutContainer.analyzeš  s/  € ô !'Ñ'JÈDÓ QÑˆ�9Øò 	"ˆCØ�K‰K˜Õ!ð	"áØÜ˜×+Ñ+¨H°hÓ?Ó@ˆ	Ü%Ñ&@À)ÓLÑˆ�)Øò 	"ˆCØ�K‰K˜Õ!ð	"ä˜×-Ñ-¨h¸	ÓBÓCˆ	Ø�×$Ñ$Ò$¨×)<Ñ)<ÀÒ)BÁyØ×.Ñ.¨x¸ÓCˆDŒKÜ$“ˆHØŸ™ò $�Ø—‘˜hÔ'Ø—‘˜UÕ#ð$ð �N‰NÑ4ˆNÕ5ò/ð
 �N‰N˜vˆNÔ&Ø Ñ*¨WÑ4ˆŒ
Ør   N)r!   r"   r#   r   rE  rO  ra  r9   r$   r   r   r<  r<  è  s   „ òòEòPò>AóFr   r<  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚLTFigurec           	      ó´   ‡— || _         ‰| _        |\  }}}}t        ˆfd„||f||z   |f|||z   f||z   ||z   ffD «       «      }t        j	                  | |«       y )Nc              3   ó@   •K  — | ]  \  }}t        ‰||f«      –— Œ y ­wr   r   )rƒ   r„   Úqr¸   s      €r   r…   z$LTFigure.__init__.<locals>.<genexpr>Á  s*   øè ø€ ò QÙ#˜a ô )¨°!°Q°×8ñ Qùs   ƒ)r    r¸   r   r<  r   )r   r    rN   r¸   r   ÚyÚwÚhs      `    r   r   zLTFigure.__init__½  st   ø€ ØˆŒ	ØˆŒØ‰ˆˆAˆq�!Üó QØ)*¨A¨°°1±°a°¸1¸aÀ¹c¸(ÀQÀqÁSÈ!ÈAÉ#ÀJÐ'OôQó Qˆä×"Ñ" 4¨Ô.Ør   c           
      ó¨   — d| j                   j                  ›d| j                  ›dt        | j                  «      ›dt        | j                  «      ›d�	S )Nr@   rª   r«   rÕ   rB   )rC   r!   r    r	   rN   r
   r¸   r0   s    r   r1   zLTFigure.__repr__Æ  s7   � à—‘×(Ó(¨$¯)«)Ü˜$Ÿ)™)Õ$¤j°·±Õ&=ð?ð 	@r   c                 óJ   — |j                   sy t        j                  | |«       y r   )r.   r<  r9   r7   s     r   r9   zLTFigure.analyzeË  s!   € Ø×!Ò!ØÜ×!Ñ! $¨Ô1Ør   N)r!   r"   r#   r   r1   r9   r$   r   r   rq  rq  »  s   „ òò@ó
r   rq  c                   ó   — e Zd Zdd„Zd„ Zy)ÚLTPagec                 óL   — t         j                  | |«       || _        || _        y r   )r<  r   ÚpageidÚrotate)r   r}  rN   r~  s       r   r   zLTPage.__init__Ö  s#   € Ü×"Ñ" 4¨Ô.ØˆŒØˆŒØr   c           	      ó–   — d| j                   j                  ›d| j                  ›dt        | j                  «      ›d| j
                  ›d�	S )Nr@   rª   r«   z rotate=rB   )rC   r!   r}  r	   rN   r~  r0   s    r   r1   zLTPage.__repr__Ü  s1   � à—‘×(Ó(¨$¯+«+Ü˜$Ÿ)™)Õ$ d§k£kð3ð 	4r   Nr   r3   r$   r   r   r{  r{  Ô  s   „ óó4r   r{  N)$Úutilsr   r   r   r   r   r   r	   r
   r   r   r&   r5   r=   rJ   r|   r‰   r�   r”   r­   r¶   rÚ   rë   rð   rö   r  r  r   r  r*  r   r1  r8  r<  rq  r{  r$   r   r   ú<module>r�     sf  ðå Ý Ý Ý Ý Ý Ý Ý Ý "÷
ñ ÷$Xñ X÷4ñ ÷"ñ "ôE�&ô EôT	;ˆkô 	;ôˆWô ôˆWô ô5ˆkô 5ô.ˆV�Vô ô8ˆ[˜&ô 8ôz�+ô ô<
˜Kô 
ôRÐ+¨Vô Rô"�ô "ô*0˜:ô 0ô40˜ô 0ô>
D�ô 
Dô˜)ô ô˜	ô ô�/ô ô�kô ô�kô ôN˜ô NôfÐ ô ô24Ðõ 4r   