@camstack/addon-provider-ecowitt 0.1.8 → 0.1.9

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/addon.js CHANGED
@@ -14785,83 +14785,34 @@ var GetStateInputSchema = object({
14785
14785
  * HA: entity_id (returns the cached entity state). */
14786
14786
  key: string()
14787
14787
  });
14788
- var brokerCapability = {
14789
- name: "broker",
14790
- scope: "system",
14791
- mode: "collection",
14792
- providerKind: "broker",
14793
- status: {
14794
- schema: RegistryStatusSchema,
14795
- kind: "poll"
14796
- },
14797
- methods: {
14798
- list: method(ListInputSchema, array(BrokerInfoSchema$1)),
14799
- get: method(GetInputSchema, BrokerInfoSchema$1.nullable()),
14800
- /** Enumerate which addon provides which broker kind(s) for the
14801
- * unified create picker. The auto-mount fans this array across
14802
- * every registered `broker` provider (array-output method), so the
14803
- * picker sees every kind from every provider in one call. */
14804
- listProviders: method(_void(), array(BrokerProviderInfoSchema), { auth: "admin" }),
14805
- add: method(AddInputSchema, AddResultSchema, {
14806
- kind: "mutation",
14807
- auth: "admin"
14808
- }),
14809
- remove: method(RemoveInputSchema, _void(), {
14810
- kind: "mutation",
14811
- auth: "admin"
14812
- }),
14813
- testConnection: method(GetInputSchema, TestConnectionResultSchema, {
14814
- kind: "mutation",
14815
- auth: "admin"
14816
- }),
14817
- /** Read the persisted settings record for a broker (kind-specific
14818
- * shape). Admin-only — settings may contain secrets. Returns `null`
14819
- * when the broker id is unknown to the provider (the collection
14820
- * fallback may route a foreign id to the first provider). */
14821
- getSettings: method(GetInputSchema, SettingsRecordSchema$1.nullable(), { auth: "admin" }),
14822
- /** Overwrite the persisted settings record. The kind-specific
14823
- * provider validates the shape and applies the change (reconnects
14824
- * if credentials changed). */
14825
- setSettings: method(object({
14826
- id: string(),
14827
- settings: SettingsRecordSchema$1
14828
- }), _void(), {
14829
- kind: "mutation",
14830
- auth: "admin"
14831
- }),
14832
- /** Returns the kind-specific connection config the consumer needs
14833
- * to open its own client (MQTT pattern: `{url, username, password,
14834
- * clientIdPrefix}`). HA providers MAY return the auth envelope
14835
- * but typical HA consumers use `publish` / `subscribe` instead.
14836
- * Returns `null` when the broker id is unknown to the provider. */
14837
- getBrokerConfig: method(GetInputSchema, SettingsRecordSchema$1.nullable(), { auth: "admin" }),
14838
- getSettingsSchema: method(SettingsSchemaInputSchema, SettingsSchemaResultSchema, { auth: "admin" }),
14839
- testSettings: method(TestSettingsInputSchema, TestSettingsResultSchema, {
14840
- kind: "mutation",
14841
- auth: "admin"
14842
- }),
14843
- publish: method(PublishInputSchema, unknown(), {
14844
- kind: "mutation",
14845
- auth: "admin"
14846
- }),
14847
- subscribe: method(SubscribeInputSchema, SubscribeResultSchema, {
14848
- kind: "mutation",
14849
- auth: "admin"
14850
- }),
14851
- unsubscribe: method(UnsubscribeInputSchema, _void(), {
14852
- kind: "mutation",
14853
- auth: "admin"
14854
- }),
14855
- /** Read the broker's cached state for a key. Returns `null` when
14856
- * unknown to the broker (never published / unknown entity). */
14857
- getState: method(GetStateInputSchema, unknown().nullable()),
14858
- /** Status method — explicit registration with a `z.void()` input so
14859
- * the codegen-generated tRPC router types its input as
14860
- * `{addonId?: string, nodeId?: string}` (system-scoped collection
14861
- * shape) instead of the device-scoped `{deviceId}` fallback. */
14862
- getStatus: method(_void(), RegistryStatusSchema)
14863
- }
14864
- };
14788
+ method(ListInputSchema, array(BrokerInfoSchema$1)), method(GetInputSchema, BrokerInfoSchema$1.nullable()), method(_void(), array(BrokerProviderInfoSchema), { auth: "admin" }), method(AddInputSchema, AddResultSchema, {
14789
+ kind: "mutation",
14790
+ auth: "admin"
14791
+ }), method(RemoveInputSchema, _void(), {
14792
+ kind: "mutation",
14793
+ auth: "admin"
14794
+ }), method(GetInputSchema, TestConnectionResultSchema, {
14795
+ kind: "mutation",
14796
+ auth: "admin"
14797
+ }), method(GetInputSchema, SettingsRecordSchema$1.nullable(), { auth: "admin" }), method(object({
14798
+ id: string(),
14799
+ settings: SettingsRecordSchema$1
14800
+ }), _void(), {
14801
+ kind: "mutation",
14802
+ auth: "admin"
14803
+ }), method(GetInputSchema, SettingsRecordSchema$1.nullable(), { auth: "admin" }), method(SettingsSchemaInputSchema, SettingsSchemaResultSchema, { auth: "admin" }), method(TestSettingsInputSchema, TestSettingsResultSchema, {
14804
+ kind: "mutation",
14805
+ auth: "admin"
14806
+ }), method(PublishInputSchema, unknown(), {
14807
+ kind: "mutation",
14808
+ auth: "admin"
14809
+ }), method(SubscribeInputSchema, SubscribeResultSchema, {
14810
+ kind: "mutation",
14811
+ auth: "admin"
14812
+ }), method(UnsubscribeInputSchema, _void(), {
14813
+ kind: "mutation",
14814
+ auth: "admin"
14815
+ }), method(GetStateInputSchema, unknown().nullable()), method(_void(), RegistryStatusSchema);
14865
14816
  DeviceType.Camera;
14866
14817
  /**
14867
14818
  * `custom-model-registry` — collection cap exposing operator-registered
@@ -15097,36 +15048,19 @@ var ResyncResultSchema = object({
15097
15048
  * provider re-derived the device. 0/absent for a normal incremental re-sync. */
15098
15049
  removedChildren: number().int().nonnegative().optional()
15099
15050
  });
15100
- var deviceAdoptionCapability = {
15101
- name: "device-adoption",
15102
- scope: "system",
15103
- mode: "singleton",
15104
- status: {
15105
- schema: AdoptionStatusSchema,
15106
- kind: "poll"
15107
- },
15108
- methods: {
15109
- listCandidateFilters: method(object({ integrationId: string() }), object({ filters: array(AdoptionFilterSchema) }), { auth: "admin" }),
15110
- listCandidates: method(ListCandidatesInputSchema, ListCandidatesOutputSchema, { auth: "admin" }),
15111
- getCandidate: method(GetCandidateInputSchema, DiscoveredChildDeviceSchema.nullable(), { auth: "admin" }),
15112
- refresh: method(object({ integrationId: string() }), AdoptionStatusSchema, {
15113
- kind: "mutation",
15114
- auth: "admin"
15115
- }),
15116
- adopt: method(AdoptInputSchema, AdoptResultSchema, {
15117
- kind: "mutation",
15118
- auth: "admin"
15119
- }),
15120
- release: method(ReleaseInputSchema, _void(), {
15121
- kind: "mutation",
15122
- auth: "admin"
15123
- }),
15124
- resync: method(ResyncInputSchema, ResyncResultSchema, {
15125
- kind: "mutation",
15126
- auth: "admin"
15127
- })
15128
- }
15129
- };
15051
+ method(object({ integrationId: string() }), object({ filters: array(AdoptionFilterSchema) }), { auth: "admin" }), method(ListCandidatesInputSchema, ListCandidatesOutputSchema, { auth: "admin" }), method(GetCandidateInputSchema, DiscoveredChildDeviceSchema.nullable(), { auth: "admin" }), method(object({ integrationId: string() }), AdoptionStatusSchema, {
15052
+ kind: "mutation",
15053
+ auth: "admin"
15054
+ }), method(AdoptInputSchema, AdoptResultSchema, {
15055
+ kind: "mutation",
15056
+ auth: "admin"
15057
+ }), method(ReleaseInputSchema, _void(), {
15058
+ kind: "mutation",
15059
+ auth: "admin"
15060
+ }), method(ResyncInputSchema, ResyncResultSchema, {
15061
+ kind: "mutation",
15062
+ auth: "admin"
15063
+ });
15130
15064
  /**
15131
15065
  * `device-export` — collection cap for addons that export camstack
15132
15066
  * devices to external ecosystems (HomeAssistant via MQTT discovery,
@@ -18316,6 +18250,17 @@ var AvailableIntegrationTypeSchema = object({
18316
18250
  iconUrl: string().nullable(),
18317
18251
  color: string(),
18318
18252
  instanceMode: string(),
18253
+ /**
18254
+ * Integration wizard `mode` (LOCKED MODEL): `standalone` (create
18255
+ * immediately then add devices, no config step/button), `account` (config
18256
+ * step), or `broker` (broker step). Derived server-side by
18257
+ * `getAvailableTypes` when the addon manifest omits an explicit `mode`.
18258
+ */
18259
+ mode: _enum([
18260
+ "standalone",
18261
+ "account",
18262
+ "broker"
18263
+ ]),
18319
18264
  discoveryMode: string(),
18320
18265
  /**
18321
18266
  * Which integration-marker cap the addon declared, so the wizard can
@@ -24034,7 +23979,184 @@ object({
24034
23979
  schemaVersion: literal(1)
24035
23980
  });
24036
23981
  //#endregion
24037
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/core/symbols.js
23982
+ //#region src/config.ts
23983
+ /**
23984
+ * Operator-supplied Ecowitt gateway settings for ONE broker (= one station).
23985
+ * Two transports behind a `transport` discriminator:
23986
+ *
23987
+ * - `local` (local-poll): the addon polls the gateway over HTTP (`host`/`port`/
23988
+ * optional `password`, with poll + mapping intervals).
23989
+ * - `listener` (push): the addon runs an HTTP server the gateway uploads to
23990
+ * (the gateway's "Customized" upload must point at the hub's LAN IP:port).
23991
+ *
23992
+ * Local-poll is the recommended default — it has no inbound-IP constraint.
23993
+ */
23994
+ var baseFields = {
23995
+ /** Human-overridable station identity used to scope the adopted gateway. */
23996
+ stationId: string().default("").describe("Optional stable station id (auto-derived when blank)") };
23997
+ var ecowittConfigSchema = discriminatedUnion("transport", [object({
23998
+ transport: literal("local"),
23999
+ host: string().min(1).describe("Ecowitt gateway host name or IP address"),
24000
+ port: preprocess((v) => v === "" || v === null ? void 0 : v, number().int().min(1).max(65535).default(80)).describe("Gateway HTTP port"),
24001
+ password: string().default("").describe("Gateway password (optional — newer firmware)"),
24002
+ pollIntervalMs: preprocess((v) => v === "" || v === null ? void 0 : v, number().int().min(1e3).max(36e5).default(6e4)).describe("Live-data poll interval (ms)"),
24003
+ mappingIntervalMs: preprocess((v) => v === "" || v === null ? void 0 : v, number().int().min(1e4).max(864e5).default(6e5)).describe("Sensor-map refresh interval (ms)"),
24004
+ ...baseFields
24005
+ }), object({
24006
+ transport: literal("listener"),
24007
+ listenPort: preprocess((v) => v === "" || v === null ? void 0 : v, number().int().min(1).max(65535).default(4199)).describe("Local TCP port the gateway uploads to"),
24008
+ listenHost: string().default("").describe("Optional bind host (blank = all interfaces)"),
24009
+ ...baseFields
24010
+ })]);
24011
+ /**
24012
+ * Narrow an `unknown` value to a shallow-cloned plain object record, or an empty
24013
+ * record when it is not a plain object. Mirrors the Homematic `toRecord` helper —
24014
+ * a cast-free boundary narrowing.
24015
+ */
24016
+ function toRecord(value) {
24017
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) return Object.fromEntries(Object.entries(value));
24018
+ return {};
24019
+ }
24020
+ /** Coerce a loose settings blob through the connection schema, applying defaults.
24021
+ * A blob with no `transport` defaults to `local` for back-compat with simple forms. */
24022
+ function settingsToEcowittConfig(settings) {
24023
+ const raw = toRecord(settings);
24024
+ if (raw["transport"] !== "local" && raw["transport"] !== "listener") raw["transport"] = "local";
24025
+ return ecowittConfigSchema.parse(raw);
24026
+ }
24027
+ /**
24028
+ * Persisted config for an Ecowitt gateway {@link import('@camstack/types').DeviceType.Hub}
24029
+ * device. The operator-supplied CONNECTION lives directly on the device (Reolink
24030
+ * pattern) — there is no broker registry. The gateway owns its own live nodewitt
24031
+ * client keyed on its own `stableId`; group Container children reference it via
24032
+ * their `gatewayId` config field.
24033
+ */
24034
+ var ecowittGatewaySchema = object({
24035
+ /** The transport + endpoint the gateway's live client dials / binds. */
24036
+ connection: ecowittConfigSchema,
24037
+ /** Provenance marker used to scope offline / cascade helpers. */
24038
+ system: literal("ecowitt-gateway").optional()
24039
+ });
24040
+ /**
24041
+ * Hand-written connection form for the gateway device-creation UI (standalone
24042
+ * mode — Reolink pattern). The connection lives on the gateway DEVICE config,
24043
+ * not in a broker registry. A `name` field is included so the operator names
24044
+ * the gateway Hub at creation time (mirrors the Reolink creation form).
24045
+ */
24046
+ function buildConnectionFormSchema() {
24047
+ return { sections: [
24048
+ {
24049
+ id: "identity",
24050
+ title: "Gateway",
24051
+ columns: 1,
24052
+ fields: [{
24053
+ type: "text",
24054
+ key: "name",
24055
+ label: "Name",
24056
+ required: true,
24057
+ placeholder: "Weather station"
24058
+ }]
24059
+ },
24060
+ {
24061
+ id: "transport",
24062
+ title: "Transport",
24063
+ description: "Choose how CamStack reads the gateway. Local poll connects out to the gateway (recommended). Push listener runs a server the gateway uploads to — configure the gateway \"Customized\" upload to point at this hub.",
24064
+ columns: 1,
24065
+ fields: [{
24066
+ type: "select",
24067
+ key: "transport",
24068
+ label: "Transport",
24069
+ default: "local",
24070
+ options: [{
24071
+ value: "local",
24072
+ label: "Local poll (recommended)"
24073
+ }, {
24074
+ value: "listener",
24075
+ label: "Push listener"
24076
+ }]
24077
+ }]
24078
+ },
24079
+ {
24080
+ id: "local",
24081
+ title: "Local poll settings",
24082
+ columns: 2,
24083
+ fields: [
24084
+ {
24085
+ type: "text",
24086
+ key: "host",
24087
+ label: "Gateway host / IP",
24088
+ placeholder: "192.168.1.50",
24089
+ showWhen: {
24090
+ field: "transport",
24091
+ equals: "local"
24092
+ }
24093
+ },
24094
+ {
24095
+ type: "number",
24096
+ key: "port",
24097
+ label: "HTTP port",
24098
+ min: 1,
24099
+ max: 65535,
24100
+ default: 80,
24101
+ showWhen: {
24102
+ field: "transport",
24103
+ equals: "local"
24104
+ }
24105
+ },
24106
+ {
24107
+ type: "password",
24108
+ key: "password",
24109
+ label: "Password (optional)",
24110
+ showToggle: true,
24111
+ showWhen: {
24112
+ field: "transport",
24113
+ equals: "local"
24114
+ }
24115
+ },
24116
+ {
24117
+ type: "number",
24118
+ key: "pollIntervalMs",
24119
+ label: "Poll interval (ms)",
24120
+ min: 1e3,
24121
+ max: 36e5,
24122
+ default: 6e4,
24123
+ showWhen: {
24124
+ field: "transport",
24125
+ equals: "local"
24126
+ }
24127
+ }
24128
+ ]
24129
+ },
24130
+ {
24131
+ id: "listener",
24132
+ title: "Push listener settings",
24133
+ columns: 2,
24134
+ fields: [{
24135
+ type: "number",
24136
+ key: "listenPort",
24137
+ label: "Listen port",
24138
+ min: 1,
24139
+ max: 65535,
24140
+ default: 4199,
24141
+ showWhen: {
24142
+ field: "transport",
24143
+ equals: "listener"
24144
+ }
24145
+ }, {
24146
+ type: "text",
24147
+ key: "listenHost",
24148
+ label: "Bind host (optional)",
24149
+ placeholder: "all interfaces",
24150
+ showWhen: {
24151
+ field: "transport",
24152
+ equals: "listener"
24153
+ }
24154
+ }]
24155
+ }
24156
+ ] };
24157
+ }
24158
+ //#endregion
24159
+ //#region node_modules/undici/lib/core/symbols.js
24038
24160
  var require_symbols$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24039
24161
  module.exports = {
24040
24162
  kClose: Symbol("close"),
@@ -24105,7 +24227,7 @@ var require_symbols$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24105
24227
  };
24106
24228
  }));
24107
24229
  //#endregion
24108
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/core/errors.js
24230
+ //#region node_modules/undici/lib/core/errors.js
24109
24231
  var require_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24110
24232
  var kUndiciError = Symbol.for("undici.error.UND_ERR");
24111
24233
  var UndiciError = class extends Error {
@@ -24463,7 +24585,7 @@ var require_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24463
24585
  };
24464
24586
  }));
24465
24587
  //#endregion
24466
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/core/constants.js
24588
+ //#region node_modules/undici/lib/core/constants.js
24467
24589
  var require_constants$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24468
24590
  /** @type {Record<string, string | undefined>} */
24469
24591
  var headerNameLowerCasedRecord = {};
@@ -24576,7 +24698,7 @@ var require_constants$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24576
24698
  };
24577
24699
  }));
24578
24700
  //#endregion
24579
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/core/tree.js
24701
+ //#region node_modules/undici/lib/core/tree.js
24580
24702
  var require_tree = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24581
24703
  var { wellknownHeaderNames, headerNameLowerCasedRecord } = require_constants$4();
24582
24704
  var TstNode = class TstNode {
@@ -24686,7 +24808,7 @@ var require_tree = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24686
24808
  };
24687
24809
  }));
24688
24810
  //#endregion
24689
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/core/util.js
24811
+ //#region node_modules/undici/lib/core/util.js
24690
24812
  var require_util$7 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
24691
24813
  var assert$26 = require("node:assert");
24692
24814
  var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols$4();
@@ -25140,7 +25262,7 @@ var require_util$7 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25140
25262
  };
25141
25263
  }));
25142
25264
  //#endregion
25143
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/core/diagnostics.js
25265
+ //#region node_modules/undici/lib/core/diagnostics.js
25144
25266
  var require_diagnostics = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25145
25267
  var diagnosticsChannel = require("node:diagnostics_channel");
25146
25268
  var util$2 = require("node:util");
@@ -25237,7 +25359,7 @@ var require_diagnostics = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25237
25359
  module.exports = { channels };
25238
25360
  }));
25239
25361
  //#endregion
25240
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/core/request.js
25362
+ //#region node_modules/undici/lib/core/request.js
25241
25363
  var require_request$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25242
25364
  var { InvalidArgumentError, NotSupportedError } = require_errors();
25243
25365
  var assert$25 = require("node:assert");
@@ -25456,7 +25578,7 @@ var require_request$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25456
25578
  module.exports = Request;
25457
25579
  }));
25458
25580
  //#endregion
