ó
    “’¤j�‘ ã                   óD  • S r SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSKrSS	KJrJrJrJrJr  SS
KJ r   SSK!J"r"J#r#J$r$J%r%J&r&  SSK'J(r(  SSK)J*r*  SSK+J,r,J-r-J.r/  SSK0J1r1  SSK2J3r3J4r4J5r5J6r6  SSK7J8r8J9r9  SSK:J;r;  SSK<J=r=  SSKJ>r>  SSK?J@r@  \R‚                  " \B5      rCS;S jrDS rES rFS<S jrGS<S jrHS<S jrI\JR—                  SSSS S!S".5      rLS# rM " S$ S%5      rN\ " S& S'5      5       rO " S( S)5      rP " S* S+\5      rQ " S, S-5      rRS. rS " S/ S05      rT " S1 S2\@Rª                  5      rV " S3 S4\%5      rW " S5 S65      rX " S7 S8\#5      rY\$rZ\"R¶                   " S9 S:\"5      5       r\g)=uO   
A PDF Matplotlib backend.

Author: Jouni K SeppÃ¤nen <jks@iki.fi> and others.
é    N)Útimezone)Údatetime)ÚEnum)Útotal_ordering)ÚBytesIO)ÚImage)Ú_apiÚ_text_helpersÚ
_type1fontÚcbookÚdviread)ÚGcf)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚGraphicsContextBaseÚRendererBase)ÚMixedModeRenderer)ÚFigure)ÚFontPathÚget_fontÚfontManager)ÚAFM)ÚFT2FontÚ	FaceFlagsÚ	LoadFlagsÚ
StyleFlags)ÚAffine2DÚBboxBase)ÚPath)ÚUTC)Ú_pathé   )Ú_backend_pdf_psc                 ó   • SnSn/ n[        U 5       HG  u  pV[        U5      nX'-   U:  a	  X'S-   -  nM!  UR                  SR                  XU 5      5        UnUnMI     UR                  SR                  XS 5      5        SR                  U5      $ )z�
Make one string from sequence of strings, with whitespace in between.

The whitespace is chosen to form lines of at most *linelen* characters,
if possible.
r   r#   ó    Nó   
)Ú	enumerateÚlenÚappendÚjoin)ÚstringsÚlinelenÚcurrposÚlastiÚresultÚiÚsÚlengths           Ú­C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\matplotlib/backends/backend_pdf.pyÚ_fillr5   ^   s’   € ð €GØ€EØ€FÜ˜'Ö"‰ˆÜ�Q“ˆØÑ˜gÓ%Ø ‘zÑ!ŠGà�M‰M˜$Ÿ)™) G°!Ð$4Ó5Ô6ØˆEØŠGñ #ð ‡M�M�$—)‘)˜G F˜OÓ,Ô-Ø�:‰:�fÓÐó    c           
      ó  • [         R                  " S5      nU(       aB  [        R                  " [	        U5      [
        R                  5      nUR                  [        S9nO[        R                  " 5       nS[        R                   S3SU  S[        R                   3US.UEnUR                  5        VVs0 s H  u  pVUc  M
  XV_M     nnnS nS	Ul        S
 nSUl        S n	SU	l        UUUUUUUUU	S.	n
U Ht  nXZ;  a*  [        R                  " SU< S[!        U
5      < S35        M2  X¥   " XE   5      (       a  ME  [        R                  " SU SXE   < SX¥   R                   S35        Mv     SU;   a  [#        US   5      US'   U$ s  snnf )a  
Create a PDF infoDict based on user-supplied metadata.

A default ``Creator``, ``Producer``, and ``CreationDate`` are added, though
the user metadata may override it. The date may be the current time, or a
time set by the ``SOURCE_DATE_EPOCH`` environment variable.

Metadata is verified to have the correct keys and their expected types. Any
unknown keys/types will raise a warning.

Parameters
----------
backend : str
    The name of the backend to use in the Producer value.

metadata : dict[str, Union[str, datetime, Name]]
    A dictionary of metadata supplied by the user with information
    following the PDF specification, also defined in
    `~.backend_pdf.PdfPages` below.

    If any value is *None*, then the key will be removed. This can be used
    to remove any pre-defined values.

Returns
-------
dict[str, Union[str, datetime, Name]]
    A validated dictionary of metadata.
ÚSOURCE_DATE_EPOCH)ÚtzinfozMatplotlib vz, https://matplotlib.orgzMatplotlib z
 backend v)ÚCreatorÚProducerÚCreationDatec                 ó"   • [        U [        5      $ ©N)Ú
isinstanceÚstr©Úxs    r4   Úis_string_likeÚ-_create_pdf_info_dict.<locals>.is_string_like£   s   € Ü˜!œSÓ!Ð!r6   zan instance of strc                 ó"   • [        U [        5      $ r>   )r?   r   rA   s    r4   Úis_dateÚ&_create_pdf_info_dict.<locals>.is_date§   s   € Ü˜!œXÓ&Ð&r6   z an instance of datetime.datetimec                 óT   • [        U [        5      (       a  U R                  S;   $ U S;   $ )N)s   Trues   Falses   Unknown)ÚTrueÚFalseÚUnknown©r?   ÚNameÚnamerA   s    r4   Úcheck_trappedÚ,_create_pdf_info_dict.<locals>.check_trapped«   s+   € Ü�aœ×ÑØ—6‘6Ð<Ñ<Ð<àÐ4Ñ4Ð4r6   z#one of {"True", "False", "Unknown"})	ÚTitleÚAuthorÚSubjectÚKeywordsr:   r;   r<   ÚModDateÚTrappedzUnknown infodict keyword: z. Must be one of Ú.zBad value for infodict keyword z. Got z which is not rV   )ÚosÚgetenvr   ÚfromtimestampÚintr   ÚutcÚreplacer!   ÚtodayÚmplÚ__version__ÚitemsÚtext_for_warningr	   Úwarn_externalÚsetrM   )ÚbackendÚmetadataÚsource_date_epochÚsource_dateÚinfoÚkÚvrC   rF   rO   Úkeywordss              r4   Ú_create_pdf_info_dictrm   t   s³  € ô@ Ÿ	š	Ð"5Ó6ÐÞÜ×,Ò,¬SÐ1BÓ-CÄXÇ\Á\ÓRˆØ!×)Ñ)´Ð)Ð5‰ä—n’nÓ&ˆð "¤#§/¡/Ð!2Ð2JÐKØ! ' ¨*´S·_±_Ð4EÐFØ#ñð ð	€Dð  $Ÿz™zœ|Ô=š|‘V�a¨q‹DˆAŠD™|€DÑ=ò"à&:€NÔ#ò'àA€GÔò5ð
 &K€MÔ"ð  Ø Ø!Ø"Ø!Ø"ØØØ ñ
€Hó ˆØÓÜ×ÒÐ!;¸A¹5ð A1Ü14°X³Ñ0AÀð Dö Eà’˜T™W×%Ó%Ü×ÒÐ!@ÀÀð D&Ø&*¡g¡[°Ø"*¡+×">Ñ">Ð!?¸qð Bö Cñ ð �DÓÜ˜t I™Ó/ˆˆY‰à€KùóO >s   Â6	F	ÃF	c                 óB  • U R                  S5      nU R                  5       nUb  UR                  nO6[        R                  (       a  [        R
                  nO[        R                  nUS:X  a  US-  nU$ US:  a  USU* S-  U* S-  4-  -  nU$ USUS-  US-  4-  -  nU$ )zL
Convert a datetime to a PDF string representing it.

Used for PDF and PGF.
zD:%Y%m%d%H%M%Sr   ÚZz+%02d'%02d'i  z-%02d'%02d')ÚstrftimeÚ	utcoffsetÚsecondsÚtimeÚdaylightÚaltzoner   )ÚdÚrÚzs      r4   Ú_datetime_to_pdfry   Ë   s¯   € ð 	
�
‰
Ð#Ó$€AØ	�‰‹€AØ�}Ø�I‰I‰ä�=�=Ü—‘‰Aä—‘ˆAØˆAƒvØ	ˆS‰ˆð
 €Hð	 
ˆQ‹Ø	ˆ] ˜r d™l¨a¨R°4©KÐ8Ñ8Ñ8ˆð €Hð 	
ˆ]˜a 4™i¨¨T©Ð2Ñ2Ñ2ˆØ€Hr6   c                 ó  • [         R                  " U* 5      n[         R                  " U5      n[         R                  " U5      nXU-  -   nXU-  -   nXU-  -   X5-  -   n	XU-  -
  X6-  -   n
XU-  -   nXU-  -
  nX4X¼4Xš4Xx44$ )zJ
Calculate the coordinates of rectangle when rotated by angle around x, y
)ÚmathÚradiansÚsinÚcos)rB   ÚyÚwidthÚheightÚangleÚ	sin_angleÚ	cos_angleÚaÚbÚcrv   ÚeÚfs                r4   Ú!_calculate_quad_point_coordinatesrŠ   ã   s£   € ô
 �LŠL˜%˜Ó €EÜ—’˜“€IÜ—’˜“€IØ	�YÑÑ€AØ	�YÑÑ€AØ	�IÑÑ Ñ 2Ñ2€AØ	�IÑÑ Ñ 2Ñ2€AØ	�IÑÑ€AØ	�IÑÑ€AØˆF�Q�F˜Q˜F Q FÐ+Ð+r6   c                 ó8  • [        XUX45      nUS-  (       a  SOSn[        S U 5       5      U-
  n[        S U 5       5      U-
  n[        S U 5       5      U-   n	[        S U 5       5      U-   n
[        [        R
                  R                  U5      5      XxXš44$ )z[
Get the coordinates of rotated rectangle and rectangle that covers the
rotated rectangle.
éZ   gñhãˆµøä>r   c              3   ó*   #   • U  H	  oS    v •  M     g7f©r   N© ©Ú.0rk   s     r4   Ú	<genexpr>Ú,_get_coordinates_of_block.<locals>.<genexpr>  ó   é € Ð'šh˜�!–šhùó   ‚c              3   ó*   #   • U  H	  oS    v •  M     g7f©r#   Nr�   r�   s     r4   r’   r“     r”   r•   c              3   ó*   #   • U  H	  oS    v •  M     g7frŽ   r�   r�   s     r4   r’   r“     r”   r•   c              3   ó*   #   • U  H	  oS    v •  M     g7fr—   r�   r�   s     r4   r’   r“     r”   r•   )rŠ   ÚminÚmaxÚtupleÚ	itertoolsÚchainÚfrom_iterable)rB   r   r€   r�   r‚   ÚverticesÚpadÚmin_xÚmin_yÚmax_xÚmax_ys              r4   Ú_get_coordinates_of_blockr¦   ô   s¢   € ô 1°°uØ17ó@€Hð ˜R—Z‰' Q€CÜÑ'™hÓ'Ó'¨#Ñ-€EÜÑ'™hÓ'Ó'¨#Ñ-€EÜÑ'™hÓ'Ó'¨#Ñ-€EÜÑ'™hÓ'Ó'¨#Ñ-€EÜ”)—/‘/×/Ñ/°Ó9Ó:Ø˜5Ð(ð*ð *r6   c                 ó¬   • [        XX4U5      u  pg[        S5      [        S5      U/ SQ[        S5      U R                  5       S.S.nUS-  (       a  XhS'   U$ )	z5
Create a link annotation object for embedding URLs.
ÚAnnotÚLink©r   r   r   ÚURI)ÚSr«   )ÚTypeÚSubtypeÚRectÚBorderÚArŒ   Ú
QuadPoints)r¦   rM   Úget_url)	ÚgcrB   r   r€   r�   r‚   Ú
quadpointsÚrectÚlink_annotations	            r4   Ú_get_link_annotationr¸     s\   € ô 1°°uÀeÓLÑ€Jä�W“Ü˜“<ØÚä�e“Ø—:‘:“<ñ
ñ	€Oð ˆr‡zà(2˜Ñ%ØÐr6   z\\z\(z\)z\nz\r)Ú\Ú(Ú)Ú
Úc                 ó¸  • [        U S5      (       a  U R                  5       $ [        U [        [        R
                  45      (       aK  [        R                  " U 5      (       d  [        S5      eSU -  nUR                  S5      R                  S5      $ [        U [        5      (       a  SS/U    $ [        U [        [        R                  45      (       a  SU -  $ [        U [        5      (       aU  [        U R                  5       (       a  U R                  S	5      5      $ [        R                   U R                  S
5      -   5      $ [        U ["        5      (       a9  SU R%                  S5      R'                  [(        5      R                  S5      -   S-   $ [        U [*        5      (       aY  [-        S/U R/                  5        VVs/ s H-  u  p#[1        U5      R                  5       S-   [        U5      -   PM/     snnQSP5      $ [        U [2        [4        45      (       a*  [-        S/U  Vs/ s H  n[        U5      PM     snQSP5      $ U c  g[        U [6        5      (       a  [        [9        U 5      5      $ [        U [:        5      (       a/  [-        U R<                   Vs/ s H  n[        U5      PM     sn5      $ [?        S[A        U 5       S35      es  snnf s  snf s  snf )z!Map Python objects to PDF syntax.ÚpdfReprz%Can only output finite numbers in PDFs   %.10fó   0ó   .s   falses   trues   %dÚasciizUTF-16BEó   (úlatin-1ó   )s   <<r&   s   >>ó   [ó   ]s   nullz$Don't know a PDF representation for z objects)!Úhasattrr¿   r?   ÚfloatÚnpÚfloatingÚisfiniteÚ
ValueErrorÚrstripÚboolr[   Úintegerr@   ÚisasciiÚencodeÚcodecsÚBOM_UTF16_BEÚbytesÚdecodeÚ	translateÚ_str_escapesÚdictr5   ra   rM   Úlistrœ   r   ry   r   ÚboundsÚ	TypeErrorÚtype)Úobjrw   rj   rk   Úvals        r4   r¿   r¿   *  s„  € ô ˆs�I×ÑØ�{‰{‹}Ðô
 
�Cœ%¤§¡Ð-×	.Ñ	.Ü�{Š{˜3×ÑÜÐDÓEÐEØ�s‰NˆØ�x‰x˜‹~×$Ñ$ TÓ*Ð*ô 
�Cœ×	Ñ	Ø˜'Ð" 3Ñ'Ð'ô 
�Cœ#œrŸz™zÐ*×	+Ñ	+Ø�s‰{Ðô 
�Cœ×	Ñ	Ü¨c¯k©k¯m©m�s—z‘z 'Ó*ó Jð 	JÜ"×/Ñ/°#·*±*¸ZÓ2HÑHóJð 	Jô 
�Cœ×	Ñ	àØ�J‰J�yÓ!×+Ñ+¬LÓ9×@Ñ@ÀÓKñLàñð	ô 
�Cœ×	Ñ	ÜØð
à@CÇ	Á	ÄÔLÂ¹¸Œd�1‹g�o‰oÓ $Ñ&¬°«Ô3ÁÒLð
ð ð
ó ð 	ô 
�Cœ$¤˜×	'Ñ	'Ü�dÐA±cÓ:²c¨sœg cžl±cÑ:ÐA¸DÐAÓBÐBð 
‰Øô 
�Cœ×	"Ñ	"ÜÔ'¨Ó,Ó-Ð-ô 
�Cœ×	"Ñ	"Ü¨c¯jªjÓ9ªj s”g˜c–l©jÑ9Ó:Ð:ô Ð>¼tÀC»y¸kð J"ð "ó #ð 	#ùó+ Mùò ;ùò :s   Æ?4KÈ$K
ÊKc                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	Ú	Referenceis  zJ
PDF reference object.

Use PdfFile.reserveObject() to create References.
c                 ó   • Xl         g r>   ©Úid©Úselfrä   s     r4   Ú__init__ÚReference.__init__z  s   € Ø�r6   c                 ó    • SU R                   -  $ )Nz<Reference %d>rã   ©ræ   s    r4   Ú__repr__ÚReference.__repr__}  s   € Ø $§'¡'Ñ)Ð)r6   c                 ó    • SU R                   -  $ )Ns   %d 0 Rrã   rê   s    r4   r¿   ÚReference.pdfRepr€  s   € Ø˜4Ÿ7™7Ñ"Ð"r6   c                 óx   • UR                   nU" SU R                  -  5        U" [        U5      5        U" S5        g )Nó	   %d 0 obj
s   
endobj
)Úwriterä   r¿   )ræ   ÚcontentsÚfilerñ   s       r4   rñ   ÚReference.writeƒ  s1   € Ø—
‘
ˆÙˆm˜dŸg™gÑ%Ô&ÙŒg�hÓÔ ÙˆmÕr6   rã   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rç   rë   r¿   rñ   Ú__static_attributes__r�   r6   r4   rá   rá   s  s   † ñòò*ò#õr6   rá   c                   óÊ   • \ rS rSrSrSr1 \" S5      k1 \" \" S5      \" S5      S-   5      k-
   V Vs0 s H	  nUSU-  _M     snn rS	 r	S
 r
S rS rS rS rS rSrgs  snn f )rM   iŠ  zPDF name object.©rN   é   Ú!Ú~r#   z#%02xc                 óü   • [        U[        5      (       a  UR                  U l        g [        U[        5      (       a  UR	                  S5      nUR                  U R                  5      R                  S5      U l        g )NrÂ   )r?   rM   rN   rÕ   rÖ   r×   Ú_hexifyrÒ   )ræ   rN   s     r4   rç   ÚName.__init__‘  sT   € Ü�dœD×!Ñ!ØŸ	™	ˆD�Iä˜$¤×&Ñ&Ø—{‘{ 7Ó+�ØŸ™ t§|¡|Ó4×;Ñ;¸GÓDˆD�Ir6   c                 ó    • SU R                   -  $ )Nz	<Name %s>rü   rê   s    r4   rë   ÚName.__repr__™  s   € Ø˜TŸY™YÑ&Ð&r6   c                 ó>   • SU R                   R                  S5      -   $ )NÚ/rÂ   )rN   rÖ   rê   s    r4   Ú__str__ÚName.__str__œ  s   € Ø�T—Y‘Y×%Ñ% gÓ.Ñ.Ð.r6   c                 ób   • [        U[        5      =(       a    U R                  UR                  :H  $ r>   rL   ©ræ   Úothers     r4   Ú__eq__ÚName.__eq__Ÿ  s!   € Ü˜%¤Ó&×B¨4¯9©9¸¿
¹
Ñ+BÐBr6   c                 ób   • [        U[        5      =(       a    U R                  UR                  :  $ r>   rL   r
  s     r4   Ú__lt__ÚName.__lt__¢  s!   € Ü˜%¤Ó&×A¨4¯9©9°u·z±zÑ+AÐAr6   c                 ó,   • [        U R                  5      $ r>   )ÚhashrN   rê   s    r4   Ú__hash__ÚName.__hash__¥  s   € Ü�D—I‘I‹Ðr6   c                 ó    • SU R                   -   $ )Nó   /rü   rê   s    r4   r¿   ÚName.pdfRepr¨  s   € Ø�d—i‘iÑÐr6   N)rõ   rö   r÷   rø   rù   Ú	__slots__ÚrangeÚordr  rç   rë   r  r  r  r  r¿   rú   ©r‘   r‡   s   00r4   rM   rM   Š  sƒ   † áØ€Ià%™% ›*˜Ð(H©%±°C³¹#¸c»(ÀQ¹,Ó*GÐ(HÒHôJÚH�1ð �'˜A‘+Š~ÙHòJ€GòEò'ò/òCòBòõ ùó5Js   ³ArM   c                   ó$   • \ rS rSrSrS rS rSrg)ÚVerbatimi¬  zEStore verbatim PDF command content for later inclusion in the stream.c                 ó   • Xl         g r>   ©Ú_x)ræ   rB   s     r4   rç   ÚVerbatim.__init__®  s   € Ø�r6   c                 ó   • U R                   $ r>   r  rê   s    r4   r¿   ÚVerbatim.pdfRepr±  s   € Ø�w‰wˆr6   r  N)rõ   rö   r÷   rø   rù   rç   r¿   rú   r�   r6   r4   r  r  ¬  s   † ÙOòõr6   r  c                   óÆ   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#S"r$S#r%S$r&S%r'S&r(S'r)S(r*S) r+\,S* 5       r-S+r.g,)-ÚOpiµ  z'PDF operators (not an exhaustive list).ó   bó   Bó   fó   hó   só   Só   ns   BTs   ETó   cs   reó   ló   ms   cms   Doó   Gó   gs   RGs   rgs   CSs   css   SCNs   scnó   dó   jó   Js   gsó   qó   Qs   Tds   Tfs   Tms   Tss   Tjs   TJó   wó   Ws   shc                 ó   • U R                   $ r>   )Úvaluerê   s    r4   r¿   Ú
Op.pdfReprß  s   € Ø�z‰zÐr6   c                 óŒ   • U(       a  U(       a  U R                   $ U R                  $ U(       a  U R                  $ U R                  $ )zº
Return the PDF operator to paint a path.

Parameters
----------
fill : bool
    Fill the path with the fill color.
stroke : bool
    Stroke the outline of the path with the line color.
)Úfill_strokeÚstrokeÚfillÚendpath)Úclsr?  r>  s      r4   Ú
paint_pathÚOp.paint_pathâ  s4   € ö ÞØ—‘Ð&à—z‘zÐ!æØ—x‘x�à—{‘{Ð"r6   r�   N)/rõ   rö   r÷   rø   rù   Úclose_fill_stroker=  r?  Ú	closepathÚclose_stroker>  r@  Ú
begin_textÚend_textÚcurvetoÚ	rectangleÚlinetoÚmovetoÚconcat_matrixÚuse_xobjectÚsetgray_strokeÚsetgray_nonstrokeÚsetrgb_strokeÚsetrgb_nonstrokeÚsetcolorspace_strokeÚsetcolorspace_nonstrokeÚsetcolor_strokeÚsetcolor_nonstrokeÚsetdashÚsetlinejoinÚ
setlinecapÚ	setgstateÚgsaveÚgrestoreÚtextposÚ
selectfontÚ
textmatrixÚtextriseÚshowÚshowkernÚsetlinewidthÚclipÚshadingr¿   ÚclassmethodrB  rú   r�   r6   r4   r%  r%  µ  sâ   † Ù1àÐØ€KØ€DØ€IØ€LØ€FØ€GØ€JØ€HØ€GØ€IØ€FØ€FØ€MØ€KØ€NØÐØ€MØÐØ ÐØ#ÐØ€OØÐØ€GØ€KØ€JØ€IØ€EØ€HØ€GØ€JØ€JØ€HØ€DØ€HØ€LØ€DØ€Gòð ñ#ó ó#r6   r%  c                   ó>   • \ rS rSrSrSrSS jrS rS rS r	S	 r
S
rg)ÚStreamiú  z›
PDF stream object.

This has no pdfRepr method. Instead, call begin(), then output the
contents of the stream by calling write(), and finally call end().
)rä   r)   ÚpdfFileró   ÚcompressobjÚextraÚposNc                 ót  • Xl         X l        X0l        UR                  U l        SU l        Uc  [        5       U l        OUR                  5       U l        Ub'  U R                  R                  [        S5      US.5        U R                  R                  U R                   5        [        R                  S   (       a3  U(       d,  [        R
                  " [        R                  S   5      U l        U R                  c  [        5       U l        gU R!                  5         U R                  R#                  5       U l        g)aÐ  
Parameters
----------
id : int
    Object id of the stream.
len : Reference or None
    An unused Reference object for the length of the stream;
    None means to use a memory buffer so the length can be inlined.
file : PdfFile
    The underlying object to write the stream to.
extra : dict from Name to anything, or None
    Extra key-value pairs to include in the stream header.
png : dict or None
    If the data is already png encoded, the decode parameters.
NÚFlateDecode)ÚFilterÚDecodeParmsúpdf.compression)rä   r)   ri  Úfhró   rj  rÙ   rk  ÚcopyÚupdaterM   Ú
recordXrefr_   ÚrcParamsÚzlibr   Ú_writeHeaderÚtellrl  )ræ   rä   r)   ró   rk  Úpngs         r4   rç   ÚStream.__init__  sß   € ð  ŒØŒØŒØ—G‘GˆŒ	ØˆÔØ‰=Ü›ˆD�JàŸ™›ˆDŒJØ‰?Ø�J‰J×Ñ¬d°=Ó.AØ.1ñ3ô 4ð 	�‰×Ñ §¡Ô(Ü�<‰<Ð)×*¶3Ü#×/Ò/Ü—‘Ð.Ñ/ó 1ˆDÔà�8‰8ÑÜ›	ˆD�Ià×ÑÔØ—y‘y—~‘~Ó'ˆD�Hr6   c                 ó  • U R                   R                  nU" SU R                  -  5        U R                  nU R                  US'   [
        R                  S   (       a  [        S5      US'   U" [        U5      5        U" S5        g )Nrð   ÚLengthrq  rn  ro  s   
stream
)	ró   rñ   rä   rk  r)   r_   rv  rM   r¿   )ræ   rñ   rÙ   s      r4   rx  ÚStream._writeHeader*  se   € Ø—	‘	—‘ˆÙˆm˜dŸg™gÑ%Ô&Ø�z‰zˆØŸ™ˆˆX‰Ü�<‰<Ð)×*Ü! -Ó0ˆD�‰NáŒg�d‹mÔÙˆmÕr6   c                 ó&  • U R                  5         U R                  cŒ  U R                  R                  5       n[        U5      U l        U R                  R
                  U l        U R                  5         U R                  R                  U5        U R                  R                  S5        gU R                  R                  5       U R                  -
  nU R                  R                  S5        U R                  R                  U R                  U5        g)zFinalize stream.Ns   
endstream
endobj
)Ú_flushr)   ró   Úgetvalueri  rr  rx  rñ   ry  rl  ÚwriteObject)ræ   rò   r3   s      r4   ÚendÚ
Stream.end5  s²   € ð 	�‰ŒØ�8‰8ÑØ—y‘y×)Ñ)Ó+ˆHÜ˜8“}ˆDŒHØŸ™Ÿ™ˆDŒIØ×ÑÔØ�I‰I�O‰O˜HÔ%Ø�I‰I�O‰OÐ4Õ5à—Y‘Y—^‘^Ó%¨¯©Ñ0ˆFØ�I‰I�O‰OÐ4Ô5Ø�L‰L×$Ñ$ T§X¡X¨vÕ6r6   c                 óÂ   • U R                   c  U R                  R                  U5        gU R                   R                  U5      nU R                  R                  U5        g)zWrite some data on the stream.N)rj  ró   rñ   Úcompress)ræ   ÚdataÚ
compresseds      r4   rñ   ÚStream.writeE  sF   € ð ×ÑÑ#Ø�I‰I�O‰O˜DÕ!à×)Ñ)×2Ñ2°4Ó8ˆJØ�I‰I�O‰O˜JÕ'r6   c                 ó˜   • U R                   b=  U R                   R                  5       nU R                  R                  U5        SU l         gg)zFlush the compression object.N)rj  Úflushró   rñ   )ræ   rˆ  s     r4   r€  ÚStream._flushN  sA   € ð ×ÑÑ'Ø×)Ñ)×/Ñ/Ó1ˆJØ�I‰I�O‰O˜JÔ'Ø#ˆDÕð (r6   )rj  rk  ró   rä   r)   ri  rl  ©NN)rõ   rö   r÷   rø   rù   r  rç   rx  rƒ  rñ   r€  rú   r�   r6   r4   rh  rh  ú  s)   † ñð P€Iô%(òN	ò7ò (õ$r6   rh  c                 ó  • [        U 5      nSUR                  -  n0 nU GHh  nUR                  U[        R                  5      n[        UR                  U-  5      S[        R                  " UR                  S   U-  5      [        R                  " UR                  S   U-  5      [        R                  " UR                  S   U-  5      [        R                  " UR                  S   U-  5      /nUR                  5       u  p‰US-  U-  R                  5       nSR                  [        [        U5      5      R                  S5      S	-   [         R"                  " [%        X‰5      S S S
S S/ SQS5      -   S-   XBR'                  U5      '   GMk     U$ )Néè  r   r#   é   é   é@   Ú rÂ   s    d1
F)r/  r.  r6   r-  r)  Tr(  )r   Úunits_per_EMÚ
load_glyphr   ÚNO_SCALEÚroundÚhoriAdvancer{   ÚfloorÚbboxÚceilÚget_pathr+   Úmapr@   rÒ   r"   Úconvert_to_stringr    Úget_glyph_name)
Ú	font_pathÚglyph_indicesÚfontÚconvÚprocsÚglyph_indexÚgÚd1rk   r‡   s
             r4   Ú_get_pdf_charprocsr¨  W  sQ  € Ü�IÓ€DØ�$×#Ñ#Ñ#€DØ€EÜ$ˆØ�O‰O˜K¬×);Ñ);Ó<ˆä�!—-‘- $Ñ&Ó'¨ä�JŠJ�q—v‘v˜a‘y 4Ñ'Ó(¬$¯*ª*°Q·V±V¸A±YÀÑ5EÓ*FÜ�IŠI�a—f‘f˜Q‘i $Ñ&Ó'¬¯ª°1·6±6¸!±9¸tÑ3CÓ)Dð	
ˆð �}‰}‹‰ˆØ�‰V�d‰]×!Ñ!Ó#ˆà�H‰H”Sœ˜b“\Ó"×)Ñ)¨'Ó2°XÑ=Ü×%Ò%Ü�Q“
˜D $¨¨t°Qâ-¨tó5ñ5ð
 ñð 	×!Ñ! +Ó.Ô/ñ %ð" €Lr6   c                   óì  ^ • \ rS rSrSrS>U 4S jjr\R                  " S5      " \" S 5      5      r	\R                  " S5      " \" S 5      5      r
