+
    „WÝjûn  ã                  óˆ  € R t ^ RIHt ^ RIHt ^ RIt^ RIt^ RIHtH	t	 R9RR/R R lllt
R	 R
 ltR R ltR R ltR R ltR tR tR R ltR tR R ltR R ltR tR tR R ltR tR tR  tR! tR" tR# tR$ tR% tR& t R' t!R:t"R( t#/ R]bR)]bR*]bR+]bR,]bR-]bR.]bR/]bR0]bR1]bR2]bR3]bR4]bR5] bR6]!bR7]#bt$R8 t%R# );uÐ   ``hermes profile`` command â€” one handler per action, dispatched by ``PROFILE_ACTIONS``.

Imports from ``hermes_cli.profiles`` stay lazy (inside each handler) so tests can monkeypatch
the module attributes.
)Úannotations)ÚPathN)ÚNoReturnÚOptionalÚerrFc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   ÚmsgÚstrÚcodeÚintr   ÚboolÚreturnr   © )Úformats   "ÚJC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\profile_cmd.pyÚ__annotate__r      s(   € ÷ ñ ˆcð ˜ð ¨$ð ¸8ñ ó    c               ó–   € \        Y'       d   \        P                  M\        P                  R 7       \        P                  ! V4       R# )©ÚfileN)ÚprintÚsysÚstderrÚstdoutÚexit)r	   r   r   s   &&$r   Ú_dier      s#   € Ü	ˆ#¦#”C—J’J¬3¯:©:Õ6Ü‡H‚HˆT†Nr   c               ó    € V ^8„  d   QhRRRR/# )r   Úpromptr
   r   r   r   )r   s   "r   r   r      s   € ÷ "ñ "�Sð "˜Tñ "r   c                óŽ   €  \        V 4      P                  4       P                  4       pVR9   #   \        \        3 d    Rp Li ; i)z'y/N prompt; EOF / Ctrl-C count as "no".Ú >   ÚyÚyes)ÚinputÚstripÚlowerÚEOFErrorÚKeyboardInterrupt)r   Úanswers   & r   Ú_confirmr)      sK   € ðÜ�v“×$Ñ$Ó&×,Ñ,Ó.ˆð �\Ñ!Ð!øô Ô'Ð(ô ØŠðús   ‚'. ®AÁAc               ó    € V ^8„  d   QhRRRR/# )r   Úactiver
   r   r   r   )r   s   "r   r   r      s   € ÷ Fñ F˜#ð F $ñ Fr   c                ób   € V P                   V8H  ;'       g    VR 8H  ;'       d    V P                  # )Údefault)ÚnameÚ
is_default)Úpr+   s   &&r   Ú
_is_activer1      s*   € Ø�6‰6�VÑ×EÐE ¨)Ñ 3× DÐ D¸¿¹ÐEr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úenv_pathr   Úkeyr
   r   r   r   )r   s   "r   r   r   !   s!   € ÷ *ñ * ð *¨3ð *°4ñ *r   c                ó"   € ^ RI Hp W! V 4      9   # )u`   True when *key* is assigned in *env_path* (unreadable/mis-encoded file â†’ False, never aborts).)Úload_env_file)Úagent.secret_scoper6   )r3   r4   r6   s   && r   Ú_env_file_has_keyr8   !   s   € å0à�- Ó)Ñ)Ð)r   c               ó   € V ^8„  d   QhRR/# )r   r   ÚNoner   )r   s   "r   r   r   (   s   € ÷ ,
ñ ,
 tñ ,
r   c                ó  € ^ RI Hp V P                  p\        RVP                   RVP
                   24       VP                  '       d   \        RVP                   24       VP                  '       d   \        RVP                   24       VP                  '       d   \        RVP                   24       \        RV P                   24       \        RV P                   24       V P                  '       d?   V P                  V,          P                  4       '       d   \        R	4       M\        R
4       VP                  '       Ed   \        R4       VP                   Fÿ  pVP                  '       d   RMRp\        P                   P#                  VP                  4      RJ;'       gJ    V P                  P%                  4       ;'       d(    \'        V P                  R,          VP                  4      pV'       d   RMVP                  '       d   RMRpRVP                   RV RV R2pVP                  '       d   VRVP                   2,          p\        V4       EK  	  V P(                  '       d   \        R4       R# R# )zAPrint a human-readable summary of a pending distribution install.)ÚMANIFEST_FILENAMEú
Distribution: z vú  z  Author:   z  Requires: Hermes z  Source:   z  Target:   uC     (profile exists â€” will overwrite distribution-owned files only)u@    âš  Profile exists but is NOT a distribution.  Installing here will
    overwrite its SOUL.md and mcp.json and replace any skill or cron job
    of the same name the distribution ships.
    Your memories, sessions, auth.json, and .env will be preserved,
    but any hand-edits to distribution-owned files will be lost.z
  Env vars:ÚrequiredÚoptionalNú.envu   âœ“ setzneeds settingõ   â€”u       â€¢ ú (ú, Ú)õ    â€” uj   
  âš  This distribution ships cron jobs.  They will NOT run automatically â€” review and enable manually.)Úhermes_cli.profile_distributionr<   Úmanifestr   r.   ÚversionÚdescriptionÚauthorÚhermes_requiresÚ
