@bitgo-beta/sdk-coin-trx 1.0.2-beta.2000 → 1.0.2-beta.2002
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountCreateTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/accountCreateTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,OAAO,EAA+D,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"accountCreateTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/accountCreateTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,OAAO,EAA+D,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAYpE,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;IAElC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;gBAEtB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;IAClB,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMrD,kBAAkB;IAClB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAoBxC,WAAW,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAgB9D;;;;;OAKG;IACH,SAAS,CAAC,6BAA6B,CAAC,yBAAyB,EAAE,qBAAqB,GAAG,IAAI;cAY/E,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAY3D;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAoBtC;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IA8BpC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAUvD,OAAO,CAAC,eAAe;IAQvB;;;;;OAKG;IACH,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAInD;;;;OAIG;IACH,OAAO,CAAC,sCAAsC;CAa/C"}
|
|
@@ -8,7 +8,6 @@ const transaction_1 = require("./transaction");
|
|
|
8
8
|
const tron_1 = require("../../resources/protobuf/tron");
|
|
9
9
|
const utils_1 = require("./utils");
|
|
10
10
|
const constants_1 = require("./constants");
|
|
11
|
-
var ContractType = tron_1.protocol.Transaction.Contract.ContractType;
|
|
12
11
|
class AccountCreateTxBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
13
12
|
constructor(_coinConfig) {
|
|
14
13
|
super(_coinConfig);
|
|
@@ -125,8 +124,13 @@ class AccountCreateTxBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
125
124
|
};
|
|
126
125
|
const accountCreateContract = tron_1.protocol.AccountCreateContract.fromObject(rawContract);
|
|
127
126
|
const accountCreateContractBytes = tron_1.protocol.AccountCreateContract.encode(accountCreateContract).finish();
|
|
127
|
+
// AccountCreateContract is enum value 0 — the proto3 default. TRON's node
|
|
128
|
+
// re-serializes raw_data from broadcast JSON and omits default-valued
|
|
129
|
+
// fields, producing a different raw_data_hex (and txID) than the SDK if
|
|
130
|
+
// we encode the type field explicitly. Skip it so signing and broadcast
|
|
131
|
+
// hashes match. See freezeBalanceTxBuilder.ts:175-181 for the same class
|
|
132
|
+
// of issue on the inner `resource` field.
|
|
128
133
|
const txContract = {
|
|
129
|
-
type: ContractType.AccountCreateContract,
|
|
130
134
|
parameter: {
|
|
131
135
|
value: accountCreateContractBytes,
|
|
132
136
|
type_url: constants_1.ACCOUNT_CREATE_TYPE_URL,
|
|
@@ -184,4 +188,4 @@ class AccountCreateTxBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
184
188
|
}
|
|
185
189
|
}
|
|
186
190
|
exports.AccountCreateTxBuilder = AccountCreateTxBuilder;
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudENyZWF0ZVR4QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWNjb3VudENyZWF0ZVR4QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFDcEMsbURBQTZIO0FBRTdILDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFFNUMsd0RBQXlEO0FBQ3pELG1DQU9pQjtBQUNqQiwyQ0FBc0Q7QUFFdEQsSUFBTyxZQUFZLEdBQUcsZUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBRWpFLE1BQWEsc0JBQXVCLFNBQVEsdUNBQWtCO0lBSzVELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGlCQUFpQixDQUFDLE9BQTRCO1FBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFBLHNDQUE4QixFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsYUFBYSxDQUFDLFdBQW1CO1FBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxpQ0FBc0IsQ0FBQyxvQ0FBb0MsQ0FBQyxD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cG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBCYXNlS2V5LCBFeHRlbmRUcmFuc2FjdGlvbkVycm9yLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFNpZ25pbmdFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHQsIEFjY291bnRDcmVhdGVDb250cmFjdCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgcHJvdG9jb2wgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcHJvdG9idWYvdHJvbic7XG5pbXBvcnQge1xuICBkZWNvZGVUcmFuc2FjdGlvbixcbiAgZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3MsXG4gIGdldEJhc2U1OEFkZHJlc3NGcm9tSGV4LFxuICBnZXRIZXhBZGRyZXNzRnJvbUJhc2U1OEFkZHJlc3MsXG4gIFRSQU5TQUNUSU9OX01BWF9FWFBJUkFUSU9OLFxuICBUUkFOU0FDVElPTl9ERUZBVUxUX0VYUElSQVRJT04sXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQUNDT1VOVF9DUkVBVEVfVFlQRV9VUkwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmltcG9ydCBDb250cmFjdFR5cGUgPSBwcm90b2NvbC5UcmFuc2FjdGlvbi5Db250cmFjdC5Db250cmFjdFR5cGU7XG5cbmV4cG9ydCBjbGFzcyBBY2NvdW50Q3JlYXRlVHhCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9zaWduaW5nS2V5czogQmFzZUtleVtdO1xuICAvLyBTdG9yZWQgYXMgaGV4IGFkZHJlc3MsIGNvbnNpc3RlbnQgd2l0aCBfb3duZXJBZGRyZXNzXG4gIHByb3RlY3RlZCBfYWNjb3VudEFkZHJlc3M6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fc2lnbmluZ0tleXMgPSBbXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWNjb3VudENyZWF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY2NvdW50IGFkZHJlc3MgKEJhc2U1OCkgdG8gYmUgY3JlYXRlZC9hY3RpdmF0ZWQgb24tY2hhaW4uXG4gICAqIFN0b3JlZCBpbnRlcm5hbGx5IGFzIGhleCBmb3IgcHJvdG9idWYgZW5jb2RpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhZGRyZXNzIC0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIEJhc2U1OCBhZGRyZXNzIG9mIHRoZSBuZXcgYWNjb3VudFxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHNldEFjY291bnRBZGRyZXNzKGFkZHJlc3M6IHsgYWRkcmVzczogc3RyaW5nIH0pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzKTtcbiAgICB0aGlzLl9hY2NvdW50QWRkcmVzcyA9IGdldEhleEFkZHJlc3NGcm9tQmFzZTU4QWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uTXM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZSAmJiB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcignQ2Fubm90IGV4dGVuZCBhIHNpZ25lZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChleHRlbnNpb25NcyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBiZWxvdyB6ZXJvJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbk1zID4gVFJBTlNBQ1RJT05fTUFYX0VYUElSQVRJT04pIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdUaGUgZXhwaXJhdGlvbiBjYW5ub3QgYmUgZXh0ZW5kZWQgbW9yZSB0aGFuIG9uZSBkYXknKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXhwaXJhdGlvbikge1xuICAgICAgdGhpcy5fZXhwaXJhdGlvbiA9IHRoaXMuX2V4cGlyYXRpb24gKyBleHRlbnNpb25NcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSBpcyBub3QgZXhwaXJhdGlvbiB0byBleHRlbmQnKTtcbiAgICB9XG4gIH1cblxuICBpbml0QnVpbGRlcihyYXdUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb25SZWNlaXB0IHwgc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCB0eCA9IHRoaXMuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gdHg7XG4gICAgdGhpcy5fc2lnbmluZ0tleXMgPSBbXTtcbiAgICBjb25zdCByYXdEYXRhID0gdHgudG9Kc29uKCkucmF3X2RhdGE7XG4gICAgdGhpcy5fcmVmQmxvY2tCeXRlcyA9IHJhd0RhdGEucmVmX2Jsb2NrX2J5dGVzO1xuICAgIHRoaXMuX3JlZkJsb2NrSGFzaCA9IHJhd0RhdGEucmVmX2Jsb2NrX2hhc2g7XG4gICAgdGhpcy5fZXhwaXJhdGlvbiA9IHJhd0RhdGEuZXhwaXJhdGlvbjtcbiAgICB0aGlzLl90aW1lc3RhbXAgPSByYXdEYXRhLnRpbWVzdGFtcDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgY29uc3QgY29udHJhY3RDYWxsID0gcmF3RGF0YS5jb250cmFjdFswXSBhcyBBY2NvdW50Q3JlYXRlQ29udHJhY3Q7XG4gICAgdGhpcy5pbml0QWNjb3VudENyZWF0ZUNvbnRyYWN0Q2FsbChjb250cmFjdENhbGwpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGFjY291bnQgY3JlYXRlIGNvbnRyYWN0IGNhbGwgc3BlY2lmaWMgZGF0YS5cbiAgICogQWRkcmVzc2VzIHN0b3JlZCBpbiB0aGUgcmVjZWlwdCBhcmUgaGV4IChzZXQgYnkgY3JlYXRlQWNjb3VudENyZWF0ZVRyYW5zYWN0aW9uKS5cbiAgICpcbiAgICogQHBhcmFtIHtBY2NvdW50Q3JlYXRlQ29udHJhY3R9IGFjY291bnRDcmVhdGVDb250cmFjdENhbGwgb2JqZWN0IHdpdGggYWNjb3VudCBjcmVhdGUgY29udHJhY3QgZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRBY2NvdW50Q3JlYXRlQ29udHJhY3RDYWxsKGFjY291bnRDcmVhdGVDb250cmFjdENhbGw6IEFjY291bnRDcmVhdGVDb250cmFjdCk6IHZvaWQge1xuICAgIGNvbnN0IHsgb3duZXJfYWRkcmVzcywgYWNjb3VudF9hZGRyZXNzIH0gPSBhY2NvdW50Q3JlYXRlQ29udHJhY3RDYWxsLnBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAob3duZXJfYWRkcmVzcykge1xuICAgICAgLy8gb3duZXJfYWRkcmVzcyBzdG9yZWQgaW4gcmVjZWlwdCBpcyBoZXg7IHNvdXJjZSgpIGV4cGVjdHMgQmFzZTU4XG4gICAgICB0aGlzLnNvdXJjZSh7IGFkZHJlc3M6IGdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KG93bmVyX2FkZHJlc3MpIH0pO1xuICAgIH1cbiAgICBpZiAoYWNjb3VudF9hZGRyZXNzKSB7XG4gICAgICAvLyBhY2NvdW50X2FkZHJlc3Mgc3RvcmVkIGluIHJlY2VpcHQgaXMgaGV4OyBzdG9yZSBkaXJlY3RseVxuICAgICAgdGhpcy5fYWNjb3VudEFkZHJlc3MgPSBhY2NvdW50X2FkZHJlc3M7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuY3JlYXRlQWNjb3VudENyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKHRoaXMuX3NpZ25pbmdLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYXBwbHlTaWduYXR1cmVzKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBIHZhbGlkIHRyYW5zYWN0aW9uIG11c3QgaGF2ZSBhbiBpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY3JlYXRlIHRoZSBhY2NvdW50IGNyZWF0ZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVBY2NvdW50Q3JlYXRlVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgcmF3RGF0YUhleCA9IHRoaXMuZ2V0QWNjb3VudENyZWF0ZVR4UmF3RGF0YUhleCgpO1xuICAgIGNvbnN0IHJhd0RhdGEgPSBkZWNvZGVUcmFuc2FjdGlvbihyYXdEYXRhSGV4KTtcbiAgICBjb25zdCBjb250cmFjdCA9IHJhd0RhdGEuY29udHJhY3RbMF0gYXMgQWNjb3VudENyZWF0ZUNvbnRyYWN0O1xuICAgIGNvbnN0IGNvbnRyYWN0UGFyYW1ldGVyID0gY29udHJhY3QucGFyYW1ldGVyO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLm93bmVyX2FkZHJlc3MgPSB0aGlzLl9vd25lckFkZHJlc3MudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICBjb250cmFjdFBhcmFtZXRlci52YWx1ZS5hY2NvdW50X2FkZHJlc3MgPSB0aGlzLl9hY2NvdW50QWRkcmVzcy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnR5cGVfdXJsID0gQUNDT1VOVF9DUkVBVEVfVFlQRV9VUkw7XG4gICAgY29udHJhY3QudHlwZSA9ICdBY2NvdW50Q3JlYXRlQ29udHJhY3QnO1xuICAgIGNvbnN0IGhleEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHJhd0RhdGFIZXgsICdoZXgnKTtcbiAgICBjb25zdCBpZCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShoZXhCdWZmZXIpLmRpZ2VzdCgnaGV4Jyk7XG4gICAgY29uc3QgdHhSZWNlaXB0OiBUcmFuc2FjdGlvblJlY2VpcHQgPSB7XG4gICAgICByYXdfZGF0YTogcmF3RGF0YSxcbiAgICAgIHJhd19kYXRhX2hleDogcmF3RGF0YUhleCxcbiAgICAgIHR4SUQ6IGlkLFxuICAgICAgc2lnbmF0dXJlOiB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZSxcbiAgICB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdHhSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgYWNjb3VudCBjcmVhdGUgdHJhbnNhY3Rpb24gcmF3IGRhdGEgaGV4XG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBhY2NvdW50IGNyZWF0ZSB0cmFuc2FjdGlvbiByYXcgZGF0YSBoZXhcbiAgICovXG4gIHByaXZhdGUgZ2V0QWNjb3VudENyZWF0ZVR4UmF3RGF0YUhleCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhd0NvbnRyYWN0ID0ge1xuICAgICAgb3duZXJBZGRyZXNzOiBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyh0aGlzLl9vd25lckFkZHJlc3MpLFxuICAgICAgYWNjb3VudEFkZHJlc3M6IGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKHRoaXMuX2FjY291bnRBZGRyZXNzKSxcbiAgICB9O1xuICAgIGNvbnN0IGFjY291bnRDcmVhdGVDb250cmFjdCA9IHByb3RvY29sLkFjY291bnRDcmVhdGVDb250cmFjdC5mcm9tT2JqZWN0KHJhd0NvbnRyYWN0KTtcbiAgICBjb25zdCBhY2NvdW50Q3JlYXRlQ29udHJhY3RCeXRlcyA9IHByb3RvY29sLkFjY291bnRDcmVhdGVDb250cmFjdC5lbmNvZGUoYWNjb3VudENyZWF0ZUNvbnRyYWN0KS5maW5pc2goKTtcbiAgICBjb25zdCB0eENvbnRyYWN0ID0ge1xuICAgICAgdHlwZTogQ29udHJhY3RUeXBlLkFjY291bnRDcmVhdGVDb250cmFjdCxcbiAgICAgIHBhcmFtZXRlcjoge1xuICAgICAgICB2YWx1ZTogYWNjb3VudENyZWF0ZUNvbnRyYWN0Qnl0ZXMsXG4gICAgICAgIHR5cGVfdXJsOiBBQ0NPVU5UX0NSRUFURV9UWVBFX1VSTCxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCByYXcgPSB7XG4gICAgICByZWZCbG9ja0J5dGVzOiBCdWZmZXIuZnJvbSh0aGlzLl9yZWZCbG9ja0J5dGVzLCAnaGV4JyksXG4gICAgICByZWZCbG9ja0hhc2g6IEJ1ZmZlci5mcm9tKHRoaXMuX3JlZkJsb2NrSGFzaCwgJ2hleCcpLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5fZXhwaXJhdGlvbiB8fCBEYXRlLm5vdygpICsgVFJBTlNBQ1RJT05fREVGQVVMVF9FWFBJUkFUSU9OLFxuICAgICAgdGltZXN0YW1wOiB0aGlzLl90aW1lc3RhbXAgfHwgRGF0ZS5ub3coKSxcbiAgICAgIGNvbnRyYWN0OiBbdHhDb250cmFjdF0sXG4gICAgfTtcbiAgICBjb25zdCByYXdUeCA9IHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5jcmVhdGUocmF3KTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmVuY29kZShyYXdUeCkuZmluaXNoKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICBpZiAodGhpcy5fc2lnbmluZ0tleXMuc29tZSgoc2lnbmluZ0tleSkgPT4gc2lnbmluZ0tleS5rZXkgPT09IGtleS5rZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdEdXBsaWNhdGVkIGtleScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduaW5nS2V5cy5wdXNoKGtleSk7XG5cbiAgICAvLyBXZSBrZWVwIHRoaXMgcmV0dXJuIGZvciBjb21wYXRpYmlsaXR5IGJ1dCBpcyBub3QgbWVhbnQgdG8gYmUgdXNlXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaW5wdXRzKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm8gaW5wdXRzJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2lnbmluZ0tleXMuZm9yRWFjaCgoa2V5KSA9PiB0aGlzLmFwcGx5U2lnbmF0dXJlKGtleSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkXG4gICAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVBY2NvdW50Q3JlYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGEgdmFsaWQgYWNjb3VudCBjcmVhdGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQWNjb3VudENyZWF0ZVRyYW5zYWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fb3duZXJBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIHBhcmFtZXRlcjogc291cmNlJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9hY2NvdW50QWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IGFjY291bnQgYWRkcmVzcycpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVmQmxvY2tCeXRlcyB8fCAhdGhpcy5fcmVmQmxvY2tIYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGJsb2NrIHJlZmVyZW5jZSBpbmZvcm1hdGlvbicpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudENyZWF0ZVR4QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWNjb3VudENyZWF0ZVR4QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFDcEMsbURBQTZIO0FBRTdILDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFFNUMsd0RBQXlEO0FBQ3pELG1DQU9pQjtBQUNqQiwyQ0FBc0Q7QUFFdEQsTUFBYSxzQkFBdUIsU0FBUSx1Q0FBa0I7SUFLNUQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUMsT0FBNEI7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUEsc0NBQThCLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixhQUFhLENBQUMsV0FBbUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEUsTUFBTSxJQUFJLGlDQUFzQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELElBQUksV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0s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aCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUsIEJhc2VLZXksIEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IsIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCwgQWNjb3VudENyZWF0ZUNvbnRyYWN0IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBwcm90b2NvbCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9wcm90b2J1Zi90cm9uJztcbmltcG9ydCB7XG4gIGRlY29kZVRyYW5zYWN0aW9uLFxuICBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyxcbiAgZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgsXG4gIGdldEhleEFkZHJlc3NGcm9tQmFzZTU4QWRkcmVzcyxcbiAgVFJBTlNBQ1RJT05fTUFYX0VYUElSQVRJT04sXG4gIFRSQU5TQUNUSU9OX0RFRkFVTFRfRVhQSVJBVElPTixcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBBQ0NPVU5UX0NSRUFURV9UWVBFX1VSTCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIEFjY291bnRDcmVhdGVUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3NpZ25pbmdLZXlzOiBCYXNlS2V5W107XG4gIC8vIFN0b3JlZCBhcyBoZXggYWRkcmVzcywgY29uc2lzdGVudCB3aXRoIF9vd25lckFkZHJlc3NcbiAgcHJvdGVjdGVkIF9hY2NvdW50QWRkcmVzczogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9zaWduaW5nS2V5cyA9IFtdO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BY2NvdW50Q3JlYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjY291bnQgYWRkcmVzcyAoQmFzZTU4KSB0byBiZSBjcmVhdGVkL2FjdGl2YXRlZCBvbi1jaGFpbi5cbiAgICogU3RvcmVkIGludGVybmFsbHkgYXMgaGV4IGZvciBwcm90b2J1ZiBlbmNvZGluZy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGFkZHJlc3MgLSBvYmplY3QgY29udGFpbmluZyB0aGUgQmFzZTU4IGFkZHJlc3Mgb2YgdGhlIG5ldyBhY2NvdW50XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgc2V0QWNjb3VudEFkZHJlc3MoYWRkcmVzczogeyBhZGRyZXNzOiBzdHJpbmcgfSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKGFkZHJlc3MpO1xuICAgIHRoaXMuX2FjY291bnRBZGRyZXNzID0gZ2V0SGV4QWRkcmVzc0Zyb21CYXNlNThBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZXh0ZW5kVmFsaWRUbyhleHRlbnNpb25NczogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlICYmIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdDYW5ub3QgZXh0ZW5kIGEgc2lnbmVkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbk1zIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgY2Fubm90IGJlIGJlbG93IHplcm8nKTtcbiAgICB9XG5cbiAgICBpZiAoZXh0ZW5zaW9uTXMgPiBUUkFOU0FDVElPTl9NQVhfRVhQSVJBVElPTikge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ1RoZSBleHBpcmF0aW9uIGNhbm5vdCBiZSBleHRlbmRlZCBtb3JlIHRoYW4gb25lIGRheScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9leHBpcmF0aW9uKSB7XG4gICAgICB0aGlzLl9leHBpcmF0aW9uID0gdGhpcy5fZXhwaXJhdGlvbiArIGV4dGVuc2lvbk1zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGlzIG5vdCBleHBpcmF0aW9uIHRvIGV4dGVuZCcpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRCdWlsZGVyKHJhd1RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHR4ID0gdGhpcy5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLl9zaWduaW5nS2V5cyA9IFtdO1xuICAgIGNvbnN0IHJhd0RhdGEgPSB0eC50b0pzb24oKS5yYXdfZGF0YTtcbiAgICB0aGlzLl9yZWZCbG9ja0J5dGVzID0gcmF3RGF0YS5yZWZfYmxvY2tfYnl0ZXM7XG4gICAgdGhpcy5fcmVmQmxvY2tIYXNoID0gcmF3RGF0YS5yZWZfYmxvY2tfaGFzaDtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gcmF3RGF0YS5leHBpcmF0aW9uO1xuICAgIHRoaXMuX3RpbWVzdGFtcCA9IHJhd0RhdGEudGltZXN0YW1wO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcbiAgICBjb25zdCBjb250cmFjdENhbGwgPSByYXdEYXRhLmNvbnRyYWN0WzBdIGFzIEFjY291bnRDcmVhdGVDb250cmFjdDtcbiAgICB0aGlzLmluaXRBY2NvdW50Q3JlYXRlQ29udHJhY3RDYWxsKGNvbnRyYWN0Q2FsbCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYWNjb3VudCBjcmVhdGUgY29udHJhY3QgY2FsbCBzcGVjaWZpYyBkYXRhLlxuICAgKiBBZGRyZXNzZXMgc3RvcmVkIGluIHRoZSByZWNlaXB0IGFyZSBoZXggKHNldCBieSBjcmVhdGVBY2NvdW50Q3JlYXRlVHJhbnNhY3Rpb24pLlxuICAgKlxuICAgKiBAcGFyYW0ge0FjY291bnRDcmVhdGVDb250cmFjdH0gYWNjb3VudENyZWF0ZUNvbnRyYWN0Q2FsbCBvYmplY3Qgd2l0aCBhY2NvdW50IGNyZWF0ZSBjb250cmFjdCBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgaW5pdEFjY291bnRDcmVhdGVDb250cmFjdENhbGwoYWNjb3VudENyZWF0ZUNvbnRyYWN0Q2FsbDogQWNjb3VudENyZWF0ZUNvbnRyYWN0KTogdm9pZCB7XG4gICAgY29uc3QgeyBvd25lcl9hZGRyZXNzLCBhY2NvdW50X2FkZHJlc3MgfSA9IGFjY291bnRDcmVhdGVDb250cmFjdENhbGwucGFyYW1ldGVyLnZhbHVlO1xuICAgIGlmIChvd25lcl9hZGRyZXNzKSB7XG4gICAgICAvLyBvd25lcl9hZGRyZXNzIHN0b3JlZCBpbiByZWNlaXB0IGlzIGhleDsgc291cmNlKCkgZXhwZWN0cyBCYXNlNThcbiAgICAgIHRoaXMuc291cmNlKHsgYWRkcmVzczogZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgob3duZXJfYWRkcmVzcykgfSk7XG4gICAgfVxuICAgIGlmIChhY2NvdW50X2FkZHJlc3MpIHtcbiAgICAgIC8vIGFjY291bnRfYWRkcmVzcyBzdG9yZWQgaW4gcmVjZWlwdCBpcyBoZXg7IHN0b3JlIGRpcmVjdGx5XG4gICAgICB0aGlzLl9hY2NvdW50QWRkcmVzcyA9IGFjY291bnRfYWRkcmVzcztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5jcmVhdGVBY2NvdW50Q3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICBpZiAodGhpcy5fc2lnbmluZ0tleXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hcHBseVNpZ25hdHVyZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0EgdmFsaWQgdHJhbnNhY3Rpb24gbXVzdCBoYXZlIGFuIGlkJyk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc2FjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjcmVhdGUgdGhlIGFjY291bnQgY3JlYXRlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUFjY291bnRDcmVhdGVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCByYXdEYXRhSGV4ID0gdGhpcy5nZXRBY2NvdW50Q3JlYXRlVHhSYXdEYXRhSGV4KCk7XG4gICAgY29uc3QgcmF3RGF0YSA9IGRlY29kZVRyYW5zYWN0aW9uKHJhd0RhdGFIZXgpO1xuICAgIGNvbnN0IGNvbnRyYWN0ID0gcmF3RGF0YS5jb250cmFjdFswXSBhcyBBY2NvdW50Q3JlYXRlQ29udHJhY3Q7XG4gICAgY29uc3QgY29udHJhY3RQYXJhbWV0ZXIgPSBjb250cmFjdC5wYXJhbWV0ZXI7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudmFsdWUub3duZXJfYWRkcmVzcyA9IHRoaXMuX293bmVyQWRkcmVzcy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLmFjY291bnRfYWRkcmVzcyA9IHRoaXMuX2FjY291bnRBZGRyZXNzLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudHlwZV91cmwgPSBBQ0NPVU5UX0NSRUFURV9UWVBFX1VSTDtcbiAgICBjb250cmFjdC50eXBlID0gJ0FjY291bnRDcmVhdGVDb250cmFjdCc7XG4gICAgY29uc3QgaGV4QnVmZmVyID0gQnVmZmVyLmZyb20ocmF3RGF0YUhleCwgJ2hleCcpO1xuICAgIGNvbnN0IGlkID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGhleEJ1ZmZlcikuZGlnZXN0KCdoZXgnKTtcbiAgICBjb25zdCB0eFJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcbiAgICAgIHJhd19kYXRhOiByYXdEYXRhLFxuICAgICAgcmF3X2RhdGFfaGV4OiByYXdEYXRhSGV4LFxuICAgICAgdHhJRDogaWQsXG4gICAgICBzaWduYXR1cmU6IHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlLFxuICAgIH07XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0eFJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZ2V0IHRoZSBhY2NvdW50IGNyZWF0ZSB0cmFuc2FjdGlvbiByYXcgZGF0YSBoZXhcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gdGhlIGFjY291bnQgY3JlYXRlIHRyYW5zYWN0aW9uIHJhdyBkYXRhIGhleFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBY2NvdW50Q3JlYXRlVHhSYXdEYXRhSGV4KCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmF3Q29udHJhY3QgPSB7XG4gICAgICBvd25lckFkZHJlc3M6IGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzKHRoaXMuX293bmVyQWRkcmVzcyksXG4gICAgICBhY2NvdW50QWRkcmVzczogZ2V0Qnl0ZUFycmF5RnJvbUhleEFkZHJlc3ModGhpcy5fYWNjb3VudEFkZHJlc3MpLFxuICAgIH07XG4gICAgY29uc3QgYWNjb3VudENyZWF0ZUNvbnRyYWN0ID0gcHJvdG9jb2wuQWNjb3VudENyZWF0ZUNvbnRyYWN0LmZyb21PYmplY3QocmF3Q29udHJhY3QpO1xuICAgIGNvbnN0IGFjY291bnRDcmVhdGVDb250cmFjdEJ5dGVzID0gcHJvdG9jb2wuQWNjb3VudENyZWF0ZUNvbnRyYWN0LmVuY29kZShhY2NvdW50Q3JlYXRlQ29udHJhY3QpLmZpbmlzaCgpO1xuICAgIC8vIEFjY291bnRDcmVhdGVDb250cmFjdCBpcyBlbnVtIHZhbHVlIDAg4oCUIHRoZSBwcm90bzMgZGVmYXVsdC4gVFJPTidzIG5vZGVcbiAgICAvLyByZS1zZXJpYWxpemVzIHJhd19kYXRhIGZyb20gYnJvYWRjYXN0IEpTT04gYW5kIG9taXRzIGRlZmF1bHQtdmFsdWVkXG4gICAgLy8gZmllbGRzLCBwcm9kdWNpbmcgYSBkaWZmZXJlbnQgcmF3X2RhdGFfaGV4IChhbmQgdHhJRCkgdGhhbiB0aGUgU0RLIGlmXG4gICAgLy8gd2UgZW5jb2RlIHRoZSB0eXBlIGZpZWxkIGV4cGxpY2l0bHkuIFNraXAgaXQgc28gc2lnbmluZyBhbmQgYnJvYWRjYXN0XG4gICAgLy8gaGFzaGVzIG1hdGNoLiBTZWUgZnJlZXplQmFsYW5jZVR4QnVpbGRlci50czoxNzUtMTgxIGZvciB0aGUgc2FtZSBjbGFzc1xuICAgIC8vIG9mIGlzc3VlIG9uIHRoZSBpbm5lciBgcmVzb3VyY2VgIGZpZWxkLlxuICAgIGNvbnN0IHR4Q29udHJhY3QgPSB7XG4gICAgICBwYXJhbWV0ZXI6IHtcbiAgICAgICAgdmFsdWU6IGFjY291bnRDcmVhdGVDb250cmFjdEJ5dGVzLFxuICAgICAgICB0eXBlX3VybDogQUNDT1VOVF9DUkVBVEVfVFlQRV9VUkwsXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgcmF3ID0ge1xuICAgICAgcmVmQmxvY2tCeXRlczogQnVmZmVyLmZyb20odGhpcy5fcmVmQmxvY2tCeXRlcywgJ2hleCcpLFxuICAgICAgcmVmQmxvY2tIYXNoOiBCdWZmZXIuZnJvbSh0aGlzLl9yZWZCbG9ja0hhc2gsICdoZXgnKSxcbiAgICAgIGV4cGlyYXRpb246IHRoaXMuX2V4cGlyYXRpb24gfHwgRGF0ZS5ub3coKSArIFRSQU5TQUNUSU9OX0RFRkFVTFRfRVhQSVJBVElPTixcbiAgICAgIHRpbWVzdGFtcDogdGhpcy5fdGltZXN0YW1wIHx8IERhdGUubm93KCksXG4gICAgICBjb250cmFjdDogW3R4Q29udHJhY3RdLFxuICAgIH07XG4gICAgY29uc3QgcmF3VHggPSBwcm90b2NvbC5UcmFuc2FjdGlvbi5yYXcuY3JlYXRlKHJhdyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHByb3RvY29sLlRyYW5zYWN0aW9uLnJhdy5lbmNvZGUocmF3VHgpLmZpbmlzaCgpKS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKHRoaXMuX3NpZ25pbmdLZXlzLnNvbWUoKHNpZ25pbmdLZXkpID0+IHNpZ25pbmdLZXkua2V5ID09PSBrZXkua2V5KSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignRHVwbGljYXRlZCBrZXknKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmluZ0tleXMucHVzaChrZXkpO1xuXG4gICAgLy8gV2Uga2VlcCB0aGlzIHJldHVybiBmb3IgY29tcGF0aWJpbGl0eSBidXQgaXMgbm90IG1lYW50IHRvIGJlIHVzZVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNpZ25hdHVyZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlucHV0cykge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vIGlucHV0cycpO1xuICAgIH1cblxuICAgIHRoaXMuX3NpZ25pbmdLZXlzLmZvckVhY2goKGtleSkgPT4gdGhpcy5hcHBseVNpZ25hdHVyZShrZXkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uIC0gVGhlIHRyYW5zYWN0aW9uIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3Mge0J1aWxkVHJhbnNhY3Rpb25FcnJvcn0gd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgaW52YWxpZFxuICAgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlQWNjb3VudENyZWF0ZVRyYW5zYWN0aW9uRmllbGRzKCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBhIHZhbGlkIGFjY291bnQgY3JlYXRlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEB0aHJvd3Mge0J1aWxkVHJhbnNhY3Rpb25FcnJvcn0gd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgaW52YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFjY291bnRDcmVhdGVUcmFuc2FjdGlvbkZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX293bmVyQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IHNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fYWNjb3VudEFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiBhY2NvdW50IGFkZHJlc3MnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3JlZkJsb2NrQnl0ZXMgfHwgIXRoaXMuX3JlZkJsb2NrSGFzaCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBibG9jayByZWZlcmVuY2UgaW5mb3JtYXRpb24nKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -103,6 +103,30 @@ const builder_1 = require("../../../src/lib/builder");
|
|
|
103
103
|
const tx2 = await txBuilder2.build();
|
|
104
104
|
assert_1.default.equal(tx2.toJson().txID, originalTxId);
|
|
105
105
|
});
|
|
106
|
+
// Regression test: AccountCreateContract's enum value is 0, which is the
|
|
107
|
+
// proto3 default for the outer Transaction.Contract.type field. When the
|
|
108
|
+
// SDK explicitly encoded `type: 0`, the wire format included the 2-byte
|
|
109
|
+
// tag `0800` inside the contract envelope. TRON's node re-serializes
|
|
110
|
+
// raw_data from broadcast JSON and omits default-valued fields, producing
|
|
111
|
+
// a 2-byte-shorter canonical raw_data_hex and a different txID. The TSS
|
|
112
|
+
// signature was valid for the SDK's hash but recovered to a garbage
|
|
113
|
+
// pubkey under TRON's canonical hash, so AccountCreate broadcasts failed
|
|
114
|
+
// with SIGERROR "signed by <random T...> but not contained of permission".
|
|
115
|
+
(0, node_test_1.it)('produces raw_data_hex without the proto3 default-valued type field', async () => {
|
|
116
|
+
const timestamp = 1779455020653;
|
|
117
|
+
const expiration = 1779465820653;
|
|
118
|
+
const txBuilder = initTxBuilder();
|
|
119
|
+
txBuilder.timestamp(timestamp);
|
|
120
|
+
txBuilder.expiration(expiration);
|
|
121
|
+
const tx = await txBuilder.build();
|
|
122
|
+
const rawDataHex = tx.toJson().raw_data_hex;
|
|
123
|
+
// The buggy encoding had `5a68 0800 1264` (contract tag, length 0x68,
|
|
124
|
+
// type=0, parameter tag, length 0x64). The canonical encoding TRON
|
|
125
|
+
// re-serializes to drops the `0800` and decrements the contract length
|
|
126
|
+
// by 2 -> `5a66 1264`.
|
|
127
|
+
assert_1.default.ok(!rawDataHex.includes('5a68080012'), `raw_data_hex must not include the proto3-default \`type: 0\` tag (0800). Got: ${rawDataHex}`);
|
|
128
|
+
assert_1.default.ok(rawDataHex.includes('5a661264'), `raw_data_hex must use the canonical contract framing (5a66...1264). Got: ${rawDataHex}`);
|
|
129
|
+
});
|
|
106
130
|
});
|
|
107
131
|
(0, node_test_1.describe)('should validate', () => {
|
|
108
132
|
(0, node_test_1.it)('a valid expiration', async () => {
|
|
@@ -220,4 +244,4 @@ const builder_1 = require("../../../src/lib/builder");
|
|
|
220
244
|
});
|
|
221
245
|
});
|
|
222
246
|
});
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudENyZWF0ZVR4QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYWNjb3VudENyZWF0ZVR4QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QixtREFBdUQ7QUFDdkQseUNBQXlDO0FBQ3pDLCtDQUE4RztBQUM5RyxzREFBc0Q7QUFHdEQsSUFBQSxvQkFBUSxFQUFDLDRCQUE0QixFQUFFO0lBQ3JDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUN6QixNQUFNLE9BQU8sR0FBSSxJQUFBLG9CQUFVLEVBQUMsTUFBTSxDQUFvQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDbkYsT0FBTzthQUNKLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNuRCxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN2RCxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsd0JBQVksRUFBRSxJQUFJLEVBQUUsc0JBQVUsRUFBRSxDQUFDLENBQUM7UUFFckQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRUYsSUFBQSxvQkFBUSxFQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxJQUFBLGNBQUUsRUFBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDN0IsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQixTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUN4QyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFnQixDQUFDO1lBQ3BELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLDBCQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDckQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsd0JBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkMsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsbUNBQXVCLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsY0FBRSxFQUFDLHVEQUF1RCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRW5DLE1BQU0sVUFBVSxHQUFHLElBQUEsb0JBQVUsRUFBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztZQUNuRSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLHdCQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFckMsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN4RCxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLHdCQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFckMsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxjQUFFLEVBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzdCLE1BQU0sVUFBVSxHQUFHLFNBQVMsR0FBRyxzQkFBVSxDQUFDO1lBQzFDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN4QixNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFbkMsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSx3QkFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXJDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25DLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLHdCQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGNBQUUsRUFBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNuRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDN0IsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQixTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxzQkFBVSxDQUFDLENBQUM7WUFDN0MsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDOUIsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxtQ0FBdUIsQ0FBQyxDQUFDO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXpDLE1BQU0sVUFBVSxHQUFHLElBQUEsb0JBQVUsRUFBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDeEQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSx3QkFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDMUIsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxtQ0FBdUIsQ0FBQyxDQUFDO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXpDLE1BQU0sVUFBVSxHQUFHLElBQUEsb0JBQVUsRUFBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDekQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSx3QkFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDMUIsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxtQ0FBdUIsQ0FBQyxDQUFDO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsU0FBUyxHQUFHLHNCQUFVLENBQUMsQ0FBQztZQUN6RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxjQUFFLEVBQUMsd0RBQXdELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDdEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzdCLE1BQU0sU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0IsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsc0JBQVUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFFdEMsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXJDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsb0JBQVEsRUFBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7UUFDL0IsSUFBQSxjQUFFLEVBQUMsb0JBQW9CLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLEdBQUcsR0FBRyxzQkFBVSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDeEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqQyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGNBQUUsRUFBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNuRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkIsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDMUMsQ0FBQyxFQUNELENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLDZDQUE2QyxDQUN4RSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGNBQUUsRUFBQywwQ0FBMEMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkIsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDaEMsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFO2dCQUNILFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUMsRUFDRCxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyw4Q0FBOEMsQ0FDekUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxjQUFFLEVBQUMsdUNBQXVDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2hDLGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDLEVBQ0QsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssMkNBQTJDLENBQ3RFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsY0FBRSxFQUFDLCtCQUErQixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLFVBQVUsR0FBRyxHQUFHLEdBQUcsc0JBQVUsQ0FBQztZQUNwQyxNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QixnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuQyxDQUFDLEVBQ0QsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssb0RBQW9ELENBQy9FLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsY0FBRSxFQUFDLHVDQUF1QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLFVBQVUsR0FBRyxHQUFHLEdBQUcsc0JBQVUsQ0FBQztZQUNwQyxNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFBLG9CQUFVLEVBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDbkUsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFO2dCQUNILFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEMsQ0FBQyxFQUNELENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLG9EQUFvRCxDQUMvRSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGNBQUUsRUFBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLEVBQ0QsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssbUNBQW1DLENBQzlELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsY0FBRSxFQUFDLDhCQUE4QixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVDLE1BQU0sU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxzQkFBVSxDQUFDO1lBQzNDLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFbkMsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUMsRUFDRCxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyw0QkFBNEIsQ0FDdkQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxjQUFFLEVBQUMsb0NBQW9DLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbEQsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLHNCQUFVLENBQUM7WUFDM0MsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqQyxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVuQyxNQUFNLFVBQVUsR0FBRyxJQUFBLG9CQUFVLEVBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDbkUsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFO2dCQUNILFVBQVUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxFQUNELENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLHFEQUFxRCxDQUNoRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGNBQUUsRUFBQyw0QkFBNEIsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMxQyxNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLHdCQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFbkMsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRTtnQkFDSCxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUMsRUFDRCxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxvQ0FBb0MsQ0FDL0QsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxjQUFFLEVBQUMsOEJBQThCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDNUMsTUFBTSxTQUFTLEdBQUksSUFBQSxvQkFBVSxFQUFDLE1BQU0sQ0FBb0IsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBRXJGLE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN0QyxPQUFPLEVBQUUsMkJBQTJCO2FBQ3JDLENBQUMsQ0FBQztZQUVILFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5RCxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDdEMsT0FBTyxFQUFFLG9DQUFvQzthQUM5QyxDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQVksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNsRSxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDdEMsT0FBTyxFQUFFLHFDQUFxQzthQUMvQyxDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLHdCQUFZLEVBQUUsSUFBSSxFQUFFLHNCQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzVELGdCQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRTtnQkFDeEIsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsY0FBRSxFQUFDLG9DQUFvQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2xELE1BQU0sU0FBUyxHQUFJLElBQUEsb0JBQVUsRUFBQyxNQUFNLENBQW9CLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNyRixnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLENBQUMsQ0FBQztZQUN6RixDQUFDLEVBQ0QsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLENBQ2hFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBkZXNjcmliZSwgaXQgfSBmcm9tICdub2RlOnRlc3QnO1xuaW1wb3J0IHsgUEFSVElDSVBBTlRTLCBCTE9DS19IQVNILCBCTE9DS19OVU1CRVIsIEVYUElSQVRJT04sIEFDQ09VTlRfQ1JFQVRFX0NPTlRSQUNUIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IGdldEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2J1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFdyYXBwZWRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ1Ryb24gQWNjb3VudENyZWF0ZSBidWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBpbml0VHhCdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSAoZ2V0QnVpbGRlcigndHRyeCcpIGFzIFdyYXBwZWRCdWlsZGVyKS5nZXRBY2NvdW50Q3JlYXRlVHhCdWlsZGVyKCk7XG4gICAgYnVpbGRlclxuICAgICAgLnNvdXJjZSh7IGFkZHJlc3M6IFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4uYWRkcmVzcyB9KVxuICAgICAgLnNldEFjY291bnRBZGRyZXNzKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLnRvLmFkZHJlc3MgfSlcbiAgICAgIC5ibG9jayh7IG51bWJlcjogQkxPQ0tfTlVNQkVSLCBoYXNoOiBCTE9DS19IQVNIIH0pO1xuXG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBidWlsZCBzdWNjZXNzZnVsbHknLCAoKSA9PiB7XG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gd2l0aCBjb3JyZWN0IGlucHV0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbih0aW1lc3RhbXAgKyA0MDAwMCk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuQWNjb3VudENyZWF0ZSk7XG4gICAgICBhc3NlcnQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwodHguaW5wdXRzWzBdLmFkZHJlc3MsIFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4uYWRkcmVzcyk7XG4gICAgICBhc3NlcnQuZXF1YWwodHguaW5wdXRzWzBdLnZhbHVlLCAnMCcpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4Lm91dHB1dHNbMF0udmFsdWUsICcwJyk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHR4SnNvbi5yYXdfZGF0YS5jb250cmFjdCwgQUNDT1VOVF9DUkVBVEVfQ09OVFJBQ1QpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIHVuc2lnbmVkIHRyYW5zYWN0aW9uIGZyb20gYSBzdHJpbmcgYW5kIGZyb20gYSBKU09OJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAodGltZXN0YW1wKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKHRpbWVzdGFtcCArIDQwMDAwKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIHR4QnVpbGRlcjIuc2lnbih7IGtleTogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5wayB9KTtcbiAgICAgIGNvbnN0IHR4MiA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMyA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvSnNvbigpKTtcbiAgICAgIHR4QnVpbGRlcjMuc2lnbih7IGtleTogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5wayB9KTtcbiAgICAgIGNvbnN0IHR4MyA9IGF3YWl0IHR4QnVpbGRlcjMuYnVpbGQoKTtcblxuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0eDIsIHR4Myk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gdW5zaWduZWQgdHJhbnNhY3Rpb24gd2l0aCBleHRlbmRlZCBkdXJhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gdGltZXN0YW1wICsgRVhQSVJBVElPTjtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IDYwMDAwO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcCh0aW1lc3RhbXApO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oZXhwaXJhdGlvbik7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICB0eEJ1aWxkZXIyLmV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uKTtcbiAgICAgIHR4QnVpbGRlcjIuc2lnbih7IGtleTogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5wayB9KTtcbiAgICAgIGNvbnN0IHR4MiA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcblxuICAgICAgYXNzZXJ0LmVxdWFsKHR4Mi5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eDIuaW5wdXRzWzBdLmFkZHJlc3MsIFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4uYWRkcmVzcyk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgyLmlucHV0c1swXS52YWx1ZSwgJzAnKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eDIub3V0cHV0c1swXS52YWx1ZSwgJzAnKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4Mi50b0pzb24oKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24ucmF3X2RhdGEuZXhwaXJhdGlvbiwgZXhwaXJhdGlvbiArIGV4dGVuc2lvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB0cmFuc2FjdGlvbiBzaWduZWQgbXVsdGlwbGUgdGltZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcCh0aW1lc3RhbXApO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24odGltZXN0YW1wICsgRVhQSVJBVElPTik7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgbGV0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgbGV0IHJhd0RhdGEgPSB0eEpzb24ucmF3X2RhdGE7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHJhd0RhdGEuY29udHJhY3QsIEFDQ09VTlRfQ1JFQVRFX0NPTlRSQUNUKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24uc2lnbmF0dXJlLmxlbmd0aCwgMCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0pzb24oKSk7XG4gICAgICB0eEJ1aWxkZXIyLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4ucGsgfSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICB0eEpzb24gPSB0eDIudG9Kc29uKCk7XG4gICAgICByYXdEYXRhID0gdHhKc29uLnJhd19kYXRhO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyYXdEYXRhLmNvbnRyYWN0LCBBQ0NPVU5UX0NSRUFURV9DT05UUkFDVCk7XG4gICAgICBhc3NlcnQuZXF1YWwodHhKc29uLnNpZ25hdHVyZS5sZW5ndGgsIDEpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIzID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgyLnRvSnNvbigpKTtcbiAgICAgIHR4QnVpbGRlcjMuc2lnbih7IGtleTogUEFSVElDSVBBTlRTLmZyb20ucGsgfSk7XG4gICAgICBjb25zdCB0eDMgPSBhd2FpdCB0eEJ1aWxkZXIzLmJ1aWxkKCk7XG4gICAgICB0eEpzb24gPSB0eDMudG9Kc29uKCk7XG4gICAgICByYXdEYXRhID0gdHhKc29uLnJhd19kYXRhO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyYXdEYXRhLmNvbnRyYWN0LCBBQ0NPVU5UX0NSRUFURV9DT05UUkFDVCk7XG4gICAgICBhc3NlcnQuZXF1YWwodHhKc29uLnNpZ25hdHVyZS5sZW5ndGgsIDIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJhd0RhdGEuZXhwaXJhdGlvbiwgdGltZXN0YW1wICsgRVhQSVJBVElPTik7XG4gICAgICBhc3NlcnQuZXF1YWwocmF3RGF0YS50aW1lc3RhbXAsIHRpbWVzdGFtcCk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJlc2VydmVzIGNvbnNpc3RlbnQgdHJhbnNhY3Rpb24gSUQgYWNyb3NzIHJvdW5kLXRyaXBzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAodGltZXN0YW1wKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKHRpbWVzdGFtcCArIEVYUElSQVRJT04pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsVHhJZCA9IHR4LnRvSnNvbigpLnR4SUQ7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIGNvbnN0IHR4MiA9IGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKTtcblxuICAgICAgYXNzZXJ0LmVxdWFsKHR4Mi50b0pzb24oKS50eElELCBvcmlnaW5hbFR4SWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIHZhbGlkYXRlJywgKCkgPT4ge1xuICAgIGl0KCdhIHZhbGlkIGV4cGlyYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IG5vdyArIEVYUElSQVRJT047XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKG5vdyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uICsgMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eEpzb24ucmF3X2RhdGEuZXhwaXJhdGlvbiwgZXhwaXJhdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBncmVhdGVyIHRoYW4gb25lIHllYXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcChub3cpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKG5vdyArIDMxNTM2MDAwMDAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnRXhwaXJhdGlvbiBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gb25lIGRheSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgZGF0ZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKG5vdyAtIDIwMDApO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKG5vdyAtIDEwMDApO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdFeHBpcmF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIGN1cnJlbnQgdGltZSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBsZXNzIHRoYW4gdGhlIHRpbWVzdGFtcCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKG5vdyArIDIwMDApO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKG5vdyArIDEwMDApO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdFeHBpcmF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRpbWVzdGFtcCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBzZXQgYWZ0ZXIgYnVpbGQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IG5vdyArIEVYUElSQVRJT047XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnRXhwaXJhdGlvbiBpcyBhbHJlYWR5IHNldCwgaXQgY2FuIG9ubHkgYmUgZXh0ZW5kZWQnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4cGlyYXRpb24gc2V0IGFmdGVyIGRlc2VyaWFsaXppbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IG5vdyArIEVYUElSQVRJT047XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlcjIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnRXhwaXJhdGlvbiBpcyBhbHJlYWR5IHNldCwgaXQgY2FuIG9ubHkgYmUgZXh0ZW5kZWQnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4dGVuc2lvbiB3aXRob3V0IGEgc2V0IGV4cGlyYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLmV4dGVuZFZhbGlkVG8oMjAwMDApO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdUaGVyZSBpcyBub3QgZXhwaXJhdGlvbiB0byBleHRlbmQnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgemVybyBtaWxsaXNlY29uZCBleHRlbnNpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gRGF0ZS5ub3coKSArIEVYUElSQVRJT047XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIyLmV4dGVuZFZhbGlkVG8oMCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1ZhbHVlIGNhbm5vdCBiZSBiZWxvdyB6ZXJvJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHRlbnNpb24gZ3JlYXRlciB0aGFuIG9uZSB5ZWFyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IERhdGUubm93KCkgKyBFWFBJUkFUSU9OO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oZXhwaXJhdGlvbik7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyMi5leHRlbmRWYWxpZFRvKDMxNTM2MDAwMDAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnVGhlIGV4cGlyYXRpb24gY2Fubm90IGJlIGV4dGVuZGVkIG1vcmUgdGhhbiBvbmUgZGF5J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHRlbnNpb24gYWZ0ZXIgc2lnbmluZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLnBrIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlcjIuZXh0ZW5kVmFsaWRUbygyMDAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0Nhbm5vdCBleHRlbmQgYSBzaWduZWQgdHJhbnNhY3Rpb24nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3RyYW5zYWN0aW9uIG1hbmRhdG9yeSBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSAoZ2V0QnVpbGRlcigndHRyeCcpIGFzIFdyYXBwZWRCdWlsZGVyKS5nZXRBY2NvdW50Q3JlYXRlVHhCdWlsZGVyKCk7XG5cbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKHR4QnVpbGRlci5idWlsZCgpLCB7XG4gICAgICAgIG1lc3NhZ2U6ICdNaXNzaW5nIHBhcmFtZXRlcjogc291cmNlJyxcbiAgICAgIH0pO1xuXG4gICAgICB0eEJ1aWxkZXIuc291cmNlKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLmN1c3RvZGlhbi5hZGRyZXNzIH0pO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModHhCdWlsZGVyLmJ1aWxkKCksIHtcbiAgICAgICAgbWVzc2FnZTogJ01pc3NpbmcgcGFyYW1ldGVyOiBhY2NvdW50IGFkZHJlc3MnLFxuICAgICAgfSk7XG5cbiAgICAgIHR4QnVpbGRlci5zZXRBY2NvdW50QWRkcmVzcyh7IGFkZHJlc3M6IFBBUlRJQ0lQQU5UUy50by5hZGRyZXNzIH0pO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModHhCdWlsZGVyLmJ1aWxkKCksIHtcbiAgICAgICAgbWVzc2FnZTogJ01pc3NpbmcgYmxvY2sgcmVmZXJlbmNlIGluZm9ybWF0aW9uJyxcbiAgICAgIH0pO1xuXG4gICAgICB0eEJ1aWxkZXIuYmxvY2soeyBudW1iZXI6IEJMT0NLX05VTUJFUiwgaGFzaDogQkxPQ0tfSEFTSCB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90UmVqZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhbiBpbnZhbGlkIGFjY291bnQgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IChnZXRCdWlsZGVyKCd0dHJ4JykgYXMgV3JhcHBlZEJ1aWxkZXIpLmdldEFjY291bnRDcmVhdGVUeEJ1aWxkZXIoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuc2V0QWNjb3VudEFkZHJlc3MoeyBhZGRyZXNzOiAnNDE3M2E1OTkzY2QxODJhZTE1MmFkYWQ4MjAzMTYzZjc4MGM2NWE4YWE1JyB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlLmluY2x1ZGVzKCdpcyBub3QgYSB2YWxpZCBiYXNlNTggYWRkcmVzcycpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudENyZWF0ZVR4QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYWNjb3VudENyZWF0ZVR4QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QixtREFBdUQ7QUFDdkQseUNBQXlDO0FBQ3pDLCtDQUE4RztBQUM5RyxzREFBc0Q7QUFHdEQsSUFBQSxvQkFBUSxFQUFDLDRCQUE0QixFQUFFO0lBQ3JDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUN6QixNQUFNLE9BQU8sR0FBSSxJQUFBLG9CQUFVLEVBQUMsTUFBTSxDQUFvQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDbkYsT0FBTzthQUNKLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNuRCxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN2RCxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsd0JBQVksRUFBRSxJQUFJLEVBQUUsc0JBQVUsRUFBRSxDQUFDLENBQUM7UUFFckQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRUYsSUFBQSxvQkFBUSxFQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxJQUFBLGNBQUUsRUFBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDN0IsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbEMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQixTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUN4QyxN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cnQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZGVzY3JpYmUsIGl0IH0gZnJvbSAnbm9kZTp0ZXN0JztcbmltcG9ydCB7IFBBUlRJQ0lQQU5UUywgQkxPQ0tfSEFTSCwgQkxPQ0tfTlVNQkVSLCBFWFBJUkFUSU9OLCBBQ0NPVU5UX0NSRUFURV9DT05UUkFDVCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9idWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uLCBXcmFwcGVkQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdUcm9uIEFjY291bnRDcmVhdGUgYnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaW5pdFR4QnVpbGRlciA9ICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gKGdldEJ1aWxkZXIoJ3R0cngnKSBhcyBXcmFwcGVkQnVpbGRlcikuZ2V0QWNjb3VudENyZWF0ZVR4QnVpbGRlcigpO1xuICAgIGJ1aWxkZXJcbiAgICAgIC5zb3VyY2UoeyBhZGRyZXNzOiBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLmFkZHJlc3MgfSlcbiAgICAgIC5zZXRBY2NvdW50QWRkcmVzcyh7IGFkZHJlc3M6IFBBUlRJQ0lQQU5UUy50by5hZGRyZXNzIH0pXG4gICAgICAuYmxvY2soeyBudW1iZXI6IEJMT0NLX05VTUJFUiwgaGFzaDogQkxPQ0tfSEFTSCB9KTtcblxuICAgIHJldHVybiBidWlsZGVyO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgYnVpbGQgc3VjY2Vzc2Z1bGx5JywgKCkgPT4ge1xuICAgIGl0KCdhIHRyYW5zYWN0aW9uIHdpdGggY29ycmVjdCBpbnB1dHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnRpbWVzdGFtcCh0aW1lc3RhbXApO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24odGltZXN0YW1wICsgNDAwMDApO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLkFjY291bnRDcmVhdGUpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLmFkZHJlc3MpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4LmlucHV0c1swXS52YWx1ZSwgJzAnKTtcbiAgICAgIGFzc2VydC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCAnMCcpO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0eEpzb24ucmF3X2RhdGEuY29udHJhY3QsIEFDQ09VTlRfQ1JFQVRFX0NPTlRSQUNUKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiB1bnNpZ25lZCB0cmFuc2FjdGlvbiBmcm9tIGEgc3RyaW5nIGFuZCBmcm9tIGEgSlNPTicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbih0aW1lc3RhbXAgKyA0MDAwMCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICB0eEJ1aWxkZXIyLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4ucGsgfSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjMgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0pzb24oKSk7XG4gICAgICB0eEJ1aWxkZXIzLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4ucGsgfSk7XG4gICAgICBjb25zdCB0eDMgPSBhd2FpdCB0eEJ1aWxkZXIzLmJ1aWxkKCk7XG5cbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodHgyLCB0eDMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIHVuc2lnbmVkIHRyYW5zYWN0aW9uIHdpdGggZXh0ZW5kZWQgZHVyYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IHRpbWVzdGFtcCArIEVYUElSQVRJT047XG4gICAgICBjb25zdCBleHRlbnNpb24gPSA2MDAwMDtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAodGltZXN0YW1wKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKGV4cGlyYXRpb24pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgdHhCdWlsZGVyMi5leHRlbmRWYWxpZFRvKGV4dGVuc2lvbik7XG4gICAgICB0eEJ1aWxkZXIyLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4ucGsgfSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG5cbiAgICAgIGFzc2VydC5lcXVhbCh0eDIuaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgyLmlucHV0c1swXS5hZGRyZXNzLCBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLmFkZHJlc3MpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4Mi5pbnB1dHNbMF0udmFsdWUsICcwJyk7XG4gICAgICBhc3NlcnQuZXF1YWwodHgyLm91dHB1dHNbMF0udmFsdWUsICcwJyk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eDIudG9Kc29uKCk7XG4gICAgICBhc3NlcnQuZXF1YWwodHhKc29uLnJhd19kYXRhLmV4cGlyYXRpb24sIGV4cGlyYXRpb24gKyBleHRlbnNpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2EgdHJhbnNhY3Rpb24gc2lnbmVkIG11bHRpcGxlIHRpbWVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAodGltZXN0YW1wKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKHRpbWVzdGFtcCArIEVYUElSQVRJT04pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGxldCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGxldCByYXdEYXRhID0gdHhKc29uLnJhd19kYXRhO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyYXdEYXRhLmNvbnRyYWN0LCBBQ0NPVU5UX0NSRUFURV9DT05UUkFDVCk7XG4gICAgICBhc3NlcnQuZXF1YWwodHhKc29uLnNpZ25hdHVyZS5sZW5ndGgsIDApO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Kc29uKCkpO1xuICAgICAgdHhCdWlsZGVyMi5zaWduKHsga2V5OiBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLnBrIH0pO1xuICAgICAgY29uc3QgdHgyID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuICAgICAgdHhKc29uID0gdHgyLnRvSnNvbigpO1xuICAgICAgcmF3RGF0YSA9IHR4SnNvbi5yYXdfZGF0YTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocmF3RGF0YS5jb250cmFjdCwgQUNDT1VOVF9DUkVBVEVfQ09OVFJBQ1QpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4SnNvbi5zaWduYXR1cmUubGVuZ3RoLCAxKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMyA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4Mi50b0pzb24oKSk7XG4gICAgICB0eEJ1aWxkZXIzLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5mcm9tLnBrIH0pO1xuICAgICAgY29uc3QgdHgzID0gYXdhaXQgdHhCdWlsZGVyMy5idWlsZCgpO1xuICAgICAgdHhKc29uID0gdHgzLnRvSnNvbigpO1xuICAgICAgcmF3RGF0YSA9IHR4SnNvbi5yYXdfZGF0YTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocmF3RGF0YS5jb250cmFjdCwgQUNDT1VOVF9DUkVBVEVfQ09OVFJBQ1QpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4SnNvbi5zaWduYXR1cmUubGVuZ3RoLCAyKTtcbiAgICAgIGFzc2VydC5lcXVhbChyYXdEYXRhLmV4cGlyYXRpb24sIHRpbWVzdGFtcCArIEVYUElSQVRJT04pO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJhd0RhdGEudGltZXN0YW1wLCB0aW1lc3RhbXApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZXNlcnZlcyBjb25zaXN0ZW50IHRyYW5zYWN0aW9uIElEIGFjcm9zcyByb3VuZC10cmlwcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbih0aW1lc3RhbXAgKyBFWFBJUkFUSU9OKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBvcmlnaW5hbFR4SWQgPSB0eC50b0pzb24oKS50eElEO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG5cbiAgICAgIGFzc2VydC5lcXVhbCh0eDIudG9Kc29uKCkudHhJRCwgb3JpZ2luYWxUeElkKTtcbiAgICB9KTtcblxuICAgIC8vIFJlZ3Jlc3Npb24gdGVzdDogQWNjb3VudENyZWF0ZUNvbnRyYWN0J3MgZW51bSB2YWx1ZSBpcyAwLCB3aGljaCBpcyB0aGVcbiAgICAvLyBwcm90bzMgZGVmYXVsdCBmb3IgdGhlIG91dGVyIFRyYW5zYWN0aW9uLkNvbnRyYWN0LnR5cGUgZmllbGQuIFdoZW4gdGhlXG4gICAgLy8gU0RLIGV4cGxpY2l0bHkgZW5jb2RlZCBgdHlwZTogMGAsIHRoZSB3aXJlIGZvcm1hdCBpbmNsdWRlZCB0aGUgMi1ieXRlXG4gICAgLy8gdGFnIGAwODAwYCBpbnNpZGUgdGhlIGNvbnRyYWN0IGVudmVsb3BlLiBUUk9OJ3Mgbm9kZSByZS1zZXJpYWxpemVzXG4gICAgLy8gcmF3X2RhdGEgZnJvbSBicm9hZGNhc3QgSlNPTiBhbmQgb21pdHMgZGVmYXVsdC12YWx1ZWQgZmllbGRzLCBwcm9kdWNpbmdcbiAgICAvLyBhIDItYnl0ZS1zaG9ydGVyIGNhbm9uaWNhbCByYXdfZGF0YV9oZXggYW5kIGEgZGlmZmVyZW50IHR4SUQuIFRoZSBUU1NcbiAgICAvLyBzaWduYXR1cmUgd2FzIHZhbGlkIGZvciB0aGUgU0RLJ3MgaGFzaCBidXQgcmVjb3ZlcmVkIHRvIGEgZ2FyYmFnZVxuICAgIC8vIHB1YmtleSB1bmRlciBUUk9OJ3MgY2Fub25pY2FsIGhhc2gsIHNvIEFjY291bnRDcmVhdGUgYnJvYWRjYXN0cyBmYWlsZWRcbiAgICAvLyB3aXRoIFNJR0VSUk9SIFwic2lnbmVkIGJ5IDxyYW5kb20gVC4uLj4gYnV0IG5vdCBjb250YWluZWQgb2YgcGVybWlzc2lvblwiLlxuICAgIGl0KCdwcm9kdWNlcyByYXdfZGF0YV9oZXggd2l0aG91dCB0aGUgcHJvdG8zIGRlZmF1bHQtdmFsdWVkIHR5cGUgZmllbGQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSAxNzc5NDU1MDIwNjUzO1xuICAgICAgY29uc3QgZXhwaXJhdGlvbiA9IDE3Nzk0NjU4MjA2NTM7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdEYXRhSGV4ID0gdHgudG9Kc29uKCkucmF3X2RhdGFfaGV4O1xuXG4gICAgICAvLyBUaGUgYnVnZ3kgZW5jb2RpbmcgaGFkIGA1YTY4IDA4MDAgMTI2NGAgKGNvbnRyYWN0IHRhZywgbGVuZ3RoIDB4NjgsXG4gICAgICAvLyB0eXBlPTAsIHBhcmFtZXRlciB0YWcsIGxlbmd0aCAweDY0KS4gVGhlIGNhbm9uaWNhbCBlbmNvZGluZyBUUk9OXG4gICAgICAvLyByZS1zZXJpYWxpemVzIHRvIGRyb3BzIHRoZSBgMDgwMGAgYW5kIGRlY3JlbWVudHMgdGhlIGNvbnRyYWN0IGxlbmd0aFxuICAgICAgLy8gYnkgMiAtPiBgNWE2NiAxMjY0YC5cbiAgICAgIGFzc2VydC5vayhcbiAgICAgICAgIXJhd0RhdGFIZXguaW5jbHVkZXMoJzVhNjgwODAwMTInKSxcbiAgICAgICAgYHJhd19kYXRhX2hleCBtdXN0IG5vdCBpbmNsdWRlIHRoZSBwcm90bzMtZGVmYXVsdCBcXGB0eXBlOiAwXFxgIHRhZyAoMDgwMCkuIEdvdDogJHtyYXdEYXRhSGV4fWBcbiAgICAgICk7XG4gICAgICBhc3NlcnQub2soXG4gICAgICAgIHJhd0RhdGFIZXguaW5jbHVkZXMoJzVhNjYxMjY0JyksXG4gICAgICAgIGByYXdfZGF0YV9oZXggbXVzdCB1c2UgdGhlIGNhbm9uaWNhbCBjb250cmFjdCBmcmFtaW5nICg1YTY2Li4uMTI2NCkuIEdvdDogJHtyYXdEYXRhSGV4fWBcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgdmFsaWRhdGUnLCAoKSA9PiB7XG4gICAgaXQoJ2EgdmFsaWQgZXhwaXJhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gbm93ICsgRVhQSVJBVElPTjtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAobm93KTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKGV4cGlyYXRpb24gKyAxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKGV4cGlyYXRpb24pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHR4SnNvbi5yYXdfZGF0YS5leHBpcmF0aW9uLCBleHBpcmF0aW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHBpcmF0aW9uIGdyZWF0ZXIgdGhhbiBvbmUgeWVhcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudGltZXN0YW1wKG5vdyk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24obm93ICsgMzE1MzYwMDAwMDEpO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdFeHBpcmF0aW9uIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBvbmUgZGF5J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHBpcmF0aW9uIGxlc3MgdGhhbiB0aGUgY3VycmVudCBkYXRlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAobm93IC0gMjAwMCk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24obm93IC0gMTAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0V4cGlyYXRpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gY3VycmVudCB0aW1lJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHBpcmF0aW9uIGxlc3MgdGhhbiB0aGUgdGltZXN0YW1wJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci50aW1lc3RhbXAobm93ICsgMjAwMCk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24obm93ICsgMTAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ0V4cGlyYXRpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGltZXN0YW1wJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbiBleHBpcmF0aW9uIHNldCBhZnRlciBidWlsZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gbm93ICsgRVhQSVJBVElPTjtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKGV4cGlyYXRpb24pO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdFeHBpcmF0aW9uIGlzIGFscmVhZHkgc2V0LCBpdCBjYW4gb25seSBiZSBleHRlbmRlZCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXhwaXJhdGlvbiBzZXQgYWZ0ZXIgZGVzZXJpYWxpemluZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gbm93ICsgRVhQSVJBVElPTjtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyMi5leHBpcmF0aW9uKGV4cGlyYXRpb24pO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdFeHBpcmF0aW9uIGlzIGFscmVhZHkgc2V0LCBpdCBjYW4gb25seSBiZSBleHRlbmRlZCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYW4gZXh0ZW5zaW9uIHdpdGhvdXQgYSBzZXQgZXhwaXJhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIuZXh0ZW5kVmFsaWRUbygyMDAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1RoZXJlIGlzIG5vdCBleHBpcmF0aW9uIHRvIGV4dGVuZCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSB6ZXJvIG1pbGxpc2Vjb25kIGV4dGVuc2lvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb24gPSBEYXRlLm5vdygpICsgRVhQSVJBVElPTjtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKGV4cGlyYXRpb24pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyMiA9IGdldEJ1aWxkZXIoJ3R0cngnKS5mcm9tKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlcjIuZXh0ZW5kVmFsaWRUbygwKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnVmFsdWUgY2Fubm90IGJlIGJlbG93IHplcm8nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4dGVuc2lvbiBncmVhdGVyIHRoYW4gb25lIHllYXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICBjb25zdCBleHBpcmF0aW9uID0gRGF0ZS5ub3coKSArIEVYUElSQVRJT047XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbihleHBpcmF0aW9uKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBnZXRCdWlsZGVyKCd0dHJ4JykuZnJvbSh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0eEJ1aWxkZXIyLmV4dGVuZFZhbGlkVG8oMzE1MzYwMDAwMDEpO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UgPT09ICdUaGUgZXhwaXJhdGlvbiBjYW5ub3QgYmUgZXh0ZW5kZWQgbW9yZSB0aGFuIG9uZSBkYXknXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FuIGV4dGVuc2lvbiBhZnRlciBzaWduaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IFBBUlRJQ0lQQU5UUy5jdXN0b2RpYW4ucGsgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gZ2V0QnVpbGRlcigndHRyeCcpLmZyb20odHgudG9Ccm9hZGNhc3RGb3JtYXQoKSk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdHhCdWlsZGVyMi5leHRlbmRWYWxpZFRvKDIwMDAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnQ2Fubm90IGV4dGVuZCBhIHNpZ25lZCB0cmFuc2FjdGlvbidcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndHJhbnNhY3Rpb24gbWFuZGF0b3J5IGZpZWxkcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IChnZXRCdWlsZGVyKCd0dHJ4JykgYXMgV3JhcHBlZEJ1aWxkZXIpLmdldEFjY291bnRDcmVhdGVUeEJ1aWxkZXIoKTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHModHhCdWlsZGVyLmJ1aWxkKCksIHtcbiAgICAgICAgbWVzc2FnZTogJ01pc3NpbmcgcGFyYW1ldGVyOiBzb3VyY2UnLFxuICAgICAgfSk7XG5cbiAgICAgIHR4QnVpbGRlci5zb3VyY2UoeyBhZGRyZXNzOiBQQVJUSUNJUEFOVFMuY3VzdG9kaWFuLmFkZHJlc3MgfSk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyh0eEJ1aWxkZXIuYnVpbGQoKSwge1xuICAgICAgICBtZXNzYWdlOiAnTWlzc2luZyBwYXJhbWV0ZXI6IGFjY291bnQgYWRkcmVzcycsXG4gICAgICB9KTtcblxuICAgICAgdHhCdWlsZGVyLnNldEFjY291bnRBZGRyZXNzKHsgYWRkcmVzczogUEFSVElDSVBBTlRTLnRvLmFkZHJlc3MgfSk7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyh0eEJ1aWxkZXIuYnVpbGQoKSwge1xuICAgICAgICBtZXNzYWdlOiAnTWlzc2luZyBibG9jayByZWZlcmVuY2UgaW5mb3JtYXRpb24nLFxuICAgICAgfSk7XG5cbiAgICAgIHR4QnVpbGRlci5ibG9jayh7IG51bWJlcjogQkxPQ0tfTlVNQkVSLCBoYXNoOiBCTE9DS19IQVNIIH0pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RSZWplY3QoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGludmFsaWQgYWNjb3VudCBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gKGdldEJ1aWxkZXIoJ3R0cngnKSBhcyBXcmFwcGVkQnVpbGRlcikuZ2V0QWNjb3VudENyZWF0ZVR4QnVpbGRlcigpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHR4QnVpbGRlci5zZXRBY2NvdW50QWRkcmVzcyh7IGFkZHJlc3M6ICc0MTczYTU5OTNjZDE4MmFlMTUyYWRhZDgyMDMxNjNmNzgwYzY1YThhYTUnIH0pO1xuICAgICAgICB9LFxuICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2UuaW5jbHVkZXMoJ2lzIG5vdCBhIHZhbGlkIGJhc2U1OCBhZGRyZXNzJylcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|