Ë

����†£éfw1��ã�������������������ó¾��—�d�Z�ddlZddlZddlmZmZmZ�ddlZddl	Zddl
ZddlZddlZddl
ZddlZej������������������j ������������������hZej������������������j$������������������ej������������������j&������������������ej������������������j(������������������hZd„�Zej.�������������������G�d„�dej0������������������«������«�������Z�G�d„�d«������Zej6������������������j6�������������������G�d	„�d
e«������«�������Zy)z)DNS nodes.  A node is a set of rdatasets.é����N)ÚAnyÚDictÚOptionalc�����������������óT���—�||�v�xs#�|t���������j������������������j������������������k(��xr�||�v�S�©N)ÚdnsÚ	rdatatypeÚRRSIG)ÚrdtypesÚrdtypeÚcoverss���   úQ/var/lib/jenkins/workspace/mettalog/venv/lib/python3.12/site-packages/dns/node.pyÚ_matches_type_or_its_signaturer���,���s+���€�ؐWÐÒU ¬3¯=©=×+>Ñ+>Ñ!>Ò!TÀ6ÈWÐCTÐUó����c�������������������óÌ���—�e�Zd�ZdZdZdZdZedej������������������j������������������dej������������������j������������������dd�fd„«�������Zed	ej������������������j������������������dd�fd
„«�������Zy)ÚNodeKindzRdatasets in nodesr���é���é���r���r
���Úreturnc�����������������ó¦���—�t��������t��������||«������rt��������j������������������S�t��������t��������||«������rt��������j
������������������S�t��������j������������������S�r���)r���Ú_cname_typesr���ÚCNAMEÚ_neutral_typesÚNEUTRALÚREGULAR)Úclsr���r
���s���   r���ÚclassifyzNodeKind.classify8���s>���€�ô�*¬,¸ÀÔGÜ—>‘>Ð!Ü
+¬N¸FÀFÔ
KÜ×#Ñ#Ð#ä×#Ñ#Ð#r���Úrdatasetc�����������������óN���—�|�j������������������|j������������������|j������������������«������S�r���)r���r���r
���)r���r���s���  r���Úclassify_rdatasetzNodeKind.classify_rdatasetC���s���€�à|‰|˜HŸO™O¨X¯_©_Ó=Ð=r���N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r���r���r���Úclassmethodr���r	���Ú	RdataTyper���r���ÚRdatasetr ���©�r���r���r���r���0���s~���„�áà€GØ€GØ
€Eàð$Ø—]‘]×,Ñ,ð$Ø69·m±m×6MÑ6Mð$à	ò$ó�ð$ð�ð>¨¯©×)>Ñ)>ð�>À:ò�>ó�ñ>r���r���c�������������������ól��—�e�Zd�ZdZdgZd„�Zdej������������������j������������������de	e
ef���de
fd„Zd„�Z
d	„�Zd
„�Zd„�Zd„�Zd
„�Zej&������������������j(������������������dfdej*������������������j,������������������dej&������������������j.������������������dej&������������������j.������������������dedej2������������������j4������������������f
d„Zej&������������������j(������������������dfdej*������������������j,������������������dej&������������������j.������������������dej&������������������j.������������������dedeej2������������������j4���������������������f
d„Zej&������������������j(������������������fdej*������������������j,������������������dej&������������������j.������������������dej&������������������j.������������������ddfd„Zdej2������������������j4������������������ddfd„Zde fd„Z!defd„Z"y)ÚNodeaÖ��A Node is a set of rdatasets.

    A node is either a CNAME node or an "other data" node.  A CNAME
    node contains only CNAME, KEY, NSEC, and NSEC3 rdatasets along with their
    covering RRSIG rdatasets.  An "other data" node contains any
    rdataset other than a CNAME or RRSIG(CNAME) rdataset.  When
    changes are made to a node, the CNAME or "other data" state is
    always consistent with the update, i.e. the most recent change
    wins.  For example, if you have a node which contains a CNAME
    rdataset, and then add an MX rdataset to it, then the CNAME
    rdataset will be deleted.  Likewise if you have a node containing
    an MX rdataset and add a CNAME rdataset, the MX rdataset will be
    deleted.
    Ú	rdatasetsc�����������������ó���—�g�|�_���������y�r���©r+���©Úselfs��� r���Ú__init__z
Node.__init__Z���s	���€�àˆr���ÚnameÚkwr���c�����������������óö���—�t��������j������������������«�������}|�j������������������D�]D��}t��������|«������dkD��sŒ|j	�������������������|j
������������������|fi�|¤Ž«�������|j	������������������d«�������ŒF�|j
������������������«�������dd�S�)a"��Convert a node to text format.

        Each rdataset at the node is printed.  Any keyword arguments
        to this method are passed on to the rdataset's to_text() method.

        *name*, a ``dns.name.Name``, the owner name of the
        rdatasets.

        Returns a ``str``.

        r���ú
