@bitgo-beta/sdk-coin-starknet 0.0.1-beta.1 → 0.0.1-beta.11
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/src/lib/constants.d.ts +5 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +10 -2
- package/dist/src/lib/iface.d.ts +17 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/transaction.d.ts +1 -0
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +12 -1
- package/dist/src/lib/transactionBuilder.d.ts +5 -1
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +43 -4
- package/dist/src/lib/utils.d.ts +23 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +83 -1
- package/dist/test/resources/starknet.d.ts +45 -0
- package/dist/test/resources/starknet.d.ts.map +1 -1
- package/dist/test/resources/starknet.js +31 -2
- package/dist/test/unit/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transferBuilder.js +208 -0
- package/dist/test/unit/utils.d.ts.map +1 -1
- package/dist/test/unit/utils.js +192 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -5,4 +5,9 @@ export declare const MASK_128: bigint;
|
|
|
5
5
|
export declare const ADDR_BOUND: bigint;
|
|
6
6
|
export declare const CONTRACT_ADDRESS_PREFIX = 523065374597054866729014270389667305596563390979550329787219n;
|
|
7
7
|
export declare const DEFAULT_SEED_SIZE_BYTES = 16;
|
|
8
|
+
export declare const INVOKE_TX_PREFIX = 115923154332517n;
|
|
9
|
+
export declare const TRANSACTION_VERSION_3 = 3n;
|
|
10
|
+
export declare const L1_GAS_NAME = 83774935613779n;
|
|
11
|
+
export declare const L2_GAS_NAME = 83779230581075n;
|
|
12
|
+
export declare const L1_DATA_GAS_NAME = 21446383466796097n;
|
|
8
13
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,yBAAyB,sEAAsE,CAAC;AAG7G,eAAO,MAAM,mBAAmB,uEAAuE,CAAC;AAGxG,eAAO,MAAM,QAAQ,QAAyC,CAAC;AAG/D,eAAO,MAAM,QAAQ,QAAoB,CAAC;AAG1C,eAAO,MAAM,UAAU,QAAoB,CAAC;AAG5C,eAAO,MAAM,uBAAuB,gEAAwD,CAAC;AAE7F,eAAO,MAAM,uBAAuB,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,yBAAyB,sEAAsE,CAAC;AAG7G,eAAO,MAAM,mBAAmB,uEAAuE,CAAC;AAGxG,eAAO,MAAM,QAAQ,QAAyC,CAAC;AAG/D,eAAO,MAAM,QAAQ,QAAoB,CAAC;AAG1C,eAAO,MAAM,UAAU,QAAoB,CAAC;AAG5C,eAAO,MAAM,uBAAuB,gEAAwD,CAAC;AAE7F,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAG1C,eAAO,MAAM,gBAAgB,mBAAkB,CAAC;AAGhD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAGxC,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,gBAAgB,qBAAoB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_SEED_SIZE_BYTES = exports.CONTRACT_ADDRESS_PREFIX = exports.ADDR_BOUND = exports.MASK_128 = exports.FELT_MAX = exports.STRK_TOKEN_CONTRACT = exports.OZ_ETH_ACCOUNT_CLASS_HASH = void 0;
|
|
3
|
+
exports.L1_DATA_GAS_NAME = exports.L2_GAS_NAME = exports.L1_GAS_NAME = exports.TRANSACTION_VERSION_3 = exports.INVOKE_TX_PREFIX = exports.DEFAULT_SEED_SIZE_BYTES = exports.CONTRACT_ADDRESS_PREFIX = exports.ADDR_BOUND = exports.MASK_128 = exports.FELT_MAX = exports.STRK_TOKEN_CONTRACT = exports.OZ_ETH_ACCOUNT_CLASS_HASH = void 0;
|
|
4
4
|
// OZ EthAccountUpgradeable class hash (v0.17.0) — secp256k1 signature verification
|
|
5
5
|
exports.OZ_ETH_ACCOUNT_CLASS_HASH = '0x3940bc18abf1df6bc540cabadb1cad9486c6803b95801e57b6153ae21abfe06';
|
|
6
6
|
// STRK token contract (same on both mainnet and sepolia)
|
|
@@ -14,4 +14,12 @@ exports.ADDR_BOUND = 2n ** 251n - 256n;
|
|
|
14
14
|
// encodeShortString('STARKNET_CONTRACT_ADDRESS')
|
|
15
15
|
exports.CONTRACT_ADDRESS_PREFIX = 0x535441524b4e45545f434f4e54524143545f41444452455353n;
|
|
16
16
|
exports.DEFAULT_SEED_SIZE_BYTES = 16;
|
|
17
|
-
|
|
17
|
+
// V3 transaction hash prefix: encodeShortString("invoke")
|
|
18
|
+
exports.INVOKE_TX_PREFIX = 0x696e766f6b65n;
|
|
19
|
+
// V3 transaction version
|
|
20
|
+
exports.TRANSACTION_VERSION_3 = 3n;
|
|
21
|
+
// Resource bound type names (short-string encoded felts)
|
|
22
|
+
exports.L1_GAS_NAME = 0x4c315f474153n; // "L1_GAS"
|
|
23
|
+
exports.L2_GAS_NAME = 0x4c325f474153n; // "L2_GAS"
|
|
24
|
+
exports.L1_DATA_GAS_NAME = 0x4c315f44415441n; // "L1_DATA" — NOT "L1_DATA_GAS"
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUZBQW1GO0FBQ3RFLFFBQUEseUJBQXlCLEdBQUcsbUVBQW1FLENBQUM7QUFFN0cseURBQXlEO0FBQzVDLFFBQUEsbUJBQW1CLEdBQUcsb0VBQW9FLENBQUM7QUFFeEcsNkNBQTZDO0FBQ2hDLFFBQUEsUUFBUSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFFL0QsNkJBQTZCO0FBQ2hCLFFBQUEsUUFBUSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUUxQyxzQ0FBc0M7QUFDekIsUUFBQSxVQUFVLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFFNUMsaURBQWlEO0FBQ3BDLFFBQUEsdUJBQXVCLEdBQUcscURBQXFELENBQUM7QUFFaEYsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFFMUMsMERBQTBEO0FBQzdDLFFBQUEsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0FBRWhELHlCQUF5QjtBQUNaLFFBQUEscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBRXhDLHlEQUF5RDtBQUM1QyxRQUFBLFdBQVcsR0FBRyxlQUFlLENBQUMsQ0FBQyxXQUFXO0FBQzFDLFFBQUEsV0FBVyxHQUFHLGVBQWUsQ0FBQyxDQUFDLFdBQVc7QUFDMUMsUUFBQSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE9aIEV0aEFjY291bnRVcGdyYWRlYWJsZSBjbGFzcyBoYXNoICh2MC4xNy4wKSDigJQgc2VjcDI1NmsxIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25cbmV4cG9ydCBjb25zdCBPWl9FVEhfQUNDT1VOVF9DTEFTU19IQVNIID0gJzB4Mzk0MGJjMThhYmYxZGY2YmM1NDBjYWJhZGIxY2FkOTQ4NmM2ODAzYjk1ODAxZTU3YjYxNTNhZTIxYWJmZTA2JztcblxuLy8gU1RSSyB0b2tlbiBjb250cmFjdCAoc2FtZSBvbiBib3RoIG1haW5uZXQgYW5kIHNlcG9saWEpXG5leHBvcnQgY29uc3QgU1RSS19UT0tFTl9DT05UUkFDVCA9ICcweDA0NzE4ZjVhMGZjMzRjYzFhZjE2YTFjZGVlOThmZmIyMGMzMWY1Y2Q2MWQ2YWIwNzIwMTg1OGY0Mjg3YzkzOGQnO1xuXG4vLyBmZWx0MjUyIG1heCB2YWx1ZSAoMl4yNTEgKyAxNyAqIDJeMTkyICsgMSlcbmV4cG9ydCBjb25zdCBGRUxUX01BWCA9ICgxbiA8PCAyNTFuKSArIDE3biAqICgxbiA8PCAxOTJuKSArIDFuO1xuXG4vLyB1MjU2IHNwbGl0IG1hc2sgKDEyOCBiaXRzKVxuZXhwb3J0IGNvbnN0IE1BU0tfMTI4ID0gKDFuIDw8IDEyOG4pIC0gMW47XG5cbi8vIENvbnRyYWN0IGFkZHJlc3MgYm91bmQ6IDJeMjUxIC0gMjU2XG5leHBvcnQgY29uc3QgQUREUl9CT1VORCA9IDJuICoqIDI1MW4gLSAyNTZuO1xuXG4vLyBlbmNvZGVTaG9ydFN0cmluZygnU1RBUktORVRfQ09OVFJBQ1RfQUREUkVTUycpXG5leHBvcnQgY29uc3QgQ09OVFJBQ1RfQUREUkVTU19QUkVGSVggPSAweDUzNTQ0MTUyNGI0ZTQ1NTQ1ZjQzNGY0ZTU0NTI0MTQzNTQ1ZjQxNDQ0NDUyNDU1MzUzbjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTID0gMTY7XG5cbi8vIFYzIHRyYW5zYWN0aW9uIGhhc2ggcHJlZml4OiBlbmNvZGVTaG9ydFN0cmluZyhcImludm9rZVwiKVxuZXhwb3J0IGNvbnN0IElOVk9LRV9UWF9QUkVGSVggPSAweDY5NmU3NjZmNmI2NW47XG5cbi8vIFYzIHRyYW5zYWN0aW9uIHZlcnNpb25cbmV4cG9ydCBjb25zdCBUUkFOU0FDVElPTl9WRVJTSU9OXzMgPSAzbjtcblxuLy8gUmVzb3VyY2UgYm91bmQgdHlwZSBuYW1lcyAoc2hvcnQtc3RyaW5nIGVuY29kZWQgZmVsdHMpXG5leHBvcnQgY29uc3QgTDFfR0FTX05BTUUgPSAweDRjMzE1ZjQ3NDE1M247IC8vIFwiTDFfR0FTXCJcbmV4cG9ydCBjb25zdCBMMl9HQVNfTkFNRSA9IDB4NGMzMjVmNDc0MTUzbjsgLy8gXCJMMl9HQVNcIlxuZXhwb3J0IGNvbnN0IEwxX0RBVEFfR0FTX05BTUUgPSAweDRjMzE1ZjQ0NDE1NDQxbjsgLy8gXCJMMV9EQVRBXCIg4oCUIE5PVCBcIkwxX0RBVEFfR0FTXCJcbiJdfQ==
|
package/dist/src/lib/iface.d.ts
CHANGED
|
@@ -31,6 +31,23 @@ export interface StarknetTransactionData {
|
|
|
31
31
|
transactionType: StarknetTransactionType;
|
|
32
32
|
signature?: string[];
|
|
33
33
|
transactionHash?: string;
|
|
34
|
+
tip?: string;
|
|
35
|
+
nonceDataAvailabilityMode?: number;
|
|
36
|
+
feeDataAvailabilityMode?: number;
|
|
37
|
+
compiledCalldata?: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface InvokeTransactionHashParams {
|
|
40
|
+
senderAddress: string;
|
|
41
|
+
compiledCalldata: string[];
|
|
42
|
+
chainId: string;
|
|
43
|
+
nonce: string;
|
|
44
|
+
resourceBounds: StarknetResourceBounds;
|
|
45
|
+
tip?: string;
|
|
46
|
+
nonceDataAvailabilityMode?: number;
|
|
47
|
+
feeDataAvailabilityMode?: number;
|
|
48
|
+
paymasterData?: string[];
|
|
49
|
+
accountDeploymentData?: string[];
|
|
50
|
+
proofFacts?: string[];
|
|
34
51
|
}
|
|
35
52
|
export interface ParsedTransferData {
|
|
36
53
|
recipient: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,IAAI,0BAA0B,EACpD,eAAe,IAAI,oBAAoB,EACvC,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,oBAAY,uBAAuB;IACjC,MAAM,WAAW;IACjB,cAAc,mBAAmB;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,WAAW,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,eAAe,EAAE,uBAAuB,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,IAAI,0BAA0B,EACpD,eAAe,IAAI,oBAAoB,EACvC,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,oBAAY,uBAAuB;IACjC,MAAM,WAAW;IACjB,cAAc,mBAAmB;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,WAAW,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,eAAe,EAAE,uBAAuB,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,sBAAsB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
package/dist/src/lib/iface.js
CHANGED
|
@@ -6,4 +6,4 @@ var StarknetTransactionType;
|
|
|
6
6
|
StarknetTransactionType["INVOKE"] = "INVOKE";
|
|
7
7
|
StarknetTransactionType["DEPLOY_ACCOUNT"] = "DEPLOY_ACCOUNT";
|
|
8
8
|
})(StarknetTransactionType || (exports.StarknetTransactionType = StarknetTransactionType = {}));
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLElBQVksdUJBR1g7QUFIRCxXQUFZLHVCQUF1QjtJQUNqQyw0Q0FBaUIsQ0FBQTtJQUNqQiw0REFBaUMsQ0FBQTtBQUNuQyxDQUFDLEVBSFcsdUJBQXVCLHVDQUF2Qix1QkFBdUIsUUFHbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2FjdGlvblR5cGUgYXMgQml0R29UcmFuc2FjdGlvblR5cGUsXG4gIFRzc1ZlcmlmeUFkZHJlc3NPcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBlbnVtIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlIHtcbiAgSU5WT0tFID0gJ0lOVk9LRScsXG4gIERFUExPWV9BQ0NPVU5UID0gJ0RFUExPWV9BQ0NPVU5UJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFya25ldENhbGwge1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgZW50cnlwb2ludDogc3RyaW5nO1xuICBjYWxsZGF0YTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcmtuZXRSZXNvdXJjZUJvdW5kcyB7XG4gIGwyX2dhczogeyBtYXhfYW1vdW50OiBzdHJpbmc7IG1heF9wcmljZV9wZXJfdW5pdDogc3RyaW5nIH07XG4gIGwxX2dhczogeyBtYXhfYW1vdW50OiBzdHJpbmc7IG1heF9wcmljZV9wZXJfdW5pdDogc3RyaW5nIH07XG4gIGwxX2RhdGFfZ2FzOiB7IG1heF9hbW91bnQ6IHN0cmluZzsgbWF4X3ByaWNlX3Blcl91bml0OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSB7XG4gIHNlbmRlckFkZHJlc3M6IHN0cmluZztcbiAgY2FsbHM6IFN0YXJrbmV0Q2FsbFtdO1xuICBub25jZTogc3RyaW5nO1xuICBjaGFpbklkOiBzdHJpbmc7XG4gIHJlc291cmNlQm91bmRzPzogU3RhcmtuZXRSZXNvdXJjZUJvdW5kcztcbiAgdHJhbnNhY3Rpb25UeXBlOiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZTtcbiAgc2lnbmF0dXJlPzogc3RyaW5nW107XG4gIHRyYW5zYWN0aW9uSGFzaD86IHN0cmluZztcbiAgdGlwPzogc3RyaW5nO1xuICBub25jZURhdGFBdmFpbGFiaWxpdHlNb2RlPzogbnVtYmVyO1xuICBmZWVEYXRhQXZhaWxhYmlsaXR5TW9kZT86IG51bWJlcjtcbiAgY29tcGlsZWRDYWxsZGF0YT86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludm9rZVRyYW5zYWN0aW9uSGFzaFBhcmFtcyB7XG4gIHNlbmRlckFkZHJlc3M6IHN0cmluZztcbiAgY29tcGlsZWRDYWxsZGF0YTogc3RyaW5nW107XG4gIGNoYWluSWQ6IHN0cmluZztcbiAgbm9uY2U6IHN0cmluZztcbiAgcmVzb3VyY2VCb3VuZHM6IFN0YXJrbmV0UmVzb3VyY2VCb3VuZHM7XG4gIHRpcD86IHN0cmluZztcbiAgbm9uY2VEYXRhQXZhaWxhYmlsaXR5TW9kZT86IG51bWJlcjtcbiAgZmVlRGF0YUF2YWlsYWJpbGl0eU1vZGU/OiBudW1iZXI7XG4gIHBheW1hc3RlckRhdGE/OiBzdHJpbmdbXTtcbiAgYWNjb3VudERlcGxveW1lbnREYXRhPzogc3RyaW5nW107XG4gIHByb29mRmFjdHM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRUcmFuc2ZlckRhdGEge1xuICByZWNpcGllbnQ6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHRva2VuQ29udHJhY3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeERhdGEge1xuICBpZD86IHN0cmluZztcbiAgc2VuZGVyOiBzdHJpbmc7XG4gIHNlbmRlclB1YmxpY0tleT86IHN0cmluZztcbiAgcmVjaXBpZW50Pzogc3RyaW5nO1xuICBhbW91bnQ/OiBzdHJpbmc7XG4gIGZlZT86IHN0cmluZztcbiAgbm9uY2U6IHN0cmluZztcbiAgdHlwZTogQml0R29UcmFuc2FjdGlvblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcmtuZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICBzZW5kZXI/OiBzdHJpbmc7XG4gIHR5cGU/OiBCaXRHb1RyYW5zYWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkhleFBhcmFtcyB7XG4gIHRyYW5zYWN0aW9uSGV4OiBzdHJpbmc7XG4gIHNpZ25hYmxlSGV4Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRzc1ZlcmlmeVN0YXJrbmV0QWRkcmVzc09wdGlvbnMgZXh0ZW5kcyBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyB7XG4gIHJvb3RBZGRyZXNzPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -7,6 +7,7 @@ export declare class Transaction extends BaseTransaction {
|
|
|
7
7
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
8
8
|
get starknetTransactionData(): StarknetTransactionData;
|
|
9
9
|
set starknetTransactionData(data: StarknetTransactionData);
|
|
10
|
+
get signableHex(): string;
|
|
10
11
|
get signedTransaction(): string | undefined;
|
|
11
12
|
set signedTransaction(tx: string);
|
|
12
13
|
fromRawTransaction(rawTransaction: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAIhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAA2B,8BAA8B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGnH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,wBAAwB,EAAG,uBAAuB,CAAC;IAC7D,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBAE1B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,uBAAuB,IAAI,uBAAuB,CAErD;IAED,IAAI,uBAAuB,CAAC,IAAI,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAIhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAA2B,8BAA8B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGnH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,wBAAwB,EAAG,uBAAuB,CAAC;IAC7D,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBAE1B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,uBAAuB,IAAI,uBAAuB,CAErD;IAED,IAAI,uBAAuB,CAAC,IAAI,EAAE,uBAAuB,EAKxD;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,IAAI,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAE/B;IAEK,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/D,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAkBhB,kBAAkB;IAClB,kBAAkB,IAAI,8BAA8B;IAwBpD,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAS3B,kBAAkB;IAClB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;CAGhC"}
|
|
@@ -46,6 +46,12 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
46
46
|
}
|
|
47
47
|
set starknetTransactionData(data) {
|
|
48
48
|
this._starknetTransactionData = data;
|
|
49
|
+
if (data.transactionHash) {
|
|
50
|
+
this._id = data.transactionHash;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
get signableHex() {
|
|
54
|
+
return this._starknetTransactionData?.transactionHash || '';
|
|
49
55
|
}
|
|
50
56
|
get signedTransaction() {
|
|
51
57
|
return this._signedTransaction;
|
|
@@ -66,6 +72,11 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
66
72
|
transactionType: parsed.transactionType || iface_1.StarknetTransactionType.INVOKE,
|
|
67
73
|
signature: parsed.signature,
|
|
68
74
|
transactionHash: parsed.transactionHash,
|
|
75
|
+
resourceBounds: parsed.resourceBounds,
|
|
76
|
+
tip: parsed.tip,
|
|
77
|
+
compiledCalldata: parsed.compiledCalldata,
|
|
78
|
+
nonceDataAvailabilityMode: parsed.nonceDataAvailabilityMode,
|
|
79
|
+
feeDataAvailabilityMode: parsed.feeDataAvailabilityMode,
|
|
69
80
|
};
|
|
70
81
|
if (parsed.signature && parsed.signature.length > 0) {
|
|
71
82
|
this._signedTransaction = rawTransaction;
|
|
@@ -131,4 +142,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
131
142
|
}
|
|
132
143
|
}
|
|
133
144
|
exports.Transaction = Transaction;
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQU04QjtBQUU5QixtQ0FBbUg7QUFDbkgsaURBQW1EO0FBRW5ELE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSTlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLHVCQUF1QjtRQUN6QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSx1QkFBdUIsQ0FBQyxJQUE2QjtRQUN2RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGlCQUFpQixDQUFDLEVBQVU7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQXNCO1FBQzdDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFD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RUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsT0FBTztZQUNQLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDbEMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEdBQUc7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLElBQWE7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUF6SEQsa0NBeUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEsIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLCBTdGFya25ldFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzLCB7IHBhcnNlVHJhbnNmZXJDYWxsIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEhOiBTdGFya25ldFRyYW5zYWN0aW9uRGF0YTtcbiAgcHJvdGVjdGVkIF9zaWduZWRUcmFuc2FjdGlvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEoKTogU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEge1xuICAgIHJldHVybiB0aGlzLl9zdGFya25ldFRyYW5zYWN0aW9uRGF0YTtcbiAgfVxuXG4gIHNldCBzdGFya25ldFRyYW5zYWN0aW9uRGF0YShkYXRhOiBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSkge1xuICAgIHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhID0gZGF0YTtcbiAgICBpZiAoZGF0YS50cmFuc2FjdGlvbkhhc2gpIHtcbiAgICAgIHRoaXMuX2lkID0gZGF0YS50cmFuc2FjdGlvbkhhc2g7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNpZ25hYmxlSGV4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhPy50cmFuc2FjdGlvbkhhc2ggfHwgJyc7XG4gIH1cblxuICBnZXQgc2lnbmVkVHJhbnNhY3Rpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXQgc2lnbmVkVHJhbnNhY3Rpb24odHg6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICBhc3luYyBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2hleCcpO1xuICAgICAgY29uc3QganNvblN0cmluZyA9IGJ1ZmZlci50b1N0cmluZygndXRmLTgnKTtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG5cbiAgICAgIHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgICBzZW5kZXJBZGRyZXNzOiBwYXJzZWQuc2VuZGVyQWRkcmVzcyxcbiAgICAgICAgY2FsbHM6IHBhcnNlZC5jYWxscyB8fCBbXSxcbiAgICAgICAgbm9uY2U6IHBhcnNlZC5ub25jZSxcbiAgICAgICAgY2hhaW5JZDogcGFyc2VkLmNoYWluSWQsXG4gICAgICAgIHRyYW5zYWN0aW9uVHlwZTogcGFyc2VkLnRyYW5zYWN0aW9uVHlwZSB8fCBTdGFya25ldFRyYW5zYWN0aW9uVHlwZS5JTlZPS0UsXG4gICAgICAgIHNpZ25hdHVyZTogcGFyc2VkLnNpZ25hdHVyZSxcbiAgICAgICAgdHJhbnNhY3Rpb25IYXNoOiBwYXJzZWQudHJhbnNhY3Rpb25IYXNoLFxuICAgICAgICByZXNvdXJjZUJvdW5kczogcGFyc2VkLnJlc291cmNlQm91bmRzLFxuICAgICAgICB0aXA6IHBhcnNlZC50aXAsXG4gICAgICAgIGNvbXBpbGVkQ2FsbGRhdGE6IHBhcnNlZC5jb21waWxlZENhbGxkYXRhLFxuICAgICAgICBub25jZURhdGFBdmFpbGFiaWxpdHlNb2RlOiBwYXJzZWQubm9uY2VEYXRhQXZhaWxhYmlsaXR5TW9kZSxcbiAgICAgICAgZmVlRGF0YUF2YWlsYWJpbGl0eU1vZGU6IHBhcnNlZC5mZWVEYXRhQXZhaWxhYmlsaXR5TW9kZSxcbiAgICAgIH07XG5cbiAgICAgIGlmIChwYXJzZWQuc2lnbmF0dXJlICYmIHBhcnNlZC5zaWduYXR1cmUubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IHJhd1RyYW5zYWN0aW9uO1xuICAgICAgfVxuXG4gICAgICB1dGlscy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhKTtcbiAgICAgIHRoaXMuX2lkID0gcGFyc2VkLnRyYW5zYWN0aW9uSGFzaCB8fCAnJztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHRyYW5zYWN0aW9uOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgdHJhbnNmZXIgPVxuICAgICAgdGhpcy5fc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEuY2FsbHMubGVuZ3RoID4gMFxuICAgICAgICA/IHBhcnNlVHJhbnNmZXJDYWxsKHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLmNhbGxzWzBdKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuX2lkLFxuICAgICAgc2VuZGVyOiB0aGlzLl9zdGFya25ldFRyYW5zYWN0aW9uRGF0YS5zZW5kZXJBZGRyZXNzLFxuICAgICAgcmVjaXBpZW50OiB0cmFuc2Zlcj8ucmVjaXBpZW50LFxuICAgICAgYW1vdW50OiB0cmFuc2Zlcj8uYW1vdW50LFxuICAgICAgbm9uY2U6IHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLm5vbmNlLFxuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlLlNlbmQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogU3RhcmtuZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJ107XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgaWYgKHJlc3VsdC5yZWNpcGllbnQgJiYgcmVzdWx0LmFtb3VudCkge1xuICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogcmVzdWx0LnJlY2lwaWVudCxcbiAgICAgICAgYW1vdW50OiByZXN1bHQuYW1vdW50LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogcmVzdWx0LmFtb3VudCB8fCAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiAnMCcgfSxcbiAgICAgIHR5cGU6IHJlc3VsdC50eXBlLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX3N0YXJrbmV0VHJhbnNhY3Rpb25EYXRhO1xuICAgIGlmICghZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGpzb24sICd1dGYtOCcpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKF9rZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseAddress, BaseKey, BaseTransactionBuilder } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
3
|
import BigNumber from 'bignumber.js';
|
|
4
|
-
import { StarknetTransactionType, StarknetCall } from './iface';
|
|
4
|
+
import { StarknetTransactionType, StarknetCall, StarknetResourceBounds } from './iface';
|
|
5
5
|
import { Transaction } from './transaction';
|
|
6
6
|
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
7
7
|
protected _transaction: Transaction;
|
|
@@ -10,10 +10,14 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
|
|
|
10
10
|
protected _calls: StarknetCall[];
|
|
11
11
|
protected _nonce?: string;
|
|
12
12
|
protected _chainId?: string;
|
|
13
|
+
protected _resourceBounds: StarknetResourceBounds;
|
|
14
|
+
protected _tip: string;
|
|
13
15
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
14
16
|
sender(address: string, pubKey?: string): this;
|
|
15
17
|
nonce(nonce: string): this;
|
|
16
18
|
chainId(chainId: string): this;
|
|
19
|
+
resourceBounds(rb: StarknetResourceBounds): this;
|
|
20
|
+
tip(tip: string): this;
|
|
17
21
|
/** @inheritdoc */
|
|
18
22
|
get transaction(): Transaction;
|
|
19
23
|
/** @inheritdoc */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAIvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAA2B,uBAAuB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAIvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAA2B,uBAAuB,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,CAAM;IACtC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,eAAe,EAAE,sBAAsB,CAA2B;IAC5E,SAAS,CAAC,IAAI,SAAS;gBAEX,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAKtC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAoB9C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B,cAAc,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI;IAKhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7B,kBAAkB;IAClB,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,kBAAkB;IAClB,IAAI,WAAW,CAAC,WAAW,EAAE,WAAW,EAEvC;IAED,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAelC,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAM3C,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAS/B,kBAAkB;IAClB,mBAAmB,CAAC,YAAY,EAAE,WAAW,GAAG,IAAI;IAYpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAMpD,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAKjE,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,uBAAuB,CAAC;IAElE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgC3D,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW;CAGzD"}
|
|
@@ -7,10 +7,19 @@ exports.TransactionBuilder = void 0;
|
|
|
7
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
8
|
const transaction_1 = require("./transaction");
|
|
9
9
|
const utils_1 = __importDefault(require("./utils"));
|
|
10
|
+
function defaultResourceBounds() {
|
|
11
|
+
return {
|
|
12
|
+
l2_gas: { max_amount: '0x1c9c380', max_price_per_unit: '0x174876e800' },
|
|
13
|
+
l1_gas: { max_amount: '0x0', max_price_per_unit: '0x5af3107a4000' },
|
|
14
|
+
l1_data_gas: { max_amount: '0x3e8', max_price_per_unit: '0x2540be400' },
|
|
15
|
+
};
|
|
16
|
+
}
|
|
10
17
|
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
11
18
|
constructor(_coinConfig) {
|
|
12
19
|
super(_coinConfig);
|
|
13
20
|
this._calls = [];
|
|
21
|
+
this._resourceBounds = defaultResourceBounds();
|
|
22
|
+
this._tip = '0x0';
|
|
14
23
|
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
15
24
|
}
|
|
16
25
|
sender(address, pubKey) {
|
|
@@ -38,6 +47,14 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
38
47
|
this._chainId = chainId;
|
|
39
48
|
return this;
|
|
40
49
|
}
|
|
50
|
+
resourceBounds(rb) {
|
|
51
|
+
this._resourceBounds = rb;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
tip(tip) {
|
|
55
|
+
this._tip = tip;
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
41
58
|
/** @inheritdoc */
|
|
42
59
|
get transaction() {
|
|
43
60
|
return this._transaction;
|
|
@@ -53,6 +70,12 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
53
70
|
this._calls = data.calls || [];
|
|
54
71
|
this._nonce = data.nonce;
|
|
55
72
|
this._chainId = data.chainId;
|
|
73
|
+
if (data.resourceBounds) {
|
|
74
|
+
this._resourceBounds = data.resourceBounds;
|
|
75
|
+
}
|
|
76
|
+
if (data.tip) {
|
|
77
|
+
this._tip = data.tip;
|
|
78
|
+
}
|
|
56
79
|
}
|
|
57
80
|
/** @inheritdoc */
|
|
58
81
|
validateAddress(address) {
|
|
@@ -100,12 +123,28 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
100
123
|
}
|
|
101
124
|
/** @inheritdoc */
|
|
102
125
|
async buildImplementation() {
|
|
126
|
+
const sender = this._sender;
|
|
127
|
+
const chainId = this._chainId;
|
|
128
|
+
const nonce = this._nonce;
|
|
129
|
+
const compiledCalldata = utils_1.default.compileExecuteCalldata(this._calls);
|
|
130
|
+
const transactionHash = utils_1.default.calculateInvokeTransactionHash({
|
|
131
|
+
senderAddress: sender,
|
|
132
|
+
compiledCalldata,
|
|
133
|
+
chainId,
|
|
134
|
+
nonce,
|
|
135
|
+
resourceBounds: this._resourceBounds,
|
|
136
|
+
tip: this._tip,
|
|
137
|
+
});
|
|
103
138
|
const data = {
|
|
104
|
-
senderAddress:
|
|
139
|
+
senderAddress: sender,
|
|
105
140
|
calls: this._calls,
|
|
106
|
-
nonce
|
|
107
|
-
chainId
|
|
141
|
+
nonce,
|
|
142
|
+
chainId,
|
|
108
143
|
transactionType: this.transactionType,
|
|
144
|
+
resourceBounds: this._resourceBounds,
|
|
145
|
+
tip: this._tip,
|
|
146
|
+
transactionHash,
|
|
147
|
+
compiledCalldata,
|
|
109
148
|
};
|
|
110
149
|
this._transaction.starknetTransactionData = data;
|
|
111
150
|
return this._transaction;
|
|
@@ -116,4 +155,4 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
116
155
|
}
|
|
117
156
|
}
|
|
118
157
|
exports.TransactionBuilder = TransactionBuilder;
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBTzhCO0FBSTlCLCtDQUE0QztBQUM1QyxvREFBNEI7QUFFNUIsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBUXJFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTFgsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFNcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFlLEVBQUUsTUFBZTtRQUM1QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQ0FBbUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxNQUFNLGNBQWMsR0FBRyxlQUFLLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0QsSUFBSSxlQUFLLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEtBQUssZUFBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQy9FLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0IsK0NBQStDLGNBQWMsU0FBUyxPQUFPLEVBQUUsQ0FDaEYsQ0FBQztZQUNKLENBQUM7WUFDRCxJ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QWtCO0lBQ2xCLHNCQUFzQixDQUFDLGNBQXNCO1FBQzNDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksZ0NBQXFCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFJRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLE1BQU0sSUFBSSxHQUE0QjtZQUNwQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQVE7WUFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTztZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVM7WUFDdkIsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ3RDLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELDhGQUE4RjtJQUNwRixrQkFBa0IsQ0FBQyxJQUFhO1FBQ3hDLE1BQU0sSUFBSSxvQ0FBeUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQXBJRCxnREFvSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBTaWduaW5nRXJyb3IsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLCBTdGFya25ldFRyYW5zYWN0aW9uVHlwZSwgU3RhcmtuZXRDYWxsIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3NlbmRlcj86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9wdWJsaWNLZXk/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfY2FsbHM6IFN0YXJrbmV0Q2FsbFtdID0gW107XG4gIHByb3RlY3RlZCBfbm9uY2U/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfY2hhaW5JZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHVibGljIHNlbmRlcihhZGRyZXNzOiBzdHJpbmcsIHB1YktleT86IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzcyB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBhZGRyZXNzLCBnb3Q6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgaWYgKHB1YktleSkge1xuICAgICAgaWYgKCF1dGlscy5pc1ZhbGlkUHVibGljS2V5KHB1YktleSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwdWJLZXksIGdvdDogJyArIHB1YktleSk7XG4gICAgICB9XG4gICAgICBjb25zdCBkZXJpdmVkQWRkcmVzcyA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YktleSk7XG4gICAgICBpZiAodXRpbHMubm9ybWFsaXplQWRkcmVzcyhkZXJpdmVkQWRkcmVzcykgIT09IHV0aWxzLm5vcm1hbGl6ZUFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgQWRkcmVzcyBkb2VzIG5vdCBtYXRjaCBwdWJsaWMga2V5LiBFeHBlY3RlZCAke2Rlcml2ZWRBZGRyZXNzfSwgZ290ICR7YWRkcmVzc31gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLl9wdWJsaWNLZXkgPSBwdWJLZXk7XG4gICAgfVxuICAgIHRoaXMuX3NlbmRlciA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbm9uY2Uobm9uY2U6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX25vbmNlID0gbm9uY2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY2hhaW5JZChjaGFpbklkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9jaGFpbklkID0gY2hhaW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gICAgY29uc3QgZGF0YSA9IHR4LnN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhO1xuICAgIHRoaXMuX3NlbmRlciA9IGRhdGEuc2VuZGVyQWRkcmVzcztcbiAgICB0aGlzLl9jYWxscyA9IGRhdGEuY2FsbHMgfHwgW107XG4gICAgdGhpcy5fbm9uY2UgPSBkYXRhLm5vbmNlO1xuICAgIHRoaXMuX2NoYWluSWQgPSBkYXRhLmNoYWluSWQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MnKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgaWYgKCFrZXkgfHwgIWtleS5rZXkpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0tleSBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRQcml2YXRlS2V5KGtleS5rZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdJbnZhbGlkIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24oX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc2VuZGVyIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyh0aGlzLl9zZW5kZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3Npbmcgc2VuZGVyIGFkZHJlc3MnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9jaGFpbklkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdDaGFpbiBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbm9uY2UgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl9ub25jZSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTm9uY2UgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTmFOKCkgfHwgdmFsdWUuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHZhbHVlOiAke3ZhbHVlLnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGRhdGE6IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgc2VuZGVyQWRkcmVzczogdGhpcy5fc2VuZGVyISxcbiAgICAgIGNhbGxzOiB0aGlzLl9jYWxscyxcbiAgICAgIG5vbmNlOiB0aGlzLl9ub25jZSEsXG4gICAgICBjaGFpbklkOiB0aGlzLl9jaGFpbklkISxcbiAgICAgIHRyYW5zYWN0aW9uVHlwZTogdGhpcy50cmFuc2FjdGlvblR5cGUsXG4gICAgfTtcblxuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhID0gZGF0YTtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvLyBTdGFya25ldCBpcyBUU1Mtb25seTsgc2lnbmluZyBoYXBwZW5zIHZpYSB0aHJlc2hvbGQgRUNEU0EgaW4gd2FsbGV0LXBsYXRmb3JtL09WQywgbm90IGhlcmUuXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oX2tleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcignc2lnbkltcGxlbWVudGF0aW9uJyk7XG4gIH1cbn1cbiJdfQ==
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBTzhCO0FBSTlCLCtDQUE0QztBQUM1QyxvREFBNEI7QUFFNUIsU0FBUyxxQkFBcUI7SUFDNUIsT0FBTztRQUNMLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFO1FBQ3ZFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUU7UUFDbkUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUU7S0FDeEUsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFVckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFQWCxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUc1QixvQkFBZSxHQUEyQixxQkFBcUIsRUFBRSxDQUFDO1FBQ2xFLFNBQUksR0FBRyxLQUFLLENBQUM7UUFJckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFlLEVBQUUsTUFBZTtRQUM1QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQ0FBbUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FB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YW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBTaWduaW5nRXJyb3IsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLCBTdGFya25ldFRyYW5zYWN0aW9uVHlwZSwgU3RhcmtuZXRDYWxsLCBTdGFya25ldFJlc291cmNlQm91bmRzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5mdW5jdGlvbiBkZWZhdWx0UmVzb3VyY2VCb3VuZHMoKTogU3RhcmtuZXRSZXNvdXJjZUJvdW5kcyB7XG4gIHJldHVybiB7XG4gICAgbDJfZ2FzOiB7IG1heF9hbW91bnQ6ICcweDFjOWMzODAnLCBtYXhfcHJpY2VfcGVyX3VuaXQ6ICcweDE3NDg3NmU4MDAnIH0sXG4gICAgbDFfZ2FzOiB7IG1heF9hbW91bnQ6ICcweDAnLCBtYXhfcHJpY2VfcGVyX3VuaXQ6ICcweDVhZjMxMDdhNDAwMCcgfSxcbiAgICBsMV9kYXRhX2dhczogeyBtYXhfYW1vdW50OiAnMHgzZTgnLCBtYXhfcHJpY2VfcGVyX3VuaXQ6ICcweDI1NDBiZTQwMCcgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9zZW5kZXI/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcHVibGljS2V5Pzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2NhbGxzOiBTdGFya25ldENhbGxbXSA9IFtdO1xuICBwcm90ZWN0ZWQgX25vbmNlPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2NoYWluSWQ/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcmVzb3VyY2VCb3VuZHM6IFN0YXJrbmV0UmVzb3VyY2VCb3VuZHMgPSBkZWZhdWx0UmVzb3VyY2VCb3VuZHMoKTtcbiAgcHJvdGVjdGVkIF90aXAgPSAnMHgwJztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHVibGljIHNlbmRlcihhZGRyZXNzOiBzdHJpbmcsIHB1YktleT86IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzcyB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBhZGRyZXNzLCBnb3Q6ICcgKyBhZGRyZXNzKTtcbiAgICB9XG4gICAgaWYgKHB1YktleSkge1xuICAgICAgaWYgKCF1dGlscy5pc1ZhbGlkUHVibGljS2V5KHB1YktleSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwdWJLZXksIGdvdDogJyArIHB1YktleSk7XG4gICAgICB9XG4gICAgICBjb25zdCBkZXJpdmVkQWRkcmVzcyA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YktleSk7XG4gICAgICBpZiAodXRpbHMubm9ybWFsaXplQWRkcmVzcyhkZXJpdmVkQWRkcmVzcykgIT09IHV0aWxzLm5vcm1hbGl6ZUFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgQWRkcmVzcyBkb2VzIG5vdCBtYXRjaCBwdWJsaWMga2V5LiBFeHBlY3RlZCAke2Rlcml2ZWRBZGRyZXNzfSwgZ290ICR7YWRkcmVzc31gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLl9wdWJsaWNLZXkgPSBwdWJLZXk7XG4gICAgfVxuICAgIHRoaXMuX3NlbmRlciA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbm9uY2Uobm9uY2U6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX25vbmNlID0gbm9uY2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY2hhaW5JZChjaGFpbklkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9jaGFpbklkID0gY2hhaW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyByZXNvdXJjZUJvdW5kcyhyYjogU3RhcmtuZXRSZXNvdXJjZUJvdW5kcyk6IHRoaXMge1xuICAgIHRoaXMuX3Jlc291cmNlQm91bmRzID0gcmI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdGlwKHRpcDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fdGlwID0gdGlwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgICBjb25zdCBkYXRhID0gdHguc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGE7XG4gICAgdGhpcy5fc2VuZGVyID0gZGF0YS5zZW5kZXJBZGRyZXNzO1xuICAgIHRoaXMuX2NhbGxzID0gZGF0YS5jYWxscyB8fCBbXTtcbiAgICB0aGlzLl9ub25jZSA9IGRhdGEubm9uY2U7XG4gICAgdGhpcy5fY2hhaW5JZCA9IGRhdGEuY2hhaW5JZDtcbiAgICBpZiAoZGF0YS5yZXNvdXJjZUJvdW5kcykge1xuICAgICAgdGhpcy5fcmVzb3VyY2VCb3VuZHMgPSBkYXRhLnJlc291cmNlQm91bmRzO1xuICAgIH1cbiAgICBpZiAoZGF0YS50aXApIHtcbiAgICAgIHRoaXMuX3RpcCA9IGRhdGEudGlwO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBpZiAoIWtleSB8fCAha2V5LmtleSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignS2V5IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdXRpbHMuaXNWYWxpZFByaXZhdGVLZXkoa2V5LmtleSkpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0ludmFsaWQgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbihfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXIgfHwgIXV0aWxzLmlzVmFsaWRBZGRyZXNzKHRoaXMuX3NlbmRlcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBzZW5kZXIgYWRkcmVzcycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2NoYWluSWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0NoYWluIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9ub25jZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX25vbmNlID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdOb25jZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNOYU4oKSB8fCB2YWx1ZS5pc05lZ2F0aXZlKCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdmFsdWU6ICR7dmFsdWUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignUmF3IHRyYW5zYWN0aW9uIGlzIGVtcHR5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3Qgc2VuZGVyID0gdGhpcy5fc2VuZGVyIGFzIHN0cmluZztcbiAgICBjb25zdCBjaGFpbklkID0gdGhpcy5fY2hhaW5JZCBhcyBzdHJpbmc7XG4gICAgY29uc3Qgbm9uY2UgPSB0aGlzLl9ub25jZSBhcyBzdHJpbmc7XG4gICAgY29uc3QgY29tcGlsZWRDYWxsZGF0YSA9IHV0aWxzLmNvbXBpbGVFeGVjdXRlQ2FsbGRhdGEodGhpcy5fY2FsbHMpO1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb25IYXNoID0gdXRpbHMuY2FsY3VsYXRlSW52b2tlVHJhbnNhY3Rpb25IYXNoKHtcbiAgICAgIHNlbmRlckFkZHJlc3M6IHNlbmRlcixcbiAgICAgIGNvbXBpbGVkQ2FsbGRhdGEsXG4gICAgICBjaGFpbklkLFxuICAgICAgbm9uY2UsXG4gICAgICByZXNvdXJjZUJvdW5kczogdGhpcy5fcmVzb3VyY2VCb3VuZHMsXG4gICAgICB0aXA6IHRoaXMuX3RpcCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGE6IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgc2VuZGVyQWRkcmVzczogc2VuZGVyLFxuICAgICAgY2FsbHM6IHRoaXMuX2NhbGxzLFxuICAgICAgbm9uY2UsXG4gICAgICBjaGFpbklkLFxuICAgICAgdHJhbnNhY3Rpb25UeXBlOiB0aGlzLnRyYW5zYWN0aW9uVHlwZSxcbiAgICAgIHJlc291cmNlQm91bmRzOiB0aGlzLl9yZXNvdXJjZUJvdW5kcyxcbiAgICAgIHRpcDogdGhpcy5fdGlwLFxuICAgICAgdHJhbnNhY3Rpb25IYXNoLFxuICAgICAgY29tcGlsZWRDYWxsZGF0YSxcbiAgICB9O1xuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8vIFN0YXJrbmV0IGlzIFRTUy1vbmx5OyBzaWduaW5nIGhhcHBlbnMgdmlhIHRocmVzaG9sZCBFQ0RTQSBpbiB3YWxsZXQtcGxhdGZvcm0vT1ZDLCBub3QgaGVyZS5cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihfa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCdzaWduSW1wbGVtZW50YXRpb24nKTtcbiAgfVxufVxuIl19
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StarknetTransactionData, StarknetCall, ParsedTransferData } from './iface';
|
|
1
|
+
import { StarknetTransactionData, StarknetCall, ParsedTransferData, InvokeTransactionHashParams } from './iface';
|
|
2
2
|
/**
|
|
3
3
|
* Normalize a Starknet address to canonical form: 0x + 64 hex chars, zero-padded.
|
|
4
4
|
*/
|
|
@@ -63,6 +63,24 @@ export declare function generateKeyPair(seed?: Buffer): {
|
|
|
63
63
|
* Validate raw transaction data has required fields.
|
|
64
64
|
*/
|
|
65
65
|
export declare function validateRawTransaction(tx: StarknetTransactionData): void;
|
|
66
|
+
/**
|
|
67
|
+
* Encode an ASCII string (max 31 chars) as a felt252.
|
|
68
|
+
*/
|
|
69
|
+
export declare function encodeShortString(str: string): bigint;
|
|
70
|
+
/**
|
|
71
|
+
* Compute the Starknet function selector: keccak256(name) masked to 250 bits.
|
|
72
|
+
* @scure/starknet's keccak() already applies the 250-bit mask.
|
|
73
|
+
*/
|
|
74
|
+
export declare function getSelectorFromName(name: string): bigint;
|
|
75
|
+
/**
|
|
76
|
+
* Compile calls into the Cairo 1 multicall __execute__ calldata format.
|
|
77
|
+
* Format: [num_calls, to_0, selector_0, data_len_0, ...data_0, to_1, ...]
|
|
78
|
+
*/
|
|
79
|
+
export declare function compileExecuteCalldata(calls: StarknetCall[]): string[];
|
|
80
|
+
/**
|
|
81
|
+
* Compute the Poseidon V3 INVOKE transaction hash per SNIP-8.
|
|
82
|
+
*/
|
|
83
|
+
export declare function calculateInvokeTransactionHash(params: InvokeTransactionHashParams): string;
|
|
66
84
|
declare const _default: {
|
|
67
85
|
isValidAddress: typeof isValidAddress;
|
|
68
86
|
isValidPublicKey: typeof isValidPublicKey;
|
|
@@ -77,6 +95,10 @@ declare const _default: {
|
|
|
77
95
|
parseTransferCall: typeof parseTransferCall;
|
|
78
96
|
generateKeyPair: typeof generateKeyPair;
|
|
79
97
|
validateRawTransaction: typeof validateRawTransaction;
|
|
98
|
+
encodeShortString: typeof encodeShortString;
|
|
99
|
+
getSelectorFromName: typeof getSelectorFromName;
|
|
100
|
+
compileExecuteCalldata: typeof compileExecuteCalldata;
|
|
101
|
+
calculateInvokeTransactionHash: typeof calculateInvokeTransactionHash;
|
|
80
102
|
};
|
|
81
103
|
export default _default;
|
|
82
104
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAGjH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAatE;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAUpF;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,eAAe,EAAE,MAAM,GAAG,MAAM,GAC/B,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CASA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAYvF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,kBAAkB,GAAG,SAAS,CAYpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQ3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,IAAI,CAOxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAerD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAUtE;AAMD;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM,CA+C1F;;;;;;;;;;;;;;;;;;;;AAED,wBAkBE"}
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -13,6 +13,10 @@ exports.formatEthAccountSignature = formatEthAccountSignature;
|
|
|
13
13
|
exports.parseTransferCall = parseTransferCall;
|
|
14
14
|
exports.generateKeyPair = generateKeyPair;
|
|
15
15
|
exports.validateRawTransaction = validateRawTransaction;
|
|
16
|
+
exports.encodeShortString = encodeShortString;
|
|
17
|
+
exports.getSelectorFromName = getSelectorFromName;
|
|
18
|
+
exports.compileExecuteCalldata = compileExecuteCalldata;
|
|
19
|
+
exports.calculateInvokeTransactionHash = calculateInvokeTransactionHash;
|
|
16
20
|
const starknet_1 = require("@scure/starknet");
|
|
17
21
|
const constants_1 = require("./constants");
|
|
18
22
|
const secp256k1_1 = require("@bitgo-beta/secp256k1");
|
|
@@ -190,6 +194,80 @@ function validateRawTransaction(tx) {
|
|
|
190
194
|
throw new Error(`Invalid sender address: ${tx.senderAddress}`);
|
|
191
195
|
}
|
|
192
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Encode an ASCII string (max 31 chars) as a felt252.
|
|
199
|
+
*/
|
|
200
|
+
function encodeShortString(str) {
|
|
201
|
+
if (str.length > 31) {
|
|
202
|
+
throw new Error(`Short string too long: ${str.length} > 31`);
|
|
203
|
+
}
|
|
204
|
+
for (let i = 0; i < str.length; i++) {
|
|
205
|
+
const code = str.charCodeAt(i);
|
|
206
|
+
if (code > 127) {
|
|
207
|
+
throw new Error(`Non-ASCII character at index ${i}: code ${code}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
let result = 0n;
|
|
211
|
+
for (let i = 0; i < str.length; i++) {
|
|
212
|
+
result = (result << 8n) | BigInt(str.charCodeAt(i));
|
|
213
|
+
}
|
|
214
|
+
return result;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Compute the Starknet function selector: keccak256(name) masked to 250 bits.
|
|
218
|
+
* @scure/starknet's keccak() already applies the 250-bit mask.
|
|
219
|
+
*/
|
|
220
|
+
function getSelectorFromName(name) {
|
|
221
|
+
return (0, starknet_1.keccak)(Buffer.from(name, 'ascii'));
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Compile calls into the Cairo 1 multicall __execute__ calldata format.
|
|
225
|
+
* Format: [num_calls, to_0, selector_0, data_len_0, ...data_0, to_1, ...]
|
|
226
|
+
*/
|
|
227
|
+
function compileExecuteCalldata(calls) {
|
|
228
|
+
const result = [];
|
|
229
|
+
result.push('0x' + BigInt(calls.length).toString(16));
|
|
230
|
+
for (const call of calls) {
|
|
231
|
+
result.push(call.contractAddress);
|
|
232
|
+
result.push('0x' + getSelectorFromName(call.entrypoint).toString(16));
|
|
233
|
+
result.push('0x' + BigInt(call.calldata.length).toString(16));
|
|
234
|
+
result.push(...call.calldata);
|
|
235
|
+
}
|
|
236
|
+
return result;
|
|
237
|
+
}
|
|
238
|
+
function encodeResourceBound(typeName, maxAmount, maxPricePerUnit) {
|
|
239
|
+
return (typeName << 192n) | (BigInt(maxAmount) << 128n) | BigInt(maxPricePerUnit);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Compute the Poseidon V3 INVOKE transaction hash per SNIP-8.
|
|
243
|
+
*/
|
|
244
|
+
function calculateInvokeTransactionHash(params) {
|
|
245
|
+
const { senderAddress, compiledCalldata, chainId, nonce, resourceBounds, tip = '0x0', nonceDataAvailabilityMode = 0, feeDataAvailabilityMode = 0, paymasterData = [], accountDeploymentData = [], proofFacts, } = params;
|
|
246
|
+
const feeFieldHash = (0, starknet_1.poseidonHashMany)([
|
|
247
|
+
BigInt(tip),
|
|
248
|
+
encodeResourceBound(constants_1.L1_GAS_NAME, resourceBounds.l1_gas.max_amount, resourceBounds.l1_gas.max_price_per_unit),
|
|
249
|
+
encodeResourceBound(constants_1.L2_GAS_NAME, resourceBounds.l2_gas.max_amount, resourceBounds.l2_gas.max_price_per_unit),
|
|
250
|
+
encodeResourceBound(constants_1.L1_DATA_GAS_NAME, resourceBounds.l1_data_gas.max_amount, resourceBounds.l1_data_gas.max_price_per_unit),
|
|
251
|
+
]);
|
|
252
|
+
const daMode = (BigInt(nonceDataAvailabilityMode) << 32n) | BigInt(feeDataAvailabilityMode);
|
|
253
|
+
const hashFields = [
|
|
254
|
+
constants_1.INVOKE_TX_PREFIX,
|
|
255
|
+
constants_1.TRANSACTION_VERSION_3,
|
|
256
|
+
BigInt(senderAddress),
|
|
257
|
+
feeFieldHash,
|
|
258
|
+
(0, starknet_1.poseidonHashMany)(paymasterData.map(BigInt)),
|
|
259
|
+
BigInt(chainId),
|
|
260
|
+
BigInt(nonce),
|
|
261
|
+
daMode,
|
|
262
|
+
(0, starknet_1.poseidonHashMany)(accountDeploymentData.map(BigInt)),
|
|
263
|
+
(0, starknet_1.poseidonHashMany)(compiledCalldata.map(BigInt)),
|
|
264
|
+
];
|
|
265
|
+
if (proofFacts && proofFacts.length > 0) {
|
|
266
|
+
hashFields.push((0, starknet_1.poseidonHashMany)(proofFacts.map(BigInt)));
|
|
267
|
+
}
|
|
268
|
+
const hash = (0, starknet_1.poseidonHashMany)(hashFields);
|
|
269
|
+
return '0x' + hash.toString(16);
|
|
270
|
+
}
|
|
193
271
|
exports.default = {
|
|
194
272
|
isValidAddress,
|
|
195
273
|
isValidPublicKey,
|
|
@@ -204,5 +282,9 @@ exports.default = {
|
|
|
204
282
|
parseTransferCall,
|
|
205
283
|
generateKeyPair,
|
|
206
284
|
validateRawTransaction,
|
|
285
|
+
encodeShortString,
|
|
286
|
+
getSelectorFromName,
|
|
287
|
+
compileExecuteCalldata,
|
|
288
|
+
calculateInvokeTransactionHash,
|
|
207
289
|
};
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsNENBR0M7QUFNRCx3Q0FTQztBQUtELDRDQWdCQztBQUtELDhDQUdDO0FBS0QsNERBYUM7QUFNRCxvRkFVQztBQU1ELDRFQWVDO0FBS0Qsd0RBYUM7QUFLRCwwREFJQztBQU1ELDhEQVlDO0FBTUQsOENBWUM7QUFLRCwwQ0FRQztBQUtELHdEQU9DO0FBdE1ELDhDQUF3RDtBQUN4RCwyQ0FBaUg7QUFFakgscURBQTRDO0FBRTVDOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZTtJQUM5QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbEUsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDMUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsb0JBQVEsQ0FBQztJQUNwQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gs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QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxFQUEyQjtJQUNoRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0FBQ0gsQ0FBQztBQUVELGtCQUFlO0lBQ2IsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsd0JBQXdCO0lBQ3hCLG9DQUFvQztJQUNwQyxnQ0FBZ0M7SUFDaEMsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixnQkFBZ0I7SUFDaEIseUJBQXlCO0lBQ3pCLGlCQUFpQjtJQUNqQixlQUFlO0lBQ2Ysc0JBQXNCO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlSGFzaE9uRWxlbWVudHMgfSBmcm9tICdAc2N1cmUvc3RhcmtuZXQnO1xuaW1wb3J0IHsgRkVMVF9NQVgsIE1BU0tfMTI4LCBPWl9FVEhfQUNDT1VOVF9DTEFTU19IQVNILCBBRERSX0JPVU5ELCBDT05UUkFDVF9BRERSRVNTX1BSRUZJWCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLCBTdGFya25ldENhbGwsIFBhcnNlZFRyYW5zZmVyRGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgZWNjIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBTdGFya25ldCBhZGRyZXNzIHRvIGNhbm9uaWNhbCBmb3JtOiAweCArIDY0IGhleCBjaGFycywgemVyby1wYWRkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGhleCA9IGFkZHJlc3Muc3RhcnRzV2l0aCgnMHgnKSA/IGFkZHJlc3Muc2xpY2UoMikgOiBhZGRyZXNzO1xuICByZXR1cm4gJzB4JyArIGhleC5wYWRTdGFydCg2NCwgJzAnKS50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIFN0YXJrbmV0IGFkZHJlc3NlcyBhcmUgZmVsdDI1MiB2YWx1ZXMgcmVwcmVzZW50ZWQgYXMgMHgtcHJlZml4ZWQgaGV4LlxuICogVmFsaWQgcmFuZ2U6IDAgPCBhZGRyZXNzIDwgRkVMVF9NQVgsIHdpdGggMHggcHJlZml4IGFuZCBoZXggY2hhcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBhZGRyZXNzICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWFkZHJlc3MubWF0Y2goL14weFswLTlhLWZBLUZdezEsNjR9JC8pKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsID0gQmlnSW50KGFkZHJlc3MpO1xuICAgIHJldHVybiB2YWwgPiAwbiAmJiB2YWwgPCBGRUxUX01BWDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSBzZWNwMjU2azEgcHVibGljIGtleSAoY29tcHJlc3NlZCAzMyBieXRlcyBvciB1bmNvbXByZXNzZWQgNjUgYnl0ZXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShrZXksICdoZXgnKTtcbiAgICBpZiAoYnVmLmxlbmd0aCA9PT0gMzMgJiYgKGJ1ZlswXSA9PT0gMHgwMiB8fCBidWZbMF0gPT09IDB4MDMpKSB7XG4gICAgICBlY2MucG9pbnRDb21wcmVzcyhidWYsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChidWYubGVuZ3RoID09PSA2NSAmJiBidWZbMF0gPT09IDB4MDQpIHtcbiAgICAgIGVjYy5wb2ludENvbXByZXNzKGJ1ZiwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHNlY3AyNTZrMSBwcml2YXRlIGtleSAoMzIgYnl0ZXMgaGV4KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gL15bMC05YS1mQS1GXXs2NH0kLy50ZXN0KGtleSk7XG59XG5cbi8qKlxuICogR2V0IHVuY29tcHJlc3NlZCBwdWJsaWMga2V5ICh4IHx8IHksIDEyOCBoZXggY2hhcnMsIG5vIDA0IHByZWZpeCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmNvbXByZXNzZWRQdWJsaWNLZXkoY29tcHJlc3NlZEhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oY29tcHJlc3NlZEhleCwgJ2hleCcpO1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gNjUgJiYgYnVmWzBdID09PSAweDA0KSB7XG4gICAgcmV0dXJuIGNvbXByZXNzZWRIZXguc2xpY2UoMik7XG4gIH1cbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDMzICYmIChidWZbMF0gPT09IDB4MDIgfHwgYnVmWzBdID09PSAweDAzKSkge1xuICAgIGNvbnN0IHVuY29tcHJlc3NlZCA9IEJ1ZmZlci5mcm9tKGVjYy5wb2ludENvbXByZXNzKGJ1ZiwgZmFsc2UpKTtcbiAgICByZXR1cm4gdW5jb21wcmVzc2VkLnRvU3RyaW5nKCdoZXgnKS5zbGljZSgyKTtcbiAgfVxuICBpZiAoYnVmLmxlbmd0aCA9PT0gNjQpIHtcbiAgICByZXR1cm4gY29tcHJlc3NlZEhleDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHVibGljIGtleSBmb3JtYXQ6ICR7Y29tcHJlc3NlZEhleC5zdWJzdHJpbmcoMCwgMTApfS4uLmApO1xufVxuXG4vKipcbiAqIENvbXBpbGUgRXRoQWNjb3VudCBjb25zdHJ1Y3RvciBjYWxsZGF0YSBmcm9tIGZ1bGwgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gKiBSZXR1cm5zIFt4X2xvdywgeF9oaWdoLCB5X2xvdywgeV9oaWdoXSBhcyBmZWx0MjUyIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlRXRoQWNjb3VudENvbnN0cnVjdG9yQ2FsbGRhdGEoZnVsbFB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwdWJYID0gQmlnSW50KCcweCcgKyBmdWxsUHVibGljS2V5LnNsaWNlKDAsIDY0KSk7XG4gIGNvbnN0IHB1YlkgPSBCaWdJbnQoJzB4JyArIGZ1bGxQdWJsaWNLZXkuc2xpY2UoNjQpKTtcblxuICByZXR1cm4gW1xuICAgICcweCcgKyAocHViWCAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChwdWJYID4+IDEyOG4pLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHB1YlkgJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAocHViWSA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gIF07XG59XG5cbi8qKlxuICogQ29tcHV0ZSBTdGFya25ldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaGFzaCBjb21wb25lbnRzLlxuICogUmVwbGljYXRlcyBzdGFya25ldC5qcyBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaCB1c2luZyBAc2N1cmUvc3RhcmtuZXQgcGVkZXJzZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaChcbiAgc2FsdDogc3RyaW5nLFxuICBjbGFzc0hhc2g6IHN0cmluZyxcbiAgY29uc3RydWN0b3JDYWxsZGF0YTogc3RyaW5nW10sXG4gIGRlcGxveWVyQWRkcmVzczogbnVtYmVyIHwgYmlnaW50XG4pOiBzdHJpbmcge1xuICBjb25zdCBjYWxsZGF0YUhhc2ggPSBjb21wdXRlSGFzaE9uRWxlbWVudHMoY29uc3RydWN0b3JDYWxsZGF0YS5tYXAoQmlnSW50KSkgYXMgc3RyaW5nO1xuICBjb25zdCByYXdIYXNoID0gY29tcHV0ZUhhc2hPbkVsZW1lbnRzKFtcbiAgICBDT05UUkFDVF9BRERSRVNTX1BSRUZJWCxcbiAgICBCaWdJbnQoZGVwbG95ZXJBZGRyZXNzKSxcbiAgICBCaWdJbnQoc2FsdCksXG4gICAgQmlnSW50KGNsYXNzSGFzaCksXG4gICAgQmlnSW50KGNhbGxkYXRhSGFzaCksXG4gIF0pIGFzIHN0cmluZztcbiAgcmV0dXJuIG5vcm1hbGl6ZUFkZHJlc3MoJzB4JyArIChCaWdJbnQocmF3SGFzaCkgJSBBRERSX0JPVU5EKS50b1N0cmluZygxNikpO1xufVxuXG4vKipcbiAqIENvbXB1dGUgU3RhcmtuZXQgRXRoQWNjb3VudCBjb3VudGVyZmFjdHVhbCBhZGRyZXNzIGZyb20gcHVibGljIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTdGFya25ldEFkZHJlc3MoZnVsbFB1YmxpY0tleTogc3RyaW5nKToge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yQ2FsbGRhdGE6IHN0cmluZ1tdO1xuICBzYWx0OiBzdHJpbmc7XG59IHtcbiAgY29uc3QgY29uc3RydWN0b3JDYWxsZGF0YSA9IGNvbXBpbGVFdGhBY2NvdW50Q29uc3RydWN0b3JDYWxsZGF0YShmdWxsUHVibGljS2V5KTtcblxuICBjb25zdCBwdWJYID0gQmlnSW50KCcweCcgKyBmdWxsUHVibGljS2V5LnNsaWNlKDAsIDY0KSk7XG4gIGNvbnN0IHNhbHQgPSAnMHgnICsgKHB1YlggJSBGRUxUX01BWCkudG9TdHJpbmcoMTYpO1xuXG4gIGNvbnN0IGFkZHJlc3MgPSBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaChzYWx0LCBPWl9FVEhfQUNDT1VOVF9DTEFTU19IQVNILCBjb25zdHJ1Y3RvckNhbGxkYXRhLCAwKTtcblxuICByZXR1cm4geyBhZGRyZXNzLCBjb25zdHJ1Y3RvckNhbGxkYXRhLCBzYWx0IH07XG59XG5cbi8qKlxuICogRGVyaXZlIFN0YXJrbmV0IEV0aEFjY291bnQgYWRkcmVzcyBmcm9tIGNvbXByZXNzZWQgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShjb21wcmVzc2VkUHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBmdWxsUHVibGljS2V5ID0gZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5KGNvbXByZXNzZWRQdWJsaWNLZXkpO1xuICBjb25zdCB7IGFkZHJlc3MgfSA9IGNvbXB1dGVTdGFya25ldEFkZHJlc3MoZnVsbFB1YmxpY0tleSk7XG4gIHJldHVybiBhZGRyZXNzO1xufVxuXG4vKipcbiAqIEZvcm1hdCBFQ0RTQSBzaWduYXR1cmUgZm9yIFN0YXJrbmV0IEV0aEFjY291bnQuXG4gKiBSZXR1cm5zIFtyX2xvdywgcl9oaWdoLCBzX2xvdywgc19oaWdoLCB2XS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEV0aEFjY291bnRTaWduYXR1cmUocjogc3RyaW5nLCBzOiBzdHJpbmcsIHJlY2lkOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJCaWcgPSBCaWdJbnQoJzB4JyArIHIpO1xuICBjb25zdCBzQmlnID0gQmlnSW50KCcweCcgKyBzKTtcbiAgY29uc3QgdiA9IEJpZ0ludChyZWNpZCk7XG5cbiAgcmV0dXJuIFtcbiAgICAnMHgnICsgKHJCaWcgJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAockJpZyA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChzQmlnICYgTUFTS18xMjgpLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHNCaWcgPj4gMTI4bikudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyB2LnRvU3RyaW5nKDE2KSxcbiAgXTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHJlY2lwaWVudCwgYW1vdW50LCBhbmQgdG9rZW4gY29udHJhY3QgZnJvbSBhIHRyYW5zZmVyIGNhbGwuXG4gKiBSZXZlcnNlIG9mIFRyYW5zZmVyQnVpbGRlci5jb21waWxlVHJhbnNmZXJDYWxsZGF0YTogY2FsbGRhdGEgPSBbcmVjaXBpZW50LCBhbW91bnRfbG93LCBhbW91bnRfaGlnaF0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyYW5zZmVyQ2FsbChjYWxsOiBTdGFya25ldENhbGwpOiBQYXJzZWRUcmFuc2ZlckRhdGEgfCB1bmRlZmluZWQge1xuICBpZiAoY2FsbC5lbnRyeXBvaW50ICE9PSAndHJhbnNmZXInIHx8IGNhbGwuY2FsbGRhdGEubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgYW1vdW50TG93ID0gQmlnSW50KGNhbGwuY2FsbGRhdGFbMV0pO1xuICBjb25zdCBhbW91bnRIaWdoID0gQmlnSW50KGNhbGwuY2FsbGRhdGFbMl0pO1xuICBjb25zdCBhbW91bnQgPSAoKGFtb3VudEhpZ2ggPDwgMTI4bikgfCBhbW91bnRMb3cpLnRvU3RyaW5nKCk7XG4gIHJldHVybiB7XG4gICAgcmVjaXBpZW50OiBjYWxsLmNhbGxkYXRhWzBdLFxuICAgIGFtb3VudCxcbiAgICB0b2tlbkNvbnRyYWN0OiBjYWxsLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIG5ldyBzZWNwMjU2azEga2V5IHBhaXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IHsgcHViOiBzdHJpbmc7IHBydjogc3RyaW5nIH0ge1xuICBjb25zdCB7IEtleVBhaXI6IFN0YXJrbmV0S2V5UGFpciB9ID0gcmVxdWlyZSgnLi9rZXlQYWlyJyk7XG4gIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IFN0YXJrbmV0S2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgU3RhcmtuZXRLZXlQYWlyKCk7XG4gIGNvbnN0IHsgcHViLCBwcnYgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICBpZiAoIXBydikge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJpdmF0ZSBrZXkgaXMgbWlzc2luZyBpbiB0aGUgZ2VuZXJhdGVkIGtleSBwYWlyLicpO1xuICB9XG4gIHJldHVybiB7IHB1YiwgcHJ2IH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgcmF3IHRyYW5zYWN0aW9uIGRhdGEgaGFzIHJlcXVpcmVkIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24odHg6IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhKTogdm9pZCB7XG4gIGlmICghdHguc2VuZGVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBzZW5kZXIgYWRkcmVzcycpO1xuICB9XG4gIGlmICghaXNWYWxpZEFkZHJlc3ModHguc2VuZGVyQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VuZGVyIGFkZHJlc3M6ICR7dHguc2VuZGVyQWRkcmVzc31gKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkUHVibGljS2V5LFxuICBpc1ZhbGlkUHJpdmF0ZUtleSxcbiAgZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5LFxuICBjb21waWxlRXRoQWNjb3VudENvbnN0cnVjdG9yQ2FsbGRhdGEsXG4gIGNhbGN1bGF0ZUNvbnRyYWN0QWRkcmVzc0Zyb21IYXNoLFxuICBjb21wdXRlU3RhcmtuZXRBZGRyZXNzLFxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSxcbiAgbm9ybWFsaXplQWRkcmVzcyxcbiAgZm9ybWF0RXRoQWNjb3VudFNpZ25hdHVyZSxcbiAgcGFyc2VUcmFuc2ZlckNhbGwsXG4gIGdlbmVyYXRlS2V5UGFpcixcbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbixcbn07XG4iXX0=
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUJBLDRDQUdDO0FBTUQsd0NBU0M7QUFLRCw0Q0FnQkM7QUFLRCw4Q0FHQztBQUtELDREQWFDO0FBTUQsb0ZBVUM7QUFNRCw0RUFlQztBQUtELHdEQWFDO0FBS0QsMERBSUM7QUFNRCw4REFZQztBQU1ELDhDQVlDO0FBS0QsMENBUUM7QUFLRCx3REFPQztBQUtELDhDQWVDO0FBTUQsa0RBRUM7QUFNRCx3REFVQztBQVNELHdFQStDQztBQXJURCw4Q0FBa0Y7QUFDbEYsMkNBV3FCO0FBRXJCLHFEQUE0QztBQUU1Qzs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLE9BQWU7SUFDOUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xFLE9BQU8sSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3BELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM1QyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzFELElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxHQUFHLG9CQUFRLENBQUM7SUFDcEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8s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LENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNiLE1BQU07UUFDTixJQUFBLDJCQUFnQixFQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFBLDJCQUFnQixFQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMvQyxDQUFDO0lBRUYsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUEsMkJBQWdCLEVBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUEsMkJBQWdCLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsa0JBQWU7SUFDYixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQix3QkFBd0I7SUFDeEIsb0NBQW9DO0lBQ3BDLGdDQUFnQztJQUNoQyxzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtJQUNoQix5QkFBeUI7SUFDekIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsOEJBQThCO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlSGFzaE9uRWxlbWVudHMsIHBvc2VpZG9uSGFzaE1hbnksIGtlY2NhayB9IGZyb20gJ0BzY3VyZS9zdGFya25ldCc7XG5pbXBvcnQge1xuICBGRUxUX01BWCxcbiAgTUFTS18xMjgsXG4gIE9aX0VUSF9BQ0NPVU5UX0NMQVNTX0hBU0gsXG4gIEFERFJfQk9VTkQsXG4gIENPTlRSQUNUX0FERFJFU1NfUFJFRklYLFxuICBJTlZPS0VfVFhfUFJFRklYLFxuICBUUkFOU0FDVElPTl9WRVJTSU9OXzMsXG4gIEwxX0dBU19OQU1FLFxuICBMMl9HQVNfTkFNRSxcbiAgTDFfREFUQV9HQVNfTkFNRSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEsIFN0YXJrbmV0Q2FsbCwgUGFyc2VkVHJhbnNmZXJEYXRhLCBJbnZva2VUcmFuc2FjdGlvbkhhc2hQYXJhbXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGVjYyB9IGZyb20gJ0BiaXRnby1iZXRhL3NlY3AyNTZrMSc7XG5cbi8qKlxuICogTm9ybWFsaXplIGEgU3RhcmtuZXQgYWRkcmVzcyB0byBjYW5vbmljYWwgZm9ybTogMHggKyA2NCBoZXggY2hhcnMsIHplcm8tcGFkZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBoZXggPSBhZGRyZXNzLnN0YXJ0c1dpdGgoJzB4JykgPyBhZGRyZXNzLnNsaWNlKDIpIDogYWRkcmVzcztcbiAgcmV0dXJuICcweCcgKyBoZXgucGFkU3RhcnQoNjQsICcwJykudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBTdGFya25ldCBhZGRyZXNzZXMgYXJlIGZlbHQyNTIgdmFsdWVzIHJlcHJlc2VudGVkIGFzIDB4LXByZWZpeGVkIGhleC5cbiAqIFZhbGlkIHJhbmdlOiAwIDwgYWRkcmVzcyA8IEZFTFRfTUFYLCB3aXRoIDB4IHByZWZpeCBhbmQgaGV4IGNoYXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgYWRkcmVzcyAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFhZGRyZXNzLm1hdGNoKC9eMHhbMC05YS1mQS1GXXsxLDY0fSQvKSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IHZhbCA9IEJpZ0ludChhZGRyZXNzKTtcbiAgICByZXR1cm4gdmFsID4gMG4gJiYgdmFsIDwgRkVMVF9NQVg7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgc2VjcDI1NmsxIHB1YmxpYyBrZXkgKGNvbXByZXNzZWQgMzMgYnl0ZXMgb3IgdW5jb21wcmVzc2VkIDY1IGJ5dGVzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oa2V5LCAnaGV4Jyk7XG4gICAgaWYgKGJ1Zi5sZW5ndGggPT09IDMzICYmIChidWZbMF0gPT09IDB4MDIgfHwgYnVmWzBdID09PSAweDAzKSkge1xuICAgICAgZWNjLnBvaW50Q29tcHJlc3MoYnVmLCB0cnVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoYnVmLmxlbmd0aCA9PT0gNjUgJiYgYnVmWzBdID09PSAweDA0KSB7XG4gICAgICBlY2MucG9pbnRDb21wcmVzcyhidWYsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSBzZWNwMjU2azEgcHJpdmF0ZSBrZXkgKDMyIGJ5dGVzIGhleCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIC9eWzAtOWEtZkEtRl17NjR9JC8udGVzdChrZXkpO1xufVxuXG4vKipcbiAqIEdldCB1bmNvbXByZXNzZWQgcHVibGljIGtleSAoeCB8fCB5LCAxMjggaGV4IGNoYXJzLCBubyAwNCBwcmVmaXgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5KGNvbXByZXNzZWRIZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKGNvbXByZXNzZWRIZXgsICdoZXgnKTtcbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDY1ICYmIGJ1ZlswXSA9PT0gMHgwNCkge1xuICAgIHJldHVybiBjb21wcmVzc2VkSGV4LnNsaWNlKDIpO1xuICB9XG4gIGlmIChidWYubGVuZ3RoID09PSAzMyAmJiAoYnVmWzBdID09PSAweDAyIHx8IGJ1ZlswXSA9PT0gMHgwMykpIHtcbiAgICBjb25zdCB1bmNvbXByZXNzZWQgPSBCdWZmZXIuZnJvbShlY2MucG9pbnRDb21wcmVzcyhidWYsIGZhbHNlKSk7XG4gICAgcmV0dXJuIHVuY29tcHJlc3NlZC50b1N0cmluZygnaGV4Jykuc2xpY2UoMik7XG4gIH1cbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDY0KSB7XG4gICAgcmV0dXJuIGNvbXByZXNzZWRIZXg7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHB1YmxpYyBrZXkgZm9ybWF0OiAke2NvbXByZXNzZWRIZXguc3Vic3RyaW5nKDAsIDEwKX0uLi5gKTtcbn1cblxuLyoqXG4gKiBDb21waWxlIEV0aEFjY291bnQgY29uc3RydWN0b3IgY2FsbGRhdGEgZnJvbSBmdWxsIHNlY3AyNTZrMSBwdWJsaWMga2V5LlxuICogUmV0dXJucyBbeF9sb3csIHhfaGlnaCwgeV9sb3csIHlfaGlnaF0gYXMgZmVsdDI1MiBzdHJpbmdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZUV0aEFjY291bnRDb25zdHJ1Y3RvckNhbGxkYXRhKGZ1bGxQdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcHViWCA9IEJpZ0ludCgnMHgnICsgZnVsbFB1YmxpY0tleS5zbGljZSgwLCA2NCkpO1xuICBjb25zdCBwdWJZID0gQmlnSW50KCcweCcgKyBmdWxsUHVibGljS2V5LnNsaWNlKDY0KSk7XG5cbiAgcmV0dXJuIFtcbiAgICAnMHgnICsgKHB1YlggJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAocHViWCA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChwdWJZICYgTUFTS18xMjgpLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHB1YlkgPj4gMTI4bikudG9TdHJpbmcoMTYpLFxuICBdO1xufVxuXG4vKipcbiAqIENvbXB1dGUgU3RhcmtuZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGhhc2ggY29tcG9uZW50cy5cbiAqIFJlcGxpY2F0ZXMgc3RhcmtuZXQuanMgY2FsY3VsYXRlQ29udHJhY3RBZGRyZXNzRnJvbUhhc2ggdXNpbmcgQHNjdXJlL3N0YXJrbmV0IHBlZGVyc2VuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udHJhY3RBZGRyZXNzRnJvbUhhc2goXG4gIHNhbHQ6IHN0cmluZyxcbiAgY2xhc3NIYXNoOiBzdHJpbmcsXG4gIGNvbnN0cnVjdG9yQ2FsbGRhdGE6IHN0cmluZ1tdLFxuICBkZXBsb3llckFkZHJlc3M6IG51bWJlciB8IGJpZ2ludFxuKTogc3RyaW5nIHtcbiAgY29uc3QgY2FsbGRhdGFIYXNoID0gY29tcHV0ZUhhc2hPbkVsZW1lbnRzKGNvbnN0cnVjdG9yQ2FsbGRhdGEubWFwKEJpZ0ludCkpIGFzIHN0cmluZztcbiAgY29uc3QgcmF3SGFzaCA9IGNvbXB1dGVIYXNoT25FbGVtZW50cyhbXG4gICAgQ09OVFJBQ1RfQUREUkVTU19QUkVGSVgsXG4gICAgQmlnSW50KGRlcGxveWVyQWRkcmVzcyksXG4gICAgQmlnSW50KHNhbHQpLFxuICAgIEJpZ0ludChjbGFzc0hhc2gpLFxuICAgIEJpZ0ludChjYWxsZGF0YUhhc2gpLFxuICBdKSBhcyBzdHJpbmc7XG4gIHJldHVybiBub3JtYWxpemVBZGRyZXNzKCcweCcgKyAoQmlnSW50KHJhd0hhc2gpICUgQUREUl9CT1VORCkudG9TdHJpbmcoMTYpKTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIFN0YXJrbmV0IEV0aEFjY291bnQgY291bnRlcmZhY3R1YWwgYWRkcmVzcyBmcm9tIHB1YmxpYyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlU3RhcmtuZXRBZGRyZXNzKGZ1bGxQdWJsaWNLZXk6IHN0cmluZyk6IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBjb25zdHJ1Y3RvckNhbGxkYXRhOiBzdHJpbmdbXTtcbiAgc2FsdDogc3RyaW5nO1xufSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yQ2FsbGRhdGEgPSBjb21waWxlRXRoQWNjb3VudENvbnN0cnVjdG9yQ2FsbGRhdGEoZnVsbFB1YmxpY0tleSk7XG5cbiAgY29uc3QgcHViWCA9IEJpZ0ludCgnMHgnICsgZnVsbFB1YmxpY0tleS5zbGljZSgwLCA2NCkpO1xuICBjb25zdCBzYWx0ID0gJzB4JyArIChwdWJYICUgRkVMVF9NQVgpLnRvU3RyaW5nKDE2KTtcblxuICBjb25zdCBhZGRyZXNzID0gY2FsY3VsYXRlQ29udHJhY3RBZGRyZXNzRnJvbUhhc2goc2FsdCwgT1pfRVRIX0FDQ09VTlRfQ0xBU1NfSEFTSCwgY29uc3RydWN0b3JDYWxsZGF0YSwgMCk7XG5cbiAgcmV0dXJuIHsgYWRkcmVzcywgY29uc3RydWN0b3JDYWxsZGF0YSwgc2FsdCB9O1xufVxuXG4vKipcbiAqIERlcml2ZSBTdGFya25ldCBFdGhBY2NvdW50IGFkZHJlc3MgZnJvbSBjb21wcmVzc2VkIHNlY3AyNTZrMSBwdWJsaWMga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoY29tcHJlc3NlZFB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZnVsbFB1YmxpY0tleSA9IGdldFVuY29tcHJlc3NlZFB1YmxpY0tleShjb21wcmVzc2VkUHVibGljS2V5KTtcbiAgY29uc3QgeyBhZGRyZXNzIH0gPSBjb21wdXRlU3RhcmtuZXRBZGRyZXNzKGZ1bGxQdWJsaWNLZXkpO1xuICByZXR1cm4gYWRkcmVzcztcbn1cblxuLyoqXG4gKiBGb3JtYXQgRUNEU0Egc2lnbmF0dXJlIGZvciBTdGFya25ldCBFdGhBY2NvdW50LlxuICogUmV0dXJucyBbcl9sb3csIHJfaGlnaCwgc19sb3csIHNfaGlnaCwgdl0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFdGhBY2NvdW50U2lnbmF0dXJlKHI6IHN0cmluZywgczogc3RyaW5nLCByZWNpZDogbnVtYmVyKTogc3RyaW5nW10ge1xuICBjb25zdCByQmlnID0gQmlnSW50KCcweCcgKyByKTtcbiAgY29uc3Qgc0JpZyA9IEJpZ0ludCgnMHgnICsgcyk7XG4gIGNvbnN0IHYgPSBCaWdJbnQocmVjaWQpO1xuXG4gIHJldHVybiBbXG4gICAgJzB4JyArIChyQmlnICYgTUFTS18xMjgpLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHJCaWcgPj4gMTI4bikudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAoc0JpZyAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChzQmlnID4+IDEyOG4pLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgdi50b1N0cmluZygxNiksXG4gIF07XG59XG5cbi8qKlxuICogRXh0cmFjdCByZWNpcGllbnQsIGFtb3VudCwgYW5kIHRva2VuIGNvbnRyYWN0IGZyb20gYSB0cmFuc2ZlciBjYWxsLlxuICogUmV2ZXJzZSBvZiBUcmFuc2ZlckJ1aWxkZXIuY29tcGlsZVRyYW5zZmVyQ2FsbGRhdGE6IGNhbGxkYXRhID0gW3JlY2lwaWVudCwgYW1vdW50X2xvdywgYW1vdW50X2hpZ2hdLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUcmFuc2ZlckNhbGwoY2FsbDogU3RhcmtuZXRDYWxsKTogUGFyc2VkVHJhbnNmZXJEYXRhIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNhbGwuZW50cnlwb2ludCAhPT0gJ3RyYW5zZmVyJyB8fCBjYWxsLmNhbGxkYXRhLmxlbmd0aCA8IDMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGFtb3VudExvdyA9IEJpZ0ludChjYWxsLmNhbGxkYXRhWzFdKTtcbiAgY29uc3QgYW1vdW50SGlnaCA9IEJpZ0ludChjYWxsLmNhbGxkYXRhWzJdKTtcbiAgY29uc3QgYW1vdW50ID0gKChhbW91bnRIaWdoIDw8IDEyOG4pIHwgYW1vdW50TG93KS50b1N0cmluZygpO1xuICByZXR1cm4ge1xuICAgIHJlY2lwaWVudDogY2FsbC5jYWxsZGF0YVswXSxcbiAgICBhbW91bnQsXG4gICAgdG9rZW5Db250cmFjdDogY2FsbC5jb250cmFjdEFkZHJlc3MsXG4gIH07XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBuZXcgc2VjcDI1NmsxIGtleSBwYWlyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiB7IHB1Yjogc3RyaW5nOyBwcnY6IHN0cmluZyB9IHtcbiAgY29uc3QgeyBLZXlQYWlyOiBTdGFya25ldEtleVBhaXIgfSA9IHJlcXVpcmUoJy4va2V5UGFpcicpO1xuICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBTdGFya25ldEtleVBhaXIoeyBzZWVkIH0pIDogbmV3IFN0YXJrbmV0S2V5UGFpcigpO1xuICBjb25zdCB7IHB1YiwgcHJ2IH0gPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgaWYgKCFwcnYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1ByaXZhdGUga2V5IGlzIG1pc3NpbmcgaW4gdGhlIGdlbmVyYXRlZCBrZXkgcGFpci4nKTtcbiAgfVxuICByZXR1cm4geyBwdWIsIHBydiB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHJhdyB0cmFuc2FjdGlvbiBkYXRhIGhhcyByZXF1aXJlZCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHR4OiBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSk6IHZvaWQge1xuICBpZiAoIXR4LnNlbmRlckFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgc2VuZGVyIGFkZHJlc3MnKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRBZGRyZXNzKHR4LnNlbmRlckFkZHJlc3MpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbmRlciBhZGRyZXNzOiAke3R4LnNlbmRlckFkZHJlc3N9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbmNvZGUgYW4gQVNDSUkgc3RyaW5nIChtYXggMzEgY2hhcnMpIGFzIGEgZmVsdDI1Mi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVNob3J0U3RyaW5nKHN0cjogc3RyaW5nKTogYmlnaW50IHtcbiAgaWYgKHN0ci5sZW5ndGggPiAzMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2hvcnQgc3RyaW5nIHRvbyBsb25nOiAke3N0ci5sZW5ndGh9ID4gMzFgKTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA+IDEyNykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb24tQVNDSUkgY2hhcmFjdGVyIGF0IGluZGV4ICR7aX06IGNvZGUgJHtjb2RlfWApO1xuICAgIH1cbiAgfVxuICBsZXQgcmVzdWx0ID0gMG47XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVzdWx0ID0gKHJlc3VsdCA8PCA4bikgfCBCaWdJbnQoc3RyLmNoYXJDb2RlQXQoaSkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgU3RhcmtuZXQgZnVuY3Rpb24gc2VsZWN0b3I6IGtlY2NhazI1NihuYW1lKSBtYXNrZWQgdG8gMjUwIGJpdHMuXG4gKiBAc2N1cmUvc3RhcmtuZXQncyBrZWNjYWsoKSBhbHJlYWR5IGFwcGxpZXMgdGhlIDI1MC1iaXQgbWFzay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdG9yRnJvbU5hbWUobmFtZTogc3RyaW5nKTogYmlnaW50IHtcbiAgcmV0dXJuIGtlY2NhayhCdWZmZXIuZnJvbShuYW1lLCAnYXNjaWknKSk7XG59XG5cbi8qKlxuICogQ29tcGlsZSBjYWxscyBpbnRvIHRoZSBDYWlybyAxIG11bHRpY2FsbCBfX2V4ZWN1dGVfXyBjYWxsZGF0YSBmb3JtYXQuXG4gKiBGb3JtYXQ6IFtudW1fY2FsbHMsIHRvXzAsIHNlbGVjdG9yXzAsIGRhdGFfbGVuXzAsIC4uLmRhdGFfMCwgdG9fMSwgLi4uXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZUV4ZWN1dGVDYWxsZGF0YShjYWxsczogU3RhcmtuZXRDYWxsW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgcmVzdWx0LnB1c2goJzB4JyArIEJpZ0ludChjYWxscy5sZW5ndGgpLnRvU3RyaW5nKDE2KSk7XG4gIGZvciAoY29uc3QgY2FsbCBvZiBjYWxscykge1xuICAgIHJlc3VsdC5wdXNoKGNhbGwuY29udHJhY3RBZGRyZXNzKTtcbiAgICByZXN1bHQucHVzaCgnMHgnICsgZ2V0U2VsZWN0b3JGcm9tTmFtZShjYWxsLmVudHJ5cG9pbnQpLnRvU3RyaW5nKDE2KSk7XG4gICAgcmVzdWx0LnB1c2goJzB4JyArIEJpZ0ludChjYWxsLmNhbGxkYXRhLmxlbmd0aCkudG9TdHJpbmcoMTYpKTtcbiAgICByZXN1bHQucHVzaCguLi5jYWxsLmNhbGxkYXRhKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBlbmNvZGVSZXNvdXJjZUJvdW5kKHR5cGVOYW1lOiBiaWdpbnQsIG1heEFtb3VudDogc3RyaW5nLCBtYXhQcmljZVBlclVuaXQ6IHN0cmluZyk6IGJpZ2ludCB7XG4gIHJldHVybiAodHlwZU5hbWUgPDwgMTkybikgfCAoQmlnSW50KG1heEFtb3VudCkgPDwgMTI4bikgfCBCaWdJbnQobWF4UHJpY2VQZXJVbml0KTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIHRoZSBQb3NlaWRvbiBWMyBJTlZPS0UgdHJhbnNhY3Rpb24gaGFzaCBwZXIgU05JUC04LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlSW52b2tlVHJhbnNhY3Rpb25IYXNoKHBhcmFtczogSW52b2tlVHJhbnNhY3Rpb25IYXNoUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIHNlbmRlckFkZHJlc3MsXG4gICAgY29tcGlsZWRDYWxsZGF0YSxcbiAgICBjaGFpbklkLFxuICAgIG5vbmNlLFxuICAgIHJlc291cmNlQm91bmRzLFxuICAgIHRpcCA9ICcweDAnLFxuICAgIG5vbmNlRGF0YUF2YWlsYWJpbGl0eU1vZGUgPSAwLFxuICAgIGZlZURhdGFBdmFpbGFiaWxpdHlNb2RlID0gMCxcbiAgICBwYXltYXN0ZXJEYXRhID0gW10sXG4gICAgYWNjb3VudERlcGxveW1lbnREYXRhID0gW10sXG4gICAgcHJvb2ZGYWN0cyxcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBmZWVGaWVsZEhhc2ggPSBwb3NlaWRvbkhhc2hNYW55KFtcbiAgICBCaWdJbnQodGlwKSxcbiAgICBlbmNvZGVSZXNvdXJjZUJvdW5kKEwxX0dBU19OQU1FLCByZXNvdXJjZUJvdW5kcy5sMV9nYXMubWF4X2Ftb3VudCwgcmVzb3VyY2VCb3VuZHMubDFfZ2FzLm1heF9wcmljZV9wZXJfdW5pdCksXG4gICAgZW5jb2RlUmVzb3VyY2VCb3VuZChMMl9HQVNfTkFNRSwgcmVzb3VyY2VCb3VuZHMubDJfZ2FzLm1heF9hbW91bnQsIHJlc291cmNlQm91bmRzLmwyX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXQpLFxuICAgIGVuY29kZVJlc291cmNlQm91bmQoXG4gICAgICBMMV9EQVRBX0dBU19OQU1FLFxuICAgICAgcmVzb3VyY2VCb3VuZHMubDFfZGF0YV9nYXMubWF4X2Ftb3VudCxcbiAgICAgIHJlc291cmNlQm91bmRzLmwxX2RhdGFfZ2FzLm1heF9wcmljZV9wZXJfdW5pdFxuICAgICksXG4gIF0pO1xuXG4gIGNvbnN0IGRhTW9kZSA9IChCaWdJbnQobm9uY2VEYXRhQXZhaWxhYmlsaXR5TW9kZSkgPDwgMzJuKSB8IEJpZ0ludChmZWVEYXRhQXZhaWxhYmlsaXR5TW9kZSk7XG5cbiAgY29uc3QgaGFzaEZpZWxkczogYmlnaW50W10gPSBbXG4gICAgSU5WT0tFX1RYX1BSRUZJWCxcbiAgICBUUkFOU0FDVElPTl9WRVJTSU9OXzMsXG4gICAgQmlnSW50KHNlbmRlckFkZHJlc3MpLFxuICAgIGZlZUZpZWxkSGFzaCxcbiAgICBwb3NlaWRvbkhhc2hNYW55KHBheW1hc3RlckRhdGEubWFwKEJpZ0ludCkpLFxuICAgIEJpZ0ludChjaGFpbklkKSxcbiAgICBCaWdJbnQobm9uY2UpLFxuICAgIGRhTW9kZSxcbiAgICBwb3NlaWRvbkhhc2hNYW55KGFjY291bnREZXBsb3ltZW50RGF0YS5tYXAoQmlnSW50KSksXG4gICAgcG9zZWlkb25IYXNoTWFueShjb21waWxlZENhbGxkYXRhLm1hcChCaWdJbnQpKSxcbiAgXTtcblxuICBpZiAocHJvb2ZGYWN0cyAmJiBwcm9vZkZhY3RzLmxlbmd0aCA+IDApIHtcbiAgICBoYXNoRmllbGRzLnB1c2gocG9zZWlkb25IYXNoTWFueShwcm9vZkZhY3RzLm1hcChCaWdJbnQpKSk7XG4gIH1cblxuICBjb25zdCBoYXNoID0gcG9zZWlkb25IYXNoTWFueShoYXNoRmllbGRzKTtcbiAgcmV0dXJuICcweCcgKyBoYXNoLnRvU3RyaW5nKDE2KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpc1ZhbGlkQWRkcmVzcyxcbiAgaXNWYWxpZFB1YmxpY0tleSxcbiAgaXNWYWxpZFByaXZhdGVLZXksXG4gIGdldFVuY29tcHJlc3NlZFB1YmxpY0tleSxcbiAgY29tcGlsZUV0aEFjY291bnRDb25zdHJ1Y3RvckNhbGxkYXRhLFxuICBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaCxcbiAgY29tcHV0ZVN0YXJrbmV0QWRkcmVzcyxcbiAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXksXG4gIG5vcm1hbGl6ZUFkZHJlc3MsXG4gIGZvcm1hdEV0aEFjY291bnRTaWduYXR1cmUsXG4gIHBhcnNlVHJhbnNmZXJDYWxsLFxuICBnZW5lcmF0ZUtleVBhaXIsXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24sXG4gIGVuY29kZVNob3J0U3RyaW5nLFxuICBnZXRTZWxlY3RvckZyb21OYW1lLFxuICBjb21waWxlRXhlY3V0ZUNhbGxkYXRhLFxuICBjYWxjdWxhdGVJbnZva2VUcmFuc2FjdGlvbkhhc2gsXG59O1xuIl19
|