Ë
    RPfm  ã                   óœ  — d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
 ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZ G d„ dej0                  j2                  «      Z G d„ dej0                  j2                  «      Zd„ Ze	ej:                  j<                  eej>                  j@                     eej>                  j@                     ee   e!e"e!e"f   Z#d	„ Z$ G d
„ d«      Z% G d„ dejL                  jN                  «      Z( G d„ dejL                  jR                  «      Z*ddejV                  jX                  ejV                  jX                  dddej>                  jZ                  df	dedee
ej>                  j@                  e.f      dee!   dee
ejV                  j^                  e.f      de
ejV                  j^                  e.f   dee
ej`                  jb                  e.f      dee
e!e.f      deej>                  jd                     dee
ej>                  j@                  e.f      de"deejf                  jh                     fd„Z5y)z
DNS Zones.é    N)ÚAnyÚIterableÚListÚOptionalÚSetÚTupleÚUnionc                   ó   — e Zd ZdZy)ÚUnknownOriginzUnknown originN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úF/var/www/fastapitest/venv/lib/python3.12/site-packages/dns/zonefile.pyr   r   &   s   „ Úr   r   c                   ó   — e Zd ZdZy)ÚCNAMEAndOtherDataz!A node has a CNAME and other dataNr   r   r   r   r   r   *   s   „ Ú+r   r   c                 ó  — t         j                  j                  j                  |«      }| j	                  |«      }|€y |j                  «       }|t         j                  j                  j                  k(  r2|t         j                  j                  j                  k(  rt        d«      ‚|t         j                  j                  j                  k(  r3|t         j                  j                  j                  k(  rt        d«      ‚y y )Nz1rdataset type is not compatible with a CNAME nodez9CNAME rdataset is not compatible with a regular data node)	ÚdnsÚnodeÚNodeKindÚclassify_rdatasetÚget_nodeÚclassifyÚCNAMEÚREGULARr   )ÚtxnÚnameÚrdatasetÚrdataset_kindr   Ú	node_kinds         r   Ú_check_cname_and_other_datar$   .   sÃ   € Ü—H‘H×%Ñ%×7Ñ7¸ÓA€MØ�<‰<˜Ó€DØ€|àØ—‘“€Ià”S—X‘X×&Ñ&×,Ñ,Ò,ØœSŸX™X×.Ñ.×6Ñ6Ò6äÐ SÓTÐTà”S—X‘X×&Ñ&×.Ñ.Ò.ØœSŸX™X×.Ñ.×4Ñ4Ò4äØGó
ð 	
ð 5ð 	/r   c                 óR   — | j                  «       } | j                  d«      sd| z   } | S )Nú$)ÚupperÚ
startswith)Úss    r   Ú_upper_dollarizer*   Q   s'   € Ø	�‰‹	€AØ�<‰<˜ÔØ�!‰GˆØ€Hr   c                   ó®  — e Zd ZdZ	 	 	 	 	 	 	 ddej
                  j                  dej                  j                  dej                  j                  dedeeee   f   deej                   j"                     d	ee   d
eej                  j                     deej&                  j(                     dee   fd„Zd„ Zd„ Zd„ Zdedeeeeeef   fd„Zd„ Zdd„Zy)ÚReaderz(Read a DNS zone file into a transaction.NÚtokÚrdclassr   Úallow_includeÚallow_directivesÚ
force_nameÚ	force_ttlÚforce_rdclassÚforce_rdtypeÚdefault_ttlc                 óf  — || _         |j                  j                  «       \  | _        | _        }| j                  | _        d| _        d| _        |�|}
|
€d| _        d| _	        n|
| _        d| _	        | j
                  | _
        || _        || _        g | _        d | _        |  |du r'h d£| _        |rG| j                  j!                  d«       n+|du rt#        «       | _        nt#        d„ |D «       «      | _        || _        || _        || _        |	| _        | j                  j-                  t.        «       y )Nr   FT>   ú$TTLú$ORIGINú	$GENERATEú$INCLUDEc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)r*   )Ú.0Úds     r   ú	<genexpr>z"Reader.__init__.<locals>.<genexpr>†   s   è ø€ Ò)XÀ!Ô*:¸1×*=Ñ)Xùs   ‚)r-   ÚmanagerÚorigin_informationÚzone_originÚ
relativizeÚcurrent_originÚlast_ttlÚlast_ttl_knownr5   Údefault_ttl_knownÚ	last_nameÚzone_rdclassr   Úsaved_stateÚcurrent_fileÚallowed_directivesÚaddÚsetr1   r2   r3   r4   Úcheck_put_rdatasetr$   )Úselfr-   r.   r   r/   r0   r1   r2   r3   r4   r5   Ú_s               r   Ú__init__zReader.__init__[   s(  € ð ˆŒØ14·±×1OÑ1OÓ1QÑ.ˆÔ	˜4œ?¨AØ"×.Ñ.ˆÔØˆŒØ#ˆÔØÐ Ø#ˆKØÐØ ˆDÔØ%*ˆDÕ"à*ˆDÔØ%)ˆDÔ"Ø×,Ñ,ˆŒØ#ˆÔØˆŒØ13ˆÔØ+/ˆÔÙØ˜tÑ#Ú&FˆDÔ#ÙØ×'Ñ'×+Ñ+¨JÕ7Ø Ñ&ô '*£eˆDÕ#ô '*Ñ)XÐGWÔ)XÓ&XˆDÔ#Ø$ˆŒØ"ˆŒØ*ˆÔØ(ˆÔØ�‰×#Ñ#Ô$?Õ@r   c                 ó\   — 	 | j                   j                  «       }|j                  «       ry Œ,r<   )r-   ÚgetÚis_eol_or_eof©rP   Útokens     r   Ú	_eat_linezReader._eat_line�   s(   € ØØ—H‘H—L‘L“NˆEØ×"Ñ"Ô$Øð r   c                 óŽ   — | j                   j                  «       }|j                  «       st        j                  j
                  ‚|S r<   )r-   rT   Úis_identifierr   Ú	exceptionÚSyntaxErrorrV   s     r   Ú_get_identifierzReader._get_identifier“   s2   € Ø—‘—‘“ˆØ×"Ñ"Ô$Ü—-‘-×+Ñ+Ð+Øˆr   c           	      óº
  — d}| j                   �| j                   }�n| j                  €t        ‚| j                  j	                  d¬«      }|j                  «       s,| j                  j                  || j                  «      | _        nF| j                  j	                  «       }|j                  «       ry| j                  j                  |«       | j                  }|j                  | j                  «      s| j                  «        y| j                  r|j                  | j                  «      }| j                  �| j                  }|| _        d| _        nL| j#                  «       }d}	 t$        j&                  j)                  |j*                  «      }|| _        d| _        d}| j.                  �| j.                  }nh| j#                  «       }	 t$        j0                  j)                  |j*                  «      }|| j8                  k7  rt$        j2                  j5                  d«      ‚|€L| j#                  «       }d}	 t$        j&                  j)                  |j*                  «      }|| _        d| _        d}| j>                  �| j>                  }n:| j#                  «       }	 t$        j@                  j)                  |j*                  «      }	 t$        jB                  j)                  ||| j                  | j                  | j                  | j                  «      }| j:                  sC|t$        j@                  jL                  k(  r&|jN                  | _        d| _        |€|jN                  }|€t$        j2                  j5                  d«      ‚| jP                  jS                  |||«       y# t$        j&                  j,                  $ r | j                  j                  |«       Y �Œ8w xY w# t$        j2                  j4                  $ r ‚ t6        $ r+ | j8                  }| j                  j                  |«       Y �Œ9w xY w# t$        j&                  j,                  $ rP | j:                  r| j<                  }n| j                   r| j                  }| j                  j                  |«       Y �Œ-w xY w# t6        $ r- t$        j2                  j5                  d|j*                  z  «      ‚w xY w# t$        j2                  j4                  $ r ‚ t6        $ r\ tE        jF                  «       dd \  }}t$        j2                  j5                  djI                  tK        |«      tK        |«      «      «      ‚w xY w)	z&Process one line from a DNS zone file.NT)Úwant_leadingúRR class is not zone's classúunknown rdatatype '%s'é   zcaught exception {}: {}úMissing default TTL value)*r1   rD   r   r-   rT   Úis_whitespaceÚas_namerH   rU   ÚungetÚis_subdomainrB   rX   rC   r2   rE   rF   r]   r   ÚttlÚ	from_textÚvalueÚBadTTLr3   Ú
rdataclassr[   r\   Ú	ExceptionrI   rG   r5   r4   Ú	rdatatypeÚrdataÚsysÚexc_infoÚformatÚstrÚSOAÚminimumr   rM   )	rP   rW   r    rh   r.   ÚrdtypeÚrdÚtyÚvas	            r   Ú_rr_linezReader._rr_line™   sB  € àˆà�?‰?Ð&Ø—?‘?ŠDà×"Ñ"Ð*Ü#Ð#Ø—H‘H—L‘L¨d�LÓ3ˆEØ×&Ñ&Ô(Ø!%§¡×!1Ñ!1°%¸×9LÑ9LÓ!M�•àŸ™Ÿ™›�Ø×&Ñ&Ô(àØ—‘—‘˜uÔ%Ø—>‘>ˆDØ×$Ñ$ T×%5Ñ%5Ô6Ø—‘Ô ØØ�ŠØ—‘ t×'7Ñ'7Ó8�ð �>‰>Ð%Ø—.‘.ˆCØˆDŒMØ"&ˆDÕà×(Ñ(Ó*ˆEØˆCð&Ü—g‘g×'Ñ'¨¯©Ó4�Ø #�”Ø&*�Ô#Ø�ð
 ×ÑÐ)Ø×(Ñ(‰Gà×(Ñ(Ó*ˆEð&ÜŸ.™.×2Ñ2°5·;±;Ó?�ð ˜$×+Ñ+Ò+Ü—m‘m×/Ñ/Ð0NÓOÐOàˆ;à×(Ñ(Ó*ˆEØˆCð
&Ü—g‘g×'Ñ'¨¯©Ó4�Ø #�”Ø&*�Ô#Ø�ð ×ÑÐ(Ø×&Ñ&‰Fà×(Ñ(Ó*ˆEðXÜŸ™×0Ñ0°·±Ó=�ð	Ü—‘×$Ñ$ØØØ—‘Ø×#Ñ#Ø—‘Ø× Ñ óˆBð, ×%Ò%¨&´C·M±M×4EÑ4EÒ*Eð  "Ÿz™zˆDÔØ%)ˆDÔ"Øˆ{à—j‘j�ð ˆ;Ü—-‘-×+Ñ+Ð,GÓHÐHà�‰�‰�T˜3 Õ#øôe —7‘7—>‘>ò &Ø—‘—‘˜u×%ð&ûô —=‘=×,Ñ,ò ØÜò &Ø×+Ñ+�Ø—‘—‘˜u×%ð&ûô —7‘7—>‘>ò &Ø×)Ò)Ø×*Ñ*‘CØ×(Ò(ØŸ-™-�CØ—‘—‘˜u×%ð&ûô ò XÜ—m‘m×/Ñ/Ð0HÈ5Ï;É;Ñ0VÓWÐWðXûô �}‰}×(Ñ(ò 	àÜò 		ô —|‘|“~ b qÐ)‰HˆR�Ü—-‘-×+Ñ+Ø)×0Ñ0´°R³¼#¸b»'ÓBóð ð		úsR   Å&9N Ç	)O È59P/ Ê)R ËAS Î8OÏOÏAP,Ð+P,Ð/A)RÒRÒ6SÓBUÚsideÚreturnc                 ó˜  — t        j                  d«      }t        j                  d«      }t        j                  d«      }|j                  |«      }|r|j                  «       \  }}}}	}
|dk(  rd}|j                  |«      }|r|j                  «       \  }}}|dk(  rd}d}	d}
|j                  |«      }|r|j                  «       \  }}}}	|dk(  rd}d}
|s|s|s
d}d}d}d}	d}
t	        «      }t	        	«      }	dvr"t
        j                  j                  d	|z  «      ‚
d
vr"t
        j                  j                  d|
z  «      ‚|||	|
fS )Nz"^.*\$({(\+|-?)(\d+),(\d+),(.)}).*$z^.*\$({(\+|-?)(\d+)}).*$z^.*\$({(\+|-?)(\d+),(\d+)}).*$Ú ú+r   r>   )r   ú-zinvalid offset sign %s)r>   ÚoÚxÚXÚnÚNzinvalid type %s)ÚreÚcompileÚmatchÚgroupsÚintr   r[   r\   )rP   r{   Úis_generate1Úis_generate2Úis_generate3Úg1ÚmodÚsignÚoffsetÚwidthÚbaseÚg2Úg3s                r   Ú_parse_modifyzReader._parse_modify  se  € ô —z‘zÐ"GÓHˆÜ—z‘zÐ"=Ó>ˆÜ—z‘zÐ"CÓDˆð ×Ñ Ó%ˆÙØ-/¯Y©Y«[Ñ*ˆC��v˜u dØ�rŠzØ�Ø×Ñ Ó%ˆÙØ "§	¡	£ÑˆC��vØ�rŠzØ�ØˆEØˆDØ×Ñ Ó%ˆÙØ')§y¡y£{Ñ$ˆC��v˜uØ�rŠzØ�ØˆDá‘b™BØˆCØˆDØˆFØˆEØˆDä�V“ˆÜ�E“
ˆà�zÑ!Ü—-‘-×+Ñ+Ð,DÀtÑ,KÓLÐLØÐ5Ñ5Ü—-‘-×+Ñ+Ð,=ÀÑ,DÓEÐEà�D˜& %¨Ð-Ð-r   c           
      ó|  ‡— | j                   €t        ‚| j                  j                  «       }	 t        j
                  j                  |j                  «      \  }}}| j                  j                  «       }|j                  «       st        j                  j                  ‚	 	 |j                  }| j                  j                  «       }|j                  «       st        j                  j                  ‚	 	 t        j                  j                  |j                  «      }|| _        d| _        | j                  j                  «       }|j                  «       st        j                  j                  ‚	 	 t        j$                  j                  |j                  «      }| j                  j                  «       }|j                  «       st        j                  j                  ‚	 || j&                  k7  rt        j                  j                  d«      ‚	 t        j(                  j                  |j                  «      }| j                  j                  «       }|j                  «       st        j                  j                  ‚	 |j                  }	dt*        dt,        dt*        d	t*        fd
„}
dt*        dt,        dt*        d	t,        fˆfd„Š| j/                  |«      \  }}}}}| j/                  |	«      \  }}}}}t1        ||dz   |«      D �]Y  } |
|||«      } |
|||«      } ‰|||«      } ‰|||«      }|j3                  d|z  |«      }|	j3                  d|z  |«      }t        j4                  j                  || j                   | j                  j6                  «      | _        | j8                  }|j;                  | j<                  «      s| j?                  «         y| j@                  r|jA                  | j<                  «      }	 t        jB                  j                  |||| j                   | j@                  | j<                  «      }| jH                  jK                  ||«       �Œ\ y# t        $ r t        j                  j                  ‚w xY w# t        $ r t        j                  j                  ‚w xY w# t        j                  j                  $ rl | j                  s+| j                   st        j                  j                  d«      ‚| j                   r| j"                  }n| j                  r| j                  }Y �ŒÄw xY w# t        j                  j                  $ r t        j                  j                  ‚t        $ r | j&                  }Y �Œ§w xY w# t        $ r- t        j                  j                  d|j                  z  «      ‚w xY w# t        j                  j                  $ r ‚ t        $ rR tE        jF                  «       dd \  }}t        j                  j                  dt-        |«      ›dt-        |«      ›�«      ‚w xY w)zPProcess one line containing the GENERATE statement from a DNS
        zone file.NTrc   r`   ra   ÚcounterÚoffset_signr‘   r|   c                 ó    — |dk(  r|dz  }| |z   S )z0Calculate the index from the counter and offset.r€   éÿÿÿÿr   )r˜   r™   r‘   s      r   Ú_calculate_indexz/Reader._generate_line.<locals>._calculate_index�  s   € à˜cÒ!Ø˜"‘�Ø˜VÑ#Ð#r   Úindexr“   r’   c                 ó¸   •— |dv rt        | |«      j                  |«      S  ‰| d|«      }dj                  |ddd…   «      d| }|dk(  r|j                  «       }|S )zVFormat the index with the given base, and zero-fill it
            to the given width.)r>   r�   r‚   rƒ   r‚   ú.Nr›   r…   )rr   ÚzfillÚjoinr'   )r�   r“   r’   ÚhexaÚnibblesÚ_format_indexs        €r   r¤   z,Reader._generate_line.<locals>._format_index‡  sj   ø€ ð Ð+Ñ+Ü˜e TÓ*×0Ñ0°Ó7Ð7ñ ! ¨¨UÓ3ˆDØ—h‘h˜t¡D b D™zÓ*¨6¨EÐ2ˆGØ�sŠ{Ø!Ÿ-™-›/�ØˆNr   é   z$%srb   zcaught exception z: )&rD   r   r-   rT   r   Úgrangeri   rj   rZ   r[   r\   rm   rh   rE   rF   rk   rG   r5   rl   rI   rn   rŠ   rs   r–   ÚrangeÚreplacer    Ú
