+
    …WÝj«l  ã                  óÞ  € 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	H
t
 ^ RIHtH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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*/R+ R, llt!R- R. lt"R/ R0 lt#R1 R2 lt$R3 R4 lt%R5 R6 lt&R7R/R8 R9 llt'R7R/R: R; llt(R< R= lt)R> R? lt*R]R@ RA llt+RB RC lt,RD RE lt-RF RG lt. ! RH RI]/4      t0RJ RK lt1RL RM lt2RN RO lt3RP RQ lt4]5! 0 R^m4      t6RRRS ]5! 4       3RTRU ]63/t7]Pp                  ! RV4      t9RW RX lt:R_RY RZ llt;]<R[8X  d
   ];! 4        R# R# )`a-  Dependency-environment layout: where a project's venv generations live, which one
is selected, and the interpreter inside any venv. Shared by PM and pre-import launchers.

Only stdlib and hermes_constants: environment selection must work before
any dependency from that environment has been imported.
)ÚannotationsN)ÚPath)Úget_default_hermes_rootÚproject_venv_dirc               ó    € V ^8„  d   QhRRRR/# ©é   Úproject_rootr   ÚreturnÚstr© )Úformats   "ÚCC:\Users\johnn\AppData\Local\hermes\hermes-agent\pm\environments.pyÚ__annotate__r      s   € ÷ Fñ F˜dð F sñ Fó    c                óº   € \        \        V 4      P                  4       4      p\        P                  ! VP                  R 4      4      P                  4       R,          # )úutf-8:Né   N)r   r   ÚresolveÚhashlibÚsha256ÚencodeÚ	hexdigest)r	   Ú	canonicals   & r   Úinstall_keyr      sB   € Ü”D˜Ó&×.Ñ.Ó0Ó1€IÜ�>Š>˜)×*Ñ*¨7Ó3Ó4×>Ñ>Ó@ÀÕEÐEr   c               ó   € V ^8„  d   QhRR/# ©r   r
   r   r   )r   s   "r   r   r      s   € ÷ ]ñ ]˜dñ ]r   c                 óP   € ^ RI Hp Hp V! 4       pV'       d
   V ! VR7      # V ! 4       # )zBScope dependency state like a process launched in the active home.)r   Úget_hermes_home_override)Úhome)Úhermes_constantsr   r   )r   r   Úoverrides      r   Údependency_home_rootr"      s$   € çRá'Ó)€Hß5=Ñ"¨Ô1Ð\ÑCZÓC\Ð\r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   !   s   € ÷ /ñ /�tñ /r   c                 ó$   € \        4       R ,          # )Úinstalls)r"   r   r   r   Úinstalls_rootr&   !   s   € ÜÓ! JÕ.Ð.r   c               ó    € V ^8„  d   QhRRRR/# ©r   r	   r   r
   r   )r   s   "r   r   r   %   s   € ÷ 7ñ 7 Dð 7¨Tñ 7r   c                ó6   € \        4       \        V 4      ,          # ©N)r&   r   ©r	   s   &r   Úinstall_state_dirr,   %   s   € Ü‹?œ[¨Ó6Õ6Ð6r   c               ó    € V ^8„  d   QhRRRR/# ©r   r	   r   r
   úPath | Noner   )r   s   "r   r   r   )   s   € ÷ ñ  4ð ¨Kñ r   c                ó  € ^ RI Hp \        V 4      P                  4       p\	        V4      p\
        P                  VP                  V! 4       34       Uu. uF2  pVR,          V,          R,          P                  4       '       g   K0  VNK4  	  ppV'       g   R# \        W%4      ;'       g
    V^ ,          p VR,          V,          P                  4       \        V4      P                  4       8X  d   R#  V# u upi   \         d     T# i ; i)aL  The data root that owns this checkout when the active root only borrows it, else ``None``.

Dependency state is scoped per data root (``<root>/installs/<install_key>``), but a source
checkout -- its launchers, product builds and install stamp -- exists once. A launch under
another root (a test's temporary ``HERMES_HOME``, a per-task home, a CI service home) borrows
it: the root that installed it already holds committed state for it, under the root the
checkout sits in (``<root>/hermes-agent``) or else the platform default root. ``None`` when
the active root's state is that state (the owner itself, or one of its profiles), and when no
such root has state for this checkout -- a fresh install, or a custom root that owns its own
tree -- so those keep today's behaviour (#123238).

A borrowing launch's own sync leaves ``facts.json`` under the borrower too, so state alone
cannot name the owner. The checkout's ``hermes`` launcher can: only the owner publishes it,
and it execs the owner's store Python. With no live launcher to ask, the root the checkout
sits in outranks the platform default.
)Ú!_get_platform_default_hermes_homer%   ú
facts.jsonN)r    r1   r   r   r   ÚdictÚfromkeysÚparentÚis_fileÚ_launcher_bound_rootr,   ÚOSError)r	   r1   ÚrootÚkeyÚ	candidateÚ
candidatesÚowners   &      r   Úowning_home_rootr>   )   sñ   € õ" Cä�Ó×%Ñ%Ó'€DÜ
�dÓ
€CÜ-1¯]©]¸D¿K¹KÑIjÓIlÐ;mÔ-nó NÑ-n 	Ø *Õ,¨sÕ2°\ÕA×JÑJ×L÷ �)Ñ-n€Jð NçÙÜ  Ó2×CÐC°jÀµm€EðØ�JÕ Õ$×-Ñ-Ó/Ô3DÀTÓ3J×3RÑ3RÓ3TÔTÙð Uð €LùòNøô ô ØØ€Lðús   Á-C3ÂC3Â4:C8 Ã8DÄDc               ó$   € V ^8„  d   QhRRRRRR/# )r   r	   r   r<   z
list[Path]r
   r/   r   )r   s   "r   r   r   K   s!   € ÷ ñ  tð ¸ð Èñ r   c                óø  a€ ^ RI Hp V R,          R,          p\        P                  R8X  d   R
