@bitgo-beta/sdk-coin-trx 1.2.3-alpha.317 → 1.2.3-alpha.319

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.
Files changed (45) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/resources/protobuf/Contract.proto +16 -0
  3. package/dist/resources/protobuf/tron.d.ts +1012 -0
  4. package/dist/resources/protobuf/tron.js +4169 -1231
  5. package/dist/resources/protobuf/tron.proto +4 -0
  6. package/dist/src/lib/contractCallBuilder.d.ts +1 -35
  7. package/dist/src/lib/contractCallBuilder.d.ts.map +1 -1
  8. package/dist/src/lib/contractCallBuilder.js +3 -66
  9. package/dist/src/lib/enum.d.ts +24 -1
  10. package/dist/src/lib/enum.d.ts.map +1 -1
  11. package/dist/src/lib/enum.js +26 -2
  12. package/dist/src/lib/freezeBalanceTxBuilder.d.ts +71 -0
  13. package/dist/src/lib/freezeBalanceTxBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/freezeBalanceTxBuilder.js +211 -0
  15. package/dist/src/lib/iface.d.ts +171 -2
  16. package/dist/src/lib/iface.d.ts.map +1 -1
  17. package/dist/src/lib/iface.js +1 -1
  18. package/dist/src/lib/transaction.d.ts.map +1 -1
  19. package/dist/src/lib/transaction.js +51 -1
  20. package/dist/src/lib/transactionBuilder.d.ts +50 -5
  21. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  22. package/dist/src/lib/transactionBuilder.js +83 -8
  23. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts +65 -0
  24. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  25. package/dist/src/lib/unfreezeBalanceTxBuilder.js +204 -0
  26. package/dist/src/lib/utils.d.ts +34 -2
  27. package/dist/src/lib/utils.d.ts.map +1 -1
  28. package/dist/src/lib/utils.js +178 -3
  29. package/dist/src/lib/voteWitnessTxBuilder.d.ts +62 -0
  30. package/dist/src/lib/voteWitnessTxBuilder.d.ts.map +1 -0
  31. package/dist/src/lib/voteWitnessTxBuilder.js +219 -0
  32. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts +49 -0
  33. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  34. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.js +167 -0
  35. package/dist/src/lib/wrappedBuilder.d.ts +32 -0
  36. package/dist/src/lib/wrappedBuilder.d.ts.map +1 -1
  37. package/dist/src/lib/wrappedBuilder.js +49 -1
  38. package/dist/src/trx.d.ts +0 -2
  39. package/dist/src/trx.d.ts.map +1 -1
  40. package/dist/src/trx.js +5 -6
  41. package/package.json +8 -7
  42. package/resources/protobuf/Contract.proto +16 -0
  43. package/resources/protobuf/tron.d.ts +1012 -0
  44. package/resources/protobuf/tron.js +4169 -1231
  45. package/resources/protobuf/tron.proto +4 -0
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FreezeBalanceTxBuilder = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ const transactionBuilder_1 = require("./transactionBuilder");
7
+ const transaction_1 = require("./transaction");
8
+ const utils_1 = require("./utils");
9
+ const tron_1 = require("../../resources/protobuf/tron");
10
+ var ContractType = tron_1.protocol.Transaction.Contract.ContractType;
11
+ class FreezeBalanceTxBuilder extends transactionBuilder_1.TransactionBuilder {
12
+ constructor(_coinConfig) {
13
+ super(_coinConfig);
14
+ this._signingKeys = [];
15
+ this.transaction = new transaction_1.Transaction(_coinConfig);
16
+ }
17
+ /** @inheritdoc */
18
+ get transactionType() {
19
+ return sdk_core_1.TransactionType.StakingActivate;
20
+ }
21
+ /**
22
+ * Set the frozen balance amount
23
+ *
24
+ * @param amount amount in TRX to freeze
25
+ * @returns the builder with the new parameter set
26
+ */
27
+ setFrozenBalance(amount) {
28
+ this._frozenBalance = amount;
29
+ return this;
30
+ }
31
+ /**
32
+ * Set the resource type
33
+ *
34
+ * @param resource resource type to freeze
35
+ * @returns the builder with the new parameter set
36
+ */
37
+ setResource(resource) {
38
+ this.validateResource(resource);
39
+ this._resource = resource;
40
+ return this;
41
+ }
42
+ /** @inheritdoc */
43
+ extendValidTo(extensionMs) {
44
+ if (this.transaction.signature && this.transaction.signature.length > 0) {
45
+ throw new sdk_core_1.ExtendTransactionError('Cannot extend a signed transaction');
46
+ }
47
+ if (extensionMs <= 0) {
48
+ throw new Error('Value cannot be below zero');
49
+ }
50
+ if (extensionMs > utils_1.TRANSACTION_MAX_EXPIRATION) {
51
+ throw new sdk_core_1.ExtendTransactionError('The expiration cannot be extended more than one year');
52
+ }
53
+ if (this._expiration) {
54
+ this._expiration = this._expiration + extensionMs;
55
+ }
56
+ else {
57
+ throw new Error('There is not expiration to extend');
58
+ }
59
+ }
60
+ /**
61
+ * Initialize the transaction builder fields using the transaction data
62
+ *
63
+ * @param {TransactionReceipt | string} rawTransaction the transaction data in a string or JSON format
64
+ * @returns {FreezeBalanceTxBuilder} the builder with the transaction data set
65
+ */
66
+ initBuilder(rawTransaction) {
67
+ this.transaction = this.fromImplementation(rawTransaction);
68
+ this.transaction.setTransactionType(this.transactionType);
69
+ this.validateRawTransaction(rawTransaction);
70
+ const tx = this.fromImplementation(rawTransaction);
71
+ this.transaction = tx;
72
+ this._signingKeys = [];
73
+ const rawData = tx.toJson().raw_data;
74
+ this._refBlockBytes = rawData.ref_block_bytes;
75
+ this._refBlockHash = rawData.ref_block_hash;
76
+ this._expiration = rawData.expiration;
77
+ this._timestamp = rawData.timestamp;
78
+ this.transaction.setTransactionType(sdk_core_1.TransactionType.StakingActivate);
79
+ const contractCall = rawData.contract[0];
80
+ this.initFreezeContractCall(contractCall);
81
+ return this;
82
+ }
83
+ /**
84
+ * Initialize the freeze contract call specific data
85
+ *
86
+ * @param {FreezeBalanceV2Contract} freezeContractCall object with freeze txn data
87
+ */
88
+ initFreezeContractCall(freezeContractCall) {
89
+ const { resource, owner_address, frozen_balance } = freezeContractCall.parameter.value;
90
+ if (owner_address) {
91
+ this.source({ address: (0, utils_1.getBase58AddressFromHex)(owner_address) });
92
+ }
93
+ if (resource) {
94
+ this.setResource(resource);
95
+ }
96
+ if (frozen_balance) {
97
+ this.setFrozenBalance(frozen_balance.toString());
98
+ }
99
+ }
100
+ async buildImplementation() {
101
+ this.createFreezeBalanceTransaction();
102
+ /** @inheritdoccreateTransaction */
103
+ // This method must be extended on child classes
104
+ if (this._signingKeys.length > 0) {
105
+ this.applySignatures();
106
+ }
107
+ if (!this.transaction.id) {
108
+ throw new sdk_core_1.BuildTransactionError('A valid transaction must have an id');
109
+ }
110
+ return Promise.resolve(this.transaction);
111
+ }
112
+ /**
113
+ * Helper method to create the freeze balance transaction
114
+ */
115
+ createFreezeBalanceTransaction() {
116
+ const rawDataHex = this.getFreezeRawDataHex();
117
+ const rawData = (0, utils_1.decodeTransaction)(rawDataHex);
118
+ const contract = rawData.contract[0];
119
+ const contractParameter = contract.parameter;
120
+ contractParameter.value.owner_address = this._ownerAddress.toLocaleLowerCase();
121
+ contractParameter.value.frozen_balance = Number(this._frozenBalance);
122
+ contractParameter.value.resource = this._resource;
123
+ contractParameter.type_url = 'type.googleapis.com/protocol.FreezeBalanceV2Contract';
124
+ contract.type = 'FreezeBalanceV2Contract';
125
+ const hexBuffer = Buffer.from(rawDataHex, 'hex');
126
+ const id = (0, crypto_1.createHash)('sha256').update(hexBuffer).digest('hex');
127
+ const txRecip = {
128
+ raw_data: rawData,
129
+ raw_data_hex: rawDataHex,
130
+ txID: id,
131
+ signature: this.transaction.signature,
132
+ };
133
+ this.transaction = new transaction_1.Transaction(this._coinConfig, txRecip);
134
+ }
135
+ /**
136
+ * Helper method to get the freeze balance transaction raw data hex
137
+ *
138
+ * @returns {string} the freeze balance transaction raw data hex
139
+ */
140
+ getFreezeRawDataHex() {
141
+ const rawContract = {
142
+ ownerAddress: (0, utils_1.getByteArrayFromHexAddress)(this._ownerAddress),
143
+ frozenBalance: this._frozenBalance,
144
+ resource: this._resource,
145
+ };
146
+ const freezeContract = tron_1.protocol.FreezeBalanceV2Contract.fromObject(rawContract);
147
+ const freezeContractBytes = tron_1.protocol.FreezeBalanceV2Contract.encode(freezeContract).finish();
148
+ const txContract = {
149
+ type: ContractType.FreezeBalanceV2Contract,
150
+ parameter: {
151
+ value: freezeContractBytes,
152
+ type_url: 'type.googleapis.com/protocol.FreezeBalanceV2Contract',
153
+ },
154
+ };
155
+ const raw = {
156
+ refBlockBytes: Buffer.from(this._refBlockBytes, 'hex'),
157
+ refBlockHash: Buffer.from(this._refBlockHash, 'hex'),
158
+ expiration: this._expiration || Date.now() + utils_1.TRANSACTION_DEFAULT_EXPIRATION,
159
+ timestamp: this._timestamp || Date.now(),
160
+ contract: [txContract],
161
+ };
162
+ const rawTx = tron_1.protocol.Transaction.raw.create(raw);
163
+ return Buffer.from(tron_1.protocol.Transaction.raw.encode(rawTx).finish()).toString('hex');
164
+ }
165
+ /** @inheritdoc */
166
+ signImplementation(key) {
167
+ if (this._signingKeys.some((signingKey) => signingKey.key === key.key)) {
168
+ throw new sdk_core_1.SigningError('Duplicated key');
169
+ }
170
+ this._signingKeys.push(key);
171
+ // We keep this return for compatibility but is not meant to be use
172
+ return this.transaction;
173
+ }
174
+ applySignatures() {
175
+ if (!this.transaction.inputs) {
176
+ throw new sdk_core_1.SigningError('Transaction has no inputs');
177
+ }
178
+ this._signingKeys.forEach((key) => this.applySignature(key));
179
+ }
180
+ /**
181
+ * Validates the transaction
182
+ *
183
+ * @param {Transaction} transaction - The transaction to validate
184
+ * @throws {InvalidTransactionError} when the transaction is invalid
185
+ */
186
+ validateTransaction(transaction) {
187
+ this.validateFreezeTransactionFields();
188
+ }
189
+ /**
190
+ * Validates if the transaction is a valid freeze transaction
191
+ *
192
+ * @param {TransactionReceipt} transaction - The transaction to validate
193
+ * @throws {BuildTransactionError} when the transaction is invalid
194
+ */
195
+ validateFreezeTransactionFields() {
196
+ if (!this._frozenBalance) {
197
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: frozenBalance');
198
+ }
199
+ if (!this._ownerAddress) {
200
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: source');
201
+ }
202
+ if (!this._resource) {
203
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: resource');
204
+ }
205
+ if (!this._refBlockBytes || !this._refBlockHash) {
206
+ throw new sdk_core_1.BuildTransactionError('Missing block reference information');
207
+ }
208
+ }
209
+ }
210
+ exports.FreezeBalanceTxBuilder = FreezeBalanceTxBuilder;
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZXplQmFsYW5jZVR4QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZnJlZXplQmFsYW5jZVR4QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFDcEMsbURBQTZIO0FBRTdILDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFFNUMsbUNBTWlCO0FBQ2pCLHdEQUF5RDtBQUV6RCxJQUFPLFlBQVksR0FBRyxlQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7QUFFakUsTUFBYSxzQkFBdUIsU0FBUSx1Q0FBa0I7SUFLNUQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsYUFBYSxDQUFDLFdBQW1CO1FBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxpQ0FBc0IsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELElBQUksV0FBVyxHQUFHLGtDQUEwQixFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLGlDQUFzQixDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDcEQsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxjQUEyQztRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBNEIsQ0FBQztRQUNwRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHNCQUFzQixDQUFDLGtCQUEyQztRQUMxRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3ZGLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFBLCtCQUF1QixFQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUN0QyxtQ0FBbUM7UUFDbkMsZ0RBQWdEO1FBQ2hELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksZ0NBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyw4QkFBOEI7UUFDcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBQSx5QkFBaUIsRUFBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBNEIsQ0FBQztRQUNoRSxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDN0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDL0UsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNsRCxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsc0RBQXNELENBQUM7UUFDcEYsUUFBUSxDQUFDLElBQUksR0FBRyx5QkFBeUIsQ0FBQztRQUMxQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxNQUFNLEVBQUUsR0FBRyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRSxNQUFNLE9BQU8sR0FBdUI7WUFDbEMsUUFBUSxFQUFFLE9BQU87WUFDakIsWUFBWSxFQUFFLFVBQVU7WUFDeEIsSUFBSSxFQUFFLEVBQUU7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO1NBQ3RDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssbUJBQW1CO1FBQ3pCLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLFlBQVksRUFBRSxJQUFBLGtDQUEwQixFQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDNUQsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ2xDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztTQUN6QixDQUFDO1FBQ0YsTUFBTSxjQUFjLEdBQUcsZUFBUSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRixNQUFNLG1CQUFtQixHQUFHLGVBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0YsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLFlBQVksQ0FBQyx1QkFBdUI7WUFDMUMsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLFFBQVEsRUFBRSxzREFBc0Q7YUFDakU7U0FDRixDQUFDO1FBQ0YsTUFBTSxHQUFHLEdBQUc7WUFDVixhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQztZQUN0RCxZQUFZLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQztZQUNwRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsc0NBQThCO1lBQzNFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO1NBQ3ZCLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxlQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSx1QkFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLG1FQUFtRTtRQUNuRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLHVCQUFZLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBQyxXQUF3QjtRQUMxQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSywrQkFBK0I7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksZ0NBQXFCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksZ0NBQXFCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksZ0NBQXFCLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpPRCx3REFpT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSwgQmFzZUtleSwgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvciwgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBTaWduaW5nRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZWNlaXB0LCBGcmVlemVCYWxhbmNlVjJDb250cmFjdCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHtcbiAgZGVjb2RlVHJhbnNhY3Rpb24sXG4gIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzLFxuICBnZXRCYXNlNThBZGRyZXNzRnJvbUhleCxcbiAgVFJBTlNBQ1RJT05fTUFYX0VYUElSQVRJT04sXG4gIFRSQU5TQUNUSU9OX0RFRkFVTFRfRVhQSVJBVElPTixcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBwcm90b2NvbCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9wcm90b2J1Zi90cm9uJztcblxuaW1wb3J0IENvbnRyYWN0VHlwZSA9IHByb3RvY29sLlRyYW5zYWN0aW9uLkNvbnRyYWN0LkNvbnRyYWN0VHlwZTtcblxuZXhwb3J0IGNsYXNzIEZyZWV6ZUJhbGFuY2VUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3NpZ25pbmdLZXlzOiBCYXNlS2V5W107XG4gIHByaXZhdGUgX2Zyb3plbkJhbGFuY2U6IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVzb3VyY2U6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fc2lnbmluZ0tleXMgPSBbXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZnJvemVuIGJhbGFuY2UgYW1vdW50XG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgYW1vdW50IGluIFRSWCB0byBmcmVlemVcbiAgICogQHJldHVybnMgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHNldEZyb3plbkJhbGFuY2UoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9mcm96ZW5CYWxhbmNlID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcmVzb3VyY2UgdHlwZVxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2UgcmVzb3VyY2UgdHlwZSB0byBmcmVlemVcbiAgICogQHJldHVybnMgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHNldFJlc291cmNlKHJlc291cmNlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmVzb3VyY2UocmVzb3VyY2UpO1xuICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZXh0ZW5kVmFsaWRUbyhleHRlbnNpb25NczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlICYmIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdDYW5ub3QgZXh0ZW5kIGEgc2lnbmVkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbk1zIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgY2Fubm90IGJlIGJlbG93IHplcm8nKTtcbiAgICB9XG5cbiAgICBpZiAoZXh0ZW5zaW9uTXMgPiBUUkFOU0FDVElPTl9NQVhfRVhQSVJBVElPTikge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ1RoZSBleHBpcmF0aW9uIGNhbm5vdCBiZSBleHRlbmRlZCBtb3JlIHRoYW4gb25lIHllYXInKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXhwaXJhdGlvbikge1xuICAgICAgdGhpcy5fZXhwaXJhdGlvbiA9IHRoaXMuX2V4cGlyYXRpb24gKyBleHRlbnNpb25NcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSBpcyBub3QgZXhwaXJhdGlvbiB0byBleHRlbmQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGEgc3RyaW5nIG9yIEpTT04gZm9ybWF0XG4gICAqIEByZXR1cm5zIHtGcmVlemVCYWxhbmNlVHhCdWlsZGVyfSB0aGUgYnVpbGRlciB3aXRoIHRoZSB0cmFuc2FjdGlvbiBkYXRhIHNldFxuICAgKi9cbiAgaW5pdEJ1aWxkZXIocmF3VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uUmVjZWlwdCB8IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0aGlzLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgY29uc3QgdHggPSB0aGlzLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHR4O1xuICAgIHRoaXMuX3NpZ25pbmdLZXlzID0gW107XG4gICAgY29uc3QgcmF3RGF0YSA9IHR4LnRvSnNvbigpLnJhd19kYXRhO1xuICAgIHRoaXMuX3JlZkJsb2NrQnl0ZXMgPSByYXdEYXRhLnJlZl9ibG9ja19ieXRlcztcbiAgICB0aGlzLl9yZWZCbG9ja0hhc2ggPSByYXdEYXRhLnJlZl9ibG9ja19oYXNoO1xuICAgIHRoaXMuX2V4cGlyYXRpb24gPSByYXdEYXRhLmV4cGlyYXRpb247XG4gICAgdGhpcy5fdGltZXN0YW1wID0gcmF3RGF0YS50aW1lc3RhbXA7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZSk7XG4gICAgY29uc3QgY29udHJhY3RDYWxsID0gcmF3RGF0YS5jb250cmFjdFswXSBhcyBGcmVlemVCYWxhbmNlVjJDb250cmFjdDtcbiAgICB0aGlzLmluaXRGcmVlemVDb250cmFjdENhbGwoY29udHJhY3RDYWxsKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBmcmVlemUgY29udHJhY3QgY2FsbCBzcGVjaWZpYyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7RnJlZXplQmFsYW5jZVYyQ29udHJhY3R9IGZyZWV6ZUNvbnRyYWN0Q2FsbCBvYmplY3Qgd2l0aCBmcmVlemUgdHhuIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBpbml0RnJlZXplQ29udHJhY3RDYWxsKGZyZWV6ZUNvbnRyYWN0Q2FsbDogRnJlZXplQmFsYW5jZVYyQ29udHJhY3QpOiB2b2lkIHtcbiAgICBjb25zdCB7IHJlc291cmNlLCBvd25lcl9hZGRyZXNzLCBmcm96ZW5fYmFsYW5jZSB9ID0gZnJlZXplQ29udHJhY3RDYWxsLnBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAob3duZXJfYWRkcmVzcykge1xuICAgICAgdGhpcy5zb3VyY2UoeyBhZGRyZXNzOiBnZXRCYXNlNThBZGRyZXNzRnJvbUhleChvd25lcl9hZGRyZXNzKSB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzb3VyY2UpIHtcbiAgICAgIHRoaXMuc2V0UmVzb3VyY2UocmVzb3VyY2UpO1xuICAgIH1cblxuICAgIGlmIChmcm96ZW5fYmFsYW5jZSkge1xuICAgICAgdGhpcy5zZXRGcm96ZW5CYWxhbmNlKGZyb3plbl9iYWxhbmNlLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLmNyZWF0ZUZyZWV6ZUJhbGFuY2VUcmFuc2FjdGlvbigpO1xuICAgIC8qKiBAaW5oZXJpdGRvY2NyZWF0ZVRyYW5zYWN0aW9uICovXG4gICAgLy8gVGhpcyBtZXRob2QgbXVzdCBiZSBleHRlbmRlZCBvbiBjaGlsZCBjbGFzc2VzXG4gICAgaWYgKHRoaXMuX3NpZ25pbmdLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYXBwbHlTaWduYXR1cmVzKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBIHZhbGlkIHRyYW5zYWN0aW9uIG11c3QgaGF2ZSBhbiBpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY3JlYXRlIHRoZSBmcmVlemUgYmFsYW5jZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVGcmVlemVCYWxhbmNlVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgcmF3RGF0YUhleCA9IHRoaXMuZ2V0RnJlZXplUmF3RGF0YUhleCgpO1xuICAgIGNvbnN0IHJhd0RhdGEgPSBkZWNvZGVUcmFuc2FjdGlvbihyYXdEYXRhSGV4KTtcbiAgICBjb25zdCBjb250cmFjdCA9IHJhd0RhdGEuY29udHJhY3RbMF0gYXMgRnJlZXplQmFsYW5jZVYyQ29udHJhY3Q7XG4gICAgY29uc3QgY29udHJhY3RQYXJhbWV0ZXIgPSBjb250cmFjdC5wYXJhbWV0ZXI7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudmFsdWUub3duZXJfYWRkcmVzcyA9IHRoaXMuX293bmVyQWRkcmVzcy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLmZyb3plbl9iYWxhbmNlID0gTnVtYmVyKHRoaXMuX2Zyb3plbkJhbGFuY2UpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLnJlc291cmNlID0gdGhpcy5fcmVzb3VyY2U7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudHlwZV91cmwgPSAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5GcmVlemVCYWxhbmNlVjJDb250cmFjdCc7XG4gICAgY29udHJhY3QudHlwZSA9ICdGcmVlemVCYWxhbmNlVjJDb250cmFjdCc7XG4gICAgY29uc3QgaGV4QnVmZmVyID0gQnVmZmVyLmZyb20ocmF3RGF0YUhleCwgJ2hleCcpO1xuICAgIGNvbnN0IGlkID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGhleEJ1ZmZlcikuZGlnZXN0KCdoZXgnKTtcbiAgICBjb25zdCB0eFJlY2lwOiBUcmFuc2FjdGlvblJlY2VpcHQgPSB7XG4gICAgICByYXdfZGF0YTogcmF3RGF0YSxcbiAgICAgIHJhd19kYXRhX2hleDogcmF3RGF0YUhleCxcbiAgICAgIHR4SUQ6IGlkLFxuICAgICAgc2lnbmF0dXJlOiB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZSxcbiAgICB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdHhSZWNpcCk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBnZXQgdGhlIGZyZWV6ZSBiYWxhbmNlIHRyYW5zYWN0aW9uIHJhdyBkYXRhIGhleFxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZnJlZXplIGJhbGFuY2UgdHJhbnNhY3Rpb24gcmF3IGRhdGEgaGV4XG4gICAqL1xuICBwcml2YXRlIGdldEZyZWV6ZVJhd0RhdGFIZXgoKTogc3RyaW5nIHtcbiAgICBjb25zdCByYXdDb250cmFjdCA9IHtcbiAgICAgIG93bmVyQWRkcmVzczogZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3ModGhpcy5fb3duZXJBZGRyZXNzKSxcbiAgICAgIGZyb3plbkJhbGFuY2U6IHRoaXMuX2Zyb3plbkJhbGFuY2UsXG4gICAgICByZXNvdXJjZTogdGhpcy5fcmVzb3VyY2UsXG4gICAgfTtcbiAgICBjb25zdCBmcmVlemVDb250cmFjdCA9IHByb3RvY29sLkZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0LmZyb21PYmplY3QocmF3Q29udHJhY3QpO1xuICAgIGNvbnN0IGZyZWV6ZUNvbnRyYWN0Qnl0ZXMgPSBwcm90b2NvbC5GcmVlemVCYWxhbmNlVjJDb250cmFjdC5lbmNvZGUoZnJlZXplQ29udHJhY3QpLmZpbmlzaCgpO1xuICAgIGNvbnN0IHR4Q29udHJhY3QgPSB7XG4gICAgICB0eXBlOiBDb250cmFjdFR5cGUuRnJlZXplQmFsYW5jZVYyQ29udHJhY3QsXG4gICAgICBwYXJhbWV0ZXI6IHtcbiAgICAgICAgdmFsdWU6IGZyZWV6ZUNvbnRyYWN0Qnl0ZXMsXG4gICAgICAgIHR5cGVfdXJsOiAndHlwZS5nb29nbGVhcGlzLmNvbS9wcm90b2NvbC5GcmVlemVCYWxhbmNlVjJDb250cmFjdCcsXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgcmF3ID0ge1xuICAgICAgcmVmQmxvY2tCeXRlczogQnVmZmVyLmZyb20odGhpcy5fcmVmQmxvY2tCeXRlcywgJ2hleCcpLFxuICAgICAgcmVmQmxvY2tIYXNoOiBCdWZmZXIuZnJvbSh0aGlzLl9yZWZCbG9ja0hhc2gsICdoZXgnKSxcbiAgICAgIGV4cGlyYXRpb246IHRoaXMuX2V4cGlyYXRpb24gfHwgRGF0ZS5ub3coKSArIFRSQU5TQUNUSU9OX0RFRkFVTFRfRVhQSVJBVElPTixcbiAgICAgIHRpbWVzdGFtcDogdGhpcy5fdGltZXN0YW1wIHx8IERhdGUubm93KCksXG4gICAgICBjb250cmFjdDogW3R4Q29udHJhY3RdLFxuICAgIH07XG4gICAgY29uc3QgcmF3VHggPSBwcm90b2NvbC5UcmFuc2FjdGlvbi5yYXcuY3JlYXRlKHJhdyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5lbmNvZGUocmF3VHgpLmZpbmlzaCgpKS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKHRoaXMuX3NpZ25pbmdLZXlzLnNvbWUoKHNpZ25pbmdLZXkpID0+IHNpZ25pbmdLZXkua2V5ID09PSBrZXkua2V5KSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignRHVwbGljYXRlZCBrZXknKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmluZ0tleXMucHVzaChrZXkpO1xuXG4gICAgLy8gV2Uga2VlcCB0aGlzIHJldHVybiBmb3IgY29tcGF0aWJpbGl0eSBidXQgaXMgbm90IG1lYW50IHRvIGJlIHVzZVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNpZ25hdHVyZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlucHV0cykge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vIGlucHV0cycpO1xuICAgIH1cblxuICAgIHRoaXMuX3NpZ25pbmdLZXlzLmZvckVhY2goKGtleSkgPT4gdGhpcy5hcHBseVNpZ25hdHVyZShrZXkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uIC0gVGhlIHRyYW5zYWN0aW9uIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3Mge0ludmFsaWRUcmFuc2FjdGlvbkVycm9yfSB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkXG4gICAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVGcmVlemVUcmFuc2FjdGlvbkZpZWxkcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgYSB2YWxpZCBmcmVlemUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblJlY2VpcHR9IHRyYW5zYWN0aW9uIC0gVGhlIHRyYW5zYWN0aW9uIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3Mge0J1aWxkVHJhbnNhY3Rpb25FcnJvcn0gd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgaW52YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZyZWV6ZVRyYW5zYWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZnJvemVuQmFsYW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IGZyb3plbkJhbGFuY2UnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX293bmVyQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IHNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVzb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiByZXNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVmQmxvY2tCeXRlcyB8fCAhdGhpcy5fcmVmQmxvY2tIYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGJsb2NrIHJlZmVyZW5jZSBpbmZvcm1hdGlvbicpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Entry } from '@bitgo-beta/sdk-core';
2
- import { ContractType, PermissionType } from './enum';
2
+ import { ContractType, PermissionType, TronResource } from './enum';
3
3
  export interface Account {
4
4
  publicKey: string;
5
5
  privateKey: string;
@@ -37,7 +37,7 @@ export interface RawData {
37
37
  ref_block_hash: string;
38
38
  fee_limit?: number;
39
39
  contractType?: ContractType;
40
- contract: TransferContract[] | AccountPermissionUpdateContract[] | TriggerSmartContract[];
40
+ contract: TransferContract[] | AccountPermissionUpdateContract[] | TriggerSmartContract[] | FreezeBalanceV2Contract[] | VoteWitnessContract[] | UnfreezeBalanceV2Contract[] | WithdrawExpireUnfreezeContract[];
41
41
  }
42
42
  export interface Value {
43
43
  type_url?: string;
@@ -100,4 +100,173 @@ export interface AccountInfo {
100
100
  }];
101
101
  trc20: [Record<string, string>];
102
102
  }
