Plan limits, context fill and prompt-cache warmth in one compact animated deck above the prompt

Your Claude Code limits, context and prompt-cache warmth in one glance, with Clawd keeping you company.
<img src="assets/deck.gif" alt="usage-deck: animated Clawd typing beside 5-hour, weekly and context meters" width="100%">
Claude Code tells you about your limits when you're already close to them, and nothing tells you when your prompt cache is about to go cold. usage-deck keeps all of it on screen in one compact band above the prompt:
| 5-hour and weekly limits | dithered meters, green → yellow at 60% → red at 85%, with reset countdowns |
| Context fill | tokens used out of the window |
| Cache warmth | how much of the last turn came from cache, and a countdown until it goes cold. Send something before it turns red and the next turn doesn't pay to rebuild the cache |
| Clawd | animates with what Claude is doing |
<img src="assets/states.png" alt="Clawd typing, thinking, done, idle, yawning and asleep" width="100%">
Clawd pulls out a laptop and types while tools run, thinks when a turn goes quiet, bounces when a turn finishes, looks around and yawns when idle, and falls asleep after ten minutes.
Needs Claude Code 2.1.287 or later (mods are on by default).
/plugin marketplace add codeclawd/usage-deck
/plugin install usage-deck@usage-deck
/reload-plugins
/deck hides or shows it.
new window instead of vanishing.This is an unofficial fan project and is not affiliated with or endorsed by Anthropic.
Code: MIT. Clawd belongs to Anthropic.
hooks/register.tsx 292 lines1/* @jsx h */
2import { atom, read, update } from 'claude-code'
3import type { ElementConstructor, EngineInterface, Register, RenderElement, SessionUsage, TextProps, Timer } from 'claude-code'
4
5import type { Meter } from '../types'
6import { CLIPS } from './frames'
7import type { Seg } from './frames'
8
9const meters = atom({ plugin: 'usage-deck', key: 'meters' } as const, [] as Meter[])
10const isHidden = atom({ plugin: 'usage-deck', key: 'isHidden' } as const, false)
11const frame = atom({ plugin: 'usage-deck', key: 'frame' } as const, 0)
12const isWorking = atom({ plugin: 'usage-deck', key: 'isWorking' } as const, false)
13
14
15const BAR_CELLS = 16
16
17// claude.dev dithered meter: dense dots filled, faint dots for the track.
18export function bar(percent: number, width = BAR_CELLS): { fill: string; rest: string } {
19 const n = Math.max(0, Math.min(width, Math.round((Math.min(percent, 100) / 100) * width)))
20 return { fill: '⣿'.repeat(n), rest: '⠒'.repeat(width - n) }
21}
22
23export function colorOf(percent: number): string {
24 return percent >= 85 ? 'red' : percent >= 60 ? 'yellow' : 'green'
25}
26
27export function untilReset(resetsAt: string | undefined, nowMs: number): string {
28 if (!resetsAt) return ''
29 const ms = Date.parse(resetsAt) - nowMs
30 if (!Number.isFinite(ms) || ms <= 0) return 'now'
31 const m = Math.round(ms / 60_000)
32 const d = Math.floor(m / 1440), h = Math.floor((m % 1440) / 60)
33 return d > 0 ? `${d}d${h}h` : h > 0 ? `${h}h${m % 60}m` : `${m}m`
34}
35
36function k(n: number): string {
37 return n >= 1_000_000 ? `${+(n / 1_000_000).toFixed(1)}M` : `${Math.round(n / 1000)}k`
38}
39
40const LABELS: Record<string, string> = { five_hour: '5H', seven_day: '7D', spend_limit: '$' }
41
42export function metersOf(usage: SessionUsage, nowMs: number): Meter[] {
43 const out: Meter[] = (usage.rateLimits ?? [])
44 .filter(l => Number.isFinite(l.percentUsed))
45 .map(l => ({ label: LABELS[l.kind] ?? l.kind.slice(0, 2), percent: l.percentUsed, note: untilReset(l.resetsAt, nowMs) }))
46 // Right after a window resets, the API omits it until it is used again: keep the row as a fresh window.
47 for (const [kind, label] of [['five_hour', '5H'], ['seven_day', '7D']] as const) {
48 if (!out.some(m => m.label === label)) out.unshift({ label, percent: 0, note: 'new window' })
49 }
50 out.sort((a, b) => (a.label === '5H' ? -1 : b.label === '5H' ? 1 : 0))
51 const c = usage.context
52 if (c && c.window > 0) {
53 const pct = c.percent ?? ((c.tokens ?? 0) / c.window) * 100
54 out.push({ label: 'CTX', percent: pct, note: c.tokens !== undefined ? `${k(c.tokens)} / ${k(c.window)}` : '' })
55 }
56 return out
57}
58
59async function refresh($: EngineInterface): Promise<void> {
60 try {
61 const usage = await $.session.usage()
62 const nowMs = await $.clock.now()
63 await update($, meters, () => metersOf(usage, nowMs))
64 } catch {
65 // keep the last reading
66 }
67}
68
69// How long a clip plays once through.
70export function clipMs(clip: string): number {
71 const c = CLIPS[clip]
72 return c ? (c.frames.length * 1000) / c.fps : 0
73}
74
75// Which clip plays, by state (Clawd on Desk's theme.json mapping, simplified). A turn opens with Clawd
76// walking over (claude.dev patrol), then the official app's lead-in (pull the laptop out, sit) once, then
77// typing; it ends with the lead-out (laptop away, turn back) once, then happy. Idle cycles look / wave / yawn.
78export function clipFor(s: { working: boolean; nowMs: number; lastToolMs: number; lastActiveMs: number; happyUntilMs: number; turnStartMs?: number; endStartMs?: number }): string {
79 if (!s.working && s.endStartMs !== undefined && s.nowMs >= s.endStartMs && s.nowMs - s.endStartMs < clipMs('typing-end')) return 'typing-end'
80 if (s.nowMs < s.happyUntilMs) return 'happy'
81 if (s.working) {
82 // The engine reports work a beat before turn.start (turn not stamped yet): walk over, then sit and type.
83 const turn = s.turnStartMs ?? 0
84 if (turn < s.lastActiveMs) return 'walk'
85 if (s.nowMs - turn < clipMs('typing-start')) return 'typing-start'
86 return s.nowMs - s.lastToolMs > 8_000 ? 'think' : 'typing'
87 }
88 if (s.nowMs - s.lastActiveMs > 10 * 60_000) return 'doze'
89 return ['look', 'look', 'wave', 'look', 'yawn'][Math.floor(s.nowMs / 4_000) % 5]
90}
91
92// One clip row as Text: fg/bg per segment; a 4th `true` draws it inverse, so the glyph is a hole in the
93// body (closed and ^ eyes).
94function segsOf(Text: ElementConstructor<TextProps>, segs: Seg[]): RenderElement[] {
95 return segs.map(([s, fg, bg, inv], j) => (
96 <Text key={`s${j}`} {...(fg ? { color: fg } : {})} {...(bg ? { backgroundColor: bg } : {})} {...(inv ? { inverse: true } : {})}>{s}</Text>
97 ))
98}
99
100// Loops by the clock; with `startMs`, plays once from then and holds the last frame.
101export function frameIndex(clip: string, nowMs: number, startMs?: number): number {
102 const c = CLIPS[clip]
103 if (!c) return 0
104 if (startMs === undefined) return Math.floor((nowMs * c.fps) / 1000) % c.frames.length
105 return Math.max(0, Math.min(c.frames.length - 1, Math.floor(((nowMs - startMs) * c.fps) / 1000)))
106}
107
108// Whether what the rest of the AbovePrompt chain drew holds anything: another plugin's tree (image-view's
109// pasted-image tiles, lane-band) wants the band's rows; an empty Box / Text, '' or nothing does not. Alone,
110// next(e) answers core's own band, `Box[{ type: 'engine', ref }]` (seen live on 2.1.289), which draws
111// nothing without a survey (a survey already hands the band back above).
112export function isEmpty(node: unknown): boolean {
113 if (node === null || node === undefined || node === false || node === '') return true
114 if (typeof node === 'object' && (node as { type?: unknown }).type === 'engine') return true
115 if (Array.isArray(node)) return node.every(isEmpty)
116 if (typeof node === 'object') {
117 const el = node as { type?: unknown; children?: unknown }
118 if (el.type === undefined || el.type === 'Box' || el.type === 'Text' || el.type === 'Fragment') return isEmpty(el.children ?? [])
119 }
120 return false
121}
122// image-view sizes its tiles to the whole band (at most 6 rows + 3 of border and label): below this many
123// rows even the deck's one compact row would push its tiles out of view, so the deck steps aside.
124const CROWDED_MIN_ROWS = 10
125
126// Cache hit share of the last turn, as token-ledger computes it: reads over everything read.
127export function cacheHit(u: { input_tokens?: number; cache_read_input_tokens?: number; cache_creation_input_tokens?: number } | undefined): number | null {
128 if (!u) return null
129 const read = u.cache_read_input_tokens ?? 0
130 const over = (u.input_tokens ?? 0) + read + (u.cache_creation_input_tokens ?? 0)
131 return over > 0 ? Math.round((read / over) * 100) : null
132}
133
134let cachePct: number | null = null
135// Prompt cache TTL: this setup runs the 1-hour cache (5 min if the session drops to overage).
136const CACHE_TTL_MS = 60 * 60_000
137let lastCallMs = 0
138
139export function cacheLeft(nowMs: number, lastMs: number, ttlMs = CACHE_TTL_MS): { text: string; color: string } {
140 if (!lastMs) return { text: '', color: 'gray' }
141 const left = ttlMs - (nowMs - lastMs)
142 if (left <= 0) return { text: 'cold', color: 'red' }
143 const m = Math.ceil(left / 60_000)
144 return { text: `warm ${m}m`, color: left < 5 * 60_000 ? 'red' : left < 15 * 60_000 ? 'yellow' : 'green' }
145}
146let lastToolMs = 0
147let lastActiveMs = 0
148let turnStartMs = 0
149let endStartMs: number | undefined
150let happyUntilMs = 0
151let poll: Timer | null = null
152let anim: Timer | null = null
153
154export const register: Register = on => {
155 on('session.start', async ($, e, next) => {
156 const r = await next(e)
157 await $.command.register({ name: 'deck', description: 'Show or hide the usage deck above the prompt' })
158 poll?.cancel()
159 anim?.cancel()
160 // A reload resets these; without this Clawd thinks you've been idle forever and dozes.
161 lastActiveMs = lastToolMs = await $.clock.now()
162 poll = $.clock.every(60_000, () => refresh($))
163 // Redraw at 12 fps, the claude.dev / Claude Code app clip rate; each clip holds its own frames at its fps.
164 anim = $.clock.every(1000 / 12, () => update($, frame, f => (f + 1) % 100_000))
165 await refresh($)
166 return r
167 })
168
169 on('tool.call', async ($, e, next) => {
170 lastToolMs = await $.clock.now()
171 return next(e)
172 })
173
174 on('turn.start', async ($, e, next) => {
175 lastActiveMs = lastToolMs = turnStartMs = await $.clock.now()
176 await update($, isWorking, () => true)
177 return next(e)
178 })
179
180 on('turn.complete', async ($, e, next) => {
181 const r = await next(e)
182 cachePct = cacheHit(e.usage) ?? cachePct
183 lastCallMs = await $.clock.now()
184 await update($, isWorking, () => false)
185 const now = await $.clock.now()
186 lastActiveMs = now
187 endStartMs = now
188 happyUntilMs = now + clipMs('typing-end') + 3_000
189 await refresh($)
190 return r
191 })
192
193 on('command.run', { name: 'deck' }, async $ => {
194 const hidden = await read($, isHidden)
195 await update($, isHidden, () => !hidden)
196 return { text: hidden ? 'usage-deck: shown' : 'usage-deck: hidden (/deck shows it again)' }
197 })
198
199 on('ui.render', { component: 'AbovePrompt' }, async ($, e, next) => {
200 const below = await next(e)
201 const ms = await read($, meters)
202 if (e.props.hasSurvey || ms.length === 0 || (await read($, isHidden))) return below
203 // Another plugin draws in the band: give it the rows, keeping at most the one-row deck.
204 const crowded = !isEmpty(below)
205 if (crowded && e.props.maxRows < CROWDED_MIN_ROWS) return below
206
207 const { Box, Text } = $.ui.resolve(e)
208 await read($, frame) // the 12 fps tick re-runs this hook; the frame itself comes from the clock
209 const working = e.props.isWorking || (await read($, isWorking))
210 const cols = Math.max(40, e.props.bodyColumns)
211 const order = [...ms.filter(m => m.label !== 'CTX'), ...ms.filter(m => m.label === 'CTX')].slice(0, 3)
212 const name = (m: Meter) => (m.label === '5H' ? '5-HOUR' : m.label === '7D' ? 'WEEKLY' : m.label === 'CTX' ? 'CONTEXT' : m.label)
213 const sub = (m: Meter) =>
214 m.label === 'CTX'
215 ? `${m.note.replace(' / ', ' of ')}${cachePct !== null ? ` · cache ${cachePct}%` : ''}`
216 : m.note ? `resets in ${m.note}` : ''
217 const pct = (m: Meter) => `${String(Math.round(m.percent)).padStart(2, '0')}%`
218
219 const nowMs = await $.clock.now()
220 const clipName = clipFor({ working, nowMs, lastToolMs, lastActiveMs, happyUntilMs, turnStartMs, endStartMs })
221 const clip = CLIPS[clipName]
222 const once = clipName === 'typing-start' ? turnStartMs : clipName === 'typing-end' ? endStartMs : undefined
223 const fi = frameIndex(clipName, nowMs, once)
224
225 // Compact: one row while the engine's spinner squeezes the band: the clip's eye row, so Clawd keeps a face.
226 if (e.props.maxRows < 4 || crowded) {
227 const w = Math.max(6, Math.floor((cols - 18) / order.length) - 12)
228 return (
229 <Box flexDirection="column">
230 <Box flexDirection="row">
231 <Text>{segsOf(Text, clip.frames[fi][clip.face[fi]])}</Text>
232 {order.map(m => {
233 const b = bar(m.percent, w)
234 return (
235 <Text key={m.label}>
236 <Text dimColor>{` ${m.label} `}</Text>
237 <Text color={colorOf(m.percent)}>{b.fill}</Text>
238 <Text dimColor>{b.rest}</Text>
239 <Text color={colorOf(m.percent)} bold>{` ${pct(m)}`}</Text>
240 </Text>
241 )
242 })}
243 </Box>
244 {below}
245 </Box>
246 )
247 }
248
249 // Full: Clawd on the left (a space, 16 cells, a gap so props never touch the meters), three columns.
250 const rows = clip.frames[fi].slice(-Math.max(3, e.props.maxRows))
251 const colW = Math.min(44, Math.floor((cols - 18) / order.length))
252 const barW = Math.max(8, Math.min(28, colW - 9))
253 return (
254 <Box flexDirection="column">
255 <Box flexDirection="row">
256 <Box flexDirection="column" width={18}>
257 {rows.map((segs, i) => (
258 <Text key={`c${i}`}>
259 {' '}
260 {segsOf(Text, segs)}
261 </Text>
262 ))}
263 </Box>
264 {order.map(m => {
265 const b = bar(m.percent, barW)
266 const col = colorOf(m.percent)
267 return (
268 <Box key={m.label} flexDirection="column" width={colW}>
269 <Text>
270 <Text dimColor bold>{name(m)}</Text>
271 </Text>
272 <Text>
273 <Text color={col}>{b.fill}</Text>
274 <Text dimColor>{b.rest}</Text>
275 <Text color={col} bold>{` ${pct(m).padStart(4)}`}</Text>
276 </Text>
277 <Text>
278 <Text dimColor>{sub(m)}</Text>
279 {m.label === 'CTX' && cacheLeft(nowMs, lastCallMs).text ? (
280 <Text color={cacheLeft(nowMs, lastCallMs).color}>{` ${cacheLeft(nowMs, lastCallMs).text}`}</Text>
281 ) : null}
282 </Text>
283 </Box>
284 )
285 })}
286 </Box>
287 {below}
288 </Box>
289 )
290 })
291}
292hooks/frames.ts 8 lines1// Clawd, hand-drawn per clip from a real reference pose (claude.dev lottie / Clawd on Desk SVG).
2// 16 x 8 sprite px as 16 x 4 half-block cells; official 12x8 body; eyes are holes. Closed and ^ eyes
3// are inverse glyphs (the mark is a hole), so no frame is a blank face. `face` = the cell row with the
4// eyes, used by the one-row compact band. Generated file.
5export type Seg = [string, string | null, string | null] | [string, string | null, string | null, boolean]
6export type Clip = { fps: number; face: number[]; frames: Seg[][][] }
7export const CLIPS: Record<string, Clip> = {"typing": {"fps": 12, "face": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "frames": [[[[" ", null, null], ["▄▄", "#be684d", null], [" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▀▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄█", "#be684d", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄▀", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█", "#8b8b8b", null], ["▀▀", "#be684d", "#8b8b8b"], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▄▄", "#be684d", null], [" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▀▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄█", "#be684d", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄▀", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█", "#8b8b8b", null], ["▀▀", "#be684d", "#8b8b8b"], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▄▄", "#be684d", null], [" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▀▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄█", "#be684d", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄▀", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█", "#8b8b8b", null], ["▀▀", "#be684d", "#8b8b8b"], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▄▄", "#be684d", null], [" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▀▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄█", "#be684d", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["▀███▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄▀", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█", "#8b8b8b", null], ["▀▀", "#be684d", "#8b8b8b"], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]]]}, "typing-start": {"fps": 12, "face": [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0], "frames": [[[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄█▄████", "#d97757", null], ["▂", "#d97757", null, true], ["█▀▀", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄█▄████", "#d97757", null], ["▂", "#d97757", null, true], ["█▀▀", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄█▄████", "#d97757", null], ["▂", "#d97757", null, true], ["█▀▀", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄█▄████", "#d97757", null], ["▂", "#d97757", null, true], ["█▀▀", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄█▄████", "#d97757", null], ["▂", "#d97757", null, true], ["█▀▀", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀", "#8b8b8b", null], ["▀▄", "#d97757", null], [" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀██████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["┗", "#8b8b8b", null], ["█", "#d97757", null], [" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀▀██████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["┗", "#8b8b8b", null], ["█", "#d97757", null], [" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀▀██████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [["▄▄", "#8b8b8b", null], [" ", null, null], ["██████████", "#d97757", null]], [[" ", null, null], ["▀▀▀", "#8b8b8b", null], ["██████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████", "#d97757", null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄▄████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [["▀▄▄▄▄", "#8b8b8b", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["██▄▄▄██", "#d97757", null], ["▄", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄███▄█", "#d97757", null], ["█", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["███████", "#d97757", null], ["█", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["█▀██▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄█", "#be684d", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]]]}, "typing-end": {"fps": 12, "face": [0, 0, 1, 1, 1, 0, 0, 0, 0], "frames": [[[[" ", null, null], ["█▀██▀█", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["▄", "#be684d", null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [["▀▄", "#8b8b8b", null], [" ", null, null], ["▄█", "#be684d", null], [" ", null, null], ["██████", "#d97757", null], ["██", "#be684d", null], [" ", null, null]], [[" ", null, null], ["█▄▄", "#8b8b8b", null], [" ", null, null], ["▀▄█", "#d97757", null], [" ", null, null], ["▄█", "#d97757", null], [" ", null, null], ["█▄", "#be684d", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null]], [[" ", null, null], ["▀▀▀", "#8b8b8b", null], ["▀▀████████▀▀", "#d97757", null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄█▄████", "#d97757", null], ["▂", "#d97757", null, true], ["█▀▀", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄█▄████", "#d97757", null], ["▂", "#d97757", null, true], ["█▀▀", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄█▄████", "#d97757", null], ["▂", "#d97757", null, true], ["█▀▀", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null]], [[" ", null, null], ["▀▀████████▀▀", "#d97757", null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]]]}, "look": {"fps": 4, "face": [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0], "frames": [[[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▛▜███▛▜", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▛▜███▛▜", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▛▜███▛▜█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▛▜███▛▜█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██▙▟███▙▟███", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["███▄████▄███", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["███▙▟███▙▟██", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▛▜███▛▜", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]]]}, "wave": {"fps": 6, "face": [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], "frames": [[[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄█▄████▄█▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀▀████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null], ["█▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["█▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["█▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["█▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["█▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["█▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["█▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null], ["▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["██████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]]]}, "happy": {"fps": 6, "face": [1, 0, 0, 0, 1, 0, 0, 0], "frames": [[[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▄████▄█", "#d97757", null], [" ", null, null], ["✧", "#f2b84b", null], [" ", null, null]], [["▄█▀████████▀█▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[["▄▄", "#d97757", null], [" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null], ["▄▄", "#d97757", null], ["✦", "#f2b84b", null], [" ", null, null]], [[" ", null, null], ["▀▀████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[["▄▄", "#d97757", null], [" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["▄▄", "#d97757", null], ["✧", "#f2b84b", null], [" ", null, null]], [[" ", null, null], ["▀▀████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null], ["·", "#f2b84b", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["▄▄▄▄▄▄▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▄████▄█", "#d97757", null], [" ", null, null], ["✦", "#f2b84b", null], [" ", null, null]], [["▄█▀████████▀█▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█▀█▀▀█▀█", "#d97757", null], [" ", null, null]]], [[["▄▄", "#d97757", null], [" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["▄▄", "#d97757", null], ["✧", "#f2b84b", null], [" ", null, null]], [[" ", null, null], ["▀▀████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[["▄▄", "#d97757", null], [" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["▄▄", "#d97757", null], ["✦", "#f2b84b", null], [" ", null, null]], [[" ", null, null], ["▀▀████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]]]}, "think": {"fps": 3, "face": [0, 0, 0, 0, 0, 0], "frames": [[[[" ", null, null], ["██▀████▀", "#d97757", null], [" ", null, null], ["···", "#9a948a", null]], [[" ", null, null], ["████████████", "#d97757", null], ["°", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["██▀████▀", "#d97757", null], [" ", null, null], ["•", "#ece6da", null], ["··", "#9a948a", null]], [[" ", null, null], ["████████████", "#d97757", null], ["°", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["██▀████▀", "#d97757", null], [" ", null, null], ["••", "#ece6da", null], ["·", "#9a948a", null]], [[" ", null, null], ["████████████", "#d97757", null], ["°", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["██▀████▀", "#d97757", null], [" ", null, null], ["•••", "#ece6da", null]], [[" ", null, null], ["████████████", "#d97757", null], ["°", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["^", "#d97757", null, true], ["████", "#d97757", null], ["^", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["•••", "#ece6da", null]], [[" ", null, null], ["████████████", "#d97757", null], ["°", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["██▀████▀", "#d97757", null], [" ", null, null], ["···", "#9a948a", null]], [[" ", null, null], ["████████████", "#d97757", null], ["°", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]]]}, "yawn": {"fps": 3, "face": [0, 0, 0, 0, 0, 0, 0], "frames": [[[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█████▀▀█████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[["▄▄", "#d97757", null], [" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀▀███▀▀███▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["███▄▄███", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[["▄▄", "#d97757", null], [" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀▀█", "#d97757", null], ["▀", "#6cc4f0", "#d97757"], ["█▀▀███▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["███▄▄███", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄███▀▀███▄▄", "#d97757", null], [" ", null, null]], [["▀▀", "#d97757", null], [" ", null, null], ["████████", "#d97757", null], [" ", null, null], ["▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null], [" ", null, null]], [["▀▀", "#d97757", null], [" ", null, null], ["████████", "#d97757", null], [" ", null, null], ["▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█▀████▀█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["████████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]]]}, "doze": {"fps": 2, "face": [0, 0, 0, 0, 0, 0], "frames": [[[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null], [" ", null, null]], [["▀▀", "#d97757", null], [" ", null, null], ["████████", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], ["z", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null], [" ", null, null], ["z", "#9a948a", null], [" ", null, null]], [["▀▀", "#d97757", null], [" ", null, null], ["████████", "#d97757", null], [" ", null, null], ["▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["Z", "#9a948a", null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀▀████████▀▀", "#d97757", null], ["z", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null], [" ", null, null], ["z", "#9a948a", null], [" ", null, null]], [[" ", null, null], ["▀▀████████▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null], ["Z", "#9a948a", null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null], [" ", null, null]], [["▀▀", "#d97757", null], [" ", null, null], ["████████", "#d97757", null], [" ", null, null], ["▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["█", "#d97757", null], ["▂", "#d97757", null, true], ["████", "#d97757", null], ["▂", "#d97757", null, true], ["█", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▄████████▄▄", "#d97757", null], [" ", null, null]], [["▀▀", "#d97757", null], [" ", null, null], ["████████", "#d97757", null], [" ", null, null], ["▀▀", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]]]}, "walk": {"fps": 6, "face": [0, 0, 0, 0], "frames": [[[[" ", null, null], ["██", "#be684d", null], ["█▀███▀", "#d97757", null], [" ", null, null]], [["████", "#be684d", null], ["███████", "#d97757", null], ["█", "#be684d", null], [" ", null, null]], [[" ", null, null], ["██", "#be684d", null], ["██████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀", "#be684d", null], ["▄▀", "#d97757", null], [" ", null, null], ["▀▄▀", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["██", "#be684d", null], ["█▀███▀", "#d97757", null], [" ", null, null]], [["████", "#be684d", null], ["███████", "#d97757", null], ["█", "#be684d", null], [" ", null, null]], [[" ", null, null], ["██", "#be684d", null], ["██████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["█", "#be684d", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["██", "#be684d", null], ["█▀███▀", "#d97757", null], [" ", null, null]], [["████", "#be684d", null], ["███████", "#d97757", null], ["█", "#be684d", null], [" ", null, null]], [[" ", null, null], ["██", "#be684d", null], ["██████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▄▀", "#be684d", null], [" ", null, null], ["▀▄▄▀", "#d97757", null], [" ", null, null], ["▀▄", "#d97757", null], [" ", null, null]]], [[[" ", null, null], ["██", "#be684d", null], ["█▀███▀", "#d97757", null], [" ", null, null]], [["████", "#be684d", null], ["███████", "#d97757", null], ["█", "#be684d", null], [" ", null, null]], [[" ", null, null], ["██", "#be684d", null], ["██████", "#d97757", null], [" ", null, null]], [[" ", null, null], ["▀", "#be684d", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null], ["▀", "#d97757", null], [" ", null, null], ["█", "#d97757", null], [" ", null, null]]]]}}
8types/index.d.ts 8 lines1export type Meter = { label: string; percent: number; note: string }
2
3declare module 'claude-code' {
4 interface PluginState {
5 'usage-deck': { meters: Meter[]; isHidden: boolean; frame: number; isWorking: boolean }
6 }
7}
8