ó
    ÌÅLgÁB  ã            
       ó–  • % S r SSKrSSKrSSKrSSKrSSKJrJrJrJ	r	  SSK
rSSKrSSKrSSKr " S S\R                  R                   5      r " S S5      r " S S	\5      r " S
 S\5      r " S S\R                  R                   5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\R4                  \\R6                  \\R8                  \\R:                  \\R<                  \0r\\\4   \ S'   S\S\4S jr!S\	\\"4   SSS\4S jr#S\	\\"4   S\$S\%S\%S\4
S  jr&S!\S\SS4S" jr'\R8                  r\RP                  r(\RR                  r)\RT                  r*\R4                  r\RV                  r+\R:                  r\RX                  r,\RZ                  r-\R\                  r.\R6                  r\R<                  rg)#zEDNS Optionsé    N)ÚAnyÚDictÚOptionalÚUnionc                   óT   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSr\S 5       rSrg)Ú
OptionTypeé    é   é   é   é   é   é	   é
   é   é   é   é   é   c                 ó   • g©Niÿÿ  © ©Úclss    Ú*/usr/lib/python3/dist-packages/dns/edns.pyÚ_maximumÚOptionType._maximum:   ó   € àó    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚNSIDÚDAUÚDHUÚN3UÚECSÚEXPIREÚCOOKIEÚ	KEEPALIVEÚPADDINGÚCHAINÚEDEÚREPORTCHANNELÚclassmethodr   Ú__static_attributes__r   r   r   r   r       sP   † à€Dà
€Cà
€Cà
€Cà
€Cà€Fà€Fà€Ià€Gà€Eà
€Cà€Màñó ór   r   c                   ó°   • \ rS rSrSrS\\\4   4S jrSS\	\
   S\	\   4S jjrS\4S	 jr\S\S
SSS 4S j5       rS rS rS rS rS rS rS rS rSrg)ÚOptioné?   z%Base class for all EDNS option types.Úotypec                 ó8   • [         R                  U5      U l        g)zOInitialize an option.

*otype*, a ``dns.edns.OptionType``, is the option type.
N)r   Úmaker5   )Úselfr5   s     r   Ú__init__ÚOption.__init__B   s   € ô
  —_‘_ UÓ+ˆ�
r   NÚfileÚreturnc                 ó   • [         e)zEConvert an option to wire format.

Returns a ``bytes`` or ``None``.

©ÚNotImplementedError©r8   r;   s     r   Úto_wireÚOption.to_wireI   s
   € ô "Ð!r   c                 ó   • [         e©Nr>   ©r8   s    r   Úto_textÚOption.to_textQ   s   € Ü!Ð!r   Úparserúdns.wire.Parserc                 ó   • [         e)zæBuild an EDNS option object from wire format.

*otype*, a ``dns.edns.OptionType``, is the option type.

*parser*, a ``dns.wire.Parser``, the parser, which should be
restructed to the option length.

Returns a ``dns.edns.Option``.
r>   ©r   r5   rH   s      r   Úfrom_wire_parserÚOption.from_wire_parserT   s
   € ô "Ð!r   c                 ó\   • U R                  5       nUR                  5       nX#:X  a  gX#:”  a  gg)zCompare an EDNS option with another option of the same type.

