@rio-cloud/cdk-v2-constructs 8.8.1-alpha.2 → 8.8.1-alpha.3
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.
|
@@ -182,7 +182,7 @@ exports.SbomCatalogProject = SbomCatalogProject;
|
|
|
182
182
|
_b = JSII_RTTI_SYMBOL_1;
|
|
183
183
|
SbomCatalogProject[_b] = { fqn: "@rio-cloud/cdk-v2-constructs.SbomCatalogProject", version: "0.0.0" };
|
|
184
184
|
function createVulnerabilityMonitor(props) {
|
|
185
|
-
new datadogv2.DatadogMonitor(props.scope, `${props.projectName}VulnerabilityMonitor`, {
|
|
185
|
+
const monitor = new datadogv2.DatadogMonitor(props.scope, `${props.projectName}VulnerabilityMonitor`, {
|
|
186
186
|
name: `${props.accountName} VulnerabilityMonitor`,
|
|
187
187
|
serviceName: props.projectName,
|
|
188
188
|
monitorType: datadogv2.DatadogMonitorQueryAlertType.METRIC_ALERT,
|
|
@@ -204,10 +204,13 @@ function createVulnerabilityMonitor(props) {
|
|
|
204
204
|
thresholds: {
|
|
205
205
|
critical: 0,
|
|
206
206
|
},
|
|
207
|
-
|
|
207
|
+
onMissingData: datadogv2.MonitorOnMissingData.DEFAULT,
|
|
208
208
|
requireFullWindow: false,
|
|
209
209
|
},
|
|
210
210
|
});
|
|
211
|
+
// `on_missing_data` replaces the legacy no-data options and keeps the last known status for gauge metrics.
|
|
212
|
+
const monitorResource = monitor.node.findChild('Monitor');
|
|
213
|
+
monitorResource.addDeletionOverride('Properties.Options.NotifyNoData');
|
|
211
214
|
}
|
|
212
215
|
function createUploadResources(scope, configuration, sourceAssets) {
|
|
213
216
|
const stack = aws_cdk_lib_1.Stack.of(scope);
|
|
@@ -350,4 +353,4 @@ function parseTagsWithValidUniqueKeys(tags, propertyName, allowManagedTags = fal
|
|
|
350
353
|
function optionalTags(tags) {
|
|
351
354
|
return tags === undefined ? {} : { tags };
|
|
352
355
|
}
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nib20tY2F0YWxvZy9jYXRhbG9nLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBcUQ7QUFDckQsaURBQWlEO0FBQ2pELGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUU3QywyQ0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDRDQUFvRDtBQUNwRCwwQ0FBMEM7QUFDMUMsMERBQXFEO0FBQ3JELDJDQUFzRDtBQVF0RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLE1BQU0sb0JBQW9CLEdBQUcsc0NBQXNDLENBQUM7QUFDcEUsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNwRCxNQUFNLG1CQUFtQixHQUFHLDJCQUEyQixDQUFDO0FBRXhEOzs7O0dBSUc7QUFDSCxJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDdkIsOEJBQWEsQ0FBQTtJQUNiLDRDQUEyQixDQUFBO0lBQzNCLDRDQUEyQixDQUFBO0lBQzNCLDhDQUE2QixDQUFBO0FBQy9CLENBQUMsRUFMVyxhQUFhLDZCQUFiLGFBQWEsUUFLeEI7QUE0SEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsc0JBQVM7SUFDekQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QztRQUNoRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksZUFBZSxD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Q3pDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsWUFBWSxrQ0FBa0MsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVksZ0NBQWdDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBZTtJQUNuQyxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIGV2ZW50c1RhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczNBc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBERUZBVUxUX05PREVfUlVOVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgKiBhcyBkYXRhZG9ndjIgZnJvbSAnLi4vZGF0YWRvZ3YyJztcbmltcG9ydCB7IFJpb0xhbmRpbmdab25lIH0gZnJvbSAnLi4vcmlvLWxhbmRpbmctem9uZSc7XG5pbXBvcnQgeyBTQk9NX0NBVEFMT0dfQlVDS0VUX0FSTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQXNzZXRMb2NhdGlvbixcbiAgQ2F0YWxvZ1VwbG9hZENvbmZpZ3VyYXRpb24sXG4gIFN0YW5kYWxvbmVVcGxvYWRDb25maWd1cmF0aW9uLFxuICBVcGxvYWRDb25maWd1cmF0aW9uLFxufSBmcm9tICcuL2xhbWJkYS90eXBlcyc7XG5cbmNvbnN0IERFRkFVTFRfVkVSU0lPTiA9ICdtYWluJztcbmNvbnN0IE1BWF9DSElMRFJFTiA9IDM7XG5jb25zdCBNQU5BR0VEX1RBR19LRVlTID0gbmV3IFNldChbJ2FjY291bnRfaWQnLCAndGVhbV9pZGVudGlmaWVyJywgJ2xpY2Vuc2VfcG9saWN5J10pO1xuY29uc3QgVVBMT0FEX0ZVTkNUSU9OX1VVSUQgPSAnZDIwYjlmNDYtMDcwMi00N2RkLTg5YzItOWVhNGJkZGFhY2ZjJztcbmNvbnN0IFVQTE9BRF9GVU5DVElPTl9QVVJQT1NFID0gJ1Nib21DYXRhbG9nVXBsb2FkJztcbmNvbnN0IFVQTE9BRF9MT0dfR1JPVVBfSUQgPSAnU2JvbUNhdGFsb2dVcGxvYWRMb2dHcm91cCc7XG5cbi8qKlxuICogRW51bSB0byBzcGVjaWZ5IHdoaWNoIGxpY2Vuc2UgcG9saWN5IHNob3VsZCBhcHBsaWVkLlxuICpcbiAqIEBiZXRhXG4gKi9cbmV4cG9ydCBlbnVtIExpY2Vuc2VQb2xpY3kge1xuICBOT05FID0gJ25vbmUnLFxuICBKVk1fQkFDS0VORCA9ICdqdm0tYmFja2VuZCcsXG4gIE5QTV9CQUNLRU5EID0gJ25wbS1iYWNrZW5kJyxcbiAgTlBNX0ZST05URU5EID0gJ25wbS1mcm9udGVuZCcsXG59XG5cbi8qKlxuICogTm90aWZpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIGFuIFNCT00gY2F0YWxvZyB2dWxuZXJhYmlsaXR5IG1vbml0b3IuXG4gKlxuICogQGJldGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYm9tQ2F0YWxvZ1Z1bG5lcmFiaWxpdHlNb25pdG9yUHJvcHMge1xuICAvKiogTm90aWZpY2F0aW9uIHNlbnQgd2hlbiB0aGUgdnVsbmVyYWJpbGl0eSBtb25pdG9yIGNoYW5nZXMgc3RhdGUuICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbjogZGF0YWRvZ3YyLklOb3RpZmljYXRpb247XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3Ige0BsaW5rIFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3R9LlxuICpcbiAqIEBiZXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhbG9uZVNib21DYXRhbG9nUHJvamVjdFByb3BzIHtcbiAgLyoqIE11c3QgYmUgbm9uLWVtcHR5IGFuZCBtdXN0IG5vdCBjb250YWluIGAvYC4gKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBQcm9qZWN0IHZlcnNpb24uIERlZmF1bHRzIHRvIGBtYWluYC4gKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwcm9qZWN0IHRhZ3MgdXNpbmcgdGhlIGBrZXk6dmFsdWVgIGZvcm1hdC5cbiAgICpcbiAgICogYHRlYW1faWRlbnRpZmllcmAgaXMgYWx3YXlzIGFkZGVkIGZyb20gdGhlIFJJTyBMYW5kaW5nIFpvbmUgY29uZmlndXJhdGlvbi4gRG8gbm90IHByb3ZpZGUgYHRlYW1faWRlbnRpZmllcmAgb3JcbiAgICogYGFjY291bnRfaWRgOyBib3RoIGFyZSBtYW5hZ2VkIHRhZyBrZXlzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKiogSlNPTiBTQk9NIGZpbGUgYXNzZXQgdG8gdXBsb2FkLiAqL1xuICByZWFkb25seSBzYm9tOiBzM0Fzc2V0cy5Bc3NldDtcblxuICAvKiogT3B0aW9uYWwgSlNPTiBWRVggZmlsZSBhc3NldCB0byB1cGxvYWQuICovXG4gIHJlYWRvbmx5IHZleD86IHMzQXNzZXRzLkFzc2V0O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB2dWxuZXJhYmlsaXR5IG1vbml0b3IgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogV2hlbiBvbWl0dGVkLCB0aGUgbW9uaXRvciB1c2VzIHtAbGluayBkYXRhZG9ndjIuRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9ufS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBBIHZ1bG5lcmFiaWxpdHkgbW9uaXRvciB1c2luZyB7QGxpbmsgZGF0YWRvZ3YyLkRlZmF1bHRTbGFja05vdGlmaWNhdGlvbn1cbiAgICovXG4gIHJlYWRvbmx5IHZ1bG5lcmFiaWxpdHlNb25pdG9yUHJvcHM/OiBTYm9tQ2F0YWxvZ1Z1bG5lcmFiaWxpdHlNb25pdG9yUHJvcHM7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWFuZGF0b3J5IGxpY2Vuc2UgcG9saWN5IHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBwcm9qZWN0LlxuICAgKlxuICAgKiBVc2UgYExpY2Vuc2VQb2xpY3kuTk9ORWAgaW4gZXhjZXB0aW9uYWwgY2FzZXMgb25seSFcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VQb2xpY3k6IExpY2Vuc2VQb2xpY3k7XG59XG5cbi8qKlxuICogQSBjaGlsZCBwcm9qZWN0IGluIGFuIFNCT00gY2F0YWxvZyBjb2xsZWN0aW9uLlxuICpcbiAqIEBiZXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2JvbUNhdGFsb2dQcm9qZWN0Q2hpbGQge1xuICAvKipcbiAgICogTXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbGxlY3Rpb24sIGFuZCBtdXN0IG5vdCBjb250YWluIGAvYC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKiogQ2hpbGQgcHJvamVjdCB2ZXJzaW9uLiBEZWZhdWx0cyB0byBgbWFpbmAuICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgYWRkZWQgdG8gdGhpcyBjaGlsZCwgdXNpbmcgdGhlIGBrZXk6dmFsdWVgIGZvcm1hdC5cbiAgICpcbiAgICogQ2hpbGQgdGFncyBvdmVycmlkZSBzaGFyZWQgdGFncyB3aXRoIHRoZSBzYW1lIGtleS4gYHRlYW1faWRlbnRpZmllcmAgaXMgYWx3YXlzIGluaGVyaXRlZCBmcm9tIHRoZSBSSU8gTGFuZGluZyBab25lXG4gICAqIGNvbmZpZ3VyYXRpb24uIERvIG5vdCBwcm92aWRlIGB0ZWFtX2lkZW50aWZpZXJgIG9yIGBhY2NvdW50X2lkYDsgYm90aCBhcmUgbWFuYWdlZCB0YWcga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIEpTT04gU0JPTSBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgc2JvbTogczNBc3NldHMuQXNzZXQ7XG5cbiAgLyoqIE9wdGlvbmFsIEpTT04gVkVYIGZpbGUgYXNzZXQgdG8gdXBsb2FkLiAqL1xuICByZWFkb25seSB2ZXg/OiBzM0Fzc2V0cy5Bc3NldDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYW5kYXRvcnkgbGljZW5zZSBwb2xpY3kgdG8gYmUgYXBwbGllZCB0byB0aGlzIHByb2plY3QuXG4gICAqXG4gICAqIFVzZSBgTGljZW5zZVBvbGljeS5OT05FYCBpbiBleGNlcHRpb25hbCBjYXNlcyBvbmx5IVxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZVBvbGljeTogTGljZW5zZVBvbGljeTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB7QGxpbmsgU2JvbUNhdGFsb2dQcm9qZWN0fS5cbiAqXG4gKiBAYmV0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNib21DYXRhbG9nUHJvamVjdFByb3BzIHtcbiAgLyoqIENvbGxlY3Rpb24gbmFtZSBzdG9yZWQgaW4gdGhlIG1hbmlmZXN0IGFuZCB1c2VkIGluIHRoZSBkZXN0aW5hdGlvbiBrZXkuICovXG4gIHJlYWRvbmx5IGNvbGxlY3Rpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqIENvbGxlY3Rpb24gdmVyc2lvbi4gRGVmYXVsdHMgdG8gYG1haW5gLiAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyBpbmhlcml0ZWQgYnkgZXZlcnkgY2hpbGQsIHVzaW5nIHRoZSBga2V5OnZhbHVlYCBmb3JtYXQuXG4gICAqXG4gICAqIEEgY2hpbGQncyBhZGRpdGlvbmFsIHRhZ3Mgb3ZlcnJpZGUgc2hhcmVkIHRhZ3Mgd2l0aCB0aGUgc2FtZSBrZXkuIGB0ZWFtX2lkZW50aWZpZXJgIGlzIGFsd2F5cyBhZGRlZCBmcm9tIHRoZSBSSU9cbiAgICogTGFuZGluZyBab25lIGNvbmZpZ3VyYXRpb24uIERvIG5vdCBwcm92aWRlIGB0ZWFtX2lkZW50aWZpZXJgIG9yIGBhY2NvdW50X2lkYDsgYm90aCBhcmUgbWFuYWdlZCB0YWcga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZFRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKiogQ2hpbGQgY2F0YWxvZyBwcm9qZWN0cy4gTXVzdCBjb250YWluIGJldHdlZW4gb25lIGFuZCB0aHJlZSBwcm9qZWN0cy4gKi9cbiAgcmVhZG9ubHkgY2hpbGRyZW46IFNib21DYXRhbG9nUHJvamVjdENoaWxkW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHZ1bG5lcmFiaWxpdHkgbW9uaXRvciBjb25maWd1cmF0aW9uIHNoYXJlZCBieSBhbGwgY2hpbGQgbW9uaXRvcnMuXG4gICAqXG4gICAqIFdoZW4gb21pdHRlZCwgdGhlIG1vbml0b3JzIHVzZSB7QGxpbmsgZGF0YWRvZ3YyLkRlZmF1bHRTbGFja05vdGlmaWNhdGlvbn0uXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgVnVsbmVyYWJpbGl0eSBtb25pdG9ycyB1c2luZyB7QGxpbmsgZGF0YWRvZ3YyLkRlZmF1bHRTbGFja05vdGlmaWNhdGlvbn1cbiAgICovXG4gIHJlYWRvbmx5IHZ1bG5lcmFiaWxpdHlNb25pdG9yUHJvcHM/OiBTYm9tQ2F0YWxvZ1Z1bG5lcmFiaWxpdHlNb25pdG9yUHJvcHM7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIG9uZSBwcm9qZWN0J3MgU0JPTSBhbmQgb3B0aW9uYWwgVkVYIGluIHRoZSBjZW50cmFsIFNCT00gY2F0YWxvZy5cbiAqXG4gKiBVc2UgdGhpcyBjb25zdHJ1Y3Qgd2hlbiBhIHN0YWNrIG93bnMgb25lIGluZGVwZW5kZW50bHkgdmVyc2lvbmVkIHByb2plY3QuIFRoZSBmaWxlcyBhcmUgdXBsb2FkZWQgYWZ0ZXIgdGhlIHN0YWNrXG4gKiByZWFjaGVzIGBDUkVBVEVfQ09NUExFVEVgIG9yIGBVUERBVEVfQ09NUExFVEVgLiBUaGUgRXZlbnRCcmlkZ2UgZXZlbnQgdGltZSBhbmQgSUQgaWRlbnRpZnkgdGhlIHVwbG9hZC5cbiAqXG4gKiBUaGUgY29uc3RydWN0IGF1dG9tYXRpY2FsbHkgYWRkcyB0aGUgUklPIExhbmRpbmcgWm9uZSBgdGVhbV9pZGVudGlmaWVyYCB0YWcgYW5kIGdyYW50cyB0aGUgZ2VuZXJhdGVkIHVwbG9hZCBMYW1iZGFcbiAqIHBlcm1pc3Npb24gdG8gcmVhZCB0aGUgc291cmNlIGFzc2V0cyBhbmQgd3JpdGUgdGhlbSB0byB0aGUgY2VudHJhbCBjYXRhbG9nIGJ1Y2tldC4gQWxsIFNCT00gY2F0YWxvZyBjb25zdHJ1Y3RzIGluXG4gKiB0aGUgc2FtZSBzdGFjayByZXVzZSBvbmUgdXBsb2FkIExhbWJkYS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHNcbiAqIGNvbnN0IHNib20gPSBuZXcgczNBc3NldHMuQXNzZXQodGhpcywgJ1Nib21Bc3NldCcsIHtcbiAqICAgcGF0aDogJ2J1aWxkL3Nib20uanNvbicsXG4gKiB9KTtcbiAqIGNvbnN0IHZleCA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnVmV4QXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC92ZXguanNvbicsXG4gKiB9KTtcbiAqXG4gKiBuZXcgU3RhbmRhbG9uZVNib21DYXRhbG9nUHJvamVjdCh0aGlzLCAnQ2F0YWxvZ1VwbG9hZCcsIHtcbiAqICAgbmFtZTogJ2JpbGxpbmctYXBpJyxcbiAqICAgdmVyc2lvbjogJzEuNC4wJyxcbiAqICAgYWRkaXRpb25hbFRhZ3M6IFsnY29tcG9uZW50OmJhY2tlbmQnXSxcbiAqICAgc2JvbSxcbiAqICAgdmV4LFxuICogICB2dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzOiB7XG4gKiAgICAgbm90aWZpY2F0aW9uOiBuZXcgZGF0YWRvZ3YyLkRlZmF1bHRTbGFja05vdGlmaWNhdGlvbigpLFxuICogICB9LFxuICogICBsaWNlbnNlUG9saWN5OiBsaWNlbnNlUG9saWN5LkpWTV9CQUNLRU5ELFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAYmV0YVxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhbG9uZVNib21DYXRhbG9nUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFuZGFsb25lU2JvbUNhdGFsb2dQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHByb3BzLnZlcnNpb24gPz8gREVGQVVMVF9WRVJTSU9OO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbUlkZW50aWZpZXJQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGFncyA9XG4gICAgICBtZXJnZVRhZ3MoXG4gICAgICAgIGFkZExpY2Vuc2VQb2xpY3lUYWdJZlJlcXVpcmVkKFtgdGVhbV9pZGVudGlmaWVyOiR7dGVhbUlkZW50aWZpZXJ9YF0sIHByb3BzLmxpY2Vuc2VQb2xpY3kpLFxuICAgICAgICBwcm9wcy5hZGRpdGlvbmFsVGFnc1xuICAgICAgKSA/PyBbXTtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ25hbWUnLCBwcm9wcy5uYW1lKTtcbiAgICBhc3NlcnROb25FbXB0eVZlcnNpb24oJ3ZlcnNpb24nLCB2ZXJzaW9uKTtcbiAgICBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKHByb3BzLmFkZGl0aW9uYWxUYWdzID8/IFtdLCAnYWRkaXRpb25hbFRhZ3MnKTtcblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogU3RhbmRhbG9uZVVwbG9hZENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBvcmlnaW5BY2NvdW50SWQ6IHN0YWNrLmFjY291bnQsXG4gICAgICBvcmlnaW5BY2NvdW50TmFtZTogUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWUsXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHRhZ3MsXG4gICAgICBzYm9tOiBhc3NldExvY2F0aW9uKHByb3BzLnNib20pLFxuICAgICAgLi4uKHByb3BzLnZleCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHZleDogYXNzZXRMb2NhdGlvbihwcm9wcy52ZXgpIH0pLFxuICAgIH07XG5cbiAgICBjcmVhdGVVcGxvYWRSZXNvdXJjZXModGhpcywgY29uZmlndXJhdGlvbiwgW3Byb3BzLnNib20sIC4uLihwcm9wcy52ZXggPT09IHVuZGVmaW5lZCA/IFtdIDogW3Byb3BzLnZleF0pXSk7XG4gICAgY3JlYXRlVnVsbmVyYWJpbGl0eU1vbml0b3Ioe1xuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICBwcm9qZWN0TmFtZTogcHJvcHMubmFtZSxcbiAgICAgIGFjY291bnROYW1lOiBjb25maWd1cmF0aW9uLm9yaWdpbkFjY291bnROYW1lLFxuICAgICAgbm90aWZpY2F0aW9uOiBwcm9wcy52dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzPy5ub3RpZmljYXRpb24gPz8gbmV3IGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGNvbGxlY3Rpb24gb2YgcmVsYXRlZCBwcm9qZWN0IFNCT01zIGFuZCBvcHRpb25hbCBWRVggZmlsZXMgaW4gdGhlIGNlbnRyYWwgU0JPTSBjYXRhbG9nLlxuICpcbiAqIFVzZSB0aGlzIGNvbnN0cnVjdCB3aGVuIG9uZSBzdGFjayBwcm9kdWNlcyBiZXR3ZWVuIG9uZSBhbmQgdGhyZWUgcmVsYXRlZCBwcm9qZWN0cyB0aGF0IHNob3VsZCBzaGFyZSBhIGNhdGFsb2dcbiAqIGNvbGxlY3Rpb24uIFNoYXJlZCB0YWdzIGFyZSBpbmhlcml0ZWQgYnkgZXZlcnkgY2hpbGQsIHdoaWxlIGNoaWxkIHRhZ3Mgd2l0aCB0aGUgc2FtZSBrZXkgb3ZlcnJpZGUgdGhlbS4gVGhlIFJJT1xuICogTGFuZGluZyBab25lIGB0ZWFtX2lkZW50aWZpZXJgIHRhZyBpcyBhbHdheXMgaW5jbHVkZWQuXG4gKlxuICogVGhlIGZpbGVzIGFyZSB1cGxvYWRlZCBhZnRlciB0aGUgc3RhY2sgcmVhY2hlcyBgQ1JFQVRFX0NPTVBMRVRFYCBvciBgVVBEQVRFX0NPTVBMRVRFYC4gVGhlIEV2ZW50QnJpZGdlIGV2ZW50IHRpbWVcbiAqIGFuZCBJRCBpZGVudGlmeSB0aGUgdXBsb2FkLiBBbGwgU0JPTSBjYXRhbG9nIGNvbnN0cnVjdHMgaW4gdGhlIHNhbWUgc3RhY2sgcmV1c2Ugb25lIHVwbG9hZCBMYW1iZGEuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHRzXG4gKiBjb25zdCBhcGlTYm9tID0gbmV3IHMzQXNzZXRzLkFzc2V0KHRoaXMsICdBcGlTYm9tQXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC9hcGktc2JvbS5qc29uJyxcbiAqIH0pO1xuICogY29uc3QgaW5mcmFzdHJ1Y3R1cmVTYm9tID0gbmV3IHMzQXNzZXRzLkFzc2V0KHRoaXMsICdJbmZyYXN0cnVjdHVyZVNib21Bc3NldCcsIHtcbiAqICAgcGF0aDogJ2J1aWxkL2luZnJhc3RydWN0dXJlLXNib20uanNvbicsXG4gKiB9KTtcbiAqXG4gKiBuZXcgU2JvbUNhdGFsb2dQcm9qZWN0KHRoaXMsICdDYXRhbG9nVXBsb2FkJywge1xuICogICBjb2xsZWN0aW9uTmFtZTogJ2JpbGxpbmcnLFxuICogICBjb2xsZWN0aW9uVmVyc2lvbjogJzEuNC4wJyxcbiAqICAgc2hhcmVkVGFnczogWydkb21haW46YmlsbGluZyddLFxuICogICBjaGlsZHJlbjogW1xuICogICAgIHtcbiAqICAgICAgIG5hbWU6ICdhcGknLFxuICogICAgICAgc2JvbTogYXBpU2JvbSxcbiAqICAgICAgIGFkZGl0aW9uYWxUYWdzOiBbJ2NvbXBvbmVudDpiYWNrZW5kJ10sXG4gKiAgICAgICBsaWNlbnNlUG9saWN5OiBMaWNlbnNlUG9saWN5LkpWTV9CQUNLRU5ELFxuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgbmFtZTogJ2luZnJhc3RydWN0dXJlJyxcbiAqICAgICAgIHNib206IGluZnJhc3RydWN0dXJlU2JvbSxcbiAqICAgICAgIGFkZGl0aW9uYWxUYWdzOiBbJ2NvbXBvbmVudDppbmZyYXN0cnVjdHVyZSddLFxuICogKiAgICAgICBsaWNlbnNlUG9saWN5OiBMaWNlbnNlUG9saWN5Lk5QTV9CQUNLRU5ELFxuICogICAgIH0sXG4gKiAgIF0sXG4gKiAgIHZ1bG5lcmFiaWxpdHlNb25pdG9yUHJvcHM6IHtcbiAqICAgICBub3RpZmljYXRpb246IG5ldyBkYXRhZG9ndjIuRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9uKCksXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBiZXRhXG4gKi9cbmV4cG9ydCBjbGFzcyBTYm9tQ2F0YWxvZ1Byb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2JvbUNhdGFsb2dQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY29sbGVjdGlvblZlcnNpb24gPSBwcm9wcy5jb2xsZWN0aW9uVmVyc2lvbiA/PyBERUZBVUxUX1ZFUlNJT047XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ2NvbGxlY3Rpb25OYW1lJywgcHJvcHMuY29sbGVjdGlvbk5hbWUpO1xuICAgIGFzc2VydE5vbkVtcHR5VmVyc2lvbignY29sbGVjdGlvblZlcnNpb24nLCBjb2xsZWN0aW9uVmVyc2lvbik7XG4gICAgdmFsaWRhdGVDaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7XG4gICAgcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhwcm9wcy5zaGFyZWRUYWdzID8/IFtdLCAnc2hhcmVkVGFncycpO1xuICAgIGNvbnN0IHNoYXJlZFRhZ3MgPSBtZXJnZVRhZ3MoW2B0ZWFtX2lkZW50aWZpZXI6JHt0ZWFtSWRlbnRpZmllcn1gXSwgcHJvcHMuc2hhcmVkVGFncykgPz8gW107XG5cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IENhdGFsb2dVcGxvYWRDb25maWd1cmF0aW9uID0ge1xuICAgICAgb3JpZ2luQWNjb3VudElkOiBzdGFjay5hY2NvdW50LFxuICAgICAgb3JpZ2luQWNjb3VudE5hbWU6IFJpb0xhbmRpbmdab25lLmdldEFjY291bnROYW1lUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlLFxuICAgICAgY29sbGVjdGlvbk5hbWU6IHByb3BzLmNvbGxlY3Rpb25OYW1lLFxuICAgICAgY29sbGVjdGlvblZlcnNpb24sXG4gICAgICB0YWdzOiBbYHRlYW1faWRlbnRpZmllcjoke3RlYW1JZGVudGlmaWVyfWBdLFxuICAgICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgICBuYW1lOiBjaGlsZC5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBjaGlsZC52ZXJzaW9uID8/IERFRkFVTFRfVkVSU0lPTixcbiAgICAgICAgLi4ub3B0aW9uYWxUYWdzKFxuICAgICAgICAgIG1lcmdlVGFncyhhZGRMaWNlbnNlUG9saWN5VGFnSWZSZXF1aXJlZChzaGFyZWRUYWdzLCBjaGlsZC5saWNlbnNlUG9saWN5KSwgY2hpbGQuYWRkaXRpb25hbFRhZ3MpXG4gICAgICAgICksXG4gICAgICAgIHNib206IGFzc2V0TG9jYXRpb24oY2hpbGQuc2JvbSksXG4gICAgICAgIC4uLihjaGlsZC52ZXggPT09IHVuZGVmaW5lZCA/IHt9IDogeyB2ZXg6IGFzc2V0TG9jYXRpb24oY2hpbGQudmV4KSB9KSxcbiAgICAgIH0pKSxcbiAgICB9O1xuXG4gICAgY3JlYXRlVXBsb2FkUmVzb3VyY2VzKFxuICAgICAgdGhpcyxcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBwcm9wcy5jaGlsZHJlbi5mbGF0TWFwKGNoaWxkID0+IFtjaGlsZC5zYm9tLCAuLi4oY2hpbGQudmV4ID09PSB1bmRlZmluZWQgPyBbXSA6IFtjaGlsZC52ZXhdKV0pXG4gICAgKTtcblxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHByb3BzLnZ1bG5lcmFiaWxpdHlNb25pdG9yUHJvcHM/Lm5vdGlmaWNhdGlvbiA/PyBuZXcgZGF0YWRvZ3YyLkRlZmF1bHRTbGFja05vdGlmaWNhdGlvbigpO1xuICAgIHByb3BzLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT5cbiAgICAgIGNyZWF0ZVZ1bG5lcmFiaWxpdHlNb25pdG9yKHtcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICAgIHByb2plY3ROYW1lOiBjaGlsZC5uYW1lLFxuICAgICAgICBhY2NvdW50TmFtZTogY29uZmlndXJhdGlvbi5vcmlnaW5BY2NvdW50TmFtZSxcbiAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG5cbmludGVyZmFjZSBDcmVhdGVWdWxuZXJhYmlsaXR5TW9uaXRvclByb3BzIHtcbiAgcmVhZG9ubHkgc2NvcGU6IENvbnN0cnVjdDtcbiAgcmVhZG9ubHkgcHJvamVjdE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uOiBkYXRhZG9ndjIuSU5vdGlmaWNhdGlvbjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVnVsbmVyYWJpbGl0eU1vbml0b3IocHJvcHM6IENyZWF0ZVZ1bG5lcmFiaWxpdHlNb25pdG9yUHJvcHMpOiB2b2lkIHtcbiAgbmV3IGRhdGFkb2d2Mi5EYXRhZG9nTW9uaXRvcihwcm9wcy5zY29wZSwgYCR7cHJvcHMucHJvamVjdE5hbWV9VnVsbmVyYWJpbGl0eU1vbml0b3JgLCB7XG4gICAgbmFtZTogYCR7cHJvcHMuYWNjb3VudE5hbWV9IFZ1bG5lcmFiaWxpdHlNb25pdG9yYCxcbiAgICBzZXJ2aWNlTmFtZTogcHJvcHMucHJvamVjdE5hbWUsXG4gICAgbW9uaXRvclR5cGU6IGRhdGFkb2d2Mi5EYXRhZG9nTW9uaXRvclF1ZXJ5QWxlcnRUeXBlLk1FVFJJQ19BTEVSVCxcbiAgICBxdWVyeTogYG1heChsYXN0XzE1bSk6bWF4OnNlcnZpY2UudnVsbmVyYWJpbGl0aWVze3Byb2plY3RfbmFtZToke3Byb3BzLnByb2plY3ROYW1lfX0gPiAwYCxcbiAgICBsb3dlcmNhc2VRdWVyeTogdHJ1ZSxcbiAgICBtZXNzYWdlOiBbXG4gICAgICAne3sjaXNfYWxlcnR9fScsXG4gICAgICBgUHJvamVjdCAke3Byb3BzLnByb2plY3ROYW1lfSBoYXMge3t2YWx1ZX19IGtub3duIHZ1bG5lcmFiaWxpdGllcy5gLFxuICAgICAgJ3t7L2lzX2FsZXJ0fX0nLFxuICAgICAgJycsXG4gICAgICAne3sjaXNfcmVjb3Zlcnl9fScsXG4gICAgICBgUHJvamVjdCAke3Byb3BzLnByb2plY3ROYW1lfSBubyBsb25nZXIgcmVwb3J0cyB2dWxuZXJhYmlsaXRpZXMuYCxcbiAgICAgICd7ey9pc19yZWNvdmVyeX19JyxcbiAgICBdLmpvaW4oJ1xcbicpLFxuICAgIG5vdGlmaWNhdGlvbjogcHJvcHMubm90aWZpY2F0aW9uLFxuICAgIHByaW9yaXR5OiAzLFxuICAgIGV4dHJhVGFnczogWydtb25pdG9yX3R5cGU6dnVsbmVyYWJpbGl0eSddLFxuICAgIG9wdGlvbk92ZXJyaWRlczoge1xuICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICBjcml0aWNhbDogMCxcbiAgICAgIH0sXG4gICAgICBub3RpZnlOb0RhdGE6IGZhbHNlLFxuICAgICAgcmVxdWlyZUZ1bGxXaW5kb3c6IGZhbHNlLFxuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVVcGxvYWRSZXNvdXJjZXMoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGNvbmZpZ3VyYXRpb246IFVwbG9hZENvbmZpZ3VyYXRpb24sXG4gIHNvdXJjZUFzc2V0czogczNBc3NldHMuQXNzZXRbXVxuKTogdm9pZCB7XG4gIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gIGNvbnN0IHVwbG9hZEZ1bmN0aW9uID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbihzY29wZSwgJ1VwbG9hZEZ1bmN0aW9uJywge1xuICAgIHV1aWQ6IFVQTE9BRF9GVU5DVElPTl9VVUlELFxuICAgIGxhbWJkYVB1cnBvc2U6IFVQTE9BRF9GVU5DVElPTl9QVVJQT1NFLFxuICAgIHJ1bnRpbWU6IERFRkFVTFRfTk9ERV9SVU5USU1FLFxuICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgaGFuZGxlcjogJ2hhbmRsZXIuaGFuZGxlcicsXG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdsYW1iZGEnKSwge1xuICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgIH0pLFxuICAgIGxvZ2dpbmdGb3JtYXQ6IGxhbWJkYS5Mb2dnaW5nRm9ybWF0LkpTT04sXG4gICAgbG9nR3JvdXA6IGdldE9yQ3JlYXRlVXBsb2FkTG9nR3JvdXAoc3RhY2spLFxuICAgIGluaXRpYWxQb2xpY3k6IFtcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzMzpQdXRPYmplY3QnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYCR7U0JPTV9DQVRBTE9HX0JVQ0tFVF9BUk59LypgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgbWVtb3J5U2l6ZTogMjU2LFxuICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gIH0pO1xuXG4gIGZvciAoY29uc3QgYXNzZXQgb2Ygc291cmNlQXNzZXRzKSB7XG4gICAgYXNzZXQuZ3JhbnRSZWFkKHVwbG9hZEZ1bmN0aW9uKTtcbiAgfVxuXG4gIG5ldyBldmVudHMuUnVsZShzY29wZSwgJ1N0YWNrQ29tcGxldGlvblJ1bGUnLCB7XG4gICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICBzb3VyY2U6IFsnYXdzLmNsb3VkZm9ybWF0aW9uJ10sXG4gICAgICBkZXRhaWxUeXBlOiBbJ0Nsb3VkRm9ybWF0aW9uIFN0YWNrIFN0YXR1cyBDaGFuZ2UnXSxcbiAgICAgIGRldGFpbDoge1xuICAgICAgICAnc3RhY2staWQnOiBbc3RhY2suc3RhY2tJZF0sXG4gICAgICAgICdzdGF0dXMtZGV0YWlscyc6IHtcbiAgICAgICAgICBzdGF0dXM6IFsnQ1JFQVRFX0NPTVBMRVRFJywgJ1VQREFURV9DT01QTEVURSddLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHRhcmdldHM6IFtcbiAgICAgIG5ldyBldmVudHNUYXJnZXRzLkxhbWJkYUZ1bmN0aW9uKHVwbG9hZEZ1bmN0aW9uLCB7XG4gICAgICAgIGV2ZW50OiBldmVudHMuUnVsZVRhcmdldElucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgIGV2ZW50SWQ6IGV2ZW50cy5FdmVudEZpZWxkLmV2ZW50SWQsXG4gICAgICAgICAgZXZlbnRUaW1lOiBldmVudHMuRXZlbnRGaWVsZC5mcm9tUGF0aCgnJC50aW1lJyksXG4gICAgICAgICAgc3RhY2tJZDogZXZlbnRzLkV2ZW50RmllbGQuZnJvbVBhdGgoJyQuZGV0YWlsLnN0YWNrLWlkJyksXG4gICAgICAgICAgc3RhY2tTdGF0dXM6IGV2ZW50cy5FdmVudEZpZWxkLmZyb21QYXRoKCckLmRldGFpbC5zdGF0dXMtZGV0YWlscy5zdGF0dXMnKSxcbiAgICAgICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRPckNyZWF0ZVVwbG9hZExvZ0dyb3VwKHN0YWNrOiBTdGFjayk6IGxvZ3MuTG9nR3JvdXAge1xuICBjb25zdCBleGlzdGluZ0xvZ0dyb3VwID0gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoVVBMT0FEX0xPR19HUk9VUF9JRCk7XG4gIGlmIChleGlzdGluZ0xvZ0dyb3VwIGluc3RhbmNlb2YgbG9ncy5Mb2dHcm91cCkge1xuICAgIHJldHVybiBleGlzdGluZ0xvZ0dyb3VwO1xuICB9XG4gIGlmIChleGlzdGluZ0xvZ0dyb3VwICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFN0YWNrIGFscmVhZHkgY29udGFpbnMgYSBjb25zdHJ1Y3QgbmFtZWQgJyR7VVBMT0FEX0xPR19HUk9VUF9JRH0nYCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBsb2dzLkxvZ0dyb3VwKHN0YWNrLCBVUExPQURfTE9HX0dST1VQX0lELCB7XG4gICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3NldExvY2F0aW9uKGFzc2V0OiBzM0Fzc2V0cy5Bc3NldCk6IEFzc2V0TG9jYXRpb24ge1xuICByZXR1cm4ge1xuICAgIGJ1Y2tldE5hbWU6IGFzc2V0LnMzQnVja2V0TmFtZSxcbiAgICBvYmplY3RLZXk6IGFzc2V0LnMzT2JqZWN0S2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh2YWx1ZS5sZW5ndGggPT09IDAgfHwgdmFsdWUuaW5jbHVkZXMoJy8nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbm9uLWVtcHR5IHZhbHVlIHdpdGhvdXQgJy8nYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHlWZXJzaW9uKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke25hbWV9IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVDaGlsZHJlbihjaGlsZHJlbjogU2JvbUNhdGFsb2dQcm9qZWN0Q2hpbGRbXSk6IHZvaWQge1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjaGlsZHJlbiBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHByb2plY3QnKTtcbiAgfVxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gTUFYX0NISUxEUkVOKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjaGlsZHJlbiBtdXN0IGNvbnRhaW4gYXQgbW9zdCAke01BWF9DSElMRFJFTn0gcHJvamVjdHNgKTtcbiAgfVxuXG4gIGNvbnN0IG5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ2NoaWxkIG5hbWUnLCBjaGlsZC5uYW1lKTtcbiAgICBpZiAoY2hpbGQudmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhc3NlcnROb25FbXB0eVZlcnNpb24oYHZlcnNpb24gZm9yIGNoaWxkICcke2NoaWxkLm5hbWV9J2AsIGNoaWxkLnZlcnNpb24pO1xuICAgIH1cbiAgICBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKGNoaWxkLmFkZGl0aW9uYWxUYWdzID8/IFtdLCBgYWRkaXRpb25hbFRhZ3MgZm9yIGNoaWxkICcke2NoaWxkLm5hbWV9J2ApO1xuICAgIGlmIChuYW1lcy5oYXMoY2hpbGQubmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2hpbGQgbmFtZSAnJHtjaGlsZC5uYW1lfScgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBjb2xsZWN0aW9uYCk7XG4gICAgfVxuICAgIG5hbWVzLmFkZChjaGlsZC5uYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZVRhZ3Moc2hhcmVkVGFncz86IHN0cmluZ1tdLCBhZGRpdGlvbmFsVGFncz86IHN0cmluZ1tdKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBpZiAoc2hhcmVkVGFncyA9PT0gdW5kZWZpbmVkICYmIGFkZGl0aW9uYWxUYWdzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3Qgc2hhcmVkID0gcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhzaGFyZWRUYWdzID8/IFtdLCAnc2hhcmVkVGFncycsIHRydWUpO1xuICBjb25zdCBhZGRpdGlvbmFsID0gcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhhZGRpdGlvbmFsVGFncyA/PyBbXSwgJ2FkZGl0aW9uYWxUYWdzJyk7XG4gIGNvbnN0IG1lcmdlZCA9IG5ldyBNYXAoc2hhcmVkKTtcbiAgZm9yIChjb25zdCBba2V5LCB0YWddIG9mIGFkZGl0aW9uYWwpIG1lcmdlZC5zZXQoa2V5LCB0YWcpO1xuICByZXR1cm4gWy4uLm1lcmdlZC52YWx1ZXMoKV07XG59XG5cbmZ1bmN0aW9uIGFkZExpY2Vuc2VQb2xpY3lUYWdJZlJlcXVpcmVkKHRhZ3M6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLCBwb2xpY3k6IExpY2Vuc2VQb2xpY3kpIHtcbiAgaWYgKHBvbGljeSAhPT0gTGljZW5zZVBvbGljeS5OT05FKSB7XG4gICAgcmV0dXJuIFsuLi4odGFncyA/PyBbXSksIGBsaWNlbnNlX3BvbGljeToke3BvbGljeX1gXTtcbiAgfVxuICByZXR1cm4gdGFncztcbn1cblxuZnVuY3Rpb24gcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhcbiAgdGFnczogc3RyaW5nW10sXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICBhbGxvd01hbmFnZWRUYWdzID0gZmFsc2Vcbik6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSB0YWcuaW5kZXhPZignOicpO1xuICAgIGlmIChzZXBhcmF0b3JJbmRleCA8PSAwIHx8IHNlcGFyYXRvckluZGV4ID09PSB0YWcubGVuZ3RoIC0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5TmFtZX0gdGFnICcke3RhZ30nIG11c3QgdXNlIHRoZSBmb3JtYXQga2V5OnZhbHVlIHdpdGggYSBub24tZW1wdHkga2V5IGFuZCB2YWx1ZWApO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IHRhZy5zbGljZSgwLCBzZXBhcmF0b3JJbmRleCk7XG4gICAgaWYgKE1BTkFHRURfVEFHX0tFWVMuaGFzKGtleSkgJiYgIWFsbG93TWFuYWdlZFRhZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwcm9wZXJ0eU5hbWV9IG11c3Qgbm90IHNldCBtYW5hZ2VkIHRhZyBrZXkgJyR7a2V5fSdgKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5oYXMoa2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5TmFtZX0gY29udGFpbnMgZHVwbGljYXRlIHRhZyBrZXkgJyR7a2V5fSdgKTtcbiAgICB9XG4gICAgcmVzdWx0LnNldChrZXksIHRhZyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gb3B0aW9uYWxUYWdzKHRhZ3M/OiBzdHJpbmdbXSk6IHsgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdIH0ge1xuICByZXR1cm4gdGFncyA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHRhZ3MgfTtcbn1cbiJdfQ==
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nib20tY2F0YWxvZy9jYXRhbG9nLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBa0U7QUFDbEUsaURBQWlEO0FBQ2pELGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUU3QywyQ0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDRDQUFvRDtBQUNwRCwwQ0FBMEM7QUFDMUMsMERBQXFEO0FBQ3JELDJDQUFzRDtBQVF0RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLE1BQU0sb0JBQW9CLEdBQUcsc0NBQXNDLENBQUM7QUFDcEUsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNwRCxNQUFNLG1CQUFtQixHQUFHLDJCQUEyQixDQUFDO0FBRXhEOzs7O0dBSUc7QUFDSCxJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDdkIsOEJBQWEsQ0FBQTtJQUNiLDRDQUEyQixDQUFBO0lBQzNCLDRDQUEyQixDQUFBO0lBQzNCLDhDQUE2QixDQUFBO0FBQy9CLENBQUMsRUFMVyxhQUFhLDZCQUFiLGFBQWEsUUFLeEI7QUE0SEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsc0JBQVM7SUFDekQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QztRQUNoRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksZUFBZSxD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LEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVksU0FBUyxHQUFHLGdFQUFnRSxDQUFDLENBQUM7UUFDL0csQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsWUFBWSxrQ0FBa0MsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVksZ0NBQWdDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBZTtJQUNuQyxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuUmVzb3VyY2UsIER1cmF0aW9uLCBTdGFjaywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyBldmVudHNUYXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHMzQXNzZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgREVGQVVMVF9OT0RFX1JVTlRJTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0ICogYXMgZGF0YWRvZ3YyIGZyb20gJy4uL2RhdGFkb2d2Mic7XG5pbXBvcnQgeyBSaW9MYW5kaW5nWm9uZSB9IGZyb20gJy4uL3Jpby1sYW5kaW5nLXpvbmUnO1xuaW1wb3J0IHsgU0JPTV9DQVRBTE9HX0JVQ0tFVF9BUk4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2V0TG9jYXRpb24sXG4gIENhdGFsb2dVcGxvYWRDb25maWd1cmF0aW9uLFxuICBTdGFuZGFsb25lVXBsb2FkQ29uZmlndXJhdGlvbixcbiAgVXBsb2FkQ29uZmlndXJhdGlvbixcbn0gZnJvbSAnLi9sYW1iZGEvdHlwZXMnO1xuXG5jb25zdCBERUZBVUxUX1ZFUlNJT04gPSAnbWFpbic7XG5jb25zdCBNQVhfQ0hJTERSRU4gPSAzO1xuY29uc3QgTUFOQUdFRF9UQUdfS0VZUyA9IG5ldyBTZXQoWydhY2NvdW50X2lkJywgJ3RlYW1faWRlbnRpZmllcicsICdsaWNlbnNlX3BvbGljeSddKTtcbmNvbnN0IFVQTE9BRF9GVU5DVElPTl9VVUlEID0gJ2QyMGI5ZjQ2LTA3MDItNDdkZC04OWMyLTllYTRiZGRhYWNmYyc7XG5jb25zdCBVUExPQURfRlVOQ1RJT05fUFVSUE9TRSA9ICdTYm9tQ2F0YWxvZ1VwbG9hZCc7XG5jb25zdCBVUExPQURfTE9HX0dST1VQX0lEID0gJ1Nib21DYXRhbG9nVXBsb2FkTG9nR3JvdXAnO1xuXG4vKipcbiAqIEVudW0gdG8gc3BlY2lmeSB3aGljaCBsaWNlbnNlIHBvbGljeSBzaG91bGQgYXBwbGllZC5cbiAqXG4gKiBAYmV0YVxuICovXG5leHBvcnQgZW51bSBMaWNlbnNlUG9saWN5IHtcbiAgTk9ORSA9ICdub25lJyxcbiAgSlZNX0JBQ0tFTkQgPSAnanZtLWJhY2tlbmQnLFxuICBOUE1fQkFDS0VORCA9ICducG0tYmFja2VuZCcsXG4gIE5QTV9GUk9OVEVORCA9ICducG0tZnJvbnRlbmQnLFxufVxuXG4vKipcbiAqIE5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciBhbiBTQk9NIGNhdGFsb2cgdnVsbmVyYWJpbGl0eSBtb25pdG9yLlxuICpcbiAqIEBiZXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2JvbUNhdGFsb2dWdWxuZXJhYmlsaXR5TW9uaXRvclByb3BzIHtcbiAgLyoqIE5vdGlmaWNhdGlvbiBzZW50IHdoZW4gdGhlIHZ1bG5lcmFiaWxpdHkgbW9uaXRvciBjaGFuZ2VzIHN0YXRlLiAqL1xuICByZWFkb25seSBub3RpZmljYXRpb246IGRhdGFkb2d2Mi5JTm90aWZpY2F0aW9uO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHtAbGluayBTdGFuZGFsb25lU2JvbUNhdGFsb2dQcm9qZWN0fS5cbiAqXG4gKiBAYmV0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3RQcm9wcyB7XG4gIC8qKiBNdXN0IGJlIG5vbi1lbXB0eSBhbmQgbXVzdCBub3QgY29udGFpbiBgL2AuICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKiogUHJvamVjdCB2ZXJzaW9uLiBEZWZhdWx0cyB0byBgbWFpbmAuICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcHJvamVjdCB0YWdzIHVzaW5nIHRoZSBga2V5OnZhbHVlYCBmb3JtYXQuXG4gICAqXG4gICAqIGB0ZWFtX2lkZW50aWZpZXJgIGlzIGFsd2F5cyBhZGRlZCBmcm9tIHRoZSBSSU8gTGFuZGluZyBab25lIGNvbmZpZ3VyYXRpb24uIERvIG5vdCBwcm92aWRlIGB0ZWFtX2lkZW50aWZpZXJgIG9yXG4gICAqIGBhY2NvdW50X2lkYDsgYm90aCBhcmUgbWFuYWdlZCB0YWcga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIEpTT04gU0JPTSBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgc2JvbTogczNBc3NldHMuQXNzZXQ7XG5cbiAgLyoqIE9wdGlvbmFsIEpTT04gVkVYIGZpbGUgYXNzZXQgdG8gdXBsb2FkLiAqL1xuICByZWFkb25seSB2ZXg/OiBzM0Fzc2V0cy5Bc3NldDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdnVsbmVyYWJpbGl0eSBtb25pdG9yIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIFdoZW4gb21pdHRlZCwgdGhlIG1vbml0b3IgdXNlcyB7QGxpbmsgZGF0YWRvZ3YyLkRlZmF1bHRTbGFja05vdGlmaWNhdGlvbn0uXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgQSB2dWxuZXJhYmlsaXR5IG1vbml0b3IgdXNpbmcge0BsaW5rIGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb259XG4gICAqL1xuICByZWFkb25seSB2dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzPzogU2JvbUNhdGFsb2dWdWxuZXJhYmlsaXR5TW9uaXRvclByb3BzO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1hbmRhdG9yeSBsaWNlbnNlIHBvbGljeSB0byBiZSBhcHBsaWVkIHRvIHRoaXMgcHJvamVjdC5cbiAgICpcbiAgICogVXNlIGBMaWNlbnNlUG9saWN5Lk5PTkVgIGluIGV4Y2VwdGlvbmFsIGNhc2VzIG9ubHkhXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlUG9saWN5OiBMaWNlbnNlUG9saWN5O1xufVxuXG4vKipcbiAqIEEgY2hpbGQgcHJvamVjdCBpbiBhbiBTQk9NIGNhdGFsb2cgY29sbGVjdGlvbi5cbiAqXG4gKiBAYmV0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNib21DYXRhbG9nUHJvamVjdENoaWxkIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgbm9uLWVtcHR5LCB1bmlxdWUgd2l0aGluIHRoZSBjb2xsZWN0aW9uLCBhbmQgbXVzdCBub3QgY29udGFpbiBgL2AuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIENoaWxkIHByb2plY3QgdmVyc2lvbi4gRGVmYXVsdHMgdG8gYG1haW5gLiAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIGFkZGVkIHRvIHRoaXMgY2hpbGQsIHVzaW5nIHRoZSBga2V5OnZhbHVlYCBmb3JtYXQuXG4gICAqXG4gICAqIENoaWxkIHRhZ3Mgb3ZlcnJpZGUgc2hhcmVkIHRhZ3Mgd2l0aCB0aGUgc2FtZSBrZXkuIGB0ZWFtX2lkZW50aWZpZXJgIGlzIGFsd2F5cyBpbmhlcml0ZWQgZnJvbSB0aGUgUklPIExhbmRpbmcgWm9uZVxuICAgKiBjb25maWd1cmF0aW9uLiBEbyBub3QgcHJvdmlkZSBgdGVhbV9pZGVudGlmaWVyYCBvciBgYWNjb3VudF9pZGA7IGJvdGggYXJlIG1hbmFnZWQgdGFnIGtleXMuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKiBKU09OIFNCT00gZmlsZSBhc3NldCB0byB1cGxvYWQuICovXG4gIHJlYWRvbmx5IHNib206IHMzQXNzZXRzLkFzc2V0O1xuXG4gIC8qKiBPcHRpb25hbCBKU09OIFZFWCBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgdmV4PzogczNBc3NldHMuQXNzZXQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWFuZGF0b3J5IGxpY2Vuc2UgcG9saWN5IHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBwcm9qZWN0LlxuICAgKlxuICAgKiBVc2UgYExpY2Vuc2VQb2xpY3kuTk9ORWAgaW4gZXhjZXB0aW9uYWwgY2FzZXMgb25seSFcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VQb2xpY3k6IExpY2Vuc2VQb2xpY3k7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3Ige0BsaW5rIFNib21DYXRhbG9nUHJvamVjdH0uXG4gKlxuICogQGJldGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYm9tQ2F0YWxvZ1Byb2plY3RQcm9wcyB7XG4gIC8qKiBDb2xsZWN0aW9uIG5hbWUgc3RvcmVkIGluIHRoZSBtYW5pZmVzdCBhbmQgdXNlZCBpbiB0aGUgZGVzdGluYXRpb24ga2V5LiAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBDb2xsZWN0aW9uIHZlcnNpb24uIERlZmF1bHRzIHRvIGBtYWluYC4gKi9cbiAgcmVhZG9ubHkgY29sbGVjdGlvblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgaW5oZXJpdGVkIGJ5IGV2ZXJ5IGNoaWxkLCB1c2luZyB0aGUgYGtleTp2YWx1ZWAgZm9ybWF0LlxuICAgKlxuICAgKiBBIGNoaWxkJ3MgYWRkaXRpb25hbCB0YWdzIG92ZXJyaWRlIHNoYXJlZCB0YWdzIHdpdGggdGhlIHNhbWUga2V5LiBgdGVhbV9pZGVudGlmaWVyYCBpcyBhbHdheXMgYWRkZWQgZnJvbSB0aGUgUklPXG4gICAqIExhbmRpbmcgWm9uZSBjb25maWd1cmF0aW9uLiBEbyBub3QgcHJvdmlkZSBgdGVhbV9pZGVudGlmaWVyYCBvciBgYWNjb3VudF9pZGA7IGJvdGggYXJlIG1hbmFnZWQgdGFnIGtleXMuXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIENoaWxkIGNhdGFsb2cgcHJvamVjdHMuIE11c3QgY29udGFpbiBiZXR3ZWVuIG9uZSBhbmQgdGhyZWUgcHJvamVjdHMuICovXG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBTYm9tQ2F0YWxvZ1Byb2plY3RDaGlsZFtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB2dWxuZXJhYmlsaXR5IG1vbml0b3IgY29uZmlndXJhdGlvbiBzaGFyZWQgYnkgYWxsIGNoaWxkIG1vbml0b3JzLlxuICAgKlxuICAgKiBXaGVuIG9taXR0ZWQsIHRoZSBtb25pdG9ycyB1c2Uge0BsaW5rIGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb259LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIFZ1bG5lcmFiaWxpdHkgbW9uaXRvcnMgdXNpbmcge0BsaW5rIGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb259XG4gICAqL1xuICByZWFkb25seSB2dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzPzogU2JvbUNhdGFsb2dWdWxuZXJhYmlsaXR5TW9uaXRvclByb3BzO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBvbmUgcHJvamVjdCdzIFNCT00gYW5kIG9wdGlvbmFsIFZFWCBpbiB0aGUgY2VudHJhbCBTQk9NIGNhdGFsb2cuXG4gKlxuICogVXNlIHRoaXMgY29uc3RydWN0IHdoZW4gYSBzdGFjayBvd25zIG9uZSBpbmRlcGVuZGVudGx5IHZlcnNpb25lZCBwcm9qZWN0LiBUaGUgZmlsZXMgYXJlIHVwbG9hZGVkIGFmdGVyIHRoZSBzdGFja1xuICogcmVhY2hlcyBgQ1JFQVRFX0NPTVBMRVRFYCBvciBgVVBEQVRFX0NPTVBMRVRFYC4gVGhlIEV2ZW50QnJpZGdlIGV2ZW50IHRpbWUgYW5kIElEIGlkZW50aWZ5IHRoZSB1cGxvYWQuXG4gKlxuICogVGhlIGNvbnN0cnVjdCBhdXRvbWF0aWNhbGx5IGFkZHMgdGhlIFJJTyBMYW5kaW5nIFpvbmUgYHRlYW1faWRlbnRpZmllcmAgdGFnIGFuZCBncmFudHMgdGhlIGdlbmVyYXRlZCB1cGxvYWQgTGFtYmRhXG4gKiBwZXJtaXNzaW9uIHRvIHJlYWQgdGhlIHNvdXJjZSBhc3NldHMgYW5kIHdyaXRlIHRoZW0gdG8gdGhlIGNlbnRyYWwgY2F0YWxvZyBidWNrZXQuIEFsbCBTQk9NIGNhdGFsb2cgY29uc3RydWN0cyBpblxuICogdGhlIHNhbWUgc3RhY2sgcmV1c2Ugb25lIHVwbG9hZCBMYW1iZGEuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHRzXG4gKiBjb25zdCBzYm9tID0gbmV3IHMzQXNzZXRzLkFzc2V0KHRoaXMsICdTYm9tQXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC9zYm9tLmpzb24nLFxuICogfSk7XG4gKiBjb25zdCB2ZXggPSBuZXcgczNBc3NldHMuQXNzZXQodGhpcywgJ1ZleEFzc2V0Jywge1xuICogICBwYXRoOiAnYnVpbGQvdmV4Lmpzb24nLFxuICogfSk7XG4gKlxuICogbmV3IFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3QodGhpcywgJ0NhdGFsb2dVcGxvYWQnLCB7XG4gKiAgIG5hbWU6ICdiaWxsaW5nLWFwaScsXG4gKiAgIHZlcnNpb246ICcxLjQuMCcsXG4gKiAgIGFkZGl0aW9uYWxUYWdzOiBbJ2NvbXBvbmVudDpiYWNrZW5kJ10sXG4gKiAgIHNib20sXG4gKiAgIHZleCxcbiAqICAgdnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wczoge1xuICogICAgIG5vdGlmaWNhdGlvbjogbmV3IGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKSxcbiAqICAgfSxcbiAqICAgbGljZW5zZVBvbGljeTogbGljZW5zZVBvbGljeS5KVk1fQkFDS0VORCxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQGJldGFcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhbmRhbG9uZVNib21DYXRhbG9nUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBwcm9wcy52ZXJzaW9uID8/IERFRkFVTFRfVkVSU0lPTjtcbiAgICBjb25zdCB0ZWFtSWRlbnRpZmllciA9IFJpb0xhbmRpbmdab25lLmdldFRlYW1JZGVudGlmaWVyUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRhZ3MgPVxuICAgICAgbWVyZ2VUYWdzKFxuICAgICAgICBhZGRMaWNlbnNlUG9saWN5VGFnSWZSZXF1aXJlZChbYHRlYW1faWRlbnRpZmllcjoke3RlYW1JZGVudGlmaWVyfWBdLCBwcm9wcy5saWNlbnNlUG9saWN5KSxcbiAgICAgICAgcHJvcHMuYWRkaXRpb25hbFRhZ3NcbiAgICAgICkgPz8gW107XG4gICAgYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKCduYW1lJywgcHJvcHMubmFtZSk7XG4gICAgYXNzZXJ0Tm9uRW1wdHlWZXJzaW9uKCd2ZXJzaW9uJywgdmVyc2lvbik7XG4gICAgcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhwcm9wcy5hZGRpdGlvbmFsVGFncyA/PyBbXSwgJ2FkZGl0aW9uYWxUYWdzJyk7XG5cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFN0YW5kYWxvbmVVcGxvYWRDb25maWd1cmF0aW9uID0ge1xuICAgICAgb3JpZ2luQWNjb3VudElkOiBzdGFjay5hY2NvdW50LFxuICAgICAgb3JpZ2luQWNjb3VudE5hbWU6IFJpb0xhbmRpbmdab25lLmdldEFjY291bnROYW1lUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlLFxuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICB0YWdzLFxuICAgICAgc2JvbTogYXNzZXRMb2NhdGlvbihwcm9wcy5zYm9tKSxcbiAgICAgIC4uLihwcm9wcy52ZXggPT09IHVuZGVmaW5lZCA/IHt9IDogeyB2ZXg6IGFzc2V0TG9jYXRpb24ocHJvcHMudmV4KSB9KSxcbiAgICB9O1xuXG4gICAgY3JlYXRlVXBsb2FkUmVzb3VyY2VzKHRoaXMsIGNvbmZpZ3VyYXRpb24sIFtwcm9wcy5zYm9tLCAuLi4ocHJvcHMudmV4ID09PSB1bmRlZmluZWQgPyBbXSA6IFtwcm9wcy52ZXhdKV0pO1xuICAgIGNyZWF0ZVZ1bG5lcmFiaWxpdHlNb25pdG9yKHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBhY2NvdW50TmFtZTogY29uZmlndXJhdGlvbi5vcmlnaW5BY2NvdW50TmFtZSxcbiAgICAgIG5vdGlmaWNhdGlvbjogcHJvcHMudnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wcz8ubm90aWZpY2F0aW9uID8/IG5ldyBkYXRhZG9ndjIuRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9uKCksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcHJvamVjdCBTQk9NcyBhbmQgb3B0aW9uYWwgVkVYIGZpbGVzIGluIHRoZSBjZW50cmFsIFNCT00gY2F0YWxvZy5cbiAqXG4gKiBVc2UgdGhpcyBjb25zdHJ1Y3Qgd2hlbiBvbmUgc3RhY2sgcHJvZHVjZXMgYmV0d2VlbiBvbmUgYW5kIHRocmVlIHJlbGF0ZWQgcHJvamVjdHMgdGhhdCBzaG91bGQgc2hhcmUgYSBjYXRhbG9nXG4gKiBjb2xsZWN0aW9uLiBTaGFyZWQgdGFncyBhcmUgaW5oZXJpdGVkIGJ5IGV2ZXJ5IGNoaWxkLCB3aGlsZSBjaGlsZCB0YWdzIHdpdGggdGhlIHNhbWUga2V5IG92ZXJyaWRlIHRoZW0uIFRoZSBSSU9cbiAqIExhbmRpbmcgWm9uZSBgdGVhbV9pZGVudGlmaWVyYCB0YWcgaXMgYWx3YXlzIGluY2x1ZGVkLlxuICpcbiAqIFRoZSBmaWxlcyBhcmUgdXBsb2FkZWQgYWZ0ZXIgdGhlIHN0YWNrIHJlYWNoZXMgYENSRUFURV9DT01QTEVURWAgb3IgYFVQREFURV9DT01QTEVURWAuIFRoZSBFdmVudEJyaWRnZSBldmVudCB0aW1lXG4gKiBhbmQgSUQgaWRlbnRpZnkgdGhlIHVwbG9hZC4gQWxsIFNCT00gY2F0YWxvZyBjb25zdHJ1Y3RzIGluIHRoZSBzYW1lIHN0YWNrIHJldXNlIG9uZSB1cGxvYWQgTGFtYmRhLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0c1xuICogY29uc3QgYXBpU2JvbSA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnQXBpU2JvbUFzc2V0Jywge1xuICogICBwYXRoOiAnYnVpbGQvYXBpLXNib20uanNvbicsXG4gKiB9KTtcbiAqIGNvbnN0IGluZnJhc3RydWN0dXJlU2JvbSA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnSW5mcmFzdHJ1Y3R1cmVTYm9tQXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC9pbmZyYXN0cnVjdHVyZS1zYm9tLmpzb24nLFxuICogfSk7XG4gKlxuICogbmV3IFNib21DYXRhbG9nUHJvamVjdCh0aGlzLCAnQ2F0YWxvZ1VwbG9hZCcsIHtcbiAqICAgY29sbGVjdGlvbk5hbWU6ICdiaWxsaW5nJyxcbiAqICAgY29sbGVjdGlvblZlcnNpb246ICcxLjQuMCcsXG4gKiAgIHNoYXJlZFRhZ3M6IFsnZG9tYWluOmJpbGxpbmcnXSxcbiAqICAgY2hpbGRyZW46IFtcbiAqICAgICB7XG4gKiAgICAgICBuYW1lOiAnYXBpJyxcbiAqICAgICAgIHNib206IGFwaVNib20sXG4gKiAgICAgICBhZGRpdGlvbmFsVGFnczogWydjb21wb25lbnQ6YmFja2VuZCddLFxuICogICAgICAgbGljZW5zZVBvbGljeTogTGljZW5zZVBvbGljeS5KVk1fQkFDS0VORCxcbiAqICAgICB9LFxuICogICAgIHtcbiAqICAgICAgIG5hbWU6ICdpbmZyYXN0cnVjdHVyZScsXG4gKiAgICAgICBzYm9tOiBpbmZyYXN0cnVjdHVyZVNib20sXG4gKiAgICAgICBhZGRpdGlvbmFsVGFnczogWydjb21wb25lbnQ6aW5mcmFzdHJ1Y3R1cmUnXSxcbiAqICogICAgICAgbGljZW5zZVBvbGljeTogTGljZW5zZVBvbGljeS5OUE1fQkFDS0VORCxcbiAqICAgICB9LFxuICogICBdLFxuICogICB2dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzOiB7XG4gKiAgICAgbm90aWZpY2F0aW9uOiBuZXcgZGF0YWRvZ3YyLkRlZmF1bHRTbGFja05vdGlmaWNhdGlvbigpLFxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAYmV0YVxuICovXG5leHBvcnQgY2xhc3MgU2JvbUNhdGFsb2dQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNib21DYXRhbG9nUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGNvbGxlY3Rpb25WZXJzaW9uID0gcHJvcHMuY29sbGVjdGlvblZlcnNpb24gPz8gREVGQVVMVF9WRVJTSU9OO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbUlkZW50aWZpZXJQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWU7XG4gICAgYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKCdjb2xsZWN0aW9uTmFtZScsIHByb3BzLmNvbGxlY3Rpb25OYW1lKTtcbiAgICBhc3NlcnROb25FbXB0eVZlcnNpb24oJ2NvbGxlY3Rpb25WZXJzaW9uJywgY29sbGVjdGlvblZlcnNpb24pO1xuICAgIHZhbGlkYXRlQ2hpbGRyZW4ocHJvcHMuY2hpbGRyZW4pO1xuICAgIHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMocHJvcHMuc2hhcmVkVGFncyA/PyBbXSwgJ3NoYXJlZFRhZ3MnKTtcbiAgICBjb25zdCBzaGFyZWRUYWdzID0gbWVyZ2VUYWdzKFtgdGVhbV9pZGVudGlmaWVyOiR7dGVhbUlkZW50aWZpZXJ9YF0sIHByb3BzLnNoYXJlZFRhZ3MpID8/IFtdO1xuXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBDYXRhbG9nVXBsb2FkQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIG9yaWdpbkFjY291bnRJZDogc3RhY2suYWNjb3VudCxcbiAgICAgIG9yaWdpbkFjY291bnROYW1lOiBSaW9MYW5kaW5nWm9uZS5nZXRBY2NvdW50TmFtZVBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZSxcbiAgICAgIGNvbGxlY3Rpb25OYW1lOiBwcm9wcy5jb2xsZWN0aW9uTmFtZSxcbiAgICAgIGNvbGxlY3Rpb25WZXJzaW9uLFxuICAgICAgdGFnczogW2B0ZWFtX2lkZW50aWZpZXI6JHt0ZWFtSWRlbnRpZmllcn1gXSxcbiAgICAgIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgbmFtZTogY2hpbGQubmFtZSxcbiAgICAgICAgdmVyc2lvbjogY2hpbGQudmVyc2lvbiA/PyBERUZBVUxUX1ZFUlNJT04sXG4gICAgICAgIC4uLm9wdGlvbmFsVGFncyhcbiAgICAgICAgICBtZXJnZVRhZ3MoYWRkTGljZW5zZVBvbGljeVRhZ0lmUmVxdWlyZWQoc2hhcmVkVGFncywgY2hpbGQubGljZW5zZVBvbGljeSksIGNoaWxkLmFkZGl0aW9uYWxUYWdzKVxuICAgICAgICApLFxuICAgICAgICBzYm9tOiBhc3NldExvY2F0aW9uKGNoaWxkLnNib20pLFxuICAgICAgICAuLi4oY2hpbGQudmV4ID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdmV4OiBhc3NldExvY2F0aW9uKGNoaWxkLnZleCkgfSksXG4gICAgICB9KSksXG4gICAgfTtcblxuICAgIGNyZWF0ZVVwbG9hZFJlc291cmNlcyhcbiAgICAgIHRoaXMsXG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgcHJvcHMuY2hpbGRyZW4uZmxhdE1hcChjaGlsZCA9PiBbY2hpbGQuc2JvbSwgLi4uKGNoaWxkLnZleCA9PT0gdW5kZWZpbmVkID8gW10gOiBbY2hpbGQudmV4XSldKVxuICAgICk7XG5cbiAgICBjb25zdCBub3RpZmljYXRpb24gPSBwcm9wcy52dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzPy5ub3RpZmljYXRpb24gPz8gbmV3IGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKTtcbiAgICBwcm9wcy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+XG4gICAgICBjcmVhdGVWdWxuZXJhYmlsaXR5TW9uaXRvcih7XG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgICBwcm9qZWN0TmFtZTogY2hpbGQubmFtZSxcbiAgICAgICAgYWNjb3VudE5hbWU6IGNvbmZpZ3VyYXRpb24ub3JpZ2luQWNjb3VudE5hbWUsXG4gICAgICAgIG5vdGlmaWNhdGlvbixcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ3JlYXRlVnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wcyB7XG4gIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHJlYWRvbmx5IHByb2plY3ROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbjogZGF0YWRvZ3YyLklOb3RpZmljYXRpb247XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZ1bG5lcmFiaWxpdHlNb25pdG9yKHByb3BzOiBDcmVhdGVWdWxuZXJhYmlsaXR5TW9uaXRvclByb3BzKTogdm9pZCB7XG4gIGNvbnN0IG1vbml0b3IgPSBuZXcgZGF0YWRvZ3YyLkRhdGFkb2dNb25pdG9yKHByb3BzLnNjb3BlLCBgJHtwcm9wcy5wcm9qZWN0TmFtZX1WdWxuZXJhYmlsaXR5TW9uaXRvcmAsIHtcbiAgICBuYW1lOiBgJHtwcm9wcy5hY2NvdW50TmFtZX0gVnVsbmVyYWJpbGl0eU1vbml0b3JgLFxuICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5wcm9qZWN0TmFtZSxcbiAgICBtb25pdG9yVHlwZTogZGF0YWRvZ3YyLkRhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuTUVUUklDX0FMRVJULFxuICAgIHF1ZXJ5OiBgbWF4KGxhc3RfMTVtKTptYXg6c2VydmljZS52dWxuZXJhYmlsaXRpZXN7cHJvamVjdF9uYW1lOiR7cHJvcHMucHJvamVjdE5hbWV9fSA+IDBgLFxuICAgIGxvd2VyY2FzZVF1ZXJ5OiB0cnVlLFxuICAgIG1lc3NhZ2U6IFtcbiAgICAgICd7eyNpc19hbGVydH19JyxcbiAgICAgIGBQcm9qZWN0ICR7cHJvcHMucHJvamVjdE5hbWV9IGhhcyB7e3ZhbHVlfX0ga25vd24gdnVsbmVyYWJpbGl0aWVzLmAsXG4gICAgICAne3svaXNfYWxlcnR9fScsXG4gICAgICAnJyxcbiAgICAgICd7eyNpc19yZWNvdmVyeX19JyxcbiAgICAgIGBQcm9qZWN0ICR7cHJvcHMucHJvamVjdE5hbWV9IG5vIGxvbmdlciByZXBvcnRzIHZ1bG5lcmFiaWxpdGllcy5gLFxuICAgICAgJ3t7L2lzX3JlY292ZXJ5fX0nLFxuICAgIF0uam9pbignXFxuJyksXG4gICAgbm90aWZpY2F0aW9uOiBwcm9wcy5ub3RpZmljYXRpb24sXG4gICAgcHJpb3JpdHk6IDMsXG4gICAgZXh0cmFUYWdzOiBbJ21vbml0b3JfdHlwZTp2dWxuZXJhYmlsaXR5J10sXG4gICAgb3B0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICB0aHJlc2hvbGRzOiB7XG4gICAgICAgIGNyaXRpY2FsOiAwLFxuICAgICAgfSxcbiAgICAgIG9uTWlzc2luZ0RhdGE6IGRhdGFkb2d2Mi5Nb25pdG9yT25NaXNzaW5nRGF0YS5ERUZBVUxULFxuICAgICAgcmVxdWlyZUZ1bGxXaW5kb3c6IGZhbHNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIGBvbl9taXNzaW5nX2RhdGFgIHJlcGxhY2VzIHRoZSBsZWdhY3kgbm8tZGF0YSBvcHRpb25zIGFuZCBrZWVwcyB0aGUgbGFzdCBrbm93biBzdGF0dXMgZm9yIGdhdWdlIG1ldHJpY3MuXG4gIGNvbnN0IG1vbml0b3JSZXNvdXJjZSA9IG1vbml0b3Iubm9kZS5maW5kQ2hpbGQoJ01vbml0b3InKSBhcyBDZm5SZXNvdXJjZTtcbiAgbW9uaXRvclJlc291cmNlLmFkZERlbGV0aW9uT3ZlcnJpZGUoJ1Byb3BlcnRpZXMuT3B0aW9ucy5Ob3RpZnlOb0RhdGEnKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVXBsb2FkUmVzb3VyY2VzKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBjb25maWd1cmF0aW9uOiBVcGxvYWRDb25maWd1cmF0aW9uLFxuICBzb3VyY2VBc3NldHM6IHMzQXNzZXRzLkFzc2V0W11cbik6IHZvaWQge1xuICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICBjb25zdCB1cGxvYWRGdW5jdGlvbiA9IG5ldyBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24oc2NvcGUsICdVcGxvYWRGdW5jdGlvbicsIHtcbiAgICB1dWlkOiBVUExPQURfRlVOQ1RJT05fVVVJRCxcbiAgICBsYW1iZGFQdXJwb3NlOiBVUExPQURfRlVOQ1RJT05fUFVSUE9TRSxcbiAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgIGhhbmRsZXI6ICdoYW5kbGVyLmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnbGFtYmRhJyksIHtcbiAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICB9KSxcbiAgICBsb2dnaW5nRm9ybWF0OiBsYW1iZGEuTG9nZ2luZ0Zvcm1hdC5KU09OLFxuICAgIGxvZ0dyb3VwOiBnZXRPckNyZWF0ZVVwbG9hZExvZ0dyb3VwKHN0YWNrKSxcbiAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnczM6UHV0T2JqZWN0J10sXG4gICAgICAgIHJlc291cmNlczogW2Ake1NCT01fQ0FUQUxPR19CVUNLRVRfQVJOfS8qYF0sXG4gICAgICB9KSxcbiAgICBdLFxuICAgIG1lbW9yeVNpemU6IDI1NixcbiAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICB9KTtcblxuICBmb3IgKGNvbnN0IGFzc2V0IG9mIHNvdXJjZUFzc2V0cykge1xuICAgIGFzc2V0LmdyYW50UmVhZCh1cGxvYWRGdW5jdGlvbik7XG4gIH1cblxuICBuZXcgZXZlbnRzLlJ1bGUoc2NvcGUsICdTdGFja0NvbXBsZXRpb25SdWxlJywge1xuICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgc291cmNlOiBbJ2F3cy5jbG91ZGZvcm1hdGlvbiddLFxuICAgICAgZGV0YWlsVHlwZTogWydDbG91ZEZvcm1hdGlvbiBTdGFjayBTdGF0dXMgQ2hhbmdlJ10sXG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgJ3N0YWNrLWlkJzogW3N0YWNrLnN0YWNrSWRdLFxuICAgICAgICAnc3RhdHVzLWRldGFpbHMnOiB7XG4gICAgICAgICAgc3RhdHVzOiBbJ0NSRUFURV9DT01QTEVURScsICdVUERBVEVfQ09NUExFVEUnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0YXJnZXRzOiBbXG4gICAgICBuZXcgZXZlbnRzVGFyZ2V0cy5MYW1iZGFGdW5jdGlvbih1cGxvYWRGdW5jdGlvbiwge1xuICAgICAgICBldmVudDogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICBldmVudElkOiBldmVudHMuRXZlbnRGaWVsZC5ldmVudElkLFxuICAgICAgICAgIGV2ZW50VGltZTogZXZlbnRzLkV2ZW50RmllbGQuZnJvbVBhdGgoJyQudGltZScpLFxuICAgICAgICAgIHN0YWNrSWQ6IGV2ZW50cy5FdmVudEZpZWxkLmZyb21QYXRoKCckLmRldGFpbC5zdGFjay1pZCcpLFxuICAgICAgICAgIHN0YWNrU3RhdHVzOiBldmVudHMuRXZlbnRGaWVsZC5mcm9tUGF0aCgnJC5kZXRhaWwuc3RhdHVzLWRldGFpbHMuc3RhdHVzJyksXG4gICAgICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICBdLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0T3JDcmVhdGVVcGxvYWRMb2dHcm91cChzdGFjazogU3RhY2spOiBsb2dzLkxvZ0dyb3VwIHtcbiAgY29uc3QgZXhpc3RpbmdMb2dHcm91cCA9IHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKFVQTE9BRF9MT0dfR1JPVVBfSUQpO1xuICBpZiAoZXhpc3RpbmdMb2dHcm91cCBpbnN0YW5jZW9mIGxvZ3MuTG9nR3JvdXApIHtcbiAgICByZXR1cm4gZXhpc3RpbmdMb2dHcm91cDtcbiAgfVxuICBpZiAoZXhpc3RpbmdMb2dHcm91cCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdGFjayBhbHJlYWR5IGNvbnRhaW5zIGEgY29uc3RydWN0IG5hbWVkICcke1VQTE9BRF9MT0dfR1JPVVBfSUR9J2ApO1xuICB9XG4gIHJldHVybiBuZXcgbG9ncy5Mb2dHcm91cChzdGFjaywgVVBMT0FEX0xPR19HUk9VUF9JRCwge1xuICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzZXRMb2NhdGlvbihhc3NldDogczNBc3NldHMuQXNzZXQpOiBBc3NldExvY2F0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICBidWNrZXROYW1lOiBhc3NldC5zM0J1Y2tldE5hbWUsXG4gICAgb2JqZWN0S2V5OiBhc3NldC5zM09iamVjdEtleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodmFsdWUubGVuZ3RoID09PSAwIHx8IHZhbHVlLmluY2x1ZGVzKCcvJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBhIG5vbi1lbXB0eSB2YWx1ZSB3aXRob3V0ICcvJ2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydE5vbkVtcHR5VmVyc2lvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRyZW4oY2hpbGRyZW46IFNib21DYXRhbG9nUHJvamVjdENoaWxkW10pOiB2b2lkIHtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2hpbGRyZW4gbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBwcm9qZWN0Jyk7XG4gIH1cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IE1BWF9DSElMRFJFTikge1xuICAgIHRocm93IG5ldyBFcnJvcihgY2hpbGRyZW4gbXVzdCBjb250YWluIGF0IG1vc3QgJHtNQVhfQ0hJTERSRU59IHByb2plY3RzYCk7XG4gIH1cblxuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKCdjaGlsZCBuYW1lJywgY2hpbGQubmFtZSk7XG4gICAgaWYgKGNoaWxkLnZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXNzZXJ0Tm9uRW1wdHlWZXJzaW9uKGB2ZXJzaW9uIGZvciBjaGlsZCAnJHtjaGlsZC5uYW1lfSdgLCBjaGlsZC52ZXJzaW9uKTtcbiAgICB9XG4gICAgcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhjaGlsZC5hZGRpdGlvbmFsVGFncyA/PyBbXSwgYGFkZGl0aW9uYWxUYWdzIGZvciBjaGlsZCAnJHtjaGlsZC5uYW1lfSdgKTtcbiAgICBpZiAobmFtZXMuaGFzKGNoaWxkLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNoaWxkIG5hbWUgJyR7Y2hpbGQubmFtZX0nIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgY29sbGVjdGlvbmApO1xuICAgIH1cbiAgICBuYW1lcy5hZGQoY2hpbGQubmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VUYWdzKHNoYXJlZFRhZ3M/OiBzdHJpbmdbXSwgYWRkaXRpb25hbFRhZ3M/OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNoYXJlZFRhZ3MgPT09IHVuZGVmaW5lZCAmJiBhZGRpdGlvbmFsVGFncyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHNoYXJlZCA9IHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoc2hhcmVkVGFncyA/PyBbXSwgJ3NoYXJlZFRhZ3MnLCB0cnVlKTtcbiAgY29uc3QgYWRkaXRpb25hbCA9IHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoYWRkaXRpb25hbFRhZ3MgPz8gW10sICdhZGRpdGlvbmFsVGFncycpO1xuICBjb25zdCBtZXJnZWQgPSBuZXcgTWFwKHNoYXJlZCk7XG4gIGZvciAoY29uc3QgW2tleSwgdGFnXSBvZiBhZGRpdGlvbmFsKSBtZXJnZWQuc2V0KGtleSwgdGFnKTtcbiAgcmV0dXJuIFsuLi5tZXJnZWQudmFsdWVzKCldO1xufVxuXG5mdW5jdGlvbiBhZGRMaWNlbnNlUG9saWN5VGFnSWZSZXF1aXJlZCh0YWdzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCwgcG9saWN5OiBMaWNlbnNlUG9saWN5KSB7XG4gIGlmIChwb2xpY3kgIT09IExpY2Vuc2VQb2xpY3kuTk9ORSkge1xuICAgIHJldHVybiBbLi4uKHRhZ3MgPz8gW10pLCBgbGljZW5zZV9wb2xpY3k6JHtwb2xpY3l9YF07XG4gIH1cbiAgcmV0dXJuIHRhZ3M7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoXG4gIHRhZ3M6IHN0cmluZ1tdLFxuICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgYWxsb3dNYW5hZ2VkVGFncyA9IGZhbHNlXG4pOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuICAgIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gdGFnLmluZGV4T2YoJzonKTtcbiAgICBpZiAoc2VwYXJhdG9ySW5kZXggPD0gMCB8fCBzZXBhcmF0b3JJbmRleCA9PT0gdGFnLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwcm9wZXJ0eU5hbWV9IHRhZyAnJHt0YWd9JyBtdXN0IHVzZSB0aGUgZm9ybWF0IGtleTp2YWx1ZSB3aXRoIGEgbm9uLWVtcHR5IGtleSBhbmQgdmFsdWVgKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXkgPSB0YWcuc2xpY2UoMCwgc2VwYXJhdG9ySW5kZXgpO1xuICAgIGlmIChNQU5BR0VEX1RBR19LRVlTLmhhcyhrZXkpICYmICFhbGxvd01hbmFnZWRUYWdzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcGVydHlOYW1lfSBtdXN0IG5vdCBzZXQgbWFuYWdlZCB0YWcga2V5ICcke2tleX0nYCk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQuaGFzKGtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwcm9wZXJ0eU5hbWV9IGNvbnRhaW5zIGR1cGxpY2F0ZSB0YWcga2V5ICcke2tleX0nYCk7XG4gICAgfVxuICAgIHJlc3VsdC5zZXQoa2V5LCB0YWcpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG9wdGlvbmFsVGFncyh0YWdzPzogc3RyaW5nW10pOiB7IHJlYWRvbmx5IHRhZ3M/OiBzdHJpbmdbXSB9IHtcbiAgcmV0dXJuIHRhZ3MgPT09IHVuZGVmaW5lZCA/IHt9IDogeyB0YWdzIH07XG59XG4iXX0=
|
package/package.json
CHANGED
package/version.json
CHANGED