+
    jHàj°2  ã                  ó  a € 0 t $ R t^ RIHt ^ RIHt ^ RIHtHt ^ RI	H
t
HtHtHtHtHtHtHt ]! 4       t]t] ! R R4      4       t] ! R R4      4       t] ! R	 R
4      4       t] ! R R4      4       t ! R R]4      tR R lt ! R R]4      t ! R R]4      t ! R R]4      t/ R]! RRR4      bR]! RR]4      bR]! RRR4      bR]! RR ]4      bR!]! R"R#R4      bR$]! R"R%R4      bR&]! R"R'R4      bR(]! R"R)]4      bR*]! R"R+]4      bR,]! R"R-] 4      bR.]! R"R/] 4      bR0]! R"R1R4      bR2]! R"R3R4      bR4]! R5R6R4      bR7]! R5R8]!4      bR9]! R5R:] 4      bR;]! R5R<R4      bR=]! R5R>]"4      /Ct#R?]$R@&   RA RB lt%RC RD lt&RE RF lt'R# )Gag  Per-session gateway state in one container (replaces ~19 session_key-keyed dicts on
GatewayRunner that bred boundary drift and wholesale-reset races).  Scopes follow where each dict
was CLEARED: ``turn`` at the end of every turn; ``conversation`` at conversation boundaries (/new,
/resume, auto-reset, expiry); ``persistent`` fields have their own lifecycles.)Úannotations)ÚMutableMapping)Ú	dataclassÚfield)ÚAnyÚCallableÚDictÚIteratorÚListÚ
NamedTupleÚOptionalÚTuplec                  ó´   € ] tR t^t$ RtRtR]R&   RtR]R&   RtR]R&   Rt	R]R	&   Rt
R]R
&   RtR]R&   ]! ]R7      tR]R&   ]! ]R7      tR]R&   R R ltRtR# )Ú	TurnStatez’State scoped to one running gateway turn.  ``lease_tokens`` is NOT touched by
``clear()``: ``_release_turn_lease`` owns it (release exactly once).Nr   ÚagentÚeventÚctxç        ÚfloatÚ
started_tsÚleaseÚbusy_ack_ts©Údefault_factoryzdict[int, Any]Úlease_tokensú	list[Any]Úretired_agentsc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNone© )Úformats   "Ú:/home/ubuntu/.hermes/hermes-agent/gateway/session_state.pyÚ__annotate__ÚTurnState.__annotate__&   s   € ÷ 1ñ 1�tñ 1ó    c                óZ   € R;V n         ;V n        ;V n        V n        R;V n        V n        R# )zHReset the per-turn slot.  The caller pops ``lease`` first to release it.Nr   )r   r   r   r   r   r   ©Úselfs   &r$   ÚclearÚTurnState.clear&   s-   € à:>Ð>ˆŒ
Ð>�T”ZÐ> $¤*¨t¬xØ-0Ð0ˆŒ˜$Ö*r'   )r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__annotations__r   r   r   r   r   r   Údictr   Úlistr   r+   Ú__static_attributes__r"   r'   r$   r   r      ss   ‡ ñLð €Eˆ3Óð €Eˆ3ÓØ€CˆƒOØ€J�ÓØ€Eˆ3ÓØ€K�Óñ $)¸Ô#>€L�.Ó>ñ !&°dÔ ;€N�IÓ;÷1ñ 1r'   r   c                  óÐ   € ] tR t^,t$ RtRtR]R&   RtR]R&   RtR]R&   ]	t
R]R&   R	tR
]R&   ]! ]R7      tR]R&   ]! ]R7      tR]R&   RtR]R&   RtR]R&   RtR]R&   R R ltRtR# )ÚConversationStatezBState scoped to one conversation (survives turns, not boundaries).NúOptional[dict[str, Any]]Úmodel_overrideÚone_turn_restoreÚreasoning_overrider   Úservice_tier_overrideÚ ÚstrÚlast_resolved_modelr   r   Úqueued_eventsú	list[str]Úsidecar_noteszOptional[tuple[Any, ...]]Úephemeral_pinz-Optional[tuple[Optional[str], Optional[str]]]Úchannel_pinúOptional[str]Úvc_lastc               ó   € V ^8„  d   QhRR/# r   r"   )r#   s   "r$   r%   ÚConversationState.__annotate__<   s   € ÷ ;ñ ;�tñ ;r'   c                ó`   € V P                   P                  \        4       P                   4       R# )zJReset every field to its default, so new fields are cleared automatically.N)Ú__dict__Úupdater7   r)   s   &r$   r+   ÚConversationState.clear<   s   € à�‰×ÑÔ.Ó0×9Ñ9Ö:r'   r"   )r-   r.   r/   r0   r1   r9   r2   r:   r;   Ú_UNSET_TIERr<   r?   r   r4   r@   rB   rC   rD   rF   r+   r5   r"   r'   r$   r7   r7   ,   s†   ‡ áLà/3€NÐ,Ó3Ø15ÐÐ.Ó5Ø37ÐÐ0Ó7Ø!,Ð˜3Ó,Ø!Ð˜Ó!Ù$°TÔ:€M�9Ó:Ù$°TÔ:€M�9Ó:Ø/3€MÐ,Ó3àAE€KÐ>ÓEØ!€Gˆ]Ó!÷;ñ ;r'   r7   c                  ó~   € ] tR t^At$ RtRtR]R&   RtR]R&   ]! ]	R7      t
R	]R
&   RtR]R&   ^ tR]R&   ^ tR]R&   RtR# )ÚPersistentStateu¨   State with its own lifecycle â€” NOT cleared wholesale by turn or boundary resets
(approvals/update prompts ARE cleared, individually, by the boundary security funnel).Nr8   Ú	approvalsFÚboolÚupdate_prompt_pendingr   rA   Únative_image_pathsrE   Úpending_command_textÚintÚrun_generationÚhygiene_failure_streakr"   )r-   r.   r/   r0   r1   rP   r2   rR   r   r4   rS   rT   rV   rW   r5   r"   r'   r$   rO   rO   A   sR   ‡ ñ^ð +/€IÐ'Ó.Ø"'Ð˜4Ó'Ù$)¸$Ô$?Ð˜	Ó?à*.Ð˜-Ó.Ø€N�CÓð #$Ð˜C×#r'   rO   c                  óp   € ] tR t^]t$ Rt]! ]R7      tR]R&   ]! ]	R7      t
R]R&   ]! ]R7      tR]R&   R	tR
# )ÚSessionStatez:All per-session gateway state, grouped by lifecycle scope.r   r   Úturnr7   ÚconversationrO   Ú
persistentr"   N)r-   r.   r/   r0   r1   r   r   rZ   r2   r7   r[   rO   r\   r5   r"   r'   r$   rY   rY   ]   s4   ‡ áDá¨IÔ6€Dˆ)Ó6Ù&+Ð<MÔ&N€LÐ#ÓNÙ"'¸Ô"H€J�×Hr'   rY   c                  óD   € ] tR t^jt$ RtR]R&   R]R&   R]R&   R]R&   R	tR
# )Ú
_FieldSpeczHOne legacy dict: scope attr, field name, default factory, presence test.r>   ÚscopeÚnamezCallable[[], Any]ÚdefaultzCallable[[Any], bool]Ú
is_presentr"   N)r-   r.   r/   r0   r1   r2   r5   r"   r'   r$   r^   r^   j   s   ‡ ÙRØƒJØ
ƒIØÓØ%×%r'   r^   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r_   r>   r`   ra   r   r    r^   r"   )r#   s   "r$   r%   r%   r   s.   € ÷ Pñ P�ð P˜Cð P¨#ð P°*ñ Pr'   c                ó|   a€ \        S\        4      '       d   \        WS\        4      # \        WV3R lV3R l4      # )zT``default`` is a type (presence = truthiness) or a sentinel (presence = ``is not``).c                 ó   <€ S # ©Nr"   )ra   s   €r$   Ú<lambda>Ú_spec.<locals>.<lambda>v   s   ø€ ©7r'   c                ó   <€ V SJ# rf   r"   )Úvra   s   &€r$   rg   rh   v   s
   ø€ ¸aÀwÑ>Nr'   )Ú
