
    [g                        d Z dZddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZ dd	lmZmZ dd
lmZ  ddlm!Z! ddlm"Z# ddlm$Z% ddlm&Z' ddl(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 ddlm7Z7m8Z8  ej9        e:          Z;dZ< ej=        d          Z> G d de?e3          Z@ G d deAe3          ZB G d deB          ZCdeddfdZD G d d eB          ZE G d! d"eE          ZF G d# d$eE          ZG G d% d&eF          ZH	 d/d'ed(ed)edeIe
eI         eeJeIf         f         dee3eJeIeHf         fd*ZK G d+ d,eC          ZL G d- d.eC          ZMdS )0zMathieu Fenniakzbiziqe@mathieu.fenniak.net    N)BytesIO)AnyDictIterableListOptionalTupleUnioncast   )PdfWriterProtocol)
WHITESPACES
StreamTypeb_deprecate_with_replacementdeprecation_with_replacementhex_strlogger_warningread_non_whitespaceread_until_regexskip_over_comment)CheckboxRadioButtonAttributesFieldDictionaryAttributes)FilterTypes)OutlineFontFlag)StreamAttributes)TypArguments)TypFitArguments)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamError   )BooleanObjectFloatObjectIndirectObject
NameObject
NullObjectNumberObject	PdfObjectTextStringObject)Fit)read_hex_string_from_streamread_string_from_streams   +-s   [+-]?(\d+)\s+(\d+)\s+R[^a-zA-Z]c                   >   e Zd Z	 	 ddededeeedf         ee         df         dd fd	Z	de
e         fd
Zdededeef         ddfdZdededeef         ddfdZe	 ddedededeee         eeef         f         dd fd            Zedededd fd            ZdS )ArrayObjectF pdf_destforce_duplicateignore_fields.Nreturnc                 .   	 | j         j        |k    r|s| S n# t          $ r Y nw xY wt          d|                     t                      |                    }| D ]}t          |t                    rF|                    |                    |||          |          }|	                    |j                    ]t          |d          r+|	                    |                    |||                     |	                    |           t          d|          S )clone object into pdf_destr/   clone)indirect_referencepdf	Exceptionr   _reference_cloner/   
isinstanceStreamObjectr7   appendhasattr)selfr1   r2   r3   arrdatadups          Z/var/www/pdf_extract/myenv/lib/python3.11/site-packages/PyPDF2/generic/_data_structures.pyr7   zArrayObject.cloneO   s)   	&*h666 	 	 	D	=$"7"7x"P"PQQ 	! 	!D$-- 
! ++JJx-HH(  

312222w'' !

4::hOOPPPP

4    M3'''    
$$c                      t          |           S )zS
        Emulate DictionaryObject.items for a list
        (index, object)
        )	enumerater@   s    rD   itemszArrayObject.itemsj   s    
     streamencryption_keyc                     |                     d           | D ]-}|                     d           |                    ||           .|                     d           d S )N   [    s    ])writewrite_to_stream)r@   rK   rL   rB   s       rD   rQ   zArrayObject.write_to_streamq   sh     	T 	9 	9DLL  8888UrJ   c                 T    t          ddd           |                     ||           d S NwriteToStreamrQ   3.0.0r   rQ   r@   rK   rL   s      rD   rT   zArrayObject.writeToStreamz   3     	%_6GQQQV^44444rJ   r9   forced_encodingc                    t                      }|                     d          }|dk    rt          d          	 |                     d          }|                                r)|                     d          }|                                )|                     dd           |                     d          }|dk    rn;|                     dd           |                    t          | ||                     |S )Nr"   rN   zCould not read arrayT   ])r/   readr    isspaceseekr>   read_object)rK   r9   rY   rA   tmptok	peekaheads          rD   read_from_streamzArrayObject.read_from_stream   s     mmkk!nn$;;5666	B++a..C++-- %kk!nn ++-- %KKAAID  KKAJJ{63@@AAA	B 
rJ   c                 Z    t          ddd           t                              | |          S NreadFromStreamrd   rU   )r   r/   rd   rK   r9   s     rD   rg   zArrayObject.readFromStream   s.     	%%57I7SSS++FC888rJ   Fr0   N)__name__
__module____qualname__r   boolr
   r	   strr   r7   r   r   rI   r   bytesrQ   rT   staticmethodr   intrd   rg   r0   rJ   rD   r/   r/   N   s        !&AC	( (#( ( U38_d3i=>	(
 
( ( ( (6x}     27c58H2I	   5 527c58H2I5	5 5 5 5  HL  tS$s)T#s(^CD 
	   \0 99!$9	9 9 9 \9 9 9rJ   r/   c                   ,   e Zd Z	 	 ddededeeedf         ee         df         dd fd	Z	d
d dededeeedf         ee         f         ddf
dZ
dedefdZdededefdZddedee         defdZdedefdZedee         fd            Zdee         fdZedee         fd            Zdededeef         ddfdZdededeef         ddfdZe	 ddedededeee         eeef         f         dd fd            Zedededd fd            ZdS )DictionaryObjectFr0   r1   r2   r3   .Nr4   c                 @   	 | j         j        |k    r|s| S n# t          $ r Y nw xY wt          d|                     |                                 |                    }|g }t          |                                          dk    r|                    | |||           |S )r6   rt   Nr   )	r8   r9   r:   r   r;   	__class__lenkeys_cloner@   r1   r2   r3   d__s        rD   r7   zDictionaryObject.clone   s    	&*h666 	 	 	D	  5 5dnn6F6F Q Q
 
  Msxxzz??aJJtXFFF
rE   srcc           
      0   d|vrd|v sd|vrd|v sd|vrd|v s
d|vr3d|v r.t          |          }dD ]}|D ]}g }||v r
|| vrt          |                    |          t                    rt	          d||                   }| }	|t	          d|                    |                                |                    }
|                    ||
f           |	J |
j        |	t          |          <   |
}		 ||k    rd}nt	          d||                   }n# t          $ r d}Y nw xY w||D ]!\  }}|                    |||||gz              "|                                D ]\  }}||vrt          |t                    rUt          |d          sd|_        |                    |||          }|j        J |j        | |                    |          <   s|| vr9t          |d	          r|                    |||          n|| t          |          <   dS )
update the object from src/Next/Prev/N/V))r   r   )r   r   rt   Nr8   r7   )listr<   raw_getr%   r   r;   rv   r>   r8   r&   r:   ry   rI   r=   r?   r7   )r@   r|   r1   r2   r3   lstkobjscur_objprev_objclonscvvvs                  rD   ry   zDictionaryObject._clone   s    M))gnn},,C&&43;;M))dckk //M9 X X X XADSTMM&s{{1~~~FF * AE.AA A BF%1#' 2 ' 8 89J9J9L9Lh W W$ $D !KK$888#+#7#7#76:6MHZ]]3'+H/#*c>>.2GG.23Ewqz.R.RG#, / / /*./ &1  '+ X XFQHHQ/=TUSVCVWWWW9X< IIKK 	 	DAq%%a.. "1&:;; 4/3,?MJJB0<<<.0.CD**++}}  'q'22#AGGHo}MMM!" Z]]+	 	s   5DD$#D$keyc                 8    t                               | |          S rj   )dict__getitem__r@   r   s     rD   r   zDictionaryObject.raw_get   s    c***rJ   valuec                     t          |t                    st          d          t          |t                    st          d          t                              | ||          S Nzkey must be PdfObjectzvalue must be PdfObject)r<   r)   
ValueErrorr   __setitem__r@   r   r   s      rD   r   zDictionaryObject.__setitem__   s\    #y)) 	64555%++ 	86777c5111rJ   c                     t          |t                    st          d          t          |t                    st          d          t                              | ||          S r   )r<   r)   r   r   
setdefaultr   s      rD   r   zDictionaryObject.setdefault  sZ    #y)) 	64555%++ 	86777tS%000rJ   c                 \    t                               | |                                          S rj   )r   r   
get_objectr   s     rD   r   zDictionaryObject.__getitem__	  s$    c**55777rJ   c                     ddl m} |                     dd          }|dS |                                }t	          ||          s ||          }|| t          d          <   |S )a  
        Retrieve XMP (Extensible Metadata Platform) data relevant to the
        this object, if available.

        Stability: Added in v1.12, will exist for all future v1.x releases.
        @return Returns a {@link #xmp.XmpInformation XmlInformation} instance
        that can be used to access XMP metadata from the document.  Can also
        return None if no metadata was found on the document root.
        r   )XmpInformationz	/MetadataN)xmpr   getr   r<   r&   )r@   r   metadatas      rD   xmp_metadatazDictionaryObject.xmp_metadata  s}     	)(((((88K..4&&(((N33 	5%~h//H,4DK(()rJ   c                 2    t          ddd           | j        S )W
        .. deprecated:: 1.28.3

            Use :meth:`xmp_metadata` instead.
        getXmpMetadatar   rU   r   r   rH   s    rD   r   zDictionaryObject.getXmpMetadata#  s      	%%5~wOOO  rJ   c                 2    t          ddd           | j        S )r   xmpMetadatar   rU   r   rH   s    rD   r   zDictionaryObject.xmpMetadata.       	%]NGLLL  rJ   rK   rL   c                 T   |                     d           t          |                                           D ][\  }}|                    ||           |                     d           |                    ||           |                     d           \|                     d           d S )N   <<
rO      
   >>)rP   r   rI   rQ   )r@   rK   rL   r   r   s        rD   rQ   z DictionaryObject.write_to_stream8  s     	Wtzz||,, 	  	 JC777LL!!&.999LLUrJ   c                 T    t          ddd           |                     ||           d S rS   rV   rW   s      rD   rT   zDictionaryObject.writeToStreamC  rX   rJ   r9   rY   c           
      
   dt           dt           dt          t                    dt          dt           f
fddt          dt          dt          ffd}|                     d	          }|d
k    r2t          dt          |                                            d          i }	 t          |           }|dk    r|dk    r&| 
                    dd           t          |            C|st          t                    |dk    r|                     d           n\| 
                    dd           	 t          | |          }t          |           }| 
                    dd           t          | ||          }n# t          $ r}	|(|j        r!t          |	                                          t%          |	                                t&                     t)                      }
|
                    |           |
cY d }	~	S d }	~	ww xY w|                    |          s|||<   nTdt          |                                            d| }||j        rt          |          t%          |t&                     |                                 }t          |           }|dk    r]|                     d          dk    rC|                     d          }|dk    r|                     d          }|dk    |dvrt          d          |dk    r/|                     d          dk    r| 
                    dd           t.          j        |vrt          d          |t.          j                 }t3          |t4                    r?|                                 }|                    |          }| 
                    |d           |                                 }|                     |          |d<   t          |           }|                     d           }||z   d!k    r|                                 }| 
                    d"d           |                     d#          }|d!k    r|d         d d         |d<   n|j        s:| 
                    |d            || |          |d<   |                                 }ne| 
                    |d           t          d$t          |                                            d%|d&|d'          n| 
                    |d           d|v rt8                              |          S t)                      }
|
                    |           |
S )(Npp1rem_gensr9   r4   c                     |j         |d                  }|D ]"}|||         k    r| ||         k     r||         }#t          |          dk    r|S  | ||dd          |          S )Nr   r"   )xrefrw   )r   r   r   r9   loget_next_obj_poss         rD   r   z;DictionaryObject.read_from_stream.<locals>.get_next_obj_posO  s|     !%A  !99QqT1B8}}!!	''2x|SAAArJ   rK   c                     |                                  dt          |j                  |          dz
  }|                                  }|                     ||                                  z
            }|                    d          }|dk     rt          d| d          |                     ||z   dz              |d |dz
           S )Nl        r"   	   endstreamr   z6Unable to find 'endstream' marker for obj starting at .	   )tellr   r   r]   findr    r_   )rK   r9   eoncurrrwr   r   s         rD   read_unsized_from_steamzBDictionaryObject.read_from_stream.<locals>.read_unsized_from_steam[  s    ""6;;==%chMMPQQC;;==DS6;;==011B%%A1uu"TTTTT   KKq1%%%gAg;rJ   r      <<zDictionary read error at byte z: stream must begin with '<<'T       %r[   r"      >z+Multiple definitions in dictionary at byte z	 for key    s   s   treamrO   )r      z)Stream data must be followed by a newliner   r   zStream length not definedr   __streamdata__   r   ir   z7Unable to find 'endstream' marker after stream at byte z (nd='z', end='z').)rr   r   r   r   rp   r]   r    r   r   r   r_   r   r!   r   r`   r:   strict__repr__r   rk   rt   updater   SALENGTHr<   r%   r   r=   initialize_from_dictionary)rK   r9   rY   r   ra   rB   rb   r   r   excretvalmsgposr   eollengthtpstartendstreamendr   s                        @rD   rd   z!DictionaryObject.read_from_streamI  s   
	B
	B
	B'+Cy
	B7:
	B
	B 
	B 
	B 
	B 
	B 
	B	J 	S 	U 	 	 	 	 	 	 kk!nn%<<.1G1G . . .    "&	.%f--Cg~~B"""!&))) C$%ABBBd{{AKKA!&#..)&11B"""#FCAA   ?sz?&s||~~666s||~~x888)++d### 88C== 
.!S		>v{{}}--> >8;> >  ?sz?&s+++sH---M&	.P kkmm''99Q833++a..C ++kk!nn ++.(($%PQQQe||;;q>>U**KKA&&&y$$$%@AAA")_F&.11 "KKMM//Aq!!![[]]F%+[[%8%8D!"#F++A{{1~~HH-- kkmmC###kk!nn,&&-12B-CCRC-HD)** 	KK***-D-DVS-Q-QD)* ++--CCKKQ'''&X"6;;==11X X9AX XMPX X X  ' .0 KKQt##::4@@@%''FMM$Ms    -AE4 4
G>>A5G93G>9G>c                 Z    t          ddd           t                              | |          S rf   )r   rt   rd   rh   s     rD   rg   zDictionaryObject.readFromStream  s.     	%%57I7SSS00===rJ   ri   rj   )rk   rl   rm   r   rn   r
   r	   ro   r   r7   ry   r   r   r   r   r   r)   r   propertyr   r   r   r   rp   rQ   rT   rq   r   rr   rd   rg   r0   rJ   rD   rt   rt      s        !&AC	 #  U38_d3i=>	
 
   ,>> $> 	>
 U38_d3i78> 
