@das-fed/utils 7.0.0-zhaohang.4 → 7.0.0-zhaohang.5
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/api-services/index.js +88 -84
- package/api-services/index.js.gz +0 -0
- package/api-services/modules/app-manage/index.js +705 -683
- package/api-services/modules/app-manage/index.js.gz +0 -0
- package/api-services/modules/authentication/index.js +39 -35
- package/api-services/modules/authentication/index.js.gz +0 -0
- package/api-services/modules/bems/index.js +735 -713
- package/api-services/modules/bems/index.js.gz +0 -0
- package/api-services/modules/contract/index.js +39 -35
- package/api-services/modules/contract/index.js.gz +0 -0
- package/api-services/modules/duty-manage/index.js +38 -34
- package/api-services/modules/duty-manage/index.js.gz +0 -0
- package/api-services/modules/enterpriseright/index.js +39 -35
- package/api-services/modules/enterpriseright/index.js.gz +0 -0
- package/api-services/modules/file/index.js +114 -110
- package/api-services/modules/file/index.js.gz +0 -0
- package/api-services/modules/gateway-edge/index.js +687 -701
- package/api-services/modules/gateway-edge/index.js.gz +0 -0
- package/api-services/modules/index.js +88 -84
- package/api-services/modules/index.js.gz +0 -0
- package/api-services/modules/iot/index.js +689 -703
- package/api-services/modules/iot/index.js.gz +0 -0
- package/api-services/modules/justauth/index.js +704 -686
- package/api-services/modules/justauth/index.js.gz +0 -0
- package/api-services/modules/knowledge/index.js +705 -683
- package/api-services/modules/knowledge/index.js.gz +0 -0
- package/api-services/modules/link/index.js +39 -35
- package/api-services/modules/link/index.js.gz +0 -0
- package/api-services/modules/permission/index.js +39 -35
- package/api-services/modules/permission/index.js.gz +0 -0
- package/api-services/modules/platformManage/index.js +42 -38
- package/api-services/modules/platformManage/index.js.gz +0 -0
- package/api-services/modules/portal/index.js +39 -35
- package/api-services/modules/portal/index.js.gz +0 -0
- package/api-services/modules/space-manage/index.js +639 -639
- package/api-services/modules/space-manage/index.js.gz +0 -0
- package/api-services/modules/super-admin/index.js +698 -712
- package/api-services/modules/super-admin/index.js.gz +0 -0
- package/api-services/modules/supplier/index.js +734 -712
- package/api-services/modules/supplier/index.js.gz +0 -0
- package/api-services/modules/supplychain-manage/index.js +39 -35
- package/api-services/modules/supplychain-manage/index.js.gz +0 -0
- package/api-services/modules/systemConfiguration/index.js +705 -683
- package/api-services/modules/systemConfiguration/index.js.gz +0 -0
- package/api-services/modules/tool/index.js +703 -685
- package/api-services/modules/tool/index.js.gz +0 -0
- package/api-services/src/create-service/index.js +38 -34
- package/api-services/src/create-service/index.js.gz +0 -0
- package/create-api-service/index.js +704 -682
- package/create-api-service/index.js.gz +0 -0
- package/curring-http/index.js +1 -1
- package/curring-http/index.js.gz +0 -0
- package/package.json +4 -4
package/api-services/index.js
CHANGED
|
@@ -1712,22 +1712,22 @@ N.getAdapter = Cn.getAdapter;
|
|
|
1712
1712
|
N.HttpStatusCode = Kt;
|
|
1713
1713
|
N.default = N;
|
|
1714
1714
|
const {
|
|
1715
|
-
Axios:
|
|
1716
|
-
AxiosError:
|
|
1717
|
-
CanceledError:
|
|
1718
|
-
isCancel:
|
|
1719
|
-
CancelToken:
|
|
1720
|
-
VERSION:
|
|
1721
|
-
all:
|
|
1722
|
-
Cancel:
|
|
1723
|
-
isAxiosError:
|
|
1724
|
-
spread:
|
|
1725
|
-
toFormData:
|
|
1726
|
-
AxiosHeaders:
|
|
1727
|
-
HttpStatusCode:
|
|
1728
|
-
formToJSON:
|
|
1729
|
-
getAdapter:
|
|
1730
|
-
mergeConfig:
|
|
1715
|
+
Axios: kc,
|
|
1716
|
+
AxiosError: Bc,
|
|
1717
|
+
CanceledError: Uc,
|
|
1718
|
+
isCancel: jc,
|
|
1719
|
+
CancelToken: qc,
|
|
1720
|
+
VERSION: zc,
|
|
1721
|
+
all: Hc,
|
|
1722
|
+
Cancel: Wc,
|
|
1723
|
+
isAxiosError: Gc,
|
|
1724
|
+
spread: Kc,
|
|
1725
|
+
toFormData: Jc,
|
|
1726
|
+
AxiosHeaders: Vc,
|
|
1727
|
+
HttpStatusCode: Qc,
|
|
1728
|
+
formToJSON: Xc,
|
|
1729
|
+
getAdapter: Yc,
|
|
1730
|
+
mergeConfig: Zc
|
|
1731
1731
|
} = N;
|
|
1732
1732
|
var Cr = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
|
|
1733
1733
|
function ri(t) {
|
|
@@ -3226,26 +3226,30 @@ const io = ur.noRedireLogin ?? !1, so = () => {
|
|
|
3226
3226
|
if (io) return;
|
|
3227
3227
|
const t = "/login";
|
|
3228
3228
|
location.pathname !== t && (sessionStorage.clear(), window.__isAutoCloseApp = !1, location.replace(t));
|
|
3229
|
-
}, an = "SUC0000", ec = async (t) => {
|
|
3230
|
-
var i, s, u, l, c
|
|
3229
|
+
}, an = "SUC0000", ec = "AUM0020401", tc = async (t) => {
|
|
3230
|
+
var a, i, s, u, l, c;
|
|
3231
3231
|
let e = t.data || {};
|
|
3232
3232
|
const n = (e == null ? void 0 : e.returnCode) || an;
|
|
3233
|
-
let r =
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
}
|
|
3233
|
+
let r = {};
|
|
3234
|
+
if (n !== an) {
|
|
3235
|
+
let p = e.errorMsg ?? "";
|
|
3236
|
+
return !(ho("code") || "") && !io && n === ec ? (ao ? go({ ...wo, redirect_uri: vo }) : so(), r = e) : (e instanceof Blob && (e = await new Promise((g) => {
|
|
3237
|
+
const y = new FileReader();
|
|
3238
|
+
y.readAsText(e, "utf-8"), y.onload = () => {
|
|
3239
|
+
try {
|
|
3240
|
+
g(JSON.parse(y.result || "{}"));
|
|
3241
|
+
} catch {
|
|
3242
|
+
g({ code: 400, msg: D("blob解析错误") });
|
|
3243
|
+
}
|
|
3244
|
+
};
|
|
3245
|
+
})), r = e), (a = t.config) != null && a.customErrorMessage && (p = (i = t.config) == null ? void 0 : i.customErrorMessage(p, n)), !((s = t.config) != null && s.ignoreErrorMessage) && p && ((l = (u = window.DasMessage) == null ? void 0 : u.error) == null || l.call(u, { message: p, showClose: !0 })), { data: r, code: n, msg: p };
|
|
3246
|
+
}
|
|
3247
|
+
return ((c = t.config) == null ? void 0 : c.responseType) === "blob" ? t : { data: t.data ?? {}, code: n };
|
|
3248
|
+
}, rc = async (t, e) => {
|
|
3245
3249
|
var o, a, i, s;
|
|
3246
3250
|
let n = ((o = t == null ? void 0 : t.response) == null ? void 0 : o.data) || {}, r = (a = t.response) == null ? void 0 : a.message;
|
|
3247
3251
|
if (!t.response)
|
|
3248
|
-
return t.request ? t.code === "ERR_CANCELED" ? t.abortReason && (r = t.abortReason) : r = D("网络异常,请检查您的网络情况") : t.code === "ERR_CANCELED" ? t.abortReason && (r = t.abortReason) : r = D("请求配置异常"), !(e != null && e.ignoreErrorMessage) && r && ((s = (i = window.DasMessage) == null ? void 0 : i.error) == null || s.call(i, { message: r, showClose: !0 })), {
|
|
3252
|
+
return t.request ? t.code === "ERR_CANCELED" ? t.abortReason && (r = t.abortReason) : r = D("网络异常,请检查您的网络情况") : t.code === "ERR_CANCELED" ? t.abortReason && (r = t.abortReason) : r = D("请求配置异常"), !(e != null && e.ignoreErrorMessage) && r && ((s = (i = window.DasMessage) == null ? void 0 : i.error) == null || s.call(i, { message: r, showClose: !0 })), { data: n, code: t.code, msg: r, error: t };
|
|
3249
3253
|
}, b = (t, e) => {
|
|
3250
3254
|
const n = N.create();
|
|
3251
3255
|
return yo(n, async (r) => {
|
|
@@ -3258,7 +3262,7 @@ const io = ur.noRedireLogin ?? !1, so = () => {
|
|
|
3258
3262
|
}
|
|
3259
3263
|
ao ? l || (l = await mo(r)) : (l || (l = Oo()), l || so()), l && !r.headers.Authorization && (r.headers.Authorization = `Bearer ${l}`);
|
|
3260
3264
|
}
|
|
3261
|
-
r.baseURL || (r.baseURL = o.baseURL || ""), r.urlPrefix || (r.urlPrefix = t), r.paramsSerializer || (r.paramsSerializer = { serialize: (l) => Ql.stringify(l, { indices: !1 }) }), r.onSuccess || (r.onSuccess =
|
|
3265
|
+
r.baseURL || (r.baseURL = o.baseURL || ""), r.urlPrefix || (r.urlPrefix = t), r.paramsSerializer || (r.paramsSerializer = { serialize: (l) => Ql.stringify(l, { indices: !1 }) }), r.onSuccess || (r.onSuccess = tc), r.onError || (r.onError = rc), (r.csrf ?? !1) && (r.headers["csrf-token"] = Yl.get("csrf-token"));
|
|
3262
3266
|
const s = r.params || {};
|
|
3263
3267
|
if (s.project === void 0) {
|
|
3264
3268
|
let l = 0;
|
|
@@ -3271,11 +3275,11 @@ const io = ur.noRedireLogin ?? !1, so = () => {
|
|
|
3271
3275
|
}
|
|
3272
3276
|
return r.params = s, r.headers.Timezone = rt.tz.guess(), r.headers["X-Origin"] = location.origin, r.headers["Accept-Language"] = po.value, (e == null ? void 0 : e(r)) || r;
|
|
3273
3277
|
});
|
|
3274
|
-
},
|
|
3278
|
+
}, nc = "v1", eu = b(`/api/app-manager/application/${nc}`), oc = "v1", tu = b(`/api/license/admin/${oc}`), ac = "v1", jt = `/api/bems/data-manage/${ac}`, ru = {
|
|
3275
3279
|
energyType: b(`${jt}/energy-type`),
|
|
3276
3280
|
energyObject: b(`${jt}/energy-object`),
|
|
3277
3281
|
energyDimension: b(`${jt}/energy-dimension`)
|
|
3278
|
-
},
|
|
3282
|
+
}, ic = "v1", nu = b(`/api/supply/contract/${ic}`), qe = "v1", ou = {
|
|
3279
3283
|
classes: b(`/api/duty-manage/classes/${qe}`),
|
|
3280
3284
|
// 班次管理
|
|
3281
3285
|
group: b(`/api/duty-manage/group/${qe}`),
|
|
@@ -3284,17 +3288,17 @@ const io = ur.noRedireLogin ?? !1, so = () => {
|
|
|
3284
3288
|
// 排班管理
|
|
3285
3289
|
shift: b(`/api/duty-manage/shift/${qe}`)
|
|
3286
3290
|
// 交接班管理
|
|
3287
|
-
},
|
|
3291
|
+
}, sc = "v1", au = b(`/api/enterpriseright/permission/${sc}`), V = "v1", iu = b(`/api/iot/${V}`), su = {
|
|
3288
3292
|
thingmodel: b(`/api/iot-device/thingmodel/${V}`),
|
|
3289
3293
|
deviceManage: b(`/api/iot-device/devicemanage/${V}`),
|
|
3290
3294
|
product: b(`/api/iot-device/product/${V}`),
|
|
3291
3295
|
productStorage: b(`/api/iot-device/product-storage/${V}`)
|
|
3292
|
-
},
|
|
3296
|
+
}, lu = {
|
|
3293
3297
|
projectDevice: b(`/api/device-relation/deviceproject/${V}`),
|
|
3294
3298
|
deviceRules: b(`/api/device-relation/devicerule/${V}`),
|
|
3295
3299
|
project: b(`/api/device-relation/project/${V}`)
|
|
3296
|
-
}, fr = b(`/api/oss/minio/${V}`),
|
|
3297
|
-
let
|
|
3300
|
+
}, fr = b(`/api/oss/minio/${V}`), lc = b(`/api/progress/accessor/${V}`), cu = b(`/api/dms/analysis/${V}`);
|
|
3301
|
+
let cc = (t = 21) => {
|
|
3298
3302
|
let e = "", n = crypto.getRandomValues(new Uint8Array(t));
|
|
3299
3303
|
for (; t--; ) {
|
|
3300
3304
|
let r = n[t] & 63;
|
|
@@ -3302,12 +3306,12 @@ let lc = (t = 21) => {
|
|
|
3302
3306
|
}
|
|
3303
3307
|
return e;
|
|
3304
3308
|
};
|
|
3305
|
-
const
|
|
3309
|
+
const uc = fr.get("token"), fc = fr.post("put-object", (t) => (t.headers || (t.headers = {}), t.headers["Content-Type"] = "multipart/form-data", t.responseType = "blob", t)), pc = fr.post("upload-objects", (t) => (t.headers || (t.headers = {}), t.headers["Content-Type"] = "multipart/form-data", t.responseType = "blob", t)), dc = lc.get("progress"), uu = () => {
|
|
3306
3310
|
let t = K(!1), e = K(""), n = K(0), r = K("normal"), o = K(!1), a, i = K(""), s = K(""), u = K(""), l = K(""), c = K(!1), p = K(""), d = "", g = K(""), y;
|
|
3307
3311
|
const h = () => {
|
|
3308
3312
|
s.value = "", u.value = "", l.value = "", c.value = !1, p.value = "";
|
|
3309
3313
|
}, m = async () => {
|
|
3310
|
-
const [E, O] = await
|
|
3314
|
+
const [E, O] = await uc().run();
|
|
3311
3315
|
return E ? { stauts: !1 } : { status: !0, data: O };
|
|
3312
3316
|
}, A = (E) => new Promise((O, $) => {
|
|
3313
3317
|
const _ = [];
|
|
@@ -3324,7 +3328,7 @@ const cc = fr.get("token"), uc = fr.post("put-object", (t) => (t.headers || (t.h
|
|
|
3324
3328
|
const z = await m();
|
|
3325
3329
|
if (!z.status) return;
|
|
3326
3330
|
let U = z.data, j = null, { autoContentType: G, bucketName: X, importFileName: Le } = $;
|
|
3327
|
-
const co = w ?
|
|
3331
|
+
const co = w ? pc : fc;
|
|
3328
3332
|
if (w) {
|
|
3329
3333
|
let oe = [];
|
|
3330
3334
|
await O.forEach(async (ke) => {
|
|
@@ -3349,7 +3353,7 @@ const cc = fr.get("token"), uc = fr.post("put-object", (t) => (t.headers || (t.h
|
|
|
3349
3353
|
}
|
|
3350
3354
|
const [uo, fo] = await co(j).run();
|
|
3351
3355
|
if (uo) return t.value = !1;
|
|
3352
|
-
const Y = await
|
|
3356
|
+
const Y = await mc(fo.data);
|
|
3353
3357
|
if (!w && (Y == null ? void 0 : Y.statusCode) != 200 || w && (Y != null && Y.some((oe) => (oe == null ? void 0 : oe.statusCode) != 200))) {
|
|
3354
3358
|
t.value = !1, (dr = window.DasMessage) == null || dr.error({
|
|
3355
3359
|
message: (Y == null ? void 0 : Y.errorMsg) || D("上传失败"),
|
|
@@ -3396,7 +3400,7 @@ const cc = fr.get("token"), uc = fr.post("put-object", (t) => (t.headers || (t.h
|
|
|
3396
3400
|
clearTimeout(a), a = null, t.value = !1;
|
|
3397
3401
|
}, k = async (E, O = "export", $, x = "") => {
|
|
3398
3402
|
var z, U, j;
|
|
3399
|
-
const [_, w] = await
|
|
3403
|
+
const [_, w] = await dc("", {
|
|
3400
3404
|
url: `progress/${E}`
|
|
3401
3405
|
}).run();
|
|
3402
3406
|
if (_) {
|
|
@@ -3462,14 +3466,14 @@ const cc = fr.get("token"), uc = fr.post("put-object", (t) => (t.headers || (t.h
|
|
|
3462
3466
|
fileAction: v,
|
|
3463
3467
|
generateUniqueName: (E) => {
|
|
3464
3468
|
const O = E == null ? void 0 : E.match(/(.*?)(\.[^.]*$|$)/), $ = O.length ? O[2] : "";
|
|
3465
|
-
return `${O.length ? O[1] : E}${
|
|
3469
|
+
return `${O.length ? O[1] : E}${cc()}${$}`;
|
|
3466
3470
|
},
|
|
3467
3471
|
downloadFile: sn,
|
|
3468
3472
|
resetStataus: h,
|
|
3469
3473
|
checkProgress: T,
|
|
3470
3474
|
fileHandleType: g
|
|
3471
3475
|
};
|
|
3472
|
-
},
|
|
3476
|
+
}, yc = (t) => {
|
|
3473
3477
|
let e = t == null ? void 0 : t.toLocaleLowerCase();
|
|
3474
3478
|
return {
|
|
3475
3479
|
excel: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
@@ -3502,7 +3506,7 @@ const cc = fr.get("token"), uc = fr.post("put-object", (t) => (t.headers || (t.h
|
|
|
3502
3506
|
const r = new XMLHttpRequest();
|
|
3503
3507
|
r.open("get", t), r.setRequestHeader("Content-Type", "application/json; charset=UTF-8"), r.responseType = "blob", r.onload = function(o) {
|
|
3504
3508
|
const a = new Blob([this.response], {
|
|
3505
|
-
type:
|
|
3509
|
+
type: yc(n)
|
|
3506
3510
|
}), i = URL.createObjectURL(a);
|
|
3507
3511
|
if (window.navigator.msSaveOrOpenBlob)
|
|
3508
3512
|
navigator.msSaveBlob(a, e);
|
|
@@ -3511,55 +3515,55 @@ const cc = fr.get("token"), uc = fr.post("put-object", (t) => (t.headers || (t.h
|
|
|
3511
3515
|
s.href = i, s.download = e, s.click(), window.URL.revokeObjectURL(i);
|
|
3512
3516
|
}
|
|
3513
3517
|
}, r.send();
|
|
3514
|
-
},
|
|
3518
|
+
}, mc = (t) => new Promise((e, n) => {
|
|
3515
3519
|
var r = new FileReader();
|
|
3516
3520
|
r.onload = function(o) {
|
|
3517
3521
|
let a = "";
|
|
3518
3522
|
typeof r.result == "string" && (a = JSON.parse(r.result)), e(a);
|
|
3519
3523
|
}, r.readAsText(t);
|
|
3520
|
-
}),
|
|
3524
|
+
}), hc = "v2", fu = b(`/api/edge/${hc}`), lo = "v1", pu = b(`/api/justauth/oauth-server/${lo}/visitor`), du = b(`/api/justauth/oauth-server/${lo}`), gc = "v1", yu = b(`/api/knowledge-base/knowledge/${gc}`), vc = "v1", mu = b(`/api/custom-datasource/custom/${vc}`), wc = "v1", hu = b(`/api/permission/${wc}`), fe = "v1", gu = b(`/api/customer/customer/${fe}`), vu = b(`/api/customer/company/${fe}`), wu = b(`/api/customer/customer-grade/${fe}`), bu = b(`/api/customer/customer-type/${fe}`), Su = {
|
|
3521
3525
|
list: b(`/api/project/${fe}/list`),
|
|
3522
3526
|
app: b(`/api/project/${fe}/app`),
|
|
3523
3527
|
people: b(`/api/project/${fe}/people`)
|
|
3524
|
-
},
|
|
3528
|
+
}, bc = "v1", Eu = b(`/api/portal/user/${bc}`), Sc = "v1", Au = b(`/api/space-manage/space-tree/${Sc}`), dt = "v1", Ou = b(`/api/superadmin/portal/${dt}`), Ru = b(`/api/superadmin/permission/${dt}`), Pu = b(`/api/superadmin/resource/${dt}`), xu = b(`/api/superadmin/license/${dt}`), pr = "v1", Tu = b(`/api/supply/supplier/${pr}`), $u = b(`/api/supplier/${pr}`), Cu = b(`/api/supplier/${pr}/classification`), Ec = "v1", _u = b(`/api/supply/brand/${Ec}`), Ac = "v2", Nu = b(`/api/tool/${Ac}`), Oc = "v1", Fu = b(`/api/system-config/${Oc}`);
|
|
3525
3529
|
ln(Ro);
|
|
3526
3530
|
export {
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
|
|
3531
|
+
cu as analyApi,
|
|
3532
|
+
eu as appManage,
|
|
3533
|
+
tu as authentication,
|
|
3534
|
+
ru as bemsModules,
|
|
3535
|
+
vu as company,
|
|
3536
|
+
nu as contract,
|
|
3533
3537
|
b as createService,
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
+
gu as customer,
|
|
3539
|
+
wu as customerGrade,
|
|
3540
|
+
bu as customerType,
|
|
3541
|
+
mu as daslink,
|
|
3538
3542
|
sn as downloadFile,
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3543
|
+
ou as dutyModules,
|
|
3544
|
+
_u as enterpriseadminBrandModel,
|
|
3545
|
+
au as enterpriseright,
|
|
3546
|
+
fu as gatewayEdge,
|
|
3547
|
+
iu as iot,
|
|
3544
3548
|
fr as iotMinio,
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3549
|
+
su as iotModules,
|
|
3550
|
+
lc as iotProgress,
|
|
3551
|
+
lu as iotRelationModules,
|
|
3552
|
+
pu as justauth,
|
|
3553
|
+
yu as knowledgeBase,
|
|
3554
|
+
du as oauthServer,
|
|
3555
|
+
hu as permission,
|
|
3556
|
+
Eu as portal,
|
|
3557
|
+
Su as projectManage,
|
|
3558
|
+
Au as spaceManage,
|
|
3559
|
+
xu as superadminLicense,
|
|
3560
|
+
Ru as superadminPermission,
|
|
3561
|
+
Ou as superadminPortal,
|
|
3562
|
+
Pu as superadminResource,
|
|
3563
|
+
Tu as supplier,
|
|
3564
|
+
Cu as supplierClassification,
|
|
3565
|
+
$u as supplierManage,
|
|
3566
|
+
Fu as systemConfiguration,
|
|
3567
|
+
Nu as tool,
|
|
3568
|
+
uu as useFile
|
|
3565
3569
|
};
|
package/api-services/index.js.gz
CHANGED
|
Binary file
|