
                             S r SSKrSSKrSSKrSSKrSSKJr  \R                  R                  S5      r
\R                  R                  S5      rS rS rg)zDNS Reverse Map Names.    N)PY3zin-addr.arpa.z	ip6.arpa.c                     [         R                  R                  U 5      n[         R                  R                  U5      (       aL  [        (       a  USS  Vs/ s H  nSU-  PM
     nnO!USS  Vs/ s H  nS[        U5      -  PM     nn[        nOC[        [        R                  " U5      R                  5       5       Vs/ s H  oUPM     nn[        n UR                  5         [         R                   R#                  SR%                  U5      US9$ s  snf s  snf s  snf ! [         aJ    [        [         R                  R                  U 5      5       Vs/ s H  nSU-  PM
     Os  snf nn[        n Nf = f)a<  Convert an IPv4 or IPv6 address in textual form into a Name object whose
value is the reverse-map domain name of the address.

*text*, a ``text``, is an IPv4 or IPv6 address in textual form
(e.g. '127.0.0.1', '::1')

Raises ``dns.exception.SyntaxError`` if the address is badly formed.

Returns a ``dns.name.Name``.
   Nz%d.)origin)dnsipv6	inet_aton	is_mappedr   ordipv4_reverse_domainstrbinasciihexlifydecodeipv6_reverse_domain	Exception	bytearrayipv4reversename	from_textjoin)textv6bytepartsr   xs         "lib/third_party/dns/reversename.pyfrom_addressr        sA   %XX%88b!!s13BC9968g>gdD	)g>(F #H$4$4R$8$?$?$A BC B1Q BEC(F
 
MMO88chhuof== :> D %"+CHH,>,>t,D"EG"E$ "EG G$%sN   AD  D&
D  0DD  /D   DD  D   4E4E$#E43E4c                 N   U R                  [        5      (       a  U R                  [        5      n [        U R                  5      nUR                  5         SR                  U5      n[        R                  R                  [        R                  R                  U5      5      $ U R                  [        5      (       a  U R                  [        5      n [        U R                  5      nUR                  5         / nSn[        U5      nXE:  a1  UR                  SR                  XUS-    5      5        US-  nXE:  a  M1  SR                  U5      n[        R                  R                  [        R                  R                  U5      5      $ [        R                  R!                  S5      e)zConvert a reverse map domain name into textual address form.

*name*, a ``dns.name.Name``, an IPv4 or IPv6 address in reverse-map name
form.

Raises ``dns.exception.SyntaxError`` if the name does not have a
reverse-map form.

Returns a ``text``.
   .r             :z"unknown reverse-map address family)is_subdomainr   
relativizelistlabelsr   r   r   r   	inet_ntoar
   r   lenappendr	   	exceptionSyntaxError)r   r)   r   r   ils         r   
to_addressr1   ?   s7    ,--23dkk"yy xx!!#(("4"4T":;;			.	/	/23dkk"KeLL&1q5/23FA e yyxx!!#(("4"4T":;;mm''(LMMr#   )__doc__r   dns.namer   dns.ipv6dns.ipv4dns._compatr   r   r   r   r   r    r1    r#   r   <module>r8      sN   $      hh((9 hh((5 >>!Nr#   