+
    5i7h                       R t ^ RIt^ RIt^ RIHtHt ^ RIHtHt ^ RI	H
t
 ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^R	IHtHt ^R
IHtHt ^RIHt ^RIHtHtH t H!t! ^RI"H#t# ^RI$H%t% ^RI&H't'H(t(H)t) ^RI*H+t+ ^RI,H-t- ^RI.H/t/H0t0H1t1 ^RI2H3t3H4t4H5t5H6t6 ^RI7H8t8H9t9 ^RI:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtCHDtEHFtGHHtI ^RIJHKtKHLtL  ^ RIMHNtN ^ RIPHQtQHRtRHStSHTtTHUtUHVtVHWtWHXtXHYtY ]Q'       d1   ^RIHZtZH[t[ ^RI\H]t]H^t^ ^RIH_t_H`t` ^RI&Hata ^RIbHctc ^RIdHete ^RIfHgtg ]P                  ! ]i4      tjR R_R!R`R"Ra/tk ! R# R$]4      tl ! R% R&]l4      tm ! R' R(]@4      tn ! R) R*]@4      to ! R+ R,]@4      tp ! R- R.]@4      tq ! R/ R04      tr ! R1 R2]@4      ts ! R3 R4]@4      tt ! R5 R6]>4      tu ! R7 R8]>4      tv ! R9 R:]>4      tw ! R; R<]>4      tx ! R= R>4      ty ! R? R@]@4      tz ! RA RB]@4      t{ ! RC RD]@4      t| ! RE RF]l4      t} ! RG RH4      t~]X]]]<RIRJRKRL3,          t ! RM RN4      t ! RO RP4      tRbRQ RR lltRS RT ltRU RV ltRW RX ltRcRY RZ lltR[ R\ ltR] R^ ltR#   ]O d    RtN ELi ; i)dai  
This module contains the serialization logic that produces a PDF document from a FPDF instance.
Most of the code in this module is used when FPDF.output() is called.

The contents of this module are internal to fpdf2, and not part of the public API.
They may change at any time without prior warning or any deprecation period,
in non-backward-compatible ways.
N)ABCabstractmethod)OrderedDictdefaultdict)contextmanager)datetimetimezone)escape)BytesIO)subsetAnnotationDictPDFAnnotation)ImageSoftMaskPaintSoftMask)	Transform)OutputIntentSubTypePageLabelStylePDFResourceTypeSignatureFlag)FPDFException)	Type3Font)
CORE_FONTSCoreFontTTFFont)RasterImageInfoTotalPagesSubstitutionFragment)OutlineDictionaryOutlineItemDictionarybuild_outline_objs)GradientMeshShadingPatternShading)	Signaturesign_content)DestinationXYZNamePDFArrayPDFContentStreamPDFDate	PDFObject	PDFStringRawbuild_obj_dictcreate_dictionary_stringcreate_list_stringiobj_ref)	int2romanint_to_letters)signer)	TYPE_CHECKINGAny	ItemsViewIteratorLiteralOptionalSequenceUnioncast)
BlendGroupGraphicsStyle)EncryptionDictionaryStandardSecurityHandler)
PageLayoutPageMode)PDFFontDescriptor)FPDF)ViewerPreferences)
Transitionfullpage	fullwidthrealc                   @   a  ] tR t^Yt o ]RV 3R lR ll4       tRtV tR# )ContentWithoutIDNc                4   < V ^8  d   QhRS[ R,          RS[/#    _security_handlerrB   returnr;   str)format__classdict__s   "Q/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/fpdf/output.py__annotate__ContentWithoutID.__annotate__\   s#     " "!)*C!D"	"    c                    \         hN)NotImplementedErrorselfrQ   s   &&rW   	serializeContentWithoutID.serialize[   s
     "!rZ    r\   )__name__
__module____qualname____firstlineno__r   r`   __static_attributes____classdictcell__rV   s   @rW   rM   rM   Y   s     " " "rZ   rM   c                   L   a  ] tR t^bt o RtV 3R lR ltRV 3R lR lltRtV tR# )		PDFHeaderu  
Emit the PDF file header as required by ISO 32000-1, §7.5.2 “File header”.

The header consists of:
  1) A line starting with the literal "%PDF-" followed by the file version
  2) If the file contains binary data an immediate second line that is a comment
     starting with "%" and containing at least four bytes with values ≥ 128 (non-ASCII).
     This helps file-transfer tools treat the content as binary rather than text.
c                $   < V ^8  d   QhRS[ RR/# )rP   pdf_versionrR   NrT   )rU   rV   s   "rW   rX   PDFHeader.__annotate__m   s     ' 'C 'D 'rZ   c                    Wn         R # r\   rm   )r_   rm   s   &&rW   __init__PDFHeader.__init__m   s    &rZ   Nc                4   < V ^8  d   QhRS[ R,          RS[/# rO   rS   )rU   rV   s   "rW   rX   ro   p   s#     5 5!)*C!D5	5rZ   c                "    R V P                    R2# )z%PDF-u
   
%éëñ¿rq   r^   s   &&rW   r`   PDFHeader.serializep   s     t''(44rZ   rq   r\   	rc   rd   re   rf   __doc__rr   r`   rg   rh   ri   s   @rW   rk   rk   b   s#     ' '5 5 5rZ   rk   c                   B   a a ] tR t^vt oRV3R lV 3R llltRtVtV ;t# )PDFFontc                l   < V ^8  d   QhRS[ RS[ RS[S[ ,          RS[S[,          RS[S[ ,          RR/# )rP   subtype	base_fontencodingd_wwrR   N)rT   r;   float)rU   rV   s   "rW   rX   PDFFont.__annotate__w   s[     C CC C 3-	C
 e_C C=C 
CrZ   c                  < \         SV `  4        \        R 4      V n        \        V4      V n        \        V4      V n        V'       d   \        V4      MRV n        W@n        WPn        RV n	        RV n
        RV n        RV n        RV n        R# )FontN)superrr   r(   typer|   r}   r~   r   r   descendant_fonts
to_unicodec_i_d_system_infofont_descriptorc_i_d_to_g_i_d_map)r_   r|   r}   r~   r   r   	__class__s   &&&&&&rW   rr   PDFFont.__init__w   sq     	L	G}i*2X486::>>B>BrZ   )r}   r   r   r   r   r~   r   r|   r   r   r   )NNNrc   rd   re   rf   rr   rg   rh   __classcell__r   rV   s   @@rW   rz   rz   v   s     C C CrZ   rz   c                   >   a a ] tR t^t oV3R lV 3R lltRtVtV ;t# )CIDSystemInfoc                   < V ^8  d   QhRR/# rP   rR   Nrb   )rU   rV   s   "rW   rX   CIDSystemInfo.__annotate__   s      $ rZ   c                z   < \         SV `  4        \        R RR7      V n        \        RRR7      V n        ^ V n        R# )AdobeTencryptUCSN)r   rr   r-   registryordering
supplement)r_   r   s   &rW   rr   CIDSystemInfo.__init__   s1    !'48!%6rZ   )r   r   r   r   r   s   @@rW   r   r      s       rZ   r   c                      a a ] tR t^t oV3R lV 3R llt]V3R lR l4       t]V3R lR l4       t]V3R lR l4       tV3R	 lR
 lt	V3R lR lt
RtVtV ;t# )PDFType3Fontc                "   < V ^8  d   QhRRRR/# )rP   font3r   rR   Nrb   )rU   rV   s   "rW   rX   PDFType3Font.__annotate__   s     . .k .d .rZ   c           	       < \         SV `  4        Wn        \        R 4      V n        \        RVP
                  P                   24      V n        \        R4      V n        RV P                  P
                  P                  R,          P                  V P                  P                  ,          R RV P                  P
                  P                  R,          P                  V P                  P                  ,          R RV P                  P
                  P                  R,          P                  V P                  P                  ,          R RV P                  P
                  P                  R,          P                  V P                  P                  ,          R R2	V n        RV n        \!        R	 VP"                   4       4      V n        \'        R
 VP"                   4       4      V n        RV n        RV n        R# )r   MPDFAA+Type3[headz.0f ]z[0.001 0 0 0.001 0 0]c              3   8   "   T F  qP                   x  K  	  R # 5ir\   unicode.0gs   & rW   	<genexpr>(PDFType3Font.__init__.<locals>.<genexpr>   s     >Aii   c              3   8   "   T F  qP                   x  K  	  R # 5ir\   r   r   s   & rW   r   r      s     =1YYr   N)r   rr   _font3r(   r   r}   namer|   ttfontxMinscaleyMinxMaxyMax
font_b_boxfont_matrixminglyphs
first_charmax	last_char	resourcesr   )r_   r   r   s   &&rW   rr   PDFType3Font.__init__   sk   L	75??#7#7"89:	G}%%,,V499DKK<M<MMcR%%,,V499DKK<M<MMcR%%,,V499DKK<M<MMcR%%,,V499DKK<M<MMcRRSU 	 3>>>===(,)-rZ   c                    < V ^8  d   QhRS[ /# rP   rR   rn   )rU   rV   s   "rW   rX   r      s     
 
C 
rZ   c                    \        V P                  P                   Uu/ uF   pR VP                   2VP                   R2bK"  	  up4      # u upi )/ 0 R)pdf_dictr   r   
glyph_nameobj_id)r_   r   s   & rW   
char_procsPDFType3Font.char_procs   sK    <@KK<N<NO<NqqAHH:T!22<NO
 	
