ó
    ð›‘h*Í  ã                   ó‚  • S SK r S SKrS SKrS SKJrJr  S SKJr  S SKJr  \R                  (       d"  \
" S5        \
" S5        \R                  " S5        S SKJrJrJrJrJrJr  S S	KJrJrJrJrJrJr  S S
KJr  S SKrS SKrS SKrS SKrS SKJ r   S SK!r!S SK"r"S SK#r#S SK$r$S SK%r%S SK&r'S SK(r(\(RR                  " 5         S SK*J+r+  S SK,J-r-  S SK.J/r/  S SK0J1r1  S SK2J3r3J4r4  S SK5J6r6  S SK7J8r8  S SK9J:r:  S SKJ;r;J<r<J=r=J>r>  S SKJ?r?J@r@JArA  S SKJBrBJCrC  S SKDJErE  S SKFJGrGJHrHJIrI  / SQrJ " S S\35      rKS rLS rM\NS:X  a  \M" 5         gg)é    N)ÚEnvironmentÚFileSystemLoader)Úxbr)Ú__version__z3
You must install the [xbr] extra to use xbrnetworkz)For example, "pip install autobahn[xbr]".é   )ÚXBR_DEBUG_TOKEN_ADDRÚXBR_DEBUG_NETWORK_ADDRÚXBR_DEBUG_DOMAIN_ADDRÚXBR_DEBUG_CATALOG_ADDRÚXBR_DEBUG_MARKET_ADDRÚXBR_DEBUG_CHANNEL_ADDR)ÚXBR_DEBUG_TOKEN_ADDR_SRCÚXBR_DEBUG_NETWORK_ADDR_SRCÚXBR_DEBUG_DOMAIN_ADDR_SRCÚXBR_DEBUG_CATALOG_ADDR_SRCÚXBR_DEBUG_MARKET_ADDR_SRCÚXBR_DEBUG_CHANNEL_ADDR_SRC)ÚFbsRepository)Úpformat)Úreactor)ÚinlineCallbacks)ÚdeferToThread)ÚReactorNotRunning)ÚApplicationSessionÚApplicationRunner)ÚCBORSerializer)Ú
cryptosign)ÚApplicationError)Úpack_uint256Úunpack_uint256Úsign_eip712_channel_openÚmake_w3)Úsign_eip712_member_registerÚsign_eip712_market_createÚsign_eip712_market_join)Ú	ActorTypeÚChannelType)Úload_or_create_profile)ÚhltypeÚhlidÚhlval)Úversionú
get-memberúregister-memberúregister-member-verifyú
get-marketúcreate-marketúcreate-market-verifyú	get-actorújoin-marketújoin-market-verifyúget-channelúopen-channelzclose-channelúdescribe-schemaúcodegen-schemac                   óÀ   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS r\SS j5       r\S 5       r  SS jrS rS rS rS rS rS rS rS rSrg)ÚClienté[   z
tls-uniqueNc                 óÎ  • [         R                  " X5        SU l        SU l        UR                  R                  SS 5      nU(       a·  UR                  (       a¦  [        UR                  5      [        :X  a  [        UR                  5      S:X  d   eUR                  U l
        [        R                  R                  U R                  5      U l        U R                  R!                  SU R                  R"                  S9  Od[$        R&                  " S5      U l
        [        R                  R                  U R                  5      U l        U R                  R!                  S5        U(       a>  UR(                  (       a-  U R+                  U5        U R                  R!                  S5        O7S U l        S U l        S U l        S U l        U R                  R!                  S	5        S
U l        g )Ni † é   Úprofileé    z8WAMP-Cryptosign keys with public key {public_key} loaded)Ú
public_keyz)WAMP-Cryptosign keys initialized randomlyz XBR ETH keys loaded from profilezXBR ETH keys left unsetT)r   Ú__init__Ú_default_gasÚ	_chain_idÚextraÚgetÚcskeyÚtypeÚbytesÚlenÚ
_cskey_rawr   ÚCryptosignKeyÚ
from_bytesÚ_keyÚlogÚinforA   ÚosÚurandomÚethkeyÚset_ethkey_from_profileÚ_ethkey_rawÚ_ethkeyÚ_ethadrÚ_ethadr_rawÚ_running)ÚselfÚconfigr?   s      ÚUC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/xbr/_cli.pyrB   ÚClient.__init__`   sJ  € Ü×#Ò# DÔ1ð #ˆÔØˆŒà—,‘,×"Ñ" 9¨dÓ3ˆæ�w—}—}Ü˜Ÿ™Ó&¬%Ó/´C¸¿¹Ó4FÈ"Ó4LÐLÐLØ%Ÿm™mˆDŒOÜ"×0Ñ0×;Ñ;¸D¿O¹OÓLˆDŒIØ�H‰H�M‰MÐTÐae×ajÑaj×auÑauˆMÒvä Ÿjšj¨›nˆDŒOÜ"×0Ñ0×;Ñ;¸D¿O¹OÓLˆDŒIØ�H‰H�M‰MÐEÔFæ�w—~—~Ø×(Ñ(¨Ô1Ø�H‰H�M‰MÐ<Õ=à#ˆDÔØˆDŒLØˆDŒLØ#ˆDÔØ�H‰H�M‰MÐ3Ô4àˆ�ó    c                 ó¶  • [        UR                  5      [        :X  d)   SR                  [        UR                  5      5      5       e[	        UR                  5      S:X  d)   SR                  [	        UR                  5      5      5       eUR                  U l        [        R                  R                  U R
                  5      U l	        [        R                  R                  U R                  R                  R                  5       5      U l        [         R"                  " U R                  SS 5      U l        U R&                  R)                  SU R                  S9  g)z

:param profile:
:return:
zBset_ethkey_from_profile::profile invalid type "{}" - must be bytesr@   z?set_ethkey_from_profile::profile invalid length {} - must be 32é   Nz%ETH keys with address {ethadr} loaded)Úethadr)rH   rS   rI   ÚformatrJ   rU   Úeth_keysÚkeysÚ
PrivateKeyrV   Úweb3ÚWeb3ÚtoChecksumAddressrA   Úto_canonical_addressrW   ÚbinasciiÚa2b_hexrX   rO   rP   )rZ   r?   s     r\   rT   ÚClient.set_ethkey_from_profile   s  € ô Ø�N‰NóÜ$ó%ð 	"Ø&j×&qÑ&qÜ�—‘Ó ó'"ó	"ð %ô �7—>‘>Ó" bÓ(ð 	!Ð*k×*rÑ*rÜ�—‘Óó+!ó 	!Ð(à"Ÿ>™>ˆÔÜ—}‘}×/Ñ/°×0@Ñ0@ÓAˆŒÜ—y‘y×2Ñ2°4·<±<×3JÑ3J×3_Ñ3_Ó3aÓbˆŒÜ#×+Ò+¨D¯L©L¸¸Ð,<Ó=ˆÔØ�‰�‰Ð=ÀdÇlÁlˆÒSr^   c                 óþ  • U R                   R                  S:X  a‡  U R                  R                  5       S S U R                  S.nU R
                  R                  S[        U R                   R                  5      S9  U R                  U R                   R                  S/US9  g U R
                  R                  S[        U R                   R                  5      S9  U R                  U R                   R                  5        g )NÚ
xbrnetwork)ÚpubkeyÚ	trustrootÚ	challengeÚchannel_bindingzTClient connected, now joining realm "{realm}" with WAMP-cryptosign authentication ..)Úrealmr   )ÚauthmethodsÚ	authextrazDClient connected, now joining realm "{realm}" (no authentication) ..)	r[   rs   rN   rA   ÚCHANNEL_BINDINGrO   rP   r*   Újoin)rZ   ru   s     r\   Ú	onConnectÚClient.onConnect�   sÄ   € Ø�;‰;×Ñ Ó,àŸ)™)×.Ñ.Ó0Ø!Ø!Ø#'×#7Ñ#7ñ	ˆIð �H‰H�M‰MÐpÜ $ T§[¡[×%6Ñ%6Ó 7ð ñ 9à�I‰I�d—k‘k×'Ñ'°l°^ÈyˆIÒYà�H‰H�M‰MÐ`Ü $ T§[¡[×%6Ñ%6Ó 7ð ñ 9à�I‰I�d—k‘k×'Ñ'Õ(r^   c                 ó(  • UR                   S:X  a_  U R                  R                  UU R                  R                  R
                  R                  U R                  S 5      U R                  S9nU$ [        SR                  UR                   5      5      e)Nr   )Ú
channel_idÚchannel_id_typez*unable to process authentication method {})
ÚmethodrN   Úsign_challengeÚ	transportÚtransport_detailsr{   rF   rv   ÚRuntimeErrorrb   )rZ   rq   Úsigned_challenges      r\   ÚonChallengeÚClient.onChallenge    s”   € Ø×Ñ˜|Ó+Ø#Ÿy™y×7Ñ7¸	ØCGÇ>Á>×CcÑCc×CnÑCn×CrÑCrÐsw÷  tHñ  tHð  JNó  DOØHL×H\ÑH\ð  8ð  ^Ðð $Ð#äÐK×RÑRÐS\×ScÑScÓdÓeÐer^   c           	   ƒ   ó  #   • U R                   R                  S[        UR                  5      [        UR                  5      [        UR
                  5      [        UR                  5      US9  SU R                  R                  ;   a/  [        R                  " U R                  R                  S   X45        SU R                  R                  ;   aV   UR                  S:X  a  U R                  U5      I S h  v•N   OU R                  U5      I S h  v•N    U R                  5         g g  N1 N! [         a<  nU R                   R                  5         X R                  R                  S'    S nANWS nAff = f! U R                  5         f = f7f)NzbOk, client joined on realm "{realm}" [session={session}, authid="{authid}", authrole="{authrole}"])rs   ÚsessionÚauthidÚauthroleÚdetailsÚreadyÚcommandrn   Úerror)rO   rP   r*   rs   r†   r‡   rˆ   r[   rE   ÚtxaioÚresolveÚ_do_xbrnetwork_realmÚ_do_market_realmÚ	ExceptionÚfailureÚleave)rZ   r‰   Úes      r\   ÚonJoinÚClient.onJoin©   s%  é € Ø�‰�‰ØpÜ�w—}‘}Ó%Ü˜Ÿ™Ó)Ü˜Ÿ™Ó'Ü˜'×*Ñ*Ó+Øð 	ñ 	ð �d—k‘k×'Ñ'Ó'Ü�MŠM˜$Ÿ+™+×+Ñ+¨GÑ4°t°oÔFà˜Ÿ™×)Ñ)Ó)ð	Ø—=‘= LÓ0Ø×3Ñ3°GÓ<×<Ñ<à×/Ñ/°Ó8×8Ñ8ð
 —
‘
•ð *ñ =á8øÜó /Ø—‘× Ñ Ô"Ø-.—‘×!Ñ! 'Ö*ûð/ûð —
‘
•üsr   ‚CF	Ã$D+ Ã5D'Ã6D+ Ã:E4 Ã;D+ ÄD)ÄD+ ÄE4 ÄF	Ä'D+ Ä)D+ Ä+
E1Ä52E,Å'E4 Å,E1Å1E4 Å4FÆF	c                 óR  • U R                   R                  S[        UR                  5      S9  SU l        UR                  S:X  ac  U R
                  (       aQ  U R
                  R                  (       a5  U R
                  R                  R                  5         U R                  5         g g g g )Nz%Client left realm (reason="{reason}"))ÚreasonFzwamp.close.normal)	rO   rP   r+   r˜   rY   r[   ÚrunnerÚstopÚ
disconnect)rZ   r‰   s     r\   ÚonLeaveÚClient.onLeaveÀ   ss   € Ø�‰�‰Ð=ÄeÈGÏNÉNÓF[ˆÑ\ØˆŒà�>‰>Ð0Ó0Ø�{�{˜tŸ{™{×1×1à—‘×"Ñ"×'Ñ'Ô)Ø—‘Õ!ð  2ˆ{ð 1r^   c                 ó†   • U R                   R                  S5         [        R                  " 5         g ! [         a     g f = f)NzClient disconnected)rO   rP   r   rš   r   )rZ   s    r\   ÚonDisconnectÚClient.onDisconnectÊ   s3   € Ø�‰�‰Ð+Ô,ð	Ü�LŠL�NøÜ ó 	Ùð	ús   �3 ³
A ¿A c              ƒ   ó	  #   • U R                   R                  S   nUR                  S:X  aø  U R                  R	                  S5        US;   d   eUS:X  a$  U R                  U R                  5      I S h  v•N   g US:X  aL  U R                   R                  S   nU R                   R                  S   nU R                  X45      I S h  v•N   g US	:X  aL  U R                   R                  S
   nU R                   R                  S   nU R                  XV5      I S h  v•N   g  S5       e[        R                  " UR                  SS  5      nUS;   d   eUS:X  a$  U R                  U R                  5      I S h  v•N   g US:X  a3  U R                   R                  S   nU R                  Xx5      I S h  v•N   g US:X  aÌ  SU R                   R                  ;   a8  U R                   R                  S   (       a  U R                   R                  S   nOS nSU R                   R                  ;   a8  U R                   R                  S   (       a  U R                   R                  S   n	OU R                  n	U R                  X‰5      I S h  v•N   g US:X  aä  U R                   R                  S   nU R                   R                  S   n
U R                   R                  S   nU R                   R                  S   nU R                   R                  S   nU R                   R                  S   nU R                   R                  S   nU R                   R                  S   nU R                  XxX«XÍXïUS9	I S h  v•N   g US:X  aM  U R                   R                  S
   nU R                   R                  S   nU R                  XuU5      I S h  v•N   g US:X  aM  U R                   R                  S   nU R                   R                  S   nU R!                  XxU5      I S h  v•N   g US:X  aM  U R                   R                  S
   nU R                   R                  S   nU R#                  XuU5      I S h  v•N   g  S5       e GNû GN¬ GN] GN GNÎ GNÿ GN NÇ Nv N%7f) Nr‹   Ú	anonymousz#not yet a member in the XBR network)r-   r.   r/   r-   r.   ÚusernameÚemailr/   ÚvactionÚvcodeúshould not arrive hereé   )r-   r0   r1   r2   r3   r4   r5   r0   Úmarketr3   Úactorr1   ÚmarketmakerÚmarket_titleÚmarket_labelÚmarket_homepageÚmarket_provider_securityÚmarket_consumer_securityÚ
market_fee)ÚtitleÚlabelÚhomepageÚprovider_securityÚconsumer_securityr±   r2   r4   Ú
actor_typer5   )r[   rE   rˆ   rO   rP   Ú_do_get_memberrX   Ú_do_onboard_memberÚ_do_onboard_member_verifyÚuuidÚUUIDr‡   Ú_do_get_marketÚ_do_get_actorÚ_do_create_marketÚ_do_create_market_verifyÚ_do_join_marketÚ_do_join_market_verify)rZ   r‰   r‹   r£   r¤   Úvaction_oidÚvaction_codeÚ
member_oidÚ
market_oidrª   r«   r¬   r­   r®   rµ   r¶   r±   r·   s                     r\   r�   ÚClient._do_xbrnetwork_realmÑ   s  é € Ø—+‘+×#Ñ# IÑ.ˆØ×Ñ˜{Ó*Ø�H‰H�M‰MÐ?Ô@àÐYÓYÐYÐYØ˜,Ó&Ø×)Ñ)¨$×*:Ñ*:Ó;×;Ñ;ØÐ-Ó-ØŸ;™;×,Ñ,¨ZÑ8�ØŸ™×)Ñ)¨'Ñ2�Ø×-Ñ-¨hÓ>×>Ñ>ØÐ4Ó4Ø"Ÿk™k×/Ñ/°	Ñ:�Ø#Ÿ{™{×0Ñ0°Ñ9�Ø×4Ñ4°[ÓO×OÑOà6Ð6Ó6�uô Ÿš 7§>¡>°!°"Ð#5Ó6ˆJð ð Qó Qð Qð Qà˜,Ó&Ø×)Ñ)¨$×*:Ñ*:Ó;×;Ñ;Ø˜LÓ(Ø!Ÿ[™[×.Ñ.¨xÑ8�
Ø×)Ñ)¨*ÓA×AÑAØ˜KÓ'Ø˜tŸ{™{×0Ñ0Ó0°T·[±[×5FÑ5FÀx×5PØ!%§¡×!2Ñ!2°8Ñ!<‘Jà!%�JØ˜dŸk™k×/Ñ/Ó/°D·K±K×4EÑ4EÀg×4NØ ŸK™K×-Ñ-¨gÑ6‘Eà ×,Ñ,�EØ×(Ñ(¨Ó;×;Ñ;Ø˜OÓ+Ø!Ÿ[™[×.Ñ.¨xÑ8�
Ø"Ÿk™k×/Ñ/°Ñ>�Ø#Ÿ{™{×0Ñ0°Ñ@�Ø#Ÿ{™{×0Ñ0°Ñ@�Ø"&§+¡+×"3Ñ"3Ð4EÑ"F�Ø$(§K¡K×$5Ñ$5Ð6PÑ$QÐ!Ø$(§K¡K×$5Ñ$5Ð6PÑ$QÐ!Ø!Ÿ[™[×.Ñ.¨|Ñ<�
Ø×,Ñ,¨ZÀ[Ø3?Ø?PØ8Bð -ð D÷ Dñ Dð Ð2Ó2Ø"Ÿk™k×/Ñ/°	Ñ:�Ø#Ÿ{™{×0Ñ0°Ñ9�Ø×3Ñ3°JÈ\ÓZ×ZÑZØ˜MÓ)Ø!Ÿ[™[×.Ñ.¨xÑ8�
Ø!Ÿ[™[×.Ñ.¨|Ñ<�
Ø×*Ñ*¨:À:ÓN×NÑNØÐ0Ó0Ø"Ÿk™k×/Ñ/°	Ñ:�Ø#Ÿ{™{×0Ñ0°Ñ9�Ø×1Ñ1°*È<ÓX×XÑXà6Ð6Ó6�uòy <ò ?ò Pò <ò Bò <òDñ [ñ Oñ Yùs¼   ‚A1R	Á3Q.Á4AR	ÃQ1ÃAR	ÄQ4ÄAR	Å3Q7Å48R	Æ,Q:Æ-CR	É>Q=É?C)R	Í(R Í)AR	Î;RÎ<AR	ÐRÐAR	Ñ!RÑ"R	Ñ1R	Ñ4R	Ñ7R	Ñ:R	Ñ=R	Ò R	ÒR	ÒR	ÒR	c              ƒ   ó   #   • U R                   R                  S   nSUR                  UR                  UR                  S.n[        U5      U l        [        R                  " U R                  5        U R                   R                  S   nUS;   d   eUS:X  a®  U R                   R                  S   nU R                   R                  S   nU R                   R                  S	   nU[        R                  :X  a  U R                  XV5      I S h  v•N   g U[        R                  :X  a  U R                  XV5      I S h  v•N   g  S
5       eUS:X  aµ  U R                   R                  S   nU R                   R                  S   =(       d    [        R                  " 5       nU R                   R                  S	   nU R                   R                  S   nU R                   R                  S   n	U R!                  XXXvU	5      I S h  v•N   g  S
5       e Nü NÐ N7f)Nr?   Úinfura)rH   ÚnetworkÚkeyÚsecretr‹   )r7   r6   r6   r©   ÚdelegateÚchannel_typer§   r7   ÚchannelÚamount)r[   rE   Úinfura_networkÚ
infura_keyÚinfura_secretr"   Ú_w3r   ÚsetProviderr'   ÚPAYMENTÚ_do_get_active_payment_channelÚPAYINGÚ_do_get_active_paying_channelr»   Úuuid4Ú_do_open_channel)
rZ   r‰   r?   Úblockchain_gatewayr‹   rÆ   rÍ   rÎ   Úchannel_oidrÐ   s
             r\   r�   ÚClient._do_market_realm  sÊ  é € Ø—+‘+×#Ñ# IÑ.ˆð Ø×-Ñ-Ø×%Ñ%Ø×+Ñ+ñ	
Ðô Ð-Ó.ˆŒÜ�Š˜Ÿ™Ô!à—+‘+×#Ñ# IÑ.ˆØÐ9Ó9Ð9Ð9Ø�mÓ#ØŸ™×*Ñ*¨8Ñ4ˆJØ—{‘{×(Ñ(¨Ñ4ˆHØŸ;™;×,Ñ,¨^Ñ<ˆLØœ{×2Ñ2Ó2Ø×9Ñ9¸*ÓO×OÑOØ¤×!3Ñ!3Ó3Ø×8Ñ8¸ÓN×NÑNà6Ð6Ó6�uØ˜Ó&àŸ™×*Ñ*¨8Ñ4ˆJð Ÿ+™+×+Ñ+¨IÑ6×F¼$¿*º*»,ˆKð  Ÿ;™;×,Ñ,¨^Ñ<ˆLð —{‘{×(Ñ(¨Ñ4ˆHð —[‘[×&Ñ& xÑ0ˆFð ×'Ñ'¨
ÀÐY_Ó`×`Ñ`à2Ð2Ó2�5ñ1 PáNñ( aùs7   ‚D	HÄHÄ-HÄ9H
Ä:CHÇ;HÇ<HÈ
HÈHc           	   ƒ   ón  #   • U R                  SU5      I S h  v•N nU(       GaD  U R                  SU5      I S h  v•N n[        R                  R                  US   5      US'   [        R
                  " US   S9US'   [        R                  R                  [        US   S   5      S5      US   S'   [        R                  R                  [        US   S	   5      S5      US   S	'   [        R                  " US
   S5      US
'   US   nSSSSSS.nUR                  US 5      US'   U R                  R                  S[        US   5      [        US   5      [        US   5      S9  U$ U R                  R                  S[        [         R"                  " U5      R%                  5       5      S9  g  GN— GNx7f)Núxbr.network.is_memberú xbr.network.get_member_by_walletÚaddressÚoid©rI   ÚbalanceÚethÚetherr   ÚcreatedÚnsÚlevelÚACTIVEÚVERIFIEDÚRETIREDÚPENALTYÚBLOCKED)r   r`   é   r>   é   zZMember {member_oid} found for address 0x{member_adr} - current member level {member_level})Úmember_levelrÅ   Ú
member_adrú9Address 0x{member_adr} is not a member in the XBR network©ró   )Úcallrf   rg   rh   r»   r¼   ÚfromWeir    ÚnpÚ
datetime64rF   rO   rP   r+   r*   Úwarnrj   Úb2a_hexÚdecode)rZ   ró   Ú	is_memberÚmember_datarò   ÚMEMBER_LEVEL_TO_STRs         r\   r¸   ÚClient._do_get_memberD  s¦  é € ØŸ)™)Ð$;¸ZÓH×Hˆ	ßØ $§	¡	Ð*LÈjÓ Y×YˆKä%)§Y¡Y×%@Ñ%@ÀÈYÑAWÓ%XˆK˜	Ñ"Ü!%§¢°¸UÑ1CÑ!DˆK˜ÑÜ,0¯I©I×,=Ñ,=¼nÈ[ÐYbÑMcÐdiÑMjÓ>kÐmtÓ,uˆK˜	Ñ" 5Ñ)Ü,0¯I©I×,=Ñ,=¼nÈ[ÐYbÑMcÐdiÑMjÓ>kÐmtÓ,uˆK˜	Ñ" 5Ñ)Ü%'§]¢]°;¸yÑ3IÈ4Ó%PˆK˜	Ñ"à& wÑ/ˆLð ààààñ#Ðð $7×#:Ñ#:¸<ÈÓ#NˆK˜Ñ à�H‰H�M‰MÐvÜ',¨[¸Ñ-AÓ'BÜ%)¨+°eÑ*<Ó%=Ü%*¨;°yÑ+AÓ%Bð ñ Dð Ðà�H‰H�M‰MÐUÜ%*¬8×+;Ò+;¸JÓ+G×+NÑ+NÓ+PÓ%Qð ò Sò? IâYùs    ‚F5˜F/™!F5ºF2»E5F5Æ2F5c              ƒ   óú  #   • U R                  SU5      I S h  v•N nU(       Ga  U R                  SU5      I S h  v•N n[        R                  " US   S9n[        R                  R                  US   5      nUS   n[        R                  R                  [        US   S   5      S	5      n[        R                  R                  [        US   S
   5      S	5      nU R                  R                  S[        U5      [        U5      [        U5      [        U5      S9  U(       a  UR                  /n	O$U R                  SUR                  5      I S h  v•N n	U	(       Ga¹  U	 GH±  nU R                  SXS   5      I S h  v•N n
U
 GH‰  n[        R                  R                  US   5      US'   [        R                  " US   S5      US'   US   (       a  [        US   5      OS US'   [        R                  " US   S9US'   US   (       a,  [        R                  R                  [        US   5      S	5      OS US'   US   (       a*  S[        R                   " US   5      R#                  5       -   OS US'   US   (       a*  S[        R                   " US   5      R#                  5       -   OS US'   US   nSSSS.nUR%                  US 5      US'   U R                  R                  S[        [        R                  " US95      ['        U5      S9  GMŒ     GM´     g U R                  R                  S5        g U R                  R)                  S [        R                   " U5      R#                  5       S!9  g  GNW GN8 GN% GNý7f)"Nrà   rá   rã   rä   râ   rê   rå   ræ   rç   r   z‚Found member with address {member_adr} (member level {member_level}, balances: {member_balance_eth} ETH, {member_balance_xbr} XBR))ró   rò   Úmember_balance_ethÚmember_balance_xbrz xbr.network.get_markets_by_actorzxbr.network.get_actor_in_marketrª   Ú	timestampré   Újoinedr©   ÚsecurityÚ	signatureÚ0xÚtidr·   ÚPROVIDERÚCONSUMERÚPROVIDER_CONSUMER)r   r`   rð   z1Actor is joined to market {market_oid}:

{actor}
)rÆ   rª   z&Member is not yet actor in any market!rô   rõ   )rö   r»   r¼   rf   rg   rh   r÷   r    rO   rP   r*   r+   rI   rø   rù   rj   rû   rü   rF   r   rú   )rZ   rÆ   Ú	actor_adrrý   rª   Ú	actor_oidÚactor_levelÚactor_balance_ethÚactor_balance_xbrÚmarket_oidsÚresultr·   ÚACTOR_TYPE_TO_STRs                r\   r¾   ÚClient._do_get_actorg  s  é € ØŸ)™)Ð$;¸YÓG×Gˆ	ßØŸ)™)Ð$FÈ	ÓR×RˆEÜŸ	š	¨¨e©Ñ5ˆIÜŸ	™	×3Ñ3°E¸)Ñ4DÓEˆIØ ™.ˆKÜ $§	¡	× 1Ñ 1´.ÀÀyÑAQÐRWÑAXÓ2YÐ[bÓ cÐÜ $§	¡	× 1Ñ 1´.ÀÀyÑAQÐRWÑAXÓ2YÐ[bÓ cÐØ�H‰H�M‰Mð UÜ 	›?Ü" ;Ó/Ü#(Ð):Ó#;Ü#(Ð):Ó#;ð ñ =ö Ø)×/Ñ/Ð0‘à$(§I¡IÐ.PÐR[×RaÑRaÓ$b×b�çÜ"-�Jà#'§9¡9Ð-NÐPZÐbkÑ\lÓ#m×m�FÜ!'˜Ü)-¯©×)DÑ)DÀUÈ7Á^Ó)T˜˜g™Ü-/¯]ª]¸5ÀÑ;MÈtÓ-T˜˜kÑ*ØMRÐS[Ï_¬.¸¸x¹Ô*IÐbf˜˜h™Ü*.¯)ª)¸%À¹/Ñ*J˜˜h™ØmrØ&÷n(¬D¯I©I×,=Ñ,=¼nÈUÐS]ÑM^Ó>_ÐahÔ,iØ-1ð ˜jÑ)àejØ'÷f)¨T´H×4DÒ4DÀUÈ;ÑEWÓ4X×4_Ñ4_Ó4aÒ-aØ.2ð ˜kÑ*àY^Ð_d×Ye t¬h×.>Ò.>¸uÀU¹|Ó.L×.SÑ.SÓ.UÒ'UÐko˜˜e™à%*¨<Ñ%8˜
ð  *à)à2ñ-Ð)ð /@×.CÑ.CÀJÐPTÓ.U˜˜lÑ+àŸ™Ÿ™Ð&\Ü15´d·i²iÀjÑ6QÓ1RÔZaÐbgÓZhð &ô jô- "(ò #.ð8 —‘—‘ÐFÕGà�H‰H�M‰MÐUÜ%-×%5Ò%5°iÓ%@×%GÑ%GÓ%Ið ò Kòg HâRò  cò
 nùsE   ‚M;˜M/™!M;ºM2»DM;ÅM5Å*M;Å;M8Å<G4M;Í2M;Í5M;Í8M;c              #   óà  #   • [         R                  " U R                  R                  5       5      nSnU R                  nU R
                  nUR                  R                  5       nU R                  S5      v •n	U R                  S5      v •n
U	S   n[         R                  " U	S   SS  5      nU
S   S   nU	S	   S
   nUUUUS.n[        R                  " U5      n[        R                  " 5       nUR                  U5        [        R                  " [        R                  " UR!                  5       S5      5      n[#        X{UX�UU5      n U R                  SXXEUX½XÎUUU5      v •n[1        U5      [2        :X  d   eSU;   a  [1        US   5      [4        :X  a	  US   S:”  d   eSU;   a	  US   S:X  d   eSU;   a(  [1        US   5      [6        :X  a  [9        US   5      S:X  d   e[:        R<                  " US   S9nU R&                  R?                  SUS9  U$ ! [$         a?  nU R&                  R)                  SUS9  U R+                  S[-        U5      5         S nAg S nAf[.         a  nUeS nAff = f7f)NÚmetamaskúxbr.network.get_configúxbr.network.get_statusÚverifying_chain_idÚverifying_contract_adrr`   ÚblockÚnumberÚeulaÚhash)Úmember_usernameÚmember_emailÚclient_pubkeyÚwallet_typeúsha2-256zxbr.network.onboard_memberúApplicationError: {error}©rŒ   z
wamp.errorr  r   ÚactionÚonboard_memberrÃ   é   rä   z9On-boarding member - verification "{vaction_oid}" created©rÃ   ) rj   rk   rN   rA   rV   rU   ri   rö   Úcbor2ÚdumpsÚhashlibÚsha256ÚupdateÚ	multihashÚto_b58_stringÚencodeÚdigestr#   r   rO   rŒ   r“   Ústrr‘   rH   ÚdictÚintrI   rJ   r»   r¼   rP   )rZ   r   r!  Úmember_passwordr"  r#  Ú
wallet_keyÚ
wallet_rawÚ
wallet_adrr[   ÚstatusÚverifyingChainÚverifyingContractÚ
registeredr  Úprofile_objÚprofile_dataÚhr?   r  r  r”   rÃ   s                          r\   r¹   ÚClient._do_onboard_memberž  sp  é € ä ×(Ò(¨¯©×)=Ñ)=Ó)?Ó@ˆð !ˆð —\‘\ˆ
Ø×%Ñ%ˆ
ð  ×*Ñ*×?Ñ?ÓAˆ
à—y‘yÐ!9Ó:Ñ:ˆØ—y‘yÐ!9Ó:Ñ:ˆàÐ 4Ñ5ˆÜ$×,Ò,¨VÐ4LÑ-MÈaÈbÐ-QÓRÐà˜G‘_ XÑ.ˆ
Ø�f‰~˜fÑ%ˆð  /Ø(Ø*Ø&ñ	
ˆô —{’{ ;Ó/ˆÜ�NŠNÓˆØ	�‰�Ôô ×)Ò)¬)×*:Ò*:¸1¿8¹8»:ÀzÓ*RÓSˆä/°
ÐL]Ø0:ÈÈgóWˆ	ð
	ØŸ9™9Ð%AØ%4ÀMÐ`jØ%3ÐARÐZaÐcoØ%.ó0ñ 0ˆFô �F‹|œtÓ#Ð#Ð#Ø˜fÓ$¬¨f°[Ñ.AÓ)BÄcÓ)IÈfÐU`ÑNaÐdeÓNeÐeÐeØ˜6Ó! f¨XÑ&6Ð:JÓ&JÐJÐJØ Ó&¬4°°}Ñ0EÓ+FÌ%Ó+OÔTWÐX^Ð_lÑXmÓTnÐrtÓTtÐtÐtä—i’i f¨]Ñ&;Ñ<ˆØ�‰�‰ÐQÐ_jˆÑkàˆøô  ó 	Ø�H‰H�N‰NÐ6¸aˆNÑ@Ø�J‰J�|¤S¨£VÔ,ÜûÜó 	ØˆGûð	üs=   ‚EI.ÅH Å#B0I.È
I+È5IÉI.ÉI+É$I&É&I+É+I.c              #   óŽ  #   • U R                   R                  SXS9   U R                  SUR                  U5      v •n[        U5      [        :X  d   eSU;   a(  [        US   5      [        :X  a  [        US   5      S:X  d   eSU;   a  [        US   5      [        :X  a	  US   S	:”  d   eUS   nU R                   R                  S
[        [        R                  " US95      [        S[        R                  " US   5      R!                  5       -   5      S9  U$ ! [         a!  nU R                   R                  SUS9  UeS nAff = f7f)NzPVerifying member using vaction_oid={vaction_oid}, vaction_code={vaction_code} ..©rÃ   rÄ   z!xbr.network.verify_onboard_memberr%  r&  rÅ   r)  rè   r   zUSUCCESS! New XBR Member onboarded: member_oid={member_oid}, transaction={transaction}rä   r  Útransaction)rÅ   rE  )rO   rP   rö   rI   r   rŒ   rH   r5  rJ   r6  r*   r»   r¼   r+   rj   rû   rü   )rZ   rÃ   rÄ   r  r”   rÅ   s         r\   rº   Ú Client._do_onboard_member_verifyß  sF  é € ð 	�‰�‰ÐhØ"-ð 	ñ 	Jð	ØŸ9™9Ð%HÈ+×J[ÑJ[Ð]iÓjÑjˆFô
 �F‹|œtÓ#Ð#Ð#Ø˜vÓ%¬$¨v°lÑ/CÓ*DÌÓ*MÔRUÐV\Ð]iÑVjÓRkÐoqÓRqÐqÐqØ˜FÓ"¤t¨F°9Ñ,=Ó'>Ä#Ó'EÈ&ÐQZÑJ[Ð^_ÓJ_Ð_Ð_à˜LÑ)ˆ
Ø�‰�‰ÐmÜ!%¤d§i¢i°jÑ&AÓ!BÜ"'¨¬x×/?Ò/?ÀÀ}Ñ@UÓ/V×/]Ñ/]Ó/_Ñ(_Ó"`ð 	ñ 	bð ˆøô  ó 	Ø�H‰H�N‰NÐ6¸aˆNÑ@ØˆGûð	üs(   ‚EžD ½CEÄ
EÄ!D=Ä=EÅEc
              ƒ   ó’  #   • U R                  SUR                  5      I S h  v•N n
U
S   nU R                  S5      I S h  v•N nUS   n[        R                  " US   SS  5      n[        R                  " US   S   SS  5      nU R                  S	5      I S h  v•N nUS
   S   nU R                  S5      I S h  v•N n[	        U5      nU R
                  R                  SUS9  U R                  SUR                  5      I S h  v•N n[	        U5      nU R
                  R                  SUS9  SR                  [        R                  " SS5      5      R                  S5      n[        R                  " 5       nUR                  U5        [        [        R                   " [        R                  " UR#                  5       S5      5      5      nUUUUUR                  UR                  S.n[$        R&                  " U5      n[        R                  " 5       nUR                  U5        [        R                   " [        R                  " UR#                  5       S5      5      n[)        U R*                  XÞUUUR                  UUUX7X‰5      n[-        U5      n[-        U5      n[-        U	5      n	UUUS.nU R                  SUR                  UR                  UUXïUUUX7X‰UU5      I S h  v•N nU R
                  R                  S[/        U5      S9  [1        U5      [2        :X  d   eSU;   a  [1        US   5      [4        :X  a	  US   S:”  d   eSU;   a	  US   S:X  d   eSU;   a(  [1        US   5      [        :X  a  [	        US   5      S :X  d   e[6        R8                  " US   S!9nU R
                  R                  S"US#9  g  GN” GNy GN# GN GN¿ Nå7f)$Núxbr.network.get_memberrâ   r  r  r  r`   Ú	contractsÚxbrtokenr  r  r  úxbr.network.find_marketsz)Total markets before: {cnt_market_before})Úcnt_market_beforeú xbr.network.get_markets_by_ownerz.Market for owner: {cnt_market_by_owner_before}©Úcnt_market_by_owner_beforez&these are my market terms (randint={})r   iè  Úutf8r$  )Úchain_idÚblock_numberÚcontract_adrró   rÅ   rÆ   )r²   r³   r´   zxbr.network.create_marketzLSUCCESS: Create market request submitted: 
{createmarket_request_submitted}
)Úcreatemarket_request_submittedr  r'  Úcreate_marketrÃ   r)  rä   z8SUCCESS: New Market verification "{vaction_oid}" createdr*  )rö   rI   rj   rk   rJ   rO   rP   rb   ÚrandomÚrandintr2  r-  r.  r/  r4  r0  r1  r3  r+  r,  r$   rU   r   r   rH   r5  r6  r»   r¼   )rZ   rÅ   rÆ   r«   r²   r³   r´   rµ   r¶   r±   rþ   ró   r[   r<  r=  Úcoin_adrr;  rR  ÚresrL  rO  Ú
terms_datarA  Ú
terms_hashÚmeta_objÚ	meta_dataÚ	meta_hashr  Ú
attributesrT  rÃ   s                                  r\   r¿   ÚClient._do_create_marketõ  sß  é € à ŸI™IÐ&>À
×@PÑ@PÓQ×QˆØ  Ñ+ˆ
à—y‘yÐ!9Ó:×:ˆàÐ 4Ñ5ˆÜ$×,Ò,¨VÐ4LÑ-MÈaÈbÐ-QÓRÐä×#Ò# F¨;Ñ$7¸
Ñ$CÀAÀBÐ$GÓHˆà—y‘yÐ!9Ó:×:ˆØ˜g‘ xÑ0ˆð —I‘IÐ8Ó9×9ˆÜ ›HÐØ�‰�‰ÐAÐUfˆÑgà—I‘IÐ@À*×BRÑBRÓS×SˆÜ%(¨£XÐ"Ø�‰�‰ÐFØ1Kð 	ñ 	Mð >×DÑDÄVÇ^Â^ÐTUÐW[ÓE\Ó]×dÑdÐekÓlˆ
Ü�NŠNÓˆØ	�‰�ÔÜœ×0Ò0´×1AÒ1AÀ!Ç(Á(Ã*ÈjÓ1YÓZÓ[ˆ
ð
 'Ø(Ø-Ø$Ø$×*Ñ*Ø$×*Ñ*ñ
ˆô —K’K Ó)ˆ	Ü�NŠNÓˆØ	�‰�ÔÜ×+Ò+¬I×,<Ò,<¸Q¿X¹X»ZÈÓ,TÓUˆ	ô .¨d×.>Ñ.>ÀÐcmØ.:¸J×<LÑ<LÈhÐXbÐdmØ.9ÐN_ómˆ	ô
 )Ð):Ó;ÐÜ(Ð):Ó;ÐÜ! *Ó-ˆ
ð ØØ ñ
ˆ
ð 04¯y©yÐ9TÐV`×VfÑVfØ9C×9IÑ9IÈ>Ð[gØ9JÐV`ÐbkÐmvØ9DÐYjØ9BÀJó	0P÷ *PÐ&ð 	�‰�‰ÐfÜ5<Ð=[Ó5\ð 	ñ 	^ô Ð2Ó3´tÓ;Ð;Ð;ØÐ<Ó<ÄØ*¨;Ñ7óB9Ü<?óB@ØDbÐcnÑDoÐrsÓDsð	tð tàÐ9Ó9Ð>\Øñ?Ø(ó?)ð 	)ð )àÐ >Ó>Ä4Ø*¨=Ñ9óD;Ü>CóDDÜHKØ*¨=Ñ9óI;Ø>@óIAð	Að Aô —i’iÐ&DÀ]Ñ&SÑTˆØ�‰�‰ÐPÐ^iˆÒjòq Rò ;ò ;ò :ò Tñf*Pùsm   ‚ O¢N6£OÁ N9ÁAOÂN<Â OÂ:N?Â;AOÄOÄGOËOË COÎ9OÎ<OÎ?OÏOÏOc              ƒ   óf  #   • U R                   R                  SX#S9  U R                  SUR                  U5      I S h  v•N nU R                   R                  S[	        U5      S9  [        U5      [        :X  d   eSU;   a(  [        US   5      [        :X  a  [        US   5      S:X  d   eSU;   a  [        US   5      [        :X  a	  US   S	:”  d   eUS   nU R                   R                  S
[        R                  " US9[	        U5      S9  U R                  S5      I S h  v•N nU R                   R                  S[        U5      S9  [        U5      nU R                   R                  SUS9  XV;   d2   SR                  [        R                  " US9[        U5      5      5       eU R                  SUR                  5      I S h  v•N nU R                   R                  S[        U5      S9  [        U5      nU R                   R                  SUS9  XV;   d2   SR                  [        R                  " US9[        U5      5      5       eU HY  nU R                   R                  SUS9  U R                  SUSS9I S h  v•N n	U R                   R                  S[	        U	5      S9  M[     g  GNj GNŠ Né N47f)NzWVerifying create market using vaction_oid={vaction_oid}, vaction_code={vaction_code} ..rD  z xbr.network.verify_create_marketzBCreate market request verified: 
{create_market_request_verified}
)Úcreate_market_request_verifiedrÆ   r)  rè   r   zJSUCCESS! New XBR market created: market_oid={market_oid}, result=
{result}rä   )rÆ   r  rK  z3SUCCESS - find_markets: found {cnt_markets} markets)Úcnt_marketsz'Total markets after: {cnt_market_after})Úcnt_market_afterzFexpected to find market ID {}, but not found in {} returned market IDsrM  z;SUCCESS - get_markets_by_owner: found {cnt_markets} marketsz-Market for owner: {cnt_market_by_owner_after}rN  z2xbr.network.get_market(market_oid={market_oid}) ..©rÆ   úxbr.network.get_marketT)Úinclude_attributesz*SUCCESS: got market information

{market}
)r©   )rO   rP   rö   rI   r   rH   r5  rJ   r6  r»   r¼   rb   )
rZ   rÅ   rÃ   rÄ   rb  rÆ   r  rd  Úcnt_market_by_owner_afterr©   s
             r\   rÀ   ÚClient._do_create_market_verifyQ  sÐ  é € Ø�‰�‰ÐoØ"-ð 	ñ 	Jð 04¯y©yÐ9[Ð]h×]nÑ]nØ9Eó0G÷ *GÐ&ð 	�‰�‰Ð\Ü5<Ð=[Ó5\ð 	ñ 	^ô Ð2Ó3´tÓ;Ð;Ð;ØÐ=Ó=Ä$Ø*¨<Ñ8óC:Ü=BóCCÜGJØ*¨<Ñ8óH:Ø=?óH@ð	@ð @ð Ð:Ó:¼tØ*¨9Ñ5ó@7Ü:=ó@>ØB`ÐajÑBkÐnoÓBoð	pð pð 4°LÑAˆ
