+
    Œvjû2  ã                   ó$  € R t Rt^ RIt^ RIHt ^ RIHt ^ RIHtH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHt ^ R	IHt R
RRRRRRR/t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR t ! R R]4      tR t]R8X  d
   ]! 4        R# R# )z3.3.0aL  Routines to print code page (character set) drawings. Predates unicode.

To be sure we can accurately represent characters in various encodings
and fonts, we need some routines to display all those characters.
These are defined herein.  The idea is to include flowable, drawable
and graphic objects for single and multi-byte fonts. N)ÚCanvas)ÚFlowable)Ú
pdfmetricsÚcidfonts)ÚGroupÚStringÚRect)ÚWidget)Úcolors)Úint2ByteÚWinAnsiEncodingÚwinansiÚMacRomanEncodingÚmacromanÚ	MacExpertÚ	macexpertÚPDFDocÚpdfdocc                   ó@   a € ] tR t^t o RtR tR tR tRR ltRt	V t
R# )	ÚCodeChartBasezjBasic bits of drawing furniture used by
single and multi-byte versions: ability to put letters
into boxes.c                ó¶  € V P                   R,          V P                  ,          pV\        V4      8X  d   \        V4      V n        M\        V4      ^,           V n        V P                  ^V P                  ,           ,          V n        V P                  ^V P                  ,           ,          V n        . V n        \        V P                  ^,           4       F.  pV P                  P                  W P                  ,          4       K0  	  . V n
        \        V P                  ^,           4       F.  pV P                  P                  W0P                  ,          4       K0  	  R# )z&Work out x and y positions for drawingg      ð?N)Ú
codePointsÚcharsPerRowÚintÚrowsÚboxSizeÚwidthÚheightÚylistÚrangeÚappendÚxlist)Úselfr   ÚrowÚcols   &   Ú\/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/reportlab/lib/codecharts.pyÚ
calcLayoutÚCodeChartBase.calcLayout#   sé   € ð �‰ Õ$ t×'7Ñ'7Õ7ˆØ”3�t“9ÔÜ˜D›	ˆD�Iä˜D›	 A�ˆDŒIà—\‘\ Q t×'7Ñ'7Õ%7Õ8ˆŒ
Ø—l‘l a¨¯	©	¥kÕ2ˆŒð ˆŒ
Ü˜Ÿ™ Q�Ö'ˆCØ�J‰J×Ñ˜c§L¡LÕ0Ö1ñ (àˆŒ
Ü˜×)Ñ)¨AÕ-Ö.ˆCØ�J‰J×Ñ˜c§L¡LÕ0Ö1ó /ó    c                óJ   € V P                   '       d
   R V,          # RV,          # )ú%02Xz%d)Úhex)r"   Úbyts   &&r%   Ú
formatByteÚCodeChartBase.formatByte8   s   € Ø�8�8ˆ8Ø˜C•<Ðà˜#•:Ðr(   c                óÄ  € V P                   V P                  ,          \        V4      ,
          p\        V4       F  pVP	                  R4       K  	  ^ p^ pV P
                  P                  V P                  V P                  R,          4       V EF;  pVf®   V P
                  P                  R4       V P
                  P                  ^V,           V P                  ,          V P                   V,
          ^,
          V P                  ,          V P                  V P                  ^ ^R7       V P
                  P                  R4       M_ V P
                  P                  VR,           V P                  ,          V P                   V,
          R,
          V P                  ,          V4       V^,           pWPP                  8X  g   EK0  V^,           p^ pEK>  	  R#    T P
                  P                  R4       T P
                  P                  ^T,           T P                  ,          T P                   T,
          ^,
          T P                  ,          T P                  T P                  ^ ^R7       T P
                  P                  TR,           T P                  ,          T P                   T,
          R,
          T P                  ,          R4       T P
                  P                  R4        EL=; i)	zUFills boxes in order.  None means skip a box.
