+
    lHàjýx  ã                  óê  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t^ RIt^ RIt^ RIHtHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHtHtHt ]P:                  ! ]4      t] ! R R) 4       4      t!]PD                  ! R	4      t#R+t$R*t%R,t&R-t'] ! 0 R.m4      t(] ! 0 R/m4      t)](]),          t*R0t+R1t,] ! R
R04      t-R2t.R3t/]-].^ ,          ]/^ ,          0,          t0/ ]1Pe                  ]-R4      C].^ ,          ].^,          ]/^ ,          ]/^,          /Ct3RRRR/t4 ! R R]54      t6 ! R R]74      t8R R lt9R R lt:R R lt;R R lt<R R lt=R R  lt> ! R! R"]?4      t@R# R$ ltAR% R& ltB ! R' R(4      tCR# )4z5Scoped HTTP client for peer hosted-room member turns.)ÚannotationsN)ÚCallableÚMappingÚSequence)Úsuppress)ÚPath)ÚAnyÚNoReturn)ÚGatewayRoomCatalogÚHostedMemberDispatchÚvalidate_room_link_urlc              #  ó\   "  € T F"  p\        \        VR 4      ;sf   K  \        x € K$  	  R # 5i©N)ÚgetattrÚerrnoÚvalue)Ú.0Únames   & ÚF/home/ubuntu/.hermes/hermes-agent/tui_gateway/hosted_room_peer_http.pyÚ	<genexpr>r      s*   é € ð !:Ù^ˆdÜœ  dÓ+Ð+ˆ÷ 
†EÓ^ùs   ‚,ž,z^[a-z][a-z0-9_]{0,63}$Úinvalid_room_grantÚroom_reauthorization_requiredz%peer room authorization needs renewalÚsizez4peer{kind} response exceeded the RoomLink size limitÚtimez5peer{kind} response exceeded the RoomLink time budgetc                  ó   € ] tR t^DtRtRtR# )Ú_PeerResponseTooLargez;A peer response exceeded its endpoint-specific byte budget.© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    r   r   r   D   s   † ÝEr$   r   c                  ó   € ] tR t^HtRtRtR# )Ú_PeerResponseDeadlineExceededzCA peer response exceeded the request's monotonic wall-clock budget.r   Nr   r   r$   r   r&   r&   H   s   † ÝMr$   r&   c               ó$   € V ^8„  d   QhRRRRRR/# )é   Úresponser   Ú	remainingÚfloatÚreturnÚNoner   )Úformats   "r   Ú__annotate__r/   L   s!   € ÷ !ñ !¨3ð !¸5ð !ÀTñ !r$   c           
     óÌ  a€ V .\        4       r2\        ^4       F´  p. pV F§  oSe   \        S4      V9   d   K  VP                  \        S4      4       \	        SRR4      p\        V4      '       d<   \        \        \        4      ;_uu_ 4        V! \        RV4      4       RRR4         R# VP                  V3R lR 4       4       K©  	  TpK¶  	  R#   + '       g   i     L;; i)zDBest-effort urllib socket timeout tightened to the remaining budget.NÚ
