Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 1øªj4èã @s˜dZdZddlZddlZddlZddlmZddlmZddl m Z m Z m Z m Z mZmZmZmZmZmZmZddlmZmZmZdd lmZmZmZmZmZmZm Z m!Z!dd l"m#Z#m$Z$m%Z%dd l"m&Z'dd l"m(Z)dd l"m*Z+ddl"m,Z-ddl.m/Z/m0Z0m1Z1ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>ddl?m@Z@mAZAmBZBmCZCmDZDddlmEZEmFZFejGd2k�r‚ddl mHZHn ddlImHZHejJeKƒZLdZMejNdƒZOGdd„dee e:ƒZPGdd„de e e fe:ƒZQGdd„deQƒZRe dd œd!d"„ZSGd#d$„d$eQƒZTGd%d&„d&eTƒZUGd'd(„d(eTƒZVGd)d*„d*eUƒZWd3eeeedeXeeXe eYeXffee:eYeXeWfd+œd,d-„ZZGd.d/„d/eRƒZ[Gd0d1„d1eRƒZ\dS)4zMathieu Fenniakzbiziqe@mathieu.fenniak.netéN)ÚBytesIO)Úceil) ÚAnyÚCallableÚDictÚIterableÚListÚOptionalÚSequenceÚSetÚTupleÚUnionÚcasté)ÚPdfReaderProtocolÚPdfWriterProtocolÚXmpInformationProtocol)Ú WHITESPACESÚ StreamTypeÚdeprecation_no_replacementÚdeprecation_with_replacementÚlogger_warningÚread_non_whitespaceÚread_until_regexÚskip_over_comment)ÚCheckboxRadioButtonAttributesÚFieldDictionaryAttributesÚOutlineFontFlag)Ú FilterTypes)ÚStreamAttributes)Ú TypArguments)ÚTypFitArguments)ÚSTREAM_TRUNCATED_PREMATURELYÚ PdfReadErrorÚPdfStreamErroré) Ú BooleanObjectÚByteStringObjectÚ FloatObjectÚIndirectObjectÚ NameObjectÚ NullObjectÚ NumberObjectÚ PdfObjectÚTextStringObjectÚis_null_or_none)ÚFit)Úextract_inline_A85Úextract_inline_AHxÚextract_inline_DCTÚextract_inline_defaultÚextract_inline_RL)Úread_hex_string_from_streamÚread_string_from_streaméé )ÚSelfs+-s[+-]?(\d+)\s+(\d+)\s+R[^a-zA-Z]c @sîeZdZdffeeeeeee fddœdd„Z e dœdd„Z e e dœdd „Ze ee d œd d „Ze dd œd d„Ze ed œdd„Ze ed œdd„Zdeedeefddœdd„Zedeeeedeeeee effddœdd„ƒZdS)Ú ArrayObjectF)Úpdf_destÚforce_duplicateÚ ignore_fieldsÚreturncCs²y|jj|kr| r|SWntk r.YnXtd|jtƒ||ƒƒ}xf|D]^}t|tƒr€|j|j|||ƒ||ƒ}|j |jƒqLt |dƒr |j |j|||ƒƒqL|j |ƒqLW|S)zClone object into pdf_dest.r;Úclone) Úindirect_referenceÚpdfÚ ExceptionrÚ_reference_cloner;Ú isinstanceÚ StreamObjectr@ÚappendÚhasattr)Úselfr<r=r>ÚarrÚdataÚdup©rMú?/tmp/pip-build-_d5lkt3n/pypdf/pypdf/generic/_data_structures.pyr@is&    zArrayObject.clone)r?cCst|jtdd„|DƒƒfƒS)zp Used to detect modified object. Returns: Hash considering type and value. css|]}|jƒVqdS)N)Úhash_bin)Ú.0ÚxrMrMrNú Žsz'ArrayObject.hash_bin..)ÚhashÚ __class__Útuple)rIrMrMrNrO‡szArrayObject.hash_bincCst|ƒS)z:Emulate DictionaryObject.items for a list (index, object).)Ú enumerate)rIrMrMrNÚitems�szArrayObject.items)Úlstr?cCsrt|tttfƒrn\t|tƒr$|g}nJt|tƒrR|ddkrFt|ƒg}qnt|ƒg}nt|tƒrht |ƒg}n|g}|S)Nrú/) rEÚlistrUÚsetr-Ústrr*r.Úbytesr')rIrXrMrMrNÚ_to_lst”s       zArrayObject._to_lstcCst|ƒ}|j|j|ƒƒ|S)aÆ Allow extension by adding list or add one element only Args: lst: any list, tuples are extended the list. other types(numbers,...) will be appended. if str is passed it will be converted into TextStringObject or NameObject (if starting with "/") if bytes is passed it will be converted into ByteStringObject Returns: ArrayObject with all elements )r;Úextendr^)rIrXÚtemprMrMrNÚ__add__¥szArrayObject.__add__cCs|j|j|ƒƒ|S)a‹ Allow extension by adding list or add one element only Args: lst: any list, tuples are extended the list. other types(numbers,...) will be appended. if str is passed it will be converted into TextStringObject or NameObject (if starting with "/") if bytes is passed it will be converted into ByteStringObject )r_r^)rIrXrMrMrNÚ__iadd__·s zArrayObject.__iadd__c CsBx<|j|ƒD].}y|j|ƒ}||=Wq tk r8Yq Xq W|S)zAllow to remove items)r^ÚindexÚ ValueError)rIrXrQrMrMrNÚ__isub__Ås   zArrayObject.__isub__N)ÚstreamÚencryption_keyr?cCsL|dk rtddƒ|jdƒx |D]}|jdƒ|j|ƒq"W|jdƒdS)Nz/the encryption_key parameter of write_to_streamz5.0.0ó[ó s ])rÚwriteÚwrite_to_stream)rIrfrgrKrMrMrNrkÏs   zArrayObject.write_to_stream)rfrBÚforced_encodingr?cCsŠtƒ}|jdƒ}|dkr tdƒ‚xd|jdƒ}x|jƒrB|jdƒ}q.W|jddƒ|jdƒ}|dkrdP|jddƒ|jt|||ƒƒq"W|S)Nr%rhzCould not read arrayó]éÿÿÿÿrn)r;Úreadr#ÚisspaceÚseekrGÚ read_object)rfrBrlrJÚtmpÚtokZ peek_aheadrMrMrNÚread_from_streamÜs      zArrayObject.read_from_stream)N)N)Ú__name__Ú __module__Ú __qualname__rÚboolr r r r\Úintr@rOrrrWrr^rar:rbrerr]rkÚ staticmethodrrrurMrMrMrNr;hs   $r;c @s@eZdZdffeeeeeee fddœdd„Z deeeeeee fe e e e fddœdd„Z e d œd d „Zeed œd d„Zd!eeedœdd„Zeeedœdd„Zd"eeeedœdd„Zeed œdd„Zeeed œdd„ƒZd#eedeefddœdd„Zed$eeeedeeeee effddœdd „ƒZ dS)%ÚDictionaryObjectF)r<r=r>r?cCs€y|jj|kr| r|SWntk r.YnXtƒ}td|j|jƒ||ƒƒ}|dkrZg}t|jƒƒdkr||j |||||ƒ|S)zClone object into pdf_dest.r|Nr) rArBrCr[rrDrTÚlenÚkeysÚ_clone)rIr<r=r>ÚvisitedÚd__rMrMrNr@÷szDictionaryObject.cloneN)Úsrcr<r=r>r€r?c sêd}ˆdk st‚tˆƒ‰xX|tˆƒkrptˆ|tƒrfttˆ|ƒdkrVˆ|=ˆ|=qnˆ|d8<|d7}qWt‡‡fdd„dDƒƒ�rFtˆƒ‰�x®dD�]¤}�xœ|D�]’}g} |ˆkrª||krªtˆj|ƒtƒrªtˆ|t ƒrªˆj d dƒdk�s2tt ˆ|ƒj d dƒdk�s2ˆj d dƒtt ˆ|ƒj d dƒkrªtd ˆ|ƒ} |} xÒ| dk �rtd | j | j ƒ||ƒƒ} | j dk �r¦| j j} | j j}| |f|k�r˜d} P|j| |fƒ| j| | fƒ| dk �sÂt‚| j | t|ƒ<| } y"| ˆk�ræd} ntd | |ƒ} Wntk �rd} YnX�qFWx$| D]\}}|j|||ˆ|ƒ�qWqªWqœWxžˆjƒD]’\}}|ˆk�rPt|tƒ�r°t|d ƒ�s€d|_ |j||ˆƒ}|j dk �sžt‚|j ||j|ƒ<n0||k�rPt|d ƒ�rÔ|j||ˆƒn||t|ƒ<�qPWdS)z¯ Update the object from src. Args: src: "DictionaryObject": pdf_dest: force_duplicate: ignore_fields: rNr%c3sˆ|]€}|ˆko~|ˆko~tˆj|ƒtƒo~tˆ|tƒo~ˆjddƒdkp~ttˆ|ƒjddƒdkp~ˆjddƒttˆ|ƒjddƒkVqdS)z/TypeN)rEÚraw_getr)r|Úgetr)rPÚfield)r>r‚rMrNrR0s z*DictionaryObject._clone..ú/Nextú/Prevú/Nú/Vz/Typer|rAr@)r†r‡rˆr‰©r†r‡©rˆr‰)rŠr‹)ÚAssertionErrorrZr}rErzrÚanyrƒr)r|r„rDrTrAÚidnumÚ generationÚaddrGr*rCrrWrFrHr@)rIr‚r<r=r>r€rQrXÚkÚobjsZcur_objZprev_objZclonrŽr�ÚsÚcÚvÚvvrM)r>r‚rNrs‚            zDictionaryObject._clone)r?cCs t|jtdd„|jƒDƒƒfƒS)zp Used to detect modified object. Returns: Hash considering type and value. css|]\}}||jƒfVqdS)N)rO)rPr‘r•rMrMrNrRˆsz,DictionaryObject.hash_bin..)rSrTrUrW)rIrMrMrNrO€szDictionaryObject.hash_bin)Úkeyr?cCs tj||ƒS)N)ÚdictÚ __getitem__)rIr—rMrMrNrƒ‹szDictionaryObject.raw_get)r—Údefaultr?c CsX||kr||Syd|kr|Stdƒ‚Wn*tk rRtd|djƒƒj||ƒSXdS)a= Returns the value of a key or from the parent if not found. If not found returns default. Args: key: string identifying the field to return default: default value to return Returns: Current key or inherited one, otherwise default value. z/Parentz not presentr|N)ÚKeyErrorrÚ get_objectÚ get_inherited)rIr—ršrMrMrNr�Žs  zDictionaryObject.get_inherited)r—Úvaluer?cCs2t|tƒstdƒ‚t|tƒs$tdƒ‚tj|||ƒS)Nzkey must be PdfObjectzvalue must be PdfObject)rEr-rdr˜Ú __setitem__)rIr—ržrMrMrNrŸ¦s   zDictionaryObject.__setitem__cCs2t|tƒstdƒ‚t|tƒs$tdƒ‚tj|||ƒS)Nzkey must be PdfObjectzvalue must be PdfObject)rEr-rdr˜Ú setdefault)rIr—ržrMrMrNr ­s   zDictionaryObject.setdefaultcCstj||ƒjƒS)N)r˜r™rœ)rIr—rMrMrNr™´szDictionaryObject.__getitem__cCsNddlm}|jddƒ}t|ƒr$dS|jƒ}t||ƒsJ||ƒ}||tdƒ<|S)u© Retrieve XMP (Extensible Metadata Platform) data relevant to the this object, if available. See Table 347 — Additional entries in a metadata stream dictionary. Returns: Returns a :class:`~pypdf.xmp.XmpInformation` 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¡r„r/rœrEr*)rIr¡ÚmetadatarMrMrNÚ xmp_metadata·s    zDictionaryObject.xmp_metadata)rfrgr?cCs”|dk rtddƒ|jdƒxht|jƒƒD]X\}}t|ƒdkrX|ddkrX|d dkrXq*|j||ƒ|jdƒ|j|ƒ|jdƒq*W|jd ƒdS) Nz/the encryption_key parameter of write_to_streamz5.0.0s<< rr%ú%rió s>>rn)rrjrZrWr}rk)rIrfrgr—ržrMrMrNrkÐs $   z DictionaryObject.write_to_stream)rfrBrlr?csttttttdœdd„‰tttdœ‡fdd„ }|jdƒ}|dkrZtd t|jƒƒ›d �ƒ‚i}�xBt |ƒ}|d krvqbn|d kr”|j d$d ƒt |ƒqb|s t t ƒ‚|dkr´|jd ƒP|j d%d ƒy.t||ƒ}t |ƒ}|j d&d ƒt|||ƒ}Wn^tk �rL} z@|dk �r |j�r t| jƒƒ‚t| jƒtƒtƒ} | j|ƒ| Sd} ~ XnX|j|ƒ�sd|||<qbdt|jƒƒ›d|›�} |dk �r–|j�r–t| ƒ‚t| tƒqbW|jƒ} t |ƒ} | dk�rÈ|jdƒdk�rÈ|jd ƒ}x|dk�rò|jd ƒ}�qÚW|d'k�rt dƒ‚|dk�r,|jd ƒdk�r,|j d(d ƒtj|k�rz|dk �rT|j�rTt dƒ‚ntd|jƒ›�tƒtd)ƒ|ttjƒ<|tj}t|tƒ�r¼|jƒ}|dk �s¦t‚|j|ƒ}|j |dƒ|dk�rÊd*}|jƒ}|dk�rì|j|ƒ|d<nt|t j!dƒƒ|d<t |ƒ}|jdƒ}||dk�rÔ|jƒ} |j d+d ƒ|jdƒ}|dk�r^|ddd,…|d<nh|dk �r–|j �r–|j |dƒ|||ƒ|d<|jƒ} n0|j | dƒtd t|jƒƒ›d!|›d"|›d#�ƒ‚n |j | dƒd|k�rèt"j#|ƒStƒ} | j|ƒ| SdS)-N)ÚpÚp1Úrem_gensrBr?c s\ˆ}xR|D]J}|j|}y&t|t‡‡fdd„|jƒDƒƒƒ}Wq tk rRYq Xq W|S)Ncs(g|] }ˆ|koˆknr|‘qSrMrM)rPrQ)r§r¨rMrNú îszODictionaryObject.read_from_stream..get_next_obj_pos..)ÚxrefÚminÚvaluesrd)r§r¨r©rBÚoutÚgenÚlocrM)r§r¨rNÚget_next_obj_posçs  & z;DictionaryObject.read_from_stream..get_next_obj_pos)rfrBr?cszˆ|jƒd t|jƒ|ƒd}|jƒ}|j||jƒƒ}|jdƒ}|dkrXtd|›d�ƒ‚|j||dƒ|d|d…S) Nré r%s endstreamrz6Unable to find 'endstream' marker for obj starting at Ú.é l)ÚtellrZr«roÚfindr#rq)rfrBZeonÚcurrÚrwr§)r±rMrNÚread_unsized_from_streamós zCDictionaryObject.read_from_stream..read_unsized_from_streamrs<z+Multiple definitions in dictionary at byte z for key óséstreamrir¦ó z)Stream data must be followed by a newlinezStream length not definedzStream length not defined @pos=rÚ__streamdata__s endstreaméé r´z7Unable to find 'endstream' marker after stream at byte z (nd='z', end='z').rnrnrn)r¦r¿rnrnrniöÿÿÿrn)$rzrrrr]ror#Úhexrµrrqrr$r"rrrCÚstrictÚ__repr__rrvr|Úupdater„ÚSAÚLENGTHr,r*rEr)rŒrœrÚreÚcompilerFÚinitialize_from_dictionary)rfrBrlr¹rsrKrtr—ržÚexcÚretvalÚmsgÚposr“ÚeolÚlengthÚtZpstartÚeZndstreamÚendrM)r±rNruás¶                               $    z!DictionaryObject.read_from_stream)N)N)N)N)!rvrwrxrryr r r r\rzr@r r rrOrrƒr�rŸr r-r™Úpropertyrr¤rr]rkr{rrrrurMrMrMrNr|ös,j $r|c@seZdZd"eeddœdd„Zedœdd„Zedœdd „Z e edœd d „Z ee dd œd d„Z ededfeddœdd„Zededfeddœdd„Zd#eee eedefedœdd„Zeeeeddœdd„Zeddœdd„Zddœdd„Zddœd d!„ZdS)$Ú TreeObjectN)Údctr?cCstj|ƒ|r|j|ƒdS)N)r|Ú__init__rÆ)rIr×rMrMrNrØys zTreeObject.__init__)r?cCsd|kS)Nz/FirstrM)rIrMrMrNÚ has_children~szTreeObject.has_childrencCs|jƒS)N)Úchildren)rIrMrMrNÚ__iter__�szTreeObject.__iter__ccsf|jƒs dS|tdƒ}|jƒ}x@|V||tdƒkrr€r?csrtd|ƒj|_y6td|ƒj}|dkr,d|_ntd|j|||ƒƒ|_Wntk rXYnXtƒj|||||ƒdS)z› Update the object from src. Args: src: pdf_dest: force_duplicate: ignore_fields: rFNÚDecodedStreamObject)rrôrõr@rCÚsuperr)rIr‚r<r=r>r€rõ)rTrMrNr_s zStreamObject._clonecsttƒjƒ|jfƒS)zp Used to detect modified object. Returns: Hash considering type and value. )rSr÷rOrô)rI)rTrMrNrO~szStreamObject.hash_bincCs|jS)N)rô)rIrMrMrNÚget_dataˆszStreamObject.get_data)rKr?cCs ||_dS)N)rô)rIrKrMrMrNÚset_data‹szStreamObject.set_datacstƒjƒ}||j7}|S)N)r÷Úhash_value_datarô)rIrK)rTrMrNrúŽs  zStreamObject.hash_value_data)rfrgr?cCsb|dk rtddƒtt|jƒƒ|ttjƒ<tj||ƒ|tj=|j dƒ|j |jƒ|j dƒdS)Nz/the encryption_key parameter of write_to_streamz5.0.0s stream s endstream) rr,r}rôr*rÇrÈr|rkrj)rIrfrgrMrMrNrk“s   zStreamObject.write_to_streamcCstdddƒdS)NÚinitializeFromDictionaryrËz5.0.0)r)rKrMrMrNrû¡sz%StreamObject.initializeFromDictionaryÚEncodedStreamObjectröcCsHtj|krtƒ}ntƒ}|d|_|d=tj|kr:|tj=|j|ƒ|S)NrÀ)rÇÚFILTERrürörôrÈrÆ)rKrÍrMrMrNr˧s    z'StreamObject.initialize_from_dictionaryr%)Úlevelr?c Csddlm}tj|kr¾|tj}t|tƒr�tttjƒf|•ƒ}y tt ƒf|j tj tƒƒ•ƒ}Wq¼t k rŒtt ƒ|j tj tƒƒgƒ}Yq¼XqÌtttjƒ|gƒ}tt ƒ|j tj t ƒƒgƒ}nttjƒ}d}t ƒ}|j|ƒ||ttjƒ<|dk �r||ttj ƒ<|j|j|ƒ|_|S)Nr)Ú FlateDecode)ÚfiltersrÿrÇrýrEr;r*ÚFTÚ FLATE_DECODEr+r„Ú DECODE_PARMSÚ TypeErrorrürÆÚencoderô)rIrþrÿÚfÚparamsrÍrMrMrNÚ flate_encode·s.        zStreamObject.flate_encodec Csxddlm}|jddƒdkrZy|j›d�}Wn"tk rN|jƒ›d�}YnXt|tƒ||ƒ\}}}|dkrtdS|S) a} Try to decode the stream object as an image Returns: a PIL image if proper decoding has been found Raises: Exception: (any)during decoding to to invalid object or errors during decoding will be reported It is recommended to catch exceptions to prevent stops in your program. r)Ú_xobj_to_imagez/SubtypeÚz/Imagez does not seem to be an Imagez$ object does not seem to be an ImageN)rr r„rAÚAttributeErrorrÅrrv)rIr rÎÚ extensionZ byte_streamÚimgrMrMrNÚdecode_as_image×s  zStreamObject.decode_as_image)N)rürörn)rn)rvrwrxrØr|rryr r r r\rzr r rrOr]rørùrúrrkr{rrrûrËrrÚ __classcell__rMrM)rTrNrFZs(     rFc@s eZdZdS)röN)rvrwrxrMrMrMrNröñsröcs@eZdZddœdd„Zedœdd„Zeddœ‡fdd „ Z‡ZS) rüN)r?cCs d|_dS)N)rõ)rIrMrMrNrØöszEncodedStreamObject.__init__cCs|ddlm}|jdk r |jjƒStƒ}|j||ƒƒx4t|jƒƒD]$\}}|tj tj tj fkrB|||<qBW||_|jƒSdS)Nr)Údecode_stream_data) rrrõrørörùrZrWrÇrÈrýr)rIrÚdecodedr—ržrMrMrNrøús    zEncodedStreamObject.get_data)rKr?csŠddlm}|jtjdƒtjtjgfkr~t|tƒs:t dƒ‚|j dkrL|j ƒ|j dk s^t dƒ‚|j j |ƒtƒj |j|ƒƒntdƒ‚dS)Nr)rÿr zdata must be bytesrázJStreams encoded with a filter different from FlateDecode are not supported)rrÿr„rÇrýrrrEr]rrõrørŒrùr÷rr#)rIrKrÿ)rTrMrNrù s    zEncodedStreamObject.set_data)rvrwrxrØr]rørùrrMrM)rTrNrüõsrüc sbeZdZdZd!eeedeeeee effddœ‡fdd„ Z dffee e e eee fddœdd „Zeee e e eee feee e fdd œ‡fd d „ Zedd œdd„Zeeeefd œdd„Zedœdd„Zeddœ‡fdd„ Zeeeeefdœdd„ƒZejeeeefddœdd„ƒZddœdd„Zd"eedeefddœ‡fdd „ Z‡ZS)#Ú ContentStreama¥ In order to be fast, this data structure can contain either: * raw data in ._data * parsed stream operations in ._operations. At any time, ContentStream object can either have both of those fields defined, or one field defined and the other set to None. These fields are "rebuilt" lazily, when accessed: * when .get_data() is called, if ._data is None, it is rebuilt from ._operations. * when .operations is called, if ._operations is None, it is rebuilt from ._data. Conversely, these fields can be invalidated: * when .set_data() is called, ._operations is set to None. * when .operations is set, ._data is set to None. N)rfrBrlr?cs²||_g|_|dkr"tƒjdƒnŒ|jƒ}t|tƒrˆd}x<|D]4}||jƒjƒ7}t|ƒdksj|ddkr>|d7}q>Wtƒjt |ƒƒn |jƒ}|dk sœt ‚tƒj|ƒ||_ dS)Nrórr%r¦rn) rBÚ _operationsr÷rùrœrEr;rør}r]rŒrl)rIrfrBrlrKr“Z stream_data)rTrMrNrØ2s      zContentStream.__init__F)r<r=r>r?cCsty|jj|kr| r|SWntk r.YnXtƒ}td|j|jddƒ||ƒƒ}|dkr^g}|j|||||ƒ|S)zÁ Clone object into pdf_dest. Args: pdf_dest: force_duplicate: ignore_fields: Returns: The cloned ContentStream rN)rArBrCr[rrDrTr)rIr<r=r>r€r�rMrMrNr@RszContentStream.clone)r‚r<r=r>r€r?cs6td|ƒ}tƒj|jƒ||_t|jƒ|_|j|_dS)z› Update the object from src. Args: src: pdf_dest: force_duplicate: ignore_fields: rN)rr÷rùrôrBrZrrl)rIr‚r<r=r>r€Zsrc_cs)rTrMrNrus   zContentStream._clone)rfr?cCsØ|jddƒg}xÂt|ƒ}|dks*|dkr,P|jd dƒ|jƒsH|d kršt|tjƒ}|dkr„|gksht‚|j|ƒ}|jj |dfƒqÐ|jj ||fƒg}q|dkr¼x,|d kr¸|j dƒ}q¤Wq|j t |d|j ƒƒqWdS)Nrrór%ó'ó"sBIs INLINE IMAGEr»r¿r¦rn)rr)r¿r¦ró) rqrÚisalpharr*Zdelimiter_patternrŒÚ_read_inline_imagerrGrorrrl)rIrfÚoperandsÚpeekÚoperatorÚiirMrMrNÚ_parse_content_streamŽs&      z#ContentStream._parse_content_streamcCs6tƒ}xVt|ƒ}|jd"dƒ|dkr&Pt||jƒ}t|ƒ}|jd#dƒt||jƒ}|||<qW|jdƒ}|dd…dks|t‚|jd|jddƒƒ}|jƒ}t |t ƒrª|d }d |ksºd |krÆt |ƒ} �nd |ksÖd |krât |ƒ} �nüd|ksôd|k�rþt |ƒ} nàd|k�sd|k�rt|ƒ} nÂ|dk�rÖ|jddƒ} d| k�rBd} nJd| k�rRd} n:|jd| d$k�rfdnd%ƒ} | d k�r€| d} n t|ƒ} d&} | d k�rÀ|jttt|dƒ| ƒtt|dƒƒ} t|ƒ} |jd'dƒnt|ƒ} |jdƒ} |jd(dƒ| d d…d k�s| dd…tk�r,|j|d ƒt|ƒ} || d!œS))Nr%óIr8rsIDz/Fz/Filterznot setrZAHxZASCIIHexDecodeZA85Z ASCII85DecodeZRLZRunLengthDecodeZDCTZ DCTDecodez/CSr ZRGBZCMYKéz/BPCú/Iú/Gú/Indexedú /DeviceGrayrÁg @z/Wz/HsEI)ÚsettingsrKrnrn>r r!r"rrnrnrnrn)r|rrqrrrBrorŒr„rµrErZr2r1r5r3r4rrrzr)rIrfr#rtr—ržrsZfiltrZsavposrKÚcsZlcsÚbitsÚeirMrMrNr­sd                  &  $ z ContentStream._read_inline_image)r?cCsÆ|jsÀtƒ}x¨|jD]ž\}}|dkr||jdƒtƒ}|dj|ƒ|j|jƒdd …ƒ|jdƒ|j|dƒ|jdƒn,x |D]}|j|ƒ|jdƒq‚W|j|ƒ|jd ƒqW|jƒ|_|jS) Ns INLINE IMAGEsBIr#rsID rKsEIrir¦éþÿÿÿ)rôrrrjrkÚgetvalue)rIZnew_datarrZ dict_textÚoprMrMrNrøìs$       zContentStream.get_data)rKr?cstƒj|ƒg|_dS)N)r÷rùr)rIrK)rTrMrNrùs zContentStream.set_datacCs*|j r$|jr$|jt|jƒƒd|_|jS)Nró)rrôrr)rIrMrMrNÚ operationsszContentStream.operations)r*r?cCs||_d|_dS)Nró)rrô)rIr*rMrMrNr* scCsD|jr*|jjdgdfƒ|jjgdfƒn|jr@d|jd|_dS)NróqóQsq s Q )rÚinsertrGrô)rIrMrMrNÚisolate_graphics_states z$ContentStream.isolate_graphics_state)rfrgr?cs(|j r|jr|jƒtƒj||ƒdS)N)rôrrør÷rk)rIrfrg)rTrMrNrkszContentStream.write_to_stream)N)N) rvrwrxÚ__doc__rr r\rrrzrØryr r r@r|rr r rrrrr]rørùrÕr*Úsetterr.rkrrMrM)rTrNrs.  ? r)rfrBrlr?cCsÚ|jdƒ}|jddƒ|dkr*tj||ƒS|dkrl|jdƒ}|jddƒ|dkr^tj|||ƒSt||ƒS�nj|dkr‚tj|||ƒS|dks’|dkrœtj|ƒS|d kr®t||ƒS|d krÖ|jd ƒd krÖ|jddƒt ƒS|d k�rêt j|ƒS|dk�rFx0|dk�r$|jdƒ}t |ƒdk�röt dƒ‚�qöWt |ƒ}|jddƒt |||ƒS|dk�r¢|jdƒ}|jt |ƒ dƒtj|ƒdk �r–|dk �sŠt‚tj||ƒStj|ƒSn4|jddƒtd|›d|jƒ›d|jdƒjƒ›�ƒ‚dS)Nr%ó/ó` N)rKr?c Cs¾tj|ƒtjƒtjƒ}|j|_x6|D].}y|||t|ƒ<Wq(tk rTYq(Xq(Wt|j dƒt ƒrºt t |tdƒƒj ƒ}t|t ƒr”|jƒ}n|dkr¢d}ntdƒ‚t|ƒ|tdƒ<dS)Nz/Vr zShould never happen)r|rØrÚ attributesrrAr*r›rEr„rürrør]ÚdecoderCr.)rIrKZfield_attributesÚattrÚdZd_strrMrMrNrØas"      zField.__init__)r?cCs |jtjƒS)z4Read-only property accessing the type of this field.)r„rr)rIrMrMrNÚ field_typexszField.field_typecCs |jtjƒS)z6Read-only property accessing the parent of this field.)r„rZParent)rIrMrMrNrß}sz Field.parentr;cCs |jtjƒS)z4Read-only property accessing the kids of this field.)r„rZKids)rIrMrMrNÚkids‚sz Field.kidscCs |jtjƒS)z4Read-only property accessing the name of this field.)r„rÚT)rIrMrMrNÚname‡sz Field.namecCs |jtjƒS)z>Read-only property accessing the alternate name of this field.)r„rZTU)rIrMrMrNÚalternate_nameŒszField.alternate_namecCs |jtjƒS)zÒ Read-only property accessing the mapping name of this field. This name is used by pypdf as a key in the dictionary returned by :meth:`get_fields()` )r„rZTM)rIrMrMrNÚ mapping_name‘szField.mapping_namecCs |jtjƒ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„rZFf)rIrMrMrNÚflags›sz Field.flagscCs |jtjƒS)zs Read-only property accessing the value of this field. Format varies based on field type. )r„rÚV)rIrMrMrNrž£sz Field.valuecCs |jtjƒS)z=Read-only property accessing the default value of this field.)r„rZDV)rIrMrMrNÚ default_value¬szField.default_valuecCs |jtjƒ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„rZAA)rIrMrMrNÚadditional_actions±szField.additional_actions)rvrwrxr/r|rØrÕr r*rBrßrCr\rErFrGrzrHrržrJrKrMrMrMrNr=Ys, r=c@s`eZdZUdZdZeeeee e e efe ddœdd„Z eddœdd „ƒZd#eedeefdd œd d „Zeeedœd d„ƒZeeedœdd„ƒZeeedœdd„ƒZeeedœdd„ƒZeeedœdd„ƒZeeedœdd„ƒZeeedœdd„ƒZeeedœdd„ƒZeeddœdd„ƒZeeedœdd „ƒZeeedœd!d"„ƒZ dS)$Ú Destinationa­ A class representing a destination within a PDF file. See section 12.3.2 of the PDF 2.0 reference. Args: title: Title of this destination. page: Reference to the page of this destination. Should be an instance of :class:`IndirectObject`. fit: How the destination is displayed. Raises: PdfReadError: If destination type is invalid. N)ÚtitleÚpageÚfitr?c CsÜg|_|j}|j}tj|ƒt|ƒ|tdƒ<||tdƒ<||tdƒ<|dkrÄt|ƒdkrf|jt dƒƒt|ƒdkr€|jt dƒƒt|ƒdkrš|jt dƒƒ|\|tt j ƒ<|tt j ƒ<|td ƒ<�nt|ƒd krÔ�n|t jk�r|\|tt j ƒ<|tt jƒ<|tt jƒ<|tt j ƒ<nÂ|t jt jgk�rfy|\|tt j ƒ<Wn&tk �rbtƒ|tt j ƒ<YnXnr|t jt jgk�r¶y|\|tt j ƒ<Wn&tk �r²tƒ|tt j ƒ<YnXn"|t jt jgk�rÊntd |›�ƒ‚dS) Nz/Titlez/Pagez/Typez/XYZr%grr8z/ZoomrzUnknown Destination Type: )Z_filtered_childrenZfit_typeZfit_argsr|rØr.r*r}rGr,ÚTAÚLEFTZTOPÚTFZFIT_RZBOTTOMÚRIGHTZFIT_HZFIT_BHrCr+ZFIT_VZFIT_BVZFITZFIT_Br#)rIrMrNrOÚtypÚargsrMrMrNrØÐs@      *  6zDestination.__init__r;)r?cs(tˆjdƒˆdg‡fdd„d DƒƒS) Nz/Pagez/Typecsg|]}|ˆkrˆ|‘qSrMrM)rPrQ)rIrMrNrª sz*Destination.dest_array..ú/Leftú/Bottomú/Rightú/Topú/Zoom)rVrWrXrYrZ)r;rƒ)rIrM)rIrNÚ dest_arrays zDestination.dest_array)rfrgr?cCsŽ|dk rtddƒ|jdƒtdƒ}|j|ƒ|jdƒ|j}|j|ƒtdƒ}|j|ƒ|jdƒtdƒ}|j|ƒ|jdƒ|jd ƒdS) Nz/the encryption_key parameter of write_to_streamz5.0.0s<< z/Driz/Sz/GoTor¦s>>)rrjr*rkr[)rIrfrgr—ržZvalue_srMrMrNrks         zDestination.write_to_streamcCs |jdƒS)z3Read-only property accessing the destination title.z/Title)r„)rIrMrMrNrM'szDestination.titlecCs |jdƒS)z9Read-only property accessing the destination page number.z/Page)r„)rIrMrMrNrN,szDestination.pagecCs |jdƒS)z2Read-only property accessing the destination type.z/Type)r„)rIrMrMrNrT1szDestination.typcCs |jddƒS)z-Read-only property accessing the zoom factor.z/ZoomN)r„)rIrMrMrNÚzoom6szDestination.zoomcCs |jddƒS)zsZ  4(     0     S( $3c