25459
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/dispatcher.js
25581
+ //#region node_modules/undici/lib/dispatcher/dispatcher.js
25460
25582
  var require_dispatcher = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25461
25583
  var EventEmitter$1 = require("node:events");
25462
25584
  var Dispatcher = class extends EventEmitter$1 {
@@ -25502,7 +25624,7 @@ var require_dispatcher = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25502
25624
  module.exports = Dispatcher;
25503
25625
  }));
25504
25626
  //#endregion
25505
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/dispatcher-base.js
25627
+ //#region node_modules/undici/lib/dispatcher/dispatcher-base.js
25506
25628
  var require_dispatcher_base = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25507
25629
  var Dispatcher = require_dispatcher();
25508
25630
  var { ClientDestroyedError, ClientClosedError, InvalidArgumentError } = require_errors();
@@ -25624,7 +25746,7 @@ var require_dispatcher_base = /* @__PURE__ */ __commonJSMin(((exports, module) =
25624
25746
  module.exports = DispatcherBase;
25625
25747
  }));
25626
25748
  //#endregion
25627
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/util/timers.js
25749
+ //#region node_modules/undici/lib/util/timers.js
25628
25750
  var require_timers = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25629
25751
  /**
25630
25752
  * This module offers an optimized timer implementation designed for scenarios
@@ -25962,7 +26084,7 @@ var require_timers = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25962
26084
  };
25963
26085
  }));
25964
26086
  //#endregion
25965
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/core/connect.js
26087
+ //#region node_modules/undici/lib/core/connect.js
25966
26088
  var require_connect = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25967
26089
  var net$1 = require("node:net");
25968
26090
  var assert$24 = require("node:assert");
@@ -26132,7 +26254,7 @@ var require_connect = /* @__PURE__ */ __commonJSMin(((exports, module) => {
26132
26254
  module.exports = buildConnector;
26133
26255
  }));
26134
26256
  //#endregion
26135
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/llhttp/utils.js
26257
+ //#region node_modules/undici/lib/llhttp/utils.js
26136
26258
  var require_utils = /* @__PURE__ */ __commonJSMin(((exports) => {
26137
26259
  Object.defineProperty(exports, "__esModule", { value: true });
26138
26260
  exports.enumToMap = void 0;
@@ -26147,7 +26269,7 @@ var require_utils = /* @__PURE__ */ __commonJSMin(((exports) => {
26147
26269
  exports.enumToMap = enumToMap;
26148
26270
  }));
26149
26271
  //#endregion
26150
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/llhttp/constants.js
26272
+ //#region node_modules/undici/lib/llhttp/constants.js
26151
26273
  var require_constants$3 = /* @__PURE__ */ __commonJSMin(((exports) => {
26152
26274
  Object.defineProperty(exports, "__esModule", { value: true });
26153
26275
  exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;
@@ -26480,19 +26602,19 @@ var require_constants$3 = /* @__PURE__ */ __commonJSMin(((exports) => {
26480
26602
  };
26481
26603
  }));
26482
26604
  //#endregion
26483
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/llhttp/llhttp-wasm.js
26605
+ //#region node_modules/undici/lib/llhttp/llhttp-wasm.js
26484
26606
  var require_llhttp_wasm = /* @__PURE__ */ __commonJSMin(((exports, module) => {
26485
26607
  var { Buffer: Buffer$2 } = require("node:buffer");
26486
26608
  module.exports = Buffer$2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
26487
26609
  }));
26488
26610
  //#endregion
26489
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
26611
+ //#region node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
26490
26612
  var require_llhttp_simd_wasm = /* @__PURE__ */ __commonJSMin(((exports, module) => {
26491
26613
  var { Buffer: Buffer$1 } = require("node:buffer");
26492
26614
  module.exports = Buffer$1.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIdbGxodHRwX3NldF9sZW5pZW50X2tlZXBfYWxpdmUAIyRsbGh0dHBfc2V0X2xlbmllbnRfdHJhbnNmZXJfZW5jb2RpbmcAJBhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YALgkXAQBBAQsRAQIDBAUKBgcrLSwqKSglJyYK77MCLBYAQYjQACgCAARAAAtBiNAAQQE2AgALFAAgABAwIAAgAjYCOCAAIAE6ACgLFAAgACAALwEyIAAtAC4gABAvEAALHgEBf0HAABAyIgEQMCABQYAINgI4IAEgADoAKCABC48MAQd/AkAgAEUNACAAQQhrIgEgAEEEaygCACIAQXhxIgRqIQUCQCAAQQFxDQAgAEEDcUUNASABIAEoAgAiAGsiAUGc0AAoAgBJDQEgACAEaiEEAkACQEGg0AAoAgAgAUcEQCAAQf8BTQRAIABBA3YhAyABKAIIIgAgASgCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyABKAIYIQYgASABKAIMIgBHBEAgACABKAIIIgI2AgggAiAANgIMDAMLIAFBFGoiAygCACICRQRAIAEoAhAiAkUNAiABQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFKAIEIgBBA3FBA0cNAiAFIABBfnE2AgRBlNAAIAQ2AgAgBSAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCABKAIcIgJBAnRBvNIAaiIDKAIAIAFGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgAUYbaiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAFTw0AIAUoAgQiAEEBcUUNAAJAAkACQAJAIABBAnFFBEBBpNAAKAIAIAVGBEBBpNAAIAE2AgBBmNAAQZjQACgCACAEaiIANgIAIAEgAEEBcjYCBCABQaDQACgCAEcNBkGU0ABBADYCAEGg0ABBADYCAAwGC0Gg0AAoAgAgBUYEQEGg0AAgATYCAEGU0ABBlNAAKAIAIARqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAAwGCyAAQXhxIARqIQQgAEH/AU0EQCAAQQN2IQMgBSgCCCIAIAUoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgBSgCGCEGIAUgBSgCDCIARwRAQZzQACgCABogACAFKAIIIgI2AgggAiAANgIMDAMLIAVBFGoiAygCACICRQRAIAUoAhAiAkUNAiAFQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFIABBfnE2AgQgASAEaiAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCAFKAIcIgJBAnRBvNIAaiIDKAIAIAVGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiAANgIAIABFDQELIAAgBjYCGCAFKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAFQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAEaiAENgIAIAEgBEEBcjYCBCABQaDQACgCAEcNAEGU0AAgBDYCAAwBCyAEQf8BTQRAIARBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASAEQQN2dCIDcUUEQEGM0AAgAiADcjYCACAADAELIAAoAggLIgIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCAwBC0EfIQIgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgASACNgIcIAFCADcCECACQQJ0QbzSAGohAAJAQZDQACgCACIDQQEgAnQiB3FFBEAgACABNgIAQZDQACADIAdyNgIAIAEgADYCGCABIAE2AgggASABNgIMDAELIARBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAAJAA0AgACIDKAIEQXhxIARGDQEgAkEddiEAIAJBAXQhAiADIABBBHFqQRBqIgcoAgAiAA0ACyAHIAE2AgAgASADNgIYIAEgATYCDCABIAE2AggMAQsgAygCCCIAIAE2AgwgAyABNgIIIAFBADYCGCABIAM2AgwgASAANgIIC0Gs0ABBrNAAKAIAQQFrIgBBfyAAGzYCAAsLBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LQAEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABAwIAAgBDYCOCAAIAM6ACggACACOgAtIAAgATYCGAu74gECB38DfiABIAJqIQQCQCAAIgIoAgwiAA0AIAIoAgQEQCACIAE2AgQLIwBBEGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwiA0EBaw7dAdoBAdkBAgMEBQYHCAkKCwwNDtgBDxDXARES1gETFBUWFxgZGhvgAd8BHB0e1QEfICEiIyQl1AEmJygpKiss0wHSAS0u0QHQAS8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRtsBR0hJSs8BzgFLzQFMzAFNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBywHKAbgByQG5AcgBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgEA3AELQQAMxgELQQ4MxQELQQ0MxAELQQ8MwwELQRAMwgELQRMMwQELQRQMwAELQRUMvwELQRYMvgELQRgMvQELQRkMvAELQRoMuwELQRsMugELQRwMuQELQR0MuAELQQgMtwELQR4MtgELQSAMtQELQR8MtAELQQcMswELQSEMsgELQSIMsQELQSMMsAELQSQMrwELQRIMrgELQREMrQELQSUMrAELQSYMqwELQScMqgELQSgMqQELQcMBDKgBC0EqDKcBC0ErDKYBC0EsDKUBC0EtDKQBC0EuDKMBC0EvDKIBC0HEAQyhAQtBMAygAQtBNAyfAQtBDAyeAQtBMQydAQtBMgycAQtBMwybAQtBOQyaAQtBNQyZAQtBxQEMmAELQQsMlwELQToMlgELQTYMlQELQQoMlAELQTcMkwELQTgMkgELQTwMkQELQTsMkAELQT0MjwELQQkMjgELQSkMjQELQT4MjAELQT8MiwELQcAADIoBC0HBAAyJAQtBwgAMiAELQcMADIcBC0HEAAyGAQtBxQAMhQELQcYADIQBC0EXDIMBC0HHAAyCAQtByAAMgQELQckADIABC0HKAAx/C0HLAAx+C0HNAAx9C0HMAAx8C0HOAAx7C0HPAAx6C0HQAAx5C0HRAAx4C0HSAAx3C0HTAAx2C0HUAAx1C0HWAAx0C0HVAAxzC0EGDHILQdcADHELQQUMcAtB2AAMbwtBBAxuC0HZAAxtC0HaAAxsC0HbAAxrC0HcAAxqC0EDDGkLQd0ADGgLQd4ADGcLQd8ADGYLQeEADGULQeAADGQLQeIADGMLQeMADGILQQIMYQtB5AAMYAtB5QAMXwtB5gAMXgtB5wAMXQtB6AAMXAtB6QAMWwtB6gAMWgtB6wAMWQtB7AAMWAtB7QAMVwtB7gAMVgtB7wAMVQtB8AAMVAtB8QAMUwtB8gAMUgtB8wAMUQtB9AAMUAtB9QAMTwtB9gAMTgtB9wAMTQtB+AAMTAtB+QAMSwtB+gAMSgtB+wAMSQtB/AAMSAtB/QAMRwtB/gAMRgtB/wAMRQtBgAEMRAtBgQEMQwtBggEMQgtBgwEMQQtBhAEMQAtBhQEMPwtBhgEMPgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
26493
26615
  }));
26494
26616
  //#endregion
26495
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/constants.js
26617
+ //#region node_modules/undici/lib/web/fetch/constants.js
26496
26618
  var require_constants$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
26497
26619
  var corsSafeListedMethods = [
26498
26620
  "GET",
@@ -26710,7 +26832,7 @@ var require_constants$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
26710
26832
  };
26711
26833
  }));
26712
26834
  //#endregion
26713
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/global.js
26835
+ //#region node_modules/undici/lib/web/fetch/global.js
26714
26836
  var require_global$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
26715
26837
  var globalOrigin = Symbol.for("undici.globalOrigin.1");
26716
26838
  function getGlobalOrigin() {
@@ -26741,7 +26863,7 @@ var require_global$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
26741
26863
  };
26742
26864
  }));
26743
26865
  //#endregion
26744
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/data-url.js
26866
+ //#region node_modules/undici/lib/web/fetch/data-url.js
26745
26867
  var require_data_url = /* @__PURE__ */ __commonJSMin(((exports, module) => {
26746
26868
  var assert$23 = require("node:assert");
26747
26869
  var encoder = new TextEncoder();
@@ -27076,7 +27198,7 @@ var require_data_url = /* @__PURE__ */ __commonJSMin(((exports, module) => {
27076
27198
  };
27077
27199
  }));
27078
27200
  //#endregion
27079
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/webidl.js
27201
+ //#region node_modules/undici/lib/web/fetch/webidl.js
27080
27202
  var require_webidl = /* @__PURE__ */ __commonJSMin(((exports, module) => {
27081
27203
  var { types: types$3, inspect } = require("node:util");
27082
27204
  var { markAsUncloneable } = require("node:worker_threads");
@@ -27392,7 +27514,7 @@ var require_webidl = /* @__PURE__ */ __commonJSMin(((exports, module) => {
27392
27514
  module.exports = { webidl };
27393
27515
  }));
27394
27516
  //#endregion
27395
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/util.js
27517
+ //#region node_modules/undici/lib/web/fetch/util.js
27396
27518
  var require_util$6 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
27397
27519
  var { Transform: Transform$2 } = require("node:stream");
27398
27520
  var zlib$1 = require("node:zlib");
@@ -28205,7 +28327,7 @@ var require_util$6 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28205
28327
  };
28206
28328
  }));
28207
28329
  //#endregion
28208
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/symbols.js
28330
+ //#region node_modules/undici/lib/web/fetch/symbols.js
28209
28331
  var require_symbols$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28210
28332
  module.exports = {
28211
28333
  kUrl: Symbol("url"),
@@ -28216,7 +28338,7 @@ var require_symbols$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28216
28338
  };
28217
28339
  }));
28218
28340
  //#endregion
28219
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/file.js
28341
+ //#region node_modules/undici/lib/web/fetch/file.js
28220
28342
  var require_file = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28221
28343
  var { Blob: Blob$2, File: File$1 } = require("node:buffer");
28222
28344
  var { kState } = require_symbols$3();
@@ -28279,7 +28401,7 @@ var require_file = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28279
28401
  };
28280
28402
  }));
28281
28403
  //#endregion
28282
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/formdata.js
28404
+ //#region node_modules/undici/lib/web/fetch/formdata.js
28283
28405
  var require_formdata = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28284
28406
  var { isBlobLike, iteratorMixin } = require_util$6();
28285
28407
  var { kState } = require_symbols$3();
@@ -28414,7 +28536,7 @@ var require_formdata = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28414
28536
  };
28415
28537
  }));
28416
28538
  //#endregion
28417
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/formdata-parser.js
28539
+ //#region node_modules/undici/lib/web/fetch/formdata-parser.js
28418
28540
  var require_formdata_parser = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28419
28541
  var { isUSVString, bufferToLowerCasedHeaderName } = require_util$7();
28420
28542
  var { utf8DecodeBytes } = require_util$6();
@@ -28613,7 +28735,7 @@ var require_formdata_parser = /* @__PURE__ */ __commonJSMin(((exports, module) =
28613
28735
  };
28614
28736
  }));
28615
28737
  //#endregion
28616
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/body.js
28738
+ //#region node_modules/undici/lib/web/fetch/body.js
28617
28739
  var require_body = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28618
28740
  var util = require_util$7();
28619
28741
  var { ReadableStreamFrom, isBlobLike, isReadableStreamLike, readableStreamClose, createDeferredPromise, fullyReadBody, extractMimeType, utf8DecodeBytes } = require_util$6();