settimeoutgü©ñÒMbP?c              3  ó>   <"  € T F  p\        SVR 4      x € K  	  R # 5ir   ©r   )r   Úfieldr   s   & €r   r   Ú/_set_response_socket_timeout.<locals>.<genexpr>Z   s   øé € Ð aÑJ`À¤¨°°t×!<Ð!<ÓJ`ùs   ƒ)ÚfpÚrawÚ_sock)ÚsetÚrangeÚidÚaddr   Úcallabler   ÚOSErrorÚ
ValueErrorÚmaxÚextend)r)   r*   ÚfrontierÚseenÚ_depthÚnext_frontierÚsetterr   s   &&     @r   Ú_set_response_socket_timeoutrG   L   s°   ø€ à�Z¤£ˆdÜ˜–(ˆØˆÛˆEØŠ}¤ 5£	¨TÔ 1ÙØ�H‰H”R˜“YÔÜ˜U L°$Ó7ˆFÜ˜×ÒÜœg¤z×2Õ2Ùœ3˜u iÓ0Ô1÷ 3ãØ× Ñ Ô aÑJ`Ó aÖañ ð !Šó ÷ 3×2ús   ÂC	ÃC#c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r(   r)   r   Ú	max_bytesÚintÚdeadliner+   r,   Úbytesr   )r.   s   "r   r/   r/   ^   s)   € ÷  ñ   Sð  ¸ð  Àuð  ÐQVñ  r$   c          	     ó.  €  \        V P                  P                  R 4      4      pW18”  d   \        h\        V RR4      p\        V4      '       d   TMV P                  p\        4       p\        V4      V8:  dÆ   V\        P                  ! 4       ,
          pV^ 8:  d   \        h\        W4        V! \!        \"        V^,           \        V4      ,
          4      4      pT'       g   \'        T4      # \)        T\&        \        34      '       g   \        R4      hTP+                  T4       \        T4      T8”  g   KÏ  \        h\        h  \        \        \
        3 d    Rp EL8i ; i  \$         d(   p\        P                  ! 4       T8¼  d   \        Thh Rp?ii ; i)zContent-LengthÚread1Nz!peer returned a non-byte responseéÿÿÿÿ)rJ   ÚheadersÚgetÚAttributeErrorÚ	TypeErrorr?   r   r   r=   ÚreadÚ	bytearrayÚlenr   Ú	monotonicr&   rG   ÚminÚ_PEER_RESPONSE_CHUNK_BYTESÚ	ExceptionrL   Ú
isinstancerA   )	r)   rI   rK   ÚdeclaredÚreaderÚbodyr*   ÚchunkÚexcs	   &$$      r   Ú_read_bounded_responsera   ^   sJ  € ðÜ�x×'Ñ'×+Ñ+Ð,<Ó=Ó>ˆð ÔÜ#Ð#Ü�X˜w¨Ó-€FÜ ×'Ò'‰V¨X¯]©]€FÜ‹;€DÜ
ˆd‹)�yÔ
 ØœtŸ~š~Ó/Õ/ˆ	Ø˜Œ>Ü/Ð/Ü$ XÔ9ð	Ùœ3Ô9¸9Àq½=Ì3ÈtË9Õ;TÓUÓVˆE÷
 Ü˜“;ÐÜ˜%¤%¬Ð!3×4Ò4ÜÐ@ÓAÐAØ�‰�EÔÜˆt‹9�yÖ Ü'Ð'Ü
Ðøô3 œI¤zÐ2ô Ø‹ðûô ô 	Ü�~Š~Ó 8Ô+Ü3¸Ð<Øûð	ús)   ‚$E Â--E" ÅEÅEÅ"FÅ-"FÆFc               ó0   € V ^8„  d   QhRRRRRRRRR	RR
R/# )r(   r)   r   rI   rJ   rK   r+   ÚkindÚstrÚflagsr,   r   )r.   s   "r   r/   r/   }   s@   € ÷ 	Zñ 	Z˜ð 	Z¨Cð 	Z¸5ð 	ZÈð 	ZÐVYð 	ZÐ^añ 	Zr$   c               ó$  €  \        WVR7      P                  RR4      #   \         d.   p\        \        R,          P                  TR7      3/ TB ThRp?i\         d0   p\        \        R,          P                  TR7      3RR	/TB ThRp?ii ; i)
zURead a bounded body as text; budget overruns become classified ``PeerRunsHTTPError``.)rI   rK   úutf-8Úreplacer   )rc   Nr   Ú	retryableT)ra   Údecoder   ÚPeerRunsHTTPErrorÚ_BUDGET_MESSAGESr.   r&   )r)   rI   rK   rc   re   r`   s   &$$$, r   Ú
_read_bodyrm   }   s¤   € ðZÜ%Ø°Hô>ß>D¹fÀWÈiÓ>Xð	Yøä ô ^ÜÔ 0°Õ 8× ?Ñ ?ÀTÐ ?Ó JÑTÈeÑTÐZ]Ð]ûÜ(ô ZÜÜ˜VÕ$×+Ñ+°Ð+Ó6ñQØBFðQØJOñQØVYð	ZûðZús&   ‚ ŸBª(AÁBÁBÁ *B
Â
Bc               ó    € V ^8„  d   QhRRRR/# )r(   r`   ÚBaseExceptionr,   Úboolr   )r.   s   "r   r/   r/   ‰   s   € ÷ Nñ N¨-ð N¸Dñ Nr$   c                ó  € T p\        V\        P                  P                  4      '       d   VP                  pK8  \        V\
        P                  4      ;'       g,    \        V\        4      ;'       d    VP                  \        9   # )zAReturn whether no HTTP connection could have carried the request.)
r[   ÚurllibÚerrorÚURLErrorÚreasonÚsocketÚgaierrorr>   r   Ú_NOT_ADMITTED_ERRNOS)r`   ru   s   & r   Ú _is_proven_pre_admission_failurery   ‰   sc   € à€FÜ
�VœVŸ\™\×2Ñ2×
3Ò
3Ø—‘ŠÜ�fœfŸo™oÓ.÷ Nð NÜ�6œ7Ó#×LÐL¨¯©Ô8LÑ(LðNr$   c               ó    € V ^8„  d   QhRRRR/# )r(   Úcoder   r,   ú
str | Noner   )r.   s   "r   r/   r/   ’   s   € ÷ Vñ V�cð V˜jñ Vr$   c                ól   € \        V \        4      '       d   \        P                  V 4      '       d   V # R # r   )r[   rd   Ú_ERROR_CODE_REÚ	fullmatch)r{   s   &r   Ú_valid_coder€   ’   s*   € Ü˜d¤C×(Ò(¬^×-EÑ-EÀd×-KÒ-Kˆ4ÐUÐQUÐUr$   c               ó    € V ^8„  d   QhRRRR/# )r(   Údetailrd   r,   r|   r   )r.   s   "r   r/   r/   –   s   € ÷ ,ñ , ð ,¨ñ ,r$   c                ó(  €  \         P                  ! V 4      p\	        T\
        4      '       g   R# TP                  R4      p\	        T\
        4      '       dŒ   \	        TP                  R4      \        4      '       dg   \        TR,          4      pTR8X  dL   \        TP                  R4      ;'       g    R4      P                  4       p\         F  w  rVYT9   g   K  Tu # 	  T# \        TP                  R4      4      #   \        \        3 d     R# i ; i)zDExtract a machine error code without returning response credentials.Nrs   r{   Úinvalid_room_dispatchÚmessageÚ )ÚjsonÚloadsrS   r?   r[   ÚdictrQ   rd   r€   ÚlowerÚ_LEGACY_DISPATCH_MESSAGE_CODES)r‚   Úpayloadrs   r{   r…   ÚneedleÚ
normalizeds   &      r   Ú_response_error_coder�   –   sà   € ðÜ—*’*˜VÓ$ˆô �gœt×$Ò$ÙØ�K‰K˜Ó €EÜ�%œ×Ò¤:¨e¯i©i¸Ó.?Ä×#EÒ#EÜ˜5 �=Ó)ˆØÐ*Ô*Ü˜%Ÿ)™) IÓ.×4Ð4°"Ó5×;Ñ;Ó=ˆGß&DÑ"�ØÖ$Ø%Ò%ñ 'Eð ˆÜ�w—{‘{ 6Ó*Ó+Ð+øô ”zÐ"ô Úðús   ‚C< Ã<DÄDc            
      óJ   a € ] tR t^ªtRtRRRRRRRRRR/R	 V 3R
 llltRtV ;t# )rk   zControlled peer HTTP failure.ri   FÚ	ambiguousÚnot_admittedÚstatus_codeNÚ
error_codec               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )r(   r…   rd   ri   rp   r‘   r’   r“   z
int | Noner”   r|   r,   r-   r   )r.   s   "r   r/   ÚPeerRunsHTTPError.__annotate__­   sO   € ÷ Pñ PØðPØ*.ðPØCGðPàðPà1;ðPàPZðPð 
ñPr$   c               	ó¢   <€ \         SV `  V4       W#VuV n        V n        V n        WVuV n        V n        VR9   ;'       d
    V\        9   V n        R# )é‘  N¾   r˜   é“  )	ÚsuperÚ__init__ri   r‘   r’   r“   r”   Ú_REAUTHORIZATION_CODESÚneeds_reauthorization)Úselfr…   ri   r‘   r’   r“   r”   Ú	__class__s   &&$$$$$€r   rœ   ÚPeerRunsHTTPError.__init__­   sU   ø€ ô 	‰Ñ˜Ô!Ø<EÐR^Ð9ˆŒ˜œ¨Ô(9Ø,7Ð)ˆÔ˜$œ/à˜:Ñ%×NÐN¨*Ô8NÑ*Nð 	Ö"r$   )r‘   r”   rž   r’   ri   r“   )r   r   r    r!   r"   rœ   r#   Ú__classcell__)r    s   @r   rk   rk   ª   sE   ø† Ù'ðPØ16ðPØJOðPà"ðPà>BðPà]a÷P÷ Pð Pr$   rk   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r(   Úcatalogr
   Úcapability_digestr|   Úexecution_policy_digestr,   zPeerRunsHTTPError | Noner   )r.   s   "r   r/   r/   ¸   s,   € ÷ ñ ØðØ7Aðà'ðà,Dñr$   c               ó´   € W P                   P                  \        3WP                  \        33 F%  w  r4w  rVVf   K  WC8w  g   K  \        VRVRR7      u # 	  R# )z¬Return the fail-closed error when a refreshed catalog drifted from the frozen digests.

Execution policy is checked before capabilities; a ``None`` digest skips its check.
Nrš   T)r“   r”   r’   )Úexecution_policyÚpolicy_digestÚ_EXECUTION_POLICY_CHANGEDÚcatalog_digestÚ_CAPABILITY_CHANGEDrk   )r¤   r¥   r¦   ÚexpectedÚactualr{   r…   s   &$$    r   Údigest_reauthorization_errorr¯   ¸   se   € ð $×%=Ñ%=×%KÑ%KÜ%ð	'ð 
×2Ñ2Ô4GÐHó	.JÑ)ˆ™/˜4ð
 Ô FÖ$6Ü$ W¸#È$Ð]aÔbÒbñ.Jñ r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r(   ÚrecordúMapping[str, Any]Úsuffixrd   r,   r   )r.   s   "r   r/   r/   É   s'   € ÷ _ñ _Ð'ð _°#ð _¸#ñ _r$   c           	     óŒ   € R P                  R\        P                  P                  \	        V R,          4      RR7      .VO54      # )Ú/ú/v1/runsÚrun_idr†   )Úsafe)Újoinrr   ÚparseÚquoterd   )r±   r³   s   &*r   Ú	_run_pathr¼   É   s;   € Ø�8‰8�Z¤§¡×!3Ñ!3´C¸¸xÕ8HÓ4IÐPRÐ!3Ó!SÐ]ÐV\Ñ]Ó^Ð^r$   c            
      ó  € ] tR t^ÍtRtR^RRRRRRR	]P                  /R
 R lltR R ltR R lt	R R lt