\R                  " S5      " \" S 5      5      r\R                  " S5      \S	 5       5       rS
 r/ SQ4S jr\S 5       r\S 5       rS rS rS rS rS?S jrS rSS.S jrS rS@S jrS rS rS rS rS r\R@                  " SS5      S>S j5       r!S r"S! r#S" r$S# r%S$ r&S% r'S& r(\R                  " S'5      " \" S( 5      5      r)S) r*S* r+S+ r,S, r-S- r.S. r/S>S/ jr0S0 r1S1 r2S2 r3S3 r4S4 r5\SAS5 j5       r6SBS6 jr7SCS7 jr8S8 r9S9 r:S: r;S; r<S< r=S=r>U =r?$ )DÚPdfFileio  zPDF file object.Nc                 óV  >• [         T	U ]  5         [        R                  " S5      U l        / SQ/U l        SU l        SU l        SU l        [        R                  " USSS9u  p4U(       d   UR                  5       U l        UnSU l        X0l        SU l        UR!                  S	5        UR!                  S
5        U R#                  S5      U l        U R#                  S5      U l        / U l        U R#                  S5      U l        U R#                  S5      U l        U R#                  S5      U l        U R#                  S5      U l        U R#                  S5      U l        U R#                  S5      U l        [7        S5      U R&                  S.nU R9                  U R$                  U5        [;        SU=(       d    0 5      U l        S [        R                  " S5       5       U l        0 U l         0 U l!        [D        RF                  " [D        RH                  RK                  [L        RN                  S   S5      5      U l(        0 U l)        S [        R                  " S5       5       U l*        0 U l+        S [        R                  " S5       5       U l,        / U l-        0 U l.        S [        R                  " S5       5       U l/        / U l0        0 U l1        S [        R                  " S5       5       U l2        0 U l3        / U l4        / U l5        / U l6        SRo                  5        Vs/ s H  n[7        U5      PM     nnU R*                  U R2                  U R,                  U R.                  U R0                  US.nU R9                  U R4                  U5        g! [         a    [        5       nXl         GNf = fs  snf )a{  
Parameters
----------
filename : str or path-like or file-like
    Output target; if a string, a file will be opened for writing.

metadata : dict from strings to strings and dates
    Information dictionary object (see PDF reference section 10.2.1
    'Document Information Dictionary'), e.g.:
    ``{'Creator': 'My software', 'Author': 'Me', 'Title': 'Awesome'}``.

    The standard keys are 'Title', 'Author', 'Subject', 'Keywords',
    'Creator', 'Producer', 'CreationDate', 'ModDate', and
    'Trapped'. Values have been predefined for 'Creator', 'Producer'
    and 'CreationDate'. They can be removed by setting them to `None`.
r#   )r   iÿÿ  úthe zero objectFNr   ÚwbT)Úreturn_openeds	   %PDF-1.4
s   %¬Ü «º
ÚrootÚpagesÚfontszextended graphics statesztiling patternszGouraud triangleszexternal objectsÚ	resourcesÚCatalog)r­   ÚPagesÚpdfc              3   ó>   #   • U  H  n[        S U 35      v •  M     g7f)ÚFN©rM   ©r‘   r1   s     r4   r’   Ú#PdfFile.__init__.<locals>.<genexpr>­  ó   é € Ð"MÒ:L°Q¤4¨!¨A¨3¨§= =Ò:Lùó   ‚zps.fonttypec              3   ó>   #   • U  H  n[        S U 35      v •  M     g7f)r±   Nr¸  r¹  s     r4   r’   rº  ´  s   é € Ð KÒ8J°1¤¨¨!¨ g§ Ò8Jùr¼  c              3   ó>   #   • U  H  n[        S U 35      v •  M     g7f)ÚSMNr¸  r¹  s     r4   r’   rº  ¶  s   é € ÐJÒ7I°!œt b¨¨ HŸ~˜~Ò7Iùr¼  c              3   ó>   #   • U  H  n[        S U 35      v •  M     g7f)ÚHNr¸  r¹  s     r4   r’   rº  ¹  r»  r¼  c              3   ó>   #   • U  H  n[        S U 35      v •  M     g7f)ÚINr¸  r¹  s     r4   r’   rº  ½  s   é € ÐEÒ2D¨Qœ4 ! A 3 Ÿ=˜=Ò2Dùr¼  úPDF Text ImageB ImageC ImageI)ÚFontÚXObjectÚ	ExtGStateÚPatternÚShadingÚProcSet)8Úsuperrç   r�   ÚcountÚ_object_seqÚ	xrefTableÚpassed_in_file_objectÚoriginal_file_likeÚ	tell_baser   Úto_filehandlery  ÚOSErrorr   rr  Úcurrentstreamrñ   ÚreserveObjectÚ
rootObjectÚpagesObjectÚpageListÚ
fontObjectÚ_extGStateObjectÚhatchObjectÚgouraudObjectÚXObjectObjectÚresourceObjectrM   r‚  rm   ÚinfoDictÚ_internal_font_seqÚ
_fontNamesÚ_dviFontInfor$   ÚCharacterTrackerÚ_FONT_MAX_GLYPHÚgetr_   rv  Ú_character_trackerÚalphaStatesÚ_alpha_state_seqÚ_soft_mask_statesÚ_soft_mask_seqÚ_soft_mask_groupsÚ_hatch_patternsÚ_hatch_pattern_seqÚgouraudTrianglesÚ_imagesÚ
_image_seqÚmarkersÚpathsÚ_annotationsÚpageAnnotationsÚsplit)
ræ   Úfilenamerf   rr  Úopenedr¯  rB   Úprocsetsr²  Ú	__class__s
            €r4   rç   ÚPdfFile.__init__r  s  ø€ ô" 	‰ÑÔä$Ÿ?š?¨1Ó-ˆÔÚ7Ð8ˆŒØ%*ˆÔ"Ø"&ˆÔØˆŒÜ×(Ò(¨°4ÀtÑL‰
ˆÞð2Ø!)§¡£�”ð
 �Ø-1�Ô*àŒØ!ˆÔØ
�‰�Ôð 	�‰Ð(Ô)à×,Ñ,¨VÓ4ˆŒØ×-Ñ-¨gÓ6ˆÔØˆŒØ×,Ñ,¨WÓ5ˆŒØ $× 2Ñ 2Ð3MÓ NˆÔØ×-Ñ-Ð.?Ó@ˆÔØ!×/Ñ/Ð0CÓDˆÔØ!×/Ñ/Ð0BÓCˆÔØ"×0Ñ0°Ó=ˆÔä˜Y›Ø×)Ñ)ñ+ˆà×Ñ˜Ÿ™¨$Ô/ä-¨e°X·^ÀÓDˆŒá"M¼)¿/º/È!Ô:LÓ"MˆÔØˆŒØˆÔÜ"1×"BÒ"BÜ×+Ñ+×/Ñ/´·±¸]Ñ0KÈQÓOó#QˆÔð ˆÔÙ K¼	¿ºÈÔ8JÓ KˆÔØ!#ˆÔÙJ´y·²ÀqÔ7IÓJˆÔØ!#ˆÔØ!ˆÔÙ"M¼)¿/º/È!Ô:LÓ"MˆÔØ "ˆÔàˆŒÙE´)·/²/À!Ô2DÓEˆŒàˆŒàˆŒ
ð
 ˆÔð  "ˆÔð &E×%JÑ%JÔ%LÓMÒ%L ”D˜–GÑ%LˆÐMð
 "Ÿ_™_Ø $× 2Ñ 2Ø"&×"7Ñ"7Ø $× 0Ñ 0Ø $× 2Ñ 2Ø (ñ*ˆ	ð 	×Ñ˜×,Ñ,¨iÕ8øôS ó 3Ü“Y�Ø*2×'ð3üò| Ns   Á*N ÌN&ÎN#Î"N#z3.11c                 ó   • U R                   $ r>   )rá  rê   s    r4   Ú<lambda>ÚPdfFile.<lambda>Ù  s   € ¸d¿oºor6   c                 ó   • 0 $ r>   r�   ©Ú_s    r4   rü  rý  Ú  s   € Ábr6   c                 ó   • 0 $ r>   r�   rÿ  s    r4   rü  rý  Û  s   € Á"r6   c           
      óÒ  • 0 n[         R                  " [         R                  " S5      5      nU R                  R	                  5        Hœ  u  p4X$R
                     nUR                  c/  [        SR                  UR                  UR
                  5      5      e[        R                  " UUUR                  UR                  UR                  UR                  S9XR
                  '   Mž     U$ )Nú
pdftex.mapúNNo usable font file found for {} (TeX: {}); the font may lack a Type-1 version)ÚdvifontÚpdfnameÚfontfileÚbasefontÚencodingfileÚeffects)r   Ú
PsfontsMapÚfind_tex_filerâ  ra   Útexnamerö  rÍ   ÚformatÚpsnameÚtypesÚSimpleNamespaceÚencodingr
  )ræ   rv   Útex_font_mapr  r  Úpsfonts         r4   ÚdviFontInfoÚPdfFile.dviFontInfoÝ  s¾   € ð ˆÜ×)Ò)¬'×*?Ò*?ÀÓ*MÓNˆØ $× 1Ñ 1× 7Ñ 7Ö 9ÑˆGØ!§/¡/Ñ2ˆFØ�‰Ñ&Ü ð9ç‘V˜FŸM™M¨7¯?©?Ó;ó=ð =ô "'×!6Ò!6ØØØŸ™ØŸ™Ø#Ÿ_™_ØŸ™ñ"ˆA�o‰oÓñ !:ð ˆr6   c                 ó  • U R                  5         XsU l        U l        U R                  S5      nU R                  S5      n[	        S5      U R
                  U R                  SSSU-  SU-  /UUS.nU R                  S5      nU R                  Xe5        U R                  R                  U5        U R                  R                  X@R                  45        U R                  UR                  U R                  S5      5        U R                  [	        S	5      [        R                   5        U R                  [	        S	5      [        R"                  5        U R                  [$        R&                  S
   [        R(                  5        / U l        g )Nzpage contentsÚannotationsÚPager   éH   )r­   ÚParentÚ	ResourcesÚMediaBoxÚContentsÚAnnotsÚpagezlength of content streamÚ	DeviceRGBr—  )Ú	endStreamr€   r�   rÕ  rM   r×  rÞ  r‚  rØ  r*   ró  rô  ÚbeginStreamrä   Úoutputr%  rS  rT  ÚGraphicsContextPdfÚ
joinstylesrX  )ræ   r€   r�   ÚcontentObjectÚannotsObjectÚthePageÚ
pageObjects          r4   ÚnewPageÚPdfFile.newPageó  sE  € Ø�‰Ôà"'ÐˆŒ
�D”KØ×*Ñ*¨?Ó;ˆØ×)Ñ)¨-Ó8ˆÜ ›<Ø!×-Ñ-Ø $× 3Ñ 3Ø ! 1 b¨5¡j°"°v±+Ð>Ø,Ø)ñˆð ×'Ñ'¨Ó/ˆ
Ø×Ñ˜Ô-Ø�‰×Ñ˜ZÔ(Ø×Ñ× Ñ  ,×0DÑ0DÐ!EÔFà×Ñ˜×)Ñ)Ø×+Ñ+Ð,FÓGô	Ið 	�‰”D˜Ó%¤r×'>Ñ'>Ô?Ø�‰”D˜Ó%¤r×'AÑ'AÔBØ�‰Ô&×1Ñ1°'Ñ:¼B¿N¹NÔKð  "ˆÕr6   ©éœÿÿÿr.  r   r   c                 ól   • [        S5      [        S5      UUS.nU R                  R                  U5        g )Nr¨   ÚText)r­   r®   r  r¯   )rM   rô  r*   )ræ   ÚtextÚpositionRectÚtheNotes       r4   ÚnewTextnoteÚPdfFile.newTextnote  s3   € ä ›=Ü" 6›lØ#Ø'ñˆð
 	×Ñ×#Ñ# GÕ,r6   c                 óv   ^• U4S jm[        U 5      [        R                  S-   S-  -  nT" US5      nUSS S-   $ )z•