Os   &Ac                    < V ^8  d   QhRS[ /# r   rn   )rU   rV   s   "rW   rX   r      s     
 
# 
rZ   c                r    \        \        R 4      \        R4      \        R4      V P                  4       /4      # )/Typez	/Encodingz/Differences)r   r(   differences_tabler_   s   &rW   r~   PDFType3Font.encoding   s5    WtK0^$d&<&<&>
 	
rZ   c                    < V ^8  d   QhRS[ /# r   rn   )rU   rV   s   "rW   rX   r      s     F F FrZ   c                   \        V P                  P                  R  R7      pV^ ,          P                  pVR,          P                  p^ .V^,           V,
          ,          pV FM  p\	        VP
                  V P                  P                  ,          R,           4      WEP                  V,
          &   KO  	  \        V Uu. uF  p\        V4      NK  	  up4      # u upi )c                     V P                   # r\   r   glyphs   &rW   <lambda>%PDFType3Font.widths.<locals>.<lambda>       U]]rZ   keygMbP?)	sortedr   r   r   roundglyph_widthr   pdf_listrT   )r_   sorted_glyphsmin_unicodemax_unicodewidthsr   r   s   &      rW   r   PDFType3Font.widths   s    t{{117RS#A&..#B'// a+56 #E27!!DKK$5$55=3F==;./ # VDVk[)VDEEDs   =Cc                l   < V ^8  d   QhRS[ S[R3,          RS[ S[R3,          RS[ S[R3,          RR/# )	rP   img_objs_per_index
PDFXObjectgfxstate_objs_per_namePDFExtGStatepattern_objs_per_namer#   rR   NdictintrT   )rU   rV   s   "rW   rX   r      sP     # # l!23# !%S.%8 9#  $CN3	#
 
#rZ   c                  a a R pRP                  V3R lS P                  P                   4       4      pT\        V4      ^ 8  d   RV R2MR,          pRP                  V 3R lVP	                  4        4       4      pT\        V4      ^ 8  d   RV R2MR,          pRP                  V 3R lVP	                  4        4       4      pT\        V4      ^ 8  d   R	V R2MR,          pVR,          pVS n        R
# )<<r   c              3   X   <"   T F  pR V RSV,          P                    R2x  K!  	  R# 5i)/Ir   r   N)id)r   imgr   s   & rW   r   2PDFType3Font.generate_resources.<locals>.<genexpr>   s4      
. Q)#.112$7.s   '*z/XObject <<>> c              3      <"   T F7  w  rVSP                   P                  9   g   K"  R V RVP                   R2x  K9  	  R# 5ir   r   r   N)r   graphics_style_usedr   )r   r   gfxstate_objr_   s   &  rW   r   r      sC      
&D"t{{666 -avQ|'t,&D
   AAz/ExtGState <<c              3      <"   T F7  w  rVSP                   P                  9   g   K"  R V RVP                   R2x  K9  	  R# 5ir   )r   patterns_usedr   )r   r   patternr_   s   &  rW   r   r      sA      
!>t{{000 (avQwzzl$'!>r   z/Pattern <<N)joinr   images_usedlenitemsr   )r_   r   r   r   r   objectsext_g_stater  s   ff&&    rW   generate_resourcesPDFType3Font.generate_resources   s     	(( 
{{..
 
 	#g,2B{7)2.J	hh 
&<&B&B&D
 

 	K8H18L}[M4RTT	(( 
!6!<!<!>
 

 	#g,2B{7)2.J	T	"rZ   c                    < V ^8  d   QhRS[ /# r   rn   )rU   rV   s   "rW   rX   r      s     
 
3 
rZ   c                    \        V P                  P                  R  R7      pRRP                  R V 4       4      ,           R,           # )c                     V P                   # r\   r   r   s   &rW   r   0PDFType3Font.differences_table.<locals>.<lambda>   r   rZ   r   r   
c              3   V   "   T F  qP                    R VP                   2x  K!  	  R# 5i)z /N)r   r   )r   r   s   & rW   r   1PDFType3Font.differences_table.<locals>.<genexpr>   s'      DQ5==/E$4$4#56Ms   ')r   )r   r   r   r  )r_   r   s   & rW   r   PDFType3Font.differences_table   sI    t{{117RSii DQ  		
rZ   )
r   r   r   r   r   r   r   r|   r   r   )rc   rd   re   rf   rr   propertyr   r~   r   r
  r   rg   rh   r   r   s   @@rW   r   r      sf     . .$ 
 

 
 
 F F # #<
 
 
rZ   r   c                   >   a a ] tR t^t oV3R lV 3R lltRtVtV ;t# )PDFInfoc                   < V ^8  d   QhRS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[RR	/# )
rP   titlesubjectauthorkeywordscreatorproducercreation_daterR   N)r;   rT   r+   )rU   rV   s   "rW   rX   PDFInfo.__annotate__   ss     + +}+ #+ 	+
 3-+ #+ 3-+ + 
+rZ   c                  < \         SV `  4        V'       d   \        VR R7      MRV n        V'       d   \        VR R7      MRV n        V'       d:   \        V\        \        \        34      '       d   RP                  R V 4       4      pV'       d   \        VR R7      MRV n
        V'       d:   \        V\        \        \        34      '       d   RP                  R V 4       4      pV'       d   \        VR R7      MRV n        V'       d   \        VR R7      MRV n        V'       d   \        VR R7      MRV n        Wpn        R# )Tr   Nz; c              3   8   "   T F  p\        V4      x  K  	  R # 5ir\   rn   )r   as   & rW   r   #PDFInfo.__init__.<locals>.<genexpr>   s     6v!s1vvvr   , c              3   8   "   T F  p\        V4      x  K  	  R # 5ir\   rn   )r   keywords   & rW   r   r#    s      FX'WXr   )r   rr   r-   r  r  
isinstancelisttuplesetr  r  r  r  r  r  )	r_   r  r  r  r  r  r  r  r   s	   &&&&&&&&rW   rr   PDFInfo.__init__   s     	7<Yud3$
;By$7j$s);<<YY6v66F9?i5T
8dE3-?@@yy FX FFH=E	(D94;By$7=E	(D94*rZ   )r  r  r  r  r  r  r  r   r   s   @@rW   r  r     s     + + +rZ   r  c                   H   a  ] tR tRt o V 3R lR ltRV 3R lR lltRtV tR# )	AcroFormi
  c                &   < V ^8  d   QhRS[ RS[/# )rP   fields	sig_flags)r)   r   )rU   rV   s   "rW   rX   AcroForm.__annotate__  s     # #x #C #rZ   c                    Wn         W n        R # r\   r/  r0  )r_   r/  r0  s   &&&rW   rr   AcroForm.__init__  s    "rZ   Nc                J   < V ^8  d   QhRS[ R,          RS[ S[,          RS[/# rP   rQ   rB   _obj_idrR   r;   r   rT   )rU   rV   s   "rW   rX   r1    s3     
2 
2#$=>
2 #
2 
	
2rZ   c           
         \        \        V 4       Uu/ uF  q3\        W4      bK  	  upVVR 7      p\        VRR7      # u upi )rQ   r7  r   
field_joinr/   dirgetattrr   r_   rQ   r7  r   obj_dicts   &&&  rW   r`   AcroForm.serialize  sF    
 "03D	:	'$$$	:/

 S11	 ;s   >r3  NN)rc   rd   re   rf   rr   r`   rg   rh   ri   s   @rW   r-  r-  
  s     # #
2 
2 
2rZ   r-  c                   B   a a ] tR tRt oRV3R lV 3R llltRtVtV ;t# )
PDFCatalogi  c          
      p   < V ^8  d   QhRS[ S[,          RS[ R,          RS[ R,          RS[ R,          RR	/# )
rP   langpage_layoutrC   	page_moderD   viewer_preferencesrG   rR   NrS   )rU   rV   s   "rW   rX   PDFCatalog.__annotate__  sQ     / /sm/ l+/ J'	/
 %%89/ 
/rZ   c                6  < \         SV `  4        \        R 4      V n        V'       d   \	        V4      MRV n        W n        W0n        W@n        RV n	        RV n
        RV n        RV n        RV n        RV n        RV n        RV n        RV n        RV n        RV n        R# )CatalogN)r   rr   r(   r   r-   rG  rH  rI  rJ  pages	acro_formopen_action	mark_infometadatanamesoutlinesoutput_intentsstruct_tree_roota_fpage_labels)r_   rG  rH  rI  rJ  r   s   &&&&&rW   rr   PDFCatalog.__init__  s     	O	'+IdO	&""4 	
 .2*.(,26$(
592659"&*.rZ   )rW  rO  rG  rQ  rR  rS  rP  rT  rU  rX  rH  rI  rN  rV  r   rJ  NNNNr   r   s   @@rW   rE  rE    s     / / /rZ   rE  c                   >   a a ] tR tRt oV3R lV 3R lltRtVtV ;t# )PDFResourcesi9  c                   < V ^8  d   QhRS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RR/# )	rP   proc_setfontx_objectr	  shadingr  rR   NrS   )rU   rV   s   "rW   rX   PDFResources.__annotate__:  si      3- sm 3-	
 c] # # 
rZ   c                l   < \         SV `  4        Wn        W n        W0n        W@n        WPn        W`n        R # r\   )r   rr   r^  r_  r`  r	  ra  r  )r_   r^  r_  r`  r	  ra  r  r   s   &&&&&&&rW   rr   PDFResources.__init__:  s/     	 	 &rZ   )r	  r_  r  r^  ra  r`  r   r   s   @@rW   r\  r\  9  s       rZ   r\  c                   >   a a ] tR tRt oV3R lV 3R lltRtVtV ;t# )PDFFontStreamiL  c                $   < V ^8  d   QhRS[ RR/# rP   contentsrR   N)bytes)rU   rV   s   "rW   rX   PDFFontStream.__annotate__M  s     % % %4 %rZ   c                J   < \         SV `  VR R7       \        V4      V n        R# Tri  compressN)r   rr   r  length1r_   ri  r   s   &&rW   rr   PDFFontStream.__init__M  s     (T:8}rZ   )rp  r   r   s   @@rW   rf  rf  L  s     % % %rZ   rf  c                   >   a a ] tR tRt oV3R lV 3R lltRtVtV ;t# )PDFXmpMetadataiR  c                $   < V ^8  d   QhRS[ RR/# rh  rn   )rU   rV   s   "rW   rX   PDFXmpMetadata.__annotate__S  s     # # # #rZ   c                   < \         SV `  VP                  R 4      R7       \        R4      V n        \        R4      V n        R# )zutf-8ri  MetadataXMLN)r   rr   encoder(   r   r|   rq  s   &&rW   rr   PDFXmpMetadata.__init__S  s3    (//'":;$	E{rZ   )r|   r   r   r   s   @@rW   rt  rt  R  s     # # #rZ   rt  c                   F   a a ] tR tRt oRtRV3R lV 3R llltRtVtV ;t# )r   iY  c                   < V ^8  d   QhRS[ RS[RS[RS[RS[S[,          R,          RS[RS[S[,          R	S[S[,          R
S[S[,          RS[RR/# )rP   ri  r|   widthheightcolor_spaceNbits_per_component
img_filterdecodedecode_parms
image_maskrR   )rj  rT   r   r)   r(   r   r;   bool)rU   rV   s   "rW   rX   PDFXObject.__annotate__k  s     7 77 7 	7
 7 _t+7  7 SM7 7 sm7 7 
7rZ   c                  < \         SV `  VR 7       \        R4      V n        \        V4      V n        W0n        W@n        WPn        W`n        \        V4      V n	        Wn
        Wn        RV n        V
'       d
   RV n        R# RV n        R# )rx  XObjectNT)r   rr   r(   r   r|   r  r  r  r  filterr  r  s_maskr  )r_   ri  r|   r  r  r  r  r  r  r  r  r   s   &&&&&&&&&&&rW   rr   PDFXObject.__init__k  sn     	(+O	G}
&"4:&(,0",$$rZ   )r  r  r  r  r  r  r  r  r|   r   r  )_id	_contentsr  lengthr   r|   r  r  r  r  r  r  r  r  )NNNF)	rc   rd   re   rf   	__slots__rr   rg   rh   r   r   s   @@rW   r   r   Y  s     I"7 7 7rZ   r   c                   F   a a ] tR tRt oRtRtV3R lV 3R lltRtVtV ;t	# )PDFICCProfilei  z
Holds values for ICC Profile Stream
Args:
    contents (str): stream content
    n (int): [1|3|4], # the numbers for colors 1=Gray, 3=RGB, 4=CMYK
    alternate (str): ['DeviceGray'|'DeviceRGB'|'DeviceCMYK']
c                ,   < V ^8  d   QhRS[ RS[RS[/# )rP   ri  n	alternate)rj  r   rT   )rU   rV   s   "rW   rX   PDFICCProfile.__annotate__  s)     ) )) ) 	)rZ   c                V   < \         SV `  VR R7       W n        \        V4      V n        R# rm  )r   rr   r  r(   r  )r_   ri  r  r  r   s   &&&&rW   rr   PDFICCProfile.__init__  s'     	(T:irZ   )r  r  )r  r  r  r  r  r  )
rc   rd   re   rf   rx   r  rr   rg   rh   r   r   s   @@rW   r  r    s      I) ) )rZ   r  c                      a  ] tR tRt o RtRtV 3R lR lt]V 3R lR l4       t]V 3R lR l4       t	V 3R	 lR
 lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )PDFPageLabeli  z?
This will be displayed by some PDF readers to identify pages.
c                `   < V ^8  d   QhRS[ S[,          RS[ S[,          RS[ S[,          RR/# )rP   label_stylelabel_prefixlabel_startrR   N)r;   r   rT   r   )rU   rV   s   "rW   rX   PDFPageLabel.__annotate__  s@     - -n-- sm- c]	-
 
-rZ   c                *    Wn         W n        W0n        R # r\   _style_prefixst)r_   r  r  r  s   &&&&rW   rr   PDFPageLabel.__init__  s     1<&2!,rZ   c                0   < V ^8  d   QhRS[ S[,          /# r   r;   r(   )rU   rV   s   "rW   rX   r    s     @ @8D> @rZ   c                h    V P                   '       d    \        V P                   P                  4      # R # r\   )r  r(   valuer   s   &rW   sPDFPageLabel.s  s$    *.+++tDKK%%&?4?rZ   c                0   < V ^8  d   QhRS[ S[,          /# r   )r;   r-   )rU   rV   s   "rW   rX   r    s     A A8I& ArZ   c                T    V P                   '       d   \        V P                   4      # R # r\   )r  r-   r   s   &rW   pPDFPageLabel.p  s    *.,,,y&@D@rZ   c                    < V ^8  d   QhRS[ /# r   rn   )rU   rV   s   "rW   rX   r    s     I I# IrZ   c                V    R V P                    RV P                   RV P                   R2# )zPDFPageLabel(r$  )r  r   s   &rW   __repr__PDFPageLabel.__repr__  s)    t{{m2dll^2dggYaHHrZ   c                    < V ^8  d   QhRS[ /# r   rn   )rU   rV   s   "rW   rX   r    s       rZ   c                v   V P                   '       d   V P                   MR pV P                  '       Ed   V P                  \        P                  8X  d   V\	        V P
                  4      ,          pV# V P                  \        P                  8X  d)   T\        V P
                  ;'       g    ^4      ,          pV# V P                  \        P                  8X  d7   T\        V P
                  ;'       g    ^4      P                  4       ,          pV# V P                  \        P                  8X  d2   V P
                  ;'       g    ^^,
          pV\        V4      ,          pV# V P                  \        P                  8X  d>   V P
                  ;'       g    ^^,
          pV\        V4      P                  4       ,          pV# r   )r  r  r   NUMBERrT   r  UPPER_ROMANr3   LOWER_ROMANlowerUPPER_LETTERr4   LOWER_LETTER)r_   retstarts   &  rW   __str__PDFPageLabel.__str__  s=   "llldll;;;{{n333s477|# 
  : ::yA.. 
  : ::yA.4466 
  ; ;;A*~e,, 
  ; ;;A*~e,2244
rZ   c                6   < V ^8  d   QhRS[ S[S[3,          /# r   )r   rT   r7   )rU   rV   s   "rW   rX   r    s     N N4S> NrZ   c           
     f    \        \        V 4       Uu/ uF  q\        W4      bK  	  up4      # u upi r\   )r/   r>  r?  )r_   r   s   & rW   r`   PDFPageLabel.serialize  s+    #d)L)3GD$66)LMMLs   .c                0   < V ^8  d   QhRS[ S[,          /# r   )r;   r   )rU   rV   s   "rW   rX   r    s      8N3 rZ   c                    V P                   # r\   )r  r   s   &rW   	get_stylePDFPageLabel.get_style      {{rZ   c                    < V ^8  d   QhRS[ /# r   rn   )rU   rV   s   "rW   rX   r    s     " "C "rZ   c                .    V P                   ;'       g    R # r  )r  r   s   &rW   