R R ltRRRRRRRR/R R llt]R R l4       tRR/R R lltR  R! ltR" R# ltR$ R% lt]R& R' l4       tR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 ltR6 R7 ltR8 R9 ltR: R; ltR< R= ltR> R? ltR@RARBR/RC RD llt R@RRRERRFR/RG RH llt!RI RJ lt"RK RL lt#RM RN lt$]RO RP l4       t%RQt&R# )SÚPeerRunsHTTPClientzBDrive a peer's dedicated group session via scoped async Runs APIs.Útimeout_secondsÚreceipt_db_pathNÚpoll_min_secondsgš™™™™™¹?Úpoll_max_secondsg       @Úclockc               ó8   € V ^8„  d   QhRRRRRRRRRRR	RR
RRR/# )r(   Úbase_urlrd   Úapi_keyr¿   r+   rÀ   zPath | str | NonerÁ   rÂ   rÃ   zCallable[[], float]r,   r-   r   )r.   s   "r   r/   ÚPeerRunsHTTPClient.__annotate__Ð   sU   € ÷ 7ñ 7Øð7Ø),ð7Ø?Dð7à*ð7àEJð7ð  ð7ð /Bð7ð X\ñ7r$   c               	óÂ  € \        V4      w  qn        V'       d   \        V4      ^8  d   \        R4      hWVuV n        V n        V n        \        V4      V n        V'       d   \        V4      MRV n
        V^ 8:  g   We8  d   \        R4      h\        V4      V n        \        V4      V n        / V n        RV n        / V n        / V n        \#        4       V n        RV n        R# )é   z$peer API key is missing or too shortNzpeer polling bounds are invalid)r   Útransport_securityrV   r?   rÅ   rÆ   rÃ   r+   r¿   r   rÀ   rÁ   rÂ   Ú_runsÚ_observation_keyÚ_status_cacheÚ_recovery_backoffr9   Ú_terminal_receiptsÚ_room_scope)rŸ   rÅ   rÆ   r¿   rÀ   rÁ   rÂ   rÃ   s   &$$$$$$$r   rœ   ÚPeerRunsHTTPClient.__init__Ð   sÈ   € ô -CÀ8Ó,LÑ)ˆÔ)ß”s˜7“| bÔ(ÜÐCÓDÐDØ2:ÀUÐ/ˆŒ�t”| T¤ZÜ$ _Ó5ˆÔß8Gœt OÔ4ÈTˆÔØ˜qÔ Ð$4Ô$GÜÐ>Ó?Ð?Ü %Ð&6Ó 7ˆÔÜ %Ð&6Ó 7ˆÔØ<>ˆŒ
Ø8<ˆÔØ8:ˆÔØHJˆÔÜ8;»ˆÔØ26ˆÖr$   c               ó    € V ^8„  d   QhRRRR/# )r(   Údb_pathz
Path | strr,   r-   r   )r.   s   "r   r/   rÇ   å   s   € ÷ $ñ $¨*ð $¸ñ $r$   c                ód   € \        V4      pV P                  RV09  d   \        R4      hW n        R# )z;Attach the gateway-wide durable receipt store idempotently.Nzpeer receipt store changed)r   rÀ   rk   )rŸ   rÓ   Úpaths   && r   Úbind_receipt_storeÚ%PeerRunsHTTPClient.bind_receipt_storeå   s/   € ä�G‹}ˆØ×Ñ¨¨d |Ô3Ü#Ð$@ÓAÐAØ#Ör$   c               ó8   € V ^8„  d   QhRRRRRRRRRRRRR	RR
R/# )r(   Úroom_idrd   Úhome_install_idÚauthority_gateway_idÚauthority_epochrJ   Ú	member_idÚtarget_install_idÚtarget_profiler,   r-   r   )r.   s   "r   r/   rÇ   ì   sL   € ÷ ñ ØðØ03ðØKNðàðà),ðàADðàVYðà^bñr$   c               ó   € \        T;'       g    ^ 4      pWW5VV3 U	u. uF  p	\        T	;'       g    R4      NK  	  p
p	\        V
4      '       g   \        R4      hV^8  d   \        R4      h\	        \        \        V
R,          V.,           V
R,          ,           4      4      pV P                  V8X  d   R# VRuV n        V n        V P                  V P                  V P                  V P                  3 F  pVP                  4        K  	  R# u up	i )z@Fence every in-memory and durable receipt to one room authority.r†   z%peer room receipt scope is incompletez,peer room receipt authority epoch is invalid:Né   N:rá   NNN)rJ   rd   Úallrk   r‰   ÚzipÚ_RECEIPT_SCOPE_FIELDSrÐ   rÌ   rË   rÍ   rÎ   rÏ   Úclear)rŸ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   ÚepochÚvÚnamesÚscopeÚtables   &$$$$$$$     r   Úbind_room_scopeÚ"PeerRunsHTTPClient.bind_room_scopeì   sú   € ô �O×(Ð( qÓ)ˆàÐ&:ÐGXØñ(ó ñ ( !”�Q—W�W˜"–ñ (ˆð ô �5�zŠzÜ#Ð$KÓLÐLØ�1Œ9Ü#Ð$RÓSÐSÜ”SÔ.°°bµ	¸U¸GÕ0CÀeÈBÅiÕ0OÓPÓQˆØ×Ñ˜uÔ$ÙØ27¸Ð/ˆÔ˜$Ô/à—
‘
˜D×.Ñ.°×0FÑ0FÈ×H_ÑH_óaˆEà�K‰KŽMóaùòs
   žD±Dc               ó$   € V ^8„  d   QhRRRRRR/# )r(   Útask_idrd   Úexecution_generationrJ   r,   údict[str, Any] | Noner   )r.   s   "r   r/   rÇ      s'   € ÷ Kñ K ð K¸3ð KÐCXñ Kr$   c                óì   € V P                   P                  W34      pVf   V P                  e   V P                  f   V# ^ RIHp RVRV/pVP                  V P                  / V P                  CVCR7      # )z@Return the in-memory receipt, falling back to the durable store.©Úhosted_roomsrî   rï   ©r±   )rË   rQ   rÀ   rÐ   Úgatewayró   Úremote_run_receipt)rŸ   rî   rï   r±   ró   Úidentitys   &&&   r   Ú_receiptÚPeerRunsHTTPClient._receipt   s�   € à—‘—‘ Ð ?Ó@ˆØÒ ×!5Ñ!5Ò!=À×AQÑAQÒAYØˆMÝ(Ø˜wÐ(>Ð@TÐUˆØ×.Ñ.Ø× Ñ Ð)I¨D×,<Ñ,<Ð)IÀÐ)Ið /ó Kð 	Kr$   c               ó$   € V ^8„  d   QhRRRRRR/# )r(   rî   rd   rï   rJ   r,   r-   r   )r.   s   "r   r/   rÇ   
  s!   € ÷ 'ñ '¨3ð 'Àcð 'Èdñ 'r$   c               óê  € \        T;'       g    R4      \        T;'       g    ^ 4      3pV^ ,          '       d   V^,          ^8  d   \        R4      hV P                  V8X  d   R# V P                  V0,
           F  pV P
                  P                  VR4       K!  	  V P                  P                  V04       W0n        V P                  P                  4        V P                  P                  4        R# )z;Pin history/status reads to one exact logical task attempt.r†   z$peer observation identity is invalidN)rd   rJ   rk   rÌ   rÏ   rË   ÚpopÚintersection_updaterÍ   rå   rÎ   )rŸ   rî   rï   ÚkeyÚterminal_keys   &$$  r   Úbind_observationÚ#PeerRunsHTTPClient.bind_observation
  sÁ   € ä�7—=�=˜bÓ!¤3Ð';×'@Ð'@¸qÓ#AÐBˆØ�1�vŒv˜˜Q� !œÜ#Ð$JÓKÐKØ× Ñ  CÔ'ÙØ ×3Ñ3°s°e×;Ð;ˆLØ�J‰J�N‰N˜<¨Ö.ñ <à×Ñ×3Ñ3°S°EÔ:Ø #ÔØ×Ñ× Ñ Ô"Ø×Ñ×$Ñ$Ö&r$   ÚmethodÚGETr^   rP   Ú
room_grantc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r(   rÕ   rd   r  r^   úMapping[str, Any] | NonerP   zMapping[str, str] | Noner  r|   r,   údict[str, Any]r   )r.   s   "r   r/   rÇ     s<   € ÷  ñ  Øð Ø$'ð Ø7Oð à)ð à>Hð àTbñ r$   c               	óü  € ^ RI Hp \        P                  ! 4       V P                  ,           VR8H  r‡\
        P                  P                  V P                   V 2TVf   RM&\        P                  ! VRR7      P                  R4      RV'       d   RV 2MRV P                   2R	R