103
+ /**
104
+ * Freeze balance contract value fields
105
+ */
106
+ export interface FreezeBalanceValueFields {
107
+ resource: string;
108
+ frozen_balance: number;
109
+ owner_address: string;
110
+ }
111
+ /**
112
+ * Unfreeze transaction value fields
113
+ */
114
+ export interface UnfreezeBalanceValueFields {
115
+ resource: string;
116
+ unfreeze_balance: number;
117
+ owner_address: string;
118
+ }
119
+ /**
120
+ * Freeze balance contract value interface
121
+ */
122
+ export interface FreezeBalanceValue {
123
+ type_url?: string;
124
+ value: FreezeBalanceValueFields;
125
+ }
126
+ /**
127
+ * Freeze balance v2 contract interface
128
+ */
129
+ export interface FreezeBalanceV2Contract {
130
+ parameter: FreezeBalanceValue;
131
+ type?: string;
132
+ }
133
+ /**
134
+ * Unfreeze balance contract value interface
135
+ */
136
+ export interface UnfreezeBalanceValue {
137
+ type_url?: string;
138
+ value: UnfreezeBalanceValueFields;
139
+ }
140
+ /**
141
+ * Unfreeze balance v2 contract interface
142
+ */
143
+ export interface UnfreezeBalanceV2Contract {
144
+ parameter: UnfreezeBalanceValue;
145
+ type?: string;
146
+ }
147
+ /**
148
+ * Freeze balance contract parameter interface
149
+ */
150
+ export interface FreezeBalanceContractParameter {
151
+ parameter: {
152
+ value: {
153
+ resource: TronResource;
154
+ frozen_balance: number;
155
+ owner_address: string;
156
+ };
157
+ };
158
+ }
159
+ /**
160
+ * Withdraw transaction value fields
161
+ */
162
+ export interface WithdrawExpireUnfreezeValueFields {
163
+ owner_address: string;
164
+ }
165
+ /**
166
+ * Withdraw balance contract value interface
167
+ */
168
+ export interface WithdrawExpireUnfreezeValue {
169
+ type_url?: string;
170
+ value: WithdrawExpireUnfreezeValueFields;
171
+ }
172
+ /**
173
+ * Withdraw expire unfreeze contract interface
174
+ */
175
+ export interface WithdrawExpireUnfreezeContract {
176
+ parameter: WithdrawExpireUnfreezeValue;
177
+ type?: string;
178
+ }
179
+ export interface UnfreezeBalanceContractParameter {
180
+ parameter: {
181
+ value: {
182
+ resource: TronResource;
183
+ unfreeze_balance: number;
184
+ owner_address: string;
185
+ };
186
+ };
187
+ }
188
+ /**
189
+ * Freeze balance contract decoded interface
190
+ */
191
+ export interface FreezeContractDecoded {
192
+ ownerAddress?: string;
193
+ resource?: number;
194
+ frozenBalance?: string | number;
195
+ }
196
+ /**
197
+ * Unfreeze balance contract decoded interface
198
+ */
199
+ export interface UnfreezeContractDecoded {
200
+ ownerAddress?: string;
201
+ resource?: number;
202
+ unfreezeBalance?: string | number;
203
+ }
204
+ /**
205
+ * Withdraw expire unfreeze contract decoded interface
206
+ */
207
+ export interface WithdrawContractDecoded {
208
+ ownerAddress?: string;
209
+ }
210
+ /**
211
+ * Vote data in a vote transaction
212
+ */
213
+ export interface VoteWitnessData {
214
+ vote_address: string;
215
+ vote_count: number;
216
+ }
217
+ /**
218
+ * Vote transaction value fields
219
+ */
220
+ export interface VoteWitnessValueFields {
221
+ owner_address: string;
222
+ votes: VoteWitnessData[];
223
+ }
224
+ /**
225
+ * Vote contract value interface
226
+ */
227
+ export interface VoteWitnessValue {
228
+ type_url?: string;
229
+ value: VoteWitnessValueFields;
230
+ }
231
+ /**
232
+ * Vote witness contract interface
233
+ */
234
+ export interface VoteWitnessContract {
235
+ parameter: VoteWitnessValue;
236
+ type?: string;
237
+ }
238
+ /**
239
+ * Vote witness contract decoded interface
240
+ */
241
+ export interface VoteContractDecoded {
242
+ ownerAddress?: string;
243
+ votes?: Array<{
244
+ voteAddress?: string;
245
+ voteCount?: string | number;
246
+ }>;
247
+ }
248
+ /**
249
+ * Vote witness contract parameter interface
250
+ */
251
+ export interface VoteWitnessContractParameter {
252
+ parameter: {
253
+ value: {
254
+ owner_address: string;
255
+ votes: Array<{
256
+ vote_address: string;
257
+ vote_count: number;
258
+ }>;
259
+ };
260
+ };
261
+ }
262
+ /**
263
+ * Withdraw expire unfreeze contract parameter interface
264
+ */
265
+ export interface WithdrawExpireUnfreezeContractParameter {
266
+ parameter: {
267
+ value: {
268
+ owner_address: string;
269
+ };
270
+ };
271
+ }
103
272
  //# sourceMappingURL=iface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRyeSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvbnRyYWN0VHlwZSwgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuL2VudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnQge1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xuICBhZGRyZXNzOiB7XG4gICAgYmFzZTU4OiBzdHJpbmc7XG4gICAgaGV4OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgdHlwZVVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBQYXJhbWV0ZXI7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGlzIGludGVyZmFjZSByZXByZXNlbnRzIGEgZm9ybSBvZjpcbiAqXG4gKiBAZXh0ZXJuYWwgaHR0cHM6Ly9naXRodWIuY29tL0JpdEdvL2JpdGdvLWFjY291bnQtbGliL2Jsb2IvNWYyODI1ODg3MDE3NzhhNDQyMWM3NWZhNjFmNDI3MTNmNTZlOTViOS9yZXNvdXJjZXMvcHJvdG9idWYvdHJvbi5wcm90byNMMjM5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25SZWNlaXB0IHtcbiAgLyoqXG4gICAqIFRoaXMgZG9lcyBub3QgZXhpc3QgaW4gcHJvdG9idWYgYmVjYXVzZSBpdCdzIGF0dGFjaGVkIGJ5IHRoZSBub2RlIHJwYyBjYWxscy5cbiAgICovXG4gIHR4SUQ/OiBzdHJpbmc7XG4gIHJhd19kYXRhOiBSYXdEYXRhO1xuICByYXdfZGF0YV9oZXg6IHN0cmluZztcbiAgc2lnbmF0dXJlPzogQXJyYXk8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYXdEYXRhIHtcbiAgZXhwaXJhdGlvbjogbnVtYmVyO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgcmVmX2Jsb2NrX2J5dGVzOiBzdHJpbmc7XG4gIHJlZl9ibG9ja19oYXNoOiBzdHJpbmc7XG4gIGZlZV9saW1pdD86IG51bWJlcjtcbiAgY29udHJhY3RUeXBlPzogQ29udHJhY3RUeXBlO1xuICBjb250cmFjdDogVHJhbnNmZXJDb250cmFjdFtdIHwgQWNjb3VudFBlcm1pc3Npb25VcGRhdGVDb250cmFjdFtdIHwgVHJpZ2dlclNtYXJ0Q29udHJhY3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogVmFsdWVGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGaWVsZHMge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgLy8gYmFzZTU4IGVuY29kZWQgYWRkcmVzc2VzXG4gIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgdG9fYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyQ29udHJhY3Qge1xuICBwYXJhbWV0ZXI6IFZhbHVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJTbWFydENvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBDb250cmFjdENhbGxWYWx1ZTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250cmFjdENhbGxWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogQ29udHJhY3RDYWxsVmFsdWVGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3RDYWxsVmFsdWVGaWVsZHMge1xuICBkYXRhOiBzdHJpbmc7XG4gIGNvbnRyYWN0X2FkZHJlc3M6IHN0cmluZztcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3Qge1xuICBvd25lckFkZHJlc3M6IHN0cmluZztcbiAgb3duZXI6IFBlcm1pc3Npb247XG4gIHdpdG5lc3M/OiBQZXJtaXNzaW9uO1xuICBhY3RpdmVzOiBBcnJheTxQZXJtaXNzaW9uPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uIHtcbiAgdHlwZTogUGVybWlzc2lvblR5cGU7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25LZXkge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIHdlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrIHtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIGhhc2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWUge1xuICBmZWVMaW1pdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0RW50cnkgZXh0ZW5kcyBFbnRyeSB7XG4gIGRhdGE/OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50SW5mbyB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYmFsYW5jZTogbnVtYmVyO1xuICBvd25lcl9wZXJtaXNzaW9uOiB7XG4gICAga2V5czogW1Blcm1pc3Npb25LZXldO1xuICB9O1xuICBhY3RpdmVfcGVybWlzc2lvbjogW3sga2V5czogW1Blcm1pc3Npb25LZXldIH1dO1xuICB0cmMyMDogW1JlY29yZDxzdHJpbmcsIHN0cmluZz5dO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRyeSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvbnRyYWN0VHlwZSwgUGVybWlzc2lvblR5cGUsIFRyb25SZXNvdXJjZSB9IGZyb20gJy4vZW51bSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudCB7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBwcml2YXRlS2V5OiBzdHJpbmc7XG4gIGFkZHJlc3M6IHtcbiAgICBiYXNlNTg6IHN0cmluZztcbiAgICBoZXg6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXIge1xuICB2YWx1ZTogc3RyaW5nO1xuICB0eXBlVXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3Qge1xuICBwYXJhbWV0ZXI6IFBhcmFtZXRlcjtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHJlcHJlc2VudHMgYSBmb3JtIG9mOlxuICpcbiAqIEBleHRlcm5hbCBodHRwczovL2dpdGh1Yi5jb20vQml0R28vYml0Z28tYWNjb3VudC1saWIvYmxvYi81ZjI4MjU4ODcwMTc3OGE0NDIxYzc1ZmE2MWY0MjcxM2Y1NmU5NWI5L3Jlc291cmNlcy9wcm90b2J1Zi90cm9uLnByb3RvI0wyMzlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblJlY2VpcHQge1xuICAvKipcbiAgICogVGhpcyBkb2VzIG5vdCBleGlzdCBpbiBwcm90b2J1ZiBiZWNhdXNlIGl0J3MgYXR0YWNoZWQgYnkgdGhlIG5vZGUgcnBjIGNhbGxzLlxuICAgKi9cbiAgdHhJRD86IHN0cmluZztcbiAgcmF3X2RhdGE6IFJhd0RhdGE7XG4gIHJhd19kYXRhX2hleDogc3RyaW5nO1xuICBzaWduYXR1cmU/OiBBcnJheTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0RhdGEge1xuICBleHBpcmF0aW9uOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICByZWZfYmxvY2tfYnl0ZXM6IHN0cmluZztcbiAgcmVmX2Jsb2NrX2hhc2g6IHN0cmluZztcbiAgZmVlX2xpbWl0PzogbnVtYmVyO1xuICBjb250cmFjdFR5cGU/OiBDb250cmFjdFR5cGU7XG4gIGNvbnRyYWN0OlxuICAgIHwgVHJhbnNmZXJDb250cmFjdFtdXG4gICAgfCBBY2NvdW50UGVybWlzc2lvblVwZGF0ZUNvbnRyYWN0W11cbiAgICB8IFRyaWdnZXJTbWFydENvbnRyYWN0W11cbiAgICB8IEZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0W11cbiAgICB8IFZvdGVXaXRuZXNzQ29udHJhY3RbXVxuICAgIHwgVW5mcmVlemVCYWxhbmNlVjJDb250cmFjdFtdXG4gICAgfCBXaXRoZHJhd0V4cGlyZVVuZnJlZXplQ29udHJhY3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogVmFsdWVGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGaWVsZHMge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgLy8gYmFzZTU4IGVuY29kZWQgYWRkcmVzc2VzXG4gIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgdG9fYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyQ29udHJhY3Qge1xuICBwYXJhbWV0ZXI6IFZhbHVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJTbWFydENvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBDb250cmFjdENhbGxWYWx1ZTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250cmFjdENhbGxWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogQ29udHJhY3RDYWxsVmFsdWVGaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3RDYWxsVmFsdWVGaWVsZHMge1xuICBkYXRhOiBzdHJpbmc7XG4gIGNvbnRyYWN0X2FkZHJlc3M6IHN0cmluZztcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRQZXJtaXNzaW9uVXBkYXRlQ29udHJhY3Qge1xuICBvd25lckFkZHJlc3M6IHN0cmluZztcbiAgb3duZXI6IFBlcm1pc3Npb247XG4gIHdpdG5lc3M/OiBQZXJtaXNzaW9uO1xuICBhY3RpdmVzOiBBcnJheTxQZXJtaXNzaW9uPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uIHtcbiAgdHlwZTogUGVybWlzc2lvblR5cGU7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25LZXkge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIHdlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrIHtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIGhhc2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWUge1xuICBmZWVMaW1pdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0RW50cnkgZXh0ZW5kcyBFbnRyeSB7XG4gIGRhdGE/OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50SW5mbyB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYmFsYW5jZTogbnVtYmVyO1xuICBvd25lcl9wZXJtaXNzaW9uOiB7XG4gICAga2V5czogW1Blcm1pc3Npb25LZXldO1xuICB9O1xuICBhY3RpdmVfcGVybWlzc2lvbjogW3sga2V5czogW1Blcm1pc3Npb25LZXldIH1dO1xuICB0cmMyMDogW1JlY29yZDxzdHJpbmcsIHN0cmluZz5dO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IHZhbHVlIGZpZWxkc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWYWx1ZUZpZWxkcyB7XG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIGZyb3plbl9iYWxhbmNlOiBudW1iZXI7XG4gIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmZyZWV6ZSB0cmFuc2FjdGlvbiB2YWx1ZSBmaWVsZHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWYWx1ZUZpZWxkcyB7XG4gIHJlc291cmNlOiBzdHJpbmc7XG4gIHVuZnJlZXplX2JhbGFuY2U6IG51bWJlcjtcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIGNvbnRyYWN0IHZhbHVlIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogRnJlZXplQmFsYW5jZVZhbHVlRmllbGRzO1xufVxuXG4vKipcbiAqIEZyZWV6ZSBiYWxhbmNlIHYyIGNvbnRyYWN0IGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBGcmVlemVCYWxhbmNlVmFsdWU7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVW5mcmVlemUgYmFsYW5jZSBjb250cmFjdCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogVW5mcmVlemVCYWxhbmNlVmFsdWVGaWVsZHM7XG59XG5cbi8qKlxuICogVW5mcmVlemUgYmFsYW5jZSB2MiBjb250cmFjdCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmZyZWV6ZUJhbGFuY2VWMkNvbnRyYWN0IHtcbiAgcGFyYW1ldGVyOiBVbmZyZWV6ZUJhbGFuY2VWYWx1ZTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGcmVlemUgYmFsYW5jZSBjb250cmFjdCBwYXJhbWV0ZXIgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJlZXplQmFsYW5jZUNvbnRyYWN0UGFyYW1ldGVyIHtcbiAgcGFyYW1ldGVyOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHJlc291cmNlOiBUcm9uUmVzb3VyY2U7XG4gICAgICBmcm96ZW5fYmFsYW5jZTogbnVtYmVyO1xuICAgICAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogV2l0aGRyYXcgdHJhbnNhY3Rpb24gdmFsdWUgZmllbGRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlRmllbGRzIHtcbiAgb3duZXJfYWRkcmVzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdpdGhkcmF3IGJhbGFuY2UgY29udHJhY3QgdmFsdWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlIHtcbiAgdHlwZV91cmw/OiBzdHJpbmc7XG4gIHZhbHVlOiBXaXRoZHJhd0V4cGlyZVVuZnJlZXplVmFsdWVGaWVsZHM7XG59XG5cbi8qKlxuICogV2l0aGRyYXcgZXhwaXJlIHVuZnJlZXplIGNvbnRyYWN0IGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdCB7XG4gIHBhcmFtZXRlcjogV2l0aGRyYXdFeHBpcmVVbmZyZWV6ZVZhbHVlO1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuZnJlZXplQmFsYW5jZUNvbnRyYWN0UGFyYW1ldGVyIHtcbiAgcGFyYW1ldGVyOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHJlc291cmNlOiBUcm9uUmVzb3VyY2U7XG4gICAgICB1bmZyZWV6ZV9iYWxhbmNlOiBudW1iZXI7XG4gICAgICBvd25lcl9hZGRyZXNzOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGcmVlemUgYmFsYW5jZSBjb250cmFjdCBkZWNvZGVkIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyZWV6ZUNvbnRyYWN0RGVjb2RlZCB7XG4gIG93bmVyQWRkcmVzcz86IHN0cmluZztcbiAgcmVzb3VyY2U/OiBudW1iZXI7XG4gIGZyb3plbkJhbGFuY2U/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbi8qKlxuICogVW5mcmVlemUgYmFsYW5jZSBjb250cmFjdCBkZWNvZGVkIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuZnJlZXplQ29udHJhY3REZWNvZGVkIHtcbiAgb3duZXJBZGRyZXNzPzogc3RyaW5nO1xuICByZXNvdXJjZT86IG51bWJlcjtcbiAgdW5mcmVlemVCYWxhbmNlPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG4vKipcbiAqIFdpdGhkcmF3IGV4cGlyZSB1bmZyZWV6ZSBjb250cmFjdCBkZWNvZGVkIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3Q29udHJhY3REZWNvZGVkIHtcbiAgb3duZXJBZGRyZXNzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFZvdGUgZGF0YSBpbiBhIHZvdGUgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlV2l0bmVzc0RhdGEge1xuICB2b3RlX2FkZHJlc3M6IHN0cmluZztcbiAgdm90ZV9jb3VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFZvdGUgdHJhbnNhY3Rpb24gdmFsdWUgZmllbGRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVm90ZVdpdG5lc3NWYWx1ZUZpZWxkcyB7XG4gIG93bmVyX2FkZHJlc3M6IHN0cmluZztcbiAgdm90ZXM6IFZvdGVXaXRuZXNzRGF0YVtdO1xufVxuXG4vKipcbiAqIFZvdGUgY29udHJhY3QgdmFsdWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVm90ZVdpdG5lc3NWYWx1ZSB7XG4gIHR5cGVfdXJsPzogc3RyaW5nO1xuICB2YWx1ZTogVm90ZVdpdG5lc3NWYWx1ZUZpZWxkcztcbn1cblxuLyoqXG4gKiBWb3RlIHdpdG5lc3MgY29udHJhY3QgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVm90ZVdpdG5lc3NDb250cmFjdCB7XG4gIHBhcmFtZXRlcjogVm90ZVdpdG5lc3NWYWx1ZTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBWb3RlIHdpdG5lc3MgY29udHJhY3QgZGVjb2RlZCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb3RlQ29udHJhY3REZWNvZGVkIHtcbiAgb3duZXJBZGRyZXNzPzogc3RyaW5nO1xuICB2b3Rlcz86IEFycmF5PHtcbiAgICB2b3RlQWRkcmVzcz86IHN0cmluZztcbiAgICB2b3RlQ291bnQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH0+O1xufVxuXG4vKipcbiAqIFZvdGUgd2l0bmVzcyBjb250cmFjdCBwYXJhbWV0ZXIgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVm90ZVdpdG5lc3NDb250cmFjdFBhcmFtZXRlciB7XG4gIHBhcmFtZXRlcjoge1xuICAgIHZhbHVlOiB7XG4gICAgICBvd25lcl9hZGRyZXNzOiBzdHJpbmc7XG4gICAgICB2b3RlczogQXJyYXk8e1xuICAgICAgICB2b3RlX2FkZHJlc3M6IHN0cmluZztcbiAgICAgICAgdm90ZV9jb3VudDogbnVtYmVyO1xuICAgICAgfT47XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBXaXRoZHJhdyBleHBpcmUgdW5mcmVlemUgY29udHJhY3QgcGFyYW1ldGVyIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdFBhcmFtZXRlciB7XG4gIHBhcmFtZXRlcjoge1xuICAgIHZhbHVlOiB7XG4gICAgICBvd25lcl9hZGRyZXNzOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EACL,OAAO,EACP,eAAe,EAGf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,aAAa,EAAW,kBAAkB,EAA0C,MAAM,SAAS,CAAC;AAE7G;;GAEG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAE9C,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;IACnC,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAEpC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,YAAY,CAAC,CAAqB;IAE1C;;;;;OAKG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,kBAAkB;IAejF;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA2E3B;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAgC3C;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IACD;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,kBAAkB;IAClB,IAAI,OAAO,IAAI,aAAa,EAAE,CAE7B;IAED,kBAAkB;IAClB,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAO9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,EAAE,kBAAkB;IAK5C;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,MAAM,IAAI,kBAAkB;IAO5B,kBAAkB;IAClB,iBAAiB,IAAI,GAAG;CAGzB"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EACL,OAAO,EACP,eAAe,EAGf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EACL,aAAa,EAGb,kBAAkB,EAMnB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAE9C,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;IACnC,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAEpC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,YAAY,CAAC,CAAqB;IAE1C;;;;;OAKG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,kBAAkB;IAejF;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA+H3B;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAgC3C;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IACD;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,kBAAkB;IAClB,IAAI,OAAO,IAAI,aAAa,EAAE,CAE7B;IAED,kBAAkB;IAClB,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAO9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,EAAE,kBAAkB;IAK5C;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,MAAM,IAAI,kBAAkB;IAO5B,kBAAkB;IAClB,iBAAiB,IAAI,GAAG;CAGzB"}