get_prefixPDFPageLabel.get_prefix  s    ||!!r!rZ   c                    < V ^8  d   QhRS[ /# r   r   )rU   rV   s   "rW   rX   r    s      3 rZ   c                .    V P                   ;'       g    ^#    )r  r   s   &rW   	get_startPDFPageLabel.get_start  s    ww||!rZ   )r  r  r  Nr  )rc   rd   re   rf   rx   r  rr   r  r  r  r  r  r`   r  r  r  rg   rh   ri   s   @rW   r  r    s      ,I- - @ @ A AI I "N N " " rZ   r  c                      a a ] tR tRt oRtV3R lV 3R lltV3R lR ltV3R lR ltV3R lR	 ltV3R
 lR lt	V3R lR lt
V3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltRtVtV ;t# )PDFPagei  c                `   < V ^8  d   QhRS[ S[,          RS[ R,          RS[S[,          RS[/# )rP   duration
transitionrH   ri  index)r;   r   	bytearrayr*   r   )rU   rV   s   "rW   rX   PDFPage.__annotate__  sH     U U5/U \*U ..	U
 UrZ   c                &  < \         SV `  4        \        R 4      V n        W0n        V'       d   TMRV n        W n        \        4       V n        RV n	        RV n
        RV n        RV n        RV n        W@n        RV n        RV n        RV n        . V n        R# )PageN)r   rr   r(   r   ri  durtransr)   annotsgroup	media_boxstruct_parentsr   parent_index	_width_pt
_height_pt_page_label_text_substitution_fragments)r_   r  r  ri  r  r   s   &&&&&rW   rr   PDFPage.__init__  s     	L	 '8T
*2*$(
(,-1 	  	 *.+/37RT)rZ   c                    < V ^8  d   QhRS[ /# r   r  )rU   rV   s   "rW   rX   r    s      s rZ   c                    V P                   # r\   r  r   s   &rW   r  PDFPage.index  r  rZ   c                $   < V ^8  d   QhRS[ RR/# )rP   irR   Nr  )rU   rV   s   "rW   rX   r    s      3 4 rZ   c                    Wn         R # r\   r  )r_   r  s   &&rW   	set_indexPDFPage.set_index  s    rZ   c                6   < V ^8  d   QhRS[ S[S[3,          /# r   )r)  r   )rU   rV   s   "rW   rX   r    s     / /E%,/ /rZ   c                    V P                   e   V P                  f   \        R4      hV P                   V P                  3# )zGReturn a pair (width, height) in the unit specified to FPDF constructorzPage dimensions are null)r  r  
ValueErrorr   s   &rW   
dimensionsPDFPage.dimensions  s4    >>!T__%<788~~t..rZ   c                *   < V ^8  d   QhRS[ RS[ RR/# )rP   width_pt	height_ptrR   N)r   )rU   rV   s   "rW   rX   r    s"     > >u > >4 >rZ   c                "    WuV n         V n        R# )zHAccepts a pair (width, height) in the unit specified to FPDF constructorN)r  r  )r_   r  r  s   &&&rW   set_dimensionsPDFPage.set_dimensions  s    *2'rZ   c                J   < V ^8  d   QhRS[ S[,          RS[ S[,          RR/# )rP   previous_page_label
page_labelrR   Nr;   r  )rU   rV   s   "rW   rX   r    s3     & &%l3& \*& 
	&rZ   c                   V'       d}   V'       du   VP                  4       VP                  4       8X  dR   VP                  4       VP                  4       8X  d/   VP                  '       g   VP                  4       ^,           Vn        V'       d'   VP                  e   VP                  ^ 8X  d   ^Vn        V'       dG   V'       g?   \	        VP                  4       VP                  4       VP                  4       ^,           4      pW n        R# r  N)r  r  r  r  r  r  )r_   r  r  s   &&&rW   set_page_labelPDFPage.set_page_label  s      $$&*=*G*G*II%%'+>+I+I+KKMMM/99;a?JM}}$
(: !
z%#--/#..0#--/!3J &rZ   c                0   < V ^8  d   QhRS[ S[,          /# r   r  )rU   rV   s   "rW   rX   r  9  s         6  rZ   c                    V P                   # r\   )r  r   s   &rW   get_page_labelPDFPage.get_page_label9  s    rZ   c                    < V ^8  d   QhRS[ /# r   rn   )rU   rV   s   "rW   rX   r  <  s     T T3 TrZ   c                    V P                   '       g   \        V P                  4       4      # \        V P                   4      # r\   )r  rT   r  r   s   &rW   	get_labelPDFPage.get_label<  s.    (,(8(8(8s4::< Sc$BRBR>SSrZ   c                0   < V ^8  d   QhRS[ S[,          /# r   )r<   r   )rU   rV   s   "rW   rX   r  ?  s     1 11O(P 1rZ   c                    V P                   # r\   )r  r   s   &rW   get_text_substitutionsPDFPage.get_text_substitutions?  s    000rZ   c                $   < V ^8  d   QhRS[ RR/# )rP   fragmentrR   Nr   )rU   rV   s   "rW   rX   r  B  s     ; ;.L ;QU ;rZ   c                <    V P                   P                  V4       R # r\   )r  append)r_   r  s   &&rW   add_text_substitutionPDFPage.add_text_substitutionB  s    ))00:rZ   c                4   < V ^8  d   QhRS[ S[,          RR/# )rP   
annotationrR   Nr   )rU   rV   s   "rW   rX   r  E  s      ' '-)G 'D 'rZ   c                v    V P                   f   \        4       V n         V P                   P                  V4       R # r\   )r  r)   r  )r_   r  s   &&rW   add_annotationPDFPage.add_annotationE  s'    ;;"*DK:&rZ   )r  r  r  r  r  r  ri  r  r  r  r  r   r  r  r   )r  r   ri  r  r  r  r  r  r  r   r  r  r  r  r  r  )rc   rd   re   rf   r  rr   r  r  r  r  r  r  r  r  r  r  rg   rh   r   r   s   @@rW   r  r    s     I&U U:  / /> >& &6   T T1 1; ;' ' 'rZ   r  c                   >   a a ] tR tRt oV3R lV 3R lltRtVtV ;t# )PDFPagesRootiK  c                *   < V ^8  d   QhRS[ RS[RR/# )rP   countr  rR   Nr   rT   )rU   rV   s   "rW   rX   PDFPagesRoot.__annotate__L  s"     
 
c 
c 
d 
rZ   c                j   < \         SV `  4        \        R 4      V n        Wn        W n        RV n        R# )PagesN)r   rr   r(   r   r#  r  kids)r_   r#  r  r   s   &&&rW   rr   PDFPagesRoot.__init__L  s-    M	
" 		rZ   )r#  r(  r  r   r   r   s   @@rW   r!  r!  K  s     
 
 
rZ   r!  c                   T   a a ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )r   iV  c                $   < V ^8  d   QhRS[ RR/# )rP   dict_as_strrR   Nrn   )rU   rV   s   "rW   rX   PDFExtGState.__annotate__W  s     ( (C (D (rZ   c                0   < \         SV `  4        Wn        R # r\   )r   rr   _dict_as_str)r_   r,  r   s   &&rW   rr   PDFExtGState.__init__W  s    'rZ   c                `   < V ^8  d   QhRS[ S[S[S[3,          ,          RS[ R,          RS[/# )rP   rA  rQ   rB   rR   )r;   r   rT   r7   )rU   rV   s   "rW   rX   r-  \  s<     ? ?4S>*? $$=>? 
	?rZ   c                :    V P                    R V P                   R2# )z 0 obj
z
endobj)r   r/  )r_   rA  rQ   s   &&&rW   r`   PDFExtGState.serialize\  s"    
 ''(4#4#4"5X>>rZ   )r/  rC  )	rc   rd   re   rf   rr   r`   rg   rh   r   r   s   @@rW   r   r   V  s     ( (
? ? ?rZ   r   c                   L   a  ] tR tRt o RtV 3R lR ltR	V 3R lR lltRtV tR# )
PDFXrefAndTrailerid  z$Cross-reference table & file trailerc                "   < V ^8  d   QhRRRR/# )rP   output_builderOutputProducerrR   Nrb   )rU   rV   s   "rW   rX   PDFXrefAndTrailer.__annotate__g  s      E E'7 ED ErZ   c                l    Wn         VP                  ^,           V n        RV n        RV n        RV n        R# r  )r7  r   r#  catalog_objinfo_objencryption_obj)r_   r7  s   &&rW   rr   PDFXrefAndTrailer.__init__g  s1    ,#**Q.
15+/@DrZ   Nc                4   < V ^8  d   QhRS[ R,          RS[/# rO   rS   )rU   rV   s   "rW   rX   r9  o  s#     " "!)*C!D"	"rZ   c                &   V P                   f   \        R4      hV P                  p\        \	        VP
                  4      4      p. pVP                  R4       VP                  RV P                   24       VP                  R4       \        ^V P                  4       F)  pVP                  VP                  V,          R R24       K+  	  VP                  R4       VP                  R4       VP                  R	V P                   24       VP                  R
\        V P                   P                  4       24       V P                  '       d2   VP                  R\        V P                  P                  4       24       VP                  pV P                  '       dY   VP                  R\        V P                  P                  4       24       VP                  f   Q hVP                  P                   pM2VP!                  4       pVR8X  d   VP#                  VP
                  4      pVe   VP                  RV R24       VP                  R4       VP                  R4       VP                  V4       VP                  R4       RP%                  V4      # )Nz"Invalid state for XREF production.xrefz0 z0000000000 65535 f 010z	 00000 n trailerr   z/Size z/Root z/Info z	/Encrypt z/ID [r   r   	startxrefz%%EOFr  r   )r;  r   r7  rT   r  bufferr  r#  rangeoffsetspdf_refr   r<  fpdfr=  rQ   file_id_default_file_idr  )r_   rQ   builderrD  outr   rI  rJ  s   &&      rW   r`   PDFXrefAndTrailer.serializeo  s    # DEE%%GNN+,	

6

R

|$%

()Atzz*FJJ'//&1#6i@A +

9

4

VDJJ<()

VGD$4$4$7$789:;===JJ(8(8 9:;<||JJ74+>+>+A+A#B"CDE))555373I3I3Q3QGllnG"}//?JJwiq)*

4

;

9

7yy~rZ   )r;  r#  r=  r<  r7  r\   rw   ri   s   @rW   r5  r5  d  s#     *E E" " "rZ   r5  c                   T   a  ] tR tRt o RtR	tR
V 3R lR lltRV 3R lR lltRtV t	R# )OutputIntentDictionaryi  ar  
The optional OutputIntents (PDF 1.4) entry in the document
catalog dictionary holds an array of output intent dictionaries,
each describing the colour reproduction characteristics of a possible
output device.

Args:
    subtype (OutputIntentSubType, required): PDFA, PDFX or ISOPDF
    output_condition_identifier (str, required): see the Name in
        https://www.color.org/registry.xalter
    output_condition (str, optional): see the Definition in
        https://www.color.org/registry.xalter
    registry_name (str, optional): "https://www.color.org"
    dest_output_profile (PDFICCProfile, required/optional):
        PDFICCProfile | None # (required if
        output_condition_identifier does not specify a standard
        production condition; optional otherwise)
    info (str, required/optional see dest_output_profile): human
        readable description of profile
Nc                   < V ^8  d   QhRRRS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RS[ S[,          RR	/# )
rP   r|   zOutputIntentSubType | stroutput_condition_identifieroutput_conditionregistry_namedest_output_profileinforR   N)r;   rT   r  )rU   rV   s   "rW   rX   #OutputIntentDictionary.__annotate__  sf     6 6,6 &.c]6 #3-	6
  }6 &m46 sm6 
6rZ   c                   \        R 4      V n        \        \        P                  ! V4      P                  4      V n        V'       d   \        V4      MRV n        V'       d   \        V4      MRV n        V'       d   \        V4      MRV n	        V'       d   \        V\        4      '       d   TMRV n        V'       d   \        V4      V n        R# RV n        R# )OutputIntentN)r(   r   r   coercer  r  r-   rR  rS  rT  r'  r  rU  rV  )r_   r|   rR  rS  rT  rU  rV  s   &&&&&&&rW   rr   OutputIntentDictionary.__init__  s     (	)009??@ + 12 	( ,<I&' 	 :GY}5D #z2E}'U'U   	 
 (,IdO		rZ   c                J   < V ^8  d   QhRS[ R,          RS[ S[,          RS[/# r6  r8  )rU   rV   s   "rW   rX   rW    s3     
" 
"#$=>
" #
" 
	
"rZ   c           
         \        \        V 4       Uu/ uF  q3\        W4      bK  	  upVVR 7      p\        V4      # u upi )r:  r=  r@  s   &&&  rW   r`    OutputIntentDictionary.serialize  sD    
 "03D	:	'$$$	:/

 !!	 ;s   <)rU  rV  rS  rR  rT  r  r   )r   r  rR  rS  rT  rU  rV  rZ  rC  )
rc   rd   re   rf   rx   r  rr   r`   rg   rh   ri   s   @rW   rP  rP    s*     *I6 66
" 
" 
"rZ   rP  r!   r#   r$   r"   c                     a  ] tR tRt o Rt]P                  ! R4      t]P                  ! R4      t]P                  ! R4      t	]P                  ! R4      t
]P                  ! R4      tV 3R lR	 ltV 3R
 lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR lt]V 3R lR l4       tR"V 3R lR lltR tV tR!# )#ResourceCatalogi  zKManage the indexing of resources and association to the pages they are usedz/(GS\d+) gsz
/I(\d+) Doz/(P\d+)\s+scnz/(P\d+)\s+SCNz!/F(\d+)\s+[-+]?\d+(?:\.\d+)?\s+Tfc                   < V ^8  d   QhRR/# r   rb   )rU   rV   s   "rW   rX   ResourceCatalog.__annotate__  s     ) )$ )rZ   c                    \        \        4      V n        \        \        4      V n        \        4       V n        . V n        . V n        ^ V n	        / V n
        ^V n        R# )    N)r   r   r   r*  resources_per_pager   graphics_stylessoft_mask_xobjectsform_xobjectslast_reserved_object_idfont_registrynext_xobject_indexr   s   &rW   rr   ResourceCatalog.__init__  sX    JUK

  	 1<:<AC,-$<>'(rZ   c          	      R   < V ^8  d   QhRS[ RS[RS[S[,          RS[S[,          /# )rP   resource_typeresourcepage_numberrR   )r   ResourceTypesr;   r   rT   )rU   rV   s   "rW   rX   rb    s;      &   c]	
 
#rZ   c                L   V\         P                  \         P                  39   d   V P                  V,          pV P	                  V4      pW$9  d   V \        V4      ^,            2WB&   Ve*   V P                  W13,          P                  WB,          4       \        WB,          4      # V\         P                  8X  d5   \        V\        4      '       d   W P                  8  d   V^,           V n        \        '       d   Vf   Q hV P                  W13,          P                  V4       R# r  )r   PATTERNSHADINGr   _get_prefixr  re  addrT   X_OBJECTr'  r   rk  r6   )r_   rn  ro  rp  r   prefixs   &&&&  rW   rv  ResourceCatalog.add  s     _44o6M6MNN~~m4H%%m4F'(.xH0A/B%C"&''(DEII& x)** _5558S))333&.lD#=*** <=AA(KrZ   c                4   < V ^8  d   QhRRRS[ S[,          /# )rP   styler@   rR   r  )rU   rV   s   "rW   rX   rb    s     / /_ /$ /rZ   c                $   VP                  4       pVf   R# \        V4      pW0P                  9  dN   \        V P	                  \
        P                  4       \        V P                  4       24      pW@P                  V&   V P                  V,          # )z
Graphics style can be added without associating to a page number right away,
like when rendering a svg image.
The method that adds image to the page will call the add method for the page association.
N)r`   rT   rf  r(   ru  r   EXT_G_STATEr  )r_   r{  
style_dict	style_strr   s   &&   rW   register_graphics_style'ResourceCatalog.register_graphics_style  s     %*OO$5

O	000##O$?$?@A#dFZFZB[A\]D /3  +##I..rZ   c                6   < V ^8  d   QhRS[ S[,          RS[/# )rP   	soft_maskrR   )r   r   r   )rU   rV   s   "rW   rX   rb  '  s       MM,I c rZ   c                    V ;P                   ^,          un         \        W4      pV P                   Vn        V P                  P	                  V4       VP                  # )z5Register a soft mask xobject and return its object id)ri  soft_mask_path_to_xobjectr   rg  r  )r_   r  xobjects   && rW   register_soft_mask"ResourceCatalog.register_soft_mask'  sH    $$)$+I<11
&&w/zzrZ   c                $   < V ^8  d   QhRRRS[ /# )rP   blend_groupr?   rR   r  )rU   rV   s   "rW   rX   rb  /  s      |  rZ   c                    \        W4      pV P                  pV ;P                  ^,          un        V P                  P                  W234       V# )zBRegister a blend group Form XObject and return its resource index.)blend_group_to_xobjectrk  rh  r  )r_   r  r  r  s   &&  rW   register_blend_form#ResourceCatalog.register_blend_form/  sD    (;''1$!!5"23rZ   c                L   < V ^8  d   QhRS[ RS[S[S[S[ 3,          ,          /# )rP   renderedrR   )rT   r*  r)  r   )rU   rV   s   "rW   rX   rb  7  s*      C Cos6J0K,L rZ   c                N   \        4       pV P                  P                  V4       F3  pVP                  \        P
                  VP                  ^4      34       K5  	  V P                  P                  V4       F3  pVP                  \        P                  VP                  ^4      34       K5  	  V P                  P                  V4       F3  pVP                  \        P                  VP                  ^4      34       K5  	  V P                  P                  V4       F3  pVP                  \        P                  VP                  ^4      34       K5  	  V P                  P                  V4       F3  pVP                  \        P                  VP                  ^4      34       K5  	  V# )z6Parse a content stream and return discovered resources)r*  GS_REGEXfinditerrv  r   r}  r  	IMG_REGEXrw  PATTERN_FILL_REGEXrs  PATTERN_STROKE_REGEX
FONT_REGEXFONT)r_   r  foundms   &&  rW   scan_streamResourceCatalog.scan_stream7  s4   25%''1AII22AGGAJ?@ 2 ((2AII//<= 3 ((11(;AII..
;< < **33H=AII..
;< > ))(3AII++QWWQZ89 4 rZ   c                *   < V ^8  d   QhRS[ RS[RR/# )rP   r  rp  rR   NrT   r   )rU   rV   s   "rW   rX   rb  L  s"     ? ?s ? ? ?rZ   c                    V P                  V4       F`  w  r4V\        P                  8X  d5   V P                  V\        P                  3,          P	                  V4       KN  V P	                  W4V4       Kb  	  R# )z
Scan a rendered content stream and register resources used on the given page.
Currently indexes:
  - ExtGState invocations: '/GSn gs'
  - Image XObjects: '/In Do'
N)r  r   rs  re  rv  )r_   r  rp  rn  ro  s   &&&  rW   index_stream_resources&ResourceCatalog.index_stream_resourcesL  sb     (,'7'7'A#M 7 77''o6M6M(NOSS +> (BrZ   c                <   < V ^8  d   QhRS[ RS[S[S[3,          /# rP   rn  rR   )r   r8   rq  rT   )rU   rV   s   "rW   rX   rb  [  s'     5 5,5	=#%	&5rZ   c                D    V P                   V,          P                  4       # r\   )r   r  )r_   rn  s   &&rW   	get_itemsResourceCatalog.get_items[  s     ~~m,2244rZ   c                <   < V ^8  d   QhRS[ RS[RS[S[,          /# )rP   rp  rn  rR   )r   r   r*  rq  )rU   rV   s   "rW   rX   rb  `  s/     E EE/>E	]	ErZ   c                *    V P                   W3,          # r\   )re  )r_   rp  rn  s   &&&rW   get_resources_per_page&ResourceCatalog.get_resources_per_page`  s     &&'CDDrZ   c                6   < V ^8  d   QhRS[ RS[S[,          /# r  )r   r*  rq  )rU   rV   s   "rW   rX   rb  e  s        CDV rZ   c                    \        4       pV P                  P                  4        F!  w  w  r4pWA8X  g   K  VP                  V4       K#  	  V# r\   )r*  re  r  update)r_   rn  unique_rtypero  s   &&    rW   get_used_resources"ResourceCatalog.get_used_resourcese  sC    %(U$($;$;$A$A$C JQ%h' %D rZ   c                &   < V ^8  d   QhRS[ RS[/# r  )r   rT   )rU   rV   s   "rW   rX   rb  m  s     I I IC IrZ   c                    V\         P                  8X  d   R # V\         P                  8X  d   R# V\         P                  8X  d   R# \	        RV 24      h)GSPShzNo prefix for resource type )r   r}  rs  rt  r  )clsrn  s   &&rW   ru  ResourceCatalog._get_prefixl  sH    O777O333O3337GHHrZ   c                <   < V ^8  d   QhRS[ RS[ RS[S[,          /# )rP   font_family
font_stylerR   )rT   r   r   )rU   rV   s   "rW   rX   rb  v  s4     JX JXJX,/JX	G	JXrZ   c                (   V'       g   \        R4      hRP                  \        VP                  4       4      4      p/ RRbRRbRRbRRbRRbR	RbR
RbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRRRRR/CpVP	                  4       P	                  R4      P                  R4       EFU  pVP	                  4       P	                  R4      P                  4       pV V 2pWpP                  9   d   V P                  V,          u # V\        9   dl   VR9   d   RMTpV V 2p	WP                  9  d6   \        V P                  4      ^,           p
\        WV4      V P                  V	&   V P                  V	,          u # VP                  V4      pV'       g   K  VR9   d   RMTpV V 2p	WP                  9  d6   \        V P                  4      ^,           p
\        WV4      V P                  V	&   V P                  V	,          u # 	  \        RV: RV: 24      h)a  
Resolve a family+style to a concrete font instance from the font registry.
Behavior:
  - Exact match (family.lower() + style.upper()) in registry: return it
  - If `family` names a core font: add CoreFont to registry (if missing) and return it
  - If `family` is an alias/generic: translate to a core font, add to registry (if missing), and return it
  - Otherwise: raise KeyError

Notes:
  - For Symbol/ZapfDingbats, style is forced to "" (they don't support B/I).
zEmpty font familyr   z
sans-serif	helveticaz
sans serifarialverdanatahomazsegoe uiseriftimesztimes new romangeorgiacambriagaramond	monospacecourierzcourier newconsolasmonacosymbolzapfdingbatszzapf dingbatsz'",zNo suitable font for family=z, style=>   r  r  )KeyErrorr  r   upperstripsplitr  rj  r   r  r   get)r_   r  r  r{  alias	candidatefamilyfontkey
core_styler   r  mappeds   &&&         rW   get_font_from_family$ResourceCatalog.get_font_from_familyv  s    .//z//123
+
 +
 [	

 {
 k
 
 W
 W
 w
 w
 w
 
  !
" y#
$ 9%
& 	'
( i)
, hN^1
6 %**,2259??DI__&,,U399;F  (G,,,))'22 ##)-G#GRU
-000D../!3A.6qz.JD&&s+))#.. YYv&Fv#)-G#GRU
-000D../!3A.6qz.JD&&s+))#..3 E8 5k_HUIVWWrZ   )rj  rh  rf  ri  rk  r   re  rg  Nr  )rc   rd   re   rf   rx   recompiler  r  r  r  r  rr   rv  r  r  r  r  r  r  r  r  classmethodru  r  rg   rh   ri   s   @rW   r`  r`    s     Qzz.)H

=)I$45::&67@AJ) ) </ /&   *? ?5 5
E E
  I IJX JX JXrZ   r`  c                   t  a  ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltRCV 3R
 lR lltV 3R lR lt	V 3R lR lt
]! ^ R	4      3V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R  lR! ltV 3R" lR# ltV 3R$ lR% ltV 3R& lR' ltV 3R( lR) ltV 3R* lR+ ltV 3R, lR- ltV 3R. lR/ ltV 3R0 lR1 ltV 3R2 lR3 ltV 3R4 lR5 ltV 3R6 lR7 ltV 3R8 lR9 lt V 3R: lR; lt!V 3R< lR= lt"]#V 3R> lR? l4       t$V 3R@ lRA lt%RBt&V t'R	# )Dr8  i  zVGenerates the final bytearray representing the PDF document, based on a FPDF instance.c                "   < V ^8  d   QhRRRR/# )rP   rI  rF   rR   Nrb   )rU   rV   s   "rW   rX   OutputProducer.__annotate__  s     - -V - -rZ   c                    Wn         . V n        / V n        VP                  P                  V n        / V n        / V n        \        \        4      V n
        \        4       V n        R # r\   )rI  pdf_objsiccp_i_to_pdf_i_resource_catalogri  r   rG  trace_labels_per_obj_idr   r   sections_size_per_trace_labelr  rE  )r_   rI  s   &&rW   rr   OutputProducer.__init__  sS    	<>/1"":: 	 (*79$=H=M*!*rZ   c                    < V ^8  d   QhRS[ /# r   )r  )rU   rV   s   "rW   rX   r    s     A A9 ArZ   c           
        V P                   pVP                  eV   VP                  4       pVR8X  d   VP                  \	        ^ 4      4      pVP                  P                  \        V4      4       VP                  pVP                  '       d2   VP                  P                  V8  d   VP                  P                  pV P                  P                  \        V4      4       V P                  4       pV P                  4       pV P                  4       pV P!                  4       pVP"                   F5  pV P%                  VR4       V P%                  VP'                  4       R4       K7  	  V P)                  V4       V P+                  4       p	V P-                  4       w  rV P/                  4       pRpVP0                  '       g   V P3                  4       pV P5                  4       p\7        V 4      pV P                  P                  V4       \9        V4      Vn        V P=                  VVV^ ,          VVV	V
R7       . pV EF  pVVn        \A        VPB                  \8        4      '       g   Q hVPB                   EF&  p. pVPD                  '       d8   \G        VPD                  R4      '       d   VP                  VPD                  4       VPH                  '       dh   \G        VPH                  R4      '       dL   \G        VPH                  PD                  R4      '       d&   VP                  VPH                  PD                  4       V FG  pVPJ                  \M        V4      8  g   K  \O        RVPJ                   RVPQ                  4        R	24      h	  VPS                  V4       EK)  	  VPB                  '       d   EKy  RVn!        EK  	  V F.  pVPD                  f   K  VP                  VPD                  4       K0  	  V F5  p\U        VVPJ                  ^,
          ,          PV                  4      Vn,        K7  	  VPZ                  P\                  P^                   F&  pVVPK                  4       ^,
          ,          Vn0        K(  	  W_n1        Wn2        Wn3        V Ph                  '       d   Q R
V Ph                   24       hV Pj                  '       d   Q R\M        V Pj                  4       24       hV P                   F  p\A        V\l        4      '       d   RpMQ\M        V Ph                  4      V Pj                  VPV                  &   V Pn                  Pq                  VPV                  4      pV'       dP   V Ps                  V4      ;_uu_ 4        V Pu                  VPw                  VP                  R7      4       RRR4       K  V Pu                  VPw                  VP                  R7      4       K  	  V Py                  4        VPz                  '       dW   \}        \~        V Ph                  VPz                  VP                  VP                  VP                  VP                  4      V n4        V Ph                  #   + '       g   i     EK  ; i)z
This method alters the target FPDF instance
by assigning IDs to all PDF objects,
plus a few other properties on PDFPage instances
Nembedded_files	file_spec)pages_root_objfirst_page_objsig_annotation_objxmp_metadata_objstruct_tree_root_objoutline_dict_objrp  destz'Invalid reference to non-existing page z present on page z: z@Nothing should have been appended to the .buffer at this stage: z.No offset should have been set at this stage: )rQ   r   )DrI  rQ   rJ  rK  r  generate_passwordsrT   rm   rJ  _min_pdf_versionr  r  rk   _add_pages_root_add_catalog
_add_pages_add_annotations_as_objectsr  _add_pdf_objr  _insert_resources_add_structure_tree_add_document_outline_add_xmp_metadata_compliance	_add_info_add_encryptionr5  r)   r(  _finalize_catalogr  r'  r  r  hasattrr"  rp  r  r  r  extendrH  r   page_refstruct_builderdoc_struct_elemkpgr;  r<  r=  rE  rG  rM   r  r  _trace_size_outr`   _log_final_sections_sizes	_sign_keyr&   r5   
_sign_cert_sign_extra_certs_sign_hashalgo
_sign_time)r_   rI  rJ  rm   r  r;  	page_objsr  embedded_filer  r  outline_itemsr  r<  r=  rA  destspage_objannot
page_destsr  outline_itemstruct_elempdf_objtrace_labels   &                        rW   	bufferizeOutputProducer.bufferize  s"    yy
 !!-37<<>G"}//	$@""55c'lC&&###''88;F11BBKY{34--/'')OO%	!==?!00Mm-=>m557E 1 	y)#779*.*D*D*F'113~~'H--/ &T" 'y1)$Q<1-!5- 	 	
 ')!H,HOhoox8888!35