@@ -28870,7 +28992,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r\n\r\n`);
28870
28992
  };
28871
28993
  }));
28872
28994
  //#endregion
28873
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/client-h1.js
28995
+ //#region node_modules/undici/lib/dispatcher/client-h1.js
28874
28996
  var require_client_h1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
28875
28997
  var assert$19 = require("node:assert");
28876
28998
  var util = require_util$7();
@@ -29726,7 +29848,7 @@ var require_client_h1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
29726
29848
  module.exports = connectH1;
29727
29849
  }));
29728
29850
  //#endregion
29729
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/client-h2.js
29851
+ //#region node_modules/undici/lib/dispatcher/client-h2.js
29730
29852
  var require_client_h2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
29731
29853
  var assert$18 = require("node:assert");
29732
29854
  var { pipeline: pipeline$2 } = require("node:stream");
@@ -30112,7 +30234,7 @@ var require_client_h2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30112
30234
  module.exports = connectH2;
30113
30235
  }));
30114
30236
  //#endregion
30115
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/handler/redirect-handler.js
30237
+ //#region node_modules/undici/lib/handler/redirect-handler.js
30116
30238
  var require_redirect_handler = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30117
30239
  var util = require_util$7();
30118
30240
  var { kBodyUsed } = require_symbols$4();
@@ -30238,7 +30360,7 @@ var require_redirect_handler = /* @__PURE__ */ __commonJSMin(((exports, module)
30238
30360
  module.exports = RedirectHandler;
30239
30361
  }));
30240
30362
  //#endregion
30241
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/interceptor/redirect-interceptor.js
30363
+ //#region node_modules/undici/lib/interceptor/redirect-interceptor.js
30242
30364
  var require_redirect_interceptor = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30243
30365
  var RedirectHandler = require_redirect_handler();
30244
30366
  function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {
@@ -30258,7 +30380,7 @@ var require_redirect_interceptor = /* @__PURE__ */ __commonJSMin(((exports, modu
30258
30380
  module.exports = createRedirectInterceptor;
30259
30381
  }));
30260
30382
  //#endregion
30261
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/client.js
30383
+ //#region node_modules/undici/lib/dispatcher/client.js
30262
30384
  var require_client = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30263
30385
  var assert$16 = require("node:assert");
30264
30386
  var net = require("node:net");
@@ -30593,7 +30715,7 @@ var require_client = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30593
30715
  module.exports = Client;
30594
30716
  }));
30595
30717
  //#endregion
30596
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/fixed-queue.js
30718
+ //#region node_modules/undici/lib/dispatcher/fixed-queue.js
30597
30719
  var require_fixed_queue = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30598
30720
  var kSize = 2048;
30599
30721
  var kMask = kSize - 1;
@@ -30642,7 +30764,7 @@ var require_fixed_queue = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30642
30764
  };
30643
30765
  }));
30644
30766
  //#endregion
30645
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/pool-stats.js
30767
+ //#region node_modules/undici/lib/dispatcher/pool-stats.js
30646
30768
  var require_pool_stats = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30647
30769
  var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols$4();
30648
30770
  var kPool = Symbol("pool");
@@ -30672,7 +30794,7 @@ var require_pool_stats = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30672
30794
  module.exports = PoolStats;
30673
30795
  }));
30674
30796
  //#endregion
30675
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/pool-base.js
30797
+ //#region node_modules/undici/lib/dispatcher/pool-base.js
30676
30798
  var require_pool_base = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30677
30799
  var DispatcherBase = require_dispatcher_base();
30678
30800
  var FixedQueue = require_fixed_queue();
@@ -30806,7 +30928,7 @@ var require_pool_base = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30806
30928
  };
30807
30929
  }));
30808
30930
  //#endregion
30809
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/pool.js
30931
+ //#region node_modules/undici/lib/dispatcher/pool.js
30810
30932
  var require_pool = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30811
30933
  var { PoolBase, kClients, kNeedDrain, kAddClient, kGetDispatcher } = require_pool_base();
30812
30934
  var Client = require_client();
@@ -30867,7 +30989,7 @@ var require_pool = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30867
30989
  module.exports = Pool;
30868
30990
  }));
30869
30991
  //#endregion
30870
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/balanced-pool.js
30992
+ //#region node_modules/undici/lib/dispatcher/balanced-pool.js
30871
30993
  var require_balanced_pool = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30872
30994
  var { BalancedPoolMissingUpstreamError, InvalidArgumentError } = require_errors();
30873
30995
  var { PoolBase, kClients, kNeedDrain, kAddClient, kRemoveClient, kGetDispatcher } = require_pool_base();
@@ -30978,7 +31100,7 @@ var require_balanced_pool = /* @__PURE__ */ __commonJSMin(((exports, module) =>
30978
31100
  module.exports = BalancedPool;
30979
31101
  }));
30980
31102
  //#endregion
30981
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/agent.js
31103
+ //#region node_modules/undici/lib/dispatcher/agent.js
30982
31104
  var require_agent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
30983
31105
  var { InvalidArgumentError } = require_errors();
30984
31106
  var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols$4();
@@ -31058,7 +31180,7 @@ var require_agent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31058
31180
  module.exports = Agent;
31059
31181
  }));
31060
31182
  //#endregion
31061
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/proxy-agent.js
31183
+ //#region node_modules/undici/lib/dispatcher/proxy-agent.js
31062
31184
  var require_proxy_agent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31063
31185
  var { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols$4();
31064
31186
  var { URL: URL$1 } = require("node:url");
@@ -31256,7 +31378,7 @@ var require_proxy_agent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31256
31378
  module.exports = ProxyAgent;
31257
31379
  }));
31258
31380
  //#endregion
31259
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js
31381
+ //#region node_modules/undici/lib/dispatcher/env-http-proxy-agent.js
31260
31382
  var require_env_http_proxy_agent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31261
31383
  var DispatcherBase = require_dispatcher_base();
31262
31384
  var { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require_symbols$4();
@@ -31356,7 +31478,7 @@ var require_env_http_proxy_agent = /* @__PURE__ */ __commonJSMin(((exports, modu
31356
31478
  module.exports = EnvHttpProxyAgent;
31357
31479
  }));
31358
31480
  //#endregion
31359
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/handler/retry-handler.js
31481
+ //#region node_modules/undici/lib/handler/retry-handler.js
31360
31482
  var require_retry_handler = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31361
31483
  var assert$15 = require("node:assert");
31362
31484
  var { kRetryHandlerDefaultRetry } = require_symbols$4();
@@ -31578,7 +31700,7 @@ var require_retry_handler = /* @__PURE__ */ __commonJSMin(((exports, module) =>
31578
31700
  };
31579
31701
  }));
31580
31702
  //#endregion
31581
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/dispatcher/retry-agent.js
31703
+ //#region node_modules/undici/lib/dispatcher/retry-agent.js
31582
31704
  var require_retry_agent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31583
31705
  var Dispatcher = require_dispatcher();
31584
31706
  var RetryHandler = require_retry_handler();
@@ -31610,7 +31732,7 @@ var require_retry_agent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31610
31732
  module.exports = RetryAgent;
31611
31733
  }));
31612
31734
  //#endregion
31613
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/readable.js
31735
+ //#region node_modules/undici/lib/api/readable.js
31614
31736
  var require_readable = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31615
31737
  var assert$14 = require("node:assert");
31616
31738
  var { Readable: Readable$2 } = require("node:stream");
@@ -31838,7 +31960,7 @@ var require_readable = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31838
31960
  };
31839
31961
  }));
31840
31962
  //#endregion
31841
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/util.js
31963
+ //#region node_modules/undici/lib/api/util.js
31842
31964
  var require_util$5 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31843
31965
  var assert$13 = require("node:assert");
31844
31966
  var { ResponseStatusCodeError } = require_errors();
@@ -31891,7 +32013,7 @@ var require_util$5 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31891
32013
  };
31892
32014
  }));
31893
32015
  //#endregion
31894
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/api-request.js
32016
+ //#region node_modules/undici/lib/api/api-request.js
31895
32017
  var require_api_request = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31896
32018
  var assert$12 = require("node:assert");
31897
32019
  var { Readable } = require_readable();
@@ -32043,7 +32165,7 @@ var require_api_request = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32043
32165
  module.exports.RequestHandler = RequestHandler;
32044
32166
  }));
32045
32167
  //#endregion
32046
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/abort-signal.js
32168
+ //#region node_modules/undici/lib/api/abort-signal.js
32047
32169
  var require_abort_signal = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32048
32170
  var { addAbortListener } = require_util$7();
32049
32171
  var { RequestAbortedError } = require_errors();
@@ -32082,7 +32204,7 @@ var require_abort_signal = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32082
32204
  };
32083
32205
  }));
32084
32206
  //#endregion
32085
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/api-stream.js
32207
+ //#region node_modules/undici/lib/api/api-stream.js
32086
32208
  var require_api_stream = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32087
32209
  var assert$11 = require("node:assert");
32088
32210
  var { finished: finished$1, PassThrough: PassThrough$1 } = require("node:stream");
@@ -32227,7 +32349,7 @@ var require_api_stream = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32227
32349
  module.exports = stream;
32228
32350
  }));
32229
32351
  //#endregion
32230
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/api-pipeline.js
32352
+ //#region node_modules/undici/lib/api/api-pipeline.js
32231
32353
  var require_api_pipeline = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32232
32354
  var { Readable: Readable$1, Duplex, PassThrough } = require("node:stream");
32233
32355
  var { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = require_errors();
@@ -32395,7 +32517,7 @@ var require_api_pipeline = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32395
32517
  module.exports = pipeline;
32396
32518
  }));
32397
32519
  //#endregion
32398
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/api-upgrade.js
32520
+ //#region node_modules/undici/lib/api/api-upgrade.js
32399
32521
  var require_api_upgrade = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32400
32522
  var { InvalidArgumentError, SocketError } = require_errors();
32401
32523
  var { AsyncResource: AsyncResource$1 } = require("node:async_hooks");
@@ -32474,7 +32596,7 @@ var require_api_upgrade = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32474
32596
  module.exports = upgrade;
32475
32597
  }));
32476
32598
  //#endregion
32477
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/api-connect.js
32599
+ //#region node_modules/undici/lib/api/api-connect.js
32478
32600
  var require_api_connect = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32479
32601
  var assert$8 = require("node:assert");
32480
32602
  var { AsyncResource } = require("node:async_hooks");
@@ -32552,7 +32674,7 @@ var require_api_connect = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32552
32674
  module.exports = connect;
32553
32675
  }));
32554
32676
  //#endregion
32555
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/api/index.js
32677
+ //#region node_modules/undici/lib/api/index.js
32556
32678
  var require_api = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32557
32679
  module.exports.request = require_api_request();
32558
32680
  module.exports.stream = require_api_stream();
@@ -32561,7 +32683,7 @@ var require_api = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32561
32683
  module.exports.connect = require_api_connect();
32562
32684
  }));
32563
32685
  //#endregion
32564
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/mock-errors.js
32686
+ //#region node_modules/undici/lib/mock/mock-errors.js
32565
32687
  var require_mock_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32566
32688
  var { UndiciError } = require_errors();
32567
32689
  var kMockNotMatchedError = Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");
@@ -32580,7 +32702,7 @@ var require_mock_errors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32580
32702
  } };
32581
32703
  }));
32582
32704
  //#endregion
32583
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/mock-symbols.js
32705
+ //#region node_modules/undici/lib/mock/mock-symbols.js
32584
32706
  var require_mock_symbols = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32585
32707
  module.exports = {
32586
32708
  kAgent: Symbol("agent"),
@@ -32605,7 +32727,7 @@ var require_mock_symbols = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32605
32727
  };
32606
32728
  }));
32607
32729
  //#endregion
32608
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/mock-utils.js
32730
+ //#region node_modules/undici/lib/mock/mock-utils.js
32609
32731
  var require_mock_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32610
32732
  var { MockNotMatchedError } = require_mock_errors();
32611
32733
  var { kDispatches, kMockAgent, kOriginalDispatch, kOrigin, kGetNetConnect } = require_mock_symbols();
@@ -32842,7 +32964,7 @@ var require_mock_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32842
32964
  };
32843
32965
  }));
32844
32966
  //#endregion
32845
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/mock-interceptor.js
32967
+ //#region node_modules/undici/lib/mock/mock-interceptor.js
32846
32968
  var require_mock_interceptor = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32847
32969
  var { getResponseData, buildKey, addMockDispatch } = require_mock_utils();
32848
32970
  var { kDispatches, kDispatchKey, kDefaultHeaders, kDefaultTrailers, kContentLength, kMockDispatch } = require_mock_symbols();
@@ -32982,7 +33104,7 @@ var require_mock_interceptor = /* @__PURE__ */ __commonJSMin(((exports, module)
32982
33104
  module.exports.MockScope = MockScope;
32983
33105
  }));
32984
33106
  //#endregion
32985
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/mock-client.js
33107
+ //#region node_modules/undici/lib/mock/mock-client.js
32986
33108
  var require_mock_client = /* @__PURE__ */ __commonJSMin(((exports, module) => {
32987
33109
  var { promisify: promisify$1 } = require("node:util");
32988
33110
  var Client = require_client();
@@ -33025,7 +33147,7 @@ var require_mock_client = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33025
33147
  module.exports = MockClient;
33026
33148
  }));
33027
33149
  //#endregion
33028
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/mock-pool.js
33150
+ //#region node_modules/undici/lib/mock/mock-pool.js
33029
33151
  var require_mock_pool = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33030
33152
  var { promisify } = require("node:util");
33031
33153
  var Pool = require_pool();
@@ -33068,7 +33190,7 @@ var require_mock_pool = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33068
33190
  module.exports = MockPool;
33069
33191
  }));
33070
33192
  //#endregion
33071
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/pluralizer.js
33193
+ //#region node_modules/undici/lib/mock/pluralizer.js
33072
33194
  var require_pluralizer = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33073
33195
  var singulars = {
33074
33196
  pronoun: "it",
@@ -33100,7 +33222,7 @@ var require_pluralizer = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33100
33222
  };
33101
33223
  }));
33102
33224
  //#endregion
33103
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/pending-interceptors-formatter.js
33225
+ //#region node_modules/undici/lib/mock/pending-interceptors-formatter.js
33104
33226
  var require_pending_interceptors_formatter = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33105
33227
  var { Transform: Transform$1 } = require("node:stream");
33106
33228
  var { Console } = require("node:console");
@@ -33135,7 +33257,7 @@ var require_pending_interceptors_formatter = /* @__PURE__ */ __commonJSMin(((exp
33135
33257
  };
33136
33258
  }));
33137
33259
  //#endregion
33138
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/mock/mock-agent.js
33260
+ //#region node_modules/undici/lib/mock/mock-agent.js
33139
33261
  var require_mock_agent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33140
33262
  var { kClients } = require_symbols$4();
33141
33263
  var Agent = require_agent();
@@ -33238,7 +33360,7 @@ ${pendingInterceptorsFormatter.format(pending)}
33238
33360
  module.exports = MockAgent;
33239
33361
  }));
33240
33362
  //#endregion
33241
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/global.js
33363
+ //#region node_modules/undici/lib/global.js
33242
33364
  var require_global = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33243
33365
  var globalDispatcher = Symbol.for("undici.globalDispatcher.1");
33244
33366
  var { InvalidArgumentError } = require_errors();
@@ -33262,7 +33384,7 @@ var require_global = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33262
33384
  };
33263
33385
  }));
33264
33386
  //#endregion
33265
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/handler/decorator-handler.js
33387
+ //#region node_modules/undici/lib/handler/decorator-handler.js
33266
33388
  var require_decorator_handler = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33267
33389
  module.exports = class DecoratorHandler {
33268
33390
  #handler;
@@ -33297,7 +33419,7 @@ var require_decorator_handler = /* @__PURE__ */ __commonJSMin(((exports, module)
33297
33419
  };
33298
33420
  }));
33299
33421
  //#endregion
33300
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/interceptor/redirect.js
33422
+ //#region node_modules/undici/lib/interceptor/redirect.js
33301
33423
  var require_redirect = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33302
33424
  var RedirectHandler = require_redirect_handler();
33303
33425
  module.exports = (opts) => {
@@ -33312,7 +33434,7 @@ var require_redirect = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33312
33434
  };
33313
33435
  }));
33314
33436
  //#endregion
33315
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/interceptor/retry.js
33437
+ //#region node_modules/undici/lib/interceptor/retry.js
33316
33438
  var require_retry = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33317
33439
  var RetryHandler = require_retry_handler();
33318
33440
  module.exports = (globalOpts) => {
@@ -33333,7 +33455,7 @@ var require_retry = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33333
33455
  };
33334
33456
  }));
33335
33457
  //#endregion
33336
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/interceptor/dump.js
33458
+ //#region node_modules/undici/lib/interceptor/dump.js
33337
33459
  var require_dump = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33338
33460
  var util = require_util$7();
33339
33461
  var { InvalidArgumentError, RequestAbortedError } = require_errors();
@@ -33400,7 +33522,7 @@ var require_dump = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33400
33522
  module.exports = createDumpInterceptor;
33401
33523
  }));
33402
33524
  //#endregion
33403
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/interceptor/dns.js
33525
+ //#region node_modules/undici/lib/interceptor/dns.js
33404
33526
  var require_dns = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33405
33527
  var { isIP } = require("node:net");
33406
33528
  var { lookup } = require("node:dns");
@@ -33613,7 +33735,7 @@ var require_dns = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33613
33735
  };
33614
33736
  }));
33615
33737
  //#endregion
33616
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/headers.js
33738
+ //#region node_modules/undici/lib/web/fetch/headers.js
33617
33739
  var require_headers = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33618
33740
  var { kConstruct } = require_symbols$4();
33619
33741
  var { kEnumerableProperty } = require_util$7();
@@ -33978,7 +34100,7 @@ var require_headers = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33978
34100
  };
33979
34101
  }));
33980
34102
  //#endregion
33981
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/response.js
34103
+ //#region node_modules/undici/lib/web/fetch/response.js
33982
34104
  var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => {
33983
34105
  var { Headers, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers();
33984
34106
  var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body();
@@ -34291,7 +34413,7 @@ var require_response = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34291
34413
  };
34292
34414
  }));
34293
34415
  //#endregion
34294
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/dispatcher-weakref.js
34416
+ //#region node_modules/undici/lib/web/fetch/dispatcher-weakref.js
34295
34417
  var require_dispatcher_weakref = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34296
34418
  var { kConnected, kSize } = require_symbols$4();
34297
34419
  var CompatWeakRef = class {
@@ -34328,7 +34450,7 @@ var require_dispatcher_weakref = /* @__PURE__ */ __commonJSMin(((exports, module
34328
34450
  };
34329
34451
  }));
34330
34452
  //#endregion
34331
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/request.js
34453
+ //#region node_modules/undici/lib/web/fetch/request.js
34332
34454
  var require_request = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34333
34455
  var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body();
34334
34456
  var { Headers, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers();
@@ -34837,7 +34959,7 @@ var require_request = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34837
34959
  };
34838
34960
  }));
34839
34961
  //#endregion
34840
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fetch/index.js
34962
+ //#region node_modules/undici/lib/web/fetch/index.js
34841
34963
  var require_fetch = /* @__PURE__ */ __commonJSMin(((exports, module) => {
34842
34964
  var { makeNetworkError, makeAppropriateNetworkError, filterResponse, makeResponse, fromInnerResponse } = require_response();
34843
34965
  var { HeadersList } = require_headers();
@@ -35535,7 +35657,7 @@ var require_fetch = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35535
35657
  };
35536
35658
  }));
35537
35659
  //#endregion
35538
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fileapi/symbols.js
35660
+ //#region node_modules/undici/lib/web/fileapi/symbols.js
35539
35661
  var require_symbols$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35540
35662
  module.exports = {
35541
35663
  kState: Symbol("FileReader state"),
@@ -35547,7 +35669,7 @@ var require_symbols$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35547
35669
  };
35548
35670
  }));
35549
35671
  //#endregion
35550
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fileapi/progressevent.js
35672
+ //#region node_modules/undici/lib/web/fileapi/progressevent.js
35551
35673
  var require_progressevent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35552
35674
  var { webidl } = require_webidl();
35553
35675
  var kState = Symbol("ProgressEvent state");
@@ -35613,7 +35735,7 @@ var require_progressevent = /* @__PURE__ */ __commonJSMin(((exports, module) =>
35613
35735
  module.exports = { ProgressEvent };
35614
35736
  }));
35615
35737
  //#endregion
35616
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fileapi/encoding.js
35738
+ //#region node_modules/undici/lib/web/fileapi/encoding.js
35617
35739
  var require_encoding = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35618
35740
  /**
35619
35741
  * @see https://encoding.spec.whatwg.org/#concept-encoding-get
@@ -35855,7 +35977,7 @@ var require_encoding = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35855
35977
  module.exports = { getEncoding };
35856
35978
  }));
35857
35979
  //#endregion
35858
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fileapi/util.js
35980
+ //#region node_modules/undici/lib/web/fileapi/util.js
35859
35981
  var require_util$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35860
35982
  var { kState, kError, kResult, kAborted, kLastProgressEventFired } = require_symbols$2();
35861
35983
  var { ProgressEvent } = require_progressevent();
@@ -36031,7 +36153,7 @@ var require_util$4 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36031
36153
  };
36032
36154
  }));
36033
36155
  //#endregion
36034
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/fileapi/filereader.js
36156
+ //#region node_modules/undici/lib/web/fileapi/filereader.js
36035
36157
  var require_filereader = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36036
36158
  var { staticPropertyDescriptors, readOperation, fireAProgressEvent } = require_util$4();
36037
36159
  var { kState, kError, kResult, kEvents, kAborted } = require_symbols$2();
@@ -36244,12 +36366,12 @@ var require_filereader = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36244
36366
  module.exports = { FileReader };
36245
36367
  }));
36246
36368
  //#endregion
36247
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/cache/symbols.js
36369
+ //#region node_modules/undici/lib/web/cache/symbols.js
36248
36370
  var require_symbols$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36249
36371
  module.exports = { kConstruct: require_symbols$4().kConstruct };
36250
36372
  }));
36251
36373
  //#endregion
36252
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/cache/util.js
36374
+ //#region node_modules/undici/lib/web/cache/util.js
36253
36375
  var require_util$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36254
36376
  var assert$3 = require("node:assert");
36255
36377
  var { URLSerializer } = require_data_url();
@@ -36283,7 +36405,7 @@ var require_util$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36283
36405
  };
36284
36406
  }));
36285
36407
  //#endregion
36286
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/cache/cache.js
36408
+ //#region node_modules/undici/lib/web/cache/cache.js
36287
36409
  var require_cache = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36288
36410
  var { kConstruct } = require_symbols$1();
36289
36411
  var { urlEquals, getFieldValues } = require_util$3();
@@ -36732,7 +36854,7 @@ var require_cache = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36732
36854
  module.exports = { Cache };
36733
36855
  }));
36734
36856
  //#endregion
36735
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/cache/cachestorage.js
36857
+ //#region node_modules/undici/lib/web/cache/cachestorage.js
36736
36858
  var require_cachestorage = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36737
36859
  var { kConstruct } = require_symbols$1();
36738
36860
  var { Cache } = require_cache();
@@ -36822,7 +36944,7 @@ var require_cachestorage = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36822
36944
  module.exports = { CacheStorage };
36823
36945
  }));
36824
36946
  //#endregion
36825
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/cookies/constants.js
36947
+ //#region node_modules/undici/lib/web/cookies/constants.js
36826
36948
  var require_constants$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36827
36949
  module.exports = {
36828
36950
  maxAttributeValueSize: 1024,
@@ -36830,7 +36952,7 @@ var require_constants$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36830
36952
  };
36831
36953
  }));
36832
36954
  //#endregion
36833
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/cookies/util.js
36955
+ //#region node_modules/undici/lib/web/cookies/util.js
36834
36956
  var require_util$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
36835
36957
  /**
36836
36958
  * @param {string} value
@@ -37024,7 +37146,7 @@ var require_util$2 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37024
37146
  };
37025
37147
  }));
37026
37148
  //#endregion
37027
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/cookies/parse.js
37149
+ //#region node_modules/undici/lib/web/cookies/parse.js
37028
37150
  var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37029
37151
  var { maxNameValuePairSize, maxAttributeValueSize } = require_constants$1();
37030
37152
  var { isCTLExcludingHtab } = require_util$2();
@@ -37126,7 +37248,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37126
37248
  };
37127
37249
  }));
37128
37250
  //#endregion
37129
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/cookies/index.js
37251
+ //#region node_modules/undici/lib/web/cookies/index.js
37130
37252
  var require_cookies = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37131
37253
  var { parseSetCookie } = require_parse();
37132
37254
  var { stringify } = require_util$2();
@@ -37277,7 +37399,7 @@ var require_cookies = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37277
37399
  };
37278
37400
  }));
37279
37401
  //#endregion
37280
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/events.js
37402
+ //#region node_modules/undici/lib/web/websocket/events.js
37281
37403
  var require_events = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37282
37404
  var { webidl } = require_webidl();
37283
37405
  var { kEnumerableProperty } = require_util$7();
@@ -37540,7 +37662,7 @@ var require_events = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37540
37662
  };
37541
37663
  }));
37542
37664
  //#endregion
37543
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/constants.js
37665
+ //#region node_modules/undici/lib/web/websocket/constants.js
37544
37666
  var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37545
37667
  module.exports = {
37546
37668
  uid: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11",
@@ -37585,7 +37707,7 @@ var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37585
37707
  };
37586
37708
  }));
37587
37709
  //#endregion
37588
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/symbols.js
37710
+ //#region node_modules/undici/lib/web/websocket/symbols.js
37589
37711
  var require_symbols = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37590
37712
  module.exports = {
37591
37713
  kWebSocketURL: Symbol("url"),
@@ -37599,7 +37721,7 @@ var require_symbols = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37599
37721
  };
37600
37722
  }));
37601
37723
  //#endregion
37602
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/util.js
37724
+ //#region node_modules/undici/lib/web/websocket/util.js
37603
37725
  var require_util$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37604
37726
  var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols();
37605
37727
  var { states, opcodes } = require_constants();
@@ -37781,7 +37903,7 @@ var require_util$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37781
37903
  };
37782
37904
  }));
37783
37905
  //#endregion
37784
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/frame.js
37906
+ //#region node_modules/undici/lib/web/websocket/frame.js
37785
37907
  var require_frame = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37786
37908
  var { maxUnsigned16Bit } = require_constants();
37787
37909
  var BUFFER_SIZE = 16386;
@@ -37853,7 +37975,7 @@ var require_frame = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37853
37975
  module.exports = { WebsocketFrameSend };
37854
37976
  }));
37855
37977
  //#endregion
37856
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/connection.js
37978
+ //#region node_modules/undici/lib/web/websocket/connection.js
37857
37979
  var require_connection = /* @__PURE__ */ __commonJSMin(((exports, module) => {
37858
37980
  var { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require_constants();
37859
37981
  var { kReadyState, kSentClose, kByteParser, kReceivedClose, kResponse } = require_symbols();
@@ -38018,7 +38140,7 @@ var require_connection = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38018
38140
  };
38019
38141
  }));
38020
38142
  //#endregion
38021
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/permessage-deflate.js
38143
+ //#region node_modules/undici/lib/web/websocket/permessage-deflate.js
38022
38144
  var require_permessage_deflate = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38023
38145
  var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require("node:zlib");
38024
38146
  var { isValidClientWindowBits } = require_util$1();
@@ -38097,7 +38219,7 @@ var require_permessage_deflate = /* @__PURE__ */ __commonJSMin(((exports, module
38097
38219
  module.exports = { PerMessageDeflate };
38098
38220
  }));
38099
38221
  //#endregion
38100
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/receiver.js
38222
+ //#region node_modules/undici/lib/web/websocket/receiver.js
38101
38223
  var require_receiver = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38102
38224
  var { Writable } = require("node:stream");
38103
38225
  var assert = require("node:assert");
@@ -38414,7 +38536,7 @@ var require_receiver = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38414
38536
  module.exports = { ByteParser };
38415
38537
  }));
38416
38538
  //#endregion
38417
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/sender.js
38539
+ //#region node_modules/undici/lib/web/websocket/sender.js
38418
38540
  var require_sender = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38419
38541
  var { WebsocketFrameSend } = require_frame();
38420
38542
  var { opcodes, sendHints } = require_constants();
@@ -38494,7 +38616,7 @@ var require_sender = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38494
38616
  module.exports = { SendQueue };
38495
38617
  }));
38496
38618
  //#endregion
38497
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/websocket/websocket.js
38619
+ //#region node_modules/undici/lib/web/websocket/websocket.js
38498
38620
  var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38499
38621
  var { webidl } = require_webidl();
38500
38622
  var { URLSerializer } = require_data_url();
@@ -38795,7 +38917,7 @@ var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38795
38917
  module.exports = { WebSocket };
38796
38918
  }));
38797
38919
  //#endregion
38798
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/eventsource/util.js
38920
+ //#region node_modules/undici/lib/web/eventsource/util.js
38799
38921
  var require_util = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38800
38922
  /**
38801
38923
  * Checks if the given value is a valid LastEventId.
@@ -38827,7 +38949,7 @@ var require_util = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38827
38949
  };
38828
38950
  }));
38829
38951
  //#endregion
38830
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/eventsource/eventsource-stream.js
38952
+ //#region node_modules/undici/lib/web/eventsource/eventsource-stream.js
38831
38953
  var require_eventsource_stream = /* @__PURE__ */ __commonJSMin(((exports, module) => {
38832
38954
  var { Transform } = require("node:stream");
38833
38955
  var { isASCIINumber, isValidLastEventId } = require_util();
@@ -39049,7 +39171,7 @@ var require_eventsource_stream = /* @__PURE__ */ __commonJSMin(((exports, module
39049
39171
  module.exports = { EventSourceStream };
39050
39172
  }));
39051
39173
  //#endregion
39052
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/lib/web/eventsource/eventsource.js
39174
+ //#region node_modules/undici/lib/web/eventsource/eventsource.js
39053
39175
  var require_eventsource = /* @__PURE__ */ __commonJSMin(((exports, module) => {
39054
39176
  var { pipeline } = require("node:stream");
39055
39177
  var { fetching } = require_fetch();
@@ -39362,7 +39484,7 @@ var require_eventsource = /* @__PURE__ */ __commonJSMin(((exports, module) => {
39362
39484
  };
39363
39485
  }));
39364
39486
  //#endregion
39365
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/undici/index.js
39487
+ //#region node_modules/undici/index.js
39366
39488
  var require_undici = /* @__PURE__ */ __commonJSMin(((exports, module) => {
39367
39489
  var Client = require_client();
39368
39490
  var Dispatcher = require_dispatcher();
@@ -39487,7 +39609,7 @@ var require_undici = /* @__PURE__ */ __commonJSMin(((exports, module) => {
39487
39609
  module.exports.EventSource = EventSource;
39488
39610
  }));
39489
39611
  //#endregion
39490
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/helpers/util.js
39612
+ //#region node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/helpers/util.js
39491
39613
  var util;
39492
39614
  (function(util) {
39493
39615
  util.assertEqual = (_) => {};
@@ -39583,7 +39705,7 @@ var getParsedType = (data) => {
39583
39705
  }
39584
39706
  };
39585
39707
  //#endregion
39586
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/ZodError.js
39708
+ //#region node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/ZodError.js
39587
39709
  var ZodIssueCode = util.arrayToEnum([
39588
39710
  "invalid_type",
39589
39711
  "invalid_literal",
@@ -39682,7 +39804,7 @@ ZodError.create = (issues) => {
39682
39804
  return new ZodError(issues);
39683
39805
  };
39684
39806
  //#endregion
39685
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/locales/en.js
39807
+ //#region node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/locales/en.js
39686
39808
  var errorMap = (issue, _ctx) => {
39687
39809
  let message;
39688
39810
  switch (issue.code) {
@@ -39759,13 +39881,13 @@ var errorMap = (issue, _ctx) => {
39759
39881
  return { message };
39760
39882
  };
39761
39883
  //#endregion
39762
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/errors.js
39884
+ //#region node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/errors.js
39763
39885
  var overrideErrorMap = errorMap;
39764
39886
  function getErrorMap() {
39765
39887
  return overrideErrorMap;
39766
39888
  }
39767
39889
  //#endregion
39768
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/helpers/parseUtil.js
39890
+ //#region node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/helpers/parseUtil.js
39769
39891
  var makeIssue = (params) => {
39770
39892
  const { data, path, errorMaps, issueData } = params;
39771
39893
  const fullPath = [...path, ...issueData.path || []];
@@ -39869,14 +39991,14 @@ var isDirty = (x) => x.status === "dirty";
39869
39991
  var isValid = (x) => x.status === "valid";
39870
39992
  var isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise;
39871
39993
  //#endregion
39872
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/helpers/errorUtil.js
39994
+ //#region node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/helpers/errorUtil.js
39873
39995
  var errorUtil;
39874
39996
  (function(errorUtil) {
39875
39997
  errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {};
39876
39998
  errorUtil.toString = (message) => typeof message === "string" ? message : message?.message;
39877
39999
  })(errorUtil || (errorUtil = {}));
39878
40000
  //#endregion
39879
- //#region ../../node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/types.js
40001
+ //#region node_modules/@apocaliss92/nodewitt/node_modules/zod/v3/types.js
39880
40002
  var ParseInputLazyPath = class {
39881
40003
  constructor(parent, value, path, key) {
39882
40004
  this._cachedPath = [];
@@ -43028,7 +43150,7 @@ ZodNullable.create;
43028
43150
  ZodEffects.createWithPreprocess;
43029
43151
  ZodPipeline.create;
43030
43152
  //#endregion
43031
- //#region ../../node_modules/@apocaliss92/nodewitt/dist/index.js
43153
+ //#region node_modules/@apocaliss92/nodewitt/dist/index.js
43032
43154
  var import_undici = require_undici();
43033
43155
  var DEFAULT_PORT = 80;
43034
43156
  var DEFAULT_TIMEOUT_MS = 3e4;
@@ -43982,6 +44104,71 @@ var fixed = {
43982
44104
  combo: [...COMBO_KEYS],
43983
44105
  co2_pm: [...COMBO_KEYS]
43984
44106
  };
44107
+ var WEATHER_STATION_MODELS = /* @__PURE__ */ new Set([
44108
+ "wh69",
44109
+ "wh65",
44110
+ "ws90",
44111
+ "wh80",
44112
+ "ws80",
44113
+ "wh90",
44114
+ "wh77",
44115
+ "wh85",
44116
+ "ws85",
44117
+ "wh68",
44118
+ "weather_station",
44119
+ "weather_station_wh69",
44120
+ "weather_station_ws90",
44121
+ "weather_station_wh90",
44122
+ "weather_station_wh77"
44123
+ ]);
44124
+ var CHANNEL_SENSOR_MODELS = /* @__PURE__ */ new Set([
44125
+ "wh31",
44126
+ "wh41",
44127
+ "wh52",
44128
+ "wh51",
44129
+ "wh55",
44130
+ "wh34",
44131
+ "wn34",
44132
+ "wh35",
44133
+ "wn35",
44134
+ "wh54",
44135
+ "temp_hum",
44136
+ "pm25",
44137
+ "soil",
44138
+ "soil_ec",
44139
+ "leak",
44140
+ "temp_only",
44141
+ "leaf_wetness",
44142
+ "lds"
44143
+ ]);
44144
+ var EXTERNAL_MODELS = /* @__PURE__ */ new Set([
44145
+ "wh57",
44146
+ "wh40",
44147
+ "wh45",
44148
+ "wh46",
44149
+ "lightning",
44150
+ "rain",
44151
+ "combo",
44152
+ "co2_pm"
44153
+ ]);
44154
+ var GATEWAY_MODELS = /* @__PURE__ */ new Set([
44155
+ "wh25",
44156
+ "indoor_station",
44157
+ "wh26",
44158
+ "wn32",
44159
+ "outdoor_temp_hum",
44160
+ "wn38",
44161
+ "bgt"
44162
+ ]);
44163
+ function categoryForModel(model) {
44164
+ const key = norm(model ?? "");
44165
+ if (key === "") return "gateway";
44166
+ if (WEATHER_STATION_MODELS.has(key)) return "weather-station";
44167
+ if (CHANNEL_SENSOR_MODELS.has(key)) return "channel-sensor";
44168
+ if (EXTERNAL_MODELS.has(key)) return "external";
44169
+ if (GATEWAY_MODELS.has(key)) return "gateway";
44170
+ return "gateway";
44171
+ }
43985
44172
  function liveDataKeysForModel(model, channel) {
43986
44173
  const key = norm(model);
43987
44174
  const channelBuilder = Object.prototype.hasOwnProperty.call(channelized, key) ? channelized[key] : void 0;
@@ -44074,6 +44261,7 @@ var LocalPoller = class {
44074
44261
  scanTimer;
44075
44262
  mappingTimer;
44076
44263
  started = false;
44264
+ mappingPrimed = false;
44077
44265
  gatewayTempUnit = "C";
44078
44266
  stationInfo = {};
44079
44267
  /** Gateway identity (model/firmware) captured from the last `/get_version`. Best-effort. */
@@ -44110,6 +44298,7 @@ var LocalPoller = class {
44110
44298
  this.scanTimer = void 0;
44111
44299
  this.mappingTimer = void 0;
44112
44300
  this.started = false;
44301
+ this.mappingPrimed = false;
44113
44302
  }
44114
44303
  /** Re-read the gateway unit + sensor list and rebuild the live-key -> hardware-id mapping. Offline-tolerant. */
44115
44304
  async refreshMapping() {
@@ -44124,6 +44313,7 @@ var LocalPoller = class {
44124
44313
  };
44125
44314
  const sensors = await this.opts.endpoints.getAllSensors();
44126
44315
  this.mapper.updateMapping(sensors);
44316
+ this.mappingPrimed = true;
44127
44317
  } catch (error) {
44128
44318
  this.opts.onError(error);
44129
44319
  }
@@ -44131,12 +44321,14 @@ var LocalPoller = class {
44131
44321
  /** Fetch + decode + resolve a single live-data snapshot, then emit it. Offline-tolerant. */
44132
44322
  async poll() {
44133
44323
  try {
44324
+ if (!this.mappingPrimed) await this.refreshMapping();
44134
44325
  const raw = await this.opts.endpoints.getLiveData();
44135
44326
  this.opts.onRawFrame?.(raw);
44136
44327
  const resolved = decodeLiveData(raw, this.mapper, {}, this.gatewayTempUnit).map((reading) => ({
44137
44328
  ...reading,
44138
44329
  hardwareId: GATEWAY_KEYS.has(reading.key) ? void 0 : reading.forceHardwareId ?? this.mapper.getHardwareId(reading.key)
44139
44330
  }));
44331
+ if (!this.mappingPrimed) return;
44140
44332
  this.opts.onReadings(resolved);
44141
44333
  } catch (error) {
44142
44334
  this.opts.onError(error);
@@ -44740,11 +44932,13 @@ var Station = class {
44740
44932
  const info = lookup.getSensorInfoForKey(r.key) ?? (owner !== void 0 ? lookup.getSensorInfo(owner) : void 0);
44741
44933
  const id = `${owner ?? GATEWAY_OWNER}:${r.key}`;
44742
44934
  const signal = signalToNumber(info?.signal);
44935
+ const category = categoryForModel(info?.model);
44743
44936
  this.upsert(id, {
44744
44937
  id,
44745
44938
  ...owner !== void 0 ? { hardwareId: owner } : {},
44746
44939
  ...info?.model ? { model: info.model } : {},
44747
44940
  ...info?.channel !== void 0 ? { channel: info.channel } : {},
44941
+ category,
44748
44942
  ...cls.name !== void 0 ? { name: cls.name } : {},
44749
44943
  quantity: cls.quantity,
44750
44944
  value: r.value,
@@ -44776,9 +44970,11 @@ var Station = class {
44776
44970
  if (cls.kind === "battery") continue;
44777
44971
  if (cls.kind !== "measurement") continue;
44778
44972
  const id = `${this.pushOwner(passkey, r.channel)}:${r.key}`;
44973
+ const category = r.channel !== void 0 ? "channel-sensor" : "gateway";
44779
44974
  this.upsert(id, {
44780
44975
  id,
44781
44976
  ...r.channel !== void 0 ? { channel: r.channel } : {},
44977
+ category,
44782
44978
  ...cls.name !== void 0 ? { name: cls.name } : {},
44783
44979
  quantity: cls.quantity,
44784
44980
  value: r.value,
@@ -45246,502 +45442,52 @@ var EcowittIntegrationManager = class {
45246
45442
  await this.start();
45247
45443
  }
45248
45444
  };
45249
- /** True when two configs are the "same connection" (no facade rebuild needed). */
45250
- function sameConnection(a, b) {
45251
- if (a === null || b === null) return false;
45252
- if (a.transport !== b.transport) return false;
45253
- if (a.transport === "local" && b.transport === "local") return a.host === b.host && a.port === b.port && a.password === b.password && a.pollIntervalMs === b.pollIntervalMs && a.mappingIntervalMs === b.mappingIntervalMs;
45254
- if (a.transport === "listener" && b.transport === "listener") return a.listenPort === b.listenPort && a.listenHost === b.listenHost;
45255
- return false;
45256
- }
45257
45445
  //#endregion
45258
45446
  //#region src/ecowitt-gateway.ts
45259
45447
  /**
45260
- * Per-broker registry that device classes use to reach the live {@link Ecowitt}
45261
- * facade (and its current sensor snapshot) for a given gateway.
45448
+ * Per-gateway registry that device classes use to reach the live {@link Ecowitt}
45449
+ * client (and its current sensor snapshot) for a given gateway. Keyed on the
45450
+ * gateway {@link import('@camstack/types').DeviceType.Hub} device's `stableId`
45451
+ * (standalone mode — the connection lives on the gateway device, not a broker).
45262
45452
  *
45263
- * Because the nodewitt facade's `stop()` is TERMINAL, the integration manager
45264
- * recreates the facade on reconnect / settings change and re-publishes it here.
45265
- * Device classes always read through the resolver, so they transparently pick up
45266
- * the new facade. Mirrors the Homematic / Dreame in-process facade resolver.
45453
+ * Because the nodewitt client's `stop()` is TERMINAL, the gateway device
45454
+ * recreates the client on reconnect / settings change and re-publishes it here.
45455
+ * Container + sensor children always read through the resolver, so they
45456
+ * transparently pick up the new client. Mirrors the Homematic / Dreame in-process
45457
+ * facade resolver.
45267
45458
  */
45268
45459
  var EcowittFacadeResolver = class {
45269
45460
  #facades = /* @__PURE__ */ new Map();
45270
- /** Publish or remove the facade for a broker id. `null` removes the entry. */
45271
- set(brokerId, facade) {
45461
+ /** Publish or remove the client for a gateway id. `null` removes the entry. */
45462
+ set(gatewayId, facade) {
45272
45463
  if (facade === null) {
45273
- this.#facades.delete(brokerId);
45464
+ this.#facades.delete(gatewayId);
45274
45465
  return;
45275
45466
  }
45276
- this.#facades.set(brokerId, facade);
45467
+ this.#facades.set(gatewayId, facade);
45277
45468
  }
45278
- /** The live facade for a broker id, or null when unknown / stopped. */
45279
- get(brokerId) {
45280
- return this.#facades.get(brokerId) ?? null;
45469
+ /** The live client for a gateway id, or null when unknown / stopped. */
45470
+ get(gatewayId) {
45471
+ return this.#facades.get(gatewayId) ?? null;
45281
45472
  }
45282
- /** All current sensors for a broker's gateway, or [] when unknown. */
45283
- getSensors(brokerId) {
45284
- return this.#facades.get(brokerId)?.getSensors() ?? [];
45473
+ /** All current sensors for a gateway, or [] when unknown. */
45474
+ getSensors(gatewayId) {
45475
+ return this.#facades.get(gatewayId)?.getSensors() ?? [];
45285
45476
  }
45286
- /** Resolve a single sensor by its stable id for a broker, or null. */
45287
- getSensor(brokerId, sensorId) {
45288
- return this.getSensors(brokerId).find((s) => s.id === sensorId) ?? null;
45477
+ /** Resolve a single sensor by its stable id for a gateway, or null. */
45478
+ getSensor(gatewayId, sensorId) {
45479
+ return this.getSensors(gatewayId).find((s) => s.id === sensorId) ?? null;
45289
45480
  }
45290
- /** Remove all registered facades (called on full shutdown). */
45481
+ /** Remove all registered clients (called on full shutdown). */
45291
45482
  clear() {
45292
45483
  this.#facades.clear();
45293
45484
  }
45294
45485
  };
45295
- /** The single in-process per-broker facade resolver shared between the registry
45296
- * and device instances. */
45486
+ /** The single in-process per-gateway client resolver shared between the gateway
45487
+ * device and its container / sensor children. */
45297
45488
  var ecowittFacades = new EcowittFacadeResolver();
45298
45489
  //#endregion
45299
- //#region src/ecowitt-broker-registry.ts
45300
- /**
45301
- * Manages N live Ecowitt gateway connections ("brokers"), each backed by an
45302
- * {@link EcowittIntegrationManager}. Allocates stable ids (`ecowitt_001`, …),
45303
- * CRUD, an integration FK index, lifecycle helpers. Mirrors the Homematic /
45304
- * Dreame registry; on the default factory path it publishes each freshly-built
45305
- * facade on `ecowittFacades` so device classes can read sensors in-process.
45306
- */
45307
- var EcowittBrokerRegistry = class {
45308
- #logger;
45309
- #onBrokerConnected;
45310
- #onBrokerDisconnected;
45311
- #onSensorsChanged;
45312
- #makeManager;
45313
- #managers = /* @__PURE__ */ new Map();
45314
- #integrationToBroker = /* @__PURE__ */ new Map();
45315
- #nextId = 1;
45316
- constructor(logger, deps = {}) {
45317
- this.#logger = logger;
45318
- this.#onBrokerConnected = deps.onBrokerConnected ?? (() => void 0);
45319
- this.#onBrokerDisconnected = deps.onBrokerDisconnected ?? (() => void 0);
45320
- this.#onSensorsChanged = deps.onSensorsChanged ?? (() => void 0);
45321
- this.#makeManager = deps.makeManager ?? ((opts) => new EcowittIntegrationManager({
45322
- id: opts.id,
45323
- name: opts.name,
45324
- connection: opts.connection,
45325
- logger: opts.logger,
45326
- onConnected: opts.onConnected,
45327
- onDisconnected: opts.onDisconnected,
45328
- onSensorsChanged: opts.onSensorsChanged,
45329
- onFacadeBuilt: (id, facade) => ecowittFacades.set(id, facade)
45330
- }));
45331
- }
45332
- async restore(entries) {
45333
- for (const entry of entries) this.#seedCounter(entry.id);
45334
- for (const entry of entries) try {
45335
- await this.#startManager(entry);
45336
- } catch (err) {
45337
- this.#logger.warn("EcowittBrokerRegistry: failed to restore manager", {
45338
- tags: { brokerId: entry.id },
45339
- meta: { error: errMsg(err) }
45340
- });
45341
- }
45342
- }
45343
- async shutdown() {
45344
- const ids = Array.from(this.#managers.keys());
45345
- await Promise.all(ids.map(async (id) => {
45346
- try {
45347
- await this.#managers.get(id)?.stop();
45348
- } catch (err) {
45349
- this.#logger.warn("EcowittBrokerRegistry: shutdown stop failed", {
45350
- tags: { brokerId: id },
45351
- meta: { error: errMsg(err) }
45352
- });
45353
- }
45354
- }));
45355
- this.#managers.clear();
45356
- this.#integrationToBroker.clear();
45357
- ecowittFacades.clear();
45358
- }
45359
- setOnBrokerConnected(cb) {
45360
- this.#onBrokerConnected = cb;
45361
- }
45362
- setOnBrokerDisconnected(cb) {
45363
- this.#onBrokerDisconnected = cb;
45364
- }
45365
- setOnSensorsChanged(cb) {
45366
- this.#onSensorsChanged = cb;
45367
- }
45368
- async createEntry(name, connection, opts = {}) {
45369
- const id = this.#allocateId();
45370
- const entry = {
45371
- id,
45372
- name,
45373
- connection,
45374
- ...opts.integrationId !== void 0 ? { integrationId: opts.integrationId } : {}
45375
- };
45376
- await this.#startManager(entry);
45377
- if (opts.integrationId !== void 0) this.#integrationToBroker.set(opts.integrationId, id);
45378
- return entry;
45379
- }
45380
- async removeEntry(id) {
45381
- const mgr = this.#managers.get(id);
45382
- if (!mgr) throw new Error(`EcowittBrokerRegistry: unknown broker id "${id}"`);
45383
- for (const [integrationId, brokerId] of this.#integrationToBroker.entries()) if (brokerId === id) this.#integrationToBroker.delete(integrationId);
45384
- this.#managers.delete(id);
45385
- ecowittFacades.set(id, null);
45386
- try {
45387
- await mgr.stop();
45388
- } catch (err) {
45389
- this.#logger.warn("EcowittBrokerRegistry: removeEntry stop failed", {
45390
- tags: { brokerId: id },
45391
- meta: { error: errMsg(err) }
45392
- });
45393
- }
45394
- }
45395
- async updateEntry(id, connection) {
45396
- const mgr = this.#managers.get(id);
45397
- if (!mgr) throw new Error(`EcowittBrokerRegistry: unknown broker id "${id}"`);
45398
- await mgr.applyConnection(connection);
45399
- return {
45400
- id,
45401
- name: mgr.getInfo().name,
45402
- connection
45403
- };
45404
- }
45405
- linkIntegration(integrationId, brokerId) {
45406
- this.#integrationToBroker.set(integrationId, brokerId);
45407
- }
45408
- getBrokerIdByIntegrationId(integrationId) {
45409
- const brokerId = this.#integrationToBroker.get(integrationId);
45410
- if (brokerId === void 0) throw new Error(`EcowittBrokerRegistry: no broker linked for integration id "${integrationId}"`);
45411
- return brokerId;
45412
- }
45413
- list() {
45414
- return Array.from(this.#managers.values()).map((m) => m.getInfo());
45415
- }
45416
- get(id) {
45417
- return this.#managers.get(id)?.getInfo() ?? null;
45418
- }
45419
- getConnection(id) {
45420
- return this.#managers.get(id)?.getConnection() ?? null;
45421
- }
45422
- size() {
45423
- return this.#managers.size;
45424
- }
45425
- connectedCount() {
45426
- let count = 0;
45427
- for (const mgr of this.#managers.values()) if (mgr.getInfo().status === "connected") count++;
45428
- return count;
45429
- }
45430
- async #startManager(entry) {
45431
- if (this.#managers.has(entry.id)) {
45432
- if (entry.integrationId !== void 0) this.#integrationToBroker.set(entry.integrationId, entry.id);
45433
- return;
45434
- }
45435
- const mgr = this.#makeManager({
45436
- id: entry.id,
45437
- name: entry.name,
45438
- connection: entry.connection,
45439
- logger: this.#logger,
45440
- onConnected: (id) => this.#onBrokerConnected(id),
45441
- onDisconnected: (id) => this.#onBrokerDisconnected(id),
45442
- onSensorsChanged: (id, sensors) => this.#onSensorsChanged(id, sensors)
45443
- });
45444
- this.#managers.set(entry.id, mgr);
45445
- if (entry.integrationId !== void 0) this.#integrationToBroker.set(entry.integrationId, entry.id);
45446
- await mgr.start();
45447
- }
45448
- #allocateId() {
45449
- const id = `ecowitt_${String(this.#nextId).padStart(3, "0")}`;
45450
- this.#nextId++;
45451
- return id;
45452
- }
45453
- #seedCounter(id) {
45454
- const match = /^ecowitt_(\d+)$/.exec(id);
45455
- if (match === null || match[1] === void 0) return;
45456
- const n = parseInt(match[1], 10);
45457
- if (!isNaN(n)) this.#nextId = Math.max(this.#nextId, n + 1);
45458
- }
45459
- };
45460
- //#endregion
45461
- //#region src/config.ts
45462
- /**
45463
- * Operator-supplied Ecowitt gateway settings for ONE broker (= one station).
45464
- * Two transports behind a `transport` discriminator:
45465
- *
45466
- * - `local` (local-poll): the addon polls the gateway over HTTP (`host`/`port`/
45467
- * optional `password`, with poll + mapping intervals).
45468
- * - `listener` (push): the addon runs an HTTP server the gateway uploads to
45469
- * (the gateway's "Customized" upload must point at the hub's LAN IP:port).
45470
- *
45471
- * Local-poll is the recommended default — it has no inbound-IP constraint.
45472
- */
45473
- var baseFields = {
45474
- /** Human-overridable station identity used to scope the adopted gateway. */
45475
- stationId: string().default("").describe("Optional stable station id (auto-derived when blank)") };
45476
- var ecowittConfigSchema = discriminatedUnion("transport", [object({
45477
- transport: literal("local"),
45478
- host: string().min(1).describe("Ecowitt gateway host name or IP address"),
45479
- port: preprocess((v) => v === "" || v === null ? void 0 : v, number().int().min(1).max(65535).default(80)).describe("Gateway HTTP port"),
45480
- password: string().default("").describe("Gateway password (optional — newer firmware)"),
45481
- pollIntervalMs: preprocess((v) => v === "" || v === null ? void 0 : v, number().int().min(1e3).max(36e5).default(6e4)).describe("Live-data poll interval (ms)"),
45482
- mappingIntervalMs: preprocess((v) => v === "" || v === null ? void 0 : v, number().int().min(1e4).max(864e5).default(6e5)).describe("Sensor-map refresh interval (ms)"),
45483
- ...baseFields
45484
- }), object({
45485
- transport: literal("listener"),
45486
- listenPort: preprocess((v) => v === "" || v === null ? void 0 : v, number().int().min(1).max(65535).default(4199)).describe("Local TCP port the gateway uploads to"),
45487
- listenHost: string().default("").describe("Optional bind host (blank = all interfaces)"),
45488
- ...baseFields
45489
- })]);
45490
- /** Top-level addon config — an ordered list of broker entries (default empty). */
45491
- var ecowittAddonConfigSchema = object({ brokers: array(object({
45492
- id: string().min(1),
45493
- name: string().min(1),
45494
- connection: ecowittConfigSchema,
45495
- integrationId: string().optional()
45496
- })).default([]) });
45497
- /**
45498
- * Narrow an `unknown` value to a shallow-cloned plain object record, or an empty
45499
- * record when it is not a plain object. Mirrors the Homematic `toRecord` helper —
45500
- * a cast-free boundary narrowing.
45501
- */
45502
- function toRecord(value) {
45503
- if (typeof value === "object" && value !== null && !Array.isArray(value)) return Object.fromEntries(Object.entries(value));
45504
- return {};
45505
- }
45506
- /** Coerce a loose settings blob through the connection schema, applying defaults.
45507
- * A blob with no `transport` defaults to `local` for back-compat with simple forms. */
45508
- function settingsToEcowittConfig(settings) {
45509
- const raw = toRecord(settings);
45510
- if (raw["transport"] !== "local" && raw["transport"] !== "listener") raw["transport"] = "local";
45511
- return ecowittConfigSchema.parse(raw);
45512
- }
45513
- /** Hand-written connection form for the broker/integration creation UI. */
45514
- function buildConnectionFormSchema() {
45515
- return { sections: [
45516
- {
45517
- id: "transport",
45518
- title: "Transport",
45519
- description: "Choose how CamStack reads the gateway. Local poll connects out to the gateway (recommended). Push listener runs a server the gateway uploads to — configure the gateway \"Customized\" upload to point at this hub.",
45520
- columns: 1,
45521
- fields: [{
45522
- type: "select",
45523
- key: "transport",
45524
- label: "Transport",
45525
- default: "local",
45526
- options: [{
45527
- value: "local",
45528
- label: "Local poll (recommended)"
45529
- }, {
45530
- value: "listener",
45531
- label: "Push listener"
45532
- }]
45533
- }]
45534
- },
45535
- {
45536
- id: "local",
45537
- title: "Local poll settings",
45538
- columns: 2,
45539
- fields: [
45540
- {
45541
- type: "text",
45542
- key: "host",
45543
- label: "Gateway host / IP",
45544
- placeholder: "192.168.1.50",
45545
- showWhen: {
45546
- field: "transport",
45547
- equals: "local"
45548
- }
45549
- },
45550
- {
45551
- type: "number",
45552
- key: "port",
45553
- label: "HTTP port",
45554
- min: 1,
45555
- max: 65535,
45556
- default: 80,
45557
- showWhen: {
45558
- field: "transport",
45559
- equals: "local"
45560
- }
45561
- },
45562
- {
45563
- type: "password",
45564
- key: "password",
45565
- label: "Password (optional)",
45566
- showToggle: true,
45567
- showWhen: {
45568
- field: "transport",
45569
- equals: "local"
45570
- }
45571
- },
45572
- {
45573
- type: "number",
45574
- key: "pollIntervalMs",
45575
- label: "Poll interval (ms)",
45576
- min: 1e3,
45577
- max: 36e5,
45578
- default: 6e4,
45579
- showWhen: {
45580
- field: "transport",
45581
- equals: "local"
45582
- }
45583
- }
45584
- ]
45585
- },
45586
- {
45587
- id: "listener",
45588
- title: "Push listener settings",
45589
- columns: 2,
45590
- fields: [{
45591
- type: "number",
45592
- key: "listenPort",
45593
- label: "Listen port",
45594
- min: 1,
45595
- max: 65535,
45596
- default: 4199,
45597
- showWhen: {
45598
- field: "transport",
45599
- equals: "listener"
45600
- }
45601
- }, {
45602
- type: "text",
45603
- key: "listenHost",
45604
- label: "Bind host (optional)",
45605
- placeholder: "all interfaces",
45606
- showWhen: {
45607
- field: "transport",
45608
- equals: "listener"
45609
- }
45610
- }]
45611
- }
45612
- ] };
45613
- }
45614
- //#endregion
45615
- //#region src/ecowitt-broker-provider.ts
45616
- var ECOWITT_KIND = "ecowitt";
45617
- /**
45618
- * Construct the `broker` cap provider for the Ecowitt addon. Pure builder.
45619
- * Mirrors `buildDreameBrokerProvider`. The connection has no single secret to
45620
- * redact (the optional local password is the only one) — preserved on empty
45621
- * round-trip like the other providers.
45622
- */
45623
- function buildEcowittBrokerProvider(deps) {
45624
- const { ownerAddonId, registry, getBrokers, persistBrokers, cascadeRemoveDevices, logger } = deps;
45625
- const owns = (id) => getBrokers().some((b) => b.id === id);
45626
- /** Redact the local-poll password for an outbound settings read. */
45627
- const redact = (entry) => {
45628
- if (entry.connection.transport === "local") return {
45629
- ...entry.connection,
45630
- password: ""
45631
- };
45632
- return { ...entry.connection };
45633
- };
45634
- return {
45635
- list: async ({ kind }) => {
45636
- if (kind && kind !== ECOWITT_KIND) return [];
45637
- return registry.list().map((info) => ({
45638
- ...info,
45639
- addonId: ownerAddonId
45640
- }));
45641
- },
45642
- get: async ({ id }) => {
45643
- const info = registry.get(id);
45644
- return info ? {
45645
- ...info,
45646
- addonId: ownerAddonId
45647
- } : null;
45648
- },
45649
- listProviders: async () => [{
45650
- addonId: ownerAddonId,
45651
- kinds: [{
45652
- kind: ECOWITT_KIND,
45653
- label: "Ecowitt"
45654
- }]
45655
- }],
45656
- add: async ({ kind, name, settings }) => {
45657
- if (kind !== ECOWITT_KIND) throw new Error(`provider-ecowitt: only kind '${ECOWITT_KIND}' is handled here (got '${kind}')`);
45658
- const entry = await registry.createEntry(name, settingsToEcowittConfig(settings));
45659
- await persistBrokers([...getBrokers(), entry]);
45660
- return { id: entry.id };
45661
- },
45662
- remove: async ({ id }) => {
45663
- if (!owns(id)) return;
45664
- await registry.removeEntry(id);
45665
- await cascadeRemoveDevices(id).catch((err) => {
45666
- logger.warn("ecowitt: broker cascade-remove threw", {
45667
- tags: { brokerId: id },
45668
- meta: { error: errMsg(err) }
45669
- });
45670
- });
45671
- await persistBrokers(getBrokers().filter((b) => b.id !== id));
45672
- },
45673
- testConnection: async ({ id }) => {
45674
- if (!owns(id)) return {
45675
- ok: false,
45676
- error: "unknown broker"
45677
- };
45678
- const info = registry.get(id);
45679
- if (!info) return {
45680
- ok: false,
45681
- error: "unknown broker"
45682
- };
45683
- if (info.status === "connected") return {
45684
- ok: true,
45685
- latencyMs: info.lastCheckedAt ? Math.max(0, Date.now() - info.lastCheckedAt) : 0
45686
- };
45687
- return {
45688
- ok: false,
45689
- error: info.error ?? `status: ${info.status}`
45690
- };
45691
- },
45692
- getSettings: async ({ id }) => {
45693
- const entry = getBrokers().find((b) => b.id === id);
45694
- if (!entry) return null;
45695
- return redact(entry);
45696
- },
45697
- setSettings: async ({ id, settings }) => {
45698
- if (!owns(id)) return;
45699
- const existing = getBrokers().find((b) => b.id === id);
45700
- if (!existing) return;
45701
- const parsed = settingsToEcowittConfig(settings);
45702
- const merged = parsed.transport === "local" && existing.connection.transport === "local" ? {
45703
- ...parsed,
45704
- password: parsed.password.length > 0 ? parsed.password : existing.connection.password
45705
- } : parsed;
45706
- const updated = await registry.updateEntry(id, merged);
45707
- await persistBrokers(getBrokers().map((b) => b.id === id ? updated : b));
45708
- },
45709
- getBrokerConfig: async ({ id }) => {
45710
- const entry = getBrokers().find((b) => b.id === id);
45711
- if (!entry) return null;
45712
- return redact(entry);
45713
- },
45714
- getSettingsSchema: async ({ kind }) => {
45715
- if (kind !== ECOWITT_KIND) return null;
45716
- return buildConnectionFormSchema();
45717
- },
45718
- testSettings: async ({ kind, settings }) => {
45719
- if (kind !== ECOWITT_KIND) return {
45720
- ok: false,
45721
- error: `unsupported kind: ${kind}`
45722
- };
45723
- try {
45724
- settingsToEcowittConfig(settings);
45725
- return { ok: true };
45726
- } catch (err) {
45727
- return {
45728
- ok: false,
45729
- error: errMsg(err)
45730
- };
45731
- }
45732
- },
45733
- publish: async () => null,
45734
- subscribe: async () => ({ subscriptionId: "" }),
45735
- unsubscribe: async () => void 0,
45736
- getState: async () => null,
45737
- getStatus: async () => ({
45738
- brokerCount: registry.size(),
45739
- connectedCount: registry.connectedCount()
45740
- })
45741
- };
45742
- }
45743
- //#endregion
45744
- //#region src/ecowitt-mapping.ts
45490
+ //#region src/ecowitt-mapping.ts
45745
45491
  /**
45746
45492
  * Map an Ecowitt quantity to its camstack sensor cap. Pure, total.
45747
45493
  *
@@ -45901,18 +45647,63 @@ var QUANTITY_LABEL = {
45901
45647
  lightning_count: "Lightning count",
45902
45648
  vpd: "VPD"
45903
45649
  };
45650
+ /** All device groups, in stable presentation order. */
45651
+ var ECOWITT_DEVICE_GROUPS = [
45652
+ "gateway",
45653
+ "weather-station",
45654
+ "temp-sensor-ch1"
45655
+ ];
45656
+ /** Human label for a device group (used as the per-group Container name suffix). */
45657
+ function deviceGroupLabel(group) {
45658
+ switch (group) {
45659
+ case "gateway": return "Gateway";
45660
+ case "weather-station": return "Weather Station";
45661
+ case "temp-sensor-ch1": return "Temp Sensor CH1";
45662
+ }
45663
+ }
45664
+ /**
45665
+ * Map a sensor's self-describing nodewitt {@link SensorCategory} (+ its channel)
45666
+ * to the camstack {@link EcowittDeviceGroup} it belongs to. Pure, total.
45667
+ *
45668
+ * The split:
45669
+ * - `weather-station` → `'weather-station'`.
45670
+ * - `channel-sensor` with channel 1 → `'temp-sensor-ch1'` (the CH1 split-out).
45671
+ * - everything else → `'gateway'`.
45672
+ *
45673
+ * CH2..8 grouping (documented decision): channel-sensors on channels 2–8 are
45674
+ * deliberately grouped under `'gateway'`, NOT given their own group. The group
45675
+ * enum is intentionally a fixed THREE (the product wants exactly gateway /
45676
+ * weather-station / CH1-temp surfaces); the gateway device is the natural home
45677
+ * for "everything else" — it already owns the console's indoor readings and the
45678
+ * standalone external sensors. A per-channel device explosion (CH2…CH8 each their
45679
+ * own device) is out of scope here and can be layered on later by widening the
45680
+ * enum, without changing this function's `weather-station`/`temp-sensor-ch1`
45681
+ * branches. `external` (lightning/rain/combo) and `gateway` (console/indoor)
45682
+ * categories also fall here, by design.
45683
+ *
45684
+ * Accepts an optional `category` (a persisted/older sensor may lack one): an
45685
+ * absent category resolves to `'gateway'`, the same safe default nodewitt uses
45686
+ * for an unattributed reading.
45687
+ */
45688
+ function deviceGroupForSensor(category, channel) {
45689
+ if (category === "weather-station") return "weather-station";
45690
+ if (category === "channel-sensor" && channel === 1) return "temp-sensor-ch1";
45691
+ return "gateway";
45692
+ }
45904
45693
  //#endregion
