@aws-mdaa/datawarehouse 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -154
- package/SCHEMA.md +7284 -541
- package/lib/config-schema.json +2750 -217
- package/lib/datawarehouse-config.d.ts +188 -151
- package/lib/datawarehouse-config.js +7 -2
- package/package.json +17 -12
- package/sample_configs/sample-config-comprehensive.yaml +212 -0
- package/sample_configs/sample-config-minimal.yaml +45 -0
- package/sample_configs/sample-config-public-access-block-external.yaml +31 -0
- package/mdaa.config.json +0 -3
|
@@ -39,10 +39,15 @@ class DataWarehouseConfigParser extends app_1.MdaaAppConfigParser {
|
|
|
39
39
|
this.eventNotifications = this.configContents.eventNotifications;
|
|
40
40
|
this.dbName = this.configContents.dbName;
|
|
41
41
|
this.snapshotIdentifier = this.configContents.snapshotIdentifier;
|
|
42
|
-
this.snapshotOwnerAccount = this.configContents.snapshotOwnerAccount
|
|
42
|
+
this.snapshotOwnerAccount = this.configContents.snapshotOwnerAccount
|
|
43
|
+
? String(this.configContents.snapshotOwnerAccount)
|
|
44
|
+
: undefined;
|
|
43
45
|
this.redshiftManageMasterPassword = this.configContents.redshiftManageMasterPassword;
|
|
46
|
+
this.multiAz = this.configContents.multiAz;
|
|
47
|
+
this.backupRegion = this.configContents.backupRegion;
|
|
48
|
+
this.publicAccessBlockManagedExternally = this.configContents.publicAccessBlockManagedExternally;
|
|
44
49
|
}
|
|
45
50
|
}
|
|
46
51
|
exports.DataWarehouseConfigParser = DataWarehouseConfigParser;
|
|
47
52
|
DataWarehouseConfigParser.defaultClusterPort = 5440;
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXdhcmVob3VzZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhd2FyZWhvdXNlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCx1Q0FBc0c7QUFVdEcscURBQXFEO0FBZ1NyRCxNQUFhLHlCQUEwQixTQUFRLHlCQUFnRDtJQThCN0YsWUFBWSxLQUFZLEVBQUUsS0FBK0I7UUFDdkQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBc0IsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUM7UUFDL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7UUFDNUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVc7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztZQUNqQyxDQUFDLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQztRQUNqRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9HLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQztRQUN2RSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQztRQUN6RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDO1FBQ2pFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDO1FBQ3JFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDO0lBQ3ZGLENBQUM7O0FBaEVILDhEQWlFQztBQTdDd0IsNENBQWtCLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgTWRhYUFwcENvbmZpZ1BhcnNlciwgTWRhYUFwcENvbmZpZ1BhcnNlclByb3BzLCBNZGFhQmFzZUNvbmZpZ0NvbnRlbnRzIH0gZnJvbSAnQGF3cy1tZGFhL2FwcCc7XG5pbXBvcnQge1xuICBGZWRlcmF0aW9uUHJvcHMsXG4gIFNjaGVkdWxlZEFjdGlvblByb3BzLFxuICBEYXRhYmFzZVVzZXJzUHJvcHMsXG4gIEV2ZW50Tm90aWZpY2F0aW9uc1Byb3BzLFxufSBmcm9tICdAYXdzLW1kYWEvZGF0YXdhcmVob3VzZS1sMy1jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgTWRhYVJvbGVSZWYgfSBmcm9tICdAYXdzLW1kYWEvaWFtLXJvbGUtaGVscGVyJztcbmltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ2Fqdic7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvbmZpZ1NjaGVtYSBmcm9tICcuL2NvbmZpZy1zY2hlbWEuanNvbic7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uRWxlbWVudCB9IGZyb20gJ0Bhd3MtbWRhYS9jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFXYXJlaG91c2VDb25maWdDb250ZW50cyBleHRlbmRzIE1kYWFCYXNlQ29uZmlnQ29udGVudHMge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBhZG1pbiB1c2VybmFtZSBmb3IgdGhlIFJlZHNoaWZ0IGNsdXN0ZXIgcHJvdmlkaW5nIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byB0aGUgZGF0YSB3YXJlaG91c2UuIERlZmluZXMgdGhlIG1hc3RlciB1c2VyIGFjY291bnQgZm9yIGNsdXN0ZXIgYWRtaW5pc3RyYXRpb24sIGRhdGFiYXNlIG1hbmFnZW1lbnQsIGFuZCBpbml0aWFsIHVzZXIgcHJvdmlzaW9uaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgYWRtaW5pc3RyYXRpb247IERhdGFiYXNlIG1hbmFnZW1lbnQ7IEluaXRpYWwgdXNlciBwcm92aXNpb25pbmdcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgY2x1c3RlciBtYXN0ZXIgdXNlcm5hbWUgZm9yIGFkbWluaXN0cmF0aXZlIGFjY2VzcyBhbmQgZGF0YWJhc2UgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFJlZHNoaWZ0IHVzZXJuYW1lOyByZXF1aXJlZDsgdXNlZCBmb3IgY2x1c3RlciBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3NcbiAgICoqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIG51bWJlciBvZiBkYXlzIGJldHdlZW4gYXV0b21hdGljIGFkbWluIHBhc3N3b3JkIHJvdGF0aW9ucyBmb3IgZW5oYW5jZWQgc2VjdXJpdHkgY29tcGxpYW5jZS4gRW5hYmxlcyBhdXRvbWF0ZWQgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGFuZCBjb21wbGlhbmNlIHdpdGggcGFzc3dvcmQgcm90YXRpb24gcG9saWNpZXMgZm9yIGltcHJvdmVkIGNsdXN0ZXIgc2VjdXJpdHkgcG9zdHVyZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBdXRvbWF0ZWQgY3JlZGVudGlhbCByb3RhdGlvbjsgU2VjdXJpdHkgcG9saWN5IGNvbXBsaWFuY2U7IFBhc3N3b3JkIG1hbmFnZW1lbnQgYXV0b21hdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBhdXRvbWF0aWMgcGFzc3dvcmQgcm90YXRpb24gY29uZmlndXJhdGlvbiBmb3Igc2VjdXJpdHkgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXI7IHJlcXVpcmVkOyBkZWZpbmVzIHBhc3N3b3JkIHJvdGF0aW9uIGZyZXF1ZW5jeSBmb3Igc2VjdXJpdHkgY29tcGxpYW5jZVxuICAgKiovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmRSb3RhdGlvbkRheXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgZmVkZXJhdGlvbiBjb25maWd1cmF0aW9ucyBmb3IgU0FNTCBvciBPSURDIGlkZW50aXR5IHByb3ZpZGVyIGludGVncmF0aW9uIHdpdGggdGhlIGRhdGEgd2FyZWhvdXNlLiBFbmFibGVzIGZlZGVyYXRlZCBhY2Nlc3MgdG8gUmVkc2hpZnQgdGhyb3VnaCBleHRlcm5hbCBpZGVudGl0eSBwcm92aWRlcnMgZm9yIGNlbnRyYWxpemVkIGlkZW50aXR5IG1hbmFnZW1lbnQgYW5kIFNTTyBjYXBhYmlsaXRpZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU0FNTCBmZWRlcmF0aW9uIHNldHVwOyBPSURDIHByb3ZpZGVyIGludGVncmF0aW9uOyBDZW50cmFsaXplZCBpZGVudGl0eSBtYW5hZ2VtZW50IGZvciBkYXRhIHdhcmVob3VzZSBhY2Nlc3NcbiAgICpcbiAgICogQVdTOiBBV1MgSUFNIGlkZW50aXR5IHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gZm9yIGZlZGVyYXRlZCBSZWRzaGlmdCBhY2Nlc3MgYW5kIFNTTyBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIEZlZGVyYXRpb25Qcm9wcyBpZiBwcm92aWRlZDsgZW5hYmxlcyBmZWRlcmF0ZWQgYXV0aGVudGljYXRpb24gd2hlbiBzcGVjaWZpZWRcbiAgICoqL1xuICByZWFkb25seSBmZWRlcmF0aW9ucz86IEZlZGVyYXRpb25Qcm9wc1tdO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBhcnJheSBvZiBhZG1pbiByb2xlIHJlZmVyZW5jZXMgd2l0aCBmdWxsIGFjY2VzcyB0byBjbHVzdGVyIHJlc291cmNlcyBpbmNsdWRpbmcgS01TIGtleXMgYW5kIFMzIGJ1Y2tldHMuIFByb3ZpZGVzIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zIGZvciBkYXRhIHdhcmVob3VzZSBtYW5hZ2VtZW50LCBzZWN1cml0eSBhZG1pbmlzdHJhdGlvbiwgYW5kIHJlc291cmNlIGFjY2VzcyBjb250cm9sLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEFkbWluaXN0cmF0aXZlIGFjY2VzcyBjb250cm9sOyBTZWN1cml0eSBtYW5hZ2VtZW50OyBSZXNvdXJjZSBhZG1pbmlzdHJhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBJQU0gcm9sZXMgd2l0aCBmdWxsIFJlZHNoaWZ0IGNsdXN0ZXIgYW5kIHJlc291cmNlIGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIE1kYWFSb2xlUmVmIG9iamVjdHM7IHJlcXVpcmVkOyByb2xlcyByZWNlaXZlIGZ1bGwgY2x1c3RlciBhY2Nlc3NcbiAgICoqL1xuICByZWFkb25seSBkYXRhQWRtaW5Sb2xlczogTWRhYVJvbGVSZWZbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJyYXkgb2YgdXNlciByb2xlIHJlZmVyZW5jZXMgd2l0aCBhY2Nlc3MgdG8gZGF0YSB3YXJlaG91c2UgUzMgYnVja2V0cyBmb3IgZGF0YSBsb2FkaW5nIGFuZCB1bmxvYWRpbmcgb3BlcmF0aW9ucy4gRW5hYmxlcyBjb250cm9sbGVkIGFjY2VzcyB0byB3YXJlaG91c2Ugc3RvcmFnZSByZXNvdXJjZXMgZm9yIEVUTCBvcGVyYXRpb25zIGFuZCBkYXRhIG1hbmFnZW1lbnQgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGEgbG9hZGluZyBvcGVyYXRpb25zOyBFVEwgd29ya2Zsb3cgYWNjZXNzOyBDb250cm9sbGVkIHN0b3JhZ2UgYWNjZXNzXG4gICAqXG4gICAqIEFXUzogQVdTIElBTSByb2xlcyB3aXRoIFMzIGJ1Y2tldCBhY2Nlc3MgZm9yIFJlZHNoaWZ0IGRhdGEgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIE1kYWFSb2xlUmVmIG9iamVjdHMgaWYgcHJvdmlkZWQ7IHJvbGVzIHJlY2VpdmUgYnVja2V0IGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgKiovXG4gIHJlYWRvbmx5IHdhcmVob3VzZUJ1Y2tldFVzZXJSb2xlcz86IE1kYWFSb2xlUmVmW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIGV4dGVybmFsIGV4ZWN1dGlvbiByb2xlIHJlZmVyZW5jZXMgZm9yIFJlZHNoaWZ0IGNsdXN0ZXIgb3BlcmF0aW9ucyBhbmQgaW50ZWdyYXRpb25zLiBFbmFibGVzIGNsdXN0ZXIgdG8gYXNzdW1lIGV4dGVybmFsIHJvbGVzIGZvciBjcm9zcy1zZXJ2aWNlIG9wZXJhdGlvbnMsIGRhdGEgYWNjZXNzLCBhbmQgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBBV1Mgc2VydmljZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3Jvc3Mtc2VydmljZSBvcGVyYXRpb25zOyBFeHRlcm5hbCBkYXRhIGFjY2VzczsgU2VydmljZSBpbnRlZ3JhdGlvbiB3b3JrZmxvd3NcbiAgICpcbiAgICogQVdTOiBBV1MgSUFNIHJvbGVzIGZvciBSZWRzaGlmdCBjbHVzdGVyIGNyb3NzLXNlcnZpY2Ugb3BlcmF0aW9ucyBhbmQgaW50ZWdyYXRpb25zXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgTWRhYVJvbGVSZWYgb2JqZWN0cyBpZiBwcm92aWRlZDsgcm9sZXMgbXVzdCBiZSBhc3N1bWFibGUgYnkgUmVkc2hpZnQgc2VydmljZVxuICAgKiovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGVzPzogTWRhYVJvbGVSZWZbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgVlBDIElEIGZvciBSZWRzaGlmdCBjbHVzdGVyIGRlcGxveW1lbnQgcHJvdmlkaW5nIG5ldHdvcmsgaXNvbGF0aW9uIGFuZCBzZWN1cml0eSBjb250cm9scy4gRW5zdXJlcyBjbHVzdGVyIG9wZXJhdGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIFZQQyBmb3Igc2VjdXJlIG5ldHdvcmtpbmcgYW5kIGludGVncmF0aW9uIHdpdGggb3RoZXIgVlBDIHJlc291cmNlcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBWUEMgbmV0d29yayBpc29sYXRpb247IFNlY3VyZSBuZXR3b3JraW5nOyBWUEMgcmVzb3VyY2UgaW50ZWdyYXRpb25cbiAgICpcbiAgICogQVdTOiBBbWF6b24gVlBDIGZvciBSZWRzaGlmdCBjbHVzdGVyIG5ldHdvcmsgaXNvbGF0aW9uIGFuZCBzZWN1cml0eSBjb250cm9sc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFZQQyBJRDsgcmVxdWlyZWQ7IFZQQyBtdXN0IGV4aXN0IGFuZCBiZSBhY2Nlc3NpYmxlXG4gICAqKi9cbiAgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgYXJyYXkgb2Ygc3VibmV0IElEcyBmb3IgUmVkc2hpZnQgY2x1c3RlciBub2RlIHBsYWNlbWVudCB3aXRoaW4gdGhlIFZQQy4gRGVmaW5lcyB0aGUgbmV0d29yayBzdWJuZXRzIHdoZXJlIGNsdXN0ZXIgbm9kZXMgd2lsbCBiZSBkZXBsb3llZCBmb3Igc2VjdXJlIFZQQyBjb25uZWN0aXZpdHkgYW5kIGF2YWlsYWJpbGl0eSB6b25lIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBWUEMgbmV0d29yayBwbGFjZW1lbnQ7IFN1Ym5ldC1zcGVjaWZpYyBkZXBsb3ltZW50OyBNdWx0aS1BWiBjbHVzdGVyIGRpc3RyaWJ1dGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBWUEMgc3VibmV0cyBmb3IgUmVkc2hpZnQgY2x1c3RlciBub2RlIHBsYWNlbWVudCBhbmQgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgc3VibmV0IElEczsgcmVxdWlyZWQ7IHN1Ym5ldHMgbXVzdCBleGlzdCBpbiBzcGVjaWZpZWQgVlBDXG4gICAqKi9cbiAgcmVhZG9ubHkgc3VibmV0SWRzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBjb25maWd1cmF0aW9uIGRlZmluaW5nIGFsbG93ZWQgaW5ib3VuZCBjb25uZWN0aW9ucyB0byB0aGUgY2x1c3Rlci4gU3BlY2lmaWVzIElQdjQgQ0lEUiBibG9ja3MgYW5kIHNlY3VyaXR5IGdyb3VwIElEcyB0aGF0IGNhbiBjb25uZWN0IHRvIHRoZSBjbHVzdGVyIHBvcnQgZm9yIGNvbnRyb2xsZWQgbmV0d29yayBhY2Nlc3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTmV0d29yayBhY2Nlc3MgY29udHJvbDsgQ2xpZW50IGNvbm5lY3Rpdml0eTsgU2VjdXJpdHkgZ3JvdXAgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBWUEMgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBydWxlcyBmb3IgUmVkc2hpZnQgY2x1c3RlciBhY2Nlc3MgY29udHJvbFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIG9iamVjdCB3aXRoIGlwdjQgYW5kL29yIHNnIGFycmF5czsgcmVxdWlyZWQ7IGRlZmluZXMgYWxsb3dlZCBpbmJvdW5kIGNvbm5lY3Rpb25zXG4gICAqICAgKiovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJbmdyZXNzOiB7IGlwdjQ/OiBzdHJpbmdbXTsgc2c/OiBzdHJpbmdbXSB9O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBub2RlIHR5cGUgc3BlY2lmaWNhdGlvbiBkZXRlcm1pbmluZyBjb21wdXRlIGFuZCBzdG9yYWdlIGNhcGFjaXR5IGZvciBjbHVzdGVyIG5vZGVzLiBDb250cm9scyB0aGUgdW5kZXJseWluZyBFQzIgaW5zdGFuY2UgdHlwZSBhbmQgYWZmZWN0cyBwZXJmb3JtYW5jZSwgc3RvcmFnZSwgYW5kIGNvc3QgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBkYXRhIHdhcmVob3VzZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IENvc3QgbWFuYWdlbWVudDsgV29ya2xvYWQtc3BlY2lmaWMgc2l6aW5nXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IG5vZGUgdHlwZSBmb3IgY29tcHV0ZSBhbmQgc3RvcmFnZSBjYXBhY2l0eSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgUmVkc2hpZnQgbm9kZSB0eXBlOyByZXF1aXJlZDsgZGV0ZXJtaW5lcyBjbHVzdGVyIGNvbXB1dGUgYW5kIHN0b3JhZ2UgY2FwYWNpdHlcbiAgICoqL1xuICByZWFkb25seSBub2RlVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBudW1iZXIgb2Ygbm9kZXMgZm9yIHRoZSBSZWRzaGlmdCBjbHVzdGVyIGRldGVybWluaW5nIHRvdGFsIGNvbXB1dGUgY2FwYWNpdHkgYW5kIHBhcmFsbGVsIHByb2Nlc3NpbmcgY2FwYWJpbGl0eS4gQ29udHJvbHMgY2x1c3RlciBzaXplIGFuZCBhZmZlY3RzIHBlcmZvcm1hbmNlLCBjb3N0LCBhbmQgZGF0YSBkaXN0cmlidXRpb24gY2hhcmFjdGVyaXN0aWNzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgc2l6aW5nOyBQZXJmb3JtYW5jZSBzY2FsaW5nOyBDb3N0IG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIG5vZGUgY291bnQgZm9yIGNvbXB1dGUgY2FwYWNpdHkgYW5kIHBhcmFsbGVsIHByb2Nlc3NpbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyOyByZXF1aXJlZDsgZGV0ZXJtaW5lcyBjbHVzdGVyIHNpemUgYW5kIHByb2Nlc3NpbmcgY2FwYWNpdHlcbiAgICoqL1xuICByZWFkb25seSBudW1iZXJPZk5vZGVzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIGZsYWcgZW5hYmxpbmcgYXVkaXQgbG9nZ2luZyB0byBTMyBmb3IgY29tcGxpYW5jZSBhbmQgc2VjdXJpdHkgbW9uaXRvcmluZy4gV2hlbiBlbmFibGVkLCBjcmVhdGVzIGRlZGljYXRlZCBTMyBidWNrZXQgZm9yIFJlZHNoaWZ0IGF1ZGl0IGxvZ3Mgd2l0aCBTU0UtUzMgZW5jcnlwdGlvbiBhcyByZXF1aXJlZCBieSBSZWRzaGlmdCBhdWRpdCBsb2dnaW5nIGNvbnN0cmFpbnRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvbXBsaWFuY2UgYXVkaXRpbmc7IFNlY3VyaXR5IG1vbml0b3Jpbmc7IEF1ZGl0IHRyYWlsIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgYXVkaXQgbG9nZ2luZyB0byBTMyBmb3IgY29tcGxpYW5jZSBhbmQgc2VjdXJpdHkgbW9uaXRvcmluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBCb29sZWFuIHZhbHVlOyByZXF1aXJlZDsgY3JlYXRlcyBTU0UtUzMgZW5jcnlwdGVkIGF1ZGl0IGJ1Y2tldCB3aGVuIGVuYWJsZWRcbiAgICoqL1xuICByZWFkb25seSBlbmFibGVBdWRpdExvZ2dpbmdUb1MzOiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBjbHVzdGVyIHBvcnQgbnVtYmVyIGZvciBjbGllbnQgY29ubmVjdGlvbnMgZW5hYmxpbmcgY3VzdG9tIHBvcnQgY29uZmlndXJhdGlvbiBhbmQgbmV0d29yayBzZWN1cml0eS4gRGVmaW5lcyB0aGUgVENQIHBvcnQgb24gd2hpY2ggdGhlIFJlZHNoaWZ0IGNsdXN0ZXIgYWNjZXB0cyBjbGllbnQgY29ubmVjdGlvbnMsIHN1cHBvcnRpbmcgY3VzdG9tIG5ldHdvcmtpbmcgcmVxdWlyZW1lbnRzIGFuZCBzZWN1cml0eSBjb25maWd1cmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDdXN0b20gcG9ydCBjb25maWd1cmF0aW9uOyBOZXR3b3JrIHNlY3VyaXR5OyBDbGllbnQgY29ubmVjdGlvbiBtYW5hZ2VtZW50OyBQb3J0IHN0YW5kYXJkaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIHBvcnQgY29uZmlndXJhdGlvbiBmb3IgY2xpZW50IGNvbm5lY3Rpb24gbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIHBvcnQgbnVtYmVyIGlmIHNwZWNpZmllZDsgZGVmYXVsdHMgdG8gNTQ0MDsgbXVzdCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggc2VjdXJpdHkgZ3JvdXBzXG4gICAqKi9cbiAgcmVhZG9ubHkgY2x1c3RlclBvcnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgY29udHJvbGxpbmcgY2x1c3RlciBub2RlIGNvbmZpZ3VyYXRpb24gZm9yIHNpbmdsZS1ub2RlIG9yIG11bHRpLW5vZGUgZGVwbG95bWVudC4gV2hlbiB0cnVlLCBjcmVhdGVzIG11bHRpLW5vZGUgY2x1c3RlciBmb3IgZGlzdHJpYnV0ZWQgcHJvY2Vzc2luZzsgd2hlbiBmYWxzZSwgY3JlYXRlcyBzaW5nbGUtbm9kZSBjbHVzdGVyIGZvciBkZXZlbG9wbWVudCBvciBzbWFsbCB3b3JrbG9hZHMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ2x1c3RlciBhcmNoaXRlY3R1cmUgc2VsZWN0aW9uOyBEZXZlbG9wbWVudCB2cyBwcm9kdWN0aW9uIGRlcGxveW1lbnQ7IENvc3Qgb3B0aW1pemF0aW9uOyBQZXJmb3JtYW5jZSBzY2FsaW5nXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IGNsdXN0ZXIgdHlwZSBjb25maWd1cmF0aW9uIGZvciBzaW5nbGUtbm9kZSBvciBtdWx0aS1ub2RlIGRlcGxveW1lbnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogQm9vbGVhbiB2YWx1ZTsgZGV0ZXJtaW5lcyBjbHVzdGVyIGFyY2hpdGVjdHVyZSBhbmQgbm9kZSBkaXN0cmlidXRpb247IGFmZmVjdHMgcGVyZm9ybWFuY2UgYW5kIGNvc3RcbiAgICoqL1xuICByZWFkb25seSBtdWx0aU5vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBwcmVmZXJyZWQgbWFpbnRlbmFuY2Ugd2luZG93IGZvciBhdXRvbWF0ZWQgY2x1c3RlciBtYWludGVuYW5jZSBvcGVyYXRpb25zLiBTcGVjaWZpZXMgdGhlIHdlZWtseSB0aW1lIHJhbmdlIGR1cmluZyB3aGljaCBzeXN0ZW0gbWFpbnRlbmFuY2UgY2FuIG9jY3VyLCBtaW5pbWl6aW5nIGltcGFjdCBvbiBidXNpbmVzcyBvcGVyYXRpb25zIGFuZCBlbnN1cmluZyBwcmVkaWN0YWJsZSBtYWludGVuYW5jZSBzY2hlZHVsaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE1haW50ZW5hbmNlIHNjaGVkdWxpbmc7IEJ1c2luZXNzIGNvbnRpbnVpdHk7IE9wZXJhdGlvbmFsIHBsYW5uaW5nOyBEb3dudGltZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IHByZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cgZm9yIGF1dG9tYXRlZCBzeXN0ZW0gbWFpbnRlbmFuY2VcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCB0aW1lIHdpbmRvdyBmb3JtYXQgKGUuZy4sICdTdW46MjM6NDUtTW9uOjAwOjE1Jyk7IHJlcXVpcmVkOyBkZWZpbmVzIG1haW50ZW5hbmNlIHNjaGVkdWxpbmdcbiAgICoqL1xuICByZWFkb25seSBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBwYXJhbWV0ZXIgZ3JvdXAgcGFyYW1ldGVycyBmb3IgY2x1c3RlciBjb25maWd1cmF0aW9uIGN1c3RvbWl6YXRpb24gZW5hYmxpbmcgcGVyZm9ybWFuY2UgdHVuaW5nIGFuZCBvcGVyYXRpb25hbCBvcHRpbWl6YXRpb24uIFByb3ZpZGVzIGFkZGl0aW9uYWwgY2x1c3RlciBwYXJhbWV0ZXJzIHdoaWxlIHNlY3VyaXR5LXNlbnNpdGl2ZSB2YWx1ZXMgYXJlIGF1dG9tYXRpY2FsbHkgb3ZlcnJpZGRlbiBmb3IgY29tcGxpYW5jZSBhbmQgc2VjdXJpdHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogUGVyZm9ybWFuY2UgdHVuaW5nOyBPcGVyYXRpb25hbCBvcHRpbWl6YXRpb247IEN1c3RvbSBjbHVzdGVyIGNvbmZpZ3VyYXRpb247IFdvcmtsb2FkLXNwZWNpZmljIHNldHRpbmdzXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IHBhcmFtZXRlciBncm91cCBjb25maWd1cmF0aW9uIGZvciBjbHVzdGVyIGN1c3RvbWl6YXRpb24gYW5kIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIG9iamVjdCB3aXRoIHN0cmluZyBrZXktdmFsdWUgcGFpcnMgaWYgcHJvdmlkZWQ7IHNlY3VyaXR5LXNlbnNpdGl2ZSB2YWx1ZXMgd2lsbCBiZSBvdmVycmlkZGVuXG4gICAqICAgKiovXG4gIHJlYWRvbmx5IHBhcmFtZXRlckdyb3VwUGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgd29ya2xvYWQgbWFuYWdlbWVudCBjb25maWd1cmF0aW9uIGZvciBxdWVyeSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gYW5kIHJlc291cmNlIGFsbG9jYXRpb24uIERlZmluZXMgV0xNIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMgZm9yIG1hbmFnaW5nIHF1ZXJ5IHF1ZXVlcywgbWVtb3J5IGFsbG9jYXRpb24sIGFuZCBjb25jdXJyZW5jeSBmb3Igb3B0aW1hbCBjbHVzdGVyIHBlcmZvcm1hbmNlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFF1ZXJ5IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjsgUmVzb3VyY2UgYWxsb2NhdGlvbjsgV29ya2xvYWQgbWFuYWdlbWVudDsgQ29uY3VycmVuY3kgY29udHJvbFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCB3b3JrbG9hZCBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gZm9yIHF1ZXJ5IG9wdGltaXphdGlvbiBhbmQgcmVzb3VyY2UgY29udHJvbFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIENvbmZpZ3VyYXRpb25FbGVtZW50IG9iamVjdHMgaWYgcHJvdmlkZWQ7IGRlZmluZXMgV0xNIGNvbmZpZ3VyYXRpb25cbiAgICoqL1xuICByZWFkb25seSB3b3JrbG9hZE1hbmFnZW1lbnQ/OiBDb25maWd1cmF0aW9uRWxlbWVudFtdO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhZGRpdGlvbmFsIEtNUyBrZXkgQVJOcyBmb3IgY2x1c3RlciBidWNrZXQgZW5jcnlwdGlvbiBlbmFibGluZyBtdWx0aS1rZXkgZW5jcnlwdGlvbiBzY2VuYXJpb3MgYW5kIGNyb3NzLWFjY291bnQgYWNjZXNzLiBQcm92aWRlcyBhZGRpdGlvbmFsIEtNUyBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHdyaXRpbmcgdG8gdGhlIGNsdXN0ZXIgYnVja2V0IGJleW9uZCB0aGUgZGVmYXVsdCBjbHVzdGVyIGVuY3J5cHRpb24ga2V5LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE11bHRpLWtleSBlbmNyeXB0aW9uOyBDcm9zcy1hY2NvdW50IGFjY2VzczsgQWRkaXRpb25hbCBlbmNyeXB0aW9uIGtleXM7IEZsZXhpYmxlIGtleSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQVdTIEtNUyBrZXkgQVJOcyBmb3IgYWRkaXRpb25hbCBjbHVzdGVyIGJ1Y2tldCBlbmNyeXB0aW9uIGFuZCBhY2Nlc3MgY29udHJvbFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIEtNUyBrZXkgQVJOcyBpZiBwcm92aWRlZDsga2V5cyBtdXN0IGJlIGFjY2Vzc2libGUgZm9yIGJ1Y2tldCBvcGVyYXRpb25zXG4gICAqKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgc2NoZWR1bGVkIGFjdGlvbnMgZm9yIGF1dG9tYXRlZCBjbHVzdGVyIHBhdXNlIGFuZCByZXN1bWUgb3BlcmF0aW9ucyBlbmFibGluZyBjb3N0IG9wdGltaXphdGlvbiBhbmQgb3BlcmF0aW9uYWwgYXV0b21hdGlvbi4gRGVmaW5lcyBzY2hlZHVsZWQgcGF1c2UgYW5kIHJlc3VtZSBhY3Rpb25zIGZvciB0aGUgY2x1c3RlciB0byBvcHRpbWl6ZSBjb3N0cyBkdXJpbmcgbm9uLWJ1c2luZXNzIGhvdXJzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvc3Qgb3B0aW1pemF0aW9uOyBBdXRvbWF0ZWQgb3BlcmF0aW9uczsgU2NoZWR1bGVkIG1haW50ZW5hbmNlOyBSZXNvdXJjZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IHNjaGVkdWxlZCBhY3Rpb25zIGZvciBhdXRvbWF0ZWQgY2x1c3RlciBwYXVzZSBhbmQgcmVzdW1lIG9wZXJhdGlvbnNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBhcnJheSBvZiB2YWxpZCBTY2hlZHVsZWRBY3Rpb25Qcm9wcyBpZiBwcm92aWRlZDsgZGVmaW5lcyBhdXRvbWF0ZWQgY2x1c3RlciBvcGVyYXRpb25zXG4gICAqKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGVkQWN0aW9ucz86IFNjaGVkdWxlZEFjdGlvblByb3BzW107XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGRhdGFiYXNlIHVzZXJzIGZvciBhdXRvbWF0ZWQgdXNlciBjcmVhdGlvbiBhbmQgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGVuYWJsaW5nIHNlY3VyZSB1c2VyIHByb3Zpc2lvbmluZyBhbmQgcm90YXRpb24uIENyZWF0ZXMgZGF0YWJhc2UgdXNlcnMgaW4gUmVkc2hpZnQgd2l0aCBhdXRvbWF0ZWQgY3JlZGVudGlhbCBzdG9yYWdlIGFuZCByb3RhdGlvbiB0aHJvdWdoIFNlY3JldHMgTWFuYWdlciBhbmQgU1NNLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEF1dG9tYXRlZCB1c2VyIHByb3Zpc2lvbmluZzsgQ3JlZGVudGlhbCBtYW5hZ2VtZW50OyBTZWN1cml0eSBhdXRvbWF0aW9uOyBVc2VyIGxpZmVjeWNsZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IGRhdGFiYXNlIHVzZXJzIHdpdGggU2VjcmV0cyBNYW5hZ2VyIGFuZCBTU00gaW50ZWdyYXRpb24gZm9yIGNyZWRlbnRpYWwgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIERhdGFiYXNlVXNlcnNQcm9wcyBpZiBwcm92aWRlZDsgZW5hYmxlcyBhdXRvbWF0ZWQgdXNlciBhbmQgY3JlZGVudGlhbCBtYW5hZ2VtZW50XG4gICAqICAgKiovXG4gIHJlYWRvbmx5IGRhdGFiYXNlVXNlcnM/OiBEYXRhYmFzZVVzZXJzUHJvcHNbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyBjb250cm9sbGluZyBkYXRhIHdhcmVob3VzZSBidWNrZXQgY3JlYXRpb24gZm9yIGNsdXN0ZXIgc3RvcmFnZSBvcGVyYXRpb25zLiBXaGVuIGVuYWJsZWQgKGRlZmF1bHQpLCBjcmVhdGVzIGRlZGljYXRlZCBTMyBidWNrZXQgZm9yIGRhdGEgd2FyZWhvdXNlIG9wZXJhdGlvbnMgaW5jbHVkaW5nIGRhdGEgbG9hZGluZywgdW5sb2FkaW5nLCBhbmQgYmFja3VwIHN0b3JhZ2UuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU3RvcmFnZSByZXNvdXJjZSBtYW5hZ2VtZW50OyBEYXRhIG9wZXJhdGlvbnM7IEJhY2t1cCBzdG9yYWdlOyBFVEwgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBTMyBidWNrZXQgY3JlYXRpb24gZm9yIFJlZHNoaWZ0IGRhdGEgd2FyZWhvdXNlIHN0b3JhZ2Ugb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBCb29sZWFuIHZhbHVlOyBkZWZhdWx0cyB0byB0cnVlOyBjcmVhdGVzIGRlZGljYXRlZCB3YXJlaG91c2UgYnVja2V0IHdoZW4gZW5hYmxlZFxuICAgKiovXG4gIHJlYWRvbmx5IGNyZWF0ZVdhcmVob3VzZUJ1Y2tldD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHJldGVudGlvbiBwZXJpb2QgZm9yIGF1dG9tYXRlZCBzbmFwc2hvdHMgZW5hYmxpbmcgYmFja3VwIG1hbmFnZW1lbnQgYW5kIGRhdGEgcHJvdGVjdGlvbi4gU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhdXRvbWF0ZWQgc25hcHNob3RzIGFyZSByZXRhaW5lZCBmb3IgcG9pbnQtaW4tdGltZSByZWNvdmVyeSBhbmQgZGF0YSBwcm90ZWN0aW9uIHJlcXVpcmVtZW50cy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBCYWNrdXAgbWFuYWdlbWVudDsgRGF0YSBwcm90ZWN0aW9uOyBQb2ludC1pbi10aW1lIHJlY292ZXJ5OyBDb21wbGlhbmNlIHJlcXVpcmVtZW50c1xuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBhdXRvbWF0ZWQgc25hcHNob3QgcmV0ZW50aW9uIGZvciBiYWNrdXAgbWFuYWdlbWVudCBhbmQgZGF0YSBwcm90ZWN0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgcG9zaXRpdmUgaW50ZWdlciBpZiBzcGVjaWZpZWQ7IGRlZmluZXMgc25hcHNob3QgcmV0ZW50aW9uIHBlcmlvZCBmb3IgYmFja3VwIG1hbmFnZW1lbnRcbiAgICoqL1xuICByZWFkb25seSBhdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGV2ZW50IG5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciBjbHVzdGVyIGFuZCBzY2hlZHVsZWQgYWN0aW9uIG1vbml0b3JpbmcgZW5hYmxpbmcgb3BlcmF0aW9uYWwgYXdhcmVuZXNzIGFuZCBhbGVydGluZy4gQ29uZmlndXJlcyBTTlMgbm90aWZpY2F0aW9ucyBmb3IgY2x1c3RlciBldmVudHMgYW5kIHNjaGVkdWxlZCBhY3Rpb24gc3RhdHVzIGZvciBvcGVyYXRpb25hbCBtb25pdG9yaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE9wZXJhdGlvbmFsIG1vbml0b3Jpbmc7IEV2ZW50IGFsZXJ0aW5nOyBDbHVzdGVyIHN0YXR1cyB0cmFja2luZzsgQXV0b21hdGVkIG5vdGlmaWNhdGlvbnNcbiAgICpcbiAgICogQVdTOiBBbWF6b24gU05TIG5vdGlmaWNhdGlvbnMgZm9yIFJlZHNoaWZ0IGNsdXN0ZXIgZXZlbnRzIGFuZCBvcGVyYXRpb25hbCBtb25pdG9yaW5nXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgRXZlbnROb3RpZmljYXRpb25zUHJvcHMgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgY2x1c3RlciBldmVudCBtb25pdG9yaW5nIGFuZCBhbGVydGluZ1xuICAgKiovXG4gIHJlYWRvbmx5IGV2ZW50Tm90aWZpY2F0aW9ucz86IEV2ZW50Tm90aWZpY2F0aW9uc1Byb3BzO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSBuYW1lIGZvciBpbml0aWFsIGRhdGFiYXNlIGNyZWF0aW9uIGVuYWJsaW5nIGN1c3RvbSBkYXRhYmFzZSBuYW1pbmcgYW5kIG9yZ2FuaXphdGlvbi4gU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBpbml0aWFsIGRhdGFiYXNlIGNyZWF0ZWQgaW4gdGhlIGNsdXN0ZXIsIHN1cHBvcnRpbmcgY3VzdG9tIG5hbWluZyBjb252ZW50aW9ucyBhbmQgZGF0YWJhc2Ugb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEN1c3RvbSBkYXRhYmFzZSBuYW1pbmc7IERhdGFiYXNlIG9yZ2FuaXphdGlvbjsgSW5pdGlhbCBkYXRhYmFzZSBzZXR1cDsgTmFtaW5nIGNvbnZlbnRpb25zXG4gICAqXG4gICAqIEFXUzogQW1hem9uIFJlZHNoaWZ0IGluaXRpYWwgZGF0YWJhc2UgbmFtZSBmb3IgY2x1c3RlciBkYXRhYmFzZSBjcmVhdGlvbiBhbmQgb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgZGF0YWJhc2UgbmFtZSBpZiBzcGVjaWZpZWQ7IGRlZmF1bHRzIHRvIFwiZGVmYXVsdF9kYlwiOyB1c2VkIGZvciBpbml0aWFsIGRhdGFiYXNlIGNyZWF0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgZGJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBzbmFwc2hvdCBpZGVudGlmaWVyIGZvciBjbHVzdGVyIHJlc3RvcmF0aW9uIGZyb20gZXhpc3Rpbmcgc25hcHNob3QgZW5hYmxpbmcgZGlzYXN0ZXIgcmVjb3ZlcnkgYW5kIGRhdGEgbWlncmF0aW9uLiBTcGVjaWZpZXMgdGhlIHNuYXBzaG90IElEIHRvIHJlc3RvcmUgdGhlIGNsdXN0ZXIgZnJvbSwgc3VwcG9ydGluZyBkaXNhc3RlciByZWNvdmVyeSBzY2VuYXJpb3MgYW5kIGRhdGEgbWlncmF0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGlzYXN0ZXIgcmVjb3Zlcnk7IERhdGEgbWlncmF0aW9uOyBDbHVzdGVyIHJlc3RvcmF0aW9uOyBCYWNrdXAgcmVjb3ZlcnlcbiAgICpcbiAgICogQVdTOiBBbWF6b24gUmVkc2hpZnQgc25hcHNob3QgaWRlbnRpZmllciBmb3IgY2x1c3RlciByZXN0b3JhdGlvbiBhbmQgZGlzYXN0ZXIgcmVjb3ZlcnlcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBzbmFwc2hvdCBpZGVudGlmaWVyIGlmIHNwZWNpZmllZDsgb25seSBwcm92aWRlIHdoZW4gcmVzdG9yaW5nIGZyb20gc25hcHNob3RcbiAgICoqL1xuICByZWFkb25seSBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBvd25lckFjY291bnQgUmVmZXJzIHRvIHNuYXBzaG90IG93bmVyIGFjY291bnQuIEFwcGxpY2FibGUgaWYgcmVzdG9yaW5nIHRoZSBjbHVzdGVyIGZyb20gc25hcHNob3QgYW5kIHNuYXBzaG90IGJlbG9uZ3MgdG8gYW5vdGhlciBhY2NvdW50XG4gICAqIE9wdGlvbmFsIC0gQnkgZGVmYXVsdCwgc25hcHNob3RzIGFyZSBzZWFyY2hlZCB3aXRoaW4gY3VycmVudCBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdE93bmVyQWNjb3VudD86IG51bWJlcjtcblxuICByZWFkb25seSByZWRzaGlmdE1hbmFnZU1hc3RlclBhc3N3b3JkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFXYXJlaG91c2VDb25maWdQYXJzZXIgZXh0ZW5kcyBNZGFhQXBwQ29uZmlnUGFyc2VyPERhdGFXYXJlaG91c2VDb25maWdDb250ZW50cz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRtaW5Vc2VybmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRtaW5QYXNzd29yZFJvdGF0aW9uRGF5czogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgZmVkZXJhdGlvbnM6IEZlZGVyYXRpb25Qcm9wc1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0YWJhc2VVc2VyczogRGF0YWJhc2VVc2Vyc1Byb3BzW107XG4gIHB1YmxpYyByZWFkb25seSBkYXRhQWRtaW5Sb2xlUmVmczogTWRhYVJvbGVSZWZbXTtcbiAgcHVibGljIHJlYWRvbmx5IHdhcmVob3VzZUJ1Y2tldFVzZXJSb2xlUmVmcz86IE1kYWFSb2xlUmVmW107XG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlUmVmcz86IE1kYWFSb2xlUmVmW107XG4gIHB1YmxpYyByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3RlclBvcnQ6IG51bWJlcjtcbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldElkczogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBub2RlVHlwZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZW5hYmxlQXVkaXRMb2dnaW5nVG9TMzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IG51bWJlck9mTm9kZXM6IG51bWJlcjtcbiAgcHVibGljIHJlYWRvbmx5IG11bHRpTm9kZT86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cEluZ3Jlc3M6IHsgaXB2ND86IHN0cmluZ1tdOyBzZz86IHN0cmluZ1tdIH07XG4gIHB1YmxpYyByZWFkb25seSBwYXJhbWV0ZXJHcm91cFBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcHVibGljIHJlYWRvbmx5IHdvcmtsb2FkTWFuYWdlbWVudDogQ29uZmlndXJhdGlvbkVsZW1lbnRbXTtcbiAgcHVibGljIHJlYWRvbmx5IGFkZGl0aW9uYWxCdWNrZXRLbXNLZXlBcm5zPzogc3RyaW5nW107XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdENsdXN0ZXJQb3J0ID0gNTQ0MDtcbiAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlZEFjdGlvbnM6IFNjaGVkdWxlZEFjdGlvblByb3BzW107XG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVXYXJlaG91c2VCdWNrZXQ/OiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0b21hdGVkU25hcHNob3RSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnROb3RpZmljYXRpb25zPzogRXZlbnROb3RpZmljYXRpb25zUHJvcHM7XG4gIHB1YmxpYyByZWFkb25seSBkYk5hbWU/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzbmFwc2hvdE93bmVyQWNjb3VudD86IG51bWJlcjtcbiAgcHVibGljIHJlYWRvbmx5IHJlZHNoaWZ0TWFuYWdlTWFzdGVyUGFzc3dvcmQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBTdGFjaywgcHJvcHM6IE1kYWFBcHBDb25maWdQYXJzZXJQcm9wcykge1xuICAgIHN1cGVyKHN0YWNrLCBwcm9wcywgY29uZmlnU2NoZW1hIGFzIFNjaGVtYSk7XG5cbiAgICB0aGlzLmFkbWluVXNlcm5hbWUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkbWluVXNlcm5hbWU7XG4gICAgdGhpcy5hZG1pblBhc3N3b3JkUm90YXRpb25EYXlzID0gdGhpcy5jb25maWdDb250ZW50cy5hZG1pblBhc3N3b3JkUm90YXRpb25EYXlzO1xuICAgIHRoaXMuZmVkZXJhdGlvbnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmZlZGVyYXRpb25zID8gdGhpcy5jb25maWdDb250ZW50cy5mZWRlcmF0aW9ucyA6IFtdO1xuICAgIHRoaXMuZGF0YUFkbWluUm9sZVJlZnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmRhdGFBZG1pblJvbGVzO1xuICAgIHRoaXMud2FyZWhvdXNlQnVja2V0VXNlclJvbGVSZWZzID0gdGhpcy5jb25maWdDb250ZW50cy53YXJlaG91c2VCdWNrZXRVc2VyUm9sZXM7XG4gICAgdGhpcy5leGVjdXRpb25Sb2xlUmVmcyA9IHRoaXMuY29uZmlnQ29udGVudHMuZXhlY3V0aW9uUm9sZXM7XG4gICAgdGhpcy52cGNJZCA9IHRoaXMuY29uZmlnQ29udGVudHMudnBjSWQ7XG4gICAgdGhpcy5zdWJuZXRJZHMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnN1Ym5ldElkcztcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXBJbmdyZXNzID0gdGhpcy5jb25maWdDb250ZW50cy5zZWN1cml0eUdyb3VwSW5ncmVzcztcbiAgICB0aGlzLm5vZGVUeXBlID0gdGhpcy5jb25maWdDb250ZW50cy5ub2RlVHlwZTtcbiAgICB0aGlzLm51bWJlck9mTm9kZXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm51bWJlck9mTm9kZXM7XG4gICAgdGhpcy5lbmFibGVBdWRpdExvZ2dpbmdUb1MzID0gdGhpcy5jb25maWdDb250ZW50cy5lbmFibGVBdWRpdExvZ2dpbmdUb1MzO1xuICAgIHRoaXMuY2x1c3RlclBvcnQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmNsdXN0ZXJQb3J0XG4gICAgICA/IHRoaXMuY29uZmlnQ29udGVudHMuY2x1c3RlclBvcnRcbiAgICAgIDogRGF0YVdhcmVob3VzZUNvbmZpZ1BhcnNlci5kZWZhdWx0Q2x1c3RlclBvcnQ7XG4gICAgdGhpcy5tdWx0aU5vZGUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm11bHRpTm9kZTtcbiAgICB0aGlzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93ID0gdGhpcy5jb25maWdDb250ZW50cy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdztcbiAgICB0aGlzLnBhcmFtZXRlckdyb3VwUGFyYW1zID0gdGhpcy5jb25maWdDb250ZW50cy5wYXJhbWV0ZXJHcm91cFBhcmFtc1xuICAgICAgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLnBhcmFtZXRlckdyb3VwUGFyYW1zXG4gICAgICA6IHt9O1xuICAgIHRoaXMud29ya2xvYWRNYW5hZ2VtZW50ID0gdGhpcy5jb25maWdDb250ZW50cy53b3JrbG9hZE1hbmFnZW1lbnQgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLndvcmtsb2FkTWFuYWdlbWVudCA6IFtdO1xuICAgIHRoaXMuYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkZGl0aW9uYWxCdWNrZXRLbXNLZXlBcm5zO1xuICAgIHRoaXMuc2NoZWR1bGVkQWN0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuc2NoZWR1bGVkQWN0aW9ucyA/IHRoaXMuY29uZmlnQ29udGVudHMuc2NoZWR1bGVkQWN0aW9ucyA6IFtdO1xuICAgIHRoaXMuZGF0YWJhc2VVc2VycyA9IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YWJhc2VVc2VycyA/IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YWJhc2VVc2VycyA6IFtdO1xuICAgIHRoaXMuY3JlYXRlV2FyZWhvdXNlQnVja2V0ID0gdGhpcy5jb25maWdDb250ZW50cy5jcmVhdGVXYXJlaG91c2VCdWNrZXQ7XG4gICAgdGhpcy5hdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmF1dG9tYXRlZFNuYXBzaG90UmV0ZW50aW9uRGF5cztcbiAgICB0aGlzLmV2ZW50Tm90aWZpY2F0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuZXZlbnROb3RpZmljYXRpb25zO1xuICAgIHRoaXMuZGJOYW1lID0gdGhpcy5jb25maWdDb250ZW50cy5kYk5hbWU7XG4gICAgdGhpcy5zbmFwc2hvdElkZW50aWZpZXIgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnNuYXBzaG90SWRlbnRpZmllcjtcbiAgICB0aGlzLnNuYXBzaG90T3duZXJBY2NvdW50ID0gdGhpcy5jb25maWdDb250ZW50cy5zbmFwc2hvdE93bmVyQWNjb3VudDtcbiAgICB0aGlzLnJlZHNoaWZ0TWFuYWdlTWFzdGVyUGFzc3dvcmQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnJlZHNoaWZ0TWFuYWdlTWFzdGVyUGFzc3dvcmQ7XG4gIH1cbn1cbiJdfQ==
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXdhcmVob3VzZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhd2FyZWhvdXNlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCx1Q0FBc0c7QUFVdEcscURBQXFEO0FBOFRyRCxNQUFhLHlCQUEwQixTQUFRLHlCQUFnRDtJQWlDN0YsWUFBWSxLQUFZLEVBQUUsS0FBK0I7UUFDdkQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBc0IsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUM7UUFDL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7UUFDNUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVc7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztZQUNqQyxDQUFDLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQztRQUNqRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9HLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQztRQUN2RSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQztRQUN6RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDO1FBQ2pFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQjtZQUNsRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUM7WUFDbEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDO1FBQ3JGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUNyRCxJQUFJLENBQUMsa0NBQWtDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQztJQUNuRyxDQUFDOztBQXhFSCw4REF5RUM7QUFyRHdCLDRDQUFrQixHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IE1kYWFBcHBDb25maWdQYXJzZXIsIE1kYWFBcHBDb25maWdQYXJzZXJQcm9wcywgTWRhYUJhc2VDb25maWdDb250ZW50cyB9IGZyb20gJ0Bhd3MtbWRhYS9hcHAnO1xuaW1wb3J0IHtcbiAgRmVkZXJhdGlvblByb3BzLFxuICBTY2hlZHVsZWRBY3Rpb25Qcm9wcyxcbiAgRGF0YWJhc2VVc2Vyc1Byb3BzLFxuICBFdmVudE5vdGlmaWNhdGlvbnNQcm9wcyxcbn0gZnJvbSAnQGF3cy1tZGFhL2RhdGF3YXJlaG91c2UtbDMtY29uc3RydWN0JztcbmltcG9ydCB7IE1kYWFSb2xlUmVmIH0gZnJvbSAnQGF3cy1tZGFhL2lhbS1yb2xlLWhlbHBlcic7XG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tICdhanYnO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb25maWdTY2hlbWEgZnJvbSAnLi9jb25maWctc2NoZW1hLmpzb24nO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkVsZW1lbnQgfSBmcm9tICdAYXdzLW1kYWEvY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhV2FyZWhvdXNlQ29uZmlnQ29udGVudHMgZXh0ZW5kcyBNZGFhQmFzZUNvbmZpZ0NvbnRlbnRzIHtcbiAgLyoqXG4gICAqIEFkbWluIHVzZXJuYW1lIGZvciB0aGUgUmVkc2hpZnQgY2x1c3Rlci4gQSBzZWNyZXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZm9yIHRoZSBwYXNzd29yZC5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDbHVzdGVyIGFkbWluaXN0cmF0aW9uOyBEYXRhYmFzZSBtYW5hZ2VtZW50OyBJbml0aWFsIHVzZXIgcHJvdmlzaW9uaW5nXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgY2x1c3RlciBtYXN0ZXIgdXNlcm5hbWVcbiAgICpcbiAgICogVmFsaWRhdGlvbjogUmVxdWlyZWQ7IHZhbGlkIFJlZHNoaWZ0IHVzZXJuYW1lXG4gICAqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXlzIGJldHdlZW4gYXV0b21hdGljIGFkbWluIHBhc3N3b3JkIHJvdGF0aW9ucyB2aWEgU2VjcmV0cyBNYW5hZ2VyLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEF1dG9tYXRlZCBjcmVkZW50aWFsIHJvdGF0aW9uOyBTZWN1cml0eSBjb21wbGlhbmNlOyBQYXNzd29yZCBwb2xpY3kgZW5mb3JjZW1lbnRcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBhZG1pbiBwYXNzd29yZCByb3RhdGlvbiB2aWEgU2VjcmV0cyBNYW5hZ2VyXG4gICAqXG4gICAqIFZhbGlkYXRpb246IFJlcXVpcmVkOyBwb3NpdGl2ZSBpbnRlZ2VyXG4gICAqL1xuICByZWFkb25seSBhZG1pblBhc3N3b3JkUm90YXRpb25EYXlzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBTQU1MIG9yIE9JREMgZmVkZXJhdGlvbiBjb25maWd1cmF0aW9ucyBmb3IgZmVkZXJhdGVkIFJlZHNoaWZ0IGFjY2Vzcy5cbiAgICogRWFjaCBmZWRlcmF0aW9uIGNyZWF0ZXMgYW4gSUFNIHJvbGUgd2l0aCBTQU1MIHRydXN0IGZvciBkeW5hbWljIGNyZWRlbnRpYWwgZ2VuZXJhdGlvblxuICAgKiBhbmQgZ3JvdXAtYmFzZWQgY2x1c3RlciBhY2Nlc3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU0FNTCBmZWRlcmF0aW9uIHNldHVwOyBTU08gaW50ZWdyYXRpb247IEZlZGVyYXRlZCBjbHVzdGVyIGFjY2Vzc1xuICAgKlxuICAgKiBBV1M6IElBTSBTQU1MIGlkZW50aXR5IHByb3ZpZGVyIHJvbGVzIGZvciBSZWRzaGlmdCBmZWRlcmF0ZWQgYWNjZXNzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBhcnJheSBvZiB2YWxpZCBGZWRlcmF0aW9uUHJvcHNcbiAgICovXG4gIHJlYWRvbmx5IGZlZGVyYXRpb25zPzogRmVkZXJhdGlvblByb3BzW107XG4gIC8qKlxuICAgKiBBZG1pbiByb2xlcyBncmFudGVkIGZ1bGwgYWNjZXNzIHRvIGNsdXN0ZXIgcmVzb3VyY2VzIGluY2x1ZGluZyBLTVMga2V5cyBhbmQgUzMgYnVja2V0cy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgY29udHJvbDsgU2VjdXJpdHkgbWFuYWdlbWVudDsgUmVzb3VyY2UgYWRtaW5pc3RyYXRpb25cbiAgICpcbiAgICogQVdTOiBJQU0gcm9sZXMgd2l0aCBmdWxsIFJlZHNoaWZ0IGNsdXN0ZXIgYW5kIHJlc291cmNlIGFjY2Vzc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBSZXF1aXJlZDsgYXJyYXkgb2YgdmFsaWQgTWRhYVJvbGVSZWZcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFBZG1pblJvbGVzOiBNZGFhUm9sZVJlZltdO1xuICAvKipcbiAgICogUm9sZXMgZ3JhbnRlZCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgZGF0YSB3YXJlaG91c2UgUzMgYnVja2V0IGZvciBkYXRhIGxvYWRpbmcvdW5sb2FkaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEVUTCBkYXRhIGxvYWRpbmc7IERhdGEgdW5sb2FkaW5nIG9wZXJhdGlvbnM7IEJ1Y2tldCBhY2Nlc3MgZm9yIGFuYWx5dGljc1xuICAgKlxuICAgKiBBV1M6IElBTSByb2xlcyB3aXRoIFMzIGJ1Y2tldCBhY2Nlc3MgZm9yIFJlZHNoaWZ0IGRhdGEgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBPcHRpb25hbDsgYXJyYXkgb2YgdmFsaWQgTWRhYVJvbGVSZWZcbiAgICovXG4gIHJlYWRvbmx5IHdhcmVob3VzZUJ1Y2tldFVzZXJSb2xlcz86IE1kYWFSb2xlUmVmW107XG4gIC8qKlxuICAgKiBFeHRlcm5hbCBleGVjdXRpb24gcm9sZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBSZWRzaGlmdCBjbHVzdGVyIGZvciBjcm9zcy1zZXJ2aWNlIG9wZXJhdGlvbnMuXG4gICAqIElmIGEgcm9sZSBhbHNvIG5lZWRzIHdhcmVob3VzZSBidWNrZXQgYWNjZXNzLCBhZGQgaXQgdG8gd2FyZWhvdXNlQnVja2V0VXNlclJvbGVzIGV4cGxpY2l0bHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3Jvc3Mtc2VydmljZSBpbnRlZ3JhdGlvbnM7IEV4dGVybmFsIGRhdGEgYWNjZXNzOyBHbHVlL0xhbWJkYSBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBBV1M6IElBTSBleGVjdXRpb24gcm9sZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBSZWRzaGlmdCBjbHVzdGVyXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBhcnJheSBvZiB2YWxpZCBNZGFhUm9sZVJlZjsgcm9sZXMgbXVzdCBiZSBhc3N1bWFibGUgYnkgUmVkc2hpZnRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGVzPzogTWRhYVJvbGVSZWZbXTtcbiAgLyoqXG4gICAqIFZQQyBJRCBmb3IgUmVkc2hpZnQgY2x1c3RlciBkZXBsb3ltZW50LiBUaGUgY2x1c3RlciBpcyBkZXBsb3llZCB3aXRoaW4gdGhpcyBWUENcbiAgICogd2l0aCBuZXR3b3JrIGFjY2VzcyBjb250cm9sbGVkIGJ5IHNlY3VyaXR5IGdyb3Vwcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBOZXR3b3JrIGlzb2xhdGlvbjsgVlBDLWJhc2VkIGRlcGxveW1lbnQ7IFNlY3VyZSBuZXR3b3JraW5nXG4gICAqXG4gICAqIEFXUzogVlBDIGZvciBSZWRzaGlmdCBjbHVzdGVyIG5ldHdvcmsgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBSZXF1aXJlZDsgdmFsaWQgVlBDIElEXG4gICAqL1xuICByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuICAvKipcbiAgICogU3VibmV0IElEcyBmb3IgUmVkc2hpZnQgY2x1c3RlciBub2RlIHBsYWNlbWVudC4gRm9yIGF1dG9tYXRpYyBjbHVzdGVyIHJlbG9jYXRpb24sXG4gICAqIHNwZWNpZnkgYXQgbGVhc3Qgb25lIHN1Ym5ldCBwZXIgQVouXG4gICAqXG4gICAqIFVzZSBjYXNlczogTXVsdGktQVogcGxhY2VtZW50OyBTdWJuZXQtc3BlY2lmaWMgZGVwbG95bWVudDsgQ2x1c3RlciByZWxvY2F0aW9uIHN1cHBvcnRcbiAgICpcbiAgICogQVdTOiBWUEMgc3VibmV0cyBmb3IgUmVkc2hpZnQgc3VibmV0IGdyb3VwXG4gICAqXG4gICAqIFZhbGlkYXRpb246IFJlcXVpcmVkOyBhcnJheSBvZiB2YWxpZCBzdWJuZXQgSURzIGluIHRoZSBzcGVjaWZpZWQgVlBDOyBtdXN0IGNvbnRhaW4gPj0gMyBzdWJuZXRzIGluIGRpZmZlcmVudCBBWnMgd2hlbiBtdWx0aUF6IGlzIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBpbmdyZXNzIHJ1bGVzIGRlZmluaW5nIGFsbG93ZWQgaW5ib3VuZCBjb25uZWN0aW9ucyB0byB0aGUgY2x1c3RlciBwb3J0LlxuICAgKiBTdXBwb3J0cyBJUHY0IENJRFIgYmxvY2tzIGFuZCBzZWN1cml0eSBncm91cCByZWZlcmVuY2VzLiBBbGwgb3RoZXIgdHJhZmZpYyBpcyBibG9ja2VkLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE5ldHdvcmsgYWNjZXNzIGNvbnRyb2w7IENsaWVudCBjb25uZWN0aXZpdHk7IFNlY3VyaXR5IGdyb3VwIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBWUEMgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBydWxlcyBmb3IgUmVkc2hpZnQgY2x1c3RlclxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBSZXF1aXJlZDsgb2JqZWN0IHdpdGggb3B0aW9uYWwgaXB2NCBhbmQvb3Igc2cgYXJyYXlzXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSW5ncmVzczogeyBpcHY0Pzogc3RyaW5nW107IHNnPzogc3RyaW5nW10gfTtcbiAgLyoqXG4gICAqIFJlZHNoaWZ0IG5vZGUgdHlwZSBkZXRlcm1pbmluZyBjb21wdXRlIGFuZCBzdG9yYWdlIGNhcGFjaXR5IChlLmcuLCBSQTNfNFhMQVJHRSkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogUGVyZm9ybWFuY2Ugc2l6aW5nOyBDb3N0IG9wdGltaXphdGlvbjsgV29ya2xvYWQtc3BlY2lmaWMgY2FwYWNpdHlcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBub2RlIHR5cGUgKGluc3RhbmNlIHR5cGUpXG4gICAqXG4gICAqIFZhbGlkYXRpb246IFJlcXVpcmVkOyB2YWxpZCBSZWRzaGlmdCBub2RlIHR5cGUgc3RyaW5nXG4gICAqL1xuICByZWFkb25seSBub2RlVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogTnVtYmVyIG9mIG5vZGVzIGluIHRoZSBSZWRzaGlmdCBjbHVzdGVyLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgc2l6aW5nOyBQZXJmb3JtYW5jZSBzY2FsaW5nOyBDb3N0IG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBjbHVzdGVyIG5vZGUgY291bnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogUmVxdWlyZWQ7IHBvc2l0aXZlIGludGVnZXI7IG11c3QgYmUgPj0gMiB3aGVuIG11bHRpQXogaXMgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbnVtYmVyT2ZOb2RlczogbnVtYmVyO1xuICAvKipcbiAgICogRW5hYmxlIGF1ZGl0IGxvZ2dpbmcgdG8gYSBkZWRpY2F0ZWQgUzMgYnVja2V0LiBUaGUgYXVkaXQgYnVja2V0IHVzZXMgU1NFLVMzIGVuY3J5cHRpb25cbiAgICogKG5vdCBLTVMpIGR1ZSB0byBSZWRzaGlmdCBhdWRpdCBsb2dnaW5nIHJlcXVpcmVtZW50cy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDb21wbGlhbmNlIGF1ZGl0aW5nOyBTZWN1cml0eSBtb25pdG9yaW5nOyBVc2VyIGFjdGl2aXR5IHRyYWNraW5nXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgYXVkaXQgbG9nZ2luZyB0byBTMyB3aXRoIFNTRS1TMyBlbmNyeXB0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IFJlcXVpcmVkOyBib29sZWFuXG4gICAqL1xuICByZWFkb25seSBlbmFibGVBdWRpdExvZ2dpbmdUb1MzOiBib29sZWFuO1xuICAvKipcbiAgICogVENQIHBvcnQgZm9yIGNsaWVudCBjb25uZWN0aW9ucyB0byB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDdXN0b20gcG9ydCBjb25maWd1cmF0aW9uOyBOZXR3b3JrIHNlY3VyaXR5OyBQb3J0IHN0YW5kYXJkaXphdGlvblxuICAgKlxuICAgKiBBV1M6IFJlZHNoaWZ0IGNsdXN0ZXIgbGlzdGVuaW5nIHBvcnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IHZhbGlkIHBvcnQgbnVtYmVyOyBtdXN0IGJlIGluIHJhbmdlIDU0MzEtNTQ1NSBvciA4MTkxLTgyMTUgd2hlbiBtdWx0aUF6IGlzIHRydWVcbiAgICogQGRlZmF1bHQgNTQ0MFxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlclBvcnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNdWx0aS1ub2RlIGNsdXN0ZXIgZmxhZy4gV2hlbiB0cnVlLCBjcmVhdGVzIGEgbXVsdGktbm9kZSBjbHVzdGVyIGZvciBkaXN0cmlidXRlZCBwcm9jZXNzaW5nO1xuICAgKiB3aGVuIGZhbHNlLCBjcmVhdGVzIGEgc2luZ2xlLW5vZGUgY2x1c3RlciBmb3IgZGV2ZWxvcG1lbnQgb3Igc21hbGwgd29ya2xvYWRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENsdXN0ZXIgYXJjaGl0ZWN0dXJlIHNlbGVjdGlvbjsgRGV2IHZzIHByb2R1Y3Rpb24gZGVwbG95bWVudDsgQ29zdCBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBjbHVzdGVyIHR5cGUgKHNpbmdsZS1ub2RlIG9yIG11bHRpLW5vZGUpXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBib29sZWFuXG4gICAqL1xuICByZWFkb25seSBtdWx0aU5vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2Vla2x5IG1haW50ZW5hbmNlIHdpbmRvdyBpbiBkZGQ6aGgyNDptaS1kZGQ6aGgyNDptaSBmb3JtYXQgKFVUQykuXG4gICAqIEV4YW1wbGU6ICdTdW46MjM6NDUtTW9uOjAwOjE1Jy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBNYWludGVuYW5jZSBzY2hlZHVsaW5nOyBCdXNpbmVzcyBjb250aW51aXR5OyBEb3dudGltZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgcHJlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvd1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBSZXF1aXJlZDsgdmFsaWQgdGltZSB3aW5kb3cgZm9ybWF0XG4gICAqL1xuICByZWFkb25seSBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjbHVzdGVyIHBhcmFtZXRlciBncm91cCBwYXJhbWV0ZXJzIGZvciBwZXJmb3JtYW5jZSB0dW5pbmcuXG4gICAqIFNlY3VyaXR5LXNlbnNpdGl2ZSB2YWx1ZXMgYXJlIGF1dG9tYXRpY2FsbHkgb3ZlcnJpZGRlbiBmb3IgY29tcGxpYW5jZSAoZS5nLiwgU1NMIGVuZm9yY2VtZW50KS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQZXJmb3JtYW5jZSB0dW5pbmc7IEN1c3RvbSBjbHVzdGVyIGNvbmZpZ3VyYXRpb247IFdvcmtsb2FkIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IFJlZHNoaWZ0IHBhcmFtZXRlciBncm91cCBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBzdHJpbmcga2V5LXZhbHVlIHBhaXJzXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJHcm91cFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBXb3JrbG9hZCBtYW5hZ2VtZW50IChXTE0pIGNvbmZpZ3VyYXRpb24gZm9yIHF1ZXJ5IHF1ZXVlIG1hbmFnZW1lbnQgYW5kIHJlc291cmNlIGFsbG9jYXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogUXVlcnkgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uOyBDb25jdXJyZW5jeSBjb250cm9sOyBSZXNvdXJjZSBhbGxvY2F0aW9uXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgV0xNIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGFycmF5IG9mIHZhbGlkIENvbmZpZ3VyYXRpb25FbGVtZW50XG4gICAqL1xuICByZWFkb25seSB3b3JrbG9hZE1hbmFnZW1lbnQ/OiBDb25maWd1cmF0aW9uRWxlbWVudFtdO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBLTVMga2V5IEFSTnMgYWxsb3dlZCB0byB3cml0ZSB0byB0aGUgY2x1c3RlciBidWNrZXQuXG4gICAqIFVzZWZ1bCBmb3IgYWxsb3dpbmcgR2x1ZSBqb2JzIG9yIG90aGVyIHNlcnZpY2VzIHRvIHdyaXRlIGVuY3J5cHRlZCBkYXRhIHRvIHRoZSB3YXJlaG91c2UgYnVja2V0LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENyb3NzLXNlcnZpY2UgZW5jcnlwdGlvbjsgR2x1ZSBqb2IgaW50ZWdyYXRpb247IE11bHRpLWtleSBidWNrZXQgYWNjZXNzXG4gICAqXG4gICAqIEFXUzogS01TIGtleSBBUk5zIGZvciB3YXJlaG91c2UgYnVja2V0IGVuY3J5cHRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGFycmF5IG9mIHZhbGlkIEtNUyBrZXkgQVJOc1xuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFNjaGVkdWxlZCBhY3Rpb25zIGZvciBhdXRvbWF0ZWQgY2x1c3RlciBwYXVzZS9yZXN1bWUgb3BlcmF0aW9ucy5cbiAgICogRWFjaCBhY3Rpb24gc3BlY2lmaWVzIGEgdGFyZ2V0IGFjdGlvbiAocGF1c2VDbHVzdGVyL3Jlc3VtZUNsdXN0ZXIpLCBjcm9uIHNjaGVkdWxlLFxuICAgKiBhbmQgYWN0aXZlIHRpbWUgd2luZG93LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvc3Qgb3B0aW1pemF0aW9uIHZpYSBzY2hlZHVsZWQgcGF1c2U7IEF1dG9tYXRlZCBvcGVyYXRpb25zOyBCdXNpbmVzcy1ob3VycyBzY2hlZHVsaW5nXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgc2NoZWR1bGVkIGFjdGlvbnMgZm9yIGNsdXN0ZXIgbGlmZWN5Y2xlIG1hbmFnZW1lbnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGFycmF5IG9mIHZhbGlkIFNjaGVkdWxlZEFjdGlvblByb3BzXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZWRBY3Rpb25zPzogU2NoZWR1bGVkQWN0aW9uUHJvcHNbXTtcbiAgLyoqXG4gICAqIERhdGFiYXNlIHVzZXJzIGNyZWF0ZWQgaW4gUmVkc2hpZnQgd2l0aCBjcmVkZW50aWFscyBzdG9yZWQgaW4gU2VjcmV0cyBNYW5hZ2VyLlxuICAgKiBTdXBwb3J0cyBhdXRvbWF0ZWQgc2VjcmV0IHJvdGF0aW9uIG9uIGEgY29uZmlndXJhYmxlIGN5Y2xlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEF1dG9tYXRlZCB1c2VyIHByb3Zpc2lvbmluZzsgQ3JlZGVudGlhbCBtYW5hZ2VtZW50OyBTZWNyZXQgcm90YXRpb25cbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBkYXRhYmFzZSB1c2VycyB3aXRoIFNlY3JldHMgTWFuYWdlciBjcmVkZW50aWFsIHN0b3JhZ2UgYW5kIHJvdGF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBhcnJheSBvZiB2YWxpZCBEYXRhYmFzZVVzZXJzUHJvcHNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlVXNlcnM/OiBEYXRhYmFzZVVzZXJzUHJvcHNbXTtcbiAgLyoqXG4gICAqIENvbnRyb2wgd2hldGhlciBhIGRlZGljYXRlZCBTMyBidWNrZXQgaXMgY3JlYXRlZCBmb3Igd2FyZWhvdXNlIGRhdGEgb3BlcmF0aW9uc1xuICAgKiAobG9hZGluZywgdW5sb2FkaW5nLCBiYWNrdXApLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFN0b3JhZ2UgcmVzb3VyY2UgbWFuYWdlbWVudDsgRGF0YSBvcGVyYXRpb25zOyBCdWNrZXQgbGlmZWN5Y2xlIGNvbnRyb2xcbiAgICpcbiAgICogQVdTOiBTMyBidWNrZXQgZm9yIFJlZHNoaWZ0IGRhdGEgd2FyZWhvdXNlIG9wZXJhdGlvbnNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlV2FyZWhvdXNlQnVja2V0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBkYXlzIGF1dG9tYXRlZCBzbmFwc2hvdHMgYXJlIHJldGFpbmVkICgxLTM1KS4gU2V0IHRvIDAgdG8gZGlzYWJsZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBCYWNrdXAgbWFuYWdlbWVudDsgUG9pbnQtaW4tdGltZSByZWNvdmVyeTsgRGF0YSBwcm90ZWN0aW9uIGNvbXBsaWFuY2VcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBhdXRvbWF0ZWQgc25hcHNob3QgcmV0ZW50aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBpbnRlZ2VyIDAtMzVcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b21hdGVkU25hcHNob3RSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICAvKipcbiAgICogRXZlbnQgbm90aWZpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIGNsdXN0ZXIgYW5kIHNjaGVkdWxlZCBhY3Rpb24gbW9uaXRvcmluZy5cbiAgICogQ29uZmlndXJlcyBTTlMgbm90aWZpY2F0aW9ucyB3aXRoIGVtYWlsIGRlbGl2ZXJ5LCBzZXZlcml0eSBmaWx0ZXJpbmcsIGFuZCBldmVudCBjYXRlZ29yeSBzZWxlY3Rpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogT3BlcmF0aW9uYWwgbW9uaXRvcmluZzsgRXZlbnQgYWxlcnRpbmc7IENsdXN0ZXIgc3RhdHVzIHRyYWNraW5nXG4gICAqXG4gICAqIEFXUzogU05TIG5vdGlmaWNhdGlvbnMgZm9yIFJlZHNoaWZ0IGNsdXN0ZXIgZXZlbnRzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyB2YWxpZCBFdmVudE5vdGlmaWNhdGlvbnNQcm9wc1xuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnROb3RpZmljYXRpb25zPzogRXZlbnROb3RpZmljYXRpb25zUHJvcHM7XG4gIC8qKlxuICAgKiBJbml0aWFsIGRhdGFiYXNlIG5hbWUgY3JlYXRlZCBpbiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDdXN0b20gZGF0YWJhc2UgbmFtaW5nOyBJbml0aWFsIGRhdGFiYXNlIHNldHVwXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgaW5pdGlhbCBkYXRhYmFzZVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBPcHRpb25hbDsgdmFsaWQgZGF0YWJhc2UgbmFtZVxuICAgKiBAZGVmYXVsdCBcImRlZmF1bHRfZGJcIlxuICAgKi9cbiAgcmVhZG9ubHkgZGJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogU25hcHNob3QgaWRlbnRpZmllciBmb3IgY2x1c3RlciByZXN0b3JhdGlvbi4gT25seSBwcm92aWRlIHdoZW4gcmVzdG9yaW5nIGZyb20gYW4gZXhpc3Rpbmcgc25hcHNob3QuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGlzYXN0ZXIgcmVjb3Zlcnk7IERhdGEgbWlncmF0aW9uOyBDbHVzdGVyIHJlc3RvcmF0aW9uXG4gICAqXG4gICAqIEFXUzogUmVkc2hpZnQgc25hcHNob3QgZm9yIGNsdXN0ZXIgcmVzdG9yYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IHZhbGlkIHNuYXBzaG90IGlkZW50aWZpZXJcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgLyoqXG4gICAqIG93bmVyQWNjb3VudCBSZWZlcnMgdG8gc25hcHNob3Qgb3duZXIgYWNjb3VudC4gQXBwbGljYWJsZSBpZiByZXN0b3JpbmcgdGhlIGNsdXN0ZXIgZnJvbSBzbmFwc2hvdCBhbmQgc25hcHNob3QgYmVsb25ncyB0byBhbm90aGVyIGFjY291bnRcbiAgICogT3B0aW9uYWwgLSBCeSBkZWZhdWx0LCBzbmFwc2hvdHMgYXJlIHNlYXJjaGVkIHdpdGhpbiBjdXJyZW50IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90T3duZXJBY2NvdW50Pzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIHJlYWRvbmx5IHJlZHNoaWZ0TWFuYWdlTWFzdGVyUGFzc3dvcmQ/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIG11bHRpLUFaIGRlcGxveW1lbnQgZm9yIGhpZ2ggYXZhaWxhYmlsaXR5LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEhpZ2ggYXZhaWxhYmlsaXR5OyBGYXVsdCB0b2xlcmFuY2U7IFByb2R1Y3Rpb24gZGVwbG95bWVudHNcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBtdWx0aS1BWiBkZXBsb3ltZW50XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE9wdGlvbmFsOyBib29sZWFuLiBXaGVuIHRydWUsIHJlcXVpcmVzOiBudW1iZXJPZk5vZGVzID49IDIsIHN1Ym5ldElkcyBpbiA+PSAzIEFacyxcbiAgICogY2x1c3RlclBvcnQgaW4gcmFuZ2UgNTQzMS01NDU1IG9yIDgxOTEtODIxNSwgYW5kIHBhdXNlL3Jlc3VtZSBzY2hlZHVsZWQgYWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpQXo/OiBib29sZWFuO1xuICAvKipcbiAgICogVGFyZ2V0IHJlZ2lvbiBmb3IgY3Jvc3MtcmVnaW9uIHNuYXBzaG90IGNvcGllcy4gV2hlbiBzZXQsIGVuYWJsZXMgY3Jvc3MtcmVnaW9uIHNuYXBzaG90IGNvcHkgdG8gdGhpcyByZWdpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGlzYXN0ZXIgcmVjb3Zlcnk7IENyb3NzLXJlZ2lvbiBiYWNrdXA7IEJ1c2luZXNzIGNvbnRpbnVpdHlcbiAgICpcbiAgICogQVdTOiBSZWRzaGlmdCBzbmFwc2hvdCBjb3B5IGRlc3RpbmF0aW9uIHJlZ2lvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBPcHRpb25hbDsgdmFsaWQgQVdTIHJlZ2lvbiBzdHJpbmcsIG11c3QgZGlmZmVyIGZyb20gdGhlIGRlcGxveW1lbnQgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBSZWdpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIG9taXRzIHRoZSBleHBsaWNpdCBibG9ja1B1YmxpY0FjY2VzcyBzZXR0aW5nIG9uIFMzIGJ1Y2tldHMgc28gQ0RLIGRvZXMgbm90IGVtaXRcbiAgICogYSBQdXRCdWNrZXRQdWJsaWNBY2Nlc3NCbG9jayBBUEkgY2FsbC4gVXNlIHdoZW4gcHVibGljIGFjY2VzcyBibG9jayBpcyBtYW5hZ2VkIGV4dGVybmFsbHlcbiAgICogKGUuZy4sIGJ5IEFXUyBhY2NvdW50LWxldmVsIHNldHRpbmdzIGFuZC9vciBTQ1BzIHRoYXQgZGVueSBzMzpQdXRCdWNrZXRQdWJsaWNBY2Nlc3NCbG9jaykuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU0NQLXJlc3RyaWN0ZWQgZW52aXJvbm1lbnRzOyBFeHRlcm5hbGx5IG1hbmFnZWQgcHVibGljIGFjY2VzcyBibG9jaztcbiAgICogT3JnYW5pemF0aW9ucyBlbmZvcmNpbmcgYWNjb3VudC1sZXZlbCBTMyBCbG9jayBQdWJsaWMgQWNjZXNzXG4gICAqXG4gICAqIEFXUzogUzMgUHV0QnVja2V0UHVibGljQWNjZXNzQmxvY2tcbiAgICpcbiAgICogVmFsaWRhdGlvbjogT3B0aW9uYWw7IGJvb2xlYW47IGRlZmF1bHQgZmFsc2VcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0FjY2Vzc0Jsb2NrTWFuYWdlZEV4dGVybmFsbHk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YVdhcmVob3VzZUNvbmZpZ1BhcnNlciBleHRlbmRzIE1kYWFBcHBDb25maWdQYXJzZXI8RGF0YVdhcmVob3VzZUNvbmZpZ0NvbnRlbnRzPiB7XG4gIHB1YmxpYyByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBhZG1pblBhc3N3b3JkUm90YXRpb25EYXlzOiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBmZWRlcmF0aW9uczogRmVkZXJhdGlvblByb3BzW107XG4gIHB1YmxpYyByZWFkb25seSBkYXRhYmFzZVVzZXJzOiBEYXRhYmFzZVVzZXJzUHJvcHNbXTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGFBZG1pblJvbGVSZWZzOiBNZGFhUm9sZVJlZltdO1xuICBwdWJsaWMgcmVhZG9ubHkgd2FyZWhvdXNlQnVja2V0VXNlclJvbGVSZWZzPzogTWRhYVJvbGVSZWZbXTtcbiAgcHVibGljIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGVSZWZzPzogTWRhYVJvbGVSZWZbXTtcbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBjbHVzdGVyUG9ydDogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0SWRzOiBzdHJpbmdbXTtcbiAgcHVibGljIHJlYWRvbmx5IG5vZGVUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBlbmFibGVBdWRpdExvZ2dpbmdUb1MzOiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgbnVtYmVyT2ZOb2RlczogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgbXVsdGlOb2RlPzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwSW5ncmVzczogeyBpcHY0Pzogc3RyaW5nW107IHNnPzogc3RyaW5nW10gfTtcbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtZXRlckdyb3VwUGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya2xvYWRNYW5hZ2VtZW50OiBDb25maWd1cmF0aW9uRWxlbWVudFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnM/OiBzdHJpbmdbXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBkZWZhdWx0Q2x1c3RlclBvcnQgPSA1NDQwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2NoZWR1bGVkQWN0aW9uczogU2NoZWR1bGVkQWN0aW9uUHJvcHNbXTtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZVdhcmVob3VzZUJ1Y2tldD86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBhdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBldmVudE5vdGlmaWNhdGlvbnM/OiBFdmVudE5vdGlmaWNhdGlvbnNQcm9wcztcbiAgcHVibGljIHJlYWRvbmx5IGRiTmFtZT86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90T3duZXJBY2NvdW50Pzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZD86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBtdWx0aUF6PzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IGJhY2t1cFJlZ2lvbj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY0FjY2Vzc0Jsb2NrTWFuYWdlZEV4dGVybmFsbHk/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBTdGFjaywgcHJvcHM6IE1kYWFBcHBDb25maWdQYXJzZXJQcm9wcykge1xuICAgIHN1cGVyKHN0YWNrLCBwcm9wcywgY29uZmlnU2NoZW1hIGFzIFNjaGVtYSk7XG5cbiAgICB0aGlzLmFkbWluVXNlcm5hbWUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkbWluVXNlcm5hbWU7XG4gICAgdGhpcy5hZG1pblBhc3N3b3JkUm90YXRpb25EYXlzID0gdGhpcy5jb25maWdDb250ZW50cy5hZG1pblBhc3N3b3JkUm90YXRpb25EYXlzO1xuICAgIHRoaXMuZmVkZXJhdGlvbnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmZlZGVyYXRpb25zID8gdGhpcy5jb25maWdDb250ZW50cy5mZWRlcmF0aW9ucyA6IFtdO1xuICAgIHRoaXMuZGF0YUFkbWluUm9sZVJlZnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmRhdGFBZG1pblJvbGVzO1xuICAgIHRoaXMud2FyZWhvdXNlQnVja2V0VXNlclJvbGVSZWZzID0gdGhpcy5jb25maWdDb250ZW50cy53YXJlaG91c2VCdWNrZXRVc2VyUm9sZXM7XG4gICAgdGhpcy5leGVjdXRpb25Sb2xlUmVmcyA9IHRoaXMuY29uZmlnQ29udGVudHMuZXhlY3V0aW9uUm9sZXM7XG4gICAgdGhpcy52cGNJZCA9IHRoaXMuY29uZmlnQ29udGVudHMudnBjSWQ7XG4gICAgdGhpcy5zdWJuZXRJZHMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnN1Ym5ldElkcztcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXBJbmdyZXNzID0gdGhpcy5jb25maWdDb250ZW50cy5zZWN1cml0eUdyb3VwSW5ncmVzcztcbiAgICB0aGlzLm5vZGVUeXBlID0gdGhpcy5jb25maWdDb250ZW50cy5ub2RlVHlwZTtcbiAgICB0aGlzLm51bWJlck9mTm9kZXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm51bWJlck9mTm9kZXM7XG4gICAgdGhpcy5lbmFibGVBdWRpdExvZ2dpbmdUb1MzID0gdGhpcy5jb25maWdDb250ZW50cy5lbmFibGVBdWRpdExvZ2dpbmdUb1MzO1xuICAgIHRoaXMuY2x1c3RlclBvcnQgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmNsdXN0ZXJQb3J0XG4gICAgICA/IHRoaXMuY29uZmlnQ29udGVudHMuY2x1c3RlclBvcnRcbiAgICAgIDogRGF0YVdhcmVob3VzZUNvbmZpZ1BhcnNlci5kZWZhdWx0Q2x1c3RlclBvcnQ7XG4gICAgdGhpcy5tdWx0aU5vZGUgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm11bHRpTm9kZTtcbiAgICB0aGlzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93ID0gdGhpcy5jb25maWdDb250ZW50cy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdztcbiAgICB0aGlzLnBhcmFtZXRlckdyb3VwUGFyYW1zID0gdGhpcy5jb25maWdDb250ZW50cy5wYXJhbWV0ZXJHcm91cFBhcmFtc1xuICAgICAgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLnBhcmFtZXRlckdyb3VwUGFyYW1zXG4gICAgICA6IHt9O1xuICAgIHRoaXMud29ya2xvYWRNYW5hZ2VtZW50ID0gdGhpcy5jb25maWdDb250ZW50cy53b3JrbG9hZE1hbmFnZW1lbnQgPyB0aGlzLmNvbmZpZ0NvbnRlbnRzLndvcmtsb2FkTWFuYWdlbWVudCA6IFtdO1xuICAgIHRoaXMuYWRkaXRpb25hbEJ1Y2tldEttc0tleUFybnMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmFkZGl0aW9uYWxCdWNrZXRLbXNLZXlBcm5zO1xuICAgIHRoaXMuc2NoZWR1bGVkQWN0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuc2NoZWR1bGVkQWN0aW9ucyA/IHRoaXMuY29uZmlnQ29udGVudHMuc2NoZWR1bGVkQWN0aW9ucyA6IFtdO1xuICAgIHRoaXMuZGF0YWJhc2VVc2VycyA9IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YWJhc2VVc2VycyA/IHRoaXMuY29uZmlnQ29udGVudHMuZGF0YWJhc2VVc2VycyA6IFtdO1xuICAgIHRoaXMuY3JlYXRlV2FyZWhvdXNlQnVja2V0ID0gdGhpcy5jb25maWdDb250ZW50cy5jcmVhdGVXYXJlaG91c2VCdWNrZXQ7XG4gICAgdGhpcy5hdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvbkRheXMgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmF1dG9tYXRlZFNuYXBzaG90UmV0ZW50aW9uRGF5cztcbiAgICB0aGlzLmV2ZW50Tm90aWZpY2F0aW9ucyA9IHRoaXMuY29uZmlnQ29udGVudHMuZXZlbnROb3RpZmljYXRpb25zO1xuICAgIHRoaXMuZGJOYW1lID0gdGhpcy5jb25maWdDb250ZW50cy5kYk5hbWU7XG4gICAgdGhpcy5zbmFwc2hvdElkZW50aWZpZXIgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnNuYXBzaG90SWRlbnRpZmllcjtcbiAgICB0aGlzLnNuYXBzaG90T3duZXJBY2NvdW50ID0gdGhpcy5jb25maWdDb250ZW50cy5zbmFwc2hvdE93bmVyQWNjb3VudFxuICAgICAgPyBTdHJpbmcodGhpcy5jb25maWdDb250ZW50cy5zbmFwc2hvdE93bmVyQWNjb3VudClcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMucmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZCA9IHRoaXMuY29uZmlnQ29udGVudHMucmVkc2hpZnRNYW5hZ2VNYXN0ZXJQYXNzd29yZDtcbiAgICB0aGlzLm11bHRpQXogPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLm11bHRpQXo7XG4gICAgdGhpcy5iYWNrdXBSZWdpb24gPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLmJhY2t1cFJlZ2lvbjtcbiAgICB0aGlzLnB1YmxpY0FjY2Vzc0Jsb2NrTWFuYWdlZEV4dGVybmFsbHkgPSB0aGlzLmNvbmZpZ0NvbnRlbnRzLnB1YmxpY0FjY2Vzc0Jsb2NrTWFuYWdlZEV4dGVybmFsbHk7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -8,35 +8,37 @@
|
|
|
8
8
|
"bin": {
|
|
9
9
|
"datawarehouse-cdk": "bin/datawarehouse.js"
|
|
10
10
|
},
|
|
11
|
-
"version": "1.
|
|
11
|
+
"version": "1.6.0",
|
|
12
12
|
"license": "Apache-2.0",
|
|
13
13
|
"scripts": {
|
|
14
|
-
"build": "
|
|
14
|
+
"build": "../../../../scripts/build/build_package.sh DataWarehouseConfigContents",
|
|
15
15
|
"watch": "tsc -w",
|
|
16
16
|
"test": "jest --passWithNoTests --coverage",
|
|
17
17
|
"cdk": "cdk",
|
|
18
|
-
"lint": "eslint --max-warnings 0 -c
|
|
18
|
+
"lint": "eslint --max-warnings 0 -c ../../../../eslint.config.mjs",
|
|
19
|
+
"test:update-baselines": "UPDATE_BASELINES=true jest --passWithNoTests --testPathPattern='.*\\.diff\\.test\\.ts'",
|
|
20
|
+
"test:package-docs": "../../../../scripts/generate_docs/test_package_docs.sh"
|
|
19
21
|
},
|
|
20
22
|
"main": "lib/index.js",
|
|
21
23
|
"types": "lib/index.d.ts",
|
|
22
24
|
"devDependencies": {
|
|
23
|
-
"@aws-mdaa/testing": "1.
|
|
25
|
+
"@aws-mdaa/testing": "1.6.0",
|
|
24
26
|
"@types/jest": "29.5.14",
|
|
25
27
|
"@types/node": "22.9.0",
|
|
26
28
|
"@types/prettier": "2.6.0",
|
|
27
29
|
"jest": "29.7.0",
|
|
28
|
-
"ts-jest": "29.4.
|
|
30
|
+
"ts-jest": "29.4.9",
|
|
29
31
|
"ts-node": "10.9.2",
|
|
30
32
|
"typescript": "5.9.3",
|
|
31
|
-
"typescript-json-schema": "0.67.
|
|
33
|
+
"typescript-json-schema": "0.67.4"
|
|
32
34
|
},
|
|
33
35
|
"dependencies": {
|
|
34
|
-
"@aws-mdaa/app": "1.
|
|
35
|
-
"@aws-mdaa/config": "1.
|
|
36
|
-
"@aws-mdaa/datawarehouse-l3-construct": "1.
|
|
37
|
-
"@aws-mdaa/iam-role-helper": "1.
|
|
38
|
-
"@aws-mdaa/l3-construct": "1.
|
|
39
|
-
"ajv": "8.
|
|
36
|
+
"@aws-mdaa/app": "1.6.0",
|
|
37
|
+
"@aws-mdaa/config": "1.6.0",
|
|
38
|
+
"@aws-mdaa/datawarehouse-l3-construct": "1.6.0",
|
|
39
|
+
"@aws-mdaa/iam-role-helper": "1.6.0",
|
|
40
|
+
"@aws-mdaa/l3-construct": "1.6.0",
|
|
41
|
+
"ajv": "8.18.0",
|
|
40
42
|
"aws-cdk-lib": "2.220.0",
|
|
41
43
|
"cdk-nag": "2.37.55",
|
|
42
44
|
"constructs": "10.0.96",
|
|
@@ -47,5 +49,8 @@
|
|
|
47
49
|
"repository": {
|
|
48
50
|
"type": "git",
|
|
49
51
|
"url": "https://github.com/aws/modern-data-architecture-accelerator"
|
|
52
|
+
},
|
|
53
|
+
"mdaa": {
|
|
54
|
+
"deployStage": "2"
|
|
50
55
|
}
|
|
51
56
|
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# Sample config for the Redshift Data Warehouse module.
|
|
2
|
+
# Deploys a multi-node Redshift cluster with SAML federation,
|
|
3
|
+
# scheduled pause/resume, audit logging, database users with
|
|
4
|
+
# secret rotation, event notifications, workload management,
|
|
5
|
+
# parameter group tuning, and VPC networking.
|
|
6
|
+
# This comprehensive config exercises every compatible non-excluded
|
|
7
|
+
# property at full depth.
|
|
8
|
+
|
|
9
|
+
# Admin username for the Redshift cluster. A secret is
|
|
10
|
+
# automatically generated for the password.
|
|
11
|
+
adminUsername: admin
|
|
12
|
+
|
|
13
|
+
# Number of days between admin password rotation
|
|
14
|
+
adminPasswordRotationDays: 30
|
|
15
|
+
|
|
16
|
+
# (Optional) Number of days automated snapshots are retained
|
|
17
|
+
# (1-35). Set to 0 to disable. (default: 1)
|
|
18
|
+
automatedSnapshotRetentionDays: 3
|
|
19
|
+
|
|
20
|
+
# (Optional) Additional KMS key ARNs allowed to write to the
|
|
21
|
+
# cluster bucket. Useful for allowing Glue jobs or other services
|
|
22
|
+
# to write encrypted data to the warehouse bucket.
|
|
23
|
+
additionalBucketKmsKeyArns:
|
|
24
|
+
- arn:{{partition}}:kms:{{region}}:{{account}}:key/abcd-123123-abcd-12312421
|
|
25
|
+
|
|
26
|
+
# (Optional) SAML or OIDC federation configurations for federated
|
|
27
|
+
# Redshift access. Each federation creates an IAM role with SAML
|
|
28
|
+
# trust for dynamic credential generation and group-based cluster
|
|
29
|
+
# access.
|
|
30
|
+
federations:
|
|
31
|
+
# Name of the federation for reference
|
|
32
|
+
- federationName: 'test'
|
|
33
|
+
# ARN of the IAM Identity Provider
|
|
34
|
+
providerArn: arn:{{partition}}:iam::{{account}}:saml-provider/sample-saml-identity-provider
|
|
35
|
+
|
|
36
|
+
# See CONFIGURATION.md for role reference options (name, arn, id).
|
|
37
|
+
# Admin roles granted full access to cluster resources including
|
|
38
|
+
# KMS keys and S3 buckets. Roles can be referenced by name, arn,
|
|
39
|
+
# or id.
|
|
40
|
+
dataAdminRoles:
|
|
41
|
+
- arn: arn:{{partition}}:iam::{{account}}:role/Admin
|
|
42
|
+
|
|
43
|
+
# (Optional) Roles granted read/write access to the data warehouse
|
|
44
|
+
# S3 bucket for data loading/unloading
|
|
45
|
+
warehouseBucketUserRoles:
|
|
46
|
+
- name: User
|
|
47
|
+
- name: team2-ex-role
|
|
48
|
+
|
|
49
|
+
# (Optional) External execution roles associated with the Redshift
|
|
50
|
+
# cluster for cross-service operations. If a role also needs
|
|
51
|
+
# warehouse bucket access, add it to warehouseBucketUserRoles.
|
|
52
|
+
executionRoles:
|
|
53
|
+
- arn: arn:{{partition}}:iam::{{account}}:role/team1-ex-role
|
|
54
|
+
- arn: arn:{{partition}}:iam::{{account}}:role/RedshiftExecRole
|
|
55
|
+
|
|
56
|
+
# VPC ID for Redshift cluster deployment
|
|
57
|
+
# Often created by your VPC/networking stack.
|
|
58
|
+
# Example SSM: ssm:/path/to/vpc/id
|
|
59
|
+
vpcId: vpc-12321421412
|
|
60
|
+
|
|
61
|
+
# Subnet IDs for Redshift cluster node placement. For automatic
|
|
62
|
+
# cluster relocation, specify at least one subnet per AZ.
|
|
63
|
+
# Often created by your VPC/networking stack.
|
|
64
|
+
# Example SSM: ssm:/path/to/subnet/id
|
|
65
|
+
subnetIds:
|
|
66
|
+
- subnet-12312312421
|
|
67
|
+
- subnet-12312321412
|
|
68
|
+
- subnet-12312321413
|
|
69
|
+
|
|
70
|
+
# Weekly maintenance window in ddd:hh24:mi-ddd:hh24:mi format
|
|
71
|
+
# (UTC). Example: 'Sun:23:45-Mon:00:15'.
|
|
72
|
+
preferredMaintenanceWindow: Sun:23:45-Mon:00:15
|
|
73
|
+
|
|
74
|
+
# (Optional) TCP port for client connections to the cluster
|
|
75
|
+
# (default: 5440)
|
|
76
|
+
clusterPort: 5440
|
|
77
|
+
|
|
78
|
+
# Security group ingress rules defining allowed inbound
|
|
79
|
+
# connections to the cluster port. Supports IPv4 CIDR blocks and
|
|
80
|
+
# security group references. All other traffic is blocked.
|
|
81
|
+
securityGroupIngress:
|
|
82
|
+
# (Optional) IPv4 CIDR blocks to allow traffic from
|
|
83
|
+
ipv4:
|
|
84
|
+
- 172.31.0.0/16
|
|
85
|
+
# (Optional) Security group IDs to allow traffic from
|
|
86
|
+
sg:
|
|
87
|
+
- ssm:/path/to/ssm
|
|
88
|
+
|
|
89
|
+
# Redshift node type determining compute and storage capacity
|
|
90
|
+
nodeType: RA3_4XLARGE
|
|
91
|
+
# Number of nodes in the Redshift cluster
|
|
92
|
+
numberOfNodes: 2
|
|
93
|
+
|
|
94
|
+
# Enable audit logging to a dedicated S3 bucket. The audit bucket
|
|
95
|
+
# uses SSE-S3 encryption (not KMS) due to Redshift requirements.
|
|
96
|
+
enableAuditLoggingToS3: true
|
|
97
|
+
|
|
98
|
+
# (Optional) Control whether a dedicated S3 bucket is created for
|
|
99
|
+
# warehouse data operations (default: true)
|
|
100
|
+
createWarehouseBucket: true
|
|
101
|
+
# (Optional) Initial database name created in the cluster
|
|
102
|
+
# (default: default_db)
|
|
103
|
+
dbName: 'test_db'
|
|
104
|
+
# (Optional) Multi-node cluster flag. When true, creates a
|
|
105
|
+
# multi-node cluster for distributed processing.
|
|
106
|
+
multiNode: true
|
|
107
|
+
# (Optional) Let Redshift manage the master password
|
|
108
|
+
redshiftManageMasterPassword: false
|
|
109
|
+
|
|
110
|
+
# (Optional) Additional cluster parameter group parameters for
|
|
111
|
+
# performance tuning. Security-sensitive values are automatically
|
|
112
|
+
# overridden for compliance (e.g., SSL enforcement).
|
|
113
|
+
parameterGroupParams:
|
|
114
|
+
max_concurrency_scaling_clusters: "1"
|
|
115
|
+
auto_analyze: "true"
|
|
116
|
+
|
|
117
|
+
# (Optional) Snapshot identifier for cluster restoration. Only
|
|
118
|
+
# provide when restoring from an existing snapshot.
|
|
119
|
+
snapshotIdentifier: test-snapshot-id
|
|
120
|
+
|
|
121
|
+
# (Optional) Snapshot owner account. Applicable if restoring the
|
|
122
|
+
# cluster from a snapshot that belongs to another account.
|
|
123
|
+
# By default, snapshots are searched within the current account.
|
|
124
|
+
snapshotOwnerAccount: '{{context:account-2}}'
|
|
125
|
+
|
|
126
|
+
# (Optional) Database users created in Redshift with credentials
|
|
127
|
+
# stored in Secrets Manager. Supports automated secret rotation.
|
|
128
|
+
databaseUsers:
|
|
129
|
+
# Name of the database user
|
|
130
|
+
- userName: 'serviceuserGlue'
|
|
131
|
+
# The DB to which the user will be added
|
|
132
|
+
dbName: 'default_db'
|
|
133
|
+
# Number of days between secret rotation
|
|
134
|
+
secretRotationDays: 90
|
|
135
|
+
# (Optional) Characters to exclude in the password
|
|
136
|
+
excludeCharacters: '"@/\\'
|
|
137
|
+
# (Optional) List of roles that need Redshift secret access
|
|
138
|
+
secretAccessRoles:
|
|
139
|
+
- name: 'test-arn'
|
|
140
|
+
- userName: 'serviceuserQuicksight'
|
|
141
|
+
dbName: 'default_db'
|
|
142
|
+
secretRotationDays: 90
|
|
143
|
+
|
|
144
|
+
# (Optional) Scheduled actions for automated cluster pause/resume.
|
|
145
|
+
# Each action specifies a target action, cron schedule, and active
|
|
146
|
+
# time window.
|
|
147
|
+
scheduledActions:
|
|
148
|
+
# Pause cluster every Friday at 6pm ET
|
|
149
|
+
- name: pause-cluster
|
|
150
|
+
# Scheduled action is enabled if true
|
|
151
|
+
enable: true
|
|
152
|
+
# Target operation: 'pauseCluster' or 'resumeCluster'
|
|
153
|
+
targetAction: pauseCluster
|
|
154
|
+
# Cron expression: cron(Minutes Hours Day-of-month Month
|
|
155
|
+
# Day-of-week Year)
|
|
156
|
+
schedule: cron(0 22 ? * FRI *)
|
|
157
|
+
# (Optional) UTC start date/time when the schedule becomes
|
|
158
|
+
# active (ISO 8601 format)
|
|
159
|
+
startTime: '2023-12-31T00:00:00Z'
|
|
160
|
+
# (Optional) UTC end date/time after which the schedule is no
|
|
161
|
+
# longer active
|
|
162
|
+
endTime: '2099-12-31T00:00:00Z'
|
|
163
|
+
|
|
164
|
+
# Resume cluster every Monday at 7am ET
|
|
165
|
+
- name: resume-cluster
|
|
166
|
+
enable: true
|
|
167
|
+
targetAction: resumeCluster
|
|
168
|
+
schedule: cron(0 12 ? * MON *)
|
|
169
|
+
startTime: '2023-12-31T00:00:00Z'
|
|
170
|
+
endTime: '2099-12-31T00:00:00Z'
|
|
171
|
+
|
|
172
|
+
# (Optional) Event notification configuration for cluster and
|
|
173
|
+
# scheduled action monitoring. Configures SNS notifications with
|
|
174
|
+
# email delivery, severity filtering, and event category selection.
|
|
175
|
+
eventNotifications:
|
|
176
|
+
# (Optional) Email addresses for SNS notification delivery
|
|
177
|
+
email:
|
|
178
|
+
- example@example.com
|
|
179
|
+
# (Optional) Minimum event severity level (enum: ERROR, INFO)
|
|
180
|
+
severity: INFO
|
|
181
|
+
# (Optional) Event categories to monitor
|
|
182
|
+
# (enum: configuration, management, monitoring, security,
|
|
183
|
+
# pending)
|
|
184
|
+
eventCategories:
|
|
185
|
+
- configuration
|
|
186
|
+
- management
|
|
187
|
+
- monitoring
|
|
188
|
+
- security
|
|
189
|
+
- pending
|
|
190
|
+
|
|
191
|
+
# (Optional) Workload management (WLM) configuration for query
|
|
192
|
+
# queue management and resource allocation.
|
|
193
|
+
workloadManagement:
|
|
194
|
+
- query_group: 'test-group'
|
|
195
|
+
memory_percent_to_use: 50
|
|
196
|
+
query_concurrency: 5
|
|
197
|
+
|
|
198
|
+
# (Optional) Enable multi-AZ deployment for high availability.
|
|
199
|
+
# Requires: numberOfNodes >= 2, subnetIds in >= 3 AZs,
|
|
200
|
+
# clusterPort in range 5431-5455 or 8191-8215.
|
|
201
|
+
multiAz: true
|
|
202
|
+
|
|
203
|
+
# (Optional) Target region for cross-region snapshot copies.
|
|
204
|
+
# When set, enables automatic cross-region snapshot copy to this region.
|
|
205
|
+
# Must differ from the cluster's deployment region.
|
|
206
|
+
backupRegion: us-west-2
|
|
207
|
+
|
|
208
|
+
# (Optional) When true, omits the explicit blockPublicAccess setting on S3
|
|
209
|
+
# buckets so CDK does not emit a PutBucketPublicAccessBlock API call. Use in
|
|
210
|
+
# SCP-restricted environments where public access block is managed externally
|
|
211
|
+
# via AWS account-level settings.
|
|
212
|
+
publicAccessBlockManagedExternally: false
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Minimal Redshift Data Warehouse module configuration.
|
|
2
|
+
# Contains only the required properties for a basic Redshift cluster
|
|
3
|
+
# deployment with VPC networking, security group, and audit logging.
|
|
4
|
+
|
|
5
|
+
# Admin username for the Redshift cluster. A secret is
|
|
6
|
+
# automatically generated for the password.
|
|
7
|
+
adminUsername: admin
|
|
8
|
+
|
|
9
|
+
# Number of days between admin password rotation
|
|
10
|
+
adminPasswordRotationDays: 30
|
|
11
|
+
|
|
12
|
+
# See CONFIGURATION.md for role reference options (name, arn, id).
|
|
13
|
+
# Admin roles granted full access to cluster resources including
|
|
14
|
+
# KMS keys and S3 buckets
|
|
15
|
+
dataAdminRoles:
|
|
16
|
+
- arn: arn:{{partition}}:iam::{{account}}:role/Admin
|
|
17
|
+
|
|
18
|
+
# Enable audit logging to a dedicated S3 bucket
|
|
19
|
+
enableAuditLoggingToS3: true
|
|
20
|
+
|
|
21
|
+
# Redshift node type determining compute and storage capacity
|
|
22
|
+
nodeType: RA3_4XLARGE
|
|
23
|
+
# Number of nodes in the Redshift cluster
|
|
24
|
+
numberOfNodes: 2
|
|
25
|
+
|
|
26
|
+
# Weekly maintenance window in ddd:hh24:mi-ddd:hh24:mi format (UTC)
|
|
27
|
+
preferredMaintenanceWindow: Sun:23:45-Mon:00:15
|
|
28
|
+
|
|
29
|
+
# Security group ingress rules defining allowed inbound
|
|
30
|
+
# connections to the cluster port
|
|
31
|
+
securityGroupIngress:
|
|
32
|
+
ipv4:
|
|
33
|
+
- 172.31.0.0/16
|
|
34
|
+
|
|
35
|
+
# Subnet IDs for Redshift cluster node placement
|
|
36
|
+
# Often created by your VPC/networking stack.
|
|
37
|
+
# Example SSM: ssm:/path/to/subnet/id
|
|
38
|
+
subnetIds:
|
|
39
|
+
- subnet-12312312421
|
|
40
|
+
- subnet-12312321412
|
|
41
|
+
|
|
42
|
+
# VPC ID for Redshift cluster deployment
|
|
43
|
+
# Often created by your VPC/networking stack.
|
|
44
|
+
# Example SSM: ssm:/path/to/vpc/id
|
|
45
|
+
vpcId: vpc-12321421412
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Redshift Data Warehouse module configuration exercising
|
|
2
|
+
# publicAccessBlockManagedExternally: true.
|
|
3
|
+
# This omits the explicit blockPublicAccess setting on S3 buckets
|
|
4
|
+
# so CDK does not emit a PutBucketPublicAccessBlock API call.
|
|
5
|
+
|
|
6
|
+
adminUsername: admin
|
|
7
|
+
adminPasswordRotationDays: 30
|
|
8
|
+
|
|
9
|
+
dataAdminRoles:
|
|
10
|
+
- arn: arn:{{partition}}:iam::{{account}}:role/Admin
|
|
11
|
+
|
|
12
|
+
enableAuditLoggingToS3: true
|
|
13
|
+
|
|
14
|
+
nodeType: RA3_4XLARGE
|
|
15
|
+
numberOfNodes: 2
|
|
16
|
+
|
|
17
|
+
preferredMaintenanceWindow: Sun:23:45-Mon:00:15
|
|
18
|
+
|
|
19
|
+
securityGroupIngress:
|
|
20
|
+
ipv4:
|
|
21
|
+
- 172.31.0.0/16
|
|
22
|
+
|
|
23
|
+
subnetIds:
|
|
24
|
+
- subnet-12312312421
|
|
25
|
+
- subnet-12312321412
|
|
26
|
+
|
|
27
|
+
vpcId: vpc-12321421412
|
|
28
|
+
|
|
29
|
+
# Omit explicit blockPublicAccess on S3 buckets; managed externally via
|
|
30
|
+
# AWS account-level settings and/or SCPs.
|
|
31
|
+
publicAccessBlockManagedExternally: true
|
package/mdaa.config.json
DELETED