idna_codecrH   rg   rB   rX   rC   ro   rp   rq   r   rM   ) rP   rW   ÚstartÚstopÚstepÚlhsrh   r.   rv   Úrhsrœ   ÚlmodÚlsignÚloffsetÚlwidthÚlbaseÚrmodÚrsignÚroffsetÚrwidthÚrbaseÚiÚlindexÚrindexÚlzfindexÚrzfindexr    ro   rw   rx   ry   r¤   s                                   @r   Ú_generate_linezReader._generate_line@  s  ø€ ð ×ÑÐ&ÜÐà—‘—‘“ˆð	,Ü #§
¡
× 4Ñ 4°U·[±[Ó AÑˆE�4˜Ø—H‘H—L‘L“NˆEØ×&Ñ&Ô(Ü—m‘m×/Ñ/Ð/ð )ð	,Ø—+‘+ˆCØ—H‘H—L‘L“NˆEØ×&Ñ&Ô(Ü—m‘m×/Ñ/Ð/ð )ð	$Ü—'‘'×#Ñ# E§K¡KÓ0ˆCØˆDŒMØ"&ˆDÔØ—H‘H—L‘L“NˆEØ×&Ñ&Ô(Ü—m‘m×/Ñ/Ð/ð )ð	(Ü—n‘n×.Ñ.¨u¯{©{Ó;ˆGØ—H‘H—L‘L“NˆEØ×&Ñ&Ô(Ü—m‘m×/Ñ/Ð/ð )ð �d×'Ñ'Ò'Ü—-‘-×+Ñ+Ð,JÓKÐKð	TÜ—]‘]×,Ñ,¨U¯[©[Ó9ˆFØ—H‘H—L‘L“NˆEØ×&Ñ&Ô(Ü—m‘m×/Ñ/Ð/ð )ð �k‰kˆð	$¤cð 	$¼ð 	$ÄSð 	$ÌSó 	$ð	¤ð 	¬Cð 	¼ð 	Äõ 	ð /3×.@Ñ.@ÀÓ.EÑ+ˆˆe�W˜f eØ.2×.@Ñ.@ÀÓ.EÑ+ˆˆe�W˜f eÜ�u˜d Q™h¨Ó-ó -	(ˆAñ & a¨°Ó8ˆFÙ% a¨°Ó8ˆFá$ V¨U°FÓ;ˆHÙ$ V¨U°FÓ;ˆHà—;‘;˜u¨™~¨xÓ8ˆDØ—K‘K ¨¡°Ó9ˆEä ŸX™X×/Ñ/Ø�d×)Ñ)¨4¯8©8×+>Ñ+>óˆDŒNð —>‘>ˆDØ×$Ñ$ T×%5Ñ%5Ô6Ø—‘Ô ÙØ�ŠØ—‘ t×'7Ñ'7Ó8�ðÜ—Y‘Y×(Ñ(ØØØØ×'Ñ'Ø—O‘OØ×$Ñ$ó�ð, �H‰H�L‰L˜˜s BÖ'ñ[-	(øôQ ò 	,Ü—-‘-×+Ñ+Ð+ð	,ûô ò 	,Ü—-‘-×+Ñ+Ð+ð	,ûô �w‰w�~‰~ò 	$Ø×'Ò'¨4×+AÒ+AÜ—m‘m×/Ñ/Ð0KÓLÐLØ×%Ò%Ø×&Ñ&‘Ø×$Ò$Ø—m‘m�úð	$ûô �}‰}×(Ñ(ò 	,Ü—-‘-×+Ñ+Ð+Üò 	(Ø×'Ñ'‹Gð	(ûô ò 	TÜ—-‘-×+Ñ+Ð,DÀuÇ{Á{Ñ,RÓSÐSð	Tûôt —=‘=×,Ñ,ò àÜò 	ô Ÿ<™<›>¨"¨1Ð-‘��RÜ—m‘m×/Ò/Ü14°Rµ¼#¸b¼'ÐBóð ð	ús\   ¯A1Q Â"AR Ã4A;R, Å1A-T8 ÈA-V
 Ï;AWÑ$RÒ$R)Ò,BT5Ô4T5Ô8AVÖVÖ
6W ×A8X;c           
      óv
  — 	 	 | j                   j                  dd«      }|j                  «       rŒ| j                  �| j                  j	                  «        t        | j                  «      dkD  rM| j                  j                  d«      \  | _         | _        | _	        | _        | _
        | _        | _        | _        Œ¸y|j                  «       rŒÊ|j                  «       r| j                   j!                  «        Œõ|j"                  d   dk(  �rpt        | j$                  «      dkD  �rW|j"                  j'                  «       }|| j$                  vr#t(        j*                  j-                  d|› d�«      ‚|dk(  rš| j                   j                  «       }|j/                  «       st(        j*                  j-                  d	«      ‚t(        j0                  j3                  |j"                  «      | _        d| _        | j                   j!                  «        �nk|d