@@ -103,6 +103,56 @@ class Transaction extends sdk_core_1.BaseTransaction {
103
103
  value: '0',
104
104
  };
105
105
  break;
106
+ case enum_1.ContractType.FreezeBalanceV2:
107
+ this._type = sdk_core_1.TransactionType.StakingActivate;
108
+ const freezeValue = rawData.contract[0].parameter.value;
109
+ output = {
110
+ address: freezeValue.owner_address,
111
+ value: freezeValue.frozen_balance.toString(),
112
+ };
113
+ input = {
114
+ address: freezeValue.owner_address,
115
+ value: freezeValue.frozen_balance.toString(),
116
+ };
117
+ break;
118
+ case enum_1.ContractType.VoteWitness:
119
+ this._type = sdk_core_1.TransactionType.StakingVote;
120
+ const voteValues = rawData.contract[0].parameter.value;
121
+ // Calculate total vote count
122
+ const totalVoteCount = voteValues.votes.reduce((sum, vote) => sum + vote.vote_count, 0);
123
+ output = {
124
+ address: voteValues.owner_address,
125
+ value: totalVoteCount.toString(),
126
+ };
127
+ input = {
128
+ address: voteValues.owner_address,
129
+ value: totalVoteCount.toString(),
130
+ };
131
+ break;
132
+ case enum_1.ContractType.UnfreezeBalanceV2:
133
+ this._type = sdk_core_1.TransactionType.StakingDeactivate;
134
+ const unfreezeValues = rawData.contract[0].parameter.value;
135
+ output = {
136
+ address: unfreezeValues.owner_address,
137
+ value: unfreezeValues.unfreeze_balance.toString(),
138
+ };
139
+ input = {
140
+ address: unfreezeValues.owner_address,
141
+ value: unfreezeValues.unfreeze_balance.toString(),
142
+ };
143
+ break;
144
+ case enum_1.ContractType.WithdrawExpireUnfreeze:
145
+ this._type = sdk_core_1.TransactionType.StakingWithdraw;
146
+ const withdrawValues = rawData.contract[0].parameter.value;
147
+ output = {
148
+ address: withdrawValues.owner_address,
149
+ value: '0', // no value field
150
+ };
151
+ input = {
152
+ address: withdrawValues.owner_address,
153
+ value: '0',
154
+ };
155
+ break;
106
156
  default:
107
157
  throw new sdk_core_1.ParseTransactionError('Unsupported contract type');
108
158
  }
@@ -223,4 +273,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
223
273
  }
224
274
  }
225
275
  exports.Transaction = Transaction;
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQUFvQztBQUVwQyxnRUFBcUM7QUFDckMsd0RBQXlEO0FBQ3pELG1EQU04QjtBQUM5QixpQ0FBc0M7QUFDdEMsbUNBTWlCO0FBR2pCOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFVOUM7Ozs7O09BS0c7SUFDSCxZQUFZLFVBQWdDLEVBQUUsY0FBbUM7UUFDL0UsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQztZQUNuQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBQSx5QkFBaUIsRUFBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFekUsMkNBQTJDO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxPQUFnQjtRQUMxQywyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUVuQyxJQUFJLE1BQXFCLEVBQUUsS0FBb0IsQ0FBQztRQUNoRCwyQkFBMkI7UUFDM0IsUUFBUSxPQUFPLENBQUMsWUFBWSxFQUFFLENB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QkFBa0I7SUFDbEIsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQTNPRCxrQ0EyT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IHByb3RvY29sIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3Byb3RvYnVmL3Ryb24nO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBFeHRlbmRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQ29udHJhY3RUeXBlIH0gZnJvbSAnLi9lbnVtJztcbmltcG9ydCB7XG4gIGRlY29kZVRyYW5zYWN0aW9uLFxuICBkZWNvZGVEYXRhUGFyYW1zLFxuICBnZXRCYXNlNThBZGRyZXNzRnJvbUhleCxcbiAgdG9rZW5NYWlubmV0Q29udHJhY3RBZGRyZXNzZXMsXG4gIHRva2VuVGVzdG5ldENvbnRyYWN0QWRkcmVzc2VzLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IENvbnRyYWN0RW50cnksIFJhd0RhdGEsIFRyYW5zYWN0aW9uUmVjZWlwdCwgVHJhbnNmZXJDb250cmFjdCwgVHJpZ2dlclNtYXJ0Q29udHJhY3QgfSBmcm9tICcuL2lmYWNlJztcblxuLyoqXG4gKiBUcm9uIHRyYW5zYWN0aW9uIG1vZGVsLlxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICAvLyBUcm9uIHNwZWNpZmljIGZpZWxkc1xuICBwcm90ZWN0ZWQgX3ZhbGlkRnJvbTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3ZhbGlkVG86IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9pbnB1dHM6IENvbnRyYWN0RW50cnlbXTtcbiAgcHJvdGVjdGVkIF9vdXRwdXRzOiBDb250cmFjdEVudHJ5W107XG5cbiAgcHJpdmF0ZSBfZGVjb2RlZFJhd0RhdGFIZXg6IFJhd0RhdGE7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb25SZWNlaXB0O1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBjb2luQ29uZmlnXG4gICAqIEBwYXJhbSByYXdUcmFuc2FjdGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHJhd1RyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb25SZWNlaXB0KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgaWYgKHJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICBpZiAoIXJhd1RyYW5zYWN0aW9uLnR4SUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vIGlkJyk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pZCA9IHJhd1RyYW5zYWN0aW9uLnR4SUQ7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHJhd1RyYW5zYWN0aW9uO1xuICAgICAgdGhpcy5fZGVjb2RlZFJhd0RhdGFIZXggPSBkZWNvZGVUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbi5yYXdfZGF0YV9oZXgpO1xuXG4gICAgICAvLyBEZXN0aW5hdGlvbiBkZXBlbmRzIG9uIHRoZSBjb250cmFjdCB0eXBlXG4gICAgICB0aGlzLnJlY29yZFJhd0RhdGFGaWVsZHModGhpcy5fZGVjb2RlZFJhd0RhdGFIZXgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgdHJhbnNhY3Rpb24gcmF3IGRhdGEgYW5kIHJlY29yZCB0aGUgbW9zdCBpbXBvcnRhbnQgZmllbGRzLlxuICAgKlxuICAgKiBAcGFyYW0gcmF3RGF0YSBPYmplY3QgZnJvbSBhIHRyb24gdHJhbnNhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcmVjb3JkUmF3RGF0YUZpZWxkcyhyYXdEYXRhOiBSYXdEYXRhKSB7XG4gICAgLy8gQ29udHJhY3QtYWdub3N0aWMgZmllbGRzXG4gICAgdGhpcy5fdmFsaWRGcm9tID0gcmF3RGF0YS50aW1lc3RhbXA7XG4gICAgdGhpcy5fdmFsaWRUbyA9IHJhd0RhdGEuZXhwaXJhdGlvbjtcblxuICAgIGxldCBvdXRwdXQ6IENvbnRyYWN0RW50cnksIGlucHV0OiBDb250cmFjdEVudHJ5O1xuICAgIC8vIENvbnRyYWN0LXNwZWNpZmljIGZpZWxkc1xuICAgIHN3aXRjaCAocmF3RGF0YS5jb250cmFjdFR5cGUpIHtcbiAgICAgIGNhc2UgQ29udHJhY3RUeXBlLlRyYW5zZmVyOlxuICAgICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IEJpZ051bWJlcigocmF3RGF0YS5jb250cmFjdFswXSBhcyBUcmFuc2ZlckNvbnRyYWN0KS5wYXJhbWV0ZXIudmFsdWUuYW1vdW50KS50b0ZpeGVkKDApO1xuICAgICAgICBvdXRwdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogKHJhd0RhdGEuY29udHJhY3RbMF0gYXMgVHJhbnNmZXJDb250cmFjdCkucGFyYW1ldGVyLnZhbHVlLnRvX2FkZHJlc3MsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH07XG4gICAgICAgIGlucHV0ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IChyYXdEYXRhLmNvbnRyYWN0WzBdIGFzIFRyYW5zZmVyQ29udHJhY3QpLnBhcmFtZXRlci52YWx1ZS5vd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29udHJhY3RUeXBlLkFjY291bnRQZXJtaXNzaW9uVXBkYXRlOlxuICAgICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICAgICAgICBvdXRwdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogKHJhd0RhdGEuY29udHJhY3QgYXMgYW55KS5vd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgIH07XG4gICAgICAgIGlucHV0ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IChyYXdEYXRhLmNvbnRyYWN0IGFzIGFueSkub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29udHJhY3RUeXBlLlRyaWdnZXJTbWFydENvbnRyYWN0OlxuICAgICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDtcbiAgICAgICAgY29uc3QgY29udHJhY3RDYWxsVmFsdWVzID0gKHJhd0RhdGEuY29udHJhY3RbMF0gYXMgVHJpZ2dlclNtYXJ0Q29udHJhY3QpLnBhcmFtZXRlci52YWx1ZTtcbiAgICAgICAgY29uc3QgY29udHJhY3RBZGRyZXNzID0gY29udHJhY3RDYWxsVmFsdWVzLmNvbnRyYWN0X2FkZHJlc3M7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0b2tlbk1haW5uZXRDb250cmFjdEFkZHJlc3Nlcy5pbmNsdWRlcyhjb250cmFjdEFkZHJlc3MpIHx8XG4gICAgICAgICAgdG9rZW5UZXN0bmV0Q29udHJhY3RBZGRyZXNzZXMuaW5jbHVkZXMoY29udHJhY3RBZGRyZXNzKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIHRoZW4gYSB0b2tlbiBzbWFydCBjb250cmFjdCB0cmFuc2FjdGlvbiBhbmQgdGhlIGRhdGEgbXVzdCBiZSBkZWNvZGVkXG4gICAgICAgICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAndWludDI1NiddO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuZnJvbShjb250cmFjdENhbGxWYWx1ZXMuZGF0YSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGRlY29kZURhdGFQYXJhbXModHlwZXMsIGRhdGEpO1xuICAgICAgICAgIGNvbnN0IHJlY2lwaWVudF9hZGRyZXNzID0gZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgoZGVjb2RlZERhdGFbMF0pO1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGVjb2RlZERhdGFbMV0udG9TdHJpbmcoKTtcbiAgICAgICAgICBvdXRwdXQgPSB7XG4gICAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnRfYWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgaW5wdXQgPSB7XG4gICAgICAgICAgICBhZGRyZXNzOiBjb250cmFjdENhbGxWYWx1ZXMub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICAgIGNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG91dHB1dCA9IHtcbiAgICAgICAgICBhZGRyZXNzOiBjb250cmFjdENhbGxWYWx1ZXMub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICB9O1xuICAgICAgICBpbnB1dCA9IHtcbiAgICAgICAgICBhZGRyZXNzOiBjb250cmFjdENhbGxWYWx1ZXMub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICBjb250cmFjdEFkZHJlc3MsXG4gICAgICAgICAgZGF0YTogY29udHJhY3RDYWxsVmFsdWVzLmRhdGEsXG4gICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdVbnN1cHBvcnRlZCBjb250cmFjdCB0eXBlJyk7XG4gICAgfVxuICAgIHRoaXMuX2lucHV0cyA9IFtpbnB1dF07XG4gICAgdGhpcy5fb3V0cHV0cyA9IFtvdXRwdXRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY2FsY3VsYXRlIGFuZCB1cGRhdGUgdGhlIHRyYW5zYWN0aW9uIGlkLiBUaGlzIHNob3VsZCBiZSBkb25lIGFmdGVyIGNoYW5naW5nIGFueSB0cmFuc2FjdGlvblxuICAgKiBmaWVsZCBzaW5jZSB0aGUgdGhlIGlkIGlzIGEgaGFzaCBvZiB0aGUgdHJhbnNhY3Rpb24gYm9keS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlSWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgaGV4QnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy5fdHJhbnNhY3Rpb24ucmF3X2RhdGFfaGV4LCAnaGV4Jyk7XG4gICAgY29uc3QgbmV3VHhpZCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShoZXhCdWZmZXIpLmRpZ2VzdCgnaGV4Jyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24udHhJRCA9IG5ld1R4aWQ7XG4gICAgdGhpcy5faWQgPSBuZXdUeGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCB0aGUgZXhwaXJhdGlvbiBkYXRlIGJ5IHRoZSBnaXZlbiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICAgKlxuICAgKiBAcGFyYW0gZXh0ZW5zaW9uTXMgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZXh0ZW5kIHRoZSBleHBpcmF0aW9uIGJ5XG4gICAqL1xuICBleHRlbmRFeHBpcmF0aW9uKGV4dGVuc2lvbk1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZXh0ZW5zaW9uTXMgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBleHRlbnNpb24gcmFuZ2UuIE11c3QgYmUgcG9zaXRpdmUgYSBpbnRlZ2VyJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25hdHVyZSAmJiB0aGlzLl90cmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ0Nhbm5vdCBleHRlbmQgYSBzaWduZWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCByYXdEYXRhSGV4ID0gdGhpcy5fdHJhbnNhY3Rpb24ucmF3X2RhdGFfaGV4O1xuICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20ocmF3RGF0YUhleCwgJ2hleCcpO1xuICAgIGxldCByYXc7XG4gICAgdHJ5IHtcbiAgICAgIHJhdyA9IHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5kZWNvZGUoYnl0ZXMpO1xuICAgICAgY29uc3QgbmV3RXhwaXJhdGlvbiA9IG5ldyBCaWdOdW1iZXIocmF3LmV4cGlyYXRpb24pLnBsdXMoZXh0ZW5zaW9uTXMpLnRvTnVtYmVyKCk7XG4gICAgICByYXcuZXhwaXJhdGlvbiA9IG5ld0V4cGlyYXRpb247XG4gICAgICBjb25zdCBuZXdSYXdEYXRhSGV4ID0gQnVmZmVyLmZyb20ocHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmVuY29kZShyYXcpLmZpbmlzaCgpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAvLyBTZXQgdGhlIGludGVybmFsIHZhcmlhYmxlcyB0byBhY2NvdW50IGZvciB0aGUgbmV3IGV4cGlyYXRpb24gZGF0ZVxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24ucmF3X2RhdGFfaGV4ID0gbmV3UmF3RGF0YUhleDtcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uLnJhd19kYXRhLmV4cGlyYXRpb24gPSBuZXdFeHBpcmF0aW9uO1xuICAgICAgdGhpcy5fZGVjb2RlZFJhd0RhdGFIZXggPSBkZWNvZGVUcmFuc2FjdGlvbihuZXdSYXdEYXRhSGV4KTtcbiAgICAgIHRoaXMucmVjb3JkUmF3RGF0YUZpZWxkcyh0aGlzLl9kZWNvZGVkUmF3RGF0YUhleCk7XG4gICAgICB0aGlzLnVwZGF0ZUlkKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciBkZWNvZGluZyB0aGUgaW5pdGlhbCByYXdfZGF0YV9oZXggZnJvbSB0aGUgc2VyaWFsaXplZCB0eC4nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzaWduYXR1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgZ2V0IHNpZ25hdHVyZSgpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uICYmIHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25hdHVyZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25hdHVyZTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoaXMgdHJhbnNhY3Rpb24gYmVjb21lcyB2YWxpZCBhbmQgY2FuIGJlIGJyb2FkY2FzdGVkIHRvIHRoZVxuICAgKiBuZXR3b3JrLlxuICAgKi9cbiAgZ2V0IHZhbGlkRnJvbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92YWxpZEZyb207XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHBpcmF0aW9uIHRpbWUgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgZ2V0IHZhbGlkVG8oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRUbztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXQgb3V0cHV0cygpOiBDb250cmFjdEVudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLl9vdXRwdXRzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldCBpbnB1dHMoKTogQ29udHJhY3RFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgLy8gVHJvbiB0cmFuc2FjdGlvbiBkbyBub3QgY29udGFpbiB0aGUgb3duZXJzIGFjY291bnQgYWRkcmVzcyBzbyBpdCBpcyBub3QgcG9zc2libGUgdG8gY2hlY2sgdGhlXG4gICAgLy8gcHJpdmF0ZSBrZXkgd2l0aCBhbnkgYnV0IHRoZSBhY2NvdW50IG1haW4gYWRkcmVzcy4gVGhpcyBpcyBub3QgZW5vdWdoIHRvIGZhaWwgdGhpcyBjaGVjaywgc29cbiAgICAvLyBpdCBpcyBhIG5vLW9wLlxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0cmFuc2FjdGlvblxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25SZWNlaXB0KHR4OiBUcmFuc2FjdGlvblJlY2VpcHQpIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICAgIHRoaXMudXBkYXRlSWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFRyYW5zYWN0aW9uUmVjZWlwdCB7XG4gICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IGFueSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9Kc29uKCkpO1xuICB9XG59XG4iXX0=
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQUFvQztBQUVwQyxnRUFBcUM7QUFDckMsd0RBQXlEO0FBQ3pELG1EQU04QjtBQUM5QixpQ0FBc0M7QUFDdEMsbUNBTWlCO0FBYWpCOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFVOUM7Ozs7O09BS0c7SUFDSCxZQUFZLFVBQWdDLEVBQUUsY0FBbUM7UUFDL0UsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQztZQUNuQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBQSx5QkFBaUIsRUFBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFekUsMkNBQTJDO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxPQUFnQjtRQUMxQywyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUVuQyxJQUFJLE1BQXFCLEVBQUUsS0FBb0IsQ0FBQztRQUNoRCwyQkFBMkI7UUFDM0IsUUFBUSxPQUFPLENBQUMsWUFBWSxFQUFFLENB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QUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLGdHQUFnRztRQUNoRywrRkFBK0Y7UUFDL0YsaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxxQkFBcUIsQ0FBQyxFQUFzQjtRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQkFBa0IsQ0FBQyxlQUFnQztRQUNqRCxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQztJQUMvQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBL1JELGtDQStSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgcHJvdG9jb2wgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcHJvdG9idWYvdHJvbic7XG5pbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb250cmFjdFR5cGUgfSBmcm9tICcuL2VudW0nO1xuaW1wb3J0IHtcbiAgZGVjb2RlVHJhbnNhY3Rpb24sXG4gIGRlY29kZURhdGFQYXJhbXMsXG4gIGdldEJhc2U1OEFkZHJlc3NGcm9tSGV4LFxuICB0b2tlbk1haW5uZXRDb250cmFjdEFkZHJlc3NlcyxcbiAgdG9rZW5UZXN0bmV0Q29udHJhY3RBZGRyZXNzZXMsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ29udHJhY3RFbnRyeSxcbiAgRnJlZXplQmFsYW5jZVYyQ29udHJhY3QsXG4gIFJhd0RhdGEsXG4gIFRyYW5zYWN0aW9uUmVjZWlwdCxcbiAgVHJhbnNmZXJDb250cmFjdCxcbiAgVHJpZ2dlclNtYXJ0Q29udHJhY3QsXG4gIFZvdGVXaXRuZXNzQ29udHJhY3QsXG4gIFVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QsXG4gIFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdCxcbn0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogVHJvbiB0cmFuc2FjdGlvbiBtb2RlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgLy8gVHJvbiBzcGVjaWZpYyBmaWVsZHNcbiAgcHJvdGVjdGVkIF92YWxpZEZyb206IG51bWJlcjtcbiAgcHJvdGVjdGVkIF92YWxpZFRvOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfaW5wdXRzOiBDb250cmFjdEVudHJ5W107XG4gIHByb3RlY3RlZCBfb3V0cHV0czogQ29udHJhY3RFbnRyeVtdO1xuXG4gIHByaXZhdGUgX2RlY29kZWRSYXdEYXRhSGV4OiBSYXdEYXRhO1xuICBwcml2YXRlIF90cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uUmVjZWlwdDtcblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gY29pbkNvbmZpZ1xuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCByYXdUcmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uUmVjZWlwdCkge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIGlmIChyYXdUcmFuc2FjdGlvbikge1xuICAgICAgaWYgKCFyYXdUcmFuc2FjdGlvbi50eElEKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGhhcyBubyBpZCcpO1xuICAgICAgfVxuICAgICAgdGhpcy5faWQgPSByYXdUcmFuc2FjdGlvbi50eElEO1xuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24gPSByYXdUcmFuc2FjdGlvbjtcbiAgICAgIHRoaXMuX2RlY29kZWRSYXdEYXRhSGV4ID0gZGVjb2RlVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24ucmF3X2RhdGFfaGV4KTtcblxuICAgICAgLy8gRGVzdGluYXRpb24gZGVwZW5kcyBvbiB0aGUgY29udHJhY3QgdHlwZVxuICAgICAgdGhpcy5yZWNvcmRSYXdEYXRhRmllbGRzKHRoaXMuX2RlY29kZWRSYXdEYXRhSGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdGhlIHRyYW5zYWN0aW9uIHJhdyBkYXRhIGFuZCByZWNvcmQgdGhlIG1vc3QgaW1wb3J0YW50IGZpZWxkcy5cbiAgICpcbiAgICogQHBhcmFtIHJhd0RhdGEgT2JqZWN0IGZyb20gYSB0cm9uIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlY29yZFJhd0RhdGFGaWVsZHMocmF3RGF0YTogUmF3RGF0YSkge1xuICAgIC8vIENvbnRyYWN0LWFnbm9zdGljIGZpZWxkc1xuICAgIHRoaXMuX3ZhbGlkRnJvbSA9IHJhd0RhdGEudGltZXN0YW1wO1xuICAgIHRoaXMuX3ZhbGlkVG8gPSByYXdEYXRhLmV4cGlyYXRpb247XG5cbiAgICBsZXQgb3V0cHV0OiBDb250cmFjdEVudHJ5LCBpbnB1dDogQ29udHJhY3RFbnRyeTtcbiAgICAvLyBDb250cmFjdC1zcGVjaWZpYyBmaWVsZHNcbiAgICBzd2l0Y2ggKHJhd0RhdGEuY29udHJhY3RUeXBlKSB7XG4gICAgICBjYXNlIENvbnRyYWN0VHlwZS5UcmFuc2ZlcjpcbiAgICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG5ldyBCaWdOdW1iZXIoKHJhd0RhdGEuY29udHJhY3RbMF0gYXMgVHJhbnNmZXJDb250cmFjdCkucGFyYW1ldGVyLnZhbHVlLmFtb3VudCkudG9GaXhlZCgwKTtcbiAgICAgICAgb3V0cHV0ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IChyYXdEYXRhLmNvbnRyYWN0WzBdIGFzIFRyYW5zZmVyQ29udHJhY3QpLnBhcmFtZXRlci52YWx1ZS50b19hZGRyZXNzLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9O1xuICAgICAgICBpbnB1dCA9IHtcbiAgICAgICAgICBhZGRyZXNzOiAocmF3RGF0YS5jb250cmFjdFswXSBhcyBUcmFuc2ZlckNvbnRyYWN0KS5wYXJhbWV0ZXIudmFsdWUub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbnRyYWN0VHlwZS5BY2NvdW50UGVybWlzc2lvblVwZGF0ZTpcbiAgICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjtcbiAgICAgICAgb3V0cHV0ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IChyYXdEYXRhLmNvbnRyYWN0IGFzIGFueSkub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICB9O1xuICAgICAgICBpbnB1dCA9IHtcbiAgICAgICAgICBhZGRyZXNzOiAocmF3RGF0YS5jb250cmFjdCBhcyBhbnkpLm93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbnRyYWN0VHlwZS5UcmlnZ2VyU21hcnRDb250cmFjdDpcbiAgICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGw7XG4gICAgICAgIGNvbnN0IGNvbnRyYWN0Q2FsbFZhbHVlcyA9IChyYXdEYXRhLmNvbnRyYWN0WzBdIGFzIFRyaWdnZXJTbWFydENvbnRyYWN0KS5wYXJhbWV0ZXIudmFsdWU7XG4gICAgICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzcyA9IGNvbnRyYWN0Q2FsbFZhbHVlcy5jb250cmFjdF9hZGRyZXNzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdG9rZW5NYWlubmV0Q29udHJhY3RBZGRyZXNzZXMuaW5jbHVkZXMoY29udHJhY3RBZGRyZXNzKSB8fFxuICAgICAgICAgIHRva2VuVGVzdG5ldENvbnRyYWN0QWRkcmVzc2VzLmluY2x1ZGVzKGNvbnRyYWN0QWRkcmVzcylcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyB0aGVuIGEgdG9rZW4gc21hcnQgY29udHJhY3QgdHJhbnNhY3Rpb24gYW5kIHRoZSBkYXRhIG11c3QgYmUgZGVjb2RlZFxuICAgICAgICAgIGNvbnN0IHR5cGVzID0gWydhZGRyZXNzJywgJ3VpbnQyNTYnXTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gQnVmZmVyLmZyb20oY29udHJhY3RDYWxsVmFsdWVzLmRhdGEsICdiYXNlNjQnKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgY29uc3QgZGVjb2RlZERhdGEgPSBkZWNvZGVEYXRhUGFyYW1zKHR5cGVzLCBkYXRhKTtcbiAgICAgICAgICBjb25zdCByZWNpcGllbnRfYWRkcmVzcyA9IGdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KGRlY29kZWREYXRhWzBdKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRlY29kZWREYXRhWzFdLnRvU3RyaW5nKCk7XG4gICAgICAgICAgb3V0cHV0ID0ge1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50X2FkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlucHV0ID0ge1xuICAgICAgICAgICAgYWRkcmVzczogY29udHJhY3RDYWxsVmFsdWVzLm93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgICBjb250cmFjdEFkZHJlc3MsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBvdXRwdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogY29udHJhY3RDYWxsVmFsdWVzLm93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogY29udHJhY3RDYWxsVmFsdWVzLm93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgY29udHJhY3RBZGRyZXNzLFxuICAgICAgICAgIGRhdGE6IGNvbnRyYWN0Q2FsbFZhbHVlcy5kYXRhLFxuICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb250cmFjdFR5cGUuRnJlZXplQmFsYW5jZVYyOlxuICAgICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTtcbiAgICAgICAgY29uc3QgZnJlZXplVmFsdWUgPSAocmF3RGF0YS5jb250cmFjdFswXSBhcyBGcmVlemVCYWxhbmNlVjJDb250cmFjdCkucGFyYW1ldGVyLnZhbHVlO1xuICAgICAgICBvdXRwdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogZnJlZXplVmFsdWUub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogZnJlZXplVmFsdWUuZnJvemVuX2JhbGFuY2UudG9TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogZnJlZXplVmFsdWUub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogZnJlZXplVmFsdWUuZnJvemVuX2JhbGFuY2UudG9TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbnRyYWN0VHlwZS5Wb3RlV2l0bmVzczpcbiAgICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVm90ZTtcbiAgICAgICAgY29uc3Qgdm90ZVZhbHVlcyA9IChyYXdEYXRhLmNvbnRyYWN0WzBdIGFzIFZvdGVXaXRuZXNzQ29udHJhY3QpLnBhcmFtZXRlci52YWx1ZTtcblxuICAgICAgICAvLyBDYWxjdWxhdGUgdG90YWwgdm90ZSBjb3VudFxuICAgICAgICBjb25zdCB0b3RhbFZvdGVDb3VudCA9IHZvdGVWYWx1ZXMudm90ZXMucmVkdWNlKChzdW0sIHZvdGUpID0+IHN1bSArIHZvdGUudm90ZV9jb3VudCwgMCk7XG5cbiAgICAgICAgb3V0cHV0ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IHZvdGVWYWx1ZXMub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogdG90YWxWb3RlQ291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogdm90ZVZhbHVlcy5vd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiB0b3RhbFZvdGVDb3VudC50b1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29udHJhY3RUeXBlLlVuZnJlZXplQmFsYW5jZVYyOlxuICAgICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlO1xuICAgICAgICBjb25zdCB1bmZyZWV6ZVZhbHVlcyA9IChyYXdEYXRhLmNvbnRyYWN0WzBdIGFzIFVuZnJlZXplQmFsYW5jZVYyQ29udHJhY3QpLnBhcmFtZXRlci52YWx1ZTtcbiAgICAgICAgb3V0cHV0ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IHVuZnJlZXplVmFsdWVzLm93bmVyX2FkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6IHVuZnJlZXplVmFsdWVzLnVuZnJlZXplX2JhbGFuY2UudG9TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogdW5mcmVlemVWYWx1ZXMub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogdW5mcmVlemVWYWx1ZXMudW5mcmVlemVfYmFsYW5jZS50b1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29udHJhY3RUeXBlLldpdGhkcmF3RXhwaXJlVW5mcmVlemU6XG4gICAgICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3O1xuICAgICAgICBjb25zdCB3aXRoZHJhd1ZhbHVlcyA9IChyYXdEYXRhLmNvbnRyYWN0WzBdIGFzIFdpdGhkcmF3RXhwaXJlVW5mcmVlemVDb250cmFjdCkucGFyYW1ldGVyLnZhbHVlO1xuICAgICAgICBvdXRwdXQgPSB7XG4gICAgICAgICAgYWRkcmVzczogd2l0aGRyYXdWYWx1ZXMub3duZXJfYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogJzAnLCAvLyBubyB2YWx1ZSBmaWVsZFxuICAgICAgICB9O1xuICAgICAgICBpbnB1dCA9IHtcbiAgICAgICAgICBhZGRyZXNzOiB3aXRoZHJhd1ZhbHVlcy5vd25lcl9hZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgY29udHJhY3QgdHlwZScpO1xuICAgIH1cbiAgICB0aGlzLl9pbnB1dHMgPSBbaW5wdXRdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbb3V0cHV0XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNhbGN1bGF0ZSBhbmQgdXBkYXRlIHRoZSB0cmFuc2FjdGlvbiBpZC4gVGhpcyBzaG91bGQgYmUgZG9uZSBhZnRlciBjaGFuZ2luZyBhbnkgdHJhbnNhY3Rpb25cbiAgICogZmllbGQgc2luY2UgdGhlIHRoZSBpZCBpcyBhIGhhc2ggb2YgdGhlIHRyYW5zYWN0aW9uIGJvZHkuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUlkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGhleEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuX3RyYW5zYWN0aW9uLnJhd19kYXRhX2hleCwgJ2hleCcpO1xuICAgIGNvbnN0IG5ld1R4aWQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoaGV4QnVmZmVyKS5kaWdlc3QoJ2hleCcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnR4SUQgPSBuZXdUeGlkO1xuICAgIHRoaXMuX2lkID0gbmV3VHhpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgdGhlIGV4cGlyYXRpb24gZGF0ZSBieSB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAgICpcbiAgICogQHBhcmFtIGV4dGVuc2lvbk1zIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGV4dGVuZCB0aGUgZXhwaXJhdGlvbiBieVxuICAgKi9cbiAgZXh0ZW5kRXhwaXJhdGlvbihleHRlbnNpb25NczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGV4dGVuc2lvbk1zIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZXh0ZW5zaW9uIHJhbmdlLiBNdXN0IGJlIHBvc2l0aXZlIGEgaW50ZWdlcicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbi5zaWduYXR1cmUgJiYgdGhpcy5fdHJhbnNhY3Rpb24uc2lnbmF0dXJlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdDYW5ub3QgZXh0ZW5kIGEgc2lnbmVkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmF3RGF0YUhleCA9IHRoaXMuX3RyYW5zYWN0aW9uLnJhd19kYXRhX2hleDtcbiAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKHJhd0RhdGFIZXgsICdoZXgnKTtcbiAgICBsZXQgcmF3O1xuICAgIHRyeSB7XG4gICAgICByYXcgPSBwcm90b2NvbC5UcmFuc2FjdGlvbi5yYXcuZGVjb2RlKGJ5dGVzKTtcbiAgICAgIGNvbnN0IG5ld0V4cGlyYXRpb24gPSBuZXcgQmlnTnVtYmVyKHJhdy5leHBpcmF0aW9uKS5wbHVzKGV4dGVuc2lvbk1zKS50b051bWJlcigpO1xuICAgICAgcmF3LmV4cGlyYXRpb24gPSBuZXdFeHBpcmF0aW9uO1xuICAgICAgY29uc3QgbmV3UmF3RGF0YUhleCA9IEJ1ZmZlci5mcm9tKHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5lbmNvZGUocmF3KS5maW5pc2goKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgLy8gU2V0IHRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgdG8gYWNjb3VudCBmb3IgdGhlIG5ldyBleHBpcmF0aW9uIGRhdGVcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uLnJhd19kYXRhX2hleCA9IG5ld1Jhd0RhdGFIZXg7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5yYXdfZGF0YS5leHBpcmF0aW9uID0gbmV3RXhwaXJhdGlvbjtcbiAgICAgIHRoaXMuX2RlY29kZWRSYXdEYXRhSGV4ID0gZGVjb2RlVHJhbnNhY3Rpb24obmV3UmF3RGF0YUhleCk7XG4gICAgICB0aGlzLnJlY29yZFJhd0RhdGFGaWVsZHModGhpcy5fZGVjb2RlZFJhd0RhdGFIZXgpO1xuICAgICAgdGhpcy51cGRhdGVJZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgZGVjb2RpbmcgdGhlIGluaXRpYWwgcmF3X2RhdGFfaGV4IGZyb20gdGhlIHNlcmlhbGl6ZWQgdHguJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2lnbmF0dXJlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGdldCBzaWduYXR1cmUoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLl90cmFuc2FjdGlvbiAmJiB0aGlzLl90cmFuc2FjdGlvbi5zaWduYXR1cmUpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbi5zaWduYXR1cmU7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGlzIHRyYW5zYWN0aW9uIGJlY29tZXMgdmFsaWQgYW5kIGNhbiBiZSBicm9hZGNhc3RlZCB0byB0aGVcbiAgICogbmV0d29yay5cbiAgICovXG4gIGdldCB2YWxpZEZyb20oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRGcm9tO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZXhwaXJhdGlvbiB0aW1lIGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIGdldCB2YWxpZFRvKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkVG87XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0IG91dHB1dHMoKTogQ29udHJhY3RFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXQgaW5wdXRzKCk6IENvbnRyYWN0RW50cnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0cztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIC8vIFRyb24gdHJhbnNhY3Rpb24gZG8gbm90IGNvbnRhaW4gdGhlIG93bmVycyBhY2NvdW50IGFkZHJlc3Mgc28gaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoZWNrIHRoZVxuICAgIC8vIHByaXZhdGUga2V5IHdpdGggYW55IGJ1dCB0aGUgYWNjb3VudCBtYWluIGFkZHJlc3MuIFRoaXMgaXMgbm90IGVub3VnaCB0byBmYWlsIHRoaXMgY2hlY2ssIHNvXG4gICAgLy8gaXQgaXMgYSBuby1vcC5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdHJhbnNhY3Rpb25cbiAgICovXG4gIHNldFRyYW5zYWN0aW9uUmVjZWlwdCh0eDogVHJhbnNhY3Rpb25SZWNlaXB0KSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLnVwZGF0ZUlkKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0XG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUcmFuc2FjdGlvblJlY2VpcHQge1xuICAgIGlmICghdGhpcy5fdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBhbnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnRvSnNvbigpKTtcbiAgfVxufVxuIl19