@formant/formant-cli 0.2.0 → 0.3.1

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.
Files changed (38) hide show
  1. package/README.md +380 -116
  2. package/dist/commands/devices/streams.d.ts +3 -0
  3. package/dist/commands/devices/streams.js +71 -27
  4. package/dist/commands/devices/streams.js.map +1 -1
  5. package/dist/commands/ingest/batch.d.ts +21 -0
  6. package/dist/commands/ingest/batch.js +170 -0
  7. package/dist/commands/ingest/batch.js.map +1 -0
  8. package/dist/commands/ingest/bitset.d.ts +15 -0
  9. package/dist/commands/ingest/bitset.js +128 -0
  10. package/dist/commands/ingest/bitset.js.map +1 -0
  11. package/dist/commands/ingest/health.d.ts +15 -0
  12. package/dist/commands/ingest/health.js +94 -0
  13. package/dist/commands/ingest/health.js.map +1 -0
  14. package/dist/commands/ingest/image.d.ts +15 -0
  15. package/dist/commands/ingest/image.js +99 -0
  16. package/dist/commands/ingest/image.js.map +1 -0
  17. package/dist/commands/ingest/json.d.ts +16 -0
  18. package/dist/commands/ingest/json.js +92 -0
  19. package/dist/commands/ingest/json.js.map +1 -0
  20. package/dist/commands/ingest/numeric.d.ts +16 -0
  21. package/dist/commands/ingest/numeric.js +83 -0
  22. package/dist/commands/ingest/numeric.js.map +1 -0
  23. package/dist/commands/ingest/text.d.ts +16 -0
  24. package/dist/commands/ingest/text.js +80 -0
  25. package/dist/commands/ingest/text.js.map +1 -0
  26. package/dist/commands/ingest/video.d.ts +16 -0
  27. package/dist/commands/ingest/video.js +120 -0
  28. package/dist/commands/ingest/video.js.map +1 -0
  29. package/dist/commands/query/latest-values.d.ts +1 -0
  30. package/dist/commands/query/latest-values.js +41 -15
  31. package/dist/commands/query/latest-values.js.map +1 -1
  32. package/dist/help.js +103 -53
  33. package/dist/help.js.map +1 -1
  34. package/dist/lib/api.d.ts +1 -1
  35. package/dist/lib/api.js +3 -0
  36. package/dist/lib/api.js.map +1 -1
  37. package/oclif.manifest.json +1396 -590
  38. package/package.json +4 -1
@@ -8,7 +8,8 @@ Returns the most recent value for specified streams without needing to specify
8
8
  a time range. Useful for checking current sensor readings.
9
9
 
10
10
  Use --all-streams with a single device to automatically discover and query all
