@refrakt-md/plan 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-plugin.d.ts +12 -0
- package/dist/cli-plugin.d.ts.map +1 -0
- package/dist/cli-plugin.js +494 -0
- package/dist/cli-plugin.js.map +1 -0
- package/dist/commands/build.d.ts +14 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +57 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/bundle-behaviors.d.ts +6 -0
- package/dist/commands/bundle-behaviors.d.ts.map +1 -0
- package/dist/commands/bundle-behaviors.js +24 -0
- package/dist/commands/bundle-behaviors.js.map +1 -0
- package/dist/commands/create.d.ts +21 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +50 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/init.d.ts +17 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +109 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/next.d.ts +34 -0
- package/dist/commands/next.d.ts.map +1 -0
- package/dist/commands/next.js +100 -0
- package/dist/commands/next.js.map +1 -0
- package/dist/commands/plan-behaviors.d.ts +2 -0
- package/dist/commands/plan-behaviors.d.ts.map +1 -0
- package/dist/commands/plan-behaviors.js +7 -0
- package/dist/commands/plan-behaviors.js.map +1 -0
- package/dist/commands/render-pipeline.d.ts +70 -0
- package/dist/commands/render-pipeline.d.ts.map +1 -0
- package/dist/commands/render-pipeline.js +1173 -0
- package/dist/commands/render-pipeline.js.map +1 -0
- package/dist/commands/serve.d.ts +13 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +167 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/status.d.ts +53 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +181 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/templates.d.ts +37 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/templates.js +160 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/commands/update.d.ts +29 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +238 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +29 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +298 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +163 -0
- package/dist/config.js.map +1 -0
- package/dist/filter.d.ts +17 -0
- package/dist/filter.d.ts.map +1 -0
- package/dist/filter.js +72 -0
- package/dist/filter.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline.d.ts +23 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +720 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/scanner.d.ts +9 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +234 -0
- package/dist/scanner.js.map +1 -0
- package/dist/schema/backlog.d.ts +7 -0
- package/dist/schema/backlog.d.ts.map +1 -0
- package/dist/schema/backlog.js +9 -0
- package/dist/schema/backlog.js.map +1 -0
- package/dist/schema/bug.d.ts +9 -0
- package/dist/schema/bug.d.ts.map +1 -0
- package/dist/schema/bug.js +11 -0
- package/dist/schema/bug.js.map +1 -0
- package/dist/schema/decision-log.d.ts +5 -0
- package/dist/schema/decision-log.d.ts.map +1 -0
- package/dist/schema/decision-log.js +7 -0
- package/dist/schema/decision-log.js.map +1 -0
- package/dist/schema/decision.d.ts +8 -0
- package/dist/schema/decision.d.ts.map +1 -0
- package/dist/schema/decision.js +10 -0
- package/dist/schema/decision.js.map +1 -0
- package/dist/schema/milestone.d.ts +6 -0
- package/dist/schema/milestone.d.ts.map +1 -0
- package/dist/schema/milestone.js +8 -0
- package/dist/schema/milestone.js.map +1 -0
- package/dist/schema/plan-activity.d.ts +4 -0
- package/dist/schema/plan-activity.d.ts.map +1 -0
- package/dist/schema/plan-activity.js +6 -0
- package/dist/schema/plan-activity.js.map +1 -0
- package/dist/schema/plan-progress.d.ts +4 -0
- package/dist/schema/plan-progress.d.ts.map +1 -0
- package/dist/schema/plan-progress.js +6 -0
- package/dist/schema/plan-progress.js.map +1 -0
- package/dist/schema/spec.d.ts +8 -0
- package/dist/schema/spec.d.ts.map +1 -0
- package/dist/schema/spec.js +10 -0
- package/dist/schema/spec.js.map +1 -0
- package/dist/schema/work.d.ts +10 -0
- package/dist/schema/work.d.ts.map +1 -0
- package/dist/schema/work.js +12 -0
- package/dist/schema/work.js.map +1 -0
- package/dist/tags/backlog.d.ts +4 -0
- package/dist/tags/backlog.d.ts.map +1 -0
- package/dist/tags/backlog.js +41 -0
- package/dist/tags/backlog.js.map +1 -0
- package/dist/tags/bug.d.ts +3 -0
- package/dist/tags/bug.d.ts.map +1 -0
- package/dist/tags/bug.js +58 -0
- package/dist/tags/bug.js.map +1 -0
- package/dist/tags/decision-log.d.ts +4 -0
- package/dist/tags/decision-log.d.ts.map +1 -0
- package/dist/tags/decision-log.js +35 -0
- package/dist/tags/decision-log.js.map +1 -0
- package/dist/tags/decision.d.ts +3 -0
- package/dist/tags/decision.d.ts.map +1 -0
- package/dist/tags/decision.js +54 -0
- package/dist/tags/decision.js.map +1 -0
- package/dist/tags/milestone.d.ts +3 -0
- package/dist/tags/milestone.d.ts.map +1 -0
- package/dist/tags/milestone.js +52 -0
- package/dist/tags/milestone.js.map +1 -0
- package/dist/tags/plan-activity.d.ts +4 -0
- package/dist/tags/plan-activity.d.ts.map +1 -0
- package/dist/tags/plan-activity.js +31 -0
- package/dist/tags/plan-activity.js.map +1 -0
- package/dist/tags/plan-progress.d.ts +4 -0
- package/dist/tags/plan-progress.d.ts.map +1 -0
- package/dist/tags/plan-progress.js +31 -0
- package/dist/tags/plan-progress.js.map +1 -0
- package/dist/tags/spec.d.ts +3 -0
- package/dist/tags/spec.d.ts.map +1 -0
- package/dist/tags/spec.js +57 -0
- package/dist/tags/spec.js.map +1 -0
- package/dist/tags/work.d.ts +3 -0
- package/dist/tags/work.d.ts.map +1 -0
- package/dist/tags/work.js +68 -0
- package/dist/tags/work.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +8 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +32 -0
- package/dist/util.js.map +1 -0
- package/package.json +47 -0
- package/styles/default.css +580 -0
- package/styles/minimal.css +379 -0
- package/styles/tokens.css +13 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { tabsBehavior } from '@refrakt-md/behaviors';
|
|
2
|
+
import { spec } from './tags/spec.js';
|
|
3
|
+
import { work } from './tags/work.js';
|
|
4
|
+
import { bug } from './tags/bug.js';
|
|
5
|
+
import { decision } from './tags/decision.js';
|
|
6
|
+
import { milestone } from './tags/milestone.js';
|
|
7
|
+
import { backlog } from './tags/backlog.js';
|
|
8
|
+
import { decisionLog } from './tags/decision-log.js';
|
|
9
|
+
import { planProgress } from './tags/plan-progress.js';
|
|
10
|
+
import { planActivity } from './tags/plan-activity.js';
|
|
11
|
+
import { config } from './config.js';
|
|
12
|
+
import { planPipelineHooks } from './pipeline.js';
|
|
13
|
+
export const plan = {
|
|
14
|
+
name: 'plan',
|
|
15
|
+
displayName: 'Plan',
|
|
16
|
+
version: '0.9.0',
|
|
17
|
+
runes: {
|
|
18
|
+
'spec': {
|
|
19
|
+
transform: spec,
|
|
20
|
+
description: 'Specification document with status tracking, versioning, and entity registry integration',
|
|
21
|
+
reinterprets: { heading: 'spec title', blockquote: 'scope summary', paragraph: 'specification content' },
|
|
22
|
+
fixture: `{% spec id="SPEC-001" status="accepted" version="1.0" %}
|
|
23
|
+
# Authentication System
|
|
24
|
+
|
|
25
|
+
> Token-based authentication for the API layer.
|
|
26
|
+
|
|
27
|
+
Users authenticate via JWT tokens issued by the auth endpoint.
|
|
28
|
+
Tokens expire after 24 hours and can be refreshed.
|
|
29
|
+
{% /spec %}`,
|
|
30
|
+
},
|
|
31
|
+
'work': {
|
|
32
|
+
transform: work,
|
|
33
|
+
aliases: ['task'],
|
|
34
|
+
description: 'Work item with acceptance criteria, references, and implementation tracking',
|
|
35
|
+
reinterprets: { heading: 'work item title or section heading', paragraph: 'description', list: 'acceptance criteria or references' },
|
|
36
|
+
fixture: `{% work id="RF-142" status="ready" priority="high" complexity="moderate" milestone="v0.5.0" %}
|
|
37
|
+
# Implement dark mode support
|
|
38
|
+
|
|
39
|
+
The theme needs dual light/dark token definitions.
|
|
40
|
+
|
|
41
|
+
## Acceptance Criteria
|
|
42
|
+
- [ ] Accepts light and dark content sections
|
|
43
|
+
- [ ] Theme CSS swaps tokens in dark mode
|
|
44
|
+
- [ ] Falls back to page tokens when dark values absent
|
|
45
|
+
|
|
46
|
+
## Approach
|
|
47
|
+
Use CSS custom properties with media query swapping.
|
|
48
|
+
{% /work %}`,
|
|
49
|
+
},
|
|
50
|
+
'bug': {
|
|
51
|
+
transform: bug,
|
|
52
|
+
description: 'Bug report with structured reproduction steps and severity tracking',
|
|
53
|
+
reinterprets: { heading: 'bug title or section heading', list: 'reproduction steps or environment details', paragraph: 'expected/actual behaviour' },
|
|
54
|
+
fixture: `{% bug id="RF-201" status="confirmed" severity="major" %}
|
|
55
|
+
# Showcase bleed breaks with overflow:hidden parent
|
|
56
|
+
|
|
57
|
+
## Steps to Reproduce
|
|
58
|
+
1. Create a section with overflow: hidden
|
|
59
|
+
2. Add a showcase with bleed="top" inside
|
|
60
|
+
3. Observe the rendered output
|
|
61
|
+
|
|
62
|
+
## Expected
|
|
63
|
+
Showcase extends above the section boundary.
|
|
64
|
+
|
|
65
|
+
## Actual
|
|
66
|
+
Showcase is clipped at the section edge.
|
|
67
|
+
{% /bug %}`,
|
|
68
|
+
},
|
|
69
|
+
'decision': {
|
|
70
|
+
transform: decision,
|
|
71
|
+
aliases: ['adr'],
|
|
72
|
+
description: 'Architecture decision record capturing context, options, decision, rationale, and consequences',
|
|
73
|
+
reinterprets: { heading: 'decision title or section heading', paragraph: 'context, rationale, or consequences', list: 'options considered' },
|
|
74
|
+
fixture: `{% decision id="ADR-007" status="accepted" date="2026-03-11" %}
|
|
75
|
+
# Use CSS custom properties for token injection
|
|
76
|
+
|
|
77
|
+
## Context
|
|
78
|
+
Tint runes need to override colour tokens within a section scope.
|
|
79
|
+
|
|
80
|
+
## Options Considered
|
|
81
|
+
1. **CSS custom properties** — inline styles setting tokens
|
|
82
|
+
2. **Generated CSS classes** — build step creates per-tint classes
|
|
83
|
+
3. **JavaScript runtime** — behaviour script reads data attributes
|
|
84
|
+
|
|
85
|
+
## Decision
|
|
86
|
+
CSS custom properties via inline styles on the container element.
|
|
87
|
+
|
|
88
|
+
## Rationale
|
|
89
|
+
Custom properties cascade naturally without JavaScript.
|
|
90
|
+
|
|
91
|
+
## Consequences
|
|
92
|
+
- Themes must include bridge CSS
|
|
93
|
+
- Inline styles cannot use media queries
|
|
94
|
+
{% /decision %}`,
|
|
95
|
+
},
|
|
96
|
+
'milestone': {
|
|
97
|
+
transform: milestone,
|
|
98
|
+
description: 'Named release target with scope, goals, and status tracking',
|
|
99
|
+
reinterprets: { heading: 'milestone title', list: 'goals' },
|
|
100
|
+
fixture: `{% milestone name="v0.5.0" target="2026-03-29" status="active" %}
|
|
101
|
+
# v0.5.0 — Layout & Tint
|
|
102
|
+
|
|
103
|
+
- Complete alignment system migration
|
|
104
|
+
- Ship tint rune with dark mode support
|
|
105
|
+
- Publish layout spec as documentation
|
|
106
|
+
{% /milestone %}`,
|
|
107
|
+
},
|
|
108
|
+
'backlog': {
|
|
109
|
+
transform: backlog,
|
|
110
|
+
description: 'Aggregation view of work items and bugs with filtering, sorting, and grouping',
|
|
111
|
+
reinterprets: {},
|
|
112
|
+
fixture: `{% backlog filter="status:ready" sort="priority" group="status" /%}`,
|
|
113
|
+
},
|
|
114
|
+
'decision-log': {
|
|
115
|
+
transform: decisionLog,
|
|
116
|
+
description: 'Chronological view of architecture decision records',
|
|
117
|
+
reinterprets: {},
|
|
118
|
+
fixture: `{% decision-log sort="date" /%}`,
|
|
119
|
+
},
|
|
120
|
+
'plan-progress': {
|
|
121
|
+
transform: planProgress,
|
|
122
|
+
description: 'Progress summary showing status counts per entity type',
|
|
123
|
+
reinterprets: {},
|
|
124
|
+
fixture: `{% plan-progress /%}`,
|
|
125
|
+
},
|
|
126
|
+
'plan-activity': {
|
|
127
|
+
transform: planActivity,
|
|
128
|
+
description: 'Recent activity feed sorted by file modification time',
|
|
129
|
+
reinterprets: {},
|
|
130
|
+
fixture: `{% plan-activity limit="10" /%}`,
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
theme: {
|
|
134
|
+
runes: config,
|
|
135
|
+
},
|
|
136
|
+
behaviors: {
|
|
137
|
+
'milestone-backlog': tabsBehavior,
|
|
138
|
+
},
|
|
139
|
+
pipeline: planPipelineHooks,
|
|
140
|
+
};
|
|
141
|
+
export default plan;
|
|
142
|
+
export { scanPlanFiles, parseFile } from './scanner.js';
|
|
143
|
+
export { planPipelineHooks } from './pipeline.js';
|
|
144
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,CAAC,MAAM,IAAI,GAAgB;IAChC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE;QACN,MAAM,EAAE;YACP,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,0FAA0F;YACvG,YAAY,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,uBAAuB,EAAE;YACxG,OAAO,EAAE;;;;;;;YAOA;SACT;QACD,MAAM,EAAE;YACP,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,6EAA6E;YAC1F,YAAY,EAAE,EAAE,OAAO,EAAE,oCAAoC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,mCAAmC,EAAE;YACpI,OAAO,EAAE;;;;;;;;;;;;YAYA;SACT;QACD,KAAK,EAAE;YACN,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,qEAAqE;YAClF,YAAY,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,IAAI,EAAE,2CAA2C,EAAE,SAAS,EAAE,2BAA2B,EAAE;YACpJ,OAAO,EAAE;;;;;;;;;;;;;WAaD;SACR;QACD,UAAU,EAAE;YACX,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,CAAC,KAAK,CAAC;YAChB,WAAW,EAAE,gGAAgG;YAC7G,YAAY,EAAE,EAAE,OAAO,EAAE,mCAAmC,EAAE,SAAS,EAAE,qCAAqC,EAAE,IAAI,EAAE,oBAAoB,EAAE;YAC5I,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;gBAoBI;SACb;QACD,WAAW,EAAE;YACZ,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,6DAA6D;YAC1E,YAAY,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3D,OAAO,EAAE;;;;;;iBAMK;SACd;QACD,SAAS,EAAE;YACV,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,+EAA+E;YAC5F,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,qEAAqE;SAC9E;QACD,cAAc,EAAE;YACf,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,qDAAqD;YAClE,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,iCAAiC;SAC1C;QACD,eAAe,EAAE;YAChB,SAAS,EAAE,YAAY;YACvB,WAAW,EAAE,wDAAwD;YACrE,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,sBAAsB;SAC/B;QACD,eAAe,EAAE;YAChB,SAAS,EAAE,YAAY;YACvB,WAAW,EAAE,uDAAuD;YACpE,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,iCAAiC;SAC1C;KACD;IACD,KAAK,EAAE;QACN,KAAK,EAAE,MAA4D;KACnE;IACD,SAAS,EAAE;QACV,mBAAmB,EAAE,YAAY;KACjC;IACD,QAAQ,EAAE,iBAAiB;CAC3B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { PackagePipelineHooks, EntityRegistration } from '@refrakt-md/types';
|
|
2
|
+
/** A directed reference from one entity to another */
|
|
3
|
+
export interface EntityRelationship {
|
|
4
|
+
/** The entity that contains the reference */
|
|
5
|
+
fromId: string;
|
|
6
|
+
fromType: string;
|
|
7
|
+
/** The entity being referenced */
|
|
8
|
+
toId: string;
|
|
9
|
+
toType: string;
|
|
10
|
+
/** Relationship kind */
|
|
11
|
+
kind: 'blocks' | 'blocked-by' | 'related';
|
|
12
|
+
}
|
|
13
|
+
export interface PlanAggregatedData {
|
|
14
|
+
workEntities: EntityRegistration[];
|
|
15
|
+
bugEntities: EntityRegistration[];
|
|
16
|
+
decisionEntities: EntityRegistration[];
|
|
17
|
+
specEntities: EntityRegistration[];
|
|
18
|
+
milestoneEntities: EntityRegistration[];
|
|
19
|
+
/** Bidirectional relationship index: entityId → relationships */
|
|
20
|
+
relationships: Map<string, EntityRelationship[]>;
|
|
21
|
+
}
|
|
22
|
+
export declare const planPipelineHooks: PackagePipelineHooks;
|
|
23
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAgOlF,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IAClC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IAClC,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;IACxC,iEAAiE;IACjE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;CACjD;AASD,eAAO,MAAM,iBAAiB,EAAE,oBA0L/B,CAAC"}
|