§
    ÌtºfM=  ã                   óÒ   — d dl Z d dlmZ d dlmZmZmZ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 d dlmZmZ d d	lmZ d d
lmZmZ  G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Úb2a_hex)ÚOptionalÚDictÚAnyÚList)ÚContract)ÚENS)ÚDeferredÚinlineCallbacks)ÚdeferToThread)ÚICryptosignKeyÚIEthereumKey)Úidentify_realm_name_category)Úmake_w3ÚEIP712AuthorityCertificatec                   ód  — e Zd ZdZdZ	 	 	 	 	 	 	 d&dddee         dee         dee         d	ee         d
ee         dee         dee         fd„Ze	dede
dede
dede
de
de
de
de
defd„¦   «         Ze	 	 d'dedededee
         dee         defd„¦   «         Zed(d„¦   «         Zedee         fd„¦   «         Zedee         fd „¦   «         Zedee         fd!„¦   «         Zedee         fd"„¦   «         Zedee         fd#„¦   «         Zedee         fd$„¦   «         Zedee         fd%„¦   «         ZdS ))ÚSeederz

    ©Ú_frealmÚ	_operatorÚ_labelÚ_countryÚ_legalÚ	_endpointÚ_bandwidth_requestedÚ_bandwidth_offeredNÚfrealmÚFederatedRealmÚoperatorÚlabelÚcountryÚlegalÚendpointÚbandwidth_requestedÚbandwidth_offeredc	                 óv   — || _         || _        || _        || _        || _        || _        || _        || _        dS )zÝ

        :param frealm:
        :param operator:
        :param label:
        :param country:
        :param legal:
        :param endpoint:
        :param bandwidth_requested:
        :param bandwidth_offered:
        Nr   )	Úselfr   r   r    r!   r"   r#   r$   r%   s	            úS/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/xbr/_frealm.pyÚ__init__zSeeder.__init__:   sD   € ð* (.ˆŒØ(0ˆŒØ%*ˆŒØ'.ˆŒØ%*ˆŒØ(0ˆŒØ3FˆÔ!Ø1BˆÔÐÐó    Úchain_idÚverifying_contractÚchannel_bindingÚ
channel_idÚblock_noÚ	challengeÚpubkeyÚrealmÚdelegateÚseederÚ	bandwidthc                 ó   — |pd}|pd}| sJ ‚|sJ ‚|€J ‚|€J ‚|sJ ‚|sJ ‚|sJ ‚|sJ ‚|sJ ‚|
sJ ‚dddœdddœgdddœd	d
dœdddœdddœdddœdddœdddœdd
dœdd
dœdd
dœdddœgdœddddœ| |||||||||	|
dœdœ}|S )NÚ r*   ÚnameÚstring)r8   ÚtypeÚversionÚchainIdÚuint256ÚverifyingContractÚaddressr-   r.   Úbytes32r/   r0   r1   r2   r3   r4   r5   Úuint32)ÚEIP712DomainÚEIP712SeederConnectrC   ÚXBRÚ1)r8   r;   )r<   r>   r-   r.   r/   r0   r1   r2   r3   r4   r5   )ÚtypesÚprimaryTypeÚdomainÚmessage© )r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   Údatas               r(   Ú_create_eip712_connectzSeeder._create_eip712_connectX   sÚ  € ð *Ð/¨RˆØÐ& 3ˆ
ØˆˆˆØ!Ð!Ð!Ð!ØÐ*Ð*Ð*ØÐ%Ð%Ð%ØˆˆˆØÐÐÐØˆˆˆØˆˆˆØˆˆˆØÐÐÐð !'Ø (ðð ð
 !*Ø (ðð ð	!ð !*Ø )ðð ð
 !4Ø )ðð ð
 !2Ø (ðð ð
 !-Ø )ðð ð
 !+Ø )ðð ð
 !,Ø )ðð ð
 !)Ø )ðð ð
 !(Ø )ðð ð
 !+Ø )ðð ð
 !)Ø )ðð ð
 !,Ø (ðð ðS-(ð9ð 9ðt 1àØðð ð
 $Ø%7Ø#2Ø(Ø$Ø&Ø ØØ$Ø Ø&ðð ðAM
ð M
ˆð^ ˆr*   Ú
client_keyÚdelegate_keyÚreturnc              #   óº  K  — d}d}d}t          j        d¦  «        }	t                               ||||||	|                     d¬¦  «        d|                     d¬¦  «        d|¬	¦  «        }
|                     |
¦  «        V —}|                     d¬¦  «        |	||d
|||                     d¬¦  «        | j        |t          |¦  «         	                    ¦   «         dœ}|S )z²

        :param client_key:
        :param delegate_key:
        :param bandwidth_requested:
        :param channel_id:
        :param channel_binding:
        :return:
        é   s   é    T)Úbinarys   Fs   )r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   Ú(7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f)r1   r0   r-   r.   r2   r+   r/   r3   r4   r5   Ú	signature)