MR F¨  pV! W4,          4      pVe   VP	                  4       '       g   K-  V Fu  p VR,          P                  4       o\        ;QJ d)    V3R lVP                   4       F  '       g   K   RM	  R	M! V3R lVP                   4       4      '       d   Vu u # Kw  	  Kª  	  R#   \        \        \        3 d     K˜  i ; i)zXThe candidate whose ``tools/`` holds the live interpreter the checkout's launcher execs.)Ú_launcher_pythonú.hermesÚbinÚntNÚtoolsc              3  óH   <"  € T F  qP                  4       S8H  x € K  	  R # 5ir*   )r   )Ú.0r5   Ústores   & €r   Ú	<genexpr>Ú'_launcher_bound_root.<locals>.<genexpr>W   s   øé € ÐN¹~°V—~‘~Ó'¨5Ö0»~ùs   ƒ"TF)z
hermes.exez
hermes.cmd)Úhermes)Úhermes_cli._launchersrA   ÚosÚnamer6   r   ÚanyÚparentsr8   ÚRuntimeErrorÚ
ValueError)r	   r<   rA   ÚlocalrN   Úpythonr;   rH   s   &&     @r   r7   r7   K   sÇ   ø€ å6à˜9Õ$ uÕ,€EÜ13·±¸D´Ñ-ÀkÒQˆÙ! %¥,Ó/ˆØŠ> §¡×!1Ò!1ÙÛ#ˆIðØ" WÕ,×5Ñ5Ó7�ß“3ÔN¸v¿~º~ÓN—3—3’3ÔN¸v¿~º~ÓN×NÒNØ$Ô$ñ Oó $ñ	 Rñ øô œ\¬:Ð6ô Úðús   Á$A CÂ''CÃCÃC9Ã8C9c               ó$   € V ^8„  d   QhRRRRRR/# )r   r	   r   ÚexcÚPermissionErrorr
   z
str | Noner   )r   s   "r   r   r   ^   s"   € ÷ >ñ >°4ð >¸oð >ÐR\ñ >r   c                óÜ   € VP                   '       g   R# \        VP                   4      P                  4       pVP                  \	        V 4      P                  4       4      '       g   R# RV R2# )zBDescribe an access failure inside this install's dependency state.Nz,install state is not writable by this user (z1); run as the install owner or grant write access)Úfilenamer   r   Úis_relative_tor,   )r	   rV   Údenieds   && r   Ú install_state_permission_messager\   ^   s_   € à�<�<ˆ<ÙÜ�#—,‘,Ó×'Ñ'Ó)€FØ× Ñ Ô!2°<Ó!@×!HÑ!HÓ!J×KÒKÙØ:¸6¸(ð C=ð =ð >r   c               ó    € V ^8„  d   QhRRRR/# r(   r   )r   s   "r   r   r   i   s   € ÷ :ñ : Tð :¨dñ :r   c                ó&   € \        V 4      R ,          # )r2   ©r,   r+   s   &r   Úruntime_facts_pathr`   i   s   € Ü˜\Ó*¨\Õ9Ð9r   c               ó    € V ^8„  d   QhRRRR/# r(   r   )r   s   "r   r   r   r   s   € ÷ 6ñ 6¨ð 6°ñ 6r   c                ó&   € \        V 4      R,          # )zGBeside facts.json, so the runner finds it from ``$__HERMES_ACTIVATED``.Úinputsr_   r+   s   &r   Úactivation_inputs_dirrd   r   s   € ä˜\Ó*¨XÕ5Ð5r   c               ó    € V ^8„  d   QhRRRR/# )r   r	   r   r
   údict[str, int]r   )r   s   "r   r   r   w   s   € ÷ mñ m¨$ð m°>ñ mr   c                óÈ   € \        V 4      p\         Uu/ uFB  q!V,          P                  4       '       g   K!  W!V,          P                  4       P                  bKD  	  up# u upi )zwSnapshot before installing, so an input edited mid-install records its
pre-install mtime and the next run re-activates.)r   ÚACTIVATION_INPUTSr6   ÚstatÚst_mtime_ns)r	   r9   rN   s   &  r   Úactivation_input_mtimesrk   w   sP   € ô �Ó€DÝ?PÓlÑ?P°tÐ\`ÕU`×TiÑTi×TkÔ2ˆD˜$•;×$Ñ$Ó&×2Ñ2Ò2Ñ?PÑlÐlùÒls
   ”A·%Ac          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   Ústampsr   Úmtimesrf   r	   Útest_environmentÚboolr
   ÚNoner   )r   s   "r   r   r   ~   s2   € ÷ +ñ + Tð +°>ð +ÐQUð +Ðlpð +Ðuyñ +r   c               óÚ  € ^ RI pVP                  V RR7       V P                  RRR7       V R,          P                  \	        \        V4      P                  4       4      RR7       V'       d   V R,          P                  4        VP                  4        FS  w  rVW,          pVP                  P                  RRR7       VP                  4        \        P                  ! WvV3R	7       KU  	  R# )
a€  Give each stamp the exact mtime of the input the install was verified against.

Recorded on every successful install, including no-op syncs: a checkout that
rewrites an input without changing it moves the mtime, and only this record
brings the stamp back to equal. The runner compares for equality, not order,
because switching branches can move an input's mtime in either direction.
NT)Úignore_errors)rP   Úexist_okz.project-rootr   ©Úencodingz.test-environment)Úns)ÚshutilÚrmtreeÚmkdirÚ
write_textr   r   r   ÚtouchÚitemsr5   rM   Úutime)rm   rn   r	   ro   rx   rN   ÚmtimeÚstamps   &&&$    r   Úrecord_activation_inputsr�   ~   s³   € ó à
‡M�M�&¨€MÔ-ð ‡L�L˜¨€LÔ-ØˆoÕ×)Ñ)¬#¬d°<Ó.@×.HÑ.HÓ.JÓ*KÐV]Ð)Ô^ßØ	Ð%Õ	%×,Ñ,Ô.Ø—|‘|–~‰ˆØ•ˆØ�‰×Ñ 4°$ÐÔ7Ø�‰ŒÜ
�Š� 5˜>×*ó	 &r   c               ó    € V ^8„  d   QhRRRR/# )r   r9   r   r
   zdict | Noner   )r   s   "r   r   r   –   s   € ÷ dñ d˜Dð d [ñ dr   c                óü  a€  \         P                  ! V P                  R,          P                  RR7      4      o\        S\        4      '       d&   \        SP                  R4      \        4      '       g   R# SP                  R/ 4      p\        T\        4      '       d   TP                  R/ 4      MRp\        T\        4      ;'       dc    \        TP                  RR	4      \        4      ;'       d;    \        ;QJ d    T3R
 lR 4       F  '       d   K   RM	  RM! T3R
 lR 4       4      pT'       d0   T P                  SR,          ,          P                  4       T 8X  d   S# R#   \        \
        3 d     R# i ; i)aH  The manifest of the sealed payload whose tree is the resolved *root*, or ``None``.

