§
    øžyjðË  ã                   óÆ	  — U d Z ddlZddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZmZ ddlmZ  ej        e¦  «        Ze G d„ d¦  «        ¦   «         Zd	d
i dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d"“d#d$“d%d“d&d'“d(dd)d*dd+d"d,d-d.d"d/œ¥i dd0“dd1“dd“dd2“dd1“dd3“dd4“dd5“dd6“dd2“d d0“d7d3“d#d8“d%d0“d&d9“d:d4“d;d0“d<d=d>d?d@dAd?d?dBœ¥i dCdDdEdFdGdHdIœdJdKœdLdMi ddN“ddO“ddP“ddQ“ddR“ddP“ddO“dd“dd“dd“ddR“ddN“d dO“d!dS“d#dR“d%dO“d&dT“dUdOdPdVdOdWdSdXdYdPdSd/œ¥g dZ¢g d[¢g d\¢d]d^gd_d`gdadbgdcddggdeœdfdgdhdidjdkdIœdldmdndoœdpdqi ddr“dds“ddt“ddu“ddv“ddt“ddw“ddw“ddx“ddy“ddv“ddu“d dt“d!dz“d#d{“d%d|“d&d}“d~dd€d�dwdrdzd‚dƒdtdzd/œ¥i dCdDdEdFdGd„dIœdJd…œd†d‡i ddˆ“dd‰“ddŠ“dd‹“ddv“dd‰“ddŠ“ddŒ“dd�“ddŽ“ddv“ddˆ“d d‰“d!d�“d#d{“d%d�“d&d‘“dŒd’d�d“d‰d‹d�d”d•d‰d�d/œ¥i dCdDdEdFdGdHdIœdJd…œd–d—i dd˜“dd™“ddš“dd›“ddœ“dd˜“dd�“ddž“dd=“ddŸ“ddœ“dd “d d˜“d!d¡“d#dœ“d%d˜“d&d¢“dždŸdŸd=dšd£d¤d¥d¦d§d¨d˜d¡d©œ¥i dCdDdEdFdGd„dIœdªd…œd«d¬i dd­“dd®“dd¯“dd°“dd±“dd¯“dd®“dd4“dd5“dd²“dd±“dd­“d d­“d!d³“d#d±“d%d¯“d&d´“d4d²dµd5d®d¶d·d¸d¹dºd»d¯d³d©œ¥i dCdDdEdFdGdHdIœdJd…œd¼d½i dd¾“dd¿“ddÀ“ddÁ“ddÂ“ddÀ“dd¿“dd“dd“dd“ddÂ“dd¾“d dÀ“d!dÃ“d#dÂ“d%d¿“d&dÄ“dÅdÀdÆdÇd¿dÈdÃdÉdÊdÀdÃd/œ¥g dË¢g dÌ¢g dÍ¢dÎdÏgdÐdÑgdÒdÓgdÔdÕggdeœdÖd×dØdÙdÚdÛdIœdªdÜdÝdoœdÞdßi ddà“dd?“ddá“ddâ“ddã“ddá“ddã“ddä“ddá“ddà“dd?“ddå“d dà“d!dæ“d#dã“d%d?“d&dç“dàdãdád?dädådædèdédádæd/œ¥g dê¢g dë¢g dì¢dídîgdïdðgdÔdÕgdñdòggdeœdódôdõdöd÷dødIœdªdùdúdoœdûdüi ddý“ddþ“ddÿ“d�d “d�d“ddÿ“ddþ“dd“dd“dd“d�d“ddý“d dÿ“d!�d“d#�d“d%dþ“d&�d“�ddÿ�ddVdþ�d�d�d�d	�d
�d
dÿ�dd©œ¥g �d¢g �d¢g �d¢�d�dgd_d`gdÔdÕg�d�dggdeœ�d�d�d�d�d�ddIœdª�d�ddoœ�dœ	Ze	ee	eef         f         e�d<   daee         e�d<   d	aee�d<   �def�d„Z�d e�dee	eef                  f�d!„Z�d"e�d#e�d$e�de	eef         f�d%„Z�d&e	eef         �def�d'„Z�de
e	eef                  f�d(„Z�d)e�def�d*„Z�def�d+„Z�d)e�def�d,„Z�def�d-„Z �d.e!�ddf�d/„Z"�d5�d0e�def�d1„Z#�d6�d0e�def�d2„Z$�d7�d0e�def�d3„Z%�de	eef         f�d4„Z&dS (8  u”  Hermes skin/theme engine â€” the theme SDK for every surface.

A data-driven skin system that lets users (and Hermes itself) customize the
visual appearance across the CLI, the TUI, and the desktop GUI from a single
file. Skins are defined as YAML files in ~/.hermes/skins/ or as built-in presets.
No code changes are needed to add a new skin.

This module is the source of truth: it resolves the active skin, and the gateway
pushes the resolved palette to the TUI and desktop (see tui_gateway's
``resolve_skin`` / ``skin.changed``). A skin dropped in ~/.hermes/skins/ therefore
themes all three surfaces at once â€” the theme analogue of the plugin SDK.

SKIN YAML SCHEMA
================

All fields are optional. Missing values inherit from the ``default`` skin.

.. code-block:: yaml

    # Required: skin identity
    name: mytheme                         # Unique skin name (lowercase, hyphens ok)
    description: Short description        # Shown in /skin listing

    # Colors: hex values for Rich markup (banner, UI, response box)
    colors:
      background: "#0e0e12"               # App/base surface â€” the seed the TUI
                                          # status bar and the desktop GUI derive
                                          # their whole palette from (see below).
      banner_border: "#CD7F32"            # Panel border color
      banner_title: "#FFD700"             # Panel title text color
      banner_accent: "#FFBF00"            # Section headers (Available Tools, etc.)
      banner_dim: "#B8860B"               # Dim/muted text (separators, labels)
      banner_text: "#FFF8DC"              # Body text (tool names, skill names)
      ui_accent: "#FFBF00"               # General UI accent
      ui_label: "#DAA520"                # UI labels (warm gold; teal clashed w/ default banner gold)
      ui_ok: "#4caf50"                   # Success indicators
      ui_error: "#ef5350"                # Error indicators
      ui_warn: "#ffa726"                 # Warning indicators
      ui_tool: "#FFBF00"                 # Tool-call markers (â—� / spinner); falls back to ui_accent
      ui_thinking: "#CC9B1F"             # Reasoning/thinking text; falls back to banner_dim
      diff_added: "#dcffdc"              # Diff added-line background (TUI)
      diff_removed: "#ffdcdc"            # Diff removed-line background
      diff_added_word: "#248a3d"         # Diff added word-level foreground
      diff_removed_word: "#cf222e"       # Diff removed word-level foreground
      syntax_string: "#FFBF00"           # Code strings; falls back to ui_accent
      syntax_number: "#FFF8DC"           # Code numbers; falls back to ui_text
      syntax_keyword: "#CD7F32"          # Code keywords; falls back to ui_border
      syntax_comment: "#CC9B1F"          # Code comments; falls back to banner_dim
      prompt: "#FFF8DC"                  # Prompt text color
      input_rule: "#CD7F32"              # Input area horizontal rule
      response_border: "#FFD700"         # Response box border (ANSI)
      status_bar_bg: "#1a1a2e"           # Status bar background
      status_bar_text: "#C0C0C0"         # Status bar default text
      status_bar_strong: "#FFD700"       # Status bar highlighted text
      status_bar_dim: "#8B8682"          # Status bar separators/muted text
      status_bar_good: "#8FBC8F"         # Healthy context usage
      status_bar_warn: "#FFD700"         # Warning context usage
      status_bar_bad: "#FF8C00"          # High context usage
      status_bar_critical: "#FF6B6B"     # Critical context usage
      session_label: "#DAA520"           # Session label color
      session_border: "#8B8682"          # Session ID dim color
      status_bar_bg: "#1a1a2e"          # TUI status/usage bar background
      voice_status_bg: "#1a1a2e"        # TUI voice status background
      selection_bg: "#333355"           # TUI mouse-selection highlight background
      completion_menu_bg: "#1a1a2e"      # Completion menu background
      completion_menu_current_bg: "#333355"  # Active completion row background
      completion_menu_meta_bg: "#1a1a2e"     # Completion meta column background
      completion_menu_meta_current_bg: "#333355"  # Active completion meta background

    # Optional paired palette for the opposite terminal polarity (mirrors the
    # desktop app's colors/darkColors pairing). If `colors` above is authored
    # for dark terminals, `light_colors` supplies the hand-tuned light-terminal
    # variant (same keys); light-authored skins supply `dark_colors` instead.
    # Without a paired block, the TUI adapts `colors` automatically
    # (contrast-clamped foregrounds, polarity-corrected fills).
    light_colors:
      banner_title: "#8B6914"
      # ... same keys as `colors` ...

    # Spinner: customize the animated spinner during API calls
    spinner:
      waiting_faces:                      # Faces shown while waiting for API
        - "(âš”)"
        - "(â›¨)"
      thinking_faces:                     # Faces shown during reasoning
        - "(âŒ�)"
        - "(<>)"
      thinking_verbs:                     # Verbs for spinner messages
        - "forging"
        - "plotting"
      wings:                              # Optional left/right spinner decorations
        - ["âŸªâš”", "âš”âŸ«"]                  # Each entry is [left, right] pair
        - ["âŸªâ–²", "â–²âŸ«"]

    # Branding: text strings used throughout the CLI
    branding:
      agent_name: "Hermes Agent"          # Banner title, status display
      welcome: "Welcome message"          # Shown at CLI startup
      goodbye: "Goodbye! âš•"              # Shown on exit
      response_label: " âš• Hermes "       # Response box header label
      prompt_symbol: "â�¯"                 # Input prompt symbol (bare token; renderers add trailing space)
      help_header: "(^_^)? Commands"      # /help header text

    # Tool prefix: character for tool output lines (default: â”Š)
    tool_prefix: "â”Š"

    # Tool emojis: override the default emoji for any tool (used in spinners & progress)
    tool_emojis:
      terminal: "âš”"           # Override terminal tool emoji
      web_search: "ðŸ”®"        # Override web_search tool emoji
      # Any tool not listed here uses its registry default

USAGE
=====

.. code-block:: python

    from hermes_cli.skin_engine import get_active_skin, list_skins, set_active_skin

    skin = get_active_skin()
    print(skin.colors["banner_title"])    # "#FFD700"
    print(skin.get_branding("agent_name"))  # "Hermes Agent"

    set_active_skin("ares")               # Switch to built-in ares skin
    set_active_skin("mytheme")            # Switch to user skin from ~/.hermes/skins/

BUILT-IN SKINS
==============

- ``default`` â€” Classic Hermes gold/kawaii (the current look)
- ``ares``    â€” Crimson/bronze war-god theme with custom spinner wings
- ``mono``    â€” Clean grayscale monochrome
- ``slate``   â€” Cool blue developer-focused theme
- ``daylight`` â€” Light background theme with dark text and blue accents
- ``warm-lightmode`` â€” Warm brown/gold text for light terminal backgrounds

USER SKINS
==========

Drop a YAML file in ``~/.hermes/skins/<name>.yaml`` following the schema above.
Activate with ``/skin <name>`` in the CLI or ``display.skin: <name>`` in config.yaml.
é    N)Ú	dataclassÚfield)ÚPath)ÚAnyÚDictÚListÚOptionalÚTuple©Úget_hermes_homec                   óÖ  — e Zd ZU dZeed<   dZeed<    ee¬¦  «        Z	e
eef         ed<    ee¬¦  «        Ze
eef         ed<    ee¬¦  «        Ze
eef         ed<    ee¬¦  «        Ze
eef         ed	<    ee¬¦  «        Ze
eef         ed
<   dZeed<    ee¬¦  «        Ze
eef         ed<   dZeed<   dZeed<   ddededefd„Zdeeeef                  fd„Zddededefd„ZdS )Ú
SkinConfigzComplete skin configuration.ÚnameÚ Údescription)Údefault_factoryÚcolorsÚlight_colorsÚdark_colorsÚspinnerÚbrandingõ   â”ŠÚtool_prefixÚtool_emojisÚbanner_logoÚbanner_heroÚkeyÚfallbackÚreturnc                 ó8   — | j                              ||¦  «        S )z Get a color value with fallback.)r   Úget©Úselfr   r   s      ú</home/ragecks/.hermes/hermes-agent/hermes_cli/skin_engine.pyÚ	get_colorzSkinConfig.get_color³   s   € àŒ{�Š˜s HÑ-Ô-Ð-ó    c                 ó"  — | j                              dg ¦  «        }g }|D ]n}t          |t          t          f¦  «        rPt          |¦  «        dk    r=|                     t          |d         ¦  «        t          |d         ¦  «        f¦  «         Œo|S )z.Get spinner wing pairs, or empty list if none.Úwingsé   r   é   )r   r!   Ú
isinstanceÚlistÚtupleÚlenÚappendÚstr)r#   ÚrawÚresultÚpairs       r$   Úget_spinner_wingszSkinConfig.get_spinner_wings·   s‚   € àŒl×Ò˜w¨Ñ+Ô+ˆØˆØð 	<ð 	<ˆDÝ˜$¥¥u Ñ.Ô.ð <µ3°t±9´9À²>°>Ø—’�s 4¨¤7™|œ|­S°°a´©\¬\Ð:Ñ;Ô;Ð;øØˆr&   c                 ó8   — | j                              ||¦  «        S )z#Get a branding value with fallback.)r   r!   r"   s      r$   Úget_brandingzSkinConfig.get_brandingÀ   s   € àŒ}× Ò   hÑ/Ô/Ð/r&   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   Ú__annotations__r   r   Údictr   r   r   r   r   r   r   r   r   r   r   r%   r   r
   r4   r6   © r&   r$   r   r   ž   sÉ  € € € € € € à&Ð&Ø
€I€I�IØ€K�ÐÐÑØ"˜U°4Ð8Ñ8Ô8€FˆD��c�ŒNÐ8Ð8Ñ8ð $) 5¸Ð#>Ñ#>Ô#>€L�$�s˜C�x”.Ð>Ð>Ñ>Ø"' %¸Ð"=Ñ"=Ô"=€K��c˜3�h”Ð=Ð=Ñ=Ø#˜e°DÐ9Ñ9Ô9€GˆT�#�s�(Œ^Ð9Ð9Ñ9Ø$˜u°TÐ:Ñ:Ô:€Hˆd�3˜�8ŒnÐ:Ð:Ñ:Ø€K�ÐÐÑØ"' %¸Ð"=Ñ"=Ô"=€K��c˜3�h”Ð=Ð=Ñ=Ø€K�ÐÐÑØ€K�ÐÐÑð.ð .˜Sð .¨Cð .¸ð .ð .ð .ð .ð 4¨¨c°3¨h¬Ô#8ð ð ð ð ð0ð 0 ð 0¨sð 0¸Cð 0ð 0ð 0ð 0ð 0ð 0r&   r   Údefaultu"   Classic Hermes â€” gold and kawaiiÚbanner_borderú#CD7F32Úbanner_titleú#FFD700Úbanner_accentz#FFBF00Ú
banner_dimz#B8860BÚbanner_textú#FFF8DCÚ	ui_accentÚui_labelz#DAA520Úui_okz#4caf50Úui_errorz#ef5350Úui_warnz#ffa726ÚpromptÚ
input_ruleÚresponse_borderÚstatus_bar_bgú#1a1a2eÚstatus_bar_textz#C0C0C0Ústatus_bar_strongÚstatus_bar_dimz#8A7A4Aú#8FBC8Fú#FF8C00ú#FF6B6Bz#8B8682ú#333355z#3a3a55z#4dabf7)Ústatus_bar_goodÚstatus_bar_warnÚstatus_bar_badÚstatus_bar_criticalÚsession_labelÚsession_borderÚcompletion_menu_bgÚcompletion_menu_current_bgÚselection_bgÚshell_dollarÚvoice_status_bgz#C8961Ez#D89B04z#5C4718z#A97E10z#2E7D32z#C62828z#D97706r\   z#6F6F6Fz#9A8A5ArX   rY   z#C2410Cz#B91C1Cz#1E6FC0z#F5F5F5z#E0D1BFz#D4E4F7)rZ   r[   ra   r^   r_   r`   rO   rb   zHermes AgentzAWelcome to Hermes Agent! Type your message or /help for commands.õ   Goodbye! âš•u    âš• Hermes õ   â�¯ú(^_^)? Available Commands)Ú
agent_nameÚwelcomeÚgoodbyeÚresponse_labelÚprompt_symbolÚhelp_headerr   )r   r   r   r   r   r   r   Úaresu$   War-god theme â€” crimson and bronzez#A93333z#C7A96Bz#DD4A3Az#905151z#F1E6CFz#2A1212z#756054z#7BC96Fz#EF5350z#6E584Bz#5C221Dz#692620)õ   (âš”)õ   (â›¨)õ   (â–²)ú(<>)z(/))rm   rn   ro   õ   (âŒ�)rp   )ÚforgingÚmarchingzsizing the fieldzholding the linezhammering plansztempering steelzplotting impactzraising the shieldu   âŸªâš”u   âš”âŸ«u   âŸªâ–²u   â–²âŸ«u   âŸªâ•¸u   â•ºâŸ«u   âŸªâ›¨u   â›¨âŸ«)Úwaiting_facesÚthinking_facesÚthinking_verbsr(   z
Ares Agentz?Welcome to Ares Agent! Type your message or /help for commands.u   Farewell, warrior! âš”u
    âš” Ares u   âš”u   (âš”) Available Commandsu   â•ŽuW  [bold #A3261F] â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—       â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ•—   â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—[/]
[bold #B73122]â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�      â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�â•�â•� â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•‘â•šâ•�â•�â–ˆâ–ˆâ•”â•�â•�â•�[/]
[#C93C24]â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•”â–ˆâ–ˆâ•— â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#D84A28]â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�  â•šâ•�â•�â•�â•�â–ˆâ–ˆâ•‘â•šâ•�â•�â•�â•�â•�â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â•�  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#E15A2D]â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘      â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘ â•šâ–ˆâ–ˆâ–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#EB6C32]â•šâ•�â•�  â•šâ•�â•�â•šâ•�â•�  â•šâ•�â•�â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�â•�â•�â•�â•�â•�      â•šâ•�â•�  â•šâ•�â•� â•šâ•�â•�â•�â•�â•�â•� â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�  â•šâ•�â•�â•�â•�   â•šâ•�â•�[/]u�  [#9F1C1C]â €â €â €â €â €â €â €â €â €â €â €â €â €â£¤â£¤â €â €â €â €â €â €â €â €â €â €â €â €â €[/]
[#9F1C1C]â €â €â €â €â €â €â €â €â €â¢€â£´â£¿â Ÿâ »â£¿â£¦â¡€â €â €â €â €â €â €â €â €â €[/]
[#C7A96B]â €â €â €â €â €â €â €â£ â£¾â¡¿â ‹â €â €â €â ™â¢¿â£·â£„â €â €â €â €â €â €â €[/]
[#C7A96B]â €â €â €â €â €â¢€â£¾â¡¿â ‹â €â €â¢ â¡„â €â €â ™â¢¿â£·â¡€â €â €â €â €â €[/]
[#DD4A3A]â €â €â €â €â£°â£¿â Ÿâ €â €â €â£°â£¿â£¿â£†â €â €â €â »â£¿â£†â €â €â €â €[/]
[#DD4A3A]â €â €â €â¢°â£¿â �â €â €â¢€â£¾â¡¿â ‰â¢¿â£·â¡€â €â €â ¹â£¿â¡†â €â €â €[/]
[#9F1C1C]â €â €â €â£¿â¡Ÿâ €â €â£ â£¿â Ÿâ €â €â €â »â£¿â£„â €â €â¢»â£¿â €â €â €[/]
[#9F1C1C]â €â €â €â£¿â¡‡â €â €â ™â ‹â €â €âš”â €â €â ™â ‹â €â €â¢¸â£¿â €â €â €[/]
[#6B1717]â €â €â €â¢¿â£§â €â €â €â €â €â €â €â €â €â €â €â €â €â£¼â¡¿â €â €â €[/]
[#6B1717]â €â €â €â ˜â¢¿â£·â£„â €â €â €â €â €â €â €â €â €â£ â£¾â¡¿â ƒâ €â €â €[/]
[#C7A96B]â €â €â €â €â ˆâ »â£¿â£·â£¦â£¤â£€â£€â£¤â£¤â£¶â£¿â ¿â ‹â €â €â €â €[/]
[#C7A96B]â €â €â €â €â €â €â €â ‰â ›â ¿â ¿â ¿â ¿â ›â ‰â €â €â €â €â €â €â €[/]
[#DD4A3A]â €â €â €â €â €â €â €â €â €â €âš”â €â €â €â €â €â €â €â €â €â €[/]
[dim #6B1717]â €â €â €â €â €â €â €â €war god onlineâ €â €â €â €â €â €â €â €[/])r   r   r   r   r   r   r   r   Úmonou   Monochrome â€” clean grayscalez#5E5E5Ez#e6edf3z#aaaaaaz#606060z#c9d1d9z#888888z#ccccccz#999999z#1F1F1Fz#C9D1D9z#E6EDF3z#777777z#B5B5B5z#AAAAAAz#D0D0D0z#F0F0F0z#464646z#505050z[?] Available Commands)r   r   r   r   r   r   Úslateu   Cool blue â€” developer-focusedz#4169e1z#7eb8f6z#8EA8FFz#545E6Bz#63D0A6z#F7A072z#e6a855z#151C2Fz#7EB8F6z#5D6672z#E6A855z#FF7A7Az#324867z#3A5375ÚdaylightzELight theme for bright terminals with dark text and cool blue accentsz#2563EBz#0F172Az#1D4ED8z#475569z#111827z#0F766Ez#15803Dz#B45309z#6E94BEz#E5EDF8z#838890z#64748Bz#F8FAFCz#DBEAFEz#EEF2FFz#BFDBFEz#D3E0FB)rX   rY   rZ   r[   r\   r]   r^   r_   Úcompletion_menu_meta_bgÚcompletion_menu_meta_current_bgr`   ra   rb   u   â”‚úwarm-lightmodeuG   Warm light mode â€” dark brown/gold text for light terminal backgroundsz#8B6914z#5C3D11z#8B4513z#8B7355z#2C1810z#E65100z#F5F0E8z#8A8F98z#DA4D00z#A0845Cz#F5EFE0z#E8DCC8z#F0E8D8z#DFCFB0z#E8DAD0Úposeidonu)   Ocean-god theme â€” deep blue and seafoamz#2A6FB9z#A9DFFFz#5DB8F5z#44638Fz#EAF7FFz#0F2440z#52708Az#6ED7B0z#3576BCz#D94F4Fz#496884z#254D73z#2A587F)õ   (â‰ˆ)õ   (Î¨)õ   (âˆ¿)õ   (â—Œ)u   (â— ))r   r€   r~   rq   r�   )zcharting currentszsounding the depthzreading foam lineszsteering the tridentztracking undertowzplotting sea laneszcalling the swellzmeasuring pressureu   âŸªâ‰ˆu   â‰ˆâŸ«u   âŸªÎ¨u   Î¨âŸ«u   âŸªâˆ¿u   âˆ¿âŸ«u   âŸªâ—Œu   â—ŒâŸ«zPoseidon AgentzCWelcome to Poseidon Agent! Type your message or /help for commands.u   Fair winds! Î¨u    Î¨ Poseidon u   Î¨u   (Î¨) Available Commandsu=  [bold #B8E8FF]â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ•—   â–ˆâ–ˆâ•—       â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ•—   â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—[/]
[bold #97D6FF]â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•‘      â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�â•�â•� â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•‘â•šâ•�â•�â–ˆâ–ˆâ•”â•�â•�â•�[/]
[#75C1F6]â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â–ˆâ–ˆâ•— â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•”â–ˆâ–ˆâ•— â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#4FA2E0]â–ˆâ–ˆâ•”â•�â•�â•�â•� â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â•šâ•�â•�â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â•�  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘â•šâ•�â•�â•�â•�â•�â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â•�  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#2E7CC7]â–ˆâ–ˆâ•‘     â•šâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â•šâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ•‘ â•šâ–ˆâ–ˆâ–ˆâ–ˆâ•‘      â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘ â•šâ–ˆâ–ˆâ–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#1B4F95]â•šâ•�â•�      â•šâ•�â•�â•�â•�â•�â•� â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�â•šâ•�â•�â•�â•�â•�â•�  â•šâ•�â•�â•�â•�â•�â•� â•šâ•�â•�  â•šâ•�â•�â•�â•�      â•šâ•�â•�  â•šâ•�â•� â•šâ•�â•�â•�â•�â•�â•� â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�  â•šâ•�â•�â•�â•�   â•šâ•�â•�[/]u9  [#2A6FB9]â €â €â €â €â €â €â €â €â €â €â €â¢€â£€â¡€â €â €â €â €â €â €â €â €â €â €â €[/]
[#5DB8F5]â €â €â €â €â €â €â €â €â €â£ â£¾â£¿â£·â£„â €â €â €â €â €â €â €â €â €[/]
[#5DB8F5]â €â €â €â €â €â €â €â¢ â£¿â �â €Î¨â €â ¹â£¿â¡„â €â €â €â €â €â €â €[/]
[#A9DFFF]â €â €â €â €â €â €â €â£¿â¡Ÿâ €â €â €â €â €â¢»â£¿â €â €â €â €â €â €â €[/]
[#A9DFFF]â €â €â €â‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ£¿â¡‡â €â €â €â €â €â¢¸â£¿â‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ €â €â €[/]
[#5DB8F5]â €â €â €â €â €â €â €â£¿â¡‡â €â €â €â €â €â¢¸â£¿â €â €â €â €â €â €â €[/]
[#2A6FB9]â €â €â €â €â €â €â €â¢¿â£§â €â €â €â €â €â£¼â¡¿â €â €â €â €â €â €â €[/]
[#2A6FB9]â €â €â €â €â €â €â €â ˜â¢¿â£·â£„â£€â£ â£¾â¡¿â ƒâ €â €â €â €â €â €â €[/]
[#153C73]â €â €â €â €â €â €â €â €â ˆâ »â£¿â£¿â¡¿â Ÿâ �â €â €â €â €â €â €â €â €[/]
[#153C73]â €â €â €â €â €â €â €â €â €â €â ˆâ �â €â €â €â €â €â €â €â €â €â €â €[/]
[#5DB8F5]â €â €â €â €â €â‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ €â €â €â €â €[/]
[#A9DFFF]â €â €â €â €â €â €â‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ‰ˆâ €â €â €â €â €â €[/]
[dim #153C73]â €â €â €â €â €â €â €deep waters holdâ €â €â €â €â €â €â €[/]Úsisyphusu6   Sisyphean theme â€” austere grayscale with persistencez#B7B7B7z#E7E7E7z#5C5C5Cz#D3D3D3z#919191z#656565z#202020z#6D6D6Dz#585858z#666666)õ   (â—‰)r�   õ   (â—¬)u   (â¬¤)z(::))rƒ   r„   r�   u   (â—‹)u   (â—�))zfinding tractionzmeasuring the gradezresetting the boulderzcounting the ascentztesting leveragezsetting the shoulderzpushing uphillzenduring the loopu   âŸªâ—‰u   â—‰âŸ«u   âŸªâ—¬u   â—¬âŸ«u   âŸªâ¬¤u   â¬¤âŸ«zSisyphus AgentzCWelcome to Sisyphus Agent! Type your message or /help for commands.u   The boulder waits. â—‰u    â—‰ Sisyphus u   â—‰u   (â—‰) Available Commandsu  [bold #F5F5F5]â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•—   â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ•—  â–ˆâ–ˆâ•—â–ˆâ–ˆâ•—   â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—       â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ•—   â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—[/]
[bold #E7E7E7]â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â•šâ–ˆâ–ˆâ•— â–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�      â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�â•�â•� â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•‘â•šâ•�â•�â–ˆâ–ˆâ•”â•�â•�â•�[/]
[#D7D7D7]â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â•šâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•� â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•”â–ˆâ–ˆâ•— â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#BFBFBF]â•šâ•�â•�â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘â•šâ•�â•�â•�â•�â–ˆâ–ˆâ•‘  â•šâ–ˆâ–ˆâ•”â•�  â–ˆâ–ˆâ•”â•�â•�â•�â•� â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â•šâ•�â•�â•�â•�â–ˆâ–ˆâ•‘â•šâ•�â•�â•�â•�â•�â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â•�  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#8F8F8F]â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘     â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘      â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘ â•šâ–ˆâ–ˆâ–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#626262]â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�â•šâ•�â•�â•�â•�â•�â•�â•�   â•šâ•�â•�   â•šâ•�â•�     â•šâ•�â•�  â•šâ•�â•� â•šâ•�â•�â•�â•�â•�â•� â•šâ•�â•�â•�â•�â•�â•�â•�      â•šâ•�â•�  â•šâ•�â•� â•šâ•�â•�â•�â•�â•�â•� â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�  â•šâ•�â•�â•�â•�   â•šâ•�â•�[/]ur  [#B7B7B7]â €â €â €â €â €â €â €â €â €â €â¢€â£€â£€â£€â¡€â €â €â €â €â €â €â €â €â €â €[/]
[#D3D3D3]â €â €â €â €â €â €â €â£ â£¾â£¿â£¿â£¿â£¿â£·â£„â €â €â €â €â €â €â €â €[/]
[#E7E7E7]â €â €â €â €â €â €â£¾â£¿â£¿â£¿â£¿â£¿â£¿â£¿â£·â €â €â €â €â €â €â €[/]
[#F5F5F5]â €â €â €â €â €â¢¸â£¿â£¿â£¿â£¿â£¿â£¿â£¿â£¿â£¿â¡‡â €â €â €â €â €â €[/]
[#E7E7E7]â €â €â €â €â €â €â£¿â£¿â£¿â£¿â£¿â£¿â£¿â£¿â£¿â €â €â €â €â €â €â €[/]
[#D3D3D3]â €â €â €â €â €â €â ˜â¢¿â£¿â£¿â£¿â£¿â£¿â¡¿â ƒâ €â €â €â €â €â €â €[/]
[#B7B7B7]â €â €â €â €â €â €â €â €â ™â ¿â£¿â ¿â ‹â €â €â €â €â €â €â €â €â €[/]
[#919191]â €â €â €â €â €â €â €â €â €â €â €â €â €â €â €â €â €â €â €â €â €â €[/]
[#656565]â €â €â €â €â €â €â €â €â €â£°â¡„â €â €â €â €â €â €â €â €â €â €â €[/]
[#656565]â €â €â €â €â €â €â €â €â£°â£¿â£¿â£†â €â €â €â €â €â €â €â €â €â €[/]
[#4A4A4A]â €â €â €â €â €â €â €â£°â£¿â£¿â£¿â£¿â£†â €â €â €â €â €â €â €â €â €[/]
[#4A4A4A]â €â €â €â €â €â£€â£´â£¿â£¿â£¿â£¿â£¿â£¿â£¦â£€â €â €â €â €â €â €[/]
[#656565]â €â €â €â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â”�â €â €â €[/]
[dim #4A4A4A]â €â €â €â €â €â €â €â €â €the boulderâ €â €â €â €â €â €â €â €â €[/]Ú	charizardu)   Volcanic theme â€” burnt orange and emberz#C75B1Dz#FFD39Az#F29C38z#C58A45z#FFF0D4z#2B160Ez#826144z#6BCB77z#E2832Bz#7B593Az#0B0503z#4A1B07z#120806z#5A260D)õ   (âœ¦)ro   õ   (â—‡)rp   õ   (ðŸ”¥))r†   ro   r‡   rq   rˆ   )zbanking into the draftzmeasuring burnzreading the updraftztracking ember fallzsetting wing anglezholding the flame corezplotting a hot landingzcoiling for liftu   âŸªâœ¦u   âœ¦âŸ«u   âŸªâ—‡u   â—‡âŸ«zCharizard AgentzDWelcome to Charizard Agent! Type your message or /help for commands.u   Flame out! âœ¦u    âœ¦ Charizard u   âœ¦u   (âœ¦) Available Commandsu  [bold #FFF0D4] â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•—  â–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—        â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•— â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ•—   â–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—[/]
[bold #FFD39A]â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘â•šâ•�â•�â–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—      â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•”â•�â•�â•�â•�â•� â–ˆâ–ˆâ•”â•�â•�â•�â•�â•�â–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•‘â•šâ•�â•�â–ˆâ–ˆâ•”â•�â•�â•�[/]
[#F29C38]â–ˆâ–ˆâ•‘     â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ–ˆâ•”â•� â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—  â–ˆâ–ˆâ•”â–ˆâ–ˆâ•— â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#E2832B]â–ˆâ–ˆâ•‘     â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘ â–ˆâ–ˆâ–ˆâ•”â•�  â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â•šâ•�â•�â•�â•�â•�â–ˆâ–ˆâ•”â•�â•�â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•”â•�â•�â•�  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#C75B1D]â•šâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�      â–ˆâ–ˆâ•‘  â–ˆâ–ˆâ•‘â•šâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•”â•�â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ•—â–ˆâ–ˆâ•‘ â•šâ–ˆâ–ˆâ–ˆâ–ˆâ•‘   â–ˆâ–ˆâ•‘[/]
[#7A3511] â•šâ•�â•�â•�â•�â•�â•�â•šâ•�â•�  â•šâ•�â•�â•šâ•�â•�  â•šâ•�â•�â•šâ•�â•�  â•šâ•�â•�â•šâ•�â•�â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�  â•šâ•�â•�â•šâ•�â•�  â•šâ•�â•�â•šâ•�â•�â•�â•�â•�â•�       â•šâ•�â•�  â•šâ•�â•� â•šâ•�â•�â•�â•�â•�â•� â•šâ•�â•�â•�â•�â•�â•�â•�â•šâ•�â•�  â•šâ•�â•�â•�â•�   â•šâ•�â•�[/]uè  [#FFD39A]â €â €â €â €â €â €â €â €â£€â£¤â ¶â ¶â ¶â£¤â£€â €â €â €â €â €â €â €â €[/]
[#F29C38]â €â €â €â €â €â €â£´â Ÿâ �â €â €â €â €â ˆâ »â£¦â €â €â €â €â €â €[/]
[#F29C38]â €â €â €â €â €â£¼â �â €â €â €âœ¦â €â €â €â €â ¹â£§â €â €â €â €â €[/]
[#E2832B]â €â €â €â €â¢°â¡Ÿâ €â €â£€â£¤â£¤â£¤â£€â €â €â €â¢»â¡†â €â €â €â €[/]
[#E2832B]â €â €â£ â¡¾â ›â �â£ â£¾â Ÿâ ‰â €â ‰â »â£·â£„â €â ˆâ ›â¢·â£„â €â €[/]
[#C75B1D]â €â£¼â Ÿâ €â¢€â£¾â Ÿâ �â €â €â €â €â €â ˆâ »â£·â¡€â €â »â£§â €[/]
[#C75B1D]â¢¸â¡Ÿâ €â €â£¿â¡Ÿâ €â €â €ðŸ”¥â €â €â €â €â¢»â£¿â €â €â¢»â¡‡[/]
[#7A3511]â €â »â£¦â¡€â ˜â¢¿â£§â¡€â €â €â €â €â €â¢€â£¼â¡¿â ƒâ¢€â£´â Ÿâ €[/]
[#7A3511]â €â €â ˆâ »â£¦â£€â ™â¢¿â£·â£¤â£¤â£¤â£¾â¡¿â ‹â£€â£´â Ÿâ �â €â €[/]
[#C75B1D]â €â €â €â €â ˆâ ™â ›â ¶â ¤â ­â ­â ¤â ¶â ›â ‹â �â €â €â €â €[/]
[#F29C38]â €â €â €â €â €â €â €â €â£°â¡¿â¢¿â£†â €â €â €â €â €â €â €â €â €[/]
[#F29C38]â €â €â €â €â €â €â €â£¼â¡Ÿâ €â €â¢»â£§â €â €â €â €â €â €â €â €[/]
[dim #7A3511]â €â €â €â €â €â €â €tail flame litâ €â €â €â €â €â €â €â €[/])	r>   rl   rw   rx   ry   r|   r}   r‚   r…   Ú_BUILTIN_SKINSÚ_active_skinÚ_active_skin_namer   c                  ó$   — t          ¦   «         dz  S )zUser skins directory.Úskinsr   r=   r&   r$   Ú
_skins_dirrŽ     s   € åÑÔ˜wÑ&Ð&r&   Úpathc                 ó,  — 	 ddl }t          | dd¬¦  «        5 }|                     |¦  «        }ddd¦  «         n# 1 swxY w Y   t          |t          ¦  «        rd|v r|S n3# t
          $ r&}t                               d| |¦  «         Y d}~nd}~ww xY wdS )z(Load a skin definition from a YAML file.r   NÚrzutf-8)Úencodingr   zFailed to load skin from %s: %s)ÚyamlÚopenÚ	safe_loadr+   r<   Ú	ExceptionÚloggerÚdebug)r�   r“   ÚfÚdataÚes        r$   Ú_load_skin_from_yamlrœ     s÷   € ðAØˆˆˆÝ�$˜ gÐ.Ñ.Ô.ð 	%°!Ø—>’> !Ñ$Ô$ˆDð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%å�d�DÑ!Ô!ð 	 f° n nØˆKøøÝð Að Að AÝ�ŠÐ6¸¸aÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@øøøøðAøøøàˆ4s4   ‚A! ˜:®A! º>¾A! Á>ÁA! Á!
BÁ+BÂBÚvalueÚsectionÚ	skin_namec                óš   — t          | t          ¦  «        r| S | €i S t                               d||t	          | ¦  «        j        ¦  «         i S )zIReturn a mapping value or an empty dict when the section type is invalid.Nz>Skin '%s' has invalid '%s' section type (%s); ignoring section)r+   r<   r—   ÚwarningÚtyper7   )r�   rž   rŸ   s      r$   Ú_mapping_or_emptyr£   &  sU   € å�%�ÑÔð ØˆØ€}Øˆ	Ý
‡N‚NØHØØÝˆU‰ŒÔñ	ô ð ð €Ir&   rš   c                 ój  — t           d         }t          |                      dd¦  «        ¦  «        }t          |                      d¦  «        d|¬¦  «        }t          |                      d¦  «        d|¬¦  «        }t          |                      d¦  «        d|¬¦  «        }t          |                      d¦  «        d|¬¦  «        }t	          |                     di ¦  «        ¦  «        }|                     |¦  «         t	          |                     di ¦  «        ¦  «        }|                     |¦  «         t	          |                     di ¦  «        ¦  «        }	|	                     |¦  «         t          |                      d	¦  «        d	|¬¦  «        }
t          |                      d
¦  «        d
|¬¦  «        }t          ||                      dd¦  «        ||
|||	|                      d|                     dd¦  «        ¦  «        ||                      dd¦  «        |                      dd¦  «        ¬¦  «        S )zBBuild a SkinConfig from a raw dict (built-in or loaded from YAML).r>   r   Úunknownr   )rž   rŸ   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r‰   r0   r!   r£   r<   Úupdater   )rš   r>   rŸ   Úcolor_overridesÚspinner_overridesÚbranding_overridesÚemoji_overridesr   r   r   r   r   s               r$   Ú_build_skin_configr«   5  sú  € õ ˜YÔ'€GÝ�D—H’H˜V YÑ/Ô/Ñ0Ô0€IÝ'¨¯ª°Ñ(:Ô(:ÀHÐXaÐbÑbÔb€OÝ)¨$¯(ª(°9Ñ*=Ô*=ÀyÐ\eÐfÑfÔfÐÝ*¨4¯8ª8°JÑ+?Ô+?ÈÐ_hÐiÑiÔiÐÝ'¨¯ª°Ñ(?Ô(?ÈÐbkÐlÑlÔl€Oå�'—+’+˜h¨Ñ+Ô+Ñ,Ô,€FØ
‡M‚M�/Ñ"Ô"Ð"Ý�7—;’;˜y¨"Ñ-Ô-Ñ.Ô.€GØ‡N‚NÐ$Ñ%Ô%Ð%Ý�G—K’K 
¨BÑ/Ô/Ñ0Ô0€HØ‡O‚OÐ&Ñ'Ô'Ð'õ % T§X¢X¨nÑ%=Ô%=À~ÐajÐkÑkÔk€LÝ# D§H¢H¨]Ñ$;Ô$;À]Ð^gÐhÑhÔh€KåØØ—H’H˜]¨BÑ/Ô/ØØ!ØØØØ—H’H˜]¨G¯KªK¸ÀuÑ,MÔ,MÑNÔNØ#Ø—H’H˜]¨BÑ/Ô/Ø—H’H˜]¨BÑ/Ô/ðñ ô ð r&   c                  ó  ‡— g } t                                ¦   «         D ]2\  }}|                      ||                     dd¦  «        ddœ¦  «         Œ3t	          ¦   «         }|                     ¦   «         ršt          |                     d¦  «        ¦  «        D ]w}t          |¦  «        }|rd|                     d|j	        ¦  «        Št          ˆfd„| D ¦   «         ¦  «        rŒJ|                      ‰|                     dd¦  «        ddœ¦  «         Œx| S )	zŽList all available skins (built-in + user-installed).

    Returns list of {"name": ..., "description": ..., "source": "builtin"|"user"}.
    r   r   Úbuiltin)r   r   Úsourcez*.yamlr   c              3   ó0   •K  — | ]}|d          ‰k    V — ŒdS )r   Nr=   )Ú.0ÚsrŸ   s     €r$   ú	<genexpr>zlist_skins.<locals>.<genexpr>q  s,   øè è € Ð>Ð>°!�q˜”y IÒ-Ð>Ð>Ð>Ð>Ð>Ð>r&   Úuser)r‰   Úitemsr/   r!   rŽ   Úis_dirÚsortedÚglobrœ   ÚstemÚany)r2   r   rš   Ú
skins_pathr™   rŸ   s        @r$   Ú
list_skinsr»   ]  s8  ø€ ð
 €FÝ$×*Ò*Ñ,Ô,ð ð ‰
ˆˆdØ�ŠØØŸ8š8 M°2Ñ6Ô6Øð
ð 
ñ 	ô 	ð 	ð 	õ ‘”€JØ×ÒÑÔð Ý˜
Ÿš¨Ñ1Ô1Ñ2Ô2ð 	ð 	ˆAÝ'¨Ñ*Ô*ˆDØð 	Ø ŸHšH V¨Q¬VÑ4Ô4�	åÐ>Ð>Ð>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ð ØØ—’Ø%Ø#'§8¢8¨M¸2Ñ#>Ô#>Ø$ðð ñ ô ð øð €Mr&   r   c                 óF  — t          ¦   «         }|| › d�z  }|                     ¦   «         r t          |¦  «        }|rt          |¦  «        S | t          v rt          t          |          ¦  «        S t
                               d| ¦  «         t          t          d         ¦  «        S )z<Load a skin by name. Checks user skins first, then built-in.z.yamlz"Skin '%s' not found, using defaultr>   )rŽ   Úis_filerœ   r«   r‰   r—   r¡   )r   rº   Ú	user_filerš   s       r$   Ú	load_skinr¿   |  sž   € õ ‘”€JØ ˜^˜^˜^Ñ+€IØ×ÒÑÔð ,Ý# IÑ.Ô.ˆØð 	,Ý% dÑ+Ô+Ð+ð �~ÐÐÝ!¥.°Ô"6Ñ7Ô7Ð7õ ‡N‚NÐ7¸Ñ>Ô>Ð>Ý�n¨YÔ7Ñ8Ô8Ð8r&   c                  óF   — t           €t          t          ¦  «        a t           S )z.Get the currently active skin config (cached).)rŠ   r¿   r‹   r=   r&   r$   Úget_active_skinrÁ   �  s   € õ ÐÝ Õ!2Ñ3Ô3ˆÝÐr&   c                 ó2   — | a t          | ¦  «        at          S )z3Switch the active skin. Returns the new SkinConfig.)r‹   r¿   rŠ   )r   s    r$   Úset_active_skinrÃ   —  s   € ð ÐÝ˜T‘?”?€LÝÐr&   c                  ó   — t           S )z*Get the name of the currently active skin.)r‹   r=   r&   r$   Úget_active_skin_namerÅ   Ÿ  s   € åÐr&   Úconfigc                 óD  — |                       d¦  «        pi }t          |t          ¦  «        si }|                      dd¦  «        }t          |t          ¦  «        r7|                     ¦   «         r#t          |                     ¦   «         ¦  «         dS t          d¦  «         dS )z|Initialize the active skin from CLI config at startup.

    Call this once during CLI init with the loaded config dict.
    ÚdisplayÚskinr>   N)r!   r+   r<   r0   ÚstriprÃ   )rÆ   rÈ   rŸ   s      r$   Úinit_skin_from_configrË   ¤  s™   € ð
 �jŠj˜Ñ#Ô#Ð) r€GÝ�g�tÑ$Ô$ð ØˆØ—’˜F IÑ.Ô.€IÝ�)�SÑ!Ô!ð # i§o¢oÑ&7Ô&7ð #Ý˜	ŸšÑ)Ô)Ñ*Ô*Ð*Ð*Ð*å˜	Ñ"Ô"Ð"Ð"Ð"r&   r   c                 óÌ   — 	 t          ¦   «                              d| ¦  «        }n# t          $ r | }Y nw xY w|p|                      ¦   «         }|p|                      ¦   «         › d�S )a  Return the interactive prompt symbol with a single trailing space.

    Skins store ``prompt_symbol`` as a bare token (no spaces). The trailing
    space is appended here so callers can drop it straight into a rendered
    prompt without hand-rolling whitespace.
    rj   Ú )rÁ   r6   r–   rÊ   )r   r1   Úcleaneds      r$   Úget_active_prompt_symbolrÏ   ¸  s}   € ðÝÑÔ×,Ò,¨_¸hÑGÔGˆˆøÝð ð ð Øˆˆˆðøøøð ˆ�h×%Ò%Ñ'Ô'€GàÐ)˜ŸšÑ)Ô)Ð,Ð,Ð,Ð,s   ‚"% ¥4³4c                 ól   — 	 t          ¦   «                              d| ¦  «        S # t          $ r | cY S w xY w)z*Get the /help header from the active skin.rk   ©rÁ   r6   r–   ©r   s    r$   Úget_active_help_headerrÓ   Ê  sG   € ðÝÑ Ô ×-Ò-¨m¸XÑFÔFÐFøÝð ð ð Øˆˆˆðøøøó   ‚!$ ¤3²3c                 ól   — 	 t          ¦   «                              d| ¦  «        S # t          $ r | cY S w xY w)z*Get the goodbye line from the active skin.rh   rÑ   rÒ   s    r$   Úget_active_goodbyerÖ   Ó  sG   € ðÝÑ Ô ×-Ò-¨i¸ÑBÔBÐBøÝð ð ð ØˆˆˆðøøørÔ   c            	      ó  — 	 t          ¦   «         } n# t          $ r i cY S w xY w|                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }|                      d	d
¦  «        }|                      d|¦  «        }|                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }	|                      d|¦  «        }
|                      d|¦  «        }|                      d|¦  «        }|                      d|                      dd¦  «        ¦  «        }|                      d|¦  «        }|                      d|                      d|¦  «        ¦  «        }|                      d|¦  «        }|                      d|	¦  «        }|                      dd¦  «        }|                      dd¦  «        }|                      d |¦  «        }|                      d!|¦  «        }i d"d“d#|› d$�“d|“d%|› d$�“d&|› d$�“d'd(|	› d)|
› �“d*d(|	› d)|› d+�“d,d(|	› d)|› �“d-d(|	› d)|› d+�“d.d(|	› d)|› d+�“d/d(|	› d)|› d+�“d0d(|	› d)|› d+�“d1|“d2|› d+�“d3d(|› d)|› �“d4d(|› d)|› �“d5d(|› d)|› �“i d6d(|› d)|› �“d7d(|› d)|› �“d8|“d9|› d+�“d:|› d+�“d;|“d<|› d+�“d=|› d$�“d>|“d?|› d+�“d@|“dA|› d+�“dB|“dC|“dD|› d+�“dE|› d+�“dF|› d$�“¥||› d+�d(|› d)|› �d(|› d)|› d+�dGœ¥S )HzÞReturn prompt_toolkit style overrides derived from the active skin.

    These are layered on top of the CLI's base TUI style so /skin can refresh
    the live prompt_toolkit UI immediately without rebuilding the app.
    rL   r   rM   r@   rA   rB   rE   rF   rD   z#555555rH   rK   rU   rJ   rV   rO   rP   rQ   rR   rS   rX   rI   rT   rY   rZ   rC   r[   rb   r^   r_   rW   rz   r{   z