:::uzz=99"))%**5777wuww77uww||];;"))%'',,7&D''#i.8(EdFVFVEWWhiqiwiwiyhzz|}  '
 Z( )  ???"&+ ", *L  ,\../ * D#$$q("DM   ..>>@@K&{'>'>'@1'DEKN A& , 	\Mdkk][	\ 	P;C<M;NO	P }}G'#344"+.t{{+;WZZ("::>>wzzJ%%k22II))D<R<R)S 32
 		'++d>T>T+UV % 	&&(>>>&&&##DK {{% 322s   7,Y  Y2c                D   < V ^8  d   QhRS[ S[,          S[,          RR/# )rP   datarR   N)rj  r  rT   )rU   rV   s   "rW   rX   r  V  s%     $ $*S0 $T $rZ   c                    \        V\        4      '       g3   \        V\        4      '       g   \        V4      pVP                  R4      pV ;P                  VR,           ,          un        R# )zAppend data to the bufferlatin1   
N)r'  rj  rT   r{  rE  )r_   r  s   &&rW   r
  OutputProducer._outV  sE    $&&dC((4y;;x(Dte|#rZ   Nc                <   < V ^8  d   QhRS[ RS[S[,          RS[/# )rP   r  r  rR   )r,   r;   rT   r   )rU   rV   s   "rW   rX   r  ^  s)       /7}	rZ   c                    V ;P                   ^,          un         V P                   Vn        V P                  P                  V4       V'       d   W P                  V P                   &   V P                   # r  )r   r   r  r  r  )r_   r  r  s   &&&rW   r  OutputProducer._add_pdf_obj^  sN     	q[[
W%8C((5{{rZ   c                    < V ^8  d   QhRS[ /# r   )r!  )rU   rV   s   "rW   rX   r  h  s       rZ   c                    V P                   p\        VP                  \        VP                  4      R 7      pV P                  V4       V# ))r#  r  )rI  r!  pages_count_dimensions_to_mediaboxdefault_page_dimensionsr  )r_   rI  r  s   &  rW   r  OutputProducer._add_pages_rooth  sB    yy%""-d.J.JK
 	.)rZ   c                0   < V ^8  d   QhRS[ S[,          /# r   )r9   r  )rU   rV   s   "rW   rX   r  q  s      hw&7 rZ   c              #    "   \        ^V P                  P                  ^,           4       FV  pV P                  P                  V,          pVP	                  4       V8X  g   Q RVP	                  4       : RV: 24       hVx  KX  	  R# 5i)r  zpage_obj.index()=z != page_index=N)rF  rI  r)  rN  r  )r_   
page_indexr  s   &  rW   _iter_pages_in_order#OutputProducer._iter_pages_in_orderq  ss     499#8#81#<=Jyyz2H  J.7#(.."$$467.N >s   BBc                6   < V ^8  d   QhRS[ RS[S[,          /# )rP   _slicerR   )slicer(  r  )rU   rV   s   "rW   rX   r  z  s       DM rZ   c           	     \   V P                   p. p\        V P                  4       4      V,           F  pVP                  R 8  d+   VP                  '       d   \        RRRRRR/RR7      Vn        VP                  4       VP                  8w  d   \        VP                  4       4      Vn
        V P                  VR	4       VP                  V4       \        VP                  \        4      '       g   Q h\!        VP                  VP"                  R
7      pV P                  VR	4       WTn        K  	  V# )z1.3r   z/Groupz/Sz/Transparencyz/CS
/DeviceRGBr   r;  rN  rn  )rI  r(  r0  rm   allow_images_transparencyr   r  r  r+  r*  r  r  r  r'  ri  r  r*   ro  )r_   r3  rI  r  r  cs_objs   &&    rW   r  OutputProducer._add_pagesz  s
   yy#%	T6689&AAH%'D,J,J,J!)houlS"" ""$(D(DD%<X=P=P=R%S"h0X& h//;;;;%!**T]]F fg. &# B& rZ   c                0   < V ^8  d   QhRS[ S[,          /# r   )r;   r   )rU   rV   s   "rW   rX   r    s     " "Xm-D "rZ   c                z   R pV P                   P                  P                  4        F  p\        VP                  \
        4      '       g   Q hVP                   F[  p\        V\        4      '       g   K  V P                  V4       \        VP                  \        4      '       g   KN  Ve   Q R4       hTpK]  	  K  	  V# )Nz0A /Sig annotation is present on more than 1 page)
rI  rN  valuesr'  r  r)   r   r  vr%   )r_   r  r  	annot_objs   &   rW   r  *OutputProducer._add_annotations_as_objects  s    !		..0Hhoox8888%__	i77%%i0!)++y99.6NMN6-6* - 1 "!rZ   c                   < V ^8  d   QhRS[ S[S[3,          RS[ S[S[3,          RS[ S[R3,          RS[ S[S[S[,          3,          /# )rP   image_objects_per_indexr   r   r#   rR   )r   r   r   rT   r   rz   r   )rU   rV   s   "rW   rX   r    sd     R# R#!%c:o!6R# !%S,%6 7R#  $CN3	R#
 
c7\))	*R#rZ   c                  a+ / p\        V P                  P                  P                  4       R  R7       E
F(  p\	        V\
        4      '       Ed   VP                  '       Ed   VP                  P                  ^8  d   \        R4      hVP                  P                   FR  pV P                  \        VP                  P                  R4      V P                  P                  R7      R4      Vn        KT  	  . pVP                  P#                  4        F~  w  rVe;   \	        VP$                  \&        4      '       d   \)        VP$                  4      ^ 8X  d   KE  VP+                  RV	R R	R
P-                  R VP$                   4       4       R24       K  	  \        R\)        V4       RR
P-                  V4       R2P                  R4      4      p
V P                  V
R4       \/        VP                  4      p\1        V
P2                  4      Vn        VP7                  VVV4       V P                  VR4       WVP8                  &   EK  \	        V\:        4      '       dQ   VP<                  RC9  d   RMRp\?        RVP<                  VR7      pV P                  VR4       WVP8                  &   EKt  \	        V\
        4      '       g   EK  RVP<                   2pVP                  PA                  4       p\)        VPB                  4      ^ 8  d   RP-                  R VPB                  R,           4       4      p\)        VPB                  4      ^
8  d(   VR\)        VPB                  4      ^
,
           R2,          p\D        PG                  RVV4       \H        PJ                  ! RRR7      pV;PL                  . RDO,          un&        \H        PN                  ! V4      pVPQ                  VR7       VP                  VPR                  4       VP                  P#                  4        UUu/ uF2  w  ppVf   K  VVPR                  PU                  VPV                  4      bK4  	  ppp\Y        4       pVPR                  P[                  V4       VP]                  ^ 4       VP_                  4       p\?        RVRR7      pV P                  VR4       VWEP8                  &   VP`                  ;'       d    VPb                  pRpRpV'       d   / p/ pVP                  P#                  4        F  w  rVf   K  VPV                  Pe                  R4      '       dE   VPV                  R ,          Pg                  4       '       d   \i        VPV                  R ,          4      pMVPj                  pVR!8  d$   \D        PG                  R"VVPl                  4       K  VVV	&   VPn                  VV&   K  	  \?        V'       d   R#MR$TVPp                  Pr                  V'       d   V'       d   \u        V4      M
\w        V4      R%7      pV P                  VR4       \y        V.4      Vn=        . pR& R' lo+VP                  P#                  4        F  w  rVe;   \	        VP$                  \&        4      '       d   \)        VP$                  4      ^ 8X  d   KE  VP+                  RV	R( R	R
P-                  V+3R) lVP$                   4       4       R24       K  	  \        R*\)        V4       RR
P-                  V4       R2P                  R4      4      p
V P                  V
R4       V
Vn        V'       Ed   V'       d   R+pR,p^ pVP|                  '       d   VP|                  w  ppp\        VP#                  4       4       U Uu. uF  w  p pRV R( R-V R.2NK  	  p!p p\        R/V R0V R1V R2V R3V R4\)        V!4       R5R
P-                  V!4       R62P                  R4      4      p"\        R74      V"n@        \        V R3V R824      V"nA        \        R9V R:V R;V R<24      V"nC        V P                  V"R4       V"VnD        \        4       p#V'       dN   VP|                  '       d<   VP|                  w  ppp\        VRR=7      V#nG        \        VRR=7      V#nH        VV#nI        V P                  V#R4       V#VnC        VPp                  p$\        V4      V$nJ        V P                  V$R4       V$VnK        V'       g   R>.R?,          R?,          ^,          p%VP#                  4        FE  w  p&p'\        V'^,	          4      V%V&^,          &   \        V'^,          4      V%V&^,          ^,           &   KG  	  R
P-                  V%4      p(\        V(P                  R@4      RR7      p)V P                  V)R4       V)VnM        \        VRA7      p*V'       d   \        RB4      V*nO        V P                  V*R4       V'       d	   V*V$nP        MV*V$nQ        VP                  P                  P                  4        VP                  P                  P                  4        VP                  4        E
K+  	  V# u uppi u upp i )Ec                     V P                   # r\   r  )r_  s   &rW   r   +OutputProducer._add_fonts.<locals>.<lambda>  s    dffrZ   r   zType 3 fonts with color glyphs are not supported is more than 255 glyphs are rendered. set FPDF.render_color_fonts=False or use less color glyphs.latin-1rn  fontsN<02Xz> <r   c              3      "   T F;  p\        V4      P                  R 4      P                  4       P                  4       x  K=  	  R# 5i)z	utf-16-beN)chrr{  hexr  )r   codes   & rW   r   ,OutputProducer._add_fonts.<locals>.<genexpr>  s7     7~p}hlD	8H8H8U8Y8Y8[8a8a8c8cp}s   AAz>
z/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
<00> <FF>
endcodespacerange
z beginbfchar
zGendbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end
endWinAnsiEncodingType1)r|   r}   r~   r   r$  c              3      "   T F=  pR \        V4       R\        V4      P                  R4      P                  4        R2x  K?  	  R# 5i)'z' (zunicode-escaper  N)rK  r{  r  )r   xs   & rW   r   rN    sC      $!9A CF83s1v}}5E'F'M'M'O&PPQR!9s   AA:N
   Nz, ... (and z others)z+Font %s is missing the following glyphs: %sT)notdef_outlinerecommended_glyphs)r   Type0z