k(  r}| j                   j5                  «       | _        | j                   j!                  «        | j6                  €| j                  | _        | j8                  j;                  | j                  «       �né|dk(  �rª| j                   j                  «       }|j"                  }| j                   j                  «       }|j/                  «       rdt(        j<                  j3                  |j"                  | j                  | j                   j>                  «      }| j                   j!                  «        n;|jA                  «       st(        j*                  j-                  d«      ‚| j                  }| j                  jC                  | j                   | j                  | j                  | j                  | j                  | j                  | j                  | j                  f«       tE        |d«      | _        t(        jF                  jI                  | j                  |«      | _         || _        n9|dk(  r| jK                  «        n#t(        j*                  j-                  d|› d�«      ‚�Œx| j                   jM                  |«       | jO                  «        �Œ¤# t(        j*                  j,                  $ rt}| j                   jQ                  «       \  }}|€d}t(        j*                  j-                  d|||fz  «      }tS        jT                  «       d   }|jW                  |«      d‚d}~ww xY w)zÆRead a DNS zone file and build a zone object.

        @raises dns.zone.NoSOA: No SOA RR was found at the zone origin
        @raises dns.zone.NoNS: No NS RRset was found at the zone origin
        TNr   r›   r&   zzone file directive 'z' is not allowedr7   zbad $TTLr8   r:   zbad origin in $INCLUDEÚrr9   zUnknown zone file directive 'ú'zsyntax errorz	%s:%d: %srb   ),r-   rT   Úis_eofrK   ÚcloseÚlenrJ   ÚpoprD   rH   rE   rF   r5   rG   Úis_eolÚ
is_commentÚget_eolrj   rL   r'   r   r[   r\   rZ   rh   ri   Úget_namerB   r   Ú_set_originr    r©   rU   ÚappendÚopenÚ	tokenizerÚ	Tokenizerr¾   rf   rz   Úwhererp   rq   Úwith_traceback)	rP   rW   ÚcÚfilenameÚ
new_originÚdetailÚline_numberÚexÚtbs	            r   ÚreadzReader.readÅ  s  € ð[	2ØØŸ™Ÿ™ T¨4Ó0�Ø—<‘<”>Ø×(Ñ(Ð4Ø×)Ñ)×/Ñ/Ô1Ü˜4×+Ñ+Ó,¨qÒ0ð !×,Ñ,×0Ñ0°Ó4ñ	Ø œHØ Ô/Ø œNØ Ô-Ø œMØ Ô/Ø Ô,Ø Ô2à ØØ—\‘\”^ØØ×%Ñ%Ô'Ø—H‘H×$Ñ$Ô&ØØ—[‘[ ‘^ sÓ*¬s°4×3JÑ3JÓ/KÈaÓ/Oð Ÿ™×)Ñ)Ó+�AØ × 7Ñ 7Ñ7Ü!Ÿm™m×7Ñ7Ø3°A°3Ð6FÐGóð ð ˜F’{Ø $§¡§¡£˜Ø$×2Ñ2Ô4Ü"%§-¡-×";Ñ";¸JÓ"GÐGÜ+.¯7©7×+<Ñ+<¸U¿[¹[Ó+I˜Ô(Ø15˜Ô.ØŸ™×(Ñ(Ö*Ø˜išØ.2¯h©h×.?Ñ.?Ó.A˜Ô+ØŸ™×(Ñ(Ô*Ø×+Ñ+Ð3Ø/3×/BÑ/B˜DÔ,ØŸ™×,Ñ,¨T×-@Ñ-@ÖAØ˜j›Ø $§¡§¡£˜Ø#(§;¡;˜Ø $§¡§¡£˜à ×.Ñ.Ô0Ü),¯©×);Ñ);Ø %§¡¨T×-@Ñ-@À$Ç(Á(×BUÑBUó*˜Jð !ŸH™H×,Ñ,Õ.Ø!&×!4Ñ!4Ô!6Ü"%§-¡-×";Ñ";Ð<TÓ"UÐUà)-×)<Ñ)<˜JØ×(Ñ(×/Ñ/à $§¡Ø $× 3Ñ 3Ø $§¡Ø $× 1Ñ 1Ø $§¡Ø $× 3Ñ 3Ø $× 0Ñ 0Ø $× 6Ñ 6ð	ôô -1°¸3Ó,?˜Ô)Ü#&§=¡=×#:Ñ#:¸4×;LÑ;LÈhÓ#W˜œØ.8˜Õ+Ø˜kÒ)Ø×+Ñ+Õ-ä!Ÿm™m×7Ñ7Ø;¸A¸3¸aÐ@óð ñ Ø—‘—‘˜uÔ%Ø—‘”ñc øôd �}‰}×(Ñ(ò 	2Ø&*§h¡h§n¡nÓ&6Ñ#ˆX�{Øˆ~Ø'�Ü—‘×*Ñ*Ø˜x¨°fÐ=Ñ=óˆBô —‘“ Ñ"ˆBØ×#Ñ# BÓ'¨TÐ1ûð	2ús    ‚B8R' Â;O,R' Ò'T8ÓA/T3Ô3T8)FTNNNNN)r|   N)r   r   r   r   r   rÍ   rÎ   rl   Ú
RdataClassÚtransactionÚTransactionÚboolr	   r   rs   r   r    ÚNamerŠ   rn   Ú	RdataTyperR   rX   r]   rz   r   r–   r¾   rØ   r   r   r   r,   r,   X   s0  „ Ù2ð $Ø7;Ø.2Ø#'Ø=AØ:>Ø%)ñ0Aà�]‰]×$Ñ$ð0Að —‘×*Ñ*ð0Að �_‰_×(Ñ(ð	0Að
 ð0Að    h¨s¡mÐ 3Ñ4ð0Að ˜SŸX™XŸ]™]Ñ+ð0Að ˜C‘=ð0Að   §¡× 9Ñ 9Ñ:ð0Að ˜sŸ}™}×6Ñ6Ñ7ð0Að ˜c‘]ó0Aòdòòx$ðt+. #ð +.¨%°°S¸#¸sÀCÐ0GÑ*Hó +.òZC(ôJb2r   r,   c                   ó`   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zˆ xZS )ÚRRsetsReaderTransactionc                 ó>   •— |rJ ‚t         ‰| �  |||«       i | _        y r<   )ÚsuperrR   Ú	rdatasets)rP   r@   ÚreplacementÚ	read_onlyÚ	__class__s       €r   rR   z RRsetsReaderTransaction.__init__+  s#   ø€ ÙÐˆ}Ü‰Ñ˜ +¨yÔ9Øˆ�r   c                 ó>   — | j                   j                  |||f«      S r<   )rã   rT   ©rP   r    rv   Úcoverss       r   Ú_get_rdatasetz%RRsetsReaderTransaction._get_rdataset0  s   € Ø�~‰~×!Ñ! 4¨°Ð"8Ó9Ð9r   c                 óì   — g }| j                   j                  «       D ]   \  \  }}}}||k(  sŒ|j                  |«       Œ" t        |«      dk(  ry t        j
                  j                  «       }||_         |S ©Nr   )rã   ÚitemsrË   rÄ   r   r   ÚNode)rP   r    rã   Úrdataset_namerQ   r!   r   s          r   Ú	_get_nodez!RRsetsReaderTransaction._get_node3  sq   € Øˆ	Ø/3¯~©~×/CÑ/CÓ/Eò 	+Ñ+Ñ!ˆ]˜A˜q 8Ø�}Ó$Ø× Ñ  Õ*ð	+ô ˆy‹>˜QÒØÜ�x‰x�}‰}‹ˆØ"ˆŒØˆr   c                 óP   — || j                   ||j                  |j                  f<   y r<   )rã   rv   ré   )rP   r    r!   s      r   Ú_put_rdatasetz%RRsetsReaderTransaction._put_rdataset>  s   € ØCKˆ�‰˜˜hŸo™o¨x¯©Ð?Ò@r   c                 ó¤   — g }| j                   D ]  }|d   |k(  sŒ|j                  |«       Œ t        |«      dkD  r|D ]  }| j                   |= Œ y y rì   )rã   rË   rÄ   )rP   r    ÚremoveÚkeys       r   Ú_delete_namez$RRsetsReaderTransaction._delete_nameA  s^   € àˆØ—>‘>ò 	#ˆCØ�1‰v˜‹~Ø—‘˜cÕ"ð	#ô ˆv‹;˜Š?Øò (�Ø—N‘N 3Ñ'ñ(ð r   c                 óD   — 	 | j                   |||f= y # t        $ r Y y w xY wr<   )rã   ÚKeyErrorrè   s       r   Ú_delete_rdatasetz(RRsetsReaderTransaction._delete_rdatasetK  s,   € ð	Ø—‘  f¨fÐ5Ñ6øÜò 	Ùð	ús   ‚ “	žc                 ó<   — | j                   D ]  \  }}}||k(  sŒ y y©NTF)rã   )rP   r    r„   rQ   s       r   Ú_name_existsz$RRsetsReaderTransaction._name_existsQ  s*   € Ø—~‘~ò 	‰GˆAˆq�!Ø�D‹yÙð	ð r   c                 ó2   — t        | j                  «      dkD  S rì   )rÄ   rã   ©rP   s    r   Ú_changedz RRsetsReaderTransaction._changedW  s   € Ü�4—>‘>Ó" QÑ&Ð&r   c                 óv  — |r·| j                  «       r¦g }| j                  j                  «       D ]k  \  \  }}}}t        j                  j                  ||j                  |j                  |j                  «      }|j                  |«       |j                  |«       Œm | j                  j                  |«       y y y r<   )rÿ   rã   rí   r   ÚrrsetÚRRsetr.   rv   ré   ÚupdaterË   r@   Ú