Every install asks, so a ``manifest.json`` that some other tool left beside a
checkout, or one with a mistyped field, must read as "not a payload", never as an
error. Readers then take each field with ``.get`` and treat an absent one as unset.
zmanifest.jsonú	utf-8-sigru   NÚrepoÚruntimeÚcommandsrK   Ú c              3  ód   <"  € T F%  p\        SP                  VR 4      \        4      x € K'  	  R# 5i)rˆ   N)Ú
isinstanceÚgetr   )rG   r:   Úmanifests   & €r   rI   Ú$_payload_manifest.<locals>.<genexpr>§   s(   øé € Ð_ÑM^Àcœ: h§l¡l°3¸Ó&;¼S×AÐAÓM^ùs   ƒ-0FT)ÚvenvrH   )ÚjsonÚloadsr5   Ú	read_textr8   rR   rŠ   r3   r‹   r   Úallr   )r9   r†   r‡   Úwell_formedrŒ   s   &   @r   Ú_payload_manifestr”   –   s'  ø€ ðÜ—:’:˜tŸ{™{¨_Õ<×GÑGÐQ\ÐGÓ]Ó^ˆô �h¤×%Ò%¬Z¸¿¹ÀVÓ8LÌc×-RÒ-RÙØ�l‰l˜9 bÓ)€GÜ.8¸Ä$×.GÒ.Gˆw�{‰{˜: rÔ*ÈT€HÜ˜h¬Ó-÷ `ð `Ü! (§,¡,¨x¸Ó"<¼cÓB÷`ð `ç“sÔ_ÑM^Ó_—s—s’sÔ_ÑM^Ó_Ó_ð ÷ #¨¯©°h¸vÕ6FÕ(F×'OÑ'OÓ'QÐUYÔ'Yˆ8ÐcÐ_cÐcøô ”ZÐ ô Úðús   ƒ7E& Å&E;Å:E;c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r9   r   Úrelativer   Úwhatr
   r   )r   s   "r   r   r   «   s(   € ÷ ñ ˜ð ¨ð °3ð ¸4ñ r   c                ó¨   € V P                   V,          P                  4       pVP                  V P                   4      '       g   \        RV R24      hV# )z^*relative* resolved inside the payload that holds *root*; a manifest may not point outside it.zpayload z escapes its root)r5   r   rZ   rQ   )r9   r–   r—   Úpaths   &&& r   Ú_payload_pathrš   «   sH   € à�K‰K˜(Õ"×+Ñ+Ó-€DØ×Ñ˜tŸ{™{×+Ò+Ü˜X d VÐ+<Ð=Ó>Ð>Ø€Kr   c               ó    € V ^8„  d   QhRRRR/# r.   r   )r   s   "r   r   r   ³   s   € ÷ Fñ F˜tð F¨ñ Fr   c                ó¨   € \        V 4      P                  4       p\        V4      ;'       g    / P                  R4      pV'       d   \	        WR4      # R# )zDThe environment a sealed payload ships beside its tree, or ``None``.rŽ   ÚenvironmentN)r   r   r”   r‹   rš   )r	   r9   rŽ   s   &  r   Úpayload_venvrž   ³   sF   € ä�Ó×%Ñ%Ó'€DÜ˜dÓ#×)Ð) r×.Ñ.¨vÓ6€Dß7;Œ=˜ ]Ó3ÐEÀÐEr   c               ó    € V ^8„  d   QhRRRR/# ©r   r9   r   r
   r/   r   )r   s   "r   r   r   º   s   € ÷ Iñ I $ð I¨;ñ Ir   c                ó¶   € \        V 4      ;'       g    / P                  R / 4      P                  R/ 4      P                  R4      pV'       d   \        WR4      # R# )r†   r‡   rK   ÚlauncherN)r”   r‹   rš   )r9   Úcommands   & r   Ú_payload_hermes_commandr¤   º   sO   € Ü  Ó&×,Ð,¨"×1Ñ1°)¸RÓ@×DÑDÀZÐQSÓT×XÑXÐYaÓb€Gß7>Œ=˜¨
Ó3ÐHÀDÐHr   c               ó    € V ^8„  d   QhRRRR/# r.   r   )r   s   "r   r   r   ¿   s   € ÷ /ñ / dð /¨{ñ /r   c                ór   € \        \        V 4      P                  4       4      pV'       d   VP                  # R# )zXThe directory holding a sealed payload's own launchers (``<payload>/bin``), or ``None``.N)r¤   r   r   r5   ©r	   r£   s   & r   Úpayload_command_dirr¨   ¿   s+   € ä%¤d¨<Ó&8×&@Ñ&@Ó&BÓC€Gß$ˆ7�>‰>Ð.¨$Ð.r   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   r   Å   s   € ÷ Fñ F 4ð F¨Cñ Fr   c                ó�   € \        \        V 4      P                  4       4      pV'       d   VP                  P	                  R4      # R# )zÀThe name a person types to run this install's CLI.

A desktop channel build publishes its launcher under a qualified name
(``hermes-canary``) so it never shadows another install's ``hermes``.
z.exerK   )r¤   r   r   rN   Úremovesuffixr§   s   & r   Úcli_command_namer¬   Å   s8   € ô &¤d¨<Ó&8×&@Ñ&@Ó&BÓC€Gß07ˆ7�<‰<×$Ñ$ VÓ,ÐE¸XÐEr   c               ó    € V ^8„  d   QhRRRR/# r(   r   )r   s   "r   r   r   Ï   s   € ÷ Añ A˜Dð A Tñ Ar   c                ó¼   € \        V 4      ;'       gK    \        \        V 4      P                  4       4      ;'       g!    \        V 4      P                  4       R ,          # )rŽ   )rž   r   r   r   r+   s   &r   Ú	base_venvr¯   Ï   s^   € Ü˜Ó%÷  Að  AÔ)9¼$¸|Ó:L×:TÑ:TÓ:VÓ)W÷  Að  AÔ[_Ð`lÓ[m×[uÑ[uÓ[wð  {Aõ  \Að  Ar   Úhonor_runtime_overrideTc               ó$   € V ^8„  d   QhRRRRRR/# )r   r	   r   r°   rp   r
   r   )r   s   "r   r   r   Ó   s!   € ÷ /ñ /˜Tð /¸dð /Èdñ /r   c               ó  € V'       dA   \         P                  P                  R4      pV'       d   \        V4      P	                  4       # \        V 4      P	                  4       p\        V4      ;'       g    / P                  R4      pV'       d   \        W4R4      # ^ RIHp V.VP                  O F¡  pV! V4      pVP                  4       '       g   K#   \        P                  ! VP                  RR7      4      p\#        T\$        4      '       d   TP                  R4      MRp	T	'       d   \        T	4      P	                  4       u # \!        T4      u # 	  \'        4       R,          #   \        \        3 d    \!        T4      u u # i ; i)	ax  Resolve a payload-relative or stamped store before PM imports.