Get a prefix for a subsetted font name.

The prefix is six uppercase letters followed by a plus sign;
see PDF reference section 5.5.3 Font Subsets.
c                 óv   >• X:  a  [         R                  U    $ T" X-  U5      [         R                  X-     -   $ r>   )ÚstringÚascii_uppercase)ÚnÚbaseÚtoStrs     €r4   r<  Ú)PdfFile._get_subset_prefix.<locals>.toStr!  s>   ø€ Ø‹xÜ×-Ñ-¨aÑ0Ð0ñ ˜!™) TÓ*¬V×-CÑ-CÀAÁHÑ-MÑMðr6   r#   r�  é   Né   Ú+)r  ÚsysÚmaxsize)ÚcharsetÚhashedÚprefixr<  s      @r4   Ú_get_subset_prefixÚPdfFile._get_subset_prefix  sD   ø€ õ	ô �g“¤3§;¡;°¡?°aÑ"7Ñ8ˆÙ�v˜rÓ"ˆð �b�qˆz˜CÑÐr6   c                 ó`   • [         R                  [        UR                  5       5      5      U -   $ r>   )rª  rF  Ú	frozensetÚvalues)Úps_nameÚcharmaps     r4   Ú_get_subsetted_psnameÚPdfFile._get_subsetted_psname0  s$   € ä×)Ñ)¬)°G·N±NÓ4DÓ*EÓFÈÑPÐPr6   c           
      óh  • U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         U R                  5         U R                  5         U R                  R                  5        VVVs0 s H  u  po2U_M
     nnnnU R                  R                  5        H  nUS   XES   '   M     U R                   H  u	  p&psp‰p«nX4U'   M     U R                  U R                  U5        U R                  5         U R                  5         U R                  5         U R                  U R                   [#        S5      U R$                  ['        U R$                  5      S.5        U R)                  5         U R+                  5         U R-                  5         gs  snnnf )z>Write out the various deferred objects and the pdf end matter.r#   r   r´  )r­   ÚKidsÚCountN)r"  Ú_write_annotationsÚ
writeFontsÚwriteExtGSTatesÚ_write_soft_mask_groupsÚwriteHatchesÚwriteGouraudTrianglesrï  rJ  rñ  rò  r‚  rÝ  ÚwriteImagesÚwriteMarkersÚwritePathCollectionTemplatesr×  rM   rØ  r)   ÚwriteInfoDictÚ	writeXrefÚwriteTrailer)ræ   ÚimagerN   ÚobÚxobjectsÚtupÚpathÚtransr+   ÚcapÚpaddingÚfilledÚstrokeds                r4   ÚfinalizeÚPdfFile.finalize4  sm  € ð 	�‰ÔØ×ÑÔ!Ø�‰ÔØ×ÑÔØ×$Ñ$Ô&Ø×ÑÔØ×"Ñ"Ô$à,0¯L©L×,?Ñ,?Ô,AõCÚ,A™˜ b�"ŠHÑ,Að 	ò Cà—<‘<×&Ñ&Ö(ˆCØ" 1™vˆH˜‘VÓñ )ð —:”:ñ GˆD˜ 4¨g¸wà�T‹Nñ à×Ñ˜×+Ñ+¨XÔ6Ø×ÑÔØ×ÑÔØ×)Ñ)Ô+Ø×Ñ˜×)Ñ)Ü"& w£-Ø"&§-¡-Ü#& t§}¡}Ó#5ñ7ô	8ð 	×ÑÔð 	�‰ÔØ×ÑÕùô'Cs   ÂF-c                 ó0  • U R                  5         U R                  (       a  U R                  R                  5         gU R                  b3  U R                  R                  U R                  R                  5       5        U R                  R                  5         g)z)Flush all buffers and free all resources.N)r"  rÏ  rr  r‹  rÐ  rñ   r�  Úcloserê   s    r4   rk  ÚPdfFile.closeS  s^   € ð 	�‰ÔØ×%×%Ø�G‰G�M‰M�Oà×&Ñ&Ñ2Ø×'Ñ'×-Ñ-¨d¯g©g×.>Ñ.>Ó.@ÔAØ�G‰G�M‰M�Or6   c                 óŒ   • U R                   c  U R                  R                  U5        g U R                   R                  U5        g r>   )rÔ  rr  rñ   )ræ   r‡  s     r4   rñ   ÚPdfFile.write^  s2   € Ø×ÑÑ%Ø�G‰G�M‰M˜$Õà×Ñ×$Ñ$ TÕ*r6   c           
      ó˜   • U R                  [        U Vs/ s H  n[        U5      PM     sn5      5        U R                  S5        g s  snf )Nr'   )rñ   r5   r¿   )ræ   r‡  rB   s      r4   r$  ÚPdfFile.outputd  s7   € Ø�
‰
”5©dÓ3ªd¨œ' !ž*©dÑ3Ó4Ô5Ø�
‰
�5Õùò 4s   •Ac                 óF   • U R                   b   e[        XXU5      U l         g r>   )rÔ  rh  )ræ   rä   r)   rk  rz  s        r4   r#  ÚPdfFile.beginStreamh  s%   € Ø×!Ñ!Ñ)Ð)Ð)Ü# B¨T¸#Ó>ˆÕr6   c                 ób   • U R                   b"  U R                   R                  5         S U l         g g r>   )rÔ  rƒ  rê   s    r4   r"  ÚPdfFile.endStreaml  s-   € Ø×ÑÑ)Ø×Ñ×"Ñ"Ô$Ø!%ˆDÕð *r6   ©rk  c                ó”   • U R                  UR                  S U5        U R                  R                  U5        U R	                  5         g r>   )r#  rä   rÔ  rñ   r"  )ræ   Úrefr‡  rk  s       r4   ÚoutputStreamÚPdfFile.outputStreamq  s6   € Ø×Ñ˜Ÿ™  uÔ-Ø×Ñ× Ñ  Ô&Ø�‰Õr6   c                 óP   • U R                    H  u  pU R                  X5        M     g r>   )ró  r‚  )ræ   r(  r  s      r4   rR  ÚPdfFile._write_annotationsv  s#   € Ø)-×):Ô):Ñ%ˆLØ×Ñ˜\Ö7ò *;r6   c                 ó  • [        U[        5      (       a  U/nOv[        U[        5      (       a  [        US5      /nOS[        R                  S   (       a%  [
        R                  " US[        R                  S9nO[
        R                  " U5      nSnU Hs  nU R                  R                  XR45      nU(       d  UnUb  M-  [        U R                  5      nX`R                  XR4'   [        R                  SXbU5        U(       a  Mq  UnMu     U$ )z 
Select a font based on fontprop and return a name suitable for
``Op.selectfont``. If fontprop is a string, it will be interpreted
as the filename of the font.
r   úpdf.use14corefontsÚafm)ÚfontextÚ	directoryNz"Assigning font %s (subset %d) = %r)r?   r   r@   r_   rv  Ú_fontManagerÚ_find_fonts_by_propsÚRendererPdfÚ_afm_font_dirrá  rå  Únextrà  Ú_logÚdebug)ræ   ÚfontpropÚsubsetÚ	filenamesÚfirst_FxÚfnameÚFxs          r4   ÚfontNameÚPdfFile.fontNamez  sâ   € ô �h¤×)Ñ)Ø!˜
‰IÜ˜¤#×&Ñ&Ü! (¨AÓ.Ð/‰IÜ�\‰\Ð.×/Ü$×9Ò9Ø %´;×3LÑ3Lñ‰Iô %×9Ò9¸(ÓCˆIØˆÛˆEØ—‘×$Ñ$ e _Ó5ˆBÞØ�Ø‹zÜ˜$×1Ñ1Ó2�Ø35—‘  Ñ0Ü—
‘
Ð?ÀÈUÔSß�xØ!’Hñ ð ˆr6   c                 óÂ   • [        SUR                  R                  S5       35      n[        R	                  SX!R                  5        XR
                  U'   [        U5      $ )z�
Given a dvi font object, return a name suitable for Op.selectfont.

Register the font internally (in ``_dviFontInfo``) if not yet registered.
zF-rÂ   zAssigning font %s = %s (dvi))rM   r  rÖ   r†  r‡  râ  )ræ   r  r  s      r4   ÚdviFontNameÚPdfFile.dviFontName›  sP   € ô ˜˜GŸO™O×2Ñ2°7Ó;Ð<Ð=Ó>ˆÜ�
‰
Ð1°7¿O¹OÔLØ%,×Ñ˜'Ñ"Ü�G‹}Ðr6   c                 ó’  • 0 n[        U R                  R                  5       5       H8  u  p#[        R	                  SUR
                  5        U R                  U5      X'   M:     [        U R                  R                  5       5       H£  u  u  pEn[        R	                  SXE5        UR                  S5      (       a*  [        R	                  S5        U R                  U5      X'   M^  [        R	                  S5        U R                  R                  U   U   nU R                  XEU5      X'   M¥     U R                  U R                  U5        g )Nz"Embedding Type-1 font %s from dvi.zEmbedding font %r:%d.z.afmzWriting AFM font.zWriting TrueType font.)Úsortedrâ  ra   r†  r‡  r  Ú_embedTeXFontrá  ÚendswithÚ_write_afm_fontræ  ÚusedÚembedTTFr‚  rÙ  )ræ   r±  r  r  rö  r‰  r�  rL  s           r4   rS  ÚPdfFile.writeFonts¦  s  € ØˆÜ & t×'8Ñ'8×'>Ñ'>Ó'@Ö AÑˆGÜ�J‰JÐ;¸W¿_¹_ÔMØ!×/Ñ/°Ó8ˆE‹Nñ !Bô '-¨T¯_©_×-BÑ-BÓ-DÖ&EÑ"ÑˆX Ü�J‰JÐ.°ÔAØ× Ñ  ×(Ñ(ä—
‘
Ð.Ô/Ø ×0Ñ0°Ó:�“	ô —
‘
Ð3Ô4Ø×1Ñ1×6Ñ6°xÑ@ÀÑH�Ø ŸM™M¨(¸GÓD�“	ñ 'Fð 	×Ñ˜Ÿ™¨%Õ0r6   c                 ó"  • [        US5       n[        U5      nS S S 5        WR                  5       n[        S5      [        S5      [        U5      [        S5      S.nU R	                  S5      nU R                  Xe5        U$ ! , (       d  f       Nm= f)NÚrbrÅ  ÚType1ÚWinAnsiEncoding)r­   r®   ÚBaseFontÚEncodingúfont dictionary)Úopenr   Úget_fontnamerM   rÕ  r‚  )ræ   rö  rr  r¢  ÚfontnameÚfontdictÚfontdictObjects          r4   r—  ÚPdfFile._write_afm_font¸  s   € Ü�(˜DÔ! RÜ�r“7ˆD÷ "à×$Ñ$Ó&ˆÜ  ›LÜ# G›}Ü $ X£Ü $Ð%6Ó 7ñ9ˆð ×+Ñ+Ð,=Ó>ˆØ×Ñ˜Ô2ØÐ÷ "Õ!ús   �B Â 
Bc           
      ó  • [         R                  " [         R                  " S5      5      nX!R                     nUR                  c/  [        SR                  UR                  UR                  5      5      eU R                  S5      n[        S5      [        S5      S.n[        R                  " UR                  5      nUR                  bM  UR                  [        [         R                  " UR                  5      5       VVs0 s H  u  pxXx_M	     snn5      nUR                   (       a  UR#                  UR                   5      n[%        UR&                  UR(                  5      n	U R*                  R,                  U	   S   n
U
 Vs1 s H)  n[/        U R*                  R1                  U	SU5      5      iM+     nnUR3                  XÀR5                  U
R7                  5       5      5      n[        UR8                  S   5      US	'   U R;                  U5      US
'   UR8                  S   nU R=                  U5      US'   [?        URA                  5       SS9=oåS'   [C        URA                  5       SS9=oõS'   URD                  n[G        XïS-   5       Vs/ s H/  nURI                  U5      =n(       a  SURJ                  -  S-	  OSPM1     nnU R                  S5      =US'   nU RM                  UU5        U RM                  XE5        U$ s  snnf s  snf s  snf )Nr  r  r¡  rÅ  r�  )r­   r®   r   ÚFontNamerŸ  ÚFontDescriptorr   )ÚdefaultÚ	FirstCharéÿ   ÚLastCharr#   r�  é   zglyph widthsÚWidths)'r   r  r  r  rö  rÍ   r  r  rÕ  rM   r   Ú	Type1Fontr  Úwith_encodingr(   Ú
_parse_encr
  Ú	transformr   rŒ  Ú
face_indexræ  r˜  r  Úsubset_to_unicoder‰  rF  rJ  ÚpropÚcreateType1DescriptorÚ_generate_encodingrš   Úkeysr›   Ú_metricsr  Úget_metricsÚ	tex_widthr‚  )ræ   r  r  r  r¦  r¥  Út1fontr1   r‡   r   rL  ÚccodeÚcharsr  ÚfcÚlcÚfont_metricsÚcharÚglyph_metricsÚwidthsÚwidthsObjects                        r4   r•  ÚPdfFile._embedTeXFontÄ  sÉ  € Ü×)Ò)¬'×*?Ò*?ÀÓ*MÓNˆØŸo™oÑ.ˆØ�?‰?Ñ"Üð5ç‘˜Ÿ™ w§¡Ó7ó9ð 9ð ×+Ñ+Ð,=Ó>ˆä˜f›Ü˜g›ñ
ˆô ×%Ò% f§o¡oÓ6ˆØ�?‰?Ñ&Ø×)Ñ)Ü"+¬G×,>Ò,>¸v¿¹Ó,OÔ"PÔQÒ"P™$˜!�’Ñ"PÒQóˆFð �>�>Ø×%Ñ% f§n¡nÓ5ˆFô ˜WŸ]™]¨G×,>Ñ,>Ó?ˆ	Ø×)Ñ)×.Ñ.¨yÑ9¸!Ñ<ˆñ !ó
ò !�ô �×'Ñ'×9Ñ9¸)ÀQÈÓNÖOÙ ð 	ð 
ð
 —‘˜u×&=Ñ&=¸g¿n¹nÓ>NÓ&OÓPˆÜ# F§K¡K°
Ñ$;Ó<ˆ�Ñà%)×%?Ñ%?ÀÓ%GˆÐ!Ñ"Ø—;‘;˜zÑ*ˆØ#×6Ñ6°xÓ@ˆ�ÑÜ%(¨¯©«À!Ñ%DÐDˆ�kÑ"Ü$'¨¯©«ÀÑ$EÐEˆ�jÑ!à×'Ñ'ˆô $ B¨Q©Ô/ó1â/�dð (4×'?Ñ'?ÀÓ'EÐE�mÕEð ˜-×1Ñ1Ñ1°bÒ8ØLMòNá/ð 	ð 1ð -1×,>Ñ,>¸~Ó,NÐNˆ�Ñ˜\Ø×Ñ˜ vÔ.Ø×Ñ˜Ô2ØÐùó= Rùò
ùò1s   ÄK<
Æ0LÊ	6Lc                 óÔ   • Sn/ n[        UR                  5       5       H:  u  pEXBS-   :w  a  UR                  U5        UnUR                  [        U5      5        M<     [        S5      US.$ )Néþÿÿÿr#   r   ©r­   ÚDifferences)r”  ra   r*   rM   )ræ   r  Úprevr0   ÚcoderN   s         r4   r¹  ÚPdfFile._generate_encodingø  sf   € ØˆØˆÜ  §¡Ó!1Ö2‰JˆDØ˜a‘xÓØ—‘˜dÔ#ØˆDØ�M‰Mœ$˜t›*Ö%ñ	 3ô ˜Ó$Ø!ñ
ð 	
r6   r  c                 óø  • U R                  S5      nU R                  S5      nUR                  S   nUR                  S   nSnU(       a  US-  n  US-  nU(       a  US	-  n   UR                  S
   nSR                  [        S UR	                  5        5       5      5      n	[        S5      [        UR                  S   5      UUR                  S   UUR                  S   S   UR                  S   S   SSUUR                  S   SU	S.n
U R                  X:5        U R                  USR                  UR                  S S 5      [        UR                  S   5      [        UR                  S   5      SS.S9  U$ )Núfont descriptorz	font fileÚItalicAngleÚisFixedPitchr   r#   r�  é   r’  r   Ú c              3   ó<   #   • U  H  nUS :w  d  M  SU 3v •  M     g7f)z.notdefr  Nr�   r  s     r4   r’   Ú0PdfFile.createType1Descriptor.<locals>.<genexpr>+  s&   é € ð Ú!2˜AØ˜	‘>ó �!�A�3•Ò!2ùs   ‚
�rª  r©  ÚFontBBoxr‘  r�  iô  Ú
FamilyNameé2   )r­   r©  ÚFlagsrØ  rÒ  ÚAscentÚDescentÚ	CapHeightÚXHeightÚFontFileÚ
FontFamilyÚStemVÚCharSetr6   )ÚLength1ÚLength2ÚLength3ru  )
rÕ  r·  r+   r”  rJ  rM   r‚  rx  Úpartsr)   )ræ   r¾  r  ÚfontdescObjectÚfontfileObjectÚitalic_angleÚfixed_pitchÚflagsr  rC  Ú
descriptors              r4   r¸  ÚPdfFile.createType1Descriptor  s•  € ð ×+Ñ+Ð,=Ó>ˆØ×+Ñ+¨KÓ8ˆà—{‘{ =Ñ1ˆØ—k‘k .Ñ1ˆàˆæØ�V‰OˆEàð Ø�V‰OˆEö
 Ø�V‰OˆEàð ð ð —;‘;˜zÑ*ˆØ—'‘'Üñ Ø!)§¡Ô!2óó ó
ˆô  Ð 0Ó1Ü §¡¨JÑ 7Ó8Ø Ø!Ÿ;™; zÑ2Ø'Ø!Ÿ;™; zÑ2°1Ñ5Ø!Ÿ;™; zÑ2°1Ñ5ØØØ)Ø!Ÿ;™; |Ñ4ØØ"ñ
ˆ
ð$ 	×Ñ˜Ô4à×Ñ˜.¨#¯(©(°6·<±<ÀÀÐ3CÓ*DÜ,/°·±¸Q±Ó,@Ü,/°·±¸Q±Ó,@Ø,-ñ!/ð 	ñ 	0ð
 Ðr6   sO  /CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (Adobe)
   /Ordering (UCS)
   /Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <ffff>
endcodespacerange
%d beginbfrange
%s
endbfrange
endcmap
CMapName currentdict /CMap defineresource pop
end
endc                 ón  ^ ^^^^^• [        T5      n[        R                  S   mUR                  S4S jmUUU 4S jmUUUUU 4S jnUUUUU 4S jnT R	                  UR
                  U5      mTR                  SS5      m[        T5      mUR                  S	5      =(       d    S
S
S.nUR                  S5      =(       d    SS0nUR                  n	UR                  n
S
nSn[        R                  U	;   a  US-  n U(       a  US-  nOUS-  n[        R                  U
;   a  US-  n   [        S5      TUUR                   Vs/ s H
  nT" USS9PM     snT" UR                   SS9T" UR"                  SS9T" US   SS9T" US   5      US   S   S
S.
nTS:X  a	  U" XBX>5      $ TS:X  a	  U" XBX>5      $ gs  snf )z9Embed the TTF font from the named file into the document.úpdf.fonttypeTc                 ó˜   • X-  S-  nU(       a  [        U5      $ US:  a  [        R                  " U5      $ [        R                  " U5      $ )z2Convert font coordinates to PDF glyph coordinates.r�  r   )r—  r{   r™  r›  )r3   ÚupeÚnearestr:  s       r4   ÚcvtÚPdfFile.embedTTF.<locals>.cvtf  s@   € à‘L 4Ñ'ˆEÞÜ˜U“|Ð#à�q‹yÜ—z’z %Ó(Ð(ä—y’y Ó'Ð'r6   c           
      óâ  >^ ^• Sn/ n[        UR                  5       5       H'  nXBS-   :w  a  UR                  XD/5        OXCS   S'   UnM)     UUU 4S jmTS:X  a  SOSn/ nU HQ  u  pxSR                  U4S	 j[	        XxS-   5       5       5      n	UR                  S
USU S3 SUSU S3 SU	 S35        MS     TR
                  [        U5      SR                  U5      R                  S5      4-  n
U
$ )NrÊ  r#   éÿÿÿÿc                 óˆ   >• TR                   R                  TTU 5      nUR                  S5      R                  5       nSU S3$ )Núutf-16beÚ<Ú>)ræ  r¶  rÒ   Úhex)r¿  rÀ  Úhexstrrö  ræ   Úsubset_indexs      €€€r4   Ú_to_unicodeÚDPdfFile.embedTTF.<locals>.generate_unicode_cmap.<locals>._to_unicode|  sE   ø€ Ø×/Ñ/×AÑAØ˜l¨Eó3�àŸ™ jÓ1×5Ñ5Ó7�Ø˜6˜( !�}Ð$r6   r‘  r�  rÔ  r“  c              3   ó4   >#   • U  H  nT" U5      v •  M     g 7fr>   r�   )r‘   rB   rÿ  s     €r4   r’   ÚBPdfFile.embedTTF.<locals>.generate_unicode_cmap.<locals>.<genexpr>…  s   øé € Ð&SÒ?R¸!¡{°1§~ ~Ò?Rùs   ƒrú  Ú0rB   z> <z> [Ú]r¼   rÂ   )r”  rº  r*   r+   r  Ú_identityToUnicodeCMapr)   rÒ   )rþ  rL  Ú
last_ccodeÚunicode_groupsr¿  r€   Úunicode_bfrangeÚstartrƒ  Úreal_valuesÚunicode_cmaprÿ  rö  Úfonttyperæ   s   `          @€€€r4   Úgenerate_unicode_cmapÚ/PdfFile.embedTTF.<locals>.generate_unicode_cmapq  s  ú€ àˆJØˆNÜ §¡£Ö/�Ø¨™NÓ*Ø"×)Ñ)¨5¨.Õ9à,1 2Ñ& qÑ)Ø"’
ñ 0÷%ð " Q›‘A¨AˆEØ ˆOÛ,‘
�Ø!Ÿh™hÔ&S¼uÀUÐPQÉEÔ?RÓ&SÓS�Ø×&Ñ&Ø˜˜a ˜w a˜ZÐ(¨¨C°°%°¸¨z¨?¸#¸k¸]È!ÐLöNñ -ð !×7Ñ7Ü  Ó0Ø!ŸY™Y Ó7×>Ñ>¸wÓGðIñIˆLð  Ðr6   c                 ó   >^ ^• T"R                  S5      nT"R                  S5      nT"R                  S5      nT"R                  S5      nT"R                  S5      n/ n	[        T5      [        T5      pºT R                   Vs/ s H
  nT" USS9PM     nn[	        S5      T!U
UU[	        S	5      US
   U/ SQU[	        S5      U	S.UUS.nUUU 4S jn[        X«S-   5       Vs/ s H  nU" U5      PM     nn[        U5      US'   [        TR                  5        VVs/ s H  u  nnUT R                  U5      4PM     snn5      nSnU H<  u  nnUUS-   :w  a  U	R                  U5        U	R                  [	        U5      5        UnM>     [        TTR                  5       5      n0 n[        U5       H0  nUU   nT"R                  S5      nT"R                  UU5        UUU'   M2     T " UT5      nT"R                  Xn5        T"R                  XS5        T"R                  UU5        T"R                  UU5        T"R                  UU5        U$ s  snf s  snf s  snnf )z5The Type 3-specific part of embedding a Truetype fontzfont widthsrÑ  r¡  zcharacter procsúToUnicode mapF©ró  rÅ  ÚType3r©  )çü©ñÒMbP?r   r   r  r   r   r   rË  )r­   rŸ  r¬  r®  rª  r®   rM   rØ  Ú
FontMatrixÚ	CharProcsr   r°  Ú	ToUnicodec                 ó¦   >• TR                  TR                  U S5      [        R                  [        R                  -  S9R
                  nT" U5      $ )Nr   ©rì  )r•  rå  r   r–  Ú
NO_HINTINGr˜  )Úcharcoder€   rL  rô  r¢  s     €€€r4   Úget_char_widthÚ?PdfFile.embedTTF.<locals>.embedTTFType3.<locals>.get_char_width¬  sM   ø€ ØŸ™Ø—K‘K ¨!Ó,Ü#×,Ñ,¬y×/CÑ/CÑCð (ð EçEPÁ[ð ñ ˜5“zÐ!r6   r#   ÚMaxWidthrÊ  ÚcharProc)rÕ  rš   r›   rš  rM   r  r”  ra   rŸ  r*   r¨  rJ  rx  r‚  )#r¢  rþ  rL  rí  rÇ  rè  r¦  ÚcharprocsObjectÚtoUnicodeMapObjectÚdifferencesArrayÚ	firstcharÚlastcharrB   rš  r¥  r  r  rÆ  r¿  ÚgindÚdifferencesÚlast_cr‡   rN   ÚrawcharprocsÚ	charprocsÚcharnameÚstreamÚcharprocObjectr  rô  rö  r  rK  ræ   s#   ` `                           €€€€€r4   ÚembedTTFType3Ú'PdfFile.embedTTF.<locals>.embedTTFType3Ž  so  ú€ à×-Ñ-¨mÓ<ˆLØ!×/Ñ/Ð0AÓBˆNØ!×/Ñ/Ð0AÓBˆNØ"×0Ñ0Ð1BÓCˆOØ!%×!3Ñ!3°OÓ!DÐØ!ÐÜ"% g£,´°G³�xØ37·9²9Ó=²9¨a‘C˜ 5Ô)±9ˆDÐ=ô ˜V›Ø#Ø&Ø$Ø"0Ü ›=Ø" :Ñ.Ø Ú6Ø,ä  Ó,Ø#3ñ5ð 'Ø/ñˆH÷&"ô ',¨IÀ±zÔ&BóDÚ&B˜(ñ % XÖ.Ù&Bð ð Dä%(¨£[ˆJ�zÑ"ô !ØFMÇmÁmÄoô"ÚFU±{°u¸d�˜×+Ñ+¨DÓ1Ó2Áoò"ó ˆKð ˆFÛ&‘��4Ø˜ ™
“?Ø$×+Ñ+¨AÔ.Ø ×'Ñ'¬¨T«
Ô3Ø’ñ	 'ô .¨h¸¿¹Ó8HÓIˆLØˆIÜ" <Ö0�Ø% hÑ/�Ø!%×!3Ñ!3°JÓ!?�Ø×!Ñ! .°&Ô9Ø&4�	˜(Ó#ñ	 1ñ 1°¸wÓGˆLð ×Ñ˜^Ô6Ø×Ñ˜^Ô8Ø×Ñ˜\¨6Ô2Ø×Ñ˜_¨iÔ8Ø×ÑÐ0°,Ô?à!Ð!ùòy >ùò4Dùó"s   Á>I ÃIÄ I

c                 óô  >• TR                  S5      nTR                  S5      nTR                  S5      nTR                  S5      nTR                  S5      nTR                  S5      n	TR                  S5      n
[        R                  STX5        [        R                  " TUR                  5       5       n[        R                  " UR                  5      nS	S	S	5        [        R                  S
TU[        R                  " T5      R                  WR                  5       R                  5        [        U5      n [        S5      [        S5      TSSSS.UU	US.n[        S5      [        S5      T[        S5      U/U
S.nXƒS'   TR                  XŒR!                  5       SUR                  5       R                  0S9  S/S-  n/ nSnUR#                  5        H�  u  nnWR$                  U   nU R'                  U[(        R*                  [(        R,                  -  S9nUR/                  UT" UR0                  5      45        [3        U5      UU'   [5        UU5      nMƒ     UR7                  5         US	US-    nSn/ nSnU HU  u  nnUUS-   :w  a$  UR/                  U5        UR/                  U/5        OUS   R/                  U5        [5        UU5      nUnMW     SR9                  U5      R;                  S5      nTR                  X5        T" X5      nTR                  U
U5        UUS '   TR=                  X]5        TR=                  Xn5        TR=                  XC5        TR=                  U	U5        U$ ! , (       d  f       GN™= f)!z6The Type 42-specific part of embedding a Truetype fontrÑ  zCID font dictionaryzType 0 font dictionaryzCIDToGIDMap streamzfont file streamzType 0 widthsr  zSUBSET %r:%d characters: %sNzSUBSET %r:%d %d -> %drÅ  ÚCIDFontType2ÚAdobeÚIdentityr   )ÚRegistryÚOrderingÚ
Supplement)r­   r®   rŸ  ÚCIDSystemInforª  ÚWÚCIDToGIDMapÚType0z
Identity-H)r­   r®   rŸ  r   ÚDescendantFontsr  Ú	FontFile2rä  ru  Ú i   r  r#   rÊ  r÷  rÕ  rù  r  )rÕ  r†  r‡  r$   Úget_glyphs_subsetrJ  Úfont_as_filer¢  rX   ÚstatÚst_sizeÚ	getbufferÚnbytesr   rM   rx  r�  ra   Úglyph_index_mapr•  r   r–  r  r*   r˜  Úchrr›   Úsortr+   rÒ   r‚  ) r¢  rþ  rL  rí  rè  ÚcidFontDictObjectÚtype0FontDictObjectÚcidToGidMapObjectré  ÚwObjectr   r‰  ÚfontdataÚcidFontDictÚtype0FontDictÚcid_to_gid_maprÆ  Ú	max_ccoder¿  Úorig_glyph_indexr$  Úglyphr  ÚwÚ	max_widthr€   r  rô  rö  r  rK  ræ   s                               €€€€€r4   ÚembedTTFType42Ú(PdfFile.embedTTF.<locals>.embedTTFType42Õ  sh  ø€ à!×/Ñ/Ð0AÓBˆNØ $× 2Ñ 2Ð3HÓ IÐØ"&×"4Ñ"4Ð5MÓ"NÐØ $× 2Ñ 2Ð3GÓ HÐØ!×/Ñ/Ð0BÓCˆNØ×(Ñ(¨Ó9ˆGØ!%×!3Ñ!3°OÓ!DÐä�J‰JÐ4°hÀÔVÜ ×2Ò2°8Ø3:·>±>Ó3CôEØHNÜ*×7Ò7¸¿¹ÓD�÷Eô �J‰JØ'¨°<Ü—’˜Ó!×)Ñ)¨8×+=Ñ+=Ó+?×+FÑ+Fôô ˜8Ó$ˆDô ˜V›Ü Ó/Ø#à 'Ø *Ø"#ñ"%ð #1ØØ0ñˆKô ˜V›Ü ›=Ø#Ü  Ó.Ø$5Ð#6Ø/ñˆMð '5�{Ñ#Ø×ÑØ× 1Ñ 1Ó 3Ø  (×"4Ñ"4Ó"6×"=Ñ"=Ð>ð ñ @ð
 #˜V e™^ˆNØˆFØˆIØ+2¯=©=®?Ñ'�Ð'Ø×-Ñ-Ð.>Ñ?�ØŸ™¨Ü.7×.@Ñ.@Ä9×CWÑCWÑ.Wð (ð Y�à—‘˜u¡c¨%×*;Ñ*;Ó&<Ð=Ô>Ü(+¨D«	�˜uÑ%Ü  yÓ1’	ñ ,;ð �K‰KŒMØ+¨N¨Y¸©]Ð;ˆNàˆJØˆAØˆIÛ &‘��uØ˜J¨™NÓ*Ø—H‘H˜U”OØ—H‘H˜e˜WÕ%à�b‘E—L‘L Ô'Ü 	¨5Ó1�	Ø"’
ñ !'ð  ŸW™W ^Ó4×;Ñ;¸JÓGˆNØ×ÑÐ/Ô@ñ 1°ÓGˆLØ×ÑÐ0°,Ô?à%.ˆJ�zÑ"ð ×ÑÐ.Ô<Ø×ÑÐ0Ô@Ø×Ñ˜^Ô8Ø×Ñ˜W aÔ(à&Ð&÷gEö Eús   Â5!M(Í(
M7rÂ   r]   Úpcltr   )Ú	capHeightÚxHeightÚpostÚitalicAngle©r   r   Fr#   rÔ  é    r’  rª  r  rU  rV  )
r­   r©  rÛ  rØ  rÜ  rÝ  rÞ  rß  rÒ  râ  r‘  é*   N)r   r_   rv  r”  rM  Úpostscript_namerÒ   rM   Úget_sfnt_tableÚ
face_flagsÚstyle_flagsr   ÚFIXED_WIDTHr   ÚITALICrš  ÚascenderÚ	descender)ræ   rö  rþ  rL  r¢  r,  rR  rT  rW  ÚffÚsfrì  ÚsymbolicrB   rí  rô  r  r  rK  s   ``             @@@@r4   r™  ÚPdfFile.embedTTFa  sÏ  ý€ ä˜Ó!ˆÜ—<‘< Ñ/ˆà ×-Ñ-°tô 		(÷	 ÷:E	"ñ E	"÷N^	'ñ ^	'ðD ×,Ñ,¨T×-AÑ-AÀ7ÓKˆØ—.‘. ¨)Ó4ˆÜ�w“-ˆØ×"Ñ" 6Ó*×L¸AÈ!Ñ.LˆØ×"Ñ" 6Ó*×E¨}¸fÐ.EˆØ�_‰_ˆØ×ÑˆàˆØˆÜ× Ñ  BÓ&Ø�V‰OˆEØæØ�V‰O‰Eà�V‰OˆEÜ×Ñ Ó"Ø�V‰OˆEØààô Ð)Ó*ØØØ8<¿	º	ÓBº	°1™˜Q¨Ô.¹	ÑBÙ˜$Ÿ-™-°Ñ7Ù˜4Ÿ>™>°5Ñ9Ù˜T +Ñ.¸Ñ>Ù˜4 	™?Ó+Ø Ñ.¨qÑ1Øñˆ
ð �q‹=Ù  °WÓIÐIØ˜‹^Ù! $°gÓJÐJð ùò Cs   ÅF2
c                 óÀ   • U R                   R                  US5      nUb  US   $ [        U R                  5      nU[	        S5      US   US   S.4U R                   U'   U$ )z?Return name of an ExtGState that sets alpha to the given value.Nr   rÇ  r#   )r­   ÚCAÚca)rç  rå  r…  rè  rM   )ræ   ÚalphaÚstaterN   s       r4   Ú
alphaStateÚPdfFile.alphaStated  ss   € ð × Ñ ×$Ñ$ U¨DÓ1ˆØÑØ˜‘8ˆOä�D×)Ñ)Ó*ˆàœD Ó-Ø ™(¨%°©(ñ4ð 5ð 	×Ñ˜Ñð ˆr6   c                 óâ  • U R                   R                  US5      nUb  US   $ [        U R                  5      nU R	                  S5      nU[        S5      S[        S5      [        S5      S/US	.S
.4U R                   U'   U R                  R                  U[        S5      [        S5      S[        S5      [        S5      S./ SQSSU00/ SQS.[        S5      [        R                  /45        U$ )zñ
Return an ExtGState that sets the soft mask to the given shading.

Parameters
----------
smask : Reference
    Reference to a shading in DeviceGray color space, whose luminosity
    is to be used as the alpha channel.

Returns
-------
Name
Nr   z transparency group for soft maskrÇ  FÚMaskÚ
Luminosityr#   )r­   r¬   ÚBCÚG)r­   ÚAISÚSMaskrÆ  ÚFormÚTransparencyÚ
DeviceGray)r¬   ÚCS)r#   r   r   r#   r   r   rÉ  r¬   )r   r   r#   r#   )r­   r®   ÚFormTypeÚGroupÚMatrixr  ÚBBox)
ré  rå  r…  rê  rÕ  rM   rë  r*   r%  re  )ræ   Úsmaskrl  rN   ÚgroupObs        r4   Ú_soft_mask_stateÚPdfFile._soft_mask_stateq  s  € ð ×&Ñ&×*Ñ*¨5°$Ó7ˆØÑØ˜‘8ˆOä�D×'Ñ'Ó(ˆØ×$Ñ$Ð%GÓHˆàä˜[Ó)Øä  ›LÜ˜lÓ+Ø˜#Ø ñ	ñ	ð)
ˆ×Ñ˜uÑ%ð 	×Ñ×%Ñ%Øä˜Y›Ü ›<Øä˜nÓ-Ü˜|Ó,ñò -Ø'¨#¨u¨Ð6Ú$ñô �#‹YœŸ
™
Ð#ð'
ô 	ð  ˆr6   c                 ó¶   • U R                  U R                  [        / U R                  R	                  5       QU R
                  R	                  5       Q5      5        g r>   )r‚  rÚ  rÙ   rç  rJ  ré  rê   s    r4   rT  ÚPdfFile.writeExtGSTates¥  sT   € Ø×ÑØ×!Ñ!Üð Ø×!Ñ!×(Ñ(Ó*ðà×'Ñ'×.Ñ.Ó0ðó õ	
r6   c                 ó¨   • U R                    HB  u  pnU R                  UR                  S U5        U R                  " U6   U R	                  5         MD     g r>   )rë  r#  rä   r$  r"  )ræ   r_  Ú
attributesÚcontents       r4   rU  ÚPdfFile._write_soft_mask_groups®  sC   € Ø'+×'=Ô'=Ñ#ˆB˜GØ×Ñ˜RŸU™U D¨*Ô5Ø�KŠK˜Ñ!Ø�N‰NÖò (>r6   c                 óØ   • Uu  p#pEUb  [        U5      nUb  [        U5      nX#XE4nU R                  R                  US 5      nUb  U$ [        U R                  5      nXpR                  U'   U$ r>   )rœ   rì  rå  r…  rí  )ræ   Úhatch_styleÚedgeÚfaceÚhatchÚlwÚpatternrN   s           r4   ÚhatchPatternÚPdfFile.hatchPattern´  sz   € à +Ñˆ�EØÑÜ˜“;ˆDØÑÜ˜“;ˆDØ 5Ð-ˆà×&Ñ&×*Ñ*¨;¸Ó=ˆØÑØˆNä�D×+Ñ+Ó,ˆØ,0×Ñ˜[Ñ)Øˆr6   ú3.10c                 óŠ   • U R                   R                  5        VVVVVs0 s H  u  nu  p#pEXX44_M     snnnnn$ s  snnnnnf r>   )rì  ra   )ræ   rj   rˆ   r‰   ÚhÚls         r4   rü  rý  Å  s?   € Ø,0×,@Ñ,@×,FÑ,FÔ,H÷CÚ,H™˜™L˜Q 1ˆˆqˆ9ŠÑ,HöCùö Cs   ¡<c                 ó8  • [        5       nSnU R                  R                  5        GHÎ  u  p4U R                  S5      nXQU'   SSR	                  5        Vs/ s H  n[        U5      PM     sn0nU R                  UR                  S [        S5      SSSSSX"/X"USSSSSU R                  S-  /S	.	5        Uu  p‰p«U R                  US   US   US
   [        R                  5        U	bL  U R                  U	S   U	S   U	S
   [        R                  SSX"[        R                  [        R                  5
        U R                  US   US   US
   [        R                  5        U R                  U[        R                  5        U R                  " U R!                  ["        R$                  " U
5      ['        5       R)                  U5      SS96   U R                  [        R*                  5        U R-                  5         GMÑ     U R/                  U R0                  U5        g s  snf )Nç      R@zhatch patternÚProcsetsrÄ  rÈ  r#   r   r  )	r­   ÚPatternTypeÚ	PaintTypeÚ
TilingTyper}  ÚXStepÚYStepr  r|  r�  F©Úsimplify)rÙ   rì  ra   rÕ  rõ  rM   r#  rä   r�   r$  r%  rQ  rR  rJ  r?  rc  ÚpathOperationsr    rŒ  r   Úscaler=  r"  r‚  rÛ  )ræ   Ú	hatchDictÚsidelenr‰  rN   r_  rB   ÚresÚ
stroke_rgbÚfill_rgbrŒ  r�  s               r4   rV  ÚPdfFile.writeHatchesÉ  sê  € Ü“Fˆ	ØˆØ!%×!5Ñ!5×!;Ñ!;×!=ÑˆKØ×#Ñ# OÓ4ˆBØ �d‰OØØ%D×%JÑ%JÔ%LÓMÒ%L ”D˜–GÑ%LÑMðOˆCà×ÑØ—‘�tÜ˜i›Ø !°ÀØ˜Q Ð1Ø!Ø!à˜q ! Q¨¨4¯;©;¸Ñ+;Ð<ñ>ô?ð /:Ñ+ˆJ %Ø�K‰K˜
 1™ z°!¡}°jÀ±mÜ×(Ñ(ô*àÑ#Ø—‘˜H Q™K¨°!©°h¸q±kÜ×/Ñ/Ø˜q '´B·L±LÜŸG™Gô%ð �K‰K˜
 1™ z°!¡}°jÀ±mÜ×+Ñ+ô-ð �K‰K˜œBŸO™OÔ,à�KŠK˜×,Ñ,Ü—
’
˜5Ó!Ü“
× Ñ  Ó)Øð -ð  ñ !ð �K‰KœŸ™Ô'à�N‰N×ñE ">ðF 	×Ñ˜×)Ñ)¨9Õ5ùò? Ns   ÁHc                 ó¬   • [        S[        U R                  5      -  5      nU R                  SU 35      nU R                  R	                  X4X45        X44$ )ae  
Add a Gouraud triangle shading.

Parameters
----------
points : np.ndarray
    Triangle vertices, shape (n, 3, 2)
    where n = number of triangles, 3 = vertices, 2 = x, y.
colors : np.ndarray
    Vertex colors, shape (n, 3, 1) or (n, 3, 4)
    as with points, but last dimension is either (gray,)
    or (r, g, b, alpha).

Returns
-------
Name, Reference
zGT%dzGouraud triangle )rM   r)   rî  rÕ  r*   )ræ   ÚpointsÚcolorsrN   r_  s        r4   ÚaddGouraudTrianglesÚPdfFile.addGouraudTrianglesñ  sV   € ô$ �FœS ×!6Ñ!6Ó7Ñ7Ó8ˆØ×ÑÐ"3°D°6Ð :Ó;ˆØ×Ñ×$Ñ$ d°Ð%?Ô@Øˆxˆr6   c                 óB  • [        5       nU R                   GHh  u  p#pEX1U'   UR                  nUR                  US   US   -  S45      nUR                  S   nUS;   d   eUR                  US   US   -  U45      n	US:X  a  Sn[        R
                  " USS9S-
  n
[        R                  " USS9S-   nS	Xº-
  -  nU R                  UR                  S SS
SS[        US:X  a  SOS5      SU
S   US   U
S   US   /SS/U-  -   S.5        [        R                  " US   US   -  4SSSSU44/S9nSUS'   Xz-
  U-  US'   U	S S 2S U24   S-  US'   U R                  UR                  5       5        U R                  5         GMk     U R                  U R                  U5        g )Nr   r#   r�  ©r#   rÔ  rÔ  r‘  ©Úaxisrý   l   ÿÿ rZ  é   r!  rx  F)ÚShadingTypeÚBitsPerCoordinateÚBitsPerComponentÚBitsPerFlagÚ
ColorSpaceÚ	AntiAliasÚDecode)rì  Úu1)r¨  z>u4)r�  r©  r¸  ©Údtyperì  r¨  g     ào@)rÙ   rî  ÚshapeÚreshaperÊ   rš   r›   r#  rä   rM   Úemptyrñ   Útobytesr"  r‚  rÜ  )ræ   ÚgouraudDictrN   r_  r¨  r©  r»  Úflat_pointsÚcolordimÚflat_colorsÚ
points_minÚ
points_maxÚfactorÚ	streamarrs                 r4   rW  ÚPdfFile.writeGouraudTriangles  sê  € Ü“fˆØ(,×(=Õ(=Ñ$ˆD�fØ "˜ÑØ—L‘LˆEØ Ÿ.™.¨%°©(°U¸1±XÑ*=¸qÐ)AÓBˆKØ—|‘| A‘ˆHØ˜vÓ%Ð%Ð%Ø Ÿ.™.¨%°©(°U¸1±XÑ*=¸xÐ)HÓIˆKØ˜1‹}à�ÜŸš °!Ñ4¸Ñ?ˆJÜŸš °!Ñ4¸Ñ?ˆJØ :Ñ#:Ñ;ˆFà×ÑØ—‘�tØ !Ø&(Ø%&Ø !Ü#Ø$,°£M‘[°|ó ð $Ø'¨™]¨J°q©MØ'¨™]¨J°q©Mð;à  !˜f xÑ/ñ0ñôô ŸšØ�q‘˜E !™HÑ$Ð&Ø&Ø.Ø  $¨¨Ð4ð6ñ7ˆIð
 "#ˆI�gÑØ#.Ñ#;¸vÑ"EˆI�hÑØ"-ªa°°(°¨lÑ";¸eÑ"CˆI�hÑà�J‰J�y×(Ñ(Ó*Ô+Ø�N‰N×ñO )>ðP 	×Ñ˜×+Ñ+¨[Õ9r6   c                 óæ   • U R                   R                  [        U5      S5      nUb  US   $ [        U R                  5      nU R                  SU 35      nXU4U R                   [        U5      '   U$ )z=Return name of an image XObject representing the given image.Nr#   zimage )rï  rå  rä   r…  rð  rÕ  )ræ   r^  ÚentryrN   r_  s        r4   ÚimageObjectÚPdfFile.imageObject4  sm   € ð —‘× Ñ ¤ E£¨DÓ1ˆØÑØ˜‘8ˆOä�D—O‘OÓ$ˆØ×Ñ &¨¨ Ó0ˆØ#(°Ð"3ˆ�‰”R˜“YÑØˆr6   c                 óF  • USSS2   nUR                   S:X  a  US4$ USS2SS2SS24   n[        R                  " USS9nUR                  S   S:X  aK  USS2SS2S4   S   n[        R                  " US	:H  5      (       a  SnX#4$ [        R                  " USS9n X#4$ SnX#4$ )
zÇ
Unpack image array *im* into ``(data, alpha)``, which have shape
``(height, width, 3)`` (RGB) or ``(height, width, 1)`` (grayscale or
alpha), except that alpha is None if the image is fully opaque.
Nr÷  r�  r‘  ÚC)ÚorderrÔ  ).Nr­  )ÚndimrÊ   Úarrayr»  Úall)ræ   ÚimÚrgbrk  s       r4   Ú_unpackÚPdfFile._unpack@  s¹   € ð ‘�"�‰XˆØ�7‰7�a‹<Ø�t�8ˆOà’Qš˜2˜A˜2�X‘,ˆCÜ—(’(˜3 cÑ*ˆCà�x‰x˜‰{˜aÓØš1ša ˜7™ IÑ.�Ü—6’6˜% 3™,×'Ñ'Ø �Eð
 �:Ðô ŸHšH U°#Ñ6‘Eð �:Ðð �Ø�:Ðr6   c                 óÊ  • [        5       nUR                  USS9  UR                  S5        SnS=pE [        R                  " SUR                  S5      5      u  pgUS;   aT  UR                  U5      n[        U5      U:w  a  [        S5      eUS	:X  a  [        US   5      nO-US
:X  a  UnO$US:X  a  X8-  nOUS:X  a  O&UR                  US5        UR                  SS5        M¯  X4U4$ )zV
Write the image *img* into the pdf file using png
predictors with Flate compression.
rz  )r  r°  r6   Ns   !L4s)ó   IHDRó   PLTEó   IDATztruncated datar×  rØ  rÙ  s   IENDr#   rÔ  )	r   ÚsaveÚseekÚstructÚunpackÚreadr)   ÚRuntimeErrorr[   )	ræ   ÚimgÚbufferÚpng_dataÚ	bit_depthÚpaletter3   rÝ   r‡  s	            r4   Ú	_writePngÚPdfFile._writePngW  sç   € ô
 “ˆØ�‰� ˆÑ&Ø�‰�AŒØˆØ"Ð"ˆ	ØÜ!Ÿ=š=¨°&·+±+¸a³.ÓA‰LˆFØÐ2Ó2Ø—{‘{ 6Ó*�Ü�t“9 Ó&Ü&Ð'7Ó8Ð8Ø˜7“?Ü # D¨¡G£‘IØ˜W“_Ø"‘GØ˜W“_ØÑ$�HøØ˜“Øà—‘˜F AÔ&Ø�K‰K˜˜1Ôñ! ð"  GÐ+Ð+r6   c           	      ó|  • UR                   u  pEn[        S5      [        S5      UU[        SSS.U   5      SS.nU(       a  X7S'   [        R                  S	   (       GaY  UR                   S
   S:X  a  UR	                  S
S9nSXeS.n[
        R                  " U5      n	U	R                  SS9n
US:X  Gað  U
Gbì  [        U
5      n[        R                  " U
 VVVs/ s H  u  pÍU  H  oîPM     M     snnn[        R                  S9nUSSS2   R                  [        R                  5      S-  USSS2   R                  [        R                  5      S-  -  USSS2   -  nUSS2SS2S4   R                  [        R                  5      S-  USS2SS2S4   R                  [        R                  5      S-  -  USS2SS2S4   -  n[        R                  " U5      R                  [        R                  5      nU[        R                  " UUUS9   n[
        R                  " U5      R!                  S5      n	U	R#                  U5        U R%                  U	5      u  nnnUb  Uc  ['        S5      eUSUS-   n[        S5      [        S5      US-
  U/US'   UUS'   SUS'   UUS'   OU R%                  U	5      u  n  nOSnU R)                  UU R+                  S5      UUS9  U(       a  U R,                  R/                  W5        O)U R,                  R/                  UR1                  5       5        U R3                  5         gs  snnnf ) zè
Write the image *data*, of shape ``(height, width, 1)`` (grayscale) or
``(height, width, 3)`` (RGB), as pdf object *id* and with the soft mask
(alpha channel) *smask*, which should be either None or a ``(height,
width, 1)`` array.
rÆ  r   rx  r!  ©r#   r‘  r°  )r­   r®   ÚWidthÚHeightrµ  r³  ru  rq  r÷  r#   r®  é
   )Ú	PredictorÚColorsÚColumnsrý   )Ú	maxcolorsr‘  Nr¹  r   é   r�  )ÚsorterÚPzinvalid PNG headerÚIndexedrµ  r³  rí  zlength of image stream)rz  )r»  rM   r_   rv  Úsqueezer   Ú	fromarrayÚ	getcolorsr)   rÊ   rÐ  Úuint8ÚastypeÚuint32ÚargsortÚsearchsortedÚconvertÚ
putpaletterå  rß  r#  rÕ  rÔ  rñ   r¾  r"  )ræ   r‡  rä   r~  r�   r€   Úcolor_channelsrÞ   rz  rà  Ú
img_colorsÚ
num_colorsr   ÚcolorÚcomprä  Ú	palette24Úrgb24ÚindicesÚrgb8râ  rã  s                         r4   Ú	_writeImgÚPdfFile._writeImgt  s
  € ð )-¯
©
Ñ%ˆ�~Ü˜I“Ü˜w›-ØØÜ! l°{Ñ"CÀNÑ"SÓTØ#$ñ&ˆö Ø �‰LÜ�<‰<Ð)×*Ð*Ø�z‰z˜"‰~ Ó"Ø—|‘|¨�|Ð,�Ø "¨nÑOˆCÜ—/’/ $Ó'ˆCØŸ™°˜Ð5ˆJØ Ô" zÒ'=ô ! ›_�
ÜŸ(š(¹Õ#Vº©X¨QÔPUÈ¢DÑPU¡D¹Ó#VÜ)+¯©ñ3�à% a d¨ d™m×2Ñ2´2·9±9Ó=ÀÑCØ% a d¨ d™m×2Ñ2´2·9±9Ó=ÀÑBñDà$ Q T¨ T™]ñ+�	ð šq¢! Q˜w™-×.Ñ.¬r¯y©yÓ9¸RÑ?Øšq¢! Q˜w™-×.Ñ.¬r¯y©yÓ9¸QÑ>ñ@àša¢ A˜g™ñ'�ô Ÿ*š* YÓ/×6Ñ6´r·x±xÓ@�ØœrŸš¨y¸%ÈÑPÑQ�Ü—o’o dÓ+×3Ñ3°CÓ8�Ø—‘˜wÔ'Ø/3¯~©~¸cÓ/BÑ,�˜) WØÑ$¨©Ü&Ð';Ó<Ð<Ø! / :°¡>Ð2�Ü%)¨)£_´d¸;Ó6GØ%/°!¡^°Wð%>��LÑ!à*3�Ð&Ñ'Ø !��H‘Ø*3�Ð&Ò'à!%§¡°Ó!4‘�˜!™QàˆCØ×ÑØØ×ÑÐ7Ó8ØØð	 	ñ 	ö Ø×Ñ×$Ñ$ XÕ.à×Ñ×$Ñ$ T§\¡\£^Ô4Ø�‰ÕùôG $Ws   ÃL7c                 ó  • U R                   R                  5        Hg  u  pnU R                  U5      u  pEUb-  U R                  S5      nU R	                  XVR
                  5        OS nU R	                  XCR
                  U5        Mi     g )Nr~  )rï  rJ  rÔ  rÕ  r  rä   )ræ   rà  rN   r_  r‡  ÚadataÚsmaskObjects          r4   rX  ÚPdfFile.writeImages³  sj   € Ø!Ÿ\™\×0Ñ0Ö2‰MˆC�rØŸ,™, sÓ+‰KˆDØÑ Ø"×0Ñ0°Ó9�Ø—‘˜u§n¡nÕ5à"�Ø�N‰N˜4§¡¨Ö4ò 3r6   c                 ó   • U R                  XSS9n[        U5      [        U5      [        U5      Xg4n	U R                  R	                  U	5      n
U
cl  [        S[        U R                  5      -  5      nU R                  S[        U R                  5      -  5      nUR                  U5      nX¼XÕ/U R                  U	'   U$ U
S   U:  a  XZS'   U
S   nU$ )z<Return name of a marker XObject representing the given path.Fr�  zM%dz	marker %dr÷  r   )	rŸ  rœ   rÏ   rñ  rå  rM   r)   rÕ  Úget_extents)ræ   rb  rc  r?  r>  r�  Ú	joinstyleÚcapstyleÚpathopsÚkeyr0   rN   r_  rš  s                 r4   ÚmarkerObjectÚPdfFile.markerObject½  sÎ   € ð ×%Ñ% d¸EÐ%ÐBˆÜ�W‹~œt D›z¬4°«<¸ÐMˆØ—‘×!Ñ! #Ó&ˆØ‰>Ü˜¤ D§L¡LÓ 1Ñ1Ó2ˆDØ×#Ñ# K´#°d·l±lÓ2CÑ$CÓDˆBØ×#Ñ# EÓ*ˆDØ!%¨4Ð 4ˆD�L‰L˜Ñð
 ˆð �b‰z˜B‹Ø�r‘
Ø˜!‘9ˆDØˆr6   c           
      ó\  • U R                   R                  5        GH  u  u  pp4nu  pgp‰UR                  U	S-  5      nU R                  UR                  S [        S5      [        S5      [        UR                  5      S.5        U R                  [        R                  U   [        R                  5        U R                  [        R                  U   [        R                  5        U R                  " U6   U R                  [        R                  X#5      5        U R!                  5         GM     g )Né   rÆ  rv  ©r­   r®   r}  )rñ  ra   Úpaddedr#  rä   rM   rÚ   Úextentsr$  r%  r&  r%  rX  Ú	capstylesrY  rB  r"  )
ræ   r  r?  r>  r  r  rN   r_  rš  r�  s
             r4   rY  ÚPdfFile.writeMarkersÚ  sá   € à&*§l¡l×&8Ñ&8×&:ñ#Ñ9ˆg˜V°Ù!ˆd˜ð —;‘;˜r A™vÓ&ˆDØ×ÑØ—‘�tÜ˜i›´T¸&³\Ü˜dŸl™lÓ+ñ-ô.ð �K‰KÔ*×5Ñ5°iÑ@ÜŸ™ô(à�K‰KÔ*×4Ñ4°XÑ>ÄÇÁÔNØ�KŠK˜Ñ!Ø�K‰KœŸ™ dÓ3Ô4Ø�N‰N×ò% ';r6   c                 ó  • [        S[        U R                  5      -  5      nU R                  S[        U R                  5      -  5      nU R                  R	                  XrX8UR                  5       UR                  5       XEU4	5        U$ )NzP%dzpath %d)rM   r)   rò  rÕ  r*   Úget_joinstyleÚget_capstyle)	ræ   r´   rb  rc  re  rf  rg  rN   r_  s	            r4   ÚpathCollectionObjectÚPdfFile.pathCollectionObjectð  sr   € Ü�EœC §
¡
›OÑ+Ó,ˆØ×Ñ 	¬C°·
±
«OÑ ;Ó<ˆØ�
‰
×ÑØ˜ B×$4Ñ$4Ó$6¸¿¹Ó8IØ˜gð'ô	(ð ˆr6   c           
      óô  • U R                    GHg  u	  pp4pVpxn	U R                  X#SS9n
UR                  U5      n[        R                  " [        R
                  " UR                  5      5      (       d  / SQnO&UR                  U5      n[        UR                  5      nU R                  UR                  S [        S5      [        S5      US.5        U R                  [        R                  U   [        R                   5        U R                  [        R"                  U   [        R$                  5        U R                  " U
6   U R                  [        R'                  X‰5      5        U R)                  5         GMj     g )NFr�  ©r   r   r   r   rÆ  rv  r  )rò  rŸ  r  rÊ   rÑ  rÌ   r  r  rÚ   r#  rä   rM   r$  r%  r&  r%  rX  r  rY  rB  r"  )ræ   rN   rb  rc  r_  r  r  re  rf  rg  r  rš  r  s                r4   rZ  Ú$PdfFile.writePathCollectionTemplatesø  s  € àŸ�ñˆT˜ I¸ØØ×)Ñ)¨$ÀÐ)ÐFˆGØ×#Ñ# EÓ*ˆDÜ—6’6œ"Ÿ+š+ d§l¡lÓ3×4Ñ4Ú&‘à—{‘{ 7Ó+�Ü˜tŸ|™|Ó,�Ø×ÑØ—‘�tÜ˜i›´T¸&³\Ø ñ"ô#ð �K‰KÔ*×5Ñ5°iÑ@ÜŸ™ô(à�K‰KÔ*×4Ñ4°XÑ>ÄÇÁÔNØ�KŠK˜Ñ!Ø�K‰KœŸ™ fÓ6Ô7Ø�N‰N×ò# $r6   c                 ó  • [        [        R                  " XX#US[        R                  R
                  [        R                  R
                  S[        R                  R
                  [        R                  R
                  /S5      5      /$ )Nr?  r6   T)	r  r"   rž  r%  rL  r:  rK  rI  rE  )rb  r´  rd  rž  Úsketchs        r4   rŸ  ÚPdfFile.pathOperations  sc   € äœ×0Ò0Ø˜T¨VØÜ�Y‰Y�_‰_œbŸi™iŸo™o¨s´B·J±J×4DÑ4DÜ�\‰\×Ñð!àóó ð ð 	r6   c                 ó´   • U(       a-  SSU R                   S-  U R                  S-  4nUR                  nOS nSnU R                  XX5US9nU R                  " U6   g )Nç        r  F)rž  r%  )r€   r�   Úshould_simplifyrŸ  r$  )ræ   rb  r´  rd  r%  rž  Úcmdss          r4   Ú	writePathÚPdfFile.writePath  sa   € ÞØ˜˜dŸj™j¨2™o¨t¯{©{¸RÑ/?Ð@ˆDØ×+Ñ+‰HàˆDØˆHØ×"Ñ" 4°DØ*0ð #ð 2ˆà�Š�TÒr6   c                 ó~   • [        U R                  5      nU R                  R                  SSU/5        [	        U5      $ )zƒ
Reserve an ID for an indirect object.

The name is used for debugging in case we forget to print out
the object with writeObject.
Nr   )r…  rÍ  rÎ  r*   rá   )ræ   rN   rä   s      r4   rÕ  ÚPdfFile.reserveObject!  s6   € ô �$×"Ñ"Ó#ˆØ�‰×Ñ˜t Q¨˜oÔ.Ü˜‹}Ðr6   c                 ór   • U R                   R                  5       U R                  -
  U R                  U   S'   g ©Nr   )rr  ry  rÑ  rÎ  rå   s     r4   ru  ÚPdfFile.recordXref,  s(   € Ø $§¡§¡£°·±Ñ ?ˆ�‰�rÑ˜1Òr6   c                 ó\   • U R                  UR                  5        UR                  X 5        g r>   )ru  rä   rñ   )ræ   Úobjectrò   s      r4   r‚  ÚPdfFile.writeObject/  s   € Ø�‰˜Ÿ	™	Ô"Ø�‰�XÕ$r6   c                 óV  • U R                   R                  5       U R                  -
  U l        U R	                  S[        U R                  5      -  5        [        U R                  5       H=  u  nu  p#nUc  [        SX4-  5      eUS:X  a  SOSnSX#U4-  nU R	                  U5        M?     g)zWrite out the xref table.s
   xref
0 %d
NzNo offset for object %d (%s)r¬  r(  r,  s   %010d %05d %b 
)	rr  ry  rÑ  Ú	startxrefrñ   r)   rÎ  r(   ÚAssertionError)ræ   r1   ÚoffsetÚ
generationrN   r  r1  s          r4   r\  ÚPdfFile.writeXref3  sž   € àŸ™Ÿ™›¨$¯.©.Ñ8ˆŒØ�
‰
�?¤S¨¯©Ó%8Ñ8Ô9Ü-6°t·~±~Ö-FÑ)ˆAÑ)� DØ‰~Ü$Ø2°a°YÑ>ó@ð @ð #Ð&7Ó7‘d¸T�Ø*¨fÀ#Ð-FÑF�Ø—
‘
˜4Ö ò .Gr6   c                 ó|   • U R                  S5      U l        U R                  U R                  U R                  5        g)z8Write out the info dictionary, checking it for good formri   N)rÕ  Ú
infoObjectr‚  rß  rê   s    r4   r[  ÚPdfFile.writeInfoDict@  s.   € ð ×,Ñ,¨VÓ4ˆŒØ×Ñ˜Ÿ™¨$¯-©-Õ8r6   c                 óì   • U R                  S5        U R                  [        [        U R                  5      U R                  U R
                  S.5      5        U R                  SU R                  -  5        g)zWrite out the PDF trailer.s   trailer
)ÚSizeÚRootÚInfos   
startxref
%d
%%%%EOF
N)rñ   r¿   r)   rÎ  rÖ  r<  r6  rê   s    r4   r]  ÚPdfFile.writeTrailerF  sZ   € ð 	�
‰
�<Ô Ø�
‰
”7Ü˜Ÿ™Ó(Ø—_‘_Ø—_‘_ñ&ó'ô 	(ð
 	�
‰
Ð0°4·>±>ÑAÕBr6   )'rÝ  rè  ró  ræ  râ  rÚ  rá  rí  rì  rð  rï  rà  rÍ  rë  rê  ré  rç  rÔ  rr  rÙ  rÜ  rî  rÛ  r�   rß  r<  rñ  rÐ  rô  rØ  r×  rÏ  rò  rÞ  rÖ  r6  rÑ  r€   rÎ  r>   r�  ©r   )NNN©FN)rÕ  )@rõ   rö   r÷   rø   rù   rç   r	   Ú
deprecatedÚpropertyÚ	fontNamesÚmulti_byte_charprocsÚtype1Descriptorsr  r+  r4  ÚstaticmethodrF  rM  rh  rk  rñ   r$  r#  r"  rx  rR  rŽ  r‘  rS  r—  r•  r¹  Údelete_parameterr¸  r  r™  rm  r€  rT  rU  r�  ÚhatchPatternsrV  rª  rW  rÊ  rÔ  rå  r  rX  r  rY  r  rZ  rŸ  r+  rÕ  ru  r‚  r\  r[  r]  rú   Ú__classcell__©rù  s   @r4   rª  rª  o  sñ  ø† Ù÷e9ðN —’ Ô'©Ñ1MÓ(NÓO€IØŸ?š?¨6Ô2±8¹LÓ3IÓJÐØ—’ vÔ.©x¹Ó/EÓFÐà	‡_‚_�VÓØñó ó ðò("ò: .@ô -ð ñ ó ð ð, ñQó ðQòò>	ò+òô?ò&ð
 04õ ò
8ôòB	ò1ò$
ò2òh
ð 
×Ò˜6 :Ó.óDó /ðDðLÐò*AKòFò2òh
òòð" —O’O FÔ+©Hñ 6ó -ó €Mò&6òPò.*:òX
òò.,ô:=ò~5òò:ò,òð* óó ðô	ô	ò@ò%ò!ò9÷	Cð 	Cr6   rª  c                   óÔ   ^ • \ rS rSr\R
                  " S5      rSrU 4S jrS r	SS jr
S rSS	 jrSS
 jrSS.S jr SS jrS rSS jrS rSS.S jrS rS rSS jrS rSrU =r$ )rƒ  iR  zfonts/pdfcorefontsr}  c                 óf   >• [         TU ]  XC5        Xl        U R                  5       U l        X l        g r>   )rË  rç   ró   Únew_gcr´   Ú	image_dpi)ræ   ró   rR  r�   r€   rù  s        €r4   rç   ÚRendererPdf.__init__W  s'   ø€ Ü‰Ñ˜Ô'ØŒ	Ø—+‘+“-ˆŒØ"�r6   c                 óf   • U R                   R                  " U R                  R                  5       6   g r>   )ró   r$  r´   rh  rê   s    r4   rh  ÚRendererPdf.finalize]  s!   € Ø�	‰	×Ò˜$Ÿ'™'×*Ñ*Ó,Ò-r6   Nc                 óö  • [        USS5      nX!l        [        USS5      nUR                  5       c  UR                  SSS9  UR                  (       a  UR
                  UR
                  4Ul        OBUb  [        U5      S:  a  UR                  S	   S
4Ul        OUR                  S	   US	   4Ul        U R                  R                  U5      nU(       a  U R                  R                  " U6   X1l        XAl        g )NÚ
_fillcolor©r(  r(  r(  Ú_effective_alphas©ç      ð?r[  r"  T)ÚisRGBArÔ  r‘  r[  )ÚgetattrrW  Úget_rgbÚset_foregroundÚ_forced_alphaÚ_alpharY  r)   Ú_rgbr´   Údeltaró   r$  )ræ   r´   Ú	fillcolorÚ	orig_fillÚorig_alphasrc  s         r4   Úcheck_gcÚRendererPdf.check_gc`  sÖ   € Ü˜B ¨lÓ;ˆ	Ø!Œä˜bÐ"5°zÓBˆà�:‰:‹<Ñð ×Ñ˜l°4ÐÑ8à××Ø$&§I¡I¨r¯y©yÐ#9ˆBÕ ØÑ¤# i£.°1Ó"4Ø$&§G¡G¨A¡J°Ð#4ˆBÕ à$&§G¡G¨A¡J°	¸!±Ð#=ˆBÔ à—‘—‘˜bÓ!ˆÞØ�I‰I×Ò˜eÑ$ð "ŒØ*Õr6   c                 ó    • U R                   S-  $ )Nr–  )rR  rê   s    r4   Úget_image_magnificationÚ#RendererPdf.get_image_magnification{  s   € Ø�~‰~˜dÑ"Ð"r6   c                 óè  • UR                   S S u  pgUS:X  d  US:X  a  g Uc  UR                  S5        U R                  U5        SU-  U R                  -  nSU-  U R                  -  nU R                  R                  U5      nUc]  U R                  R                  [        R                  USSXbU[        R                  U[        R                  [        R                  5        g UR                  5       R                  5       u  pšp¼pÞU R                  R                  [        R                  SSSSX#[        R                  XšX¼XÞ[        R                  U[        R                  [        R                  5        g )Nr�  r   r[  r–  r#   )r»  Ú	set_alpharg  rR  ró   rÊ  r$  r%  r[  rM  rN  r\  ÚfrozenÚ	to_values)ræ   r´   rB   r   rÒ  r´  r“  rP  ÚimobÚtr1Útr2Útr3Útr4Útr5Útr6s                  r4   Ú
draw_imageÚRendererPdf.draw_image~  s&  € ð �x‰x˜˜ˆ|‰ˆØ�‹6�Q˜!“VØàÑà�L‰L˜Ôà�‰�bÔà�1‰H�t—~‘~Ñ%ˆØ�1‰H�t—~‘~Ñ%ˆà�y‰y×$Ñ$ RÓ(ˆàÑØ�I‰I×ÑœRŸX™XØ  1 a¨A¬r×/?Ñ/?Ø!¤2§>¡>´2·;±;õ@ð ,5×+;Ñ+;Ó+=×+GÑ+GÓ+IÑ(ˆC�c à�I‰I×ÑœRŸX™XØ  1 a¨¬r×/?Ñ/?Ø  s°¼2×;KÑ;KØ!¤2§>¡>´2·;±;õ@r6   c                 ó  • U R                  X5        U R                  R                  X#US L =(       a    UR                  5       S L UR	                  5       5        U R                  R                  U R                  R                  5       5        g r>   )rg  ró   r+  Úget_hatch_pathÚget_sketch_paramsr$  r´   Úpaint)ræ   r´   rb  r´  ÚrgbFaces        r4   Ú	draw_pathÚRendererPdf.draw_pathœ  sg   € à�‰�bÔ"Ø�	‰	×ÑØØ�tˆO×; × 1Ñ 1Ó 3°tÐ ;Ø× Ñ Ó"ô	$ð 	�	‰	×Ñ˜Ÿ™Ÿ™›Õ)r6   ©Úhatchcolorsc                óø  • Sn[         R                  " U5      n[         R                  " U5      nUc  / n[        U5      (       d  SnUR                  5       (       + nO3[         R                  " US S 2S4   US   :H  5      (       a	  US   S:g  nOSn[        U5      (       d  SnOh[         R                  " [         R                  " U	5      S:H  5      (       a  SnO3[         R                  " US S 2S4   US   :H  5      (       a	  US   S:g  nOSn[        U5      S:”  a  [        US   R
                  5      OSnU R                  X4XWU5      nUU-   S-   UU-  :  nU(       a  U(       d  [        R                  " XX#UXVXxXšX¼XÞS9$ [         R                  " U	5      n/ n/ n[        U R                  X#U5      5       Hh  u  nu  nnU R                  R                  UUUUWW5      nUR                  U5        UR                  UR                  U5      R!                  5       5        Mj     [#        [%        UU5      5      nU R                  R&                  S	-  nU R                  R(                  S	-  nU R                  R*                  nU" U R,                  R/                  5       6   S
u  n n!U R1                  UUXVXxXšX¼XÞS9 H¨  u  n"n#n$n%n&UU$   n'U'R2                  U"-   S:  d9  U'R4                  U"-   U:”  d&  U'R6                  U#-   S:  d  U'R8                  U#-   U:”  a  M\  U R;                  U%U&5        U"U -
  U#U!-
  n)n(U" SSSSU(U)[<        R>                  U$[<        R@                  5	        U"U#n!n Mª     U" U R,                  RC                  5       6   g )NTFr‘  )r   r‘  r(  r   r  r€  r  rY  r#   )"rÊ   Úasarrayr)   Ú	get_hatchrÑ  r    Ú_iter_collection_uses_per_pathr   Údraw_path_collectionr›   r(   Ú_iter_collection_raw_pathsró   r  r*   r  rn  rÙ   Úzipr€   r�   r$  r´   ÚpushÚ_iter_collectionÚx1Úx0Úy1Úy0rg  r%  rM  rN  Úpop)*ræ   r´   Úmaster_transformrò  Úall_transformsÚoffsetsÚoffset_transÚ
facecolorsÚ
edgecolorsÚ
linewidthsÚ
linestylesÚantialiasedsÚurlsÚoffset_positionr�  Úcan_do_optimizationrf  rg  Úlen_pathÚuses_per_pathÚshould_do_optimizationre  Ú
path_codesÚpath_extentsr1   rb  r´  rN   Úpath_extent_mapÚcanvas_widthÚcanvas_heightr$  ÚlastxÚlastyÚxoÚyoÚpath_idÚgc0r}  rš  ÚdxÚdys*                                             r4   r†  Ú RendererPdf.draw_path_collection¥  sX  € ð #ÐÜ—Z’Z 
Ó+ˆ
Ü—Z’Z 
Ó+ˆ
àÑØˆKä�:�‰ØˆFØ&(§l¡l£nÔ"4Ñä�vŠv�j¢ A Ñ&¨*°TÑ*:Ñ:×;Ñ;Ø# DÑ)¨SÑ0‘à&+Ð#ä�:�‰Ø‰Gä�vŠv”b—j’j Ó,°Ñ3×4Ñ4Ø‘Ü—’˜
¢1 a 4Ñ(¨J°tÑ,<Ñ<×=Ñ=Ø$ TÑ*¨cÑ1‘à&+Ð#ô .1°«Z¸!«^”3�u˜Q‘x×(Ñ(Ô)ÀˆØ×;Ñ;Ø 7¸
óDˆð �}Ñ$ qÑ(¨8°mÑ+CÑCð 	ö $Ö-CÜ×4Ò4ØÐ*°>Ø zØ¨Øñ	:ð :ô —&’&˜Ó$ˆØˆ
ØˆÜ$-¨d×.MÑ.MØ ¨ó/9ö %:Ñ ˆAÑ ��ià—9‘9×1Ñ1Ø�D˜) W¨f°gó?ˆDà×Ñ˜dÔ#ð
 ×Ñ × 0Ñ 0°Ó ;× BÑ BÓ DÖEñ%:ô œs :¨|Ó<Ó=ˆà—y‘y—‘¨Ñ+ˆØŸ	™	×(Ñ(¨2Ñ-ˆà—‘×!Ñ!ˆÙ�—‘—‘“ÑØ‰ˆˆuØ-1×-BÑ-BØ�J Ø¨
Ø Oð .Có .NÑ)ˆB��G˜S 'ð # 7Ñ+ˆDØ—‘˜"‘˜qÓ  D§G¡G¨b¡L°<Ó$?Ø—w‘w ‘| aÓ'¨4¯7©7°R©<¸-Ó+GÙà�M‰M˜#˜wÔ'Ø˜%‘Z  e¡�ˆBÙ�1�a˜˜A˜r 2¤r×'7Ñ'7¸Ü—>‘>ô#à˜r�5ˆE‘5ñ#.Nñ$ 	�—‘—‘“Òr6   c                 óê  • [        U5      n[        U5      nXx-  Xx-   S-   :  a  [        R                  " XX#XEU5        g U R                  X5        UR	                  U5      n	UR                  5       n
U R                  R                  nU R                  R                  X#XšU R                  R                  UR                  5       UR                  5       5      nU" [        R                  5        Su  pÞUR                  USSU R                  R                   S-  U R                  R"                  S-  4SS9 H¨  u  nn[        U5      (       d  M  USS  u  nnSUs=::  a  U R                  R                   S-  ::  a)  O  O&SUs=::  a  U R                  R"                  S-  ::  d  O  Mo  UU-
  UU-
  nnU" SSSSUU[        R$                  U[        R&                  5	        UUpíMª     U" [        R(                  5        g )	Nr  rY  r   r  F)rd  rž  rÊ  r#   )r)   r   Údraw_markersrg  r?  r>  ró   r$  r  r´   Ú
_linewidthr  r  r%  r[  Úiter_segmentsr€   r�   rM  rN  r\  )ræ   r´   Úmarker_pathÚmarker_transrb  rc  r}  Úlen_marker_pathÚusesr?  r>  r$  Úmarkerr¤  r¥  r    rÎ  rB   r   rª  r«  s                        r4   r®  ÚRendererPdf.draw_markers  s±  € ô
 ˜kÓ*ˆÜ�4‹yˆØÑ! OÑ$:¸QÑ$>Ó>Ü×%Ò% d°Ø&*°7ô<àà�‰�bÔ"Ø�w‰w�wÓˆØ—‘“ˆà—‘×!Ñ!ˆØ—‘×'Ñ'Ø t°T·W±W×5GÑ5GØ×ÑÓ §¡Ó 1ó3ˆñ 	Œr�x‰xÔØ‰ˆØ"×0Ñ0ØØ˜˜DŸI™IŸO™O¨BÑ.°·	±	×0@Ñ0@ÀÑ0CÐDØð 1ó  ‰NˆH�dô �8�}‹}Ø  �}‘��1Ø˜QÕ6 $§)¡)§/¡/°BÑ"6Ö6Ø Õ; d§i¡i×&6Ñ&6¸Ñ&;Õ;ÙØ˜U™ A¨¡I�B�Ù�q˜!˜Q  2 r¬2×+;Ñ+;ØœrŸ~™~ô/à  !’uñ ñ 	Œr�{‰{Õr6   c                 óÊ  • [        U5      [        U5      :X  d   e[        U5      S:X  a  g UR                  S:X  d   eUR                  S   S:X  d   eUR                  S   S:X  d   eUR                  S:X  d   eUR                  S   S:X  d   eUR                  S   S;   d   eUR                  nUR                  US   US   -  S45      nUR	                  U5      nUR                  U5      nU R
                  R                  Xc5      u  pxU R
                  R                  n	UR                  S   S:X  a:  UR                  S5        U R                  U5        U	" U[        R                  5        g US   n
[        R                  " X£S S 2S S 2S4   5      (       a:  UR                  U
5        U R                  U5        U	" U[        R                  5        g US S 2S S 2S4   S S 2S S 2S 4   n
U R
                  R                  Xj5      u  p‹U R
                  R                  U5      nU	" [        R                  U[        R                   U[        R                  [        R"                  5        g )Nr   r‘  r#   r�  r­  r[  )r   r   r‘  )r)   rÏ  r»  r¼  r´  ró   rª  r$  rm  rg  r%  re  rÊ   Úallcloser€  r[  rZ  r\  )ræ   r´   r¨  r©  rc  r»  ÚtpointsrN   r   r$  rk  Úsmask_obÚgstates                r4   Údraw_gouraud_trianglesÚ"RendererPdf.draw_gouraud_triangles(  sú  € Ü�6‹{œc &›kÓ)Ð)Ð)Üˆv‹;˜!ÓØØ�{‰{˜aÓÐÐØ�|‰|˜A‰ !Ó#Ð#Ð#Ø�|‰|˜A‰ !Ó#Ð#Ð#Ø�{‰{˜aÓÐÐØ�|‰|˜A‰ !Ó#Ð#Ð#Ø�|‰|˜A‰ &Ó(Ð(Ð(à—‘ˆØ—‘  q¡¨E°!©HÑ!4°aÐ 8Ó9ˆØ—/‘/ &Ó)ˆØ—/‘/ %Ó(ˆØ—)‘)×/Ñ/°Ó@‰ˆØ—‘×!Ñ!ˆà�<‰<˜‰?˜aÓà�L‰L˜ÔØ�M‰M˜"ÔÙ�4œŸ™Ô$Øà�w‘ˆÜ�;Š;�u¢Qª¨1 W™o×.Ñ.à�L‰L˜ÔØ�M‰M˜"ÔÙ�4œŸ™Õ$ð š1ša ˜7‘O¢A¢q¨$ JÑ/ˆEØŸ)™)×7Ñ7¸ÓG‰KˆAØ—Y‘Y×/Ñ/°Ó9ˆFÙ”2—8‘8˜V¤R§\¡\ØœŸ™Ü—;‘;õ r6   c           	      ó  • X6s=:X  a  S:X  a3  O  O0U R                   R                  X-
  X%-
  [        R                  5        g [        R
                  " U5      nU R                   R                  [        R                  " U5      [        R                  " U5      [        R                  " U5      * [        R                  " U5      X[        R                  5        U R                   R                  SS[        R                  5        g r0  )	ró   r$  r%  r]  r{   r|   r~   r}   r_  )ræ   rB   r   r‚   ÚoldxÚoldyÚoldangles          r4   Ú_setup_textposÚRendererPdf._setup_textposP  sœ   € ØÕ! Ö!Ø�I‰I×Ñ˜Q™X q¡x´·±Õ<ä—L’L Ó'ˆEØ�I‰I×ÑœTŸXšX e›_¬d¯hªh°u«oÜ"Ÿhšh u›oÐ-¬t¯xªx¸«Ø¤2§=¡=ô2ð �I‰I×Ñ˜Q ¤2§:¡:Õ.r6   c                 ó’  • U R                   R                  R                  USU5      u  pxpšnUR                  5       b6  U R                  R
                  S   S   R                  [        XX7X†5      5        [        R                  S   n[        R                  " U5      nU R                  R                  [        R                  5        U R                  R                  [        R                  " U5      [        R                   " U5      [        R                   " U5      * [        R                  " U5      X#[        R"                  5        U R%                  XR&                  5        SnSu  nnU R                  R                  [        R(                  5        U
 Hû  u  nnnnnnU R                  R*                  R-                  UUU5      u  nn[/        UR0                  UR2                  5      nU R5                  UUSUU5        UUnnUUU4U:w  aJ  U R                  R                  U R                  R7                  UU5      U[        R8                  5        UUU4nU R                  R                  U R;                  U/U5      [        R<                  5        Mý     U R                  R                  [        R>                  5        U H`  u  nnpxU R                  R                  [        R                  UUXx[        R@                  [        RB                  [        RD                  5        Mb     U R                  R                  [        RD                  5        g )Nr  r÷  r#   rð  r�  rY  r   )#Ú
_text2pathÚmathtext_parserÚparser³   ró   ró  r*   r¸   r_   rv  r{   r|   r$  r%  r[  r~   r}   rM  rg  rb  rG  ræ  Útrack_glyphr   rŒ  rµ  rÂ  rŽ  r^  Ú_encode_glyphsra  rH  rJ  r?  r\  )ræ   r´   rB   r   r2   r·  r‚   r€   r�   ÚdescentÚglyphsÚrectsr  r…   Ú	prev_fontr¿  rÀ  r¢  Úfontsizer¿  r¥  ÚoxÚoyrþ  Úsubset_charcoder   s                             r4   Údraw_mathtextÚRendererPdf.draw_mathtextZ  sx  € ð �O‰O×+Ñ+×1Ñ1°!°R¸Ó>ñ 	.ˆ�w¨ð �:‰:‹<Ñ#Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�q ó20ô 1ô —<‘< Ñ/ˆô �LŠL˜ÓˆØ�	‰	×ÑœŸ™Ô"Ø�	‰	×ÑœŸš !›¤d§h¢h¨q£kÜŸ(š( 1›+˜¤t§x¢x°£{Øœr×/Ñ/ô	1ð 	�‰�bŸ'™'Ô"Øˆ	Ø‰
ˆˆdà�	‰	×ÑœŸ™Ô'Û:@Ñ6ˆD�(˜E ;°°BØ,0¯I©I×,HÑ,H×,TÑ,TØ�e˜[ó-*Ñ)ˆL˜/ä  §¡¨T¯_©_Ó=ˆIØ×Ñ  B¨¨4°Ô6Ø˜R�$ˆDØ˜<¨Ð2°iÓ?Ø—	‘	× Ñ  §¡×!3Ñ!3°I¸|Ó!LÈhÜ!#§¡ô0à% |°XÐ=�	Ø�I‰I×Ñ˜T×0Ñ0°/Ð1BÀHÓMÜŸW™Wö&ñ ;Að 	�	‰	×ÑœŸ™Ô%ó &+Ñ!ˆB��EØ�I‰I×ÑœRŸX™X r¨2¨uÜŸ\™\¬2¯7©7´B·K±KöAñ &+ð
 	�	‰	×ÑœŸ™Õ%r6   )Úmtextc          
      ó.
  • U R                  5       nUR                  5       n	UR                  XI5      n
[        R                  " U
S5       nUu  nS S S 5        UR                  5       bL  U R                  R                  S   S   R                  [        XUWR                  UR                  U5      5        S / píWR                   Hñ  nUR                  U:w  aN  U R                  R                  UR                  5      nUSUUR                  R                  //-  nUR                  nUSUR                   UR"                  [%        UR&                  /5      /UR                   UR                  -   //-  nU R                  R(                  R+                  UR                  UR&                  UR,                  5        Mó     Su  nnn	U[/        U5      S-
  :  aÇ  UUUS-    u  nnUS   S:X  a  US   n	O”US   US   s=:X  a  S:X  a�  O  O~US   US   :X  ar  US	   US   -
  n[1        U5      S
:  a-  US   S==   US   S   -  ss'   US	==   US	   US   -
  -  ss'   O#US==   US-  U	-  US   S   /-  ss'   US	   US	'   UUS-   	 MÀ  US-  nU[/        U5      S-
  :  a  MÇ  [3        5       R5                  U5      R7                  X#5      nU R9                  XR:                  5        U R                  R=                  [>        R@                  5        Su  nnnnU Hð  nUS   S:X  a3  U R                  R=                  US   US   [>        RB                  5        M?  US   S:X  a¨  URE                  US   US   45      u  nnU RG                  UUUUU5        UUnn[/        US   5      S:X  a2  U R                  R=                  US   S   [>        RH                  5        MÁ  U R                  R=                  US   [>        RJ                  5        Mð   e   U R                  R=                  [>        RL                  5        U RO                  5       nURQ                  U5        URS                  S5        [T        RV                  [T        RX                  [T        RX                  [T        RX                  [T        RZ                  /nUR\                   HM  u  nnnn[U        UU/UU-   U/UU-   UU-   /UUU-   /SS//U5      n U R_                  UU UUR:                  5        MO     g ! , (       d  f       GN¾= f)Nr  r÷  r#   r¢  r1  )r   r   Nr�  r   rÔ  gš™™™™™¹?r‘  g     @�@r"  )0Úget_texmanagerÚget_size_in_pointsÚmake_dvir   ÚDvir³   ró   ró  r*   r¸   r€   r�   r1  r¢  r‘  ÚsizerB   r   rÕ   rO  ræ  rÈ  Úindexr)   Úabsr   Ú
rotate_degr×   rg  rb  r$  r%  rG  r^  r´  rÂ  ra  rb  rH  rQ  Úcopy_propertiesÚset_linewidthr    ÚMOVETOÚLINETOÚ	CLOSEPOLYÚboxesr~  )!ræ   r´   rB   r   r2   r·  r‚   rÔ  Ú
texmanagerrÎ  ÚdvifileÚdvir   ÚoldfontÚseqr1  r  r1   ÚcurxÚeltÚnxtr8  ÚmytransÚcuryr¿  rÀ  Úboxgcr  r‹  r�  r“  rP  rb  s!                                    r4   Údraw_texÚRendererPdf.draw_tex‡  st  € à×(Ñ(Ó*ˆ
Ø×*Ñ*Ó,ˆØ×%Ñ% aÓ2ˆÜ�[Š[˜ "Ô%¨Ø‰EˆD÷ &ð �:‰:‹<Ñ#Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�q˜$Ÿ*™* d§k¡k°5ó2:ô ;ð ˜R�Ø—I”IˆDØ�y‰y˜GÓ#ØŸ)™)×/Ñ/°·	±	Ó:�Ø˜ ¨$¯)©)¯.©.Ð9Ð:Ñ:�ØŸ)™)�Ø�V˜TŸV™V T§V¡V¬e°T·Z±Z°LÓ.AÐ-BÀDÇFÁFÈ4Ï:É:ÑDUÐVÐWÑWˆCØ�I‰I×(Ñ(×4Ñ4°T·Y±YÀÇ
Á
ÈDÏJÉJÖWñ ð 'Ñˆˆ4�Ø”#�c“(˜1‘*‹nØ˜1˜Q˜q™S�z‰HˆC�Ø�1‰v˜ÓØ˜q™6‘Ø�Q‘˜3˜q™6Õ+ VÖ+°°A±¸#¸a¹&Ó0@Ø˜Q™ # a¡&™�Ü�v“; Ó$Ø˜‘F˜2“J # a¡&¨¡)Ñ+“JØ˜“F˜c !™f S¨¡V™mÑ+”Fà˜“F˜v f™}¨XÑ5°s¸1±v¸a±yÐAÑA“FØ  ™V�C˜‘FØ˜˜!™�HÙØ�‰FˆAð ”#�c“(˜1‘*�nô" “*×'Ñ'¨Ó.×8Ñ8¸Ó>ˆð 	�‰�bŸ'™'Ô"Ø�	‰	×ÑœŸ™Ô'Ø!+Ñˆˆd�D˜$ÛˆCØ�1‰v˜ÓØ—	‘	× Ñ   Q¡¨¨Q©´·±Ö?Ø�Q‘˜6Ó!Ø$×.Ñ.°°A±¸¸A¹Ð/?Ó@‘
��dØ×#Ñ# D¨$°°t¸TÔBØ! 4�d�Ü�s˜1‘v“; !Ó#Ø—I‘I×$Ñ$ S¨¡V¨A¡Y´·±Ö8à—I‘I×$Ñ$ S¨¡V¬R¯[©[Ö9à�uñ ð 	�	‰	×ÑœŸ™Ô%ð —‘“ˆØ×Ñ˜bÔ!Ø×Ñ˜AÔÜ—;‘;¤§¡¬T¯[©[¼$¿+¹+Ü—>‘>ð#ˆà ŸJœJ‰LˆB��A�qÜ˜"˜b˜ B q¡D¨" :°°1±°b¸±d¨|¸bÀ"ÀQÁ$¸ZØ˜Q˜ð!Ø")ó+ˆDà�N‰N˜5 $¨°·±Ö9ò '÷U &Ö%ús   Á	TÔ
Tc                 óT   • US;   a  [        U5      $ SR                  S U 5       5      $ )Nrè  r6   c              3   óD   #   • U  H  oR                  S S5      v •  M     g7f)r�  ÚbigN)Úto_bytes)r‘   rO  s     r4   r’   Ú-RendererPdf._encode_glyphs.<locals>.<genexpr>Þ  s   é € ÐEºf°UŸ™ q¨%×0Ð0ºfùs   ‚ )rÕ   r+   )ræ   r‰  r  s      r4   rÉ  ÚRendererPdf._encode_glyphsÛ  s)   € Ø�vÓÜ˜“=Ð Ø�x‰xÑE¹fÓEÓEÐEr6   c                 ó8   • SSSS.U   nUR                  US5      $ )NÚcp1252rÄ   rù  )r#   r‘  r[  r]   )rÒ   )ræ   r2   r  r  s       r4   Úencode_stringÚRendererPdf.encode_stringà  s$   € Ø I°:Ñ>¸xÑHˆØ�x‰x˜ )Ó,Ð,r6   c	           
      óh
  ^ ^^• T R                  XR                  5        U(       a  T R                  XX4XV5      $ UR                  5       mUb!  UR	                  5       n	UR                  5       n
OS =pš[        R                  S   (       a¿  T R                  U5      nT R                  R                  [        R                  T R                  R                  U5      T[        R                  5        T R                  X#U5        T R                  R                  T R!                  USS9[        R"                  [        R$                  5        GOyT R'                  U5      n[        R                  S   mUUU 4S jnT R                  R                  [        R(                  5        [*        R,                  " U5      nT R                  R                  [*        R.                  " U5      [*        R0                  " U5      [*        R0                  " U5      * [*        R.                  " U5      X#[        R2                  5        / nS nSnT R                  R                  [        R                  5        [4        R6                  " XKU	U
S9 GHë  nT R                  R8                  R;                  UR<                  UR>                  UR@                  5      u  nnUR<                  U4U:w  a½  U" U5        [C        UR<                  RD                  UR<                  RF                  5      nT R                  R                  UU5      nT R                  R                  UT[        R                  5        T R                  URH                  SSUSS5        UR<                  U4nURH                  nURJ                  (       a<  U" U5        T R                  R                  URJ                  [        RL                  5        URN                  (       a  URQ                  URN                  5        URQ                  U5        URJ                  (       d  GM¹  U" U5        T R                  R                  S[        RL                  5        GMî     U" U5        T R                  R                  [        R$                  5        T R                  R                  [        RR                  5        URU                  5       bb  URW                  XIU
S9  URY                  5       u  nnT R                  RZ                  S   S   RQ                  []        XUUS	-  US	-  U5      5        g g )
Nr}  r#   )r  rð  c           
      óH  >• U (       d  g TR                   R                  [        R                  " U [        5       VVs/ s H2  u  pU[
        :X  a  S[        U5      -  T-  OTR                  UT5      PM4     snn[        R                  5        U R                  5         g s  snnf )Niüÿÿ)ró   r$  r�   ÚgroupbyrÝ   rÉ   r…  rÉ  r%  rb  Úclear)Úkerns_or_charsÚtpÚgrouprÎ  r  ræ   s      €€€r4   Úoutput_singlebyte_chunkÚ6RendererPdf.draw_text.<locals>.output_singlebyte_chunk	  s�   ø€ Þ%ØØ—	‘	× Ñ ô
 '0×&7Ò&7¸ÌÔ&MôOâ&M™˜ð :<¼u»�eœd 5›kÑ)¨HÒ4Ø×-Ñ-¨e°XÓ>ò?á&MòOô —K‘Kô!ð ×$Ñ$Õ&ùó	Os   ½9B
r   )ÚfeaturesÚlanguager÷  r’  )/rg  rb  rÒ  r×  Úget_fontfeaturesÚget_languager_   rv  Ú_get_font_afmró   r$  r%  rG  rŽ  r^  rÂ  rù  ra  rH  Ú_get_font_ttfr[  r{   r|   r~   r}   rM  r
   Úlayoutræ  rÈ  Ú	ft_objectrÄ  r¥  r   rŒ  rµ  rB   r   r`  Ú	prev_kernr*   r\  r³   Úset_textÚget_width_heightró  r¸   )ræ   r´   rB   r   r2   r·  r‚   ÚismathrÔ  r  r  r¢  r  r…   Úsinglebyte_chunkrÍ  Úprev_start_xÚitemr‰  r  r   Úft_namer€   r�   rÎ  r  s   `                       @@r4   Ú	draw_textÚRendererPdf.draw_textä  sË  ú€ ð
 	�‰�bŸ'™'Ô"ÞØ×%Ñ% b¨Q°4Ó?Ð?à×*Ñ*Ó,ˆØÑØ×-Ñ-Ó/ˆHØ×)Ñ)Ó+‰Hà"&Ð&ˆHô �<‰<Ð,×-Ø×%Ñ% dÓ+ˆDØ�I‰I×ÑœRŸ]™]Ø!ŸY™Y×/Ñ/°Ó5°xÄÇÁôPà×Ñ  eÔ,Ø�I‰I×Ñ˜T×/Ñ/°¸AÐ/Ð>ÜŸW™W¤b§k¡kö3ð  ×%Ñ% dÓ+ˆDÜ—|‘| NÑ3ˆH÷
'ð �I‰I×ÑœRŸX™XÔ&Ü—’˜UÓ#ˆAØ�I‰I×ÑœTŸXšX a›[¬$¯(ª(°1«+Ü"Ÿhšh q›k˜\¬4¯8ª8°A«;Ø¤2×#3Ñ#3ô5ð  "ÐØˆIØˆLà�I‰I×ÑœRŸ]™]Ô+Ü%×,Ò,¨Q¸xØ6>õ@�à#'§9¡9×#?Ñ#?×#KÑ#KØ—N‘N D§I¡I¨t×/?Ñ/?ó$AÑ �˜à—N‘N FÐ+¨yÓ8Ù+Ð,<Ô=Ü (¨¯©×)=Ñ)=Ø)-¯©×)BÑ)Bó!D�Ià"Ÿi™i×0Ñ0°¸FÓC�GØ—I‘I×$Ñ$ W¨h¼¿¹ÔFØ×'Ñ'¨¯©°°1°lÀAÀqÔIØ!%§¡°Ð 8�IØ#'§6¡6�LØ—6—6Ù+Ð,<Ô=Ø—I‘I×$Ñ$ T§V¡V¬R¯[©[Ô9Ø—>—>Ø$×+Ñ+¨D¯N©NÔ;Ø ×'Ñ'¨Ô1Ø—6—6’6Ù+Ð,<Ô=Ø—I‘I×$Ñ$ Q¬¯©×4ñ+@ñ, $Ð$4Ô5Ø�I‰I×ÑœRŸ[™[Ô)Ø�I‰I×ÑœRŸ[™[Ô)à�:‰:‹<Ñ#Ø�M‰M˜!¸ˆMÑBØ ×1Ñ1Ó3‰MˆE�6Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�q˜% "™* f¨r¡k°5ó2:õ ;ð $r6   c                 ó,   • [        U R                  5      $ r>   )r%  ró   rê   s    r4   rQ  ÚRendererPdf.new_gcE	  s   € ä! $§)¡)Ó,Ð,r6   )ró   r´   rR  r>   rª   rD  )rõ   rö   r÷   rø   r   Ú_get_data_pathr„  Ú_use_afm_rc_namerç   rh  rg  rj  rw  r~  r†  r®  r¼  rÂ  rÒ  rï  rÉ  rù  r  rQ  rú   rM  rN  s   @r4   rƒ  rƒ  R  sŠ   ø† à×(Ò(Ð)=Ó>€MØ+Ðõ#ò.ô+ò6#ô@ô<*ð >Bõ[ð| "ô$òL& ôP/ò+&ðZ ;?õ R:òhFò
-ô_;÷B-ð -r6   rƒ  c            
       óì   ^ • \ rS rSrU 4S jrS rS rS rS rSSS	S
.r	SSS	S.r
S rS rS rS rS rS rS rS rS rS rS rS\4S\4S\4S\4S\4S\4S\4S\4S\44	rS  rU 4S! jrS" rS#rU =r$ )$r%  iJ	  c                 óX   >• [         TU ]  5         SU l        SU l        Xl        S U l        g )NrX  rZ  )rË  rç   rW  rY  ró   Úparent)ræ   ró   rù  s     €r4   rç   ÚGraphicsContextPdf.__init__L	  s)   ø€ Ü‰ÑÔØ)ˆŒØ!+ˆÔØŒ	Øˆ�r6   c                 óN   • [        U R                  5      nUS	 US	 [        U5      $ )Nró   r  )rÙ   Ú__dict__Úrepr)ræ   rv   s     r4   rë   ÚGraphicsContextPdf.__repr__S	  s'   € Ü�—‘ÓˆØˆfˆIØˆhˆKÜ�A‹wˆr6   c                 ó¼   • U R                   S:„  =(       aG    U R                  S:„  =(       a1    [        U R                  5      S:*  =(       d    U R                  S   S:g  $ )zµ
Predicate: does the path need to be stroked (its outline drawn)?
This tests for the various conditions that disable stroking
the path, in which case it would presumably be filled.
r   r‘  r(  )r¯  ra  r)   rb  rê   s    r4   r>  ÚGraphicsContextPdf.strokeY	  sK   € ð —‘ !Ñ#÷ =¨¯©°a©÷ =Ü�T—Y‘Y“ 1Ñ$×;¨¯	©	°!©¸Ñ(;ð	>r6   c                 ó¼   • [        U5      (       a  US   nOU R                  nU R                  =(       d(    USL=(       a    [        U5      S:*  =(       d    US   S:g  $ )zœ
Predicate: does the path need to be filled?

An optional argument can be used to specify an alternative
_fillcolor, as needed by RendererPdf.draw_markers.
r   Nr‘  r(  )r)   rW  Ú_hatch)ræ   ÚargsrW  s      r4   r?  ÚGraphicsContextPdf.filld	  sZ   € ô ˆt�9‰9Ø˜a™‰JàŸ™ˆJØ—‘÷ AØ 4Ð'÷ @Ü�j“/ QÑ&×>¨*°Q©-¸3Ñ*>ð	Br6   c                 óf   • [         R                  U R                  5       U R                  5       5      $ )zW
Return the appropriate pdf operator to cause the path to be
stroked, filled, or both.
)r%  rB  r?  r>  rê   s    r4   r|  ÚGraphicsContextPdf.paints	  s!   € ô
 �}‰}˜TŸY™Y›[¨$¯+©+«-Ó8Ð8r6   r   r#   r�  )Úbuttr—  Ú
projecting)Úmiterr—  Úbevelc                 ó@   • U R                   U   [        R                  /$ r>   )r  r%  rY  ©ræ   Ústyles     r4   Úcapstyle_cmdÚGraphicsContextPdf.capstyle_cmd}	  s   € Ø—‘˜uÑ%¤r§}¡}Ð5Ð5r6   c                 ó@   • U R                   U   [        R                  /$ r>   )r&  r%  rX  r/  s     r4   Újoinstyle_cmdÚ GraphicsContextPdf.joinstyle_cmd€	  s   € Ø—‘ Ñ&¬¯©Ð7Ð7r6   c                 ó&   • U[         R                  /$ r>   )r%  rc  )ræ   r€   s     r4   Úlinewidth_cmdÚ GraphicsContextPdf.linewidth_cmdƒ	  s   € Ø”r—‘Ð'Ð'r6   c                 óP   • Uu  p#Uc  / nSn[        U5      U[        R                  /$ r0  )rÚ   r%  rW  )ræ   Údashesr8  Údashs       r4   Údash_cmdÚGraphicsContextPdf.dash_cmd†	  s-   € Ø‰ˆØ‰<ØˆDØˆFÜ�T“
˜F¤B§J¡JÐ/Ð/r6   c                 ó\   • U R                   R                  U5      nU[        R                  /$ r>   )ró   rm  r%  rZ  )ræ   rk  ÚforcedÚeffective_alphasrN   s        r4   Ú	alpha_cmdÚGraphicsContextPdf.alpha_cmd�	  s&   € Ø�y‰y×#Ñ#Ð$4Ó5ˆØ”b—l‘lÐ#Ð#r6   c                 ó>  • U(       dC  U R                   b  U R                  U R                   5      $ [        S5      [        R                  /$ X R                   X4nU R
                  R                  U5      n[        S5      [        R                  U[        R                  /$ )Nr!  rÈ  )rW  Úfillcolor_cmdrM   r%  rT  ró   r�  rV  )ræ   rŒ  Úhatch_colorÚhatch_linewidthr‰  rN   s         r4   Ú	hatch_cmdÚGraphicsContextPdf.hatch_cmd‘	  s€   € ÞØ�‰Ñ*Ø×)Ñ)¨$¯/©/Ó:Ð:ä˜[Ó)¬2×+EÑ+EÐFÐFà&¯©¸ÐPˆKØ—9‘9×)Ñ)¨+Ó6ˆDÜ˜“O¤R×%?Ñ%?Øœ"×/Ñ/ð1ð 1r6   c                 óÀ   • [         R                  S   (       a  / $ US   US   s=:X  a	  US   :X  a  O  OUS   [        R                  /$ / US S Q[        R                  P$ ©Nzpdf.inheritcolorr   r#   r�  r‘  )r_   rv  r%  rO  rQ  ©ræ   rÓ  s     r4   Úrgb_cmdÚGraphicsContextPdf.rgb_cmd�	  s^   € Ü�<‰<Ð*×+ØˆIØˆq‰6�S˜‘VÕ%˜s 1™vÖ%Ø˜‘FœB×-Ñ-Ð.Ð.à/�S˜˜!�WÐ/œb×.Ñ.Ð/Ð/r6   c                 óÆ   • Ub  [         R                  S   (       a  / $ US   US   s=:X  a	  US   :X  a  O  OUS   [        R                  /$ / US S Q[        R                  P$ rJ  )r_   rv  r%  rP  rR  rK  s     r4   rD  Ú GraphicsContextPdf.fillcolor_cmd¥	  sb   € Ø‰;œ#Ÿ,™,Ð'9×:ØˆIØ�‰V�s˜1‘vÕ'  Q¡Ö'Ø˜‘FœB×0Ñ0Ð1Ð1à2�S˜˜!�WÐ2œb×1Ñ1Ð2Ð2r6   c                 óž   • [        U R                  5      nUR                  U 5        U R                  Ul        Xl        [        R
                  /$ r>   )r%  ró   rÞ  r  r%  r[  )ræ   r  s     r4   r‰  ÚGraphicsContextPdf.push­	  s:   € Ü# D§I¡IÓ.ˆØ×Ñ˜tÔ$ØŸ™ˆŒØŒÜ—‘ˆzÐr6   c                 ó®   • U R                   c   eU R                  U R                   5        U R                   R                   U l         [        R                  /$ r>   )r  rÞ  r%  r\  rê   s    r4   r�  ÚGraphicsContextPdf.pop´	  sA   € Ø�{‰{Ñ&Ð&Ð&Ø×Ñ˜TŸ[™[Ô)Ø—k‘k×(Ñ(ˆŒÜ—‘ˆ}Ðr6   c                 óð  • / nU R                   U R                  4X4:w  aX  U R                  bK  UR                  U R	                  5       5        U R                   U R                  4X4:w  a  U R                  b  MK  U R                   U R                  4X4:w  d  U R                  cÔ  UR                  U R                  5       5        U R                   U:w  a?  UR                  U[        R                  [        R                  [        R                  /5        U R                  U:w  aV  UR                  5       u  pEUR                  [        R                  XESS9[        R                  [        R                  /-   5        U$ )z1Set clip rectangle. Calls `.pop()` and `.push()`.Fr�  )Ú	_cliprectÚ	_clippathr  Úextendr�  r‰  r%  rJ  rd  r@  Úget_transformed_path_and_affinerª  rŸ  )ræ   ÚcliprectÚclippathr*  rb  Úaffines         r4   Úclip_cmdÚGraphicsContextPdf.clip_cmdº	  s  € àˆà—‘ §¡Ð/°HÐ3GÓGØ—K‘KÑ+Ø�K‰K˜Ÿ™›
Ô#ð —‘ §¡Ð/°HÐ3GÓGØ—K‘KÓ+ð �^‰^˜TŸ^™^Ð,°Ð0DÓDØ—‘Ñ#Ø�K‰K˜Ÿ	™	›Ô$Ø�~‰~ Ó)Ø—‘˜X¤r§|¡|´R·W±W¼b¿j¹jÐIÔJØ�~‰~ Ó)Ø'×GÑGÓI‘�Ø—‘Ü×*Ñ*¨4À%Ð*ÐHÜ—W‘WœbŸj™jÐ)ñ*ô+ð ˆr6   )rU  rV  )ra  r`  rY  )Ú	_capstyle)rW  )Ú
_joinstyle)r¯  )Ú_dashes)rb  )r%  Ú_hatch_colorÚ_hatch_linewidthc           
      ó¼  • / nSnU R                    HÍ  u  pESnU H;  n[        X5      n[        X5      n	 Ub  U	c  X‰LnO[        X‰:g  5      n U(       d  M;    O   UR                  S:X  a	  U(       a  SnU(       d  Mj  UR                  S:X  a  SnU Vs/ s H  n[        X5      PM     n	nUR                  U" U /U	Q76 5        U H  n[        X[        X5      5        M     MÏ     U$ ! [         ah    [        R
                  " U5      n[        R
                  " U	5      n	UR                  U	R                  :g  =(       d    [        R                  " X‰:g  5      n GN	f = fs  snf )ze
Copy properties of other into self and return PDF commands
needed to transform *self* into *other*.
FrG  TrD  )Úcommandsr]  rÏ   rÍ   rÊ   rƒ  r»  Úanyrõ   rW  Úsetattr)
ræ   r  r*  Úfill_performedÚparamsÚcmdÚ	differentÚpÚoursÚtheirss
             r4   rc  ÚGraphicsContextPdf.deltaÜ	  s@  € ð
 ˆØˆØŸ=œ=‰KˆFØˆIÛ�Ü˜tÓ'�Ü  Ó*�ð	9Ø‘| v¡~Ø$(Ð$6™	ä$(¨©Ó$8™	÷ �9Ùñ ð" �|‰|˜{Ó*®~Ø �	çˆyØ—<‘< ?Ó2Ø%)�NÙ5;Ó<²V°œ' %Ö+±V�Ð<Ø—‘™C Ð. vÒ.Ô/Û�AÜ˜D¤W¨UÓ%6Ö7ó  ñ7 )ð: ˆøô' "ó 9ÜŸ:š: dÓ+�DÜŸZšZ¨Ó/�FØ!%§¡¨v¯|©|Ñ!;÷ "8Ü!#§¢¨©Ó!7ó ð9üò =s   ´	C$¾C$ÂEÃ$A.EÅEc                 ó˜   >• [         TU ]  U5        [        USU R                  5      n[        USU R                  5      nX l        X0l        g)z%
Copy properties of other into self.
rW  rY  N)rË  rÞ  r]  rW  rY  )ræ   r  rd  r@  rù  s       €r4   rÞ  Ú"GraphicsContextPdf.copy_properties
  sH   ø€ ô 	‰Ñ Ô&Ü˜E <°·±ÓAˆ	Ü" 5Ð*=Ø#'×#9Ñ#9ó;Ðà#ŒØ!1Õr6   c                 ó€   • / nU R                   b.  UR                  U R                  5       5        U R                   b  M.  U$ )z2
Make sure every pushed graphics state is popped.
)r  rW  r�  )ræ   r*  s     r4   rh  ÚGraphicsContextPdf.finalize
  s6   € ð ˆØ�k‰kÑ%Ø�K‰K˜Ÿ™›
Ô#ð �k‰kÓ%àˆr6   )rY  rW  ró   r  )rõ   rö   r÷   rø   rç   rë   r>  r?  r|  r  r&  r1  r4  r7  r<  rA  rG  rL  rD  r‰  r�  r\  rd  rc  rÞ  rh  rú   rM  rN  s   @r4   r%  r%  J	  sÔ   ø† õòò	>òBò9ð  Q°aÑ8€IØ q°1Ñ5€Jò6ò8ò(ò0ò$ò
1ò0ò3òòòð, 
$ XÐ.Ø	9¸9ÐEØ	˜Ð&Ø	˜-Ð(Ø	˜-Ð(Ø	˜-Ð(Ø	�xÐ Ø	�GÐà	7¸ÐCð€Hò$õL	2÷ð r6   r%  c                   óŠ   • \ rS rSrSr\R                  " SSSS9SS j5       rS	 rS
 r	S r
S rS rSS jrS r/ SQ4S jrSrg)ÚPdfPagesi
  aý  
A multi-page PDF file.

Examples
--------
>>> import matplotlib.pyplot as plt
>>> # Initialize:
>>> with PdfPages('foo.pdf') as pdf:
...     # As many times as you like, create a figure fig and save it:
...     fig = plt.figure()
...     pdf.savefig(fig)
...     # When no figure is specified the current figure is saved
...     pdf.savefig()

Notes
-----
In reality `PdfPages` is a thin wrapper around `PdfFile`, in order to avoid
confusion when using `~.pyplot.savefig` and forgetting the format argument.
r‘  Ú
keep_emptyzThis parameter does nothing.)ÚaddendumNc                 ó*   • Xl         X0l        SU l        g)a  
Create a new PdfPages object.

Parameters
----------
filename : str or path-like or file-like
    Plots using `PdfPages.savefig` will be written to a file at this location.
    The file is opened when a figure is saved for the first time (overwriting
    any older file with the same name).

metadata : dict, optional
    Information dictionary object (see PDF reference section 10.2.1
    'Document Information Dictionary'), e.g.:
    ``{'Creator': 'My software', 'Author': 'Me', 'Title': 'Awesome'}``.

    The standard keys are 'Title', 'Author', 'Subject', 'Keywords',
    'Creator', 'Producer', 'CreationDate', 'ModDate', and
    'Trapped'. Values have been predefined for 'Creator', 'Producer'
    and 'CreationDate'. They can be removed by setting them to `None`.
N)Ú	_filenameÚ	_metadataÚ_file)ræ   rö  ru  rf   s       r4   rç   ÚPdfPages.__init__,
  s   € ð. "ŒØ!ŒØˆ�
r6   c                 ó   • U $ r>   r�   rê   s    r4   Ú	__enter__ÚPdfPages.__enter__G
  s   € Øˆr6   c                 ó$   • U R                  5         g r>   )rk  )ræ   Úexc_typeÚexc_valÚexc_tbs       r4   Ú__exit__ÚPdfPages.__exit__J
  s   € Ø�
‰
�r6   c                 óz   • U R                   c#  [        U R                  U R                  S9U l         U R                   $ )N©rf   )rz  rª  rx  ry  rê   s    r4   Ú_ensure_fileÚPdfPages._ensure_fileM
  s,   € Ø�:‰:ÑÜ  §¡¸$¿.¹.ÑIˆDŒJØ�z‰zÐr6   c                 ó–   • U R                   b<  U R                   R                  5         U R                   R                  5         SU l         gg)zG
Finalize this object, making the underlying file a complete
PDF file.
N)rz  rh  rk  rê   s    r4   rk  ÚPdfPages.closeR
  s:   € ð
 �:‰:Ñ!Ø�J‰J×ÑÔ!Ø�J‰J×ÑÔØˆD�Jð "r6   c                 ó6   • U R                  5       R                  $ )zy
Return a modifiable information dictionary object
(see PDF reference section 10.2.1 'Document Information
Dictionary').
)r‡  rß  rê   s    r4   ÚinfodictÚPdfPages.infodict\
  s   € ð × Ñ Ó"×+Ñ+Ð+r6   c                 ó  • [        U[        5      (       dV  Uc  [        R                  " 5       nO[        R                  " U5      nUc  [        SU 35      eUR                  R                  nUR                  " U 4SSS.UD6  g)zý
Save a `.Figure` to this file as a new page.

Any other keyword arguments are passed to `~.Figure.savefig`.

Parameters
----------
figure : `.Figure` or int, default: the active figure
    The figure, or index of the figure, that is saved to the file.
Nz
No figure rµ  )r  re   )	r?   r   r   Ú
get_activeÚget_fig_managerrÍ   ÚcanvasÚfigureÚsavefig)ræ   r’  ÚkwargsÚmanagers       r4   r“  ÚPdfPages.savefigd
  sp   € ô ˜&¤&×)Ñ)Ø‰~ÜŸ.š.Ó*‘ä×-Ò-¨fÓ5�Ø‰Ü  :¨f¨XÐ!6Ó7Ð7Ø—^‘^×*Ñ*ˆFà�Š�tÐC E°5ÑC¸FÓCr6   c                 óH   • [        U R                  5       R                  5      $ )z=Return the current number of pages in the multipage pdf file.)r)   r‡  rØ  rê   s    r4   Úget_pagecountÚPdfPages.get_pagecountz
  s   € ä�4×$Ñ$Ó&×/Ñ/Ó0Ð0r6   r-  c                 óB   • U R                  5       R                  X5        g)zÏ
Add a new text note to the page to be saved next. The optional
positionRect specifies the position of the new note on the
page. It is outside the page per default to make sure it is
invisible on printouts.
N)r‡  r4  )ræ   r1  r2  s      r4   Úattach_noteÚPdfPages.attach_note~
  s   € ð 	×ÑÓ×'Ñ'¨Õ;r6   )rz  rx  ry  r�  r>   )rõ   rö   r÷   rø   rù   r	   rK  rç   r}  rƒ  r‡  rk  rŒ  r“  r˜  r›  rú   r�   r6   r4   rt  rt  
  s^   † ñð( 
×Ò˜6 <Ø$BñDóóDðò2òòò
ò,ôDò,1ò .@÷ <r6   rt  c                   óJ   ^ • \ rS rSrSrSS0rS rSSS.S jrU 4S	 jrS
r	U =r
$ )ÚFigureCanvasPdfiˆ
  r  rµ  zPortable Document Formatc                 ó   • g)Nrµ  r�   rê   s    r4   Úget_default_filetypeÚ$FigureCanvasPdf.get_default_filetypeŽ
  s   € Ør6   N)Úbbox_inches_restorerf   c                óÐ  • U R                   R                  nSU R                   l        U R                   R                  5       u  pV[        U[        5      (       a  UR                  5       nO	[        XS9n UR                  XV5        [        U R                   XVU[        XtXe5      US9nU R                   R                  U5        UR                  5         [        U[        5      (       d  UR                  5         [        U[        5      (       a  UR                  5         g UR                  5         g ! [        U[        5      (       a  UR                  5         f UR                  5         f = f)Nr  r†  )r¢  )r’  ÚdpiÚget_size_inchesr?   rt  r‡  rª  r+  r   rƒ  Údrawrh  r"  rk  )	ræ   rö  r¢  rf   r¤  r€   r�   ró   Úrenderers	            r4   Ú	print_pdfÚFigureCanvasPdf.print_pdf‘
  s  € ð �k‰k�o‰oˆØˆ�‰ŒØŸ™×3Ñ3Ó5‰ˆÜ�h¤×)Ñ)Ø×(Ñ(Ó*‰Dä˜8Ñ7ˆDð	Ø�L‰L˜Ô'Ü(Ø—‘˜U¨CÜ˜D vÓ5Ø$7ñ9ˆHð �K‰K×Ñ˜XÔ&Ø×ÑÔÜ˜h¬×1Ñ1Ø—‘”ä˜(¤H×-Ñ-Ø—‘Õ à—
‘
•øô ˜(¤H×-Ñ-Ø—‘Õ à—
‘
•ús   Á4BD- Ä-8E%c                 óT   >• U R                   R                  5         [        TU ]  5       $ r>   )r’  Údraw_without_renderingrË  r¦  )ræ   rù  s    €r4   r¦  ÚFigureCanvasPdf.draw«
  s   ø€ Ø�‰×*Ñ*Ô,Ü‰w‰|‹~Ðr6   r�   )rõ   rö   r÷   rø   Ú	fixed_dpiÚ	filetypesr   r¨  r¦  rú   rM  rN  s   @r4   rž  rž  ˆ
  s0   ø† ð €IØÐ2Ð3€Iòð '+°Tõ÷4ó r6   rž  c                   ó   • \ rS rSr\rSrg)Ú_BackendPdfi³
  r�   N)rõ   rö   r÷   rø   rž  ÚFigureCanvasrú   r�   r6   r4   r°  r°  ³
  s   † à"ƒLr6   r°  )éK   rC  )]rù   rÓ   r   r   Úenumr   Ú	functoolsr   Úior   r�   Úloggingr{   rX   r8  rÜ  rA  rs   r  rw  ÚnumpyrÊ   ÚPILr   Ú
matplotlibr_   r	   r
   r   r   r   Úmatplotlib._pylab_helpersr   Úmatplotlib.backend_basesr   r   r   r   r   Ú!matplotlib.backends.backend_mixedr   Úmatplotlib.figurer   Úmatplotlib.font_managerr   r   r   r�  Úmatplotlib._afmr   Úmatplotlib.ft2fontr   r   r   r   Úmatplotlib.transformsr   r   Úmatplotlib.pathr    Úmatplotlib.datesr!   r"   rÕ  r$   Ú	getLoggerrõ   r†  r5   rm   ry   rŠ   r¦   r¸   r@   Ú	maketransrØ   r¿   rá   rM   r  r%  rh  r¨  rª  ÚRendererPDFPSBaserƒ  r%  rt  rž  ÚFigureManagerPdfÚexportr°  r�   r6   r4   Ú<module>rÉ     sž  ðñó Ý Ý Ý Ý $Ý Û Û Û Û 	Û Û Û 
Û Û Û ã Ý ã ß FÕ FÝ )÷õ õ @Ý $ß SÑ SÝ ß HÓ Hß 4Ý  Ý  Ý Ý à×Ò˜Ó"€ôdò,Tònô0,ô"*ô0ð4 �}‰}Ø
�u 5°¸UñDó E€òF#÷Rñ ð. ÷ ð  ó ð ÷Bñ ôB#ˆô B#÷JZ$ñ Z$òz÷0`Cñ `CôF'u-�/×3Ñ3ô u-ôpJÐ,ô J÷Zn<ñ n<ôb%Ð&ô %ðP %Ð ð 
‡�ô#�(ó #ó ñ#r6   