§
    ¥”j 3  ã                   ój  — d Z ddlZddl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 ddlmZ ddlmZ g d¢Zd	ez   Z	 eeedf         Z	 e G d
„ d¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         ZddddddddddddœZ	  eed         d¬¦  «        Z	  eed         d ¬¦  «        Z	  eed         d!¬¦  «        Z	  eed         d"¬¦  «        Z	  eed         d#¬¦  «        Z	  eed         d$¬¦  «        Z	  eed         d%¬¦  «        Z	  eed         d&¬¦  «        Z 	  eed         d'¬¦  «        Z!	  eed         d(¬¦  «        Z"	  eed         d)¬¦  «        Z#	  eed*         d+¬¦  «        Z$	  eed*         d,¬¦  «        Z%	  eed-         d.¬¦  «        Z&	  eed-         d/¬¦  «        Z'	  eed-         d0¬¦  «        Z(	  eed1         d2¬¦  «        Z)	  eed1         d3¬¦  «        Z*	  eed4         d5¬¦  «        Z+	  eed4         d6¬¦  «        Z,	  eed4         d7¬¦  «        Z-	  G d8„ d9¦  «        Z. ed¬¦  «         G d:„ d;¦  «        ¦   «         Z/e G d<„ d=¦  «        ¦   «         Z0 G d>„ d?¦  «        Z1ej2         G d@„ dAej3        ¦  «        ¦   «         Z4e G dB„ dC¦  «        ¦   «         Z5dS )Dz¿
.. versionadded:: 0.14.0

This module contains the XMP data model classes and namespace registry,
in addition to a simplified document metadata model used for automated
metadata management.
é    N)Ú	dataclassÚfield)Údatetime)ÚDictÚIterableÚIteratorÚListÚOptionalÚTupleÚUnion)ÚStringWithLanguage)Ú__version__)Ú
DC_CREATORÚDC_DESCRIPTIONÚDC_TITLEÚNSÚPDF_KEYWORDSÚPDF_PRODUCERÚ	RDF_ABOUTÚRDF_ALTÚRDF_BAGÚRDF_DESCRIPTIONÚRDF_LIÚRDF_PARSE_TYPEÚRDF_RDFÚRDF_RESOURCEÚRDF_SEQÚ	RDF_VALUEÚVENDORÚXML_LANGÚXMP_CREATEDATEÚXMP_CREATORTOOLÚXMP_MODDATEÚ	X_XMPMETAÚX_XMPTKÚDocumentMetadataÚExpandedNameÚ
MetaStringÚ
QualifiersÚXmpArrayÚXmpArrayTypeÚXmpStructureÚXmpValuezpyHanko c                   ó  — e Zd ZU dZdZeed<   	 dZeed<   	 dZeed<   	  e	e
¬¦  «        Zee         ed<   	 dZeed<   	 dZeeedf         ed	<   	 d
Zeeedf         ed<   	  e	e
¬¦  «        Zed         ed<   	 dZeed<   	 dd„ZdS )r&   zO
    Simple representation of document metadata. All entries are optional.
    NÚtitleÚauthorÚsubject©Údefault_factoryÚkeywordsÚcreatorÚcreatedÚnowÚlast_modifiedr,   Ú	xmp_extraFÚxmp_unmanagedÚbasec           	      óâ   — t          | j        p|j        | j        p|j        | j        p|j        t	          | j        p|j        ¦  «        | j        p|j        | j        p|j        | j        ¬¦  «        S )N)r/   r0   r1   r4   r5   r6   r8   )	r&   r/   r0   r1   Úlistr4   r5   r6   r8   )Úselfr;   s     úo/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/pdf_utils/metadata/model.pyÚ	view_overzDocumentMetadata.view_over‚   so   € ÝØ”*Ð* ¤