provenanceÚ
target_dirÚexistingÚis_fileÚenv_requiresr?   ÚosÚenvironÚgetÚis_dirr8   Úhas_cron)Úplanr<   ÚmfÚerÚtagÚalreadyÚstatusÚlines   &       r   Ú_render_distribution_planr^   (   së  € åAØ	�‰€BÜ	Ð˜RŸW™W˜I R¨¯
©
 |Ð
4Ô5Ø	‡~‡~€~Ü��2—>‘>Ð"Ð#Ô$Ø	‡y‡y€yÜ�˜RŸY™Y˜KÐ(Ô)Ø	××ÐÜÐ# B×$6Ñ$6Ð#7Ð8Ô9Ü	ˆL˜Ÿ™Ð)Ð
*Ô+Ü	ˆL˜Ÿ™Ð)Ð
*Ô+Ø‡}‡}€}ð �O‰OÐ/Õ/×8Ñ8×:Ò:ÜÐWÕXäðSôð 
‡‡�ÜˆoÔØ—/”/ˆBØ "§§ ‘*°ˆCä—j‘j—n‘n R§W¡WÓ-°TÐ9÷ ð Ø—‘×&Ñ&Ó(×aÐaÔ->¸t¿¹ÐQWÕ?WÐY[×Y`ÑY`Ó-að ÷ #*‘YÀ2Ç;Ç;À;±ÐTYˆFØ˜bŸg™g˜Y b¨¨¨R°¨x°qÐ9ˆDØ�~�~ˆ~Ø˜% §¡Ð/Ð0Õ0�Ü�$�Kñ "ð ‡}‡}€}Üð<ö	
ñ r   c                ó¾  a	€ ^ RI Hp ^ RIHpHpHp V! 4       o	V! 4       p\        V	3R lV! 4        4       R4      pT! S	V'       d   VP                  MR4      p\        RV 24       \        RV 24       VeÜ   TpVP                  '       dB   \        RVP                   2VP                  '       d   R	VP                   R
2MR,           4       \        RVP                  '       d   RMR 24       \        RVP                   R24       VP                  '       d:   \        RVP                  ;'       g    VP                   RVP                   24       \        4        R# )u8   Bare ``hermes profile`` â€” show current profile status.)Údisplay_hermes_home©Úformat_profile_labelÚget_active_profile_nameÚlist_profilesc              3  óP   <"  € T F  p\        VS4      '       g   K  Vx € K  	  R # 5i©N)r1   )Ú.0r0   Úprofile_names   & €r   Ú	<genexpr>Ú"_profile_status.<locals>.<genexpr>]   s   øé € ÐN™˜!´*¸QÀ×2M—A’A›ùs   ƒ&œ
&Nr    z
Active profile: zPath:           zModel:          rC   rE   zGateway:        ÚrunningÚstoppedzSkills:         z
 installedzAlias:          õ    â†’ hermes -p )Úhermes_constantsr`   Úhermes_cli.profilesrb   rc   rd   ÚnextÚdisplay_namer   ÚmodelÚproviderÚgateway_runningÚskill_countÚ
alias_pathÚ
alias_namer.   )
Úargsr`   rb   rc   rd   ÚdhhÚcurrentÚlabelr0   rh   s
   &        @r   Ú_profile_statusr|   W   s  ø€ å4ß`Ñ`Ù*Ó,€LÙ
Ó
€CÜÔN™}œÓNÐPTÓU€GÙ  Çw¨w×/CÒ/CÐTVÓW€EÜ	Ð˜u˜gÐ
&Ô'Ü	Ð˜S˜EÐ
"Ô#ØÒØˆØ�7�7ˆ7ÜÐ$ Q§W¡W IÐ.ÈÏ
Ï
È
°B°q·z±z°lÀ!Ñ2DÐXZÕ[Ô\ÜÐ ¨a×.?×.?Ð.?¡ÀYÐ OÐPÔQÜÐ  §¡ ¨zÐ:Ô;Ø�<�<ˆ<ÜÐ$ Q§\¡\×%;Ð%;°Q·V±VÐ$<¸OÈAÏFÉFÈ8ÐTÔUÜ	†Gr   c                óH  € ^ RI HpHpHp V! 4       pV! 4       pV'       g   \	        R4       R# \	        RRR RRR	 RR
R RRR RR 2
4       \	        RR RR RR RR RR 2
4       V EF  p\        We4      '       d   RMRpV! VP                  VP                  4      pVP                  ;'       g    RR,          p	VP                  '       d   RMRp
VP                  '       d3   VP                  '       g!   VP                  ;'       g    VP                  MRpVP                  '       d-   VP                   RVP                  ;'       g    R 2R,          MRp\	        V VR RV	R	 RV
R RVR RV 2
4       EK  	  \	        4        \        V4       F  p\	        V4       K  	  R# )é    ra   zNo profiles found.Nz
 ÚProfilez<16Ú ÚModelz<28ÚGatewayz<12ÚAliasÚDistributionz    u    â—†r>   rB   :Né   Nrk   rl   Ú@Ú?:Né   Nz<15u-   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€uQ   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€u!   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€u<   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€)ro   rb   rc   rd   r   r1   r.   rq   rr   rt   rv   r/   rw   Údistribution_nameÚdistribution_versionÚ_shared_credential_warnings)rx   rb   rc   rd   Úprofilesr+   r0   Úmarkerr.   rr   ÚgwÚaliasÚdistr]   s   &             r   Ú_profile_listr‘   l   s„  € ß`Ñ`Ù‹€HÙ$Ó&€FßÜÐ"Ô#ÙÜ	ˆC�	˜#ˆ˜a ¨˜}¨A¨i¸¨_¸A¸gÀc¸]È!ÈNÐK[Ð
\Ô]Ü	ˆAˆjˆ\˜˜j˜\¨¨j¨\¸¸j¸\ÈÈjÈ\Ð
ZÔ[ÜˆÜ% a×0Ò0‘°dˆÙ# A§F¡F¨A¯N©NÓ;ˆØ—‘×!Ð!˜E 3Õ'ˆØ×+×+Ð+‰Y°ˆØ,-¯L¯L¨LÀÇÇÀ�—‘×'Ð' §¡øÐSXˆØPQ×Pc×PcÐPc�!×%Ñ%Ð& a¨×(>Ñ(>×(EÐ(EÀ#Ð'FÐGÈÖLÐinˆÜ��˜˜c˜
 ! E¨# ;¨a°°3¨x°q¸¸s¸À1ÀTÀFÐK×Lñ ô 
„GÜ+¨HÖ5ˆÜˆdŽó 6r   c               ó   € V ^8„  d   QhRR/# )r   r   Úlistr   )r   s   "r   r   r   ‚   s   € ÷ +ñ +¨Tñ +r   c                ól  € ^ RI HpHp \        R V  4       R4      pVf   . # . pV  Fa  pVP                  '       d   K   V! VP
                  VP
                  4      pT'       g   K?  TP                  T! TP                  T4      4       Kc  	  YD'       d
   R.,           # . ,           #   \         d     KŒ  i ; i)zêOne warning per named profile whose bot credential is byte-identical to the default's
(typically an old ``--clone`` that copied .env): the collision that parks a multiplexed
adapter or makes two standalone gateways fight over one bot.)Úshared_channel_credentialsÚshared_credential_warningc              3  óL   "  € T F  qP                   '       g   K  Vx € K  	  R # 5irf   )r/   )rg   r0   s   & r   ri   Ú._shared_credential_warnings.<locals>.<genexpr>‡   s   é € Ð8™x˜!¯<­<—A’A›xùs   ‚$š
$Nr    )	Úhermes_cli.profile_channelsr•   r–   rp   r/   ÚpathÚ	ExceptionÚappendr.   )rŒ   r•   r–   r-   Úlinesr0   Úshareds   &      r   r‹   r‹   ‚   s¤   € ÷ bÜÑ8™xÓ8¸$Ó?€GØ‚Øˆ	Ø€EÛˆØ�<�<ˆ<Ùð	Ù/°·±¸¿¹ÓEˆF÷ ‰6Ø�L‰LÑ2°1·6±6¸6ÓBÖCñ ð žE�R�DÕ*Ð* rÕ*Ð*øô	 ô 	Úð	ús   ¾B$Â$B3Â2B3c                óÄ   € ^ RI Hp V P                  p V! V4       \        VR8X  d   RMRV 24       R#   \        \
        3 d   p\        RT 24        Rp?R# Rp?ii ; i)r~   )Úset_active_profiler-   z Switched to: default (~/.hermes)zSwitched to: úError: N)ro   r    rh   r   Ú
