Socket
Socket
Sign inDemoInstall

@aws-cdk/aws-ec2

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-ec2 - npm Package Compare versions

Comparing version 0.17.0 to 0.18.0

lib/vpc-network-provider.d.ts

1

lib/index.d.ts

@@ -8,2 +8,3 @@ export * from './connections';

export * from './vpc-ref';
export * from './vpc-network-provider';
export * from './ec2.generated';

3

lib/index.js

@@ -13,4 +13,5 @@ "use strict";

__export(require("./vpc-ref"));
__export(require("./vpc-network-provider"));
// AWS::EC2 CloudFormation Resources:
__export(require("./ec2.generated"));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUE4QjtBQUM5QixzQ0FBaUM7QUFDakMscUNBQWdDO0FBQ2hDLHNDQUFpQztBQUNqQywyQ0FBc0M7QUFDdEMsMkJBQXNCO0FBQ3RCLCtCQUEwQjtBQUUxQixxQ0FBcUM7QUFDckMscUNBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25uZWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2luc3RhbmNlLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFjaGluZS1pbWFnZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5LWdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vc2VjdXJpdHktZ3JvdXAtcnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZwYyc7XG5leHBvcnQgKiBmcm9tICcuL3ZwYy1yZWYnO1xuXG4vLyBBV1M6OkVDMiBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZXM6XG5leHBvcnQgKiBmcm9tICcuL2VjMi5nZW5lcmF0ZWQnO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUE4QjtBQUM5QixzQ0FBaUM7QUFDakMscUNBQWdDO0FBQ2hDLHNDQUFpQztBQUNqQywyQ0FBc0M7QUFDdEMsMkJBQXNCO0FBQ3RCLCtCQUEwQjtBQUMxQiw0Q0FBdUM7QUFFdkMscUNBQXFDO0FBQ3JDLHFDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29ubmVjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnN0YW5jZS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL21hY2hpbmUtaW1hZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWN1cml0eS1ncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5LWdyb3VwLXJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi92cGMnO1xuZXhwb3J0ICogZnJvbSAnLi92cGMtcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vdnBjLW5ldHdvcmstcHJvdmlkZXInO1xuXG4vLyBBV1M6OkVDMiBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZXM6XG5leHBvcnQgKiBmcm9tICcuL2VjMi5nZW5lcmF0ZWQnO1xuIl19
import { Construct, IDependable } from "@aws-cdk/cdk";
import { VpcNetworkProviderProps } from './vpc-network-provider';
/**

@@ -75,2 +76,6 @@ * The type of Subnet

/**
* Import an existing VPC from context
*/
static importFromContext(parent: Construct, name: string, props: VpcNetworkProviderProps): VpcNetworkRef;
/**
* Identifier for this VPC

@@ -77,0 +82,0 @@ */

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