``HERMES_RUNTIME_DIR`` exists so a running process can point PM at a
non-default runtime location. Publication paths must pass
``honor_runtime_override=False``: a persisted artifact (an installed
launcher) has to bind the store of the tree it serves, never a runtime
directory inherited through the environment.
ÚHERMES_RUNTIME_DIRrH   )Úinstall_stamp_pathr„   ru   Ú
runtimeDirNrE   )rM   Úenvironr‹   r   r   r”   rš   Úpm.pathsr´   rP   r6   r�   r�   r‘   r8   rR   Ú_unstamped_storerŠ   r3   r   )
r	   r°   r!   r9   rH   r´   Ú	directoryr€   ÚdataÚvalues
   &$        r   Ú
store_rootr¼   Ó   s+  € ÷ Ü—:‘:—>‘>Ð"6Ó7ˆßÜ˜“>×)Ñ)Ó+Ð+Ü�Ó×%Ñ%Ó'€DÜ˜tÓ$×*Ð*¨×/Ñ/°Ó8€EßÜ˜T¨'Ó2Ð2Ý+àÐ*˜TŸ\™\Ó*ˆ	Ù" 9Ó-ˆØ�=‰=�?Œ?ð.Ü—z’z %§/¡/¸; /Ó"GÓH�ô /9¸¼t×.DÒ.D�D—H‘H˜\Ô*È$ˆEß,1”4˜“;×&Ñ&Ó(ÒMÔ7GÈÓ7MÒMñ +ô #Ó$ wÕ.Ð.øô	 œZÐ(ô .Ü'¨Ó-Ô-ð.ús   Ã&E%Å%FÆFc               ó    € V ^8„  d   QhRRRR/# r(   r   )r   s   "r   r   r   ò   s   € ÷ Sñ S 4ð S¨Dñ Sr   c                óJ   € \        V 4      ;'       g    \        4       R,          # )aˆ  The store of a stamp that names none (source stamps never do): the owning root's.

The data root's ``tools/`` is the default, but a borrowing root's would be a new store per
temporary home -- a full tool download on its first launch, and an interpreter that dies
with the home. The checkout's own launchers exec the owner's interpreter, so a borrowing
launch resolves the same one (#123238).
rE   )r>   r   r+   s   &r   r¸   r¸   ò   s    € ô ˜\Ó*×GÐGÔ.EÓ.GÈ7ÕRÐRr   c               ó   € V ^8„  d   QhRR/# )r   r
   rq   r   )r   s   "r   r   r   ý   s   € ÷ ñ  ñ r   c                 óB   € \        \        RR4      p V e
   V ! 4        R# R# )a¾  Make a finished generation tree durable before a selection record names it.

The selection record (the install's facts.json, a side environment's
active.json) is written last, atomically and fsynced, so it doubles as the
generation's completion marker -- but only if every file it vouches for
reached the disk first. Otherwise a power loss can persist the record while
the tree's data is still in the page cache, selecting a half-written venv.
One filesystem-wide sync instead of an fsync per file: a venv holds tens of
thousands of files, and per-file flushes cost minutes on slow disks.

Windows has no whole-filesystem flush reachable from Python (os.sync does
not exist there), and FlushFileBuffers per file is the slow path rejected
above. There the record's atomic write is the only guarantee: it is never
torn, but NTFS journals metadata, not file contents, so power loss right
after a publish can still leave the selected tree with incomplete files.
ÚsyncN)ÚgetattrrM   )rÁ   s    r   Úflush_before_selectingrÃ   ý   s"   € ô" ”2�v˜tÓ$€DØÒÙŽñ r   c               ó    € V ^8„  d   QhRRRR/# r(   r   )r   s   "r   r   r     s   € ÷ 	Cñ 	C ð 	C¨ñ 	Cr   c                ó>   € \        V 4      ;'       g    \        V 4      # )aª  Use the committed environment, or the original install before first sync.

A broken committed selection is an error, not permission to load an older
dependency set silently. Reading this function never creates user state.
The record itself is the completion marker: it is only written after
``flush_before_selecting``, so the ``pyvenv.cfg`` probe below is a sanity
check against a vanished tree, not the durability guarantee.
)Ú_recorded_venvr¯   r+   s   &r   Úselected_venvrÇ     s   € ô ˜,Ó'×BÐB¬9°\Ó+BÐBr   c               ó    € V ^8„  d   QhRRRR/# r.   r   )r   s   "r   r   r     s   € ÷ Fñ F ð F¨+ñ Fr   c                ó>   € \        V 4      ;'       g    \        V 4      # )aq  The environment PM committed for this install (or a sealed payload's own), else ``None``.

Unlike ``selected_venv`` this never answers with the in-tree ``venv``/``.venv``: that tree
predates PM and is built for whichever interpreter created it, so loading it from PM's store
Python mixes ABIs (compiled modules vanish) and PM deletes it once a generation is committed.
)rÆ   rž   r+   s   &r   Úcommitted_venvrÊ     s   € ô ˜,Ó'×EÐE¬<¸Ó+EÐEr   c               ó    € V ^8„  d   QhRRRR/# r.   r   )r   s   "r   r   r   )  s   € ÷ ñ  ð ¨+ñ r   c                óÄ  € \        V 4      p \        P                  ! VP                  R R7      4      p TP                  R/ 4      P                  R/ 4      pTP                  R4      pTf   R# \        T\        4      '       g   \        R4      h\        T4      P                  4       p\        T 4      R	,          pTP                  TP                  4       4      '       d   TR
,          P!                  4       '       g   \        RT 24      hT#   \         d     R# \
        \        3 d   p\        RT 24      ThRp?ii ; i  \         d   p\        RT 24      ThRp?ii ; i)r„   ru   Nz$cannot read dependency environment: ÚpackagesrŽ   r�   z'invalid dependency environment record: z#invalid dependency environment pathÚenvironmentsú