ValueErrorÚFileNotFoundErrorr   )rx   r    r.   Úes   &   r   Ú_profile_user¥   —   s_   € Ý6Ø×Ñ€DðÙ˜4Ô Ü°D¸IÔ4EÑ0È]Ð[_ÐZ`ÐKaÖbøÜÔ)Ð*ô Üˆw�q�cˆ]×Òûðús   ”5 µAÁAÁAc               ó    € V ^8„  d   QhRRRR/# )r   Úsource_labelr
   r   r   r   )r   s   "r   r   r   ¡   s   € ÷ ñ  cð ¨dñ r   c                ód   € ^ RI Hp V! V 4      pVP                  4       '       g   \        V4      hV# )r~   ©Úget_profile_dir)ro   rª   rU   r£   )r§   rª   Ú
source_dirs   &  r   Ú_source_profile_dirr¬   ¡   s/   € Ý3Ù  Ó.€JØ×Ñ×ÒÜ 
Ó+Ð+ØÐr   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   r.   r
   r§   Úclone_channelsr   Ú
clone_flagr   r:   r   )r   s   "r   r   r   ©   s8   € ÷ Eñ E cð E¸ð EÈdð EÐ`cð EÐhlñ Er   c                ó  € ^ RI HpHpHpHp ^ RIHp  \        V4      p	T'       g$   T! Y! T	4      T4       F  p
\        T
4       K  	  R# T! T! T 4      T	4      pT'       d   \        T! YT4      4       R# R#   \         d     R# i ; i)r~   )Úchannel_platforms_configuredÚformat_stripped_noticer•   r–   r©   N)
r™   r±   r²   r•   r–   ro   rª   r¬   r£   r   )r.   r§   r®   r¯   r±   r²   r•   r–   rª   r«   r]   rž   s   &&&&        r   Ú_print_channel_clone_noticer³   ©   s‡   € ÷ó õ 4ðÜ(¨Ó6ˆ
÷ Ù*¨4Ð1MÈjÓ1YÐ[eÖfˆDÜ�$ŽKñ gáÙ'©¸Ó(=¸zÓJ€FßÜÑ'¨°lÓCÖDñ øô ô Úðús   ”A7 Á7BÂBc                óZ	  € ^ RI HpHpHpHpHpHpHp V P                  p\        V RR4      p	\        V RR4      p
\        V RR4      p\        V RR4      p\        V RR4      p\        V R	R4      p\        V R
R4      pT	;'       g    VRJpT;'       g    T
pT;'       g    V! 4       p V! W�V
VW¼\        V RR4      WïR7	      p\        RV RX 24       V'       dì   V
'       d   \        RV R24       Mh\        RV R24       ^ RI Hp V! V4      pV'       d   \        RRP!                  V4       R24       ^ RIHp V! V4      pV'       d   \        RV R24       V'       d   \        RV R24       \'        TTYê'       d   RMR4        ^ RIHp V! RR 4      pVe)    VP/                  V4      '       d   \        R!V R"24       MsMrV! V4      pV'       d$   VP3                  R$4      '       d   \        R%4       M?V'       d)   \        \5        VP3                  R&. 4      4       R'24       M\        R(V R)24       V'       g–   V! V4      pV'       d1   \        R*V R+V 24       \        R,V R-24       \        R.V R/24       MUV! V4      pV'       dF   \        R0V 24       V! 4       '       g+   \        R1V! 4        R224       \        R34       \        R44        R5VP7                  \8        P:                  ! 4       4      P=                  4       ,           p\        R64       \        R7V R824       \        R7V R924       ^ R:I H!pH"p  ^ R;I H#p! V! 4       e   V ! 4       MRp"V"e0   V!! V4      V" U#u0 uF  p#V!! V#4      kK  	  up#9   d   \        R<4       MV"e   \        R=4       M\        R7V R>24       V	'       g	   V
'       d    \        R?V R@24       \        RAV RB24       M)\        RCV RD24       \        RE4       \        RAV RF24       \        4        R#   \        \        \        3 d   p\        RT 24        Rp?ELvRp?ii ; i  \,         d    Rp EL·i ; i  TP0                   d   p\        R#T 24        Rp?ELARp?i\,         d     ELRi ; i  \         d    \?        T4      p EL˜i ; iu up#i )Gr~   )Ú_get_wrapper_dirÚ_is_wrapper_dir_in_pathÚcheck_alias_collisionÚcreate_profileÚcreate_wrapper_scriptrc   Úseed_profile_skillsÚcloneFÚ	clone_allÚno_aliasÚ	no_skillsÚ
clone_fromNr®   Úsync_importsrJ   )	r.   r¿   r¼   Úclone_configr½   r¾   rJ   r®   rÀ   r¡   z