Ø�‰�‰ÐcÜ!%§¢°Ñ!<ÄWÐMkÓElð 	ñ 	nð !ŸI™IÐ&@ÓA×AˆØ�‰�‰ÐKÔY\Ð]hÓYiˆÑjô ˜{Ó+ÐØ�‰�‰Ð?ÐRbˆÑcØÓ(ð 	;Ð*r×*yÑ*yÜ�IŠI˜JÑ'¬¨[Ó)9ó+;ó 	;Ð(ð !ŸI™IÐ&HÈ*×JZÑJZÓ[×[ˆØ�‰�‰ÐSÔadÐepÓaqˆÑrô %(¨Ó$4Ð!Ø�‰�‰ÐEØ1Jð 	ñ 	LàÓ(ð 	;Ð*r×*yÑ*yÜ�IŠI˜JÑ'¬¨[Ó)9ó+;ó 	;Ð(ó &ˆJØ�H‰H�M‰MÐNÐ[eˆMÑfØŸ9™9Ð%=¸zÐ^b˜9Ðc×cˆFØ�H‰H�M‰MÐIÔRYÐZ`ÓRaˆMÓbò &òI*Gò" Bñ \ñ dùsH   ‚;J1½J'¾C"J1Ä J*Ä!B"J1ÇJ-ÇB6J1É:J/É;-J1Ê*J1Ê-J1Ê/J1c           	   ƒ   ó€  #   • U R                  SUR                  5      I S h  v•N nUS   nU R                  SUR                  5      I S h  v•N nU(       Ga<  US   U:X  a  U R                  R                  S5        OCU R                  R                  S[	        [
        R                  R                  US   5      5      S9  [        R                  " US   S	9US'   [
        R                  R                  US   5      US'   [
        R                  R                  US
   5      US
'   [
        R                  R                  US   5      US'   [        R                  " US   S5      US'   U R                  R                  S[	        U5      [        U5      S9  g U R                  R                  S[	        U5      S9  g  GN– GNp7f)NrH  râ   rf  Úownerz You are market owner (operator)!zMarked is owned by {owner})rk  r©   rä   ÚmakerÚcoinr  ré   z+Market {market_oid} information:

{market}
)rÆ   r©   zNo market {market_oid} found!re  )rö   rI   rO   rP   r*   rf   rg   rh   r»   r¼   rø   rù   r   rú   )rZ   rÅ   rÆ   rþ   ró   r©   s         r\   r½   ÚClient._do_get_market~  se  é € Ø ŸI™IÐ&>À
×@PÑ@PÓQ×QˆØ  Ñ+ˆ
Ø—y‘yÐ!9¸:×;KÑ;KÓL×LˆßØ�g‰ *Ó,Ø—‘—‘Ð@ÕAà—‘—‘Ð:Ä$ÄtÇyÁy×GbÑGbÐciÐjqÑcrÓGsÓBt�Ñuä#Ÿyšy¨v°hÑ/?Ñ@ˆF�8ÑÜ"Ÿi™i×9Ñ9¸&À¹/ÓJˆF�7‰OÜ"Ÿi™i×9Ñ9¸&À¹/ÓJˆF�7‰OÜ!ŸY™Y×8Ñ8¸À¹ÓHˆF�6‰NÜ"$§-¢-°°{Ñ0CÀTÓ"JˆF�;Ñà�H‰H�M‰MÐJÜ%)¨*Ó%5¼gÀf»oð ò Oð �H‰H�M‰MÐ9ÄdÈ:ÓFVˆMÒWò% RâLùs"   ‚ F>¢F8£(F>ÁF;ÁE-F>Æ;F>c              ƒ   ó�  #   • U[         R                  [         R                  [         R                  4;   d   eU R	                  SUR
                  5      I S h  v•N nUS   nU R	                  S5      I S h  v•N nUS   n[        R                  " US   SS  5      nU R	                  S5      I S h  v•N n	U	S   S	   n
0 n[        R                  " U5      n[        R                  " 5       nUR                  U5        [        R                  " [        R                  " UR!                  5       S
5      5      n[#        U R$                  XxUX¢R
                  X>5      nU R	                  SUR
                  UR
                  XzUX>XÏ5
      I S h  v•N n[&        R(                  " US   S9nU R*                  R-                  SUS9  g  GNd GNI GN N?7f)NrH  râ   r  r  r  r`   r  r  r  r$  zxbr.network.join_marketrÃ   rä   zESUCCESS! XBR market join request submitted: vaction_oid={vaction_oid}r*  )r&   r  r
  r  rö   rI   rj   rk   r+  r,  r-  r.  r/  r0  r1  r2  r3  r%   rU   r»   r¼   rO   rP   )rZ   rÅ   rÆ   r·   rþ   ró   r[   r<  r=  r;  rR  r\  r]  rA  r^  r  Úrequest_submittedrÃ   s                     r\   rÁ   ÚClient._do_join_market“  s—  é € àœi×0Ñ0´)×2DÑ2DÄi×FaÑFaÐbÓbÐbÐbà ŸI™IÐ&>À
×@PÑ@PÓQ×QˆØ  Ñ+ˆ
à—y‘yÐ!9Ó:×:ˆØÐ 4Ñ5ˆÜ$×,Ò,¨VÐ4LÑ-MÈaÈbÐ-QÓRÐà—y‘yÐ!9Ó:×:ˆØ˜g‘ xÑ0ˆð
ˆä—K’K Ó)ˆ	Ü�NŠNÓˆØ	�‰�ÔÜ×+Ò+¬I×,<Ò,<¸Q¿X¹X»ZÈÓ,TÓUˆ	ä+¨D×,<Ñ,<¸nÐakØ,8×:JÑ:JÈJócˆ	ð #'§)¡)Ð,EÀz×GWÑGWÐYc×YiÑYiØ,:ÐJ[Ø,6À9ó#Y÷ YÐô —i’iÐ&7¸Ñ&FÑGˆØ�‰�‰Ð]ÐkvˆÒwò3 Rò ;ò ;ñYùsI   ‚AGÁF;ÁGÁ5F>Á69GÂ/GÂ0CGÆGÆ7GÆ>GÇGÇGc              ƒ   ó¤   #   • U R                  SUR                  U5      I S h  v•N nUS   nUS   nU R                  R                  SXUS9  g  N*7f)Nzxbr.network.verify_join_marketrÆ   r·   zeSUCCESS! XBR market joined: member_oid={member_oid}, market_oid={market_oid}, actor_type={actor_type})rÅ   rÆ   r·   )rö   rI   rO   rP   )rZ   rÅ   rÃ   rÄ   Úrequest_verifiedrÆ   r·   s          r\   rÂ   ÚClient._do_join_market_verify²  s[   é € Ø!%§¡Ð+KÈ[×M^ÑM^Ð`lÓ!m×mÐØ% lÑ3ˆ
Ø% lÑ3ˆ
Ø�‰�‰ØsØ!ÀZð 	ò 	Qñ nùs   ‚!A£A¤+Ac           	   ƒ   ó$  #   • U R                  SU5      I S h  v•N nU R                  R                  S[        U5      S9  U(       a©  U R                  R	                  S[        [        US   5      S-  5      S9  U R                  SUS	   5      I S h  v•N nU R                  R                  S
[        U5      S9  U R                  R	                  S[        [        US   5      S-  5      US   S9  g U R                  R	                  S5        g  Nó N|7f)Nz*xbr.marketmaker.get_active_payment_channelú	{channel}©rÏ   z5Active buyer (payment) channel found: {amount} amountrÐ   ì     ÈNÎZo©rÐ   z+xbr.marketmaker.get_payment_channel_balancerÝ   ú	{balance}úECurrent off-chain amount remaining: {remaining} [sequence {sequence}]Ú	remainingÚseq©r|  Úsequencez(No active buyer (payment) channel found!©rö   rO   Údebugr   rP   r6  r    ©rZ   rÆ   Údelegate_adrrÏ   rå   s        r\   r×   Ú%Client._do_get_active_payment_channelº  sò   é € ØŸ	™	Ð"NÐP\Ó]×]ˆØ�‰�‰�{¬G°GÓ,<ˆÑ=ÞØ�H‰H�M‰MÐQÜ!$¤^°G¸HÑ4EÓ%FÈÑ%QÓ!Rð ñ Tà ŸI™IÐ&SÐU\Ð]jÑUkÓl×lˆGØ�H‰H�N‰N˜;´¸Ó0@ˆNÑAØ�H‰H�M‰MÐaÜ$'¬°w¸{Ñ7KÓ(LÈxÑ(WÓ$XÐcjÐkpÑcqð ò sð �H‰H�M‰MÐDÕEñ ^ñ
 mùó#   ‚D˜D™A8DÂDÂA;DÄDc           	   ƒ   ó$  #   • U R                  SU5      I S h  v•N nU R                  R                  S[        U5      S9  U(       a©  U R                  R	                  S[        [        US   5      S-  5      S9  U R                  SUS	   5      I S h  v•N nU R                  R                  S
[        U5      S9  U R                  R	                  S[        [        US   5      S-  5      US   S9  g U R                  R	                  S5        g  Nó N|7f)Nz)xbr.marketmaker.get_active_paying_channelrv  rw  z5Active seller (paying) channel found: {amount} amountrÐ   rx  ry  z*xbr.marketmaker.get_paying_channel_balancerÝ   rz  r{  r|  r}  r~  z(No active seller (paying) channel found!r€  r‚  s        r\   rÙ   Ú$Client._do_get_active_paying_channelÇ  sñ   é € ØŸ	™	Ð"MÈ|Ó\×\ˆØ�‰�‰�{¬G°GÓ,<ˆÑ=ÞØ�H‰H�M‰MÐQÜ!$¤^°G¸HÑ4EÓ%FÈÑ%QÓ!Rð ñ Tà ŸI™IÐ&RÐT[Ð\iÑTjÓk×kˆGØ�H‰H�N‰N˜;´¸Ó0@ˆNÑAØ�H‰H�M‰MÐaÜ$'¬°w¸{Ñ7KÓ(LÈxÑ(WÓ$XÐcjÐkpÑcqð ò sð �H‰H�M‰MÐDÕEñ ]ñ
 lùr…  c              ƒ   óh  #   • U R                   nU R                  R                  R                  5       nU R	                  S5      I S h  v•N n[
        R                  " US   SS  5      n	[
        R                  " US   SS  5      n
US   n[
        R                  " US   SS  5      nU R	                  S5      I S h  v•N nUS   S	   nUS
:”  a¤  U[        R                  :X  a  Un[        R                  R                  nO8U[        R                  :X  a  U	n[        R                  R                  nO S5       e [        U R                  UUU5      I S h  v•N nU R                  R!                  SUS9  ['        XkXÃXáR(                  UR(                  XtXšU5      nS nU R	                  SXqR(                  UR(                  X¾XÃXIU
[+        U5      UU5      I S h  v•N nU R                  R!                  S[-        U5      S9  g  GN³ GND N®! ["         a!  nU R                  R%                  5         UeS nAff = f N^7f)Nzxbr.marketmaker.get_configr«   r`   rk  r  r  zxbr.marketmaker.get_statusr  r  r   r§   z*transaction submitted, txn_hash={txn_hash})Útxn_hashzxbr.marketmaker.open_channelz3Channel open request submitted:

{channel_request}
)Úchannel_request)rU   rV   rA   ri   rö   rj   rk   r'   rÖ   r   Ú
xbrchannelrâ   rØ   r   Ú_send_AllowancerO   rP   r‘   r’   r!   rI   r   r   )rZ   rÆ   rÝ   rÎ   rÍ   rÐ   Ú
member_keyró   r[   r«   Ú	recipientr  r  r;  Úcurrent_block_numberÚfrom_adrÚto_adrr‰  r”   r  r_  rŠ  s                         r\   rÛ   ÚClient._do_open_channelÔ  s  é € Ø×%Ñ%ˆ
Ø—\‘\×,Ñ,×AÑAÓCˆ
à—y‘yÐ!=Ó>×>ˆÜ×&Ò& v¨mÑ'<¸Q¸RÐ'@ÓAˆÜ×$Ò$ V¨G¡_°Q°RÐ%8Ó9ˆ	Ø#Ð$8Ñ9ÐÜ!)×!1Ò!1°&Ð9QÑ2RÐSTÐSUÐ2VÓ!WÐà—y‘yÐ!=Ó>×>ˆØ% g™¨xÑ8Ðà�A‹:Øœ{×2Ñ2Ó2Ø%�ÜŸ™×/Ñ/‘Ø¤×!3Ñ!3Ó3Ø&�ÜŸ™×/Ñ/‘à6Ð6Ó6�uðÜ!.¨t×/CÑ/CÀXÈvÐW]Ó!^×^�Ø—‘—‘ÐJÐU]�Ñ^ô -¨ZÐMcØ-A×CSÑCSÐU`×UfÑUfØ-7À;Ð[aócˆ	ð ˆ
Ø $§	¡	Ð*HÈ*×VfÑVfØ*5×*;Ñ*;Ð=OØ*@ÐPXÐgpÜ*6°vÓ*>À	È:ó!W÷ Wˆð
 	�‰�‰ÐNÜ&-¨oÓ&>ð 	ò 	@òU ?ò ?ñ( _øäó Ø—‘× Ñ Ô"Ø�ûðúñWùsi   ‚AH2ÁG:ÁA1H2Â9G=Â:A;H2Ä6H ÅH ÅH Å0A!H2ÇH0Ç)H2Ç=H2È H È
H-ÈH(È(H-È-H2c           	      óX  • U R                   nU R                  R                  SS5      nU R                  nU R                  R                  R                  USS9nU R                  R                  S[        U R                  5      US9  [        R                  R                  R                  X#5      R                  UUUU R                  US.5      nU R                  R                  S[        U R                  5      US	9  U R                  R                  R                   R#                  XpR$                  S
9nU R                  R                  S[        U R                  5      ['        [(        R*                  " UR,                  5      R/                  5       5      S9  U R                  R                  R1                  UR,                  5      n	[3        U	5      n	U R                  R                  S[        U R                  5      ['        [(        R*                  " U	5      R/                  5       5      S9  U	$ )NÚ10ÚgweiÚpending)Úblock_identifierz9{func}::[1/4] - Ethereum transaction nonce: nonce={nonce})ÚfuncÚnonce)ÚfromÚgasÚgasPriceÚchainIdr™  zQ{func}::[2/4] - Ethereum transaction created: raw_transaction=
{raw_transaction}
)r˜  Úraw_transaction)Úprivate_keyzF{func}::[3/4] - Ethereum transaction signed: signed_txn=
{signed_txn}
)r˜  Ú
signed_txnzE{func}::[4/4] - Ethereum transaction submitted: txn_hash=0x{txn_hash})r˜  r‰  )rC   rÔ   ÚtoWeirW   ræ   ÚgetTransactionCountrO   rP   r)   rŒ  r   rJ  Ú	functionsÚapproveÚbuildTransactionrD   ÚaccountÚsign_transactionrU   r+   rj   rû   ÚrawTransactionrü   ÚsendRawTransactionrI   )
rZ   r�  r‘  rÐ   r›  rœ  r™  rž  r   r‰  s
             r\   rŒ  ÚClient._send_Allowance  sÂ  € à×ÑˆØ—8‘8—>‘> $¨Ó/ˆà—<‘<ˆð —‘—‘×0Ñ0°ÈIÐ0ÐVˆØ�‰�‰ÐQÜ! $×"6Ñ"6Ó7Ø!ð 	ñ 	#ô
 Ÿ,™,×0Ñ0×8Ñ8¸ÓH×YÑYØØØ Ø—~‘~Øñ[
ó ˆð 	�‰�‰ØaÜ˜×,Ñ,Ó-Ø+ð 	ñ 	-ð —X‘X—\‘\×)Ñ)×:Ñ:¸?×XhÑXhÐ:Ðiˆ
Ø�‰�‰ØVÜ˜×,Ñ,Ó-ÜœX×-Ò-¨j×.GÑ.GÓH×OÑOÓQÓRð 	ñ 	Tð —8‘8—<‘<×2Ñ2°:×3LÑ3LÓMˆÜ˜“?ˆØ�‰�‰ØSÜ˜×,Ñ,Ó-Üœ8×+Ò+¨HÓ5×<Ñ<Ó>Ó?ð 	ñ 	Að
 ˆr^   )
rD   rK   rC   rW   rX   rV   rU   rN   rY   rÔ   )N)NNNr   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rv   rB   rT   rx   rƒ   r•   rœ   rŸ   r�   r�   r¸   r¾   r   r¹   rº   r¿   rÀ   r½   rÁ   rÂ   r×   rÙ   rÛ   rŒ  Ú__static_attributes__© r^   r\   r;   r;   [   sµ   † ð #€Oôò>Tò")ò fòò."òòC7òJ,3ò\!SòF5Kðn ó>ó ð>ð@ ñó ðð* mqØUVôZkòx+còZXò*xò>QòFòFò/@õb+r^   r;   c                  óÀ  • [        S5        [        SR                  [        S[        -   5      5      5        [        S5        [        S5        [        SR                  [	        [
        5      [        5      5        [        SR                  [	        [        5      [        5      5        [        SR                  [	        [        5      [        5      5        [        SR                  [	        [        5      [        5      5        [        S	R                  [	        [        5      [        5      5        [        S
R                  [	        [        5      [         5      5        [        S5        g )NÚ z XBR CLI {}
Úvz   Contract addresses:
z"      XBRToken   : {} [source: {}]z"      XBRNetwork : {} [source: {}]z"      XBRDomain  : {} [source: {}]z"      XBRCatalog : {} [source: {}]z"      XBRMarket  : {} [source: {}]z"      XBRChannel : {} [source: {}])Úprintrb   r+   r   r*   r   r   r	   r   r
   r   r   r   r   r   r   r   r°  r^   r\   Úprint_versionrµ  3  së   € Ü	ˆ"„IÜ	ˆ/×
 Ñ
 ¤ s¬[Ñ'8Ó!9Ó
:Ô;Ü	ˆ"„IÜ	Ð
$Ô%Ü	Ð
.×
5Ñ
5´dÔ;OÓ6PÔRjÓ
kÔlÜ	Ð
.×
5Ñ
5´dÔ;QÓ6RÔTnÓ
oÔpÜ	Ð
.×
5Ñ
5´dÔ;PÓ6QÔSlÓ
mÔnÜ	Ð
.×
5Ñ
5´dÔ;QÓ6RÔTnÓ
oÔpÜ	Ð
.×
5Ñ
5´dÔ;PÓ6QÔSlÓ
mÔnÜ	Ð
.×
5Ñ
5´dÔ;QÓ6RÔTnÓ
oÔpÜ	ˆ"…Ir^   c                  óP  • [         R                  " 5       n U R                  S[        [        SSSS9  U R                  SSSS	S
9  U R                  SS[        SS9  U R                  SSS[        SS9  U R                  SSS[        SS9  SS/nU R                  SSS[        SR                  U5      S9  U R                  SS[        S S!S"9  U R                  S#S$[        S%S&S"9  U R                  S'S([        S)S9  U R                  S*S+[        S,S9  U R                  S-S.[        S S/S"9  U R                  S0S1[        S S2S"9  U R                  S3S4[        S S5S"9  U R                  S6S7[        S S8S"9  U R                  S9S:[        S S;S"9  U R                  S<S=[        S S>S"9  U R                  S?S@[        S SAS"9  U R                  SBSC[        S SAS"9  U R                  SDSE[        S SAS"9  U R                  SFSG[        S SHS"9  U R                  SISJ[        [        [        R                  [        R                  [        R                  /5      S SKSL9  U R                  SMSN[        S SOS"9  U R                  SPSQ[        S SRS"9  U R                  SSST[        S SUS"9  U R                  SVSW[        [        [        R                  [        R                  /5      S SXSL9  U R                  SYSZ[        S S[S"9  U R                  S\S][        S S^S"9  U R                  5       nUR                   S_:X  a  [#        5         g UR                   S`:X  Ga  [%        UR&                  Sa9nUR)                  UR*                  5        [-        UR.                  5      [-        UR0                  5      -   [-        UR2                  5      -   n[5        SbR                  [7        U5      [7        [-        UR.                  5      5      [7        [-        UR0                  5      5      [7        [-        UR2                  5      5      5      5        [5        5         UR9                  5         g UR                   Sc:X  aÞ  [%        UR&                  Sa9nUR)                  UR*                  5        [5        UR;                  SdSe95        [<        R>                  " SfSg5      n[A        UShSiSj9n[C        USdSdSk9n[D        RF                  RI                  URJ                  5      (       d   [D        RL                  " URJ                  5        URO                  XrRJ                  S5        g UR                   b  UR                   S:X  aC  [5        SlR                  SmRQ                  [        5      5      5        [R        RT                  " Sn5        [W        URX                  URZ                  UR\                  UR^                  So9nUR`                  (       a  [b        Rd                  " SpSq9  O[b        Rd                  " SrSq9  [b        Rf                  " 5       n	U	Ri                  Ss[k        St[l        -   5      Su9  U	Ri                  Sv[7        URn                  5      [7        URF                  5      Sw9  0 SxU_SUR                   _S.UR\                  _S1UR^                  _S(URp                  _S+URr                  _S4URt                  (       a   [v        Rx                  " URt                  5      OS _S7URz                  _S:UR|                  _S=UR~                  _SyUR€                  =(       d    Sn_SzUR‚                  =(       d    Sn_SEUR„                  =(       d    Sn_SGUR†                  (       a#  [ˆ        RŠ                  " UR†                  S{S  5      OS _SJURŒ                  _SNURŽ                  _SQUR�                  (       a   [v        Rx                  " UR�                  5      OS _UR’                  (       a   [v        Rx                  " UR’                  5      OS UR”                  UR–                  (       a#  [ˆ        RŠ                  " UR–                  S{S  5      OS UR˜                  =(       d    SnS|.En
[›        URœ                  URž                  U
[¡        5       /S}9n U	Ri                  S~[7        URœ                  5      URž                  (       a  S[7        URž                  5      -   S€-   OSAS�9  UR£                  [¤        SiS‚9  [R        RT                  " Sn5        g ! [¦         a+  n[5        U5        [R        RT                  " Sƒ5         S nAg S nAff = f)„Nr‹   ÚnoopÚ?zCommand to run)rH   ÚchoicesÚconstÚnargsÚhelpz-dz--debugÚ
store_truezEnable debug output.)r'  r¼  z-oz--outputzCode output folder)rH   r¼  z-sz--schemaÚschemaz.FlatBuffers binary schema file to read (.bfbs))ÚdestrH   r¼  z-bz--basemoduleÚ
basemodulezRender to this base moduleÚpythonÚjsonz-lz
--languageÚlanguagez"Generated code language, one of {}z--urlÚurlzwss://planet.xbr.network/wsz8The router URL (default: "wss://planet.xbr.network/ws").)r¿  rH   Údefaultr¼  z--realmrs   rn   z*The realm to join (default: "xbrnetwork").z--ethkeyrS   z5Private Ethereum key (32 bytes as HEX encoded string)z--cskeyrG   zKPrivate WAMP-cryptosign authentication key (32 bytes as HEX encoded string)z
--usernamer£   z)For on-boarding, the new member username.z--emailr¤   z.For on-boarding, the new member email address.z--marketr©   z*For creating new markets, the market UUID.z--market_titler¬   z+For creating new markets, the market title.z--market_labelr­   z+For creating new markets, the market label.z--market_homepager®   z.For creating new markets, the market homepage.z--provider_securityrµ   r²  z--consumer_securityr¶   z--market_feer±   z--marketmakerr«   z3For creating new markets, the market maker address.z--actor_typer·   zDActor type: PROVIDER = 1, CONSUMER = 2, PROVIDER_CONSUMER (both) = 3)r¿  rH   r¹  rÅ  r¼  z--vcoder¦   z4For verifications of actions, the verification UUID.z	--vactionr¥   zRFor verifications of actions (on-board, create-market, ..), the verification code.z	--channelrÏ   z+For creating new channel, the channel UUID.z--channel_typerÎ   z6Channel type: Seller (PAYING) = 1, Buyer (PAYMENT) = 2z
--delegaterÍ   z/For creating new channel, the delegate address.z--amountrÐ   zzAmount to open the channel with. In tokens of the market coin type, used as means of payment in the market of the channel.r,   r8   )rÀ  zOok, loaded {} types ({} structs and tables, {} enums and {} service interfaces)r9   T)rd   Úautobahnzxbr/templateszutf-8F)ÚencodingÚfollowlinks)ÚloaderÚtrim_blocksÚlstrip_blocksz!no command given. select from: {}z, r   )Údefault_urlÚdefault_realmÚdefault_usernameÚdefault_emailr�  )rê   rP   zXBR CLI {version}r³  )r,   z$Profile {profile} loaded from {path})r?   Úpathr?   r¯   r°   r`   )rÏ   rÎ   rÍ   rÐ   )rÄ  rs   rE   Úserializersz Connecting to "{url}" {realm} ..z
at realm "Ú")rÄ  rs   )Úauto_reconnectr   )TÚargparseÚArgumentParserÚadd_argumentr4  Ú	_COMMANDSrb   r6  Úsortedr&   r  r
  r  r'   rØ   rÖ   Ú
parse_argsr‹   rµ  r   rÀ  Úloadr¾  rJ   ÚobjsÚenumsÚservicesr´  r+   Úprint_summaryÚsummaryÚpkg_resourcesÚresource_filenamer   r   rQ   rÐ  ÚisdirÚoutputÚmkdirÚrenderrw   ÚsysÚexitr(   rÄ  rs   r£   r¤   r�  r�   Ústart_loggingÚmake_loggerrP   r*   r   ÚnamerS   rG   r©   r»   r¼   r¬   r­   r®   rµ   r¶   r±   r«   rj   rk   r·   r¦   r¥   rÏ   rÎ   rÍ   rÐ   r   Únetwork_urlÚnetwork_realmr   Úrunr;   r‘   )ÚparserÚ
_LANGUAGESÚargsÚrepoÚtotal_countÚ	templatesrÉ  Úenvr?   rO   rE   r™   r”   s                r\   Ú_mainrõ  A  s	  € Ü×$Ò$Ó&€Fà
×Ñ˜	Ü Ü )Ø$Ø!Ø-ð ñ /ð ×Ñ˜Ø!Ø+Ø3ð ñ 5ð
 ×Ñ˜Ø"Ü Ø1ð ñ 3ð
 ×Ñ˜Ø"Ø%Ü ØMð	 ñ Oð ×Ñ˜Ø&Ø)Ü Ø9ð	 ñ ;ð ˜FÐ#€JØ
×Ñ˜Ø$Ø'Ü ØA×HÑHÈÓTð	 ñ Vð ×Ñ˜Ø"Ü Ø =ØWð	 ñ Yð ×Ñ˜	Ø$Ü Ø ,ØIð	 ñ Kð ×Ñ˜
Ø%Ü ØTð ñ Vð
 ×Ñ˜	Ø$Ü Øjð ñ lð
 ×Ñ˜Ø'Ü Ø $ØHð	 ñ Jð ×Ñ˜	Ø$Ü Ø $ØMð	 ñ Oð ×Ñ˜
Ø%Ü Ø $ØIð	 ñ Kð ×ÑÐ(Ø+Ü Ø $ØJð	 ñ Lð ×ÑÐ(Ø+Ü Ø $ØJð	 ñ Lð ×ÑÐ+Ø.Ü Ø $ØMð	 ñ Oð ×ÑÐ-Ø0Ü Ø $Øð	 ñ !ð ×ÑÐ-Ø0Ü Ø $Øð	 ñ !ð ×Ñ˜Ø)Ü Ø $Øð	 ñ !ð ×Ñ˜Ø*Ü Ø $ØRð	 ñ Tð ×Ñ˜Ø)Ü Ü &¬	×(:Ñ(:¼I×<NÑ<NÔPY×PkÑPkÐ'lÓ mØ $Øcð ñ eð ×Ñ˜	Ø$Ü Ø $ØSð	 ñ Uð ×Ñ˜Ø&Ü Ø $Øqð	 ñ sð ×Ñ˜Ø&Ü Ø $ØJð	 ñ Lð ×ÑÐ(Ø+Ü Ü &¬×(:Ñ(:¼K×<OÑ<OÐ'PÓ QØ $ØUð ñ Wð ×Ñ˜Ø'Ü Ø $ØNð	 ñ Pð ×Ñ˜
Ø%Ü Ø $ð Zð	 ñ [ð ×ÑÓ€Dà‡|�|�yÓ Ü�ð 
�‰Ð*Ô	*Ü¨¯©Ñ8ˆØ�	‰	�$—+‘+Ôä˜$Ÿ)™)“n¤s¨4¯:©:£Ñ6¼¸T¿]¹]Ó9KÑKˆÜÐ_×fÑfÜ�+ÓÜ”#�d—i‘i“.Ó!Ü”#�d—j‘j“/Ó"Ü”#�d—m‘mÓ$Ó%ó	'ô 	(ô
 	Œà×ÑÕð 
�‰Ð)Ó	)ô ¨¯©Ñ8ˆØ�	‰	�$—+‘+Ôô 	ˆd�l‰l ˆlÐ%Ô&ô "×3Ò3°JÀÓPˆ	ô " )°gÈ5ÑQˆÜ °TÈÑNˆô �w‰w�}‰}˜TŸ[™[×)Ñ)Ü�HŠH�T—[‘[Ô!ð 	�‰�CŸ™ hÕ/ð �<‰<Ñ 4§<¡<°6Ó#9ÜÐ5×<Ñ<¸T¿Y¹YÄyÓ=QÓRÔSÜ�HŠH�QŒKô )°T·X±XÈTÏZÉZØ:>¿-¹-ÐW[×WaÑWañcˆð �:�:Ü×Ò gÓ.ä×Ò fÒ-ä×ÒÓ!ˆà�‰Ð$¬d°3¼Ñ3DÓ.EˆÑFØ�‰Ð7ÄÀwÇ|Á|ÓATÔ[`Ðah×amÑamÓ[nˆÑoð
à�wð
ð
 �t—|‘|ð
ð ˜Ÿ™ð
ð �T—Z‘Zð
ð �g—n‘nð
ð �W—]‘]ð
ð °··”d—i’i §¡Ô,Àð
ð ˜D×-Ñ-ð
ð ˜D×-Ñ-ð
ð ˜t×3Ñ3ð
ð  '¨×(>Ñ(>×(CÀ!ð!
ð" '¨×(>Ñ(>×(CÀ!ð#
ð$ ˜$Ÿ/™/×.¨Qð%
ð& ÀT×EU×EUœ8×+Ò+¨D×,<Ñ,<¸Q¸RÐ,@ÔAÐ[_ð'
ð( ˜$Ÿ/™/ð)
ð* �T—Z‘Zð+
ð, °$·,·,”t—y’y §¡Ô.ÀDð-
ð. 37·,·,”t—y’y §¡Ô.ÀDØ ×-Ñ-Ø?C¿}¿}œ×(Ò(¨¯©°q°rÐ):Ô;ÐRVØ—k‘k×& Qò5
ˆô8 # w×':Ñ':À'×BWÑBWÐ_dÜ0>Ó0@Ð/AñCˆð		Ø�H‰HÐ7Ü˜w×2Ñ2Ó3ØQX×Qf×Qf˜L¬5°×1FÑ1FÓ+GÑGÈ#ÒMÐlnð ñ qð �J‰J”v¨eˆJÑ4ô
 �HŠH�Q�Køô	 ó 	Ü�!ŒHÜ�HŠH�Q�K‰Kûð	ús   á5A$c0 ã0
d%ã:!d ä d%Ú__main__)OrQ   ræ  rà  Újinja2r   r   rÆ  r   r   ÚHAS_XBRr´  rç  Úautobahn.xbr._abir   r	   r
   r   r   r   r   r   r   r   r   r   Úautobahn.xbrr   r»   rj   rÔ  rV  Úpprintr   rc   rf   r-  r0  r+  Únumpyrø   r�   Úuse_twistedÚtwisted.internetr   Útwisted.internet.deferr   Útwisted.internet.threadsr   Útwisted.internet.errorr   Úautobahn.twisted.wampr   r   Úautobahn.wamp.serializerr   Úautobahn.wampr   Úautobahn.wamp.exceptionr   r   r    r!   r"   r#   r$   r%   r&   r'   Úautobahn.xbr._configr(   Úautobahn.utilr)   r*   r+   r×  r;   rµ  rõ  r«  r°  r^   r\   Ú<module>r     sñ   ðó6 
Û 
Û ç 0å Ý  à
‡{‡{Ù	Ð
@ÔAÙ	Ð
7Ô8Ø‡H‚HˆQ„K÷J÷ J÷V÷ Võ 'ã Û Û Û Ý ã Û Û Û Û ã ã à × Ò Ô å $Ý 2Ý 2Ý 4ç GÝ 3Ý $Ý 4ç XÓ Xß hÑ hß /å 7ß -Ñ -ò2€	ôUÐô UòpòMð` ˆzÓÙ	…Gð r^   