pyvenv.cfgz;dependency environment is missing or outside this install: )r`   r�   r�   r‘   ÚFileNotFoundErrorr8   rR   rQ   r‹   ÚAttributeErrorrŠ   r   r   r   r,   rZ   r6   )r	   r™   rº   rV   Úfactr»   r�   Úgenerationss   &       r   rÆ   rÆ   )  sK  € Ü˜lÓ+€DðSÜ�zŠz˜$Ÿ.™.°+˜.Ó>Ó?ˆð
VØ�x‰x˜
 BÓ'×+Ñ+¨F°BÓ7ˆØ—‘˜Ó'ˆð ‚}ÙÜ�eœS×!Ò!ÜÐ@ÓAÐAÜ�u“+×%Ñ%Ó'€KÜ# LÓ1°NÕB€KØ×%Ñ% k×&9Ñ&9Ó&;×<Ò<À[ÐS_ÕE_×DhÑDh×DjÒDjÜÐXÐYdÐXeÐfÓgÐgØÐøô# ô ÚÜ”ZÐ ô SÜÐAÀ$ÀÐHÓIÈsÐRûðSûô
 ô VÜÐDÀTÀFÐKÓLÐRUÐUûðVús:   �&D ´3E  ÄD=ÄD=Ä(D=Ä)D8Ä8D=Å EÅEÅEÚwindowsc               ó$   € V ^8„  d   QhRRRRRR/# ©r   rŽ   r   rÔ   zbool | Noner
   r   )r   s   "r   r   r   A  s!   € ÷ :ñ :�tð :¨ð :Àñ :r   c               ót   € Vf   \         P                  R8H  p\        V 4      V'       d	   R,          # R,          # )uÞ   ``Scripts`` on Windows, ``bin`` elsewhere. Returned unconditionally â€” callers
differ on whether a missing venv is an error. *windows* lets a POSIX process
reason about a Windows layout (update hand-off, launcher repair).rD   ÚScriptsrC   )rM   rN   r   )rŽ   rÔ   s   &$r   Úvenv_bin_dirrÙ   A  s/   € ð ‚Ü—'‘'˜T‘/ˆÜ�‹:§g˜Õ9Ð9°5Õ9Ð9r   c               ó$   € V ^8„  d   QhRRRRRR/# rÖ   r   )r   s   "r   r   r   J  s&   € ÷ Oñ O�dð O¨ð O¸tñ Or   c               ó\   € \        WR7      pY"P                  R8X  d	   R,          # R,          # )z.The interpreter inside *venv* (may not exist).)rÔ   rØ   z
python.exerT   )rÙ   rN   )rŽ   rÔ   Úbin_dirs   &$ r   Úvenv_pythonrÝ   J  s(   € ä˜4Ô1€GØ§l¡l°iÔ&?�lÕNÐNÀXÕNÐNr   c               ó    € V ^8„  d   QhRRRR/# r(   r   )r   s   "r   r   r   P  s   € ÷ 4ñ 4 ð 4¨$ñ 4r   c                ó*   € \        \        V 4      4      # )zKThe interpreter of the committed dependency environment for *project_root*.)rÝ   rÇ   r+   s   &r   Úproject_pythonrà   P  s   € ä”} \Ó2Ó3Ð3r   c               ó    € V ^8„  d   QhRRRR/# r    r   )r   s   "r   r   r   U  s   € ÷ 8ñ 8 ð 8¨ñ 8r   c                ó  € \        V 4      pVe1   \        VP                  RR4      4      P                  R4      '       d   R# VP                  R/ 4      P                  R4      p\	        V\        4      '       d	   V'       g   R# \        WR4      # )zSA sealed payload's own interpreter when a venv must not be entered through its own.NÚtargetrˆ   z-bionicr†   ÚstorePythonÚinterpreter)r”   r   r‹   ÚendswithrŠ   rš   )r9   rŒ   r–   s   &  r   Ú_payload_store_pythonrç   U  so   € ä  Ó&€HØÒœ3˜xŸ|™|¨H°bÓ9Ó:×CÑCÀI×NÒNÙØ�|‰|˜I rÓ*×.Ñ.¨}Ó=€HÜ�h¤×$Ò$¯HÙÜ˜¨Ó7Ð7r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r	   r   rŽ   Úoptionsztuple[str, ...] | list[str]r
   z	list[str]r   )r   s   "r   r   r   `  s0   € ÷ Sñ S˜tð S¨4ð SÐ:Uð SÐ_hñ Sr   c                ód  € \        V 4      P                  4       p\        V4      pVf   \        \	        V4      4      .VO# \        \
        4      P                  4       P                  R4      p. VORV9   d   . MR.Op\        V4      .VO\        V4      N\        \        \        V4      4      4      N# )u�  The argv prefix that runs Python inside *venv*; append a script, ``-c`` or ``-m``.

A sealed payload never enters a venv through ``Scripts\python.exe``. That redirector sits
outside the package and starts PM's writable copy of the Python (``pm._uv._toolchain``),
and a process on that copy has no package identity, so Windows refuses it the package's
git, rg and PM worker (WinError 5). Instead the payload's own interpreter attaches the
venv's site-packages (``pm/_venv_entry.py``): the same contract as the payload's
launchers and its PM worker. Elsewhere the venv's interpreter runs as is. *options* are
interpreter flags (``-I``, ``-u``, ``-X â€¦``).
z_venv_entry.pyz-S)r   r   rç   r   rÝ   Ú__file__Ú	with_nameÚsite_packages)r	   rŽ   ré   r9   Ústore_pythonÚentryÚflagss   &&&    r   Úvenv_commandrñ   `  s¥   € ô �Ó×%Ñ%Ó'€DÜ(¨Ó.€LØÒÜ”K Ó%Ó&Ð1¨Ð1Ð1Ü”‹N×"Ñ"Ó$×.Ñ.Ð/?Ó@€EØ<ˆgÐ<˜t wœ™°T°FÐ<€EÜ�ÓÐR ÐR¤s¨5£zÐR´3´}ÄTÈ$ÃZÓ7PÓ3QÐRÐRr   c               ó    € V ^8„  d   QhRRRR/# )r   rŽ   r   r
   ztuple[int, int] | Noner   )r   s   "r   r   r   t  s   € ÷ ñ ˜dð Ð'=ñ r   c                ó`  €  V R,          P                  RR7      P                  4        F«  pVP                  R4      w  r#pVP                  4       R
