mindee 4.1.1 → 4.3.0
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 +19 -0
- package/README.md +4 -1
- package/package.json +1 -1
- package/src/client.js +2 -8
- package/src/geometry/boundingBox.d.ts +7 -1
- package/src/geometry/boundingBox.js +11 -0
- package/src/geometry/boundingBoxUtils.d.ts +2 -2
- package/src/geometry/boundingBoxUtils.js +11 -28
- package/src/geometry/index.js +3 -1
- package/src/http/error.d.ts +1 -1
- package/src/http/error.js +2 -2
- package/src/parsing/common/inference.js +1 -2
- package/src/parsing/custom/index.d.ts +1 -1
- package/src/parsing/custom/index.js +2 -3
- package/src/parsing/custom/lineItems.d.ts +3 -16
- package/src/parsing/custom/lineItems.js +29 -37
- package/src/parsing/standard/base.d.ts +2 -2
- package/src/parsing/standard/base.js +2 -2
- package/src/parsing/standard/field.d.ts +10 -10
- package/src/parsing/standard/field.js +10 -10
- package/src/parsing/standard/position.js +12 -1
- package/src/product/barcodeReader/barcodeReaderV1.d.ts +16 -0
- package/src/product/barcodeReader/barcodeReaderV1.js +22 -0
- package/src/product/barcodeReader/barcodeReaderV1Document.d.ts +16 -0
- package/src/product/barcodeReader/barcodeReaderV1Document.js +37 -0
- package/src/product/barcodeReader/internal.d.ts +2 -0
- package/src/product/barcodeReader/internal.js +7 -0
- package/src/product/cropper/cropperV1.d.ts +4 -3
- package/src/product/cropper/cropperV1.js +4 -3
- package/src/product/cropper/cropperV1Document.d.ts +2 -6
- package/src/product/cropper/cropperV1Document.js +2 -19
- package/src/product/cropper/cropperV1Page.d.ts +12 -0
- package/src/product/cropper/cropperV1Page.js +26 -0
- package/src/product/cropper/internal.d.ts +1 -0
- package/src/product/cropper/internal.js +3 -1
- package/src/product/custom/customV1Document.d.ts +8 -1
- package/src/product/custom/customV1Document.js +9 -0
- package/src/product/custom/customV1Page.d.ts +8 -1
- package/src/product/custom/customV1Page.js +9 -0
- package/src/product/fr/carteVitale/carteVitaleV1Document.js +1 -1
- package/src/product/fr/idCard/idCardV1Document.js +1 -1
- package/src/product/fr/idCard/idCardV2.d.ts +17 -0
- package/src/product/fr/idCard/idCardV2.js +23 -0
- package/src/product/fr/idCard/idCardV2Document.d.ts +42 -0
- package/src/product/fr/idCard/idCardV2Document.js +98 -0
- package/src/product/fr/idCard/idCardV2Page.d.ts +14 -0
- package/src/product/fr/idCard/idCardV2Page.js +27 -0
- package/src/product/fr/idCard/internal.d.ts +1 -0
- package/src/product/fr/idCard/internal.js +3 -1
- package/src/product/fr/index.d.ts +1 -0
- package/src/product/fr/index.js +3 -1
- package/src/product/index.d.ts +8 -6
- package/src/product/index.js +16 -12
- package/src/product/internal.d.ts +2 -0
- package/src/product/internal.js +3 -1
- package/src/product/multiReceiptsDetector/internal.d.ts +2 -0
- package/src/product/multiReceiptsDetector/internal.js +7 -0
- package/src/product/multiReceiptsDetector/multiReceiptsDetectorV1.d.ts +16 -0
- package/src/product/multiReceiptsDetector/multiReceiptsDetectorV1.js +22 -0
- package/src/product/multiReceiptsDetector/multiReceiptsDetectorV1Document.d.ts +14 -0
- package/src/product/multiReceiptsDetector/multiReceiptsDetectorV1Document.js +28 -0
- package/src/product/passport/passportV1Document.js +1 -1
- package/src/product/proofOfAddress/proofOfAddressV1Document.js +2 -2
- package/src/product/us/bankCheck/bankCheckV1Page.js +1 -1
- package/src/product/us/index.d.ts +1 -0
- package/src/product/us/index.js +3 -1
- package/src/product/us/w9/internal.d.ts +3 -0
- package/src/product/us/w9/internal.js +9 -0
- package/src/product/us/w9/w9V1.d.ts +17 -0
- package/src/product/us/w9/w9V1.js +23 -0
- package/src/product/us/w9/w9V1Document.d.ts +10 -0
- package/src/product/us/w9/w9V1Document.js +15 -0
- package/src/product/us/w9/w9V1Page.d.ts +34 -0
- package/src/product/us/w9/w9V1Page.js +78 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultiReceiptsDetectorV1Document = exports.MultiReceiptsDetectorV1 = void 0;
|
|
4
|
+
var multiReceiptsDetectorV1_1 = require("./multiReceiptsDetectorV1");
|
|
5
|
+
Object.defineProperty(exports, "MultiReceiptsDetectorV1", { enumerable: true, get: function () { return multiReceiptsDetectorV1_1.MultiReceiptsDetectorV1; } });
|
|
6
|
+
var multiReceiptsDetectorV1Document_1 = require("./multiReceiptsDetectorV1Document");
|
|
7
|
+
Object.defineProperty(exports, "MultiReceiptsDetectorV1Document", { enumerable: true, get: function () { return multiReceiptsDetectorV1Document_1.MultiReceiptsDetectorV1Document; } });
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Inference, StringDict, Page } from "../../parsing/common";
|
|
2
|
+
import { MultiReceiptsDetectorV1Document } from "./multiReceiptsDetectorV1Document";
|
|
3
|
+
/**
|
|
4
|
+
* Inference prediction for Multi Receipts Detector, API version 1.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MultiReceiptsDetectorV1 extends Inference {
|
|
7
|
+
/** The endpoint's name. */
|
|
8
|
+
endpointName: string;
|
|
9
|
+
/** The endpoint's version. */
|
|
10
|
+
endpointVersion: string;
|
|
11
|
+
/** The document-level prediction. */
|
|
12
|
+
prediction: MultiReceiptsDetectorV1Document;
|
|
13
|
+
/** The document's pages. */
|
|
14
|
+
pages: Page<MultiReceiptsDetectorV1Document>[];
|
|
15
|
+
constructor(rawPrediction: StringDict);
|
|
16
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultiReceiptsDetectorV1 = void 0;
|
|
4
|
+
const common_1 = require("../../parsing/common");
|
|
5
|
+
const multiReceiptsDetectorV1Document_1 = require("./multiReceiptsDetectorV1Document");
|
|
6
|
+
/**
|
|
7
|
+
* Inference prediction for Multi Receipts Detector, API version 1.
|
|
8
|
+
*/
|
|
9
|
+
class MultiReceiptsDetectorV1 extends common_1.Inference {
|
|
10
|
+
constructor(rawPrediction) {
|
|
11
|
+
super(rawPrediction);
|
|
12
|
+
/** The endpoint's name. */
|
|
13
|
+
this.endpointName = "multi_receipts_detector";
|
|
14
|
+
/** The endpoint's version. */
|
|
15
|
+
this.endpointVersion = "1";
|
|
16
|
+
/** The document's pages. */
|
|
17
|
+
this.pages = [];
|
|
18
|
+
this.prediction = new multiReceiptsDetectorV1Document_1.MultiReceiptsDetectorV1Document(rawPrediction["prediction"]);
|
|
19
|
+
this.pages = rawPrediction["pages"].map((page) => new common_1.Page(multiReceiptsDetectorV1Document_1.MultiReceiptsDetectorV1Document, page, page["id"], page["orientation"]));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.MultiReceiptsDetectorV1 = MultiReceiptsDetectorV1;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Prediction, StringDict } from "../../parsing/common";
|
|
2
|
+
import { PositionField } from "../../parsing/standard";
|
|
3
|
+
/**
|
|
4
|
+
* Document data for Multi Receipts Detector, API version 1.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MultiReceiptsDetectorV1Document implements Prediction {
|
|
7
|
+
/** Positions of the receipts on the document. */
|
|
8
|
+
receipts: PositionField[];
|
|
9
|
+
constructor(rawPrediction: StringDict, pageId?: number);
|
|
10
|
+
/**
|
|
11
|
+
* Default string representation.
|
|
12
|
+
*/
|
|
13
|
+
toString(): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultiReceiptsDetectorV1Document = void 0;
|
|
4
|
+
const common_1 = require("../../parsing/common");
|
|
5
|
+
const standard_1 = require("../../parsing/standard");
|
|
6
|
+
/**
|
|
7
|
+
* Document data for Multi Receipts Detector, API version 1.
|
|
8
|
+
*/
|
|
9
|
+
class MultiReceiptsDetectorV1Document {
|
|
10
|
+
constructor(rawPrediction, pageId) {
|
|
11
|
+
/** Positions of the receipts on the document. */
|
|
12
|
+
this.receipts = [];
|
|
13
|
+
rawPrediction["receipts"] &&
|
|
14
|
+
rawPrediction["receipts"].map((itemPrediction) => this.receipts.push(new standard_1.PositionField({
|
|
15
|
+
prediction: itemPrediction,
|
|
16
|
+
pageId: pageId,
|
|
17
|
+
})));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Default string representation.
|
|
21
|
+
*/
|
|
22
|
+
toString() {
|
|
23
|
+
const receipts = this.receipts.join("\n ");
|
|
24
|
+
const outStr = `:List of Receipts: ${receipts}`.trimEnd();
|
|
25
|
+
return (0, common_1.cleanOutString)(outStr);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.MultiReceiptsDetectorV1Document = MultiReceiptsDetectorV1Document;
|
|
@@ -60,7 +60,7 @@ class PassportV1Document {
|
|
|
60
60
|
* Default string representation.
|
|
61
61
|
*/
|
|
62
62
|
toString() {
|
|
63
|
-
const givenNames = this.givenNames.join("\n
|
|
63
|
+
const givenNames = this.givenNames.join("\n ");
|
|
64
64
|
const outStr = `:Country Code: ${this.country}
|
|
65
65
|
:ID Number: ${this.idNumber}
|
|
66
66
|
:Given Name(s): ${givenNames}
|
|
@@ -57,8 +57,8 @@ class ProofOfAddressV1Document {
|
|
|
57
57
|
* Default string representation.
|
|
58
58
|
*/
|
|
59
59
|
toString() {
|
|
60
|
-
const issuerCompanyRegistration = this.issuerCompanyRegistration.join("\n
|
|
61
|
-
const recipientCompanyRegistration = this.recipientCompanyRegistration.join("\n
|
|
60
|
+
const issuerCompanyRegistration = this.issuerCompanyRegistration.join("\n ");
|
|
61
|
+
const recipientCompanyRegistration = this.recipientCompanyRegistration.join("\n ");
|
|
62
62
|
const dates = this.dates.join("\n ");
|
|
63
63
|
const outStr = `:Locale: ${this.locale}
|
|
64
64
|
:Issuer Name: ${this.issuerName}
|
|
@@ -22,7 +22,7 @@ class BankCheckV1Page extends bankCheckV1Document_1.BankCheckV1Document {
|
|
|
22
22
|
})));
|
|
23
23
|
}
|
|
24
24
|
toString() {
|
|
25
|
-
const signaturesPositions = this.signaturesPositions.join("\n
|
|
25
|
+
const signaturesPositions = this.signaturesPositions.join("\n ");
|
|
26
26
|
let outStr = `:Check Position: ${this.checkPosition}
|
|
27
27
|
:Signature Positions: ${signaturesPositions}`.trimEnd();
|
|
28
28
|
outStr += "\n" + super.toString();
|
package/src/product/us/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DriverLicenseV1 = exports.BankCheckV1 = void 0;
|
|
3
|
+
exports.W9V1 = exports.DriverLicenseV1 = exports.BankCheckV1 = void 0;
|
|
4
4
|
var bankCheckV1_1 = require("./bankCheck/bankCheckV1");
|
|
5
5
|
Object.defineProperty(exports, "BankCheckV1", { enumerable: true, get: function () { return bankCheckV1_1.BankCheckV1; } });
|
|
6
6
|
var driverLicenseV1_1 = require("./driverLicense/driverLicenseV1");
|
|
7
7
|
Object.defineProperty(exports, "DriverLicenseV1", { enumerable: true, get: function () { return driverLicenseV1_1.DriverLicenseV1; } });
|
|
8
|
+
var w9V1_1 = require("./w9/w9V1");
|
|
9
|
+
Object.defineProperty(exports, "W9V1", { enumerable: true, get: function () { return w9V1_1.W9V1; } });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.W9V1Page = exports.W9V1Document = exports.W9V1 = void 0;
|
|
4
|
+
var w9V1_1 = require("./w9V1");
|
|
5
|
+
Object.defineProperty(exports, "W9V1", { enumerable: true, get: function () { return w9V1_1.W9V1; } });
|
|
6
|
+
var w9V1Document_1 = require("./w9V1Document");
|
|
7
|
+
Object.defineProperty(exports, "W9V1Document", { enumerable: true, get: function () { return w9V1Document_1.W9V1Document; } });
|
|
8
|
+
var w9V1Page_1 = require("./w9V1Page");
|
|
9
|
+
Object.defineProperty(exports, "W9V1Page", { enumerable: true, get: function () { return w9V1Page_1.W9V1Page; } });
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Inference, StringDict, Page } from "../../../parsing/common";
|
|
2
|
+
import { W9V1Document } from "./w9V1Document";
|
|
3
|
+
import { W9V1Page } from "./w9V1Page";
|
|
4
|
+
/**
|
|
5
|
+
* Inference prediction for US W9, API version 1.
|
|
6
|
+
*/
|
|
7
|
+
export declare class W9V1 extends Inference {
|
|
8
|
+
/** The endpoint's name. */
|
|
9
|
+
endpointName: string;
|
|
10
|
+
/** The endpoint's version. */
|
|
11
|
+
endpointVersion: string;
|
|
12
|
+
/** The document-level prediction. */
|
|
13
|
+
prediction: W9V1Document;
|
|
14
|
+
/** The document's pages. */
|
|
15
|
+
pages: Page<W9V1Page>[];
|
|
16
|
+
constructor(rawPrediction: StringDict);
|
|
17
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.W9V1 = void 0;
|
|
4
|
+
const common_1 = require("../../../parsing/common");
|
|
5
|
+
const w9V1Document_1 = require("./w9V1Document");
|
|
6
|
+
const w9V1Page_1 = require("./w9V1Page");
|
|
7
|
+
/**
|
|
8
|
+
* Inference prediction for US W9, API version 1.
|
|
9
|
+
*/
|
|
10
|
+
class W9V1 extends common_1.Inference {
|
|
11
|
+
constructor(rawPrediction) {
|
|
12
|
+
super(rawPrediction);
|
|
13
|
+
/** The endpoint's name. */
|
|
14
|
+
this.endpointName = "us_w9";
|
|
15
|
+
/** The endpoint's version. */
|
|
16
|
+
this.endpointVersion = "1";
|
|
17
|
+
/** The document's pages. */
|
|
18
|
+
this.pages = [];
|
|
19
|
+
this.prediction = new w9V1Document_1.W9V1Document();
|
|
20
|
+
this.pages = rawPrediction["pages"].map((page) => new common_1.Page(w9V1Page_1.W9V1Page, page, page["id"], page["orientation"]));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.W9V1 = W9V1;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.W9V1Document = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Document data for US W9, API version 1.
|
|
6
|
+
*/
|
|
7
|
+
class W9V1Document {
|
|
8
|
+
/**
|
|
9
|
+
* Default string representation.
|
|
10
|
+
*/
|
|
11
|
+
toString() {
|
|
12
|
+
return "";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.W9V1Document = W9V1Document;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { StringDict } from "../../../parsing/common";
|
|
2
|
+
import { PositionField, StringField } from "../../../parsing/standard";
|
|
3
|
+
import { W9V1Document } from "./w9V1Document";
|
|
4
|
+
/**
|
|
5
|
+
* Page data for US W9, API version 1.
|
|
6
|
+
*/
|
|
7
|
+
export declare class W9V1Page extends W9V1Document {
|
|
8
|
+
/** The street address (number, street, and apt. or suite no.) of the applicant. */
|
|
9
|
+
address: StringField;
|
|
10
|
+
/** The business name or disregarded entity name, if different from Name. */
|
|
11
|
+
businessName: StringField;
|
|
12
|
+
/** The city, state, and ZIP code of the applicant. */
|
|
13
|
+
cityStateZip: StringField;
|
|
14
|
+
/** The employer identification number. */
|
|
15
|
+
ein: StringField;
|
|
16
|
+
/** Name as shown on the applicant's income tax return. */
|
|
17
|
+
name: StringField;
|
|
18
|
+
/** Position of the signature date on the document. */
|
|
19
|
+
signatureDatePosition: PositionField;
|
|
20
|
+
/** Position of the signature on the document. */
|
|
21
|
+
signaturePosition: PositionField;
|
|
22
|
+
/** The applicant's social security number. */
|
|
23
|
+
ssn: StringField;
|
|
24
|
+
/** The federal tax classification, which can vary depending on the revision date. */
|
|
25
|
+
taxClassification: StringField;
|
|
26
|
+
/** Depending on revision year, among S, C, P or D for Limited Liability Company Classification. */
|
|
27
|
+
taxClassificationLlc: StringField;
|
|
28
|
+
/** Tax Classification Other Details. */
|
|
29
|
+
taxClassificationOtherDetails: StringField;
|
|
30
|
+
/** The Revision month and year of the W9 form. */
|
|
31
|
+
w9RevisionDate: StringField;
|
|
32
|
+
constructor(rawPrediction: StringDict, pageId?: number);
|
|
33
|
+
toString(): string;
|
|
34
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.W9V1Page = void 0;
|
|
4
|
+
const common_1 = require("../../../parsing/common");
|
|
5
|
+
const standard_1 = require("../../../parsing/standard");
|
|
6
|
+
const w9V1Document_1 = require("./w9V1Document");
|
|
7
|
+
/**
|
|
8
|
+
* Page data for US W9, API version 1.
|
|
9
|
+
*/
|
|
10
|
+
class W9V1Page extends w9V1Document_1.W9V1Document {
|
|
11
|
+
constructor(rawPrediction, pageId) {
|
|
12
|
+
super();
|
|
13
|
+
this.address = new standard_1.StringField({
|
|
14
|
+
prediction: rawPrediction["address"],
|
|
15
|
+
pageId: pageId,
|
|
16
|
+
});
|
|
17
|
+
this.businessName = new standard_1.StringField({
|
|
18
|
+
prediction: rawPrediction["business_name"],
|
|
19
|
+
pageId: pageId,
|
|
20
|
+
});
|
|
21
|
+
this.cityStateZip = new standard_1.StringField({
|
|
22
|
+
prediction: rawPrediction["city_state_zip"],
|
|
23
|
+
pageId: pageId,
|
|
24
|
+
});
|
|
25
|
+
this.ein = new standard_1.StringField({
|
|
26
|
+
prediction: rawPrediction["ein"],
|
|
27
|
+
pageId: pageId,
|
|
28
|
+
});
|
|
29
|
+
this.name = new standard_1.StringField({
|
|
30
|
+
prediction: rawPrediction["name"],
|
|
31
|
+
pageId: pageId,
|
|
32
|
+
});
|
|
33
|
+
this.signatureDatePosition = new standard_1.PositionField({
|
|
34
|
+
prediction: rawPrediction["signature_date_position"],
|
|
35
|
+
pageId: pageId,
|
|
36
|
+
});
|
|
37
|
+
this.signaturePosition = new standard_1.PositionField({
|
|
38
|
+
prediction: rawPrediction["signature_position"],
|
|
39
|
+
pageId: pageId,
|
|
40
|
+
});
|
|
41
|
+
this.ssn = new standard_1.StringField({
|
|
42
|
+
prediction: rawPrediction["ssn"],
|
|
43
|
+
pageId: pageId,
|
|
44
|
+
});
|
|
45
|
+
this.taxClassification = new standard_1.StringField({
|
|
46
|
+
prediction: rawPrediction["tax_classification"],
|
|
47
|
+
pageId: pageId,
|
|
48
|
+
});
|
|
49
|
+
this.taxClassificationLlc = new standard_1.StringField({
|
|
50
|
+
prediction: rawPrediction["tax_classification_llc"],
|
|
51
|
+
pageId: pageId,
|
|
52
|
+
});
|
|
53
|
+
this.taxClassificationOtherDetails = new standard_1.StringField({
|
|
54
|
+
prediction: rawPrediction["tax_classification_other_details"],
|
|
55
|
+
pageId: pageId,
|
|
56
|
+
});
|
|
57
|
+
this.w9RevisionDate = new standard_1.StringField({
|
|
58
|
+
prediction: rawPrediction["w9_revision_date"],
|
|
59
|
+
pageId: pageId,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
toString() {
|
|
63
|
+
const outStr = `:Name: ${this.name}
|
|
64
|
+
:SSN: ${this.ssn}
|
|
65
|
+
:Address: ${this.address}
|
|
66
|
+
:City State Zip: ${this.cityStateZip}
|
|
67
|
+
:Business Name: ${this.businessName}
|
|
68
|
+
:EIN: ${this.ein}
|
|
69
|
+
:Tax Classification: ${this.taxClassification}
|
|
70
|
+
:Tax Classification Other Details: ${this.taxClassificationOtherDetails}
|
|
71
|
+
:W9 Revision Date: ${this.w9RevisionDate}
|
|
72
|
+
:Signature Position: ${this.signaturePosition}
|
|
73
|
+
:Signature Date Position: ${this.signatureDatePosition}
|
|
74
|
+
:Tax Classification LLC: ${this.taxClassificationLlc}`.trimEnd();
|
|
75
|
+
return (0, common_1.cleanOutString)(outStr);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.W9V1Page = W9V1Page;
|