Empty boxes at end get filled with grayNç      è?gÍÌÌÌÌÌì?©ÚstrokeÚfillç        ç      ø?g      ì?Ú?)r   r   Úlenr   r    ÚcanvÚsetFontÚfontNamer   ÚsetFillGrayÚrectÚdrawCentredString)r"   ÚcharListÚextraNeededÚir#   r$   Úchs   &&     r%   Ú	drawCharsÚCodeChartBase.drawChars>   s  € ð —y‘y 4×#3Ñ#3Õ3´c¸(³mÕCˆÜ�{Ö#ˆAØ�O‰O˜DÖ!ñ $ð ˆØˆØ�	‰	×Ñ˜$Ÿ-™-¨¯©¸Õ)<Ô=ÜˆBØŠzØ—	‘	×%Ñ% cÔ*Ø—	‘	—‘  #¥¨¯©Õ5¸¿	¹	ÀC½È!Õ8KÈtÏ|É|Õ7[Ø—L‘L $§,¡,°q¸qð ô Bà—	‘	×%Ñ% cÕ*ð/Ø—I‘I×/Ñ/Ø  �W¨¯©Õ4Ø!ŸY™Y¨�_¨uÕ4¸¿¹ÕDØôð ˜•'ˆCØ×&Ñ&×&Ø˜A•g�Ø“ó5 øð	/Ø—I‘I×)Ñ)¨#Ô.Ø—I‘I—N‘N A c¥E¨T¯\©\Õ#9¸D¿I¹IÈ½OÈaÕ<OÐSW×S_ÑS_Õ;_ØŸ™ d§l¡l¸1À1ð #ô Fà—I‘I×/Ñ/Ø  �W¨¯©Õ4Ø!ŸY™Y¨�_¨uÕ4¸¿¹ÕDØôð
 —I‘I×)Ñ)¨#×.ús   ÅAGÇDKc           	     óZ  € V P                   P                  R4       V P                   P                  ^ V P                  R,          V P                  V P
                  ^^ R7       V P                   P                  ^ ^ V P
                  V P                  R,          ^^ R7       V P                   P                  R4       V P                   P                  RRV P
                  ,          4       ^ p\        V P                  4       F¡  pV P                  '       d   V P                  V,          pM!V P                  W0P                  ,          4      pV P                   P                  RV P
                  ,          V P                  V,
          R,
          V P
                  ,          V4       K£  	  \        V P                  4       Fi  pV P                   P                  VR,           V P
                  ,          V P                  R	,           V P
                  ,          V P                  V4      4       Kk  	  V'       d€   V P                   P                  R
RV P
                  ,          4       V P                   P                  RV P
                  ,          V P                  R	,           V P
                  ,          V4       R# R# )z4Writes little labels in the top row and first columnçš™™™™™é?)r3   r2   r4   zHelvetica-Obliqueg      Ø?g      à?r0   r5   g      Ð?zHelvetica-BoldObliqueNéþÿÿÿ)r8   r;   r<   r   r   r   r9   r   r   Ú	rowLabelsr-   r   r=   )r"   ÚtopLeftr,   r#   Úlabelr$   s   &&    r%   Ú