RR/T;'       g    / CR7      p	 V! W�P                  R7      ;_uu_ 4       p
\        V
\        VRVR7      pRRR4        \        P.                  ! X4      p\3        T\4        4      '       g   \-        R4      hT#   + '       g   i     LJ; i  \
        P                  P                    d   pT P#                  YÂYR7        Rp?L„Rp?i\
        P                  P$                  \&        \(        3 d:   pT;'       d    \+        T4      p\-        RRT;'       d    T'       * TR7      ThRp?ii ; i  \0         d   p\-        R4      ThRp?ii ; i)é    )Úopen_credentialed_urlÚPOSTN)Ú
separatorsrg   ÚAuthorizationzHermesRoom zBearer zContent-Typezapplication/jsonz
User-AgentzHermes-RoomLink/1.0)r  ÚdatarP   )Útimeoutr†   )rI   rK   rc   r‘   )r  rÕ   rK   z%peer RoomLink endpoint is unreachableT)ri   r‘   r’   zpeer returned non-JSON dataz#peer returned a non-object response)Ú,Ú:)Úhermes_cli.urllib_securityr
  r   rW   r¿   rr   ÚrequestÚRequestrÅ   r‡   ÚdumpsÚencoderÆ   rm   ÚMAX_PEER_RESPONSE_BYTESrs   Ú	HTTPErrorÚ_raise_http_errorrt   ÚTimeoutErrorr>   ry   rk   rˆ   r?   r[   r‰   )rŸ   rÕ   r  r^   rP   r  r
  rK   r‘   r  r)   r7   r`   r’   rŒ   s   &&$$$$         r   Ú_requestÚPeerRunsHTTPClient._request  sÉ  € õ 	EÜ"ŸnšnÓ.°×1EÑ1EÕEÀvÐQWÑGW�)Ü—.‘.×(Ñ(Ø�}‰}ˆo˜d˜VÐ$¨VØš‘¬4¯:ª:°dÀzÔ+R×+YÑ+YÐZaÓ+bàß2<�k * Ñ.ÀGÈDÏLÉLÈ>ÐBZØÐ 2°LÐBWð#ð —=�=˜bð	#ð )ó $ˆð	Ù& w×8LÑ8L×MÕMÐQYÜ ØÔ(?È(ÐY[Ø'ô)�÷ Nð	LÜ—j’j “oˆGô ˜'¤4×(Ò(Ü#Ð$IÓJÐJØˆ÷% N×Mûô �|‰|×%Ñ%ô 	UØ×"Ñ" 3¸DÐ"×TÑTûÜ—‘×%Ñ%¤|´WÐ=ô 	Ø$×NÐNÔ)IÈ#Ó)NˆLÜ#Ø7À4Ø#×8Ð8¨LÔ(8À|ôð ðûð	ûô ô 	LÜ#Ð$AÓBÈÐKûð	Lúsf   Â:D? ÃD,Ã*D? Ã3G Ä,D<	Ä7D? Ä<D? Ä?GÅE6Å6+GÆ"GÆ#$GÇGÇGÇG;Ç*G6Ç6G;c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r(   r`   zurllib.error.HTTPErrorr  rd   rÕ   rK   r+   r,   r	   r   )r.   s   "r   r/   rÇ   ;  s4   € ÷ ñ Ø#ðØ03ðØ;>ðØJOðØT\ñr$   c          	     ó"  € RVR8H  ;'       d    V P                   R8¬  RV P                   RVR8H  ;'       d.    VR8H  ;'       d!    RV P                   u;8*  ;'       d    R8  Mu /p \        V 3R\        R	VR
R/VB R,          p\        T4      p\        P                  RT P                   T;'       g    R4       T P                   R9   ;'       d
    T\        9   pT P                   R8H  ;'       d    T\        ^ ,          \        ^ ,          09   p\        T'       g	   T'       d   \        T,          MRT RT RT P                    23RT P                   R9   ;'       g    T P                   R8¬  RT/TB T h  \         d    h \         d    Rp EL
i ; i)zBRaise the classified PeerRunsHTTPError for an HTTP error response.r‘   r  iô  r“   r’   r¶   i�  rI   rK   rc   z error:Niô  Nr†   z+Peer RoomLink request returned HTTP %s (%s)zno-coderš   zpeer rejected Ú z with HTTP ri   r”   r™   >   é˜  é©  é­  )r{   rm   ÚMAX_PEER_ERROR_RESPONSE_BYTESrk   rZ   r�   ÚloggerÚdebugÚ_GRANT_RENEWAL_CODESrª   r¬   Ú_REAUTHORIZATION_MESSAGES)	r`   r  rÕ   rK   re   r‚   r”   ÚrenewalÚdrifts	   &$$$     r   r  Ú$PeerRunsHTTPClient._raise_http_error:  sª  € ð ˜ 6Ñ)×=Ð=¨c¯h©h¸#©o¸}ÈcÏhÉhØ˜F fÑ,×]Ð]°¸Ñ1C×]Ð]ÈÈsÏxÉx×H]ÔH]ÐZ]ÔH]ð_ˆð	ÜØñÜ<ðØGOðØV^ðàñàõˆFô *¨&Ó1ˆ
Ü�‰Ø9¸3¿8¹8ÀZ×E\ÐE\ÐS\ô	^à—(‘(˜jÑ(×OÐO¨ZÔ;OÑ-OˆØ—‘˜C‘÷ Bð B JÜ% aÕ(Ô*=¸aÕ*@ð3Bñ %Bˆäß5<ÇÔ% jÖ1Ø! & ¨¨4¨&°¸C¿H¹H¸:ÐFñ
ð —h‘h /Ñ1×DÐD°S·X±XÀ±_ð
ð "ð	
ð &+ñ	
ð
 ð	øô !ô 	ØÜô 	Ø‹Fð	ús   Á&E2 Å2FÆFÆFÚexpected_session_idc               ó4   € V ^8„  d   QhRRRRRRRRRRRR	R
R/# )r(   rÙ   rd   ÚprofileÚsourceÚgrantÚcreaterp   r+  r|   r,   r  r   )r.   s   "r   r/   rÇ   W  sM   € ÷ 
_ñ 
_Øð
_Ø(+ð
_Ø58ð
_ØADð
_ØNRð
_à'ð
_à3Kñ
_r$   c               	ó  € VR 8w  d   \        R4      hV P                  V4       R\        P                  ! V RV 2P	                  4       4      P                  4       R,          ,           pV'       d   Wg8w  d   \        R4      hRVRRV 2R	V/# )
Úbot_roomz!peer room source must be bot_roomÚ	roomlink_Ú :Né    Nz"peer room session identity changedÚ
session_idÚtitlezGroup: r.  )rk   Ú_require_room_grantÚhashlibÚsha256r  Ú	hexdigest)rŸ   rÙ   r-  r.  r/  r0  r+  Úlogical_sessions   &$$$$$$ r   ÚprepareÚPeerRunsHTTPClient.prepareW  s�   € ð �ZÔÜ#Ð$GÓHÐHØ× Ñ  Ô'Ø%¬¯ªØˆi�r˜'˜Ð#×*Ñ*Ó,ó).ß.7©i«k¸#õ)?õ ?ˆçÐ#6Ô#IÜ#Ð$HÓIÐIØ˜o¨w¸'À'ÀÐ8KÈXÐW]Ð^Ð^r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r(   Údispatchr²   r/  rd   r,   r   r   )r.   s   "r   r/   rÇ   c  s#   € ÷ ñ Ð*;ð ÀCð ÐL`ñ r$   c                ó
  € \         P                  ! V4      pV P                  V4       V P                  ! R/ \         Uu/ uF  qD\        W44      bK  	  upB  V P                  VP                  VP                  R7       V# u upi )zBValidate a dispatch, its grant, and pin scope + observation to it.©rî   rï   r   )	r   Úfrom_mappingr8  rë   rä   r   r   rî   rï   ©rŸ   r@  r/  ÚcheckedÚfs   &&&  r   Ú_checked_dispatchÚ$PeerRunsHTTPClient._checked_dispatchc  sy   € ä&×3Ò3°HÓ=ˆØ× Ñ  Ô'Ø×ÒÑWÕ@UÓVÑ@U¸1¤7¨7Ó#6Ò 6Ñ@UÑVÒWØ×ÑØ—O‘O¸'×:VÑ:Vð 	ô 	Xàˆùò  Ws   ¾B c               ó$   € V ^8„  d   QhRRRRRR/# ©r(   r@  r²   r/  rd   r,   r   )r.   s   "r   r/   rÇ   l  s(   € ÷ Zñ ZÐ$5ð Z¸cð ZÐFWñ Zr$   c               	óF   € V P                  V P                  W4      VR 7      # )©r/  )Ú_admit_dispatchrG  )rŸ   r@  r/  s   &$$r   r@  ÚPeerRunsHTTPClient.dispatchl  s$   € Ø×#Ñ# D×$:Ñ$:¸8Ó$KÐSXÐ#ÓYÐYr$   c               ó$   € V ^8„  d   QhRRRRRR/# rJ  r   )r.   s   "r   r/   rÇ   o  s#   € ÷ ñ Ð,=ð Àcð ÐN_ñ r$   c               ó‚  a	a