isinstanceÚtyper^   rQ   )r_   r`   ra   s   &&fr$   Ú_specrm   r   s/   ø€ ä�'œ4× Ò Ü˜% w´Ó5Ð5Ü�e¤?Ô4NÓOÐOr'   c                  óN   € ] tR t^ytRtR
tR R ltR R ltR R ltR R	 lt	R
t
R# )Ú_RunnerViewzFShared plumbing: live view over ``runner._sessions``, dict-comparable.c               ó    € V ^8„  d   QhRRRR/# )r   Úrunnerr   r    r!   r"   )r#   s   "r$   r%   Ú_RunnerView.__annotate__~   s   € ÷ ñ ˜sð  tñ r'   c                	ó   € Wn         R # rf   ©Ú_runner)r*   rq   s   &&r$   Ú__init__Ú_RunnerView.__init__~   s   € ØŽr'   c               ó   € V ^8„  d   QhRR/# )r   r    zdict[str, SessionState]r"   )r#   s   "r$   r%   rr   �   s   € ÷ <ñ <Ð2ñ <r'   c                	ó`   € V P                   P                  P                  R 4      ;'       g    / # )Ú	_sessions)ru   rJ   Úgetr)   s   &r$   rz   Ú_RunnerView._sessions�   s%   € Ø�|‰|×$Ñ$×(Ñ(¨Ó5×;Ð;¸Ð;r'   c               ó   € V ^8„  d   QhRR/# )r   r    rU   r"   )r#   s   "r$   r%   rr   „   s   € ÷ $ñ $˜ñ $r'   c                	ó&   € \        R  V  4       4      # )c              3  ó&   "  € T F  p^x € K	  	  R# 5i©é   Nr"   )Ú.0Ú_s   & r$   Ú	<genexpr>Ú&_RunnerView.__len__.<locals>.<genexpr>…   s   é € Ð#™d˜•1›dùs   ‚)Úsumr)   s   &r$   Ú__len__Ú_RunnerView.__len__„   s   € ÜÑ#™dÓ#Ó#Ð#r'   c               ó    € V ^8„  d   QhRRRR/# )r   ÚotherÚobjectr    rQ   r"   )r#   s   "r$   r%   rr   ‡   s   € ÷ ñ ˜Fð  tñ r'   c                	ó�   € \        V\        \        34      '       d&   \        V P                  4       4      \        V4      8H  # \        # rf   )rk   r3   r   ÚitemsÚNotImplemented)r*   rŠ   s   &&r$   Ú__eq__Ú_RunnerView.__eq__‡   s4   € Ü�eœd¤NÐ3×4Ò4Ü˜Ÿ
™
›Ó%¬¨e«Ñ4Ð4ÜÐr'   rt   N)r-   r.   r/   r0   r1   Ú	__slots__rv   rz   r‡   r�   r5   r"   r'   r$   ro   ro   y   s#   † ÙPà€Iõõ<õ$÷ñ r'   ro   c                  óº   a € ] tR t^�tRtRtR V 3R lltR R ltR R ltR R	 lt	R
 R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltRtV ;t# )ÚSessionFieldViewz>Live dict-like view of one SessionState field across sessions.c               ó$   € V ^8„  d   QhRRRRRR/# )r   rq   r   Úspecr^   r    r!   r"   )r#   s   "r$   r%   ÚSessionFieldView.__annotate__’   s!   € ÷ ñ ˜sð ¨*ð ¸ñ r'   c                	ó2   <€ \         SV `  V4       W n        R # rf   )Úsuperrv   rm   )r*   rq   r•   Ú	__class__s   &&&€r$   rv   ÚSessionFieldView.__init__’   s   ø€ Ü‰Ñ˜Ô ØŽ