set_rrsets)rP   ÚcommitÚrrsetsr    rQ   r!   r  s          r   Ú_end_transactionz(RRsetsReaderTransaction._end_transactionZ  s—   € Ù�d—m‘m”oØˆFØ*.¯.©.×*>Ñ*>Ó*@ò %Ñ&‘��q˜!˜hÜŸ	™	Ÿ™Ø˜(×*Ñ*¨H¯O©O¸X¿_¹_ó�ð —‘˜XÔ&Ø—‘˜eÕ$ð%ð �L‰L×#Ñ# FÕ+ð &ˆ6r   c                  ó   — y r<   r   )rP   Úorigins     r   rÊ   z#RRsetsReaderTransaction._set_origine  s   € Ør   c                 ó   — t         ‚r<   ©ÚNotImplementedErrorrþ   s    r   Ú_iterate_rdatasetsz*RRsetsReaderTransaction._iterate_rdatasetsh  ó   € Ü!Ð!r   c                 ó   — t         ‚r<   r  rþ   s    r   Ú_iterate_namesz&RRsetsReaderTransaction._iterate_namesk  r  r   )r   r   r   rR   rê   rð   rò   rö   rù   rü   rÿ   r  rÊ   r  r  Ú__classcell__)ræ   s   @r   rà   rà   *  s@   ø„ ôò
:ò	òLò(òòò'ò	,òò"ö"r   rà   c                   óŠ   — e Zd Zej                  j
                  dej                  j                  fd„Zd„ Z	d	d„Z
d„ Zd„ Zd„ Zy)
ÚRRSetsReaderManagerFc                 ó<   — || _         || _        || _        g | _        y r<   )r	  rC   r.   r  )rP   r	  rC   r.   s       r   rR   zRRSetsReaderManager.__init__p  s    € ð ˆŒØ$ˆŒØˆŒØˆ�r   c                 ó   — t         ‚r<   r  rþ   s    r   ÚreaderzRRSetsReaderManager.readerx  r  r   c                 ó(   — |du sJ ‚t        | dd«      S rû   )rà   )rP   rä   s     r   ÚwriterzRRSetsReaderManager.writer{  s   € Ø˜dÑ"Ð"Ð"Ü& t¨T°5Ó9Ð9r   c                 ó   — | j                   S r<   )r.   rþ   s    r   Ú	get_classzRRSetsReaderManager.get_class  s   € Ø�|‰|Ðr   c                 óš   — | j                   rt        j                  j                  }n| j                  }| j                  | j                   |fS r<   )rC   r   r    Úemptyr	  )rP   Ú	effectives     r   rA   z&RRSetsReaderManager.origin_information‚  s4   € Ø�?Š?ÜŸ™Ÿ™‰IàŸ™ˆIØ—‘˜TŸ_™_¨iÐ8Ð8r   c                 ó   — || _         y r<   )r  )rP   r  s     r   r  zRRSetsReaderManager.set_rrsets‰  s	   € Øˆ�r   N)F)r   r   r   r   r    Úrootrl   ÚINrR   r  r  r  rA   r  r   r   r   r  r  o  s9   „ à—X‘X—]‘]¨u¸c¿n¹n×>OÑ>Oóò"ó:òò9ór   r  FÚtextr    rh   r.   Údefault_rdclassrv   r5   r©   r	  rC   r|   c
                 óÜ  — t        |t        «      r9t        j                  j	                  |t        j                  j
                  |«      }t        |t        «      r!t        j                  j	                  |||«      }t        |t        «      rt        j                  j	                  |«      }t        |t        «      rt        j                  j	                  |«      }|�*t        j                  j                  j                  |«      }nd}t        j                  j                  j                  |«      }|�*t        j                  j                  j                  |«      }nd}t        ||	|«      }