drawLabelsÚCodeChartBase.drawLabelsd   sÐ  € à�	‰	×Ñ˜cÔ"Ø�	‰	�‰�q˜$Ÿ*™* R�.¨$¯*©*°d·l±lÈÐSTˆÔUØ�	‰	�‰�q˜!˜TŸ\™\¨4¯:©:°b­>ÀÈ!ˆÔLØ�	‰	×Ñ˜cÔ"ð 	�	‰	×ÑÐ-¨e°d·l±lÕ.BÔCØˆÜ˜Ÿ™Ö#ˆCØ�~�~ˆ~ØŸ™ sÕ+‘àŸ™¨×.>Ñ.>Õ(>Ó?�Ø�I‰I×'Ñ'¨¨d¯l©lÕ(:Ø)-¯©°S­¸4Õ)?À4Ç<Á<Õ(OØ(-ö*ñ $ô ˜×)Ñ)Ö*ˆCØ�I‰I×'Ñ'¨¨s­°d·l±lÕ(BØ)-¯©°TÕ)9¸T¿\¹\Õ(IØ(,¯©¸Ó(<ö*ñ +÷ Ø�I‰I×ÑÐ5°c¸D¿L¹LÕ6HÔIØ�I‰I×'Ñ'¨¨d¯l©lÕ(:Ø)-¯©°TÕ)9¸T¿\¹\Õ(IØ(/ö*ñ r(   )r   r   r   r!   r   N)Ú )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r&   r-   rB   rJ   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r%   r   r      s$   ø‡ € ñò2ò*ò$÷L*ò *r(   r   c                   ó0   a € ] tR t^„t o RR ltR tRtV tR# )ÚSingleByteEncodingChartc                ód  € R V n         Wn        W n        V P                  R,           V P                  ,           V n        W0n        W@n        WPn        RV n        \        P                  ! \        P                  ! V P                  V P                  V P                  4      4       V P                  4        R# )é   Ú-N)r   ÚfaceNameÚencodingNamer:   r   r   r+   rG   r   ÚregisterFontÚFontr&   )r"   r[   r\   r   r   r+   s   &&&&&&r%   Ú__init__Ú SingleByteEncodingChart.__init__…   s‚   € àˆŒØ ŒØ(ÔØŸ™¨Õ+¨d×.?Ñ.?Õ?ˆŒØ&ÔØŒØŒØˆŒÜ×Ò¤
§¢°·±Ø04·±Ø04×0AÑ0Aó!Cô 	"ð
 	�‰Ör(   c                óÞ  a€ V P                  4        R .^ ,          \        \        \        \        \	        ^ R4      4      4      4      ,           pV P
                  p\        P                  W"4      p\        P                  ! V4      ^,          oV3R lpV Uu. uF
  qC! V4      NK  	  ppV P                  V4       V P                  P                  V P                  V P                  4       R # u upi )NrY   c                 ó2   <€ V f   R # S! V RR7      ^ ,          # )NÚreplace)Úerrors© )ÚtxtÚdecoders   &€r%   Ú
decodeFuncÚ0SingleByteEncodingChart.draw.<locals>.decodeFunc¢   s   ø€ ØŠ{Ùá˜s¨9Ô5°aÕ8Ð8r(   )rJ   ÚlistÚmapr   r   r\   Úadobe2codecÚgetÚcodecsÚlookuprB   r8   Úgridr!   r   )r"   r>   ÚencNamerh   rA   rg   s   &    @r%   ÚdrawÚSingleByteEncodingChart.draw—   s®   ø€ Ø�‰ÔØ�6˜B•;¤¤c¬(´D¼¸rÀ3»Ó4HÓ&IÓ!JÕJˆð
 ×#Ñ#ˆä—/‘/ 'Ó3ˆÜ—-’- Ó(¨Õ+ˆõ	9ñ .6Ó6©X r�J˜r–N©XˆÐ6ð 	�‰�xÔ Ø�	‰	�‰�t—z‘z 4§:¡:Ö.ùò 7s   ÂC*)r   r   r   r\   r[   r:   r+   rG   N)Ú	Helveticar   é   é   é   )rM   rN   rO   rP   r_   rr   rR   rS   rT   s   @r%   rW   rW   „   s   ø‡ € ô÷$/ð /r(   rW   c                   ó6   a € ] tR t^°t o RtR tR tR tRtV t	R# )ÚKutenRowCodeChartaV  Formats one 'row' of the 94x94 space used in many Asian encodings.aliases

These deliberately resemble the code charts in Ken Lunde's "Understanding
CJKV Information Processing", to enable manual checking.  Due to the large
numbers of characters, we don't try to make one graphic with 10,000 characters,
but rather output a sequence of these.c                ó¢  € Wn         ^^V n        ^V n        ^V n        ^V n        . ROV n        ^ V n        W n        W0n         \        P                  ! V P                  V P                  4      p\        P                  ! V4       T P                  R,           T P                  ,           T n        T P                  4        R#    RT n        RT n         LM; i)é^   rt   r   rZ   N)Ú00Ú20Ú40Ú60Ú80)r#   r   r   r   r   rG   r+   r[   r\   r   ÚCIDFontr   r]   r:   r&   ©r"   r#   r[   r\   Úfonts   &&&& r%   r_   ÚKutenRowCodeChart.__init__¹   s©   € ØŒØˆŒØˆŒØˆÔØˆŒ	Ú3ˆŒØˆŒØ ŒØ(Ôð	2ä×#Ò# D§M¡M°4×3DÑ3DÓEˆDÜ×#Ò# DÔ)ð
 Ÿ™¨Õ+¨d×.?Ñ.?Õ?ˆŒØ�‰Öøð	2à'ˆDŒMØ 1ˆDÖúó   Á AB< Â<Cc                ó  € . pV P                   P                  R4      R8”  dP   \        ^^_4       F=  p\        V^ ,           4      \        V^ ,           4      ,           pVP	                  V4       K?  	  V# VP	                  R.^^,          4       V# )z1Works out the character values for this kuten rowÚEUCNéÿÿÿÿ©r\   Úfindr   r   r    )r"   r#   Úcellsr$   rA   s   &&   r%   ÚmakeRowÚKutenRowCodeChart.makeRowÏ   sx   € àˆØ×Ñ×!Ñ! %Ó(¨2Ô-ä˜Q –|�Ü˜c C�iÓ(¬8°C¸µGÓ+<Õ<�Ø—‘˜RÖ ñ $ð ˆð �L‰L˜$˜ "�Ô%Øˆr(   c                ó  € V P                  R V P                  ,          R7       R.V P                  V P                  4      ,           pV P                  V4       V P                  P                  V P                  V P                  4       R# )zR%d©rH   N©rJ   r#   rŒ   rB   r8   rp   r!   r   ©r"   r>   s   & r%   rr   ÚKutenRowCodeChart.drawß   sZ   € Ø�‰ ¨¯©Õ!1ˆÔ2ð �6˜DŸL™L¨¯©Ó2Õ2ˆØ�‰�xÔ Ø�	‰	�‰�t—z‘z 4§:¡:Ö.r(   ©
r   r   r   r\   r[   r:   r+   r#   rG   r   N©
rM   rN   rO   rP   rQ   r_   rŒ   rr   rR   rS   rT   s   @r%   ry   ry   °   s   ø‡ € ñ.òò,÷ 	/ð 	/r(   ry   c                   ó6   a € ] tR t^ët o RtR tR tR tRtV t	R# )ÚBig5CodeChartz·Formats one 'row' of the 94x160 space used in Big 5

These deliberately resemble the code charts in Ken Lunde's "Understanding
CJKV Information Processing", to enable manual checking.c                ó¢  € Wn         ^ V n        ^V n        ^V n        ^
V n        ^V n        W n        W0n        . ROV n         \        P                  ! V P                  V P                  4      p\        P                  ! V4       T P                  R,           T P                  ,           T n        T P                  4        R#    RT n        RT n         LM; i)é    rt   r   rZ   N)
Ú4Ú5Ú6Ú7ÚAÚBÚCÚDÚEÚF)r#   r   r   r   r   r+   r[   r\   rG   r   r�   r   r]   r:   r&   r‚   s   &&&& r%   r_   ÚBig5CodeChart.__init__ð   s©   € ØŒØˆŒØˆŒØˆÔØˆŒ	ØˆŒØ ŒØ(ÔÚBˆŒð	2ä×#Ò# D§M¡M°4×3DÑ3DÓEˆDÜ×#Ò# DÔ)ð
 Ÿ™¨Õ+¨d×.?Ñ.?Õ?ˆŒØ�‰Öøð	2à'ˆDŒMØ 1ˆDÖúr…   c                ó.  € . pV P                   P                  R4      R8”  dZ   R FQ  p\        ^4       F?  pV^,          V,           p\        V4      \        V4      ,           pVP	                  V4       KA  	  KS  	  V# VP	                  R.^ ,          4       V# )zDWorks out the character values for this Big5 row.
Rows start at 0xA1ÚB5Nrˆ   )
é   é   é   é   é
   é   é   é   rv   é   r‰   )r"   r#   r‹   ÚyÚxr$   rA   s   &&     r%   rŒ   ÚBig5CodeChart.makeRow  s…   € ð ˆØ×Ñ×!Ñ! $Ó'¨"Ô,ã0�Ü˜rž�AØ˜B�$˜q�&�CÜ! #›¬°#«Õ6�BØ—L‘L Ö$ó #ñ 1ð ˆð �L‰L˜$˜ #�Ô&Øˆr(   c                ó  € V P                  R V P                  ,          R7       V P                  V P                  4      pV P                  V4       V P                  P                  V P                  V P                  4       R# )r*   r�   Nr�   r‘   s   & r%   rr   ÚBig5CodeChart.draw  sQ   € Ø�‰ ¨¯©Õ 1ˆÔ2à—<‘< §¡Ó)ˆØ�‰�xÔ Ø�	‰	�‰�t—z‘z 4§:¡:Ö.r(   r“   Nr”   rT   s   @r%   r–   r–   ë   s   ø‡ € ñ@òò*÷ /ð /r(   r–   c           	     óÒ  € VP                  4         \        P                  ! V4      pVP                  R4       VP                  W#\        P                  ! W^4      ^^ ^R7       VP                  ^ 4       VP                  V^^4       VP                  W#V 4       VP                  4        R#   \         d0    \        P
                  ! T4      p\        P                  ! T4        L½i ; i)z™Helper for stringwidth tests on Asian fonts.