€ V P                  W4      o	V P                  S	P                  S	P                  4      o
S
e‹   \        ;QJ d$    V	V
3R l\
         4       F  '       g   K   RM	  RM! V	V
3R l\
         4       4      '       d   \        R4      hV P                  S	\        S
R,          4      \        S
R,          4      RR7      # S	P                  S	P                  3V P                  4       rCV P                  P                  V4      pVe&   V\        VR	,          4      8  d   \        R
RRR7      h V P                  S	VR7      pT P                  P#                  TR4       T#   \         dO   pTP                  '       g   TP                  '       d%   T P!                  T4      pTRTR	YH,           //T n
        h Rp?ii ; i)zARecover one exact admission by receipt or idempotent POST replay.Nc              3  óP   <"  € T F  pSV,          \        SV4      8g  x € K  	  R # 5ir   r3   )r   r4   rE  Úexistings   & €€r   r   Ú6PeerRunsHTTPClient.recover_dispatch.<locals>.<genexpr>t  s#   øé € ÐaÑK`À%�8˜E•?¤g¨g°uÓ&=Ö=ÓK`ùs   ƒ#&TFz6peer run receipt conflicts with the recovered dispatchr·   r6  ©r·   r6  ÚreplayedÚnext_attempt_atz&peer admission recovery is backing off)ri   r‘   rL  Údelay)rG  rø   rî   rï   Úanyrä   rk   Ú	_acceptedrd   rÃ   rÎ   rQ   r+   rM  ri   r‘   Ú_next_poll_delayrü   )rŸ   r@  r/  rþ   ÚnowÚbackoffÚ	recoveredr`   rW  rE  rR  s   &$$      @@r   Úrecover_dispatchÚ#PeerRunsHTTPClient.recover_dispatcho  sƒ  ù€ à×(Ñ(¨Ó9ˆØ—=‘= §¡°'×2NÑ2NÓOˆØÒß‹sÕaÕK`Óa�s�sŠsÕaÕK`Óa×aÒaÜ'Ð(`ÓaÐaØ—>‘>Ø¤ H¨XÕ$6Ó 7ÄCÈÐQ]ÕH^ÓD_Øð "ó ð ð —O‘O W×%AÑ%AÐBÀDÇJÁJÃLˆSØ×(Ñ(×,Ñ,¨SÓ1ˆØÒ 3¬¨wÐ7HÕ/IÓ)JÔ#JÜ#Ø8ÀDÐTXôZð Zð	Ø×,Ñ,¨W¸EÐ,ÓBˆIð 	×Ñ×"Ñ" 3¨Ô-ØÐøô !ô 	Ø�}�}ˆ} §§ Ø×-Ñ-¨gÓ6�Ø*-°¸Ð@QÐSVÕS^Ð/_Ð)`�Ô&Øûð		ús   Ä4E% Å%F>Å0#F9Æ%F9Æ9F>c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r(   rE  r   r·   rd   r6  rU  rp   r,   r  r   )r.   s   "r   r/   rÇ   ‰  s4   € ÷ <ñ <Ø%ð<Ø25ð<ØCFð<ØRVð<à	ñ<r$   c               	óF   € R RRV P                   RV P                  RVRVRV/# )ÚstatusÚacceptedrî   rï   r·   r6  rU  rB  )rE  r·   r6  rU  s   &$$$r   rY  ÚPeerRunsHTTPClient._acceptedˆ  s3   € ð
 �j )¨W¯_©_Ø" G×$@Ñ$@À(ÈFØ˜* j°(ð<ð 	<r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r(   rE  r   r/  rd   r,   r²   r   )r.   s   "r   r/   rÇ   ‘  s#   € ÷ :ñ :Ð';ð :Àsð :ÐO`ñ :r$   c               	óð  a aa€ S P                  SSR 7      pR VVV 3R llp V! 4       p\        VP	                  R4      ;'       g    R4      pV'       g   \        R4      hRVRV/\
         Uu/ uF  qˆ\        SV4      bK  	  upCRSP                  R	SP                  /Cp	S P                  e$   ^ R
I
Hp
 V
P                  S P                  V	R7       V	S P                  SP                  SP                  3&   S P                  P                  VR4       S P!                  SWs\#        VP	                  RR4      4      R7      #   \         d&   pTP                  '       g   h T! 4       p Rp?ELARp?ii ; iu upi )rL  c               ó   € V ^8„  d   QhRR/# )r(   r,   r  r   )r.   s   "r   r/   Ú8PeerRunsHTTPClient._admit_dispatch.<locals>.__annotate__”  s   € ÷ 	"ñ 	"�~ñ 	"r$   c            
     ó    <€ SP                  R RRS P                  RS P                  4       /RRS P                   RS P                   2/SR7      # )r¶   r  ÚinputÚhosted_room_dispatchzIdempotency-Keyzroom:r  )r  r^   rP   r  )r  ÚpromptÚ
as_mappingrî   rï   )rE  r/  rŸ   s   €€€r   ÚadmitÚ1PeerRunsHTTPClient._admit_dispatch.<locals>.admit”  s_   ø€ Ø—=‘=Ø 6Ø˜wŸ~™~Ð/EÀw×GYÑGYÓG[Ð\à%¨¨w¯©Ð.?¸qÀ×A]ÑA]Ð@^Ð'_ðaà ð !ó "ð "r$   Nr·   r†   zpeer did not return a run idr6  rî   rï   rò   rô   rU  FrT  )Ú_session_idrk   r‘   rd   rQ   rä   r   rî   rï   rÀ   rõ   ró   Úupsert_remote_run_receiptrË   rÍ   rü   rY  rp   )rŸ   rE  r/  r6  rn  Úresultr`   r·   r4   Úreceiptró   s   ffd        r   rM  Ú"PeerRunsHTTPClient._admit_dispatch‘  sa  ú€ Ø×%Ñ% g°UÐ%Ó;ˆ
÷	"ò 	"ð	Ù“WˆFô
 �V—Z‘Z Ó)×/Ð/¨RÓ0ˆßÜ#Ð$BÓCÐCà�f˜l¨Jð^å;PÓQÑ;P°%”g˜g uÓ-Ò-Ñ;PÑQð^ð �w—‘Ð(>À×@\Ñ@\ñ^ˆð ×ÑÒ+Ý,Ø×2Ñ2°4×3GÑ3GÐPWÐ2ÔXØFMˆ�
‰
�G—O‘O W×%AÑ%AÐBÑCØ×Ñ×Ñ˜v tÔ,Ø�~‰~Ø˜FÜ˜&Ÿ*™* Z°Ó7Ó8ð ó :ð 	:øô! !ô 	Ø—=—=�=ØÙ“WŽFûð	üò Rs   £E  Á.E3Å E0ÅE+Å+E0c               ó$   € V ^8„  d   QhRRRRRR/# )r(   r@  r   r/  rd   r,   r   )r.   s   "r   r/   rÇ   ²  s'   € ÷ 	Kñ 	KÐ$8ð 	KÀCð 	KÈCñ 	Kr$   c               	ón  € V P                  VP                  VP                  4      pV'       d   \        VR ,          4      # V P	                  VP
                  VP                  RVRR7      pVf   \        R4      h\        VP                  R 4      ;'       g    VP                  R4      ;'       g    R4      # )r6  r2  T)rÙ   r-  r.  r/  r0  z peer room session is unavailabler;   r†   )	rø   rî   rï   rd   r=  rÙ   rß   rk   rQ   )rŸ   r@  r/  rR  Úprepareds   &&$  r   rp  ÚPeerRunsHTTPClient._session_id²  s�   € Ø—=‘= ×!1Ñ!1°8×3PÑ3PÓQˆßÜ�x Õ-Ó.Ð.Ø—<‘<Ø×$Ñ$¨h×.EÑ.EÈjØ ð  ó &ˆð ÒÜ#Ð$FÓGÐGÜ�8—<‘< Ó-×IÐI°·±¸dÓ1C×IÐIÀrÓJÐJr$   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r(   rÙ   rd   r-  r6  r,   rð   r   )r.   s   "r   r/   rÇ   ½  s,   € ÷ ñ ØðØ(+ðØ9<ðØAVñr$   c               	óÀ   € V P                   f   R MV P                  ! V P                   !  pVf   R # VR,          VR,          VR,          3pWQW#38w  d   \        R4      hV# )NrÙ   rß   r6  z&peer observation receipt changed scope)rÌ   rø   rk   )rŸ   rÙ   r-  r6  r±   ré   s   &$$$  r   Ú_observation_receiptÚ'PeerRunsHTTPClient._observation_receipt½  sc   € à×.Ñ.Ò6‘¸D¿MºMÈ4×K`ÑK`Ñ<aˆØŠ>ÙØ˜	Õ" FÐ+;Õ$<¸fÀ\Õ>RÐSˆØ˜gÐ2Ô2Ü#Ð$LÓMÐMØˆr$   c               ó    € V ^8„  d   QhRRRR/# )r(   Úcachedr  r,   r+   r   )r.   s   "r   r/   rÇ   Ç  s   € ÷ Tñ TÐ'?ð TÀEñ Tr$   c                	ó¶   € Ve   \        VR,          4      MV P                  ^,          p\        V P                  \	        V P                  V^,          4      4      # )NrW  )r+   rÁ   rX   rÂ   r@   )rŸ   r~  Úpreviouss   && r   rZ  Ú#PeerRunsHTTPClient._next_poll_delayÇ  sH   € Ø-3Ò-?”5˜ �Ô)ÀT×EZÑEZÐ]^ÕE^ˆÜ�4×(Ñ(¬#¨d×.CÑ.CÀXÐPQÅ\Ó*RÓSÐSr$   c               ó$   € V ^8„  d   QhRRRRRR/# )r(   r±   r²   r/  rd   r,   r  r   )r.   s   "r   r/   rÇ   Ë  s"   € ÷ ñ Ð$5ð Àð Èñ r$   c               	ó¤  € \        VR ,          4      V P                  4       rCV P                  P                  V4      pVeh   VR,          pVP                  R4      \        9   d   V# V\        VR,          4      8  d,   VP                  R4      p\        V\        4      '       d   VhV# V P                  V4      pRVRWH,           /p	 V P                  \        V4      V P                  V4      R7      p