|
j                  d«      5 }t        j                  j                  | d|¬«      }t!        |||d|||||¬«	      }|j#                  «        ddd«       |
j$                  S # 1 sw Y   |
j$                  S xY w)a‘	  Read one or more rrsets from the specified text, possibly subject
    to restrictions.

    *text*, a file object or a string, is the input to process.

    *name*, a string, ``dns.name.Name``, or ``None``, is the owner name of
    the rrset.  If not ``None``, then the owner name is "forced", and the
    input must not specify an owner name.  If ``None``, then any owner names
    are allowed and must be present in the input.

    *ttl*, an ``int``, string, or None.  If not ``None``, the the TTL is
    forced to be the specified value and the input must not specify a TTL.
    If ``None``, then a TTL may be specified in the input.  If it is not
    specified, then the *default_ttl* will be used.

    *rdclass*, a ``dns.rdataclass.RdataClass``, string, or ``None``.  If
    not ``None``, then the class is forced to the specified value, and the
    input must not specify a class.  If ``None``, then the input may specify
    a class that matches *default_rdclass*.  Note that it is not possible to
    return rrsets with differing classes; specifying ``None`` for the class
    simply allows the user to optionally type a class as that may be convenient
    when cutting and pasting.

    *default_rdclass*, a ``dns.rdataclass.RdataClass`` or string.  The class
    of the returned rrsets.

    *rdtype*, a ``dns.rdatatype.RdataType``, string, or ``None``.  If not
    ``None``, then the type is forced to the specified value, and the
    input must not specify a type.  If ``None``, then a type must be present
    for each RR.

    *default_ttl*, an ``int``, string, or ``None``.  If not ``None``, then if
    the TTL is not forced and is not specified, then this value will be used.
    if ``None``, then if the TTL is not forced an error will occur if the TTL
    is not specified.

    *idna_codec*, a ``dns.name.IDNACodec``, specifies the IDNA
    encoder/decoder.  If ``None``, the default IDNA 2003 encoder/decoder
    is used.  Note that codecs only apply to the owner name; dnspython does
    not do IDNA for names in rdata, as there is no IDNA zonefile format.

    *origin*, a string, ``dns.name.Name``, or ``None``, is the origin for any
    relative names in the input, and also the origin to relativize to if
    *relativize* is ``True``.

    *relativize*, a bool.  If ``True``, names are relativized to the *origin*;
    if ``False`` then any relative names in the input are made absolute by
    appending the *origin*.
    NTz<input>)r©   F)r0   r1   r2   r3   r4   r5   )Ú