> > > >@+3 +3 + + + +2s 23 23 2 2 2 21 1c 1(3- 13 1 1 1 18s 8y 8 8 8 8 hy1    X,	!	)		! 	! 	! 	! !Xi0 ! ! ! X!	 	27c58H2I			 	 	 	5 527c58H2I5	5 5 5 5  HLE EEE tS$s)T#s(^CDE 
	E E E \EN >>!$>	> > > \> > >rJ   rt   c            
           e Zd ZddZdefdZdefdZdefdZde	e         fdZ
ded	eddfd
Zded	eddfdZdeded	eddfdZdeddfdZdededededdf
dZdeddfdZddZddZddZdS )
TreeObjectr4   Nc                 :    t                               |            d S rj   )rt   __init__rH   s    rD   r   zTreeObject.__init__  s    !!$'''''rJ   c                 L    t          ddd           |                                 S )NhasChildrenhas_children4.0.0)r   r   rH   s    rD   r   zTreeObject.hasChildren  s&    "=.'JJJ  """rJ   c                 
    d| v S )N/Firstr0   rH   s    rD   r   zTreeObject.has_children  s    4rJ   c                 *    |                                  S rj   )childrenrH   s    rD   __iter__zTreeObject.__iter__  s    }}rJ   c              #   :  K   |                                  sd S | t          d                   }|                                }	 |V  || t          d                   k    rd S |                    t          d                    }|d S |                                }Z)Nr   T/Lastr   )r   r&   r   r   )r@   	child_refchilds      rD   r   zTreeObject.children  s        "" 	FH--.	$$&&	+KKKZ00111		*W"5"566I ((**E	+rJ   r   r9   c                 T    t          ddd           |                     ||           d S )NaddChild	add_childrU   )r   r   r@   r   r9   s      rD   r   zTreeObject.addChild  s.    $ZgFFFuc"""""rJ   c                 4    |                      |d |           d S rj   )insert_childr   s      rD   r   zTreeObject.add_child  s     %s+++++rJ   beforec                    dt           d t          t          f         dt          dd ffd|                                }|j        }d| vr|| t          d          <   t          d          | t          d          <   || t          d          <   | j        |t          d	          <    | |                    dd
                     d|v r|d= d|v r|d= d S t          d| d                   }|j        |k    rd|v rt          d|d                   }nt          d|          |t          d          <   |j        |t          d          <   | j        |t          d	          <   d|v r|d= || t          d          <    | |                    dd
                     d S |j        |k    	 t          |d         t                    sJ ||d         t          d          <   |d         |t          d          <   n# t          $ r |d= Y nw xY w||t          d          <   ||t          d          <   | j        |t          d	          <    | |                    dd
                     d S )Nparentnr4   c           	      0   | d S t          d|                                           } d| v rjt          t          t          | t	          d                             |z             | t	          d          <    |                     dd           |           d S d S )Nr   /Count/Parent)r   r   r(   rr   r&   r   )r   r   inc_parent_counters     rD   r   z3TreeObject.insert_child.<locals>.inc_parent_counter  s     ~,(9(9(;(;<<F6!!/;fZ%9%9:;;a?0 0z(++, #"6::i#>#>BBBBB	 "!rJ   r   r   r   r   r   r"   r   r   rt   r   )r
   r%   r   rr   r   r8   r&   r(   r   r   r<   rt   r:   )r@   r   r   r9   	child_objprevr   s         @rD   r   zTreeObject.insert_child  s   
	C$
:;
	C@C
	C
	C 
	C 
	C 
	C 
	C 
	C $$&&	( 4).DH%%&)5aDH%%&(-DG$$%/3/FIj++,tY]]8Q%?%?@@@)##g&)##g&F*DM::D%//$L$w-88,0u,E,EZ(()151H	*W--.373J	*Y//0i''!'*,1Z(()""4x)C)CDDD %//	#d7m-=>>>>>16DM*W--.-1']Ij))** 	# 	# 	#'"""	#)-	*W%%&$)Z  !+/+B	*Y''(4x!;!;<<<<<s   %AG3 3HHc                 R    t          ddd           |                     |           d S )NremoveChildremove_childrU   )r   r  )r@   r   s     rD   r  zTreeObject.removeChild4  s.    $]NGLLL%     rJ   r   prev_refcurlastc                 "   |                     t          d          d          }||rm|                                }|t          d          = || t          d          <   t          | t          d                   dz
            | t          d          <   dS | t          d                   dk    sJ | t          d          = | t          d          = t          d          | v r| t          d          = dS dS |r9|                                }||t          d          <   ||t          d          <   n*||k    sJ |t          d          = || t          d          <   t          | t          d                   dz
            | t          d          <   dS )z;Adjust the pointers of the linked list and tree node count.r   Nr   r   r   r"   r   )r   r&   r   r(   )r@   r   r  r  r  next_refnext_objs          rD   _remove_node_from_treez!TreeObject._remove_node_from_tree8  s    77:g..55< 2#..00Z001-5Z))*-9H--.2. .Z))*** Jx001Q6666H--.H--.g&&$..Z00111 /.  	5#..0008G,,-,4Z(()) d{{{{G,,-,4Z(())5d:h;O;O6PST6T)U)UDH%%&&&rJ   c                    |                                 }|j        }t          d          |vrt          d          |t          d                   | k    rt          d          d}d }d }| t          d                   }|                                 }| t          d                   }|                                 }	|f||k    r|                     ||||	           d}nE|}|}t          d          |v r*|t          d                   }|                                 }nd }d }|f|st          d	          t          |           d S )
Nr   /Removed child does not appear to be a tree itemz*Removed child is not a member of this treeFr   r   Tr   z"Removal couldn't find item in tree)r   r8   r&   r   r	  _reset_node_tree_relationship)
r@   r   r   foundr  r   cur_refr  last_refr  s
             rD   r  zTreeObject.remove_child[  sn   $$&&	,i  	11NOOOz),,-55IJJJ!%j&:&:!;(/(:(:(<(<
7++,""$$oi++D(CFFF HD'""c))j112((** o   	CABBB%i00000rJ   c                     t          d          | vrt          d          t          d| d                                       |            dS )z:
        remove the object from the tree it is in
        r   r  r   N)r&   r   r   r  rH   s    rD   remove_from_treezTreeObject.remove_from_tree  sN     i  ,,NOOOtI//<<TBBBBBrJ   c                 P    t          ddd           |                                  d S )N	emptyTree
empty_treer   )r   r  rH   s    rD   r  zTreeObject.emptyTree  s*    ";gFFFrJ   c                     | D ]%}|                                 }t          |           &t          d          | v r| t          d          = t          d          | v r| t          d          = t          d          | v r| t          d          = d S d S )Nr   r   r   )r   r  r&   )r@   r   r   s      rD   r  zTreeObject.empty_tree  s     	5 	5E((**I))4444h4''Z))*h4''Z))*g$&&Z(())) '&rJ   r4   N)rk   rl   rm   r   rn   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r0   rJ   rD   r   r     s       ( ( ( (#T # # # # d        #    +(3- + + + +#c # # # # # #,s ,): ,t , , , ,5=# 5=s 5=9J 5=t 5= 5= 5= 5=n! ! ! ! ! !!V!V#&!V-0!V8;!V	!V !V !V !VF#1# #1$ #1 #1 #1 #1JC C C C   
* 
* 
* 
* 
* 
*rJ   r   r   r4   c                     | t          d          = t          d          | v r| t          d          = t          d          | v r| t          d          = dS dS )z}
    Call this after a node has been removed from a tree.

    This resets the nodes attributes in respect to that tree.
    r   r   r   N)r&   )r   s    rD   r  r    sh     	*Y''('i''j))*'i''j))*** ('rJ   c                       e Zd ZddZdedededeee	df         e
e	         f         ddf
 fd	Zdef fd
Zeded         fd            Zej        dd            Zedefd            Zej        deddfd            Zdedede	ef         ddfdZedee	ef         ded         fd            Zedee	ef         ded         fd            ZddZddZ xZS )r=   r4   Nc                 "    d | _         d | _        d S rj   )_StreamObject__datadecoded_selfrH   s    rD   r   zStreamObject.__init__  s    %)=ArJ   r|   r1   r2   r3   .c                    t          d|          j        | _        	 t          d|          j        }|d| _        n|                    |d|          | _        n# t          $ r Y nw xY wt                                          ||||           dS )r~   r=   NT)r   _datar  r7   r:   superry   )r@   r|   r1   r2   r3   r  rv   s         rD   ry   zStreamObject._clone  s     .#..4
	44AL#$(!!$0$6$6x}$U$U! 	 	 	D	sHo}EEEs   ;A 
A&%A&c                 v    t                                                      }|t          | j                  z  }|S rj   )r  hash_value_datar   r  )r@   rB   rv   s     rD   r   zStreamObject.hash_value_data  s/    ww&&((4:rJ   DecodedStreamObjectc                 2    t          ddd           | j        S NdecodedSelfr  rU   r   r  rH   s    rD   r$  zStreamObject.decodedSelf      $]NGLLL  rJ   r   c                 6    t          ddd           || _        d S r#  r%  r@   r   s     rD   r$  zStreamObject.decodedSelf  "    $]NGLLL!rJ   c                     | j         S rj   r  rH   s    rD   r  zStreamObject._data  s
    {rJ   c                     || _         d S rj   r+  r(  s     rD   r  zStreamObject._data  s    rJ   rK   rL   c                    t          t          | j                            | t          t          j                  <   t                              | ||           | t          j        = |                    d           | j        }|rddl	m
}  |||          }|                    |           |                    d           d S )Ns   
stream
r   )RC4_encrypts
   
endstream)r(   rw   r  r&   r   r   rt   rQ   rP   	_securityr.  )r@   rK   rL   rB   r.  s        rD   rQ   zStreamObject.write_to_stream  s     '33tz??&C&CZ	""#((v~FFFO]###z 	5//////;~t44DT^$$$$$rJ   rB   )EncodedStreamObjectr!  c                 6    t                               |           S rj   )r=   r   )rB   s    rD   initializeFromDictionaryz%StreamObject.initializeFromDictionary  s     66t<<<rJ   c                     t           j        | v rt                      }nt                      }| d         |_        | d= | t           j        = |                    |            |S )Nr   )r   FILTERr0  r!  r  r   r   )rB   r   s     rD   r   z'StreamObject.initialize_from_dictionary  s_    
 9(**FF(**F,-!"OdrJ   r0  c                 L    t          ddd           |                                 S )NflateEncodeflate_encoderU   )r   r7  rH   s    rD   r6  zStreamObject.flateEncode  s&    $]NGLLL  """rJ   c                    ddl m} t          j        | v r| t          j                 }t	          |t
                    r.|                    dt          t          j	                             nWt                      }|
                    t          d                     |
                    |           |}nt          d          }t                      }||t          t          j                  <   |                    | j                  |_        |S )Nr   )FlateDecoder   z/FlateDecode)filtersr9  r   r4  r<   r/   insertr&   FTFLATE_DECODEr>   r0  encoder  )r@   r9  fnewfr   s        rD   r7  zStreamObject.flate_encode  s    ))))))9RYA![)) Jr778888"}}J~66777A>**A$&&()z")$$%"))$*55rJ   r  )r   r!  r4   N)r4   r0  )rk   rl   rm   r   rt   r   rn   r
   r	   ro   r   ry   rp   r   r   r   r$  setterr   r  r   rQ   rq   r   r2  r   r6  r7  __classcell__)rv   s   @rD   r=   r=     sD       B B B B $ 	
 U38_d3i78 
     (      
 !X&;< ! ! ! X! " " " " s    X \3 4    \% %27c58H2I%	% % % % =38n=	;	<= = = \=
 38n	;	<   \# # # #       rJ   r=   c                   F    e Zd ZdefdZdedefdZdefdZdeddfdZdS )r!  r4   c                     | j         S rj   r  rH   s    rD   get_datazDecodedStreamObject.get_data  s
    zrJ   rB   c                     || _         d S rj   rE  r@   rB   s     rD   set_datazDecodedStreamObject.set_data  s    


rJ   c                 2    t          ddd           | j        S NgetDatarF  rU   )r   r  rH   s    rD   rL  zDecodedStreamObject.getData  s    $Y
GDDDzrJ   Nc                 R    t          ddd           |                     |           d S NsetDatarI  rU   r   rI  rH  s     rD   rO  zDecodedStreamObject.setData  s,    $Y
GDDDdrJ   )rk   rl   rm   r   rF  rI  rL  rO  r0   rJ   rD   r!  r!    s        #    S S        C D      rJ   r!  c                       e Zd ZddZeded         fd            Zej        deddfd            Zde	de
ef         fdZde	de
ef         fd	Zd
eddfdZd
eddfdZdS )r0  r4   Nc                     d | _         d S rj   )r  rH   s    rD   r   zEncodedStreamObject.__init__$  s    =ArJ   r!  c                 2    t          ddd           | j        S r#  r%  rH   s    rD   r$  zEncodedStreamObject.decodedSelf'  r&  rJ   r   c                 6    t          ddd           || _        d S r#  r%  r(  s     rD   r$  zEncodedStreamObject.decodedSelf,  r)  rJ   c                 H   ddl m} | j        | j                                        S t	                      } ||           |_        t          |                                           D ]/\  }}|t          j	        t          j
        t          j        fvr|||<   0|| _        |j        S )Nr   )decode_stream_data)r:  rV  r  rF  r!  r  r   rI   r   r   r4  DECODE_PARMS)r@   rV  decodedr   r   s        rD   rF  zEncodedStreamObject.get_data1  s    000000($--/// *++G..t44GM"4::<<00 ) )
Ury")R_EEE#(GCL 'D= rJ   c                 L    t          ddd           |                                 S rK  )r   rF  rH   s    rD   rL  zEncodedStreamObject.getDataB  s"    $Y
GDDD}}rJ   rB   c                      t          d          )Nz7Creating EncodedStreamObject is not currently supported)r    rH  s     rD   rI  zEncodedStreamObject.set_dataF  s    TUUUrJ   c                 N    t          ddd           |                     |          S rN  rP  rH  s     rD   rO  zEncodedStreamObject.setDataI  s&    $Y
GDDD}}T"""rJ   r  )rk   rl   rm   r   r   r   r$  rA  r!  r
   ro   rp   rF  rL  r   rI  rO  r0   rJ   rD   r0  r0  #  s$       B B B B !X&;< ! ! ! X! "!4 " " " " "!%c5 01 ! ! ! !"tS%/0    VS VT V V V V#C #D # # # # # #rJ   r0  c                   t   e Zd Z	 ddedededeee         eeef         f         ddfdZ		 	 dd	ed
e
deeedf         ee         df         dd fdZded	ed
e
deeedf         ee         f         ddf
dZdeddfdZdedeeef         fdZedefd            Zej        deeef         ddfd            ZdS )ContentStreamNrK   r9   rY   r4   c                    || _         g | _        ||                                }t          |t                    rqd}|D ]\}|t          |                                                                          z  }t          |          dk    s|d         dk    r|dz  }]t          |          }n6|                                }|J t          |          }t          |          }|| _	        | 
                    |           d S d S )NrJ   r   r[   r   )r9   
operationsr   r<   r/   r   rF  rw   r   rY   $_ContentStream__parse_content_stream)	r@   rK   r9   rY   rB   r   stream_bytesstream_datastream_data_bytess	            rD   r   zContentStream.__init__O  s    
 24 &&((F&+.. : & &ABq||~~6688999D4yyA~~bU):):&t}}$oo//"...$&{OO!&'899#2D ''55555 rJ   Fr0   r1   r2   r3   .c           	          	 | j         j        |k    r|s| S n# t          $ r Y nw xY wt          d|                     |                     dd          |                    }|g }|                    | |||           |S )r6   r]  N)r8   r9   r:   r   r;   rv   ry   rz   s        rD   r7   zContentStream.cloneo  s    	&*h666 	 	 	D	 T224>>$3M3MxXX
 
  M

4?MBBB
rE   r|   c                     || _         t          t          d|          j                  | _        t          d|          j        | _        dS )r~   r]  N)r9   r   r   r_  rY   )r@   r|   r1   r2   r3   s        rD   ry   zContentStream._clone  sC     tOS99DEE#OS99I 	rJ   c                 \   |                     dd           g }	 t          |          }|dk    s|dk    rd S |                     dd           |                                s|dv rzt          |t          j        d          }|dk    r:|g k    sJ |                     |          }| j                            |df           nl| j                            ||f           g }nM|d	k    r|d
vr|	                    d          }|d
vn)|                    t          |d | j                             )Nr   TrJ   r[   r"   )   '   "   BI   INLINE IMAGEr   r   r   )r_   r   isalphar   r&   delimiter_pattern_read_inline_imager_  r>   r]   r`   rY   )r@   rK   operandspeekoperatoriis         rD   __parse_content_streamz$ContentStream.__parse_content_stream  sQ   Aq57	Q&v..Ds{{daiiKKA||~~ Q!5!5+FJ4PRVWWu$$ $r>>>>0088BO**B+@AAAAO**Hh+?@@@!HH .00!;;q>>D .00 FD$:N O OPPP3	QrJ   c                    t                      }	 t          |          }|                    dd           |dk    rnUt          || j                  }t          |          }|                    dd           t          || j                  }|||<   |                    d          }|d d         dk    sJ t                      }	 |                    d          }|st          d	          |                    d
          }	|	dk    r|	                    |           nA|	                    |d|	                    |                    |	t          |          z
  d           |                    d          }|                    d          }
|
dk    r||	dz
  |	         t          v r|                    d          }||
z   }d}|t          v r%d}||z  }|                    d          }|t          v %|r|                    dd           nY|                    dd           |	                    |           n+|                    dd           |	                    |           ||                                dS )NTr[   r"      I   r   s   IDi    zUnexpected end of stream   Er   F)settingsrB   )rt   r   r_   r`   r9   r]   r   r    r   rP   rw   r   getvalue)r@   rK   rx  rb   r   r   ra   rB   bufloctok2tok3infohas_q_whitespaces                 rD   rn  z ContentStream._read_inline_image  su    $%%
	"%f--CKKAd{{fdh//C%f--CKKA11E!HSM
	" kk!nn2A2w%yy%	$++d##C ?"#=>>>((4..Cbyy

3 

3qu:&&& C#c((NA...kk!nn{{1~~4<<Ca#$6+$E$E!;;q>>D:D',$+--+/(%{{1~~ +-- ( )B***B***

4((((KKA&&&JJsOOOK%	$L %dmmoo>>>rJ   c                    t                      }| j        D ]'\  }}|dk    r|                    d           t                      }|d                             |d            |                    |                                dd                    |                    d           |                    |d                    |                    d           nR|D ]-}|                    |d            |                    d	           .|                    t          |                     |                    d
           )|                                S )Nrj  ri  rx  r   s   ID rB   s   EIrO   r   )r   r_  rP   rQ   ry  r   )r@   newdataro  rq  dicttextops         rD   r  zContentStream._data  s@   ))"&/ 	! 	!Hh?**e$$$"99$44XtDDDh//11!B$7888f%%%hv.///e$$$$" ( (B&&w555MM$''''bll+++MM%    !!!rJ   r   c                 d    |                      t          t          |                               d S rj   )r`  r   r   r(  s     rD   r  zContentStream._data  s*    ##GBuII$6$677777rJ   rj   ri   )rk   rl   rm   r   r
   ro   r   r   rr   r   rn   r	   r7   rt   r   ry   r   r`  rn  r   rp   r  rA  r0   rJ   rD   r]  r]  N  s       
 HL	6 66 6 tS$s)T#s(^CD	6
 
6 6 6 6F !&AC	   U38_d3i=>	
 
   * $ 	
 U38_d3i78 
   QZ QD Q Q Q Q<:? :?S#X :? :? :? :?x "u " " " X"& \85e, 8 8 8 8 \8 8 8rJ   r]  rK   r9   rY   c           
      ~   |                      d          }|                     dd           |dk    rt          j        | |          S |dk    r]|                      d          }|                     dd           |dk    rt                              | ||          S t          | |          S |dk    rt                              | ||          S |d	k    s|d
k    rt          j        |           S |dk    rt          | |          S |dk    r=|                      d          dk    r$|                     dd           t                      S |dk    rt          j        |           S |dk    ru|dvr;|                      d          }t          |          dk    rt          d          |dv;t          |           }|                     dd           t          | ||          S |dv r||                      d          }|                     t          |           d           t                              |          t!          j        | |          S t#          j        |           S |                     dd           t%          d|d|                                  d|                      d                                                     )Nr"   r[      /   <r   r  r   rN      t   f   (   e   s   endobji   nr   rk  r   zFile ended unexpectedly.s   0123456789+-.   iz(Invalid Elementary Object starting with z @z: P   )r]   r_   r&   rd   rt   r,   r/   r#   r-   r'   rw   r!   r   r`   IndirectPatternmatchr%   r(   r    r   r   )rK   r9   rY   rb   rp  s        rD   r`   r`     s   
 ++a..C