9  d   K.  VP                  4       P                  R4      w  rSpVP                  R4      w  p pVP	                  4       '       g   K}  VP	                  4       '       g   K•  \        V4      \        V4      3u # 	   \        V R,          P                  R4      4      pT F‹  p	T	P                  P                  R	4      P                  R4      w  rSpTP                  R4      w  p pTP	                  4       '       g   K]  TP	                  4       '       g   Ku  \        T4      \        T4      3u # 	  R#   \         d     LÂi ; i  \         d     R# i ; i)aõ  The interpreter version a POSIX venv actually holds, or ``None``.

``site_packages`` must not date the tree from the CALLER's ``sys.version_info``:
an update can rebuild the dependency environment with a different Python than
the launcher that later imports it. Observed on an app-driven upgrade -- PM
built the environment with CPython 3.14 while the PATH shim ran 3.11, so the
shim composed ``lib/python3.11/site-packages`` inside a 3.14 venv, found no
tree, and failed *after* a successful update.
rÏ   r„   ru   Ú=Ú.Úlibzpython3*NrT   )ÚversionÚversion_info)r‘   Ú
splitlinesÚ	partitionÚstripÚisdigitÚintr8   ÚsortedÚglobrN   Úremoveprefix)
rŽ   Úliner:   Ú_r»   ÚmajorÚrestÚminorr<   r;   s
   &         r   Úvenv_python_versionr  t  s]  € ð
Ø˜LÕ(×3Ñ3¸[Ð3ÓI×TÑTÖVˆDØ ŸN™N¨3Ó/‰MˆC�EØ�y‰y‹{Ð"=Ô=ÙØ"Ÿ[™[›]×4Ñ4°SÓ9‰NˆE�dØŸ.™.¨Ó-‰KˆE�1�aØ�}‰}�Œ 5§=¡=§?¤?Ü˜5“z¤3 u£:Ð-Ò-ñ WðÜ˜T E�\×/Ñ/°
Ó;Ó<ˆ
ó  ˆ	Ø"Ÿ™×4Ñ4°XÓ>×HÑHÈÓM‰ˆ�$Ø—n‘n SÓ)‰ˆˆq�!Ø�=‰=�?Œ?˜uŸ}™}ŸœÜ�u“:œs 5›zÐ)Ò)ñ	  ñ
 øô ô Ùðûô ô Úðús6   ‚BF Â&F Â>F ÃF Ã!F ÆFÆFÆF-Æ,F-c               ó    € V ^8„  d   QhRRRR/# )r   rŽ   r   r
   r   )r   s   "r   r   r   •  s   € ÷ Gñ G˜ð G ñ Gr   c                ó   € ^ RI p\        P                  R8X  d
   V R,          # \        V 4      ;'       g-    VP                  P
                  VP                  P                  3pV RV^ ,           RV^,           R2,          # )é    NrD   zLib/site-packagesz
lib/pythonrõ   z/site-packages)ÚsysrM   rN   r  rø   r  r  )rŽ   r
  r÷   s   &  r   rí   rí   •  sm   € Ûä	‡w�w�$„ØÐ)Õ)Ð)Ü! $Ó'×[Ð[¨C×,<Ñ,<×,BÑ,BÀC×DTÑDT×DZÑDZÐ+[€GØ�J˜w q�z˜l¨!¨G°A­J¨<°~ÐFÕFÐFr   c               ó    € V ^8„  d   QhRRRR/# )r   r	   r   r
   rp   r   )r   s   "r   r   r   ž  s   € ÷ Qñ Q°Dð Q¸Tñ Qr   c                ó(  a€ ^ RI p \        \        V 4      4      P                  4       o\        ;QJ d)    T3R lTP                   4       F  '       g   K   R# 	  R# ! T3R lTP                   4       4      #   \        \
        \        3 d     R# i ; i)uu  Does this process run on the environment PM selected for the install (base venv or committed
generation)?

A lazy sync from any other interpreter â€” a build_environment test venv, a developer's own venv,
a Nix store Python â€” must not commit the install's selection: activation is a boot decision, so
this process keeps running unchanged while every process booted afterwards swaps onto a
generation that lacks whatever the foreign interpreter carried.

activate_dependencies puts the selection's site-packages on sys.path without changing
sys.prefix, so sys.path is the signal (the same one ensure_import reads after a sync).
NFc              3  ón   <"  € T F*  q'       g   K  \        V4      P                  4       S8H  x € K,  	  R # 5ir*   )r   r   )rG   rï   Úselecteds   & €r   rI   Ú4running_from_selected_environment.<locals>.<genexpr>°  s(   øé € ÐP¹h°UË%Ô0Œt�E‹{×"Ñ"Ó$¨Ö0»hùs   ƒ	5‘$5T)	r
  rí   rÇ   r   r8   rQ   rR   rO   r™   )r	   r
  r  s   & @r   Ú!running_from_selected_environmentr  ž  ss   ø€ ó ðÜ ¤¨|Ó!<Ó=×EÑEÓGˆ÷ ‹3ÔP¸c¿hºhÓP�3Œ3ÐPŠ3ÐPˆ3ÔP¸c¿hºhÓPÓPÐPøô ”\¤:Ð.ô Úðús   ‡"A7 Á7BÂBc                  ó   € ] tR tRtRtRtR# )ÚNoCommittedEnvironmenti³  z[PM's store Python with no committed generation: no retry fixes it, only `hermes pm repair`.r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   r   r   r  r  ³  s   † Ýer   r  c               ó    € V ^8„  d   QhRRRR/# ©r   r	   r   r
   rq   r   )r   s   "r   r   r   ·  s   € ÷ `ñ `¨Dð `°Tñ `r   c                óü   € ^ RI pVP                  VP                  8w  d   R# \        VP                  4      P	                  4       P                  \        V 4      P	                  4       4      '       d   \        R4      hR# )zøWith nothing committed, an interpreter keeps the packages it booted with.

