+
    jHàj�<  ã                  óT  € R t ^ RIHt ^ RIt^ RIHt ^ RIHtHt ^ RI	t	^ RI
t
^ RIHt ^ RIt^ RIHt Rt^tRtR	t^tR
tR!tR t ! R R]4      t ! R R]4      tR tR tR t ! R R]4      t ! R R]P@                  4      t!R t" ! R R4      t#RRRRRR/R R llt$]R"R  l4       t%R# )#zFTransport-only RPC client. Closing a viewer never stops its authority.)ÚannotationsN)Údeque)ÚasynccontextmanagerÚsuppress)ÚPath)ÚCANONICAL_GATEWAY_PROTOCOLzhermes-gateway-ticket.zˆ--api-key on resume must be the key this session was launched with (a session launched without --api-key keeps its profile credentials).i”  i @  c                ó’   € V P                   P                  RR4      P                  RR4      R,           pV\        \        V,           .3# )a  ``(url, subprotocols)`` for dialing the owner's canonical WebSocket with a session ticket.

The owner accepts exactly one ticket subprotocol beside ``GATEWAY_WS_PROTOCOL`` and echoes the
latter; callers check ``ws.subprotocol == GATEWAY_WS_PROTOCOL`` after the upgrade.zhttps:zwss:zhttp:zws:z/api/ws)Ú
api_originÚreplaceÚGATEWAY_WS_PROTOCOLÚGATEWAY_WS_TICKET_PREFIX)ÚendpointÚticketÚurls   && Ú>/home/ubuntu/.hermes/hermes-agent/hermes_cli/gateway_client.pyÚgateway_ws_targetr   %   sF   € ð
 ×
Ñ
×
%Ñ
% h°Ó
7×
?Ñ
?ÀÈÓ
OÐR[Õ
[€CØÔ$Ô&>ÀÕ&GÐHÐHÐHó    c                  ó   € ] tR t^.tRtR# )ÚGatewayClientError© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   r   r   r   r   .   s   † Ûr   r   c                  ó0   a € ] tR t^2tRtRV 3R lltRtV ;t# )ÚGatewayRPCErrora  A received owner refusal, distinct from an ambiguous transport failure.

``str(exc)`` is the bounded reason code; ``code`` is the frame's numeric JSON-RPC code (``None``
when absent or not an int) and ``data`` its bounded, scalar-only ``error.data`` mapping.c                	óT   <€ \         SV `  V4       W n        T;'       g    / V n        R # ©N)ÚsuperÚ__init__ÚcodeÚdata)ÚselfÚreasonr!   r"   Ú	__class__s   &&&&€r   r    ÚGatewayRPCError.__init__8   s"   ø€ Ü‰Ñ˜Ô ØŒ	Ø—J�J˜BˆŽ	r   )r!   r"   ©NN©r   r   r   r   Ú__doc__r    r   Ú__classcell__©r%   s   @r   r   r   2   s   ø† ñ`÷
õ r   r   c                ó¢   € \        V \        4      '       d9   V P                  R R4      P                  4       '       d   \	        V 4      ^P8:  d   V # R# )Ú_Ú N)Ú
isinstanceÚstrr
   ÚisalnumÚlen©Úvalues   &r   Ú_bounded_reasonr5   >   sB   € Ü˜u¤c×*Ò*¨u¯}©}¸SÀ"Ó/E×/MÑ/M×/OÒ/OÔTWÐX]ÓT^ÐbdÔTdˆ5ÐnÐjnÐnr   c                óþ  a€ R o\        V \        4      '       g   / # / pV P                  4        FÊ  w  r#\        V4      ^8¼  g'   \        V\        4      '       d   \        V4      ^@8”  d   K=  S! V4      '       d   W1V&   KQ  \        V\
        4      '       g   Ki  \        V4      ^8:  g   K{  \        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       g   K½  \        V4      W&   KÌ  	  V# )z¯At most 16 short keys whose values are bool/int/None, short strings or short lists of them;
