Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@aws-cdk/aws-cloudformation

Package Overview
Dependencies
Maintainers
4
Versions
288
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/aws-cloudformation - npm Package Compare versions

Comparing version 0.16.0 to 0.17.0

4

lib/cloudformation.generated.js

@@ -5,3 +5,3 @@ "use strict";

// See: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html
// @cfn2ts:meta@ {"generated":"2018-11-12T19:44:14.447Z","fingerprint":"EdKUM1F1UNcYCfVZVOPGe3x83VEx8o8+yJ4fFVpWfwc="}
// @cfn2ts:meta@ {"generated":"2018-11-14T09:38:14.639Z","fingerprint":"EdKUM1F1UNcYCfVZVOPGe3x83VEx8o8+yJ4fFVpWfwc="}
Object.defineProperty(exports, "__esModule", { value: true });

@@ -242,2 +242,2 @@ // tslint:disable:max-line-length | This is generated code - line lengths are difficult to control

})(cloudformation = exports.cloudformation || (exports.cloudformation = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrRUFBK0U7QUFDL0UsK0RBQStEO0FBQy9ELDhGQUE4RjtBQUM5RixzSEFBc0g7O0FBRXRILGtHQUFrRztBQUVsRyxvQ0FBcUM7QUFFckMsSUFBaUIsY0FBYyxDQXNFOUI7QUF0RUQsV0FBaUIsY0FBYztJQVkzQjs7Ozs7O09BTUc7SUFDSCxTQUFTLDRCQUE0QixDQUFDLFVBQWU7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFBRSxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztTQUFFO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbkcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsbUNBQW1DLENBQUMsVUFBZTtRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUFFLE9BQU8sVUFBVSxDQUFDO1NBQUU7UUFDdkQsNEJBQTRCLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekQsT0FBTztZ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QUFpQjtZQUN4QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUN6QyxDQUFDO1FBQ1MsZ0JBQWdCLENBQUMsVUFBZTtZQUN0QyxPQUFPLDBDQUEwQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDOztJQS9CRDs7T0FFRztJQUNvQixzQ0FBZ0IsR0FBRyxvQ0FBb0MsQ0FBQztJQUp0RSxvQ0FBcUIsd0JBaUNqQyxDQUFBO0FBQ0wsQ0FBQyxFQTlGZ0IsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUE4RjlCO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxHQUFHLENBQUMsS0FBSztJQUFoRDs7UUFDSSw2Q0FBNkM7UUFDNUIsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0lBQ3JELENBQUM7Q0FBQTtBQUhELDhDQUdDO0FBRUQsV0FBaUIsY0FBYztJQUMzQjs7T0FFRztJQUNILE1BQWEsMkJBQTRCLFNBQVEsR0FBRyxDQUFDLFFBQVE7UUFPekQ7Ozs7OztXQU1HO1FBQ0gsWUFBWSxNQUFxQixFQUFFLElBQVk7WUFDM0MsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RELENBQUM7O0lBaEJEOztPQUVHO0lBQ29CLDRDQUFnQixHQUFHLDBDQUEwQyxDQUFDO0lBSjVFLDBDQUEyQiw4QkFrQnZDLENBQUE7QUFDTCxDQUFDLEVBdkJnQixjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQXVCOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxMi0yMDE4IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIFNwZWNpZmljYXRpb25cbi8vIFNlZTogZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2Nmbi1yZXNvdXJjZS1zcGVjaWZpY2F0aW9uLmh0bWxcbi8vIEBjZm4ydHM6bWV0YUAge1wiZ2VuZXJhdGVkXCI6XCIyMDE4LTExLTEyVDE5OjQ0OjE0LjQ0N1pcIixcImZpbmdlcnByaW50XCI6XCJFZEtVTTFGMVVOY1lDZlZaVk9QR2UzeDgzVkV4OG84K3lKNGZGVnBXZndjPVwifVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggfCBUaGlzIGlzIGdlbmVyYXRlZCBjb2RlIC0gbGluZSBsZW5ndGhzIGFyZSBkaWZmaWN1bHQgdG8gY29udHJvbFxuXG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5cbmV4cG9ydCBuYW1lc3BhY2UgY2xvdWRmb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWNmbi1jdXN0b21yZXNvdXJjZS5odG1sXG4gICAgICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBDdXN0b21SZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2UuU2VydmljZVRva2VuYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtY2ZuLWN1c3RvbXJlc291cmNlLmh0bWwjY2ZuLWN1c3RvbXJlc291cmNlLXNlcnZpY2V0b2tlblxuICAgICAgICAgKi9cbiAgICAgICAgc2VydmljZVRva2VuOiBzdHJpbmcgfCBjZGsuVG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGdpdmVuIHByb3BlcnRpZXMgbWF0Y2ggdGhvc2Ugb2YgYSBgYEN1c3RvbVJlc291cmNlUHJvcHNgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIFR5cGVTY3JpcHQgcHJvcGVydGllcyBvZiBhIGBgQ3VzdG9tUmVzb3VyY2VQcm9wc2BgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEN1c3RvbVJlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllczogYW55KTogY2RrLlZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBpZiAoIWNkay5jYW5JbnNwZWN0KHByb3BlcnRpZXMpKSB7IHJldHVybiBjZGsuVkFMSURBVElPTl9TVUNDRVNTOyB9XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IG5ldyBjZGsuVmFsaWRhdGlvblJlc3VsdHMoKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdzZXJ2aWNlVG9rZW4nLCBjZGsucmVxdWlyZWRWYWxpZGF0b3IpKHByb3BlcnRpZXMuc2VydmljZVRva2VuKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcignc2VydmljZVRva2VuJywgY2RrLnZhbGlkYXRlU3RyaW5nKShwcm9wZXJ0aWVzLnNlcnZpY2VUb2tlbikpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLndyYXAoJ3N1cHBsaWVkIHByb3BlcnRpZXMgbm90IGNvcnJlY3QgZm9yIFwiQ3VzdG9tUmVzb3VyY2VQcm9wc1wiJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZWBgIHJlc291cmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgVHlwZVNjcmlwdCBwcm9wZXJ0aWVzIG9mIGEgYGBDdXN0b21SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OkN1c3RvbVJlc291cmNlYGAgcmVzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBDdXN0b21SZXNvdXJjZVByb3BzVmFsaWRhdG9yKHByb3BlcnRpZXMpLmFzc2VydFN1Y2Nlc3MoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBTZXJ2aWNlVG9rZW46IGNkay5zdHJpbmdUb0Nsb3VkRm9ybWF0aW9uKHByb3BlcnRpZXMuc2VydmljZVRva2VuKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1jZm4tY3VzdG9tcmVzb3VyY2UuaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBDdXN0b21SZXNvdXJjZSBleHRlbmRzIGNkay5SZXNvdXJjZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSByZXNvdXJjZVR5cGVOYW1lID0gXCJBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZVwiO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2VgYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhcmVudCAgIHRoZSBgYGNkay5Db25zdHJ1Y3RgYCB0aGlzIGBgQ3VzdG9tUmVzb3VyY2VgYCBpcyBhIHBhcnQgb2ZcbiAgICAgICAgICogQHBhcmFtIG5hbWUgICAgIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYGBjZGsuQ29uc3RydWN0YGAgdHJlZVxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGBgQ3VzdG9tUmVzb3VyY2VgYFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IEN1c3RvbVJlc291cmNlUHJvcHMpIHtcbiAgICAgICAgICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgeyB0eXBlOiBDdXN0b21SZXNvdXJjZS5yZXNvdXJjZVR5cGVOYW1lLCBwcm9wZXJ0aWVzIH0pO1xuICAgICAgICAgICAgY2RrLnJlcXVpcmVQcm9wZXJ0eShwcm9wZXJ0aWVzLCAnc2VydmljZVRva2VuJywgdGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZ2V0IHByb3BlcnR5T3ZlcnJpZGVzKCk6IEN1c3RvbVJlc291cmNlUHJvcHMge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzO1xuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gIHtcbiAgICAgICAgICAgIHJldHVybiBjdXN0b21SZXNvdXJjZVByb3BzVG9DbG91ZEZvcm1hdGlvbihjZGsucmVzb2x2ZShwcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgY2xvdWRmb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgU3RhY2tSZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suVGVtcGxhdGVVUkxgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXN0YWNrLmh0bWwjY2ZuLWNsb3VkZm9ybWF0aW9uLXN0YWNrLXRlbXBsYXRldXJsXG4gICAgICAgICAqL1xuICAgICAgICB0ZW1wbGF0ZVVybDogc3RyaW5nIHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjay5Ob3RpZmljYXRpb25BUk5zYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zdGFjay5odG1sI2Nmbi1jbG91ZGZvcm1hdGlvbi1zdGFjay1ub3RpZmljYXRpb25hcm5zXG4gICAgICAgICAqL1xuICAgICAgICBub3RpZmljYXRpb25Bcm5zPzogQXJyYXk8c3RyaW5nIHwgY2RrLlRva2VuPiB8IGNkay5Ub2tlbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suUGFyYW1ldGVyc2BgXG4gICAgICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbCNjZm4tY2xvdWRmb3JtYXRpb24tc3RhY2stcGFyYW1ldGVyc1xuICAgICAgICAgKi9cbiAgICAgICAgcGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogKHN0cmluZyB8IGNkay5Ub2tlbikgfSB8IGNkay5Ub2tlbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suVGFnc2BgXG4gICAgICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbCNjZm4tY2xvdWRmb3JtYXRpb24tc3RhY2stdGFnc1xuICAgICAgICAgKi9cbiAgICAgICAgdGFncz86IEFycmF5PGNkay5UYWcgfCBjZGsuVG9rZW4+IHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjay5UaW1lb3V0SW5NaW51dGVzYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zdGFjay5odG1sI2Nmbi1jbG91ZGZvcm1hdGlvbi1zdGFjay10aW1lb3V0aW5taW51dGVzXG4gICAgICAgICAqL1xuICAgICAgICB0aW1lb3V0SW5NaW51dGVzPzogbnVtYmVyIHwgY2RrLlRva2VuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSB3aGV0aGVyIHRoZSBnaXZlbiBwcm9wZXJ0aWVzIG1hdGNoIHRob3NlIG9mIGEgYGBTdGFja1Jlc291cmNlUHJvcHNgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIFR5cGVTY3JpcHQgcHJvcGVydGllcyBvZiBhIGBgU3RhY2tSZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhY2tSZXNvdXJjZVByb3BzVmFsaWRhdG9yKHByb3BlcnRpZXM6IGFueSk6IGNkay5WYWxpZGF0aW9uUmVzdWx0IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gY2RrLlZBTElEQVRJT05fU1VDQ0VTUzsgfVxuICAgICAgICBjb25zdCBlcnJvcnMgPSBuZXcgY2RrLlZhbGlkYXRpb25SZXN1bHRzKCk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcignbm90aWZpY2F0aW9uQXJucycsIGNkay5saXN0VmFsaWRhdG9yKGNkay52YWxpZGF0ZVN0cmluZykpKHByb3BlcnRpZXMubm90aWZpY2F0aW9uQXJucykpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ3BhcmFtZXRlcnMnLCBjZGsuaGFzaFZhbGlkYXRvcihjZGsudmFsaWRhdGVTdHJpbmcpKShwcm9wZXJ0aWVzLnBhcmFtZXRlcnMpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCd0YWdzJywgY2RrLmxpc3RWYWxpZGF0b3IoY2RrLnZhbGlkYXRlVGFnKSkocHJvcGVydGllcy50YWdzKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGVtcGxhdGVVcmwnLCBjZGsucmVxdWlyZWRWYWxpZGF0b3IpKHByb3BlcnRpZXMudGVtcGxhdGVVcmwpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCd0ZW1wbGF0ZVVybCcsIGNkay52YWxpZGF0ZVN0cmluZykocHJvcGVydGllcy50ZW1wbGF0ZVVybCkpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ3RpbWVvdXRJbk1pbnV0ZXMnLCBjZGsudmFsaWRhdGVOdW1iZXIpKHByb3BlcnRpZXMudGltZW91dEluTWludXRlcykpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLndyYXAoJ3N1cHBsaWVkIHByb3BlcnRpZXMgbm90IGNvcnJlY3QgZm9yIFwiU3RhY2tSZXNvdXJjZVByb3BzXCInKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrYGAgcmVzb3VyY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFN0YWNrUmVzb3VyY2VQcm9wc2BgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFja2BgIHJlc291cmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBTdGFja1Jlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllcykuYXNzZXJ0U3VjY2VzcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiBjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLnRlbXBsYXRlVXJsKSxcbiAgICAgICAgICBOb3RpZmljYXRpb25BUk5zOiBjZGsubGlzdE1hcHBlcihjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy5ub3RpZmljYXRpb25Bcm5zKSxcbiAgICAgICAgICBQYXJhbWV0ZXJzOiBjZGsuaGFzaE1hcHBlcihjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy5wYXJhbWV0ZXJzKSxcbiAgICAgICAgICBUYWdzOiBjZGsubGlzdE1hcHBlcihjZGsudGFnVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy50YWdzKSxcbiAgICAgICAgICBUaW1lb3V0SW5NaW51dGVzOiBjZGsubnVtYmVyVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLnRpbWVvdXRJbk1pbnV0ZXMpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBTdGFja1Jlc291cmNlIGV4dGVuZHMgY2RrLlJlc291cmNlIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHJlc291cmNlVHlwZU5hbWUgPSBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrXCI7XG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdGFja0lkOiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBuZXcgYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFja2BgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcGFyZW50ICAgdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRoaXMgYGBTdGFja1Jlc291cmNlYGAgaXMgYSBwYXJ0IG9mXG4gICAgICAgICAqIEBwYXJhbSBuYW1lICAgICB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRyZWVcbiAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBgYFN0YWNrUmVzb3VyY2VgYFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IFN0YWNrUmVzb3VyY2VQcm9wcykge1xuICAgICAgICAgICAgc3VwZXIocGFyZW50LCBuYW1lLCB7IHR5cGU6IFN0YWNrUmVzb3VyY2UucmVzb3VyY2VUeXBlTmFtZSwgcHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNkay5yZXF1aXJlUHJvcGVydHkocHJvcGVydGllcywgJ3RlbXBsYXRlVXJsJywgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLnN0YWNrSWQgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwcm9wZXJ0eU92ZXJyaWRlcygpOiBTdGFja1Jlc291cmNlUHJvcHMge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzO1xuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja1Jlc291cmNlUHJvcHNUb0Nsb3VkRm9ybWF0aW9uKGNkay5yZXNvbHZlKHByb3BlcnRpZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBjbG91ZGZvcm1hdGlvbiB7XG4gICAgLyoqXG4gICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy13YWl0Y29uZGl0aW9uLmh0bWxcbiAgICAgKi9cbiAgICBleHBvcnQgaW50ZXJmYWNlIFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbi5IYW5kbGVgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi1oYW5kbGVcbiAgICAgICAgICovXG4gICAgICAgIGhhbmRsZTogc3RyaW5nIHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uLlRpbWVvdXRgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi10aW1lb3V0XG4gICAgICAgICAqL1xuICAgICAgICB0aW1lb3V0OiBzdHJpbmcgfCBjZGsuVG9rZW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb24uQ291bnRgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi1jb3VudFxuICAgICAgICAgKi9cbiAgICAgICAgY291bnQ/OiBudW1iZXIgfCBjZGsuVG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGdpdmVuIHByb3BlcnRpZXMgbWF0Y2ggdGhvc2Ugb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gV2FpdENvbmRpdGlvblJlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllczogYW55KTogY2RrLlZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBpZiAoIWNkay5jYW5JbnNwZWN0KHByb3BlcnRpZXMpKSB7IHJldHVybiBjZGsuVkFMSURBVElPTl9TVUNDRVNTOyB9XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IG5ldyBjZGsuVmFsaWRhdGlvblJlc3VsdHMoKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdjb3VudCcsIGNkay52YWxpZGF0ZU51bWJlcikocHJvcGVydGllcy5jb3VudCkpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ2hhbmRsZScsIGNkay5yZXF1aXJlZFZhbGlkYXRvcikocHJvcGVydGllcy5oYW5kbGUpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdoYW5kbGUnLCBjZGsudmFsaWRhdGVTdHJpbmcpKHByb3BlcnRpZXMuaGFuZGxlKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGltZW91dCcsIGNkay5yZXF1aXJlZFZhbGlkYXRvcikocHJvcGVydGllcy50aW1lb3V0KSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGltZW91dCcsIGNkay52YWxpZGF0ZVN0cmluZykocHJvcGVydGllcy50aW1lb3V0KSk7XG4gICAgICAgIHJldHVybiBlcnJvcnMud3JhcCgnc3VwcGxpZWQgcHJvcGVydGllcyBub3QgY29ycmVjdCBmb3IgXCJXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1wiJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uYGAgcmVzb3VyY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25gYCByZXNvdXJjZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3YWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1ZhbGlkYXRvcihwcm9wZXJ0aWVzKS5hc3NlcnRTdWNjZXNzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgSGFuZGxlOiBjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLmhhbmRsZSksXG4gICAgICAgICAgVGltZW91dDogY2RrLnN0cmluZ1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllcy50aW1lb3V0KSxcbiAgICAgICAgICBDb3VudDogY2RrLm51bWJlclRvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllcy5jb3VudCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy13YWl0Y29uZGl0aW9uLmh0bWxcbiAgICAgKi9cbiAgICBleHBvcnQgY2xhc3MgV2FpdENvbmRpdGlvblJlc291cmNlIGV4dGVuZHMgY2RrLlJlc291cmNlIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHJlc291cmNlVHlwZU5hbWUgPSBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25cIjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGNsb3VkZm9ybWF0aW9uX2F0dHJpYnV0ZSBEYXRhXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbkRhdGE6IFdhaXRDb25kaXRpb25EYXRhO1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbk5hbWU6IHN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlcyBhIG5ldyBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25gYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhcmVudCAgIHRoZSBgYGNkay5Db25zdHJ1Y3RgYCB0aGlzIGBgV2FpdENvbmRpdGlvblJlc291cmNlYGAgaXMgYSBwYXJ0IG9mXG4gICAgICAgICAqIEBwYXJhbSBuYW1lICAgICB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRyZWVcbiAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBgYFdhaXRDb25kaXRpb25SZXNvdXJjZWBgXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcGVydGllczogV2FpdENvbmRpdGlvblJlc291cmNlUHJvcHMpIHtcbiAgICAgICAgICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgeyB0eXBlOiBXYWl0Q29uZGl0aW9uUmVzb3VyY2UucmVzb3VyY2VUeXBlTmFtZSwgcHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNkay5yZXF1aXJlUHJvcGVydHkocHJvcGVydGllcywgJ2hhbmRsZScsIHRoaXMpO1xuICAgICAgICAgICAgY2RrLnJlcXVpcmVQcm9wZXJ0eShwcm9wZXJ0aWVzLCAndGltZW91dCcsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy53YWl0Q29uZGl0aW9uRGF0YSA9IG5ldyBXYWl0Q29uZGl0aW9uRGF0YSh0aGlzLmdldEF0dCgnRGF0YScpKTtcbiAgICAgICAgICAgIHRoaXMud2FpdENvbmRpdGlvbk5hbWUgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwcm9wZXJ0eU92ZXJyaWRlcygpOiBXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wcyB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51bnR5cGVkUHJvcGVydHlPdmVycmlkZXM7XG4gICAgICAgIH1cbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlclByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSAge1xuICAgICAgICAgICAgcmV0dXJuIHdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzVG9DbG91ZEZvcm1hdGlvbihjZGsucmVzb2x2ZShwcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWl0Q29uZGl0aW9uRGF0YSBleHRlbmRzIGNkay5Ub2tlbiB7XG4gICAgLy8gQHRzLWlnbm9yZTogcHJpdmF0ZSBidXQgdW51c2VkIG9uIHB1cnBvc2UuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGlzSXNBV2FpdENvbmRpdGlvbkRhdGEgPSB0cnVlO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIGNsb3VkZm9ybWF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb25oYW5kbGUuaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBXYWl0Q29uZGl0aW9uSGFuZGxlUmVzb3VyY2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZSBjbGFzcy5cbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlTmFtZSA9IFwiQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbkhhbmRsZVwiO1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbkhhbmRsZVVybDogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbkhhbmRsZWBgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcGFyZW50ICAgdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRoaXMgYGBXYWl0Q29uZGl0aW9uSGFuZGxlUmVzb3VyY2VgYCBpcyBhIHBhcnQgb2ZcbiAgICAgICAgICogQHBhcmFtIG5hbWUgICAgIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYGBjZGsuQ29uc3RydWN0YGAgdHJlZVxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGBgV2FpdENvbmRpdGlvbkhhbmRsZVJlc291cmNlYGBcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgICAgICBzdXBlcihwYXJlbnQsIG5hbWUsIHsgdHlwZTogV2FpdENvbmRpdGlvbkhhbmRsZVJlc291cmNlLnJlc291cmNlVHlwZU5hbWUgfSk7XG4gICAgICAgICAgICB0aGlzLndhaXRDb25kaXRpb25IYW5kbGVVcmwgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xvdWRmb3JtYXRpb24uZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrRUFBK0U7QUFDL0UsK0RBQStEO0FBQy9ELDhGQUE4RjtBQUM5RixzSEFBc0g7O0FBRXRILGtHQUFrRztBQUVsRyxvQ0FBcUM7QUFFckMsSUFBaUIsY0FBYyxDQXNFOUI7QUF0RUQsV0FBaUIsY0FBYztJQVkzQjs7Ozs7O09BTUc7SUFDSCxTQUFTLDRCQUE0QixDQUFDLFVBQWU7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFBRSxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztTQUFFO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbkcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsbUNBQW1DLENBQUMsVUFBZTtRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUFFLE9BQU8sVUFBVSxDQUFDO1NBQUU7UUFDdkQsNEJBQTRCLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekQsT0FBTztZ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QUFpQjtZQUN4QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUN6QyxDQUFDO1FBQ1MsZ0JBQWdCLENBQUMsVUFBZTtZQUN0QyxPQUFPLDBDQUEwQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDOztJQS9CRDs7T0FFRztJQUNvQixzQ0FBZ0IsR0FBRyxvQ0FBb0MsQ0FBQztJQUp0RSxvQ0FBcUIsd0JBaUNqQyxDQUFBO0FBQ0wsQ0FBQyxFQTlGZ0IsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUE4RjlCO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxHQUFHLENBQUMsS0FBSztJQUFoRDs7UUFDSSw2Q0FBNkM7UUFDNUIsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0lBQ3JELENBQUM7Q0FBQTtBQUhELDhDQUdDO0FBRUQsV0FBaUIsY0FBYztJQUMzQjs7T0FFRztJQUNILE1BQWEsMkJBQTRCLFNBQVEsR0FBRyxDQUFDLFFBQVE7UUFPekQ7Ozs7OztXQU1HO1FBQ0gsWUFBWSxNQUFxQixFQUFFLElBQVk7WUFDM0MsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RELENBQUM7O0lBaEJEOztPQUVHO0lBQ29CLDRDQUFnQixHQUFHLDBDQUEwQyxDQUFDO0lBSjVFLDBDQUEyQiw4QkFrQnZDLENBQUE7QUFDTCxDQUFDLEVBdkJnQixjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQXVCOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxMi0yMDE4IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIFNwZWNpZmljYXRpb25cbi8vIFNlZTogZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2Nmbi1yZXNvdXJjZS1zcGVjaWZpY2F0aW9uLmh0bWxcbi8vIEBjZm4ydHM6bWV0YUAge1wiZ2VuZXJhdGVkXCI6XCIyMDE4LTExLTE0VDA5OjM4OjE0LjYzOVpcIixcImZpbmdlcnByaW50XCI6XCJFZEtVTTFGMVVOY1lDZlZaVk9QR2UzeDgzVkV4OG84K3lKNGZGVnBXZndjPVwifVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggfCBUaGlzIGlzIGdlbmVyYXRlZCBjb2RlIC0gbGluZSBsZW5ndGhzIGFyZSBkaWZmaWN1bHQgdG8gY29udHJvbFxuXG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5cbmV4cG9ydCBuYW1lc3BhY2UgY2xvdWRmb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWNmbi1jdXN0b21yZXNvdXJjZS5odG1sXG4gICAgICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBDdXN0b21SZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2UuU2VydmljZVRva2VuYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtY2ZuLWN1c3RvbXJlc291cmNlLmh0bWwjY2ZuLWN1c3RvbXJlc291cmNlLXNlcnZpY2V0b2tlblxuICAgICAgICAgKi9cbiAgICAgICAgc2VydmljZVRva2VuOiBzdHJpbmcgfCBjZGsuVG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGdpdmVuIHByb3BlcnRpZXMgbWF0Y2ggdGhvc2Ugb2YgYSBgYEN1c3RvbVJlc291cmNlUHJvcHNgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIFR5cGVTY3JpcHQgcHJvcGVydGllcyBvZiBhIGBgQ3VzdG9tUmVzb3VyY2VQcm9wc2BgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEN1c3RvbVJlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllczogYW55KTogY2RrLlZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBpZiAoIWNkay5jYW5JbnNwZWN0KHByb3BlcnRpZXMpKSB7IHJldHVybiBjZGsuVkFMSURBVElPTl9TVUNDRVNTOyB9XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IG5ldyBjZGsuVmFsaWRhdGlvblJlc3VsdHMoKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdzZXJ2aWNlVG9rZW4nLCBjZGsucmVxdWlyZWRWYWxpZGF0b3IpKHByb3BlcnRpZXMuc2VydmljZVRva2VuKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcignc2VydmljZVRva2VuJywgY2RrLnZhbGlkYXRlU3RyaW5nKShwcm9wZXJ0aWVzLnNlcnZpY2VUb2tlbikpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLndyYXAoJ3N1cHBsaWVkIHByb3BlcnRpZXMgbm90IGNvcnJlY3QgZm9yIFwiQ3VzdG9tUmVzb3VyY2VQcm9wc1wiJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZWBgIHJlc291cmNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgVHlwZVNjcmlwdCBwcm9wZXJ0aWVzIG9mIGEgYGBDdXN0b21SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OkN1c3RvbVJlc291cmNlYGAgcmVzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBDdXN0b21SZXNvdXJjZVByb3BzVmFsaWRhdG9yKHByb3BlcnRpZXMpLmFzc2VydFN1Y2Nlc3MoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBTZXJ2aWNlVG9rZW46IGNkay5zdHJpbmdUb0Nsb3VkRm9ybWF0aW9uKHByb3BlcnRpZXMuc2VydmljZVRva2VuKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1jZm4tY3VzdG9tcmVzb3VyY2UuaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBDdXN0b21SZXNvdXJjZSBleHRlbmRzIGNkay5SZXNvdXJjZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSByZXNvdXJjZVR5cGVOYW1lID0gXCJBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZVwiO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2VgYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhcmVudCAgIHRoZSBgYGNkay5Db25zdHJ1Y3RgYCB0aGlzIGBgQ3VzdG9tUmVzb3VyY2VgYCBpcyBhIHBhcnQgb2ZcbiAgICAgICAgICogQHBhcmFtIG5hbWUgICAgIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYGBjZGsuQ29uc3RydWN0YGAgdHJlZVxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGBgQ3VzdG9tUmVzb3VyY2VgYFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IEN1c3RvbVJlc291cmNlUHJvcHMpIHtcbiAgICAgICAgICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgeyB0eXBlOiBDdXN0b21SZXNvdXJjZS5yZXNvdXJjZVR5cGVOYW1lLCBwcm9wZXJ0aWVzIH0pO1xuICAgICAgICAgICAgY2RrLnJlcXVpcmVQcm9wZXJ0eShwcm9wZXJ0aWVzLCAnc2VydmljZVRva2VuJywgdGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZ2V0IHByb3BlcnR5T3ZlcnJpZGVzKCk6IEN1c3RvbVJlc291cmNlUHJvcHMge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzO1xuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gIHtcbiAgICAgICAgICAgIHJldHVybiBjdXN0b21SZXNvdXJjZVByb3BzVG9DbG91ZEZvcm1hdGlvbihjZGsucmVzb2x2ZShwcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgY2xvdWRmb3JtYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgU3RhY2tSZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suVGVtcGxhdGVVUkxgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXN0YWNrLmh0bWwjY2ZuLWNsb3VkZm9ybWF0aW9uLXN0YWNrLXRlbXBsYXRldXJsXG4gICAgICAgICAqL1xuICAgICAgICB0ZW1wbGF0ZVVybDogc3RyaW5nIHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjay5Ob3RpZmljYXRpb25BUk5zYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zdGFjay5odG1sI2Nmbi1jbG91ZGZvcm1hdGlvbi1zdGFjay1ub3RpZmljYXRpb25hcm5zXG4gICAgICAgICAqL1xuICAgICAgICBub3RpZmljYXRpb25Bcm5zPzogQXJyYXk8c3RyaW5nIHwgY2RrLlRva2VuPiB8IGNkay5Ub2tlbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suUGFyYW1ldGVyc2BgXG4gICAgICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbCNjZm4tY2xvdWRmb3JtYXRpb24tc3RhY2stcGFyYW1ldGVyc1xuICAgICAgICAgKi9cbiAgICAgICAgcGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogKHN0cmluZyB8IGNkay5Ub2tlbikgfSB8IGNkay5Ub2tlbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2suVGFnc2BgXG4gICAgICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbCNjZm4tY2xvdWRmb3JtYXRpb24tc3RhY2stdGFnc1xuICAgICAgICAgKi9cbiAgICAgICAgdGFncz86IEFycmF5PGNkay5UYWcgfCBjZGsuVG9rZW4+IHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjay5UaW1lb3V0SW5NaW51dGVzYGBcbiAgICAgICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zdGFjay5odG1sI2Nmbi1jbG91ZGZvcm1hdGlvbi1zdGFjay10aW1lb3V0aW5taW51dGVzXG4gICAgICAgICAqL1xuICAgICAgICB0aW1lb3V0SW5NaW51dGVzPzogbnVtYmVyIHwgY2RrLlRva2VuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSB3aGV0aGVyIHRoZSBnaXZlbiBwcm9wZXJ0aWVzIG1hdGNoIHRob3NlIG9mIGEgYGBTdGFja1Jlc291cmNlUHJvcHNgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIFR5cGVTY3JpcHQgcHJvcGVydGllcyBvZiBhIGBgU3RhY2tSZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhY2tSZXNvdXJjZVByb3BzVmFsaWRhdG9yKHByb3BlcnRpZXM6IGFueSk6IGNkay5WYWxpZGF0aW9uUmVzdWx0IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gY2RrLlZBTElEQVRJT05fU1VDQ0VTUzsgfVxuICAgICAgICBjb25zdCBlcnJvcnMgPSBuZXcgY2RrLlZhbGlkYXRpb25SZXN1bHRzKCk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcignbm90aWZpY2F0aW9uQXJucycsIGNkay5saXN0VmFsaWRhdG9yKGNkay52YWxpZGF0ZVN0cmluZykpKHByb3BlcnRpZXMubm90aWZpY2F0aW9uQXJucykpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ3BhcmFtZXRlcnMnLCBjZGsuaGFzaFZhbGlkYXRvcihjZGsudmFsaWRhdGVTdHJpbmcpKShwcm9wZXJ0aWVzLnBhcmFtZXRlcnMpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCd0YWdzJywgY2RrLmxpc3RWYWxpZGF0b3IoY2RrLnZhbGlkYXRlVGFnKSkocHJvcGVydGllcy50YWdzKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGVtcGxhdGVVcmwnLCBjZGsucmVxdWlyZWRWYWxpZGF0b3IpKHByb3BlcnRpZXMudGVtcGxhdGVVcmwpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCd0ZW1wbGF0ZVVybCcsIGNkay52YWxpZGF0ZVN0cmluZykocHJvcGVydGllcy50ZW1wbGF0ZVVybCkpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ3RpbWVvdXRJbk1pbnV0ZXMnLCBjZGsudmFsaWRhdGVOdW1iZXIpKHByb3BlcnRpZXMudGltZW91dEluTWludXRlcykpO1xuICAgICAgICByZXR1cm4gZXJyb3JzLndyYXAoJ3N1cHBsaWVkIHByb3BlcnRpZXMgbm90IGNvcnJlY3QgZm9yIFwiU3RhY2tSZXNvdXJjZVByb3BzXCInKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrYGAgcmVzb3VyY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFN0YWNrUmVzb3VyY2VQcm9wc2BgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFja2BgIHJlc291cmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBTdGFja1Jlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllcykuYXNzZXJ0U3VjY2VzcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiBjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLnRlbXBsYXRlVXJsKSxcbiAgICAgICAgICBOb3RpZmljYXRpb25BUk5zOiBjZGsubGlzdE1hcHBlcihjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy5ub3RpZmljYXRpb25Bcm5zKSxcbiAgICAgICAgICBQYXJhbWV0ZXJzOiBjZGsuaGFzaE1hcHBlcihjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy5wYXJhbWV0ZXJzKSxcbiAgICAgICAgICBUYWdzOiBjZGsubGlzdE1hcHBlcihjZGsudGFnVG9DbG91ZEZvcm1hdGlvbikocHJvcGVydGllcy50YWdzKSxcbiAgICAgICAgICBUaW1lb3V0SW5NaW51dGVzOiBjZGsubnVtYmVyVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLnRpbWVvdXRJbk1pbnV0ZXMpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBsaW5rIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtc3RhY2suaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBTdGFja1Jlc291cmNlIGV4dGVuZHMgY2RrLlJlc291cmNlIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHJlc291cmNlVHlwZU5hbWUgPSBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrXCI7XG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdGFja0lkOiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBuZXcgYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFja2BgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcGFyZW50ICAgdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRoaXMgYGBTdGFja1Jlc291cmNlYGAgaXMgYSBwYXJ0IG9mXG4gICAgICAgICAqIEBwYXJhbSBuYW1lICAgICB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRyZWVcbiAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBgYFN0YWNrUmVzb3VyY2VgYFxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IFN0YWNrUmVzb3VyY2VQcm9wcykge1xuICAgICAgICAgICAgc3VwZXIocGFyZW50LCBuYW1lLCB7IHR5cGU6IFN0YWNrUmVzb3VyY2UucmVzb3VyY2VUeXBlTmFtZSwgcHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNkay5yZXF1aXJlUHJvcGVydHkocHJvcGVydGllcywgJ3RlbXBsYXRlVXJsJywgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLnN0YWNrSWQgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwcm9wZXJ0eU92ZXJyaWRlcygpOiBTdGFja1Jlc291cmNlUHJvcHMge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW50eXBlZFByb3BlcnR5T3ZlcnJpZGVzO1xuICAgICAgICB9XG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja1Jlc291cmNlUHJvcHNUb0Nsb3VkRm9ybWF0aW9uKGNkay5yZXNvbHZlKHByb3BlcnRpZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBjbG91ZGZvcm1hdGlvbiB7XG4gICAgLyoqXG4gICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy13YWl0Y29uZGl0aW9uLmh0bWxcbiAgICAgKi9cbiAgICBleHBvcnQgaW50ZXJmYWNlIFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbi5IYW5kbGVgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi1oYW5kbGVcbiAgICAgICAgICovXG4gICAgICAgIGhhbmRsZTogc3RyaW5nIHwgY2RrLlRva2VuO1xuICAgICAgICAvKipcbiAgICAgICAgICogYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uLlRpbWVvdXRgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi10aW1lb3V0XG4gICAgICAgICAqL1xuICAgICAgICB0aW1lb3V0OiBzdHJpbmcgfCBjZGsuVG9rZW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb24uQ291bnRgYFxuICAgICAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb24uaHRtbCNjZm4td2FpdGNvbmRpdGlvbi1jb3VudFxuICAgICAgICAgKi9cbiAgICAgICAgY291bnQ/OiBudW1iZXIgfCBjZGsuVG9rZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGdpdmVuIHByb3BlcnRpZXMgbWF0Y2ggdGhvc2Ugb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gV2FpdENvbmRpdGlvblJlc291cmNlUHJvcHNWYWxpZGF0b3IocHJvcGVydGllczogYW55KTogY2RrLlZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBpZiAoIWNkay5jYW5JbnNwZWN0KHByb3BlcnRpZXMpKSB7IHJldHVybiBjZGsuVkFMSURBVElPTl9TVUNDRVNTOyB9XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IG5ldyBjZGsuVmFsaWRhdGlvblJlc3VsdHMoKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdjb3VudCcsIGNkay52YWxpZGF0ZU51bWJlcikocHJvcGVydGllcy5jb3VudCkpO1xuICAgICAgICBlcnJvcnMuY29sbGVjdChjZGsucHJvcGVydHlWYWxpZGF0b3IoJ2hhbmRsZScsIGNkay5yZXF1aXJlZFZhbGlkYXRvcikocHJvcGVydGllcy5oYW5kbGUpKTtcbiAgICAgICAgZXJyb3JzLmNvbGxlY3QoY2RrLnByb3BlcnR5VmFsaWRhdG9yKCdoYW5kbGUnLCBjZGsudmFsaWRhdGVTdHJpbmcpKHByb3BlcnRpZXMuaGFuZGxlKSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGltZW91dCcsIGNkay5yZXF1aXJlZFZhbGlkYXRvcikocHJvcGVydGllcy50aW1lb3V0KSk7XG4gICAgICAgIGVycm9ycy5jb2xsZWN0KGNkay5wcm9wZXJ0eVZhbGlkYXRvcigndGltZW91dCcsIGNkay52YWxpZGF0ZVN0cmluZykocHJvcGVydGllcy50aW1lb3V0KSk7XG4gICAgICAgIHJldHVybiBlcnJvcnMud3JhcCgnc3VwcGxpZWQgcHJvcGVydGllcyBub3QgY29ycmVjdCBmb3IgXCJXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1wiJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb2YgYW4gYGBBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uYGAgcmVzb3VyY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzIHRoZSBUeXBlU2NyaXB0IHByb3BlcnRpZXMgb2YgYSBgYFdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvZiBhbiBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25gYCByZXNvdXJjZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3YWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllczogYW55KTogYW55IHtcbiAgICAgICAgaWYgKCFjZGsuY2FuSW5zcGVjdChwcm9wZXJ0aWVzKSkgeyByZXR1cm4gcHJvcGVydGllczsgfVxuICAgICAgICBXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wc1ZhbGlkYXRvcihwcm9wZXJ0aWVzKS5hc3NlcnRTdWNjZXNzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgSGFuZGxlOiBjZGsuc3RyaW5nVG9DbG91ZEZvcm1hdGlvbihwcm9wZXJ0aWVzLmhhbmRsZSksXG4gICAgICAgICAgVGltZW91dDogY2RrLnN0cmluZ1RvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllcy50aW1lb3V0KSxcbiAgICAgICAgICBDb3VudDogY2RrLm51bWJlclRvQ2xvdWRGb3JtYXRpb24ocHJvcGVydGllcy5jb3VudCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGxpbmsgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy13YWl0Y29uZGl0aW9uLmh0bWxcbiAgICAgKi9cbiAgICBleHBvcnQgY2xhc3MgV2FpdENvbmRpdGlvblJlc291cmNlIGV4dGVuZHMgY2RrLlJlc291cmNlIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIG5hbWUgZm9yIHRoaXMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHJlc291cmNlVHlwZU5hbWUgPSBcIkFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25cIjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGNsb3VkZm9ybWF0aW9uX2F0dHJpYnV0ZSBEYXRhXG4gICAgICAgICAqL1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbkRhdGE6IFdhaXRDb25kaXRpb25EYXRhO1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbk5hbWU6IHN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlcyBhIG5ldyBgYEFXUzo6Q2xvdWRGb3JtYXRpb246OldhaXRDb25kaXRpb25gYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHBhcmVudCAgIHRoZSBgYGNkay5Db25zdHJ1Y3RgYCB0aGlzIGBgV2FpdENvbmRpdGlvblJlc291cmNlYGAgaXMgYSBwYXJ0IG9mXG4gICAgICAgICAqIEBwYXJhbSBuYW1lICAgICB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRyZWVcbiAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXMgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBgYFdhaXRDb25kaXRpb25SZXNvdXJjZWBgXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcGVydGllczogV2FpdENvbmRpdGlvblJlc291cmNlUHJvcHMpIHtcbiAgICAgICAgICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgeyB0eXBlOiBXYWl0Q29uZGl0aW9uUmVzb3VyY2UucmVzb3VyY2VUeXBlTmFtZSwgcHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNkay5yZXF1aXJlUHJvcGVydHkocHJvcGVydGllcywgJ2hhbmRsZScsIHRoaXMpO1xuICAgICAgICAgICAgY2RrLnJlcXVpcmVQcm9wZXJ0eShwcm9wZXJ0aWVzLCAndGltZW91dCcsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy53YWl0Q29uZGl0aW9uRGF0YSA9IG5ldyBXYWl0Q29uZGl0aW9uRGF0YSh0aGlzLmdldEF0dCgnRGF0YScpKTtcbiAgICAgICAgICAgIHRoaXMud2FpdENvbmRpdGlvbk5hbWUgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwcm9wZXJ0eU92ZXJyaWRlcygpOiBXYWl0Q29uZGl0aW9uUmVzb3VyY2VQcm9wcyB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51bnR5cGVkUHJvcGVydHlPdmVycmlkZXM7XG4gICAgICAgIH1cbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlclByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSAge1xuICAgICAgICAgICAgcmV0dXJuIHdhaXRDb25kaXRpb25SZXNvdXJjZVByb3BzVG9DbG91ZEZvcm1hdGlvbihjZGsucmVzb2x2ZShwcm9wZXJ0aWVzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWl0Q29uZGl0aW9uRGF0YSBleHRlbmRzIGNkay5Ub2tlbiB7XG4gICAgLy8gQHRzLWlnbm9yZTogcHJpdmF0ZSBidXQgdW51c2VkIG9uIHB1cnBvc2UuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGlzSXNBV2FpdENvbmRpdGlvbkRhdGEgPSB0cnVlO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIGNsb3VkZm9ybWF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBAbGluayBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXdhaXRjb25kaXRpb25oYW5kbGUuaHRtbFxuICAgICAqL1xuICAgIGV4cG9ydCBjbGFzcyBXYWl0Q29uZGl0aW9uSGFuZGxlUmVzb3VyY2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZSBjbGFzcy5cbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcmVzb3VyY2VUeXBlTmFtZSA9IFwiQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbkhhbmRsZVwiO1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgd2FpdENvbmRpdGlvbkhhbmRsZVVybDogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgbmV3IGBgQVdTOjpDbG91ZEZvcm1hdGlvbjo6V2FpdENvbmRpdGlvbkhhbmRsZWBgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gcGFyZW50ICAgdGhlIGBgY2RrLkNvbnN0cnVjdGBgIHRoaXMgYGBXYWl0Q29uZGl0aW9uSGFuZGxlUmVzb3VyY2VgYCBpcyBhIHBhcnQgb2ZcbiAgICAgICAgICogQHBhcmFtIG5hbWUgICAgIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYGBjZGsuQ29uc3RydWN0YGAgdHJlZVxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyBvZiB0aGlzIGBgV2FpdENvbmRpdGlvbkhhbmRsZVJlc291cmNlYGBcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgICAgICBzdXBlcihwYXJlbnQsIG5hbWUsIHsgdHlwZTogV2FpdENvbmRpdGlvbkhhbmRsZVJlc291cmNlLnJlc291cmNlVHlwZU5hbWUgfSk7XG4gICAgICAgICAgICB0aGlzLndhaXRDb25kaXRpb25IYW5kbGVVcmwgPSB0aGlzLnJlZi50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19

@@ -32,2 +32,12 @@ import codepipeline = require('@aws-cdk/aws-codepipeline-api');

outputArtifactName?: string;
/**
* The AWS region the given Action resides in.
* Note that a cross-region Pipeline requires replication buckets to function correctly.
* You can provide their names with the {@link PipelineProps#crossRegionReplicationBuckets} property.
* If you don't, the CodePipeline Construct will create new Stacks in your CDK app containing those buckets,
* that you will need to `cdk deploy` before deploying the main, Pipeline-containing Stack.
*
* @default the Action resides in the same region as the Pipeline
*/
region?: string;
}

@@ -34,0 +44,0 @@ /**

@@ -14,2 +14,3 @@ "use strict";

runOrder: props.runOrder,
region: props.region,
artifactBounds: {

@@ -162,9 +163,2 @@ minInputs: 0,

})(CloudFormationCapabilities = exports.CloudFormationCapabilities || (exports.CloudFormationCapabilities = {}));
function stackArnFromName(stackName) {
return cdk.ArnUtils.fromComponents({
service: 'cloudformation',
resource: 'stack',
resourceName: `${stackName}/*`
});
}
/**

@@ -194,2 +188,19 @@ * Manages a bunch of singleton-y statements on the policy of an IAM Role.

}
grantExecuteChangeSet(props) {
this.statementFor({
actions: ['cloudformation:ExecuteChangeSet'],
conditions: { StringEquals: { 'cloudformation:ChangeSetName': props.changeSetName } },
}).addResource(stackArnFromProps(props));
}
grantCreateReplaceChangeSet(props) {
this.statementFor({
actions: [
'cloudformation:CreateChangeSet',
'cloudformation:DeleteChangeSet',
'cloudformation:DescribeChangeSet',
'cloudformation:DescribeStacks',
],
conditions: { StringEqualsIfExists: { 'cloudformation:ChangeSetName': props.changeSetName } },
}).addResource(stackArnFromProps(props));
}
grantCreateUpdateStack(props) {

@@ -208,21 +219,4 @@ const actions = [

}
this.statementFor({ actions }).addResource(stackArnFromName(props.stackName));
this.statementFor({ actions }).addResource(stackArnFromProps(props));
}
grantCreateReplaceChangeSet(props) {
this.statementFor({
actions: [
'cloudformation:CreateChangeSet',
'cloudformation:DeleteChangeSet',
'cloudformation:DescribeChangeSet',
'cloudformation:DescribeStacks',
],
conditions: { StringEqualsIfExists: { 'cloudformation:ChangeSetName': props.changeSetName } },
}).addResource(stackArnFromName(props.stackName));
}
grantExecuteChangeSet(props) {
this.statementFor({
actions: ['cloudformation:ExecuteChangeSet'],
conditions: { StringEquals: { 'cloudformation:ChangeSetName': props.changeSetName } },
}).addResource(stackArnFromName(props.stackName));
}
grantDeleteStack(props) {

@@ -234,3 +228,3 @@ this.statementFor({

]
}).addResource(stackArnFromName(props.stackName));
}).addResource(stackArnFromProps(props));
}

@@ -273,2 +267,10 @@ grantPassRole(role) {

SingletonPolicy.UUID = '8389e75f-0810-4838-bf64-d6f85a95cf83';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4REFBZ0U7QUFDaEUsd0NBQXlDO0FBQ3pDLG9DQUFxQztBQW1DckM7O0dBRUc7QUFDSCxNQUFzQiw0QkFBNkIsU0FBUSxZQUFZLENBQUMsTUFBTTtJQVE1RSxZQUFZLE1BQXFCLEVBQUUsRUFBVSxFQUFFLEtBQXdDLEVBQUUsYUFBbUI7UUFDMUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixjQUFjLEVBQUU7Z0JBQ2QsU0FBUyxFQUFFLENBQUM7Z0JBQ1osU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsVUFBVSxFQUFFLENBQUM7YUFDZDtZQUNELFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsUUFBUSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTTtZQUM1QyxhQUFhLGtCQUNYLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUMxQixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFDakMsYUFBYSxDQUNqQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsa0JBQWtCO2dCQUNuRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7Q0FDRjtBQWhDRCxvRUFnQ0M7QUFZRDs7R0FFRztBQUNILE1BQWEsOEJBQStCLFNBQVEsNEJBQTRCO0lBQzlFLFlBQVksTUFBcUIsRUFBRSxF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QUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1QixTQUFTLE1BQU0sQ0FBQyxLQUF3QjtZQUN0QyxNQUFNLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sR0FBRyxPQUFPLE9BQU8sVUFBVSxFQUFFLENBQUM7WUFFckMsU0FBUyxnQkFBZ0IsQ0FBQyxJQUF5QjtnQkFDakQsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO29CQUFFLE9BQU8sRUFBRSxDQUFDO2lCQUFFO2dCQUNoQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDekMsTUFBTSxJQUFJLEdBQUcsRUFBRSxNQUFNLENBQUM7b0JBQ3RCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDM0IsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNyRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ25DLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDO3FCQUMxQjtpQkFDRjtnQkFDRCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7O0FBdEZ1QixvQkFBSSxHQUFHLHNDQUFzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvZGVwaXBlbGluZSAgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtY29kZXBpcGVsaW5lLWFwaScpO1xuaW1wb3J0IGlhbSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1pYW0nKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGNvbW1vbiB0byBhbGwgQ2xvdWRGb3JtYXRpb24gYWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb25Qcm9wcyBleHRlbmRzIGNvZGVwaXBlbGluZS5Db21tb25BY3Rpb25Qcm9wcyxcbiAgICBjb2RlcGlwZWxpbmUuQ29tbW9uQWN0aW9uQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWNrIHRvIGFwcGx5IHRoaXMgYWN0aW9uIHRvXG4gICAqL1xuICBzdGFja05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSBuYW1lIGZvciB0aGUgZmlsZW5hbWUgaW4gdGhlIG91dHB1dCBhcnRpZmFjdCB0byBzdG9yZSB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIGNhbGwncyByZXN1bHQuXG4gICAqXG4gICAqIFRoZSBmaWxlIHdpbGwgY29udGFpbiB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIEFXUyBDbG91ZEZvcm1hdGlvbiAoZm9yIGV4YW1wbGVcbiAgICogdGhlIGNhbGwgdG8gVXBkYXRlU3RhY2sgb3IgQ3JlYXRlQ2hhbmdlU2V0KS5cbiAgICpcbiAgICogQVdTIENvZGVQaXBlbGluZSBhZGRzIHRoZSBmaWxlIHRvIHRoZSBvdXRwdXQgYXJ0aWZhY3QgYWZ0ZXIgcGVyZm9ybWluZ1xuICAgKiB0aGUgc3BlY2lmaWVkIGFjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gb3V0cHV0IGFydGlmYWN0IGdlbmVyYXRlZFxuICAgKi9cbiAgb3V0cHV0RmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgYXJ0aWZhY3QgdG8gZ2VuZXJhdGVcbiAgICpcbiAgICogT25seSBhcHBsaWVkIGlmIGBvdXRwdXRGaWxlTmFtZWAgaXMgc2V0IGFzIHdlbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFydGlmYWN0IG5hbWUuXG4gICAqL1xuICBvdXRwdXRBcnRpZmFjdE5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgQWN0aW9ucyB0aGF0IGV4ZWN1dGUgQ2xvdWRGb3JtYXRpb25cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb24gZXh0ZW5kcyBjb2RlcGlwZWxpbmUuQWN0aW9uIHtcbiAgLyoqXG4gICAqIE91dHB1dCBhcnRpZmFjdCBjb250YWluaW5nIHRoZSBDbG91ZEZvcm1hdGlvbiBjYWxsIHJlc3BvbnNlXG4gICAqXG4gICAqIE9ubHkgcHJlc2VudCBpZiBjb25maWd1cmVkIGJ5IHBhc3NpbmcgYG91dHB1dEZpbGVOYW1lYC5cbiAgICovXG4gIHB1YmxpYyBvdXRwdXRBcnRpZmFjdD86IGNvZGVwaXBlbGluZS5BcnRpZmFjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUNsb3VkRm9ybWF0aW9uQWN0aW9uUHJvcHMsIGNvbmZpZ3VyYXRpb24/OiBhbnkpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkLCB7XG4gICAgICBzdGFnZTogcHJvcHMuc3RhZ2UsXG4gICAgICBydW5PcmRlcjogcHJvcHMucnVuT3JkZXIsXG4gICAgICBhcnRpZmFjdEJvdW5kczoge1xuICAgICAgICBtaW5JbnB1dHM6IDAsXG4gICAgICAgIG1heElucHV0czogMTAsXG4gICAgICAgIG1pbk91dHB1dHM6IDAsXG4gICAgICAgIG1heE91dHB1dHM6IDEsXG4gICAgICB9LFxuICAgICAgcHJvdmlkZXI6ICdDbG91ZEZvcm1hdGlvbicsXG4gICAgICBjYXRlZ29yeTogY29kZXBpcGVsaW5lLkFjdGlvbkNhdGVnb3J5LkRlcGxveSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgU3RhY2tOYW1lOiBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIE91dHB1dEZpbGVOYW1lOiBwcm9wcy5vdXRwdXRGaWxlTmFtZSxcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbixcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5vdXRwdXRGaWxlTmFtZSkge1xuICAgICAgdGhpcy5vdXRwdXRBcnRpZmFjdCA9IHRoaXMuYWRkT3V0cHV0QXJ0aWZhY3QocHJvcHMub3V0cHV0QXJ0aWZhY3ROYW1lIHx8XG4gICAgICAgIChwcm9wcy5zdGFnZS5uYW1lICsgdGhpcy5pZCArICdBcnRpZmFjdCcpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgUGlwZWxpbmVFeGVjdXRlQ2hhbmdlU2V0QWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lRXhlY3V0ZUNoYW5nZVNldEFjdGlvblByb3BzIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkFjdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNoYW5nZSBzZXQgdG8gZXhlY3V0ZS5cbiAgICovXG4gIGNoYW5nZVNldE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb2RlUGlwZWxpbmUgYWN0aW9uIHRvIGV4ZWN1dGUgYSBwcmVwYXJlZCBjaGFuZ2Ugc2V0LlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVFeGVjdXRlQ2hhbmdlU2V0QWN0aW9uIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lRXhlY3V0ZUNoYW5nZVNldEFjdGlvblByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCwgcHJvcHMsIHtcbiAgICAgIEFjdGlvbk1vZGU6ICdDSEFOR0VfU0VUX0VYRUNVVEUnLFxuICAgICAgQ2hhbmdlU2V0TmFtZTogcHJvcHMuY2hhbmdlU2V0TmFtZSxcbiAgICB9KTtcblxuICAgIFNpbmdsZXRvblBvbGljeS5mb3JSb2xlKHByb3BzLnN0YWdlLnBpcGVsaW5lLnJvbGUpXG4gICAgICAgICAgICAgICAgICAgLmdyYW50RXhlY3V0ZUNoYW5nZVNldChwcm9wcyk7XG4gIH1cbn1cblxuLy8gdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoIEJlY2F1c2Ugb2YgbG9uZyBVUkxzIGluIGRvY3VtZW50YXRpb25cbi8qKlxuICogUHJvcGVydGllcyBjb21tb24gdG8gQ2xvdWRGb3JtYXRpb24gYWN0aW9ucyB0aGF0IHN0YWdlIGRlcGxveW1lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvblByb3BzIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkFjdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIElBTSByb2xlIHRvIGFzc3VtZSB3aGVuIGRlcGxveWluZyBjaGFuZ2VzLlxuICAgKlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBhIGZyZXNoIHJvbGUgaXMgY3JlYXRlZC4gVGhlIHJvbGUgaXMgY3JlYXRlZCB3aXRoIHplcm9cbiAgICogcGVybWlzc2lvbnMgdW5sZXNzIGBmdWxsUGVybWlzc2lvbnNgIGlzIHRydWUsIGluIHdoaWNoIGNhc2UgdGhlIHJvbGUgd2lsbCBoYXZlXG4gICAqIGZ1bGwgcGVybWlzc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgZnJlc2ggcm9sZSB3aXRoIGZ1bGwgb3Igbm8gcGVybWlzc2lvbnMgKGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYGZ1bGxQZXJtaXNzaW9uc2ApLlxuICAgKi9cbiAgcm9sZT86IGlhbS5Sb2xlO1xuXG4gIC8qKlxuICAgKiBBY2tub3dsZWRnZSBjZXJ0YWluIGNoYW5nZXMgbWFkZSBhcyBwYXJ0IG9mIGRlcGxveW1lbnRcbiAgICpcbiAgICogRm9yIHN0YWNrcyB0aGF0IGNvbnRhaW4gY2VydGFpbiByZXNvdXJjZXMsIGV4cGxpY2l0IGFja25vd2xlZGdlbWVudCB0aGF0IEFXUyBDbG91ZEZvcm1hdGlvblxuICAgKiBtaWdodCBjcmVhdGUgb3IgdXBkYXRlIHRob3NlIHJlc291cmNlcy4gRm9yIGV4YW1wbGUsIHlvdSBtdXN0IHNwZWNpZnkgQ0FQQUJJTElUWV9JQU0gaWYgeW91clxuICAgKiBzdGFjayB0ZW1wbGF0ZSBjb250YWlucyBBV1MgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIHJlc291cmNlcy4gRm9yIG1vcmVcbiAgICogaW5mb3JtYXRpb24sIHNlZSBbQWNrbm93bGVkZ2luZyBJQU0gUmVzb3VyY2VzIGluIEFXUyBDbG91ZEZvcm1hdGlvbiBUZW1wbGF0ZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3VzaW5nLWlhbS10ZW1wbGF0ZS5odG1sI3VzaW5nLWlhbS1jYXBhYmlsaXRpZXMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBjYXBhYml0aWxpdGllcyBwYXNzZWQsIHVubGVzcyBgZnVsbFBlcm1pc3Npb25zYCBpcyB0cnVlXG4gICAqL1xuICBjYXBhYmlsaXRpZXM/OiBDbG91ZEZvcm1hdGlvbkNhcGFiaWxpdGllc1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGdyYW50IGZ1bGwgcGVybWlzc2lvbnMgdG8gQ2xvdWRGb3JtYXRpb24gd2hpbGUgZGVwbG95aW5nIHRoaXMgdGVtcGxhdGUuXG4gICAqXG4gICAqIFNldHRpbmcgdGhpcyB0byBgdHJ1ZWAgYWZmZWN0cyB0aGUgZGVmYXVsdHMgZm9yIGByb2xlYCBhbmQgYGNhcGFiaWxpdGllc2AsIGlmIHlvdVxuICAgKiBkb24ndCBzcGVjaWZ5IGFueSBhbHRlcm5hdGl2ZXMuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IHJvbGUgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdSB3aWxsIGhhdmUgZnVsbCAoaS5lLiwgYCpgKVxuICAgKiBwZXJtaXNzaW9ucyBvbiBhbGwgcmVzb3VyY2VzLCBhbmQgdGhlIGRlcGxveW1lbnQgd2lsbCBoYXZlIG5hbWVkIElBTVxuICAgKiBjYXBhYmlsaXRpZXMgKGkuZS4sIGFibGUgdG8gY3JlYXRlIGFsbCBJQU0gcmVzb3VyY2VzKS5cbiAgICpcbiAgICogVGhpcyBpcyBhIHNob3J0aGFuZCB0aGF0IHlvdSBjYW4gdXNlIGlmIHlvdSBmdWxseSB0cnVzdCB0aGUgdGVtcGxhdGVzIHRoYXRcbiAgICogYXJlIGRlcGxveWVkIGluIHRoaXMgcGlwZWxpbmUuIElmIHlvdSB3YW50IG1vcmUgZmluZS1ncmFpbmVkIHBlcm1pc3Npb25zLFxuICAgKiB1c2UgYGFkZFRvUm9sZVBvbGljeWAgYW5kIGBjYXBhYmlsaXRpZXNgIHRvIGNvbnRyb2wgd2hhdCB0aGUgQ2xvdWRGb3JtYXRpb25cbiAgICogZGVwbG95bWVudCBpcyBhbGxvd2VkIHRvIGRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZnVsbFBlcm1pc3Npb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5wdXQgYXJ0aWZhY3QgdG8gdXNlIGZvciB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHZhbHVlcyBhbmQgc3RhY2sgcG9saWN5LlxuICAgKlxuICAgKiBUaGUgdGVtcGxhdGUgY29uZmlndXJhdGlvbiBmaWxlIHNob3VsZCBjb250YWluIGEgSlNPTiBvYmplY3QgdGhhdCBzaG91bGQgbG9vayBsaWtlIHRoaXM6XG4gICAqIGB7IFwiUGFyYW1ldGVyc1wiOiB7Li4ufSwgXCJUYWdzXCI6IHsuLi59LCBcIlN0YWNrUG9saWN5XCI6IHsuLi4gfX1gLiBGb3IgbW9yZSBpbmZvcm1hdGlvbixcbiAgICogc2VlIFtBV1MgQ2xvdWRGb3JtYXRpb24gQXJ0aWZhY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9jb250aW51b3VzLWRlbGl2ZXJ5LWNvZGVwaXBlbGluZS1jZm4tYXJ0aWZhY3RzLmh0bWwpLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaWYgeW91IGluY2x1ZGUgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHBhc3N3b3JkcywgcmVzdHJpY3QgYWNjZXNzIHRvIHRoaXNcbiAgICogZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gdGVtcGxhdGUgY29uZmlndXJhdGlvbiBiYXNlZCBvbiBpbnB1dCBhcnRpZmFjdHNcbiAgICovXG4gIHRlbXBsYXRlQ29uZmlndXJhdGlvbj86IGNvZGVwaXBlbGluZS5BcnRpZmFjdFBhdGg7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgdGVtcGxhdGUgcGFyYW1ldGVycy5cbiAgICpcbiAgICogVGVtcGxhdGUgcGFyYW1ldGVycyBzcGVjaWZpZWQgaGVyZSB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0ZW1wbGF0ZSBwYXJhbWV0ZXJzXG4gICAqIGZvdW5kIGluIHRoZSBhcnRpZmFjdCBzcGVjaWZpZWQgYnkgdGhlIGB0ZW1wbGF0ZUNvbmZpZ3VyYXRpb25gIHByb3BlcnR5LlxuICAgKlxuICAgKiBXZSByZWNvbW1lbmQgdGhhdCB5b3UgdXNlIHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gc3BlY2lmeVxuICAgKiBtb3N0IG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gVXNlIHBhcmFtZXRlciBvdmVycmlkZXMgdG8gc3BlY2lmeSBvbmx5XG4gICAqIGR5bmFtaWMgcGFyYW1ldGVyIHZhbHVlcyAodmFsdWVzIHRoYXQgYXJlIHVua25vd24gdW50aWwgeW91IHJ1biB0aGVcbiAgICogcGlwZWxpbmUpLlxuICAgKlxuICAgKiBBbGwgcGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgcHJlc2VudCBpbiB0aGUgc3RhY2sgdGVtcGxhdGUuXG4gICAqXG4gICAqIE5vdGU6IHRoZSBlbnRpcmUgb2JqZWN0IGNhbm5vdCBiZSBtb3JlIHRoYW4gMWtCLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBvdmVycmlkZXNcbiAgICovXG4gIHBhcmFtZXRlck92ZXJyaWRlcz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xufVxuLy8gdHNsaW50OmVuYWJsZTptYXgtbGluZS1sZW5ndGhcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgQ2xvdWRGb3JtYXRpb24gYWN0aW9ucyB0aGF0IGV4ZWN1dGUgb3Igc3RhZ2UgZGVwbG95bWVudHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkFjdGlvbiB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uUm9sZTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uUHJvcHMsIGNvbmZpZ3VyYXRpb246IGFueSkge1xuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHByb3BzLmZ1bGxQZXJtaXNzaW9ucyAmJiBwcm9wcy5jYXBhYmlsaXRpZXMgPT09IHVuZGVmaW5lZCA/IFtDbG91ZEZvcm1hdGlvbkNhcGFiaWxpdGllcy5OYW1lZElBTV0gOiBwcm9wcy5jYXBhYmlsaXRpZXM7XG5cbiAgICBzdXBlcihwYXJlbnQsIGlkLCBwcm9wcywge1xuICAgICAgLi4uY29uZmlndXJhdGlvbixcbiAgICAgIC8vIFRoaXMgbXVzdCBiZSBhIHN0cmluZywgc28gZmxhdHRlbiB0aGUgbGlzdCB0byBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcuXG4gICAgICBDYXBhYmlsaXRpZXM6IChjYXBhYmlsaXRpZXMgJiYgY2FwYWJpbGl0aWVzLmpvaW4oJywnKSkgfHwgdW5kZWZpbmVkLFxuICAgICAgUm9sZUFybjogbmV3IGNkay5Ub2tlbigoKSA9PiB0aGlzLnJvbGUucm9sZUFybiksXG4gICAgICBQYXJhbWV0ZXJPdmVycmlkZXM6IGNkay5DbG91ZEZvcm1hdGlvbkpTT04uc3RyaW5naWZ5KHByb3BzLnBhcmFtZXRlck92ZXJyaWRlcyksXG4gICAgICBUZW1wbGF0ZUNvbmZpZ3VyYXRpb246IHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbiA/IHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5sb2NhdGlvbiA6IHVuZGVmaW5lZCxcbiAgICAgIFN0YWNrTmFtZTogcHJvcHMuc3RhY2tOYW1lLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnJvbGUpIHtcbiAgICAgIHRoaXMucm9sZSA9IHByb3BzLnJvbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnUm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2Nsb3VkZm9ybWF0aW9uLmFtYXpvbmF3cy5jb20nKVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChwcm9wcy5mdWxsUGVybWlzc2lvbnMpIHtcbiAgICAgICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KCkuYWRkQWN0aW9uKCcqJykuYWRkQWxsUmVzb3VyY2VzKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIFNpbmdsZXRvblBvbGljeS5mb3JSb2xlKHByb3BzLnN0YWdlLnBpcGVsaW5lLnJvbGUpLmdyYW50UGFzc1JvbGUodGhpcy5yb2xlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc3RhdGVtZW50IHRvIHRoZSBzZXJ2aWNlIHJvbGUgYXNzdW1lZCBieSBDbG91ZEZvcm1hdGlvbiB3aGlsZSBleGVjdXRpbmcgdGhpcyBhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYWRkVG9Sb2xlUG9saWN5KHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCkge1xuICAgIHJldHVybiB0aGlzLnJvbGUuYWRkVG9Qb2xpY3koc3RhdGVtZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBQaXBlbGluZUNyZWF0ZVJlcGxhY2VDaGFuZ2VTZXRBY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVDcmVhdGVSZXBsYWNlQ2hhbmdlU2V0QWN0aW9uUHJvcHMgZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY2hhbmdlIHNldCB0byBjcmVhdGUgb3IgdXBkYXRlLlxuICAgKi9cbiAgY2hhbmdlU2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBhcnRpZmFjdCB3aXRoIHRoZSBDaGFuZ2VTZXQncyBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZVxuICAgKi9cbiAgdGVtcGxhdGVQYXRoOiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3RQYXRoO1xufVxuXG4vKipcbiAqIENvZGVQaXBlbGluZSBhY3Rpb24gdG8gcHJlcGFyZSBhIGNoYW5nZSBzZXQuXG4gKlxuICogQ3JlYXRlcyB0aGUgY2hhbmdlIHNldCBpZiBpdCBkb2Vzbid0IGV4aXN0IGJhc2VkIG9uIHRoZSBzdGFjayBuYW1lIGFuZCB0ZW1wbGF0ZSB0aGF0IHlvdSBzdWJtaXQuXG4gKiBJZiB0aGUgY2hhbmdlIHNldCBleGlzdHMsIEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIGl0LCBhbmQgdGhlbiBjcmVhdGVzIGEgbmV3IG9uZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lQ3JlYXRlUmVwbGFjZUNoYW5nZVNldEFjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUNyZWF0ZVJlcGxhY2VDaGFuZ2VTZXRBY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQsIHByb3BzLCB7XG4gICAgICBBY3Rpb25Nb2RlOiAnQ0hBTkdFX1NFVF9SRVBMQUNFJyxcbiAgICAgIENoYW5nZVNldE5hbWU6IHByb3BzLmNoYW5nZVNldE5hbWUsXG4gICAgICBUZW1wbGF0ZVBhdGg6IHByb3BzLnRlbXBsYXRlUGF0aC5sb2NhdGlvbixcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkSW5wdXRBcnRpZmFjdChwcm9wcy50ZW1wbGF0ZVBhdGguYXJ0aWZhY3QpO1xuICAgIGlmIChwcm9wcy50ZW1wbGF0ZUNvbmZpZ3VyYXRpb24gJiYgcHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uLmFydGlmYWN0Lm5hbWUgIT09IHByb3BzLnRlbXBsYXRlUGF0aC5hcnRpZmFjdC5uYW1lKSB7XG4gICAgICB0aGlzLmFkZElucHV0QXJ0aWZhY3QocHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uLmFydGlmYWN0KTtcbiAgICB9XG5cbiAgICBTaW5nbGV0b25Qb2xpY3kuZm9yUm9sZShwcm9wcy5zdGFnZS5waXBlbGluZS5yb2xlKS5ncmFudENyZWF0ZVJlcGxhY2VDaGFuZ2VTZXQocHJvcHMpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIFBpcGVsaW5lQ3JlYXRlVXBkYXRlU3RhY2tBY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVDcmVhdGVVcGRhdGVTdGFja0FjdGlvblByb3BzIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIElucHV0IGFydGlmYWN0IHdpdGggdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIHRvIGRlcGxveVxuICAgKi9cbiAgdGVtcGxhdGVQYXRoOiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3RQYXRoO1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBzdGFjayBpZiBpdCdzIGluIGEgZmFpbGVkIHN0YXRlLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlIGFuZCB0aGUgc3RhY2sgaXMgaW4gYSBmYWlsZWQgc3RhdGUgKG9uZSBvZlxuICAgKiBST0xMQkFDS19DT01QTEVURSwgUk9MTEJBQ0tfRkFJTEVELCBDUkVBVEVfRkFJTEVELCBERUxFVEVfRkFJTEVELCBvclxuICAgKiBVUERBVEVfUk9MTEJBQ0tfRkFJTEVEKSwgQVdTIENsb3VkRm9ybWF0aW9uIGRlbGV0ZXMgdGhlIHN0YWNrIGFuZCB0aGVuXG4gICAqIGNyZWF0ZXMgYSBuZXcgc3RhY2suXG4gICAqXG4gICAqIElmIHRoaXMgaXMgbm90IHNldCB0byB0cnVlIGFuZCB0aGUgc3RhY2sgaXMgaW4gYSBmYWlsZWQgc3RhdGUsXG4gICAqIHRoZSBkZXBsb3ltZW50IGZhaWxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVwbGFjZU9uRmFpbHVyZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29kZVBpcGVsaW5lIGFjdGlvbiB0byBkZXBsb3kgYSBzdGFjay5cbiAqXG4gKiBDcmVhdGVzIHRoZSBzdGFjayBpZiB0aGUgc3BlY2lmaWVkIHN0YWNrIGRvZXNuJ3QgZXhpc3QuIElmIHRoZSBzdGFjayBleGlzdHMsXG4gKiBBV1MgQ2xvdWRGb3JtYXRpb24gdXBkYXRlcyB0aGUgc3RhY2suIFVzZSB0aGlzIGFjdGlvbiB0byB1cGRhdGUgZXhpc3RpbmdcbiAqIHN0YWNrcy5cbiAqXG4gKiBBV1MgQ29kZVBpcGVsaW5lIHdvbid0IHJlcGxhY2UgdGhlIHN0YWNrLCBhbmQgd2lsbCBmYWlsIGRlcGxveW1lbnQgaWYgdGhlXG4gKiBzdGFjayBpcyBpbiBhIGZhaWxlZCBzdGF0ZS4gVXNlIGBSZXBsYWNlT25GYWlsdXJlYCBmb3IgYW4gYWN0aW9uIHRoYXRcbiAqIHdpbGwgZGVsZXRlIGFuZCByZWNyZWF0ZSB0aGUgc3RhY2sgdG8gdHJ5IGFuZCByZWNvdmVyIGZyb20gZmFpbGVkIHN0YXRlcy5cbiAqXG4gKiBVc2UgdGhpcyBhY3Rpb24gdG8gYXV0b21hdGljYWxseSByZXBsYWNlIGZhaWxlZCBzdGFja3Mgd2l0aG91dCByZWNvdmVyaW5nIG9yXG4gKiB0cm91Ymxlc2hvb3RpbmcgdGhlbS4gWW91IHdvdWxkIHR5cGljYWxseSBjaG9vc2UgdGhpcyBtb2RlIGZvciB0ZXN0aW5nLlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVDcmVhdGVVcGRhdGVTdGFja0FjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUNyZWF0ZVVwZGF0ZVN0YWNrQWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkLCBwcm9wcywge1xuICAgICAgQWN0aW9uTW9kZTogcHJvcHMucmVwbGFjZU9uRmFpbHVyZSA/ICdSRVBMQUNFX09OX0ZBSUxVUkUnIDogJ0NSRUFURV9VUERBVEUnLFxuICAgICAgVGVtcGxhdGVQYXRoOiBwcm9wcy50ZW1wbGF0ZVBhdGgubG9jYXRpb25cbiAgICB9KTtcblxuICAgIHRoaXMuYWRkSW5wdXRBcnRpZmFjdChwcm9wcy50ZW1wbGF0ZVBhdGguYXJ0aWZhY3QpO1xuICAgIGlmIChwcm9wcy50ZW1wbGF0ZUNvbmZpZ3VyYXRpb24gJiYgcHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uLmFydGlmYWN0Lm5hbWUgIT09IHByb3BzLnRlbXBsYXRlUGF0aC5hcnRpZmFjdC5uYW1lKSB7XG4gICAgICB0aGlzLmFkZElucHV0QXJ0aWZhY3QocHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uLmFydGlmYWN0KTtcbiAgICB9XG5cbiAgICBTaW5nbGV0b25Qb2xpY3kuZm9yUm9sZShwcm9wcy5zdGFnZS5waXBlbGluZS5yb2xlKS5ncmFudENyZWF0ZVVwZGF0ZVN0YWNrKHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBQaXBlbGluZURlbGV0ZVN0YWNrQWN0aW9uLlxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lRGVsZXRlU3RhY2tBY3Rpb25Qcm9wcyBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb25Qcm9wcyB7XG59XG5cbi8qKlxuICogQ29kZVBpcGVsaW5lIGFjdGlvbiB0byBkZWxldGUgYSBzdGFjay5cbiAqXG4gKiBEZWxldGVzIGEgc3RhY2suIElmIHlvdSBzcGVjaWZ5IGEgc3RhY2sgdGhhdCBkb2Vzbid0IGV4aXN0LCB0aGUgYWN0aW9uIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHlcbiAqIHdpdGhvdXQgZGVsZXRpbmcgYSBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lRGVsZXRlU3RhY2tBY3Rpb24gZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uIHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVEZWxldGVTdGFja0FjdGlvblByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCwgcHJvcHMsIHtcbiAgICAgIEFjdGlvbk1vZGU6ICdERUxFVEVfT05MWScsXG4gICAgfSk7XG4gICAgU2luZ2xldG9uUG9saWN5LmZvclJvbGUocHJvcHMuc3RhZ2UucGlwZWxpbmUucm9sZSkuZ3JhbnREZWxldGVTdGFjayhwcm9wcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDYXBhYmlsaXRpZXMgdGhhdCBhZmZlY3Qgd2hldGhlciBDbG91ZEZvcm1hdGlvbiBpcyBhbGxvd2VkIHRvIGNoYW5nZSBJQU0gcmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBlbnVtIENsb3VkRm9ybWF0aW9uQ2FwYWJpbGl0aWVzIHtcbiAgLyoqXG4gICAqIENhcGFiaWxpdHkgdG8gY3JlYXRlIGFub255bW91cyBJQU0gcmVzb3VyY2VzXG4gICAqXG4gICAqIFBhc3MgdGhpcyBjYXBhYmlsaXR5IGlmIHlvdSdyZSBvbmx5IGNyZWF0aW5nIGFub255bW91cyByZXNvdXJjZXMuXG4gICAqL1xuICBJQU0gPSAnQ0FQQUJJTElUWV9JQU0nLFxuXG4gIC8qKlxuICAgKiBDYXBhYmlsaXR5IHRvIGNyZWF0ZSBuYW1lZCBJQU0gcmVzb3VyY2VzLlxuICAgKlxuICAgKiBQYXNzIHRoaXMgY2FwYWJpbGl0eSBpZiB5b3UncmUgY3JlYXRpbmcgSUFNIHJlc291cmNlcyB0aGF0IGhhdmUgcGh5c2ljYWxcbiAgICogbmFtZXMuXG4gICAqXG4gICAqIGBDbG91ZEZvcm1hdGlvbkNhcGFiaWxpdGllcy5OYW1lZElBTWAgaW1wbGllcyBgQ2xvdWRGb3JtYXRpb25DYXBhYmlsaXRpZXMuSUFNYDsgeW91IGRvbid0IGhhdmUgdG8gcGFzcyBib3RoLlxuICAgKi9cbiAgTmFtZWRJQU0gPSAnQ0FQQUJJTElUWV9OQU1FRF9JQU0nXG59XG5cbmZ1bmN0aW9uIHN0YWNrQXJuRnJvbU5hbWUoc3RhY2tOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY2RrLkFyblV0aWxzLmZyb21Db21wb25lbnRzKHtcbiAgICBzZXJ2aWNlOiAnY2xvdWRmb3JtYXRpb24nLFxuICAgIHJlc291cmNlOiAnc3RhY2snLFxuICAgIHJlc291cmNlTmFtZTogYCR7c3RhY2tOYW1lfS8qYFxuICB9KTtcbn1cblxuLyoqXG4gKiBNYW5hZ2VzIGEgYnVuY2ggb2Ygc2luZ2xldG9uLXkgc3RhdGVtZW50cyBvbiB0aGUgcG9saWN5IG9mIGFuIElBTSBSb2xlLlxuICogRGVkaWNhdGVkIG1ldGhvZHMgY2FuIGJlIHVzZWQgdG8gYWRkIHNwZWNpZmljIHBlcm1pc3Npb25zIHRvIHRoZSByb2xlIHBvbGljeVxuICogdXNpbmcgYXMgZmV3IHN0YXRlbWVudHMgYXMgcG9zc2libGUgKGFkZGluZyByZXNvdXJjZXMgdG8gZXhpc3RpbmcgY29tcGF0aWJsZVxuICogc3RhdGVtZW50cyBpbnN0ZWFkIG9mIGFkZGluZyBuZXcgc3RhdGVtZW50cyB3aGVuZXZlciBwb3NzaWJsZSkuXG4gKlxuICogU3RhdGVtZW50cyBjcmVhdGVkIG91dHNpZGUgb2YgdGhpcyBjbGFzcyBhcmUgbm90IGNvbnNpZGVyZWQgd2hlbiBhZGRpbmcgbmV3XG4gKiBwZXJtaXNzaW9ucy5cbiAqL1xuY2xhc3MgU2luZ2xldG9uUG9saWN5IGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBPYnRhaW4gYSBTaW5nbGV0b25Qb2xpY3kgZm9yIGEgZ2l2ZW4gcm9sZS5cbiAgICogQHBhcmFtIHJvbGUgdGhlIFJvbGUgdGhpcyBwb2xpY3kgaXMgYm91bmQgdG8uXG4gICAqIEByZXR1cm5zIHRoZSBTaW5nbGV0b25Qb2xpY3kgZm9yIHRoaXMgcm9sZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9sZShyb2xlOiBpYW0uUm9sZSk6IFNpbmdsZXRvblBvbGljeSB7XG4gICAgY29uc3QgZm91bmQgPSByb2xlLnRyeUZpbmRDaGlsZChTaW5nbGV0b25Qb2xpY3kuVVVJRCk7XG4gICAgcmV0dXJuIChmb3VuZCBhcyBTaW5nbGV0b25Qb2xpY3kpIHx8IG5ldyBTaW5nbGV0b25Qb2xpY3kocm9sZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBVVUlEID0gJzgzODllNzVmLTA4MTAtNDgzOC1iZjY0LWQ2Zjg1YTk1Y2Y4Myc7XG5cbiAgcHJpdmF0ZSBzdGF0ZW1lbnRzOiB7IFtrZXk6IHN0cmluZ106IGlhbS5Qb2xpY3lTdGF0ZW1lbnQgfSA9IHt9O1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb2xlOiBpYW0uUm9sZSkge1xuICAgIHN1cGVyKHJvbGUsIFNpbmdsZXRvblBvbGljeS5VVUlEKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudENyZWF0ZVVwZGF0ZVN0YWNrKHByb3BzOiB7IHN0YWNrTmFtZTogc3RyaW5nLCByZXBsYWNlT25GYWlsdXJlPzogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9ucyA9IFtcbiAgICAgICdjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrKicsXG4gICAgICAnY2xvdWRmb3JtYXRpb246Q3JlYXRlU3RhY2snLFxuICAgICAgJ2Nsb3VkZm9ybWF0aW9uOlVwZGF0ZVN0YWNrJyxcbiAgICAgICdjbG91ZGZvcm1hdGlvbjpHZXRUZW1wbGF0ZSonLFxuICAgICAgJ2Nsb3VkZm9ybWF0aW9uOlZhbGlkYXRlVGVtcGxhdGUnLFxuICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkdldFN0YWNrUG9saWN5JyxcbiAgICAgICdjbG91ZGZvcm1hdGlvbjpTZXRTdGFja1BvbGljeScsXG4gICAgXTtcbiAgICBpZiAocHJvcHMucmVwbGFjZU9uRmFpbHVyZSkge1xuICAgICAgYWN0aW9ucy5wdXNoKCdjbG91ZGZvcm1hdGlvbjpEZWxldGVTdGFjaycpO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlbWVudEZvcih7IGFjdGlvbnMgfSkuYWRkUmVzb3VyY2Uoc3RhY2tBcm5Gcm9tTmFtZShwcm9wcy5zdGFja05hbWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudENyZWF0ZVJlcGxhY2VDaGFuZ2VTZXQocHJvcHM6IHsgc3RhY2tOYW1lOiBzdHJpbmcsIGNoYW5nZVNldE5hbWU6IHN0cmluZyB9KTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZW1lbnRGb3Ioe1xuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcsXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcycsXG4gICAgICBdLFxuICAgICAgY29uZGl0aW9uczogeyBTdHJpbmdFcXVhbHNJZkV4aXN0czogeyAnY2xvdWRmb3JtYXRpb246Q2hhbmdlU2V0TmFtZSc6IHByb3BzLmNoYW5nZVNldE5hbWUgfSB9LFxuICAgIH0pLmFkZFJlc291cmNlKHN0YWNrQXJuRnJvbU5hbWUocHJvcHMuc3RhY2tOYW1lKSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRFeGVjdXRlQ2hhbmdlU2V0KHByb3BzOiB7IHN0YWNrTmFtZTogc3RyaW5nLCBjaGFuZ2VTZXROYW1lOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVtZW50Rm9yKHtcbiAgICAgIGFjdGlvbnM6IFsnY2xvdWRmb3JtYXRpb246RXhlY3V0ZUNoYW5nZVNldCddLFxuICAgICAgY29uZGl0aW9uczoge8KgU3RyaW5nRXF1YWxzOiB7ICdjbG91ZGZvcm1hdGlvbjpDaGFuZ2VTZXROYW1lJzogcHJvcHMuY2hhbmdlU2V0TmFtZSB9IH0sXG4gICAgfSkuYWRkUmVzb3VyY2Uoc3RhY2tBcm5Gcm9tTmFtZShwcm9wcy5zdGFja05hbWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudERlbGV0ZVN0YWNrKHByb3BzOiB7IHN0YWNrTmFtZTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlbWVudEZvcih7XG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrKicsXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpEZWxldGVTdGFjaycsXG4gICAgICBdXG4gICAgfSkuYWRkUmVzb3VyY2Uoc3RhY2tBcm5Gcm9tTmFtZShwcm9wcy5zdGFja05hbWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudFBhc3NSb2xlKHJvbGU6IGlhbS5Sb2xlKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZW1lbnRGb3IoeyBhY3Rpb25zOiBbJ2lhbTpQYXNzUm9sZSddIH0pLmFkZFJlc291cmNlKHJvbGUucm9sZUFybik7XG4gIH1cblxuICBwcml2YXRlIHN0YXRlbWVudEZvcih0ZW1wbGF0ZTogU3RhdGVtZW50VGVtcGxhdGUpOiBpYW0uUG9saWN5U3RhdGVtZW50IHtcbiAgICBjb25zdCBrZXkgPSBrZXlGb3IodGVtcGxhdGUpO1xuICAgIGlmICghKGtleSBpbiB0aGlzLnN0YXRlbWVudHMpKSB7XG4gICAgICB0aGlzLnN0YXRlbWVudHNba2V5XSA9IG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KCkuYWRkQWN0aW9ucyguLi50ZW1wbGF0ZS5hY3Rpb25zKTtcbiAgICAgIGlmICh0ZW1wbGF0ZS5jb25kaXRpb25zKSB7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50c1trZXldLmFkZENvbmRpdGlvbnModGVtcGxhdGUuY29uZGl0aW9ucyk7XG4gICAgICB9XG4gICAgICB0aGlzLnJvbGUuYWRkVG9Qb2xpY3kodGhpcy5zdGF0ZW1lbnRzW2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnRzW2tleV07XG5cbiAgICBmdW5jdGlvbiBrZXlGb3IocHJvcHM6IFN0YXRlbWVudFRlbXBsYXRlKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IGFjdGlvbnMgPSBgJHtwcm9wcy5hY3Rpb25zLnNvcnQoKS5qb2luKCdcXHgxRicpfWA7XG4gICAgICBjb25zdCBjb25kaXRpb25zID0gZm9ybWF0Q29uZGl0aW9ucyhwcm9wcy5jb25kaXRpb25zKTtcbiAgICAgIHJldHVybiBgJHthY3Rpb25zfVxceDFEJHtjb25kaXRpb25zfWA7XG5cbiAgICAgIGZ1bmN0aW9uIGZvcm1hdENvbmRpdGlvbnMoY29uZD86IFN0YXRlbWVudENvbmRpdGlvbik6IHN0cmluZyB7XG4gICAgICAgIGlmIChjb25kID09IG51bGwpIHsgcmV0dXJuICcnOyB9XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBvcCBvZiBPYmplY3Qua2V5cyhjb25kKS5zb3J0KCkpIHtcbiAgICAgICAgICByZXN1bHQgKz0gYCR7b3B9XFx4MUVgO1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IGNvbmRbb3BdO1xuICAgICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIE9iamVjdC5rZXlzKGNvbmRpdGlvbikuc29ydCgpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmRpdGlvblthdHRyaWJ1dGVdO1xuICAgICAgICAgICAgcmVzdWx0ICs9IGAke3ZhbHVlfVxceDFGYDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIFN0YXRlbWVudFRlbXBsYXRlIHtcbiAgYWN0aW9uczogc3RyaW5nW107XG4gIGNvbmRpdGlvbnM/OiBTdGF0ZW1lbnRDb25kaXRpb247XG59XG5cbnR5cGUgU3RhdGVtZW50Q29uZGl0aW9uID0geyBbb3A6IHN0cmluZ106IHsgW2F0dHJpYnV0ZTogc3RyaW5nXTogc3RyaW5nIH0gfTtcbiJdfQ==
function stackArnFromProps(props) {
return cdk.ArnUtils.fromComponents({
region: props.region,
service: 'cloudformation',
resource: 'stack',
resourceName: `${props.stackName}/*`
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4REFBZ0U7QUFDaEUsd0NBQXlDO0FBQ3pDLG9DQUFxQztBQThDckM7O0dBRUc7QUFDSCxNQUFzQiw0QkFBNkIsU0FBUSxZQUFZLENBQUMsTUFBTTtJQVE1RSxZQUFZLE1BQXFCLEVBQUUsRUFBVSxFQUFFLEtBQXdDLEVBQUUsYUFBbUI7UUFDMUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsY0FBYyxFQUFFO2dCQUNkLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFNBQVMsRUFBRSxFQUFFO2dCQUNiLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFVBQVUsRUFBRSxDQUFDO2FBQ2Q7WUFDRCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFFBQVEsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU07WUFDNUMsYUFBYSxrQkFDWCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFDMUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLElBQ2pDLGFBQWEsQ0FDakI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtnQkFDbkUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0NBQ0Y7QUFqQ0Qsb0VBaUNDO0FBWUQ7O0dBRUc7QUFDSCxNQUFhLDhCQUErQixTQUFR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LEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN0RCxPQUFPLEdBQUcsT0FBTyxPQUFPLFVBQVUsRUFBRSxDQUFDO1lBRXJDLFNBQVMsZ0JBQWdCLENBQUMsSUFBeUI7Z0JBQ2pELElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtvQkFBRSxPQUFPLEVBQUUsQ0FBQztpQkFBRTtnQkFDaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNoQixLQUFLLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3pDLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxDQUFDO29CQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNCLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTt3QkFDckQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUNuQyxNQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQztxQkFDMUI7aUJBQ0Y7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOztBQXRGdUIsb0JBQUksR0FBRyxzQ0FBc0MsQ0FBQztBQWdHeEUsU0FBUyxpQkFBaUIsQ0FBQyxLQUE2QztJQUN0RSxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQ2pDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtRQUNwQixPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUk7S0FDckMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2RlcGlwZWxpbmUgID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWNvZGVwaXBlbGluZS1hcGknKTtcbmltcG9ydCBpYW0gPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtaWFtJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5cbi8qKlxuICogUHJvcGVydGllcyBjb21tb24gdG8gYWxsIENsb3VkRm9ybWF0aW9uIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUNsb3VkRm9ybWF0aW9uQWN0aW9uUHJvcHMgZXh0ZW5kcyBjb2RlcGlwZWxpbmUuQ29tbW9uQWN0aW9uUHJvcHMsXG4gICAgY29kZXBpcGVsaW5lLkNvbW1vbkFjdGlvbkNvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFjayB0byBhcHBseSB0aGlzIGFjdGlvbiB0b1xuICAgKi9cbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbmFtZSBmb3IgdGhlIGZpbGVuYW1lIGluIHRoZSBvdXRwdXQgYXJ0aWZhY3QgdG8gc3RvcmUgdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiBjYWxsJ3MgcmVzdWx0LlxuICAgKlxuICAgKiBUaGUgZmlsZSB3aWxsIGNvbnRhaW4gdGhlIHJlc3VsdCBvZiB0aGUgY2FsbCB0byBBV1MgQ2xvdWRGb3JtYXRpb24gKGZvciBleGFtcGxlXG4gICAqIHRoZSBjYWxsIHRvIFVwZGF0ZVN0YWNrIG9yIENyZWF0ZUNoYW5nZVNldCkuXG4gICAqXG4gICAqIEFXUyBDb2RlUGlwZWxpbmUgYWRkcyB0aGUgZmlsZSB0byB0aGUgb3V0cHV0IGFydGlmYWN0IGFmdGVyIHBlcmZvcm1pbmdcbiAgICogdGhlIHNwZWNpZmllZCBhY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG91dHB1dCBhcnRpZmFjdCBnZW5lcmF0ZWRcbiAgICovXG4gIG91dHB1dEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3V0cHV0IGFydGlmYWN0IHRvIGdlbmVyYXRlXG4gICAqXG4gICAqIE9ubHkgYXBwbGllZCBpZiBgb3V0cHV0RmlsZU5hbWVgIGlzIHNldCBhcyB3ZWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBhcnRpZmFjdCBuYW1lLlxuICAgKi9cbiAgb3V0cHV0QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIHJlZ2lvbiB0aGUgZ2l2ZW4gQWN0aW9uIHJlc2lkZXMgaW4uXG4gICAqIE5vdGUgdGhhdCBhIGNyb3NzLXJlZ2lvbiBQaXBlbGluZSByZXF1aXJlcyByZXBsaWNhdGlvbiBidWNrZXRzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS5cbiAgICogWW91IGNhbiBwcm92aWRlIHRoZWlyIG5hbWVzIHdpdGggdGhlIHtAbGluayBQaXBlbGluZVByb3BzI2Nyb3NzUmVnaW9uUmVwbGljYXRpb25CdWNrZXRzfSBwcm9wZXJ0eS5cbiAgICogSWYgeW91IGRvbid0LCB0aGUgQ29kZVBpcGVsaW5lIENvbnN0cnVjdCB3aWxsIGNyZWF0ZSBuZXcgU3RhY2tzIGluIHlvdXIgQ0RLIGFwcCBjb250YWluaW5nIHRob3NlIGJ1Y2tldHMsXG4gICAqIHRoYXQgeW91IHdpbGwgbmVlZCB0byBgY2RrIGRlcGxveWAgYmVmb3JlIGRlcGxveWluZyB0aGUgbWFpbiwgUGlwZWxpbmUtY29udGFpbmluZyBTdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIEFjdGlvbiByZXNpZGVzIGluIHRoZSBzYW1lIHJlZ2lvbiBhcyB0aGUgUGlwZWxpbmVcbiAgICovXG4gIHJlZ2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBBY3Rpb25zIHRoYXQgZXhlY3V0ZSBDbG91ZEZvcm1hdGlvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkFjdGlvbiBleHRlbmRzIGNvZGVwaXBlbGluZS5BY3Rpb24ge1xuICAvKipcbiAgICogT3V0cHV0IGFydGlmYWN0IGNvbnRhaW5pbmcgdGhlIENsb3VkRm9ybWF0aW9uIGNhbGwgcmVzcG9uc2VcbiAgICpcbiAgICogT25seSBwcmVzZW50IGlmIGNvbmZpZ3VyZWQgYnkgcGFzc2luZyBgb3V0cHV0RmlsZU5hbWVgLlxuICAgKi9cbiAgcHVibGljIG91dHB1dEFydGlmYWN0PzogY29kZXBpcGVsaW5lLkFydGlmYWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb25Qcm9wcywgY29uZmlndXJhdGlvbj86IGFueSkge1xuICAgIHN1cGVyKHBhcmVudCwgaWQsIHtcbiAgICAgIHN0YWdlOiBwcm9wcy5zdGFnZSxcbiAgICAgIHJ1bk9yZGVyOiBwcm9wcy5ydW5PcmRlcixcbiAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgYXJ0aWZhY3RCb3VuZHM6IHtcbiAgICAgICAgbWluSW5wdXRzOiAwLFxuICAgICAgICBtYXhJbnB1dHM6IDEwLFxuICAgICAgICBtaW5PdXRwdXRzOiAwLFxuICAgICAgICBtYXhPdXRwdXRzOiAxLFxuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiAnQ2xvdWRGb3JtYXRpb24nLFxuICAgICAgY2F0ZWdvcnk6IGNvZGVwaXBlbGluZS5BY3Rpb25DYXRlZ29yeS5EZXBsb3ksXG4gICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgIFN0YWNrTmFtZTogcHJvcHMuc3RhY2tOYW1lLFxuICAgICAgICBPdXRwdXRGaWxlTmFtZTogcHJvcHMub3V0cHV0RmlsZU5hbWUsXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24sXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMub3V0cHV0RmlsZU5hbWUpIHtcbiAgICAgIHRoaXMub3V0cHV0QXJ0aWZhY3QgPSB0aGlzLmFkZE91dHB1dEFydGlmYWN0KHByb3BzLm91dHB1dEFydGlmYWN0TmFtZSB8fFxuICAgICAgICAocHJvcHMuc3RhZ2UubmFtZSArIHRoaXMuaWQgKyAnQXJ0aWZhY3QnKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIFBpcGVsaW5lRXhlY3V0ZUNoYW5nZVNldEFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUV4ZWN1dGVDaGFuZ2VTZXRBY3Rpb25Qcm9wcyBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjaGFuZ2Ugc2V0IHRvIGV4ZWN1dGUuXG4gICAqL1xuICBjaGFuZ2VTZXROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZVBpcGVsaW5lIGFjdGlvbiB0byBleGVjdXRlIGEgcHJlcGFyZWQgY2hhbmdlIHNldC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lRXhlY3V0ZUNoYW5nZVNldEFjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZUV4ZWN1dGVDaGFuZ2VTZXRBY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQsIHByb3BzLCB7XG4gICAgICBBY3Rpb25Nb2RlOiAnQ0hBTkdFX1NFVF9FWEVDVVRFJyxcbiAgICAgIENoYW5nZVNldE5hbWU6IHByb3BzLmNoYW5nZVNldE5hbWUsXG4gICAgfSk7XG5cbiAgICBTaW5nbGV0b25Qb2xpY3kuZm9yUm9sZShwcm9wcy5zdGFnZS5waXBlbGluZS5yb2xlKVxuICAgICAgICAgICAgICAgICAgIC5ncmFudEV4ZWN1dGVDaGFuZ2VTZXQocHJvcHMpO1xuICB9XG59XG5cbi8vIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aCBCZWNhdXNlIG9mIGxvbmcgVVJMcyBpbiBkb2N1bWVudGF0aW9uXG4vKipcbiAqIFByb3BlcnRpZXMgY29tbW9uIHRvIENsb3VkRm9ybWF0aW9uIGFjdGlvbnMgdGhhdCBzdGFnZSBkZXBsb3ltZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb25Qcm9wcyBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBJQU0gcm9sZSB0byBhc3N1bWUgd2hlbiBkZXBsb3lpbmcgY2hhbmdlcy5cbiAgICpcbiAgICogSWYgbm90IHNwZWNpZmllZCwgYSBmcmVzaCByb2xlIGlzIGNyZWF0ZWQuIFRoZSByb2xlIGlzIGNyZWF0ZWQgd2l0aCB6ZXJvXG4gICAqIHBlcm1pc3Npb25zIHVubGVzcyBgZnVsbFBlcm1pc3Npb25zYCBpcyB0cnVlLCBpbiB3aGljaCBjYXNlIHRoZSByb2xlIHdpbGwgaGF2ZVxuICAgKiBmdWxsIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBIGZyZXNoIHJvbGUgd2l0aCBmdWxsIG9yIG5vIHBlcm1pc3Npb25zIChkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBmdWxsUGVybWlzc2lvbnNgKS5cbiAgICovXG4gIHJvbGU/OiBpYW0uUm9sZTtcblxuICAvKipcbiAgICogQWNrbm93bGVkZ2UgY2VydGFpbiBjaGFuZ2VzIG1hZGUgYXMgcGFydCBvZiBkZXBsb3ltZW50XG4gICAqXG4gICAqIEZvciBzdGFja3MgdGhhdCBjb250YWluIGNlcnRhaW4gcmVzb3VyY2VzLCBleHBsaWNpdCBhY2tub3dsZWRnZW1lbnQgdGhhdCBBV1MgQ2xvdWRGb3JtYXRpb25cbiAgICogbWlnaHQgY3JlYXRlIG9yIHVwZGF0ZSB0aG9zZSByZXNvdXJjZXMuIEZvciBleGFtcGxlLCB5b3UgbXVzdCBzcGVjaWZ5IENBUEFCSUxJVFlfSUFNIGlmIHlvdXJcbiAgICogc3RhY2sgdGVtcGxhdGUgY29udGFpbnMgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByZXNvdXJjZXMuIEZvciBtb3JlXG4gICAqIGluZm9ybWF0aW9uLCBzZWUgW0Fja25vd2xlZGdpbmcgSUFNIFJlc291cmNlcyBpbiBBV1MgQ2xvdWRGb3JtYXRpb24gVGVtcGxhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1pYW0tdGVtcGxhdGUuaHRtbCN1c2luZy1pYW0tY2FwYWJpbGl0aWVzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gY2FwYWJpdGlsaXRpZXMgcGFzc2VkLCB1bmxlc3MgYGZ1bGxQZXJtaXNzaW9uc2AgaXMgdHJ1ZVxuICAgKi9cbiAgY2FwYWJpbGl0aWVzPzogQ2xvdWRGb3JtYXRpb25DYXBhYmlsaXRpZXNbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBncmFudCBmdWxsIHBlcm1pc3Npb25zIHRvIENsb3VkRm9ybWF0aW9uIHdoaWxlIGRlcGxveWluZyB0aGlzIHRlbXBsYXRlLlxuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gYHRydWVgIGFmZmVjdHMgdGhlIGRlZmF1bHRzIGZvciBgcm9sZWAgYW5kIGBjYXBhYmlsaXRpZXNgLCBpZiB5b3VcbiAgICogZG9uJ3Qgc3BlY2lmeSBhbnkgYWx0ZXJuYXRpdmVzLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCByb2xlIHRoYXQgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3Ugd2lsbCBoYXZlIGZ1bGwgKGkuZS4sIGAqYClcbiAgICogcGVybWlzc2lvbnMgb24gYWxsIHJlc291cmNlcywgYW5kIHRoZSBkZXBsb3ltZW50IHdpbGwgaGF2ZSBuYW1lZCBJQU1cbiAgICogY2FwYWJpbGl0aWVzIChpLmUuLCBhYmxlIHRvIGNyZWF0ZSBhbGwgSUFNIHJlc291cmNlcykuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBzaG9ydGhhbmQgdGhhdCB5b3UgY2FuIHVzZSBpZiB5b3UgZnVsbHkgdHJ1c3QgdGhlIHRlbXBsYXRlcyB0aGF0XG4gICAqIGFyZSBkZXBsb3llZCBpbiB0aGlzIHBpcGVsaW5lLiBJZiB5b3Ugd2FudCBtb3JlIGZpbmUtZ3JhaW5lZCBwZXJtaXNzaW9ucyxcbiAgICogdXNlIGBhZGRUb1JvbGVQb2xpY3lgIGFuZCBgY2FwYWJpbGl0aWVzYCB0byBjb250cm9sIHdoYXQgdGhlIENsb3VkRm9ybWF0aW9uXG4gICAqIGRlcGxveW1lbnQgaXMgYWxsb3dlZCB0byBkby5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxQZXJtaXNzaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElucHV0IGFydGlmYWN0IHRvIHVzZSBmb3IgdGVtcGxhdGUgcGFyYW1ldGVycyB2YWx1ZXMgYW5kIHN0YWNrIHBvbGljeS5cbiAgICpcbiAgICogVGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gZmlsZSBzaG91bGQgY29udGFpbiBhIEpTT04gb2JqZWN0IHRoYXQgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOlxuICAgKiBgeyBcIlBhcmFtZXRlcnNcIjogey4uLn0sIFwiVGFnc1wiOiB7Li4ufSwgXCJTdGFja1BvbGljeVwiOiB7Li4uIH19YC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sXG4gICAqIHNlZSBbQVdTIENsb3VkRm9ybWF0aW9uIEFydGlmYWN0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvY29udGludW91cy1kZWxpdmVyeS1jb2RlcGlwZWxpbmUtY2ZuLWFydGlmYWN0cy5odG1sKS5cbiAgICpcbiAgICogTm90ZSB0aGF0IGlmIHlvdSBpbmNsdWRlIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyBwYXNzd29yZHMsIHJlc3RyaWN0IGFjY2VzcyB0byB0aGlzXG4gICAqIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gaW5wdXQgYXJ0aWZhY3RzXG4gICAqL1xuICB0ZW1wbGF0ZUNvbmZpZ3VyYXRpb24/OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3RQYXRoO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHRlbXBsYXRlIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIFRlbXBsYXRlIHBhcmFtZXRlcnMgc3BlY2lmaWVkIGhlcmUgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGVtcGxhdGUgcGFyYW1ldGVyc1xuICAgKiBmb3VuZCBpbiB0aGUgYXJ0aWZhY3Qgc3BlY2lmaWVkIGJ5IHRoZSBgdGVtcGxhdGVDb25maWd1cmF0aW9uYCBwcm9wZXJ0eS5cbiAgICpcbiAgICogV2UgcmVjb21tZW5kIHRoYXQgeW91IHVzZSB0aGUgdGVtcGxhdGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIHNwZWNpZnlcbiAgICogbW9zdCBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuIFVzZSBwYXJhbWV0ZXIgb3ZlcnJpZGVzIHRvIHNwZWNpZnkgb25seVxuICAgKiBkeW5hbWljIHBhcmFtZXRlciB2YWx1ZXMgKHZhbHVlcyB0aGF0IGFyZSB1bmtub3duIHVudGlsIHlvdSBydW4gdGhlXG4gICAqIHBpcGVsaW5lKS5cbiAgICpcbiAgICogQWxsIHBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIHN0YWNrIHRlbXBsYXRlLlxuICAgKlxuICAgKiBOb3RlOiB0aGUgZW50aXJlIG9iamVjdCBjYW5ub3QgYmUgbW9yZSB0aGFuIDFrQi5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gb3ZlcnJpZGVzXG4gICAqL1xuICBwYXJhbWV0ZXJPdmVycmlkZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbn1cbi8vIHRzbGludDplbmFibGU6bWF4LWxpbmUtbGVuZ3RoXG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIENsb3VkRm9ybWF0aW9uIGFjdGlvbnMgdGhhdCBleGVjdXRlIG9yIHN0YWdlIGRlcGxveW1lbnRzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvbiBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25BY3Rpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLlJvbGU7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvblByb3BzLCBjb25maWd1cmF0aW9uOiBhbnkpIHtcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSBwcm9wcy5mdWxsUGVybWlzc2lvbnMgJiYgcHJvcHMuY2FwYWJpbGl0aWVzID09PSB1bmRlZmluZWQgPyBbQ2xvdWRGb3JtYXRpb25DYXBhYmlsaXRpZXMuTmFtZWRJQU1dIDogcHJvcHMuY2FwYWJpbGl0aWVzO1xuXG4gICAgc3VwZXIocGFyZW50LCBpZCwgcHJvcHMsIHtcbiAgICAgIC4uLmNvbmZpZ3VyYXRpb24sXG4gICAgICAvLyBUaGlzIG11c3QgYmUgYSBzdHJpbmcsIHNvIGZsYXR0ZW4gdGhlIGxpc3QgdG8gYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLlxuICAgICAgQ2FwYWJpbGl0aWVzOiAoY2FwYWJpbGl0aWVzICYmIGNhcGFiaWxpdGllcy5qb2luKCcsJykpIHx8IHVuZGVmaW5lZCxcbiAgICAgIFJvbGVBcm46IG5ldyBjZGsuVG9rZW4oKCkgPT4gdGhpcy5yb2xlLnJvbGVBcm4pLFxuICAgICAgUGFyYW1ldGVyT3ZlcnJpZGVzOiBjZGsuQ2xvdWRGb3JtYXRpb25KU09OLnN0cmluZ2lmeShwcm9wcy5wYXJhbWV0ZXJPdmVycmlkZXMpLFxuICAgICAgVGVtcGxhdGVDb25maWd1cmF0aW9uOiBwcm9wcy50ZW1wbGF0ZUNvbmZpZ3VyYXRpb24gPyBwcm9wcy50ZW1wbGF0ZUNvbmZpZ3VyYXRpb24ubG9jYXRpb24gOiB1bmRlZmluZWQsXG4gICAgICBTdGFja05hbWU6IHByb3BzLnN0YWNrTmFtZSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5yb2xlKSB7XG4gICAgICB0aGlzLnJvbGUgPSBwcm9wcy5yb2xlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ1JvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJylcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMuZnVsbFBlcm1pc3Npb25zKSB7XG4gICAgICAgIHRoaXMucm9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCgpLmFkZEFjdGlvbignKicpLmFkZEFsbFJlc291cmNlcygpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBTaW5nbGV0b25Qb2xpY3kuZm9yUm9sZShwcm9wcy5zdGFnZS5waXBlbGluZS5yb2xlKS5ncmFudFBhc3NSb2xlKHRoaXMucm9sZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHN0YXRlbWVudCB0byB0aGUgc2VydmljZSByb2xlIGFzc3VtZWQgYnkgQ2xvdWRGb3JtYXRpb24gd2hpbGUgZXhlY3V0aW5nIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFkZFRvUm9sZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlLmFkZFRvUG9saWN5KHN0YXRlbWVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgUGlwZWxpbmVDcmVhdGVSZXBsYWNlQ2hhbmdlU2V0QWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ3JlYXRlUmVwbGFjZUNoYW5nZVNldEFjdGlvblByb3BzIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNoYW5nZSBzZXQgdG8gY3JlYXRlIG9yIHVwZGF0ZS5cbiAgICovXG4gIGNoYW5nZVNldE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgYXJ0aWZhY3Qgd2l0aCB0aGUgQ2hhbmdlU2V0J3MgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVcbiAgICovXG4gIHRlbXBsYXRlUGF0aDogY29kZXBpcGVsaW5lLkFydGlmYWN0UGF0aDtcbn1cblxuLyoqXG4gKiBDb2RlUGlwZWxpbmUgYWN0aW9uIHRvIHByZXBhcmUgYSBjaGFuZ2Ugc2V0LlxuICpcbiAqIENyZWF0ZXMgdGhlIGNoYW5nZSBzZXQgaWYgaXQgZG9lc24ndCBleGlzdCBiYXNlZCBvbiB0aGUgc3RhY2sgbmFtZSBhbmQgdGVtcGxhdGUgdGhhdCB5b3Ugc3VibWl0LlxuICogSWYgdGhlIGNoYW5nZSBzZXQgZXhpc3RzLCBBV1MgQ2xvdWRGb3JtYXRpb24gZGVsZXRlcyBpdCwgYW5kIHRoZW4gY3JlYXRlcyBhIG5ldyBvbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZUNyZWF0ZVJlcGxhY2VDaGFuZ2VTZXRBY3Rpb24gZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uIHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVDcmVhdGVSZXBsYWNlQ2hhbmdlU2V0QWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkLCBwcm9wcywge1xuICAgICAgQWN0aW9uTW9kZTogJ0NIQU5HRV9TRVRfUkVQTEFDRScsXG4gICAgICBDaGFuZ2VTZXROYW1lOiBwcm9wcy5jaGFuZ2VTZXROYW1lLFxuICAgICAgVGVtcGxhdGVQYXRoOiBwcm9wcy50ZW1wbGF0ZVBhdGgubG9jYXRpb24sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZElucHV0QXJ0aWZhY3QocHJvcHMudGVtcGxhdGVQYXRoLmFydGlmYWN0KTtcbiAgICBpZiAocHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uICYmIHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5hcnRpZmFjdC5uYW1lICE9PSBwcm9wcy50ZW1wbGF0ZVBhdGguYXJ0aWZhY3QubmFtZSkge1xuICAgICAgdGhpcy5hZGRJbnB1dEFydGlmYWN0KHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5hcnRpZmFjdCk7XG4gICAgfVxuXG4gICAgU2luZ2xldG9uUG9saWN5LmZvclJvbGUocHJvcHMuc3RhZ2UucGlwZWxpbmUucm9sZSkuZ3JhbnRDcmVhdGVSZXBsYWNlQ2hhbmdlU2V0KHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBQaXBlbGluZUNyZWF0ZVVwZGF0ZVN0YWNrQWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQ3JlYXRlVXBkYXRlU3RhY2tBY3Rpb25Qcm9wcyBleHRlbmRzIFBpcGVsaW5lQ2xvdWRGb3JtYXRpb25EZXBsb3lBY3Rpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBJbnB1dCBhcnRpZmFjdCB3aXRoIHRoZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSB0byBkZXBsb3lcbiAgICovXG4gIHRlbXBsYXRlUGF0aDogY29kZXBpcGVsaW5lLkFydGlmYWN0UGF0aDtcblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgc3RhY2sgaWYgaXQncyBpbiBhIGZhaWxlZCBzdGF0ZS5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSBhbmQgdGhlIHN0YWNrIGlzIGluIGEgZmFpbGVkIHN0YXRlIChvbmUgb2ZcbiAgICogUk9MTEJBQ0tfQ09NUExFVEUsIFJPTExCQUNLX0ZBSUxFRCwgQ1JFQVRFX0ZBSUxFRCwgREVMRVRFX0ZBSUxFRCwgb3JcbiAgICogVVBEQVRFX1JPTExCQUNLX0ZBSUxFRCksIEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIHRoZSBzdGFjayBhbmQgdGhlblxuICAgKiBjcmVhdGVzIGEgbmV3IHN0YWNrLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIG5vdCBzZXQgdG8gdHJ1ZSBhbmQgdGhlIHN0YWNrIGlzIGluIGEgZmFpbGVkIHN0YXRlLFxuICAgKiB0aGUgZGVwbG95bWVudCBmYWlscy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlcGxhY2VPbkZhaWx1cmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvZGVQaXBlbGluZSBhY3Rpb24gdG8gZGVwbG95IGEgc3RhY2suXG4gKlxuICogQ3JlYXRlcyB0aGUgc3RhY2sgaWYgdGhlIHNwZWNpZmllZCBzdGFjayBkb2Vzbid0IGV4aXN0LiBJZiB0aGUgc3RhY2sgZXhpc3RzLFxuICogQVdTIENsb3VkRm9ybWF0aW9uIHVwZGF0ZXMgdGhlIHN0YWNrLiBVc2UgdGhpcyBhY3Rpb24gdG8gdXBkYXRlIGV4aXN0aW5nXG4gKiBzdGFja3MuXG4gKlxuICogQVdTIENvZGVQaXBlbGluZSB3b24ndCByZXBsYWNlIHRoZSBzdGFjaywgYW5kIHdpbGwgZmFpbCBkZXBsb3ltZW50IGlmIHRoZVxuICogc3RhY2sgaXMgaW4gYSBmYWlsZWQgc3RhdGUuIFVzZSBgUmVwbGFjZU9uRmFpbHVyZWAgZm9yIGFuIGFjdGlvbiB0aGF0XG4gKiB3aWxsIGRlbGV0ZSBhbmQgcmVjcmVhdGUgdGhlIHN0YWNrIHRvIHRyeSBhbmQgcmVjb3ZlciBmcm9tIGZhaWxlZCBzdGF0ZXMuXG4gKlxuICogVXNlIHRoaXMgYWN0aW9uIHRvIGF1dG9tYXRpY2FsbHkgcmVwbGFjZSBmYWlsZWQgc3RhY2tzIHdpdGhvdXQgcmVjb3ZlcmluZyBvclxuICogdHJvdWJsZXNob290aW5nIHRoZW0uIFlvdSB3b3VsZCB0eXBpY2FsbHkgY2hvb3NlIHRoaXMgbW9kZSBmb3IgdGVzdGluZy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lQ3JlYXRlVXBkYXRlU3RhY2tBY3Rpb24gZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uIHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVDcmVhdGVVcGRhdGVTdGFja0FjdGlvblByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCwgcHJvcHMsIHtcbiAgICAgIEFjdGlvbk1vZGU6IHByb3BzLnJlcGxhY2VPbkZhaWx1cmUgPyAnUkVQTEFDRV9PTl9GQUlMVVJFJyA6ICdDUkVBVEVfVVBEQVRFJyxcbiAgICAgIFRlbXBsYXRlUGF0aDogcHJvcHMudGVtcGxhdGVQYXRoLmxvY2F0aW9uXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZElucHV0QXJ0aWZhY3QocHJvcHMudGVtcGxhdGVQYXRoLmFydGlmYWN0KTtcbiAgICBpZiAocHJvcHMudGVtcGxhdGVDb25maWd1cmF0aW9uICYmIHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5hcnRpZmFjdC5uYW1lICE9PSBwcm9wcy50ZW1wbGF0ZVBhdGguYXJ0aWZhY3QubmFtZSkge1xuICAgICAgdGhpcy5hZGRJbnB1dEFydGlmYWN0KHByb3BzLnRlbXBsYXRlQ29uZmlndXJhdGlvbi5hcnRpZmFjdCk7XG4gICAgfVxuXG4gICAgU2luZ2xldG9uUG9saWN5LmZvclJvbGUocHJvcHMuc3RhZ2UucGlwZWxpbmUucm9sZSkuZ3JhbnRDcmVhdGVVcGRhdGVTdGFjayhwcm9wcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgUGlwZWxpbmVEZWxldGVTdGFja0FjdGlvbi5cbiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZURlbGV0ZVN0YWNrQWN0aW9uUHJvcHMgZXh0ZW5kcyBQaXBlbGluZUNsb3VkRm9ybWF0aW9uRGVwbG95QWN0aW9uUHJvcHMge1xufVxuXG4vKipcbiAqIENvZGVQaXBlbGluZSBhY3Rpb24gdG8gZGVsZXRlIGEgc3RhY2suXG4gKlxuICogRGVsZXRlcyBhIHN0YWNrLiBJZiB5b3Ugc3BlY2lmeSBhIHN0YWNrIHRoYXQgZG9lc24ndCBleGlzdCwgdGhlIGFjdGlvbiBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5XG4gKiB3aXRob3V0IGRlbGV0aW5nIGEgc3RhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZURlbGV0ZVN0YWNrQWN0aW9uIGV4dGVuZHMgUGlwZWxpbmVDbG91ZEZvcm1hdGlvbkRlcGxveUFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lRGVsZXRlU3RhY2tBY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQsIHByb3BzLCB7XG4gICAgICBBY3Rpb25Nb2RlOiAnREVMRVRFX09OTFknLFxuICAgIH0pO1xuICAgIFNpbmdsZXRvblBvbGljeS5mb3JSb2xlKHByb3BzLnN0YWdlLnBpcGVsaW5lLnJvbGUpLmdyYW50RGVsZXRlU3RhY2socHJvcHMpO1xuICB9XG59XG5cbi8qKlxuICogQ2FwYWJpbGl0aWVzIHRoYXQgYWZmZWN0IHdoZXRoZXIgQ2xvdWRGb3JtYXRpb24gaXMgYWxsb3dlZCB0byBjaGFuZ2UgSUFNIHJlc291cmNlc1xuICovXG5leHBvcnQgZW51bSBDbG91ZEZvcm1hdGlvbkNhcGFiaWxpdGllcyB7XG4gIC8qKlxuICAgKiBDYXBhYmlsaXR5IHRvIGNyZWF0ZSBhbm9ueW1vdXMgSUFNIHJlc291cmNlc1xuICAgKlxuICAgKiBQYXNzIHRoaXMgY2FwYWJpbGl0eSBpZiB5b3UncmUgb25seSBjcmVhdGluZyBhbm9ueW1vdXMgcmVzb3VyY2VzLlxuICAgKi9cbiAgSUFNID0gJ0NBUEFCSUxJVFlfSUFNJyxcblxuICAvKipcbiAgICogQ2FwYWJpbGl0eSB0byBjcmVhdGUgbmFtZWQgSUFNIHJlc291cmNlcy5cbiAgICpcbiAgICogUGFzcyB0aGlzIGNhcGFiaWxpdHkgaWYgeW91J3JlIGNyZWF0aW5nIElBTSByZXNvdXJjZXMgdGhhdCBoYXZlIHBoeXNpY2FsXG4gICAqIG5hbWVzLlxuICAgKlxuICAgKiBgQ2xvdWRGb3JtYXRpb25DYXBhYmlsaXRpZXMuTmFtZWRJQU1gIGltcGxpZXMgYENsb3VkRm9ybWF0aW9uQ2FwYWJpbGl0aWVzLklBTWA7IHlvdSBkb24ndCBoYXZlIHRvIHBhc3MgYm90aC5cbiAgICovXG4gIE5hbWVkSUFNID0gJ0NBUEFCSUxJVFlfTkFNRURfSUFNJ1xufVxuXG4vKipcbiAqIE1hbmFnZXMgYSBidW5jaCBvZiBzaW5nbGV0b24teSBzdGF0ZW1lbnRzIG9uIHRoZSBwb2xpY3kgb2YgYW4gSUFNIFJvbGUuXG4gKiBEZWRpY2F0ZWQgbWV0aG9kcyBjYW4gYmUgdXNlZCB0byBhZGQgc3BlY2lmaWMgcGVybWlzc2lvbnMgdG8gdGhlIHJvbGUgcG9saWN5XG4gKiB1c2luZyBhcyBmZXcgc3RhdGVtZW50cyBhcyBwb3NzaWJsZSAoYWRkaW5nIHJlc291cmNlcyB0byBleGlzdGluZyBjb21wYXRpYmxlXG4gKiBzdGF0ZW1lbnRzIGluc3RlYWQgb2YgYWRkaW5nIG5ldyBzdGF0ZW1lbnRzIHdoZW5ldmVyIHBvc3NpYmxlKS5cbiAqXG4gKiBTdGF0ZW1lbnRzIGNyZWF0ZWQgb3V0c2lkZSBvZiB0aGlzIGNsYXNzIGFyZSBub3QgY29uc2lkZXJlZCB3aGVuIGFkZGluZyBuZXdcbiAqIHBlcm1pc3Npb25zLlxuICovXG5jbGFzcyBTaW5nbGV0b25Qb2xpY3kgZXh0ZW5kcyBjZGsuQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIE9idGFpbiBhIFNpbmdsZXRvblBvbGljeSBmb3IgYSBnaXZlbiByb2xlLlxuICAgKiBAcGFyYW0gcm9sZSB0aGUgUm9sZSB0aGlzIHBvbGljeSBpcyBib3VuZCB0by5cbiAgICogQHJldHVybnMgdGhlIFNpbmdsZXRvblBvbGljeSBmb3IgdGhpcyByb2xlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JSb2xlKHJvbGU6IGlhbS5Sb2xlKTogU2luZ2xldG9uUG9saWN5IHtcbiAgICBjb25zdCBmb3VuZCA9IHJvbGUudHJ5RmluZENoaWxkKFNpbmdsZXRvblBvbGljeS5VVUlEKTtcbiAgICByZXR1cm4gKGZvdW5kIGFzIFNpbmdsZXRvblBvbGljeSkgfHwgbmV3IFNpbmdsZXRvblBvbGljeShyb2xlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFVVSUQgPSAnODM4OWU3NWYtMDgxMC00ODM4LWJmNjQtZDZmODVhOTVjZjgzJztcblxuICBwcml2YXRlIHN0YXRlbWVudHM6IHsgW2tleTogc3RyaW5nXTogaWFtLlBvbGljeVN0YXRlbWVudCB9ID0ge307XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvbGU6IGlhbS5Sb2xlKSB7XG4gICAgc3VwZXIocm9sZSwgU2luZ2xldG9uUG9saWN5LlVVSUQpO1xuICB9XG5cbiAgcHVibGljIGdyYW50RXhlY3V0ZUNoYW5nZVNldChwcm9wczogeyBzdGFja05hbWU6IHN0cmluZywgY2hhbmdlU2V0TmFtZTogc3RyaW5nLCByZWdpb24/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVtZW50Rm9yKHtcbiAgICAgIGFjdGlvbnM6IFsnY2xvdWRmb3JtYXRpb246RXhlY3V0ZUNoYW5nZVNldCddLFxuICAgICAgY29uZGl0aW9uczoge8KgU3RyaW5nRXF1YWxzOiB7ICdjbG91ZGZvcm1hdGlvbjpDaGFuZ2VTZXROYW1lJzogcHJvcHMuY2hhbmdlU2V0TmFtZSB9IH0sXG4gICAgfSkuYWRkUmVzb3VyY2Uoc3RhY2tBcm5Gcm9tUHJvcHMocHJvcHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudENyZWF0ZVJlcGxhY2VDaGFuZ2VTZXQocHJvcHM6IHsgc3RhY2tOYW1lOiBzdHJpbmcsIGNoYW5nZVNldE5hbWU6IHN0cmluZywgcmVnaW9uPzogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlbWVudEZvcih7XG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdjbG91ZGZvcm1hdGlvbjpDcmVhdGVDaGFuZ2VTZXQnLFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVsZXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlQ2hhbmdlU2V0JyxcbiAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tzJyxcbiAgICAgIF0sXG4gICAgICBjb25kaXRpb25zOiB7IFN0cmluZ0VxdWFsc0lmRXhpc3RzOiB7ICdjbG91ZGZvcm1hdGlvbjpDaGFuZ2VTZXROYW1lJzogcHJvcHMuY2hhbmdlU2V0TmFtZSB9IH0sXG4gICAgfSkuYWRkUmVzb3VyY2Uoc3RhY2tBcm5Gcm9tUHJvcHMocHJvcHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudENyZWF0ZVVwZGF0ZVN0YWNrKHByb3BzOiB7IHN0YWNrTmFtZTogc3RyaW5nLCByZXBsYWNlT25GYWlsdXJlPzogYm9vbGVhbiwgcmVnaW9uPzogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICBjb25zdCBhY3Rpb25zID0gW1xuICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2sqJyxcbiAgICAgICdjbG91ZGZvcm1hdGlvbjpDcmVhdGVTdGFjaycsXG4gICAgICAnY2xvdWRmb3JtYXRpb246VXBkYXRlU3RhY2snLFxuICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlKicsXG4gICAgICAnY2xvdWRmb3JtYXRpb246VmFsaWRhdGVUZW1wbGF0ZScsXG4gICAgICAnY2xvdWRmb3JtYXRpb246R2V0U3RhY2tQb2xpY3knLFxuICAgICAgJ2Nsb3VkZm9ybWF0aW9uOlNldFN0YWNrUG9saWN5JyxcbiAgICBdO1xuICAgIGlmIChwcm9wcy5yZXBsYWNlT25GYWlsdXJlKSB7XG4gICAgICBhY3Rpb25zLnB1c2goJ2Nsb3VkZm9ybWF0aW9uOkRlbGV0ZVN0YWNrJyk7XG4gICAgfVxuICAgIHRoaXMuc3RhdGVtZW50Rm9yKHsgYWN0aW9ucyB9KS5hZGRSZXNvdXJjZShzdGFja0FybkZyb21Qcm9wcyhwcm9wcykpO1xuICB9XG5cbiAgcHVibGljIGdyYW50RGVsZXRlU3RhY2socHJvcHM6IHsgc3RhY2tOYW1lOiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZyB9KTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZW1lbnRGb3Ioe1xuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFjayonLFxuICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVsZXRlU3RhY2snLFxuICAgICAgXVxuICAgIH0pLmFkZFJlc291cmNlKHN0YWNrQXJuRnJvbVByb3BzKHByb3BzKSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRQYXNzUm9sZShyb2xlOiBpYW0uUm9sZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVtZW50Rm9yKHsgYWN0aW9uczogWydpYW06UGFzc1JvbGUnXSB9KS5hZGRSZXNvdXJjZShyb2xlLnJvbGVBcm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0ZW1lbnRGb3IodGVtcGxhdGU6IFN0YXRlbWVudFRlbXBsYXRlKTogaWFtLlBvbGljeVN0YXRlbWVudCB7XG4gICAgY29uc3Qga2V5ID0ga2V5Rm9yKHRlbXBsYXRlKTtcbiAgICBpZiAoIShrZXkgaW4gdGhpcy5zdGF0ZW1lbnRzKSkge1xuICAgICAgdGhpcy5zdGF0ZW1lbnRzW2tleV0gPSBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCgpLmFkZEFjdGlvbnMoLi4udGVtcGxhdGUuYWN0aW9ucyk7XG4gICAgICBpZiAodGVtcGxhdGUuY29uZGl0aW9ucykge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHNba2V5XS5hZGRDb25kaXRpb25zKHRlbXBsYXRlLmNvbmRpdGlvbnMpO1xuICAgICAgfVxuICAgICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KHRoaXMuc3RhdGVtZW50c1trZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50c1trZXldO1xuXG4gICAgZnVuY3Rpb24ga2V5Rm9yKHByb3BzOiBTdGF0ZW1lbnRUZW1wbGF0ZSk6IHN0cmluZyB7XG4gICAgICBjb25zdCBhY3Rpb25zID0gYCR7cHJvcHMuYWN0aW9ucy5zb3J0KCkuam9pbignXFx4MUYnKX1gO1xuICAgICAgY29uc3QgY29uZGl0aW9ucyA9IGZvcm1hdENvbmRpdGlvbnMocHJvcHMuY29uZGl0aW9ucyk7XG4gICAgICByZXR1cm4gYCR7YWN0aW9uc31cXHgxRCR7Y29uZGl0aW9uc31gO1xuXG4gICAgICBmdW5jdGlvbiBmb3JtYXRDb25kaXRpb25zKGNvbmQ/OiBTdGF0ZW1lbnRDb25kaXRpb24pOiBzdHJpbmcge1xuICAgICAgICBpZiAoY29uZCA9PSBudWxsKSB7IHJldHVybiAnJzsgfVxuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgIGZvciAoY29uc3Qgb3Agb2YgT2JqZWN0LmtleXMoY29uZCkuc29ydCgpKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGAke29wfVxceDFFYDtcbiAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSBjb25kW29wXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBPYmplY3Qua2V5cyhjb25kaXRpb24pLnNvcnQoKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb25kaXRpb25bYXR0cmlidXRlXTtcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHt2YWx1ZX1cXHgxRmA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBTdGF0ZW1lbnRUZW1wbGF0ZSB7XG4gIGFjdGlvbnM6IHN0cmluZ1tdO1xuICBjb25kaXRpb25zPzogU3RhdGVtZW50Q29uZGl0aW9uO1xufVxuXG50eXBlIFN0YXRlbWVudENvbmRpdGlvbiA9IHsgW29wOiBzdHJpbmddOiB7IFthdHRyaWJ1dGU6IHN0cmluZ106IHN0cmluZyB9IH07XG5cbmZ1bmN0aW9uIHN0YWNrQXJuRnJvbVByb3BzKHByb3BzOiB7IHN0YWNrTmFtZTogc3RyaW5nLCByZWdpb24/OiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gIHJldHVybiBjZGsuQXJuVXRpbHMuZnJvbUNvbXBvbmVudHMoe1xuICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgIHNlcnZpY2U6ICdjbG91ZGZvcm1hdGlvbicsXG4gICAgcmVzb3VyY2U6ICdzdGFjaycsXG4gICAgcmVzb3VyY2VOYW1lOiBgJHtwcm9wcy5zdGFja05hbWV9LypgXG4gIH0pO1xufVxuIl19
{
"name": "@aws-cdk/aws-cloudformation",
"version": "0.16.0",
"version": "0.17.0",
"description": "CDK Constructs for AWS CloudFormation",

@@ -59,26 +59,26 @@ "main": "lib/index.js",

"devDependencies": {
"@aws-cdk/assert": "^0.16.0",
"@aws-cdk/aws-events": "^0.16.0",
"@aws-cdk/assert": "^0.17.0",
"@aws-cdk/aws-events": "^0.17.0",
"@types/lodash": "^4.14.116",
"cdk-build-tools": "^0.16.0",
"cdk-integ-tools": "^0.16.0",
"cfn2ts": "^0.16.0",
"cdk-build-tools": "^0.17.0",
"cdk-integ-tools": "^0.17.0",
"cfn2ts": "^0.17.0",
"lodash": "^4.17.11",
"pkglint": "^0.16.0"
"pkglint": "^0.17.0"
},
"dependencies": {
"@aws-cdk/aws-codepipeline-api": "^0.16.0",
"@aws-cdk/aws-iam": "^0.16.0",
"@aws-cdk/aws-lambda": "^0.16.0",
"@aws-cdk/aws-sns": "^0.16.0",
"@aws-cdk/cdk": "^0.16.0"
"@aws-cdk/aws-codepipeline-api": "^0.17.0",
"@aws-cdk/aws-iam": "^0.17.0",
"@aws-cdk/aws-lambda": "^0.17.0",
"@aws-cdk/aws-sns": "^0.17.0",
"@aws-cdk/cdk": "^0.17.0"
},
"homepage": "https://github.com/awslabs/aws-cdk",
"peerDependencies": {
"@aws-cdk/aws-codepipeline-api": "^0.16.0",
"@aws-cdk/aws-iam": "^0.16.0",
"@aws-cdk/aws-lambda": "^0.16.0",
"@aws-cdk/aws-sns": "^0.16.0",
"@aws-cdk/cdk": "^0.16.0"
"@aws-cdk/aws-codepipeline-api": "^0.17.0",
"@aws-cdk/aws-iam": "^0.17.0",
"@aws-cdk/aws-lambda": "^0.17.0",
"@aws-cdk/aws-sns": "^0.17.0",
"@aws-cdk/cdk": "^0.17.0"
}
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc