Ë
    oj’  ã                   ó  — d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	Z	ddlm
Z
 ddlmZ ddlmZmZ dd	lmZ  ee«       e	j$                  d
d
¬«       G d„ d«      «       «       Z ee«       e	j$                  d
d
¬«       G d„ d«      «       «       Z ee«       G d„ d«      «       Z e	j$                  d
d
¬«       ee«       G d„ d«      «       «       Z e	j$                  dddd
¬«       ee«       G d„ d«      «       «       Z G d„ de«      Zy)z*
Address objects for network connections.
é    N)ÚOptionalÚUnion)Úwarn)Úimplementer)ÚLiteral)ÚIAddress)Ú_asFilesystemBytesÚ_coerceToFilesystemEncoding)ÚplatformT)ÚhashÚauto_attribsc                   ó¢   — e Zd ZU dZ ej
                  ej                  j                  ddg«      ¬«      Ze	e
d   e
d   f   ed<   eed<   eed<   y)	ÚIPv4Addressat  
    An L{IPv4Address} represents the address of an IPv4 socket endpoint.

    @ivar type: A string describing the type of transport, either 'TCP' or
        'UDP'.

    @ivar host: A string containing a dotted-quad IPv4 address; for example,
        "127.0.0.1".
    @type host: C{str}

    @ivar port: An integer representing the port number.
    @type port: C{int}
    ÚTCPÚUDP©Ú	validatorÚtypeÚhostÚportN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚattrÚibÚ
validatorsÚin_r   r   r   Ú__annotations__ÚstrÚint© ó    ú:/usr/lib/python3/dist-packages/twisted/internet/address.pyr   r      sT   … ñð 3:°$·'±'Ø—/‘/×%Ñ% u¨e nÓ5ô3€Dˆ%�˜‘ ¨¡Ð.Ñ
/ó ð ƒIØ
„Ir#   r   c                   óÈ   — e Zd ZU dZ ej
                  ej                  j                  ddg«      ¬«      Ze	e
d   e
d   f   ed<   eed<   eed<   dZeed	<   dZe	eef   ed
<   y)ÚIPv6Addressaõ  
    An L{IPv6Address} represents the address of an IPv6 socket endpoint.

    @ivar type: A string describing the type of transport, either 'TCP' or
        'UDP'.

    @ivar host: A string containing a colon-separated, hexadecimal formatted
        IPv6 address; for example, "::1".
    @type host: C{str}

    @ivar port: An integer representing the port number.
    @type port: C{int}

    @ivar flowInfo: the IPv6 flow label.  This can be used by QoS routers to
        identify flows of traffic; you may generally safely ignore it.
    @type flowInfo: L{int}

    @ivar scopeID: the IPv6 scope identifier - roughly analagous to what
        interface traffic destined for this address must be transmitted over.
    @type scopeID: L{int} or L{str}
    r   r   r   r   r   r   r   ÚflowInfoÚscopeIDN)r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r'   r(   r"   r#   r$   r&   r&   /   sp   … ñð, 3:°$·'±'Ø—/‘/×%Ñ% u¨e nÓ5ô3€Dˆ%�˜‘ ¨¡Ð.Ñ
/ó ð ƒIØ
ƒIØ€HˆcÓØ €GˆU�3˜�8‰_Ô r#   r&   c                   ó   — e Zd ZdZy)Ú_ProcessAddresszD
    An L{interfaces.IAddress} provider for process transports.
    N)r   r   r   r   r"   r#   r$   r*   r*   Q   s   „ òr#   r*   c                   ó&   — e Zd ZU dZeed<   eed<   y)ÚHostnameAddressa  
    A L{HostnameAddress} represents the address of a L{HostnameEndpoint}.

    @ivar hostname: A hostname byte string; for example, b"example.com".
    @type hostname: L{bytes}

    @ivar port: An integer representing the port number.
    @type port: L{int}
    Úhostnamer   N)r   r   r   r   Úbytesr   r!   r"   r#   r$   r,   r,   X   s   … ñð ƒOØ
„Ir#   r,   F)r   ÚreprÚeqr   c                   óÖ   — e Zd ZU dZ ej
                  ej                  j                  e«      ¬«      Z	e
e   ed<    eej                  dd«      �	dedefd„Zndedefd	„Zdefd
„Zd„ Zy)ÚUNIXAddressz‰
    Object representing a UNIX socket endpoint.

    @ivar name: The filename associated with this socket.
    @type name: C{bytes}
    )Ú	converterÚnameÚsamefileNÚotherÚreturnc                 óŠ  — t        || j                  «      st        S | j                  |j                  k(  }|sM| j                  rA|j                  r5	 t        j
                  j                  | j                  |j                  «      S |S # t        $ r Y |S t        t        f$ r!}t        j                  «       s|‚Y d}~|S d}~ww xY w)zŒ
            Overriding C{attrs} to ensure the os level samefile
            check is done if the name attributes do not match.
            N)Ú