anything else (nested objects, raw remote diagnostics) is dropped, never forwarded.c                ó¢   € V R J ;'       gE    \        V \        \        34      ;'       g'    \        V \        4      ;'       d    \	        V 4      ^È8*  # r   )r/   ÚboolÚintr0   r2   r3   s   &r   ÚscalarÚ#_bounded_error_data.<locals>.scalarE   sD   € Ø˜ˆ}×pÐp¤
¨5´4¼°+Ó >×pÐpÄ:ÈeÔUXÓCY×CoÐCoÔ^aÐbgÓ^hÐloÑ^oÐpr   c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5ir   r   )Ú.0Úitemr:   s   & €r   Ú	<genexpr>Ú&_bounded_error_data.<locals>.<genexpr>O   s   øé € ÐAaÑ[`ÐSWÁ&ÈÇ,À,Ó[`ùs   ƒFT)r/   ÚdictÚitemsr2   r0   ÚlistÚall)r"   ÚoutÚkeyr4   r:   s   &   @r   Ú_bounded_error_datarG   B   s²   ø€ òqä�dœD×!Ò!Øˆ	Ø
€CØ—j‘j–l‰
ˆÜˆs‹8�rŒ>¤¨C´×!5Ò!5¼¸S»ÀB¼ÙÙ�%�=Š=Ø�‹HÜ˜œt×$Ô$¬¨U«°rÖ)9¿c»cÔAaÑ[`ÓAa¿c¿cºcÔAaÑ[`ÓAa×>aÔ>aÜ˜E“{ˆC‹Hñ #ð €Jr   c                ó˜  € \        V \        4      '       d   T M/ p \        V P                  R4      4      pV P                  R4      p\	        V P                  RR4      4      ;'       g    \	        VP                  R4      4      p\        T;'       g    R\        V\        4      '       d   \        V\        4      '       g   W!4      # RV4      # )a   The ``GatewayRPCError`` for one received ``error`` member: only bounded reason codes, never
raw remote diagnostics. A free-text message (``unknown method: x``) falls back to the bounded
``data.reason`` the owner sends beside it, then to ``request_failed``.r"   r!   ÚmessageÚrequest_failedr$   N)r/   rA   rG   Úgetr5   r   r9   r8   )Úerrorr"   r!   r$   s   &   r   Ú	rpc_errorrM   T   s°   € ô   ¤t×,Ò,‰E°"€EÜ˜uŸy™y¨Ó0Ó1€DØ�9‰9�VÓ€DÜ˜UŸY™Y yÐ2BÓCÓD×kÐkÌÐX\×X`ÑX`ÐaiÓXjÓHk€FÜ˜6×5Ð5Ð%5Ü#-¨d´C×#8Ò#8ÄÈDÔRV×AWÒAW˜4óið iØ]aÐcgóið ir   c                  ó,   a € ] tR t^`tRtV 3R ltRtV ;t# )ÚGatewayUnavailableErrorz·No ready owner to dial: ``state`` is ``ensure_gateway_runtime``'s verdict (``draining`` while an
update holds the install, ``starting`` past the deadline, ...). Nothing was submitted.c                	ó2   <€ \         SV `  V4       W n        R # r   )r   r    Ústate)r#   rI   rQ   r%   s   &&&€r   r    Ú GatewayUnavailableError.__init__d   s   ø€ Ü‰Ñ˜Ô!ØŽ
r   )rQ   r(   r+   s   @r   rO   rO   `   s   ø† ñ^÷ó r   rO   c                  óB   a € ] tR t^itRtV 3R ltV 3R ltRR ltRtV ;t	# )Ú
EventQueuez¿The client's bounded event queue plus an ordered overflow behind it: each ``get`` refills the
queue from the overflow, so items arrive in read order and ``qsize``/``full`` see only the queue.c                	ó†   <€ \         SV `  V4       \        4       V n        ^ V n        \
        P                  ! 4       V n        R# )é    N)r   r    r   ÚoverflowÚoverflow_bytesÚasyncioÚEventÚmoved)r#   Úmaxsizer%   s   &&€r   r    ÚEventQueue.__init__m   s.   ø€ Ü‰Ñ˜Ô!Ü›ˆŒØˆÔÜ—]’]“_ˆŽ
r   c                	ó  <€ \         SV `  4       pV P                  '       dE   V P                  P                  4       w  r#V ;P                  V,          un        \         SV `  V4       V P                  P                  4        V# r   )r   Ú_getrW   ÚpopleftrX   Ú_putr[   Úset)r#   r>   ÚsizeÚheldr%   s   &   €r   r_   ÚEventQueue._gets   s[   ø€ Ü‰w‰|‹~ˆØ�=�=ˆ=ØŸ™×.Ñ.Ó0‰JˆDØ×Ò 4Õ'ÕÜ‰G‰L˜ÔØ�
‰
�‰ÔØˆr   c                óò   € V P                   '       g    V P                  V4       R# V P                   P	                  W!34       V ;P
                  V,          un        R#   \        P                   d     LNi ; i)z?Queue *item* behind everything already read, never dropping it.N)rW   Ú