ÚosÚurandomr   rL   Ú
public_keyr?   Úsign_typed_datar   r   Údecode)r'   rM   rN   r$   r.   r-   r+   r,   r/   r0   Úeip712_datarU   Ú	authextras                r(   Úcreate_authextrazSeeder.create_authextraÂ   s+  è è € ð  ˆà)ÐØˆÝ”J˜r‘N”Nˆ	Ý×3Ò3¸XØGYØDSØ?IØ=EØ>GØ;E×;PÒ;PÐX\Ð;PÑ;]Ô;]ð ;GØ=I×=QÒ=QÐY^Ð=QÑ=_Ô=_ð <HØ>Qð 4ñ Sô Sˆð '×6Ò6°{ÑCÔCÐCÐCˆ	ð !×+Ò+°5Ð+Ñ9Ô9ð #ð  /ð %ð ð !ð !ð %×,Ò,°EÐ,Ñ:Ô:ð ”nð -õ ! Ñ+Ô+×2Ò2Ñ4Ô4ðC"
ð "
ˆ	ðF Ðr*   c                 ó   — | j         S ©ú

        :return:
        )r   ©r'   s    r(   r   zSeeder.frealm  s   € ð Œ|Ðr*   c                 ó   — | j         S )z›
        Operator address, e.g. ``"0xe59C7418403CF1D973485B36660728a5f4A8fF9c"``.

        :return: The Ethereum address of the endpoint operator.
        )r   ra   s    r(   r   zSeeder.operator  s   € ð Œ~Ðr*   c                 ó   — | j         S )zƒ
        Operator endpoint label.

        :return: A human readable label for the operator or specific operator endpoint.
        )r   ra   s    r(   r    zSeeder.label  s   € ð Œ{Ðr*   c                 ó   — | j         S )zz
        Operator country (ISO 3166-1 alpha-2), e.g. ``"US"``.

        :return: ISO 3166-1 alpha-2 country code.
        )r   ra   s    r(   r!   zSeeder.country&  s   € ð Œ}Ðr*   c                 ó   — | j         S r_   )r   ra   s    r(   r"   zSeeder.legal/  s   € ð Œ{Ðr*   c                 ó   — | j         S )a  
        Public WAMP endpoint of seeder. Secure WebSocket URL resolving to a public IPv4
        or IPv6 listening url accepting incoming WAMP-WebSocket connections,
        e.g. ``wss://service1.example.com/ws``.

        :return: The endpoint URL.
        )r   ra   s    r(   r#   zSeeder.endpoint7  s   € ð Œ~Ðr*   c                 ó   — | j         S r_   )r   ra   s    r(   r$   zSeeder.bandwidth_requestedB  s   € ð Ô(Ð(r*   c                 ó   — | j         S r_   )r   ra   s    r(   r%   zSeeder.bandwidth_offeredJ  s   € ð Ô&Ð&r*   )NNNNNNN)NN)rO   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   ÚstrÚintr)   ÚstaticmethodÚbytesrL   r   r   r   r
   r]   Úpropertyr   r   r    r!   r"   r#   r$   r%   rJ   r*   r(   r   r   +   s)  € € € € € ðð ð	€Ið ,0Ø(,Ø*.Ø(,Ø+/Ø6:Ø48ðCð CØ)ðCà# Cœ=ðCð ! œðCð # 3œ-ð	Cð
 ! œðCð $ Cœ=ðCð '/¨s¤mðCð %-¨S¤MðCð Cð Cð Cð< ðg¨ð gØ38ðgà03ðgð ,1ðgð *-ð	gð
 +0ðgð (-ðgð ',ðgð */ðgð (-ðgð +.ðgð gð gñ „\ðgðR ð
 8<Ø:>ðGð GØ%3ðGà'3ðGð /2ðGð &.¨e¤_ð	Gð
 +3°3¬-ðGð
 DLðGð Gð Gñ „_ðGðR ðð ð ñ „Xðð ð˜( 3œ-ð ð ð ñ „Xðð ð�x ”}ð ð ð ñ „Xðð ð˜ #œð ð ð ñ „Xðð ð�x ”}ð ð ð ñ „Xðð ð˜( 3œ-ð ð ð ñ „Xðð ð) X¨c¤]ð )ð )ð )ñ „Xð)ð ð' 8¨C¤=ð 'ð 'ð 'ñ „Xð'ð 'ð 'r*   r   c                   óv  — e Zd ZU dZdZej                             d¦  «        ZdZ	e
ed<   dde
deee
ef                  fd	„Zed
e
fd„¦   «         Zed
e
fd„¦   «         Zed
eee
ef                  fd„¦   «         Zed
ee
         fd„¦   «         Zed„ ¦   «         Zd
efd„Zed
ee         fd„¦   «         Zd„ Zd„ ZdS )r   aä  
    A federated realm is a WAMP application realm with a trust anchor rooted in Ethereum, and
    which can be shared between multiple parties.

    A federated realm is globally identified on an Ethereum chain (e.g. on Mainnet or Rinkeby)
    by an Ethereum address associated to a federated realm owner by an on-chain record stored
    in the WAMP Network contract. The federated realm address thus only needs to exist as an
    identifier of the federated realm-owner record.
    )Ú_name_or_addressÚ_gateway_configÚ_statusÚ_name_categoryÚ_w3Ú_ensÚ_addressÚ	_contractÚ_seedersÚ_root_caÚ_catalogÚ_metaÚ*0xF7acf1C4CB4a9550B8969576573C2688B48988C2r7   ÚCONTRACT_ABINÚname_or_addressÚgateway_configc                 ó  — || _         || _        d| _        t          | j         ¦  «        | _        | j        dvr't          d                     | j         ¦  «        ¦  «        ‚d| _        d| _        d| _	        d| _
        g | _        d| _        dS )aÍ  
        Instantiate a federated realm from a federated realm ENS name (which is resolved to an Ethereum
        address) or Ethereum address.

        :param name_or_address: Ethereum ENS name or address.
        :param gateway_config: If provided, use this Ethereum gateway. If not provided,
            connect via Infura to Ethereum Mainnet, which requires an environment variable
            ``WEB3_INFURA_PROJECT_ID`` with your Infura project ID.
        ÚSTOPPED)ÚethÚensÚreverse_ensz8name_or_address "{}" not an Ethereum address or ENS nameN)rt   ru   rv   r   rw   Ú