Néÿÿÿÿ)ÚioÚStringIOr+���ÚlenÚwriteÚto_textÚgetvalue)r/���r1���r2���ÚsÚrdss���     r���r:���zNode.to_text^���sd���€�ô�
K‰K‹MˆØ—>”>ˆCܐ3‹x˜!‹|Ø—‘˜˜Ÿ™ DÑ/¨BÑ/Ô0Ø—‘˜•
ð�"ð�z‰z‹|˜C˜RÐ Ð r���c�����������������ó6���—�dt��������t��������|�«������«������z���dz���S�)Nz
<DNS node ú>)ÚstrÚidr.���s��� r���Ú__repr__z
Node.__repr__r���s���€�Øœc¤" T£(›mÑ+¨cÑ1Ð1r���c�����������������óˆ���—�|�j�������������������D�]��}||j�������������������vsŒ�y�|j�������������������D�]��}||�j�������������������vsŒ�y�y)NFTr-���)r/���ÚotherÚrds���   r���Ú__eq__zNode.__eq__u���sE���€�ð�—.”.ˆBؘŸ™Ò(Ùð�!ð�—/”/ˆBؘŸ™Ò'Ùð�"ð�r���c�����������������ó&���—�|�j������������������|«�������S�r���)rF���)r/���rD���s���  r���Ú__ne__zNode.__ne__���s���€�Ø—;‘;˜uÓ%Ð%Ð%r���c�����������������ó,���—�t��������|�j������������������«������S�r���)r8���r+���r.���s��� r���Ú__len__zNode.__len__„���s���€�ܐ4—>‘>Ó"Ð"r���c�����������������ó,���—�t��������|�j������������������«������S�r���)Úiterr+���r.���s��� r���Ú__iter__z
Node.__iter__‡���s���€�ܐD—N‘NÓ#Ð#r���c�����������������ó
��—�t��������|�j������������������«������dkD��rÆt��������j������������������|«������}|t��������j������������������k(��rF|�j������������������D�cg�c]*��}t��������j������������������|«������t��������j
������������������k7��r|‘Œ,�c}|�_��������nX|t��������j
������������������k(��rE|�j������������������D�cg�c]*��}t��������j������������������|«������t��������j������������������k7��r|‘Œ,�c}|�_��������|�j������������������j
������������������|«�������yc�c}w�c�c}w�)a†��Append rdataset to the node with special handling for CNAME and
        other data conditions.

        Specifically, if the rdataset being appended has ``NodeKind.CNAME``,
        then all rdatasets other than KEY, NSEC, NSEC3, and their covering
        RRSIGs are deleted.  If the rdataset being appended has
        ``NodeKind.REGULAR`` then CNAME and RRSIG(CNAME) are deleted.
        r���N)r8���r+���r���r ���r���r���Úappend)r/���r���Úkindr=���s���    r���Ú_append_rdatasetzNode._append_rdatasetŠ���sÏ���€�ô�ˆt~‰~Ó Ò"Ü×-Ñ-¨hÓ7ˆDØ”x—~‘~Ò%ð� $Ÿ~™~ö"àÜ×1Ñ1°#Ó6¼(×:JÑ:JÒJò�ò"•ð
�œ×)Ñ)Ò)ð� $Ÿ~™~ö"àÜ×1Ñ1°#Ó6¼(¿.¹.ÒHò�ò"”ð�	
‰×јhÕ'ùò"ùò"s���Á/C;Â(/D�FÚrdclassr���r
���Úcreatec�����������������óÊ���—�|�j�������������������D�]��}|j������������������|||«������sŒ|c�S��|st��������‚t��������j������������������j������������������|||«������}|�j
������������������|«�������|S�)a*��Find an rdataset matching the specified properties in the
        current node.

        *rdclass*, a ``dns.rdataclass.RdataClass``, the class of the rdataset.

        *rdtype*, a ``dns.rdatatype.RdataType``, the type of the rdataset.

        *covers*, a ``dns.rdatatype.RdataType``, the covered type.
        Usually this value is ``dns.rdatatype.NONE``, but if the
        rdtype is ``dns.rdatatype.SIG`` or ``dns.rdatatype.RRSIG``,
        then the covers value will be the rdata type the SIG/RRSIG
        covers.  The library treats the SIG and RRSIG types as if they
        were a family of types, e.g. RRSIG(A), RRSIG(NS), RRSIG(SOA).
        This makes RRSIGs much easier to work with than if RRSIGs
        covering different rdata types were aggregated into a single
        RRSIG rdataset.

        *create*, a ``bool``.  If True, create the rdataset if it is not found.

        Raises ``KeyError`` if an rdataset of the desired type and class does
        not exist and *create* is not ``True``.

        Returns a ``dns.rdataset.Rdataset``.
        )r+���ÚmatchÚKeyErrorr���r���r'���rQ���©r/���rR���r���r
���rS���r=���s���      r���Ú
find_rdatasetzNode.find_rdataset¦���s]���€�ð@�—>”>ˆC؏y‰y˜ &¨&Õ1Ø’
ð�"ñ�܈N܏l‰l×#Ñ# G¨V°VÓ<ˆØ×јcÔ"؈
r���c�����������������óT���—�	�|�j������������������||||«������}|S�#�t��������$�r�d}Y�|S�w�xY�w)aç��Get an rdataset matching the specified properties in the
        current node.

        None is returned if an rdataset of the specified type and
        class does not exist and *create* is not ``True``.

        *rdclass*, an ``int``, the class of the rdataset.

        *rdtype*, an ``int``, the type of the rdataset.

        *covers*, an ``int``, the covered type.  Usually this value is
        dns.rdatatype.NONE, but if the rdtype is dns.rdatatype.SIG or
        dns.rdatatype.RRSIG, then the covers value will be the rdata
        type the SIG/RRSIG covers.  The library treats the SIG and RRSIG
        types as if they were a family of
        types, e.g. RRSIG(A), RRSIG(NS), RRSIG(SOA).  This makes RRSIGs much
        easier to work with than if RRSIGs covering different rdata
        types were aggregated into a single RRSIG rdataset.

        *create*, a ``bool``.  If True, create the rdataset if it is not found.

        Returns a ``dns.rdataset.Rdataset`` or ``None``.
        N)rX���rV���rW���s���      r���Úget_rdatasetzNode.get_rdatasetÏ���s?���€�ð>	Ø×$Ñ$ W¨f°f¸fÓEˆCð�ˆ
øô�ò�	؉C؈
ð	ús���‚�˜'¦'Nc�����������������óf���—�|�j������������������|||«������}||�j������������������j������������������|«�������yy)aD��Delete the rdataset matching the specified properties in the
        current node.

        If a matching rdataset does not exist, it is not an error.

        *rdclass*, an ``int``, the class of the rdataset.

        *rdtype*, an ``int``, the type of the rdataset.

        *covers*, an ``int``, the covered type.
        N)rZ���r+���Úremove)r/���rR���r���r
���r=���s���     r���Údelete_rdatasetzNode.delete_rdatasetô���s4���€�ð$�×Ñ ¨°Ó8ˆØˆ?ØN‰N×!Ñ! #Õ&ð�r���Úreplacementc�����������������óN��—�t��������|t��������j������������������j������������������«������st	��������d«������‚t��������|t��������j
������������������j������������������«������r|j������������������«�������}|�j������������������|j������������������|j������������������|j������������������«�������|�j������������������|«�������y)aÅ��Replace an rdataset.

        It is not an error if there is no rdataset matching *replacement*.

        Ownership of the *replacement* object is transferred to the node;
        in other words, this method does not store a copy of *replacement*
        at the node, it stores *replacement* itself.

        *replacement*, a ``dns.rdataset.Rdataset``.

        Raises ``ValueError`` if *replacement* is not a
        ``dns.rdataset.Rdataset``.
        zreplacement is not an rdatasetN)
Ú
isinstancer���r���r'���Ú
ValueErrorÚrrsetÚRRsetÚto_rdatasetr]���rR���r���r
���rQ���©r/���r^���s���  r���Úreplace_rdatasetzNode.replace_rdataset
��s}���€�ô�˜+¤s§|¡|×'<Ñ'<Ô=ÜÐ=Ó>Ð>ܐk¤3§9¡9§?¡?Ô3ð�&×1Ñ1Ó3ˆKØ×ÑØ×Ñ ×!3Ñ!3°[×5GÑ5Gô	
ð�	
×јkÕ*r���c�����������������óÆ���—�|�j�������������������D�]C��}t��������j������������������|j������������������|j������������������«������}|t��������j
������������������k7��sŒA|c�S��t��������j
������������������S�)aT��Classify a node.

        A node which contains a CNAME or RRSIG(CNAME) is a
        ``NodeKind.CNAME`` node.

        A node which contains only "neutral" types, i.e. types allowed to
        co-exist with a CNAME, is a ``NodeKind.NEUTRAL`` node.  The neutral
        types are NSEC, NSEC3, KEY, and their associated RRSIGS.  An empty node
        is also considered neutral.

        A node which contains some rdataset which is not a CNAME, RRSIG(CNAME),
        or a neutral type is a a ``NodeKind.REGULAR`` node.  Regular nodes are
        also commonly referred to as "other data".
        )r+���r���r���r���r