input-areaÚplaceholderz italiczprompt-workingÚhintz
status-barzbg:rÍ   zstatus-bar-strongz boldzstatus-bar-dimzstatus-bar-goodzstatus-bar-warnzstatus-bar-badzstatus-bar-criticalz
input-rulezimage-badgezcompletion-menuzcompletion-menu.completionz"completion-menu.completion.currentzcompletion-menu.meta.completionz'completion-menu.meta.completion.currentzclarify-borderzclarify-titlezclarify-questionzclarify-choicezclarify-selectedzclarify-active-otherzclarify-countdownzsudo-promptzsudo-borderz
sudo-titlez	sudo-textzapproval-borderzapproval-titlezapproval-desczapproval-cmd)zapproval-choicezapproval-selectedzvoice-statuszvoice-status-recording)rÁ   r–   r%   )rÉ   rL   rM   ÚtitleÚtextÚdimÚlabelÚwarnÚerrorÚ	status_bgÚstatus_textÚstatus_strongÚ
status_dimÚstatus_goodÚstatus_warnÚ
status_badÚstatus_criticalÚvoice_bgÚmenu_bgÚmenu_current_bgÚmenu_meta_bgÚmenu_meta_current_bgs                         r$   Ú"get_prompt_toolkit_style_overridesrí   Ü  s#  € ðÝÑ Ô ˆˆøÝð ð ð Øˆ	ˆ	ˆ	ðøøøð �^Š^˜H bÑ)Ô)€FØ—’ ¨iÑ8Ô8€JØ�NŠN˜>¨9Ñ5Ô5€EØ�>Š>˜-¨Ñ3Ô3€DØ
�.Š.˜ yÑ
1Ô
1€CØ�NŠN˜: uÑ-Ô-€EØ�>Š>˜) YÑ/Ô/€DØ�NŠN˜: yÑ1Ô1€EØ—’˜°	Ñ:Ô:€IØ—.’.Ð!2°DÑ9Ô9€KØ—N’NÐ#6¸Ñ>Ô>€MØ—’Ð 0°#Ñ6Ô6€JØ—.’.Ð!2°D·N²NÀ7ÈIÑ4VÔ4VÑWÔW€KØ—.’.Ð!2°DÑ9Ô9€KØ—’Ð 0°$·.².ÀÐRVÑ2WÔ2WÑXÔX€JØ—n’nÐ%:¸EÑBÔB€OØ�~Š~Ð/°Ñ;Ô;€HØ�nŠnÐ1°9Ñ=Ô=€GØ—n’nÐ%AÀ9ÑMÔM€OØ—>’>Ð";¸WÑEÔE€LØŸ>š>Ð*KÈ_Ñ]Ô]Ðð+ð
 	�bð+ð 	˜#���ð+ð 	�&ð+ð 	˜S˜/˜/˜/ð+ð 	�3���ð+ð 	Ð5˜IÐ5Ð5¨Ð5Ð5ð+ð 	ÐC 9ÐCÐC¨}ÐCÐCÐCð+ð 	Ð8 	Ð8Ð8¨JÐ8Ð8ð+ð 	Ð? Ð?Ð?¨[Ð?Ð?Ð?ð+ð 	Ð? Ð?Ð?¨[Ð?Ð?Ð?ð+ð 	Ð= 	Ð=Ð=¨JÐ=Ð=Ð=ð+ð  	ÐG YÐGÐG°ÐGÐGÐGð!+ð" 	�jð#+ð$ 	˜%���ð%+ð& 	Ð1 Ð1Ð1¨4Ð1Ð1ð'+ð( 	%Ð&<¨GÐ&<Ð&<°dÐ&<Ð&<ð)+ð* 	-Ð.M°OÐ.MÐ.MÀeÐ.MÐ.Mð++ð +ð, 	*Ð+E°Ð+EÐ+EÀÐ+EÐ+Eð-+ð. 	2Ð3WÐ9MÐ3WÐ3WÐPUÐ3WÐ3Wð/+ð0 	˜*ð1+ð2 	˜E˜˜˜ð3+ð4 	˜t˜N˜N˜Nð5+ð6 	˜#ð7+ð8 	˜u˜O˜O˜Oð9+ð: 	 5Ð 1Ð 1Ð 1ð;+ð< 	˜Zð=+ð> 	˜%���ð?+ð@ 	�zðA+ðB 	˜�o�o�oðC+ðD 	�TðE+ðF 	˜:ðG+ðH 	˜T˜.˜.˜.ðI+ðJ 	˜D˜˜˜ðK+ðL 	˜3˜˜˜ðM+ð +ðN Ø %˜_˜_˜_Ø0˜hÐ0Ð0¨Ð0Ð0Ø"?¨Ð"?Ð"?°5Ð"?Ð"?Ð"?ðU+ð +ð +ð +s   ‚ ‘ Ÿ )rd   )re   )rc   )'r:   ÚloggingÚdataclassesr   r   Úpathlibr   Útypingr   r   r   r	   r
   Úhermes_constantsr   Ú	getLoggerr7   r—   r   r‰   r0   r;   rŠ   r‹   rŽ   rœ   r£   r«   r»   r¿   rÁ   rÃ   rÅ   r<   rË   rÏ   rÓ   rÖ   rí   r=   r&   r$   ú<module>rô      sÙ  ððMð Mð Mð^ €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à ,Ð ,Ð ,Ð ,Ð ,Ð ,à	ˆÔ	˜8Ñ	$Ô	$€ð ð#0ð #0ð #0ð #0ð #0ñ #0ô #0ñ „ð#0ðX Ø;ð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ˜)ð	