Identity-Hcid:   NN  zJGlyph CID %s exceeds 0xFFFF and cannot be encoded in a 2-byte CID font: %sCIDFontType0CIDFontType2)r|   r}   r   r   c                0    V ^8  d   QhR\         R\        /# )rP   r   rR   r$  )rU   s   "rW   rX   /OutputProducer._add_fonts.<locals>.__annotate__m  s     , , , ,rZ   c                 v    V R 8  d0   RV R,
          ^
,	          ,          pRV R,          ,          pVR VR 2# V R # )rZ  i   i   i   i  04Xrb   )r   	code_highcode_lows   &  rW   format_code.OutputProducer._add_fonts.<locals>.format_codem  sI    '$*g.?B-F$F	#)Wu_#="+C#??%c]+rZ   r`  c              3   4   <"   T F  pS! V4      x  K  	  R # 5ir\   rb   )r   rM  rc  s   & rW   r   rN  }  s     7dVcdD8I8IVcs   z/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
r   Identityz> r  zY/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry (z)
/Ordering (z)
/Supplement z
>> def
/CMapName /-zO-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
z begincidchar
zHendcidchar
endcmap
CMapName currentdict /CMap defineresource pop
end
endCMapz-UCSz<< /Registry (z) /Ordering (z) /Supplement z >>r       r!  rx  CIDFontType0C)SymbolZapfDingbats)FFTMGDEFGPOSGSUBMATHhdmxmetasbixCBDTCBLCEBDTEBLCEBSCzSVG CPALCOLR)Vr   rI  rG  r<  r'  r   
color_fontr   _nextr   r   r  r*   r   r{  ro  r   r  r   r)  r  r  r  r   rH  r   r   r
  r  r   r   rz   get_all_glyph_namesmissing_glyphsLOGGERwarningftsubsetOptionsdrop_tables	Subsetterpopulater   