V
P                  R4      R8X  d<   \        V
P                  R 4      ;'       g    R4      V8X  d   V P                  WV4      p
\         Uu/ uF  q»V
9   g   K  WºV,          bK  	  pp\        VP                  R 4      ;'       g    R4      V8w  g   VP                  R4      \        9  d   \        R	4      h TRT/T	C/T n        TP                  R4      \        9   d>   T P                  P!                  \        TR
,          4      \#        TR,          4      34       T# u upi   \         d%   pTe
   TR,          M/ pTRTRT/T	C/T n        h Rp?ii ; i)r·   Nrb  Únext_poll_atrs   rW  ©r  Úunknownr†   z%peer returned a mismatched run statusrî   rï   )rd   rÃ   rÍ   rQ   Ú_TERMINAL_RUN_STATESr+   r[   rk   rZ  r  r¼   r8  Ú_resolve_unknownÚ_RUN_STATUS_KEYSÚ_KNOWN_RUN_STATESrÏ   r<   rJ   )rŸ   r±   r/  r·   r[  r~  rb  rs   rW  ÚentryÚfullrþ   r`   r€  s   &&$           r   Ú_poll_receiptÚ PeerRunsHTTPClient._poll_receiptË  s$  € Ü˜& Õ*Ó+¨T¯Z©Z«\�Ø×#Ñ#×'Ñ'¨Ó/ˆØÒØ˜HÕ%ˆFØ�z‰z˜(Ó#Ô';Ô;Ø�Ø”U˜6 .Õ1Ó2Ô2ØŸ
™
 7Ó+�Ü˜eÔ%6×7Ò7Ø�KØ�Ø×%Ñ% fÓ-ˆØ˜% °µÐ=ˆð	Ø—=‘=¤¨6Ó!2¸t×?WÑ?WÐX]Ó?^�=Ó_ˆDØ�x‰x˜Ó! YÔ.´3°t·x±xÀÓ7I×7OÐ7OÈRÓ3PÐTZÔ3ZØ×,Ñ,¨V¸5ÓA�Ý0@ÓPÑ0@¨È4ÁK”n�c �9’nÑ0@ˆFÐPä�F—J‘J˜xÓ(×.Ð.¨BÓ/°6Ô9Ø—:‘:˜hÓ'Ô/@Ô@Ü'Ð(OÓPÐPð Að % x°Ð&A¸5Ð&AÐBˆÔØ�:‰:�hÓÔ#7Ô7Ø×#Ñ#×'Ñ'Ü�V˜IÕ&Ó'¬¨VÐ4JÕ-KÓ)LÐMôOàˆùò Qøô
 !ô 	Ø+1Ò+=�v˜hÖ'À2ˆHØ"(¨8°X¸wÈÐ*UÈuÐ*UÐ!VˆDÔØûð	ús=   ÃAH  Ä$&H  Å
HÅHÅ$H  Æ1H  ÈH  È IÈ+I
É
Ic               ó(   € V ^8„  d   QhRRRRRRRR/# )r(   r±   r²   rŒ  r/  rd   r,   r  r   )r.   s   "r   r/   rÇ   ì  s2   € ÷ hñ hÐ'8ð hÐ@Qð hÐZ]ð hÐbpñ hr$   c                ó¢   € V P                  \        VR4      RVRVP                  R4      RVP                  R4      /R7       RVR,          RRR	R
/# )a  A member gateway that restarted mid-turn reports the run ``unknown`` and holds its later
turns behind it. The room cannot resume that lost execution: acknowledge exactly the polled
admission (``stop`` grant; an exact retry replays the receipt) and settle it interrupted.zresolve-unknownr  Úadmission_idrï   )r  r  r^   r·   rb  Úinterruptedrs   zmember gateway restarted)r  r¼   rQ   )rŸ   r±   rŒ  r/  s   &&&&r   rˆ  Ú#PeerRunsHTTPClient._resolve_unknownì  s^   € ð 	�‰”i Ð(9Ó:À6ÐV[Ø˜DŸH™H ^Ó4Ð6LÈdÏhÉhÐWmÓNnðcpˆô 	qà˜$˜x�.¨(°MÀ7ÐLfÐgÐgr$   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r(   rÙ   rd   r-  r6  r/  r,   zSequence[Mapping[str, Any]]r   )r.   s   "r   r/   rÇ   ô  s;   € ÷ Kñ KØðKØ(+ðKØ9<ðKØEHðKà	$ñKr$   c               	ó†  € V P                  WVR 7      pVf   . # V P                  WTR7      p\        VP                  R4      ;'       g    R4      pVR9  d   . # RRRVR,          R	VR	,          RVR8X  d   R
MRRRVP                  R4       2RVP                  R4      ;'       g    VP                  R4      ;'       g    R/.# )©rÙ   r-  r6  rL  rb  r†   Ú	completedÚfailedÚroleÚ	assistantrî   rï   ÚsettledÚ
message_idz	peer-run:r·   ÚcontentÚoutputrs   >   r˜  r—  r’  )r{  r�  rd   rQ   )rŸ   rÙ   r-  r6  r/  rs  rb  Ústates   &$$$$   r   ÚhistoryÚPeerRunsHTTPClient.historyô  sÖ   € ð ×+Ñ+°GÐYcÐ+ÓdˆØŠ?ØˆIØ×#Ñ# GÐ#Ó9ˆÜ�F—J‘J˜xÓ(×.Ð.¨BÓ/ˆØÐ>Ô>ØˆIà�K ¨G°IÕ,>Ø" GÐ,BÕ$CØ 5¨KÔ#7‘i¸XØ˜I f§j¡j°Ó&:Ð%;Ð<Ø�v—z‘z (Ó+×HÐH¨v¯z©z¸'Ó/B×HÐHÀbðJð Kð 	Kr$   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r(   rÙ   rd   r-  r6  r/  r,   r²   r   )r.   s   "r   r/   rÇ     s4   € ÷ 
0ñ 
0Øð
0Ø(+ð
0Ø9<ð
0ØEHð
0ØM^ñ
0r$   c               	ó  € V P                  WVR 7      pVf   RRRR/# V P                  WTR7      pRVP                  R4      \        9   RVR,          RVR,          RVP                  R4      RVP                  R4      R	VP                  R	4      /# )
r–  NÚactiveFrî   rL  rb  rï   r·   Úapproval)r{  r�  rQ   Ú_ACTIVE_RUN_STATES)rŸ   rÙ   r-  r6  r/  rs  rb  s   &$$$$  r   rb  ÚPeerRunsHTTPClient.status  s›   € à×+Ñ+°GÐYcÐ+ÓdˆØŠ?Ø˜e Y°Ð5Ð5Ø×#Ñ# GÐ#Ó9ˆà�f—j‘j Ó*Ô.@Ñ@À)ÈWÐU^ÕM_Ø" GÐ,BÕ$CØ�f—j‘j Ó*¨H°f·j±jÀÓ6JØ˜Ÿ
™
 :Ó.ð	0ð 	0r$   c               ó0   € V ^8„  d   QhRRRRRRRRRRRR	/# )
r(   rî   rd   rï   rJ   Ú
request_idÚchoicer/  r,   r  r   )r.   s   "r   r/   rÇ     sD   € ÷ `ñ `Øð`Ø58ð`ØFIð`ØSVð`Ø_bð`à	!ñ`r$   c               óð   € V P                  W4      pVf   R# \        T;'       g    R4      P                  4       pV'       g   \        R4      hV P	                  V4       V P                  VRRVRV/VR7      # )z2Resolve approval for the exact durable remote run.Nr†   z(an exact approval request_id is requiredr¥  rª  r©  ©r^   r/  )rø   rd   Ústriprk   r8  Ú_post_run_action)rŸ   rî   rï   r©  rª  r/  r±   s   &$$$$$ r   Úapprove_receiptÚ"PeerRunsHTTPClient.approve_receipt  s   € ð —‘˜wÓ=ˆØŠ>ÙÜ˜×)Ð) rÓ*×0Ñ0Ó2ˆ
ßÜ#Ð$NÓOÐOØ× Ñ  Ô'Ø×$Ñ$Ø�J h°¸ÀjÐ%QÐY^ð %ó `ð 	`r$   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r(   r±   r²   Úactionrd   r^   r  r/  r,   r   )r.   s   "r   r/   rÇ     s4   € ÷ ñ Ø'ðØ14ðØ?MðØVYðà	ñr$   c               	ó˜   € V P                  \        W4      R W4R7      pV P                  P                  \	        VR,          4      R4       V# )r  ©r  r^   r  r·   N)r  r¼   rÍ   rü   rd   )rŸ   r±   r²  r^   r/  rr  s   &&&$$ r   r®  Ú#PeerRunsHTTPClient._post_run_action  sI   € ð —‘Ü�fÓ%¨f¸4ð ó Sˆà×Ñ×Ñœs 6¨(Õ#3Ó4°dÔ;Øˆr$   c               ó$   € V ^8„  d   QhRRRRRR/# )r(   r@  r²   r/  rd   r,   r  r   )r.   s   "r   r/   rÇ   '  s(   € ÷ eñ eÐ 1ð e¸#ð eÐBZñ er$   c               	óæ   € \         P                  ! V4      pV P                  ! R/ \         Uu/ uF  qD\	        W44      bK  	  upB  V P                  VP                  VP                  VR 7      # u upi ))rî   rï   r/  r   )r   rC  rë   rä   r   Ústop_receiptrî   rï   rD  s   &$$  r   ÚstopÚPeerRunsHTTPClient.stop'  so   € Ü&×3Ò3°HÓ=ˆØ×ÒÑWÕ@UÓVÑ@U¸1¤7¨7Ó#6Ò 6Ñ@UÑVÒWØ× Ñ Ø—O‘O¸'×:VÑ:VÐ^cð !ó eð 	eùò  Ws   ­A.c               ó(   € V ^8„  d   QhRRRRRRRR/# )r(   rî   rd   rï   rJ   r/  r,   r  r   )r.   s   "r   r/   rÇ   -  s,   € ÷ 
ñ 
Øð
Ø58ð
ØADð
ØIañ
r$   c               ó  € V P                  W4      pVf   R# V P                  VR/ V P                  V4      R7      pVP                  R4      \        9   d0   V P
                  P                  \        V4      \        V4      34       V# )z7Stop the exact durable remote run after a home restart.Nr¹  r¬  rb  )	rø   r®  r8  rQ   r‡  rÏ   r<   rd   rJ   )rŸ   rî   rï   r/  r±   rr  s   &$$$  r   r¸  ÚPeerRunsHTTPClient.stop_receipt-  s~   € ð —‘˜wÓ=ˆØŠ>ÙØ×&Ñ&Ø�F ¨4×+CÑ+CÀEÓ+Jð 'ó Lˆà�:‰:�hÓÔ#7Ô7Ø×#Ñ#×'Ñ'¬¨W«´sÐ;OÓ7PÐ(QÔRØˆr$   Úttl_secondsi  Ústatus_ttl_secondsc               ó<   € V ^8„  d   QhRRRRRRRRRRRRR	R
RRRR/	# )r(   rÙ   rd   rÚ   rÛ   rÜ   rJ   rÝ   Úgrant_idr¾  r+   r¿  zfloat | Noner,   r²   r   )r.   s   "r   r/   rÇ   9  sd   € ÷ Añ AØðAØ03ðAØKNðAàðAà),ðAà8;ðAàJOðAð )ðAð 5FñAr$   c               ó    € V P                   '       g   \        R4      hT P                  RRRVRVRVRVRVR	VR
V/Vf	   / CR7      # RV/CR7      # )z:Ask the target gateway to mint a scoped room-member grant.z9issuing an invitation requires the target gateway API keyz/v1/room-members/invitationsr  rÙ   rÚ   rÛ   rÜ   rÝ   rÁ  r¾  r¿  )r  r^   )rÆ   rk   r  )	rŸ   rÙ   rÚ   rÛ   rÜ   rÝ   rÁ  r¾  r¿  s	   &$$$$$$$$r   Úissue_invitationÚ#PeerRunsHTTPClient.issue_invitation9  s“   € ð
 �|�|ˆ|Ü#Ð$_Ó`Ð`Ø�}‰}Ø*°6à˜7Ð$5°Ø&Ð(<Ð>OÐQ`Ø˜Y¨
°H¸mÈ[ð@ð ,Ò3�2ð	@ð ó Að 	Að )Ð*<ð:>ð	@ð ó Að 	Ar$   r¥   r¦   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r(   r/  rd   r¾  r+   r¥   r|   r¦   r,   r²   r   )r.   s   "r   r/   rÇ   I  s6   € ÷ >ñ >Øð>Ø*/ð>à%ð>àGQð>ð 
ñ>r$   c               óZ  € V P                  RVRV/R7      p\        VP                  R4      ;'       g    R4      pV'       g   \        R4      hV P	                  VR7      p\        \        P                  ! VP                  R4      4      W4R	7      pVe   Vh/ VCRVP                  R4      /C# )
zCRenew dispatch access only while its frozen authority is unchanged.z/v1/room-members/grants/refreshr¾  ©r^   r/  r†   z%peer returned no refreshed room grantrL  r¤   )r¥   r¦   )Ú_scoped_postrd   rQ   rk   Úprober¯   r
   rC  )	rŸ   r/  r¾  r¥   r¦   Ú	refreshedÚreplacementrÉ  rs   s	   &$$$$    r   Úrefresh_grantÚ PeerRunsHTTPClient.refresh_grantI  s­   € ð
 ×%Ñ%Ø-¨u¸MÈ;Ð;Wð &ó Yˆ	ä˜)Ÿ-™-¨Ó0×6Ð6°BÓ7ˆßÜ#Ð$KÓLÐLà—