Ø”;Ð- $¤+Ø”LÐ0 D¤LÝ˜$œ-Ð8¨4¬=Ñ9Ô9Ø”LÐ0 D¤LØ”LÐ0 D¤LØÔ,ð
ñ 
ô 
ð 	
ó    )r;   r&   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/   r(   Ú__annotations__r0   r1   r   r=   r4   r	   Ústrr5   r6   r   r   r8   r9   r:   Úboolr@   © rA   r?   r&   r&   >   s>  € € € € € € ðð ð €Eˆ:ÐÐÑðð €FˆJÐÐÑðð €GˆZÐÐÑðð  ˜%°Ð5Ñ5Ô5€Hˆd�3ŒiÐ5Ð5Ñ5ðð €GˆZÐÐÑðð +/€GˆU�3˜ $Ð&Ô'Ð.Ð.Ñ.ðð
 16€M�5˜˜h¨Ð,Ô-Ð5Ð5Ñ5ðð
 ', e¸DÐ&AÑ&AÔ&A€Iˆt�NÔ#ÐAÐAÑAðð  €M�4ÐÐÑðð	
ð 	
ð 	
ð 	
ð 	
ð 	
rA   r&   T)Úfrozenc                   ó8   — e Zd ZU dZeed<   	 eed<   	 d„ Zd„ ZdS )r'   z
    An expanded XML name.
    ÚnsÚ
local_namec                 ó†   — | j         }|                     d¦  «        s|                     d¦  «        rdnd}|› |› | j        › �S )Nú/ú#Ú )rL   ÚendswithrM   )r>   rL   Úseps      r?   Ú__str__zExpandedName.__str__ž   sL   € ØŒWˆØ—K’K Ñ$Ô$ÐA¨¯ª°CÑ(8Ô(8ÐAˆbˆb¸cˆØÐ,�cÐ,˜4œ?Ð,Ð,Ð,rA   c                 ó    — t          | ¦  «        S ©N)rG   ©r>   s    r?   Ú__repr__zExpandedName.__repr__£   s   € Ý�4‰yŒyÐrA   N)rB   rC   rD   rE   rG   rF   rT   rX   rI   rA   r?   r'   r'   Ž   s^   € € € € € € ðð ð 	€G€G�Gðð €O€O�Oðð-ð -ð -ð
ð ð ð ð rA   r'   z$http://www.w3.org/XML/1998/namespacez+http://www.w3.org/1999/02/22-rdf-syntax-ns#zhttp://ns.adobe.com/xap/1.0/z http://purl.org/dc/elements/1.1/zhttp://ns.adobe.com/pdf/1.3/zhttp://www.aiim.org/pdfa/ns/id/z http://www.aiim.org/pdfua/ns/id/z#http://www.aiim.org/pdfa/ns/schema#z&http://www.aiim.org/pdfa/ns/extension/z%http://www.aiim.org/pdfa/ns/property#zadobe:ns:meta/)ÚxmlÚrdfÚxmpÚdcÚpdfÚpdfaidÚpdfuaidÚ
pdfaSchemaÚpdfaExtensionÚpdfaPropertyÚxrY   Úlang©rL   rM   rZ   ÚRDFÚSeqÚBagÚAltÚliÚvalueÚresourceÚaboutÚ	parseTypeÚDescriptionrc   ÚxmpmetaÚxmptkr\   r/   r5   Údescriptionr]   r4   ÚProducerr[   ÚCreatorToolÚ
CreateDateÚ
ModifyDatec                   óH  — e Zd ZU dZeedf         ed<   ee         ed<   deedf         fd„Z	e
deedf         dd fd	„¦   «         Ze
d
ee         dd fd„¦   «         Zd„ Z	 ddedeeedf                  fd„Zedee         fd„¦   «         Zedefd„¦   «         Zd„ Zd„ Zd„ ZdS )r)   zª
    XMP value qualifiers wrapper. Implements ``__getitem__``.
    Note that ``xml:lang`` gets special treatment.

    :param quals:
        The qualifiers to model.
    r-   Ú_qualsÚ_langÚqualsc                 óÊ   — || _         	 |t                   }|t          = t          |j        t          ¦  «        st
          ‚|j        | _        d S # t          $ r d | _        Y d S w xY wrV   )rx   r    Ú