Profile 'z' created at zFull copy from z@ (excluding session history, cron jobs, backups, and snapshots).z.Cloned config, .env, SOUL.md, and skills from Ú.)Úcloned_plugin_nameszCloned installed plugins too: rD   )Úcloned_memory_providerzCloned memory provider config (z) too.u+   Import sources carried over â€” `hermes -p zG import-agent --sync` keeps pulling the same Claude Code / Codex trees.z--clone-allz--clone)Úimport_provider_moduleÚhonchoÚclizHoncho config cloned (peer: rE   zHoncho config not cloned: Úskipped_opt_outz`No bundled skills seeded (--no-skills). Delete .no-bundled-skills in the profile to opt back in.Úcopiedz bundled skills synced.u%   âš  Skills could not be seeded. Run `z update` to retry.u   
âš  Cannot create alias 'u   ' â€” z/  Choose a custom alias:  hermes profile alias z --name <custom>z$  Or access via flag:     hermes -p ú chatzWrapper created: u   
âš  ú is not in your PATH.z3  Add to your shell config (~/.bashrc or ~/.zshrc):z(    export PATH="$HOME/.local/bin:$PATH"z~/z
Next steps:r>   z0 setup              Configure API keys and modelz" chat               Start chatting)Úlive_default_gateway_pidÚrecorded_served_profiles)Únormalize_profile_nameuW     (served now by the running multiplexed gateway â€” add its bot token and it connects)zS  hermes gateway restart    Serve this profile from the running multiplexed gatewayz/ gateway start      Start the messaging gatewayz
  Edit z/.env for different API keysz  Edit z"/SOUL.md for different personalityu.   
  âš  This profile has no API keys yet. Run 'z setup' first,z8    or it will inherit keys from your shell environment.z!/SOUL.md to customize personality)$ro   rµ   r¶   r·   r¸   r¹   rc   rº   rh   Úgetattrr¢   ÚFileExistsErrorr£   r   r   rÃ   ÚjoinÚ hermes_cli.profile_memory_configrÄ   r³   Úplugins.memoryrÅ   r›   Úclone_honcho_for_profileÚConfigWriteRefusedrT   ÚlenÚrelative_tor   ÚhomeÚas_posixr
   Ú#hermes_cli.gateway_multiplex_servedrÌ   rÍ   rÎ   )$rx   rµ   r¶   r·   r¸   r¹   rc   rº   r.   r»   r¼   r½   r¾   r¿   r®   rÀ   rÁ   Úclonedr§   Úprofile_dirr¤   rÃ   Úplugin_namesrÄ   Úmemory_providerrÅ   Ú
honcho_cliÚresultÚ	collisionÚwrapper_pathÚprofile_dir_displayrÌ   rÍ   rÎ   Úservedr0   s$   &                                   r   Ú_profile_createrå   ¼   s¡  € ÷÷ ñ ð ×Ñ€DÜ�D˜' 5Ó)€EÜ˜˜k¨5Ó1€IÜ�t˜Z¨Ó/€HÜ˜˜k¨5Ó1€IÜ˜˜|¨TÓ2€JÜ˜TÐ#3°UÓ;€NÜ˜4 °Ó7€LØ×2Ð2˜J¨dÐ2€LØ×&Ð&˜Y€FØ×:Ð:Ñ!8Ó!:€LðÙ$Ø¸	ÐP\ØÄÈÈmÐ]aÓ@bØ)ô
ˆô 
ˆK˜�v˜]¨;¨-Ð
8Ô9ßßÜ�O L >Ð1qÐrÕsäÐBÀ<À.ÐPQÐRÔSÝ?Ù.¨{Ó;ˆLßÜÐ6°t·y±yÀÓ7NÐ6OÈqÐQÔRÝOÙ4°[ÓAˆOßÜÐ7¸Ð7HÈÐOÔPßÜÐ?À¸vð FFð Fô Gä# D¨,¸ÖYbÉÐhqÔrð	Ý=Ù/°¸%Ó@ˆJð Ò!ðØ×6Ñ6°t×<Ò<ÜÐ8¸¸¸aÐ@ÔAøð "ñ % [Ó1ˆß�f—j‘jÐ!2×3Ò3ÜÐtÕußÜ”S˜Ÿ™ H¨bÓ1Ó2Ð3Ð3JÐKÕLäÐ9¸$¸Ð?QÐRÔSßÙ)¨$Ó/ˆ	ßÜÐ/°¨v°V¸I¸;ÐGÔHÜÐCÀDÀ6ÐIYÐZÔ[ÜÐ8¸¸¸eÐDÕEá0°Ó6ˆLßÜÐ)¨,¨Ð8Ô9Ù.×0Ò0Ü˜FÑ#3Ó#5Ð"6Ð6KÐLÔMÜÐOÔPÜÐDÔEð/Ø" [×%<Ñ%<¼T¿YºY»[Ó%I×%RÑ%RÓ%TÕTÐô 
ˆ/ÔÜ	ˆBˆtˆfÐDÐ
EÔFÜ	ˆBˆtˆfÐ6Ð
7Ô8ßfÝ:Ù+CÓ+EÒ+QÑ%Ô'ÐW[€FØÒÑ4°TÓ:ÑbhÓ>iÑbhÐ]^Ñ?UÐVWÖ?XÑbhÑ>iÔiÜÐgÕhØ	Ò	äÐcÕdä��4�&ÐGÐHÔIß—	Ü�	Ð-Ð.Ð.JÐKÔLÜ�Ð+Ð,Ð,NÐOÕPäÐ?À¸vÀ^ÐTÔUÜÐHÔIÜ�Ð+Ð,Ð,MÐNÔOÜ	†Gøôc œÔ):Ð;ô Üˆw�q�cˆ]×Òûðûô0 ô 	Ø‹Jð	ûð ×0Ñ0ô 8ÜÐ2°1°#Ð6×7Ò7ûÜô Úðûô6 ô /Ü! +Ó.Óð/üò ?jsl   Â&P ÆP= ÆQ Æ2Q Ë9R Í$R(ÐP:Ð!P5Ð5P:Ð=QÑQÑRÑ"Q6Ñ6RÒRÒRÒR%Ò$R%c                ó¶   € ^ RI Hp  V! V P                  \        V RR4      R7       R#   \        \
        \        3 d   p\        RT 24        Rp?R# Rp?ii ; i)r~   )Údelete_profiler"   F)r"   r¡   N)ro   rç   rh   rÏ   r¢   r£   ÚRuntimeErrorr   )rx   rç   r¤   s   &  r   Ú_profile_deleteré   &  sL   € Ý2ðÙ�t×(Ñ(¬g°d¸EÀ5Ó.I×JøÜÔ)¬<Ð8ô Üˆw�q�cˆ]×Òûðús   ˆ) ©A¿AÁAc               ó    € V ^8„  d   QhRRRR/# )r   r.   r
   r   r   r   )r   s   "r   r   r   .  s   € ÷ /ñ /˜sð / tñ /r   c                óˆ   € ^ RI Hp VP                  V 4      R8X  d   ^ RIHp \        V! 4       4      # VP                  V 4      # )z}Profile dir for ``describe``: ``default`` maps to the CURRENT home (get_hermes_home),
everything else to its named directory.©rŒ   r-   )Úget_hermes_home)Ú
hermes_clirŒ   rÎ   rn   rí   r   rª   )r.   Ú_profiles_modÚ_hhs   &  r   Ú_describe_target_dirrñ   .  s:   € õ 5Ø×+Ñ+¨DÓ1°YÔ>Ý;Ü‘C“E‹{ÐØ×(Ñ(¨Ó.Ð.r   c                ó¤  € ^ RI Hp \        \        V RR4      4      p\        \        V RR4      4      p\        \        V RR4      4      p\        V RR4      p\        V RR4      pV'       d   V'       g   \	        R	^R
R7       V'       d   V'       g	   V'       d   \	        R^R
R7       V'       g   V'       g   \	        R^R
R7       V'       d   V'       d   \	        R^R
R7       V'       dÈ   V'       gÀ   V'       g¸    \        V4      pXP                  4       '       g   \	        RV R2R
R7       VP                  V4      p	V	P                  R4      ;'       g    Rp
V
'       g   \        RV R24       M*V	P                  R4      '       d   RMRp\        V V
 24       \        P                  ! ^ 4       V'       dD    VP                  \        V4      VRR7       \        RV R24       \        P                  ! ^ 4       ^ RI Hp V'       d(   VP                  R
R7      pV'       g   \	        R^ 4       MV.p^ pV FŒ  pVP!                  WôR7      pVP"                  '       d1   V^,          p\        RVP$                   R VP&                   24       KW  \        R!VP$                   R"VP(                   2\        P*                  R#7       KŽ  	  \        P                  ! V'       d	   V^ 8”  d   MV^8X  d	   ^ 4       R# ^4       R#   \         d   p\	        RT 2R
R7        Rp?ELRp?ii ; i  \         d   p\	        RT 2R
R7        Rp?ELcRp?ii ; i)$r~   rì   Úall_missingFÚautoÚ	overwriteÚtextNrh   z'profile describe: --all requires --autoT©r   zJprofile describe: --all is mutually exclusive with a profile name / --textz<profile describe: profile name is required (or --all --auto)z:profile describe: --text is mutually exclusive with --autor¡   zError: profile 'z' not foundrJ   r    z(no description set for 'z')Údescription_autoz[auto] )rJ   rø   zDescription updated for 'z'.)Úprofile_describer)Úmissing_onlyz'All profiles already have descriptions.)rõ   zDescribed 'z': zprofile describe z: r   )rî   rŒ   r   rÏ   r   rñ   r›   rU   Úread_profile_metarT   r   r   r   Úwrite_profile_metarù   Úlist_describable_profilesÚdescribe_profileÚokrh   rJ   Úreasonr   )rx   rï   Úall_flagÚ	auto_flagÚoverwrite_flagÚ
text_valuer.   rÜ   ÚexcÚmetaÚdescrZ   Ú_pdÚtargetsÚok_countÚtgtÚoutcomes   &                r   Ú_profile_describer  8  sµ  € Ý4Ü”G˜D -°Ó7Ó8€HÜ”W˜T 6¨5Ó1Ó2€IÜœ' $¨°UÓ;Ó<€NÜ˜˜v tÓ,€JÜ�4˜¨Ó.€DßŸ	ÜÐ6¸¸tÕDß—Z§4ÜÐYÐ[\ÐbfÕgßŸDÜÐKÈQÐTXÕYß—iÜÐIÈ1ÐRVÕW÷ —J§yð	,Ü.¨tÓ4ˆKð ×!Ñ!×#Ò#ÜÐ# D 6¨Ð5¸4Õ@Ø×.Ñ.¨{Ó;ˆØ�x‰x˜Ó&×,Ð,¨"ˆßÜÐ-¨d¨V°2Ð6Õ7à#Ÿx™xÐ(:×;Ò;‘)ÀˆCÜ�S�E˜$˜�.Ô!Ü�Š�Œ÷ ð	,Ø×,Ñ,Ô-AÀ$Ó-GÐU_ÐrwÐ,ÔxÜÐ-¨d¨V°2Ð6Ô7ô 	�Š�Œõ 4ßØ×/Ñ/¸TÐ/ÓBˆßÜÐ:¸AÔ>øà�&ˆØ€HÛˆØ×&Ñ& sÐ&ÓEˆØ�:�:ˆ:Ø˜�MˆHÜ�K × 4Ñ 4Ð5°S¸×9LÑ9LÐ8MÐNÖOäÐ% g×&:Ñ&:Ð%;¸2¸g¿n¹nÐ=MÐNÔUX×U_ÑU_×`ñ ô ‡H‚H§8�8˜a•<°¸Q´ˆQÖGÀQÖGøôM ô 	,Ü�7˜3˜%� d×+Ó+ûð	,ûô$ ô 	,Ü�7˜3˜%� d×+Ó+ûð	,ús0   Ã<L  Æ;,L) Ì L&ÌL!Ì!L&Ì)MÌ4M
Í
Mc           
     óÊ  € V P                   p^ RIHpHpHpHpHpHpHpH	p	H
