@matter-server/dashboard 0.3.2 → 0.3.4

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 (124) hide show
  1. package/README.md +76 -0
  2. package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts +2 -2
  3. package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts.map +1 -1
  4. package/dist/esm/pages/cluster-commands/base-cluster-commands.js.map +1 -1
  5. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.d.ts +36 -0
  6. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.d.ts.map +1 -0
  7. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.js +159 -0
  8. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.js.map +6 -0
  9. package/dist/esm/pages/cluster-commands/index.d.ts +1 -0
  10. package/dist/esm/pages/cluster-commands/index.d.ts.map +1 -1
  11. package/dist/esm/pages/cluster-commands/index.js +1 -0
  12. package/dist/esm/pages/cluster-commands/index.js.map +1 -1
  13. package/dist/esm/pages/components/footer.d.ts.map +1 -1
  14. package/dist/esm/pages/components/footer.js +4 -7
  15. package/dist/esm/pages/components/footer.js.map +1 -1
  16. package/dist/esm/pages/components/header.d.ts +5 -0
  17. package/dist/esm/pages/components/header.d.ts.map +1 -1
  18. package/dist/esm/pages/components/header.js +75 -0
  19. package/dist/esm/pages/components/header.js.map +1 -1
  20. package/dist/esm/pages/components/node-details.js +2 -2
  21. package/dist/esm/pages/components/node-details.js.map +1 -1
  22. package/dist/esm/pages/components/server-details.d.ts.map +1 -1
  23. package/dist/esm/pages/components/server-details.js +0 -1
  24. package/dist/esm/pages/components/server-details.js.map +1 -1
  25. package/dist/esm/pages/matter-cluster-view.d.ts.map +1 -1
  26. package/dist/esm/pages/matter-cluster-view.js +9 -4
  27. package/dist/esm/pages/matter-cluster-view.js.map +1 -1
  28. package/dist/esm/pages/matter-dashboard-app.d.ts +12 -0
  29. package/dist/esm/pages/matter-dashboard-app.d.ts.map +1 -1
  30. package/dist/esm/pages/matter-dashboard-app.js +84 -4
  31. package/dist/esm/pages/matter-dashboard-app.js.map +1 -1
  32. package/dist/esm/pages/matter-endpoint-view.d.ts.map +1 -1
  33. package/dist/esm/pages/matter-endpoint-view.js +8 -2
  34. package/dist/esm/pages/matter-endpoint-view.js.map +1 -1
  35. package/dist/esm/pages/matter-network-view.d.ts +52 -0
  36. package/dist/esm/pages/matter-network-view.d.ts.map +1 -0
  37. package/dist/esm/pages/matter-network-view.js +309 -0
  38. package/dist/esm/pages/matter-network-view.js.map +6 -0
  39. package/dist/esm/pages/matter-node-view.d.ts.map +1 -1
  40. package/dist/esm/pages/matter-node-view.js +86 -3
  41. package/dist/esm/pages/matter-node-view.js.map +1 -1
  42. package/dist/esm/pages/matter-server-view.d.ts +4 -0
  43. package/dist/esm/pages/matter-server-view.d.ts.map +1 -1
  44. package/dist/esm/pages/matter-server-view.js +16 -1
  45. package/dist/esm/pages/matter-server-view.js.map +1 -1
  46. package/dist/esm/pages/network/base-network-graph.d.ts +74 -0
  47. package/dist/esm/pages/network/base-network-graph.d.ts.map +1 -0
  48. package/dist/esm/pages/network/base-network-graph.js +411 -0
  49. package/dist/esm/pages/network/base-network-graph.js.map +6 -0
  50. package/dist/esm/pages/network/device-icons.d.ts +52 -0
  51. package/dist/esm/pages/network/device-icons.d.ts.map +1 -0
  52. package/dist/esm/pages/network/device-icons.js +197 -0
  53. package/dist/esm/pages/network/device-icons.js.map +6 -0
  54. package/dist/esm/pages/network/device-panel.d.ts +31 -0
  55. package/dist/esm/pages/network/device-panel.d.ts.map +1 -0
  56. package/dist/esm/pages/network/device-panel.js +183 -0
  57. package/dist/esm/pages/network/device-panel.js.map +6 -0
  58. package/dist/esm/pages/network/network-details.d.ts +77 -0
  59. package/dist/esm/pages/network/network-details.d.ts.map +1 -0
  60. package/dist/esm/pages/network/network-details.js +904 -0
  61. package/dist/esm/pages/network/network-details.js.map +6 -0
  62. package/dist/esm/pages/network/network-types.d.ts +159 -0
  63. package/dist/esm/pages/network/network-types.d.ts.map +1 -0
  64. package/dist/esm/pages/network/network-types.js +19 -0
  65. package/dist/esm/pages/network/network-types.js.map +6 -0
  66. package/dist/esm/pages/network/network-utils.d.ts +196 -0
  67. package/dist/esm/pages/network/network-utils.d.ts.map +1 -0
  68. package/dist/esm/pages/network/network-utils.js +540 -0
  69. package/dist/esm/pages/network/network-utils.js.map +6 -0
  70. package/dist/esm/pages/network/thread-graph.d.ts +27 -0
  71. package/dist/esm/pages/network/thread-graph.d.ts.map +1 -0
  72. package/dist/esm/pages/network/thread-graph.js +137 -0
  73. package/dist/esm/pages/network/thread-graph.js.map +6 -0
  74. package/dist/esm/pages/network/update-connections-dialog.d.ts +55 -0
  75. package/dist/esm/pages/network/update-connections-dialog.d.ts.map +1 -0
  76. package/dist/esm/pages/network/update-connections-dialog.js +284 -0
  77. package/dist/esm/pages/network/update-connections-dialog.js.map +6 -0
  78. package/dist/esm/pages/network/wifi-graph.d.ts +27 -0
  79. package/dist/esm/pages/network/wifi-graph.d.ts.map +1 -0
  80. package/dist/esm/pages/network/wifi-graph.js +169 -0
  81. package/dist/esm/pages/network/wifi-graph.js.map +6 -0
  82. package/dist/esm/util/format_hex.d.ts +18 -0
  83. package/dist/esm/util/format_hex.d.ts.map +1 -1
  84. package/dist/esm/util/format_hex.js +21 -1
  85. package/dist/esm/util/format_hex.js.map +1 -1
  86. package/dist/web/js/{commission-node-dialog-CBSDiqRW.js → commission-node-dialog-CcMuttYO.js} +5 -5
  87. package/dist/web/js/{commission-node-existing-TP6s8Tez.js → commission-node-existing-CqTRDMAr.js} +2 -5
  88. package/dist/web/js/{commission-node-thread-DOB8pu6x.js → commission-node-thread-DgwtTVwK.js} +2 -5
  89. package/dist/web/js/{commission-node-wifi-tzavmk1j.js → commission-node-wifi-XaN2SEnE.js} +2 -5
  90. package/dist/web/js/{dialog-box-Dknil_Be.js → dialog-box-COpDD8i7.js} +2 -2
  91. package/dist/web/js/{fire_event-DRpOSjJR.js → fire_event-mDYWi2sw.js} +1 -1
  92. package/dist/web/js/{log-level-dialog-TXkma-7Z.js → log-level-dialog-Bc32kZVw.js} +2 -3
  93. package/dist/web/js/main.js +1 -1
  94. package/dist/web/js/matter-dashboard-app-CrBHT4fT.js +31606 -0
  95. package/dist/web/js/{node-binding-dialog-D52FCBFP.js → node-binding-dialog-C8fqOJiB.js} +2 -4
  96. package/dist/web/js/prevent_default-D-ohDGsN.js +8 -0
  97. package/package.json +6 -5
  98. package/src/pages/cluster-commands/base-cluster-commands.ts +2 -2
  99. package/src/pages/cluster-commands/clusters/basic-information-commands.ts +171 -0
  100. package/src/pages/cluster-commands/index.ts +1 -0
  101. package/src/pages/components/footer.ts +4 -7
  102. package/src/pages/components/header.ts +81 -0
  103. package/src/pages/components/node-details.ts +3 -3
  104. package/src/pages/components/server-details.ts +0 -1
  105. package/src/pages/matter-cluster-view.ts +11 -4
  106. package/src/pages/matter-dashboard-app.ts +105 -5
  107. package/src/pages/matter-endpoint-view.ts +10 -3
  108. package/src/pages/matter-network-view.ts +325 -0
  109. package/src/pages/matter-node-view.ts +93 -4
  110. package/src/pages/matter-server-view.ts +17 -1
  111. package/src/pages/network/base-network-graph.ts +477 -0
  112. package/src/pages/network/device-icons.ts +283 -0
  113. package/src/pages/network/device-panel.ts +180 -0
  114. package/src/pages/network/network-details.ts +1015 -0
  115. package/src/pages/network/network-types.ts +167 -0
  116. package/src/pages/network/network-utils.ts +861 -0
  117. package/src/pages/network/thread-graph.ts +170 -0
  118. package/src/pages/network/update-connections-dialog.ts +327 -0
  119. package/src/pages/network/wifi-graph.ts +193 -0
  120. package/src/util/format_hex.ts +39 -0
  121. package/dist/web/js/matter-dashboard-app-B7GUghkC.js +0 -17254
  122. package/dist/web/js/outlined-text-field-D1DyKQY-.js +0 -968
  123. package/dist/web/js/prevent_default-BPgSQsuY.js +0 -814
  124. package/dist/web/js/validator-C735j770.js +0 -1122
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "@material/web/list/list";
7
+ import "@material/web/list/list-item";
8
+ import type { MatterNode } from "@matter-server/ws-client";
9
+ import { LitElement, nothing } from "lit";
10
+ import "../../components/ha-svg-icon";
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ "device-panel": DevicePanel;
14
+ }
15
+ }
16
+ export type PanelType = "wifi" | "ethernet" | "bridges";
17
+ export declare class DevicePanel extends LitElement {
18
+ type: PanelType;
19
+ nodeIds: number[];
20
+ nodes: Record<string, MatterNode>;
21
+ expanded: boolean;
22
+ private _isExpanded;
23
+ willUpdate(changedProperties: Map<string, unknown>): void;
24
+ private _getIcon;
25
+ private _getTitle;
26
+ private _toggleExpanded;
27
+ private _handleNodeClick;
28
+ render(): typeof nothing | import("lit-html").TemplateResult<1>;
29
+ static styles: import("lit").CSSResult;
30
+ }
31
+ //# sourceMappingURL=device-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-panel.d.ts","sourceRoot":"","sources":["../../../../src/pages/network/device-panel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,yBAAyB,CAAC;AACjC,OAAO,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAErD,OAAO,8BAA8B,CAAC;AAGtC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,cAAc,EAAE,WAAW,CAAC;KAC/B;CACJ;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAExD,qBACa,WAAY,SAAQ,UAAU;IAEhC,IAAI,EAAE,SAAS,CAAU;IAGzB,OAAO,EAAE,MAAM,EAAE,CAAM;IAGvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAM;IAGvC,QAAQ,UAAQ;IAGvB,OAAO,CAAC,WAAW,CAAQ;IAElB,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMlE,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;IAUf,MAAM;IAsCf,OAAgB,MAAM,0BA0DpB;CACL"}
@@ -0,0 +1,183 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result) __defProp(target, key, result);
9
+ return result;
10
+ };
11
+ /**
12
+ * @license
13
+ * Copyright 2025-2026 Open Home Foundation
14
+ * SPDX-License-Identifier: Apache-2.0
15
+ */
16
+ import "@material/web/list/list";
17
+ import "@material/web/list/list-item";
18
+ import { mdiChevronDown, mdiChevronRight, mdiEthernet, mdiRouter, mdiWifi } from "@mdi/js";
19
+ import { LitElement, css, html, nothing } from "lit";
20
+ import { customElement, property, state } from "lit/decorators.js";
21
+ import "../../components/ha-svg-icon";
22
+ import { getDeviceName } from "./network-utils.js";
23
+ let DevicePanel = class extends LitElement {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.type = "wifi";
27
+ this.nodeIds = [];
28
+ this.nodes = {};
29
+ this.expanded = true;
30
+ this._isExpanded = true;
31
+ }
32
+ willUpdate(changedProperties) {
33
+ if (changedProperties.has("expanded")) {
34
+ this._isExpanded = this.expanded;
35
+ }
36
+ }
37
+ _getIcon() {
38
+ switch (this.type) {
39
+ case "wifi":
40
+ return mdiWifi;
41
+ case "ethernet":
42
+ return mdiEthernet;
43
+ case "bridges":
44
+ return mdiRouter;
45
+ }
46
+ }
47
+ _getTitle() {
48
+ switch (this.type) {
49
+ case "wifi":
50
+ return "WiFi Devices";
51
+ case "ethernet":
52
+ return "Ethernet Devices";
53
+ case "bridges":
54
+ return "Bridges";
55
+ }
56
+ }
57
+ _toggleExpanded() {
58
+ this._isExpanded = !this._isExpanded;
59
+ }
60
+ _handleNodeClick(nodeId) {
61
+ this.dispatchEvent(
62
+ new CustomEvent("node-selected", {
63
+ detail: { nodeId },
64
+ bubbles: true,
65
+ composed: true
66
+ })
67
+ );
68
+ }
69
+ render() {
70
+ if (this.nodeIds.length === 0) {
71
+ return nothing;
72
+ }
73
+ return html`
74
+ <div class="panel">
75
+ <div class="header" @click=${this._toggleExpanded}>
76
+ <ha-svg-icon .path=${this._getIcon()} class="type-icon"></ha-svg-icon>
77
+ <span class="title">${this._getTitle()}</span>
78
+ <span class="count">(${this.nodeIds.length})</span>
79
+ <ha-svg-icon
80
+ .path=${this._isExpanded ? mdiChevronDown : mdiChevronRight}
81
+ class="expand-icon"
82
+ ></ha-svg-icon>
83
+ </div>
84
+ ${this._isExpanded ? html`
85
+ <md-list class="device-list">
86
+ ${this.nodeIds.map((nodeId) => {
87
+ const node = this.nodes[nodeId.toString()];
88
+ if (!node) return nothing;
89
+ return html`
90
+ <md-list-item type="button" @click=${() => this._handleNodeClick(nodeId)}>
91
+ <div slot="headline">Node ${nodeId}</div>
92
+ <div slot="supporting-text">${getDeviceName(node)}</div>
93
+ <ha-svg-icon slot="end" .path=${mdiChevronRight}></ha-svg-icon>
94
+ </md-list-item>
95
+ `;
96
+ })}
97
+ </md-list>
98
+ ` : nothing}
99
+ </div>
100
+ `;
101
+ }
102
+ };
103
+ DevicePanel.styles = css`
104
+ :host {
105
+ display: block;
106
+ }
107
+
108
+ .panel {
109
+ background-color: var(--md-sys-color-surface, #fff);
110
+ border-radius: 8px;
111
+ border: 1px solid var(--md-sys-color-outline-variant, #ccc);
112
+ overflow: hidden;
113
+ }
114
+
115
+ .header {
116
+ display: flex;
117
+ align-items: center;
118
+ padding: 12px 16px;
119
+ cursor: pointer;
120
+ user-select: none;
121
+ background-color: var(--md-sys-color-surface-container, #f5f5f5);
122
+ }
123
+
124
+ .header:hover {
125
+ background-color: var(--md-sys-color-surface-container-high, #e8e8e8);
126
+ }
127
+
128
+ .type-icon {
129
+ --icon-primary-color: var(--md-sys-color-primary, #6200ee);
130
+ margin-right: 12px;
131
+ }
132
+
133
+ .title {
134
+ font-weight: 500;
135
+ color: var(--md-sys-color-on-surface, #333);
136
+ }
137
+
138
+ .count {
139
+ margin-left: 8px;
140
+ color: var(--md-sys-color-on-surface-variant, #666);
141
+ font-size: 0.875rem;
142
+ }
143
+
144
+ .expand-icon {
145
+ margin-left: auto;
146
+ --icon-primary-color: var(--md-sys-color-on-surface-variant, #666);
147
+ }
148
+
149
+ .device-list {
150
+ --md-list-item-leading-space: 16px;
151
+ --md-list-item-trailing-space: 16px;
152
+ }
153
+
154
+ md-list-item {
155
+ --md-list-item-one-line-container-height: 48px;
156
+ }
157
+
158
+ md-list-item::part(focus-ring) {
159
+ display: none;
160
+ }
161
+ `;
162
+ __decorateClass([
163
+ property()
164
+ ], DevicePanel.prototype, "type", 2);
165
+ __decorateClass([
166
+ property({ type: Array })
167
+ ], DevicePanel.prototype, "nodeIds", 2);
168
+ __decorateClass([
169
+ property({ type: Object })
170
+ ], DevicePanel.prototype, "nodes", 2);
171
+ __decorateClass([
172
+ property({ type: Boolean })
173
+ ], DevicePanel.prototype, "expanded", 2);
174
+ __decorateClass([
175
+ state()
176
+ ], DevicePanel.prototype, "_isExpanded", 2);
177
+ DevicePanel = __decorateClass([
178
+ customElement("device-panel")
179
+ ], DevicePanel);
180
+ export {
181
+ DevicePanel
182
+ };
183
+ //# sourceMappingURL=device-panel.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/pages/network/device-panel.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "@material/web/divider/divider";
7
+ import { type MatterNode } from "@matter-server/ws-client";
8
+ import { LitElement, TemplateResult } from "lit";
9
+ import "../../components/ha-svg-icon";
10
+ import "./update-connections-dialog.js";
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ "network-details": NetworkDetails;
14
+ }
15
+ }
16
+ export declare class NetworkDetails extends LitElement {
17
+ selectedNodeId: number | string | null;
18
+ nodes: Record<string, MatterNode>;
19
+ unknownDevices: Map<string, {
20
+ extAddressHex: string;
21
+ isRouter: boolean;
22
+ seenBy: string[];
23
+ bestRssi: number | null;
24
+ }>;
25
+ wifiAccessPoints: Map<string, {
26
+ bssid: string;
27
+ connectedNodes: string[];
28
+ }>;
29
+ private client;
30
+ private _showUpdateDialog;
31
+ private _handleClose;
32
+ private _handleSelectNode;
33
+ /** Handle keyboard interaction for clickable elements (Enter/Space activates) */
34
+ private _handleKeyDown;
35
+ private _formatExtAddress;
36
+ private _getSignalIcon;
37
+ private _getSignalIconFromColor;
38
+ /**
39
+ * Format a node ID as hex for Matter log format display.
40
+ * Returns format like "@1:7b" for node ID 123.
41
+ */
42
+ private _formatNodeIdHex;
43
+ private _renderWiFiInfo;
44
+ private _renderThreadInfo;
45
+ private _renderNodeInfo;
46
+ /**
47
+ * Find the neighbor entry for an unknown device from a node's neighbor table.
48
+ */
49
+ private _findNeighborEntry;
50
+ private _renderUnknownDeviceInfo;
51
+ /**
52
+ * Determine if update connections button should be shown.
53
+ */
54
+ private _canUpdateConnections;
55
+ /**
56
+ * Get the type of the currently selected node for dialog variant.
57
+ */
58
+ private _getSelectedNodeType;
59
+ /**
60
+ * Get online neighbors for a Thread node.
61
+ */
62
+ private _getOnlineNeighbors;
63
+ /**
64
+ * Get online nodes that see an unknown device.
65
+ */
66
+ private _getOnlineSeenByNodes;
67
+ /**
68
+ * Get the name of the selected node for display in dialog.
69
+ */
70
+ private _getSelectedNodeName;
71
+ private _handleUpdateConnections;
72
+ private _handleDialogClose;
73
+ private _renderWiFiAccessPointInfo;
74
+ render(): TemplateResult<1>;
75
+ static styles: import("lit").CSSResult;
76
+ }
77
+ //# sourceMappingURL=network-details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-details.d.ts","sourceRoot":"","sources":["../../../../src/pages/network/network-details.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,cAAc,EAAsB,MAAM,KAAK,CAAC;AAGrE,OAAO,8BAA8B,CAAC;AAqBtC,OAAO,gCAAgC,CAAC;AAExC,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,iBAAiB,EAAE,cAAc,CAAC;KACrC;CACJ;AAED,qBACa,cAAe,SAAQ,UAAU;IAEnC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAQ;IAG9C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAM;IAGvC,cAAc,EAAE,GAAG,CACtB,MAAM,EACN;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAC1F,CAAa;IAGP,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAa;IAG9F,OAAO,CAAC,MAAM,CAAgB;IAG9B,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IAUzB,iFAAiF;IACjF,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;IAM/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAwDvB,OAAO,CAAC,iBAAiB;IA4GzB,OAAO,CAAC,eAAe;IAqDvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,wBAAwB;IA4FhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,0BAA0B;IAgEzB,MAAM;IAkIf,OAAgB,MAAM,0BAwQpB;CACL"}