Registers font if needed.  Then draws the string,
and a box around it derived from the stringWidth functionrE   r1   N)Ú	saveStater   ÚgetFontÚKeyErrorr   ÚUnicodeCIDFontr]   r;   r<   ÚstringWidthr9   Ú
drawStringÚrestoreState)ÚmsgÚcanvasr°   r¯   r:   rƒ   s   &&&&& r%   ÚhBoxTextr¾     sÁ   € ð
 ×ÑÔð&Ü×!Ò! (Ó+ˆð
 ×Ñ�sÔØ
‡K�K�”J×*Ò*¨3¸"Ó=¸bÈÈq€KÔQØ
×Ñ�qÔØ
‡N�N�8˜R Ô#Ø
×Ñ�a˜#ÔØ
×ÑÖøô ô &Ü×&Ò& xÓ0ˆÜ×Ò Ö%ð&ús   ’B, Â,7C&Ã%C&c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )Ú
CodeWidgeti1  z Block showing all the charactersc                ó>   € ^ V n         ^ V n        ^ V n        ^ V n        R# )é    N)r°   r¯   r   r   )r"   s   &r%   r_   ÚCodeWidget.__init__3  s   € ØˆŒØˆŒØˆŒ
ØˆŽr(   c                óX  € V P                   R ,          pV P                  R ,          p\        4       pVP                  \	        V P
                  V P                  V P                   V P                  R\        P                  R7      4       \        ^4       F”  p\        ^4       F‚  pV^,          V,           pV^ 8”  g   K  \        V P
                  WA,          ,           V P                  V P                  WR,          ,
          ,           \        V4      4      pVP                  V4       K„  	  K–  	  V# )g      0@N)Ú	fillColorÚstrokeColor)r   r   r   Úaddr   r°   r¯   r
   Úblackr   r   r   )r"   ÚdxÚdyÚgr°   r¯   Ú	charValueÚss   &       r%   rr   ÚCodeWidget.draw9  sÐ   € Ø�Z‰Z˜$ÕˆØ�[‰[˜4ÕˆÜ‹GˆØ	�‰Œd�4—6‘6˜4Ÿ6™6 4§:¡:¨t¯{©{Ø!¬v¯|©|ô=ô 	>ä�r–ˆAÜ˜2–Y�Ø �F Q�J�	Ø˜r–>Ü˜tŸv™v¨­�Ø#Ÿv™v¨¯©°qµtÕ);Õ<¼hÀyÓ>QóS�Aà—E‘E˜!–Hó ñ ð ˆr(   )r   r   r°   r¯   N)	rM   rN   rO   rP   rQ   r_   rr   rR   rS   rT   s   @r%   rÀ   rÀ   1  s   ø‡ € Ù*ò÷ð r(   rÀ   c                  óT  € \        R 4      p V P                  R^4       V P                  ^HRR4       \        4       pVP	                  V ^HR4       \        ^ R7      pVP	                  V ^HR4       \        ^^ R7      pVP	                  V ^H^d4       V P                  4        \        R4       R	# )