ð
 ˜9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜)ð
ð ˜yð
ð ˜Yð
ð ˜yð
ð    ð!
ð" ˜ið#
ð$  )Ø(Ø'Ø#,Ø&Ø'Ø"+Ø*3Ø%Ø%Ø(ð9
ð 
ð 
ðL
Ø˜Ið
à˜Yð
ð ˜)ð
ð ˜9ð	
ð
 ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜yð
ð ˜Yð
ð ˜yð
ð   ð
ð ˜ið
ð  ˜yð!
ð" ˜yð#
ð$ (Ø#,Ø%à"+Ø*3Ø%Ø&Ø(ð5
ð 
ð 
ð8
ð )ØZØ%Ø,Ø"Ø6ð
ð 
ð ðeSð Sðj Ø=ð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ˜)ð	
ð
 ˜9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜)ð
ð ˜yð
ð ˜Yð
ð ˜yð
ð    ð!
ð" ˜ið#
ð$  )Ø(Ø'Ø#,Ø&Ø'Ø"+Ø*3Ø%Ø%Ø(ð9
ð 
ð 
ð> HÐGÐGØJÐJÐJðð ð ð
 ˜8Ð$Ø˜8Ð$Ø˜8Ð$Ø˜8Ð$ð	ð
ð 
ð 'ØXØ/Ø*Ø"Ø5ð
ð 
ð ðWðRð}Lð Lð\ Ø7ð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ˜)ð	
ð
 ˜9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜)ð