���r���)r/���r���rP���s���   r���r���z
Node.classify$��sM���€�ð�ŸœˆHÜ×$Ñ$ X§_¡_°h·o±oÓFˆDØ”x×'Ñ'Ó'Ø’ð�'ô�×ÑÐr���c������������������ó���—�y)NFr(���r.���s��� r���Úis_immutablezNode.is_immutable9��s���€�Ør���)#r!���r"���r#���r$���Ú	__slots__r0���r���r1���ÚNamer���r@���r���r:���rB���rF���rH���rJ���rM���rQ���r	���ÚNONEÚ
rdataclassÚ
RdataClassr&���Úboolr���r'���rX���r���rZ���r]���rf���r���r���ri���r(���r���r���r*���r*���H���sÐ��„�ñ
ð�
€Iòð!˜CŸH™HŸM™Mð�!°°c¸3°h±ð�!ÀCó�!ò(2ò
ò&ò#ò$ò(ð@�+.¯-©-×*<Ñ*<Øñ'à—‘×*Ñ*ð'ð�—
‘
×'Ñ'ð'ð�—
‘
×'Ñ'ð	'ð
�ð'ð�

‰×	Ñ	ó
'ðZ�+.¯-©-×*<Ñ*<Øñ#à—‘×*Ñ*ð#ð�—
‘
×'Ñ'ð#ð�—
‘
×'Ñ'ð	#ð
�ð#ð�
#—,‘,×'Ñ'Ñ	(ó
#ðR�+.¯-©-×*<Ñ*<ñ	'à—‘×*Ñ*ð'ð�—
‘
×'Ñ'ð'ð�—
‘
×'Ñ'ð	'ð
�
ó'ð,+¨C¯L©L×,AÑ,Að�+Àdó�+ð4 ˜(ó� ð*˜dô�r���r*���c�������������������ó���‡�—�e�Zd�Zˆ�fd„Zej
������������������j������������������dfdej������������������j������������������dej
������������������j������������������dej
������������������j������������������de
dej������������������j������������������f
ˆ�fd„
Z
ej
������������������j������������������dfdej������������������j������������������dej
������������������j������������������dej
������������������j������������������de
deej������������������j���������������������f
ˆ�fd	„
Zej
������������������j������������������fdej������������������j������������������dej
������������������j������������������dej
������������������j������������������dd
fd„Zdej������������������j������������������dd
fd
„Zde
fd„Zˆ�xZS�)Ú
ImmutableNodec�����������������ó¶���•—�t���������‰|���«��������t��������|j������������������D�cg�c]!��}t��������j
������������������j
������������������|«������‘Œ#�c}«������|�_��������y�c�c}w�r���)Úsuperr0���Útupler+���r���r���ÚImmutableRdataset)r/���Únoder=���Ú	__class__s���   €r���r0���zImmutableNode.__init__?��s>���ø€�Ü
‰ÑÔÜØ<@¿N¹NÖK°SŒS\‰\×
+Ñ
+¨CÕ
0ÒKó
ˆùÚKs���£&AFrR���r���r
���rS���r���c�����������������óB���•—�|rt��������d«������‚t��������‰|�	��|||d«������S�©NÚ	immutableF)Ú	TypeErrorrs���rX���©r/���rR���r���r
���rS���rw���s���     €r���rX���zImmutableNode.find_rdatasetE��s)���ø€�ñ�ܘKÓ(Ð(܉wÑ$ W¨f°f¸eÓDÐDr���c�����������������óB���•—�|rt��������d«������‚t��������‰|�	��|||d«������S�ry���)r{���rs���rZ���r|���s���     €r���rZ���zImmutableNode.get_rdatasetP��s)���ø€�ñ�ܘKÓ(Ð(܉wÑ# G¨V°V¸UÓCÐCr���Nc�����������������ó���—�t��������d«������‚©Nrz���©r{���)r/���rR���r���r
���s���    r���r]���zImmutableNode.delete_rdataset[��s���€�ô�˜Ó$Ð$r���r^���c�����������������ó���—�t��������d«������‚r���r€���re���s���  r���rf���zImmutableNode.replace_rdatasetc��s
���€�ܘÓ$Ð$r���c������������������ó���—�y)NTr(���r.���s��� r���ri���zImmutableNode.is_immutablef��s���€�Ør���)r!���r"���r#���r0���r���r	���rl���rm���rn���r&���ro���r���r'���rX���r���rZ���r]���rf���ri���Ú
__classcell__)rw���s���@r���rq���rq���=��sx��ø„�ô
ð�+.¯-©-×*<Ñ*<Øñ	Eà—‘×*Ñ*ð	Eð�—
‘
×'Ñ'ð	Eð�—
‘
×'Ñ'ð		Eð
�ð	Eð�

‰×	Ñ	õ
	Eð�+.¯-©-×*<Ñ*<Øñ	Dà—‘×*Ñ*ð	Dð�—
‘
×'Ñ'ð	Dð�—
‘
×'Ñ'ð		Dð
�ð	Dð�
#—,‘,×'Ñ'Ñ	(õ
	Dð�+.¯-©-×*<Ñ*<ñ	%à—‘×*Ñ*ð%ð�—
‘
×'Ñ'ð%ð�—
‘
×'Ñ'ð	%ð
�
ó%ð%¨C¯L©L×,AÑ,Að�%Àdó�%ð˜d÷�r���rq���)r$���Úenumr6���Útypingr���r���r���Ú
dns.immutabler���Údns.nameÚdns.rdataclassÚdns.rdatasetÚ
dns.rdatatypeÚdns.rendererÚ	dns.rrsetr	���r���r���ÚNSECÚNSEC3ÚKEYr���r���ÚuniqueÚEnumr���r*���rz���rq���r(���r���r���ú<module>r’������sÌ���ðñ$�0ã�Û�	ß�&Ñ�&ã�Û�Û�Û�Û�Û�Û�ð�‡MM×Ñð€ð�‡MM×Ñ؇MM×Ñ؇MM×Ñð€òVð�‡ô>ˆty‰yó�>ó�
ð>÷.rñ�rðj�‡×Ñô)Dó�)ó�ñ)r���