11
- configured streams from the device configuration.`;
11
+ streams — both from the device configuration and from actual ingested data
12
+ (unconfigured streams included).`;
12
13
  static examples = [
13
14
  '<%= config.bin %> query latest-values --device <id> --stream battery_level',
14
15
  '<%= config.bin %> query latest-values --device <id> --stream temperature --stream humidity',
@@ -17,7 +18,11 @@ configured streams from the device configuration.`;
17
18
  ];
18
19
  static flags = {
19
20
  'all-streams': Flags.boolean({
20
- description: 'Query all configured streams for the device (requires single --device)',
21
+ description: 'Query all streams for the device — from config and from ingested data (requires single --device)',
22
+ }),
23
+ days: Flags.integer({
24
+ default: 14,
25
+ description: 'How many days back to look for unconfigured streams when using --all-streams',
21
26
  }),
22
27
  device: Flags.string({
23
28
  char: 'd',
@@ -34,32 +39,53 @@ configured streams from the device configuration.`;
34
39
  static summary = 'Get latest stream values';
35
40
  async run() {
36
41
  let streamNames = this.flags.stream ?? [];
37
- // If --all-streams, discover streams from device config
42
+ // If --all-streams, discover streams from both config and ingested data
38
43
  if (this.flags['all-streams']) {
39
44
  if (this.flags.device.length !== 1) {
40
45
  this.error('--all-streams requires exactly one --device');
41
46
  }
42
47
  const deviceId = this.flags.device[0];
43
- // Fetch device to get config version
48
+ const discovered = new Set();
49
+ // ── Config-based discovery ──────────────────────────────────────────────
44
50
  const device = await this.api('admin', `devices/${deviceId}`, {
45
51
  method: 'GET',
46
52
  });
47
53
  const configVersion = device.desiredConfigurationVersion;
48
- if (!configVersion) {
49
- this.error('Device has no configuration version set');
54
+ if (configVersion) {
55
+ const config = await this.api('admin', `devices/${deviceId}/configurations/${configVersion}`, { method: 'GET' });
56
+ const doc = config.document;
57
+ const telemetry = doc?.telemetry;
58
+ const configStreams = telemetry?.streams || [];
59
+ for (const s of configStreams) {
60
+ const name = s.name;
61
+ if (name)
62
+ discovered.add(name);
63
+ }
64
+ }
65
+ // ── Data-based discovery (metadata endpoint) ───────────────────────────
66
+ const since = new Date();
67
+ since.setDate(since.getDate() - this.flags.days);
68
+ try {
69
+ const metaResult = await this.api('query', 'metadata', {
70
+ body: {
71
+ deviceIds: [deviceId],
72
+ start: since.toISOString(),
73
+ },
74
+ });
75
+ for (const item of metaResult?.items ?? []) {
76
+ if (item.name)
77
+ discovered.add(item.name);
78
+ }
79
+ }
80
+ catch {
81
+ // metadata endpoint failure is non-fatal
50
82
  }
51
- // Fetch config
52
- const config = await this.api('admin', `devices/${deviceId}/configurations/${configVersion}`, { method: 'GET' });
53
- // Parse stream names from config
54
- const doc = config.document;
55
- const telemetry = doc?.telemetry;
56
- const streams = telemetry?.streams || [];
57
- streamNames = streams.map((s) => s.name).filter(Boolean);
83
+ streamNames = [...discovered];
58
84
  if (streamNames.length === 0) {
59
- this.error('No streams configured on this device');
85
+ this.error('No streams found for this device (neither configured nor in ingested data)');
60
86
  }
61
87
  if (!this.jsonEnabled()) {
62
- this.log(`\nDiscovered ${streamNames.length} streams from device config.\n`);
88
+ this.log(`\nDiscovered ${streamNames.length} streams (config + data, last ${this.flags.days}d).\n`);
63
89
  }
64
90
  }
65
91
  if (streamNames.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"latest-values.js","sourceRoot":"","sources":["../../../src/commands/query/latest-values.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"latest-values.js","sourceRoot":"","sources":["../../../src/commands/query/latest-values.ts"],"names":[],"mappings":"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"}
package/dist/help.js CHANGED
@@ -9,81 +9,131 @@ export default class FcliHelp extends Help {
9
9
  ██║ ╚██████╗███████╗██║
10
10
  ╚═╝ ╚═════╝╚══════╝╚═╝
11
11
 
12
+ ABOUT
13
+ Formant is a cloud platform for monitoring, operating, and analyzing robot fleets.
14
+ This CLI lets you interact with your robots, query telemetry data, trigger AI-powered
15
+ investigations, manage users and permissions, and automate fleet operations — all from
16
+ your terminal.
17
+
12
18
  USAGE
13
19
  $ fcli <command> [flags]
14
20
 
15
- CONCEPTS
16
- Device A robot or sensor in your fleet
17
- Event Important occurrence emitted by a device
18
- Signal Point of interest from an event, schedule, or manual trigger
19
- Investigation AI-powered analysis workflow triggered by a signal
20
- Query Retrieve telemetry and sensor data from devices
21
+ KEY CONCEPTS
22
+ Organization Your Formant account with users, devices, and settings
23
+ Device A robot, sensor, or IoT device in your fleet that sends telemetry
24
+ Event An important occurrence (alert, warning, error) emitted by a device
25
+ Signal A point of interest that triggers investigation or analysis
26
+ Investigation AI-powered workflow that analyzes device data and diagnoses issues
27
+ Stream Real-time telemetry data (battery, temperature, location, sensors)
28
+ Command Remote instruction sent to a device to perform an action
29
+ Fleet A logical group of devices (by location, type, or tags)
21
30
 
22
31
  COMMANDS
23
- devices List and inspect robots/sensors in your fleet
24
- events View important events emitted by devices
25
- query Retrieve telemetry data (battery, temperature, etc.)
26
- signals Manage signals (points of interest that trigger analysis)
27
- investigations Run and monitor AI-powered analysis workflows
28
- commands Manage command templates and send commands to devices
29
- event-triggers Manage event trigger rules
30
- users Manage users in your organization
31
- schedules Manage scheduled tasks
32
- fleets Manage device groups
33
- analytics Execute SQL queries against analytics data
34
- kv Manage key-value store
32
+ org View and update your Formant organization
33
+ devices Create, list, tag, and manage robots/sensors in your fleet
34
+ events View and filter important events emitted by devices
35
+ query Retrieve historical telemetry data and latest sensor values
36
+ ingest Send telemetry data to devices via the Formant ingestion API
37
+ signals List, query, and analyze signals that trigger investigations
38
+ investigations Trigger, monitor, and analyze AI-powered diagnostic workflows
39
+ commands Send remote commands to devices and view command history
40
+ event-triggers Configure rules that automatically generate events and signals
41
+ users List and inspect users in your organization
42
+ fleets Manage device groups and organize your fleet
43
+ schedules Set up recurring tasks and one-time scheduled jobs
44
+ analytics Execute custom SQL queries against your analytics database
45
+ kv Store and retrieve metadata in the key-value store
35
46
  help Display help for fcli
36
47
 
37
48
  GLOBAL FLAGS
38
- --dev Target the dev environment
39
- --stage Target the stage environment
40
- --json Format output as JSON
41
- -h, --help Show help for a command
49
+ --dev Target the dev environment (for testing)
50
+ --stage Target the stage environment (for staging)
51
+ --json Output raw JSON instead of formatted tables
52
+ -h, --help Show help for any command
42
53
 
43
54
  AUTHENTICATION
44
- Set these environment variables (or use a .env file):
45
- FORMANT_USER Service account email
46
- FORMANT_PASSWORD Service account password
55
+ Formant CLI uses service account credentials. Set these environment variables:
56
+
57
+ FORMANT_USER Your service account email (e.g., bot@org.iam.formant.io)
58
+ FORMANT_PASSWORD Your service account password
59
+
60
+ You can also create a .env file in your project directory with these values.
47
61
 
48
62
  EXAMPLES
49
- # List online robots and sensors
50
- $ fcli devices list --dev
51
- $ fcli devices list --tag location=warehouse --online
52
- $ fcli devices config <device-id> --dev
63
+ # Organization management
64
+ $ fcli org get # View your org details
65
+ $ fcli org update --name "Acme Robotics" # Update org name
53
66
 
54
- # View critical events from a device
55
- $ fcli events list --device <id> --severity critical --limit 20
56
- $ fcli events get <event-id> --dev
67
+ # Device management
68
+ $ fcli devices list --online # List all online devices
69
+ $ fcli devices list --tag location=warehouse # Filter by tags
70
+ $ fcli devices create --name "robot-001" # Create a new device
71
+ $ fcli devices tag <device-id> --key env --value prod # Add tags
72
+ $ fcli devices rename <device-id> --name "robot-new" # Rename a device
57
73
 
58
- # Query battery telemetry over time
74
+ # Telemetry queries
59
75
  $ fcli query --device <id> --stream battery_level --start 2026-01-01 --end 2026-01-02
76
+ $ fcli query latest-values --device <id> --stream battery_level
77
+ $ fcli devices streams <device-id> # List available streams
78
+
79
+ # Ingest telemetry data
80
+ $ fcli ingest numeric 42.5 --device <id> --stream battery_level
81
+ $ fcli ingest text "hello" --device <id> --stream status --tag env=prod
82
+ $ fcli ingest health operational --device <id> --stream health_status
83
+ $ fcli ingest batch --file payload.json # Batch ingest from file
84
+
85
+ # Events and monitoring
86
+ $ fcli events list --severity critical --limit 50 # View critical events
87
+ $ fcli events list --device <id> --start 2026-01-01 # Events for one device
88
+ $ fcli events get <event-id> # Get event details
89
+
90
+ # AI investigations
91
+ $ fcli investigations list # List all investigations
92
+ $ fcli investigations trigger <inv-id> <device-id> # Trigger an investigation
93
+ $ fcli investigations runs <inv-id> # View investigation runs
94
+ $ fcli investigations stats --start 2026-01-01 # Get investigation metrics
95
+
96
+ # Signals (investigation triggers)
97
+ $ fcli signals list --start 2026-01-01 --end 2026-02-01
98
+ $ fcli signals query --start 2026-01-01 # Query by time range
99
+ $ fcli signals count # Count signals by type
100
+ $ fcli signals get <signal-id> # Get signal details
101
+
102
+ # Remote commands
103
+ $ fcli commands list # List command templates
104
+ $ fcli commands for-device <device-id> # Commands for one device
105
+ $ fcli commands send <device-id> <template-id> --param speed=10
106
+ $ fcli commands history <device-id> # View command history
60
107
 
61
- # Trace investigation runs back to their origin
62
- $ fcli investigations runs-list <investigation-id> --dev
63
- $ fcli investigations run <investigation-id> <run-id> --trace-signal --dev
64
- $ fcli signals get <signal-id> --trace --dev
108
+ # Event triggers (automation)
109
+ $ fcli event-triggers list # List all trigger rules
110
+ $ fcli event-triggers get <trigger-id> # View trigger details
65
111
 
66
- # View signals and investigations
67
- $ fcli signals query --start 2026-01-01 --end 2026-02-01
68
- $ fcli investigations list
69
- $ fcli investigations stats --start 2026-01-01 --end 2026-02-10
112
+ # User and fleet management
113
+ $ fcli users list # List all users
114
+ $ fcli users get <user-id> # View user details
115
+ $ fcli fleets list # List device groups
116
+ $ fcli fleets get <fleet-id> # View fleet details
70
117
 
71
- # Send commands to devices
72
- $ fcli commands list --dev
73
- $ fcli commands for-device <device-id> --dev
74
- $ fcli commands send <device-id> <template-id> --param speed=5 --dev
118
+ # Analytics and data queries
119
+ $ fcli analytics tables # List available tables
120
+ $ fcli analytics query --sql "SELECT * FROM events LIMIT 10"
75
121
 
76
- # Manage event triggers and schedules
77
- $ fcli event-triggers list --dev
78
- $ fcli schedules list --dev
122
+ # Metadata storage
123
+ $ fcli kv list <device-id> # List all keys for device
124
+ $ fcli kv get <device-id> <key> # Get a value
125
+ $ fcli kv set <device-id> <key> <value> # Store a value
79
126
 
80
- # Query analytics and latest values
81
- $ fcli analytics query --sql "SELECT * FROM events LIMIT 10" --dev
82
- $ fcli query latest-values --device <id> --stream battery_level --dev
127
+ TIPS
128
+ Use --json with any command to get machine-readable output for scripting
129
+ Pipe output to jq for advanced JSON processing: fcli devices list --json | jq
130
+ • Set --dev or --stage to target non-production environments
131
+ • Use fcli <command> --help to see detailed help for any command
83
132
 
84
133
  LEARN MORE
85
- Use 'fcli <command> --help' for detailed help on any command.
86
- Use 'fcli <command> <subcommand> --help' for subcommand details.
134
+ Documentation: https://formant.io/docs
135
+ Support: support@formant.io
136
+ GitHub: https://github.com/FormantIO/formant-cli
87
137
  `;
88
138
  this.log(output);
89
139
  }
package/dist/help.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IACrB,KAAK,CAAC,YAAY;QACnC,MAAM,MAAM,GAAG;;qDAEkC,IAAI,CAAC,MAAM,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFvE,CAAA;QAEG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IACrB,KAAK,CAAC,YAAY;QACnC,MAAM,MAAM,GAAG;;qDAEkC,IAAI,CAAC,MAAM,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmIvE,CAAA;QAEG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC;CACF"}
package/dist/lib/api.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Environment } from './config.js';
2
- export type ApiTarget = 'admin' | 'query' | 'theopolis';
2
+ export type ApiTarget = 'admin' | 'ingest' | 'query' | 'theopolis';
3
3
  interface RequestOptions {
4
4
  body?: unknown;
5
5
  method?: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT';
package/dist/lib/api.js CHANGED
@@ -6,6 +6,9 @@ function buildBaseUrl(env, target) {
6
6
  case 'admin': {
7
7
  return `${urls.adminApi}/v1/admin`;
8
8
  }
9
+ case 'ingest': {
10
+ return `${urls.adminApi}/v1/ingest`;
11
+ }
9
12
  case 'query': {
10
13
  return `${urls.queryApi}/v1/queries`;
11
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,OAAO,EAAC,MAAM,aAAa,CAAA;AACrD,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAA;AAU/B,SAAS,YAAY,CAAC,GAAgB,EAAE,MAAiB;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,WAAW,CAAA;QACpC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,aAAa,CAAA;QACtC,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC,SAAS,MAAM,CAAA;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAgB,EAChB,MAAiB,EACjB,IAAY,EACZ,UAA0B,EAAE;IAE5B,MAAM,EAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAC,GAAG,OAAO,CAAA;IAC7D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAE7B,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;IAChD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;QACzC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAChC,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;QAC3C,cAAc,EAAE,kBAAkB;KACnC,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7C,OAAO;QACP,MAAM;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,wBAAwB;IACxB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAc,CAAA;IAE7C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAA;AAChC,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,OAAO,EAAC,MAAM,aAAa,CAAA;AACrD,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAA;AAU/B,SAAS,YAAY,CAAC,GAAgB,EAAE,MAAiB;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,WAAW,CAAA;QACpC,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,GAAG,IAAI,CAAC,QAAQ,YAAY,CAAA;QACrC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,aAAa,CAAA;QACtC,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC,SAAS,MAAM,CAAA;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAgB,EAChB,MAAiB,EACjB,IAAY,EACZ,UAA0B,EAAE;IAE5B,MAAM,EAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAC,GAAG,OAAO,CAAA;IAC7D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAE7B,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;IAChD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;QACzC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAChC,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;QAC3C,cAAc,EAAE,kBAAkB;KACnC,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7C,OAAO;QACP,MAAM;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,wBAAwB;IACxB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAc,CAAA;IAE7C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAA;AAChC,CAAC"}