ValueErrorÚformatrx   ry   rz   r{   r|   r}   )r'   r‚   rƒ   s      r(   r)   zFederatedRealm.__init__p  s–   € ð !0ˆÔØ-ˆÔð !ˆŒå-IÈ$ÔJ_Ñ-`Ô-`ˆÔØÔÐ&CÐCÐCÝÐW×^Ò^Ð_cÔ_tÑuÔuÑvÔvÐvð ˆŒØˆŒ	ð (,ˆŒð .2ˆŒð ')ˆŒàˆŒˆˆr*   rO   c                 ó   — | j         S ©N)rv   ra   s    r(   ÚstatuszFederatedRealm.status“  s
   € àŒ|Ðr*   c                 ó   — | j         S rŒ   )rt   ra   s    r(   r‚   zFederatedRealm.name_or_address—  s   € àÔ$Ð$r*   c                 ó   — | j         S rŒ   )ru   ra   s    r(   rƒ   zFederatedRealm.gateway_config›  s   € àÔ#Ð#r*   c                 ó   — | j         S rŒ   )rw   ra   s    r(   Úname_categoryzFederatedRealm.name_categoryŸ  s   € àÔ"Ð"r*   c                 ó   — | j         S rŒ   )rz   ra   s    r(   r?   zFederatedRealm.address£  ó
   € àŒ}Ðr*   c                 ó*   — | j         dk    sJ ‚| j        S )NÚRUNNING)rv   r}   ra   s    r(   Úroot_cazFederatedRealm.root_ca§  s   € ØŒ|˜yÒ(Ð(Ð(Ð(ØŒ}Ðr*   c                 ó   — | j         S rŒ   )r|   ra   s    r(   ÚseederszFederatedRealm.seeders«  r“   r*   c                 ó’   — | j         dk    r't          d                     | j         ¦  «        ¦  «        ‚t          | j        ¦  «        }|S )r`   r…   zcannot start in status "{}")rv   ÚRuntimeErrorrŠ   r   Ú_initialize_background)r'   Úds     r(   Ú
initializezFederatedRealm.initialize¯  sE   € ð
 Œ<˜9Ò$Ð$ÝÐ<×CÒCÀDÄLÑQÔQÑRÔRÐRÝ˜$Ô5Ñ6Ô6ˆØˆr*   c                 ó  — d| _         | j        rt          | j        ¦  «        | _        nt	          d¦  «        ‚t          j        | j        ¦  «        | _        | j        dv rm| j        dk    r;d 	                    t          | j                             d¦  «        ¦  «        ¦  «        }n| j        }| j                             |¦  «        | _        n:| j        dk    r%| j                             | j        ¦  «        | _        n
J d	¦   «         ‚d
| _         d S )NÚSTARTINGzJcannot auto-configure ethereum connection (was removed from web3.py in v6))r‡   rˆ   rˆ   r7   ú.r†   Fzshould not arrive herer•   )rv   ru   r   rx   rš   r	   Ú	from_web3ry   rw   ÚjoinÚreversedrt   Úsplitr?   rz   ÚtoChecksumAddress)r'   r8   s     r(   r›   z%FederatedRealm._initialize_background¹  sý   € Ø!ˆŒàÔð 	mÝ˜tÔ3Ñ4Ô4ˆDŒHˆHåÐkÑlÔlÐlõ
 ”M $¤(Ñ+Ô+ˆŒ	àÔÐ"8Ð8Ð8ØÔ" mÒ3Ð3Ø—w’w�x¨Ô(=×(CÒ(CÀCÑ(HÔ(HÑIÔIÑJÔJ��àÔ,�Ø œI×-Ò-¨dÑ3Ô3ˆDŒMˆMØÔ  EÒ)Ð)Ø œH×6Ò6°tÔ7LÑMÔMˆDŒMˆMà2Ð2Ñ2Ô2Ð2ð !ˆŒˆˆr*   rŒ   )ri   rj   rk   rl   rm   Úweb3ÚWeb3r¥   ÚCONTRACT_ADDRESSr�   rn   Ú__annotations__r   r   r   r)   rr   r�   r‚   rƒ   r‘   r?   r   r–   r   r   r˜   r�   r›   rJ   r*   r(   r   r   S  s³  € € € € € € ðð ð€Ið  ”y×2Ò2Ð3_Ñ`Ô`ÐØ€L�#ÐÐÑð!ð !¨ð !¸XÀdÈ3ÐPSÈ8ÄnÔ=Uð !ð !ð !ð !ðF ð˜ð ð ð ñ „Xðð ð% ð %ð %ð %ñ „Xð%ð ð$ ¨¨c°3¨h¬Ô 8ð $ð $ð $ñ „Xð$ð ð#˜x¨œ}ð #ð #ð #ñ „Xð#ð ðð ñ „XððÐ3ð ð ð ð ð ð˜˜fœð ð ð ñ „Xððð ð ð!ð !ð !ð !ð !r*   r   )rV   Úbinasciir   Útypingr   r   r   r   r¦   Úweb3.contractr   r‡   r	   Útwisted.internet.deferr
   r   Útwisted.internet.threadsr   Úautobahn.wamp.interfacesr   r   Úautobahn.wamp.messager   Úautobahn.xbrr   r   Úobjectr   r   rJ   r*   r(   ú<module>r³      sP  ðð6 
€	€	€	Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à €€€Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ >Ð >Ð >Ð >Ð >Ð >Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðe'ð e'ð e'ð e'ð e'ˆVñ e'ô e'ð e'ðP	D!ð D!ð D!ð D!ð D!�Vñ D!ô D!ð D!ð D!ð D!r*   