getGlyphIDr   r
   saveseekreadis_cffis_cid_keyed
startswithisdigitr   glyph_idr  r   descmissing_width_cid_font_widths_tt_font_widthsr)   r   cff_rosr(   r   
c_map_namer.   r   r~   r   r-   r   r   r   	font_namer   rK  r   rf  r|   
font_file3
font_file2pickcache_clear	get_glyphclose),r_   rA  r   r   font_objs_per_indexr_  color_glyphbfCharr   code_mappedto_unicode_objt3_font_objr~   core_font_objfontnameglyph_namesmsgoptions	subsetterchar_idcode_to_glyphoutputttfontstreamcomposite_font_obj
is_cff_cidcode_to_cid
cid_widthsrX  cid_font_objr   r   r   rM  cid_mappingencoding_cmap_objcid_system_info_objfont_descriptor_objcid_to_gid_listccglyph_icid_to_gid_mapcid_to_gid_map_objfont_file_cs_objrc  s,   &&&&                                       @rW   
_add_fontsOutputProducer._add_fonts  s	    BD499??1139LMMD $((T___;;$$t+'V  $(??#9#9K)-):):(%0%6%6%=%=i%H%)YY%7%7  *K& $: %'*.++*;*;*=&E)%--??u}}-2 MMK,C7~pup}p}7~0~/  @C  D +> "2. v;-~776?+( fY'-"0 !!.':*4??;)01B1B)C&..+*)
 !!+w7.9DFF+ $)) yy(BB & 
 !(#tyy8! !!-9.;DFF+D'**$TYYK0 #kk==?t**+a/)) $!%!4!4S!9$ C 4../"4S1D1D-E-J,K8TTNNExQT #**$SWX## ( #( %..w7	""+"6  - +/++*;*;*=1*=w FGT[[33E4D4DEE*=  1 !  (A%{{} &-#x,&" !!"4g>.@#FF+ "[[>>T->->
8<7;
"$K!#J.2kk.?.?.A* =$!,,77>> % 0 0 4 < < > >"%e&6&6r&:";C"'..C<"NN l # $
 %36K0*/*;*;
3% /B&  '.8Nn&		// &* )4,T2	  !!,86>~6N"3 , +/++*;*;*=&E)%--??u}}-2 MMK,C7dV[VcVc7d0d/eehi +> "2. v;-~776?+( fY'-"0 !!.':0>"-:+&H)H!"J|||9=6(J *00A0A0C)D#)DID# D:RuB/)D   # )9, -5: 6**2 4++5, 7**21XJ ?2
  #;/0!ww{34""( !&+-)%0 .2&\%*37#*AhZt44%0 ;>(
-zXbWccfg;%7 %%&7A2C&/&3o#$,,,59\\2Hh
3<Xt3T'03<Xt3T'05?'2!!"5w?1D.&*ii#04X#-!!"5w?/B,! (.hns&:Q&>O'4':':'<G25gl2CQ/69'D.6IQ
3 (= &(WW_%=N *:!/!6!6x!@4*& %%&8'B6HL3#0,#G /3O/D$,!!"2G<5E'25E'2  ,,.%%113

S
 NV
 #"O1l#s   	i#&*i#i)c                6   < V ^8  d   QhRS[ S[S[3,          /# r   r   r   r   )rU   rV   s   "rW   rX   r    s     " "T#z/2 "rZ   c                   / p\        V P                  P                  P                  P	                  4       R  R7       FJ  p\        \        VR,          4      ^ 8  g   K!  V P                  V4      V\        \        VR,          4      &   KL  	  V# )c                 0    \        \        V R ,          4      # rD  )r>   r   )r   s   &rW   r   ,OutputProducer._add_images.<locals>.<lambda>  s    4SQTXCVrZ   r   usagesr  )r   rI  image_cacheimagesr<  r>   r   
_add_image)r_   r   r   s   &  rW   _add_imagesOutputProducer._add_images  sr    46II!!((//17V
C CX'!+:>//#:N"4SX#67	

 "!rZ   c                <   < V ^8  d   QhRS[ S[S[3,          RS[/# )rP   img_inforR   )r   rT   objectr   )rU   rV   s   "rW   rX   r    s$      T#v+%6 3 rZ   c           	        \        \        VR,          4      pW P                  9   d   V P                  V,          # RpV P                  P                  P
                  P                  4        F  w  rEW%8X  g   K  Tp M	  Vf   Q h\        V\        \        VR,          4      \        \        VR,          4      R7      pV P                  VR4      pWpP                  V&   V# )zf
Returns the PDF object of the ICC profile indexed iccp_i in the FPDF object.
Adds it if not present.
iccp_iNdpncs)ri  r  r  iccp)
r>   r   r  rI  r  icc_profilesr  r  rT   r  )r_   r  r  iccp_contenticcp_cr  iccp_obj
iccp_pdf_is   &&      rW   _ensure_iccpOutputProducer._ensure_iccp  s    
 c8H-.)))''//..;;AACIF{% D ''' !3(3/

 &&x8
'1V$rZ   c                <   < V ^8  d   QhRS[ S[S[3,          RS[/# )rP   rV  rR   )r   rT   r  r   )rU   rV   s   "rW   rX   r    s$     9 9tCK0 9Z 9rZ   c                   \        VP                  R 4      4      pV'       d   RM\        VR,          4      pRpV'       d   RMVP                  R4      pVR8X  d/   \        RR\	        VR,          4      ^,          ^,
           .4      pMMVe4   V P                  V4      p\        R\        V4      \        R	4      R
.4      pMVR8X  d   VR,          RJ d   RpRV9   d   \        \        VR,          4      pRVR,           RVR,           R2p\        R\        \        VR,          4      \        \        VR,          4      \        \        VR,          4      V\        \        VR,          4      \        \        VR,          4      VVVR7
      pV P                  VR4      VR&   V P                  P                  '       d\   RV9   dU   V'       gM   RVR,           2p	V P                  RVR,          RVR,          RRR^RVR,          RV	RVR,          /4      Vn        \!        V\        4      '       d   RV9   d   \!        VP"                  \        4      '       g   Q h\%        \        \        VR,          4      V P                  P&                  R 7      p
V P                  V
R4       VP"                  P)                  \+        V
P,                  4      4       V# )!r  Nr  r  Indexedz/Indexedr6  palz	/ICCBased0R
DeviceCMYKinvertedTz[1 0 1 0 1 0 1 0]r  r   dpz /BitsPerComponent bpcr   Imager  r   hf)
r|   ri  r  r  r  r  r  r  r  r  r  r   smaskz!/Predictor 15 /Colors 1 /Columns 
DeviceGrayrn  )r  r  r(   r)   r  r  rT   r>   r   rj  r   r  rI  r7  r  r  r'  r  r*   ro  r  rH  r   )r_   rV  r  r  r  r  r  r  img_objr  
pal_cs_objs   &&         rW   r  OutputProducer._add_image  sc   $((<01
6@dd4PT:FV#();)#"\c$u+.>!.Ca.G-HJK **40J"KZ#c(C#PQKL(J4',t#tH~.FDJ<':4;-rJ%f.sDI&T#Y'##Ce5Cc+%!
 **7H=X 99...7d?:4T#YK@B!__cc,1c"DM
GN k8,,{1Jg118<<<<)eT%[1DII<N<NJ j(3&&wz}}'=>rZ   c                6   < V ^8  d   QhRS[ S[S[3,          /# r   )r   rT   r   )rU   rV   s   "rW   rX   r  P  s     & &S,%6 7 &rZ   c                    \        4       pV P                  P                  P                  P	                  4        F&  w  r#\        V4      pV P                  VR 4       WAV&   K(  	  V# )gfxstate)r   rI  r  rf  r  r   r  )r_   r   
state_dictr   r   s   &    rW   _add_gfxstatesOutputProducer._add_gfxstatesP  s[    :E- $		 ; ; K K Q Q SJ'
3LlJ7+74( !T &%rZ   c                p   < V ^8  d   QhRS[ S[S[3,          RS[ S[R3,          RS[ S[S[3,          RR/# )rP   r   r   r#   r   rR   N)r   rT   r   r   r   )rU   rV   s   "rW   rX   r  X  sO     , , $S,%6 7,  $CN3, !j1	,
 
,rZ   c                    V P                   P                  P                   F?  pVP                  P	                  WV4      Vn        V P                  P                  V4       KA  	  R# )zSAppend soft-mask Form XObjects after patterns exist so we can resolve /Pattern ids.N)rI  r  rg  _pathget_resource_dictionaryr   r  r  )r_   r   r   r   r  s   &&&& rW   _add_soft_masksOutputProducer._add_soft_masksX  sP     44GGI"+//"I"I&?Q#I MM  +	 HrZ   c                :   < V ^8  d   QhRS[ S[S[3,          RR/# )rP   r   rR   Nr  )rU   rV   s   "rW   rX   r  e  s&     : :"&sJ"7:	:rZ   c                    V P                   P                  P                   FB  w  r#\        VRR4      '       g   V P	                  VR4       RVn        VP                  W#4       KD  	  R# )z\Ensure isolated blend forms are part of the XObject set before other resources rely on them._registeredFr  TN)rI  r  rh  r?  r  r  
setdefault)r_   r   r  r  s   &&  rW   #_register_form_xobject_placeholders2OutputProducer._register_form_xobject_placeholderse  sV     #ii99GGNE7M599!!'84&*#))%9	 HrZ   c                   < V ^8  d   QhRS[ S[S[3,          RS[ S[S[3,          RS[ S[S[3,          RS[ S[S[S[,          3,          RS[ S[S[S[	,          3,          RR/# )rP   r   r   r   shading_objs_per_namer  rR   N)
r   r   r   rT   r   r#   r$   r"   rz   r   )rU   rV   s   "rW   rX   r  o  s       j1 !%S,%6 7  $CL1	
  $C;)>$>? "#w'="=> 
rZ   c                    V P                   P                  P                   F2  w  rg\        VRR4      pVf   K  VP	                  VVVVV4      Vn        K4  	  R# )z@Populate resource dictionaries for isolated blend Form XObjects._blend_groupN)rI  r  rh  r?  r  r   )	r_   r   r   r   r  r  r  r  r  s	   &&&&&&   rW   _finalize_form_xobjects&OutputProducer._finalize_form_xobjectso  sW     ))55CCJA!'>4@K&$/$G$G*))'&%! DrZ   c                F   < V ^8  d   QhRS[ S[S[S[,          3,          /# r   )r   rT   r$   r"   )rU   rV   s   "rW   rX   r    s#     % %tC;)>$>? %rZ   c                v   \        4       pV P                  P                  P                  \        P
                  4       Fw  w  r#\        V\        \        \        34      '       g   Q hVP                  4        F  pV P                  VR 4       K  	  VP                  4       pV P                  VR4       WQV&   Ky  	  V# )functionra  )r   rI  r  r  r   rt  r'  r!   r$   r"   get_functionsr  get_shading_object)r_   r  ra  r   r  shading_objs   &     rW   _add_shadingsOutputProducer._add_shadings  s    BM-!YY88BB##
MG g';'GHHHH#113!!(J7 4181K1K1MKk95*5$'
 %$rZ   c                6   < V ^8  d   QhRS[ S[S[3,          /# r   )r   rT   r#   )rU   rV   s   "rW   rX   r    s     % %tCL1 %rZ   c           	     &   \        4       pV P                  P                  P                  \        P
                  4       F  w  r#\        V\        4      '       g   Q hV P                  VR 4       W!V&   VP                  4       '       g   KK  VP                  VP                  4       \        P                  ! ^ V P                  P                  ) 4      P                  ^RR7      P                  V P                  P                   4      ,          4       K  	  V# )r  )rS  yr   )r   rI  r  r  r   rs  r'  r#   r  get_apply_page_ctm
set_matrix
get_matrixr   translationr  r   r  )r_   r   r  r   s   &   rW   _add_patternsOutputProducer._add_patterns  s    4?M!YY88BB##
MG gw////gy1*1$'))++""&&(++A		|<UQ"U%U499;;'(
 %$rZ   c                4   < V ^8  d   QhRS[ S[,          RR/# )rP   r  rR   N)r(  r  )rU   rV   s   "rW   rX   r    s#     G G4= GT GrZ   c           
        V P                  4       pV P                  V4       V P                  4       pV P                  4       pV P	                  W#V4      pV P                  4       pV P                  VVVVV4       V P                  W4V4       V P                  P                  '       d'   V P                  VVVVV4      pV F	  pWxn        K  	  R# \        V^R7       EF  w  rV P                  P                  P                  V	\        P                   4       U
u/ uF  p
\#        V
4      V\#        V
4      ,          bK!  	  pp
V P                  P                  P                  V	\        P$                  4       Uu/ uF  p\#        V4      V\#        V4      ,          bK!  	  ppVP'                  4        UUu/ uFB  w  rVV P                  P                  P                  V	\        P(                  4      9   g   K@  WbKD  	  pppV P                  P                  P                  V	\        P*                  4       Uu/ uF  p\-        V4      V\-        V4      ,          bK!  	  ppV P                  P                  P                  V	\        P.                  4       Uu/ uF  p\-        V4      V\-        V4      ,          bK!  	  ppV P                  VVVVV4      Vn        EK  	  R# u up
i u upi u uppi u upi u upi )r  )r  N)r  r  r  r  r  r	  r  r  rI  single_resources_object_add_resources_dictr   	enumerater  r  r   r  r   rw  r  r}  rt  rT   rs  )r_   r  r   r   r   r  r  resources_dict_objr  rp  font_idpage_font_objs_per_indeximg_idpage_img_objs_per_indexgfx_name	gfx_statepage_gfxstate_objs_per_nameshading_namepage_shading_objs_per_namepattern_namepage_pattern_objs_per_names   &&                   rW   r   OutputProducer._insert_resources  s   !--/001CD!%!4!4!6 $ 2 2 4"oo8M
 !% 2 2 4$$"!!	
 	";M	
 99,,,!%!9!9#"&%%" &%7" & *39A)F)F% $(99#>#>#U#U#_%9%9$,$ L"5c'l"CC$ ) , #'))"="="T"T#_%=%=#+# K!3CK!@@# ( + 2H1M1M1O/1O-yy22II#_%@%@ (H'1O , / )-		(C(C(Z(Z#_%<%<).) %'<S=N'OO) + . )-		(C(C(Z(Z#_%<%<).) %'<S=N'OO) + . &*%=%=,+/..&"E *G,+/..s$   %K3%K-=K/K.%K#%K(c                   < V ^8  d   QhRS[ S[S[S[,          3,          RS[ S[S[3,          RS[ S[S[3,          RS[ S[S[S[,          3,          RS[ S[S[	3,          RS[
/# )rP   r  r   r   r  r   rR   )r   r   rz   r   r   rT   r   r$   r"   r#   r\  )rU   rV   s   "rW   rX   r    s     @ @!#w'="=>@ !j1@ !%S,%6 7	@
  $C;)>$>?@  $CL1@ 
@rZ   c           
        R pRw  rxrpV'       dN   \        \        VP                  4       4       UUu/ uF  w  rRV 2\        VP                  4      bK   	  upp4      pV'       dN   \        \        VP                  4       4       UUu/ uF  w  rRV 2\        VP                  4      bK   	  upp4      pV'       dF   \        VP                  4        UUu/ uF  w  ppRV 2\        VP                  4      bK!  	  upp4      p	V'       dO   \        \        VP                  4       4       UUu/ uF  w  ppRV 2\        VP                  4      bK!  	  upp4      p
V'       dO   \        \        VP                  4       4       UUu/ uF  w  ppRV 2\        VP                  4      bK!  	  upp4      p\        VVVV	V
VR7      pV P                  V4       V# u uppi u uppi u uppi u uppi u uppi )z$[/PDF /Text /ImageB /ImageC /ImageI]z/Fr   r   )r^  r_  r`  r	  ra  r  )NNNNN)r   r   r  rH  r   r\  r  )r_   r  r   r   r  r   r^  r_  r`  r	  ra  r  r  font_objr  r   r   r  pattern_objresources_objs   &&&&&&              rW   r  "OutputProducer._add_resources_dict  s    :8T5g ,22E2K2K2M+N+N L'(++"66+ND  +11C1I1I1K*L*L L''**"55*LH "" /E.J.J.L.L*l vJ 88.LK ! .44I4O4O4Q-R-R)k vJ 77-RG ! .44I4O4O4Q-R-R)k vJ 77-RG %#
 	-(]s   $G
$G
%G
)%G"
?%G(
c                0   < V ^8  d   QhRS[ S[,          /# r   )r;   r,   )rU   rV   s   "rW   rX   r  -  s     	$ 	$Xi%8 	$rZ   c                    V P                   P                  P                  4       '       d   R# RpV P                   P                   F  pVf   TpV P                  VR4       K  	  V# )zDBuilds a Structure Hierarchy, including image alternate descriptionsNstructure_tree)rI  r  emptyr  )r_   r  r  s   &  rW   r  "OutputProducer._add_structure_tree-  s]    99##))++#yy//G#+'.$g'78 0 $#rZ   c                V   < V ^8  d   QhRS[ S[S[,          S[S[,          3,          /# r   )r)  r;   r   r<   r   )rU   rV   s   "rW   rX   r  8  s+     / /	x)*H5J,KK	L/rZ   c                   V P                   P                  '       g   R# R p. p\        V P                   P                  4       F?  p\        V\        4      '       d   TpMVP                  V4       V P                  VR4       KA  	  W3# )Ndocument_outline)Nrb   )rI  _outliner    r'  r   r  r  )r_   r  r  r  s   &   rW   r  $OutputProducer._add_document_outline8  s{     yy!!!O8<57)$))*<*<=G'#455#* $$W-g'9: >  ..rZ   c                0   < V ^8  d   QhRS[ S[,          /# r   )r;   rt  )rU   rV   s   "rW   rX   r  G  s      8N#; rZ   c                
   V P                   P                  pV'       g-   V P                   P                  '       d   V P                  4       pV'       g   R # R\	        R4       RV R2p\        V4      pV P                  V4       V# )Nz<?xpacket begin="i  z"" id="W5M0MpCehiHzreSzNTczkc9d"?>
z
<?xpacket end="w"?>
)rI  xmp_metadatar  _build_xmp_from_inforK  rt  r  )r_   xmp_srcxpacketr  s   &   rW   r   OutputProducer._add_xmp_metadataG  sp    ))((499000//1G%c&k]2UV]U^^uv )'"rZ   c                    < V ^8  d   QhRS[ /# r   rn   )rU   rV   s   "rW   rX   r  T  s     Y  Y c Y rZ   c           
        \        V P                  R R4      ;'       g    Rp\        V P                  RR4      ;'       g    Rp\        V P                  RR4      ;'       g    RpV'       d   \        V\        4      '       d   V.p\        V P                  RR4      ;'       g    RpV'       d   \        V\        4      '       d   V.p\        V P                  RR4      ;'       g    Rp\        V P                  RR4      ;'       g    Rp\        V P                  RR4      pRp\        V\        4      '       dD   VP
                  '       d   TMVP                  4       pVP                  \        P                  4      pV P                  P                  p	R	 R
 lp
\	        R^^^^ ^ \        P                  R7      p\        P                  ! \        P                  4      pW8X  d&   VP                  RR7      pVP                  RR7      pM0T;'       g    TpVP                  RR7      pVP                  RR7      p. R'OpV'       d   VP                  RV
! V4       R24       V'       dR   VP                  RV
! V4       R24       VP                  RV
! V4       R24       VP                  RV
! V4       R24       V'       d   VP                  RV
! V4       R24       V'       d-   RP                  V4      pVP                  RV
! V4       R24       VP                  R4       V	'       d   VP                  R\        V	P                  4       R24       V	P                   '       d&   VP                  RV
! V	P                   4       R24       V	P                  ^8X  d   VP                  R4       V'       d!   VRRV
! V4      ,           R,           R .,          pV'       d!   VR!RV
! V4      ,           R,           R".,          pV'       dG   VP                  R#4       V F  pVP                  R$V
! V4       R24       K   	  VP                  R%4       V. R(O,          pR&P                  V4      # ))r  Nr   r  r  r  r  r  r  c                0    V ^8  d   QhR\         R\         /# )rP   r  rR   rn   )rU   s   "rW   rX   9OutputProducer._build_xmp_from_info.<locals>.__annotate__g  s     	0 	03 	03 	0rZ   c                ^    V f   RM\        \        V 4      RR7      pVP                  RR4      # )zDReturn XML-escaped text suitable for XMP (attributes or text nodes).r   T)quoterR  z&apos;)_html_escaperT   replace)r  r  s   & rW   esc0OutputProducer._build_xmp_from_info.<locals>.escg  s)    )Bc!fD)IE==h//rZ   i  )tzinfoseconds)timespecz        xmp:CreatorTool=""z        xmp:CreateDate="z        xmp:ModifyDate="z        xmp:MetadataDate="z        pdf:Producer="r  z        pdf:Keywords="z      >z      <pdfaid:part>z</pdfaid:part>z      <pdfaid:conformance>z</pdfaid:conformance>z#      <pdfaid:rev>2020</pdfaid:rev>z      <dc:title><rdf:Alt>z%        <rdf:li xml:lang="x-default">z	</rdf:li>z      </rdf:Alt></dc:title>z      <dc:description><rdf:Alt>z!      </rdf:Alt></dc:description>z      <dc:creator><rdf:Seq>z        <rdf:li>z      </rdf:Seq></dc:creator>r  )z4<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="fpdf2">z
  <rdf:RDFz;    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"z/    xmlns:dc="http://purl.org/dc/elements/1.1/"z,    xmlns:xmp="http://ns.adobe.com/xap/1.0/"z,    xmlns:pdf="http://ns.adobe.com/pdf/1.3/"z3    xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">z!    <rdf:Description rdf:about="")z    </rdf:Description>z  </rdf:RDF>z</x:xmpmeta>)r?  rI  r'  rT   r   rG  
astimezoner   utcr  now	isoformatr  r  r   partconformance)r_   r  r  r  r  creator_toolr  cdatecreation_date_utcpdfarE  EPOCHrM  
xmp_create
xmp_modify	create_dtpartskeyword_listr"  s   &                  rW   r9  #OutputProducer._build_xmp_from_infoT  s   		7D177R$))Y5;;Hd399rj--XF499j$7==2
8S11 zHtyy)T:@@b499j$7==2		?D9 eX&&).5;K;K;M 1 < <X\\ Jyy$$	0 r2r1aEll8<<(%)<J)<J)00SI",,i,@J	:J	
 LL4S5F4GqIJLL3C
O3DAFGLL3C
O3DAFGLL5c*o5FaHILL1#h-BC88H-LLL1#l2C1DAFGYLL.s499~.>nMN0T5E5E1F0GG\] yyA~BC+7#e*D{R- E
 17#g,FT3 E
 LL67/AxyAB LL89 
 	

 yyrZ   c                    < V ^8  d   QhRS[ /# r   )r  )rU   rV   s   "rW   rX   r    s      7 rZ   c                p   V P                   p \        VP                  R R R7      p\        TP                  \        TRR4      \        TRR4      \        TRR4      \        TRR4      \        TRR4      TR	7      pT P                  T4       T#   \         d   p\	        RTP                   24      ThRp?ii ; i)
T)with_tzr   zCould not format date: Nr  r  r  r  r  )r  r  r  r  r  r  r  )	rI  r+   r  	Exceptionr   r  r  r?  r  )r_   rI  r  errorr<  s   &    rW   r  OutputProducer._add_info  s    yy	#D$6$6dSM
 **D)T2440T:t4D)T2T:t4'
 	(#  	)$*<*<)=>	s   B B5B00B5c                .   < V ^8  d   QhRS[ R,          /# )rP   rR   rA   )r;   )rU   rV   s   "rW   rX   r    s      *@!A rZ   c                    V P                   P                  '       d:   V P                   P                  pVP                  4       pV P                  V4       V# R # r\   )rI  rQ   get_encryption_objr  )r_   encryption_handlerr  s   &  rW   r   OutputProducer._add_encryption  sF    99&&&!%!<!<(;;=Gg&NrZ   c                0   < V ^8  d   QhRS[ S[,          /# r   )r;   r)   )rU   rV   s   "rW   rX   r    s     ( (Xh%7 (rZ   c                    V P                   P                  pV'       g   R# V F2  pVP                  '       g   K  V P                  VP                  4       K4  	  \	        V4      # )zshould be added in _add_catalogN)rI  rU  rU  r  r)   )r_   rU  output_intents   &  rW   _add_output_intents"OutputProducer._add_output_intents  sN    11+M000!!-"C"CD , ''rZ   c                    < V ^8  d   QhRS[ /# r   )rE  )rU   rV   s   "rW   rX   r    s      j rZ   c                    V P                   p\        \        VR R4      VP                  VP                  VP
                  R7      pV P                  4       Vn        V P                  V4       V# )rG  N)rG  rH  rI  rJ  )	rI  rE  r?  rH  rI  rJ  rj  rU  r  )r_   rI  r;  s   &  rW   r  OutputProducer._add_catalog  sa    yy vt,((nn#66	
 &*%=%=%?"+&rZ   c                   < V ^8  d   QhRS[ RS[RS[RS[S[,          RS[S[,          RS[S[,          RS[S[,          RR	/# )
rP   r;  r  r  r  r  r  r  rR   N)rE  r!  r  r;   r   rt  r,   r   )rU   rV   s   "rW   rX   r    sz     _ __ %_  	_
 %]3_ #>2_ 'y1_ ##45_ 
_rZ   c           
     b	   V P                   pW!n        Wan        Wqn        WQn        V'       dB   \
        P                  \
        P                  ,           p	\        \        V.4      V	R 7      Vn
        VP                  \        9   d/   \        VP                  4      .\        VP                  ,          Op
MB\        VP                  4      RRR\        \!        \"        VP                  4      ^d,          4      .p
\%        V
4      Vn        V'       d   \)        RR/4      Vn        VP,                  '       g   VP.                  '       Ed   / pVP,                  '       d   VP,                   Uu. uFG  p\1        VP3                  4       4      P5                  4        RVP7                  4       P8                   2NKI  	  pp\)        R\%        V4      /4      VR&   V P                   P,                   Uu. uF>  pVP;                  4       '       g   K  \        VP7                  4       P                  4      NK@  	  ppV'       d   \%        V4      Vn        VP.                  '       Edh   . pVP.                  P?                  4        EF  w  ppVP@                  ^ 8X  d   \C        RV R	24      h\E        VR
4      '       d   VPF                  '       g~   VP@                  f   Q hVP@                  ^,
          p^ Tu;8:  d   \I        VP                  4      8  d9   M M5\        VP                  VP@                  ,          P                  4      Vn#        VPK                  \1        VRR7      P5                  VPL                  VP                  R7       RVP5                  4        24       EK  	  V'       d#   \)        R\%        \O        V4      4      /4      VR&   \)        V4      Vn(        \S        V PU                  4       4       UUu. uF:  w  ppVPW                  4       ;pf   K  V R\)        VP5                  4       4       2NK<  	  pppV'       d:   VP                  ^,          PW                  4       '       g   VPY                  ^ R4       V'       d,   \)        R\        V4      P5                  4       /4      Vn-        R# R# u upi u upi u uppi )r3  /XYZnullz/Markedtruer   z/Namesz/EmbeddedFileszNamed destination 'z6' was referenced but never set with set_link(name=...)r  NTr   r:  z/Destsz0 <<>>z/Nums).rI  rN  rV  rT  rR  r   SIGNATURES_EXISTAPPEND_ONLYr-  r)   rO  	zoom_modeZOOM_CONFIGSrH  r   rT   r>   r   r   rP  r   rQ  r  named_destinationsr-   basenamer`   r  refglobally_enclosedrW  r  rp  r   r  r  r  r  rQ   r   rS  r  r0  r  insertrX  )r_   r;  r  r  r  r  r  r  rI  flagszoom_confignames_dict_entriesr  file_spec_namesefglobal_file_specsdests_namesr   r  r/  r  pagelabelrX  s   &&&&&&&&                rW   r   OutputProducer._finalize_catalog  s+    yy*';$//!22]5N5NNE$,!3 45%K! >>\)))*dnn-K ))*D/#56K #+;"7$,i-@$AK!$"9"9"913""" *.)<)<#)< !!7!7!9:DDFGqI`I`IbIfIfHgh)<   # 8@x898"#34
 #ii66%6++- /GBLLN--.6 " %
 %&./@&AKO&&&)+"&"9"9"?"?"AJD$''1,+1$7mn 
 #444DMMM#//;;;%)%5%5%9

<S_<,3DJJt?O?O4P4S4S,TDM  &&$T48BBUYUkUk  vA  vD  vDB  E  F  FG  HL  HV  HV  HX  GY  Z #B& 3;!8F;,?#@A4&x0 !)); <K %T%>%>%@A
A4,,.. 1qc8EOO-./0A 	 

 tzz!};;==q(+&.(;/99;<'K# i#%J
s   $AR!$R&'R&(R+"R+c                4   < V ^8  d   QhRS[ RS[R,          /# )rP   r  rR   N)rT   r9   )rU   rV   s   "rW   rX   r  D  s#     R R R$ RrZ   c              #     "   \        V P                  4      pR x  V P                  V;;,          \        V P                  4      V,
          ,          uu&   R # 5ir\   )r  rE  r  )r_   r  	prev_sizes   && rW   r	  OutputProducer._trace_sizeC  s:     $	**51S5E	5QQ1s   AAc                   < V ^8  d   QhRR/# r   rb   )rU   rV   s   "rW   rX   r  I  s     G G4 GrZ   c                    \         P                  R 4       V P                  P                  4        F%  w  r\         P                  RV\	        V4      4       K'  	  R# )z4Final size summary of the biggest document sections:z- %s: %sN)r  debugr  r  _sizeof_fmt)r_   r  section_sizes   &  rW   r  (OutputProducer._log_final_sections_sizesI  sA    KL#'#E#E#K#K#MELLUK,EF $NrZ   )rE  rI  r  r   rG  r  r  r  r\   )(rc   rd   re   rf   rx   rr   r  r
  r  r  r0  r4  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r9  r  r   rj  r  r  r   r	  r  rg   rh   ri   s   @rW   r8  r8    sj    \- -A AF$ $    */q$  0" "R# R#h
" " 09 9v& &, ,: : (% %% %$G GR@ @D	$ 	$/ / Y  Y v ( ( ( _ _B R R
G GrZ   r8  c                    V ^8  d   QhR\         R\        R\        R\        R\        R\        R\        R\        \        ,          R	\        /	# )
rP   rV  rS  r  r   r  keep_aspect_ratior   pdf_height_to_fliprR   )r   r   r  r;   rT   )rU   s   "rW   rX   rX   O  sf      
  	
    ! 	rZ   c                     V'       d   V P                  WW44      w  rr4V'       d   TpWt,
          V,
          p	MV) pW$,           p	R W6,          R RW,          R RW,          R RW,          R RV R,           R2# )zq .2fz 0 0 r   z cm /Ir  z Do Q)scale_inside_box)
rV  rS  r  r   r  r  r   r  stream_hstream_ys
   &&&&&&&&  rW   stream_content_for_raster_imager  O  s     **16
a%)A-25
QYsO5!1# 6
AIc?!H,S1 23i[	rZ   c                0    V ^8  d   QhR\         R\        /# )rP   r_  rR   )r   rT   )rU   s   "rW   rX   rX   h  s     B B' Bc BrZ   c           
      6   ^ p/ p/ pRpRpRp\        \        V P                  P                  4       R R7      4      pV EF  pVf   Q hWx,          p	W^,           8X  d   VP                  V8X  dy   VP                  W!,          ^ ,          8X  d-   VP                  V. 4      P                  VP                  4       M'W!,          P                  4        TpWXP                  .W!&   RpRW1&   MQV'       d   T	pVP                  .W!&   M!W!,          P                  VP                  4       RpMT	pVP                  .W!&   RpT	pVP                  pEK
  	  Rp
RpRpTp\        VP                  4       4       Fr  w  r\        V4      pW8X  d8   V'       g0   W9  g   V^8  d#   W9   d   W W*,          W.,          ,           W*&   W. MTp
VV,           pW9   d   V^8  pW V^,          pKp  RpKt  	  . p\        VP                  4       4       F  w  r\        \        V4      4      ^8X  d;   VP                  RV RV\        V4      ,           ^,
           RV^ ,           24       KX  VP                  RV RRP                  R V 4       4       R24       K  	  R	R
P                  V4       R2# )rd  Fc                     V ^,          # r  rb   )items   &rW   r   !_tt_font_widths.<locals>.<lambda>q  s    tAwrZ   r   Tr    [ c              3   J   "   T F  p\        \        V4      4      x  K  	  R # 5ir\   r  r   r  s   & rW   r   "_tt_font_widths.<locals>.<genexpr>       '@RCFR   !# ]
r   r   r   r   )r   r   r   r  r   r  r  popr  r*  r  )r_  rangeidrange_range_intervalprevcid	prevwidthintervalr   r   
cid_mappedprevknextkprevintrir  wscwsr   s   &                 rW   r  r  h  sp   G#%F&(NGIH &**,2FGHF   ]
A+&  I-$$(::%%gr299%:K:KLO'')%G'02C2C&DFO*.'(G','8'8&9FOO**5+<+<=  G$001FOH%%	7 8 EEG	B'"g:g1;#'wE"MFI5FM	EC7AgGQJEG (  A's2w<1HHq1QR[1_-Qr!ug67HHq3sxx'@R'@@AFG	 (
 rwwqzl!rZ   c                R    V ^8  d   QhR\         \        \        3,          R\        /# )rP   r  rR   r   )rU   s   "rW   rX   rX     s"     < <c3h <C <rZ   c           
      F   ^ p/ p/ pR
pRpRp\        V P                  4       4       F  w  rxWt^,           8X  d   W8X  d[   WV,          ^ ,          8X  d#   VP                  V. 4      P                  V4       MW!,          P	                  4        TpWX.W!&   RpRW1&   M3V'       d	   TpV.W!&   MW!,          P                  V4       RpM	TpV.W!&   RpTpTpK  	  Rp	Rp
RpTp\        VP                  4       4       Fq  w  r\        V4      pW8X  d8   V'       g0   W9  g   V^8  d#   W9   d   W W),          W-,          ,           W)&   W- MTp	W,           p
W9   d   V^8  pW V
^,          p
Ko  RpKs  	  . p\        VP                  4       4       F  w  r\        \        V4      4      ^8X  d;   VP                  RV RV\        V4      ,           ^,
           RV^ ,           24       KX  VP                  RV RRP                  R V 4       4       R24       K  	  RRP                  V4       R	2# )rd  FTr   r  c              3   J   "   T F  p\        \        V4      4      x  K  	  R # 5ir\   r  r  s   & rW   r   #_cid_font_widths.<locals>.<genexpr>  r  r  r  r   r   r   r  r   )r   r  r  r  r  r  r*  r  )r  r  r  r  r  r  r  rX  r  r  r  r  r  r  r  r  r   s   &                rW   r  r    s   G#%F&(NGIHZ--/0
Q;!7OA..%%gr299%@O'')%G'0&8FO*.'!G',gFOO**51 G$gFOH	/ 12 EEG	B'"g:g1;#'wE"MFI5FM	E7AgGQJEG (  A's2w<1HHq1QR[1_-Qr!ug67HHq3sxx'@R'@@AFG	 (
 rwwqzl!rZ   c                R    V ^8  d   QhR\         \        \        3,          R\        /# )rP   r  rR   )r)  r   rT   )rU   s   "rW   rX   rX     s#     3 3eUl(; 3 3rZ   c                      V w  rR VR RVR R2# )z[0 0 r  r   r   rb   )r  r  r  s   &  rW   r*  r*    s#    $H8C.)C22rZ   c                <    V ^8  d   QhR\         R\        R\        /# )rP   numsuffixrR   )r   rT   )rU   s   "rW   rX   rX     s!     " "U "C "# "rZ   c                 l    R F'  p\        V 4      R8  d   V R V V 2u # V R,          p K)  	  V R RV 2# )r   i   z3.1fz.1fYi)r   KiMiGiTiPiEiZi)abs)r  r  units   && rW   r  r    sJ    >s8d?$ZvfX..t ? #Yb!!rZ   c                R    V ^8  d   QhR\         \        ,          R\        R\        /# )rP   pathresource_catalogrR   )r   r   r`  r*   )rU   s   "rW   rX   rX     s)     
 

-
'
;J

rZ   c                    \        V P                  V4      P                  R4      R7      pWn        \	        R4      Vn        \	        R4      Vn        \        V P                  4       4      Vn	        RVn
        V# )zSConverts a PaintedSoftMask into a PDF XObject Form suitable for use as a soft mask.rF  rx  r  Formz5<</S /Transparency /CS /DeviceGray /I true /K false>>)r*   renderr{  r  r(   r   r|   r)   get_bounding_boxb_boxr  )r  r  r  s   && rW   r  r    s_     4D(E(L(LY(WXGM	?GL6lGOT2245GMKGMNrZ   c                4    V ^8  d   QhRRR\         R\        /# )rP   r  r?   r  rR   )r`  r*   )rU   s   "rW   rX   rX   	  s$      +:rZ   c                   V P                  V4      p\        VP                  R4      R7      pWn        RVn        \        R4      Vn        \        R4      Vn        V P                  4       p\        V4      Vn
        RVn        V# )zNConvert a blend group into a Form XObject with an isolated transparency group.rF  rx  Fr  r  z+<</S /Transparency /CS /DeviceRGB /I true>>)r  r*   r{  r   r  r(   r   r|   r  r)   r  r  )r  r  streamr  bboxs   &&   rW   r  r  	  so     \\*+Fi(@AG G	?GL6lGO!!#DTNGMAGMNrZ   )z/Fit)z/FitHrr  )rq  rr  rr  1)Fr  N)B)rx   loggingr  abcr   r   collectionsr   r   
contextlibr   r   r   htmlr	   rC  ior
   	fontToolsr   r  annotationsr   r   drawingr   r   drawing_primitivesr   enumsr   r   r   r   errorsr   font_type_3r   rG  r   r   r   image_datastructuresr   
line_breakr   outliner   r   r    r  r!   r"   r#   r$   signr%   r&   syntaxr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r   r1   r   r2   rH  utilr3   r4   endesiver5   ImportErrortypingr6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   
encryptionrA   rB   rC   rD   rE   rI  rF   prefsrG   transitionsrH   	getLoggerrc   r  rw  rM   rk   rz   r   r   r  r-  rE  r\  rf  rt  r   r  r  r  r!  r   r5  rP  rT   r   rq  r`  r8  r  r  r  r*  r  r  r  rb   rZ   rW   <module>r     s8    	 $ 0 % ' '  ( 6 1 ) V V ! " 0 0 1 6 Q Q < < )    ,
 
 
 2I+((' 
		8	$ 	"
)"s "5  5(Ci C.I Y
9 Y
x+i +22 2$/ /:9 &%$ %#% #*7! *7Z)$ ):7 7tk'i k'\
9 
?9 ?-( -`E" E"P c3j)YUVaX aXHIG IGX$2BJ<~3
"
aF  Fs   I 	II