KKA
d{{*63777	{{1~~B5==#44VS/RRR.vGGG	++FCIII	t-f555	&v???	Q944B||	*6222	''++a..C 3xx1}}$%?@@@ '' "&))B63888	 	 	 {{2SYYJ"""  &&2!263???0888CmsmmmmQWQ\Q\]_Q`Q`QiQiQkQkmm
 
 	
rJ   c                      e Zd ZdZdeeef         ddfdZede	e
         fd            Zede	e
         fd            Zede	e         fd            Zede	d	         fd
            Zede	e         fd            Zede	e         fd            Zede	e         fd            Zede	e         fd            Zede	e         fd            Zede	e         fd            Zede	e         fd            Zede	e         fd            Zede	e         fd            Zede	e         fd            Zede	e         fd            ZdS )Fieldz
    A class representing a field dictionary.

    This class is accessed through
    :meth:`get_fields()<PyPDF2.PdfReader.get_fields>`
    rB   r4   Nc                     t                               |            t          j                    t	          j                    z   }|D ]+}	 ||         | t          |          <   # t          $ r Y (w xY wd S rj   )rt   r   r   
attributesr   r&   KeyError)r@   rB   field_attributesattrs       rD   r   zField.__init__E  s    !!$'''%022+6889 	 % 	 	D)-dZ%%&&   	 	s   A  
A-,A-c                 @    |                      t          j                  S )z4Read-only property accessing the type of this field.)r   r   r<  rH   s    rD   
field_typezField.field_typeR       xx14555rJ   c                 2    t          ddd           | j        S )zX
        .. deprecated:: 1.28.3

            Use :py:attr:`field_type` instead.
        	fieldTyper  rU   )r   r  rH   s    rD   r  zField.fieldTypeW  s     	%[,HHHrJ   c                 @    |                      t          j                  S )z6Read-only property accessing the parent of this field.)r   r   ParentrH   s    rD   r   zField.parenta  s     xx18999rJ   r/   c                 @    |                      t          j                  S )z4Read-only property accessing the kids of this field.)r   r   KidsrH   s    rD   kidsz
Field.kidsf  s     xx16777rJ   c                 @    |                      t          j                  S )z4Read-only property accessing the name of this field.)r   r   TrH   s    rD   namez
Field.namek  s     xx13444rJ   c                 @    |                      t          j                  S )z>Read-only property accessing the alternate name of this field.)r   r   TUrH   s    rD   alternate_namezField.alternate_namep  r  rJ   c                 2    t          ddd           | j        S )z\
        .. deprecated:: 1.28.3

            Use :py:attr:`alternate_name` instead.
        altNamer  rU   )r   r  rH   s    rD   r  zField.altNameu  s      	%Y0@'JJJ""rJ   c                 @    |                      t          j                  S )z
        Read-only property accessing the mapping name of this field. This
        name is used by PyPDF2 as a key in the dictionary returned by
        :meth:`get_fields()<PyPDF2.PdfReader.get_fields>`
        )r   r   TMrH   s    rD   mapping_namezField.mapping_name       xx14555rJ   c                 2    t          ddd           | j        S )zZ
        .. deprecated:: 1.28.3

            Use :py:attr:`mapping_name` instead.
        mappingNamer  rU   )r   r  rH   s    rD   r  zField.mappingName  r   rJ   c                 @    |                      t          j                  S )z
        Read-only property accessing the field flags, specifying various
        characteristics of the field (see Table 8.70 of the PDF 1.7 reference).
        )r   r   FfrH   s    rD   flagszField.flags  s     xx14555rJ   c                 @    |                      t          j                  S )zr
        Read-only property accessing the value of this field. Format
        varies based on field type.
        )r   r   VrH   s    rD   r   zField.value  s     xx13444rJ   c                 @    |                      t          j                  S )z=Read-only property accessing the default value of this field.)r   r   DVrH   s    rD   default_valuezField.default_value  r  rJ   c                 2    t          ddd           | j        S )z[
        .. deprecated:: 1.28.3

            Use :py:attr:`default_value` instead.
        defaultValuer  rU   )r   r  rH   s    rD   r  zField.defaultValue  s     	%^_gNNN!!rJ   c                 @    |                      t          j                  S )z
        Read-only property accessing the additional actions dictionary.
        This dictionary defines the field's behavior in response to trigger events.
        See Section 8.5.2 of the PDF 1.7 reference.
        )r   r   AArH   s    rD   additional_actionszField.additional_actions  r  rJ   c                 2    t          ddd           | j        S )z`
        .. deprecated:: 1.28.3

            Use :py:attr:`additional_actions` instead.
        additionalActionsr  rU   )r   r  rH   s    rD   r  zField.additionalActions  s"     	%%8:NPWXXX&&rJ   )rk   rl   rm   __doc__r   ro   r   r   r   r   r&   r  r  rt   r   r  r  r  r  r  r  rr   r  r   r  r  r  r  r0   rJ   rD   r  r  =  s        
T#s(^ 
 
 
 
 
 6HZ0 6 6 6 X6 8J/    X :!12 : : : X: 8h}- 8 8 8 X8 5hsm 5 5 5 X5 6 6 6 6 X6 ## # # # X# 6hsm 6 6 6 X6 !Xc] ! ! ! X! 6x} 6 6 6 X6 5x} 5 5 5 X5 6x} 6 6 6 X6 "hsm " " " X" 6H-=$> 6 6 6 X6 '8,<#= ' ' ' X' ' 'rJ   r  c                   r   e Zd ZU dZdZee         ed<   g Ze	e
         ed<   dedeeeeef         deddfd	Zedd            ZddZdededeef         ddfdZedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Z edee         fd            Z!eded
         fd            Z"edee#         fd            Z$edee         fd            Z%dS )Destinationa  
    A class representing a destination within a PDF file.
    See section 8.2.1 of the PDF 1.6 reference.

    :param str title: Title of this destination.
    :param IndirectObject page: Reference to the page of this destination. Should
        be an instance of :class:`IndirectObject<PyPDF2.generic.IndirectObject>`.
    :param Fit fit: How the destination is displayed.
    :raises PdfReadError: If destination type is invalid.


    Nnodechildstitlepagefitr4   c                    |j         }|j        }t                              |            t	          |          | t          d          <   || t          d          <   || t          d          <   |dk    rL|\  | t          t          j                  <   | t          t          j                  <   | t          d          <   d S |t          j
        k    rq|\  | t          t          j                  <   | t          t          j                  <   | t          t          j                  <   | t          t          j                  <   d S |t          j        t          j        fv rZ	 |\  | t          t          j                  <   d S # t          $ r, t!                      | t          t          j                  <   Y d S w xY w|t          j        t          j        fv rZ	 |\  | t          t          j                  <   d S # t          $ r, t!                      | t          t          j                  <   Y d S w xY w|t          j        t          j        fv rd S t+          d|          )N/Title/Page/Typez/XYZ/ZoomzUnknown Destination Type: )fit_typefit_argsrt   r   r*   r&   TALEFTTOPTFFIT_RBOTTOMRIGHTFIT_HFIT_BHr:   r'   FIT_VFIT_BVFITFIT_Br    )r@   r  r  r  typargss         rD   r   zDestination.__init__  s*    l|!!$'''%5e%<%<Z!!"$(Z  !$'Z  ! &==
 	Z(()Z''(Z(()))BH__ Z(()Z	**+Z))*Z''(((RXry)))>.2+j(())) > > >/9||j(())))>RXry)))?/3,j))*** ? ? ?0:j))****?RVRX&&&DCCCCDDDs$   E: :2F0/F0G. .2H$#H$r/   c                 v     t                               d           d         g fddD             z             S )Nr  r  c                 (    g | ]}|v |         S r0   r0   ).0xr@   s     rD   