p
HpHp V! V4      '       g   \        RV R24       V! V4      pV! V4      w  rïV! V4      ;'       g	    V! V4      pV! V4      w  pppV
! V4      pV! V4      P                  RR4      p\        RV! VV4       24       \        RV 24       V'       d$   \        RV 2V'       d   R	V R
2MR,           4       \        RV'       d   RMR 24       \        RV! V4       24       \        RVR,          P!                  4       '       d   RMR 24       \        RVR,          P!                  4       '       d   RMR 24       V'       dA   \        RT RT;'       g    R 24       V'       d   \        RV 24       \        RV R24       V'       d   \        RV RV RV	! V4       R
24       \        4        R# )r~   )rª   Úprofile_existsÚ_read_config_modelÚ_check_gateway_runningÚ_served_by_running_multiplexerÚ_count_skillsÚ_read_distribution_metaÚ_wrapper_pathÚfind_alias_for_profilerb   rû   úError: Profile 'ú' does not exist.rq   r    z

Profile: z	Path:    z	Model:   rC   rE   z	Gateway: rk   rl   z	Skills:  z	.env:    rA   Úexistsznot configuredz	SOUL.md: zSOUL.mdzDistribution: r†   r‡   zInstalled from: z  (run `hermes profile info z` for full manifest)z	Alias:   rm   z  (N)rh   ro   rª   r  r  r  r  r  r  r  r  rb   rû   r   rT   r   r  )rx   r.   rª   r  r  r  r  r  r  r  r  rb   rû   rÜ   rr   rs   rŽ   Ú	dist_nameÚdist_versionÚdist_sourcerw   Údisplays   &                     r   Ú_profile_showr  u  sÔ  € Ø×Ñ€D÷÷ ÷ ñ ñ
 ˜$×ÒÜÐ ˜vÐ%6Ð7Ô8Ù! $Ó'€KÙ(¨Ó5�O€EÙ	 Ó	,×	TÐ	TÑ0NÈtÓ0T€BÙ+BÀ;Ó+OÑ(€Iˆ|˜[Ù'¨Ó-€JÙ Ó,×0Ñ0°ÀÓD€GÜ	ˆKÑ,¨T°7Ó;Ð<Ð