45905
45694
  //#region src/ecowitt-discovery.ts
45906
45695
  /**
45907
- * Build the SINGLE gateway adoption candidate (a {@link DeviceType.Container})
45908
- * with one preview accessory child per sensor. The gateway is keyed on the
45909
- * broker id — one broker = one gateway = one Container. Pure: no I/O.
45910
- *
45911
- * Per the plan (model A), each sensor maps to a typed sensor cap; the `weather`
45912
- * cap is intentionally NOT used (a raw station has no sky-state `condition`).
45696
+ * The native id a group Container candidate is keyed on:
45697
+ * `ecowitt:<gatewayId>:<group>`. One physical gateway therefore yields THREE
45698
+ * candidates (one per {@link EcowittDeviceGroup}). Mirrors the persisted stable
45699
+ * id the group Container's `stableIdSuffix` derives for the same Container.
45913
45700
  */
45914
- function buildEcowittGatewayCandidate(input) {
45915
- const children = input.sensors.map((sensor) => ({
45701
+ function groupNativeId(gatewayId, group) {
45702
+ return `ecowitt:${gatewayId}:${group}`;
45703
+ }
45704
+ /** A preview accessory child for one sensor. */
45705
+ function sensorChild(sensor) {
45706
+ return {
45916
45707
  childNativeId: sensor.id,
45917
45708
  name: sensorLabel(sensor.quantity, sensor.channel, sensor.name, sensor.id),
45918
45709
  type: DeviceType.Sensor,
@@ -45921,215 +45712,61 @@ function buildEcowittGatewayCandidate(input) {
45921
45712
  alreadyAdopted: false,
45922
45713
  adoptedDeviceId: null,
45923
45714
  capabilities: [capForQuantity(sensor.quantity)]
45924
- }));
45925
- return {
45926
- childNativeId: input.brokerId,
45927
- name: input.gatewayName,
45928
- type: DeviceType.Container,
45929
- status: "online",
45930
- metadata: { serialNumber: input.brokerId },
45931
- alreadyAdopted: input.adoptedDeviceId !== null,
45932
- adoptedDeviceId: input.adoptedDeviceId,
45933
- capabilities: [],
45934
- children
45935
45715
  };
45936
45716
  }
45937
- //#endregion
45938
- //#region src/ecowitt-adoption-provider.ts
45939
- /** Single granularity: the whole gateway adopts as one Container. */
45940
- var DEVICES_FILTER = {
45941
- id: "devices",
45942
- label: "Devices",
45943
- isDefault: true
45944
- };
45945
- /** Resolve the adopted gateway CamStack device id for a broker, or null. */
45946
- async function adoptedGatewayId(brokerId, listAdoptedEcowitt) {
45947
- const all = await listAdoptedEcowitt();
45948
- for (const d of all) if (d.config["system"] === "ecowitt" && d.config["brokerId"] === brokerId) return d.id;
45949
- return null;
45950
- }
45951
- /**
45952
- * Construct the `device-adoption` cap provider for the Ecowitt addon. Pure
45953
- * builder. One broker = one gateway = one Container candidate; its sensors are
45954
- * preview accessory children that the Container's `getAccessoryChildren()`
45955
- * materialises live on adoption. Mirrors the Dreame adoption provider.
45956
- */
45957
- function buildEcowittAdoptionProvider(deps) {
45958
- const { registry, getBrokerIdForIntegration, listAdoptedEcowitt, adoptGateway, removeDevice, findDeviceConfig, logger } = deps;
45959
- async function gatewayCandidateForBroker(brokerId) {
45960
- const facade = registry.getFacadeForBroker(brokerId);
45961
- if (facade === null) return null;
45962
- const info = registry.list().find((b) => b.id === brokerId);
45963
- const adoptedDeviceId = await adoptedGatewayId(brokerId, listAdoptedEcowitt);
45964
- return buildEcowittGatewayCandidate({
45965
- brokerId,
45966
- gatewayName: info?.name ?? "Ecowitt gateway",
45967
- sensors: facade.getSensors(),
45968
- adoptedDeviceId
45969
- });
45970
- }
45971
- return {
45972
- listCandidateFilters: async () => ({ filters: [DEVICES_FILTER] }),
45973
- listCandidates: async ({ integrationId, page, pageSize }) => {
45974
- const candidate = await gatewayCandidateForBroker(await getBrokerIdForIntegration(integrationId));
45975
- const candidates = candidate !== null ? [candidate] : [];
45976
- return {
45977
- candidates,
45978
- totalCount: candidates.length,
45979
- page,
45980
- pageSize
45981
- };
45982
- },
45983
- getCandidate: async ({ integrationId, childNativeId }) => {
45984
- const candidate = await gatewayCandidateForBroker(await getBrokerIdForIntegration(integrationId));
45985
- return candidate !== null && candidate.childNativeId === childNativeId ? candidate : null;
45986
- },
45987
- getStatus: async () => {
45988
- try {
45989
- const brokers = registry.list();
45990
- let candidateCount = 0;
45991
- for (const broker of brokers) if (await gatewayCandidateForBroker(broker.id) !== null) candidateCount += 1;
45992
- const adoptedCount = (await listAdoptedEcowitt()).filter((d) => d.config["system"] === "ecowitt").length;
45993
- return {
45994
- lastDiscoveryAt: Date.now(),
45995
- candidateCount,
45996
- adoptedCount,
45997
- lastError: null
45998
- };
45999
- } catch (err) {
46000
- logger.warn("ecowitt adoption: getStatus failed", { meta: { error: errMsg(err) } });
46001
- return {
46002
- lastDiscoveryAt: null,
46003
- candidateCount: 0,
46004
- adoptedCount: 0,
46005
- lastError: errMsg(err)
46006
- };
46007
- }
46008
- },
46009
- refresh: async ({ integrationId }) => {
46010
- const brokerId = await getBrokerIdForIntegration(integrationId);
46011
- const candidate = await gatewayCandidateForBroker(brokerId);
46012
- const adoptedCount = (await listAdoptedEcowitt()).filter((d) => d.config["system"] === "ecowitt" && d.config["brokerId"] === brokerId).length;
46013
- return {
46014
- lastDiscoveryAt: Date.now(),
46015
- candidateCount: candidate !== null ? 1 : 0,
46016
- adoptedCount,
46017
- lastError: null
46018
- };
46019
- },
46020
- adopt: async ({ integrationId, childNativeIds, perCandidate }) => {
46021
- const brokerId = await getBrokerIdForIntegration(integrationId);
46022
- if (registry.getFacadeForBroker(brokerId) === null) throw new Error(`ecowitt adopt: broker ${brokerId} not connected`);
46023
- const adopted = [];
46024
- let failures = 0;
46025
- const info = registry.list().find((b) => b.id === brokerId);
46026
- for (const nativeId of childNativeIds) {
46027
- if (nativeId !== brokerId) {
46028
- logger.warn("ecowitt adopt: only the gateway candidate is adoptable — skipping", { meta: {
46029
- nativeId,
46030
- brokerId
46031
- } });
46032
- failures++;
46033
- continue;
46034
- }
46035
- try {
46036
- const { deviceId, accessoryDeviceIds } = await adoptGateway({
46037
- brokerId,
46038
- integrationId,
46039
- name: perCandidate?.[nativeId]?.name ?? info?.name ?? "Ecowitt gateway"
46040
- });
46041
- adopted.push({
46042
- childNativeId: nativeId,
46043
- parentDeviceId: deviceId,
46044
- accessoryDeviceIds
46045
- });
46046
- } catch (err) {
46047
- logger.warn("ecowitt adopt: failed to adopt gateway", { meta: {
46048
- brokerId,
46049
- error: errMsg(err)
46050
- } });
46051
- failures++;
46052
- }
46053
- }
46054
- if (adopted.length === 0 && failures > 0) throw new Error(`ecowitt adopt: all ${failures} adopt(s) failed`);
46055
- return { adopted };
46056
- },
46057
- release: async ({ camDeviceId }) => {
46058
- await removeDevice(camDeviceId);
46059
- },
46060
- resync: async ({ camDeviceId }) => {
46061
- const cfg = await findDeviceConfig(camDeviceId);
46062
- if (cfg === null) throw new Error(`ecowitt resync: device ${camDeviceId} not found`);
46063
- if (cfg["system"] !== "ecowitt") throw new Error(`ecowitt resync: device ${camDeviceId} is not an Ecowitt device`);
46064
- const brokerId = String(cfg["brokerId"]);
46065
- if (!(registry.getFacadeForBroker(brokerId) !== null)) throw new Error(`ecowitt resync: broker ${brokerId} no longer connected`);
46066
- return {
46067
- changed: false,
46068
- rebuiltChildren: 0
46069
- };
46070
- }
46071
- };
46072
- }
46073
- //#endregion
46074
- //#region src/ecowitt-broker-device-cascade.ts
46075
- /**
46076
- * Remove every adopted Ecowitt PARENT device (children cascade via the kernel)
46077
- * whose persisted config carries `{ system: 'ecowitt', brokerId }`. Used on
46078
- * broker.remove and integration delete. Best-effort per device; returns the
46079
- * count removed. Mirrors the Homematic / Dreame cascade helper.
46080
- */
46081
- async function cascadeRemoveDevicesForBroker(input) {
46082
- const { reg, devices, addonId, brokerId, logger } = input;
46083
- let removed = 0;
46084
- for (const d of reg.getAllForAddon(addonId)) {
46085
- if (d.parentDeviceId !== null) continue;
46086
- const cfg = await devices.loadConfig(d.id).catch(() => ({}));
46087
- if (cfg["system"] !== "ecowitt" || cfg["brokerId"] !== brokerId) continue;
46088
- try {
46089
- await devices.remove(d.id);
46090
- removed += 1;
46091
- } catch (err) {
46092
- logger.warn("ecowitt: broker cascade-remove failed", {
46093
- tags: { deviceId: d.id },
46094
- meta: {
46095
- brokerId,
46096
- error: errMsg(err)
46097
- }
46098
- });
46099
- }
46100
- }
46101
- return removed;
46102
- }
46103
- //#endregion
46104
- //#region src/ecowitt-broker-offline.ts
46105
45717
  /**
46106
- * Set every Ecowitt device belonging to `brokerId` to the requested online
46107
- * state. Every Ecowitt top-level gateway Container carries
46108
- * `{ system: 'ecowitt', brokerId }`. Churn-free; returns the count transitioned.
46109
- * Mirrors the Homematic / Dreame offline helper.
45718
+ * Build the THREE gateway adoption candidates (one {@link DeviceType.Container}
45719
+ * per {@link EcowittDeviceGroup}) for a single physical gateway. Each Container
45720
+ * carries only the sensors whose device group matches, as preview accessory
45721
+ * children that the Container's `getAccessoryChildren()` materialises on
45722
+ * adoption. Pure: no I/O.
45723
+ *
45724
+ * Discovery option (documented decision): we return 3 SEPARATE top-level
45725
+ * Container candidates (not 1 parent with 3 group-tagged children). Each maps 1:1
45726
+ * to a real adopted device, so the existing per-candidate adopt/release/resync
45727
+ * machinery (keyed on `childNativeId`) extends directly — the alternative
45728
+ * (nested group children under one parent) would require a new two-level
45729
+ * adoption shape and is higher-risk. Sensors are split by
45730
+ * {@link deviceGroupForSensor}; an empty group still yields a Container so its
45731
+ * sensors can appear as they come online over time (additive reconcile).
45732
+ *
45733
+ * Per the plan (model A), each sensor maps to a typed sensor cap; the `weather`
45734
+ * cap is intentionally NOT used (a raw station has no sky-state `condition`).
46110
45735
  */
46111
- function setBrokerDevicesOnline(devices, brokerId, online) {
46112
- let count = 0;
46113
- for (const dev of devices) {
46114
- if (dev.config.get("system") !== "ecowitt") continue;
46115
- if (dev.config.get("brokerId") !== brokerId) continue;
46116
- if (dev.online === online) continue;
46117
- dev.markOnline(online);
46118
- count += 1;
46119
- }
46120
- return count;
45736
+ function buildEcowittGatewayCandidates(input) {
45737
+ const byGroup = /* @__PURE__ */ new Map();
45738
+ for (const group of ECOWITT_DEVICE_GROUPS) byGroup.set(group, []);
45739
+ for (const sensor of input.sensors) {
45740
+ const group = deviceGroupForSensor(sensor.category, sensor.channel);
45741
+ byGroup.get(group)?.push(sensorChild(sensor));
45742
+ }
45743
+ return ECOWITT_DEVICE_GROUPS.map((group) => {
45744
+ const adoptedDeviceId = input.adoptedDeviceIdByGroup[group] ?? null;
45745
+ const children = byGroup.get(group) ?? [];
45746
+ return {
45747
+ childNativeId: groupNativeId(input.gatewayId, group),
45748
+ name: `${input.gatewayName} — ${deviceGroupLabel(group)}`,
45749
+ type: DeviceType.Container,
45750
+ status: "online",
45751
+ metadata: { serialNumber: input.gatewayId },
45752
+ alreadyAdopted: adoptedDeviceId !== null,
45753
+ adoptedDeviceId,
45754
+ capabilities: [],
45755
+ children
45756
+ };
45757
+ });
46121
45758
  }
46122
45759
  //#endregion
46123
45760
  //#region src/devices/ecowitt-sensor-device.ts
46124
45761
  /**
46125
45762
  * Persisted config every Ecowitt sensor child carries. `sensorId` resolves the
46126
- * live reading from the facade; `brokerId` selects the gateway; `quantity` is
46127
- * the Ecowitt physical quantity that drives the cap selection;
46128
- * `system`/`integrationId` are provenance.
45763
+ * live reading from the gateway's client; `gatewayId` selects the gateway (its
45764
+ * Hub stableId); `quantity` is the Ecowitt physical quantity that drives the cap
45765
+ * selection; `system`/`integrationId` are provenance.
46129
45766
  */
46130
45767
  var ecowittSensorSchema = object({
46131
45768
  sensorId: string().min(1).describe("Ecowitt sensor stable id"),
46132
- brokerId: string().min(1).describe("Registry broker id"),
45769
+ gatewayId: string().min(1).describe("Parent gateway Hub stableId"),
46133
45770
  quantity: string().min(1).describe("Ecowitt physical quantity"),
46134
45771
  system: literal("ecowitt").optional(),
46135
45772
  integrationId: string().optional()
@@ -46173,7 +45810,7 @@ var SUPPORTED_CAPS = new Set([
46173
45810
  var EcowittSensorDevice = class extends BaseDevice {
46174
45811
  features = [];
46175
45812
  sensorId;
46176
- brokerId;
45813
+ gatewayId;
46177
45814
  capName;
46178
45815
  valueKey;
46179
45816
  /**
@@ -46189,7 +45826,7 @@ var EcowittSensorDevice = class extends BaseDevice {
46189
45826
  const persisted = ecowittSensorSchema.parse(ctx.persistedConfig ?? {});
46190
45827
  super(ctx, ecowittSensorSchema, { type: ctx.deviceMeta.type });
46191
45828
  this.sensorId = persisted.sensorId;
46192
- this.brokerId = persisted.brokerId;
45829
+ this.gatewayId = persisted.gatewayId;
46193
45830
  const cap = capForQuantity(persisted.quantity);
46194
45831
  this.capName = SUPPORTED_CAPS.has(cap) ? cap : "numeric-sensor";
46195
45832
  this.valueKey = valueFieldForCap(this.capName);
@@ -46200,10 +45837,10 @@ var EcowittSensorDevice = class extends BaseDevice {
46200
45837
  });
46201
45838
  }
46202
45839
  get facade() {
46203
- return ecowittFacades.get(this.brokerId);
45840
+ return ecowittFacades.get(this.gatewayId);
46204
45841
  }
46205
45842
  resolveSensor() {
46206
- return ecowittFacades.getSensor(this.brokerId, this.sensorId);
45843
+ return ecowittFacades.getSensor(this.gatewayId, this.sensorId);
46207
45844
  }
46208
45845
  async onActivate() {
46209
45846
  await super.onActivate();
@@ -46390,41 +46027,53 @@ var ecowittSensorEntrySchema = object({
46390
46027
  sensorId: string(),
46391
46028
  quantity: string(),
46392
46029
  channel: number().optional(),
46393
- name: string().optional()
46030
+ name: string().optional(),
46031
+ category: _enum([
46032
+ "gateway",
46033
+ "weather-station",
46034
+ "channel-sensor",
46035
+ "external"
46036
+ ]).optional()
46394
46037
  });
46395
46038
  /**
46396
- * Persisted config for an Ecowitt gateway Container. `brokerId` selects the
46397
- * gateway facade; `sensors[]` is the additively-reconciled list of sensors that
46398
- * fan out as accessory children (updated by the addon via `applyDerivedSpec` on
46399
- * every `snapshot` push). `system`/`integrationId`/`name` are provenance.
46039
+ * Persisted config for one Ecowitt gateway-group Container. `gatewayId` selects
46040
+ * the parent gateway's live nodewitt client (the gateway Hub device's
46041
+ * `stableId`); `sensors[]` is the additively-reconciled list of sensors that fan
46042
+ * out as accessory children (updated by the gateway device via `applyDerivedSpec`
46043
+ * on every `snapshot` push). `system`/`integrationId`/`name` are provenance.
46400
46044
  */
46401
46045
  var ecowittContainerSchema = object({
46402
- brokerId: string().min(1).describe("Registry broker id"),
46046
+ gatewayId: string().min(1).describe("Parent gateway Hub stableId"),
46047
+ deviceGroup: _enum([
46048
+ "gateway",
46049
+ "weather-station",
46050
+ "temp-sensor-ch1"
46051
+ ]).default("gateway"),
46403
46052
  sensors: array(ecowittSensorEntrySchema).default([]),
46404
46053
  integrationId: string().optional(),
46405
46054
  system: literal("ecowitt").optional(),
46406
46055
  name: string().optional()
46407
46056
  });
46408
46057
  /**
46409
- * Parent gateway Container for one Ecowitt station. Owns no caps itself it
46410
- * declares `getAccessoryChildren()` so the kernel auto-spawns one
46411
- * {@link EcowittSensorDevice} per sensor in the LIVE `sensors[]` config and
46412
- * reconciles additions/removals when the addon re-persists the list via
46413
- * `applyDerivedSpec`. Mirrors `HaContainerDevice` (which reads its `entities[]`
46414
- * live and is re-derived on reconcile).
46058
+ * One gateway-group Container for an Ecowitt station. A CHILD of the gateway Hub
46059
+ * (standalone mode). Owns no caps itself — it declares `getAccessoryChildren()`
46060
+ * so the kernel auto-spawns one {@link EcowittSensorDevice} per sensor in the
46061
+ * LIVE `sensors[]` config and reconciles additions/removals when the gateway
46062
+ * re-persists the list via `applyDerivedSpec`. Mirrors `HaContainerDevice` (which
46063
+ * reads its `entities[]` live and is re-derived on reconcile).
46415
46064
  */
46416
46065
  var EcowittContainerDevice = class extends BaseDevice {
46417
46066
  features = [DeviceFeature.Resyncable];
46418
- brokerId;
46067
+ gatewayId;
46419
46068
  integrationId;
46420
46069
  constructor(ctx) {
46421
46070
  const cfg = ecowittContainerSchema.parse(ctx.persistedConfig ?? {});
46422
46071
  super(ctx, ecowittContainerSchema, { type: DeviceType.Container });
46423
- this.brokerId = cfg.brokerId;
46072
+ this.gatewayId = cfg.gatewayId;
46424
46073
  this.integrationId = cfg.integrationId;
46425
- this.online = ecowittFacades.get(this.brokerId) !== null;
46074
+ this.online = ecowittFacades.get(this.gatewayId) !== null;
46426
46075
  this.updateSourceInfo({
46427
- id: this.brokerId,
46076
+ id: this.gatewayId,
46428
46077
  system: "ecowitt"
46429
46078
  });
46430
46079
  }
@@ -46439,7 +46088,7 @@ var EcowittContainerDevice = class extends BaseDevice {
46439
46088
  };
46440
46089
  const config = {
46441
46090
  sensorId: sensor.sensorId,
46442
- brokerId: this.brokerId,
46091
+ gatewayId: this.gatewayId,
46443
46092
  quantity: sensor.quantity,
46444
46093
  capabilities: [capForQuantity(sensor.quantity)],
46445
46094
  system: "ecowitt",
@@ -46455,328 +46104,289 @@ var EcowittContainerDevice = class extends BaseDevice {
46455
46104
  }
46456
46105
  };
46457
46106
  //#endregion
46458
- //#region src/addon.ts
46459
- /** Default multi-broker config — a fresh install starts with no gateways. */
46460
- var DEFAULTS = { brokers: [] };
46107
+ //#region src/devices/ecowitt-gateway-device.ts
46461
46108
  /**
46462
- * Ecowitt weather-station device-provider addon (multi-gateway).
46109
+ * Ecowitt gateway — a {@link DeviceType.Hub} device (standalone mode, Reolink
46110
+ * pattern). The operator-supplied CONNECTION lives on THIS device's config; the
46111
+ * gateway owns exactly one live `@apocaliss92/nodewitt` client (via an
46112
+ * {@link EcowittIntegrationManager}) keyed on its own `stableId` and published on
46113
+ * the in-process {@link ecowittFacades} resolver so its container + sensor
46114
+ * children read the live snapshot.
46463
46115
  *
46464
- * Wraps the `@apocaliss92/nodewitt` local-poll / push client. One registered
46465
- * gateway = one "broker"; each adopted gateway becomes a {@link DeviceType.Container}
46466
- * parent that fans out one typed sensor child per `Sensor.quantity`. Modelled on
46467
- * the Homematic / Home Assistant / Dreame device-provider template, with an
46468
- * additive sensor reconcile (sensors appear over time): on each `snapshot` push
46469
- * the addon re-persists the gateway Container's `sensors[]` via the generic
46470
- * `applyDerivedSpec`, which spawns new sensor children + removes orphaned ones.
46116
+ * It registers the `device-discovery` cap: `refreshDiscovery`/`listDiscovered`
46117
+ * enumerate the THREE gateway-group Container candidates (gateway /
46118
+ * weather-station / temp-sensor-ch1) that actually have sensors; `adoptDevice`
46119
+ * spawns a group {@link EcowittContainerDevice} child whose sensors materialise
46120
+ * as entity children; `releaseDevice` removes it. On every nodewitt snapshot the
46121
+ * gateway re-derives each adopted group Container's `sensors[]` additively.
46471
46122
  */
46472
- var EcowittProviderAddon = class extends BaseDeviceProvider {
46473
- addonId = "provider-ecowitt";
46474
- providerName = "Ecowitt";
46475
- deviceClasses = { [DeviceType.Container]: EcowittContainerDevice };
46476
- registry = null;
46477
- constructor() {
46478
- super({ ...DEFAULTS });
46123
+ var EcowittGatewayDevice = class extends BaseDevice {
46124
+ features = [];
46125
+ manager = null;
46126
+ eventUnsubscribers = [];
46127
+ latestSensors = [];
46128
+ constructor(ctx) {
46129
+ ecowittGatewaySchema.parse(ctx.persistedConfig ?? {});
46130
+ super(ctx, ecowittGatewaySchema, { type: DeviceType.Hub });
46131
+ this.online = false;
46132
+ this.registerDeviceDiscovery();
46133
+ this.updateSourceInfo({
46134
+ id: this.stableId,
46135
+ system: "ecowitt"
46136
+ });
46479
46137
  }
46480
- async onInitialize() {
46481
- const regs = await super.onInitialize();
46482
- this.registry = new EcowittBrokerRegistry(this.ctx.logger);
46483
- this.registry.setOnBrokerConnected((brokerId) => {
46484
- this.ctx.logger.info("Ecowitt: broker connected", { meta: { brokerId } });
46485
- this.setBrokerDevicesOnline(brokerId, true);
46486
- });
46487
- this.registry.setOnBrokerDisconnected((brokerId) => {
46488
- this.setBrokerDevicesOnline(brokerId, false);
46489
- });
46490
- this.registry.setOnSensorsChanged((brokerId, sensors) => {
46491
- this.reconcileGatewaySensors(brokerId, sensors);
46492
- });
46493
- await this.registry.restore(this.config.brokers);
46494
- this.ctx.logger.info("Ecowitt: provider initialised", { meta: { brokerCount: this.config.brokers.length } });
46495
- await this.reconcileIntegrationsToBrokers();
46496
- this.subscribeIntegrationLifecycle();
46497
- return [
46498
- ...regs,
46499
- {
46500
- capability: brokerCapability,
46501
- provider: this.buildBrokerProvider()
46502
- },
46503
- {
46504
- capability: deviceAdoptionCapability,
46505
- provider: this.buildAdoptionProvider()
46506
- }
46507
- ];
46138
+ /** Adopt a pre-built manager (created by `onCreateDevice` so the live client
46139
+ * starts once) mirrors `ReolinkHub.adoptApi`. Published on the resolver so
46140
+ * children pick it up. */
46141
+ adoptManager(manager) {
46142
+ this.manager = manager;
46143
+ const facade = manager.facade;
46144
+ if (facade !== null) ecowittFacades.set(this.stableId, facade);
46508
46145
  }
46509
- async onConfigChanged() {
46510
- const reg = this.registry;
46511
- if (!reg) return;
46512
- const persisted = this.config.brokers;
46513
- const liveIds = new Set(reg.list().map((b) => b.id));
46514
- const persistedIds = new Set(persisted.map((e) => e.id));
46515
- for (const liveId of liveIds) if (!persistedIds.has(liveId)) try {
46516
- await reg.removeEntry(liveId);
46517
- } catch (err) {
46518
- this.ctx.logger.warn("Ecowitt onConfigChanged: removeEntry failed", { meta: {
46519
- brokerId: liveId,
46520
- error: errMsg(err)
46521
- } });
46522
- }
46523
- for (const entry of persisted) {
46524
- if (entry.id && liveIds.has(entry.id)) {
46525
- if (sameConnection(entry.connection, reg.getConnection(entry.id))) continue;
46526
- try {
46527
- await reg.updateEntry(entry.id, entry.connection);
46528
- } catch (err) {
46529
- this.ctx.logger.warn("Ecowitt onConfigChanged: updateEntry failed", { meta: {
46530
- brokerId: entry.id,
46531
- error: errMsg(err)
46532
- } });
46533
- }
46534
- continue;
46535
- }
46536
- try {
46537
- const created = await reg.createEntry(entry.name, entry.connection);
46538
- if (created.id !== entry.id) {
46539
- const next = persisted.map((b) => b === entry ? {
46540
- ...b,
46541
- id: created.id
46542
- } : b);
46543
- await this.updateGlobalSettings({ brokers: next });
46544
- }
46545
- } catch (err) {
46546
- this.ctx.logger.warn("Ecowitt onConfigChanged: failed to start new broker", { meta: {
46547
- brokerName: entry.name,
46548
- error: errMsg(err)
46549
- } });
46550
- }
46551
- }
46146
+ async onActivate() {
46147
+ if (this.manager === null) this.ensureManager().catch((err) => {
46148
+ this.ctx.logger.warn("Ecowitt gateway initial connect failed", { meta: { error: errMsg(err) } });
46149
+ });
46150
+ else this.refreshDiscoveryFromClient().catch(() => {});
46151
+ this.eventUnsubscribers.push(this.ctx.eventBus.subscribe({ category: EventCategory.DeviceUnregistered }, (event) => {
46152
+ if (event.data.parentDeviceId !== this.id) return;
46153
+ this.refreshDiscoveryFromClient().catch(() => {});
46154
+ }));
46552
46155
  }
46553
- async onShutdown() {
46554
- try {
46555
- await this.registry?.shutdown();
46156
+ async removeDevice() {
46157
+ for (const unsub of this.eventUnsubscribers) try {
46158
+ unsub();
46159
+ } catch {}
46160
+ this.eventUnsubscribers.length = 0;
46161
+ const mgr = this.manager;
46162
+ this.manager = null;
46163
+ ecowittFacades.set(this.stableId, null);
46164
+ if (mgr) try {
46165
+ await mgr.stop();
46556
46166
  } catch (err) {
46557
- this.ctx.logger.warn("Ecowitt: provider shutdown error", { meta: { error: errMsg(err) } });
46167
+ this.ctx.logger.warn("Ecowitt gateway: client stop failed", { meta: { error: errMsg(err) } });
46558
46168
  }
46559
- this.registry = null;
46560
- await super.onShutdown();
46561
- }
46562
- /** Stable id, broker-scoped. One broker = one gateway, so the brokerId alone
46563
- * is the unique key for the gateway Container. */
46564
- generateStableId(_type, config) {
46565
- return `ecowitt:${String(config?.["brokerId"] ?? "unknown")}`;
46566
46169
  }
46567
- /**
46568
- * Re-derive the adopted gateway Container's `sensors[]` from the live snapshot.
46569
- * When the set changed, re-persist it via the generic `applyDerivedSpec`, which
46570
- * the kernel uses to re-run `getAccessoryChildren()` (spawning new sensor
46571
- * children + removing orphaned ones). Best-effort; never throws.
46572
- */
46573
- async reconcileGatewaySensors(brokerId, sensors) {
46574
- try {
46575
- const reg = this.ctx.kernel.deviceRegistry;
46576
- const devices = this.ctx.kernel.devices;
46577
- if (!reg || !devices) return;
46578
- let containerId = null;
46579
- for (const d of reg.getAllForAddon(this.addonId)) {
46580
- if (d.parentDeviceId !== null) continue;
46581
- const cfg = await devices.loadConfig(d.id).catch(() => ({}));
46582
- if (cfg["system"] === "ecowitt" && cfg["brokerId"] === brokerId) {
46583
- containerId = d.id;
46584
- break;
46585
- }
46586
- }
46587
- if (containerId === null) return;
46588
- const nextSensors = sensors.map((s) => ({
46589
- sensorId: s.id,
46590
- quantity: s.quantity,
46591
- ...s.channel !== void 0 ? { channel: s.channel } : {},
46592
- ...s.name !== void 0 ? { name: s.name } : {}
46593
- }));
46594
- const cfg = await devices.loadConfig(containerId).catch(() => ({}));
46595
- if (sensorsEqual(Array.isArray(cfg["sensors"]) ? cfg["sensors"] : [], nextSensors)) return;
46596
- await devices.applyDerivedSpec(containerId, { config: { sensors: nextSensors } });
46597
- this.ctx.logger.info("Ecowitt: gateway sensors reconciled", { meta: {
46598
- brokerId,
46599
- deviceId: containerId,
46600
- sensorCount: nextSensors.length
46601
- } });
46170
+ async applySettingsPatch(patch) {
46171
+ if (!("connection" in patch)) return;
46172
+ const parsed = ecowittGatewaySchema.parse({
46173
+ connection: patch["connection"],
46174
+ system: "ecowitt-gateway"
46175
+ });
46176
+ await this.config.setAll({ connection: parsed.connection });
46177
+ const mgr = this.manager;
46178
+ if (mgr) try {
46179
+ await mgr.applyConnection(parsed.connection);
46602
46180
  } catch (err) {
46603
- this.ctx.logger.warn("Ecowitt: gateway sensor reconcile failed", { meta: {
46604
- brokerId,
46605
- error: errMsg(err)
46606
- } });
46181
+ this.ctx.logger.warn("Ecowitt gateway: applyConnection failed", { meta: { error: errMsg(err) } });
46607
46182
  }
46608
- }
46609
- buildBrokerProvider() {
46610
- return buildEcowittBrokerProvider({
46611
- ownerAddonId: this.ctx.id,
46612
- registry: this.requireRegistry(),
46613
- getBrokers: () => this.config.brokers,
46614
- persistBrokers: (brokers) => this.updateGlobalSettings({ brokers: [...brokers] }),
46615
- cascadeRemoveDevices: (brokerId) => this.cascadeRemoveDevicesForBroker(brokerId),
46616
- logger: this.ctx.logger
46183
+ else await this.ensureManager().catch((err) => {
46184
+ this.ctx.logger.warn("Ecowitt gateway re-connect after settings change failed", { meta: { error: errMsg(err) } });
46617
46185
  });
46618
46186
  }
46619
- async cascadeRemoveDevicesForBroker(brokerId) {
46620
- const reg = this.ctx.kernel.deviceRegistry;
46621
- const devices = this.ctx.kernel.devices;
46622
- if (!reg || !devices) return;
46623
- await cascadeRemoveDevicesForBroker({
46624
- reg,
46625
- devices,
46626
- addonId: this.addonId,
46627
- brokerId,
46628
- logger: this.ctx.logger
46187
+ /** Build + start the per-device nodewitt client (if not already running). */
46188
+ async ensureManager() {
46189
+ if (this.manager !== null) return;
46190
+ const connection = this.config.values.connection;
46191
+ const mgr = new EcowittIntegrationManager({
46192
+ id: this.stableId,
46193
+ name: this.name,
46194
+ connection,
46195
+ logger: this.ctx.logger,
46196
+ onConnected: () => this.setGatewayOnline(true),
46197
+ onDisconnected: () => this.setGatewayOnline(false),
46198
+ onSensorsChanged: (_id, sensors) => this.handleSensorsChanged(sensors),
46199
+ onFacadeBuilt: (_id, facade) => ecowittFacades.set(this.stableId, facade)
46629
46200
  });
46201
+ this.manager = mgr;
46202
+ await mgr.start();
46630
46203
  }
46631
- async reconcileIntegrationsToBrokers() {
46632
- try {
46633
- const mine = (await this.ctx.api.integrations.list.query()).filter((i) => i.addonId === this.ctx.id);
46634
- const surviving = new Set(mine.map((i) => i.id));
46635
- for (const integration of mine) {
46636
- const settings = await this.ctx.api.integrations.getSettings.query({ id: integration.id });
46637
- const brokerId = typeof settings["brokerId"] === "string" ? settings["brokerId"] : void 0;
46638
- if (brokerId === void 0) continue;
46639
- if (!this.config.brokers.some((b) => b.id === brokerId)) {
46640
- this.ctx.logger.warn("Ecowitt integration→broker: linked broker not found", { meta: {
46641
- integrationId: integration.id,
46642
- brokerId
46643
- } });
46644
- continue;
46645
- }
46646
- this.requireRegistry().linkIntegration(integration.id, brokerId);
46647
- }
46648
- const toRemove = this.config.brokers.filter((b) => b.integrationId !== void 0 && !surviving.has(b.integrationId)).map((b) => b.id);
46649
- if (toRemove.length === 0) return;
46650
- for (const id of toRemove) try {
46651
- await this.requireRegistry().removeEntry(id);
46652
- await this.cascadeRemoveDevicesForBroker(id);
46653
- } catch (err) {
46654
- this.ctx.logger.warn("Ecowitt integration→broker: broker cleanup failed", { meta: {
46655
- brokerId: id,
46656
- error: errMsg(err)
46657
- } });
46658
- }
46659
- const nextBrokers = this.config.brokers.filter((b) => !toRemove.includes(b.id));
46660
- await this.updateGlobalSettings({ brokers: nextBrokers });
46661
- } catch (err) {
46662
- this.ctx.logger.warn("Ecowitt integration→broker reconcile failed", { meta: { error: errMsg(err) } });
46663
- }
46664
- }
46665
- subscribeIntegrationLifecycle() {
46666
- const handler = (event) => {
46667
- const addonId = event.data["addonId"];
46668
- if (typeof addonId === "string" && addonId !== this.ctx.id) return;
46669
- this.reconcileIntegrationsToBrokers();
46670
- };
46671
- this.ctx.eventBus.subscribe({ category: EventCategory.IntegrationEnabled }, handler);
46672
- this.ctx.eventBus.subscribe({ category: EventCategory.IntegrationDisabled }, handler);
46673
- this.ctx.eventBus.subscribe({ category: EventCategory.IntegrationDeleted }, handler);
46674
- }
46675
- buildAdoptionProvider() {
46676
- return buildEcowittAdoptionProvider({
46677
- registry: {
46678
- getFacadeForBroker: (id) => this.requireRegistry().get(id) !== null ? { getSensors: () => ecowittFacades.getSensors(id) } : null,
46679
- list: () => this.requireRegistry().list().map((b) => ({
46680
- id: b.id,
46681
- name: b.name
46682
- }))
46204
+ setGatewayOnline(online) {
46205
+ if (this.online === online) return;
46206
+ this.markOnline(online);
46207
+ this.ctx.logger.info("Ecowitt gateway " + (online ? "online" : "offline"), { tags: { deviceId: this.id } });
46208
+ this.setContainersOnline(online).catch(() => {});
46209
+ }
46210
+ async setContainersOnline(online) {
46211
+ const children = await this.ctx.devices.getChildren(this.id).catch(() => []);
46212
+ for (const child of children) {
46213
+ if (child.type !== DeviceType.Container) continue;
46214
+ if (child.online === online) continue;
46215
+ child.markOnline(online);
46216
+ }
46217
+ }
46218
+ /** On each snapshot: cache sensors, re-derive discovery, additively reconcile
46219
+ * every adopted group Container's `sensors[]`. */
46220
+ handleSensorsChanged(sensors) {
46221
+ this.latestSensors = sensors;
46222
+ this.refreshDiscoveryFromClient().catch(() => {});
46223
+ this.reconcileGroupSensors(sensors).catch((err) => {
46224
+ this.ctx.logger.warn("Ecowitt gateway: sensor reconcile failed", { meta: { error: errMsg(err) } });
46225
+ });
46226
+ }
46227
+ registerDeviceDiscovery() {
46228
+ this.ctx.registerNativeCap(deviceDiscoveryCapability, {
46229
+ getStatus: async ({ deviceId }) => {
46230
+ if (deviceId !== this.id) return null;
46231
+ return this.runtimeState.getCapState("device-discovery") ?? null;
46683
46232
  },
46684
- logger: this.ctx.logger,
46685
- getBrokerIdForIntegration: async (id) => {
46686
- const brokerId = (await this.ctx.api.integrations.getSettings.query({ id }))["brokerId"];
46687
- if (typeof brokerId !== "string") throw new Error(`integration ${id} has no linked brokerId`);
46688
- return brokerId;
46233
+ listDiscovered: async ({ deviceId }) => {
46234
+ if (deviceId !== this.id) return [];
46235
+ return this.runtimeState.getCapState("device-discovery")?.discovered ?? [];
46689
46236
  },
46690
- listAdoptedEcowitt: async () => {
46691
- const reg = this.ctx.kernel.deviceRegistry;
46692
- const devices = this.ctx.kernel.devices;
46693
- if (!reg || !devices) return [];
46694
- const out = [];
46695
- for (const d of reg.getAllForAddon(this.addonId)) {
46696
- if (d.parentDeviceId !== null) continue;
46697
- const config = await devices.loadConfig(d.id).catch(() => ({}));
46698
- out.push({
46699
- id: d.id,
46700
- config
46701
- });
46702
- }
46703
- return out;
46237
+ refreshDiscovery: async ({ deviceId }) => {
46238
+ if (deviceId !== this.id) return [];
46239
+ await this.refreshDiscoveryFromClient();
46240
+ return this.runtimeState.getCapState("device-discovery")?.discovered ?? [];
46704
46241
  },
46705
- adoptGateway: async ({ brokerId, integrationId, name }) => {
46706
- const devices = this.ctx.kernel.devices;
46707
- if (!devices) throw new Error("ecowitt adopt: kernel.devices unavailable");
46708
- const config = {
46709
- brokerId,
46710
- sensors: ecowittFacades.getSensors(brokerId).map((s) => ({
46711
- sensorId: s.id,
46712
- quantity: s.quantity,
46713
- ...s.channel !== void 0 ? { channel: s.channel } : {},
46714
- ...s.name !== void 0 ? { name: s.name } : {}
46715
- })),
46716
- system: "ecowitt",
46717
- integrationId,
46718
- name
46719
- };
46720
- const stableId = this.generateStableId(DeviceType.Container, config);
46721
- const device = await devices.create(stableId, EcowittContainerDevice, config, null, {
46722
- type: DeviceType.Container,
46723
- name,
46724
- integrationId
46725
- });
46726
- const children = await devices.getChildren(device.id);
46727
- return {
46728
- deviceId: device.id,
46729
- accessoryDeviceIds: children.map((c) => c.id)
46730
- };
46731
- },
46732
- removeDevice: async (id) => {
46733
- await this.ctx.kernel.devices?.remove(id);
46242
+ adoptDevice: async ({ deviceId, childNativeId, name }) => {
46243
+ if (deviceId !== this.id) throw new Error(`adoptDevice: deviceId mismatch — got ${deviceId}, expected ${this.id}`);
46244
+ return this.adoptGroupContainer(childNativeId, name);
46734
46245
  },
46735
- findDeviceConfig: async (id) => {
46736
- const devices = this.ctx.kernel.devices;
46737
- if (!devices) return null;
46738
- return devices.loadConfig(id).catch(() => null);
46246
+ releaseDevice: async ({ deviceId, childDeviceId }) => {
46247
+ if (deviceId !== this.id) return;
46248
+ await this.releaseGroupContainer(childDeviceId);
46739
46249
  }
46740
46250
  });
46251
+ this.setCapSlice(deviceDiscoveryCapability, {
46252
+ discovered: [],
46253
+ lastDiscoveryAt: null,
46254
+ lastError: null,
46255
+ lastFetchedAt: 0
46256
+ });
46741
46257
  }
46742
- globalSettingsSchema() {
46743
- return this.schema({ sections: [{
46744
- id: "ecowitt-broker",
46745
- title: "Ecowitt gateway",
46746
- description: "Ecowitt gateways are managed in the External systems → Brokers tab.",
46747
- columns: 1,
46748
- fields: [{
46749
- type: "info",
46750
- key: "brokerHelp",
46751
- label: "Gateways are managed separately",
46752
- content: "This integration links to an Ecowitt gateway broker. Add, edit, or remove gateways from External systems → Brokers. The integration only stores a reference to its broker."
46753
- }]
46754
- }] });
46755
- }
46756
- async supportsManualCreation() {
46757
- return false;
46758
- }
46759
- async onGetCreationSchema(_type) {
46760
- return null;
46258
+ /** Enumerate the three gateway-group Container candidates from the live client
46259
+ * snapshot, flag `alreadyAdopted` per group, persist into the slice. */
46260
+ async refreshDiscoveryFromClient() {
46261
+ let lastError = null;
46262
+ let discovered = [];
46263
+ try {
46264
+ const sensors = ecowittFacades.get(this.stableId)?.getSensors() ?? this.latestSensors;
46265
+ const adoptedByGroup = await this.adoptedContainerIdByGroup();
46266
+ discovered = buildEcowittGatewayCandidates({
46267
+ gatewayId: this.stableId,
46268
+ gatewayName: this.name,
46269
+ sensors,
46270
+ adoptedDeviceIdByGroup: adoptedByGroup
46271
+ });
46272
+ } catch (err) {
46273
+ lastError = errMsg(err);
46274
+ this.ctx.logger.warn("Ecowitt gateway discovery refresh failed", { meta: { error: lastError } });
46275
+ }
46276
+ this.runtimeState.setCapState(deviceDiscoveryCapability.name, {
46277
+ discovered,
46278
+ lastDiscoveryAt: Date.now(),
46279
+ lastError,
46280
+ lastFetchedAt: Date.now()
46281
+ });
46761
46282
  }
46762
- async onCreateDevice(_type, _config) {
46763
- throw new Error("Ecowitt gateways are adopted, not created manually");
46283
+ /** Map each device group → the adopted group Container's device id (null when
46284
+ * not adopted), by walking this gateway's direct children. */
46285
+ async adoptedContainerIdByGroup() {
46286
+ const out = {};
46287
+ const children = await this.ctx.devices.getChildren(this.id).catch(() => []);
46288
+ for (const child of children) {
46289
+ if (child.type !== DeviceType.Container) continue;
46290
+ const cfg = await this.ctx.devices.loadConfig(child.id).catch(() => ({}));
46291
+ if (cfg["system"] !== "ecowitt") continue;
46292
+ out[configDeviceGroup(cfg)] = child.id;
46293
+ }
46294
+ return out;
46764
46295
  }
46765
- setBrokerDevicesOnline(brokerId, online) {
46766
- const reg = this.ctx.kernel.deviceRegistry;
46767
- if (!reg) return;
46768
- const n = setBrokerDevicesOnline(reg.getAllForAddon(this.addonId), brokerId, online);
46769
- if (n > 0) this.ctx.logger.info("Ecowitt: broker devices " + (online ? "online" : "offline"), { meta: {
46770
- brokerId,
46771
- count: n
46772
- } });
46296
+ /** Promote a discovered group candidate to a real group Container child. */
46297
+ async adoptGroupContainer(childNativeId, nameOverride) {
46298
+ const group = ECOWITT_DEVICE_GROUPS.find((g) => groupNativeId(this.stableId, g) === childNativeId);
46299
+ if (group === void 0) throw new Error(`adoptDevice: ${childNativeId} does not match any gateway group`);
46300
+ const existingId = (await this.adoptedContainerIdByGroup())[group];
46301
+ if (typeof existingId === "number") {
46302
+ const existing = (await this.ctx.devices.getAll()).find((d) => d.id === existingId);
46303
+ if (existing) return {
46304
+ deviceId: existing.id,
46305
+ stableId: existing.stableId
46306
+ };
46307
+ }
46308
+ const sensors = (ecowittFacades.get(this.stableId)?.getSensors() ?? this.latestSensors).filter((s) => deviceGroupForSensor(s.category, s.channel) === group).map(sensorToEntry);
46309
+ const name = nameOverride ?? `${this.name} — ${group}`;
46310
+ const config = {
46311
+ gatewayId: this.stableId,
46312
+ deviceGroup: group,
46313
+ sensors,
46314
+ system: "ecowitt",
46315
+ name
46316
+ };
46317
+ const stableId = `${this.stableId}:${group}`;
46318
+ const created = await this.ctx.devices.create(stableId, EcowittContainerDevice, config, this.id, {
46319
+ type: DeviceType.Container,
46320
+ name
46321
+ });
46322
+ this.ctx.logger.info("Ecowitt gateway: adopted group container", {
46323
+ tags: { deviceId: created.id },
46324
+ meta: {
46325
+ group,
46326
+ stableId,
46327
+ sensorCount: sensors.length
46328
+ }
46329
+ });
46330
+ await this.refreshDiscoveryFromClient().catch(() => {});
46331
+ return {
46332
+ deviceId: created.id,
46333
+ stableId
46334
+ };
46773
46335
  }
46774
- requireRegistry() {
46775
- if (!this.registry) throw new Error("Ecowitt provider not initialised");
46776
- return this.registry;
46336
+ async releaseGroupContainer(childDeviceId) {
46337
+ const child = (await this.ctx.devices.getAll()).find((d) => d.id === childDeviceId);
46338
+ if (!child || child.parentDeviceId !== this.id) throw new Error(`releaseDevice: ${childDeviceId} is not a child of gateway ${this.id}`);
46339
+ await this.ctx.devices.remove(childDeviceId);
46340
+ await this.refreshDiscoveryFromClient().catch(() => {});
46341
+ }
46342
+ /** Re-derive every adopted group Container's `sensors[]` from the live
46343
+ * snapshot (group-filtered) and re-persist via `applyDerivedSpec` when it
46344
+ * changed. Best-effort. */
46345
+ async reconcileGroupSensors(sensors) {
46346
+ const byGroup = bucketSensorsByGroup(sensors);
46347
+ const children = await this.ctx.devices.getChildren(this.id).catch(() => []);
46348
+ for (const child of children) {
46349
+ if (child.type !== DeviceType.Container) continue;
46350
+ const cfg = await this.ctx.devices.loadConfig(child.id).catch(() => ({}));
46351
+ if (cfg["system"] !== "ecowitt") continue;
46352
+ const group = configDeviceGroup(cfg);
46353
+ const nextSensors = byGroup.get(group) ?? [];
46354
+ if (sensorsEqual(Array.isArray(cfg["sensors"]) ? cfg["sensors"] : [], nextSensors)) continue;
46355
+ await this.ctx.devices.applyDerivedSpec(child.id, { config: { sensors: nextSensors } });
46356
+ this.ctx.logger.info("Ecowitt gateway: group sensors reconciled", { meta: {
46357
+ deviceId: child.id,
46358
+ group,
46359
+ sensorCount: nextSensors.length
46360
+ } });
46361
+ }
46777
46362
  }
46778
46363
  };
46779
- /** Structural equality of two persisted sensor lists (order-independent by id). */
46364
+ /** Resolve `deviceGroup` from a persisted container config (defaults to 'gateway'). */
46365
+ function configDeviceGroup(config) {
46366
+ const g = config["deviceGroup"];
46367
+ return ECOWITT_DEVICE_GROUPS.find((group) => group === g) ?? "gateway";
46368
+ }
46369
+ /** Build the persisted sensor entry (incl. self-describing category) from a live Sensor. */
46370
+ function sensorToEntry(s) {
46371
+ return {
46372
+ sensorId: s.id,
46373
+ quantity: s.quantity,
46374
+ ...s.channel !== void 0 ? { channel: s.channel } : {},
46375
+ ...s.name !== void 0 ? { name: s.name } : {},
46376
+ ...s.category !== void 0 ? { category: s.category } : {}
46377
+ };
46378
+ }
46379
+ /** Bucket live sensors into their device group. */
46380
+ function bucketSensorsByGroup(sensors) {
46381
+ const byGroup = /* @__PURE__ */ new Map();
46382
+ for (const group of ECOWITT_DEVICE_GROUPS) byGroup.set(group, []);
46383
+ for (const s of sensors) {
46384
+ const group = deviceGroupForSensor(s.category, s.channel);
46385
+ byGroup.get(group)?.push(sensorToEntry(s));
46386
+ }
46387
+ return byGroup;
46388
+ }
46389
+ /** Structural equality of two persisted sensor lists (order-independent by id + name). */
46780
46390
  function sensorsEqual(a, b) {
46781
46391
  if (a.length !== b.length) return false;
46782
46392
  const aById = /* @__PURE__ */ new Map();
@@ -46794,12 +46404,120 @@ function sensorsEqual(a, b) {
46794
46404
  return true;
46795
46405
  }
46796
46406
  //#endregion
46407
+ //#region src/addon.ts
46408
+ /**
46409
+ * Ecowitt weather-station device-provider addon — `mode: standalone` (the
46410
+ * Reolink pattern). No broker, no device-adoption cap. A gateway is added as a
46411
+ * DEVICE via the manual-creation form: the CONNECTION (transport / host / port /
46412
+ * password OR listener) lives on the gateway DEVICE config. The created gateway
46413
+ * is a {@link DeviceType.Hub} ({@link EcowittGatewayDevice}) that owns its own
46414
+ * live `@apocaliss92/nodewitt` client and registers `device-discovery` to adopt
46415
+ * its own children: up to THREE group {@link DeviceType.Container} children
46416
+ * (gateway / weather-station / temp-sensor-ch1), each fanning out one typed
46417
+ * sensor child per `Sensor.quantity`.
46418
+ *
46419
+ * `instanceMode: multiple` — many gateways may be added.
46420
+ */
46421
+ var EcowittProviderAddon = class extends BaseDeviceProvider {
46422
+ addonId = "provider-ecowitt";
46423
+ providerName = "Ecowitt";
46424
+ deviceClasses = {
46425
+ [DeviceType.Hub]: EcowittGatewayDevice,
46426
+ [DeviceType.Container]: EcowittContainerDevice
46427
+ };
46428
+ constructor() {
46429
+ super({});
46430
+ }
46431
+ async supportsDiscovery() {
46432
+ return false;
46433
+ }
46434
+ async supportsManualCreation() {
46435
+ return true;
46436
+ }
46437
+ async onGetCreationSchema(type) {
46438
+ if (type !== DeviceType.Hub) return null;
46439
+ return buildConnectionFormSchema();
46440
+ }
46441
+ async onCreateDevice(type, config) {
46442
+ if (type !== DeviceType.Hub) throw new Error(`Ecowitt provider does not support device type: ${type}`);
46443
+ const name = typeof config["name"] === "string" ? config["name"].trim() : "";
46444
+ if (!name) throw new Error("Gateway name is required");
46445
+ const connection = settingsToEcowittConfig(config);
46446
+ if (connection.transport === "local" && connection.host.trim().length === 0) throw new Error("Gateway host is required for local-poll transport");
46447
+ const stableId = this.generateStableId(DeviceType.Hub, { connection });
46448
+ const manager = new EcowittIntegrationManager({
46449
+ id: stableId,
46450
+ name,
46451
+ connection,
46452
+ logger: this.ctx.logger,
46453
+ onConnected: () => void 0,
46454
+ onDisconnected: () => void 0,
46455
+ onSensorsChanged: () => void 0,
46456
+ onFacadeBuilt: (_id, facade) => ecowittFacades.set(stableId, facade)
46457
+ });
46458
+ try {
46459
+ await manager.start();
46460
+ } catch (err) {
46461
+ this.ctx.logger.warn("Ecowitt create: initial client start failed — device kept", { meta: {
46462
+ stableId,
46463
+ error: errMsg(err)
46464
+ } });
46465
+ }
46466
+ return {
46467
+ meta: {
46468
+ type: DeviceType.Hub,
46469
+ name
46470
+ },
46471
+ config: {
46472
+ connection,
46473
+ system: "ecowitt-gateway"
46474
+ },
46475
+ onAfterCreate: async (device) => {
46476
+ if (device instanceof EcowittGatewayDevice) device.adoptManager(manager);
46477
+ }
46478
+ };
46479
+ }
46480
+ /**
46481
+ * Gateway stableId — derived from the connection (Reolink-style host/identity
46482
+ * key), NOT a broker id. Priority: `stationId` (operator-provided stable id) →
46483
+ * `host` (local transport) → `listen:<port>` (listener transport). Re-adding
46484
+ * the same gateway reuses its persisted row.
46485
+ */
46486
+ generateStableId(_type, config) {
46487
+ const connection = extractConnection(config);
46488
+ const station = typeof connection?.stationId === "string" ? connection.stationId.trim() : "";
46489
+ if (station.length > 0) return `ecowitt:${slug(station)}`;
46490
+ if (connection?.transport === "local") {
46491
+ const host = connection.host.trim();
46492
+ if (host.length > 0) return `ecowitt:${slug(host)}`;
46493
+ }
46494
+ if (connection?.transport === "listener") return `ecowitt:listen-${connection.listenPort}`;
46495
+ throw new Error("Ecowitt: gateway resolved neither a station id nor a host/listen endpoint — cannot persist a stable row key.");
46496
+ }
46497
+ };
46498
+ /** Narrow the create-spec config's `connection` field to an {@link EcowittConfig}. */
46499
+ function extractConnection(config) {
46500
+ const raw = config?.["connection"];
46501
+ if (typeof raw !== "object" || raw === null) return null;
46502
+ const transport = raw.transport;
46503
+ if (transport !== "local" && transport !== "listener") return null;
46504
+ return settingsToEcowittConfig(raw);
46505
+ }
46506
+ /** Flatten a host / station id into a readable row-key slug. */
46507
+ function slug(value) {
46508
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
46509
+ }
46510
+ //#endregion
46511
+ exports.ECOWITT_DEVICE_GROUPS = ECOWITT_DEVICE_GROUPS;
46797
46512
  exports.EcowittProviderAddon = EcowittProviderAddon;
46798
46513
  exports.buildConnectionFormSchema = buildConnectionFormSchema;
46799
- exports.buildEcowittGatewayCandidate = buildEcowittGatewayCandidate;
46514
+ exports.buildEcowittGatewayCandidates = buildEcowittGatewayCandidates;
46800
46515
  exports.capForQuantity = capForQuantity;
46801
- exports.ecowittAddonConfigSchema = ecowittAddonConfigSchema;
46516
+ exports.deviceGroupForSensor = deviceGroupForSensor;
46517
+ exports.deviceGroupLabel = deviceGroupLabel;
46802
46518
  exports.ecowittConfigSchema = ecowittConfigSchema;
46519
+ exports.ecowittGatewaySchema = ecowittGatewaySchema;
46520
+ exports.groupNativeId = groupNativeId;
46803
46521
  exports.sensorLabel = sensorLabel;
46804
46522
  exports.settingsToEcowittConfig = settingsToEcowittConfig;
46805
46523
  exports.valueFieldForCap = valueFieldForCap;