isinstanceÚ	__class__ÚNotImplementedr4   ÚosÚpathr5   ÚOSErrorÚ	TypeErrorÚ
ValueErrorr   ÚisLinux)Úselfr6   ÚresÚes       r$   Ú__eq__zUNIXAddress.__eq__y   s¬   € ô
 ˜e T§^¡^Ô4Ü%Ð%Ø—)‘)˜uŸz™zÑ)ˆCÙ˜4Ÿ9š9¨¯ªð ÜŸ7™7×+Ñ+¨D¯I©I°u·z±zÓBÐBð ˆJøô ò Øð ˆJô "¤:Ð.ò  ô $×+Ñ+Ô-Ø˜ó .àˆJûð ús   Á3B Â	CÂCÂ!B=Â=Cc                 ól   — t        || j                  «      r| j                  |j                  k(  S t        S ©N)r9   r:   r4   r;   )rB   r6   s     r$   rE   zUNIXAddress.__eq__�   s)   € Ü˜% §¡Ô0Ø—y‘y E§J¡JÑ.Ð.Ü!Ð!r#   c                 óF   — | j                   }|�t        d|«      nd }d|›d�S )NÚ zUNIXAddress(ú))r4   r
   )rB   r4   Úshows      r$   Ú__repr__zUNIXAddress.__repr__”   s.   € Ø�y‰yˆØ8<Ð8HÔ*¨2¨tÔ4ÈdˆØ˜d˜X QÐ'Ð'r#   c                 ó  — | j                   €t        | j                  d f«      S 	 t        j                  | j                   «      }t        |j
                  |j                  f«      S # t        $ r t        | j                   «      cY S w xY wrG   )r4   r   r:   r<   ÚstatÚst_inoÚst_devr>   )rB   Ús1s     r$   Ú__hash__zUNIXAddress.__hash__™   sl   € Ø�9‰9ÐÜ˜Ÿ™¨Ð.Ó/Ð/ð	#Ü—‘˜Ÿ™Ó#ˆBÜ˜Ÿ™ B§I¡IÐ.Ó/Ð/øÜò 	#Ü˜Ÿ	™	“?Ò"ð	#ús   ¥?A% Á%BÂB)r   r   r   r   r   r   Ú
convertersÚoptionalr	   r4   r   r.   r   Úgetattrr<   r=   ÚobjectÚboolrE   r    rL   rR   r"   r#   r$   r2   r2   i   sƒ   … ñð $˜DŸG™GØ—/‘/×*Ñ*Ð+=Ó>ô€Dˆ(�5‰/ó ñ ˆr�w‰w˜
 DÓ)Ð5ð	 ð 	¨4ô 	ð,	" ð 	"¨4ó 	"ð
(˜#ó (ó
#r#   r2   c                   ó    — e Zd ZdZdedefd„Zy)Ú_ServerFactoryIPv4Addressz@Backwards compatibility hack. Just like IPv4Address in practice.r6   r7   c                 ó>  — t        |t        «      r-t        dt        d¬«       | j                  | j
                  f|k(  S t        |t        «      rK| j                  | j                  | j
                  f}|j                  |j                  |j
                  f}||k(  S t        S )Nz?IPv4Address.__getitem__ is deprecated.  Use attributes instead.é   )ÚcategoryÚ
stacklevel)	r9   Útupler   ÚDeprecationWarningr   r   r   r   r;   )rB   r6   ÚaÚbs       r$   rE   z _ServerFactoryIPv4Address.__eq__ª   s€   € Ü�eœUÔ#ÜØTÜ+Øõð
 —I‘I˜tŸy™yÐ)¨UÑ2Ð2Ü˜œ{Ô+Ø—‘˜DŸI™I t§y¡yÐ1ˆAØ—‘˜UŸZ™Z¨¯©Ð4ˆAØ˜‘6ˆMÜÐr#   N)r   r   r   r   rV   rW   rE   r"   r#   r$   rY   rY   §   s   „ ÙJð˜Fð  tô r#   rY   )r   r<   Útypingr   r   Úwarningsr   Úzope.interfacer   r   r   Útwisted.internet.interfacesr   Útwisted.python.filepathr	   r
   Útwisted.python.runtimer   Úsr   r&   r*   r,   r2   rY   r"   r#   r$   ú<module>ri      s#  ðñó
 
ß "Ý å &ã Ý å 0ß SÝ +ñ ˆXÓØ€‡�ˆT Ô%÷ð ó &ó ðñ, ˆXÓØ€‡�ˆT Ô%÷!ð !ó &ó ð!ñ@ ˆXÓ÷ð ó ðð €‡�ˆT Ô%ÙˆXÓ÷ð ó ó &ðð €‡�ˆU˜ 5°tÔ<ÙˆXÓ÷5#ð 5#ó ó =ð5#ôx õ r#   