=Ô>Ü	ˆI�k�]Ð
#Ô$ßÜ�	˜%˜Ð!¿ r¨(¨°1Ñ%5ÀrÕJÔKÜ	ˆI§2‘i¨9Ð5Ð
6Ô7Ü	ˆI‘m KÓ0Ð1Ð
2Ô3Ü	ˆI ;°Õ#7×"?Ñ"?×"AÒ"A‘hÐGWÐXÐ
YÔZÜ	ˆI ;°Õ#:×"BÑ"B×"DÒ"D‘hÐJZÐ[Ð
\Ô]ßÜ�˜y˜k¨¨<×+>Ð+>¸3Ð*?Ð@ÔAßÜÐ$ [ MÐ2Ô3ÜÐ,¨T¨FÐ2FÐGÔHßÜ�	˜*˜ _°T°F¸#¹mÈJÓ>WÐ=XÐXYÐZÔ[Ü	†Gr   c                óö  € ^ RI HpHpHpHpHpHpHp V P                  p\        V RR4      p	\        V RR4      p
T
;'       g    Tp V! V4       V	'       dt   V! V4      pV
'       d   V'       g   \        RV R24       V! V4      '       d   \        R	V R
24       R# V'       g   \        RV RV R24       R# \        RV R24       R# V! V4      '       g   \        RV R24       V! V4      pV'       d   \        RV 24       T! Yº'       d   TMRR7      pV'       d4   \        RV 24       V! 4       '       g   \        RV! 4        R24       R# R# R#   \         d   p\        RT 24        Rp?EL%Rp?ii ; i)r~   )rµ   r¶   r·   r¹   r  Úremove_wrapper_scriptÚvalidate_alias_nameÚremoveFrw   Nr¡   r  r  u   âœ“ Removed alias 'Ú'zError: No alias 'z' and no profile 'z('. `hermes doctor` lists orphan aliases.z
No alias 'z' found to remove.)Útargetu   âœ“ Alias created: u   âš  rË   )ro   rµ   r¶   r·   r¹   r  r   r!  rh   rÏ   r¢   r   r   )rx   rµ   r¶   r·   r¹   r  r   r!  r.   r"  Úcustom_namerw   r  r  rá   râ   s   &               r   Ú_profile_aliasr&  –  sƒ  € ÷÷ ñ ð ×Ñ€DÜ�T˜8 UÓ+€FÜ˜$ ¨dÓ3€KØ×$Ð$ €JðÙ˜JÔ'÷ Ù Ó%ˆßŸvÜÐ# D 6Ð):Ð;Ô<Ù  ×,Ò,ÜÐ'¨
 |°1Ð5Ô6ñ
 	÷	 ÜÐ$ Z LÐ0BÀ4À&ÐHpÐqÔrñ 	ô �J˜z˜lÐ*<Ð=Ô>ÙÙ˜$×ÒÜÐ ˜vÐ%6Ð7Ô8Ù% jÓ1€IßÜˆw�y�kÐ"Ô#Ù(¨ÆK¹DÐUYÔZ€LßÜÐ# L >Ð2Ô3Ù&×(Ò(Ü�DÑ)Ó+Ð,Ð,AÐBÖCñ )ñ øô' ô Üˆw�s�eˆ_×Òûðús   ÁE ÅE8ÅE3Å3E8c                óP  € ^ RI HpHp  V! V P                  V P                  4      pV! V P                  4      R8w  d7   \        RV P                   RV P                   24       \        RV R24       R# R#   \        \        \        3 d   p\        RT 24        Rp?R# Rp?ii ; i)	r~   )rÎ   Úrename_profiler-   z
Profile renamed: õ    â†’ zPath: Ú
r¡   N)
ro   rÎ   r(  Úold_nameÚnew_namer   r¢   rÐ   r£   r   )rx   rÎ   r(  Únew_dirr¤   s   &    r   Ú_profile_renamer.  º  sŽ   € ßJðÙ  §¡°·±Ó>ˆÙ! $§-¡-Ó0°IÔ=ÜÐ'¨¯© °e¸D¿M¹M¸?ÐKÔLÜ�F˜7˜) 2Ð&Ö'ñ >øô œÔ):Ð;ô Üˆw�q�cˆ]×Òûðús   ŠA(A6 Á6B%ÂB Â B%c                óN  € ^ RI Hp  V! V P                  V P                  4      pX'       g(   \        RV P                   RV P                   2RR7       \        RV P                   R	V P                   24       R#   \        \
        3 d   p\        RT 24        Rp?LzRp?ii ; i)
zîRetry the identity migration of a rename that already completed. Exits non-zero when a
live gateway would not migrate (it still owns the routing index in memory), or when a
database rejected the rewrite (collision, lock, partial failure).)Úmigrate_profile_identityr¡   NzuError: session identity was not migrated. Restart or stop the gateway, then run:
    hermes profile migrate-identity r€   Tr÷   u'   âœ“ Session/routing identity migrated: r)  )Úhermes_cli.profile_identityr0  r+  r,  r¢   r£   r   r   )rx   r0  Úmigratedr¤   s   &   r   Ú_profile_migrate_identityr3  Å  s—   € õ EðÙ+¨D¯M©M¸4¿=¹=ÓIˆ÷ Üð 4Ø48·M±M°?À!ÀDÇMÁMÀ?ðTØY]õ	_ä	Ð3°D·M±M°?À%ÈÏÉÀÐ
