ó
    ùŠÂj�9  ã                   ó@  • % S r SSKrSSKJr  SSKJrJrJrJrJ	r	J
r
Jr  SSKJrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJr  SSKJrJrJrJrJrJr  \R>                  SS S:¼  a  SSKJ r   OSSK!J r    SSK"J#r#J$r$  \S   r&\ \'S'   Sr(\)\'S'    S,S\
\*\\   \4   S\)S\&S\)S\	\&\+4   4
S jjr,S\-S\	\)\)4   S\)S\-4S jr.S\*S\	\)\)4   S\-S\#RF                  4S  jr/S\S\	\\\\4   4S! jr0S\	\)\)4   S\-S\&S\*S"\)S#\*S\	\#RF                  \*\*\+4   4S$ jr1S\	\)\)4   S\-S\&S\*S"\)S\	\#RF                  \*\*\+4   4S% jr2S&\#RF                  S'\\*\4   S(\S\
\*\\   \4   S)\+S\#RF                  4S* jr3S'\\*\4   S"\)S\
\*\\   \4   S\	\&\+4   4S+ jr4g! \% a	    \%" S5      ef = f)-z9Code in here is only used by pypdf.filters._xobj_to_imageé    N)ÚBytesIO)ÚAnyÚDictÚListÚLiteralÚTupleÚUnionÚcasté   )Úcheck_if_whitespace_onlyÚlogger_warning)ÚColorSpaces)ÚFilterTypes)ÚImageAttributes)ÚEmptyImageDataErrorÚPdfReadError)ÚArrayObjectÚDecodedStreamObjectÚEncodedStreamObjectÚ
NullObjectÚTextStringObjectÚis_null_or_noneé   )é   é
   )Ú	TypeAlias)ÚImageÚUnidentifiedImageErrorz]pillow is required to do image extraction. It can be installed via 'pip install pypdf[image]')	Ú Ú1ÚRGBÚ2bitsÚ4bitsÚPÚLÚRGBAÚCMYKÚmode_str_typer   ÚMAX_IMAGE_MODE_NESTING_DEPTHÚcolor_spaceÚcolor_componentsÚ	prev_modeÚdepthÚreturnc                 óè  • U[         :”  a  [        S5      e[        U 5      (       a  gSn[        U [        5      (       a  U nGOe[        U [
        5      (       d  [        SU 5      eU S   R                  S5      (       a  SU S   SS	 -   nGOU S   S
:X  a9  U S   R                  5       n[        [        US   5      nUR                  SS5      nOÜU S   S:X  a/  U S   R                  5       n[        XAX#S-   5      u  pgUS;   a  SnXg4$ U S   S:X  a(  U S   R                  5       n[        XAX#S-   5      u  pgUS4$ U S   S:X  aj  U n[        U S   5      nU S   R                  5       nUS:X  a-  US:X  a'  US   S   S:w  a  [        SUS   S    S3[        5        g[        XAX#S-   5      u  pgXg4$ SSSSSSSS .n	U	R                  U5      =(       d%    [        U	R                  5       5      U   =(       d    UnXfS:H  4$ )!zƒ
Returns:
    Image mode, not taking into account mask (transparency).
    ColorInversion is required (like for some DeviceCMYK).

z^Color spaces nested too deeply. If required, consider increasing MAX_IMAGE_MODE_NESTING_DEPTH.)r   Fr   zCannot interpret color spacer   z/Calz/Deviceé   Nú	/ICCBasedr   z/Nz
/Alternateú/Indexed)r!   r'   r$   ú/Separationr   Tz/DeviceNú/DeviceCMYKz/BlackzColor z8 converted to Gray. Please share PDF with pypdf dev team)r%   Tr    r%   r!   r'   r"   r#   )Ú1bitz/DeviceGrayÚpalettez
/DeviceRGBr4   Ú2bitÚ4bit)r)   r   r   Ú
isinstanceÚstrÚlistÚ
startswithÚ
get_objectr
   ÚintÚgetÚ_get_imagemodeÚlenr   Ú__name__Úvalues)
r*   r+   r,   r-   Úcolor_space_strÚicc_profileÚmodeÚinvert_colorÚoriginal_color_spaceÚmode_maps
             ÚO/var/www/website/venv/lib/python3.13/site-packages/pypdf/_xobj_image_helpers.pyr@   r@   *   s\  € ð Ô+Ó+ÜØló
ð 	
ô �{×#Ñ#ØØ€OÜ�+œs×#Ñ#Ø%ŠÜ˜¤T×*Ñ*ÜØ*¨Kó
ð 	
ð 
�Q‰×	"Ñ	" 6×	*Ñ	*Ø# k°!¡n°Q°RÐ&8Ñ8ŠØ	�Q‰˜;Ó	&Ø! !‘n×/Ñ/Ó1ˆÜ¤ [°Ñ%6Ó7ÐØ%Ÿ/™/¨,¸Ó;‰Ø	�Q‰˜:Ó	%Ø% a™.×3Ñ3Ó5ˆÜ+Ø¨yÀ!¹)ó
Ñˆð �?Ó"ØˆDØÐ!Ð!Ø	�Q‰˜=Ó	(Ø% a™.×3Ñ3Ó5ˆÜ+Ø¨yÀ!¹)ó
Ñˆð �TˆzÐØ	�Q‰˜:Ó	%Ø*ÐÜ˜{¨1™~Ó.ÐØ% a™.×3Ñ3Ó5ˆØ˜mÓ+Ð0@ÀAÓ0EØ# AÑ& qÑ)¨XÓ5ÜØÐ1°!Ñ4°QÑ7Ð8Ð8pÐqÜôð Ü+Ø¨yÀ!¹)ó
Ñˆð Ð!Ð!ð ØØØØØØñ*€Hð 	�‰�_Ó%÷ 	Ü�—‘Ó!Ó"Ð#3Ñ4÷	àð 	ð ˜‘ÐÐó    ÚdataÚsizeÚbitsc                 ó,  • SU-  S-
  n[        US   US   -  5      nSnSU-
  n[        US   5       HU  nUSU-
  :w  a
  US-  nSU-
  n[        US   5       H-  nX   U-	  U-  XHXqS   -  -   '   Xb-  nUS:  d  M#  US-  nSU-
  nM/     MW     [        U5      $ )Nr   r   é   )Ú	bytearrayÚrangeÚbytes)	rL   rM   rN   ÚmaskÚbyte_bufferÚ
data_indexÚbitÚyÚxs	            rJ   Ú	bits2byterZ   z   sÁ   € Ø�‰I˜‰?€DÜ˜D ™G d¨1¡gÑ-Ó.€KØ€JØ
ˆd‰(€CÜ�4˜‘7Ž^ˆØ�!�d‘(‹?Ø˜!‰OˆJØ�d‘(ˆCÜ�t˜A‘w–ˆAØ,0Ñ,<ÀÑ,CÀtÑ+KˆK˜A Q¡™K™Ñ(Ø‰KˆCØ�Q�wØ˜a‘�
Ø˜$‘h’ó  ñ	 ô �ÓÐrK   rF   c                 óR  ^•  [         R                  " XU5      nU$ ! [         a€  nUS   US   -  n[        U5      nUS:X  a  [	        S5      UeXe-  S:w  a  UeU[        U 5      -  U-  mSR                  U4S jU 5       5      n[         R                  " XU5      n S nAU$ S nAff = f)Nr   r   z9Data is 0 bytes, cannot process an image from empty data.rK   c              3   óT   >#   • U  H  n[        U4[        T5      -  5      v •  M     g 7f©N)rS   r>   )Ú.0rY   Úks     €rJ   Ú	<genexpr>Ú,_extended_image_frombytes.<locals>.<genexpr>›   s#   øé € Ð;²d°œ˜q˜d¤S¨£V™m×,Ð,²dùs   ƒ%()r   Ú	frombytesÚ
ValueErrorrA   r   Újoin)rF   rM   rL   ÚimgÚexcÚnb_pixÚdata_lengthr_   s          @rJ   Ú_extended_image_frombytesri   Œ   sµ   ø€ ð0Ü�oŠo˜d¨$Ó/ˆð €Jøô ó 0Ø�a‘˜4 ™7Ñ"ˆÜ˜$“iˆØ˜!ÓÜ%ØKóàðð Ñ 1Ó$ØˆIØ”S˜“YÑ Ñ,ˆØ�x‰xÔ;±dÓ;Ó;ˆÜ�oŠo˜d¨$Ó/ŒØ€Jûð0ús   ƒ œ
B&¦A5B!Â!B&c                 ód  • [        U 5      nUS:X  a  S U  5       u  pp4XX44$ U S   n[        U[        5      (       a  UOUR                  5       nUS:X  aM  SU;   aG  U S   R                  5       U S   R                  5       p@UR	                  S5      u  p#[        U5      nXX44$ [        SU S	U  35      e)
Nr0   c              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr]   )r=   )r^   Úvalues     rJ   r`   Ú*__handle_flate__indexed.<locals>.<genexpr>£   s   é € Ð+XÊKÀ5×,<Ñ,<×,>Ð,>ÊKùs   ‚r   r   Ú r   r   z(Expected color space with 4 values, got z: )rA   r9   r:   r=   Úsplitr>   r   )r*   ÚcountÚbaseÚhivalÚlookupÚelement1s         rJ   Ú__handle_flate__indexedru       sÀ   € Ü�Ó€EØ�ƒzÙ+XÉKÓ+XÑ(ˆ˜5Ø %Ð/Ð/ð ˜1‰~€HÜ% h´×4Ñ4‰x¸(×:MÑ:MÓ:O€HØ�ƒz�f Ó(Ø)¨!™n×7Ñ7Ó9¸;Àq¹>×;TÑ;TÓ;V�VØ—n‘n VÓ,‰ˆÜ�E“
ˆØ %Ð/Ð/Ü
ÐAÀ%ÀÈÈ;È-ÐXÓ
YÐYrK   ÚcolorsÚobj_as_textc           
      ó¬  ^^^• SnSn[        U[        5      (       a  US   S:X  a  [        U5      u  p8n	mUS:X  a  Sn[        XS5      nOUS:X  a  Sn[        XS	5      n[	        X U5      mUS:X  Gaá  [        T[
        [        45      (       a  TR                  5       m[        T[        5      (       a  TR                  m[        T[        5      (       a  TR                  5       m S
SS
SSS.[        WSS5      S      u  p«nTR                  S:X  aÕ  SU
-  n[        T5      nXÜ:w  a`  XÜ:  a,  [        SU SU S3[         5        T[#        S/XÍ-
  -  5      -  mO*[%        TUS 5      (       d  [        SU SU S3[         5        TSU mTSU
 TU
S /mSR'                  UU4S j[)        TR*                  S   5       5       5      n[,        R.                  " UTR*                  U5      mGOFTR1                  U5      m[        T5      W	S-   U
-  :w  a  [        SU 3[         5        SmO÷US:X  a0  SR'                  T Vs/ s H  n[#        XÿU/5      PM     sn5      mSnOÁUS:X  a»  / nU4S j[)        SS	[        T5      S	-  -  S	5       5        H|  u  nnnn[3        SSUS-  -
  -  SUS-  -
  -  5      n[3        SSUS-  -
  -  SUS-  -
  -  5      n[3        SSUS-  -
  -  SUS-  -
  -  5      nUR5                  [#        UUU45      5        M~     SR'                  U5      mSnTb  TR7                  TUS9  TR1                  U[8        R:                  :X  a  SOS5      mOJ[        U[>        5      (       d5  US   S":X  a,  [        X4U5      S   nUU:w  a  [,        R.                  " UX5      mUS:X  a  S#nS$nTXvS%4$ s  snf ! [<         a    [        S W S!3[         5        Sm N6f = f)&z\
Process image encoded in flateEncode
Returns img, image_format, extension, color inversion
z.pngÚPNGr   r2   r"   r$   r   r#   r0   )r   r   r   )r   r$   r%   )r   r$   r!   )r0   r$   r'   )r    r%   r$   r!   r'   r   r    z#Not enough lookup values: Expected z, got Ú.Nz!Too many lookup values: Expected rK   c              3   óŒ   >^#   • U  H8  mS R                  UUU4S j[        TR                  S   5       5       5      v •  M:     g7f)rK   c              3   ó`   >#   • U  H#  nTTR                  UT45      S :”  a  SOS   v •  M%     g7f)é   r   r   N)Úgetpixel)r^   rY   Ú
colors_arrre   rX   s     €€€rJ   r`   Ú*_handle_flate.<locals>.<genexpr>.<genexpr>õ   s3   øé € ð â!3˜Að #¨¯©°a¸°VÓ(<¸sÓ(B¡1ÈÖJÚ!3ùs   ƒ+.r   N)rd   rR   rM   )r^   rX   r   re   s    @€€rJ   r`   Ú _handle_flate.<locals>.<genexpr>ô   sD   ùé € ð ò
 0˜ð	 —H‘Hö ä!& s§x¡x°¡{Ô!3ó÷ ð ò 0ùs   „A Ar   zInvalid Lookup Table in r%   r!   r'   c              3   ó2   >#   • U  H  nTXS -    v •  M     g7f)r0   N© )r^   Únrs   s     €rJ   r`   r�   	  s   øé € ð +Ú3V¨a˜˜q q¡5Õ)Ò3Vùs   ƒéÿ   )ÚrawmodezBase z8 not coded please share the pdf file with pypdf dev teamr1   z.tifÚTIFFF) r9   r   ru   rZ   ri   r   r   Úget_datar   Úoriginal_bytesr:   Úencoder@   rF   rA   r   rB   rS   r   rd   rR   rM   r   rb   Úconvertr>   ÚappendÚ
putpaletter   ÚDEVICE_GRAYÚKeyErrorr   )rM   rL   rF   r*   rv   rw   Ú	extensionÚimage_formatrq   rr   ÚnbÚconvÚexpected_countÚactual_countÚarrÚbÚ_rgbÚ_cÚ_mÚ_yÚ_kÚ_rÚ_gÚ_bÚmode2r   re   rs   s                            @@@rJ   Ú_handle_flater¡   ²   s  ú€ ð €IØ€Lô �+œ{×+Ñ+°¸A±À*Ó0LÜ+BÀ;Ó+OÑ(ˆ˜5 &ØˆwƒØˆÜ˜ QÓ'‰Ø	�‹ØˆÜ˜ QÓ'ˆÜ
# D°Ó
5€CØ�jÔ Ü�fÔ2Ô4GÐH×IÑIØ—_‘_Ó&ˆFÜ�fÔ.×/Ñ/Ø×*Ñ*ˆFÜ�fœc×"Ñ"Ø—]‘]“_ˆFðA	Qà Ø"Ø Ø&Ø(ñô ˜T 1 bÓ)¨!Ñ,ñ.‰NˆB�dð �x‰x˜3‹à!" R¡�Ü" 6›{�ØÓ1Ø#Ó4Ü&ØAÀ.ÐAQÐQWÐXdÐWeÐefÐgÜ$ôð ¤%¨¨¨~Ñ/LÑ(MÓ"NÑN™Ü5°f¸^¸_Ð6M×NÑNÜ&Ø?ÀÐ?OÈvÐVbÐUcÐcdÐeÜ$ôð $ O ^Ð4�FØ$ S b˜k¨6°"°#¨;Ð7�
Ø—h‘hõ ô
 # 3§8¡8¨A¡;Ô/óó �ô —o’o d¨C¯H©H°cÓ:’à—k‘k $Ó'�Ü�v“; 5¨1¡9°Ñ"2Ó2Ü"Ð%=¸k¸]Ð#KÌXÔVØ!‘FØ˜S“[à ŸX™XÁÓ&HÂ¸A¤u¨a°A¨YÖ'7ÁÑ&HÓI�FØ ‘Dð ˜V“^Ø�Dô+Ü38¸¸AÄÀVÃÐPQÑAQÑ<RÐTUÔ3Vö+™˜˜B  Bô ! ¨¨B°©H©Ñ!5¸¸RÀ#¹X¹Ñ!FÓG˜Ü  ¨¨B°©H©Ñ!5¸¸RÀ#¹X¹Ñ!FÓG˜Ü  ¨¨B°©H©Ñ!5¸¸RÀ#¹X¹Ñ!FÓG˜ØŸ™¤E¨2¨r°2¨,Ó$7Ö8ñ+ð !ŸX™X d›^�FØ �DØÑ%Ø—N‘N 6°4�NÑ8Ø—+‘+ T¬[×-DÑ-DÓ%D™cÈ%ÓP‰CÜ˜¤Z×0Ñ0°[À±^À{Ó5Rô ˜{°DÓ9¸!Ñ<ˆØ�5‹=Ü—/’/ %¨Ó4ˆCØˆvƒ~Øˆ	ØˆØ�¨Ð.Ð.ùò7 'IøôQ ó 	ÜØ˜�vÐUÐVÜôð ŠFð	ús   Ã#N0 È5N+Î0 OÏOc                 ó  • Sn[         R                  " [        U5      SS9n[        X4U5      u  p'US:X  a  [	        [
        UR                  5      nUS;   nUR                  S:X  a  US:X  a  SnUR                  U:X  d  UR                  U1SS	1:X  a  UnOUUR                  U1SS
1:X  a0  [         R                  " X&R                  UR                  5       5      nOUR                  U5      nUR                  S
:X  a  UR                  S5      nSn	X‰XW4$ )zV
Process image encoded in flateEncode
Returns img, image_format, extension, inversion
z.jp2)ÚJPEG2000)Úformatsr   )r'   r&   r!   r%   r$   r'   r£   )r   Úopenr   r@   r
   r(   rF   rb   rM   Útobytesr‹   )
rM   rL   rF   r*   rv   r�   Úimg1rG   re   r‘   s
             rJ   Ú_handle_jpxr¨   !  sõ   € ð €IÜ�:Š:”g˜d“m¨]Ñ;€DÜ'¨¸TÓBÑ€DØˆrƒzÜ”M 4§9¡9Ó-ˆØ˜yÑ(ˆØ‡y�y�FÓ˜t u›}Øˆà‡y�y�DÓ˜TŸY™Y¨Ð-°#°s°Ó;à‰Ø
�)‰)�TÐ	˜v vÐ.Ó	.ô �oŠo˜d§I¡I¨t¯|©|«~Ó>‰à�l‰l˜4Ó ˆð ‡x�x�6ÓØ�k‰k˜%Ó ˆØ€LØ˜iÐ5Ð5rK   re   Úx_object_objÚlfiltersrG   c                 ó0  ^^^	• UR                  [        R                  U R                  S:X  a$  U[        R
                  [        R                  4;   d  U(       a.  U R                  S:X  a  SS/[        U R                  5       5      -  OS 5      m[        U[        5      (       a  US   R                  5       S:X  a  S m[        U[        5      (       a5  US   R                  5       S:X  a  SS/[        U R                  5       5      -  mTbŽ  [        U4S j[        [        T5      5       5       5      (       db  / n[        S[        T5      S	5       H5  nTU   m	TUS
-      mUR                  UU	4S j[        S5       5       5        M7     U R                  U5      n U $ )Nr'   r%   g      ð?g        r   r2   r3   c              3   ó:   >#   • U  H  nTU   US -  :H  v •  M     g7f)r   Nrƒ   )r^   ÚiÚdecodes     €rJ   r`   Ú _apply_decode.<locals>.<genexpr>c  s    øé € Ð%UÒBT¸Q f¨Q¡i°1°q±5Ö&8ÒBTùs   ƒr   r   c              3   óX   >#   • U  H  n[        S US -  TT-
  -  T-   -  5      v •  M!     g7f)g     ào@N)Úround)r^   ÚjÚdmaxÚdmins     €€rJ   r`   r¯   h  s3   øé € ð ÚKUÀa”�e˜q 5™y¨D°4©KÑ8¸4Ñ?Ñ@×AÐAÊ:ùs   ƒ'*é   )r?   ÚIAÚDECODErF   ÚFTÚ
DCT_DECODEÚ
JPX_DECODErA   Úgetbandsr9   r   r=   ÚallrR   ÚextendÚpoint)
re   r©   rª   r*   rG   Úlutr­   r®   r³   r´   s
          @@@rJ   Ú_apply_decoderÀ   G  sP  ú€ ð ×ÑÜ
�	‰	ð �X‰X˜Ó H´·±ÄÇÁÐ0NÓ$NÞ §¡¨S£ð ˆsˆ”c˜#Ÿ,™,›.Ó)Ò	)ð
 ó€Fô 	�;¤×,Ñ,Ø˜‰N×%Ñ%Ó'¨:Ó5àˆä�;¤×,Ñ,Ø˜‰N×%Ñ%Ó'¨=Ó8à�s�œc #§,¡,£.Ó1Ñ1ˆØÑ¤#Ô%UÄ%ÌÈFËÔBTÓ%U×"UÑ"UØˆÜ�qœ#˜f›+ qÖ)ˆAØ˜!‘9ˆDØ˜!˜a™%‘=ˆDØ�J‰Jõ ÜKPÐQTÌ:óö ñ *ð �i‰i˜‹nˆØ€JrK   c                 óN  • [         R                  U ;   a'  U [         R                     [        R                  :X  a  SnU R	                  SS5      S:  a%  [        U R	                  SS5       S3SS5      u  p4X44$ [        UUS:X  a  [        U5      (       d  SU;  a  S	OUS5      u  p4X44$ )
Nr!   z/BitsPerComponentrP   rW   r   r   r   ÚGrayr   )r¶   ÚCOLOR_SPACEr   Ú
DEVICE_RGBr?   r@   r   )r©   rv   r*   rF   rG   s        rJ   Ú_get_mode_and_invert_colorrÅ   o  s¿   € ô 	�‰˜,Ó&ØœŸ™Ñ(¬K×,BÑ,BÓBð $ˆØ×ÑÐ+¨QÓ/°!Ó3Ü+Ø×ÑÐ 3°QÓ7Ð8¸Ð<¸aÀó
Ñˆð" ÐÐô ,Øð ˜!“ä'¨×4Ñ4Ø kÓ1ñ ð Øó
Ñˆð ÐÐrK   )r   )5Ú__doc__ÚsysÚior   Útypingr   r   r   r   r   r	   r
   Ú_utilsr   r   Ú	constantsr   r   r¸   r   r¶   Úerrorsr   r   Úgenericr   r   r   r   r   r   Úversion_infor   Útyping_extensionsÚPILr   r   ÚImportErrorr(   Ú__annotations__r)   r>   r:   Úboolr@   rS   rZ   ri   ru   r¡   r¨   rÀ   rÅ   rƒ   rK   rJ   Ú<module>rÔ      sÛ  ðÚ ?ã 
Ý ß ?× ?Ñ ?ç <Ý "Ý (Ý ,ß 5÷÷ ð ×Ñ�B�QÐ˜7Ó"Þ å+ðß1ð #Ø>ñ€ˆyó ð %'Ð ˜cÓ &ð ñ	M Ø�s˜D ™I sÐ*Ñ+ðM àðM ð ðM ð ð	M ð
 ˆ=˜$ÐÑõM ð`�Eð   s¨C x¡ð ¸ð Àô ð$Ø
ðØ˜3 ˜8‘_ðØ,1ðà
‡[�[ôð(Z¨ð Z¸¸sÀCÈÈcÐ?QÑ9Rô Zð$l/Ø
��S�‰/ðl/à
ðl/ð ðl/ð ð	l/ð
 ðl/ð ðl/ð ˆ5�;‰;˜˜S $Ð&Ñ'ôl/ð^#6Ø
��S�‰/ð#6à
ð#6ð ð#6ð ð	#6ð
 ð#6ð ˆ5�;‰;˜˜S $Ð&Ñ'ô#6ðL%Ø	�‰ð%à�s˜C�x‘.ð%ð ð%ð �s˜D ™I sÐ*Ñ+ð	%ð
 ð%ð ‡[�[ô%ðPØ�s˜C�x‘.ðØ*-ðØ<AÀ#ÀtÈCÁyÐRUÐBUÑ<Vðà
ˆ=˜$ÐÑõøðe
 ó Ù
ð	=óð ðús   Á3F ÆF