ð ˜yð
ð ˜Yð
ð ˜yð
ð    ð!
ð" ˜ið#
ð$  )Ø(Ø'Ø#,Ø&Ø'Ø"+Ø*3Ø%Ø%Ø(ð9
ð 
ð 
ð< à(ØZØ%Ø,Ø"Ø3ð
ð 
ð ðU+ð +ðZ Ø8ð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ˜)ð	
ð
 ˜9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜)ð
ð ˜yð
ð ˜Yð
ð ˜yð
ð    ð!
ð" ˜ið#
ð$  )Ø(Ø'Ø#,Ø&Ø'Ø"+Ø*3Ø%Ø%Ø(ð9
ð 
ð 
ð< à(ØZØ%Ø,Ø"Ø6ð
ð 
ð ðU+ð +ðZ Ø^ð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ˜)ð	
ð
 ˜9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜)ð
ð ˜yð
ð ˜Yð
ð ˜yð
ð    ð!
ð" ˜ið#
ð$  )Ø(Ø'Ø#,Ø&Ø'Ø"+Ø*3Ø'0Ø/8Ø%Ø%Ø(ð=
ð 
ð 
ð@ à(ØZØ%Ø,Ø"Ø3ð
ð 
ð ðY-ð -ð^ !Ø`ð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ˜)ð	
ð
 ˜9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜)ð
ð ˜yð
ð ˜Yð
ð ˜yð
ð    ð!
ð" ˜ið#
ð$  )Ø(Ø'Ø#,Ø&Ø'Ø"+Ø*3Ø'0Ø/8Ø%Ø%Ø(ð=
ð 
ð 
ð@ à(ØZØ(Ø/Ø%Ø6ð
ð 
ð  ðY-ð -ð^ ØBð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ˜)ð	
ð
 ˜9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜)ð
ð ˜yð
ð ˜Yð
ð ˜yð
ð    ð!
ð" ˜ið#
ð$  )Ø(Ø'Ø#,Ø&Ø'Ø"+Ø*3Ø%Ø%Ø(ð9
ð 
ð 
ð> JÐIÐIØJÐJÐJðð ð ð ˜8Ð$Ø˜'Ð"Ø˜8Ð$Ø˜8Ð$ð	ð
ð 
ð  +Ø\Ø'Ø-Ø!Ø4ð
ð 
ð ðdðNðLð Lð\ ØOð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ˜)ð	
ð
 ˜9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð �ið
ð ˜)ð
ð ˜yð
ð ˜Yð
ð ˜yð
ð    ð!
ð" ˜ið#
ð$  )Ø(Ø'Ø#,Ø&Ø'Ø"+Ø*3Ø%Ø%Ø(ð9
ð 
ð 
ð> JÐIÐIØKÐKÐKðð ð ð ˜8Ð$Ø˜8Ð$Ø˜8Ð$Ø˜8Ð$ð	ð
ð 
ð  +Ø\Ø/Ø.Ø"Ø5ð
ð 
ð ðXðUðMð Mð^ ØBð
Ø˜Yð
à˜Ið
ð ˜Yð
ð ™)ð	
ð
 ™9ð
ð ˜ð
ð ˜	ð
ð �Yð
ð ˜	ð
ð �yð
ð ‘ið
ð ˜)ð
ð ˜yð
ð ™Yð
ð ™yð
ð    ð!
ð" ™ið#
ñ$  )Ø(Ù'Ø#,Ø&Ù'Ù"+Ù*3Ù'0Ù/8Ù%Ø%Ù(ð=
ð 
ð 
ðB KÑJÐJØLÑLÐLðñ ð ñ ™8Ð$Ø˜8Ð$Ø˜8Ð$Ù™8Ð$ð	ð
ð 
ñ  ,Ù]Ù'Ù/Ù"Ù5ð
ð 
ð ñpñOðCNð Nñc@	-ð @	-€��S˜$˜s C˜xœ.Ð(Ô)ð @	ñ @	ñ @	ðN &*€ˆh�zÔ"Ð )Ñ )Ñ )Ø"Ð �3Ð "Ñ "Ñ "ñ'�Dð 'ñ 'ð 'ð 'ñ

˜tñ 
¨°°c¸3°h´Ô(@ð 
ñ 
ð 
ð 
ñ˜Sñ ¨cñ ¸cñ ÀdÈ3ÐPSÈ8Änð ñ ð ð ñ%˜T # s (œ^ñ %°
ð %ñ %ð %ð %ñP�D˜˜c 3˜hœÔ(ð ñ ð ð ñ>9�Cñ 9˜Jð 9ñ 9ð 9ð 9ñ&˜ð ñ ð ð ñ˜#ñ  *ð ñ ð ð ñ˜cð ñ ð ð ñ
# $ñ #¨4ð #ñ #ð #ð #ñ(-ñ - sñ -°sð -ñ -ð -ð -ñ$ñ  Sñ È3ð ñ ð ð ññ  ñ ¸#ð ñ ð ð ñP¨D°°c°¬Nð Pñ Pð Pð Pð Pð Pr&   