WÖXøô Ô)Ð*ô Üˆw�q�cˆ]×Ñûðús   ˆA; Á;B$ÂBÂB$c                óø   € ^ RI Hp  V! V P                  4      pX'       g   \	        RV P                   2RR7       \        RV P                   24       R#   \         d   p\	        RT 24        Rp?LZRp?ii ; i)zÜRetry the identity purge of a delete that already completed. Exits non-zero when a live
gateway would not purge (it still owns the routing index in memory), or when a database rejected
the delete (lock, partial failure).)Úpurge_profile_identityr¡   NzqError: session identity was not purged. Restart or stop the gateway, then run:
    hermes profile purge-identity Tr÷   u%   âœ“ Session/routing identity purged: )r1  r5  rh   r¢   r   r   )rx   r5  Úpurgedr¤   s   &   r   Ú_profile_purge_identityr7  Ô  s   € õ CðÙ'¨×(9Ñ(9Ó:ˆ÷ Üð 2Ø26×2CÑ2CÐ1DðFØKOõ	Qä	Ð1°$×2CÑ2CÐ1DÐ
EÖFøô ô Üˆw�q�cˆ]×Ñûðús   ˆA ÁA9Á!A4Á4A9c                ó  € ^ RI HpHp V P                  p V P                  ;'       g    \        V! V4      4      pV! W44      p\        RV RV 24       R#   \        \        \        3 d   p\        RT 24        Rp?R# Rp?ii ; i)r~   )Úexport_profileÚget_profile_export_pathu   âœ“ Exported 'z' to r¡   N)ro   r9  r:  rh   Úoutputr
   r   r¢   r£   ÚOSErrorr   )rx   r9  r:  r.   r;  Úresult_pathr¤   s   &      r   Ú_profile_exportr>  ã  sy   € ßKØ×Ñ€DðØ—‘×BÐB¤Ñ$;¸DÓ$AÓ BˆÙ$ TÓ2ˆÜ�˜t˜f E¨+¨Ð7Ö8øÜÔ)¬7Ð3ô Üˆw�q�cˆ]×Òûðús   –A ©+A ÁBÁ,B Â Bc                ód  € ^ RI HpHpHp  V! V P                  \        V RR4      R7      pVP                  p\        RV RV 24       V! V4      '       g   V! V4      pV'       d   \        RV 24       \        4        R#   \        \        \        3 d   p\        RT 24        Rp?R# Rp?ii ; i)	r~   )r·   r¹   Úimport_profileÚimport_nameN)r.   u   âœ“ Imported profile 'z' at z  Wrapper created: r¡   )ro   r·   r¹   r@  ÚarchiverÏ   r.   r   r¢   rÐ   r£   r   )rx   r·   r¹   r@  rÜ   r.   râ   r¤   s   &       r   Ú_profile_importrC  î  sž   € ß`Ñ`ð