put_nowaitrY   Ú	QueueFullÚappendrX   )r#   r>   rc   s   &&&r   ÚholdÚEventQueue.hold|   s`   € à�}�}ˆ}ðØ—‘ Ô%Ùð 	�‰×Ñ˜d˜\Ô*Ø×Ò˜tÕ#×øô ×$Ñ$ô Ùðús   ”A ÁA6Á5A6)r[   rW   rX   )rV   )
r   r   r   r   r)   r    r_   rj   r   r*   r+   s   @r   rT   rT   i   s   ø† ñiõ%õ÷	$ò 	$r   rT   c                óz   € \        V \        4      '       d   V P                  V4       R# V P                  V4       R# )z[Queue a local item (ACP's post-ack recovery) behind every frame read so far; never dropped.N)r/   rT   rj   rg   )Úeventsr>   s   &&r   Ú
put_behindrn   ˆ   s)   € ä�&œ*×%Ò%Ø�‰�DÖà×Ñ˜$Ör   c                  óH   € ] tR t^�tR tR tR tR tR tR t	RR/R	 lt
R
tR# )ÚGatewayClientc                	ó^   € Wn         \        R R7      V n        / V n        ^ V n        RV n        R# )é   )r\   N)Ú	websocketrT   rm   ÚpendingÚsequenceÚreader)r#   rs   s   &&r   r    ÚGatewayClient.__init__‘   s(   € Ø"ŒÜ ¨Ô.ˆŒØˆŒØˆŒØˆŽr   c                ó’  € V P                   pVP                  '       * ;'       g¤    \        VP                  4      \        8  ;'       d€    VP                  \
        8  ;'       de    \        ;QJ d4    R V P                  P                  4        4       F  '       g   K   R# 	  R# ! R V P                  P                  4        4       4      # )z­Keep reading past a full queue: nothing is held, or an awaited answer may sit behind the