const util_1 = require("./util");
const vpc_network_provider_1 = require("./vpc-network-provider");
/**

@@ -61,2 +62,8 @@ * The type of Subnet

/**
* Import an existing VPC from context
*/
static importFromContext(parent, name, props) {
return VpcNetworkRef.import(parent, name, new vpc_network_provider_1.VpcNetworkProvider(parent, props).vpcProps);
}
/**
* Return the subnets appropriate for the placement strategy

@@ -161,2 +168,2 @@ */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZwYy1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBOEQ7QUFDOUQsaUNBQTBFO0FBRTFFOztHQUVHO0FBQ0gsSUFBWSxVQWtDWDtBQWxDRCxXQUFZLFVBQVU7SUFDcEI7Ozs7O09BS0c7SUFDSCxtREFBWSxDQUFBO0lBRVo7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxpREFBVyxDQUFBO0lBRVg7Ozs7Ozs7OztPQVNHO0lBQ0gsK0NBQVUsQ0FBQTtBQUNaLENBQUMsRUFsQ1csVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUFrQ3JCO0FBZ0NEOztHQUVHO0FBQ0gsTUFBc0IsYUFBYyxTQUFRLGVBQVM7SUFBckQ7O1FBaUNFOztXQUVHO1FBQ2EsdUJBQWtCLEdBQWtCLEVBQUUsQ0FBQztJQTREekQsQ0FBQztJQS9GQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBeUI7UUFDN0UsT0FBTyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQWdDRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxZQUFrQyxFQUFFO1FBQ2pELElBQUksU0FBUyxDQUFDLFlBQVksS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1NBQy9FO1FBRUQsaUJBQWlCO1FBQ2pCLElBQUksU0FBUyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0YsTUFBTSxlQUFlLEdBQUcsVUFB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QyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFcEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0LCBJRGVwZW5kYWJsZSwgT3V0cHV0IH0gZnJvbSBcIkBhd3MtY2RrL2Nka1wiO1xuaW1wb3J0IHsgRXhwb3J0U3VibmV0R3JvdXAsIEltcG9ydFN1Ym5ldEdyb3VwLCBzdWJuZXROYW1lIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBTdWJuZXRcbiAqL1xuZXhwb3J0IGVudW0gU3VibmV0VHlwZSB7XG4gIC8qKlxuICAgKiBJc29sYXRlZCBTdWJuZXRzIGRvIG5vdCByb3V0ZSBPdXRib3VuZCB0cmFmZmljXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIGdvb2QgZm9yIHN1Ym5ldHMgd2l0aCBSRFMgb3JcbiAgICogRWxhc3RpY2FjaGUgZW5kcG9pbnRzXG4gICAqL1xuICBJc29sYXRlZCA9IDEsXG5cbiAgLyoqXG4gICAqIFN1Ym5ldCB0aGF0IHJvdXRlcyB0byB0aGUgaW50ZXJuZXQsIGJ1dCBub3QgdmljZSB2ZXJzYS5cbiAgICpcbiAgICogSW5zdGFuY2VzIGluIGEgcHJpdmF0ZSBzdWJuZXQgY2FuIGNvbm5lY3QgdG8gdGhlIEludGVybmV0LCBidXQgd2lsbCBub3RcbiAgICogYWxsb3cgY29ubmVjdGlvbnMgdG8gYmUgaW5pdGlhdGVkIGZyb20gdGhlIEludGVybmV0LlxuICAgKlxuICAgKiBPdXRib3VuZCB0cmFmZmljIHdpbGwgYmUgcm91dGVkIHZpYSBhIE5BVCBHYXRld2F5LiBQcmVmZXJlbmNlIGJlaW5nIGluXG4gICAqIHRoZSBzYW1lIEFaLCBidXQgaWYgbm90IGF2YWlsYWJsZSB3aWxsIHVzZSBhbm90aGVyIEFaIChjb250cm9sIGJ5XG4gICAqIHNwZWNpZmluZyBgbWF4R2F0ZXdheXNgIG9uIFZwY05ldHdvcmspLiBUaGlzIG1pZ2h0IGJlIHVzZWQgZm9yXG4gICAqIGV4cGVyaW1lbnRhbCBjb3N0IGNvbnNjaW91cyBhY2NvdW50cyBvciBhY2NvdW50cyB3aGVyZSBIQSBvdXRib3VuZFxuICAgKiB0cmFmZmljIGlzIG5vdCBuZWVkZWQuXG4gICAqL1xuICBQcml2YXRlID0gMixcblxuICAvKipcbiAgICogU3VibmV0IGNvbm5lY3RlZCB0byB0aGUgSW50ZXJuZXRcbiAgICpcbiAgICogSW5zdGFuY2VzIGluIGEgUHVibGljIHN1Ym5ldCBjYW4gY29ubmVjdCB0byB0aGUgSW50ZXJuZXQgYW5kIGNhbiBiZVxuICAgKiBjb25uZWN0ZWQgdG8gZnJvbSB0aGUgSW50ZXJuZXQgYXMgbG9uZyBhcyB0aGV5IGFyZSBsYXVuY2hlZCB3aXRoIHB1YmxpY1xuICAgKiBJUHMgKGNvbnRyb2xsZWQgb24gdGhlIEF1dG9TY2FsaW5nR3JvdXAgb3Igb3RoZXIgY29uc3RydWN0cyB0aGF0IGxhdW5jaFxuICAgKiBpbnN0YW5jZXMpLlxuICAgKlxuICAgKiBQdWJsaWMgc3VibmV0cyByb3V0ZSBvdXRib3VuZCB0cmFmZmljIHZpYSBhbiBJbnRlcm5ldCBHYXRld2F5LlxuICAgKi9cbiAgUHVibGljID0gM1xufVxuXG4vKipcbiAqIEN1c3RvbWl6ZSBob3cgaW5zdGFuY2VzIGFyZSBwbGFjZWQgaW5zaWRlIGEgVlBDXG4gKlxuICogQ29uc3RydWN0cyB0aGF0IGFsbG93IGN1c3RvbWl6YXRpb24gb2YgVlBDIHBsYWNlbWVudCB1c2UgcGFyYW1ldGVycyBvZiB0aGlzXG4gKiB0eXBlIHRvIHByb3ZpZGUgcGxhY2VtZW50IHNldHRpbmdzLlxuICpcbiAqIEJ5IGRlZmF1bHQsIHRoZSBpbnN0YW5jZXMgYXJlIHBsYWNlZCBpbiB0aGUgcHJpdmF0ZSBzdWJuZXRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY1BsYWNlbWVudFN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIFBsYWNlIHRoZSBpbnN0YW5jZXMgaW4gdGhlIHN1Ym5ldHMgb2YgdGhlIGdpdmVuIHR5cGVcbiAgICpcbiAgICogQXQgbW9zdCBvbmUgb2YgYHN1Ym5ldHNUb1VzZWAgYW5kIGBzdWJuZXROYW1lYCBjYW4gYmUgc3VwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1Ym5ldFR5cGUuUHJpdmF0ZVxuICAgKi9cbiAgc3VibmV0c1RvVXNlPzogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogUGxhY2UgdGhlIGluc3RhbmNlcyBpbiB0aGUgc3VibmV0cyB3aXRoIHRoZSBnaXZlbiBuYW1lXG4gICAqXG4gICAqIChUaGlzIGlzIHRoZSBuYW1lIHN1cHBsaWVkIGluIHN1Ym5ldENvbmZpZ3VyYXRpb24pLlxuICAgKlxuICAgKiBBdCBtb3N0IG9uZSBvZiBgc3VibmV0c1RvVXNlYCBhbmQgYHN1Ym5ldE5hbWVgIGNhbiBiZSBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgbmFtZVxuICAgKi9cbiAgc3VibmV0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBWUENcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZwY05ldHdvcmtSZWYgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJRGVwZW5kYWJsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhwb3J0ZWQgVlBDXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGltcG9ydChwYXJlbnQ6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjTmV0d29ya1JlZlByb3BzKTogVnBjTmV0d29ya1JlZiB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZFZwY05ldHdvcmsocGFyZW50LCBuYW1lLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHB1YmxpYyBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHVibGljU3VibmV0czogVnBjU3VibmV0UmVmW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHJpdmF0ZSBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldHM6IFZwY1N1Ym5ldFJlZltdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IFZwY1N1Ym5ldFJlZltdO1xuXG4gIC8qKlxuICAgKiBBWnMgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQYXJ0cyBvZiB0aGUgVlBDIHRoYXQgY29uc3RpdHV0ZSBmdWxsIGNvbnN0cnVjdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlcGVuZGVuY3lFbGVtZW50czogSURlcGVuZGFibGVbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHN1Ym5ldHMgYXBwcm9wcmlhdGUgZm9yIHRoZSBwbGFjZW1lbnQgc3RyYXRlZ3lcbiAgICovXG4gIHB1YmxpYyBzdWJuZXRzKHBsYWNlbWVudDogVnBjUGxhY2VtZW50U3RyYXRlZ3kgPSB7fSk6IFZwY1N1Ym5ldFJlZltdIHtcbiAgICBpZiAocGxhY2VtZW50LnN1Ym5ldHNUb1VzZSAhPT0gdW5kZWZpbmVkICYmIHBsYWNlbWVudC5zdWJuZXROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbW9zdCBvbmUgb2Ygc3VibmV0c1RvVXNlIGFuZCBzdWJuZXROYW1lIGNhbiBiZSBzdXBwbGllZCcpO1xuICAgIH1cblxuICAgIC8vIFNlbGVjdCBieSBuYW1lXG4gICAgaWYgKHBsYWNlbWVudC5zdWJuZXROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFsbFN1Ym5ldHMgPSB0aGlzLnByaXZhdGVTdWJuZXRzLmNvbmNhdCh0aGlzLnB1YmxpY1N1Ym5ldHMpLmNvbmNhdCh0aGlzLmlzb2xhdGVkU3VibmV0cyk7XG4gICAgICBjb25zdCBzZWxlY3RlZFN1Ym5ldHMgPSBhbGxTdWJuZXRzLmZpbHRlcihzID0+IHN1Ym5ldE5hbWUocykgPT09IHBsYWNlbWVudC5zdWJuZXROYW1lKTtcbiAgICAgIGlmIChzZWxlY3RlZFN1Ym5ldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VibmV0cyB3aXRoIG5hbWU6ICR7cGxhY2VtZW50LnN1Ym5ldE5hbWV9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VsZWN0ZWRTdWJuZXRzO1xuICAgIH1cblxuICAgIC8vIFNlbGVjdCBieSB0eXBlXG4gICAgaWYgKHBsYWNlbWVudC5zdWJuZXRzVG9Vc2UgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdGhpcy5wcml2YXRlU3VibmV0czsgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIFtTdWJuZXRUeXBlLklzb2xhdGVkXTogdGhpcy5pc29sYXRlZFN1Ym5ldHMsXG4gICAgICBbU3VibmV0VHlwZS5Qcml2YXRlXTogdGhpcy5wcml2YXRlU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlB1YmxpY106IHRoaXMucHVibGljU3VibmV0cyxcbiAgICB9W3BsYWNlbWVudC5zdWJuZXRzVG9Vc2VdO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCB0aGlzIFZQQyBmcm9tIHRoZSBzdGFja1xuICAgKi9cbiAgcHVibGljIGV4cG9ydCgpOiBWcGNOZXR3b3JrUmVmUHJvcHMge1xuICAgIGNvbnN0IHB1YiA9IG5ldyBFeHBvcnRTdWJuZXRHcm91cCh0aGlzLCAnUHVibGljU3VibmV0SURzJywgdGhpcy5wdWJsaWNTdWJuZXRzLCBTdWJuZXRUeXBlLlB1YmxpYywgdGhpcy5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGgpO1xuICAgIGNvbnN0IHByaXYgPSBuZXcgRXhwb3J0U3VibmV0R3JvdXAodGhpcywgJ1ByaXZhdGVTdWJuZXRJRHMnLCB0aGlzLnByaXZhdGVTdWJuZXRzLCBTdWJuZXRUeXBlLlByaXZhdGUsIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoKTtcbiAgICBjb25zdCBpc28gPSBuZXcgRXhwb3J0U3VibmV0R3JvdXAodGhpcywgJ0lzb2xhdGVkU3VibmV0SURzJywgdGhpcy5pc29sYXRlZFN1Ym5ldHMsIFN1Ym5ldFR5cGUuSXNvbGF0ZWQsIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoKTtcblxuICAgIHJldHVybiB7XG4gICAgICB2cGNJZDogbmV3IE91dHB1dCh0aGlzLCAnVnBjSWQnLCB7IHZhbHVlOiB0aGlzLnZwY0lkIH0pLm1ha2VJbXBvcnRWYWx1ZSgpLnRvU3RyaW5nKCksXG4gICAgICBhdmFpbGFiaWxpdHlab25lczogdGhpcy5hdmFpbGFiaWxpdHlab25lcyxcbiAgICAgIHB1YmxpY1N1Ym5ldElkczogcHViLmlkcyxcbiAgICAgIHB1YmxpY1N1Ym5ldE5hbWVzOiBwdWIubmFtZXMsXG4gICAgICBwcml2YXRlU3VibmV0SWRzOiBwcml2LmlkcyxcbiAgICAgIHByaXZhdGVTdWJuZXROYW1lczogcHJpdi5uYW1lcyxcbiAgICAgIGlzb2xhdGVkU3VibmV0SWRzOiBpc28uaWRzLFxuICAgICAgaXNvbGF0ZWRTdWJuZXROYW1lczogaXNvLm5hbWVzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIHN1Ym5ldCBpcyBvbmUgb2YgdGhpcyBWUEMncyBwdWJsaWMgc3VibmV0cy5cbiAgICpcbiAgICogVGhlIHN1Ym5ldCBtdXN0IGxpdGVyYWxseSBiZSBvbmUgb2YgdGhlIHN1Ym5ldCBvYmplY3Qgb2J0YWluZWQgZnJvbVxuICAgKiB0aGlzIFZQQy4gQSBzdWJuZXQgdGhhdCBtZXJlbHkgcmVwcmVzZW50cyB0aGUgc2FtZSBzdWJuZXQgd2lsbFxuICAgKiBuZXZlciByZXR1cm4gdHJ1ZS5cbiAgICovXG4gIHB1YmxpYyBpc1B1YmxpY1N1Ym5ldChzdWJuZXQ6IFZwY1N1Ym5ldFJlZikge1xuICAgIHJldHVybiB0aGlzLnB1YmxpY1N1Ym5ldHMuaW5kZXhPZihzdWJuZXQpID4gLTE7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBpbXBvcnRlZCBWcGNOZXR3b3JrXG4gKi9cbmNsYXNzIEltcG9ydGVkVnBjTmV0d29yayBleHRlbmRzIFZwY05ldHdvcmtSZWYge1xuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHB1YmxpYyBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogVnBjU3VibmV0UmVmW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHJpdmF0ZSBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldHM6IFZwY1N1Ym5ldFJlZltdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IFZwY1N1Ym5ldFJlZltdO1xuXG4gIC8qKlxuICAgKiBBWnMgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZXM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNOZXR3b3JrUmVmUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgdGhpcy52cGNJZCA9IHByb3BzLnZwY0lkO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMgPSBwcm9wcy5hdmFpbGFiaWxpdHlab25lcztcblxuICAgIC8vIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aFxuICAgIGNvbnN0IHB1YiA9IG5ldyBJbXBvcnRTdWJuZXRHcm91cChwcm9wcy5wdWJsaWNTdWJuZXRJZHMsIHByb3BzLnB1YmxpY1N1Ym5ldE5hbWVzLCBTdWJuZXRUeXBlLlB1YmxpYywgdGhpcy5hdmFpbGFiaWxpdHlab25lcywgJ3B1YmxpY1N1Ym5ldElkcycsICdwdWJsaWNTdWJuZXROYW1lcycpO1xuICAgIGNvbnN0IHByaXYgPSBuZXcgSW1wb3J0U3VibmV0R3JvdXAocHJvcHMucHJpdmF0ZVN1Ym5ldElkcywgcHJvcHMucHJpdmF0ZVN1Ym5ldE5hbWVzLCBTdWJuZXRUeXBlLlByaXZhdGUsIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMsICdwcml2YXRlU3VibmV0SWRzJywgJ3ByaXZhdGVTdWJuZXROYW1lcycpO1xuICAgIGNvbnN0IGlzbyA9IG5ldyBJbXBvcnRTdWJuZXRHcm91cChwcm9wcy5pc29sYXRlZFN1Ym5ldElkcywgcHJvcHMuaXNvbGF0ZWRTdWJuZXROYW1lcywgU3VibmV0VHlwZS5Jc29sYXRlZCwgdGhpcy5hdmFpbGFiaWxpdHlab25lcywgJ2lzb2xhdGVkU3VibmV0SWRzJywgJ2lzb2xhdGVkU3VibmV0TmFtZXMnKTtcbiAgICAvLyB0c2xpbnQ6ZW5hYmxlOm1heC1saW5lLWxlbmd0aFxuXG4gICAgdGhpcy5wdWJsaWNTdWJuZXRzID0gcHViLmltcG9ydCh0aGlzKTtcbiAgICB0aGlzLnByaXZhdGVTdWJuZXRzID0gcHJpdi5pbXBvcnQodGhpcyk7XG4gICAgdGhpcy5pc29sYXRlZFN1Ym5ldHMgPSBpc28uaW1wb3J0KHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0aGF0IHJlZmVyZW5jZSBhbiBleHRlcm5hbCBWcGNOZXR3b3JrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjTmV0d29ya1JlZlByb3BzIHtcbiAgLyoqXG4gICAqIFZQQydzIGlkZW50aWZpZXJcbiAgICovXG4gIHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgYXZhaWxhYmlsaXR5IHpvbmVzIGZvciB0aGUgc3VibmV0cyBpbiB0aGlzIFZQQy5cbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBwdWJsaWMgc3VibmV0IElEc1xuICAgKlxuICAgKiBNdXN0IGJlIHVuZGVmaW5lZCBvciBtYXRjaCB0aGUgYXZhaWxhYmlsaXR5IHpvbmVzIGluIGxlbmd0aCBhbmQgb3JkZXIuXG4gICAqL1xuICBwdWJsaWNTdWJuZXRJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBuYW1lcyBmb3IgdGhlIHB1YmxpYyBzdWJuZXRzXG4gICAqXG4gICAqIE11c3QgYmUgdW5kZWZpbmVkIG9yIGhhdmUgYSBuYW1lIGZvciBldmVyeSBwdWJsaWMgc3VibmV0IGdyb3VwLlxuICAgKi9cbiAgcHVibGljU3VibmV0TmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBwcml2YXRlIHN1Ym5ldCBJRHNcbiAgICpcbiAgICogTXVzdCBiZSB1bmRlZmluZWQgb3IgbWF0Y2ggdGhlIGF2YWlsYWJpbGl0eSB6b25lcyBpbiBsZW5ndGggYW5kIG9yZGVyLlxuICAgKi9cbiAgcHJpdmF0ZVN1Ym5ldElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIG5hbWVzIGZvciB0aGUgcHJpdmF0ZSBzdWJuZXRzXG4gICAqXG4gICAqIE11c3QgYmUgdW5kZWZpbmVkIG9yIGhhdmUgYSBuYW1lIGZvciBldmVyeSBwcml2YXRlIHN1Ym5ldCBncm91cC5cbiAgICovXG4gIHByaXZhdGVTdWJuZXROYW1lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlzb2xhdGVkIHN1Ym5ldCBJRHNcbiAgICpcbiAgICogTXVzdCBiZSB1bmRlZmluZWQgb3IgbWF0Y2ggdGhlIGF2YWlsYWJpbGl0eSB6b25lcyBpbiBsZW5ndGggYW5kIG9yZGVyLlxuICAgKi9cbiAgaXNvbGF0ZWRTdWJuZXRJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBuYW1lcyBmb3IgdGhlIGlzb2xhdGVkIHN1Ym5ldHNcbiAgICpcbiAgICogTXVzdCBiZSB1bmRlZmluZWQgb3IgaGF2ZSBhIG5hbWUgZm9yIGV2ZXJ5IGlzb2xhdGVkIHN1Ym5ldCBncm91cC5cbiAgICovXG4gIGlzb2xhdGVkU3VibmV0TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBWUEMgU3VibmV0XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWcGNTdWJuZXRSZWYgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJRGVwZW5kYWJsZSB7XG4gIHB1YmxpYyBzdGF0aWMgaW1wb3J0KHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNTdWJuZXRSZWZQcm9wcyk6IFZwY1N1Ym5ldFJlZiB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZFZwY1N1Ym5ldChwYXJlbnQsIG5hbWUsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhlIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXJ0cyBvZiB0aGlzIFZQQyBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBlbmRlbmN5RWxlbWVudHM6IElEZXBlbmRhYmxlW10gPSBbXTtcbn1cblxuLyoqXG4gKiBTdWJuZXQgb2YgYW4gaW1wb3J0ZWQgVlBDXG4gKi9cbmNsYXNzIEltcG9ydGVkVnBjU3VibmV0IGV4dGVuZHMgVnBjU3VibmV0UmVmIHtcbiAgLyoqXG4gICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSB0aGUgc3VibmV0IGlzIGxvY2F0ZWQgaW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IFZwY1N1Ym5ldFJlZlByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcblxuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZSA9IHByb3BzLmF2YWlsYWJpbGl0eVpvbmU7XG4gICAgdGhpcy5zdWJuZXRJZCA9IHByb3BzLnN1Ym5ldElkO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVnBjU3VibmV0UmVmUHJvcHMge1xuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIHRoZSBzdWJuZXQgaXMgbG9jYXRlZCBpblxuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICovXG4gIHN1Ym5ldElkOiBzdHJpbmc7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZwYy1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBOEQ7QUFDOUQsaUNBQTBFO0FBQzFFLGlFQUFxRjtBQUVyRjs7R0FFRztBQUNILElBQVksVUFrQ1g7QUFsQ0QsV0FBWSxVQUFVO0lBQ3BCOzs7OztPQUtHO0lBQ0gsbURBQVksQ0FBQTtJQUVaOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsaURBQVcsQ0FBQTtJQUVYOzs7Ozs7Ozs7T0FTRztJQUNILCtDQUFVLENBQUE7QUFDWixDQUFDLEVBbENXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBa0NyQjtBQWdDRDs7R0FFRztBQUNILE1BQXNCLGFBQWMsU0FBUSxlQUFTO0lBQXJEOztRQXdDRTs7V0FFRztRQUNhLHVCQUFrQixHQUFrQixFQUFFLENBQUM7SUE0RHpELENBQUM7SUF0R0M7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWlCLEVBQUUsSUFBWSxFQUFFLEtBQXlCO1FBQzdFLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFpQixFQUFFLElBQVksRUFBRSxLQUE4QjtRQUM3RixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLHlDQUFrQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBZ0NEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLFlBQWtDLEVBQUU7UUFDakQsSUFBSSxTQUFTLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUM5RSxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENB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QVksRUFBRSxLQUF3QjtRQUM1RSxPQUFPLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBZ0JGO0FBbkJELG9DQW1CQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxpQkFBa0IsU0FBUSxZQUFZO0lBVzFDLFlBQVksTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBd0I7UUFDbkUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QsIElEZXBlbmRhYmxlLCBPdXRwdXQgfSBmcm9tIFwiQGF3cy1jZGsvY2RrXCI7XG5pbXBvcnQgeyBFeHBvcnRTdWJuZXRHcm91cCwgSW1wb3J0U3VibmV0R3JvdXAsIHN1Ym5ldE5hbWUgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgVnBjTmV0d29ya1Byb3ZpZGVyLCBWcGNOZXR3b3JrUHJvdmlkZXJQcm9wcyB9IGZyb20gJy4vdnBjLW5ldHdvcmstcHJvdmlkZXInO1xuXG4vKipcbiAqIFRoZSB0eXBlIG9mIFN1Ym5ldFxuICovXG5leHBvcnQgZW51bSBTdWJuZXRUeXBlIHtcbiAgLyoqXG4gICAqIElzb2xhdGVkIFN1Ym5ldHMgZG8gbm90IHJvdXRlIE91dGJvdW5kIHRyYWZmaWNcbiAgICpcbiAgICogVGhpcyBjYW4gYmUgZ29vZCBmb3Igc3VibmV0cyB3aXRoIFJEUyBvclxuICAgKiBFbGFzdGljYWNoZSBlbmRwb2ludHNcbiAgICovXG4gIElzb2xhdGVkID0gMSxcblxuICAvKipcbiAgICogU3VibmV0IHRoYXQgcm91dGVzIHRvIHRoZSBpbnRlcm5ldCwgYnV0IG5vdCB2aWNlIHZlcnNhLlxuICAgKlxuICAgKiBJbnN0YW5jZXMgaW4gYSBwcml2YXRlIHN1Ym5ldCBjYW4gY29ubmVjdCB0byB0aGUgSW50ZXJuZXQsIGJ1dCB3aWxsIG5vdFxuICAgKiBhbGxvdyBjb25uZWN0aW9ucyB0byBiZSBpbml0aWF0ZWQgZnJvbSB0aGUgSW50ZXJuZXQuXG4gICAqXG4gICAqIE91dGJvdW5kIHRyYWZmaWMgd2lsbCBiZSByb3V0ZWQgdmlhIGEgTkFUIEdhdGV3YXkuIFByZWZlcmVuY2UgYmVpbmcgaW5cbiAgICogdGhlIHNhbWUgQVosIGJ1dCBpZiBub3QgYXZhaWxhYmxlIHdpbGwgdXNlIGFub3RoZXIgQVogKGNvbnRyb2wgYnlcbiAgICogc3BlY2lmaW5nIGBtYXhHYXRld2F5c2Agb24gVnBjTmV0d29yaykuIFRoaXMgbWlnaHQgYmUgdXNlZCBmb3JcbiAgICogZXhwZXJpbWVudGFsIGNvc3QgY29uc2Npb3VzIGFjY291bnRzIG9yIGFjY291bnRzIHdoZXJlIEhBIG91dGJvdW5kXG4gICAqIHRyYWZmaWMgaXMgbm90IG5lZWRlZC5cbiAgICovXG4gIFByaXZhdGUgPSAyLFxuXG4gIC8qKlxuICAgKiBTdWJuZXQgY29ubmVjdGVkIHRvIHRoZSBJbnRlcm5ldFxuICAgKlxuICAgKiBJbnN0YW5jZXMgaW4gYSBQdWJsaWMgc3VibmV0IGNhbiBjb25uZWN0IHRvIHRoZSBJbnRlcm5ldCBhbmQgY2FuIGJlXG4gICAqIGNvbm5lY3RlZCB0byBmcm9tIHRoZSBJbnRlcm5ldCBhcyBsb25nIGFzIHRoZXkgYXJlIGxhdW5jaGVkIHdpdGggcHVibGljXG4gICAqIElQcyAoY29udHJvbGxlZCBvbiB0aGUgQXV0b1NjYWxpbmdHcm91cCBvciBvdGhlciBjb25zdHJ1Y3RzIHRoYXQgbGF1bmNoXG4gICAqIGluc3RhbmNlcykuXG4gICAqXG4gICAqIFB1YmxpYyBzdWJuZXRzIHJvdXRlIG91dGJvdW5kIHRyYWZmaWMgdmlhIGFuIEludGVybmV0IEdhdGV3YXkuXG4gICAqL1xuICBQdWJsaWMgPSAzXG59XG5cbi8qKlxuICogQ3VzdG9taXplIGhvdyBpbnN0YW5jZXMgYXJlIHBsYWNlZCBpbnNpZGUgYSBWUENcbiAqXG4gKiBDb25zdHJ1Y3RzIHRoYXQgYWxsb3cgY3VzdG9taXphdGlvbiBvZiBWUEMgcGxhY2VtZW50IHVzZSBwYXJhbWV0ZXJzIG9mIHRoaXNcbiAqIHR5cGUgdG8gcHJvdmlkZSBwbGFjZW1lbnQgc2V0dGluZ3MuXG4gKlxuICogQnkgZGVmYXVsdCwgdGhlIGluc3RhbmNlcyBhcmUgcGxhY2VkIGluIHRoZSBwcml2YXRlIHN1Ym5ldHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjUGxhY2VtZW50U3RyYXRlZ3kge1xuICAvKipcbiAgICogUGxhY2UgdGhlIGluc3RhbmNlcyBpbiB0aGUgc3VibmV0cyBvZiB0aGUgZ2l2ZW4gdHlwZVxuICAgKlxuICAgKiBBdCBtb3N0IG9uZSBvZiBgc3VibmV0c1RvVXNlYCBhbmQgYHN1Ym5ldE5hbWVgIGNhbiBiZSBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VibmV0VHlwZS5Qcml2YXRlXG4gICAqL1xuICBzdWJuZXRzVG9Vc2U/OiBTdWJuZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBQbGFjZSB0aGUgaW5zdGFuY2VzIGluIHRoZSBzdWJuZXRzIHdpdGggdGhlIGdpdmVuIG5hbWVcbiAgICpcbiAgICogKFRoaXMgaXMgdGhlIG5hbWUgc3VwcGxpZWQgaW4gc3VibmV0Q29uZmlndXJhdGlvbikuXG4gICAqXG4gICAqIEF0IG1vc3Qgb25lIG9mIGBzdWJuZXRzVG9Vc2VgIGFuZCBgc3VibmV0TmFtZWAgY2FuIGJlIHN1cHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBuYW1lXG4gICAqL1xuICBzdWJuZXROYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIFZQQ1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVnBjTmV0d29ya1JlZiBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElEZXBlbmRhYmxlIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleHBvcnRlZCBWUENcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW1wb3J0KHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNOZXR3b3JrUmVmUHJvcHMpOiBWcGNOZXR3b3JrUmVmIHtcbiAgICByZXR1cm4gbmV3IEltcG9ydGVkVnBjTmV0d29yayhwYXJlbnQsIG5hbWUsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgVlBDIGZyb20gY29udGV4dFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbXBvcnRGcm9tQ29udGV4dChwYXJlbnQ6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjTmV0d29ya1Byb3ZpZGVyUHJvcHMpOiBWcGNOZXR3b3JrUmVmIHtcbiAgICByZXR1cm4gVnBjTmV0d29ya1JlZi5pbXBvcnQocGFyZW50LCBuYW1lLCBuZXcgVnBjTmV0d29ya1Byb3ZpZGVyKHBhcmVudCwgcHJvcHMpLnZwY1Byb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHVibGljIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwdWJsaWNTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBwcml2YXRlIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwcml2YXRlU3VibmV0czogVnBjU3VibmV0UmVmW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgaXNvbGF0ZWQgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGlzb2xhdGVkU3VibmV0czogVnBjU3VibmV0UmVmW107XG5cbiAgLyoqXG4gICAqIEFacyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFBhcnRzIG9mIHRoZSBWUEMgdGhhdCBjb25zdGl0dXRlIGZ1bGwgY29uc3RydWN0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVwZW5kZW5jeUVsZW1lbnRzOiBJRGVwZW5kYWJsZVtdID0gW107XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc3VibmV0cyBhcHByb3ByaWF0ZSBmb3IgdGhlIHBsYWNlbWVudCBzdHJhdGVneVxuICAgKi9cbiAgcHVibGljIHN1Ym5ldHMocGxhY2VtZW50OiBWcGNQbGFjZW1lbnRTdHJhdGVneSA9IHt9KTogVnBjU3VibmV0UmVmW10ge1xuICAgIGlmIChwbGFjZW1lbnQuc3VibmV0c1RvVXNlICE9PSB1bmRlZmluZWQgJiYgcGxhY2VtZW50LnN1Ym5ldE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdCBtb3N0IG9uZSBvZiBzdWJuZXRzVG9Vc2UgYW5kIHN1Ym5ldE5hbWUgY2FuIGJlIHN1cHBsaWVkJyk7XG4gICAgfVxuXG4gICAgLy8gU2VsZWN0IGJ5IG5hbWVcbiAgICBpZiAocGxhY2VtZW50LnN1Ym5ldE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWxsU3VibmV0cyA9IHRoaXMucHJpdmF0ZVN1Ym5ldHMuY29uY2F0KHRoaXMucHVibGljU3VibmV0cykuY29uY2F0KHRoaXMuaXNvbGF0ZWRTdWJuZXRzKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkU3VibmV0cyA9IGFsbFN1Ym5ldHMuZmlsdGVyKHMgPT4gc3VibmV0TmFtZShzKSA9PT0gcGxhY2VtZW50LnN1Ym5ldE5hbWUpO1xuICAgICAgaWYgKHNlbGVjdGVkU3VibmV0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdWJuZXRzIHdpdGggbmFtZTogJHtwbGFjZW1lbnQuc3VibmV0TmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxlY3RlZFN1Ym5ldHM7XG4gICAgfVxuXG4gICAgLy8gU2VsZWN0IGJ5IHR5cGVcbiAgICBpZiAocGxhY2VtZW50LnN1Ym5ldHNUb1VzZSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB0aGlzLnByaXZhdGVTdWJuZXRzOyB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgW1N1Ym5ldFR5cGUuSXNvbGF0ZWRdOiB0aGlzLmlzb2xhdGVkU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlByaXZhdGVdOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuUHVibGljXTogdGhpcy5wdWJsaWNTdWJuZXRzLFxuICAgIH1bcGxhY2VtZW50LnN1Ym5ldHNUb1VzZV07XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IHRoaXMgVlBDIGZyb20gdGhlIHN0YWNrXG4gICAqL1xuICBwdWJsaWMgZXhwb3J0KCk6IFZwY05ldHdvcmtSZWZQcm9wcyB7XG4gICAgY29uc3QgcHViID0gbmV3IEV4cG9ydFN1Ym5ldEdyb3VwKHRoaXMsICdQdWJsaWNTdWJuZXRJRHMnLCB0aGlzLnB1YmxpY1N1Ym5ldHMsIFN1Ym5ldFR5cGUuUHVibGljLCB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLmxlbmd0aCk7XG4gICAgY29uc3QgcHJpdiA9IG5ldyBFeHBvcnRTdWJuZXRHcm91cCh0aGlzLCAnUHJpdmF0ZVN1Ym5ldElEcycsIHRoaXMucHJpdmF0ZVN1Ym5ldHMsIFN1Ym5ldFR5cGUuUHJpdmF0ZSwgdGhpcy5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGgpO1xuICAgIGNvbnN0IGlzbyA9IG5ldyBFeHBvcnRTdWJuZXRHcm91cCh0aGlzLCAnSXNvbGF0ZWRTdWJuZXRJRHMnLCB0aGlzLmlzb2xhdGVkU3VibmV0cywgU3VibmV0VHlwZS5Jc29sYXRlZCwgdGhpcy5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZwY0lkOiBuZXcgT3V0cHV0KHRoaXMsICdWcGNJZCcsIHsgdmFsdWU6IHRoaXMudnBjSWQgfSkubWFrZUltcG9ydFZhbHVlKCkudG9TdHJpbmcoKSxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLFxuICAgICAgcHVibGljU3VibmV0SWRzOiBwdWIuaWRzLFxuICAgICAgcHVibGljU3VibmV0TmFtZXM6IHB1Yi5uYW1lcyxcbiAgICAgIHByaXZhdGVTdWJuZXRJZHM6IHByaXYuaWRzLFxuICAgICAgcHJpdmF0ZVN1Ym5ldE5hbWVzOiBwcml2Lm5hbWVzLFxuICAgICAgaXNvbGF0ZWRTdWJuZXRJZHM6IGlzby5pZHMsXG4gICAgICBpc29sYXRlZFN1Ym5ldE5hbWVzOiBpc28ubmFtZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gc3VibmV0IGlzIG9uZSBvZiB0aGlzIFZQQydzIHB1YmxpYyBzdWJuZXRzLlxuICAgKlxuICAgKiBUaGUgc3VibmV0IG11c3QgbGl0ZXJhbGx5IGJlIG9uZSBvZiB0aGUgc3VibmV0IG9iamVjdCBvYnRhaW5lZCBmcm9tXG4gICAqIHRoaXMgVlBDLiBBIHN1Ym5ldCB0aGF0IG1lcmVseSByZXByZXNlbnRzIHRoZSBzYW1lIHN1Ym5ldCB3aWxsXG4gICAqIG5ldmVyIHJldHVybiB0cnVlLlxuICAgKi9cbiAgcHVibGljIGlzUHVibGljU3VibmV0KHN1Ym5ldDogVnBjU3VibmV0UmVmKSB7XG4gICAgcmV0dXJuIHRoaXMucHVibGljU3VibmV0cy5pbmRleE9mKHN1Ym5ldCkgPiAtMTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGltcG9ydGVkIFZwY05ldHdvcmtcbiAqL1xuY2xhc3MgSW1wb3J0ZWRWcGNOZXR3b3JrIGV4dGVuZHMgVnBjTmV0d29ya1JlZiB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHVibGljIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwdWJsaWNTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBwcml2YXRlIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcml2YXRlU3VibmV0czogVnBjU3VibmV0UmVmW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgaXNvbGF0ZWQgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzb2xhdGVkU3VibmV0czogVnBjU3VibmV0UmVmW107XG5cbiAgLyoqXG4gICAqIEFacyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IFZwY05ldHdvcmtSZWZQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG5cbiAgICB0aGlzLnZwY0lkID0gcHJvcHMudnBjSWQ7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lcyA9IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVzO1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgY29uc3QgcHViID0gbmV3IEltcG9ydFN1Ym5ldEdyb3VwKHByb3BzLnB1YmxpY1N1Ym5ldElkcywgcHJvcHMucHVibGljU3VibmV0TmFtZXMsIFN1Ym5ldFR5cGUuUHVibGljLCB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLCAncHVibGljU3VibmV0SWRzJywgJ3B1YmxpY1N1Ym5ldE5hbWVzJyk7XG4gICAgY29uc3QgcHJpdiA9IG5ldyBJbXBvcnRTdWJuZXRHcm91cChwcm9wcy5wcml2YXRlU3VibmV0SWRzLCBwcm9wcy5wcml2YXRlU3VibmV0TmFtZXMsIFN1Ym5ldFR5cGUuUHJpdmF0ZSwgdGhpcy5hdmFpbGFiaWxpdHlab25lcywgJ3ByaXZhdGVTdWJuZXRJZHMnLCAncHJpdmF0ZVN1Ym5ldE5hbWVzJyk7XG4gICAgY29uc3QgaXNvID0gbmV3IEltcG9ydFN1Ym5ldEdyb3VwKHByb3BzLmlzb2xhdGVkU3VibmV0SWRzLCBwcm9wcy5pc29sYXRlZFN1Ym5ldE5hbWVzLCBTdWJuZXRUeXBlLklzb2xhdGVkLCB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLCAnaXNvbGF0ZWRTdWJuZXRJZHMnLCAnaXNvbGF0ZWRTdWJuZXROYW1lcycpO1xuICAgIC8vIHRzbGludDplbmFibGU6bWF4LWxpbmUtbGVuZ3RoXG5cbiAgICB0aGlzLnB1YmxpY1N1Ym5ldHMgPSBwdWIuaW1wb3J0KHRoaXMpO1xuICAgIHRoaXMucHJpdmF0ZVN1Ym5ldHMgPSBwcml2LmltcG9ydCh0aGlzKTtcbiAgICB0aGlzLmlzb2xhdGVkU3VibmV0cyA9IGlzby5pbXBvcnQodGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgcmVmZXJlbmNlIGFuIGV4dGVybmFsIFZwY05ldHdvcmtcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNOZXR3b3JrUmVmUHJvcHMge1xuICAvKipcbiAgICogVlBDJ3MgaWRlbnRpZmllclxuICAgKi9cbiAgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBhdmFpbGFiaWxpdHkgem9uZXMgZm9yIHRoZSBzdWJuZXRzIGluIHRoaXMgVlBDLlxuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHB1YmxpYyBzdWJuZXQgSURzXG4gICAqXG4gICAqIE11c3QgYmUgdW5kZWZpbmVkIG9yIG1hdGNoIHRoZSBhdmFpbGFiaWxpdHkgem9uZXMgaW4gbGVuZ3RoIGFuZCBvcmRlci5cbiAgICovXG4gIHB1YmxpY1N1Ym5ldElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIG5hbWVzIGZvciB0aGUgcHVibGljIHN1Ym5ldHNcbiAgICpcbiAgICogTXVzdCBiZSB1bmRlZmluZWQgb3IgaGF2ZSBhIG5hbWUgZm9yIGV2ZXJ5IHB1YmxpYyBzdWJuZXQgZ3JvdXAuXG4gICAqL1xuICBwdWJsaWNTdWJuZXROYW1lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHByaXZhdGUgc3VibmV0IElEc1xuICAgKlxuICAgKiBNdXN0IGJlIHVuZGVmaW5lZCBvciBtYXRjaCB0aGUgYXZhaWxhYmlsaXR5IHpvbmVzIGluIGxlbmd0aCBhbmQgb3JkZXIuXG4gICAqL1xuICBwcml2YXRlU3VibmV0SWRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgbmFtZXMgZm9yIHRoZSBwcml2YXRlIHN1Ym5ldHNcbiAgICpcbiAgICogTXVzdCBiZSB1bmRlZmluZWQgb3IgaGF2ZSBhIG5hbWUgZm9yIGV2ZXJ5IHByaXZhdGUgc3VibmV0IGdyb3VwLlxuICAgKi9cbiAgcHJpdmF0ZVN1Ym5ldE5hbWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgaXNvbGF0ZWQgc3VibmV0IElEc1xuICAgKlxuICAgKiBNdXN0IGJlIHVuZGVmaW5lZCBvciBtYXRjaCB0aGUgYXZhaWxhYmlsaXR5IHpvbmVzIGluIGxlbmd0aCBhbmQgb3JkZXIuXG4gICAqL1xuICBpc29sYXRlZFN1Ym5ldElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIG5hbWVzIGZvciB0aGUgaXNvbGF0ZWQgc3VibmV0c1xuICAgKlxuICAgKiBNdXN0IGJlIHVuZGVmaW5lZCBvciBoYXZlIGEgbmFtZSBmb3IgZXZlcnkgaXNvbGF0ZWQgc3VibmV0IGdyb3VwLlxuICAgKi9cbiAgaXNvbGF0ZWRTdWJuZXROYW1lcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIFZQQyBTdWJuZXRcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZwY1N1Ym5ldFJlZiBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElEZXBlbmRhYmxlIHtcbiAgcHVibGljIHN0YXRpYyBpbXBvcnQocGFyZW50OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IFZwY1N1Ym5ldFJlZlByb3BzKTogVnBjU3VibmV0UmVmIHtcbiAgICByZXR1cm4gbmV3IEltcG9ydGVkVnBjU3VibmV0KHBhcmVudCwgbmFtZSwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSB0aGUgc3VibmV0IGlzIGxvY2F0ZWQgaW5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcnRzIG9mIHRoaXMgVlBDIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlcGVuZGVuY3lFbGVtZW50czogSURlcGVuZGFibGVbXSA9IFtdO1xufVxuXG4vKipcbiAqIFN1Ym5ldCBvZiBhbiBpbXBvcnRlZCBWUENcbiAqL1xuY2xhc3MgSW1wb3J0ZWRWcGNTdWJuZXQgZXh0ZW5kcyBWcGNTdWJuZXRSZWYge1xuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIHRoZSBzdWJuZXQgaXMgbG9jYXRlZCBpblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1Ym5ldElkIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0SWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjU3VibmV0UmVmUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lID0gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZTtcbiAgICB0aGlzLnN1Ym5ldElkID0gcHJvcHMuc3VibmV0SWQ7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBWcGNTdWJuZXRSZWZQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhlIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgKi9cbiAgc3VibmV0SWQ6IHN0cmluZztcbn1cbiJdfQ==

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

};
let subnet;
switch (subnetConfig.subnetType) {

@@ -195,2 +196,3 @@ case vpc_ref_1.SubnetType.Public:

this.publicSubnets.push(publicSubnet);
subnet = publicSubnet;
break;

@@ -200,8 +202,16 @@ case vpc_ref_1.SubnetType.Private:

this.privateSubnets.push(privateSubnet);
subnet = privateSubnet;
break;
case vpc_ref_1.SubnetType.Isolated:
const isolatedSubnet = new VpcPrivateSubnet(this, name, subnetProps);
isolatedSubnet.tags.setTag(SUBNETTYPE_TAG, subnetTypeTagValue(subnetConfig.subnetType));
this.isolatedSubnets.push(isolatedSubnet);
subnet = isolatedSubnet;
break;
default:
throw new Error(`Unrecognized subnet type: ${subnetConfig.subnetType}`);
}
// These values will be used to recover the config upon provider import
subnet.tags.setTag(SUBNETNAME_TAG, subnetConfig.name, { propagate: false });
subnet.tags.setTag(SUBNETTYPE_TAG, subnetTypeTagValue(subnetConfig.subnetType), { propagate: false });
});