PM's store Python boots with none, so for it there is nothing to keep: refuse instead of
running on whatever PYTHONPATH it inherited (historically the pre-PM in-tree venv).
Nz7no dependency environment is committed for this install)r
  ÚprefixÚbase_prefixr   r   rZ   r¼   r  )r	   r
  s   & r   Ú_require_own_dependenciesr  ·  s]   € ó à
‡z�z�S—_‘_Ô$ÙÜˆC�O‰OÓ×$Ñ$Ó&×5Ñ5´jÀÓ6N×6VÑ6VÓ6X×YÒYÜ$Ð%^Ó_Ð_ñ Zr   c               ó    € V ^8„  d   QhRRRR/# r  r   )r   s   "r   r   r   Å  s   € ÷ ?Tñ ?T¨ð ?T°ñ ?Tr   c                ó  € ^ RI p\        V 4      pVP                  4       '       dÙ   ^ RIHpHpHp V! V 4      ;_uu_ 4       pV'       d	   V! V 4       \        V 4      pVf   \        V 4      uuRRR4       # V! V4      pV'       g&   \        V 4      ;p	RV39  d   V! 4        Y•! V	4      r‡K-  \        V4      p
V
P                  4       '       g+   \        V 4      P                  4       '       g    RRR4       R# RRR4       M=\        V 4      pVf   \        V 4      # \        V4      p
V
P                  4       '       g   R# X
P                  4       '       g   \        RV
 24      h^ RIpVP                   Uu. uFO  p\!        V4      P"                  R9  g   K  \!        V4      P%                  4       V P%                  4       8w  g   KM  VNKQ  	  upVP                  R&   VP'                  \)        V
4      4       \)        V P%                  4       4      \)        V
4      .VP                   Uu. uF3  p\!        V4      P%                  4       V
P%                  4       8w  g   K1  VNK5  	  upOVP                  R&   \*        P,                  P/                  \)        V P%                  4       4      \)        V
4      .4      \*        P0                  R&   \*        P0                  P3                  RR4       \5        V 4      ;'       g    V P%                  4       R,          R,          .p\*        P"                  R	8X  d   \7        V P%                  4       4      f   VP9                  \;        X4      4       V Uu. uF%  qîP                  4       '       g   K  \)        V4      NK'  	  ppV'       dU   \*        P,                  P/                  . VO\*        P0                  P=                  R
R4      N4      \*        P0                  R
&   R# R#   + '       g   i     EL¾; iu upi u upi u upi )zÛSelect the committed tree at process boot, before third-party imports.

A process with no extension selection keeps its original launch contract.
Already-running processes are never switched after a dependency install.
N)Úruntime_lockÚrecover_publicationÚlease_generationz-dependency environment has no site-packages: :NNNÚ
PYTHONPATHÚVIRTUAL_ENVrB   rC   rD   ÚPATHrˆ   )zsite-packageszdist-packages)r
  r,   Úis_dirÚhermes_cli.runtime_stater!  r"  r#  rÊ   r  rí   r`   r6   rž   rQ   Úsiter™   r   rN   r   Ú