Ù$ T§\¡\¼ÀÀmÐUYÓ8ZÔ[ˆØ×ÑˆÜÐ& t f¨E°+°Ð?Ô@Ù$ T×*Ò*Ù0°Ó6ˆLßÜÐ+¨L¨>Ð:Ô;ÜŽøÜœÔ):Ð;ô Üˆw�q�cˆ]×Òûðús   ŒAB  Á&B  Â B/ÂB*Â*B/c                óê  € ^ RI p^ RIHpHpHp  VP                  RR7      ;_uu_ 4       pV! V P                  \        V4      \        V RR4      R7      p\        V4       \        V RR4      '       g(   \        R	4      '       g   \        R
4        RRR4       R# RRR4       V! V P                  \        V RR4      \        V RR4      \        V RR4      R7      p\        RVP                  P                   RVP                  P                   24       \        RVP                   24       VP                  P                   '       d   \        RVP                   R24       VP"                  '       d$   \        RVP                  P                   R24       \        RVP                  P                   R24       R#   + '       g   i     EL(; i  T\$        3 d   p\'        RT 24        Rp?R# Rp?ii ; i)r~   N)ÚDistributionErrorÚinstall_distributionÚplan_installÚhermes_dist_preview_)ÚprefixÚinstall_name)Úoverride_namer"   Fz
Proceed with install? [y/N] zInstall cancelled.Úforcer�   )r.   rL  Úcreate_aliasu   
âœ“ Installed 'z' vz  Profile path: zA  Next: copy .env.EXAMPLE to .env and fill in required keys:
    z/.env.EXAMPLEz^  Cron jobs were included but are NOT scheduled automatically.
  Review them with:  hermes -p ú
 cron listz
  Use with:      hermes -p rÊ   r¡   )ÚtempfilerG   rE  rF  rG  ÚTemporaryDirectoryÚsourcer   rÏ   r^   r)   r   rH   r.   rI   rN   rQ   rV   r¢   r   )rx   rO  rE  rF  rG  ÚtmprW   r¤   s   &       r   Ú_profile_installrS  ý  s°  € ÛßeÑeðð ×(Ñ(Ð0FÐ(×GÔGÈ3Ù §¡¬T°#«YÄgÈdÐTbÐdhÓFiÔjˆDÜ% dÔ+Ü˜4 ¨×.Ò.´xÐ@`×7aÒ7aÜÐ*Ô+Ø÷ H×GÑGñ $Ø�K‰Kœg d¨N¸DÓAÌÐQUÐW^Ð`eÓIfÜ   w°Ó6ô
ˆô 	Ð! $§-¡-×"4Ñ"4Ð!5°S¸¿¹×9NÑ9NÐ8OÐPÔQÜÐ  §¡Ð 1Ð2Ô3Ø�=‰=×%×%Ð%ÜðØ—‘Ð' }ð6ôð �=�=ˆ=Üð2Ø26·-±-×2DÑ2DÐ1EÀZðQôô 	Ð-¨d¯m©m×.@Ñ.@Ð-AÀÐGÖH÷- H×GÐGûð. œzÐ*ô Üˆw�q�cˆ]×Òûðús=   �G ªA%F8ÂG ÂCG Å0AG Æ8G		Ç	G ÇG2ÇG-Ç-G2c                ó   € ^ RI HpHpHp ^ RIHpHp  V! V P                  4      pV! V! V4      4      pVf   \        RV R24       \        V RR4      p\        V RR4      '       g†   \        R	T R
VP                  ;'       g    R 24       \        RVP                   24       V'       d   \        R4       M\        R4       \        R4       \        R4      '       g   \        R4       R# V! WhR7      p	\        RV	P                  P                   RV	P                  P                   24       V	P                   '       d&   \        RV	P                  P                   R24       R# R#   T\"        3 d   p
\        RT
 24        Rp
?
R# Rp
?
ii ; i)r~   )rE  Úread_manifestÚupdate_distribution)rª   rÎ   Nr  zt' is not a distribution (no distribution.yaml). Only profiles installed via `hermes profile install` can be updated.Úforce_configFr"   z	
Update 'z' from: z(no source)z  Currently at version z6  --force-config set: config.yaml WILL be overwritten.zC  config.yaml will be preserved (pass --force-config to overwrite).zA  User data (memories, sessions, auth, .env) will NOT be touched.z
Proceed? [y/N] zUpdate cancelled.)rW  u   
âœ“ Updated 'u   ' â†’ vz6  Cron files were refreshed.  Review with:  hermes -p rN  r¡   )rG   rE  rU  rV  ro   rª   rÎ   rh   r   rÏ   r   rQ  rI   r)   rH   r.   rV   r¢   )rx   rE  rU  rV  rª   rÎ   Úcanonrz   rW  rW   r¤   s   &          r   Ú_profile_updaterY    sb  € ßeÑeßKðÙ& t×'8Ñ'8Ó9ˆÙ¡°Ó 6Ó7ˆØŠ?ÜØ" 5 'ð *Wð Wôô ˜t ^°UÓ;ˆÜ�t˜U E×*Ò*Ü�J˜u˜g X¨g¯n©n×.MÐ.MÀÐ-NÐOÔPÜÐ+¨G¯O©OÐ+<Ð=Ô>ßÜÐNÕOäÐ[Ô\ÜÐUÔVÜÐ/×0Ò0ÜÐ)Ô*ÙÙ" 5ÔDˆÜ� §¡× 2Ñ 2Ð3°7¸4¿=¹=×;PÑ;PÐ:QÐRÔSØ�=�=ˆ=ÜÐJÈ4Ï=É=×K]ÑK]ÐJ^Ð^hÐiÖjñ øàœzÐ*ô Üˆw�q�cˆ]×Òûðús&   ”A.E' ÂA'E' Ã,A7E' Å'FÅ4FÆFc                ó\  € ^ RI HpHp  V! V P                  4      pX'       g   \        RV P                   R24       R# \        RVP                  R4       24       \        RVP                  R	R
4       24       \         F3  w  rVVP                  V4      '       g   K  \        V W5,           24       K5  	  VP                  R4      ;'       g    . pV'       d    \        R4       V FŽ  pVP                  RR4      '       d   RMRp	RVR,           RV	 R2p
VP                  R4      '       d   V
RVR,           2,          p
\        V
4       VP                  R4      f   Ky  \        RVR,           24       K�  	  \        4        R#   T\        3 d   p\        RT 24        Rp?ELŠRp?ii ; i)r~   )Údescribe_distributionrE  r¡   Nz	Profile 'z/' is not a distribution (no distribution.yaml).r=   r.   zVersion:      rI   r‡   rQ   z
Environment variables:r?   Tr@   r>   rC   rE   rJ   rF   r-   z      default: )	rG   r[  rE  rh   r¢   r   r   rT   Ú_INFO_FIELDS)rx   r[  rE  Údatar¤   r4   r{   Úenv_reqsrY   rZ   r]   s   &          r   Ú_profile_infor_  G  sw  € ßXðÙ$ T×%6Ñ%6Ó7ˆ÷ Ü�	˜$×+Ñ+Ð,Ð,[Ð\Ô]ÙÜ	Ð˜TŸX™X fÓ-Ð.Ð
/Ô0Ü	ˆN˜4Ÿ8™8 I¨sÓ3Ð4Ð
5Ô6ß"‰
ˆØ�8‰8�C�=Œ=Ü�U�G˜D�I˜;Ð'Ö(ñ #ð �x‰x˜Ó'×-Ð-¨2€HßÜÐ(Ô)ÛˆBØ "§¡ z°4× 8Ò 8‘*¸jˆCØ˜˜6�
�| 2 c U¨!Ð,ˆDØ�v‰v�m×$Ò$Ø˜%  =Õ 1Ð2Ð3Õ3�Ü�$ŒKØ�v‰v�iÓ Ô,Ü˜¨¨9­ Ð7Ö8ñ ô 
†Gøð+ œzÐ*ô Üˆw�q�cˆ]×Òûðús   ŠF ÆF+ÆF&Æ&F+r“   ÚuseÚcreateÚdeleteÚdescribeÚshowr�   Úrenamezpurge-identityzmigrate-identityÚexportÚimportÚinstallÚupdateÚinfoc                ó^   € \         P                  \        V RR4      4      pVe	   V! V 4      # R# )u;   Profile management â€” create, delete, list, switch, alias.Úprofile_actionN)ÚPROFILE_ACTIONSrT   rÏ   )rx   Úhandlers   & r   Úcmd_profilero  x  s1   € ä×!Ñ!¤'¨$Ð0@À$Ó"GÓH€GØÒÙ�t‹}Ðñ r   )é   ))rJ   zDescription:  )rK   zAuthor:       )ÚlicensezLicense:      )rL   zRequires:     Hermes )rQ  zSource:       )Úinstalled_atzInstalled:    )&Ú__doc__Ú
__future__r   Úpathlibr   rR   r   Útypingr   r   r   r)   r1   r8   r^   r|   r‘   r‹   r¥   r¬   r³   rå   ré   rñ   r  r  r&  r.  r3  r7  r>  rC  rS  rY  r\  r_  rm  ro  r   r   r   Ú<module>rw     s„  ðñõ #å Û 	Û 
ß %ñ°÷ ð õ
"õFõ*õ,
ò^ò*õ,+ò*õõEò&gòTõ/ò:HòzòB!DòHòYòGòòòòBð>€òð:Øˆ/ðà
ˆMðð 
ˆ<ðð ˆoð	ð
 ˆoðð Ð!ðð ˆMðð ˆ^ðð ˆoðð Ð-ðð Ð1ðð ˆoðð ˆoðð Ððð ˆoðð  ˆMð!€ô(r   