@xyo-network/xl1-cli-lib 1.16.0 → 1.16.1
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/node/index.mjs +14 -5
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/orchestration/actor/implementation/BalanceActor.d.ts +2 -2
- package/dist/node/orchestration/actor/implementation/BalanceActor.d.ts.map +1 -1
- package/dist/node/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts +2 -2
- package/dist/node/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts.map +1 -1
- package/dist/node/orchestration/actor/implementation/ProducerActor.d.ts +2 -2
- package/dist/node/orchestration/actor/implementation/ProducerActor.d.ts.map +1 -1
- package/dist/node/orchestration/actor/implementation/ValidatorActor.d.ts +2 -2
- package/dist/node/orchestration/actor/implementation/ValidatorActor.d.ts.map +1 -1
- package/dist/node/orchestration/actor/model/Actor.d.ts +4 -2
- package/dist/node/orchestration/actor/model/Actor.d.ts.map +1 -1
- package/dist/node/xl1.mjs +14 -5
- package/dist/node/xl1.mjs.map +1 -1
- package/package.json +23 -23
- package/src/commands/producer/runProducer.ts +3 -3
- package/src/commands/validator/runValidator.ts +3 -3
- package/src/orchestration/actor/implementation/BalanceActor.ts +2 -2
- package/src/orchestration/actor/implementation/ChainHeadUpdateActor.ts +2 -2
- package/src/orchestration/actor/implementation/ProducerActor.ts +2 -1
- package/src/orchestration/actor/implementation/ValidatorActor.ts +2 -2
- package/src/orchestration/actor/model/Actor.ts +5 -3
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { BaseParams } from '@xylabs/base';
|
|
2
1
|
import type { Promisable } from '@xylabs/promise';
|
|
3
2
|
import type { ChainServiceCollectionV2, Config } from '@xyo-network/xl1-protocol-sdk';
|
|
4
3
|
import { Mutex } from 'async-mutex';
|
|
4
|
+
import type { ActorParams } from '../model/index.ts';
|
|
5
5
|
import { Actor } from '../model/index.ts';
|
|
6
|
-
export type BalanceActorParams =
|
|
6
|
+
export type BalanceActorParams = ActorParams<Pick<ChainServiceCollectionV2, 'balance' | 'chainIterator'> & {
|
|
7
7
|
config: Config;
|
|
8
8
|
}>;
|
|
9
9
|
export declare class BalanceActor extends Actor<BalanceActorParams> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BalanceActor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/implementation/BalanceActor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BalanceActor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/implementation/BalanceActor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAC1C,IAAI,CAAC,wBAAwB,EAAE,SAAS,GAAG,eAAe,CAAC,GACzD;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEvB,qBAAa,YAAa,SAAQ,KAAK,CAAC,kBAAkB,CAAC;IACzD,SAAS,CAAC,YAAY,QAAc;IAEpC,SAAS,aAAa,MAAM,EAAE,kBAAkB;IAIhD,SAAS,KAAK,cAAc,oEAE3B;IAED,SAAS,KAAK,aAAa,oFAE1B;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,UAAU,CAAC,YAAY,CAAC;IAIpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAUrB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/C"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { BaseParams } from '@xylabs/base';
|
|
2
1
|
import type { Promisable } from '@xylabs/promise';
|
|
3
2
|
import type { Payload } from '@xyo-network/payload-model';
|
|
4
3
|
import type { ChainServiceCollectionV2, Config } from '@xyo-network/xl1-protocol-sdk';
|
|
4
|
+
import type { ActorParams } from '../model/index.ts';
|
|
5
5
|
import { Actor } from '../model/index.ts';
|
|
6
|
-
export type ChainHeadUpdateActorParams =
|
|
6
|
+
export type ChainHeadUpdateActorParams = ActorParams<Pick<ChainServiceCollectionV2, 'chainIterator' | 'chainArchivist'> & {
|
|
7
7
|
config: Config;
|
|
8
8
|
}>;
|
|
9
9
|
export declare class ChainHeadUpdateActor extends Actor<ChainHeadUpdateActorParams> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainHeadUpdateActor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/implementation/ChainHeadUpdateActor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChainHeadUpdateActor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/implementation/ChainHeadUpdateActor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAErF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAAC,IAAI,CAAC,wBAAwB,EAAE,eAAe,GAAG,gBAAgB,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE7I,qBAAa,oBAAqB,SAAQ,KAAK,CAAC,0BAA0B,CAAC;IACzE,SAAS,aAAa,MAAM,EAAE,0BAA0B;IAIxD,SAAS,KAAK,uBAAuB,4SAEpC;IAED,SAAS,KAAK,aAAa,oFAE1B;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,UAAU,CAAC,oBAAoB,CAAC;IAIpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAUvB,uBAAuB;YAKvB,cAAc;YAKd,iBAAiB;CAYhC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { BaseParams } from '@xylabs/base';
|
|
2
1
|
import type { Promisable } from '@xylabs/promise';
|
|
3
2
|
import type { ChainStakeIntent, HydratedBlock } from '@xyo-network/xl1-protocol';
|
|
4
3
|
import type { ChainServiceCollectionV2, Config } from '@xyo-network/xl1-protocol-sdk';
|
|
4
|
+
import type { ActorParams } from '../model/index.ts';
|
|
5
5
|
import { Actor } from '../model/index.ts';
|
|
6
|
-
export type ProducerActorParams =
|
|
6
|
+
export type ProducerActorParams = ActorParams<Pick<ChainServiceCollectionV2, 'account' | 'balance' | 'chainIterator' | 'chainStakeViewer' | 'chainSubmissionsArchivistWrite' | 'pendingBundledTransactionsArchivistWrite' | 'producer' | 'stakeIntent'> & {
|
|
7
7
|
config: Config;
|
|
8
8
|
}>;
|
|
9
9
|
export declare class ProducerActor extends Actor<ProducerActorParams> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProducerActor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/implementation/ProducerActor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProducerActor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/implementation/ProducerActor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAMjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAChF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAKrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAC3C,IAAI,CAAC,wBAAwB,EAC7B,SAAS,GACP,SAAS,GACT,eAAe,GACf,kBAAkB,GAClB,gCAAgC,GAChC,0CAA0C,GAC1C,UAAU,GACV,aAAa,CACd,GAAG;IACF,MAAM,EAAE,MAAM,CAAA;CACf,CAAC,CAAA;AAKJ,qBAAa,aAAc,SAAQ,KAAK,CAAC,mBAAmB,CAAC;IAC3D,SAAS,CAAC,kBAAkB,EAAE,aAAa,GAAG,SAAS,CAAA;IACvD,SAAS,CAAC,wBAAwB,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAEhE,SAAS,aAAa,MAAM,EAAE,mBAAmB;IAIjD,SAAS,KAAK,OAAO,uDAEpB;IAED,SAAS,KAAK,cAAc,oEAE3B;IAED,SAAS,KAAK,aAAa,oFAE1B;IAED,SAAS,KAAK,gBAAgB,6DAE7B;IAED,SAAS,KAAK,8BAA8B;;;;QAE3C;IAED,SAAS,KAAK,wCAAwC,iVAErD;IAED,SAAS,KAAK,QAAQ,iEAErB;IAED,SAAS,KAAK,kBAAkB,+DAE/B;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,UAAU,CAAC,aAAa,CAAC;IAItD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAerB,iDAAiD,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAkBxF,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAqC7B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;cAiEhC,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;cAqBrG,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC;cAe1C,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;CAWzD"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { BaseParams } from '@xylabs/base';
|
|
2
1
|
import type { Hash } from '@xylabs/hex';
|
|
3
2
|
import type { Promisable } from '@xylabs/promise';
|
|
4
3
|
import type { BlockBoundWitness } from '@xyo-network/xl1-protocol';
|
|
5
4
|
import type { ChainServiceCollectionV2, Config } from '@xyo-network/xl1-protocol-sdk';
|
|
5
|
+
import type { ActorParams } from '../model/index.ts';
|
|
6
6
|
import { Actor } from '../model/index.ts';
|
|
7
|
-
export type ValidatorActorParams =
|
|
7
|
+
export type ValidatorActorParams = ActorParams<Pick<ChainServiceCollectionV2, 'account' | 'balance' | 'chainIterator' | 'chainStakeViewer' | 'chainSubmissionsArchivistWrite' | 'pendingBundledTransactionsArchivistWrite' | 'stakeIntent'> & {
|
|
8
8
|
config: Config;
|
|
9
9
|
}>;
|
|
10
10
|
export declare class ValidatorActor extends Actor<ValidatorActorParams> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidatorActor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/implementation/ValidatorActor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ValidatorActor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/implementation/ValidatorActor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAErF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,IAAI,CAAC,wBAAwB,EAC7B,SAAS,GACP,SAAS,GACT,eAAe,GACf,kBAAkB,GAClB,gCAAgC,GAChC,0CAA0C,GAC1C,aAAa,CACd,GAAG;IACF,MAAM,EAAE,MAAM,CAAA;CACf,CAAC,CAAA;AAEJ,qBAAa,cAAe,SAAQ,KAAK,CAAC,oBAAoB,CAAC;IAC7D,SAAS,CAAC,mBAAmB,EAAE,iBAAiB,GAAG,SAAS,CAAA;IAC5D,SAAS,CAAC,uBAAuB,EAAE,IAAI,GAAG,SAAS,CAAA;IAEnD,SAAS,aAAa,MAAM,EAAE,oBAAoB;IAIlD,SAAS,KAAK,OAAO,uDAEpB;IAED,SAAS,KAAK,cAAc,oEAE3B;IAED,SAAS,KAAK,aAAa,oFAE1B;IAED,SAAS,KAAK,gBAAgB,6DAE7B;IAED,SAAS,KAAK,8BAA8B;;;;QAE3C;IAED,SAAS,KAAK,wCAAwC,iVAErD;IAED,SAAS,KAAK,kBAAkB,+DAE/B;IAMD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,UAAU,CAAC,cAAc,CAAC;IAIxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cA2BrB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;cAM9D,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAU1E"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type { TracerProvider } from '@opentelemetry/api';
|
|
2
2
|
import { Base, type BaseParams } from '@xylabs/base';
|
|
3
|
+
import type { EmptyObject } from '@xylabs/object';
|
|
3
4
|
import type { Config } from '@xyo-network/xl1-protocol-sdk';
|
|
4
5
|
import { Semaphore } from 'async-mutex';
|
|
5
6
|
export interface IActor {
|
|
6
7
|
start(): Promise<void>;
|
|
7
8
|
stop(): Promise<void>;
|
|
8
9
|
}
|
|
9
|
-
export type ActorParams = BaseParams<{
|
|
10
|
+
export type ActorParams<T extends EmptyObject | void = void> = BaseParams<{
|
|
10
11
|
config: Config;
|
|
12
|
+
name: string;
|
|
11
13
|
traceProvider?: TracerProvider;
|
|
12
|
-
}>;
|
|
14
|
+
} & (T extends void ? EmptyObject : T)>;
|
|
13
15
|
export declare class Actor<TParams extends ActorParams = ActorParams> extends Base<TParams> implements IActor {
|
|
14
16
|
protected readonly _intervals: Map<string, ReturnType<typeof setInterval>>;
|
|
15
17
|
protected readonly _semaphores: Map<string, Semaphore>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/model/Actor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../../../../src/orchestration/actor/model/Actor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,WAAW,MAAM;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,GAAG,IAAI,GAAG,IAAI,IAAI,UAAU,CAAC;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAA;AAEvC,qBAAa,KAAK,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,IAAI,CAAC,OAAO,CAAE,YAAW,MAAM;IACnG,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAY;IACtF,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAY;IAClE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAY;IACpF,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEhB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAU,EAAE,MAAM,EAAE,OAAO;IAOtE,IAAI,WAAW,WAEd;IAED,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,WAEP;IAED,SAAS,KAAK,SAAS,WAEtB;IAED;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IA8DnG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI/B,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE;;OAEG;IACG,KAAK;IAMX;;;OAGG;IACG,IAAI;CA+BX"}
|
package/dist/node/xl1.mjs
CHANGED
|
@@ -70,7 +70,7 @@ var Actor = class extends Base {
|
|
|
70
70
|
return this._id;
|
|
71
71
|
}
|
|
72
72
|
get name() {
|
|
73
|
-
return this.
|
|
73
|
+
return this.params.name;
|
|
74
74
|
}
|
|
75
75
|
get logPrefix() {
|
|
76
76
|
return `[${this.displayName} (${this.id})] `;
|
|
@@ -1713,9 +1713,18 @@ var runProducer = /* @__PURE__ */ __name(async (context) => {
|
|
|
1713
1713
|
...services,
|
|
1714
1714
|
config: config2
|
|
1715
1715
|
};
|
|
1716
|
-
const chainHeadUpdate = await ChainHeadUpdateActor.create(
|
|
1717
|
-
|
|
1718
|
-
|
|
1716
|
+
const chainHeadUpdate = await ChainHeadUpdateActor.create({
|
|
1717
|
+
...params,
|
|
1718
|
+
name: "ChainHeadUpdateActor"
|
|
1719
|
+
});
|
|
1720
|
+
const balances = await BalanceActor.create({
|
|
1721
|
+
...params,
|
|
1722
|
+
name: "BalanceActor"
|
|
1723
|
+
});
|
|
1724
|
+
const producer = await ProducerActor.create({
|
|
1725
|
+
...params,
|
|
1726
|
+
name: "ProducerActor"
|
|
1727
|
+
});
|
|
1719
1728
|
const actors = [
|
|
1720
1729
|
chainHeadUpdate,
|
|
1721
1730
|
balances,
|
|
@@ -1831,7 +1840,7 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
|
|
|
1831
1840
|
|
|
1832
1841
|
// src/runCLI.ts
|
|
1833
1842
|
var configuration;
|
|
1834
|
-
var version = isDefined16("1.
|
|
1843
|
+
var version = isDefined16("1.16.0") ? "1.16.0" : "unknown";
|
|
1835
1844
|
var getContextFromConfig = /* @__PURE__ */ __name((configuration2) => {
|
|
1836
1845
|
const logger = initLogger(configuration2);
|
|
1837
1846
|
const orchestrator = new Orchestrator(logger);
|