@camstack/addon-model-studio 1.1.325 → 1.1.326
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/CHANGELOG.md +6 -0
- package/dist/{MotionZonesSettings-BFSzpDlc.mjs → MotionZonesSettings-oMmkwRPD.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-bzbS1q77.mjs → PrivacyMaskSettings-DHuD6yBb.mjs} +4 -4
- package/dist/{SceneMonitorEditor-5jtlWR_n.mjs → SceneMonitorEditor-CVG3p4fk.mjs} +3 -3
- package/dist/_stub.js +4065 -4031
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-Cw6pUSlz.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-C8W7iGsN.mjs} +3 -3
- package/dist/{_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D8h8qfbd.mjs → _virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YuArysha.mjs} +1 -1
- package/dist/{hostInit-BCmIggoT.mjs → hostInit-tkqlW3Ri.mjs} +2 -2
- package/dist/model-studio.addon.js +26 -7
- package/dist/model-studio.addon.mjs +26 -7
- package/dist/{player-overlays-DwnklNvS.mjs → player-overlays-DLAI6Bot.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-DFhiWOST.mjs → responsive-C-jr4jBc.mjs} +1 -1
- package/dist/{scene-monitor-copy-DVaiZyk_.mjs → scene-monitor-copy-DQx7y4Y7.mjs} +1 -1
- package/dist/{square-CL1GZCDy.mjs → square-Bt9f6ijX.mjs} +1 -1
- package/dist/{trash-2-Bs4Zqar1.mjs → trash-2-u3B-GxOc.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BX2O_m8t.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-T6H-vsb9.mjs} +1 -1
- package/package.json +1 -1
|
@@ -11031,7 +11031,7 @@ object({
|
|
|
11031
11031
|
params: record(string(), union([string(), number()])).optional()
|
|
11032
11032
|
});
|
|
11033
11033
|
//#endregion
|
|
11034
|
-
//#region ../types/dist/err-msg-
|
|
11034
|
+
//#region ../types/dist/err-msg-BD5buxvT.mjs
|
|
11035
11035
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
11036
11036
|
DeviceType["Camera"] = "camera";
|
|
11037
11037
|
DeviceType["Hub"] = "hub";
|
|
@@ -11137,6 +11137,12 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
11137
11137
|
DeviceType["Washer"] = "washer";
|
|
11138
11138
|
/** Tumble dryer. Same plug-built running surface as {@link Washer}. */
|
|
11139
11139
|
DeviceType["Dryer"] = "dryer";
|
|
11140
|
+
/** The physical bridge box of a vendor ecosystem (Velux KLF-200, and later
|
|
11141
|
+
* other radio-to-IP bridges). It carries the box's own facts (firmware,
|
|
11142
|
+
* address, connection state) and the actions the box really supports
|
|
11143
|
+
* (`reboot`, `device-admin-link`). Products are NOT its children — they are
|
|
11144
|
+
* adopted beside it — and its connection settings stay on the integration. */
|
|
11145
|
+
DeviceType["Gateway"] = "gateway";
|
|
11140
11146
|
return DeviceType;
|
|
11141
11147
|
}({});
|
|
11142
11148
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -11387,7 +11393,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11387
11393
|
return DeviceRole;
|
|
11388
11394
|
}({});
|
|
11389
11395
|
//#endregion
|
|
11390
|
-
//#region ../types/dist/composition-
|
|
11396
|
+
//#region ../types/dist/composition-C7WdThmP.mjs
|
|
11391
11397
|
/**
|
|
11392
11398
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11393
11399
|
*
|
|
@@ -19083,8 +19089,21 @@ var BrokerProviderInfoSchema = object({
|
|
|
19083
19089
|
* (`{ sessionId }`) drops the session. The dialog that edits a broker
|
|
19084
19090
|
* offers it as the default path; the fields the session fills are
|
|
19085
19091
|
* marked `filledBySignIn` in the kind's settings schema.
|
|
19092
|
+
*
|
|
19093
|
+
* `methods` lists the ways the session can sign in, recommended first:
|
|
19094
|
+
* `'device-code'` adds `POST {basePath}/code/start` (body: the form's
|
|
19095
|
+
* settings) answering `{ sessionId, userCode, verificationUrl,
|
|
19096
|
+
* expiresAt }` — the operator types `userCode` at `verificationUrl` on
|
|
19097
|
+
* any device, and the same `status` / `commit` / `cancel` routes follow
|
|
19098
|
+
* (status then carries `method`, `userCode`, `verificationUrl`,
|
|
19099
|
+
* `expiresAt` and the phases `'awaiting-code'` / `'expired'`);
|
|
19100
|
+
* `'proxy'` is the `{basePath}/start` flow above. Absent means
|
|
19101
|
+
* `['proxy']`.
|
|
19086
19102
|
*/
|
|
19087
|
-
signIn: object({
|
|
19103
|
+
signIn: object({
|
|
19104
|
+
basePath: string().min(1),
|
|
19105
|
+
methods: array(_enum(["device-code", "proxy"])).optional()
|
|
19106
|
+
}).optional()
|
|
19088
19107
|
}))
|
|
19089
19108
|
});
|
|
19090
19109
|
var ListInputSchema = object({
|
|
@@ -64370,7 +64389,7 @@ object({
|
|
|
64370
64389
|
});
|
|
64371
64390
|
Object.values(DeviceType);
|
|
64372
64391
|
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
64373
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
|
|
64392
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, DeviceType.Gateway, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
|
|
64374
64393
|
kind: "mutation",
|
|
64375
64394
|
auth: "admin"
|
|
64376
64395
|
});
|
|
@@ -68228,7 +68247,7 @@ discriminatedUnion("kind", [object({
|
|
|
68228
68247
|
})]);
|
|
68229
68248
|
DeviceFeature.FanSpeed, DeviceFeature.FanPreset, DeviceFeature.FanDirection, DeviceFeature.FanOscillating, DeviceFeature.CoverPositionable, DeviceFeature.CoverTilt, DeviceFeature.ValvePositionable, DeviceFeature.MediaPlayerVolume, DeviceFeature.ClimateFanMode;
|
|
68230
68249
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
68231
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.EventEmitter, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
68250
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.EventEmitter, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Gateway, DeviceType.Camera, DeviceType.Camera, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
68232
68251
|
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
68233
68252
|
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
68234
68253
|
new Set(CAP_NAMES);
|
|
@@ -68379,7 +68398,7 @@ var AccessoryKind = {
|
|
|
68379
68398
|
PrivacyMask: DeviceRole.PrivacyMask
|
|
68380
68399
|
};
|
|
68381
68400
|
AccessoryKind.Siren, AccessoryKind.Floodlight, AccessoryKind.Spotlight, AccessoryKind.PirSensor, AccessoryKind.Chime, AccessoryKind.Autotrack, AccessoryKind.Nightvision, AccessoryKind.PrivacyMask;
|
|
68382
|
-
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer;
|
|
68401
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Gateway;
|
|
68383
68402
|
new Set(Object.values(DeviceType));
|
|
68384
68403
|
Object.freeze({
|
|
68385
68404
|
"accessories.getStatus": {
|
|
@@ -82436,7 +82455,7 @@ function projectAction(cap, action) {
|
|
|
82436
82455
|
};
|
|
82437
82456
|
}
|
|
82438
82457
|
Object.entries(CAP_VOCABULARY_BY_NAME).flatMap(([cap, entry]) => entry.scope === "device" ? (entry.actions ?? []).map((a) => projectAction(cap, a)) : []);
|
|
82439
|
-
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer;
|
|
82458
|
+
DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Gateway;
|
|
82440
82459
|
DeviceFeature.BatteryOperated;
|
|
82441
82460
|
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
|
|
82442
82461
|
var HA_AS = "a power sensor (device_class power). Home Assistant has no laundry domain. running-state stays unexported until a null reading can be published as unavailable.";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, d as t, u as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import { _ as s, g as c } from "./responsive-
|
|
3
|
+
import { _ as s, g as c } from "./responsive-C-jr4jBc.mjs";
|
|
4
4
|
var l = s("chevron-down", [["path", {
|
|
5
5
|
d: "m6 9 6 6 6-6",
|
|
6
6
|
key: "qrunsl"
|
package/dist/remoteEntry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-
|
|
1
|
+
import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-T6H-vsb9.mjs";
|
|
2
2
|
export { t as get, e as init };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as e, d as t, g as n, i as r, l as i, n as a, r as o, u as s, v as c, y as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
|
-
import { S as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
3
|
+
import { S as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YuArysha.mjs";
|
|
4
4
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
5
5
|
e();
|
|
6
6
|
var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { S as e, g as t, l as n, u as r, v as i } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
|
|
2
2
|
import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
|
|
3
3
|
import { n as a } from "./ui-text-BqZa5BNK.mjs";
|
|
4
|
-
import { _ as o, g as s } from "./responsive-
|
|
4
|
+
import { _ as o, g as s } from "./responsive-C-jr4jBc.mjs";
|
|
5
5
|
var c = o("camera", [["path", {
|
|
6
6
|
d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
|
|
7
7
|
key: "18u6gg"
|
|
@@ -2753,7 +2753,7 @@ async function rr(e) {
|
|
|
2753
2753
|
}
|
|
2754
2754
|
}
|
|
2755
2755
|
async function ir() {
|
|
2756
|
-
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-
|
|
2756
|
+
return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-C8W7iGsN.mjs")).catch((e) => {
|
|
2757
2757
|
throw tr = void 0, e;
|
|
2758
2758
|
}), tr;
|
|
2759
2759
|
}
|