r'   c               ó    € V ^8„  d   QhRRRR/# )r   ÚstaterY   r    r   r"   )r#   s   "r$   r%   r–   –   s   € ÷ Jñ J˜Lð J¨Sñ Jr'   c                	ó|   € \        \        WP                  P                  4      V P                  P                  4      # rf   )Úgetattrrm   r_   r`   ©r*   rœ   s   &&r$   Ú_valueÚSessionFieldView._value–   s&   € Ü”w˜u§j¡j×&6Ñ&6Ó7¸¿¹¿¹ÓIÐIr'   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rœ   rY   Úvaluer   r    r!   r"   )r#   s   "r$   r%   r–   ™   s&   € ÷ Jñ J˜,ð J¨sð J°tñ Jr'   c                	ó‚   € \        \        WP                  P                  4      V P                  P                  V4       R # rf   )Úsetattrrž   rm   r_   r`   )r*   rœ   r£   s   &&&r$   Ú_setÚSessionFieldView._set™   s%   € Ü”˜Ÿz™z×/Ñ/Ó0°$·*±*·/±/À5ÖIr'   c               ó    € V ^8„  d   QhRRRR/# )r   Úkeyr   r    zOptional[SessionState]r"   )r#   s   "r$   r%   r–   œ   s   € ÷ bñ b˜Cð bÐ$:ñ br'   c                ó°   € V P                  4       P                  V4      pVe3   V P                  P                  V P	                  V4      4      '       d   V# R# )zAThe session state for ``key`` if its field is present, else None.N)rz   r{   rm   rb   r    ©r*   r©   rœ   s   && r$   Ú_presentÚSessionFieldView._presentœ   sH   € à—‘Ó ×$Ñ$ SÓ)ˆØÒ)¨d¯j©j×.CÑ.CÀDÇKÁKÐPUÓDV×.WÒ.WˆuÐaÐ]aÐar'   c               ó    € V ^8„  d   QhRRRR/# )r   r©   r>   r    rY   r"   )r#   s   "r$   r%   r–   ¡   s   € ÷ ñ ˜ð  ñ r'   c                	óF   € V P                  V4      pVf   \        V4      hV# rf   )r¬   ÚKeyErrorr«   s   && r$   Ú_heldÚSessionFieldView._held¡   s$   € Ø—‘˜cÓ"ˆØŠ=Ü˜3“-ÐØˆr'   c               ó    € V ^8„  d   QhRRRR/# )r   r©   r>   r    r   r"   )r#   s   "r$   r%   r–   §   s   € ÷ ,ñ ,˜sð , sñ ,r'   c                	óB   € V P                  V P                  V4      4      # rf   )r    r±   ©r*   r©   s   &&r$   Ú__getitem__ÚSessionFieldView.__getitem__§   s   € Ø�{‰{˜4Ÿ:™: c›?Ó+Ð+r'   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r©   r>   r£   r   r    r!   r"   )r#   s   "r$   r%   r–   ª   s!   € ÷ ;ñ ;˜sð ;¨3ð ;°4ñ ;r'   c                	ó\   € V P                  V P                  P                  V4      V4       R # rf   )r¦   ru   Ú_session_state©r*   r©   r£   s   &&&r$   Ú__setitem__ÚSessionFieldView.__setitem__ª   s   € Ø�	‰	�$—,‘,×-Ñ-¨cÓ2°EÖ:r'   c               ó    € V ^8„  d   QhRRRR/# )r   r©   r>   r    r!   r"   )r#   s   "r$   r%   r–   ­   s   € ÷ 9ñ 9˜sð 9 tñ 9r'   c                	óx   € V P                  V P                  V4      V P                  P                  4       4       R # rf   )r¦   r±   rm   ra   rµ   s   &&r$   Ú__delitem__ÚSessionFieldView.__delitem__­   s%   € Ø�	‰	�$—*‘*˜S“/ 4§:¡:×#5Ñ#5Ó#7Ö8r'   c               ó   € V ^8„  d   QhRR/# )r   r    zIterator[str]r"   )r#   s   "r$   r%   r–   °   s   € ÷ Sñ S˜-ñ Sr'   c                	óJ   a € V 3R  l\        S P                  4       4       4       # )c              3  óR   <"  € T F  pSP                  V4      f   K  Vx € K  	  R # 5irf   ©r¬   )r‚   Úkr*   s   & €r$   r„   Ú,SessionFieldView.__iter__.<locals>.<genexpr>±   s    øé € ÐRÑ1�a°T·]±]À1Ó5E—’Ó1ùs   ƒ'�
')r4   rz   r)   s   fr$   Ú__iter__ÚSessionFieldView.__iter__°   s   ø€ ÜRœ4 §¡Ó 0Ô1ÓRÐRr'   c               ó    € V ^8„  d   QhRRRR/# )r   r©   r‹   r    rQ   r"   )r#   s   "r$   r%   r–   ³   s   € ÷ .ñ . ð .¨4ñ .r'   c                	ó(   € V P                  V4      R J# rf   rÅ   rµ   s   &&r$   Ú__contains__ÚSessionFieldView.__contains__³   s   € Ø�}‰}˜SÓ!¨Ð-Ð-r'   c               ó   € V ^8„  d   QhRR/# r   r"   )r#   s   "r$   r%   r–   ¶   s   € ÷ 3ñ 3�tñ 3r'   c                	ó´   € \        V P                  4       P                  4       4       F,  pV P                  WP                  P                  4       4       K.  	  R # rf   )r4   rz   Úvaluesr¦   rm   ra   rŸ   s   & r$   r+   ÚSessionFieldView.clear¶   s:   € Ü˜$Ÿ.™.Ó*×1Ñ1Ó3Ö4ˆEØ�I‰I�eŸZ™Z×/Ñ/Ó1Ö2ó 5r'   c               ó   € V ^8„  d   QhRR/# )r   r    r>   r"   )r#   s   "r$   r%   r–   º   s   € ÷ añ a˜#ñ ar'   c           	     	óš   € R V P                   P                   RV P                   P                   R\        V P	                  4       4      : R2# )zSessionFieldView(Ú.z, Ú))rm   r_   r`   r3   r�   r)   s   &r$   Ú__repr__ÚSessionFieldView.__repr__º   s>   € Ø" 4§:¡:×#3Ñ#3Ð"4°A°d·j±j·o±oÐ5FÀbÌÈdÏjÉjËlÓI[ÑH^Ð^_Ð`Ð`r'   )rm   )r-   r.   r/   r0   r1   r‘   rv   r    r¦   r¬   r±   r¶   r¼   rÀ   rÈ   rÌ   r+   rÖ   r5   Ú__classcell__)r™   s   @r$   r“   r“   �   sW   ø† ÙHà€I÷ð õJõJõbõ
õ,õ;õ9õSõ.õ3÷aó ar'   r“   c                  óf   € ] tR t^¾tRtRtR R ltR R ltR R ltR R	 lt	R
 R lt