Returns < 0 if < *other*, 0 if == *other*, and > 0 if > *other*.
r   é   éÿÿÿÿ)rA   )r8   ÚotherÚwireÚowires       r   Ú_cmpÚOption._cmpa   s-   € ð
 �|‰|‹~ˆØ—‘“ˆØ‹=ØØ‹<ØØr   c                 óŒ   • [        U[        5      (       d  gU R                  UR                  :w  a  gU R                  U5      S:H  $ )NFr   ©Ú
isinstancer3   r5   rT   ©r8   rQ   s     r   Ú__eq__ÚOption.__eq__n   s9   € Ü˜%¤×(Ñ(ØØ�:‰:˜Ÿ™Ó$ØØ�y‰y˜Ó 1Ñ$Ð$r   c                 óŒ   • [        U[        5      (       d  gU R                  UR                  :w  a  gU R                  U5      S:g  $ )NTr   rW   rY   s     r   Ú__ne__ÚOption.__ne__u   s9   € Ü˜%¤×(Ñ(ØØ�:‰:˜Ÿ™Ó$ØØ�y‰y˜Ó 1Ñ$Ð$r   c                 ó”   • [        U[        5      (       a  U R                  UR                  :w  a  [        $ U R	                  U5      S:  $ ©Nr   ©rX   r3   r5   ÚNotImplementedrT   rY   s     r   Ú__lt__ÚOption.__lt__|   ó8   € Ü˜%¤×(Ñ(¨D¯J©J¸%¿+¹+Ó,EÜ!Ð!Ø�y‰y˜Ó !Ñ#Ð#r   c                 ó”   • [        U[        5      (       a  U R                  UR                  :w  a  [        $ U R	                  U5      S:*  $ r`   ra   rY   s     r   Ú__le__ÚOption.__le__�   ó8   € Ü˜%¤×(Ñ(¨D¯J©J¸%¿+¹+Ó,EÜ!Ð!Ø�y‰y˜Ó 1Ñ$Ð$r   c                 ó”   • [        U[        5      (       a  U R                  UR                  :w  a  [        $ U R	                  U5      S:¬  $ r`   ra   rY   s     r   Ú__ge__ÚOption.__ge__†   ri   r   c                 ó”   • [        U[        5      (       a  U R                  UR                  :w  a  [        $ U R	                  U5      S:„  $ r`   ra   rY   s     r   Ú__gt__ÚOption.__gt__‹   re   r   c                 ó"   • U R                  5       $ rD   )rF   rE   s    r   Ú__str__ÚOption.__str__�   s   € Ø�|‰|‹~Ðr   ©r5   rD   )r    r!   r"   r#   Ú__doc__r   r   Ústrr9   r   r   ÚbytesrA   rF   r0   rL   rT   rZ   r]   rc   rg   rk   rn   rq   r1   r   r   r   r3   r3   ?   s“   † Ù/ð,˜e J° OÑ4ô ,ñ"˜H S™Mð "°X¸e±_õ "ð"˜ô "ð ð
" Zð 
"Ð9Jð 
"Èxó 
"ó ð
"òò%ò%ò$ò
%ò
%ò
$õ
r   r3   c                   ó¦   ^ • \ rS rSrSrS\\\4   S\\\4   4U 4S jjr	SS\
\   S\
\   4S jjrS\4S	 jr\S\\\4   S
SS\4S j5       rSrU =r$ )ÚGenericOptioné”   zkGeneric Option Class

This class is used for EDNS option types for which we have no better
implementation.
r5   Údatac                 ó‚   >• [         TU ]  U5        [        R                  R                  R                  US5      U l        g )NT)Úsuperr9   ÚdnsÚrdataÚRdataÚ	_as_bytesrz   )r8   r5   rz   Ú	__class__s      €r   r9   ÚGenericOption.__init__›   s,   ø€ Ü‰Ñ˜ÔÜ—I‘I—O‘O×-Ñ-¨d°DÓ9ˆ�	r   r;   r<   c                 ó`   • U(       a  UR                  U R                  5        g U R                  $ rD   )Úwriterz   r@   s     r   rA   ÚGenericOption.to_wireŸ   ó"   € ÞØ�J‰J�t—y‘yÔ!Øà—9‘9Ðr   c                 ó    • SU R                   -  $ )Nz
Generic %drs   rE   s    r   rF   ÚGenericOption.to_text¦   s   € Ø˜dŸj™jÑ(Ð(r   rH   rI   c                 ó.   • U " XR                  5       5      $ rD   ©Úget_remainingrK   s      r   rL   ÚGenericOption.from_wire_parser©   s   € ñ �5×.Ñ.Ó0Ó1Ð1r   )rz   rD   )r    r!   r"   r#   rt   r   r   ru   rv   r9   r   r   rA   rF   r0   r3   rL   r1   Ú__classcell__©r�   s   @r   rx   rx   ”   s‰   ø† ñð:˜e J° OÑ4ð :¸EÀ%ÈÀ*Ñ<M÷ :ñ˜H S™Mð °X¸e±_õ ð)˜ô )ð ð2Ø˜* c˜/Ñ*ð2Ø4Eð2à	ó2ó ö2r   rx   c                   ó¼   ^ • \ rS rSrSrSS\S\\   S\4U 4S jjjrS\4S jr	\
S	\S\4S
 j5       rSS\\   S\\   4S jjr\S\\\4   SSS\4S j5       rSrU =r$ )Ú	ECSOptioné°   z!EDNS Client Subnet (ECS, RFC7871)ÚaddressÚsrclenÚscopelenc                 óŠ  >• [         T	U ]  [        R                  5        [        R
                  R                  U5      nU[        R                  :X  aŒ  SU l	        Uc  Sn[        R                  R                  R                  U5      n[        R                  R                  R                  USS5      n[        R                  R                  R                  USS5      nO«U[        R                  :X  aŒ  SU l	        Uc  Sn[        R                  R                  R                  U5      n[        R                  R                  R                  USS5      n[        R                  R                  R                  USS5      nO[!        S	5      eUc   eXl        X l        X0l        [        R
                  R)                  XA5      n[+        [,        R.                  " US
-  5      5      nUSU U l        US-  nUS:w  aN  [2        R4                  " S[7        U R0                  SS 5      SSU-
  -  -  5      nU R0                  SS U-   U l        gg)aZ  *address*, a ``str``, is the client address information.

*srclen*, an ``int``, the source prefix length, which is the
leftmost number of bits of the address to be used for the
lookup.  The default is 24 for IPv4 and 56 for IPv6.

*scopelen*, an ``int``, the scope prefix length.  This value
must be 0 in queries, and should be set in responses.
é   Né8   r   é€   rO   é   r	   zBad address familyç       @r   ÚBrP   éÿ   )r|   r9   r   r(   r}   ÚinetÚaf_for_addressÚsocketÚAF_INET6Úfamilyr~   r   Ú_as_ipv6_addressÚ_as_intÚAF_INETÚ_as_ipv4_addressÚ
ValueErrorr’   r“   r”   Ú	inet_ptonÚintÚmathÚceilÚaddrdataÚstructÚpackÚord)
r8   r’   r“   r”   Úafr«   ÚnbytesÚnbitsÚlastr�   s
            €r   r9   ÚECSOption.__init__³   sÀ  ø€ ô 	‰ÑœŸ™Ô(Ü�X‰X×$Ñ$ WÓ-ˆà”—‘Ó ØˆDŒKØ‰~Ø�Ü—i‘i—o‘o×6Ñ6°wÓ?ˆGÜ—Y‘Y—_‘_×,Ñ,¨V°Q¸Ó<ˆFÜ—y‘y—‘×.Ñ.¨x¸¸CÓ@‰HØ”6—>‘>Ó!ØˆDŒKØ‰~Ø�Ü—i‘i—o‘o×6Ñ6°wÓ?ˆGÜ—Y‘Y—_‘_×,Ñ,¨V°Q¸Ó;ˆFÜ—y‘y—‘×.Ñ.¨x¸¸BÓ?‰HäÐ1Ó2Ð2àÑ!Ð!Ð!ØŒØŒØ Œä—8‘8×%Ñ% bÓ2ˆÜ”T—Y’Y˜v¨™|Ó,Ó-ˆð !  &Ð)ˆŒØ˜‘
ˆØ�A‹:Ü—;’;˜s¤C¨¯©°b°cÐ(:Ó$;¸tÈÈEÉ	Ñ?RÑ$SÓTˆDØ ŸM™M¨#¨2Ð.°Ñ5ˆD�Mð r   r<   c                 óT   • SU R                    SU R                   SU R                   3$ )NzECS Ú/z scope/)r’   r“   r”   rE   s    r   rF   ÚECSOption.to_textâ   s'   € Ø�d—l‘l�^ 1 T§[¡[ M°¸¿¹¸ÐHÐHr   Útextc                 óB  • SnU R                  5       nSn[        U5      S:X  a  US   nO<[        U5      S:X  a  US   U:w  a  [        SU  S35      eUS   nO[        SU  S35      eUR                  S5      nUS:X  a  UR                  S5      u  pVS	nO*US:X  a  UR                  S5      u  pVnO[        SU  S35      e [	        U5      n [	        U5      n	[        XYU5      $ ! [         a    [        S
SU S3-   5      ef = f! [         a    [        SSU S3-   5      ef = f)aø  Convert a string into a `dns.edns.ECSOption`

*text*, a `str`, the text form of the option.

Returns a `dns.edns.ECSOption`.

Examples:

>>> import dns.edns
>>>
>>> # basic example
>>> dns.edns.ECSOption.from_text('1.2.3.4/24')
>>>
>>> # also understands scope
>>> dns.edns.ECSOption.from_text('1.2.3.4/24/32')
>>>
>>> # IPv6
>>> dns.edns.ECSOption.from_text('2001:4b98::1/64/64')
>>>
>>> # it understands results from `dns.edns.ECSOption.to_text()`
>>> dns.edns.ECSOption.from_text('ECS 1.2.3.4/24/32')
r(   NrO   r   r–   zcould not parse ECS from "Ú"rµ   Ú0zinvalid scope z": scope must be an integerzinvalid srclen z": srclen must be an integer)ÚsplitÚlenr¦   Úcountr¨   r�   )
r·   Úoptional_prefixÚtokensÚecs_textÚ	n_slashesr’   ÚtsrclenÚtscopeÚscoper“   s
             r   Ú	from_textÚECSOption.from_textå   s\  € ð0  ˆØ—‘“ˆØˆÜˆv‹;˜!ÓØ˜a‘y‰HÜ�‹[˜AÓØ�a‰y˜OÓ+Ü Ð#=¸d¸VÀ1Ð!EÓFÐFØ˜a‘y‰HäÐ9¸$¸¸qÐAÓBÐBØ—N‘N 3Ó'ˆ	Ø˜‹>Ø'Ÿ~™~¨cÓ2ÑˆGØ‰FØ˜!‹^Ø'/§~¡~°cÓ':Ñ$ˆG™fäÐ9¸$¸¸qÐAÓBÐBð	YÜ˜“KˆEð	Ü˜“\ˆFô
 ˜¨%Ó0Ð0øô ó 	YÜÐ-°!°F°8Ð;VÐ0WÑWÓXÐXð	Yûô ó 	ÜØ! a¨ yÐ0LÐ$MÑMóð ð	ús   Â>C! Ã
D Ã!C>ÄDr;   c                 óÀ   • [         R                  " SU R                  U R                  U R                  5      U R
                  -   nU(       a  UR                  U5        g U$ )Nú!HBB)r¬   r­   r¡   r“   r”   r«   r„   ©r8   r;   Úvalues      r   rA   ÚECSOption.to_wire  sG   € ä�KŠK˜ §¡¨T¯[©[¸$¿-¹-ÓHÈ4Ï=É=ÑXð 	ö Ø�J‰J�uÔØàˆLr   r5   rH   rI   c                 ó|  • UR                  S5      u  p4n[        [        R                  " US-  5      5      nUR	                  U5      nUS:X  a+  SU-
  n[
        R                  R                  USU-  -   5      n	O<US:X  a+  SU-
  n[
        R                  R                  USU-  -   5      n	O[        S5      eU " X”U5      $ )	NrÈ   rš   rO   é   ó    r–   é   zunsupported family)
Ú
get_structr¨   r©   rª   Ú	get_bytesr}   Úipv4Ú	inet_ntoaÚipv6r¦   )
r   r5   rH   r¡   ÚsrcrÄ   ÚaddrlenÚprefixÚpadÚaddrs
             r   rL   ÚECSOption.from_wire_parser&  s³   € ð $×.Ñ.¨vÓ6Ñˆ�UÜ”d—i’i  c¡	Ó*Ó+ˆØ×!Ñ! 'Ó*ˆØ�Q‹;Ø�g‘+ˆCÜ—8‘8×%Ñ% f¨w¸©}Ñ&<Ó=‰DØ�q‹[Ø�w‘,ˆCÜ—8‘8×%Ñ% f¨w¸©}Ñ&<Ó=‰DäÐ1Ó2Ð2á�4˜eÓ$Ð$r   )r«   r’   r¡   r”   r“   r`   rD   )r    r!   r"   r#   rt   ru   r   r¨   r9   rF   Ústaticmethodr3   rÅ   r   rv   rA   r0   r   r   rL   r1   r�   rŽ   s   @r   r�   r�   °   s«   ø† Ù+ñ-6 ð -6¨X°c©]ð -6ÈS÷ -6ð -6ð^I˜ô Ið ð41˜ð 41 ó 41ó ð41ñl˜H S™Mð °X¸e±_õ ð ð%Ø˜* c˜/Ñ*ð%Ø4Eð%à	ó%ó ö%r   r�   c                   óˆ   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr\S 5       rSrg)ÚEDECodei9  r   rO   r–   r
   rÍ   r   r   r   r   r   r   r   r   r   é   r   rÏ   é   r   é   é   é   é   é   r™   c                 ó   • gr   r   r   s    r   r   ÚEDECode._maximumT  r   r   r   N) r    r!   r"   r#   ÚOTHERÚUNSUPPORTED_DNSKEY_ALGORITHMÚUNSUPPORTED_DS_DIGEST_TYPEÚSTALE_ANSWERÚFORGED_ANSWERÚDNSSEC_INDETERMINATEÚDNSSEC_BOGUSÚSIGNATURE_EXPIREDÚSIGNATURE_NOT_YET_VALIDÚDNSKEY_MISSINGÚRRSIGS_MISSINGÚNO_ZONE_KEY_BIT_SETÚNSEC_MISSINGÚCACHED_ERRORÚ	NOT_READYÚBLOCKEDÚCENSOREDÚFILTEREDÚ
PROHIBITEDÚSTALE_NXDOMAIN_ANSWERÚNOT_AUTHORITATIVEÚNOT_SUPPORTEDÚNO_REACHABLE_AUTHORITYÚNETWORK_ERRORÚINVALID_DATAr0   r   r1   r   r   r   rÝ   rÝ   9  sš   † Ø€EØ#$Ð Ø!"ÐØ€LØ€MØÐØ€LØÐØÐØ€NØ€NØÐØ€LØ€LØ€IØ€GØ€HØ€HØ€JØÐØÐØ€MØÐØ€MØ€Làñó ór   rÝ   c                   ó®   ^ • \ rS rSrSr1 SkrSS\\\4   S\	\   4U 4S jjjr
S\4S jrSS	\	\   S\	\   4S
 jjr\S\\\4   SSS\4S j5       rSrU =r$ )Ú	EDEOptioniY  z!Extended DNS Error (EDE, RFC8914)>   ÚDSÚNSECÚDNSKEYÚDNSSECÚRRSIGsÚNXDOMAINÚcoder·   c                 óÆ   >• [         TU ]  [        R                  5        [        R                  U5      U l        Ub   [        U[        5      (       d  [        S5      eX l
        g)z£*code*, a ``dns.edns.EDECode`` or ``str``, the info code of the
extended error.

*text*, a ``str`` or ``None``, specifying additional information about
the error.
Nztext must be string or None)r|   r9   r   r.   rÝ   r7   r  rX   ru   r¦   r·   )r8   r  r·   r�   s      €r   r9   ÚEDEOption.__init__^  sI   ø€ ô 	‰ÑœŸ™Ô(ä—L‘L Ó&ˆŒ	ØÑ¤J¨t´S×$9Ñ$9ÜÐ:Ó;Ð;Ø�	r   r<   c                 ó0  ^ • ST R                    3nT R                   [        ;   aR  [        R                  T R                   5      nSR                  U 4S jUR	                  S5       5       5      nUSU S3-  nT R
                  b  UST R
                   3-  nU$ )NzEDE Ú c              3   óh   >#   • U  H'  nUTR                   ;   a  UOUR                  5       v •  M)     g 7frD   )Ú_preserve_caseÚtitle)Ú.0Úwordr8   s     €r   Ú	<genexpr>Ú$EDEOption.to_text.<locals>.<genexpr>q  s0   øé € ð â+�Dð  × 3Ñ 3Ó3‘¸¿¹»ÔEÚ+ùs   ƒ/2Ú_z (Ú)z: )r  rÝ   rF   Újoinr»   r·   )r8   ÚoutputÚdescs   `  r   rF   ÚEDEOption.to_textm  sŒ   ø€ Ø˜Ÿ	™	�{Ð#ˆØ�9‰9œÓÜ—?‘? 4§9¡9Ó-ˆDØ—8‘8ô à ŸJ™J sœOóó ˆDð ˜˜4˜& �lÑ"ˆFØ�9‰9Ñ Ø˜˜4Ÿ9™9˜+Ð&Ñ&ˆFØˆr   r;   c                 óÎ   • [         R                  " SU R                  5      nU R                  b  X R                  R	                  S5      -  nU(       a  UR                  U5        g U$ )Nz!HÚutf8)r¬   r­   r  r·   Úencoder„   rÉ   s      r   rA   ÚEDEOption.to_wirez  sN   € Ü—’˜D $§)¡)Ó,ˆØ�9‰9Ñ Ø—Y‘Y×%Ñ% fÓ-Ñ-ˆEæØ�J‰J�uÔØàˆLr   r5   rH   rI   c                 óÊ   • [         R                  UR                  5       5      nUR                  5       nU(       a   US   S:X  a  US S nUR	                  S5      nOS nU " X55      $ )NrP   r   r  )rÝ   r7   Ú
get_uint16r‹   Údecode)r   r5   rH   r  r·   Úbtexts         r   rL   ÚEDEOption.from_wire_parser…  s`   € ô �|‰|˜F×-Ñ-Ó/Ó0ˆØ×#Ñ#Ó%ˆæØ�B‰x˜1‹}Ø˜C˜R�y�Ø—K‘K Ó'‰EàˆEá�4ÓÐr   )r  r·   rD   )r    r!   r"   r#   rt   r  r   rÝ   ru   r   r9   rF   r   rv   rA   r0   r   r3   rL   r1   r�   rŽ   s   @r   r  r  Y  sŒ   ø† Ù+âM€Nñ˜U 7¨C <Ñ0ð ¸À¹÷ ð ð˜ô ñ	˜H S™Mð 	°X¸e±_õ 	ð ð Ø˜* c˜/Ñ*ð Ø4Eð à	ó ó ö r   r  c                   ó¬   ^ • \ rS rSrS\4U 4S jjrSS\S\\   4S jjrS\	4S jr
\S\\\	4   S	\R                  R                   S\4S
 j5       rSrU =r$ )Ú
NSIDOptioni–  Únsidc                 óL   >• [         TU ]  [        R                  5        Xl        g rD   )r|   r9   r   r$   r%  )r8   r%  r�   s     €r   r9   ÚNSIDOption.__init__—  s   ø€ Ü‰ÑœŸ™Ô)Ø�	r   r;   r<   c                 ó`   • U(       a  UR                  U R                  5        g U R                  $ rD   )r„   r%  r@   s     r   rA   ÚNSIDOption.to_wire›  r†   r   c                 óà   • [        S U R                   5       5      (       a  U R                  R                  5       nO.[        R                  " U R                  5      R                  5       nSU 3$ )Nc              3   óB   #   • U  H  oS :¬  =(       a    US:*  v •  M     g7f)r	   é~   Nr   )r  Úcs     r   r  Ú%NSIDOption.to_text.<locals>.<genexpr>£  s   é € Ð:²	¨1�D‰y×&˜Q $™YÔ&²	ùs   ‚zNSID )Úallr%  r   ÚbinasciiÚhexlify)r8   rÊ   s     r   rF   ÚNSIDOption.to_text¢  sR   € ÜÑ:°·	²	Ó:×:Ñ:à—I‘I×$Ñ$Ó&‰Eä×$Ò$ T§Y¡YÓ/×6Ñ6Ó8ˆEØ�u�gˆÐr   r5   rH   c                 ó.   • U " UR                  5       5      $ rD   rŠ   rK   s      r   rL   ÚNSIDOption.from_wire_parserª  s   € ñ �6×'Ñ'Ó)Ó*Ð*r   )r%  rD   ©r    r!   r"   r#   rv   r9   r   r   rA   ru   rF   r0   r   r   r}   rR   ÚParserr3   rL   r1   r�   rŽ   s   @r   r$  r$  –  so   ø† ð˜U÷ ñ˜Cð ¨8°E©?õ ð˜ô ð ð+Ø˜* c˜/Ñ*ð+Ø47·H±H·O±Oð+à	ó+ó ö+r   r$  c                   ó°   ^ • \ rS rSrS\S\4U 4S jjrSS\S\\   4S jjrS\	4S jr
\S	\\\	4   S
\R                  R                   S\4S j5       rSrU =r$ )ÚCookieOptioni±  ÚclientÚserverc                 ó&  >• [         TU ]  [        R                  R                  R
                  5        Xl        X l        [        U5      S:w  a  [        S5      e[        U5      S:w  a*  [        U5      S:  d  [        U5      S:”  a  [        S5      eg g )Nr   zclient cookie must be 8 bytesr   r	   z5server cookie must be empty or between 8 and 32 bytes)
r|   r9   r}   Úednsr   r*   r9  r:  r¼   r¦   )r8   r9  r:  r�   s      €r   r9   ÚCookieOption.__init__²  sx   ø€ Ü‰ÑœŸ™×,Ñ,×3Ñ3Ô4ØŒØŒÜˆv‹;˜!ÓÜÐ<Ó=Ð=Üˆv‹;˜!Ó¤ V£¨q£´C¸³KÀ"Ó4DÜÐTÓUÐUð 5EÐr   r;   r<   c                 óâ   • U(       aP  UR                  U R                  5        [        U R                  5      S:”  a  UR                  U R                  5        g U R                  U R                  -   $ r`   )r„   r9  r¼   r:  r@   s     r   rA   ÚCookieOption.to_wire»  sL   € ÞØ�J‰J�t—{‘{Ô#Ü�4—;‘;Ó !Ó#Ø—
‘
˜4Ÿ;™;Ô'Øà—;‘; §¡Ñ,Ð,r   c                 ó   • [         R                  " U R                  5      R                  5       n[	        U R
                  5      S:”  a/  [         R                  " U R
                  5      R                  5       nOSnSU U 3$ )Nr   Ú zCOOKIE )r0  r1  r9  r   r¼   r:  )r8   r9  r:  s      r   rF   ÚCookieOption.to_textÄ  sc   € Ü×!Ò! $§+¡+Ó.×5Ñ5Ó7ˆÜˆt�{‰{Ó˜aÓÜ×%Ò% d§k¡kÓ2×9Ñ9Ó;‰FàˆFØ˜˜  Ð)Ð)r   r5   rH   c                 óN   • U " UR                  S5      UR                  5       5      $ )Nr   )rÑ   r‹   rK   s      r   rL   ÚCookieOption.from_wire_parserÌ  s%   € ñ �6×#Ñ# AÓ&¨×(<Ñ(<Ó(>Ó?Ð?r   )r9  r:  rD   r5  rŽ   s   @r   r8  r8  ±  s~   ø† ðV˜uð V¨e÷ Vñ-˜Cð -¨8°E©?õ -ð*˜ô *ð ð@Ø˜* c˜/Ñ*ð@Ø47·H±H·O±Oð@à	ó@ó ö@r   r8  c                   óÔ   ^ • \ rS rSrS\R
                  R                  4U 4S jjrSS\S\	\
   4S jjrS\4S jr\S\\\4   S	\R"                  R$                  S\4S
 j5       rSrU =r$ )ÚReportChannelOptioniÓ  Úagent_domainc                 óL   >• [         TU ]  [        R                  5        Xl        g rD   )r|   r9   r   r/   rG  )r8   rG  r�   s     €r   r9   ÚReportChannelOption.__init__Õ  s   ø€ Ü‰Ñœ×1Ñ1Ô2Ø(Õr   r;   r<   c                 ó8   • U R                   R                  U5      $ rD   )rG  rA   r@   s     r   rA   ÚReportChannelOption.to_wireÙ  s   € Ø× Ñ ×(Ñ(¨Ó.Ð.r   c                 ó<   • SU R                   R                  5       -   $ )NzREPORTCHANNEL )rG  rF   rE   s    r   rF   ÚReportChannelOption.to_textÜ  s   € Ø $×"3Ñ"3×";Ñ";Ó"=Ñ=Ð=r   r5   rH   c                 ó.   • U " UR                  5       5      $ rD   )Úget_namerK   s      r   rL   Ú$ReportChannelOption.from_wire_parserß  s   € ñ �6—?‘?Ó$Ó%Ð%r   )rG  rD   )r    r!   r"   r#   r}   ÚnameÚNamer9   r   r   rv   rA   ru   rF   r0   r   r   rR   r6  r3   rL   r1   r�   rŽ   s   @r   rF  rF  Ó  sw   ø† ð) S§X¡X§]¡]÷ )ñ/˜Cð /¨8°E©?õ /ð>˜ô >ð ð&Ø˜* c˜/Ñ*ð&Ø47·H±H·O±Oð&à	ó&ó ö&r   rF  Ú_type_to_classr5   r<   c                 óB   • [         R                  U 5      nUc  [        nU$ )zxReturn the class for the specified option type.

The GenericOption class is used if a more specific class is not
known.
)rS  Úgetrx   )r5   r   s     r   Úget_option_classrV  ï  s#   € ô ×
Ñ
˜UÓ
#€CØ
�{ÜˆØ€Jr   rH   rI   c                 ód   • [         R                  U 5      n [        U 5      nUR                  X5      $ )zòBuild an EDNS option object from wire format.

*otype*, an ``int``, is the option type.

*parser*, a ``dns.wire.Parser``, the parser, which should be
restricted to the option length.

Returns an instance of a subclass of ``dns.edns.Option``.
)r   r7   rV  rL   )r5   rH   r   s      r   Úoption_from_wire_parserrX  ü  s-   € ô �O‰O˜EÓ"€EÜ
˜5Ó
!€CØ×Ñ Ó.Ð.r   rR   ÚcurrentÚolenc                 ó®   • [         R                  R                  X5      nUR                  U5         [	        X5      sSSS5        $ ! , (       d  f       g= f)aV  Build an EDNS option object from wire format.

*otype*, an ``int``, is the option type.

*wire*, a ``bytes``, is the wire-format message.

*current*, an ``int``, is the offset in *wire* of the beginning
of the rdata.

*olen*, an ``int``, is the length of the wire-format option data

Returns an instance of a subclass of ``dns.edns.Option``.
N)r}   rR   r6  Úrestrict_torX  )r5   rR   rY  rZ  rH   s        r   Úoption_from_wirer]    s8   € ô  �X‰X�_‰_˜TÓ+€FØ	×	Ñ	˜DÕ	!Ü& uÓ5÷ 
"×	!×	!ús   ±AÁ
AÚimplementationc                 ó   • U [         U'   g)zŸRegister the implementation of an option type.

*implementation*, a ``class``, is a subclass of ``dns.edns.Option``.

*otype*, an ``int``, is the option type.
N)rS  )r^  r5   s     r   Úregister_typer`  "  s   € ð +„N�5Òr   )/rt   r0  r©   rŸ   r¬   Útypingr   r   r   r   Údns.enumr}   Údns.inetÚ	dns.rdataÚdns.wireÚenumÚIntEnumr   r3   rx   r�   rÝ   r  r$  r8  rF  r(   r.   r$   r*   r/   rS  Ú__annotations__rV  ru   rX  rv   r¨   r]  r`  r%   r&   r'   r)   r+   r,   r-   r   r   r   Ú<module>ri     sÿ  ðò$ ã Û Û Û ß -Ó -ã Û Û Û ô�—‘×!Ñ!ô ÷>Rñ Rôj2�Fô 2ô8F%�ô F%ôRˆc�h‰h×Ñô ô@: �ô : ôz+�ô +ô6@�6ô @ôD&˜&ô &ð( ‡N�N�IØ‡N�N�IØ‡O�O�ZØ×Ñ�|Ø×ÑÐ1ð)€��Z �_Ñ%ó ð
˜Jð 
¨3ô 
ð/Ø�˜S�Ñ!ð/Ø+<ð/àô/ð"6Ø�˜S�Ñ!ð6Ø).ð6Ø9<ð6ØDGð6àô6ð*+ #ð +¨jð +¸Tô +ð ‡�€Ø‡n�n€Ø‡n�n€Ø‡n�n€Ø‡n�n€Ø	×	Ñ	€Ø	×	Ñ	€Ø× Ñ €	Ø
×
Ñ
€Ø×Ñ€Ø‡n�n€Ø×(Ñ(�r   