@bitgo-beta/sdk-coin-iota 1.0.1-beta.329 → 1.0.1-beta.330
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.
|
@@ -22,7 +22,6 @@ export declare class TransferBuilder extends TransactionBuilder {
|
|
|
22
22
|
* These are the source coins that will be split and transferred to recipients.
|
|
23
23
|
* @param paymentObjects - Array of IOTA coin objects to use for payment
|
|
24
24
|
* @returns This builder for method chaining
|
|
25
|
-
* @throws BuildTransactionError if payment objects array is empty
|
|
26
25
|
*/
|
|
27
26
|
paymentObjects(paymentObjects: TransactionObjectInput[]): this;
|
|
28
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAyB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAMpD
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAyB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAMpD;;;;;OAKG;IACH,cAAc,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,IAAI;IAK9D;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAUpD;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,mBAAmB,CAEvD;IAED;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAM3B"}
|
|
@@ -33,12 +33,8 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
33
33
|
* These are the source coins that will be split and transferred to recipients.
|
|
34
34
|
* @param paymentObjects - Array of IOTA coin objects to use for payment
|
|
35
35
|
* @returns This builder for method chaining
|
|
36
|
-
* @throws BuildTransactionError if payment objects array is empty
|
|
37
36
|
*/
|
|
38
37
|
paymentObjects(paymentObjects) {
|
|
39
|
-
if (paymentObjects.length === 0) {
|
|
40
|
-
throw new sdk_core_1.BuildTransactionError('No Objects provided for payment');
|
|
41
|
-
}
|
|
42
38
|
this.transferTransaction.paymentObjects = paymentObjects;
|
|
43
39
|
return this;
|
|
44
40
|
}
|
|
@@ -99,4 +95,4 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
99
95
|
}
|
|
100
96
|
}
|
|
101
97
|
exports.TransferBuilder = TransferBuilder;
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELCtEQUE0RDtBQUM1RCxtREFBbUY7QUFDbkYsZ0VBQXFDO0FBSXJDOzs7R0FHRztBQUNILE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFDckQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxVQUFrQztRQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsY0FBd0M7UUFDckQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUF5QixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCLENBQUMsRUFBZTtRQUM3QyxJQUFJLENBQUMsQ0FBQyxFQUFFLFlBQVkseUNBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxFQUF1QjtRQUM5QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7UUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsV0FBeUI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBRSxXQUFtQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWMsbUJBQW1CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFlBQW1DLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0IsQ0FBQyxVQUFrQztRQUMzRCxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFGRCwwQ0EwRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25SZWNpcGllbnQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCB9IGZyb20gJy4vaWZhY2UnO1xuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIElPVEEgdHJhbnNmZXIgdHJhbnNhY3Rpb25zLlxuICogSGFuZGxlcyB0cmFuc2FjdGlvbnMgdGhhdCB0cmFuc2ZlciBJT1RBIHRva2VucyBmcm9tIHRoZSBzZW5kZXIgdG8gb25lIG9yIG1vcmUgcmVjaXBpZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWNpcGllbnRzIGZvciB0aGlzIHRyYW5zZmVyIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0gcmVjaXBpZW50cyAtIEFycmF5IG9mIHJlY2lwaWVudHMgd2l0aCB0aGVpciBhZGRyZXNzZXMgYW5kIGFtb3VudHNcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGZvciBtZXRob2QgY2hhaW5pbmdcbiAgICogQHRocm93cyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgaWYgYW55IHJlY2lwaWVudCBpcyBpbnZhbGlkXG4gICAqL1xuICByZWNpcGllbnRzKHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzKTtcbiAgICB0aGlzLnRyYW5zZmVyVHJhbnNhY3Rpb24ucmVjaXBpZW50cyA9IHJlY2lwaWVudHM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcGF5bWVudCBvYmplY3RzIChjb2luIG9iamVjdHMpIHRvIGJlIHVzZWQgZm9yIHRoaXMgdHJhbnNmZXIuXG4gICAqIFRoZXNlIGFyZSB0aGUgc291cmNlIGNvaW5zIHRoYXQgd2lsbCBiZSBzcGxpdCBhbmQgdHJhbnNmZXJyZWQgdG8gcmVjaXBpZW50cy5cbiAgICogQHBhcmFtIHBheW1lbnRPYmplY3RzIC0gQXJyYXkgb2YgSU9UQSBjb2luIG9iamVjdHMgdG8gdXNlIGZvciBwYXltZW50XG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBmb3IgbWV0aG9kIGNoYWluaW5nXG4gICAqL1xuICBwYXltZW50T2JqZWN0cyhwYXltZW50T2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdKTogdGhpcyB7XG4gICAgdGhpcy50cmFuc2ZlclRyYW5zYWN0aW9uLnBheW1lbnRPYmplY3RzID0gcGF5bWVudE9iamVjdHM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBkYXRhIGZyb20gYW4gZXhpc3RpbmcgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB0eCAtIFRoZSBzb3VyY2UgdHJhbnNhY3Rpb24gdG8gY29weSBkYXRhIGZyb21cbiAgICogQHRocm93cyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgaWYgdHJhbnNhY3Rpb24gaXMgbm90IGEgVHJhbnNmZXJUcmFuc2FjdGlvblxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uVHlwZSh0eCk7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuY29weVRyYW5zZmVyRGF0YSh0eCBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgb2YgdGhlIGNvcnJlY3QgdHlwZSAoVHJhbnNmZXJUcmFuc2FjdGlvbikuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25UeXBlKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghKHR4IGluc3RhbmNlb2YgVHJhbnNmZXJUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIG11c3QgYmUgb2YgdHlwZSBUcmFuc2ZlclRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvcGllcyB0cmFuc2Zlci1zcGVjaWZpYyBkYXRhIGZyb20gc291cmNlIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBjb3B5VHJhbnNmZXJEYXRhKHR4OiBUcmFuc2ZlclRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2ZlclRyYW5zYWN0aW9uLnJlY2lwaWVudHMgPSB0eC5yZWNpcGllbnRzO1xuICAgIHRoaXMudHJhbnNmZXJUcmFuc2FjdGlvbi5wYXltZW50T2JqZWN0cyA9IHR4LnBheW1lbnRPYmplY3RzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGNvbXBsZXRlIHRyYW5zZmVyIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgaWYgdHJhbnNhY3Rpb24gaXMgaW52YWxpZCBvciBub3QgYSBUcmFuc2ZlclRyYW5zYWN0aW9uXG4gICAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBpcyByZXF1aXJlZCBmb3IgdmFsaWRhdGlvbicpO1xuICAgIH1cblxuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb24pO1xuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzKCh0cmFuc2FjdGlvbiBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uKS5yZWNpcGllbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0cmFuc2FjdGlvbiBhcyBhIFRyYW5zZmVyVHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNmZXJUcmFuc2FjdGlvbigpOiBUcmFuc2ZlclRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24gYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWxsIHJlY2lwaWVudHMgaGF2ZSB2YWxpZCBhZGRyZXNzZXMgYW5kIGFtb3VudHMuXG4gICAqIEBwYXJhbSByZWNpcGllbnRzIC0gQXJyYXkgb2YgcmVjaXBpZW50cyB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciBpZiBhbnkgcmVjaXBpZW50IGhhcyBpbnZhbGlkIGFkZHJlc3Mgb3IgYW1vdW50XG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKTogdm9pZCB7XG4gICAgcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MgfSk7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihyZWNpcGllbnQuYW1vdW50KSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -238,6 +238,29 @@ describe('Iota Transfer Builder', () => {
|
|
|
238
238
|
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
239
239
|
tx.paymentObjects?.length.should.equal(2);
|
|
240
240
|
});
|
|
241
|
+
it('should accept empty payment objects array and use gas objects for payment in non-sponsor mode', async function () {
|
|
242
|
+
const builder = factory
|
|
243
|
+
.getTransferBuilder()
|
|
244
|
+
.sender(testHelpers_1.testData.sender.address)
|
|
245
|
+
.recipients(testHelpers_1.testData.recipients)
|
|
246
|
+
.paymentObjects([])
|
|
247
|
+
.gasData(testHelpers_1.testData.gasData);
|
|
248
|
+
const tx = (await builder.build());
|
|
249
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
250
|
+
should_1.default.equal(tx.isSimulateTx, false);
|
|
251
|
+
should_1.default.equal(tx.sender, testHelpers_1.testData.sender.address);
|
|
252
|
+
await (0, testHelpers_1.assertValidRawTransaction)(tx);
|
|
253
|
+
});
|
|
254
|
+
it('should fail tx building in case of empty payment objects in sponsor mode', async function () {
|
|
255
|
+
const builder = factory
|
|
256
|
+
.getTransferBuilder()
|
|
257
|
+
.sender(testHelpers_1.testData.sender.address)
|
|
258
|
+
.gasSponsor(testHelpers_1.testData.gasSponsor.address)
|
|
259
|
+
.recipients(testHelpers_1.testData.recipients)
|
|
260
|
+
.paymentObjects([])
|
|
261
|
+
.gasData(testHelpers_1.testData.gasData);
|
|
262
|
+
await builder.build().should.be.rejectedWith(/Payment objects are required when using a gas sponsor/);
|
|
263
|
+
});
|
|
241
264
|
});
|
|
242
265
|
describe('Validation Errors', () => {
|
|
243
266
|
describe('Address Validation', () => {
|
|
@@ -299,9 +322,9 @@ describe('Iota Transfer Builder', () => {
|
|
|
299
322
|
.gasData(testHelpers_1.testData.gasData);
|
|
300
323
|
await builder.build().should.be.rejected();
|
|
301
324
|
});
|
|
302
|
-
it('should
|
|
325
|
+
it('should allow empty payment objects', function () {
|
|
303
326
|
const builder = (0, testHelpers_1.createBasicTransferBuilder)();
|
|
304
|
-
|
|
327
|
+
should_1.default.doesNotThrow(() => builder.paymentObjects([]));
|
|
305
328
|
});
|
|
306
329
|
it('should fail without payment objects when using gas sponsor', async function () {
|
|
307
330
|
const builder = factory
|
|
@@ -412,4 +435,4 @@ describe('Iota Transfer Builder', () => {
|
|
|
412
435
|
});
|
|
413
436
|
});
|
|
414
437
|
});
|
|
415
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbURBQXVEO0FBQ3ZELDBEQUFxRjtBQUVyRix3REFjZ0M7QUFHaEMsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFBLHdCQUFVLEdBQUUsQ0FBQztJQUU3QixRQUFRLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO1FBQzFDLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLO1lBQzlELE1BQU0sU0FBUyxHQUFHLElBQUEsd0NBQTBCLEdBQUUsQ0FBQztZQUMvQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUF3QixDQUFDO1lBRTVELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLElBQUEsOENBQWdDLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDckMsTUFBTSxJQUFBLHVDQUF5QixFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEtBQUs7WUFDM0QsTUFBTSxTQUFTLEdBQUcsSUFBQSwwQ0FBNEIsR0FBRSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQXdCLENBQUM7WUFFNUQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSwwQkFBZSxDQUFDLElB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QUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9DLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgTUFYX0dBU19QQVlNRU5UX09CSkVDVFMsIE1BWF9SRUNJUElFTlRTIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25PYmplY3RJbnB1dCB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHtcbiAgY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIsXG4gIGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMsXG4gIGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhTcG9uc29yLFxuICBjcmVhdGVCdWlsZGVyV2l0aFJlY2lwaWVudHMsXG4gIGNyZWF0ZUJ1aWxkZXJXaXRoR2FzT2JqZWN0c09ubHksXG4gIGNyZWF0ZUJ1aWxkZXJXaXRoR2FzT2JqZWN0cyxcbiAgYXNzZXJ0QmFzaWNUcmFuc2FjdGlvblByb3BlcnRpZXMsXG4gIGFzc2VydEdhc0RhdGEsXG4gIGFzc2VydElucHV0c0FuZE91dHB1dHMsXG4gIGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24sXG4gIGNyZWF0ZVJlY2lwaWVudHMsXG4gIGdldEZhY3RvcnksXG4gIHRlc3REYXRhLFxufSBmcm9tICcuLi9oZWxwZXJzL3Rlc3RIZWxwZXJzJztcbmltcG9ydCB7IFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnSW90YSBUcmFuc2ZlciBCdWlsZGVyJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gZ2V0RmFjdG9yeSgpO1xuXG4gIGRlc2NyaWJlKCdCYXNpYyBUcmFuc2FjdGlvbiBCdWlsZGluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24gaW4gc2ltdWxhdGUgbW9kZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pc1NpbXVsYXRlVHgsIHRydWUpO1xuICAgICAgYXNzZXJ0QmFzaWNUcmFuc2FjdGlvblByb3BlcnRpZXModHgpO1xuICAgICAgYXdhaXQgYXNzZXJ0VmFsaWRSYXdUcmFuc2FjdGlvbih0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24gd2l0aCBnYXMgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlzU2ltdWxhdGVUeCwgZmFsc2UpO1xuICAgICAgYXNzZXJ0QmFzaWNUcmFuc2FjdGlvblByb3BlcnRpZXModHgpO1xuICAgICAgYXNzZXJ0R2FzRGF0YSh0eCk7XG4gICAgICBhc3NlcnRJbnB1dHNBbmRPdXRwdXRzKHR4LCB0ZXN0RGF0YS5yZWNpcGllbnRzKTtcbiAgICAgIGF3YWl0IGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIHdpdGggZ2FzIHNwb25zb3InLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoU3BvbnNvcigpO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBzaG91bGQuZXF1YWwodHguc2VuZGVyLCB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguZ2FzU3BvbnNvciwgdGVzdERhdGEuZ2FzU3BvbnNvci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pc1NpbXVsYXRlVHgsIGZhbHNlKTtcbiAgICAgIGF3YWl0IGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB0cmFuc2FjdGlvbiB1c2luZyBnYXMgb2JqZWN0cyB3aGVuIG5vIHBheW1lbnQgb2JqZWN0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXJXaXRoR2FzT2JqZWN0c09ubHkoKTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlzU2ltdWxhdGVUeCwgZmFsc2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnBheW1lbnRPYmplY3RzLCB1bmRlZmluZWQpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4Lmdhc1BheW1lbnRPYmplY3RzKTtcbiAgICAgIGF3YWl0IGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdXBwb3J0IG1ldGhvZCBjaGFpbmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGZhY3RvcnlcbiAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgIC5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpXG4gICAgICAgIC5yZWNpcGllbnRzKHRlc3REYXRhLnJlY2lwaWVudHMpXG4gICAgICAgIC5wYXltZW50T2JqZWN0cyh0ZXN0RGF0YS5wYXltZW50T2JqZWN0cylcbiAgICAgICAgLmdhc0RhdGEodGVzdERhdGEuZ2FzRGF0YSlcbiAgICAgICAgLmdhc1Nwb25zb3IodGVzdERhdGEuZ2FzU3BvbnNvci5hZGRyZXNzKVxuICAgICAgICAuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5zZW5kZXIsIHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5nYXNTcG9uc29yLCB0ZXN0RGF0YS5nYXNTcG9uc29yLmFkZHJlc3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2VyaWFsaXphdGlvbiBhbmQgRGVzZXJpYWxpemF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2VyaWFsaXplIHRvIEpTT04gYW5kIHJlYnVpbGQgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgICBjb25zdCByZWJ1aWx0VHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIChyZWJ1aWx0VHhCdWlsZGVyLnRyYW5zYWN0aW9uIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb24pLnBhcnNlRnJvbUpTT04odHhKc29uKTtcbiAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IChhd2FpdCByZWJ1aWx0VHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHguc2VuZGVyLCB0eC5zZW5kZXIpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZWJ1aWx0VHgucmVjaXBpZW50cywgdHgucmVjaXBpZW50cyk7XG4gICAgICBzaG91bGQuZXF1YWwocmVidWlsdFR4Lmdhc0J1ZGdldCwgdHguZ2FzQnVkZ2V0KTtcbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHguZ2FzUHJpY2UsIHR4Lmdhc1ByaWNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2VyaWFsaXplIHRvIGJyb2FkY2FzdCBmb3JtYXQgY29uc2lzdGVudGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHgxID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgcmF3VHgxID0gYXdhaXQgdHgxLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHR4MiA9IChhd2FpdCBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHJhd1R4MiA9IGF3YWl0IHR4Mi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBzaG91bGQuZXF1YWwocmF3VHgxLCByYXdUeDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0b0pTT04gb3V0cHV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5zZW5kZXIsIHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlY2lwaWVudHMsIHRlc3REYXRhLnJlY2lwaWVudHMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucGF5bWVudE9iamVjdHMsIHRlc3REYXRhLnBheW1lbnRPYmplY3RzKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uZ2FzQnVkZ2V0LCB0ZXN0RGF0YS5HQVNfQlVER0VUKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uZ2FzUHJpY2UsIHRlc3REYXRhLkdBU19QUklDRSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nYXNQYXltZW50T2JqZWN0cywgdGVzdERhdGEuZ2FzUGF5bWVudE9iamVjdHMpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4SnNvbi50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSb3VuZC10cmlwIFBhcnNpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgcGFyc2UgYW5kIHJlYnVpbGQgdHJhbnNhY3Rpb24gdXNpbmcgZ2FzIG9iamVjdHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCdWlsZGVyV2l0aEdhc09iamVjdHNPbmx5KCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHJhd1R4ID0gYXdhaXQgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4SGV4ID0gQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHR4SGV4KTtcbiAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IChhd2FpdCByZWJ1aWx0QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwocmVidWlsdFR4LnNlbmRlciwgdHguc2VuZGVyKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwocmVidWlsdFR4LnJlY2lwaWVudHMsIHR4LnJlY2lwaWVudHMpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC5nYXNCdWRnZXQsIHR4Lmdhc0J1ZGdldCk7XG4gICAgICBzaG91bGQuZXF1YWwocmVidWlsdFR4Lmdhc1ByaWNlLCB0eC5nYXNQcmljZSk7XG4gICAgICBzaG91bGQuZXF1YWwocmVidWlsdFR4LnBheW1lbnRPYmplY3RzLCB1bmRlZmluZWQpO1xuICAgICAgc2hvdWxkLmV4aXN0KHJlYnVpbHRUeC5nYXNQYXltZW50T2JqZWN0cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBwYXJzZSB0cmFuc2FjdGlvbiB3aXRoIHBheW1lbnQgb2JqZWN0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgcmF3VHggPSBhd2FpdCB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgdHhIZXggPSBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhIZXgpO1xuICAgICAgY29uc3QgcmVidWlsdFR4ID0gKGF3YWl0IHJlYnVpbHRCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5leGlzdChyZWJ1aWx0VHgucGF5bWVudE9iamVjdHMpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC5wYXltZW50T2JqZWN0cz8ubGVuZ3RoLCB0ZXN0RGF0YS5wYXltZW50T2JqZWN0cy5sZW5ndGgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcm91bmQtdHJpcCB3aXRoIGdhcyBzcG9uc29yIGFuZCBwYXltZW50IG9iamVjdHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoU3BvbnNvcigpLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCByYXdUeCA9IGF3YWl0IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eEhleCA9IEJ1ZmZlci5mcm9tKHJhd1R4LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0eEhleCk7XG4gICAgICBjb25zdCByZWJ1aWx0VHggPSAoYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC5nYXNTcG9uc29yLCB0ZXN0RGF0YS5nYXNTcG9uc29yLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmV4aXN0KHJlYnVpbHRUeC5wYXltZW50T2JqZWN0cyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZWNpcGllbnQgSGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENhc2VzID0gW1xuICAgICAgeyBjb3VudDogMSwgZGVzY3JpcHRpb246ICdzaW5nbGUgcmVjaXBpZW50JyB9LFxuICAgICAgeyBjb3VudDogMTAsIGRlc2NyaXB0aW9uOiAnbXVsdGlwbGUgcmVjaXBpZW50cycgfSxcbiAgICAgIHsgY291bnQ6IE1BWF9SRUNJUElFTlRTLCBkZXNjcmlwdGlvbjogJ21heGltdW0gcmVjaXBpZW50cycgfSxcbiAgICBdO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHsgY291bnQsIGRlc2NyaXB0aW9uIH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgYnVpbGQgdHJhbnNhY3Rpb24gd2l0aCAke2Rlc2NyaXB0aW9ufWAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50cyA9IGNyZWF0ZVJlY2lwaWVudHMoY291bnQsICcxMDAwJyk7XG4gICAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZUJ1aWxkZXJXaXRoUmVjaXBpZW50cyhyZWNpcGllbnRzKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbChjb3VudCk7XG4gICAgICAgIHR4Lm91dHB1dHMuZm9yRWFjaCgob3V0cHV0KSA9PiB7XG4gICAgICAgICAgb3V0cHV0LnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMCcpO1xuICAgICAgICAgIG91dHB1dC5jb2luPy5zaG91bGQuZXF1YWwoJ3Rpb3RhJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgd2l0aCBtb3JlIHRoYW4gTUFYX1JFQ0lQSUVOVFMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNpcGllbnRzID0gY3JlYXRlUmVjaXBpZW50cyhNQVhfUkVDSVBJRU5UUyArIDEpO1xuICAgICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXJXaXRoUmVjaXBpZW50cyhyZWNpcGllbnRzKTtcbiAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGR1cGxpY2F0ZSByZWNpcGllbnQgYWRkcmVzc2VzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZHVwbGljYXRlUmVjaXBpZW50cyA9IFtcbiAgICAgICAgeyBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sIGFtb3VudDogJzEwMDAnIH0sXG4gICAgICAgIHsgYWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLCBhbW91bnQ6ICcyMDAwJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZUJ1aWxkZXJXaXRoUmVjaXBpZW50cyhkdXBsaWNhdGVSZWNpcGllbnRzKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnR2FzIE9iamVjdCBIYW5kbGluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHdpdGggc2luZ2xlIGdhcyBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCdWlsZGVyV2l0aEdhc09iamVjdHMoW3Rlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzWzBdXSkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5nYXNQYXltZW50T2JqZWN0cyk7XG4gICAgICB0eC5nYXNQYXltZW50T2JqZWN0cz8ubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGF3YWl0IGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB3aXRoIGV4YWN0bHkgTUFYX0dBU19QQVlNRU5UX09CSkVDVFMgZ2FzIG9iamVjdHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBDcmVhdGUgZXhhY3RseSBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUyAoMjU2KSB3aXRoIHZhbGlkIGRpZ2VzdHNcbiAgICAgIGNvbnN0IGV4YWN0bHlNYXhHYXNPYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX0dBU19QQVlNRU5UX09CSkVDVFM7IGkrKykge1xuICAgICAgICBleGFjdGx5TWF4R2FzT2JqZWN0cy5wdXNoKHtcbiAgICAgICAgICAuLi50ZXN0RGF0YS5nYXNQYXltZW50T2JqZWN0c1tpICUgdGVzdERhdGEuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoXSxcbiAgICAgICAgICBvYmplY3RJZDogYDB4JHtpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2NCwgJzAnKX1gLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlQnVpbGRlcldpdGhHYXNPYmplY3RzKGV4YWN0bHlNYXhHYXNPYmplY3RzKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnNlbmRlciwgdGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgYXdhaXQgYXNzZXJ0VmFsaWRSYXdUcmFuc2FjdGlvbih0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHdpdGggbW9yZSB0aGFuIE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTIHJlcXVpcmluZyBtZXJnZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIENyZWF0ZSBtb3JlIHRoYW4gTUFYX0dBU19QQVlNRU5UX09CSkVDVFMgKDI1NikgdG8gdGVzdCBtZXJnZSBsb2dpY1xuICAgICAgY29uc3QgbWFueUdhc09iamVjdHM6IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXRbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUyArIDEwOyBpKyspIHtcbiAgICAgICAgbWFueUdhc09iamVjdHMucHVzaCh7XG4gICAgICAgICAgLi4udGVzdERhdGEuZ2FzUGF5bWVudE9iamVjdHNbaSAlIHRlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aF0sXG4gICAgICAgICAgb2JqZWN0SWQ6IGAweCR7aS50b1N0cmluZygxNikucGFkU3RhcnQoNjQsICcwJyl9YCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZUJ1aWxkZXJXaXRoR2FzT2JqZWN0cyhtYW55R2FzT2JqZWN0cykuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pc1NpbXVsYXRlVHgsIGZhbHNlKTtcbiAgICAgIGF3YWl0IGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUGF5bWVudCBPYmplY3QgSGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCB3aXRoIHNpbmdsZSBwYXltZW50IG9iamVjdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgIC5nZXRUcmFuc2ZlckJ1aWxkZXIoKVxuICAgICAgICAuc2VuZGVyKHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKVxuICAgICAgICAucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKVxuICAgICAgICAucGF5bWVudE9iamVjdHMoW3Rlc3REYXRhLnBheW1lbnRPYmplY3RzWzBdXSlcbiAgICAgICAgLmdhc0RhdGEodGVzdERhdGEuZ2FzRGF0YSk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eC5wYXltZW50T2JqZWN0cz8ubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGF3YWl0IGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBrZWVwIHBheW1lbnQgYW5kIGdhcyBvYmplY3RzIHNlcGFyYXRlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5leGlzdCh0eC5wYXltZW50T2JqZWN0cyk7XG4gICAgICBzaG91bGQuZXhpc3QodHguZ2FzUGF5bWVudE9iamVjdHMpO1xuICAgICAgdHgucGF5bWVudE9iamVjdHM/Lmxlbmd0aC5zaG91bGQuZXF1YWwodGVzdERhdGEucGF5bWVudE9iamVjdHMubGVuZ3RoKTtcbiAgICAgIHR4Lmdhc1BheW1lbnRPYmplY3RzPy5sZW5ndGguc2hvdWxkLmVxdWFsKHRlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBwYXltZW50IG9iamVjdHMgd2l0aCBkaWZmZXJlbnQgdmVyc2lvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtaXhlZFZlcnNpb25PYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBvYmplY3RJZDogJzB4MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScsXG4gICAgICAgICAgdmVyc2lvbjogJzEnLFxuICAgICAgICAgIGRpZ2VzdDogJ0RHVmhZams2WUh3ZFBkWkJnQk44Y3phdnk4THZicnNoa2J4Rjk2M0VXN21CJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9iamVjdElkOiAnMHgyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyJyxcbiAgICAgICAgICB2ZXJzaW9uOiAnOTk5OTk5JyxcbiAgICAgICAgICBkaWdlc3Q6ICdEb0p3WHV6OW9VNVk1djV2QlJpVGdpc1ZUUXVaUUxtSFpXZXFKenpENVFVRScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0VHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcylcbiAgICAgICAgLnJlY2lwaWVudHModGVzdERhdGEucmVjaXBpZW50cylcbiAgICAgICAgLnBheW1lbnRPYmplY3RzKG1peGVkVmVyc2lvbk9iamVjdHMpXG4gICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHgucGF5bWVudE9iamVjdHM/Lmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWYWxpZGF0aW9uIEVycm9ycycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnQWRkcmVzcyBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIGZvciBpbnZhbGlkIHNlbmRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnNlbmRlcigncmFuZG9tU3RyaW5nJykpLnRocm93RXJyb3IoJ0ludmFsaWQgYWRkcmVzcyByYW5kb21TdHJpbmcnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgcmVjaXBpZW50IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCYXNpY1RyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5yZWNpcGllbnRzKFt7IGFkZHJlc3M6ICdpbnZhbGlkQWRkcmVzcycsIGFtb3VudDogJzEwMDAnIH1dKSkudGhyb3dFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBhZGRyZXNzIGludmFsaWRBZGRyZXNzJ1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnQW1vdW50IFZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIG5lZ2F0aXZlIGFtb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJhc2ljVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PlxuICAgICAgICAgIGJ1aWxkZXIucmVjaXBpZW50cyhbeyBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sIGFtb3VudDogJy0xMDAwJyB9XSlcbiAgICAgICAgKS50aHJvd0Vycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgZm9ybWF0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+XG4gICAgICAgICAgYnVpbGRlci5yZWNpcGllbnRzKFt7IGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSwgYW1vdW50OiAnaW52YWxpZCcgfV0pXG4gICAgICAgICkudGhyb3coKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGFjY2VwdCB6ZXJvIGFtb3VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFt7IGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSwgYW1vdW50OiAnMCcgfV07XG4gICAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZUJ1aWxkZXJXaXRoUmVjaXBpZW50cyhyZWNpcGllbnRzKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBhY2NlcHQgdmVyeSBsYXJnZSBhbW91bnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGxhcmdlQW1vdW50ID0gJzk5OTk5OTk5OTk5OTk5OTk5OSc7XG4gICAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbeyBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sIGFtb3VudDogbGFyZ2VBbW91bnQgfV07XG4gICAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZUJ1aWxkZXJXaXRoUmVjaXBpZW50cyhyZWNpcGllbnRzKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKGxhcmdlQW1vdW50KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1JlcXVpcmVkIEZpZWxkIFZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBtaXNzaW5nIHNlbmRlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgICAuZ2V0VHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgICAucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKVxuICAgICAgICAgIC5wYXltZW50T2JqZWN0cyh0ZXN0RGF0YS5wYXltZW50T2JqZWN0cylcbiAgICAgICAgICAuZ2FzRGF0YSh0ZXN0RGF0YS5nYXNEYXRhKTtcblxuICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gbWlzc2luZyByZWNpcGllbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAgIC5nZXRUcmFuc2ZlckJ1aWxkZXIoKVxuICAgICAgICAgIC5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpXG4gICAgICAgICAgLnBheW1lbnRPYmplY3RzKHRlc3REYXRhLnBheW1lbnRPYmplY3RzKVxuICAgICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpO1xuXG4gICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHJlY2lwaWVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgICAgLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcylcbiAgICAgICAgICAucmVjaXBpZW50cyhbXSlcbiAgICAgICAgICAucGF5bWVudE9iamVjdHModGVzdERhdGEucGF5bWVudE9iamVjdHMpXG4gICAgICAgICAgLmdhc0RhdGEodGVzdERhdGEuZ2FzRGF0YSk7XG5cbiAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCBmb3IgZW1wdHkgcGF5bWVudCBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIucGF5bWVudE9iamVjdHMoW10pKS50aHJvd0Vycm9yKCdObyBPYmplY3RzIHByb3ZpZGVkIGZvciBwYXltZW50Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGhvdXQgcGF5bWVudCBvYmplY3RzIHdoZW4gdXNpbmcgZ2FzIHNwb25zb3InLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgICAgLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcylcbiAgICAgICAgICAucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKVxuICAgICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpXG4gICAgICAgICAgLmdhc1Nwb25zb3IodGVzdERhdGEuZ2FzU3BvbnNvci5hZGRyZXNzKTtcblxuICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdHYXMgRGF0YSBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIGZvciBlbXB0eSBnYXMgcGF5bWVudCBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+XG4gICAgICAgICAgYnVpbGRlci5nYXNEYXRhKHtcbiAgICAgICAgICAgIGdhc0J1ZGdldDogdGVzdERhdGEuR0FTX0JVREdFVCxcbiAgICAgICAgICAgIGdhc1ByaWNlOiB0ZXN0RGF0YS5HQVNfUFJJQ0UsXG4gICAgICAgICAgICBnYXNQYXltZW50T2JqZWN0czogW10sXG4gICAgICAgICAgfSlcbiAgICAgICAgKS50aHJvd0Vycm9yKC9HYXMgaW5wdXQgb2JqZWN0cyBsaXN0IGlzIGVtcHR5Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdPYmplY3QgRHVwbGljYXRpb24gVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIHBheW1lbnQgYW5kIGdhcyBwYXltZW50IG9iamVjdHMgb3ZlcmxhcCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgICAuZ2V0VHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgICAuc2VuZGVyKHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKVxuICAgICAgICAgIC5yZWNpcGllbnRzKHRlc3REYXRhLnJlY2lwaWVudHMpXG4gICAgICAgICAgLnBheW1lbnRPYmplY3RzKHRlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzKVxuICAgICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpO1xuXG4gICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIFBhcnNpbmcgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2hvdWxkKCgpID0+IGZhY3RvcnkuZnJvbSgnaW52YWxpZFJhd1RyYW5zYWN0aW9uJykpLnRocm93RXJyb3IoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gU2lnbmluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggc2VuZGVyIHNpZ25hdHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgdHguYWRkU2lnbmF0dXJlKHRlc3REYXRhLnRlc3RTaWduYXR1cmUucHVibGljS2V5LCB0ZXN0RGF0YS50ZXN0U2lnbmF0dXJlLnNpZ25hdHVyZSk7XG5cbiAgICAgIGF3YWl0IHR4LmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHguc2VyaWFsaXplZFNpZ25hdHVyZSk7XG4gICAgICBzaG91bGQuZXF1YWwodHguc2VyaWFsaXplZFNpZ25hdHVyZSEubGVuZ3RoID4gMCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggZ2FzIHNwb25zb3Igc2lnbmF0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aFNwb25zb3IoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgdHguYWRkR2FzU3BvbnNvclNpZ25hdHVyZSh0ZXN0RGF0YS50ZXN0R2FzU3BvbnNvclNpZ25hdHVyZS5wdWJsaWNLZXksIHRlc3REYXRhLnRlc3RHYXNTcG9uc29yU2lnbmF0dXJlLnNpZ25hdHVyZSk7XG5cbiAgICAgIGF3YWl0IHR4LmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHguc2VyaWFsaXplZEdhc1Nwb25zb3JTaWduYXR1cmUpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnNlcmlhbGl6ZWRHYXNTcG9uc29yU2lnbmF0dXJlIS5sZW5ndGggPiAwLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgdHJhbnNhY3Rpb24gd2l0aCBib3RoIHNlbmRlciBhbmQgZ2FzIHNwb25zb3Igc2lnbmF0dXJlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhTcG9uc29yKCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgdHguYWRkU2lnbmF0dXJlKHRlc3REYXRhLnRlc3RTaWduYXR1cmUucHVibGljS2V5LCB0ZXN0RGF0YS50ZXN0U2lnbmF0dXJlLnNpZ25hdHVyZSk7XG4gICAgICB0eC5hZGRHYXNTcG9uc29yU2lnbmF0dXJlKHRlc3REYXRhLnRlc3RHYXNTcG9uc29yU2lnbmF0dXJlLnB1YmxpY0tleSwgdGVzdERhdGEudGVzdEdhc1Nwb25zb3JTaWduYXR1cmUuc2lnbmF0dXJlKTtcblxuICAgICAgYXdhaXQgdHguYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5zZXJpYWxpemVkU2lnbmF0dXJlKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwodHguc2VyaWFsaXplZFNpZ25hdHVyZSk7XG4gICAgICB0eC5zaWduYXR1cmVbMV0uc2hvdWxkLmVxdWFsKHR4LnNlcmlhbGl6ZWRHYXNTcG9uc29yU2lnbmF0dXJlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWRkIHNpZ25hdHVyZSB0aHJvdWdoIGJ1aWxkZXIgYW5kIHNlcmlhbGl6ZSBjb3JyZWN0bHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCk7XG4gICAgICB0eEJ1aWxkZXIuYWRkU2lnbmF0dXJlKHRlc3REYXRhLnRlc3RTaWduYXR1cmUucHVibGljS2V5LCB0ZXN0RGF0YS50ZXN0U2lnbmF0dXJlLnNpZ25hdHVyZSk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4LnNlcmlhbGl6ZWRTaWduYXR1cmUpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR5cGVvZiB0eC5zZXJpYWxpemVkU2lnbmF0dXJlLCAnc3RyaW5nJyk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBhZGQgaW52YWxpZCBzZW5kZXIgc2lnbmF0dXJlIHZpYSBidWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6ICd0b29zaG9ydCcgfSwgdGVzdERhdGEudGVzdFNpZ25hdHVyZS5zaWduYXR1cmUpKS50aHJvd0Vycm9yKFxuICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiBzaWduYXR1cmUnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGFkZCBpbnZhbGlkIGdhcyBzcG9uc29yIHNpZ25hdHVyZSB2aWEgYnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhTcG9uc29yKCk7XG4gICAgICBzaG91bGQoKCkgPT5cbiAgICAgICAgdHhCdWlsZGVyLmFkZEdhc1Nwb25zb3JTaWduYXR1cmUodGVzdERhdGEudGVzdEdhc1Nwb25zb3JTaWduYXR1cmUucHVibGljS2V5LCBCdWZmZXIuZnJvbSgnaW52YWxpZCcpKVxuICAgICAgKS50aHJvd0Vycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHNpZ25hdHVyZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbmFibGUgUGF5bG9hZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIHNpZ25hYmxlIHBheWxvYWQgZm9yIG5vbi1zaW11bGF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHguaXNTaW11bGF0ZVR4LCBmYWxzZSk7XG4gICAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICBzaG91bGQuZXhpc3Qoc2lnbmFibGVQYXlsb2FkKTtcbiAgICAgIHNob3VsZC5lcXVhbChCdWZmZXIuaXNCdWZmZXIoc2lnbmFibGVQYXlsb2FkKSwgdHJ1ZSk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmFibGVQYXlsb2FkLmxlbmd0aCwgMzIpOyAvLyBCbGFrZTJiIGhhc2ggaXMgMzIgYnl0ZXNcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBnZXQgc2lnbmFibGUgcGF5bG9hZCBmb3Igc2ltdWxhdGUgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCYXNpY1RyYW5zZmVyQnVpbGRlcigpLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pc1NpbXVsYXRlVHgsIHRydWUpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4LnNpZ25hYmxlUGF5bG9hZCkudGhyb3dFcnJvcignQ2Fubm90IHNpZ24gYSBzaW11bGF0ZSB0eCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnSW5wdXQgYW5kIE91dHB1dCBDYWxjdWxhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNhbGN1bGF0ZSB0b3RhbCBpbnB1dCBhbW91bnQgY29ycmVjdGx5IGZvciBtdWx0aXBsZSByZWNpcGllbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAgeyBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sIGFtb3VudDogJzEwMDAnIH0sXG4gICAgICAgIHsgYWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzFdLCBhbW91bnQ6ICcyMDAwJyB9LFxuICAgICAgICB7IGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1syXSwgYW1vdW50OiAnMzAwMCcgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCdWlsZGVyV2l0aFJlY2lwaWVudHMocmVjaXBpZW50cykuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRUb3RhbCA9ICc2MDAwJztcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoZXhwZWN0ZWRUb3RhbCk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
438
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbURBQXVEO0FBQ3ZELDBEQUFxRjtBQUVyRix3REFjZ0M7QUFHaEMsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFBLHdCQUFVLEdBQUUsQ0FBQztJQUU3QixRQUFRLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO1FBQzFDLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLO1lBQzlELE1BQU0sU0FBUyxHQUFHLElBQUEsd0NBQTBCLEdBQUUsQ0FBQztZQUMvQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUF3QixDQUFDO1lBRTVELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLElBQUEsOENBQWdDLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDckMsTUFBTSxJQUFBLHVDQUF5QixFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEtBQUs7WUFDM0QsTUFBTSxTQUFTLEdBQUcsSUFBQSwwQ0FBNEIsR0FBRSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQXdCLENBQUM7WUFFNUQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSwwQkFBZSxDQUFDLElB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RixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7WUFDN0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTLCBNQVhfUkVDSVBJRU5UUyB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB7XG4gIGNyZWF0ZUJhc2ljVHJhbnNmZXJCdWlsZGVyLFxuICBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzLFxuICBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoU3BvbnNvcixcbiAgY3JlYXRlQnVpbGRlcldpdGhSZWNpcGllbnRzLFxuICBjcmVhdGVCdWlsZGVyV2l0aEdhc09iamVjdHNPbmx5LFxuICBjcmVhdGVCdWlsZGVyV2l0aEdhc09iamVjdHMsXG4gIGFzc2VydEJhc2ljVHJhbnNhY3Rpb25Qcm9wZXJ0aWVzLFxuICBhc3NlcnRHYXNEYXRhLFxuICBhc3NlcnRJbnB1dHNBbmRPdXRwdXRzLFxuICBhc3NlcnRWYWxpZFJhd1RyYW5zYWN0aW9uLFxuICBjcmVhdGVSZWNpcGllbnRzLFxuICBnZXRGYWN0b3J5LFxuICB0ZXN0RGF0YSxcbn0gZnJvbSAnLi4vaGVscGVycy90ZXN0SGVscGVycyc7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ0lvdGEgVHJhbnNmZXIgQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IGdldEZhY3RvcnkoKTtcblxuICBkZXNjcmliZSgnQmFzaWMgVHJhbnNhY3Rpb24gQnVpbGRpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGluIHNpbXVsYXRlIG1vZGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1RyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaXNTaW11bGF0ZVR4LCB0cnVlKTtcbiAgICAgIGFzc2VydEJhc2ljVHJhbnNhY3Rpb25Qcm9wZXJ0aWVzKHR4KTtcbiAgICAgIGF3YWl0IGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIHdpdGggZ2FzIGRhdGEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pc1NpbXVsYXRlVHgsIGZhbHNlKTtcbiAgICAgIGFzc2VydEJhc2ljVHJhbnNhY3Rpb25Qcm9wZXJ0aWVzKHR4KTtcbiAgICAgIGFzc2VydEdhc0RhdGEodHgpO1xuICAgICAgYXNzZXJ0SW5wdXRzQW5kT3V0cHV0cyh0eCwgdGVzdERhdGEucmVjaXBpZW50cyk7XG4gICAgICBhd2FpdCBhc3NlcnRWYWxpZFJhd1RyYW5zYWN0aW9uKHR4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB0cmFuc2ZlciB0cmFuc2FjdGlvbiB3aXRoIGdhcyBzcG9uc29yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aFNwb25zb3IoKTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnNlbmRlciwgdGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lmdhc1Nwb25zb3IsIHRlc3REYXRhLmdhc1Nwb25zb3IuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaXNTaW11bGF0ZVR4LCBmYWxzZSk7XG4gICAgICBhd2FpdCBhc3NlcnRWYWxpZFJhd1RyYW5zYWN0aW9uKHR4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgdHJhbnNhY3Rpb24gdXNpbmcgZ2FzIG9iamVjdHMgd2hlbiBubyBwYXltZW50IG9iamVjdHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyV2l0aEdhc09iamVjdHNPbmx5KCk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pc1NpbXVsYXRlVHgsIGZhbHNlKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5wYXltZW50T2JqZWN0cywgdW5kZWZpbmVkKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5nYXNQYXltZW50T2JqZWN0cyk7XG4gICAgICBhd2FpdCBhc3NlcnRWYWxpZFJhd1RyYW5zYWN0aW9uKHR4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VwcG9ydCBtZXRob2QgY2hhaW5pbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBmYWN0b3J5XG4gICAgICAgIC5nZXRUcmFuc2ZlckJ1aWxkZXIoKVxuICAgICAgICAuc2VuZGVyKHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKVxuICAgICAgICAucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKVxuICAgICAgICAucGF5bWVudE9iamVjdHModGVzdERhdGEucGF5bWVudE9iamVjdHMpXG4gICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpXG4gICAgICAgIC5nYXNTcG9uc29yKHRlc3REYXRhLmdhc1Nwb25zb3IuYWRkcmVzcylcbiAgICAgICAgLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgICBzaG91bGQuZXF1YWwodHguc2VuZGVyLCB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguZ2FzU3BvbnNvciwgdGVzdERhdGEuZ2FzU3BvbnNvci5hZGRyZXNzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1NlcmlhbGl6YXRpb24gYW5kIERlc2VyaWFsaXphdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNlcmlhbGl6ZSB0byBKU09OIGFuZCByZWJ1aWxkIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcblxuICAgICAgY29uc3QgcmVidWlsdFR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAocmVidWlsdFR4QnVpbGRlci50cmFuc2FjdGlvbiBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uKS5wYXJzZUZyb21KU09OKHR4SnNvbik7XG4gICAgICBjb25zdCByZWJ1aWx0VHggPSAoYXdhaXQgcmVidWlsdFR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwocmVidWlsdFR4LnNlbmRlciwgdHguc2VuZGVyKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwocmVidWlsdFR4LnJlY2lwaWVudHMsIHR4LnJlY2lwaWVudHMpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC5nYXNCdWRnZXQsIHR4Lmdhc0J1ZGdldCk7XG4gICAgICBzaG91bGQuZXF1YWwocmVidWlsdFR4Lmdhc1ByaWNlLCB0eC5nYXNQcmljZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNlcmlhbGl6ZSB0byBicm9hZGNhc3QgZm9ybWF0IGNvbnNpc3RlbnRseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4MSA9IChhd2FpdCBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHJhd1R4MSA9IGF3YWl0IHR4MS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCB0eDIgPSAoYXdhaXQgY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCByYXdUeDIgPSBhd2FpdCB0eDIudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKHJhd1R4MSwgcmF3VHgyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdG9KU09OIG91dHB1dCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uc2VuZGVyLCB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWNpcGllbnRzLCB0ZXN0RGF0YS5yZWNpcGllbnRzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnBheW1lbnRPYmplY3RzLCB0ZXN0RGF0YS5wYXltZW50T2JqZWN0cyk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLmdhc0J1ZGdldCwgdGVzdERhdGEuR0FTX0JVREdFVCk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLmdhc1ByaWNlLCB0ZXN0RGF0YS5HQVNfUFJJQ0UpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2FzUGF5bWVudE9iamVjdHMsIHRlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24udHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUm91bmQtdHJpcCBQYXJzaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IHBhcnNlIGFuZCByZWJ1aWxkIHRyYW5zYWN0aW9uIHVzaW5nIGdhcyBvYmplY3RzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlQnVpbGRlcldpdGhHYXNPYmplY3RzT25seSgpLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCByYXdUeCA9IGF3YWl0IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCB0eEhleCA9IEJ1ZmZlci5mcm9tKHJhd1R4LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0eEhleCk7XG4gICAgICBjb25zdCByZWJ1aWx0VHggPSAoYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC5zZW5kZXIsIHR4LnNlbmRlcik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlYnVpbHRUeC5yZWNpcGllbnRzLCB0eC5yZWNpcGllbnRzKTtcbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHguZ2FzQnVkZ2V0LCB0eC5nYXNCdWRnZXQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC5nYXNQcmljZSwgdHguZ2FzUHJpY2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC5wYXltZW50T2JqZWN0cywgdW5kZWZpbmVkKTtcbiAgICAgIHNob3VsZC5leGlzdChyZWJ1aWx0VHguZ2FzUGF5bWVudE9iamVjdHMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgcGFyc2UgdHJhbnNhY3Rpb24gd2l0aCBwYXltZW50IG9iamVjdHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHJhd1R4ID0gYXdhaXQgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGNvbnN0IHR4SGV4ID0gQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHR4SGV4KTtcbiAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IChhd2FpdCByZWJ1aWx0QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXhpc3QocmVidWlsdFR4LnBheW1lbnRPYmplY3RzKTtcbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgucGF5bWVudE9iamVjdHM/Lmxlbmd0aCwgdGVzdERhdGEucGF5bWVudE9iamVjdHMubGVuZ3RoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJvdW5kLXRyaXAgd2l0aCBnYXMgc3BvbnNvciBhbmQgcGF5bWVudCBvYmplY3RzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aFNwb25zb3IoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgcmF3VHggPSBhd2FpdCB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgdHhIZXggPSBCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhIZXgpO1xuICAgICAgY29uc3QgcmVidWlsdFR4ID0gKGF3YWl0IHJlYnVpbHRCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHguZ2FzU3BvbnNvciwgdGVzdERhdGEuZ2FzU3BvbnNvci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5leGlzdChyZWJ1aWx0VHgucGF5bWVudE9iamVjdHMpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmVjaXBpZW50IEhhbmRsaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHRlc3RDYXNlcyA9IFtcbiAgICAgIHsgY291bnQ6IDEsIGRlc2NyaXB0aW9uOiAnc2luZ2xlIHJlY2lwaWVudCcgfSxcbiAgICAgIHsgY291bnQ6IDEwLCBkZXNjcmlwdGlvbjogJ211bHRpcGxlIHJlY2lwaWVudHMnIH0sXG4gICAgICB7IGNvdW50OiBNQVhfUkVDSVBJRU5UUywgZGVzY3JpcHRpb246ICdtYXhpbXVtIHJlY2lwaWVudHMnIH0sXG4gICAgXTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7IGNvdW50LCBkZXNjcmlwdGlvbiB9KSA9PiB7XG4gICAgICBpdChgc2hvdWxkIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggJHtkZXNjcmlwdGlvbn1gLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBjcmVhdGVSZWNpcGllbnRzKGNvdW50LCAnMTAwMCcpO1xuICAgICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCdWlsZGVyV2l0aFJlY2lwaWVudHMocmVjaXBpZW50cykuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoY291bnQpO1xuICAgICAgICB0eC5vdXRwdXRzLmZvckVhY2goKG91dHB1dCkgPT4ge1xuICAgICAgICAgIG91dHB1dC52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAnKTtcbiAgICAgICAgICBvdXRwdXQuY29pbj8uc2hvdWxkLmVxdWFsKCd0aW90YScpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggbW9yZSB0aGFuIE1BWF9SRUNJUElFTlRTJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IGNyZWF0ZVJlY2lwaWVudHMoTUFYX1JFQ0lQSUVOVFMgKyAxKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyV2l0aFJlY2lwaWVudHMocmVjaXBpZW50cyk7XG4gICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBkdXBsaWNhdGUgcmVjaXBpZW50IGFkZHJlc3NlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGR1cGxpY2F0ZVJlY2lwaWVudHMgPSBbXG4gICAgICAgIHsgYWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLCBhbW91bnQ6ICcxMDAwJyB9LFxuICAgICAgICB7IGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSwgYW1vdW50OiAnMjAwMCcgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCdWlsZGVyV2l0aFJlY2lwaWVudHMoZHVwbGljYXRlUmVjaXBpZW50cykuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0dhcyBPYmplY3QgSGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCB3aXRoIHNpbmdsZSBnYXMgb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlQnVpbGRlcldpdGhHYXNPYmplY3RzKFt0ZXN0RGF0YS5nYXNQYXltZW50T2JqZWN0c1swXV0pLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBzaG91bGQuZXhpc3QodHguZ2FzUGF5bWVudE9iamVjdHMpO1xuICAgICAgdHguZ2FzUGF5bWVudE9iamVjdHM/Lmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBhd2FpdCBhc3NlcnRWYWxpZFJhd1RyYW5zYWN0aW9uKHR4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgd2l0aCBleGFjdGx5IE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTIGdhcyBvYmplY3RzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ3JlYXRlIGV4YWN0bHkgTUFYX0dBU19QQVlNRU5UX09CSkVDVFMgKDI1Nikgd2l0aCB2YWxpZCBkaWdlc3RzXG4gICAgICBjb25zdCBleGFjdGx5TWF4R2FzT2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTOyBpKyspIHtcbiAgICAgICAgZXhhY3RseU1heEdhc09iamVjdHMucHVzaCh7XG4gICAgICAgICAgLi4udGVzdERhdGEuZ2FzUGF5bWVudE9iamVjdHNbaSAlIHRlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzLmxlbmd0aF0sXG4gICAgICAgICAgb2JqZWN0SWQ6IGAweCR7aS50b1N0cmluZygxNikucGFkU3RhcnQoNjQsICcwJyl9YCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZUJ1aWxkZXJXaXRoR2FzT2JqZWN0cyhleGFjdGx5TWF4R2FzT2JqZWN0cykuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5zZW5kZXIsIHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKTtcbiAgICAgIGF3YWl0IGFzc2VydFZhbGlkUmF3VHJhbnNhY3Rpb24odHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB3aXRoIG1vcmUgdGhhbiBNQVhfR0FTX1BBWU1FTlRfT0JKRUNUUyByZXF1aXJpbmcgbWVyZ2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBDcmVhdGUgbW9yZSB0aGFuIE1BWF9HQVNfUEFZTUVOVF9PQkpFQ1RTICgyNTYpIHRvIHRlc3QgbWVyZ2UgbG9naWNcbiAgICAgIGNvbnN0IG1hbnlHYXNPYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX0dBU19QQVlNRU5UX09CSkVDVFMgKyAxMDsgaSsrKSB7XG4gICAgICAgIG1hbnlHYXNPYmplY3RzLnB1c2goe1xuICAgICAgICAgIC4uLnRlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzW2kgJSB0ZXN0RGF0YS5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGhdLFxuICAgICAgICAgIG9iamVjdElkOiBgMHgke2kudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDY0LCAnMCcpfWAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCdWlsZGVyV2l0aEdhc09iamVjdHMobWFueUdhc09iamVjdHMpLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaXNTaW11bGF0ZVR4LCBmYWxzZSk7XG4gICAgICBhd2FpdCBhc3NlcnRWYWxpZFJhd1RyYW5zYWN0aW9uKHR4KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1BheW1lbnQgT2JqZWN0IEhhbmRsaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgd2l0aCBzaW5nbGUgcGF5bWVudCBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0VHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcylcbiAgICAgICAgLnJlY2lwaWVudHModGVzdERhdGEucmVjaXBpZW50cylcbiAgICAgICAgLnBheW1lbnRPYmplY3RzKFt0ZXN0RGF0YS5wYXltZW50T2JqZWN0c1swXV0pXG4gICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgdHgucGF5bWVudE9iamVjdHM/Lmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBhd2FpdCBhc3NlcnRWYWxpZFJhd1RyYW5zYWN0aW9uKHR4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQga2VlcCBwYXltZW50IGFuZCBnYXMgb2JqZWN0cyBzZXBhcmF0ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXhpc3QodHgucGF5bWVudE9iamVjdHMpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4Lmdhc1BheW1lbnRPYmplY3RzKTtcbiAgICAgIHR4LnBheW1lbnRPYmplY3RzPy5sZW5ndGguc2hvdWxkLmVxdWFsKHRlc3REYXRhLnBheW1lbnRPYmplY3RzLmxlbmd0aCk7XG4gICAgICB0eC5nYXNQYXltZW50T2JqZWN0cz8ubGVuZ3RoLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5nYXNQYXltZW50T2JqZWN0cy5sZW5ndGgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcGF5bWVudCBvYmplY3RzIHdpdGggZGlmZmVyZW50IHZlcnNpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbWl4ZWRWZXJzaW9uT2JqZWN0czogVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgb2JqZWN0SWQ6ICcweDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnLFxuICAgICAgICAgIHZlcnNpb246ICcxJyxcbiAgICAgICAgICBkaWdlc3Q6ICdER1ZoWWprNllId2RQZFpCZ0JOOGN6YXZ5OEx2YnJzaGtieEY5NjNFVzdtQicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvYmplY3RJZDogJzB4MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMicsXG4gICAgICAgICAgdmVyc2lvbjogJzk5OTk5OScsXG4gICAgICAgICAgZGlnZXN0OiAnRG9Kd1h1ejlvVTVZNXY1dkJSaVRnaXNWVFF1WlFMbUhaV2VxSnp6RDVRVUUnLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgIC5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpXG4gICAgICAgIC5yZWNpcGllbnRzKHRlc3REYXRhLnJlY2lwaWVudHMpXG4gICAgICAgIC5wYXltZW50T2JqZWN0cyhtaXhlZFZlcnNpb25PYmplY3RzKVxuICAgICAgICAuZ2FzRGF0YSh0ZXN0RGF0YS5nYXNEYXRhKTtcblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgIHR4LnBheW1lbnRPYmplY3RzPy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgZW1wdHkgcGF5bWVudCBvYmplY3RzIGFycmF5IGFuZCB1c2UgZ2FzIG9iamVjdHMgZm9yIHBheW1lbnQgaW4gbm9uLXNwb25zb3IgbW9kZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgIC5nZXRUcmFuc2ZlckJ1aWxkZXIoKVxuICAgICAgICAuc2VuZGVyKHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKVxuICAgICAgICAucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKVxuICAgICAgICAucGF5bWVudE9iamVjdHMoW10pXG4gICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlzU2ltdWxhdGVUeCwgZmFsc2UpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnNlbmRlciwgdGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgYXdhaXQgYXNzZXJ0VmFsaWRSYXdUcmFuc2FjdGlvbih0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdHggYnVpbGRpbmcgaW4gY2FzZSBvZiBlbXB0eSBwYXltZW50IG9iamVjdHMgaW4gc3BvbnNvciBtb2RlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgIC5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpXG4gICAgICAgIC5nYXNTcG9uc29yKHRlc3REYXRhLmdhc1Nwb25zb3IuYWRkcmVzcylcbiAgICAgICAgLnJlY2lwaWVudHModGVzdERhdGEucmVjaXBpZW50cylcbiAgICAgICAgLnBheW1lbnRPYmplY3RzKFtdKVxuICAgICAgICAuZ2FzRGF0YSh0ZXN0RGF0YS5nYXNEYXRhKTtcblxuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1BheW1lbnQgb2JqZWN0cyBhcmUgcmVxdWlyZWQgd2hlbiB1c2luZyBhIGdhcyBzcG9uc29yLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWYWxpZGF0aW9uIEVycm9ycycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnQWRkcmVzcyBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIGZvciBpbnZhbGlkIHNlbmRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnNlbmRlcigncmFuZG9tU3RyaW5nJykpLnRocm93RXJyb3IoJ0ludmFsaWQgYWRkcmVzcyByYW5kb21TdHJpbmcnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgcmVjaXBpZW50IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCYXNpY1RyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5yZWNpcGllbnRzKFt7IGFkZHJlc3M6ICdpbnZhbGlkQWRkcmVzcycsIGFtb3VudDogJzEwMDAnIH1dKSkudGhyb3dFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBhZGRyZXNzIGludmFsaWRBZGRyZXNzJ1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnQW1vdW50IFZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIG5lZ2F0aXZlIGFtb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJhc2ljVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PlxuICAgICAgICAgIGJ1aWxkZXIucmVjaXBpZW50cyhbeyBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sIGFtb3VudDogJy0xMDAwJyB9XSlcbiAgICAgICAgKS50aHJvd0Vycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgZm9ybWF0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+XG4gICAgICAgICAgYnVpbGRlci5yZWNpcGllbnRzKFt7IGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSwgYW1vdW50OiAnaW52YWxpZCcgfV0pXG4gICAgICAgICkudGhyb3coKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGFjY2VwdCB6ZXJvIGFtb3VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFt7IGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSwgYW1vdW50OiAnMCcgfV07XG4gICAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZUJ1aWxkZXJXaXRoUmVjaXBpZW50cyhyZWNpcGllbnRzKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBhY2NlcHQgdmVyeSBsYXJnZSBhbW91bnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGxhcmdlQW1vdW50ID0gJzk5OTk5OTk5OTk5OTk5OTk5OSc7XG4gICAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbeyBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sIGFtb3VudDogbGFyZ2VBbW91bnQgfV07XG4gICAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZUJ1aWxkZXJXaXRoUmVjaXBpZW50cyhyZWNpcGllbnRzKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKGxhcmdlQW1vdW50KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1JlcXVpcmVkIEZpZWxkIFZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBtaXNzaW5nIHNlbmRlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgICAuZ2V0VHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgICAucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKVxuICAgICAgICAgIC5wYXltZW50T2JqZWN0cyh0ZXN0RGF0YS5wYXltZW50T2JqZWN0cylcbiAgICAgICAgICAuZ2FzRGF0YSh0ZXN0RGF0YS5nYXNEYXRhKTtcblxuICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gbWlzc2luZyByZWNpcGllbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAgIC5nZXRUcmFuc2ZlckJ1aWxkZXIoKVxuICAgICAgICAgIC5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpXG4gICAgICAgICAgLnBheW1lbnRPYmplY3RzKHRlc3REYXRhLnBheW1lbnRPYmplY3RzKVxuICAgICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpO1xuXG4gICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHJlY2lwaWVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgICAgLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcylcbiAgICAgICAgICAucmVjaXBpZW50cyhbXSlcbiAgICAgICAgICAucGF5bWVudE9iamVjdHModGVzdERhdGEucGF5bWVudE9iamVjdHMpXG4gICAgICAgICAgLmdhc0RhdGEodGVzdERhdGEuZ2FzRGF0YSk7XG5cbiAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgYWxsb3cgZW1wdHkgcGF5bWVudCBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnBheW1lbnRPYmplY3RzKFtdKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGhvdXQgcGF5bWVudCBvYmplY3RzIHdoZW4gdXNpbmcgZ2FzIHNwb25zb3InLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgICAgLmdldFRyYW5zZmVyQnVpbGRlcigpXG4gICAgICAgICAgLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcylcbiAgICAgICAgICAucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKVxuICAgICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpXG4gICAgICAgICAgLmdhc1Nwb25zb3IodGVzdERhdGEuZ2FzU3BvbnNvci5hZGRyZXNzKTtcblxuICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdHYXMgRGF0YSBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIGZvciBlbXB0eSBnYXMgcGF5bWVudCBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+XG4gICAgICAgICAgYnVpbGRlci5nYXNEYXRhKHtcbiAgICAgICAgICAgIGdhc0J1ZGdldDogdGVzdERhdGEuR0FTX0JVREdFVCxcbiAgICAgICAgICAgIGdhc1ByaWNlOiB0ZXN0RGF0YS5HQVNfUFJJQ0UsXG4gICAgICAgICAgICBnYXNQYXltZW50T2JqZWN0czogW10sXG4gICAgICAgICAgfSlcbiAgICAgICAgKS50aHJvd0Vycm9yKC9HYXMgaW5wdXQgb2JqZWN0cyBsaXN0IGlzIGVtcHR5Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdPYmplY3QgRHVwbGljYXRpb24gVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIHBheW1lbnQgYW5kIGdhcyBwYXltZW50IG9iamVjdHMgb3ZlcmxhcCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgICAuZ2V0VHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgICAuc2VuZGVyKHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKVxuICAgICAgICAgIC5yZWNpcGllbnRzKHRlc3REYXRhLnJlY2lwaWVudHMpXG4gICAgICAgICAgLnBheW1lbnRPYmplY3RzKHRlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzKVxuICAgICAgICAgIC5nYXNEYXRhKHRlc3REYXRhLmdhc0RhdGEpO1xuXG4gICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIFBhcnNpbmcgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2hvdWxkKCgpID0+IGZhY3RvcnkuZnJvbSgnaW52YWxpZFJhd1RyYW5zYWN0aW9uJykpLnRocm93RXJyb3IoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gU2lnbmluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggc2VuZGVyIHNpZ25hdHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgdHguYWRkU2lnbmF0dXJlKHRlc3REYXRhLnRlc3RTaWduYXR1cmUucHVibGljS2V5LCB0ZXN0RGF0YS50ZXN0U2lnbmF0dXJlLnNpZ25hdHVyZSk7XG5cbiAgICAgIGF3YWl0IHR4LmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHguc2VyaWFsaXplZFNpZ25hdHVyZSk7XG4gICAgICBzaG91bGQuZXF1YWwodHguc2VyaWFsaXplZFNpZ25hdHVyZSEubGVuZ3RoID4gMCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggZ2FzIHNwb25zb3Igc2lnbmF0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aFNwb25zb3IoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgdHguYWRkR2FzU3BvbnNvclNpZ25hdHVyZSh0ZXN0RGF0YS50ZXN0R2FzU3BvbnNvclNpZ25hdHVyZS5wdWJsaWNLZXksIHRlc3REYXRhLnRlc3RHYXNTcG9uc29yU2lnbmF0dXJlLnNpZ25hdHVyZSk7XG5cbiAgICAgIGF3YWl0IHR4LmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHguc2VyaWFsaXplZEdhc1Nwb25zb3JTaWduYXR1cmUpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnNlcmlhbGl6ZWRHYXNTcG9uc29yU2lnbmF0dXJlIS5sZW5ndGggPiAwLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgdHJhbnNhY3Rpb24gd2l0aCBib3RoIHNlbmRlciBhbmQgZ2FzIHNwb25zb3Igc2lnbmF0dXJlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhTcG9uc29yKCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgdHguYWRkU2lnbmF0dXJlKHRlc3REYXRhLnRlc3RTaWduYXR1cmUucHVibGljS2V5LCB0ZXN0RGF0YS50ZXN0U2lnbmF0dXJlLnNpZ25hdHVyZSk7XG4gICAgICB0eC5hZGRHYXNTcG9uc29yU2lnbmF0dXJlKHRlc3REYXRhLnRlc3RHYXNTcG9uc29yU2lnbmF0dXJlLnB1YmxpY0tleSwgdGVzdERhdGEudGVzdEdhc1Nwb25zb3JTaWduYXR1cmUuc2lnbmF0dXJlKTtcblxuICAgICAgYXdhaXQgdHguYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5zZXJpYWxpemVkU2lnbmF0dXJlKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5zZXJpYWxpemVkR2FzU3BvbnNvclNpZ25hdHVyZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwodHguc2VyaWFsaXplZFNpZ25hdHVyZSk7XG4gICAgICB0eC5zaWduYXR1cmVbMV0uc2hvdWxkLmVxdWFsKHR4LnNlcmlhbGl6ZWRHYXNTcG9uc29yU2lnbmF0dXJlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWRkIHNpZ25hdHVyZSB0aHJvdWdoIGJ1aWxkZXIgYW5kIHNlcmlhbGl6ZSBjb3JyZWN0bHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCk7XG4gICAgICB0eEJ1aWxkZXIuYWRkU2lnbmF0dXJlKHRlc3REYXRhLnRlc3RTaWduYXR1cmUucHVibGljS2V5LCB0ZXN0RGF0YS50ZXN0U2lnbmF0dXJlLnNpZ25hdHVyZSk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4LnNlcmlhbGl6ZWRTaWduYXR1cmUpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR5cGVvZiB0eC5zZXJpYWxpemVkU2lnbmF0dXJlLCAnc3RyaW5nJyk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBhZGQgaW52YWxpZCBzZW5kZXIgc2lnbmF0dXJlIHZpYSBidWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6ICd0b29zaG9ydCcgfSwgdGVzdERhdGEudGVzdFNpZ25hdHVyZS5zaWduYXR1cmUpKS50aHJvd0Vycm9yKFxuICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiBzaWduYXR1cmUnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGFkZCBpbnZhbGlkIGdhcyBzcG9uc29yIHNpZ25hdHVyZSB2aWEgYnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhTcG9uc29yKCk7XG4gICAgICBzaG91bGQoKCkgPT5cbiAgICAgICAgdHhCdWlsZGVyLmFkZEdhc1Nwb25zb3JTaWduYXR1cmUodGVzdERhdGEudGVzdEdhc1Nwb25zb3JTaWduYXR1cmUucHVibGljS2V5LCBCdWZmZXIuZnJvbSgnaW52YWxpZCcpKVxuICAgICAgKS50aHJvd0Vycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHNpZ25hdHVyZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU2lnbmFibGUgUGF5bG9hZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIHNpZ25hYmxlIHBheWxvYWQgZm9yIG5vbi1zaW11bGF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHguaXNTaW11bGF0ZVR4LCBmYWxzZSk7XG4gICAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICBzaG91bGQuZXhpc3Qoc2lnbmFibGVQYXlsb2FkKTtcbiAgICAgIHNob3VsZC5lcXVhbChCdWZmZXIuaXNCdWZmZXIoc2lnbmFibGVQYXlsb2FkKSwgdHJ1ZSk7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmFibGVQYXlsb2FkLmxlbmd0aCwgMzIpOyAvLyBCbGFrZTJiIGhhc2ggaXMgMzIgYnl0ZXNcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBnZXQgc2lnbmFibGUgcGF5bG9hZCBmb3Igc2ltdWxhdGUgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCYXNpY1RyYW5zZmVyQnVpbGRlcigpLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pc1NpbXVsYXRlVHgsIHRydWUpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4LnNpZ25hYmxlUGF5bG9hZCkudGhyb3dFcnJvcignQ2Fubm90IHNpZ24gYSBzaW11bGF0ZSB0eCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnSW5wdXQgYW5kIE91dHB1dCBDYWxjdWxhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNhbGN1bGF0ZSB0b3RhbCBpbnB1dCBhbW91bnQgY29ycmVjdGx5IGZvciBtdWx0aXBsZSByZWNpcGllbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAgeyBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sIGFtb3VudDogJzEwMDAnIH0sXG4gICAgICAgIHsgYWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzFdLCBhbW91bnQ6ICcyMDAwJyB9LFxuICAgICAgICB7IGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1syXSwgYW1vdW50OiAnMzAwMCcgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVCdWlsZGVyV2l0aFJlY2lwaWVudHMocmVjaXBpZW50cykuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRUb3RhbCA9ICc2MDAwJztcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoZXhwZWN0ZWRUb3RhbCk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|