R R ltRtR# )ÚTurnLeaseTokenViewz´Legacy (session_key, generation)-keyed view of ``_turn_lease_tokens``; the lease registry
serializes acquisition per session, so one ``TurnState`` slot per key equals the old dict.c               ó    € V ^8„  d   QhRRRR/# )r   r©   r   r    r   r"   )r#   s   "r$   r%   ÚTurnLeaseTokenView.__annotate__Ä   s   € ÷ ñ ˜ð  ñ r'   c                ó*  € \        V\        4      '       d   \        V4      ^8w  d   \        V4      hV P	                  4       P                  V^ ,          4      pVe#   V^,          VP                  P                  9  d   \        V4      hVP                  # )zKTurnState for a currently-held (session_key, generation) or raise KeyError.)rk   ÚtupleÚlenr°   rz   r{   rZ   r   r«   s   && r$   r±   ÚTurnLeaseTokenView._heldÄ   sl   € ä˜#œu×%Ò%¬¨S«°Q¬Ü˜3“-ÐØ—‘Ó ×$Ñ$ S¨¥VÓ,ˆØŠ=˜C �F¨%¯*©*×*AÑ*AÔAÜ˜3“-ÐØ�z‰zÐr'   c               ó    € V ^8„  d   QhRRRR/# )r   r©   r   r    r"   )r#   s   "r$   r%   rÜ   Í   s   € ÷ 4ñ 4˜sð 4 sñ 4r'   c                	óT   € V P                  V4      P                  V^,          ,          # )r�   ©r±   r   rµ   s   &&r$   r¶   ÚTurnLeaseTokenView.__getitem__Í   s   € Ø�z‰z˜#‹×+Ñ+¨C°­FÕ3Ð3r'   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r©   r   r£   r    r!   r"   )r#   s   "r$   r%   rÜ   Ð   s&   € ÷ Nñ N˜sð N¨3ð N°4ñ Nr'   c                	óæ   € \        V\        4      '       d   \        V4      ^8w  d   \        V4      hW P                  P                  V^ ,          4      P                  P                  V^,          &   R# )r   N)rk   rÞ   rß   r°   ru   rº   rZ   r   r»   s   &&&r$   r¼   ÚTurnLeaseTokenView.__setitem__Ð   sN   € Ü˜#œu×%Ò%¬¨S«°Q¬Ü˜3“-ÐØHM�‰×#Ñ# C¨¥FÓ+×0Ñ0×=Ñ=¸cÀ!½fÓEr'   c               ó    € V ^8„  d   QhRRRR/# )r   r©   r   r    r!   r"   )r#   s   "r$   r%   rÜ   Õ   s   € ÷ 1ñ 1˜sð 1 tñ 1r'   c                	óL   € V P                  V4      P                  V^,           R# r€   rã   rµ   s   &&r$   rÀ   ÚTurnLeaseTokenView.__delitem__Õ   s   € Ø�J‰J�s‹O×(Ñ(¨¨Q­Ò0r'   c               ó   € V ^8„  d   QhRR/# )r   r    zIterator[tuple[str, Any]]r"   )r#   s   "r$   r%   rÜ   Ø   s   € ÷ jñ jÐ3ñ jr'   c                	ó^   € R  \        V P                  4       P                  4       4       4       # )c              3  óx   "  € T F0  w  r\        VP                  P                  4       F  q1V3x € K
  	  K2  	  R # 5irf   )r4   rZ   r   )r‚   rÆ   ÚsÚgens   &   r$   r„   Ú.TurnLeaseTokenView.__iter__.<locals>.<genexpr>Ù   s1   é € ÐiÑ%C™T˜QÌtÐTU×TZÑTZ×TgÑTgÖOhÈ�C•ÑOh‘Ó%Cùs   ‚8:)r4   rz   r�   r)   s   &r$   rÈ   ÚTurnLeaseTokenView.__iter__Ø   s"   € Ùi¤T¨$¯.©.Ó*:×*@Ñ*@Ó*BÔ%CÓiÐir'   c               ó   € V ^8„  d   QhRR/# r   r"   )r#   s   "r$   r%   rÜ   Û   s   € ÷ ñ �tñ r'   c                	ó.   € \        V 4       F  pW K  	  R # rf   )r4   rµ   s   & r$   r+   ÚTurnLeaseTokenView.clearÛ   s   € Ü˜–:ˆCØ’	ó r'   r"   N)r-   r.   r/   r0   r1   r‘   r±   r¶   r¼   rÀ   rÈ   r+   r5   r"   r'   r$   rÚ   rÚ   ¾   s4   † ñbð €Iõõ4õNõ