held frames (its waiter may be the queue's only consumer) and the overflow has room.c              3  óJ   "  € T F  qP                  4       '       * x € K  	  R # 5ir   )Údone)r=   Úfutures   & r   r?   Ú)GatewayClient._read_on.<locals>.<genexpr>ž   s   é € ÐJÑ4I¨&Ÿ™›×%Ñ%Ó4Iùs   ‚!#TF)	rm   rW   r2   ÚEVENT_OVERFLOW_FRAMESrX   ÚEVENT_OVERFLOW_BYTESÚanyrt   Úvalues)r#   rm   s   & r   Ú_read_onÚGatewayClient._read_on˜   s©   € ð —‘ˆØ—?‘?Ô"÷ Lð LÜ�—‘Ó Ô#8Ñ8÷ Kð K¸V×=RÑ=RÔUiÑ=i÷ Kð Kß“ÑJ°D·L±L×4GÑ4GÔ4IÓJ—”ð	Lâð	LàÑJ°D·L±L×4GÑ4GÔ4IÓJÓJð	Lr   c              ƒ  	ó   "  € V P                   P                  W4       V P                  4       '       d   R # \        P                  ! \
        4      ;_uu_4       GR j  x€L
  V P                  4       '       gS   V P                   P                  P                  4        V P                   P                  P                  4       G R j  x€L
  Kh  R R R 4      GR j  x€L
  R #  L~ L L
  + GR j  x€L 
 '       g   i     R # ; i5ir   )	rm   rj   r�   rY   ÚtimeoutÚEVENT_STALL_TIMEOUTr[   ÚclearÚwait)r#   Úframerc   s   &&&r   Ú_deliverÚGatewayClient._deliver    s•   é € Ø�‰×Ñ˜Ô%Ø�=‰=�?Š?Ùô —?’?Ô#6×7×7Õ7Ø—m‘m—o’oØ—‘×!Ñ!×'Ñ'Ô)Ø—k‘k×'Ñ'×,Ñ,Ó.×.Ò.÷ 8×7Ó7ñ /÷ 8×7×7Ó7üsg   ‚AC>ÁCÁC>Á C!Á7AC!ÃCÃC!Ã	C>ÃCÃC>ÃC!ÃC>Ã!C;	Ã'C*Ã(
C;	Ã3C;	Ã5	C>c              ƒ  	ó`   "  € \         P                  ! V P                  4       4      V n        V # 5ir   )rY   Úcreate_taskÚ_readrv   )r#   s   &r   Ú
__aenter__ÚGatewayClient.__aenter__¬   s"   é € Ü×)Ò)¨$¯*©*«,Ó7ˆŒØˆùs   ‚,.c              ‡  	óê   "  € V P                   P                  4        \        \        P                  4      ;_uu_ 4        V P                   G R j  x€L
  R R R 4       R #  L  + '       g   i     R # ; i5ir   )rv   Úcancelr   rY   ÚCancelledError)r#   Úexcs   &*r   Ú	__aexit__ÚGatewayClient.__aexit__°   sI   é € Ø�‰×ÑÔÜ”g×,Ñ,×-Õ-Ø—+‘+×Ð÷ .Ñ-Ù÷ .×-Ð-üs.   ‚<A3¾AÁAÁAÁ
A3ÁAÁA0	Á*	A3c              ƒ  	óZ  "  € ^ RI Hp  V P                    Rj  x€L
  p\        P                  ! V4      pV P
                  P                  VP                  R4      4      pVed   VP                  4       '       gN   RV9   d$   VP                  \        VR,          4      4       KŽ  VP                  VP                  R/ 4      4       K±  RV9   g   Kº  V P                  V\        V4      4      G Rj  x€L
  Kß   LÚ LDÝM  T\        \        \        3 d     Mi ; i\!        R4      pT P
                  P#                  4        F,  pTP                  4       '       d   K  TP                  T4       K.  	  T P$                  P'                  4       '       d7   T P$                  P(                  '       g   T P$                  P+                  4        T P$                  P-                  T4       R#   \!        R4      pT P
                  P#                  4        F,  pTP                  4       '       d   K  TP                  T4       K.  	  T P$                  P'                  4       '       d7   T P$                  P(                  '       g   T P$                  P+                  4        T P$                  P-                  T4       i ; i5i)rV   )ÚConnectionClosedNÚidrL   ÚresultÚmethodz–Gateway disconnected; turn outcome is unknown. Resume the printed session ID to check whether it completed or was interrupted; do not resend the work.)Úwebsockets.exceptionsr—   rs   ÚjsonÚloadsrt   rK   rz   Úset_exceptionrM   Ú
set_resultr‰   r2   ÚOSErrorÚ
ValueErrorÚTimeoutErrorr   r€   rm   ÚfullrW   Ú
get_nowaitrj   )r#   r—   Úrawrˆ   r{   rL   s   &     r   r�   ÚGatewayClient._readµ   sð  é € Ý:ð	$Ø!Ÿ^š^÷ 	9ð 	9�cÜŸ
š
 3›�ØŸ™×)Ñ)¨%¯)©)°D«/Ó:�ØÒ%¨f¯k©k¯mªmØ %Ô'Ø×,Ñ,¬Y°u¸Wµ~Ó-FÖGà×)Ñ)¨%¯)©)°H¸bÓ*AÖBØ Ö&ØŸ-™-¨¬s°3«xÓ8×8Ò8ñ	9ñ 9ñ ,øð !¤'¬:´|ÐDô 	Ùð	úô 'ð (zó {ˆEàŸ,™,×-Ñ-Ö/�Ø—{‘{—}”}Ø×(Ñ(¨Ö/ñ 0ð
 �{‰{×Ñ×!Ò!¨$¯+©+×*>×*>Ð*>Ø—‘×&Ñ&Ô(Ø�K‰K×Ñ˜UÖ#øô 'ð (zó {ˆEàŸ,™,×-Ñ-Ö/�Ø—{‘{—}”}Ø×(Ñ(¨Ö/ñ 0ð
 �{‰{×Ñ×!Ò!¨$¯+©+×*>×*>Ð*>Ø—‘×&Ñ&Ô(Ø�K‰K×Ñ˜UÕ#üsž   ‚J+ŠC; –C9šC5›C9žAC; Á:AC; ÃC; Ã.C7Ã/C; Ã5C9Ã7C; Ã9C; Ã:G  Ã;DÄG  ÄDÄG  Ä;J+Å4J+ÆJ+Æ)7J+Ç <J(È!4J(ÉJ(É26J(Ê(J+Ú_timeoutNc             ‹  óx  "  € V ;P                   ^,          un         V P                   p\        P                  ! 4       P                  4       pWPP                  V&   V P
                  P                  P                  4         V P                  P                  \        P                  ! RRRVRVRV/4      4      G Rj  x€L
  Vf   \        MTp\        P                  ! YV\        R4      8X  d   RMT4      G Rj  x€L
 V P                  P                  VR4       #  L\ L"  T P                  P                  TR4       i ; i5i)zúSend one request and await its answer; ``_timeout`` (seconds, never sent on the wire)
overrides ``DEFAULT_RPC_TIMEOUT`` for a verb that legitimately takes longer (``math.inf``: no
deadline; the answer, a hang-up or the caller's cancel ends the wait).Újsonrpcz2.0r˜   rš   ÚparamsNÚinf)ru   rY   Úget_running_loopÚcreate_futurert   rm   r[   rb   rs   Úsendrœ   ÚdumpsÚDEFAULT_RPC_TIMEOUTÚwait_forÚfloatÚpop)r#   rš   r§   rª   Úridr{   Úbudgets   &&$,   r   ÚrpcÚGatewayClient.rpcÐ   sï   é € ð 	�Š˜Õ�Ø�m‰mˆÜ×)Ò)Ó+×9Ñ9Ó;ˆØ"�‰�SÑØ�‰×Ñ×ÑÔð	(Ø—.‘.×%Ñ%¤d§j¢j°)¸UÀDÈ#ÈxÐY_ÐaiÐkqÐ1rÓ&sÓt×tÐtØ,4Ò,<Õ(À(ˆFÜ ×)Ò)¨&ÄEÈ%ÃLÔ:P±$ÐV\Ó]×]à�L‰L×Ñ˜S $Õ'ñ	 uá]øà�L‰L×Ñ˜S $Õ'üsB   ‚A;D:Á>:D Â8DÂ9;D Ã4DÃ5D Ã8D:ÄD ÄD ÄD7Ä7D:)rm   rt   rv   ru   rs   )r   r   r   r   r    r�   r‰   rŽ   r”   r�   r¶   r   r   r   r   rp   rp   �   s2   † òòLò
/òòò
$ð6(¨D÷ (ð (r   rp   ÚpurposeÚinteractiveÚscopeÚsubjectc               ó    € V ^8„  d   QhRRRR/# )é   Úhomer   Úreturnr0   r   )Úformats   "r   Ú__annotate__rÁ   á   s   € ÷ !ñ !˜$ð !Ðadñ !r   c               ó"  a€ ^ RI Hp ^ RIHpHp V! W4      p \
        P                  ! R^R^RRRRVP                  R	VP                  R
V/V'       d   RV/M/ CV'       d   RV/M/ C/4      P                  4       R,           p\        P                  R8X  d   ^ RIHp	 V	! W^4      p
Mï\        P                  ! 4       ^,           pV! V ^4      ;_uu_ 4       pVP!                  V4       \#        4       p
RV
9  d—   V\        P                  ! 4       ,
          pV^ 8:  d   \%        R4      hVP'                  V4       VP)                  R4      pV'       d!   \+        V
4      \+        V4      ,           R8”  d   \%        R4      hV
P-                  V4       K�   RRR4       V! \/        X
4      4      o\0        ;QJ dG    V3R lRVP                  R	VP                  R^/P3                  4        4       F  '       g   K   RM<	  RM8! V3R lRVP                  R	VP                  R^/P3                  4        4       4      '       g5   \5        SP7                  R4      \8        4      '       d   SR,          '       g   \%        R4      hSR,          #   + '       g   i     Lù; i)rV   )Úcontrol_home_for)Úconnect_privateÚ_identify_responseÚprotocolr˜   Úverbzsession-ticketrª   Ú
profile_idÚinstance_idr¸   rº   r»   ó   
Únt)Úquery_runtime_controlzGateway bootstrap timed outrr   i   z"Invalid gateway bootstrap responseNc              3  óP   <"  € T F  w  rSP                  V4      V8g  x € K  	  R # 5ir   )rK   )r=   ÚkÚvÚgrants   &  €r   r?   Ú"_session_ticket.<locals>.<genexpr>þ   s(   øé € ð ñ *¡ ˆ5�9‰9�Q‹<˜1Öó *ùs   ƒ#&Úruntime_protocolTFr   z0Gateway bootstrap identity changed; retry launch)Úhermes_cli.gateway_runtimerÃ   Ú$hermes_cli.gateway_runtime_discoveryrÄ   rÅ   rœ   r¯   rÈ   rÉ   ÚencodeÚosÚnameÚ!gateway.runtime_bootstrap_windowsrÌ   ÚtimeÚ	monotonicÚsendallÚ	bytearrayr   Ú
settimeoutÚrecvr2   ÚextendÚbytesr   rB   r/   rK   r0   )r¾   r   r¸   rº   r»   rÃ   rÄ   rÅ   ÚrequestrÌ   r"   ÚdeadlineÚpeerrµ   ÚchunkrÐ   s   &&$$$          @r   Ú_session_ticketrå   á   s(  ø€ Ý;ßXá˜DÓ+€Dô �jŠj˜* a¨¨q°&Ð:JÈHØ�h×)Ñ)¨=¸(×:NÑ:NÐPYÐ[bðWç$ˆG�UÑ¨"ðWçJQ°9¸gÑ2FÐWYðWð ó ÷ 	‰‹�5õ€Gô 
‡w�w�$„ÝKÙ$ T°AÓ6‰ä—>’>Ó# aÕ'ˆÙ˜T 1×%Ô%¨Ø�L‰L˜Ô!Ü“;ˆDØ˜tÔ#Ø!¤D§N¢NÓ$4Õ4�Ø˜Q”;Ü,Ð-JÓKÐKØ—‘ Ô'ØŸ	™	 $›�ß¤ D£	¬C°«JÕ 6¸Ô >Ü,Ð-QÓRÐRØ—‘˜EÖ"ð $÷ &ñ œu T›{Ó+€Eß
ƒsô Ø�h×)Ñ)¨=¸(×:NÑ:NÐPbÐdeð*ç�eƒgð*ó ‡s‡s‚sô Ø�h×)Ñ)¨=¸(×:NÑ:NÐPbÐdeð*ç�eƒgð*ó ÷ ò ä  §¡¨8Ó!4´c×:Ò:À%ÈÇ/Ä/Ü Ð!SÓTÐTØ��?Ð÷# &×%ús   ÃA:I>Å>I>É>J	c           
    óÂ  "  € ^ RI Hp ^ RIHp ^ RIHpHpHp ^ RIH	p V e   RM-\        P                  P                  RR4      P                  4       pRp	V eA   \        P                  ! \         V! V! 4       4      V VR7      G Rj  x€L
 p
\#        W
4      w  r¹EMDV'       d;   V! V4      pVP$                  R9  g   VP&                  '       g   \)        R	4      hTpEMV! V! 4       4      p\        P                  ! W]R
R7      G Rj  x€L
 pV! V4      '       gŒ   \+        VRR4      pVP,                  R8X  d"   V'       d   \/        RV 2VP0                  4      hV'       d   RV R2MRp\/        RVP0                   RVP,                  ;'       g    R V 2VP0                  4      hVP2                  p \        P                  ! \         WÐ4      G Rj  x€L
 p
\#        W
4      w  r¹ V! W¹^
RRR7      ;_uu_4       GRj  x€L
 pV	'       d!   VP4                  \6        8w  d   \)        R4      h\9        V4      ;_uu_4       GRj  x€L
 pV5x € RRR4      GRj  x€L
  RRR4      GRj  x€L
  R#  ELá ELf L  Lw L5 L"  + GRj  x€L 
 '       g   i     L9; i L0  + GRj  x€L 
 '       g   i     R# ; i  \(         d    h \:        \<        3 d   p\)        R4      ThRp?ii ; i5i)ae  Attach to this home's owner. ``endpoint``: an already-discovered ready owner to dial as-is
(maintenance that must never start a gateway); default ensures one, starting it if needed.
``subject``: mint the ticket for this principal (the caller's authenticated dashboard user)
rather than the socket identity; only a peer the owner already trusts may name one.)Úconnect)Úget_hermes_home)Ú
attachableÚensure_gateway_runtimeÚgateway_profile_home)ÚurlsplitNr.   ÚHERMES_TUI_GATEWAY_URL)r»   z9Invalid explicit gateway WebSocket URL; no local fallbackT)Ú	idle_exitÚdetailÚruntime_exitedzGateway could not start: z (Ú)zGateway z: Ú	not_ready)ÚsubprotocolsÚopen_timeoutÚmax_sizeÚproxyz2Gateway protocol mismatch; update/restart requiredz,Gateway connection failed; no local fallback>   ÚwsÚwssé  € )Úwebsockets.asyncio.clientrç   Úhermes_constantsrè   rÓ   ré   rê   rë   Úurllib.parserì   rÖ   ÚenvironrK   ÚstriprY   Ú	to_threadrå   r   ÚschemeÚhostnamer   ÚgetattrÚreason_coderO   rQ   r   Úsubprotocolr   rp   r    r¢   )r   r»   rç   rè   ré   rê   rë   rì   ÚremoteÚ	protocolsr   r   Úparsedr¾   r™   rï   r÷   Úclientr“   s   &&                 r   Úconnect_gatewayr	    sn  é € õ 2Ý0ßcÑcÝ%àÒ'‰R¬R¯Z©Z¯^©^Ð<TÐVXÓ-Y×-_Ñ-_Ó-a€FØ€IØÒÜ×(Ò(¬Ñ:NÉÓO`Ó:aÐckØ18ô:÷ :ˆä*¨8Ó<‰ˆ‰Yß	Ù˜&Ó!ˆØ�=‰= Ô-°V·_·_°_Ü$Ð%`ÓaÐaØŠñ $¡OÓ$5Ó6ˆô ×(Ò(Ð)?ÐQUÔV×VˆÙ˜&×!Ò!Ü˜V X¨tÓ4ˆFØ×!Ñ!Ð%5Ô5¿&ä-Ð0IÈ&ÈÐ.RÐTZ×T`ÑT`ÓaÐaß'-�r˜&˜ ‘^°2ˆFÜ)¨H°V·\±\°NÀ"ÀV×EWÑEW×EfÐEfÐ[fÐDgÐhnÐgoÐ*pØ*0¯,©,ó8ð 8à—?‘?ˆÜ×(Ò(¬¸$ÓI×IˆÜ*¨8Ó<‰ˆðZñ ˜3ÀRÐRaØ!%÷'÷ 'õ 'Ø*,ß˜RŸ^™^Ô/BÔBÜ(Ð)]Ó^Ð^Ü$ R×(×(Ô(¨FØ“÷ )×(÷	'÷ 'ñ 'ò;:ò Wñ Jñ'÷ )×(×(Ô(ú÷	'÷ '÷ 'ó 'ûô ô ØÜ”\Ð"ô ZÜ Ð!OÓPÐVYÐYûðZüs.  ‚BKÂI&ÂKÂ!*KÃ7KÄI)ÄKÄ%KÄ< KÅ-KÆA KÇI,ÇKÇJ/ Ç6I.Ç7J/ Ç:A JÈ:I0È;JÈ>I4	ÉJÉI2ÉJÉJ/ ÉJÉ J/ É$KÉ)KÉ,KÉ.J/ É0JÉ2JÉ4JÉ:I=É;
JÊJÊJÊJ/ ÊJ,	ÊJÊ
J,	Ê$J,	Ê&J/ Ê*KÊ,J/ Ê/KË
KËKËKËKrù   r'   )&r)   Ú
__future__r   rY   Úcollectionsr   Ú
contextlibr   r   rœ   rÖ   Úpathlibr   rÙ   Úgateway.session_contractr   r   r   r°   ÚRESUME_KEY_MISMATCHÚCOMPRESS_RPC_TIMEOUTr…   r}   r~   r   r¡   r   r   r5   rG   rM   rO   ÚQueuerT   rn   rp   rå   r	  r   r   r   Ú<module>r     sì   ðÙ LÝ "ã Ý ß 4Û Û 	Ý Û õ Wà3Ð ð Ð ð_Ð ð Ð ð Ð ð Ð Ø&Ð òIô	˜ô 	ô	Ð(ô 	òoòò$	iôÐ0ô ô$�—‘ô $ò> ÷N(ñ N(ðb!°]ð !È$ð !ÐX\÷ !ðH ó3Zó ò3Zr   