@@ -232,2 +242,11 @@ }

exports.VpcNetwork = VpcNetwork;
const SUBNETTYPE_TAG = 'aws-cdk:subnet-type';
const SUBNETNAME_TAG = 'aws-cdk:subnet-name';
function subnetTypeTagValue(type) {
switch (type) {
case vpc_ref_1.SubnetType.Public: return 'Public';
case vpc_ref_1.SubnetType.Private: return 'Private';
case vpc_ref_1.SubnetType.Isolated: return 'Isolated';
}
}
/**

@@ -333,2 +352,2 @@ * Represents a new VPC subnet resource

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLG1EQUFpRDtBQUNqRCxpREFBZ0Q7QUFDaEQsaUNBQXdEO0FBQ3hELHVDQUEwRjtBQUUxRjs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQTRHaEM7O0dBRUc7QUFDSCxJQUFZLHNCQVVYO0FBVkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCw2Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILGlEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFWVyxzQkFBc0IsR0FBdEIsOEJBQXNCLEtBQXRCLDhCQUFzQixRQVVqQztBQW1DRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsVUFBVyxTQUFRLHVCQUFhO0lBMkUzQzs7Ozs7T0FLRztJQUNILFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsUUFBeUIsRUFBRTtRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBcER0Qjs7V0FFRztRQUNhLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuRDs7V0FFRztRQUNhLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwRDs7V0FFRztRQUNhLG9CQUFlLEdBQW1CLEVBQUUsQ0FBQztRQXNCckQ7O1dBRUc7UUFDSyxtQkFBYyxHQUE2QixFQUFFLENBQUM7UUFFdEQ7O1dBRUc7UUFDSyx3QkFBbUIsR0FBMEIsRUFBRSxDQUFDO1FBV3RELDBEQUEwRDtRQUMxRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHlGQUF5RixDQUFDLENBQUM7U0FDNUc7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUU1RCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksNkJBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1FBQzlGLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFDeEYsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixJQUFJLFNBQVMsQ0FBQztRQUVsRSw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFjLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDL0QsU0FBUztZQUNULGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLENBQUM7UUFDbEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RTtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlGLCtFQUErRTtRQUMvRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FDbkQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFcEUsd0RBQXdEO1FBQ3hELElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksOEJBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUNsRSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQzthQUMvQixDQUFDLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLDhCQUFjLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDekUsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUc7YUFDekIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFdEMsSUFBSSxDQUFDLGFBQW1DLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUMvRCxZQUFZLENBQUMsdUJBQXVCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1lBRUgscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRXBFLElBQUksQ0FBQyxjQUFxQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO29CQUN2QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hFLDhEQUE4RDtvQkFDOUQsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxhQUFhLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFFBQWlCLEVBQUUsU0FBZ0M7UUFDM0UsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FDbkQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFbkUsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFDbkMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVyRCxJQUFJLFVBQTZCLENBQUM7UUFDbEMsSUFBSSxTQUFTLEVBQUU7WUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO2dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsU0FBUywrQkFBK0IsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDdkY7YUFDRjtZQUNELFVBQVUsR0FBRyxPQUE0QixDQUFDO1NBQzNDO2FBQU07WUFDTCxVQUFVLEdBQUksSUFBSSxDQUFDLGFBQWtDLENBQUM7U0FDdkQ7UUFFRCxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssYUFBYTtRQUNuQixNQUFNLHFCQUFxQixHQUEwQixFQUFFLENBQUM7UUFFeEQsb0VBQW9FO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUViLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdDLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQ2pDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkMsU0FBUzthQUNWO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckQ7UUFFRCxNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUNwRixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkYsS0FBSyxNQUFNLE1BQU0sSUFBSSxxQkFBcUIsRUFBRTtZQUMxQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsWUFBaUMsRUFBRSxRQUFnQjtRQUMvRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzdDLE1BQU0sSUFBSSxHQUFHLGVBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELE1BQU0sV0FBVyxHQUFtQjtnQkFDbEMsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO2dCQUNsRCxtQkFBbUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BFLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTthQUN4QixDQUFDO1lBRUYsUUFBUSxZQUFZLENBQUMsVUFBVSxFQUFFO2dCQUMvQixLQUFLLG9CQUFVLENBQUMsTUFBTTtvQkFDcEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3RDLE1BQU07Z0JBQ1IsS0FBSyxvQkFBVSxDQUFDLE9BQU87b0JBQ3JCLE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3hDLE1BQU07Z0JBQ1IsS0FBSyxvQkFBVSxDQUFDLFFBQVE7b0JBQ3RCLE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDckUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzFDLE1BQU07YUFDVDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE3T0Q7Ozs7R0FJRztBQUNvQiw2QkFBa0IsR0FBVyxhQUFhLENBQUM7QUFFbEU7Ozs7R0FJRztBQUNvQiwwQkFBZSxHQUEwQjtJQUM5RDtRQUNFLFVBQVUsRUFBRSxvQkFBVSxDQUFDLE1BQU07UUFDN0IsSUFBSSxFQUFFLDBCQUFtQixDQUFDLG9CQUFVLENBQUMsTUFBTSxDQUFDO0tBQzdDO0lBQ0Q7UUFDRSxVQUFVLEVBQUUsb0JBQVUsQ0FBQyxPQUFPO1FBQzlCLElBQUksRUFBRSwwQkFBbUIsQ0FBQyxvQkFBVSxDQUFDLE9BQU8sQ0FBQztLQUM5QztDQUNGLENBQUM7QUF2QkosZ0NBZ1BDO0FBbUNEOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsc0JBQVk7SUFzQnpDLFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsS0FBcUI7UUFDcEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksOEJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUMvRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksOEJBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3RFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztTQUMvQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFOUIsbUVBQW1FO1FBQ25FLE1BQU0sVUFBVSxHQUFHLElBQUksOEJBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDdkcsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxLQUFLLENBQUMsR0FBRztTQUN4QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVTLG9CQUFvQixDQUFDLFlBQW9CO1FBQ2pELElBQUksOEJBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0Isb0JBQW9CLEVBQUUsV0FBVztZQUNqQyxZQUFZO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNPLG9CQUFvQixDQUM1QixPQUErQyxFQUMvQyxpQkFBOEQ7UUFDOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSw4QkFBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ25FLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixvQkFBb0IsRUFBRSxXQUFXO1lBQ2pDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRztTQUN2QixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBekVELDhCQXlFQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFNBQVM7SUFDNUMsWUFBWSxNQUFxQixFQUFFLElBQVksRUFBRSxLQUFxQjtRQUNwRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksdUJBQXVCLENBQzVCLE9BQStDLEVBQy9DLGlCQUE4RDtRQUM5RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhO1FBQ2xCLDZDQUE2QztRQUM3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDhCQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNwRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsWUFBWSxFQUFFLElBQUksOEJBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtnQkFDeEQsTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDLENBQUMsZUFBZTtZQUNsQixJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBL0JELDBDQStCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxTQUFTO0lBQzdDLFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsS0FBcUI7UUFDcEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksdUJBQXVCLENBQUMsWUFBb0I7UUFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQVhELDRDQVdDO0FBRUQsU0FBUyxXQUFXLENBQUksS0FBb0IsRUFBRSxZQUFlO0lBQzNELE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi9lYzIuZ2VuZXJhdGVkJztcbmltcG9ydCB7IE5ldHdvcmtCdWlsZGVyIH0gZnJvbSAnLi9uZXR3b3JrLXV0aWwnO1xuaW1wb3J0IHsgREVGQVVMVF9TVUJORVRfTkFNRSwgc3VibmV0SWQgIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IFN1Ym5ldFR5cGUsIFZwY05ldHdvcmtSZWYsIFZwY1BsYWNlbWVudFN0cmF0ZWd5LCBWcGNTdWJuZXRSZWYgfSBmcm9tICcuL3ZwYy1yZWYnO1xuXG4vKipcbiAqIE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IE5BTUVfVEFHOiBzdHJpbmcgPSAnTmFtZSc7XG5cbi8qKlxuICogVnBjTmV0d29ya1Byb3BzIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGEgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjTmV0d29ya1Byb3BzIHtcblxuICAvKipcbiAgICogVGhlIENJRFIgcmFuZ2UgdG8gdXNlIGZvciB0aGUgVlBDIChlLmcuICcxMC4wLjAuMC8xNicpLiBTaG91bGQgYmUgYSBtaW5pbXVtIG9mIC8yOCBhbmQgbWF4aW11bSBzaXplIG9mIC8xNi5cbiAgICogVGhlIHJhbmdlIHdpbGwgYmUgc3BsaXQgZXZlbmx5IGludG8gdHdvIHN1Ym5ldHMgcGVyIEF2YWlsYWJpbGl0eSBab25lIChvbmUgcHVibGljLCBvbmUgcHJpdmF0ZSkuXG4gICAqL1xuICBjaWRyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5zdGFuY2VzIGxhdW5jaGVkIGluIHRoZSBWUEMgZ2V0IHB1YmxpYyBETlMgaG9zdG5hbWVzLlxuICAgKiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyB0cnVlLCBpbnN0YW5jZXMgaW4gdGhlIFZQQyBnZXQgcHVibGljIEROUyBob3N0bmFtZXMsXG4gICAqIGJ1dCBvbmx5IGlmIHRoZSBlbmFibGVEbnNTdXBwb3J0IGF0dHJpYnV0ZSBpcyBhbHNvIHNldCB0byB0cnVlLlxuICAgKi9cbiAgZW5hYmxlRG5zSG9zdG5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIEROUyByZXNvbHV0aW9uIGlzIHN1cHBvcnRlZCBmb3IgdGhlIFZQQy4gSWYgdGhpcyBhdHRyaWJ1dGVcbiAgICogaXMgZmFsc2UsIHRoZSBBbWF6b24tcHJvdmlkZWQgRE5TIHNlcnZlciBpbiB0aGUgVlBDIHRoYXQgcmVzb2x2ZXMgcHVibGljIEROUyBob3N0bmFtZXNcbiAgICogdG8gSVAgYWRkcmVzc2VzIGlzIG5vdCBlbmFibGVkLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyB0cnVlLCBxdWVyaWVzIHRvIHRoZSBBbWF6b25cbiAgICogcHJvdmlkZWQgRE5TIHNlcnZlciBhdCB0aGUgMTY5LjI1NC4xNjkuMjUzIElQIGFkZHJlc3MsIG9yIHRoZSByZXNlcnZlZCBJUCBhZGRyZXNzXG4gICAqIGF0IHRoZSBiYXNlIG9mIHRoZSBWUEMgSVB2NCBuZXR3b3JrIHJhbmdlIHBsdXMgdHdvIHdpbGwgc3VjY2VlZC5cbiAgICovXG4gIGVuYWJsZURuc1N1cHBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB0ZW5hbmN5IG9mIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoZSBWUEMuXG4gICAqIEJ5IGRlZmF1bHQsIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggZGVmYXVsdCAoc2hhcmVkKSB0ZW5hbmN5LlxuICAgKiBCeSBzZXR0aW5nIHRoaXMgdG8gZGVkaWNhdGVkIHRlbmFuY3ksIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIG9uIGhhcmR3YXJlIGRlZGljYXRlZFxuICAgKiB0byBhIHNpbmdsZSBBV1MgY3VzdG9tZXIsIHVubGVzcyBzcGVjaWZpY2FsbHkgc3BlY2lmaWVkIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLlxuICAgKiBQbGVhc2Ugbm90ZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBhcmUgdXNhYmxlIHdpdGggRGVkaWNhdGVkIHRlbmFuY3kuXG4gICAqL1xuICBkZWZhdWx0SW5zdGFuY2VUZW5hbmN5PzogRGVmYXVsdEluc3RhbmNlVGVuYW5jeTtcblxuICAvKipcbiAgICogVGhlIEFXUyByZXNvdXJjZSB0YWdzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBWUEMuXG4gICAqL1xuICB0YWdzPzogY2RrLlRhZ3M7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgQVpzIHRvIHVzZSBpbiB0aGlzIHJlZ2lvblxuICAgKlxuICAgKiBJZiB0aGUgcmVnaW9uIGhhcyBtb3JlIEFacyB0aGFuIHlvdSB3YW50IHRvIHVzZSAoZm9yIGV4YW1wbGUsIGJlY2F1c2Ugb2YgRUlQIGxpbWl0cyksXG4gICAqIHBpY2sgYSBsb3dlciBudW1iZXIgaGVyZS4gVGhlIEFacyB3aWxsIGJlIHNvcnRlZCBhbmQgcGlja2VkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbGwgQVpzIGluIHRoZSByZWdpb25cbiAgICovXG4gIG1heEFacz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBOQVQgR2F0ZXdheXMgdG8gY3JlYXRlLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgc2V0IHRoaXMgdG8gMSBhbmQgeW91ciBzdWJuZXQgY29uZmlndXJhdGlvbiBpcyBmb3IgMyBQdWJsaWMgc3VibmV0cyB0aGVuIG9ubHlcbiAgICogb25lIG9mIHRoZSBQdWJsaWMgc3VibmV0cyB3aWxsIGhhdmUgYSBnYXRld2F5IGFuZCBhbGwgUHJpdmF0ZSBzdWJuZXRzIHdpbGwgcm91dGUgdG8gdGhpcyBOQVQgR2F0ZXdheS5cbiAgICogQGRlZmF1bHQgbWF4QVpzXG4gICAqL1xuICBuYXRHYXRld2F5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgc3VibmV0cyB3aGljaCB3aWxsIGhhdmUgTkFUIEdhdGV3YXlzXG4gICAqXG4gICAqIFlvdSBjYW4gcGljayBhIHNwZWNpZmljIGdyb3VwIG9mIHN1Ym5ldHMgYnkgc3BlY2lmeWluZyB0aGUgZ3JvdXAgbmFtZTtcbiAgICogdGhlIHBpY2tlZCBzdWJuZXRzIG11c3QgYmUgcHVibGljIHN1Ym5ldHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFsbCBwdWJsaWMgc3VibmV0c1xuICAgKi9cbiAgbmF0R2F0ZXdheVBsYWNlbWVudD86IFZwY1BsYWNlbWVudFN0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgdGhlIHN1Ym5ldHMgdG8gYnVpbGQgZm9yIGVhY2ggQVpcbiAgICpcbiAgICogVGhlIHN1Ym5ldHMgYXJlIGNvbnN0cnVjdGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBWUEMgc28geW91IG9ubHkgbmVlZFxuICAgKiBzcGVjaWZ5IHRoZSBjb25maWd1cmF0aW9uLiBUaGUgVlBDIGRldGFpbHMgKFZQQyBJRCwgc3BlY2lmaWMgQ0lEUixcbiAgICogc3BlY2lmaWMgQVogd2lsbCBiZSBjYWxjdWxhdGVkIGR1cmluZyBjcmVhdGlvbilcbiAgICpcbiAgICogRm9yIGV4YW1wbGUgaWYgeW91IHdhbnQgMSBwdWJsaWMgc3VibmV0LCAxIHByaXZhdGUgc3VibmV0LCBhbmQgMSBpc29sYXRlZFxuICAgKiBzdWJuZXQgaW4gZWFjaCBBWiBwcm92aWRlIHRoZSBmb2xsb3dpbmc6XG4gICAqIHN1Ym5ldENvbmZpZ3VyYXRpb246IFtcbiAgICogICAge1xuICAgKiAgICAgIGNpZHJNYXNrOiAyNCxcbiAgICogICAgICBuYW1lOiAnaW5ncmVzcycsXG4gICAqICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QdWJsaWMsXG4gICAqICAgIH0sXG4gICAqICAgIHtcbiAgICogICAgICBjaWRyTWFzazogMjQsXG4gICAqICAgICAgbmFtZTogJ2FwcGxpY2F0aW9uJyxcbiAgICogICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlByaXZhdGUsXG4gICAqICAgIH0sXG4gICAqICAgIHtcbiAgICogICAgICBjaWRyTWFzazogMjgsXG4gICAqICAgICAgbmFtZTogJ3JkcycsXG4gICAqICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5Jc29sYXRlZCxcbiAgICogICAgfVxuICAgKiBdXG4gICAqXG4gICAqIGBjaWRyTWFza2AgaXMgb3B0aW9uYWwgYW5kIGlmIG5vdCBwcm92aWRlZCB0aGUgSVAgc3BhY2UgaW4gdGhlIFZQQyB3aWxsIGJlXG4gICAqIGV2ZW5seSBkaXZpZGVkIGJldHdlZW4gdGhlIHJlcXVlc3RlZCBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgVlBDIENJRFIgd2lsbCBiZSBldmVubHkgZGl2aWRlZCBiZXR3ZWVuIDEgcHVibGljIGFuZCAxXG4gICAqIHByaXZhdGUgc3VibmV0IHBlciBBWlxuICAgKi9cbiAgc3VibmV0Q29uZmlndXJhdGlvbj86IFN1Ym5ldENvbmZpZ3VyYXRpb25bXTtcbn1cblxuLyoqXG4gKiBUaGUgZGVmYXVsdCB0ZW5hbmN5IG9mIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoZSBWUEMuXG4gKi9cbmV4cG9ydCBlbnVtIERlZmF1bHRJbnN0YW5jZVRlbmFuY3kge1xuICAvKipcbiAgICogSW5zdGFuY2VzIGNhbiBiZSBsYXVuY2hlZCB3aXRoIGFueSB0ZW5hbmN5LlxuICAgKi9cbiAgRGVmYXVsdCA9ICdkZWZhdWx0JyxcblxuICAvKipcbiAgICogQW55IGluc3RhbmNlIGxhdW5jaGVkIGludG8gdGhlIFZQQyBhdXRvbWF0aWNhbGx5IGhhcyBkZWRpY2F0ZWQgdGVuYW5jeSwgdW5sZXNzIHlvdSBsYXVuY2ggaXQgd2l0aCB0aGUgZGVmYXVsdCB0ZW5hbmN5LlxuICAgKi9cbiAgRGVkaWNhdGVkID0gJ2RlZGljYXRlZCdcbn1cblxuLyoqXG4gKiBTcGVjaWZ5IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgYSBWUEMgdG8gYmUgYnVpbHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBDSURSIE1hc2sgb3IgdGhlIG51bWJlciBvZiBsZWFkaW5nIDEgYml0cyBpbiB0aGUgcm91dGluZyBtYXNrXG4gICAqXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgMTYgLSAyOFxuICAgKi9cbiAgY2lkck1hc2s/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFN1Ym5ldCB0byBjb25maWd1cmUuXG4gICAqXG4gICAqIFRoZSBTdWJuZXQgdHlwZSB3aWxsIGNvbnRyb2wgdGhlIGFiaWxpdHkgdG8gcm91dGUgYW5kIGNvbm5lY3QgdG8gdGhlXG4gICAqIEludGVybmV0LlxuICAgKi9cbiAgc3VibmV0VHlwZTogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGNvbW1vbiBMb2dpY2FsIE5hbWUgZm9yIHRoZSBgVnBjU3VibmV0YFxuICAgKlxuICAgKiBUaGkgbmFtZSB3aWxsIGJlIHN1ZmZpeGVkIHdpdGggYW4gaW50ZWdlciBjb3JyZWxhdGluZyB0byBhIHNwZWNpZmljXG4gICAqIGF2YWlsYWJpbGl0eSB6b25lLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIHJlc291cmNlIHRhZ3MgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlc291cmNlLlxuICAgKi9cbiAgdGFncz86IGNkay5UYWdzO1xufVxuXG4vKipcbiAqIFZwY05ldHdvcmsgZGVwbG95cyBhbiBBV1MgVlBDLCB3aXRoIHB1YmxpYyBhbmQgcHJpdmF0ZSBzdWJuZXRzIHBlciBBdmFpbGFiaWxpdHkgWm9uZS5cbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGltcG9ydCB7IFZwY05ldHdvcmsgfSBmcm9tICdAYXdzLWNkay9hd3MtZWMyJ1xuICpcbiAqIGNvbnN0IHZwYyA9IG5ldyBWcGNOZXR3b3JrKHRoaXMsIHtcbiAqICAgY2lkcjogXCIxMC4wLjAuMC8xNlwiXG4gKiB9KVxuICpcbiAqIC8vIEl0ZXJhdGUgdGhlIHB1YmxpYyBzdWJuZXRzXG4gKiBmb3IgKGxldCBzdWJuZXQgb2YgdnBjLnB1YmxpY1N1Ym5ldHMpIHtcbiAqXG4gKiB9XG4gKlxuICogLy8gSXRlcmF0ZSB0aGUgcHJpdmF0ZSBzdWJuZXRzXG4gKiBmb3IgKGxldCBzdWJuZXQgb2YgdnBjLnByaXZhdGVTdWJuZXRzKSB7XG4gKlxuICogfVxuICovXG5leHBvcnQgY2xhc3MgVnBjTmV0d29yayBleHRlbmRzIFZwY05ldHdvcmtSZWYgaW1wbGVtZW50cyBjZGsuSVRhZ2dhYmxlIHtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgQ0lEUiByYW5nZSB1c2VkIHdoZW4gY3JlYXRpbmcgVlBDcy5cbiAgICogVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyBWcGNOZXR3b3JrUHJvcHMgd2hlbiBjcmVhdGluZyBhIFZQQ05ldHdvcmsgcmVzb3VyY2UuXG4gICAqIGUuZy4gbmV3IFZwY1Jlc291cmNlKHRoaXMsIHsgY2lkcjogJzE5Mi4xNjguMC4wLi8xNicgfSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9DSURSX1JBTkdFOiBzdHJpbmcgPSAnMTAuMC4wLjAvMTYnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBzdWJuZXQgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiAxIFB1YmxpYyBhbmQgMSBQcml2YXRlIHN1Ym5ldCBwZXIgQVogZXZlbmx5IHNwbGl0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfU1VCTkVUUzogU3VibmV0Q29uZmlndXJhdGlvbltdID0gW1xuICAgIHtcbiAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUHVibGljLFxuICAgICAgbmFtZTogREVGQVVMVF9TVUJORVRfTkFNRVtTdWJuZXRUeXBlLlB1YmxpY10sXG4gICAgfSxcbiAgICB7XG4gICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlByaXZhdGUsXG4gICAgICBuYW1lOiBERUZBVUxUX1NVQk5FVF9OQU1FW1N1Ym5ldFR5cGUuUHJpdmF0ZV0sXG4gICAgfVxuICBdO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHVibGljIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwdWJsaWNTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHByaXZhdGUgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IFZwY1N1Ym5ldFJlZltdID0gW107XG5cbiAgLyoqXG4gICAqIEFacyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1hbmFnZSB0YWdzIGZvciB0aGlzIGNvbnN0cnVjdCBhbmQgY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzOiBjZGsuVGFnTWFuYWdlcjtcblxuICAvKipcbiAgICogVGhlIFZQQyByZXNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSByZXNvdXJjZTogY2xvdWRmb3JtYXRpb24uVlBDUmVzb3VyY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBOZXR3b3JrQnVpbGRlclxuICAgKi9cbiAgcHJpdmF0ZSBuZXR3b3JrQnVpbGRlcjogTmV0d29ya0J1aWxkZXI7XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgb2YgTmF0R2F0ZXdheSBieSBBWlxuICAgKi9cbiAgcHJpdmF0ZSBuYXRHYXRld2F5QnlBWjogeyBbYXo6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHByaXZhdGUgc3VibmV0Q29uZmlndXJhdGlvbjogU3VibmV0Q29uZmlndXJhdGlvbltdID0gW107XG5cbiAgLyoqXG4gICAqIFZwY05ldHdvcmsgY3JlYXRlcyBhIFZQQyB0aGF0IHNwYW5zIGEgd2hvbGUgcmVnaW9uLlxuICAgKiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGl2aWRlIHRoZSBwcm92aWRlZCBWUEMgQ0lEUiByYW5nZSwgYW5kIGNyZWF0ZSBwdWJsaWMgYW5kIHByaXZhdGUgc3VibmV0cyBwZXIgQXZhaWxhYmlsaXR5IFpvbmUuXG4gICAqIE5ldHdvcmsgcm91dGluZyBmb3IgdGhlIHB1YmxpYyBzdWJuZXRzIHdpbGwgYmUgY29uZmlndXJlZCB0byBhbGxvdyBvdXRib3VuZCBhY2Nlc3MgZGlyZWN0bHkgdmlhIGFuIEludGVybmV0IEdhdGV3YXkuXG4gICAqIE5ldHdvcmsgcm91dGluZyBmb3IgdGhlIHByaXZhdGUgc3VibmV0cyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gYWxsb3cgb3V0Ym91bmQgYWNjZXNzIHZpYSBhIHNldCBvZiByZXNpbGllbnQgTkFUIEdhdGV3YXlzIChvbmUgcGVyIEFaKS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjTmV0d29ya1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgLy8gQ2FuJ3QgaGF2ZSBlbmFibGVkRG5zSG9zdG5hbWVzIHdpdGhvdXQgZW5hYmxlRG5zU3VwcG9ydFxuICAgIGlmIChwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXMgJiYgIXByb3BzLmVuYWJsZURuc1N1cHBvcnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG8gdXNlIEROUyBIb3N0bmFtZXMsIEROUyBTdXBwb3J0IG11c3QgYmUgZW5hYmxlZCwgaG93ZXZlciwgaXQgd2FzIGV4cGxpY2l0bHkgZGlzYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy50YWdzID0gbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMsIHsgaW5pdGlhbFRhZ3M6IHByb3BzLnRhZ3N9KTtcbiAgICB0aGlzLnRhZ3Muc2V0VGFnKE5BTUVfVEFHLCB0aGlzLnBhdGgsIHsgb3ZlcndyaXRlOiBmYWxzZSB9KTtcblxuICAgIGNvbnN0IGNpZHJCbG9jayA9IGlmVW5kZWZpbmVkKHByb3BzLmNpZHIsIFZwY05ldHdvcmsuREVGQVVMVF9DSURSX1JBTkdFKTtcbiAgICB0aGlzLm5ldHdvcmtCdWlsZGVyID0gbmV3IE5ldHdvcmtCdWlsZGVyKGNpZHJCbG9jayk7XG5cbiAgICBjb25zdCBlbmFibGVEbnNIb3N0bmFtZXMgPSBwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXMgPT0gbnVsbCA/IHRydWUgOiBwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXM7XG4gICAgY29uc3QgZW5hYmxlRG5zU3VwcG9ydCA9IHByb3BzLmVuYWJsZURuc1N1cHBvcnQgPT0gbnVsbCA/IHRydWUgOiBwcm9wcy5lbmFibGVEbnNTdXBwb3J0O1xuICAgIGNvbnN0IGluc3RhbmNlVGVuYW5jeSA9IHByb3BzLmRlZmF1bHRJbnN0YW5jZVRlbmFuY3kgfHwgJ2RlZmF1bHQnO1xuXG4gICAgLy8gRGVmaW5lIGEgVlBDIHVzaW5nIHRoZSBwcm92aWRlZCBDSURSIHJhbmdlXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZGZvcm1hdGlvbi5WUENSZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjaWRyQmxvY2ssXG4gICAgICBlbmFibGVEbnNIb3N0bmFtZXMsXG4gICAgICBlbmFibGVEbnNTdXBwb3J0LFxuICAgICAgaW5zdGFuY2VUZW5hbmN5LFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lcyA9IG5ldyBjZGsuQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHRoaXMpLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMuc29ydCgpO1xuICAgIGlmIChwcm9wcy5tYXhBWnMgIT0gbnVsbCkge1xuICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMgPSB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLnNsaWNlKDAsIHByb3BzLm1heEFacyk7XG4gICAgfVxuXG4gICAgdGhpcy52cGNJZCA9IHRoaXMucmVzb3VyY2UudnBjSWQ7XG4gICAgdGhpcy5kZXBlbmRlbmN5RWxlbWVudHMucHVzaCh0aGlzLnJlc291cmNlKTtcblxuICAgIHRoaXMuc3VibmV0Q29uZmlndXJhdGlvbiA9IGlmVW5kZWZpbmVkKHByb3BzLnN1Ym5ldENvbmZpZ3VyYXRpb24sIFZwY05ldHdvcmsuREVGQVVMVF9TVUJORVRTKTtcbiAgICAvLyBzdWJuZXRDb25maWd1cmF0aW9uIGFuZCBuYXRHYXRld2F5cyBtdXN0IGJlIHNldCBiZWZvcmUgY2FsbGluZyBjcmVhdGVTdWJuZXRzXG4gICAgdGhpcy5jcmVhdGVTdWJuZXRzKCk7XG5cbiAgICBjb25zdCBhbGxvd091dGJvdW5kID0gdGhpcy5zdWJuZXRDb25maWd1cmF0aW9uLmZpbHRlcihcbiAgICAgIHN1Ym5ldCA9PiAoc3VibmV0LnN1Ym5ldFR5cGUgIT09IFN1Ym5ldFR5cGUuSXNvbGF0ZWQpKS5sZW5ndGggPiAwO1xuXG4gICAgLy8gQ3JlYXRlIGFuIEludGVybmV0IEdhdGV3YXkgYW5kIGF0dGFjaCBpdCBpZiBuZWNlc3NhcnlcbiAgICBpZiAoYWxsb3dPdXRib3VuZCkge1xuICAgICAgY29uc3QgaWd3ID0gbmV3IGNsb3VkZm9ybWF0aW9uLkludGVybmV0R2F0ZXdheVJlc291cmNlKHRoaXMsICdJR1cnLCB7XG4gICAgICAgIHRhZ3M6IG5ldyBjZGsuVGFnTWFuYWdlcih0aGlzKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgYXR0ID0gbmV3IGNsb3VkZm9ybWF0aW9uLlZQQ0dhdGV3YXlBdHRhY2htZW50UmVzb3VyY2UodGhpcywgJ1ZQQ0dXJywge1xuICAgICAgICBpbnRlcm5ldEdhdGV3YXlJZDogaWd3LnJlZixcbiAgICAgICAgdnBjSWQ6IHRoaXMucmVzb3VyY2UucmVmXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeUVsZW1lbnRzLnB1c2goaWd3LCBhdHQpO1xuXG4gICAgICAodGhpcy5wdWJsaWNTdWJuZXRzIGFzIFZwY1B1YmxpY1N1Ym5ldFtdKS5mb3JFYWNoKHB1YmxpY1N1Ym5ldCA9PiB7XG4gICAgICAgIHB1YmxpY1N1Ym5ldC5hZGREZWZhdWx0SUdXUm91dGVFbnRyeShpZ3csIGF0dCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gaWYgZ2F0ZXdheXMgYXJlIG5lZWRlZCBjcmVhdGUgdGhlbVxuICAgICAgdGhpcy5jcmVhdGVOYXRHYXRld2F5cyhwcm9wcy5uYXRHYXRld2F5cywgcHJvcHMubmF0R2F0ZXdheVBsYWNlbWVudCk7XG5cbiAgICAgICh0aGlzLnByaXZhdGVTdWJuZXRzIGFzIFZwY1ByaXZhdGVTdWJuZXRbXSkuZm9yRWFjaCgocHJpdmF0ZVN1Ym5ldCwgaSkgPT4ge1xuICAgICAgICBsZXQgbmd3SWQgPSB0aGlzLm5hdEdhdGV3YXlCeUFaW3ByaXZhdGVTdWJuZXQuYXZhaWxhYmlsaXR5Wm9uZV07XG4gICAgICAgIGlmIChuZ3dJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgbmd3QXJyYXkgPSBBcnJheS5mcm9tKE9iamVjdC52YWx1ZXModGhpcy5uYXRHYXRld2F5QnlBWikpO1xuICAgICAgICAgIC8vIHJvdW5kIHJvYmluIHRoZSBhdmFpbGFibGUgTmF0R1cgc2luY2Ugb25lIGlzIG5vdCBpbiB5b3VyIEFaXG4gICAgICAgICAgbmd3SWQgPSBuZ3dBcnJheVtpICUgbmd3QXJyYXkubGVuZ3RoXTtcbiAgICAgICAgfVxuICAgICAgICBwcml2YXRlU3VibmV0LmFkZERlZmF1bHROYXRSb3V0ZUVudHJ5KG5nd0lkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgSVB2NCBDaWRyQmxvY2sgYXMgcmV0dXJuZWQgYnkgdGhlIFZQQ1xuICAgKi9cbiAgcHVibGljIGdldCBjaWRyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuZ2V0QXR0KFwiQ2lkckJsb2NrXCIpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5hdEdhdGV3YXlzKGdhdGV3YXlzPzogbnVtYmVyLCBwbGFjZW1lbnQ/OiBWcGNQbGFjZW1lbnRTdHJhdGVneSk6IHZvaWQge1xuICAgIGNvbnN0IHVzZU5hdEdhdGV3YXkgPSB0aGlzLnN1Ym5ldENvbmZpZ3VyYXRpb24uZmlsdGVyKFxuICAgICAgc3VibmV0ID0+IChzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5Qcml2YXRlKSkubGVuZ3RoID4gMDtcblxuICAgIGNvbnN0IG5hdENvdW50ID0gaWZVbmRlZmluZWQoZ2F0ZXdheXMsXG4gICAgICB1c2VOYXRHYXRld2F5ID8gdGhpcy5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGggOiAwKTtcblxuICAgIGxldCBuYXRTdWJuZXRzOiBWcGNQdWJsaWNTdWJuZXRbXTtcbiAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICBjb25zdCBzdWJuZXRzID0gdGhpcy5zdWJuZXRzKHBsYWNlbWVudCk7XG4gICAgICBmb3IgKGNvbnN0IHN1YiBvZiBzdWJuZXRzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1B1YmxpY1N1Ym5ldChzdWIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBuYXRHYXRld2F5UGxhY2VtZW50ICR7cGxhY2VtZW50fSBjb250YWlucyBub24gcHVibGljIHN1Ym5ldCAke3N1Yn1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmF0U3VibmV0cyA9IHN1Ym5ldHMgYXMgVnBjUHVibGljU3VibmV0W107XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hdFN1Ym5ldHMgPSAgdGhpcy5wdWJsaWNTdWJuZXRzIGFzIFZwY1B1YmxpY1N1Ym5ldFtdO1xuICAgIH1cblxuICAgIG5hdFN1Ym5ldHMgPSBuYXRTdWJuZXRzLnNsaWNlKDAsIG5hdENvdW50KTtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiBuYXRTdWJuZXRzKSB7XG4gICAgICB0aGlzLm5hdEdhdGV3YXlCeUFaW3N1Yi5hdmFpbGFiaWxpdHlab25lXSA9IHN1Yi5hZGROYXRHYXRld2F5KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNyZWF0ZVN1Ym5ldHMgY3JlYXRlcyB0aGUgc3VibmV0cyBzcGVjaWZpZWQgYnkgdGhlIHN1Ym5ldCBjb25maWd1cmF0aW9uXG4gICAqIGFycmF5IG9yIGNyZWF0ZXMgdGhlIGBERUZBVUxUX1NVQk5FVFNgIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU3VibmV0cygpIHtcbiAgICBjb25zdCByZW1haW5pbmdTcGFjZVN1Ym5ldHM6IFN1Ym5ldENvbmZpZ3VyYXRpb25bXSA9IFtdO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiBwdWJsaWMvcHJpdmF0ZSBzdWJuZXRzIGJhc2VkIG9uIG51bWJlciBvZiBBWnNcbiAgICBjb25zdCB6b25lcyA9IG5ldyBjZGsuQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHRoaXMpLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHpvbmVzLnNvcnQoKTtcblxuICAgIGZvciAoY29uc3Qgc3VibmV0IG9mIHRoaXMuc3VibmV0Q29uZmlndXJhdGlvbikge1xuICAgICAgaWYgKHN1Ym5ldC5jaWRyTWFzayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlbWFpbmluZ1NwYWNlU3VibmV0cy5wdXNoKHN1Ym5ldCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5jcmVhdGVTdWJuZXRSZXNvdXJjZXMoc3VibmV0LCBzdWJuZXQuY2lkck1hc2spO1xuICAgIH1cblxuICAgIGNvbnN0IHRvdGFsUmVtYWluaW5nID0gcmVtYWluaW5nU3BhY2VTdWJuZXRzLmxlbmd0aCAqIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoO1xuICAgIGNvbnN0IGNpZHJNYXNrRm9yUmVtYWluZyA9IHRoaXMubmV0d29ya0J1aWxkZXIubWFza0ZvclJlbWFpbmluZ1N1Ym5ldHModG90YWxSZW1haW5pbmcpO1xuICAgIGZvciAoY29uc3Qgc3VibmV0IG9mIHJlbWFpbmluZ1NwYWNlU3VibmV0cykge1xuICAgICAgdGhpcy5jcmVhdGVTdWJuZXRSZXNvdXJjZXMoc3VibmV0LCBjaWRyTWFza0ZvclJlbWFpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VibmV0UmVzb3VyY2VzKHN1Ym5ldENvbmZpZzogU3VibmV0Q29uZmlndXJhdGlvbiwgY2lkck1hc2s6IG51bWJlcikge1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMuZm9yRWFjaCgoem9uZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBzdWJuZXRJZChzdWJuZXRDb25maWcubmFtZSwgaW5kZXgpO1xuICAgICAgY29uc3Qgc3VibmV0UHJvcHM6IFZwY1N1Ym5ldFByb3BzID0ge1xuICAgICAgICBhdmFpbGFiaWxpdHlab25lOiB6b25lLFxuICAgICAgICB2cGNJZDogdGhpcy52cGNJZCxcbiAgICAgICAgY2lkckJsb2NrOiB0aGlzLm5ldHdvcmtCdWlsZGVyLmFkZFN1Ym5ldChjaWRyTWFzayksXG4gICAgICAgIG1hcFB1YmxpY0lwT25MYXVuY2g6IChzdWJuZXRDb25maWcuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QdWJsaWMpLFxuICAgICAgICB0YWdzOiBzdWJuZXRDb25maWcudGFncyxcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAoc3VibmV0Q29uZmlnLnN1Ym5ldFR5cGUpIHtcbiAgICAgICAgY2FzZSBTdWJuZXRUeXBlLlB1YmxpYzpcbiAgICAgICAgICBjb25zdCBwdWJsaWNTdWJuZXQgPSBuZXcgVnBjUHVibGljU3VibmV0KHRoaXMsIG5hbWUsIHN1Ym5ldFByb3BzKTtcbiAgICAgICAgICB0aGlzLnB1YmxpY1N1Ym5ldHMucHVzaChwdWJsaWNTdWJuZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFN1Ym5ldFR5cGUuUHJpdmF0ZTpcbiAgICAgICAgICBjb25zdCBwcml2YXRlU3VibmV0ID0gbmV3IFZwY1ByaXZhdGVTdWJuZXQodGhpcywgbmFtZSwgc3VibmV0UHJvcHMpO1xuICAgICAgICAgIHRoaXMucHJpdmF0ZVN1Ym5ldHMucHVzaChwcml2YXRlU3VibmV0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTdWJuZXRUeXBlLklzb2xhdGVkOlxuICAgICAgICAgIGNvbnN0IGlzb2xhdGVkU3VibmV0ID0gbmV3IFZwY1ByaXZhdGVTdWJuZXQodGhpcywgbmFtZSwgc3VibmV0UHJvcHMpO1xuICAgICAgICAgIHRoaXMuaXNvbGF0ZWRTdWJuZXRzLnB1c2goaXNvbGF0ZWRTdWJuZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogU3BlY2lmeSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGEgVlBDIHN1Ym5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY1N1Ym5ldFByb3BzIHtcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSB6b25lIGZvciB0aGUgc3VibmV0XG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgd2hpY2ggdGhpcyBzdWJuZXQgaXMgcGFydCBvZlxuICAgKi9cbiAgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENJRFIgbm90YXRpb24gZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBjaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgaWYgYSBwdWJsaWMgSVAgaXMgYXNzb2NpYXRlZCB0byBhbiBpbnN0YW5jZSBhdCBsYXVuY2hcbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZSBpbiBTdWJuZXQuUHVibGljLCBmYWxzZSBpbiBTdWJuZXQuUHJpdmF0ZSBvciBTdWJuZXQuSXNvbGF0ZWQuXG4gICAqL1xuICBtYXBQdWJsaWNJcE9uTGF1bmNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEFXUyByZXNvdXJjZSB0YWdzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBTdWJuZXRcbiAgICovXG4gIHRhZ3M/OiBjZGsuVGFncztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbmV3IFZQQyBzdWJuZXQgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1N1Ym5ldCBleHRlbmRzIFZwY1N1Ym5ldFJlZiBpbXBsZW1lbnRzIGNkay5JVGFnZ2FibGUge1xuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhlIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYW5hZ2UgdGFncyBmb3IgQ29uc3RydWN0IGFuZCBwcm9wYWdhdGUgdG8gY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzOiBjZGsuVGFnTWFuYWdlcjtcblxuICAvKipcbiAgICogVGhlIHJvdXRlVGFibGVJZCBhdHRhY2hlZCB0byB0aGlzIHN1Ym5ldC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVUYWJsZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNTdWJuZXRQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG4gICAgdGhpcy50YWdzID0gbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMsIHtpbml0aWFsVGFnczogcHJvcHMudGFnc30pO1xuICAgIHRoaXMudGFncy5zZXRUYWcoTkFNRV9UQUcsIHRoaXMucGF0aCwge292ZXJ3cml0ZTogZmFsc2V9KTtcblxuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZSA9IHByb3BzLmF2YWlsYWJpbGl0eVpvbmU7XG4gICAgY29uc3Qgc3VibmV0ID0gbmV3IGNsb3VkZm9ybWF0aW9uLlN1Ym5ldFJlc291cmNlKHRoaXMsICdTdWJuZXQnLCB7XG4gICAgICB2cGNJZDogcHJvcHMudnBjSWQsXG4gICAgICBjaWRyQmxvY2s6IHByb3BzLmNpZHJCbG9jayxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICBtYXBQdWJsaWNJcE9uTGF1bmNoOiBwcm9wcy5tYXBQdWJsaWNJcE9uTGF1bmNoLFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuICAgIHRoaXMuc3VibmV0SWQgPSBzdWJuZXQuc3VibmV0SWQ7XG4gICAgY29uc3QgdGFibGUgPSBuZXcgY2xvdWRmb3JtYXRpb24uUm91dGVUYWJsZVJlc291cmNlKHRoaXMsICdSb3V0ZVRhYmxlJywge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwY0lkLFxuICAgICAgdGFnczogbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMpLFxuICAgIH0pO1xuICAgIHRoaXMucm91dGVUYWJsZUlkID0gdGFibGUucmVmO1xuXG4gICAgLy8gQXNzb2NpYXRlIHRoZSBwdWJsaWMgcm91dGUgdGFibGUgZm9yIHRoaXMgc3VibmV0LCB0byB0aGlzIHN1Ym5ldFxuICAgIGNvbnN0IHJvdXRlQXNzb2MgPSBuZXcgY2xvdWRmb3JtYXRpb24uU3VibmV0Um91dGVUYWJsZUFzc29jaWF0aW9uUmVzb3VyY2UodGhpcywgJ1JvdXRlVGFibGVBc3NvY2lhdGlvbicsIHtcbiAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgcm91dGVUYWJsZUlkOiB0YWJsZS5yZWZcbiAgICB9KTtcblxuICAgIHRoaXMuZGVwZW5kZW5jeUVsZW1lbnRzLnB1c2goc3VibmV0LCB0YWJsZSwgcm91dGVBc3NvYyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkRGVmYXVsdFJvdXRlVG9OQVQobmF0R2F0ZXdheUlkOiBzdHJpbmcpIHtcbiAgICBuZXcgY2xvdWRmb3JtYXRpb24uUm91dGVSZXNvdXJjZSh0aGlzLCBgRGVmYXVsdFJvdXRlYCwge1xuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGVJZCxcbiAgICAgIGRlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgIG5hdEdhdGV3YXlJZFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRlZmF1bHQgcm91dGUgdGhhdCBwb2ludHMgdG8gYSBwYXNzZWQgSUdXLCB3aXRoIGEgZGVwZW5kZW5jeVxuICAgKiBvbiB0aGUgSUdXJ3MgYXR0YWNobWVudCB0byB0aGUgVlBDLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZERlZmF1bHRSb3V0ZVRvSUdXKFxuICAgIGdhdGV3YXk6IGNsb3VkZm9ybWF0aW9uLkludGVybmV0R2F0ZXdheVJlc291cmNlLFxuICAgIGdhdGV3YXlBdHRhY2htZW50OiBjbG91ZGZvcm1hdGlvbi5WUENHYXRld2F5QXR0YWNobWVudFJlc291cmNlKSB7XG4gICAgY29uc3Qgcm91dGUgPSBuZXcgY2xvdWRmb3JtYXRpb24uUm91dGVSZXNvdXJjZSh0aGlzLCBgRGVmYXVsdFJvdXRlYCwge1xuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGVJZCxcbiAgICAgIGRlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgIGdhdGV3YXlJZDogZ2F0ZXdheS5yZWZcbiAgICB9KTtcbiAgICByb3V0ZS5hZGREZXBlbmRlbmN5KGdhdGV3YXlBdHRhY2htZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwdWJsaWMgVlBDIHN1Ym5ldCByZXNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgVnBjUHVibGljU3VibmV0IGV4dGVuZHMgVnBjU3VibmV0IHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNTdWJuZXRQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRlZmF1bHQgcm91dGUgdGhhdCBwb2ludHMgdG8gYSBwYXNzZWQgSUdXLCB3aXRoIGEgZGVwZW5kZW5jeVxuICAgKiBvbiB0aGUgSUdXJ3MgYXR0YWNobWVudCB0byB0aGUgVlBDLlxuICAgKi9cbiAgcHVibGljIGFkZERlZmF1bHRJR1dSb3V0ZUVudHJ5KFxuICAgIGdhdGV3YXk6IGNsb3VkZm9ybWF0aW9uLkludGVybmV0R2F0ZXdheVJlc291cmNlLFxuICAgIGdhdGV3YXlBdHRhY2htZW50OiBjbG91ZGZvcm1hdGlvbi5WUENHYXRld2F5QXR0YWNobWVudFJlc291cmNlKSB7XG4gICAgdGhpcy5hZGREZWZhdWx0Um91dGVUb0lHVyhnYXRld2F5LCBnYXRld2F5QXR0YWNobWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtYW5hZ2VkIE5BVCBnYXRld2F5IGF0dGFjaGVkIHRvIHRoaXMgcHVibGljIHN1Ym5ldC5cbiAgICogQWxzbyBhZGRzIHRoZSBFSVAgZm9yIHRoZSBtYW5hZ2VkIE5BVC5cbiAgICogQHJldHVybnMgQSByZWYgdG8gdGhlIHRoZSBOQVQgR2F0ZXdheSBJRFxuICAgKi9cbiAgcHVibGljIGFkZE5hdEdhdGV3YXkoKSB7XG4gICAgLy8gQ3JlYXRlIGEgTkFUIEdhdGV3YXkgaW4gdGhpcyBwdWJsaWMgc3VibmV0XG4gICAgY29uc3Qgbmd3ID0gbmV3IGNsb3VkZm9ybWF0aW9uLk5hdEdhdGV3YXlSZXNvdXJjZSh0aGlzLCBgTkFUR2F0ZXdheWAsIHtcbiAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgYWxsb2NhdGlvbklkOiBuZXcgY2xvdWRmb3JtYXRpb24uRUlQUmVzb3VyY2UodGhpcywgYEVJUGAsIHtcbiAgICAgICAgZG9tYWluOiAndnBjJ1xuICAgICAgfSkuZWlwQWxsb2NhdGlvbklkLFxuICAgICAgdGFnczogbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMpLFxuICAgIH0pO1xuICAgIHJldHVybiBuZ3cubmF0R2F0ZXdheUlkO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHByaXZhdGUgVlBDIHN1Ym5ldCByZXNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgVnBjUHJpdmF0ZVN1Ym5ldCBleHRlbmRzIFZwY1N1Ym5ldCB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjU3VibmV0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVudHJ5IHRvIHRoaXMgc3VibmV0cyByb3V0ZSB0YWJsZSB0aGF0IHBvaW50cyB0byB0aGUgcGFzc2VkIE5BVEdhdHdheUlkXG4gICAqL1xuICBwdWJsaWMgYWRkRGVmYXVsdE5hdFJvdXRlRW50cnkobmF0R2F0ZXdheUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFkZERlZmF1bHRSb3V0ZVRvTkFUKG5hdEdhdGV3YXlJZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaWZVbmRlZmluZWQ8VD4odmFsdWU6IFQgfCB1bmRlZmluZWQsIGRlZmF1bHRWYWx1ZTogVCk6IFQge1xuICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogZGVmYXVsdFZhbHVlO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLG1EQUFpRDtBQUNqRCxpREFBZ0Q7QUFDaEQsaUNBQXdEO0FBQ3hELHVDQUEwRjtBQUUxRjs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQTRHaEM7O0dBRUc7QUFDSCxJQUFZLHNCQVVYO0FBVkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCw2Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILGlEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFWVyxzQkFBc0IsR0FBdEIsOEJBQXNCLEtBQXRCLDhCQUFzQixRQVVqQztBQW1DRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsVUFBVyxTQUFRLHVCQUFhO0lBMkUzQzs7Ozs7T0FLRztJQUNILFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsUUFBeUIsRUFBRTtRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBcER0Qjs7V0FFRztRQUNhLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuRDs7V0FFRztRQUNhLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwRDs7V0FFRztRQUNhLG9CQUFlLEdBQW1CLEVBQUUsQ0FBQztRQXNCckQ7O1dBRUc7UUFDSyxtQkFBYyxHQUE2QixFQUFFLENBQUM7UUFFdEQ7O1dBRUc7UUFDSyx3QkFBbUIsR0FBMEIsRUFBRSxDQUFDO1FBV3RELDBEQUEwRDtRQUMxRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHlGQUF5RixDQUFDLENBQUM7U0FDNUc7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFX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QixJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBL0JELDBDQStCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxTQUFTO0lBQzdDLFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsS0FBcUI7UUFDcEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksdUJBQXVCLENBQUMsWUFBb0I7UUFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQVhELDRDQVdDO0FBRUQsU0FBUyxXQUFXLENBQUksS0FBb0IsRUFBRSxZQUFlO0lBQzNELE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi9lYzIuZ2VuZXJhdGVkJztcbmltcG9ydCB7IE5ldHdvcmtCdWlsZGVyIH0gZnJvbSAnLi9uZXR3b3JrLXV0aWwnO1xuaW1wb3J0IHsgREVGQVVMVF9TVUJORVRfTkFNRSwgc3VibmV0SWQgIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IFN1Ym5ldFR5cGUsIFZwY05ldHdvcmtSZWYsIFZwY1BsYWNlbWVudFN0cmF0ZWd5LCBWcGNTdWJuZXRSZWYgfSBmcm9tICcuL3ZwYy1yZWYnO1xuXG4vKipcbiAqIE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IE5BTUVfVEFHOiBzdHJpbmcgPSAnTmFtZSc7XG5cbi8qKlxuICogVnBjTmV0d29ya1Byb3BzIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGEgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjTmV0d29ya1Byb3BzIHtcblxuICAvKipcbiAgICogVGhlIENJRFIgcmFuZ2UgdG8gdXNlIGZvciB0aGUgVlBDIChlLmcuICcxMC4wLjAuMC8xNicpLiBTaG91bGQgYmUgYSBtaW5pbXVtIG9mIC8yOCBhbmQgbWF4aW11bSBzaXplIG9mIC8xNi5cbiAgICogVGhlIHJhbmdlIHdpbGwgYmUgc3BsaXQgZXZlbmx5IGludG8gdHdvIHN1Ym5ldHMgcGVyIEF2YWlsYWJpbGl0eSBab25lIChvbmUgcHVibGljLCBvbmUgcHJpdmF0ZSkuXG4gICAqL1xuICBjaWRyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5zdGFuY2VzIGxhdW5jaGVkIGluIHRoZSBWUEMgZ2V0IHB1YmxpYyBETlMgaG9zdG5hbWVzLlxuICAgKiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyB0cnVlLCBpbnN0YW5jZXMgaW4gdGhlIFZQQyBnZXQgcHVibGljIEROUyBob3N0bmFtZXMsXG4gICAqIGJ1dCBvbmx5IGlmIHRoZSBlbmFibGVEbnNTdXBwb3J0IGF0dHJpYnV0ZSBpcyBhbHNvIHNldCB0byB0cnVlLlxuICAgKi9cbiAgZW5hYmxlRG5zSG9zdG5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIEROUyByZXNvbHV0aW9uIGlzIHN1cHBvcnRlZCBmb3IgdGhlIFZQQy4gSWYgdGhpcyBhdHRyaWJ1dGVcbiAgICogaXMgZmFsc2UsIHRoZSBBbWF6b24tcHJvdmlkZWQgRE5TIHNlcnZlciBpbiB0aGUgVlBDIHRoYXQgcmVzb2x2ZXMgcHVibGljIEROUyBob3N0bmFtZXNcbiAgICogdG8gSVAgYWRkcmVzc2VzIGlzIG5vdCBlbmFibGVkLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyB0cnVlLCBxdWVyaWVzIHRvIHRoZSBBbWF6b25cbiAgICogcHJvdmlkZWQgRE5TIHNlcnZlciBhdCB0aGUgMTY5LjI1NC4xNjkuMjUzIElQIGFkZHJlc3MsIG9yIHRoZSByZXNlcnZlZCBJUCBhZGRyZXNzXG4gICAqIGF0IHRoZSBiYXNlIG9mIHRoZSBWUEMgSVB2NCBuZXR3b3JrIHJhbmdlIHBsdXMgdHdvIHdpbGwgc3VjY2VlZC5cbiAgICovXG4gIGVuYWJsZURuc1N1cHBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB0ZW5hbmN5IG9mIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoZSBWUEMuXG4gICAqIEJ5IGRlZmF1bHQsIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggZGVmYXVsdCAoc2hhcmVkKSB0ZW5hbmN5LlxuICAgKiBCeSBzZXR0aW5nIHRoaXMgdG8gZGVkaWNhdGVkIHRlbmFuY3ksIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIG9uIGhhcmR3YXJlIGRlZGljYXRlZFxuICAgKiB0byBhIHNpbmdsZSBBV1MgY3VzdG9tZXIsIHVubGVzcyBzcGVjaWZpY2FsbHkgc3BlY2lmaWVkIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLlxuICAgKiBQbGVhc2Ugbm90ZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBhcmUgdXNhYmxlIHdpdGggRGVkaWNhdGVkIHRlbmFuY3kuXG4gICAqL1xuICBkZWZhdWx0SW5zdGFuY2VUZW5hbmN5PzogRGVmYXVsdEluc3RhbmNlVGVuYW5jeTtcblxuICAvKipcbiAgICogVGhlIEFXUyByZXNvdXJjZSB0YWdzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBWUEMuXG4gICAqL1xuICB0YWdzPzogY2RrLlRhZ3M7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgQVpzIHRvIHVzZSBpbiB0aGlzIHJlZ2lvblxuICAgKlxuICAgKiBJZiB0aGUgcmVnaW9uIGhhcyBtb3JlIEFacyB0aGFuIHlvdSB3YW50IHRvIHVzZSAoZm9yIGV4YW1wbGUsIGJlY2F1c2Ugb2YgRUlQIGxpbWl0cyksXG4gICAqIHBpY2sgYSBsb3dlciBudW1iZXIgaGVyZS4gVGhlIEFacyB3aWxsIGJlIHNvcnRlZCBhbmQgcGlja2VkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbGwgQVpzIGluIHRoZSByZWdpb25cbiAgICovXG4gIG1heEFacz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBOQVQgR2F0ZXdheXMgdG8gY3JlYXRlLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgc2V0IHRoaXMgdG8gMSBhbmQgeW91ciBzdWJuZXQgY29uZmlndXJhdGlvbiBpcyBmb3IgMyBQdWJsaWMgc3VibmV0cyB0aGVuIG9ubHlcbiAgICogb25lIG9mIHRoZSBQdWJsaWMgc3VibmV0cyB3aWxsIGhhdmUgYSBnYXRld2F5IGFuZCBhbGwgUHJpdmF0ZSBzdWJuZXRzIHdpbGwgcm91dGUgdG8gdGhpcyBOQVQgR2F0ZXdheS5cbiAgICogQGRlZmF1bHQgbWF4QVpzXG4gICAqL1xuICBuYXRHYXRld2F5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgc3VibmV0cyB3aGljaCB3aWxsIGhhdmUgTkFUIEdhdGV3YXlzXG4gICAqXG4gICAqIFlvdSBjYW4gcGljayBhIHNwZWNpZmljIGdyb3VwIG9mIHN1Ym5ldHMgYnkgc3BlY2lmeWluZyB0aGUgZ3JvdXAgbmFtZTtcbiAgICogdGhlIHBpY2tlZCBzdWJuZXRzIG11c3QgYmUgcHVibGljIHN1Ym5ldHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFsbCBwdWJsaWMgc3VibmV0c1xuICAgKi9cbiAgbmF0R2F0ZXdheVBsYWNlbWVudD86IFZwY1BsYWNlbWVudFN0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgdGhlIHN1Ym5ldHMgdG8gYnVpbGQgZm9yIGVhY2ggQVpcbiAgICpcbiAgICogVGhlIHN1Ym5ldHMgYXJlIGNvbnN0cnVjdGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBWUEMgc28geW91IG9ubHkgbmVlZFxuICAgKiBzcGVjaWZ5IHRoZSBjb25maWd1cmF0aW9uLiBUaGUgVlBDIGRldGFpbHMgKFZQQyBJRCwgc3BlY2lmaWMgQ0lEUixcbiAgICogc3BlY2lmaWMgQVogd2lsbCBiZSBjYWxjdWxhdGVkIGR1cmluZyBjcmVhdGlvbilcbiAgICpcbiAgICogRm9yIGV4YW1wbGUgaWYgeW91IHdhbnQgMSBwdWJsaWMgc3VibmV0LCAxIHByaXZhdGUgc3VibmV0LCBhbmQgMSBpc29sYXRlZFxuICAgKiBzdWJuZXQgaW4gZWFjaCBBWiBwcm92aWRlIHRoZSBmb2xsb3dpbmc6XG4gICAqIHN1Ym5ldENvbmZpZ3VyYXRpb246IFtcbiAgICogICAge1xuICAgKiAgICAgIGNpZHJNYXNrOiAyNCxcbiAgICogICAgICBuYW1lOiAnaW5ncmVzcycsXG4gICAqICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QdWJsaWMsXG4gICAqICAgIH0sXG4gICAqICAgIHtcbiAgICogICAgICBjaWRyTWFzazogMjQsXG4gICAqICAgICAgbmFtZTogJ2FwcGxpY2F0aW9uJyxcbiAgICogICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlByaXZhdGUsXG4gICAqICAgIH0sXG4gICAqICAgIHtcbiAgICogICAgICBjaWRyTWFzazogMjgsXG4gICAqICAgICAgbmFtZTogJ3JkcycsXG4gICAqICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5Jc29sYXRlZCxcbiAgICogICAgfVxuICAgKiBdXG4gICAqXG4gICAqIGBjaWRyTWFza2AgaXMgb3B0aW9uYWwgYW5kIGlmIG5vdCBwcm92aWRlZCB0aGUgSVAgc3BhY2UgaW4gdGhlIFZQQyB3aWxsIGJlXG4gICAqIGV2ZW5seSBkaXZpZGVkIGJldHdlZW4gdGhlIHJlcXVlc3RlZCBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgVlBDIENJRFIgd2lsbCBiZSBldmVubHkgZGl2aWRlZCBiZXR3ZWVuIDEgcHVibGljIGFuZCAxXG4gICAqIHByaXZhdGUgc3VibmV0IHBlciBBWlxuICAgKi9cbiAgc3VibmV0Q29uZmlndXJhdGlvbj86IFN1Ym5ldENvbmZpZ3VyYXRpb25bXTtcbn1cblxuLyoqXG4gKiBUaGUgZGVmYXVsdCB0ZW5hbmN5IG9mIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoZSBWUEMuXG4gKi9cbmV4cG9ydCBlbnVtIERlZmF1bHRJbnN0YW5jZVRlbmFuY3kge1xuICAvKipcbiAgICogSW5zdGFuY2VzIGNhbiBiZSBsYXVuY2hlZCB3aXRoIGFueSB0ZW5hbmN5LlxuICAgKi9cbiAgRGVmYXVsdCA9ICdkZWZhdWx0JyxcblxuICAvKipcbiAgICogQW55IGluc3RhbmNlIGxhdW5jaGVkIGludG8gdGhlIFZQQyBhdXRvbWF0aWNhbGx5IGhhcyBkZWRpY2F0ZWQgdGVuYW5jeSwgdW5sZXNzIHlvdSBsYXVuY2ggaXQgd2l0aCB0aGUgZGVmYXVsdCB0ZW5hbmN5LlxuICAgKi9cbiAgRGVkaWNhdGVkID0gJ2RlZGljYXRlZCdcbn1cblxuLyoqXG4gKiBTcGVjaWZ5IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgYSBWUEMgdG8gYmUgYnVpbHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBDSURSIE1hc2sgb3IgdGhlIG51bWJlciBvZiBsZWFkaW5nIDEgYml0cyBpbiB0aGUgcm91dGluZyBtYXNrXG4gICAqXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgMTYgLSAyOFxuICAgKi9cbiAgY2lkck1hc2s/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFN1Ym5ldCB0byBjb25maWd1cmUuXG4gICAqXG4gICAqIFRoZSBTdWJuZXQgdHlwZSB3aWxsIGNvbnRyb2wgdGhlIGFiaWxpdHkgdG8gcm91dGUgYW5kIGNvbm5lY3QgdG8gdGhlXG4gICAqIEludGVybmV0LlxuICAgKi9cbiAgc3VibmV0VHlwZTogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGNvbW1vbiBMb2dpY2FsIE5hbWUgZm9yIHRoZSBgVnBjU3VibmV0YFxuICAgKlxuICAgKiBUaGkgbmFtZSB3aWxsIGJlIHN1ZmZpeGVkIHdpdGggYW4gaW50ZWdlciBjb3JyZWxhdGluZyB0byBhIHNwZWNpZmljXG4gICAqIGF2YWlsYWJpbGl0eSB6b25lLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIHJlc291cmNlIHRhZ3MgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlc291cmNlLlxuICAgKi9cbiAgdGFncz86IGNkay5UYWdzO1xufVxuXG4vKipcbiAqIFZwY05ldHdvcmsgZGVwbG95cyBhbiBBV1MgVlBDLCB3aXRoIHB1YmxpYyBhbmQgcHJpdmF0ZSBzdWJuZXRzIHBlciBBdmFpbGFiaWxpdHkgWm9uZS5cbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGltcG9ydCB7IFZwY05ldHdvcmsgfSBmcm9tICdAYXdzLWNkay9hd3MtZWMyJ1xuICpcbiAqIGNvbnN0IHZwYyA9IG5ldyBWcGNOZXR3b3JrKHRoaXMsIHtcbiAqICAgY2lkcjogXCIxMC4wLjAuMC8xNlwiXG4gKiB9KVxuICpcbiAqIC8vIEl0ZXJhdGUgdGhlIHB1YmxpYyBzdWJuZXRzXG4gKiBmb3IgKGxldCBzdWJuZXQgb2YgdnBjLnB1YmxpY1N1Ym5ldHMpIHtcbiAqXG4gKiB9XG4gKlxuICogLy8gSXRlcmF0ZSB0aGUgcHJpdmF0ZSBzdWJuZXRzXG4gKiBmb3IgKGxldCBzdWJuZXQgb2YgdnBjLnByaXZhdGVTdWJuZXRzKSB7XG4gKlxuICogfVxuICovXG5leHBvcnQgY2xhc3MgVnBjTmV0d29yayBleHRlbmRzIFZwY05ldHdvcmtSZWYgaW1wbGVtZW50cyBjZGsuSVRhZ2dhYmxlIHtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgQ0lEUiByYW5nZSB1c2VkIHdoZW4gY3JlYXRpbmcgVlBDcy5cbiAgICogVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyBWcGNOZXR3b3JrUHJvcHMgd2hlbiBjcmVhdGluZyBhIFZQQ05ldHdvcmsgcmVzb3VyY2UuXG4gICAqIGUuZy4gbmV3IFZwY1Jlc291cmNlKHRoaXMsIHsgY2lkcjogJzE5Mi4xNjguMC4wLi8xNicgfSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9DSURSX1JBTkdFOiBzdHJpbmcgPSAnMTAuMC4wLjAvMTYnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBzdWJuZXQgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiAxIFB1YmxpYyBhbmQgMSBQcml2YXRlIHN1Ym5ldCBwZXIgQVogZXZlbmx5IHNwbGl0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfU1VCTkVUUzogU3VibmV0Q29uZmlndXJhdGlvbltdID0gW1xuICAgIHtcbiAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUHVibGljLFxuICAgICAgbmFtZTogREVGQVVMVF9TVUJORVRfTkFNRVtTdWJuZXRUeXBlLlB1YmxpY10sXG4gICAgfSxcbiAgICB7XG4gICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlByaXZhdGUsXG4gICAgICBuYW1lOiBERUZBVUxUX1NVQk5FVF9OQU1FW1N1Ym5ldFR5cGUuUHJpdmF0ZV0sXG4gICAgfVxuICBdO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHVibGljIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwdWJsaWNTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHByaXZhdGUgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IFZwY1N1Ym5ldFJlZltdID0gW107XG5cbiAgLyoqXG4gICAqIEFacyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1hbmFnZSB0YWdzIGZvciB0aGlzIGNvbnN0cnVjdCBhbmQgY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzOiBjZGsuVGFnTWFuYWdlcjtcblxuICAvKipcbiAgICogVGhlIFZQQyByZXNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSByZXNvdXJjZTogY2xvdWRmb3JtYXRpb24uVlBDUmVzb3VyY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBOZXR3b3JrQnVpbGRlclxuICAgKi9cbiAgcHJpdmF0ZSBuZXR3b3JrQnVpbGRlcjogTmV0d29ya0J1aWxkZXI7XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgb2YgTmF0R2F0ZXdheSBieSBBWlxuICAgKi9cbiAgcHJpdmF0ZSBuYXRHYXRld2F5QnlBWjogeyBbYXo6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHByaXZhdGUgc3VibmV0Q29uZmlndXJhdGlvbjogU3VibmV0Q29uZmlndXJhdGlvbltdID0gW107XG5cbiAgLyoqXG4gICAqIFZwY05ldHdvcmsgY3JlYXRlcyBhIFZQQyB0aGF0IHNwYW5zIGEgd2hvbGUgcmVnaW9uLlxuICAgKiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGl2aWRlIHRoZSBwcm92aWRlZCBWUEMgQ0lEUiByYW5nZSwgYW5kIGNyZWF0ZSBwdWJsaWMgYW5kIHByaXZhdGUgc3VibmV0cyBwZXIgQXZhaWxhYmlsaXR5IFpvbmUuXG4gICAqIE5ldHdvcmsgcm91dGluZyBmb3IgdGhlIHB1YmxpYyBzdWJuZXRzIHdpbGwgYmUgY29uZmlndXJlZCB0byBhbGxvdyBvdXRib3VuZCBhY2Nlc3MgZGlyZWN0bHkgdmlhIGFuIEludGVybmV0IEdhdGV3YXkuXG4gICAqIE5ldHdvcmsgcm91dGluZyBmb3IgdGhlIHByaXZhdGUgc3VibmV0cyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gYWxsb3cgb3V0Ym91bmQgYWNjZXNzIHZpYSBhIHNldCBvZiByZXNpbGllbnQgTkFUIEdhdGV3YXlzIChvbmUgcGVyIEFaKS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjTmV0d29ya1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgLy8gQ2FuJ3QgaGF2ZSBlbmFibGVkRG5zSG9zdG5hbWVzIHdpdGhvdXQgZW5hYmxlRG5zU3VwcG9ydFxuICAgIGlmIChwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXMgJiYgIXByb3BzLmVuYWJsZURuc1N1cHBvcnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG8gdXNlIEROUyBIb3N0bmFtZXMsIEROUyBTdXBwb3J0IG11c3QgYmUgZW5hYmxlZCwgaG93ZXZlciwgaXQgd2FzIGV4cGxpY2l0bHkgZGlzYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy50YWdzID0gbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMsIHsgaW5pdGlhbFRhZ3M6IHByb3BzLnRhZ3N9KTtcbiAgICB0aGlzLnRhZ3Muc2V0VGFnKE5BTUVfVEFHLCB0aGlzLnBhdGgsIHsgb3ZlcndyaXRlOiBmYWxzZSB9KTtcblxuICAgIGNvbnN0IGNpZHJCbG9jayA9IGlmVW5kZWZpbmVkKHByb3BzLmNpZHIsIFZwY05ldHdvcmsuREVGQVVMVF9DSURSX1JBTkdFKTtcbiAgICB0aGlzLm5ldHdvcmtCdWlsZGVyID0gbmV3IE5ldHdvcmtCdWlsZGVyKGNpZHJCbG9jayk7XG5cbiAgICBjb25zdCBlbmFibGVEbnNIb3N0bmFtZXMgPSBwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXMgPT0gbnVsbCA/IHRydWUgOiBwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXM7XG4gICAgY29uc3QgZW5hYmxlRG5zU3VwcG9ydCA9IHByb3BzLmVuYWJsZURuc1N1cHBvcnQgPT0gbnVsbCA/IHRydWUgOiBwcm9wcy5lbmFibGVEbnNTdXBwb3J0O1xuICAgIGNvbnN0IGluc3RhbmNlVGVuYW5jeSA9IHByb3BzLmRlZmF1bHRJbnN0YW5jZVRlbmFuY3kgfHwgJ2RlZmF1bHQnO1xuXG4gICAgLy8gRGVmaW5lIGEgVlBDIHVzaW5nIHRoZSBwcm92aWRlZCBDSURSIHJhbmdlXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZGZvcm1hdGlvbi5WUENSZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjaWRyQmxvY2ssXG4gICAgICBlbmFibGVEbnNIb3N0bmFtZXMsXG4gICAgICBlbmFibGVEbnNTdXBwb3J0LFxuICAgICAgaW5zdGFuY2VUZW5hbmN5LFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lcyA9IG5ldyBjZGsuQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHRoaXMpLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMuc29ydCgpO1xuICAgIGlmIChwcm9wcy5tYXhBWnMgIT0gbnVsbCkge1xuICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMgPSB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLnNsaWNlKDAsIHByb3BzLm1heEFacyk7XG4gICAgfVxuXG4gICAgdGhpcy52cGNJZCA9IHRoaXMucmVzb3VyY2UudnBjSWQ7XG4gICAgdGhpcy5kZXBlbmRlbmN5RWxlbWVudHMucHVzaCh0aGlzLnJlc291cmNlKTtcblxuICAgIHRoaXMuc3VibmV0Q29uZmlndXJhdGlvbiA9IGlmVW5kZWZpbmVkKHByb3BzLnN1Ym5ldENvbmZpZ3VyYXRpb24sIFZwY05ldHdvcmsuREVGQVVMVF9TVUJORVRTKTtcbiAgICAvLyBzdWJuZXRDb25maWd1cmF0aW9uIGFuZCBuYXRHYXRld2F5cyBtdXN0IGJlIHNldCBiZWZvcmUgY2FsbGluZyBjcmVhdGVTdWJuZXRzXG4gICAgdGhpcy5jcmVhdGVTdWJuZXRzKCk7XG5cbiAgICBjb25zdCBhbGxvd091dGJvdW5kID0gdGhpcy5zdWJuZXRDb25maWd1cmF0aW9uLmZpbHRlcihcbiAgICAgIHN1Ym5ldCA9PiAoc3VibmV0LnN1Ym5ldFR5cGUgIT09IFN1Ym5ldFR5cGUuSXNvbGF0ZWQpKS5sZW5ndGggPiAwO1xuXG4gICAgLy8gQ3JlYXRlIGFuIEludGVybmV0IEdhdGV3YXkgYW5kIGF0dGFjaCBpdCBpZiBuZWNlc3NhcnlcbiAgICBpZiAoYWxsb3dPdXRib3VuZCkge1xuICAgICAgY29uc3QgaWd3ID0gbmV3IGNsb3VkZm9ybWF0aW9uLkludGVybmV0R2F0ZXdheVJlc291cmNlKHRoaXMsICdJR1cnLCB7XG4gICAgICAgIHRhZ3M6IG5ldyBjZGsuVGFnTWFuYWdlcih0aGlzKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgYXR0ID0gbmV3IGNsb3VkZm9ybWF0aW9uLlZQQ0dhdGV3YXlBdHRhY2htZW50UmVzb3VyY2UodGhpcywgJ1ZQQ0dXJywge1xuICAgICAgICBpbnRlcm5ldEdhdGV3YXlJZDogaWd3LnJlZixcbiAgICAgICAgdnBjSWQ6IHRoaXMucmVzb3VyY2UucmVmXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeUVsZW1lbnRzLnB1c2goaWd3LCBhdHQpO1xuXG4gICAgICAodGhpcy5wdWJsaWNTdWJuZXRzIGFzIFZwY1B1YmxpY1N1Ym5ldFtdKS5mb3JFYWNoKHB1YmxpY1N1Ym5ldCA9PiB7XG4gICAgICAgIHB1YmxpY1N1Ym5ldC5hZGREZWZhdWx0SUdXUm91dGVFbnRyeShpZ3csIGF0dCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gaWYgZ2F0ZXdheXMgYXJlIG5lZWRlZCBjcmVhdGUgdGhlbVxuICAgICAgdGhpcy5jcmVhdGVOYXRHYXRld2F5cyhwcm9wcy5uYXRHYXRld2F5cywgcHJvcHMubmF0R2F0ZXdheVBsYWNlbWVudCk7XG5cbiAgICAgICh0aGlzLnByaXZhdGVTdWJuZXRzIGFzIFZwY1ByaXZhdGVTdWJuZXRbXSkuZm9yRWFjaCgocHJpdmF0ZVN1Ym5ldCwgaSkgPT4ge1xuICAgICAgICBsZXQgbmd3SWQgPSB0aGlzLm5hdEdhdGV3YXlCeUFaW3ByaXZhdGVTdWJuZXQuYXZhaWxhYmlsaXR5Wm9uZV07XG4gICAgICAgIGlmIChuZ3dJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgbmd3QXJyYXkgPSBBcnJheS5mcm9tKE9iamVjdC52YWx1ZXModGhpcy5uYXRHYXRld2F5QnlBWikpO1xuICAgICAgICAgIC8vIHJvdW5kIHJvYmluIHRoZSBhdmFpbGFibGUgTmF0R1cgc2luY2Ugb25lIGlzIG5vdCBpbiB5b3VyIEFaXG4gICAgICAgICAgbmd3SWQgPSBuZ3dBcnJheVtpICUgbmd3QXJyYXkubGVuZ3RoXTtcbiAgICAgICAgfVxuICAgICAgICBwcml2YXRlU3VibmV0LmFkZERlZmF1bHROYXRSb3V0ZUVudHJ5KG5nd0lkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgSVB2NCBDaWRyQmxvY2sgYXMgcmV0dXJuZWQgYnkgdGhlIFZQQ1xuICAgKi9cbiAgcHVibGljIGdldCBjaWRyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuZ2V0QXR0KFwiQ2lkckJsb2NrXCIpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5hdEdhdGV3YXlzKGdhdGV3YXlzPzogbnVtYmVyLCBwbGFjZW1lbnQ/OiBWcGNQbGFjZW1lbnRTdHJhdGVneSk6IHZvaWQge1xuICAgIGNvbnN0IHVzZU5hdEdhdGV3YXkgPSB0aGlzLnN1Ym5ldENvbmZpZ3VyYXRpb24uZmlsdGVyKFxuICAgICAgc3VibmV0ID0+IChzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5Qcml2YXRlKSkubGVuZ3RoID4gMDtcblxuICAgIGNvbnN0IG5hdENvdW50ID0gaWZVbmRlZmluZWQoZ2F0ZXdheXMsXG4gICAgICB1c2VOYXRHYXRld2F5ID8gdGhpcy5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGggOiAwKTtcblxuICAgIGxldCBuYXRTdWJuZXRzOiBWcGNQdWJsaWNTdWJuZXRbXTtcbiAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICBjb25zdCBzdWJuZXRzID0gdGhpcy5zdWJuZXRzKHBsYWNlbWVudCk7XG4gICAgICBmb3IgKGNvbnN0IHN1YiBvZiBzdWJuZXRzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1B1YmxpY1N1Ym5ldChzdWIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBuYXRHYXRld2F5UGxhY2VtZW50ICR7cGxhY2VtZW50fSBjb250YWlucyBub24gcHVibGljIHN1Ym5ldCAke3N1Yn1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmF0U3VibmV0cyA9IHN1Ym5ldHMgYXMgVnBjUHVibGljU3VibmV0W107XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hdFN1Ym5ldHMgPSAgdGhpcy5wdWJsaWNTdWJuZXRzIGFzIFZwY1B1YmxpY1N1Ym5ldFtdO1xuICAgIH1cblxuICAgIG5hdFN1Ym5ldHMgPSBuYXRTdWJuZXRzLnNsaWNlKDAsIG5hdENvdW50KTtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiBuYXRTdWJuZXRzKSB7XG4gICAgICB0aGlzLm5hdEdhdGV3YXlCeUFaW3N1Yi5hdmFpbGFiaWxpdHlab25lXSA9IHN1Yi5hZGROYXRHYXRld2F5KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNyZWF0ZVN1Ym5ldHMgY3JlYXRlcyB0aGUgc3VibmV0cyBzcGVjaWZpZWQgYnkgdGhlIHN1Ym5ldCBjb25maWd1cmF0aW9uXG4gICAqIGFycmF5IG9yIGNyZWF0ZXMgdGhlIGBERUZBVUxUX1NVQk5FVFNgIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU3VibmV0cygpIHtcbiAgICBjb25zdCByZW1haW5pbmdTcGFjZVN1Ym5ldHM6IFN1Ym5ldENvbmZpZ3VyYXRpb25bXSA9IFtdO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiBwdWJsaWMvcHJpdmF0ZSBzdWJuZXRzIGJhc2VkIG9uIG51bWJlciBvZiBBWnNcbiAgICBjb25zdCB6b25lcyA9IG5ldyBjZGsuQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHRoaXMpLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHpvbmVzLnNvcnQoKTtcblxuICAgIGZvciAoY29uc3Qgc3VibmV0IG9mIHRoaXMuc3VibmV0Q29uZmlndXJhdGlvbikge1xuICAgICAgaWYgKHN1Ym5ldC5jaWRyTWFzayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlbWFpbmluZ1NwYWNlU3VibmV0cy5wdXNoKHN1Ym5ldCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5jcmVhdGVTdWJuZXRSZXNvdXJjZXMoc3VibmV0LCBzdWJuZXQuY2lkck1hc2spO1xuICAgIH1cblxuICAgIGNvbnN0IHRvdGFsUmVtYWluaW5nID0gcmVtYWluaW5nU3BhY2VTdWJuZXRzLmxlbmd0aCAqIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoO1xuICAgIGNvbnN0IGNpZHJNYXNrRm9yUmVtYWluZyA9IHRoaXMubmV0d29ya0J1aWxkZXIubWFza0ZvclJlbWFpbmluZ1N1Ym5ldHModG90YWxSZW1haW5pbmcpO1xuICAgIGZvciAoY29uc3Qgc3VibmV0IG9mIHJlbWFpbmluZ1NwYWNlU3VibmV0cykge1xuICAgICAgdGhpcy5jcmVhdGVTdWJuZXRSZXNvdXJjZXMoc3VibmV0LCBjaWRyTWFza0ZvclJlbWFpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VibmV0UmVzb3VyY2VzKHN1Ym5ldENvbmZpZzogU3VibmV0Q29uZmlndXJhdGlvbiwgY2lkck1hc2s6IG51bWJlcikge1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMuZm9yRWFjaCgoem9uZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBzdWJuZXRJZChzdWJuZXRDb25maWcubmFtZSwgaW5kZXgpO1xuICAgICAgY29uc3Qgc3VibmV0UHJvcHM6IFZwY1N1Ym5ldFByb3BzID0ge1xuICAgICAgICBhdmFpbGFiaWxpdHlab25lOiB6b25lLFxuICAgICAgICB2cGNJZDogdGhpcy52cGNJZCxcbiAgICAgICAgY2lkckJsb2NrOiB0aGlzLm5ldHdvcmtCdWlsZGVyLmFkZFN1Ym5ldChjaWRyTWFzayksXG4gICAgICAgIG1hcFB1YmxpY0lwT25MYXVuY2g6IChzdWJuZXRDb25maWcuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QdWJsaWMpLFxuICAgICAgICB0YWdzOiBzdWJuZXRDb25maWcudGFncyxcbiAgICAgIH07XG5cbiAgICAgIGxldCBzdWJuZXQ6IFZwY1N1Ym5ldDtcbiAgICAgIHN3aXRjaCAoc3VibmV0Q29uZmlnLnN1Ym5ldFR5cGUpIHtcbiAgICAgICAgY2FzZSBTdWJuZXRUeXBlLlB1YmxpYzpcbiAgICAgICAgICBjb25zdCBwdWJsaWNTdWJuZXQgPSBuZXcgVnBjUHVibGljU3VibmV0KHRoaXMsIG5hbWUsIHN1Ym5ldFByb3BzKTtcbiAgICAgICAgICB0aGlzLnB1YmxpY1N1Ym5ldHMucHVzaChwdWJsaWNTdWJuZXQpO1xuICAgICAgICAgIHN1Ym5ldCA9IHB1YmxpY1N1Ym5ldDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTdWJuZXRUeXBlLlByaXZhdGU6XG4gICAgICAgICAgY29uc3QgcHJpdmF0ZVN1Ym5ldCA9IG5ldyBWcGNQcml2YXRlU3VibmV0KHRoaXMsIG5hbWUsIHN1Ym5ldFByb3BzKTtcbiAgICAgICAgICB0aGlzLnByaXZhdGVTdWJuZXRzLnB1c2gocHJpdmF0ZVN1Ym5ldCk7XG4gICAgICAgICAgc3VibmV0ID0gcHJpdmF0ZVN1Ym5ldDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTdWJuZXRUeXBlLklzb2xhdGVkOlxuICAgICAgICAgIGNvbnN0IGlzb2xhdGVkU3VibmV0ID0gbmV3IFZwY1ByaXZhdGVTdWJuZXQodGhpcywgbmFtZSwgc3VibmV0UHJvcHMpO1xuICAgICAgICAgIGlzb2xhdGVkU3VibmV0LnRhZ3Muc2V0VGFnKFNVQk5FVFRZUEVfVEFHLCBzdWJuZXRUeXBlVGFnVmFsdWUoc3VibmV0Q29uZmlnLnN1Ym5ldFR5cGUpKTtcbiAgICAgICAgICB0aGlzLmlzb2xhdGVkU3VibmV0cy5wdXNoKGlzb2xhdGVkU3VibmV0KTtcbiAgICAgICAgICBzdWJuZXQgPSBpc29sYXRlZFN1Ym5ldDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBzdWJuZXQgdHlwZTogJHtzdWJuZXRDb25maWcuc3VibmV0VHlwZX1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlc2UgdmFsdWVzIHdpbGwgYmUgdXNlZCB0byByZWNvdmVyIHRoZSBjb25maWcgdXBvbiBwcm92aWRlciBpbXBvcnRcbiAgICAgIHN1Ym5ldC50YWdzLnNldFRhZyhTVUJORVROQU1FX1RBRywgc3VibmV0Q29uZmlnLm5hbWUsIHsgcHJvcGFnYXRlOiBmYWxzZSB9KTtcbiAgICAgIHN1Ym5ldC50YWdzLnNldFRhZyhTVUJORVRUWVBFX1RBRywgc3VibmV0VHlwZVRhZ1ZhbHVlKHN1Ym5ldENvbmZpZy5zdWJuZXRUeXBlKSwgeyBwcm9wYWdhdGU6IGZhbHNlIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IFNVQk5FVFRZUEVfVEFHID0gJ2F3cy1jZGs6c3VibmV0LXR5cGUnO1xuY29uc3QgU1VCTkVUTkFNRV9UQUcgPSAnYXdzLWNkazpzdWJuZXQtbmFtZSc7XG5cbmZ1bmN0aW9uIHN1Ym5ldFR5cGVUYWdWYWx1ZSh0eXBlOiBTdWJuZXRUeXBlKSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgU3VibmV0VHlwZS5QdWJsaWM6IHJldHVybiAnUHVibGljJztcbiAgICBjYXNlIFN1Ym5ldFR5cGUuUHJpdmF0ZTogcmV0dXJuICdQcml2YXRlJztcbiAgICBjYXNlIFN1Ym5ldFR5cGUuSXNvbGF0ZWQ6IHJldHVybiAnSXNvbGF0ZWQnO1xuICB9XG59XG5cbi8qKlxuICogU3BlY2lmeSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGEgVlBDIHN1Ym5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY1N1Ym5ldFByb3BzIHtcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSB6b25lIGZvciB0aGUgc3VibmV0XG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgd2hpY2ggdGhpcyBzdWJuZXQgaXMgcGFydCBvZlxuICAgKi9cbiAgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENJRFIgbm90YXRpb24gZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBjaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgaWYgYSBwdWJsaWMgSVAgaXMgYXNzb2NpYXRlZCB0byBhbiBpbnN0YW5jZSBhdCBsYXVuY2hcbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZSBpbiBTdWJuZXQuUHVibGljLCBmYWxzZSBpbiBTdWJuZXQuUHJpdmF0ZSBvciBTdWJuZXQuSXNvbGF0ZWQuXG4gICAqL1xuICBtYXBQdWJsaWNJcE9uTGF1bmNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEFXUyByZXNvdXJjZSB0YWdzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBTdWJuZXRcbiAgICovXG4gIHRhZ3M/OiBjZGsuVGFncztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbmV3IFZQQyBzdWJuZXQgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1N1Ym5ldCBleHRlbmRzIFZwY1N1Ym5ldFJlZiBpbXBsZW1lbnRzIGNkay5JVGFnZ2FibGUge1xuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhlIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYW5hZ2UgdGFncyBmb3IgQ29uc3RydWN0IGFuZCBwcm9wYWdhdGUgdG8gY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzOiBjZGsuVGFnTWFuYWdlcjtcblxuICAvKipcbiAgICogVGhlIHJvdXRlVGFibGVJZCBhdHRhY2hlZCB0byB0aGlzIHN1Ym5ldC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVUYWJsZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNTdWJuZXRQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG4gICAgdGhpcy50YWdzID0gbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMsIHtpbml0aWFsVGFnczogcHJvcHMudGFnc30pO1xuICAgIHRoaXMudGFncy5zZXRUYWcoTkFNRV9UQUcsIHRoaXMucGF0aCwge292ZXJ3cml0ZTogZmFsc2V9KTtcblxuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZSA9IHByb3BzLmF2YWlsYWJpbGl0eVpvbmU7XG4gICAgY29uc3Qgc3VibmV0ID0gbmV3IGNsb3VkZm9ybWF0aW9uLlN1Ym5ldFJlc291cmNlKHRoaXMsICdTdWJuZXQnLCB7XG4gICAgICB2cGNJZDogcHJvcHMudnBjSWQsXG4gICAgICBjaWRyQmxvY2s6IHByb3BzLmNpZHJCbG9jayxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICBtYXBQdWJsaWNJcE9uTGF1bmNoOiBwcm9wcy5tYXBQdWJsaWNJcE9uTGF1bmNoLFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuICAgIHRoaXMuc3VibmV0SWQgPSBzdWJuZXQuc3VibmV0SWQ7XG4gICAgY29uc3QgdGFibGUgPSBuZXcgY2xvdWRmb3JtYXRpb24uUm91dGVUYWJsZVJlc291cmNlKHRoaXMsICdSb3V0ZVRhYmxlJywge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwY0lkLFxuICAgICAgdGFnczogbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMpLFxuICAgIH0pO1xuICAgIHRoaXMucm91dGVUYWJsZUlkID0gdGFibGUucmVmO1xuXG4gICAgLy8gQXNzb2NpYXRlIHRoZSBwdWJsaWMgcm91dGUgdGFibGUgZm9yIHRoaXMgc3VibmV0LCB0byB0aGlzIHN1Ym5ldFxuICAgIGNvbnN0IHJvdXRlQXNzb2MgPSBuZXcgY2xvdWRmb3JtYXRpb24uU3VibmV0Um91dGVUYWJsZUFzc29jaWF0aW9uUmVzb3VyY2UodGhpcywgJ1JvdXRlVGFibGVBc3NvY2lhdGlvbicsIHtcbiAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgcm91dGVUYWJsZUlkOiB0YWJsZS5yZWZcbiAgICB9KTtcblxuICAgIHRoaXMuZGVwZW5kZW5jeUVsZW1lbnRzLnB1c2goc3VibmV0LCB0YWJsZSwgcm91dGVBc3NvYyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkRGVmYXVsdFJvdXRlVG9OQVQobmF0R2F0ZXdheUlkOiBzdHJpbmcpIHtcbiAgICBuZXcgY2xvdWRmb3JtYXRpb24uUm91dGVSZXNvdXJjZSh0aGlzLCBgRGVmYXVsdFJvdXRlYCwge1xuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGVJZCxcbiAgICAgIGRlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgIG5hdEdhdGV3YXlJZFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRlZmF1bHQgcm91dGUgdGhhdCBwb2ludHMgdG8gYSBwYXNzZWQgSUdXLCB3aXRoIGEgZGVwZW5kZW5jeVxuICAgKiBvbiB0aGUgSUdXJ3MgYXR0YWNobWVudCB0byB0aGUgVlBDLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZERlZmF1bHRSb3V0ZVRvSUdXKFxuICAgIGdhdGV3YXk6IGNsb3VkZm9ybWF0aW9uLkludGVybmV0R2F0ZXdheVJlc291cmNlLFxuICAgIGdhdGV3YXlBdHRhY2htZW50OiBjbG91ZGZvcm1hdGlvbi5WUENHYXRld2F5QXR0YWNobWVudFJlc291cmNlKSB7XG4gICAgY29uc3Qgcm91dGUgPSBuZXcgY2xvdWRmb3JtYXRpb24uUm91dGVSZXNvdXJjZSh0aGlzLCBgRGVmYXVsdFJvdXRlYCwge1xuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGVJZCxcbiAgICAgIGRlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgIGdhdGV3YXlJZDogZ2F0ZXdheS5yZWZcbiAgICB9KTtcbiAgICByb3V0ZS5hZGREZXBlbmRlbmN5KGdhdGV3YXlBdHRhY2htZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwdWJsaWMgVlBDIHN1Ym5ldCByZXNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgVnBjUHVibGljU3VibmV0IGV4dGVuZHMgVnBjU3VibmV0IHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNTdWJuZXRQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRlZmF1bHQgcm91dGUgdGhhdCBwb2ludHMgdG8gYSBwYXNzZWQgSUdXLCB3aXRoIGEgZGVwZW5kZW5jeVxuICAgKiBvbiB0aGUgSUdXJ3MgYXR0YWNobWVudCB0byB0aGUgVlBDLlxuICAgKi9cbiAgcHVibGljIGFkZERlZmF1bHRJR1dSb3V0ZUVudHJ5KFxuICAgIGdhdGV3YXk6IGNsb3VkZm9ybWF0aW9uLkludGVybmV0R2F0ZXdheVJlc291cmNlLFxuICAgIGdhdGV3YXlBdHRhY2htZW50OiBjbG91ZGZvcm1hdGlvbi5WUENHYXRld2F5QXR0YWNobWVudFJlc291cmNlKSB7XG4gICAgdGhpcy5hZGREZWZhdWx0Um91dGVUb0lHVyhnYXRld2F5LCBnYXRld2F5QXR0YWNobWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtYW5hZ2VkIE5BVCBnYXRld2F5IGF0dGFjaGVkIHRvIHRoaXMgcHVibGljIHN1Ym5ldC5cbiAgICogQWxzbyBhZGRzIHRoZSBFSVAgZm9yIHRoZSBtYW5hZ2VkIE5BVC5cbiAgICogQHJldHVybnMgQSByZWYgdG8gdGhlIHRoZSBOQVQgR2F0ZXdheSBJRFxuICAgKi9cbiAgcHVibGljIGFkZE5hdEdhdGV3YXkoKSB7XG4gICAgLy8gQ3JlYXRlIGEgTkFUIEdhdGV3YXkgaW4gdGhpcyBwdWJsaWMgc3VibmV0XG4gICAgY29uc3Qgbmd3ID0gbmV3IGNsb3VkZm9ybWF0aW9uLk5hdEdhdGV3YXlSZXNvdXJjZSh0aGlzLCBgTkFUR2F0ZXdheWAsIHtcbiAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgYWxsb2NhdGlvbklkOiBuZXcgY2xvdWRmb3JtYXRpb24uRUlQUmVzb3VyY2UodGhpcywgYEVJUGAsIHtcbiAgICAgICAgZG9tYWluOiAndnBjJ1xuICAgICAgfSkuZWlwQWxsb2NhdGlvbklkLFxuICAgICAgdGFnczogbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMpLFxuICAgIH0pO1xuICAgIHJldHVybiBuZ3cubmF0R2F0ZXdheUlkO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHByaXZhdGUgVlBDIHN1Ym5ldCByZXNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgVnBjUHJpdmF0ZVN1Ym5ldCBleHRlbmRzIFZwY1N1Ym5ldCB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjU3VibmV0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVudHJ5IHRvIHRoaXMgc3VibmV0cyByb3V0ZSB0YWJsZSB0aGF0IHBvaW50cyB0byB0aGUgcGFzc2VkIE5BVEdhdHdheUlkXG4gICAqL1xuICBwdWJsaWMgYWRkRGVmYXVsdE5hdFJvdXRlRW50cnkobmF0R2F0ZXdheUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFkZERlZmF1bHRSb3V0ZVRvTkFUKG5hdEdhdGV3YXlJZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaWZVbmRlZmluZWQ8VD4odmFsdWU6IFQgfCB1bmRlZmluZWQsIGRlZmF1bHRWYWx1ZTogVCk6IFQge1xuICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogZGVmYXVsdFZhbHVlO1xufVxuIl19
{
"name": "@aws-cdk/aws-ec2",
"version": "0.17.0",
"version": "0.18.0",
"description": "CDK Constructs for AWS EC2",

@@ -55,16 +55,18 @@ "main": "lib/index.js",

"devDependencies": {
"@aws-cdk/assert": "^0.17.0",
"cdk-build-tools": "^0.17.0",
"cdk-integ-tools": "^0.17.0",
"cfn2ts": "^0.17.0",
"pkglint": "^0.17.0"
"@aws-cdk/assert": "^0.18.0",
"cdk-build-tools": "^0.18.0",
"cdk-integ-tools": "^0.18.0",
"cfn2ts": "^0.18.0",
"pkglint": "^0.18.0"
},
"dependencies": {
"@aws-cdk/aws-iam": "^0.17.0",
"@aws-cdk/cdk": "^0.17.0"
"@aws-cdk/aws-iam": "^0.18.0",
"@aws-cdk/cdk": "^0.18.0",
"@aws-cdk/cx-api": "^0.18.0"
},
"homepage": "https://github.com/awslabs/aws-cdk",
"peerDependencies": {
"@aws-cdk/cdk": "^0.17.0"
"@aws-cdk/cdk": "^0.18.0",
"@aws-cdk/cx-api": "^0.18.0"
}
}

@@ -175,2 +175,14 @@ ## AWS Compute and Networking Construct Library

#### Sharing VPCs across stacks
If you are creating multiple `Stack`s inside the same CDK application, you
can reuse a VPC defined in one Stack in another by using `export()` and
`import()`:
[sharing VPCs between stacks](test/example.share-vpcs.lit.ts)
If your VPC is created outside your CDK app, you can use `importFromContext()`:
[importing existing VPCs](test/integ.import-default-vpc.lit.ts)
### Allowing Connections

@@ -177,0 +189,0 @@

@@ -31,2 +31,10 @@ {

"Value": "aws-cdk-ec2-vpc/MyVpc/PublicSubnet1"
},
{
"Key": "aws-cdk:subnet-name",
"Value": "Public"
},
{
"Key": "aws-cdk:subnet-type",
"Value": "Public"
}

@@ -61,2 +69,17 @@ ]

},
"MyVpcPublicSubnet1DefaultRoute95FDF9EB": {
"Type": "AWS::EC2::Route",
"DependsOn": [
"MyVpcVPCGW488ACE0D"
],
"Properties": {
"RouteTableId": {
"Ref": "MyVpcPublicSubnet1RouteTableC46AB2F4"
},
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": {
"Ref": "MyVpcIGW5C4A4F63"
}
}
},
"MyVpcPublicSubnet1EIP096967CB": {

@@ -88,17 +111,2 @@ "Type": "AWS::EC2::EIP",

},
"MyVpcPublicSubnet1DefaultRoute95FDF9EB": {
"Type": "AWS::EC2::Route",
"DependsOn": [
"MyVpcVPCGW488ACE0D"
],
"Properties": {
"RouteTableId": {
"Ref": "MyVpcPublicSubnet1RouteTableC46AB2F4"
},
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": {
"Ref": "MyVpcIGW5C4A4F63"
}
}
},
"MyVpcPublicSubnet2Subnet492B6BFB": {

@@ -117,2 +125,10 @@ "Type": "AWS::EC2::Subnet",

"Value": "aws-cdk-ec2-vpc/MyVpc/PublicSubnet2"
},
{
"Key": "aws-cdk:subnet-name",
"Value": "Public"
},
{
"Key": "aws-cdk:subnet-type",
"Value": "Public"
}

@@ -147,2 +163,17 @@ ]

},
"MyVpcPublicSubnet2DefaultRoute052936F6": {
"Type": "AWS::EC2::Route",
"DependsOn": [
"MyVpcVPCGW488ACE0D"
],
"Properties": {
"RouteTableId": {
"Ref": "MyVpcPublicSubnet2RouteTable1DF17386"
},
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": {
"Ref": "MyVpcIGW5C4A4F63"
}
}
},
"MyVpcPublicSubnet2EIP8CCBA239": {

@@ -174,17 +205,2 @@ "Type": "AWS::EC2::EIP",

},
"MyVpcPublicSubnet2DefaultRoute052936F6": {
"Type": "AWS::EC2::Route",
"DependsOn": [
"MyVpcVPCGW488ACE0D"
],
"Properties": {
"RouteTableId": {
"Ref": "MyVpcPublicSubnet2RouteTable1DF17386"
},
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": {
"Ref": "MyVpcIGW5C4A4F63"
}
}
},
"MyVpcPublicSubnet3Subnet57EEE236": {

@@ -203,2 +219,10 @@ "Type": "AWS::EC2::Subnet",

"Value": "aws-cdk-ec2-vpc/MyVpc/PublicSubnet3"
},
{
"Key": "aws-cdk:subnet-name",
"Value": "Public"
},
{
"Key": "aws-cdk:subnet-type",
"Value": "Public"
}

@@ -233,2 +257,17 @@ ]

},
"MyVpcPublicSubnet3DefaultRoute3A83AB36": {
"Type": "AWS::EC2::Route",
"DependsOn": [
"MyVpcVPCGW488ACE0D"
],
"Properties": {
"RouteTableId": {
"Ref": "MyVpcPublicSubnet3RouteTable15028F08"
},
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": {
"Ref": "MyVpcIGW5C4A4F63"
}
}
},
"MyVpcPublicSubnet3EIPC5ACADAB": {

@@ -260,17 +299,2 @@ "Type": "AWS::EC2::EIP",

},
"MyVpcPublicSubnet3DefaultRoute3A83AB36": {
"Type": "AWS::EC2::Route",
"DependsOn": [
"MyVpcVPCGW488ACE0D"
],
"Properties": {
"RouteTableId": {
"Ref": "MyVpcPublicSubnet3RouteTable15028F08"
},
"DestinationCidrBlock": "0.0.0.0/0",
"GatewayId": {
"Ref": "MyVpcIGW5C4A4F63"
}
}
},
"MyVpcPrivateSubnet1Subnet5057CF7E": {

@@ -289,2 +313,10 @@ "Type": "AWS::EC2::Subnet",

"Value": "aws-cdk-ec2-vpc/MyVpc/PrivateSubnet1"
},
{
"Key": "aws-cdk:subnet-name",
"Value": "Private"
},
{
"Key": "aws-cdk:subnet-type",
"Value": "Private"
}

@@ -344,2 +376,10 @@ ]

"Value": "aws-cdk-ec2-vpc/MyVpc/PrivateSubnet2"
},
{
"Key": "aws-cdk:subnet-name",
"Value": "Private"
},
{
"Key": "aws-cdk:subnet-type",
"Value": "Private"
}

@@ -399,2 +439,10 @@ ]

"Value": "aws-cdk-ec2-vpc/MyVpc/PrivateSubnet3"
},
{
"Key": "aws-cdk:subnet-name",
"Value": "Private"
},
{
"Key": "aws-cdk:subnet-type",
"Value": "Private"
}

@@ -401,0 +449,0 @@ ]

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

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