1õj÷ñ r'   rÚ   Ú_running_agentsrZ   r   NÚ_running_agents_tsr   Ú_active_session_leasesr   Ú_busy_ack_tsr   Ú_session_model_overridesr[   r9   Ú _pending_one_turn_model_restoresr:   Ú_session_reasoning_overridesr;   Ú_session_service_tier_overridesr<   Ú_last_resolved_modelr?   Ú_queued_eventsr@   Ú_pending_turn_sidecar_notesrB   Ú_session_ephemeral_pinrC   Ú_session_vc_lastrF   Ú_pending_approvalsr\   rP   Ú_update_prompt_pendingrR   Ú&_pending_native_image_paths_by_sessionrS   Ú_pending_messagesrT   Ú_session_run_generationrV   zdict[str, _FieldSpec]ÚLEGACY_FIELD_SPECSc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú	make_viewzCallable[[Any], MutableMapping]Údocr>   r    Úpropertyr"   )r#   s   "r$   r%   r%   ÷   s'   € ÷ 	Tñ 	TÐ ?ð 	TÀcð 	TÈhñ 	Tr'   c                ó<   a € R V 3R llp\        S VV 3R lVR7      # )z¥Dict-shaped @property over a live view; the setter takes a plain dict (test pattern
``runner._X = {...}``): reset the field on every session, then apply the entries.c               ó$   € V ^8„  d   QhRRRRRR/# )r   r*   r   ÚmappingzOptional[dict[Any, Any]]r    r!   r"   )r#   s   "r$   r%   Ú&_legacy_property.<locals>.__annotate__û   s"   € ÷ #ñ #�3ð #Ð!9ð #¸dñ #r'   c                ón   <€ S! V 4      pVP                  4        TP                  T;'       g    / 4       R # rf   )r+   rK   )r*   r  Úviewr	  s   && €r$   ÚfsetÚ_legacy_property.<locals>.fsetû   s'   ø€ Ù˜‹ˆØ�
‰
ŒØ�‰�G—M�M˜rÖ"r'   c                ó0   <€ S! V 4      P                  4       # rf   )r+   )r*   r	  s   &€r$   rg   Ú"_legacy_property.<locals>.<lambda>   s   ø€ ±)¸D³/×2GÑ2GÔ2Ir'   )r
  )r  )r	  r
  r  s   f& r$   Ú_legacy_propertyr  ÷   s!   ø€ ÷#ð #ô
 �I˜tÔ%IÈsÔSÐSr'   c               ó    € V ^8„  d   QhRRRR/# )r   Ú	attr_namer>   r    r  r"   )r#   s   "r$   r%   r%     s   € ÷ ñ  Cð ¨Hñ r'   c                ót   a€ \         V ,          o\        V3R lRSP                   RSP                   R24      # )z8Legacy dict-shaped @property for one migrated attribute.c                ó   <€ \        V S4      # rf   )r“   )r*   r•   s   &€r$   rg   Ú&legacy_dict_property.<locals>.<lambda>  s   ø€ Ô% d¨DÔ1r'   z#Legacy dict view over SessionState.rÔ   z (for pre-SessionState tests).)r  r  r_   r`   )r  r•   s   &@r$   Úlegacy_dict_propertyr    s8   ø€ ä˜iÕ(€DÜÜ1Ø