isinstancerk   rG   Ú	TypeErrorry   ÚKeyError)r>   rz   rd   s      r?   Ú__init__zQualifiers.__init__0  sl   € ØˆŒð	Ø�”?ˆDØ•h�Ý˜dœj­#Ñ.Ô.ð  Ý�ØœˆDŒJˆJˆJøÝð 	ð 	ð 	ØˆDŒJˆJˆJˆJð	øøøs   ‰AA ÁA"Á!A"ÚlstÚreturnc                 ó4   — t          d„ |D ¦   «         ¦  «        S )zÓ
        Construct a :class:`.Qualifiers` object from a list of name-value pairs.

        :param lst:
            A list of name-value pairs.
        :return:
            A :class:`.Qualifiers` object.
        c                 ó   — i | ]\  }}||“Œ	S rI   rI   ©Ú.0ÚkÚvs      r?   ú
<dictcomp>z!Qualifiers.of.<locals>.<dictcomp>E  s   € Ð0Ð0Ð0¡D A q˜1˜aÐ0Ð0Ð0rA   )r)   ©Úclsr€   s     r?   ÚofzQualifiers.of;  s!   € õ Ð0Ð0¨CÐ0Ñ0Ô0Ñ1Ô1Ð1rA   rd   c                 ó6   — t          i ¦  «        }|r||_        |S )zÖ
        Construct a :class:`.Qualifiers` object that only wraps a language
        qualifier.

        :param lang:
            A language code.
        :return:
            A :class:`.Qualifiers` object.
        )r)   ry   )rŠ   rd   rz   s      r?   Úlang_as_qualzQualifiers.lang_as_qualG  s#   € õ ˜2‘”ˆØð 	ØˆEŒKØˆrA   c                 ó   — | j         |         S rV   )rx   ©r>   Úitems     r?   Ú__getitem__zQualifiers.__getitem__W  s   € ØŒ{˜4Ô Ð rA   TÚ	with_langc              #   óœ   K  — | j                              ¦   «         E d{V —† |r&| j        �!t          t	          | j        ¦  «        fV — dS dS dS )z†
        Iterate over all qualifiers.

        :param with_lang:
            Include the language qualifier.
        :return:
        N)rx   Úitemsry   r    r-   )r>   r’   s     r?   Ú
iter_qualszQualifiers.iter_qualsZ  sn   è è € ð ”;×$Ò$Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Øð 	1˜œÐ/Ý�H T¤ZÑ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ð	1ð 	1Ð/Ð/rA   c                 ó   — | j         S )z:
        Retrieve the language qualifier, if any.
        )ry   rW   s    r?   rd   zQualifiers.langh  s   € ð
 ŒzÐrA   c                 ó*   — t          | j        ¦  «        S )zA
        Check if there are any non-language qualifiers.
        )rH   rx   rW   s    r?   Úhas_non_lang_qualszQualifiers.has_non_lang_qualso  s   € õ
 �D”KÑ Ô Ð rA   c                 ó8   — t          | j        p| j        ¦  «        S rV   )rH   rx   ry   rW   s    r?   Ú__bool__zQualifiers.__bool__v  s   € Ý�D”KÐ- 4¤:Ñ.Ô.Ð.rA   c                 óX   — t          | j        ¦  «        }| j        r
| j        |d<   d|›d�S )Nrd   zQualifiers(ú))Údictrx   ry   )r>   Úqs     r?   rX   zQualifiers.__repr__y  s7   € Ý�”ÑÔˆØŒ:ð 	#Øœ
ˆAˆf‰IØ#˜QÐ#Ð#Ð#Ð#rA   c                 ól   — t          |t          ¦  «        o| j        |j        k    o| j        |j        k    S rV   )r|   r)   ry   rx   ©r>   Úothers     r?   Ú__eq__zQualifiers.__eq__  s6   € å�u�jÑ)Ô)ð ,Ø”
˜eœkÒ)ð,à”˜uœ|Ò+ð	
rA   N)T)rB   rC   rD   rE   r   r'   rF   r
   rG   r   Úclassmethodr   r‹   r�   r‘   rH   r   r•   Úpropertyrd   r˜   rš   rX   r¢   rI   rA   r?   r)   r)   $  s¢  € € € € € € ðð ð �˜zÐ)Ô*Ð*Ð*Ñ*Ø�CŒ=ÐÐÑð	˜d <°Ð#;Ô<ð 	ð 	ð 	ð 	ð ð	2�e˜L¨*Ð4Ô5ð 	2¸,ð 	2ð 	2ð 	2ñ „[ð	2ð ð ¨¤ð °,ð ð ð ñ „[ðð!ð !ð !ð !%ð1ð 1Øð1à	�%˜ jÐ0Ô1Ô	2ð1ð 1ð 1ð 1ð ð�h˜s”mð ð ð ñ „Xðð ð! Dð !ð !ð !ñ „Xð!ð/ð /ð /ð$ð $ð $ð