addsitedirr   rM   ÚpathsepÚjoinr¶   Úpopr¨   r”   ÚappendrÙ   r‹   )r	   r
  Ústater!  r"  r#  Úheldr�   ÚreleaseÚcurrentr  r)  rï   Údirectoriesr™   r  s   &               r   Úactivate_dependenciesr4  Å  s  € ó ä˜lÓ+€EØ‡|�|‡~‚~ß`Ñ`ñ ˜,×'Ô'¨4ßÙ# LÔ1Ü(¨Ó6ˆKØÒ"Ü0°Ó>÷ (Ò'ñ ' {Ó3ˆG÷ ¬>¸,Ó+GÐ G ÐQUÐWbÐPcÔcÙ”	Ø'.Ð0@ÀÓ0IšWÜ$ [Ó1ˆHØ—?‘?×$Ò$Ô-?ÀÓ-M×-UÑ-U×-WÒ-WØ÷ (×'Ò'ô$ # <Ó0ˆØÒÜ,¨\Ó:Ð:Ü  Ó-ˆØ�‰× Ò ÙØ�?‰?×ÒÜÐJÈ8È*ÐUÓVÐVÛà&)§h¢hó H¡h˜UÜ˜5“k×&Ñ&Ð.PÑPô ä˜E“{×*Ñ*Ó,°×0DÑ0DÓ0FÑF÷ �5¡hñ H€C‡H�HˆQ�Kð 	‡O�O”C˜“MÔ"Ü�|×+Ñ+Ó-Ó.´°H³ð bØ(+¯ªÓ`©˜u´D¸³K×4GÑ4GÓ4IÈX×M]ÑM]ÓM_Ñ4_—U�U©Ñ`ðb€C‡H�HˆQ�Kä!Ÿz™zŸ™´°L×4HÑ4HÓ4JÓ0KÌSÐQYË]Ð/[Ó\„B‡J�Jˆ|ÑÜ‡J�J‡N�N�= $Ô'ô
 ' |Ó4×bÐb¸×8LÑ8LÓ8NÐQZÕ8ZÐ]bÕ8bÐc€Kô �G‰G�tŒOÔ 1°,×2FÑ2FÓ2HÓ IÒ UØ×Ñœ<¨Ó4Ô5Ù$/ÓA¡K˜D·;±;·=ŒiŒc�$Ži¡K€FÐAßÜŸZ™ZŸ_™_Ð-R¨vÐ-R´r·z±z·~±~ÀfÈbÓ7QÐ-RÓSŒ�
‰
�6Óñ ÷a (×'Ð'üò8Hùò aùò BsC   Á *O(Á5O(ÂA&O(Å1O<Æ)O<Ç O<È!.PÉPÍPÍ9PÏ(O9	c               ó    € V ^8„  d   QhRRRR/# )r   r	   r   r
   údict[str, str]r   )r   s   "r   r   r     s   € ÷ ñ ¨ð °.ñ r   c                ó²  € ^ RI Hp ^ RIHp V! V! 4       !  p\	        V 4      pVP                  RR4       VP                  RR4       \        P                  P                  \        V P                  4       4      .V'       d   \        \        V4      4      .M. O4      VR&   \        \        V 4      4      VR&   ^ RIHp V! V 4      pVe   \        V4      VR	&   V# )
zFRead the installed PM environment; do not provision or switch imports.)Úenv_for)Úall_packagesÚ
PYTHONHOMENr%  r$  Ú__HERMES_ACTIVATED)Útestenv_pythonÚ__HERMES_TEST_PYTHON)Ú
pm.installr8  Úpm.registryr9  rÊ   r-  rM   r+  r,  r   r   rí   r`   Ú
pm.testenvr<  )r	   r8  r9  Úenvr�   r<  Útest_pythons   &      r   Úactivation_environmentrC    sÇ   € å"Ý(á
‘<“>Ñ
"€CÜ  Ó.€KØ‡G�GˆL˜$ÔØ‡G�GˆM˜4Ô ô Ÿ
™
Ÿ™¬¨\×-AÑ-AÓ-CÓ)Dð )fßP[¬C´¸kÓ0JÓ,KÑ+LÐacð)fó g€CˆÑô !$Ô$6°|Ó$DÓ E€CÐÑõ *á  Ó.€KØÒÜ&)¨+Ó&6ˆÐ"Ñ#Ø€Jr   c               ó    € V ^8„  d   QhRRRR/# )r   r»   r   r
   r   )r   s   "r   r   r   $  s   € ÷ Gñ G�sð G˜sñ Gr   c                ób   € RV P                  RR4      P                  RR4      ,           R,           # )zJInside fish single quotes only backslash and the quote itself are special.Ú'Ú\z\\z\')Úreplace)r»   s   &r   Ú_fish_quoterI  $  s*   € à�—‘˜t VÓ,×4Ñ4°S¸%Ó@Õ@À3ÕFÐFr   Úshc                ó:   € R V  R\         P                  ! V4       2# )zexport rô   )ÚshlexÚquote©rN   r»   s   &&r   Ú<lambda>rO  4  s   €  ¨¨¨a´·²¸EÓ0BÐ/CÑDr   Úfishc                ó$   € R V  R\        V4       2# )zset -gx Ú )rI  rN  s   &&r   rO  rO  5  s   €  8¨D¨6°´;¸uÓ3EÐ2FÑ!Gr   z[A-Za-z_][A-Za-z0-9_]*c               ó$   € V ^8„  d   QhRRRRRR/# )r   rA  r6  Údialectr   r
   r   )r   s   "r   r   r   :  s&   € ÷ Uñ U�~ð U°ð U¸ñ Ur   c                óz   aa€ \         V,          w  ooRP                  VV3R lV P                  4        4       4      # )z×The composed environment as a script a shell of ``dialect`` can evaluate.

Windows carries names like ``ProgramFiles(ARM)`` that no shell can assign;
they pass through untouched instead of failing the whole script.
Ú
c              3  ó˜   <"  € T F?  w  r\         P                  V4      '       g   K"  VS9  g   K+  S! V\        V4      4      x € KA  	  R # 5ir*   )Ú_SHELL_IDENTIFIERÚ	fullmatchr   )rG   rN   r»   Ú	read_onlyÚ	statements   &  €€r   rI   Ú shell_exports.<locals>.<genexpr>A  sD   øé € ð UÁK±[°TÜ)×3Ñ3°D×9ô 1Ø>BÈ)Ñ>Sô 1‘Y˜t¤S¨£Z×0Ð0ÃKùs   ƒA
§A
°A
)Ú_SHELL_DIALECTSr,  r}   )rA  rT  rZ  r[  s   &&@@r   Úshell_exportsr^  :  s;   ù€ ô +¨7Õ3Ñ€IˆyØ�9‰9õ UÀCÇIÁIÄKó Uó Uð Ur   c               ó    € V ^8„  d   QhRRRR/# )r   Úargvzlist[str] | Noner
   rq   r   )r   s   "r   r   r   E  s   € ÷ _ñ _Ðð _¨4ñ _r   c                ó�  € \         P                  ! R R7      pVP                  RR.\        ORR7       VP	                  V 4      p\        \        \        4      P                  4       P                  ^,          4      p\        VP                  R8X  d   \        P                  ! V4      4       R# \        W2P                  4      4       R# )z*Print the composed activation environment.)Údescriptionz--formatr�   )ÚchoicesÚdefaultN)ÚargparseÚArgumentParserÚadd_argumentr]  Ú
parse_argsrC  r   rë   r   rP   Úprintr   r�   Údumpsr^  )r`  Úparserré   rA  s   &   r   Úmainrl  E  sŒ   € Ü×$Ò$Ð1]Ô^€FØ
×Ñ˜
¨VÐ,F´oÐ,FÐPVÐÔWØ×Ñ Ó%€GÜ
 ¤¤h£×!7Ñ!7Ó!9×!AÑ!AÀ!Õ!DÓ
E€CÜ	˜WŸ^™^¨vÔ5Œ$�*Š*�S‹/Ö^¼=ÈÏnÉnÓ;]Ö^r   Ú__main__)zuv.lockzpyproject.tomlzpm/lock.json)r   >   r  ÚPWDÚSHLVLÚumaskÚstatusÚhistoryr÷   Úfish_pidÚhostnameÚ
pipestatusÚFISH_VERSIONÚstatus_generationr*   )=r  Ú
__future__r   re  r   r�   rM   ÚrerL  Úpathlibr   r    r   r   r   r"   r&   r,   r>   r7   r\   r`   rh   rd   rk   r�   r”   rš   rž   r¤   r¨   r¬   r¯   r¼   r¸   rÃ   rÇ   rÊ   rÆ   rÙ   rÝ   rà   rç   rñ   r  rí   r  rQ   r  r  r4  rC  rI  Ú	frozensetÚ_FISH_READ_ONLYr]  ÚcompilerX  r^  rl  r  r   r   r   Ú<module>r~     s�  ðñõ #ã Û Û Û 	Û 	Û Ý ç FõFõ
]õ/õ7õõDõ&>õ:ð BÐ õ6õ
mõ+õ0dõ*õFõIõ
/õFõAð/ÀT÷ /õ>Sõõ,	CõFõð0:°t÷ :ðO°d÷ Oõ4õ
8÷Sõ(õBGõQô*f˜\ô fõ`õ?TõDõ:Gñ ò ó €ð 	ÑDÁiÃkÐ
RØ
ÑGÈÐYð€ð —J’JÐ8Ó9Ð õU÷_ð ˆzÔÙ†Fñ r   