-¨d¯j©j¨\¸¸4¿9¹9¸+ÐEcÐdóð r'   c               ó   € V ^8„  d   QhRR/# )r   r    r  r"   )r#   s   "r$   r%   r%     s   € ÷ ñ  Xñ r'   c                 ó"   € \        \        R4      # )zFLegacy (session_key, generation)-keyed view of held turn-lease tokens.z=Legacy (session_key, generation)-keyed turn-lease token view.)r  rÚ   r"   r'   r$   Úlegacy_lease_token_propertyr    s   € äÜÐ[óð r'   )(Ú__conditional_annotations__r1   Ú
__future__r   Úcollections.abcr   Údataclassesr   r   Útypingr   r   r   r	   r
   r   r   r   r‹   rM   ÚSERVICE_TIER_UNSETr   r7   rO   rY   r^   rm   ro   r“   rÚ   r   r>   r4   rQ   rU   r  r2   r  r  r  )r   s   @r$   Ú<module>r&     ss  øðôRõ
 #å *ß (ß S× SÓ Sñ ‹h€Ø Ð ð ÷1ð 1ó ð1ð4 ÷;ð ;ó ð;ð( ÷$ð $ó ð$ð6 ÷Ið Ió ðIô&�ô &õPô�.ô ô(.a�{ô .aôb˜ô ðF-Ø‘u˜V W¨dÓ3ð-à™% ¨°eÓ<ð-ð ™e F¨G°TÓ:ð-ð ‘E˜& -°Ó7ð	-ð
 ¡ nÐ6FÈÓ Mð-ð '©¨nÐ>PÐRVÓ(Wð-ð #¡E¨.Ð:NÐPTÓ$Uð-ð &¡u¨^Ð=TÐVaÓ'bð-ð ™E .Ð2GÈÓMð-ð ‘e˜N¨O¸TÓBð-ð "¡5¨¸È$Ó#Oð-ð ™e N°OÀTÓJð-ð ™˜n¨i¸Ó>ð-ð ™% ¨k¸4Ó@ð-ð ™e LÐ2IÈ4ÓPð-ð  -©e°LÐBVÐX\Ó.]ð!-ð" ™˜|Ð-CÀTÓJð#-ð$ ™u \Ð3CÀSÓIñ%-Ð Ð)ó õ,	Tõ÷r'   