isinstancers   r   r    ri   r  rh   rl   rÙ   Úmakern   rÞ   r  r  rÍ   rÎ   r,   rØ   r  )r!  r    rh   r.   r"  rv   r5   r©   r	  rC   r@   r   r-   r  s                 r   Úread_rrsetsr&  �  s€  € ôz �&œ#ÔÜ—‘×#Ñ# F¬C¯H©H¯M©M¸:ÓFˆÜ�$œÔÜ�x‰x×!Ñ! $¨°
Ó;ˆÜ�#”sÔÜ�g‰g×Ñ Ó$ˆÜ�+œsÔ#Ü—g‘g×'Ñ'¨Ó4ˆØÐÜ—.‘.×+Ñ+×0Ñ0°Ó9‰àˆÜ—n‘n×/Ñ/×4Ñ4°_ÓE€OØÐÜ—‘×(Ñ(×-Ñ-¨fÓ5‰àˆÜ! &¨*°oÓF€GØ	�‰˜Ó	ð  Ü�m‰m×%Ñ% d¨IÀ*Ð%ÓMˆÜØØØØ"ØØØ!ØØ#ô

ˆð 	�‰Œ÷ð �>‰>Ð÷ð �>‰>Ðús   Å<AGÇG+)6r   r†   rp   Útypingr   r   r   r   r   r   r	   Údns.exceptionr   Ú
dns.grangeÚdns.nameÚdns.nodeÚ	dns.rdataÚdns.rdataclassÚdns.rdatatypeÚdns.rdtypes.ANY.SOAÚ	dns.rrsetÚdns.tokenizerÚdns.transactionÚdns.ttlr[   ÚDNSExceptionr   r   r$   rÍ   rÎ   r    rÝ   rŠ   rÜ   ÚSavedStateTyper*   r,   rÚ   rÛ   rà   ÚTransactionManagerr  rl   r   r  rs   rÙ   rn   rÞ   Ú	IDNACodecr  r  r&  r   r   r   ú<module>r8     sV  ðñ$ ã 	Û 
ß C× CÑ Cã Û Û Û Û Û Û Û Û Û Û Û ô�C—M‘M×.Ñ.ô ô,˜Ÿ™×2Ñ2ô ,ò
ð. Ø‡M�M×ÑØˆS�X‰X�]‰]ÑØˆS�X‰X�]‰]ÑØˆS�MØØØØð
ñ	€ò÷O2ñ O2ôdB"˜cŸo™o×9Ñ9ô B"ôJ˜#Ÿ/™/×<Ñ<ô ð@ 15ØØ?B¿~¹~×?PÑ?PØ=@¿^¹^×=NÑ=NØ<@Ø-1Ø/3Ø25·(±(·-±-Øñ]Ø
ð]à
�5˜Ÿ™Ÿ™¨Ð+Ñ,Ñ
-ð]ð 
�#‰ð]ð �e˜CŸN™N×5Ñ5°sÐ:Ñ;Ñ<ð	]ð
 ˜3Ÿ>™>×4Ñ4°cÐ9Ñ:ð]ð �U˜3Ÿ=™=×2Ñ2°CÐ7Ñ8Ñ9ð]ð ˜%  S ™/Ñ*ð]ð ˜Ÿ™×+Ñ+Ñ,ð]ð �U˜3Ÿ8™8Ÿ=™=¨#Ð-Ñ.Ñ/ð]ð ð]ð 
ˆ#�)‰)�/‰/Ñô]r   