‘
 �
Ó-ˆÜ,Ü×+Ò+¨E¯I©I°iÓ,@ÓAØ/ôbˆð ÒØˆKØ=�)Ð=˜Y¨¯	©	°)Ó(<Ñ=Ð=r$   c               ó    € V ^8„  d   QhRRRR/# ©r(   r/  rd   r,   r²   r   )r.   s   "r   r/   rÇ   \  s   € ÷ Sñ S Sð SÐ->ñ Sr$   c               ó*   € V P                  RV/ R7      # )z9Revoke this grant's exact room/home/target/profile scope.z/v1/room-members/grants/revokerÇ  )rÈ  ©rŸ   r/  s   &$r   Úrevoke_grantÚPeerRunsHTTPClient.revoke_grant\  s   € à× Ñ Ð!AÀ5ÈrÐ ÓRÐRr$   c               ó    € V ^8„  d   QhRRRR/# rÏ  r   )r.   s   "r   r/   rÇ   `  s   € ÷ Yñ Y˜cð YÐ&7ñ Yr$   c               óF   € V P                  RV P                  V4      R7      # )zCVerify gateway reachability and the live scoped capability catalog.z/v1/room-members/capabilitiesr…  ©r  r8  rÑ  s   &$r   rÉ  ÚPeerRunsHTTPClient.probe`  s+   € à�}‰}Ø+¸×8PÑ8PÐQVÓ8Wð ó Yð 	Yr$   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r(   rÕ   rd   r/  r^   r  r,   r   )r.   s   "r   r/   rÇ   e  s.   € ÷ Xñ X ð X¨Sð X¸>ð XÈnñ Xr$   c               	óH   € V P                  VR W0P                  V4      R7      # )r  r´  rÖ  )rŸ   rÕ   r/  r^   s   &&&$r   rÈ  ÚPeerRunsHTTPClient._scoped_poste  s-   € Ø�}‰}Ø˜ d×7OÑ7OÐPUÓ7Vð ó Xð 	Xr$   c               ó    € V ^8„  d   QhRRRR/# )r(   r/  rd   r,   r   )r.   s   "r   r/   rÇ   j  s   € ÷ ñ  3ð ¨3ñ r$   c                ód   € \        T ;'       g    R4      pV'       d   VR9   d   \        R4      hV# )zAPrevent scoped operations from falling back to broad Bearer auth.r†   za scoped room grant is required>   Úcompatúcompatibility-only)rd   rk   )r/  r   s   & r   r8  Ú&PeerRunsHTTPClient._require_room_granti  s0   € ô �E—K�K˜RÓ ˆß˜Ð!AÔAÜ#Ð$EÓFÐFØˆr$   )rÌ   rÎ   rÐ   rË   rÍ   rÏ   rÆ   rÅ   rÃ   rÂ   rÁ   rÀ   r¿   rÊ   i€Q )'r   r   r    r!   r"   r   rW   rœ   rÖ   rë   rø   r   r  Ústaticmethodr  r=  rG  r@  r^  rY  rM  rp  r{  rZ  r�  rˆ  r   rb  r¯  r®  r¹  r¸  rÃ  rÌ  rÒ  rÉ  rÈ  r8  r#   r   r$   r   r¾   r¾   Í   s_  † ÙLð7ØGIð7à-1ð7àMPð7ð #&ð7ð EIÇNÁN÷7õ*$õõ(Kõ'ð Ø*/ð ØRVð à,0ð àKO÷ ðD ôó ðð8
_à*.÷
_õõZõð2 ô<ó ð<õ:õB	KõõTõõBhõKõ"
0õ`õõeõ
ðAàRVðAð ,0÷Að >Ø2>ð>à(,ð>àTX÷>õ&SõYõ
Xð ôó ôr$   r¾   )ÚECONNREFUSEDÚENETDOWNÚENETUNREACHÚ	EHOSTDOWNÚEHOSTUNREACHi @  i   i   )rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   >   r˜  Ú	cancelledr—  r’  >   ÚqueuedÚrunningÚstoppingÚwaiting_for_approval)r·   rb  rž  rs   r¥  Ú
last_event))z
room grantr   )zcapability catalog changedÚroom_capability_catalog_changed)zexecution policy changedÚroom_execution_policy_changed)rí  z0peer room execution policy needs reauthorization)rì  z+peer room capabilities need reauthorization)Dr"   Ú
__future__r   r   r9  r‡   ÚloggingÚrerv   r   Úurllib.errorrr   Úurllib.parseÚurllib.requestÚcollections.abcr   r   r   Ú
contextlibr   Úpathlibr   Útypingr   r	   Úgateway.hosted_room_peerr
   r   r   Ú	getLoggerr   r$  Ú	frozensetrx   Úcompiler~   r  r#  rY   rä   r‡  r¦  rŠ  r‰  r‹   r&  rª   r¬   r�   r‰   Úfromkeysr'  rl   r?   r   r  r&   rG   ra   rm   ry   r€   r�   ÚRuntimeErrorrk   r¯   r¼   r¾   r   r$   r   Ú<module>rþ     sÓ  ðÙ ;å "ã Û Û Û Û 	Û Û Û Û Û ß 7Ñ 7Ý Ý ß  ÷Fñ Fð 
×	Ò	˜8Ó	$€ñ !ñ !:Ù^ó!:ó :Ð ð —’Ð5Ó6€ð +Ð Ø )Ð Ø&Ð ð8Ð ñ !Ò!TÓUÐ ÙÒXÓYÐ Ø(Ð+=Õ=Ð ØTÐ ð"CÐ ñ !Ð"6Ð8WÐ!XÓYÐ ðYÐ ðVÐ à-Ø˜aÕ Ð"5°aÕ"8ð1:õ :Ð ð4Ø
‡m�mÐ(Ð*QÓRð4à˜aÕ Ð";¸AÕ">Ø˜ÕÐ/°Õ2ñ4Ð ð
 ÐBØ
ÐCðEÐ ô
F˜Jô FôN Lô Nõ!õ$ õ>	ZõNõVõ,ô(P˜ô Põõ"_÷bó br$   