<listcomp>z*Destination.dest_array.<locals>.<listcomp>  s.       99 Q99rJ   )/Left/Bottom/Right/Topr  )r/   r   rH   s   `rD   
dest_arrayzDestination.dest_array  sX    \\'""DM2   H  
 
 	
rJ   c                 2    t          ddd           | j        S )zX
        .. deprecated:: 1.28.3

            Use :py:attr:`dest_array` instead.
        getDestArrayr  rU   )r   r  rH   s    rD   r  zDestination.getDestArray  s     	%^\7KKKrJ   rK   rL   c                    |                     d           t          d          }|                    ||           |                     d           | j        }|                    ||           t          d          }|                    ||           |                     d           t          d          }|                    ||           |                     d           |                     d           d S )Nr   z/DrO   z/Sz/GoTor   r   )rP   r&   rQ   r  )r@   rK   rL   r   r   value_ss         rD   rQ   zDestination.write_to_stream  s     	WFN333Tfn555FN333TW%%777UUrJ   c                 ,    |                      d          S )z3Read-only property accessing the destination title.r  r   rH   s    rD   r  zDestination.title*  s     xx!!!rJ   c                 ,    |                      d          S )z9Read-only property accessing the destination page number.r  r  rH   s    rD   r  zDestination.page/       xx   rJ   c                 ,    |                      d          S )z2Read-only property accessing the destination type.r  r  rH   s    rD   r  zDestination.typ4  r  rJ   c                 .    |                      dd          S )z-Read-only property accessing the zoom factor.r  Nr  rH   s    rD   zoomzDestination.zoom9       xx&&&rJ   c                 .    |                      dd          S )z<Read-only property accessing the left horizontal coordinate.r  Nr  rH   s    rD   leftzDestination.left>  r  rJ   c                 .    |                      dd          S )z=Read-only property accessing the right horizontal coordinate.r  Nr  rH   s    rD   rightzDestination.rightC  s     xx$'''rJ   c                 .    |                      dd          S )z9Read-only property accessing the top vertical coordinate.r  Nr  rH   s    rD   topzDestination.topH  s     xx%%%rJ   c                 .    |                      dd          S )z<Read-only property accessing the bottom vertical coordinate.r  Nr  rH   s    rD   bottomzDestination.bottomM  s     xx	4(((rJ   c           
          |                      dt          t          d          t          d          t          d          g                    S )zGRead-only property accessing the color in (R, G, B) with values 0.0-1.0z/Cr   )r   r/   r$   rH   s    rD   colorzDestination.colorR  s@     xx+{1~~{1~~{1~~NOO
 
 	
rJ   c                 .    |                      dd          S )zDRead-only property accessing the font type. 1=italic, 2=bold, 3=bothz/Fr   r  rH   s    rD   font_formatzDestination.font_formatY  s     xxa   rJ   c                 .    |                      dd          S )z
        Read-only property accessing the outline count.
        positive = expanded
        negative = collapsed
        absolute value = number of visible descendents at all levels
        r   Nr  rH   s    rD   outline_countzDestination.outline_count^  s     xx$'''rJ   )r4   r/   )&rk   rl   rm   r  r  r   rt   __annotations__r  r   r   ro   r
   r(   r%   r'   r+   r   r   r  r  r   rp   rQ   r  rr   r  r  r  r$   r  r  r  r  r  r   r   r  r0   rJ   rD   r  r    s          	 	(    FDI)E)E L.*>NNO)E 	)E
 
)E )E )E )EV 
 
 
 X
    27c58H2I	   & "x} " " " X" !hsm ! ! ! X! !Xc] ! ! ! X! 'hsm ' ' ' X' 'h{+ ' ' ' X' (x, ( ( ( X( &Xk* & & & X& )- ) ) ) X) 
x. 
 
 
 X
 !Xo6 ! ! ! X! (x} ( ( ( X( ( (rJ   r  rj   )N
__author____author_email__loggingreior   typingr   r   r   r   r   r	   r
   r   
_protocolsr   _utilsr   r   r   r   r   r   r   r   r   r   	constantsr   r   r   r<  r   r   r   r   r  r   r  errorsr   r    r!   _baser#   r$   r%   r&   r'   r(   r)   r*   _fitr+   r,   r-   	getLoggerrk   loggerNumberSignscompiler  r   r/   r   rt   r   r  r=   r!  r0  r]  ro   rr   r`   r  r  r0   rJ   rD   <module>r     s  : 
/   				       J J J J J J J J J J J J J J J J J J J J * * * * * *                               * ) ) ) ) ) ' ' ' ' ' ' . . . . . . * * * * * * - - - - - - O O O O O O O O O O	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       H H H H H H H H		8	$	$"*@AAP9 P9 P9 P9 P9$	 P9 P9 P9fu> u> u> u> u>tY u> u> u>p	~* ~* ~* ~* ~*! ~* ~* ~*B
+S 
+T 
+ 
+ 
+ 
+i i i i i# i i iX    ,    (# (# (# (# (#, (# (# (#Vu8 u8 u8 u8 u8' u8 u8 u8v DH4
 4
4
	4
 4d3ic3h?@4
 9c3-.	4
 4
 4
 4
nE' E' E' E' E'J E' E' E'Pa( a( a( a( a(* a( a( a( a( a(rJ   