ð 
ð 
ð 
ð 
rA   r)   c                   ó$   — e Zd ZU dZeed<   d„ ZdS )ÚXmpUriz
    An XMP URI value.
    rk   c                 ó   — | j         S rV   )rk   rW   s    r?   rT   zXmpUri.__str__�  s
   € ØŒzÐrA   N)rB   rC   rD   rE   rG   rF   rT   rI   rA   r?   r¦   r¦   ‡  s:   € € € € € € ðð ð €J€J�Jðð ð ð ð rA   r¦   c                   ó`   — e Zd ZU dZeddeef         ed<   	  ee	j
        ¬¦  «        Ze	ed<   dS )r-   z;
    A general XMP value, potentially with qualifiers.
    r,   r*   rk   r2   Ú
qualifiersN)rB   rC   rD   rE   r   r¦   rG   rF   r   r)   r‹   r©   rI   rA   r?   r-   r-   “  sb   € € € € € € ðð ð � ¨V°SÐ8Ô9Ð9Ð9Ñ9ðð #˜U°:´=ÐAÑAÔA€J�
ÐAÐAÑAðð rA   r-   c                   ó˜   — e Zd ZdZdeedf         fd„Zedeedf         dd fd„¦   «         Z	d„ Z
deeedf                  fd	„Zd
„ Zd„ ZdS )r,   z‰
    A generic XMP structure value. Implements ``__getitem__`` for field access.

    :param fields:
        The structure's fields.
    Úfieldsr-   c                 ó   — || _         d S rV   ©Ú_fields)r>   r«   s     r?   r   zXmpStructure.__init__¯  s   € Ø5;ˆŒˆˆrA   r€   r�   c                 ó,   —  | d„ |D ¦   «         ¦  «        S )zÎ
        Construct an :class:`.XmpStructure` from a list of name-value pairs.

        :param lst:
            A list of name-value pairs.
        :return:
            An an :class:`.XmpStructure`.
        c                 ó   — i | ]\  }}||“Œ	S rI   rI   r„   s      r?   rˆ   z#XmpStructure.of.<locals>.<dictcomp>¼  s   € Ð)Ð)Ð)™T˜Q �A�qÐ)Ð)Ð)rA   rI   r‰   s     r?   r‹   zXmpStructure.of²  s#   € ð ˆsÐ)Ð) SÐ)Ñ)Ô)Ñ*Ô*Ð*rA   c                 ó   — | j         |         S rV   r­   r�   s     r?   r‘   zXmpStructure.__getitem__¾  s   € ØŒ|˜DÔ!Ð!rA   c              #   óH   K  — | j                              ¦   «         E d {V —† d S rV   )r®   r”   rW   s    r?   Ú__iter__zXmpStructure.__iter__Á  s2   è è € Ø”<×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'rA   c                 ó   — d| j         ›d�S )NzXmpStructure(rœ   r­   rW   s    r?   rX   zXmpStructure.__repr__Ä  s   € Ø0˜tœ|Ð0Ð0Ð0Ð0rA   c                 óL   — t          |t          ¦  «        o| j        |j        k    S rV   )r|   r,   r®   r    s     r?   r¢   zXmpStructure.__eq__Ç  s    € Ý˜%¥Ñ.Ô.ÐP°4´<À5Ä=Ò3PÐPrA   N)rB   rC   rD   rE   r   r'   r   r£   r   r‹   r‘   r   r³   rX   r¢   rI   rA   r?   r,   r,   ¤  s×   € € € € € ðð ð<˜t L°*Ð$<Ô=ð <ð <ð <ð <ð ð	+�e˜L¨*Ð4Ô5ð 	+¸.ð 	+ð 	+ð 	+ñ „[ð	+ð"ð "ð "ð(˜( 5¨°zÐ)AÔ#BÔCð (ð (ð (ð (ð1ð 1ð 1ðQð Qð Qð Qð QrA   r,   c                   ó0   — e Zd ZdZdZ	 dZ	 dZ	 defd„ZdS )r+   z
    XMP array types.
    rg   rh   ri   r�   c                 ó^   — t          t          d         t          | j        ¦  «        ¬¦  «        S )z1
        Render the type as an XML name.
        rZ   re   )r'   r   rG   rk   rW   s    r?   Úas_rdfzXmpArrayType.as_rdfà  s#   € õ �r %œyµS¸¼±_´_ÐEÑEÔEÐErA   N)	rB   rC   rD   rE   ÚORDEREDÚ	UNORDEREDÚALTERNATIVEr'   r¸   rI   rA   r?   r+   r+   Ë  sd   € € € € € ðð ð €Gðð €Iðð €KððF˜ð Fð Fð Fð Fð Fð FrA   r+   c                   óÂ   — e Zd ZU dZeed<   	 ee         ed<   	 ede	e         dd fd„¦   «         Z
ede	e         dd fd„¦   «         Zede	e         dd fd„¦   «         Zd	„ Zd
S )r*   z
    An XMP array.
    Ú
array_typeÚentriesr€   r�   c                 óH   —  | t           j        t          |¦  «        ¦  «        S )z±
        Convert a list to an ordered XMP array.

        :param lst:
            An iterable of XMP values.
        :return:
            An ordered :class:`.XmpArray`.
        )r+   r¹   r=   r‰   s     r?   ÚorderedzXmpArray.ordered÷  s   € ð ˆs•<Ô'­¨c©¬Ñ3Ô3Ð3rA   c                 óH   —  | t           j        t          |¦  «        ¦  «        S )zµ
        Convert a list to an unordered XMP array.

        :param lst:
            An iterable of XMP values.
        :return:
            An unordered :class:`.XmpArray`.
        )r+   rº   r=   r‰   s     r?   Ú	unorderedzXmpArray.unordered  s   € ð ˆs•<Ô)­4°©9¬9Ñ5Ô5Ð5rA   c                 óH   —  | t           j        t          |¦  «        ¦  «        S )z¹
        Convert a list to an alternative XMP array.

        :param lst:
            An iterable of XMP values.
        :return:
            An alternative :class:`.XmpArray`.
        )r+   r»   r=   r‰   s     r?   ÚalternativezXmpArray.alternative  s   € ð ˆs•<Ô+­T°#©Y¬YÑ7Ô7Ð7rA   c                 ó  ‡ ‡— t          ‰t          ¦  «        r‰ j        ‰j        k    rdS ‰ j        t          j        k    r@t          ˆ fd„‰j        D ¦   «         ¦  «        ot          ˆfd„‰ j        D ¦   «         ¦  «        S ‰ j        ‰j        k    S )NFc              3   ó*   •K  — | ]}|‰j         v V — Œd S rV   ©r¾   )r…   Úer>   s     €r?   ú	<genexpr>z"XmpArray.__eq__.<locals>.<genexpr>"  s*   øè è € Ð@Ð@¨Q�q˜DœLÐ(Ð@Ð@Ð@Ð@Ð@Ð@rA   c              3   ó*   •K  — | ]}|‰j         v V — Œd S rV   rÇ   )r…   rÈ   r¡   s     €r?   rÉ   z"XmpArray.__eq__.<locals>.<genexpr>"  sC   øè è € ð Ið IØ'(��U”]Ð"ðIð Ið Ið Ið Ið IrA   )r|   r*   r½   r+   rº   Úallr¾   r    s   ``r?   r¢   zXmpArray.__eq__  sµ   øø€ å˜5¥(Ñ+Ô+ð	àŒ %Ô"2Ò2Ð2à�5ØŒ?�lÔ4Ò4Ð4ÝÐ@Ð@Ð@Ð@°%´-Ð@Ñ@Ô@Ñ@Ô@ð ÅSð Ið Ið Ið IØ,0¬LðIñ Iô Iñ Fô Fð ð ”< 5¤=Ò0Ð0rA   N)rB   rC   rD   rE   r+   rF   r	   r-   r£   r   rÀ   rÂ   rÄ   r¢   rI   rA   r?   r*   r*   ç  sò   € € € € € € ðð ð ÐÐÑðð �(Œ^ÐÐÑðð ð	4˜( 8Ô,ð 	4°ð 	4ð 	4ð 	4ñ „[ð	4ð ð	6˜H XÔ.ð 	6°:ð 	6ð 	6ð 	6ñ „[ð	6ð ð	8˜h xÔ0ð 	8°Zð 	8ð 	8ð 	8ñ „[ð	8ð1ð 1ð 1ð 1ð 1rA   r*   )6rE   ÚenumÚdataclassesr   r   r   Útypingr   r   r   r	   r
   r   r   Úpyhanko.pdf_utils.miscr   Úpyhanko.versionr   Ú__all__r   rG   r(   r&   r'   r   r    r   r   r   r   r   r   r   r   r   r   r$   r%   r   r   r   r   r   r"   r!   r#   r)   r¦   r-   r,   ÚuniqueÚEnumr+   r*   rI   rA   r?   ú<module>rÔ      sp  ððð ð €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ Ià 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð ð  ð  €ðD 
�kÑ	!€ðð Ð% s¨DÐ0Ô1€
ðð
 ðL
ð L
ð L
ð L
ð L
ñ L
ô L
ñ „ðL
ð^ €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð2 2Ø8Ø)Ø
,Ø)Ø/Ø1Ø7Ø=Ø;Ø	ðð €ðð
 ˆ<˜2˜eœ9°Ð8Ñ8Ô8€ðð ˆ,˜"˜Uœ)°Ð
6Ñ
6Ô
6€ðð ˆ,˜"˜Uœ)°Ð
6Ñ
6Ô
6€ðð ˆ,˜"˜Uœ)°Ð
6Ñ
6Ô
6€ðð ˆ,˜"˜Uœ)°Ð
6Ñ
6Ô
6€ðð 
ˆ˜˜Eœ¨tÐ	4Ñ	4Ô	4€ðð ˆL˜B˜uœI°'Ð:Ñ:Ô:€	ðð ˆ|˜r %œy°ZÐ@Ñ@Ô@€ðð ˆL˜B˜uœI°'Ð:Ñ:Ô:€	ðð �  E¤°{ÐCÑCÔC€ðð �, " U¤)¸ÐFÑFÔF€ðð ˆL˜B˜sœG°	Ð:Ñ:Ô:€	ðð ˆ,˜"˜Sœ'¨gÐ
6Ñ
6Ô
6€ðð
 ˆ<˜2˜dœ8°Ð8Ñ8Ô8€ðð ˆ\˜R œX°)Ð<Ñ<Ô<€
ðð �  D¤°mÐDÑDÔD€ðð ˆ|˜r %œy°ZÐ@Ñ@Ô@€ðð ˆ|˜r %œy°ZÐ@Ñ@Ô@€ðð �, " U¤)¸ÐFÑFÔF€ðð �  E¤°|ÐDÑDÔD€ðð ˆl˜b œi°LÐAÑAÔA€ðð
`
ð `
ð `
ð `
ð `
ñ `
ô `
ð `
ðF €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð ðð ð ð ð ñ ô ñ „ðð $Qð $Qð $Qð $Qð $Qñ $Qô $Qð $QðN „ðFð Fð Fð Fð F�4”9ñ Fô Fñ „ðFð6 ð>1ð >1ð >1ð >1ð >1ñ >1ô >1ñ „ð>1ð >1ð >1rA   