zcodecharts.pdfzHelvetica-Boldiî  zTesting code page chartsiô  )r   i,  )r   r+   zsaved codecharts.pdfN)r   r9   rº   rW   ÚdrawOnÚsaveÚprint)ÚcÚcc1Úcc2Úcc3s       r%   Útestr×   M  s�   € ÜÐÓ €AØ‡I�IÐ Ô#Ø‡L�L��SÐ4Ô5Ü
!Ó
#€CØ‡J�Jˆq�"�cÔä
!¨bÔ
1€CØ‡J�Jˆq�"�cÔä
!¨b°aÔ
8€CØ‡J�Jˆq�"�cÔð ‡F�F„HÜ	Ð
 Ö!r(   Ú__main__)Ú__version__rQ   rn   Úreportlab.pdfgen.canvasr   Úreportlab.platypusr   Úreportlab.pdfbaser   r   Úreportlab.graphics.shapesr   r   r   Úreportlab.graphics.widgetbaser	   Úreportlab.libr
   Úreportlab.lib.utilsr   rl   r   rW   ry   r–   r¾   rÀ   r×   rM   re   r(   r%   Ú<module>rá      s­   ðð
 €ð	9€ó å *Ý 'ß 2ß 9Ñ 9Ý 0Ý  Ý (ð �iØ�zØ�ØˆXð	€ôd*�Hô d*ôL)/˜mô )/ôX8/˜ô 8/ôv//�Mô //òdô(�ô ò8"ð: ˆZÔÙ†Fñ r(   