@aws-cdk/aws-imagebuilder-alpha 2.243.0-alpha.0 → 2.244.0-alpha.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/lib/workflow.js CHANGED
@@ -202,7 +202,7 @@ var WorkflowType;
202
202
  * Helper class for referencing and uploading workflow data
203
203
  */
204
204
  class WorkflowData {
205
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowData", version: "2.243.0-alpha.0" };
205
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowData", version: "2.244.0-alpha.0" };
206
206
  /**
207
207
  * Uploads workflow data from a local file to S3 to use as the workflow data
208
208
  *
@@ -247,7 +247,7 @@ exports.WorkflowData = WorkflowData;
247
247
  * Helper class for S3-based workflow data references, containing additional permission grant methods on the S3 object
248
248
  */
249
249
  class S3WorkflowData extends WorkflowData {
250
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3WorkflowData", version: "2.243.0-alpha.0" };
250
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3WorkflowData", version: "2.244.0-alpha.0" };
251
251
  bucket;
252
252
  key;
253
253
  constructor(bucket, key) {
@@ -308,7 +308,7 @@ class S3WorkflowDataFromAsset extends S3WorkflowData {
308
308
  * The parameter value for a workflow parameter
309
309
  */
310
310
  class WorkflowParameterValue {
311
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowParameterValue", version: "2.243.0-alpha.0" };
311
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowParameterValue", version: "2.244.0-alpha.0" };
312
312
  /**
313
313
  * The value of the parameter as a boolean
314
314
  *
@@ -404,7 +404,7 @@ let Workflow = (() => {
404
404
  Workflow = _classThis = _classDescriptor.value;
405
405
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
406
406
  }
407
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Workflow", version: "2.243.0-alpha.0" };
407
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Workflow", version: "2.244.0-alpha.0" };
408
408
  /** Uniquely identifies this class. */
409
409
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Workflow';
410
410
  /**
@@ -430,13 +430,13 @@ let Workflow = (() => {
430
430
  }
431
431
  if (attrs.workflowArn !== undefined &&
432
432
  (attrs.workflowName !== undefined || attrs.workflowType !== undefined || attrs.workflowVersion !== undefined)) {
433
- throw new cdk.ValidationError('a workflowName, workflowType, or workflowVersion cannot be provided when a workflowArn is provided', scope);
433
+ throw new cdk.ValidationError('ConflictingWorkflowAttributes', 'a workflowName, workflowType, or workflowVersion cannot be provided when a workflowArn is provided', scope);
434
434
  }
435
435
  if (attrs.workflowArn === undefined && (attrs.workflowName === undefined || attrs.workflowType === undefined)) {
436
- throw new cdk.ValidationError('either workflowArn, or workflowName and workflowType is required', scope);
436
+ throw new cdk.ValidationError('EitherWorkflowArnOrNameAndTypeRequired', 'either workflowArn, or workflowName and workflowType is required', scope);
437
437
  }
438
438
  if (attrs.workflowType && cdk.Token.isUnresolved(attrs.workflowType)) {
439
- throw new cdk.ValidationError('workflowType cannot be an unresolved token', scope);
439
+ throw new cdk.ValidationError('WorkflowTypeCannotBeUnresolved', 'workflowType cannot be an unresolved token', scope);
440
440
  }
441
441
  const workflowArn = (() => {
442
442
  if (attrs.workflowArn !== undefined) {
@@ -454,10 +454,10 @@ let Workflow = (() => {
454
454
  }
455
455
  const workflowNameTypeVersion = cdk.Stack.of(scope).splitArn(workflowArn, cdk.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
456
456
  if (cdk.Token.isUnresolved(workflowNameTypeVersion)) {
457
- throw new cdk.ValidationError('the workflowName, workflowType, and workflowVersion in the workflowArn cannot be an unresolved token', scope);
457
+ throw new cdk.ValidationError('WorkflowArnCannotBeUnresolved', 'the workflowName, workflowType, and workflowVersion in the workflowArn cannot be an unresolved token', scope);
458
458
  }
459
459
  if (workflowNameTypeVersion.split('/').length < 3) {
460
- throw new cdk.ValidationError('the workflow ARN must end with <workflow-type>/<workflow-name>/<workflow-version>', scope);
460
+ throw new cdk.ValidationError('InvalidWorkflowArnFormat', 'the workflow ARN must end with <workflow-type>/<workflow-name>/<workflow-version>', scope);
461
461
  }
462
462
  const workflowNameTypeVersionSplit = workflowNameTypeVersion.split('/');
463
463
  const [workflowTypeFromArn, workflowNameFromArn, workflowVersionFromArn] = workflowNameTypeVersionSplit.slice(0, 3);
@@ -535,16 +535,16 @@ let Workflow = (() => {
535
535
  return; // Cannot validate unresolved tokens, given their actual value is rendered at deployment time
536
536
  }
537
537
  if (this.physicalName.length > 128) {
538
- throw new cdk.ValidationError('the workflowName cannot be longer than 128 characters', this);
538
+ throw new cdk.ValidationError('WorkflowNameTooLong', 'the workflowName cannot be longer than 128 characters', this);
539
539
  }
540
540
  if (this.physicalName.includes(' ')) {
541
- throw new cdk.ValidationError('the workflowName cannot contain spaces', this);
541
+ throw new cdk.ValidationError('WorkflowNameContainsSpaces', 'the workflowName cannot contain spaces', this);
542
542
  }
543
543
  if (this.physicalName.includes('_')) {
544
- throw new cdk.ValidationError('the workflowName cannot contain underscores', this);
544
+ throw new cdk.ValidationError('WorkflowNameContainsUnderscores', 'the workflowName cannot contain underscores', this);
545
545
  }
546
546
  if (this.physicalName !== this.physicalName.toLowerCase()) {
547
- throw new cdk.ValidationError('the workflowName must be lowercase', this);
547
+ throw new cdk.ValidationError('WorkflowNameNotLowercase', 'the workflowName must be lowercase', this);
548
548
  }
549
549
  }
550
550
  static {
@@ -554,4 +554,4 @@ let Workflow = (() => {
554
554
  return Workflow = _classThis;
555
555
  })();
556
556
  exports.Workflow = Workflow;
557
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLG1FQUEyRDtBQUczRCxzREFBc0Q7QUFDdEQsNEVBQXVFO0FBQ3ZFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFFMUUsNkJBQTZCO0FBRTdCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMENBQTBDLENBQUMsQ0FBQztBQUUvRTs7Ozs7R0FLRztBQUNILE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQThJL0I7O0dBRUc7QUFDSCxJQUFZLGNBNEZYO0FBNUZELFdBQVksY0FBYztJQUN4Qjs7O09BR0c7SUFDSCx5RUFBdUQsQ0FBQTtJQUV2RDs7O09BR0c7SUFDSCxvRkFBa0UsQ0FBQTtJQUVsRTs7O09BR0c7SUFDSCxpRUFBK0MsQ0FBQTtJQUUvQzs7T0FFRztJQUNILDBFQUF3RCxDQUFBO0lBRXhEOztPQUVHO0lBQ0gsOENBQTRCLENBQUE7SUFFNUI7OztPQUdHO0lBQ0gsc0RBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCwwREFBd0MsQ0FBQTtJQUV4Qzs7O09BR0c7SUFDSCwrREFBNkMsQ0FBQTtJQUU3Qzs7O09BR0c7SUFDSCxvREFBa0MsQ0FBQTtJQUVsQzs7T0FFRztJQUNILG1FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsNENBQTBCLENBQUE7SUFFMUI7O09BRUc7SUFDSCxrREFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDZDQUEyQixDQUFBO0lBRTNCOztPQUVHO0lBQ0gsd0RBQXNDLENBQUE7SUFFdEM7O09BRUc7SUFDSCwwREFBd0MsQ0FBQTtJQUV4Qzs7O09BR0c7SUFDSCxtREFBaUMsQ0FBQTtJQUVqQzs7T0FFRztJQUNILHdEQUFzQyxDQUFBO0FBQ3hDLENBQUMs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Q0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLDZGQUE2RjtZQUN2RyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsdURBQXVELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0YsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEYsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsNkNBQTZDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckYsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLG9DQUFvQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVFLENBQUM7U0FDRjs7WUEvS1UsdURBQVE7Ozs7O0FBQVIsNEJBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuV29ya2Zsb3cgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCB0eXBlICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHR5cGUgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNhc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5cbmNvbnN0IFdPUktGTE9XX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuV29ya2Zsb3cnKTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHdvcmtmbG93LiBXaGVuIHVzaW5nIHRoZSB3b3JrZmxvdyBpbiBhIHBpcGVsaW5lLCB0aGUgcGlwZWxpbmUgd2lsbCB1c2UgdGhlXG4gKiBsYXRlc3Qgd29ya2Zsb3cgYXQgdGhlIHRpbWUgb2YgZXhlY3V0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2liaG93LXNlbWFudGljLXZlcnNpb25pbmcuaHRtbFxuICovXG5jb25zdCBMQVRFU1RfVkVSU0lPTiA9ICd4LngueCc7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgV29ya2Zsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVdvcmtmbG93IGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0Fybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1R5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgV29ya2Zsb3cgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JrZmxvdyBkb2N1bWVudCBjb250ZW50IHRoYXQgZGVmaW5lcyB0aGUgaW1hZ2UgY3JlYXRpb24gcHJvY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IFdvcmtmbG93RGF0YTtcblxuICAvKipcbiAgICogVGhlIHBoYXNlIGluIHRoZSBpbWFnZSBidWlsZCBwcm9jZXNzIGZvciB3aGljaCB0aGUgd29ya2Zsb3cgcmVzb3VyY2UgaXMgcmVzcG9uc2libGUuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1R5cGU6IFdvcmtmbG93VHlwZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxLjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNoYW5nZSBkZXNjcmlwdGlvbiBvZiB0aGUgd29ya2Zsb3cuIERlc2NyaWJlcyB3aGF0IGNoYW5nZSBoYXMgYmVlbiBtYWRlIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3csIG9yXG4gICAqIHdoYXQgbWFrZXMgdGhpcyB2ZXJzaW9uIGRpZmZlcmVudCBmcm9tIG90aGVyIHZlcnNpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VEZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoaXMgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gSW1hZ2UgQnVpbGRlciBvd25lZCBrZXkgd2lsbCBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIHdvcmtmbG93LlxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvd1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBBUk4gaXMgYXV0b21hdGljYWxseSBjb25zdHJ1Y3RlZCBpZiBhIHdvcmtmbG93TmFtZSBhbmQgd29ya2Zsb3dUeXBlIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgYVxuICAgKiB3b3JrZmxvd0FybiBpcyByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBuYW1lIGlzIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0ZWQgaWYgYSB3b3JrZmxvd0FybiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGEgd29ya2Zsb3dOYW1lIGlzIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSB0eXBlIGlzIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0ZWQgaWYgYSB3b3JrZmxvd0FybiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGEgd29ya2Zsb3dUeXBlIGlzIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1R5cGU/OiBXb3JrZmxvd1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCB4LngueFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gZm9yIGEgc3RlcCB3aXRoaW4gdGhlIHdvcmtmbG93IGRvY3VtZW50XG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93QWN0aW9uIHtcbiAgLyoqXG4gICAqIEFwcGxpZXMgY3VzdG9taXphdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIHRvIHRoZSBpbnB1dCBBTUlzLCBzdWNoIGFzIHB1Ymxpc2hpbmcgdGhlIEFNSSB0byBTU00gUGFyYW1ldGVyIFN0b3JlLFxuICAgKiBvciBjcmVhdGluZyBsYXVuY2ggdGVtcGxhdGUgdmVyc2lvbnMgd2l0aCB0aGUgQU1JIElEcyBwcm92aWRlZCBpbiB0aGUgaW5wdXRcbiAgICovXG4gIEFQUExZX0lNQUdFX0NPTkZJR1VSQVRJT05TID0gJ0FwcGx5SW1hZ2VDb25maWd1cmF0aW9ucycsXG5cbiAgLyoqXG4gICAqIFRoZSBCb290c3RyYXBJbnN0YW5jZUZvckNvbnRhaW5lciBhY3Rpb24gcnVucyBhIHNlcnZpY2Ugc2NyaXB0IHRvIGJvb3RzdHJhcCB0aGUgaW5zdGFuY2Ugd2l0aCBtaW5pbXVtIHJlcXVpcmVtZW50c1xuICAgKiB0byBydW4gY29udGFpbmVyIHdvcmtmbG93c1xuICAgKi9cbiAgQk9PVFNUUkFQX0lOU1RBTkNFX0ZPUl9DT05UQUlORVIgPSAnQm9vdHN0cmFwSW5zdGFuY2VGb3JDb250YWluZXInLFxuXG4gIC8qKlxuICAgKiBUaGUgQ29sbGVjdEltYWdlTWV0YWRhdGEgYWN0aW9uIGNvbGxlY3RzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluc3RhbmNlLCBzdWNoIGFzIHRoZSBsaXN0IG9mIHBhY2thZ2VzXG4gICAqIGFuZCB0aGVpciByZXNwZWN0aXZlIHZlcnNpb25zXG4gICAqL1xuICBDT0xMRUNUX0lNQUdFX01FVEFEQVRBID0gJ0NvbGxlY3RJbWFnZU1ldGFkYXRhJyxcblxuICAvKipcbiAgICogVGhlIENvbGxlY3RJbWFnZVNjYW5GaW5kaW5ncyBhY3Rpb24gY29sbGVjdHMgZmluZGluZ3MgcmVwb3J0ZWQgYnkgQW1hem9uIEluc3BlY3RvciBmb3IgdGhlIHByb3ZpZGVkIGluc3RhbmNlXG4gICAqL1xuICBDT0xMRUNUX0lNQUdFX1NDQU5fRklORElOR1MgPSAnQ29sbGVjdEltYWdlU2NhbkZpbmRpbmdzJyxcblxuICAvKipcbiAgICogVGhlIENyZWF0ZUltYWdlIGFjdGlvbiBjcmVhdGVzIGFuIEFNSSBmcm9tIGEgcnVubmluZyBpbnN0YW5jZSB3aXRoIHRoZSBlYzI6Q3JlYXRlSW1hZ2UgQVBJXG4gICAqL1xuICBDUkVBVEVfSU1BR0UgPSAnQ3JlYXRlSW1hZ2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgRGlzdHJpYnV0ZUltYWdlIGFjdGlvbiBjb3BpZXMgYW4gQU1JIHVzaW5nIHRoZSBpbWFnZSdzIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLCBvciB1c2luZyB0aGUgZGlzdHJpYnV0aW9uXG4gICAqIHNldHRpbmdzIGluIHRoZSBzdGVwIGlucHV0XG4gICAqL1xuICBESVNUUklCVVRFX0lNQUdFID0gJ0Rpc3RyaWJ1dGVJbWFnZScsXG5cbiAgLyoqXG4gICAqIFRoZSBFeGVjdXRlQ29tcG9uZW50cyBhY3Rpb24gcnVucyBjb21wb25lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgcmVjaXBlIGZvciB0aGUgY3VycmVudCBpbWFnZSBiZWluZyBidWlsdFxuICAgKi9cbiAgRVhFQ1VURV9DT01QT05FTlRTID0gJ0V4ZWN1dGVDb21wb25lbnRzJyxcblxuICAvKipcbiAgICogVGhlIEV4ZWN1dGVTdGF0ZU1hY2hpbmUgYWN0aW9uIGV4ZWN1dGVzIGEgdGhlIHN0YXRlIG1hY2hpbmUgcHJvdmlkZWQgYW5kIHdhaXRzIGZvciBjb21wbGV0aW9uIGFzIHBhcnQgb2YgdGhlXG4gICAqIHdvcmtmbG93XG4gICAqL1xuICBFWEVDVVRFX1NUQVRFX01BQ0hJTkUgPSAnRXhlY3V0ZVN0YXRlTWFjaGluZScsXG5cbiAgLyoqXG4gICAqIFRoZSBMYXVuY2hJbnN0YW5jZSBhY3Rpb24gbGF1bmNoZXMgYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNldHRpbmdzIGZyb20geW91ciByZWNpcGUgYW5kIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICogcmVzb3VyY2VzXG4gICAqL1xuICBMQVVOQ0hfSU5TVEFOQ0UgPSAnTGF1bmNoSW5zdGFuY2UnLFxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGF0dHJpYnV0ZSB1cGRhdGVzIHRvIHRoZSBwcm92aWRlZCBzZXQgb2YgZGlzdHJpYnV0ZWQgaW1hZ2VzLCBzdWNoIGFzIGxhdW5jaCBwZXJtaXNzaW9uIHVwZGF0ZXNcbiAgICovXG4gIE1PRElGWV9JTUFHRV9BVFRSSUJVVEVTID0gJ01vZGlmeUltYWdlQXR0cmlidXRlcycsXG5cbiAgLyoqXG4gICAqIFRoZSBSdW5Db21tYW5kIGFjdGlvbiBydW5zIGEgY29tbWFuZCBkb2N1bWVudCBhZ2FpbnN0IHRoZSBwcm92aWRlZCBpbnN0YW5jZVxuICAgKi9cbiAgUlVOX0NPTU1BTkQgPSAnUnVuQ29tbWFuZCcsXG5cbiAgLyoqXG4gICAqIFRoZSBSZWdpc3RlckltYWdlIGFjdGlvbiBjcmVhdGVzIGFuIEFNSSBmcm9tIGEgc2V0IG9mIHNuYXBzaG90cyB3aXRoIHRoZSBlYzI6UmVnaXN0ZXJJbWFnZSBBUElcbiAgICovXG4gIFJFR0lTVEVSX0lNQUdFID0gJ1JlZ2lzdGVySW1hZ2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgUnVuU3lzcHJlcCBhY3Rpb24gcnVucyB0aGUgU3lzcHJlcCBkb2N1bWVudCBvbiB0aGUgcHJvdmlkZWQgV2luZG93cyBpbnN0YW5jZVxuICAgKi9cbiAgUlVOX1NZU19QUkVQID0gJ1J1blN5c1ByZXAnLFxuXG4gIC8qKlxuICAgKiBUaGUgU2FuaXRpemVJbnN0YW5jZSBhY3Rpb24gcnVucyBhIHJlY29tbWVuZGVkIHNhbml0aXphdGlvbiBzY3JpcHQgb24gTGludXggaW5zdGFuY2VzXG4gICAqL1xuICBTQU5JVElaRV9JTlNUQU5DRSA9ICdTYW5pdGl6ZUluc3RhbmNlJyxcblxuICAvKipcbiAgICogVGhlIFRlcm1pbmF0ZUluc3RhbmNlIGFjdGlvbiB0ZXJtaW5hdGVzIHRoZSBwcm92aWRlZCBpbnN0YW5jZVxuICAgKi9cbiAgVEVSTUlOQVRFX0lOU1RBTkNFID0gJ1Rlcm1pbmF0ZUluc3RhbmNlJyxcblxuICAvKipcbiAgICogVGhlIFdhaXRGb3JBY3Rpb24gYWN0aW9uIHBhdXNlcyB0aGUgd29ya2Zsb3cgYW5kIHdhaXRzIHRvIHJlY2VpdmUgYW4gZXh0ZXJuYWwgc2lnbmFsIGZyb20gdGhlXG4gICAqIGltYWdlYnVpbGRlcjpTZW5kV29ya2Zsb3dTdGVwQWN0aW9uIEFQSVxuICAgKi9cbiAgV0FJVF9GT1JfQUNUSU9OID0gJ1dhaXRGb3JBY3Rpb24nLFxuXG4gIC8qKlxuICAgKiBUaGUgV2FpdEZvclNTTUFnZW50IGFjdGlvbiB3YWl0cyBmb3IgdGhlIGdpdmVuIGluc3RhbmNlIHRvIGhhdmUgY29ubmVjdGl2aXR5IHdpdGggU1NNIGJlZm9yZSBwcm9jZWVkaW5nXG4gICAqL1xuICBXQUlUX0ZPUl9TU01fQUdFTlQgPSAnV2FpdEZvclNTTUFnZW50Jyxcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHRha2UgaWYgdGhlIHdvcmtmbG93IGZhaWxzXG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93T25GYWlsdXJlIHtcbiAgLyoqXG4gICAqIEZhaWxzIHRoZSBpbWFnZSBidWlsZCBpZiB0aGUgd29ya2Zsb3cgZmFpbHNcbiAgICovXG4gIEFCT1JUID0gJ0Fib3J0JyxcblxuICAvKipcbiAgICogQ29udGludWVzIHdpdGggdGhlIGltYWdlIGJ1aWxkIGlmIHRoZSB3b3JrZmxvdyBmYWlsc1xuICAgKi9cbiAgQ09OVElOVUUgPSAnQ29udGludWUnLFxufVxuXG4vKipcbiAqIFRoZSBwYXJhbWV0ZXIgdHlwZSBmb3IgdGhlIHdvcmtmbG93IHBhcmFtZXRlclxuICovXG5leHBvcnQgZW51bSBXb3JrZmxvd1BhcmFtZXRlclR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBwYXJhbWV0ZXIgaGFzIGEgYm9vbGVhbiB2YWx1ZVxuICAgKi9cbiAgQk9PTEVBTiA9ICdib29sZWFuJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBwYXJhbWV0ZXIgaGFzIGFuIGludGVnZXIgdmFsdWVcbiAgICovXG4gIElOVEVHRVIgPSAnaW50ZWdlcicsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgcGFyYW1ldGVyIGhhcyBhIHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgU1RSSU5HID0gJ3N0cmluZycsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgcGFyYW1ldGVyIGhhcyBhIHN0cmluZyBsaXN0IHZhbHVlXG4gICAqL1xuICBTVFJJTkdfTElTVCA9ICdzdHJpbmdMaXN0Jyxcbn1cblxuLyoqXG4gKiBUaGUgc2NoZW1hIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93XG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93U2NoZW1hVmVyc2lvbiB7XG4gIC8qKlxuICAgKiBTY2hlbWEgdmVyc2lvbiAxLjAgZm9yIHRoZSB3b3JrZmxvdyBkb2N1bWVudFxuICAgKi9cbiAgVjFfMCA9ICcxLjAnLFxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICovXG5leHBvcnQgZW51bSBXb3JrZmxvd1R5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBpcyBmb3IgYnVpbGRpbmcgaW1hZ2VzXG4gICAqL1xuICBCVUlMRCA9ICdCVUlMRCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgaXMgZm9yIHRlc3RpbmcgaW1hZ2VzXG4gICAqL1xuICBURVNUID0gJ1RFU1QnLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHdvcmtmbG93IGlzIGZvciBkaXN0cmlidXRpbmcgaW1hZ2VzXG4gICAqL1xuICBESVNUUklCVVRJT04gPSAnRElTVFJJQlVUSU9OJyxcbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAqIC0gRm9yIGlubGluZSB3b3JrZmxvd3MsIGRhdGEgaXMgdGhlIHdvcmtmbG93IHRleHRcbiAqIC0gRm9yIFMzLWJhY2tlZCB3b3JrZmxvd3MsIHVyaSBpcyB0aGUgUzMgVVJMXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dEYXRhQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCB3b3JrZmxvdyBkYXRhLCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiB1cmkgaXMgc2V0XG4gICAqL1xuICByZWFkb25seSBkYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSBVUkksIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIGRhdGEgaXMgc2V0XG4gICAqL1xuICByZWFkb25seSB1cmk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciByZWZlcmVuY2luZyBhbmQgdXBsb2FkaW5nIHdvcmtmbG93IGRhdGFcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdvcmtmbG93RGF0YSB7XG4gIC8qKlxuICAgKiBVcGxvYWRzIHdvcmtmbG93IGRhdGEgZnJvbSBhIGxvY2FsIGZpbGUgdG8gUzMgdG8gdXNlIGFzIHRoZSB3b3JrZmxvdyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIHBhdGggVGhlIGxvY2FsIHBhdGggdG8gdGhlIHdvcmtmbG93IGRhdGEgZmlsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBTMyBhc3NldCB1cGxvYWQgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQXNzZXQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zOiBzM2Fzc2V0cy5Bc3NldE9wdGlvbnMgPSB7fSxcbiAgKTogUzNXb3JrZmxvd0RhdGEge1xuICAgIGNvbnN0IGFzc2V0ID0gbmV3IHMzYXNzZXRzLkFzc2V0KHNjb3BlLCBpZCwgeyAuLi5vcHRpb25zLCBwYXRoIH0pO1xuICAgIHJldHVybiBuZXcgUzNXb3JrZmxvd0RhdGFGcm9tQXNzZXQoYXNzZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZXMgd29ya2Zsb3cgZGF0YSBmcm9tIGEgcHJlLWV4aXN0aW5nIFMzIG9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0IFRoZSBTMyBidWNrZXQgd2hlcmUgdGhlIHdvcmtmbG93IGRhdGEgaXMgc3RvcmVkXG4gICAqIEBwYXJhbSBrZXkgVGhlIFMzIGtleSBvZiB0aGUgd29ya2Zsb3cgZGF0YSBmaWxlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TMyhidWNrZXQ6IHMzLklCdWNrZXQsIGtleTogc3RyaW5nKTogUzNXb3JrZmxvd0RhdGEge1xuICAgIHJldHVybiBuZXcgUzNXb3JrZmxvd0RhdGFGcm9tQnVja2V0S2V5KGJ1Y2tldCwga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBKU09OIG9iamVjdCBhcyB0aGUgd29ya2Zsb3cgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBBbiBpbmxpbmUgSlNPTiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSB3b3JrZmxvdyBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Kc29uT2JqZWN0KGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiBXb3JrZmxvd0RhdGEge1xuICAgIGNvbnN0IGlubGluZURhdGEgPSB5YW1sLnN0cmluZ2lmeShkYXRhLCB7IGluZGVudDogMiB9KTtcbiAgICByZXR1cm4gbmV3IElubGluZVdvcmtmbG93RGF0YShpbmxpbmVEYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBKU09OIG9yIFlBTUwgc3RyaW5nIGFzIHRoZSB3b3JrZmxvdyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIEFuIGlubGluZSBKU09OIG9yIFlBTUwgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgd29ya2Zsb3cgZGF0YVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW5saW5lKGRhdGE6IHN0cmluZyk6IFdvcmtmbG93RGF0YSB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVXb3JrZmxvd0RhdGEoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIHdvcmtmbG93IGRhdGEgdmFsdWUsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb24uXG4gICAqIC0gRm9yIGlubGluZSB3b3JrZmxvd3MsIGRhdGEgaXMgdGhlIHdvcmtmbG93IHRleHRcbiAgICogLSBGb3IgUzMtYmFja2VkIHdvcmtmbG93cywgdXJpIGlzIHRoZSBTMyBVUkxcbiAgICovXG4gIGFic3RyYWN0IHJlbmRlcigpOiBXb3JrZmxvd0RhdGFDb25maWc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBTMy1iYXNlZCB3b3JrZmxvdyBkYXRhIHJlZmVyZW5jZXMsIGNvbnRhaW5pbmcgYWRkaXRpb25hbCBwZXJtaXNzaW9uIGdyYW50IG1ldGhvZHMgb24gdGhlIFMzIG9iamVjdFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUzNXb3JrZmxvd0RhdGEgZXh0ZW5kcyBXb3JrZmxvd0RhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnVja2V0OiBzMy5JQnVja2V0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5idWNrZXQgPSBidWNrZXQ7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIHdvcmtmbG93IGRhdGEgdGV4dCwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBXb3JrZmxvd0RhdGFDb25maWcge1xuICAgIHJldHVybiB7IHVyaTogdGhpcy5idWNrZXQuczNVcmxGb3JPYmplY3QodGhpcy5rZXkpIH07XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcHV0IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgd29ya2Zsb3cgZGF0YSBpbiBTM1xuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UHV0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRQdXQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvdyBkYXRhIGluIFMzXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRSZWFkKGdyYW50ZWUsIHRoaXMua2V5KTtcbiAgfVxufVxuXG5jbGFzcyBJbmxpbmVXb3JrZmxvd0RhdGEgZXh0ZW5kcyBXb3JrZmxvd0RhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRhOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSB0ZXh0LCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IFdvcmtmbG93RGF0YUNvbmZpZyB7XG4gICAgcmV0dXJuIHsgZGF0YTogdGhpcy5kYXRhIH07XG4gIH1cbn1cblxuY2xhc3MgUzNXb3JrZmxvd0RhdGFGcm9tQnVja2V0S2V5IGV4dGVuZHMgUzNXb3JrZmxvd0RhdGEge1xuICBwdWJsaWMgY29uc3RydWN0b3IoYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZykge1xuICAgIHN1cGVyKGJ1Y2tldCwga2V5KTtcbiAgfVxufVxuXG5jbGFzcyBTM1dvcmtmbG93RGF0YUZyb21Bc3NldCBleHRlbmRzIFMzV29ya2Zsb3dEYXRhIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGFzc2V0OiBzM2Fzc2V0cy5Bc3NldCkge1xuICAgIHN1cGVyKGFzc2V0LmJ1Y2tldCwgYXNzZXQuczNPYmplY3RLZXkpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHBhcmFtZXRlciB2YWx1ZSBmb3IgYSB3b3JrZmxvdyBwYXJhbWV0ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIFdvcmtmbG93UGFyYW1ldGVyVmFsdWUge1xuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBib29sZWFuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgYm9vbGVhbiB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Cb29sZWFuKHZhbHVlOiBib29sZWFuKTogV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSB7XG4gICAgcmV0dXJuIG5ldyBXb3JrZmxvd1BhcmFtZXRlclZhbHVlKFt2YWx1ZS50b1N0cmluZygpXSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYW4gaW50ZWdlclxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIGludGVnZXIgdmFsdWUgb2YgdGhlIHBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW50ZWdlcih2YWx1ZTogbnVtYmVyKTogV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSB7XG4gICAgcmV0dXJuIG5ldyBXb3JrZmxvd1BhcmFtZXRlclZhbHVlKFt2YWx1ZS50b1N0cmluZygpXSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIHBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBXb3JrZmxvd1BhcmFtZXRlclZhbHVlIHtcbiAgICByZXR1cm4gbmV3IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUoW3ZhbHVlXSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBzdHJpbmcgbGlzdCB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmdMaXN0KHZhbHVlczogc3RyaW5nW10pOiBXb3JrZmxvd1BhcmFtZXRlclZhbHVlIHtcbiAgICByZXR1cm4gbmV3IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUodmFsdWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgcGFyYW1ldGVyIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZ1tdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIGEgd29ya2Zsb3dcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHdvcmtmbG93IHRvIGV4ZWN1dGUgaW4gdGhlIGltYWdlIGJ1aWxkXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvdzogSVdvcmtmbG93O1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHRha2UgaWYgdGhlIHdvcmtmbG93IGZhaWxzXG4gICAqXG4gICAqIEBkZWZhdWx0IFdvcmtmbG93T25GYWlsdXJlLkFCT1JUXG4gICAqL1xuICByZWFkb25seSBvbkZhaWx1cmU/OiBXb3JrZmxvd09uRmFpbHVyZTtcblxuICAvKipcbiAgICogVGhlIG5hbWVkIHBhcmFsbGVsIGdyb3VwIHRvIGluY2x1ZGUgdGhpcyB3b3JrZmxvdyBpbi4gV29ya2Zsb3dzIGluIHRoZSBzYW1lIHBhcmFsbGVsIGdyb3VwIHJ1biBpbiBwYXJhbGxlbCBvZiBlYWNoXG4gICAqIG90aGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbEdyb3VwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVycyB0byBwYXNzIHRvIHRoZSB3b3JrZmxvdyBhdCBleGVjdXRpb24gdGltZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgdGhlIHdvcmtmbG93IGhhcyBubyBwYXJhbWV0ZXJzLCBvdGhlcndpc2UgdGhlIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHsgW25hbWU6IHN0cmluZ106IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUgfTtcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBXb3JrZmxvd1xuICovXG5hYnN0cmFjdCBjbGFzcyBXb3JrZmxvd0Jhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJV29ya2Zsb3cge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgd29ya2Zsb3dcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IHdvcmtmbG93QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgd29ya2Zsb3dOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgd29ya2Zsb3dUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgd29ya2Zsb3dWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgd29ya2Zsb3dcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMud29ya2Zsb3dBcm5dLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIHdvcmtmbG93XG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldFdvcmtmbG93Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIFdvcmtmbG93LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1pbWFnZS13b3JrZmxvd3MuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgV29ya2Zsb3cgZXh0ZW5kcyBXb3JrZmxvd0Jhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuV29ya2Zsb3cnO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgd29ya2Zsb3cgZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVdvcmtmbG93QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHdvcmtmbG93QXJuOiBzdHJpbmcpOiBJV29ya2Zsb3cge1xuICAgIHJldHVybiB0aGlzLmZyb21Xb3JrZmxvd0F0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHdvcmtmbG93QXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB3b3JrZmxvdyBieSBwcm92aWRpbmcgaXRzIGF0dHJpYnV0ZXMuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nXG4gICAqIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLiBZb3UgbWF5IG5vdFxuICAgKiBwcm92aWRlIGEgZHluYW1pYyBleHByZXNzaW9uIGZvciB0aGUgd29ya2Zsb3dBcm4gb3Igd29ya2Zsb3dUeXBlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Xb3JrZmxvd0F0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFdvcmtmbG93QXR0cmlidXRlcyk6IElXb3JrZmxvdyB7XG4gICAgaWYgKFxuICAgICAgYXR0cnMud29ya2Zsb3dBcm4gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgKGF0dHJzLndvcmtmbG93TmFtZSAhPT0gdW5kZWZpbmVkIHx8IGF0dHJzLndvcmtmbG93VHlwZSAhPT0gdW5kZWZpbmVkIHx8IGF0dHJzLndvcmtmbG93VmVyc2lvbiAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdhIHdvcmtmbG93TmFtZSwgd29ya2Zsb3dUeXBlLCBvciB3b3JrZmxvd1ZlcnNpb24gY2Fubm90IGJlIHByb3ZpZGVkIHdoZW4gYSB3b3JrZmxvd0FybiBpcyBwcm92aWRlZCcsXG4gICAgICAgIHNjb3BlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMud29ya2Zsb3dBcm4gPT09IHVuZGVmaW5lZCAmJiAoYXR0cnMud29ya2Zsb3dOYW1lID09PSB1bmRlZmluZWQgfHwgYXR0cnMud29ya2Zsb3dUeXBlID09PSB1bmRlZmluZWQpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignZWl0aGVyIHdvcmtmbG93QXJuLCBvciB3b3JrZmxvd05hbWUgYW5kIHdvcmtmbG93VHlwZSBpcyByZXF1aXJlZCcsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMud29ya2Zsb3dUeXBlICYmIGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoYXR0cnMud29ya2Zsb3dUeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3dvcmtmbG93VHlwZSBjYW5ub3QgYmUgYW4gdW5yZXNvbHZlZCB0b2tlbicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JrZmxvd0FybiA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMud29ya2Zsb3dBcm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gYXR0cnMud29ya2Zsb3dBcm47XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ3dvcmtmbG93JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy53b3JrZmxvd1R5cGUhLnRvTG93ZXJDYXNlKCl9LyR7YXR0cnMud29ya2Zsb3dOYW1lIX0vJHthdHRycy53b3JrZmxvd1ZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuICAgIH0pKCk7XG5cbiAgICBjb25zdCBbd29ya2Zsb3dUeXBlLCB3b3JrZmxvd05hbWUsIHdvcmtmbG93VmVyc2lvbl0gPSAoKCkgPT4ge1xuICAgICAgaWYgKGF0dHJzLndvcmtmbG93TmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMud29ya2Zsb3dUeXBlIS50b1VwcGVyQ2FzZSgpLCBhdHRycy53b3JrZmxvd05hbWUsIGF0dHJzLndvcmtmbG93VmVyc2lvbiA/PyBMQVRFU1RfVkVSU0lPTl07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgICAgd29ya2Zsb3dBcm4sXG4gICAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQod29ya2Zsb3dOYW1lVHlwZVZlcnNpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICd0aGUgd29ya2Zsb3dOYW1lLCB3b3JrZmxvd1R5cGUsIGFuZCB3b3JrZmxvd1ZlcnNpb24gaW4gdGhlIHdvcmtmbG93QXJuIGNhbm5vdCBiZSBhbiB1bnJlc29sdmVkIHRva2VuJyxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uLnNwbGl0KCcvJykubGVuZ3RoIDwgMykge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAndGhlIHdvcmtmbG93IEFSTiBtdXN0IGVuZCB3aXRoIDx3b3JrZmxvdy10eXBlPi88d29ya2Zsb3ctbmFtZT4vPHdvcmtmbG93LXZlcnNpb24+JyxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd29ya2Zsb3dOYW1lVHlwZVZlcnNpb25TcGxpdCA9IHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uLnNwbGl0KCcvJyk7XG4gICAgICBjb25zdCBbd29ya2Zsb3dUeXBlRnJvbUFybiwgd29ya2Zsb3dOYW1lRnJvbUFybiwgd29ya2Zsb3dWZXJzaW9uRnJvbUFybl0gPSB3b3JrZmxvd05hbWVUeXBlVmVyc2lvblNwbGl0LnNsaWNlKFxuICAgICAgICAwLFxuICAgICAgICAzLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIFt3b3JrZmxvd1R5cGVGcm9tQXJuLnRvVXBwZXJDYXNlKCksIHdvcmtmbG93TmFtZUZyb21Bcm4sIHdvcmtmbG93VmVyc2lvbkZyb21Bcm5dO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBXb3JrZmxvd0Jhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93QXJuID0gd29ya2Zsb3dBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3dOYW1lID0gd29ya2Zsb3dOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93VHlwZSA9IHdvcmtmbG93VHlwZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd1ZlcnNpb24gPSB3b3JrZmxvd1ZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgV29ya2Zsb3cuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzV29ya2Zsb3coeDogYW55KTogeCBpcyBXb3JrZmxvdyB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIFdPUktGTE9XX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93VHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3dcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd1ZlcnNpb246IHN0cmluZztcblxuICBwcml2YXRlIHJlc291cmNlOiBDZm5Xb3JrZmxvdztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdvcmtmbG93UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMud29ya2Zsb3dOYW1lID8/XG4gICAgICAgIGNkay5MYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICAgIGNkay5OYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICAgICAgICBtYXhMZW5ndGg6IDEyOCxcbiAgICAgICAgICAgICAgc2VwYXJhdG9yOiAnLScsXG4gICAgICAgICAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogJy0nLFxuICAgICAgICAgICAgfSkudG9Mb3dlckNhc2UoKSwgLy8gRW5mb3JjZSBsb3dlcmNhc2UgZm9yIHRoZSBhdXRvLWdlbmVyYXRlZCBmYWxsYmFja1xuICAgICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBXT1JLRkxPV19TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnZhbGlkYXRlV29ya2Zsb3dOYW1lKCk7XG5cbiAgICBjb25zdCB3b3JrZmxvd1ZlcnNpb24gPSBwcm9wcy53b3JrZmxvd1ZlcnNpb24gPz8gJzEuMC4wJztcbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmbldvcmtmbG93KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgdmVyc2lvbjogd29ya2Zsb3dWZXJzaW9uLFxuICAgICAgdHlwZTogcHJvcHMud29ya2Zsb3dUeXBlLFxuICAgICAgY2hhbmdlRGVzY3JpcHRpb246IHByb3BzLmNoYW5nZURlc2NyaXB0aW9uLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAga21zS2V5SWQ6IHByb3BzLmttc0tleT8ua2V5QXJuLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIC4uLnByb3BzLmRhdGEucmVuZGVyKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLndvcmtmbG93VmVyc2lvbiA9IHdvcmtmbG93VmVyc2lvbjtcbiAgICB0aGlzLndvcmtmbG93VHlwZSA9IHByb3BzLndvcmtmbG93VHlwZTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IHdvcmtmbG93TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmdldEF0dCgnTmFtZScpLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgd29ya2Zsb3dBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRyQXJuO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVdvcmtmbG93TmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSB3b3JrZmxvd05hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgd29ya2Zsb3dOYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHdvcmtmbG93TmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSB3b3JrZmxvd05hbWUgbXVzdCBiZSBsb3dlcmNhc2UnLCB0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
557
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLG1FQUEyRDtBQUczRCxzREFBc0Q7QUFDdEQsNEVBQXVFO0FBQ3ZFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFFMUUsNkJBQTZCO0FBRTdCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMENBQTBDLENBQUMsQ0FBQztBQUUvRTs7Ozs7R0FLRztBQUNILE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQThJL0I7O0dBRUc7QUFDSCxJQUFZLGNBNEZYO0FBNUZELFdBQVksY0FBYztJQUN4Qjs7O09BR0c7SUFDSCx5RUFBdUQsQ0FBQTtJQUV2RDs7O09BR0c7SUFDSCxvRkFBa0UsQ0FBQTtJQUVsRTs7O09BR0c7SUFDSCxpRUFBK0MsQ0FBQTtJQUUvQzs7T0FFRztJQUNILDBFQUF3RCxDQUFBO0lBRXhEOztPQUVHO0lBQ0gsOENBQTRCLENBQUE7SUFFNUI7OztPQUdHO0lBQ0gsc0RBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCwwREFBd0MsQ0FBQTtJQUV4Qzs7O09BR0c7SUFDSCwrREFBNkMsQ0FBQTtJQUU3Qzs7O09BR0c7SUFDSCxvREFBa0MsQ0FBQTtJQUVsQzs7T0FFRztJQUNILG1FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsNENBQTBCLENBQUE7SUFFMUI7O09BRUc7SUFDSCxrREFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDZDQUEyQixDQUFBO0lBRTNCOztPQUVHO0lBQ0gsd0RBQXNDLENBQUE7SUFFdEM7O09BRUc7SUFDSCwwREFBd0MsQ0FBQTtJQUV4Qzs7O09BR0c7SUFDSCxtREFBaUMsQ0FBQTtJQUVqQzs7T0FFRztJQUNILHdEQUFzQyxDQUFBO0FBQ3hDLENBQUMs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QUFPLENBQUM7U0FDOUI7UUFFTyxvQkFBb0I7WUFDMUIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLDZGQUE2RjtZQUN2RyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMscUJBQXFCLEVBQUUsdURBQXVELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEgsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsd0NBQXdDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUcsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsaUNBQWlDLEVBQUUsNkNBQTZDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEgsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLDBCQUEwQixFQUFFLG9DQUFvQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hHLENBQUM7U0FDRjs7WUFsTFUsdURBQVE7Ozs7O0FBQVIsNEJBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuV29ya2Zsb3cgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCB0eXBlICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHR5cGUgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNhc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5cbmNvbnN0IFdPUktGTE9XX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuV29ya2Zsb3cnKTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHdvcmtmbG93LiBXaGVuIHVzaW5nIHRoZSB3b3JrZmxvdyBpbiBhIHBpcGVsaW5lLCB0aGUgcGlwZWxpbmUgd2lsbCB1c2UgdGhlXG4gKiBsYXRlc3Qgd29ya2Zsb3cgYXQgdGhlIHRpbWUgb2YgZXhlY3V0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2liaG93LXNlbWFudGljLXZlcnNpb25pbmcuaHRtbFxuICovXG5jb25zdCBMQVRFU1RfVkVSU0lPTiA9ICd4LngueCc7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgV29ya2Zsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVdvcmtmbG93IGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0Fybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1R5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgV29ya2Zsb3cgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JrZmxvdyBkb2N1bWVudCBjb250ZW50IHRoYXQgZGVmaW5lcyB0aGUgaW1hZ2UgY3JlYXRpb24gcHJvY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IFdvcmtmbG93RGF0YTtcblxuICAvKipcbiAgICogVGhlIHBoYXNlIGluIHRoZSBpbWFnZSBidWlsZCBwcm9jZXNzIGZvciB3aGljaCB0aGUgd29ya2Zsb3cgcmVzb3VyY2UgaXMgcmVzcG9uc2libGUuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1R5cGU6IFdvcmtmbG93VHlwZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxLjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNoYW5nZSBkZXNjcmlwdGlvbiBvZiB0aGUgd29ya2Zsb3cuIERlc2NyaWJlcyB3aGF0IGNoYW5nZSBoYXMgYmVlbiBtYWRlIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3csIG9yXG4gICAqIHdoYXQgbWFrZXMgdGhpcyB2ZXJzaW9uIGRpZmZlcmVudCBmcm9tIG90aGVyIHZlcnNpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VEZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoaXMgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gSW1hZ2UgQnVpbGRlciBvd25lZCBrZXkgd2lsbCBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIHdvcmtmbG93LlxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvd1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBBUk4gaXMgYXV0b21hdGljYWxseSBjb25zdHJ1Y3RlZCBpZiBhIHdvcmtmbG93TmFtZSBhbmQgd29ya2Zsb3dUeXBlIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgYVxuICAgKiB3b3JrZmxvd0FybiBpcyByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBuYW1lIGlzIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0ZWQgaWYgYSB3b3JrZmxvd0FybiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGEgd29ya2Zsb3dOYW1lIGlzIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSB0eXBlIGlzIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0ZWQgaWYgYSB3b3JrZmxvd0FybiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGEgd29ya2Zsb3dUeXBlIGlzIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1R5cGU/OiBXb3JrZmxvd1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAZGVmYXVsdCB4LngueFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gZm9yIGEgc3RlcCB3aXRoaW4gdGhlIHdvcmtmbG93IGRvY3VtZW50XG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93QWN0aW9uIHtcbiAgLyoqXG4gICAqIEFwcGxpZXMgY3VzdG9taXphdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIHRvIHRoZSBpbnB1dCBBTUlzLCBzdWNoIGFzIHB1Ymxpc2hpbmcgdGhlIEFNSSB0byBTU00gUGFyYW1ldGVyIFN0b3JlLFxuICAgKiBvciBjcmVhdGluZyBsYXVuY2ggdGVtcGxhdGUgdmVyc2lvbnMgd2l0aCB0aGUgQU1JIElEcyBwcm92aWRlZCBpbiB0aGUgaW5wdXRcbiAgICovXG4gIEFQUExZX0lNQUdFX0NPTkZJR1VSQVRJT05TID0gJ0FwcGx5SW1hZ2VDb25maWd1cmF0aW9ucycsXG5cbiAgLyoqXG4gICAqIFRoZSBCb290c3RyYXBJbnN0YW5jZUZvckNvbnRhaW5lciBhY3Rpb24gcnVucyBhIHNlcnZpY2Ugc2NyaXB0IHRvIGJvb3RzdHJhcCB0aGUgaW5zdGFuY2Ugd2l0aCBtaW5pbXVtIHJlcXVpcmVtZW50c1xuICAgKiB0byBydW4gY29udGFpbmVyIHdvcmtmbG93c1xuICAgKi9cbiAgQk9PVFNUUkFQX0lOU1RBTkNFX0ZPUl9DT05UQUlORVIgPSAnQm9vdHN0cmFwSW5zdGFuY2VGb3JDb250YWluZXInLFxuXG4gIC8qKlxuICAgKiBUaGUgQ29sbGVjdEltYWdlTWV0YWRhdGEgYWN0aW9uIGNvbGxlY3RzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluc3RhbmNlLCBzdWNoIGFzIHRoZSBsaXN0IG9mIHBhY2thZ2VzXG4gICAqIGFuZCB0aGVpciByZXNwZWN0aXZlIHZlcnNpb25zXG4gICAqL1xuICBDT0xMRUNUX0lNQUdFX01FVEFEQVRBID0gJ0NvbGxlY3RJbWFnZU1ldGFkYXRhJyxcblxuICAvKipcbiAgICogVGhlIENvbGxlY3RJbWFnZVNjYW5GaW5kaW5ncyBhY3Rpb24gY29sbGVjdHMgZmluZGluZ3MgcmVwb3J0ZWQgYnkgQW1hem9uIEluc3BlY3RvciBmb3IgdGhlIHByb3ZpZGVkIGluc3RhbmNlXG4gICAqL1xuICBDT0xMRUNUX0lNQUdFX1NDQU5fRklORElOR1MgPSAnQ29sbGVjdEltYWdlU2NhbkZpbmRpbmdzJyxcblxuICAvKipcbiAgICogVGhlIENyZWF0ZUltYWdlIGFjdGlvbiBjcmVhdGVzIGFuIEFNSSBmcm9tIGEgcnVubmluZyBpbnN0YW5jZSB3aXRoIHRoZSBlYzI6Q3JlYXRlSW1hZ2UgQVBJXG4gICAqL1xuICBDUkVBVEVfSU1BR0UgPSAnQ3JlYXRlSW1hZ2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgRGlzdHJpYnV0ZUltYWdlIGFjdGlvbiBjb3BpZXMgYW4gQU1JIHVzaW5nIHRoZSBpbWFnZSdzIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLCBvciB1c2luZyB0aGUgZGlzdHJpYnV0aW9uXG4gICAqIHNldHRpbmdzIGluIHRoZSBzdGVwIGlucHV0XG4gICAqL1xuICBESVNUUklCVVRFX0lNQUdFID0gJ0Rpc3RyaWJ1dGVJbWFnZScsXG5cbiAgLyoqXG4gICAqIFRoZSBFeGVjdXRlQ29tcG9uZW50cyBhY3Rpb24gcnVucyBjb21wb25lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgcmVjaXBlIGZvciB0aGUgY3VycmVudCBpbWFnZSBiZWluZyBidWlsdFxuICAgKi9cbiAgRVhFQ1VURV9DT01QT05FTlRTID0gJ0V4ZWN1dGVDb21wb25lbnRzJyxcblxuICAvKipcbiAgICogVGhlIEV4ZWN1dGVTdGF0ZU1hY2hpbmUgYWN0aW9uIGV4ZWN1dGVzIGEgdGhlIHN0YXRlIG1hY2hpbmUgcHJvdmlkZWQgYW5kIHdhaXRzIGZvciBjb21wbGV0aW9uIGFzIHBhcnQgb2YgdGhlXG4gICAqIHdvcmtmbG93XG4gICAqL1xuICBFWEVDVVRFX1NUQVRFX01BQ0hJTkUgPSAnRXhlY3V0ZVN0YXRlTWFjaGluZScsXG5cbiAgLyoqXG4gICAqIFRoZSBMYXVuY2hJbnN0YW5jZSBhY3Rpb24gbGF1bmNoZXMgYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNldHRpbmdzIGZyb20geW91ciByZWNpcGUgYW5kIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICogcmVzb3VyY2VzXG4gICAqL1xuICBMQVVOQ0hfSU5TVEFOQ0UgPSAnTGF1bmNoSW5zdGFuY2UnLFxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGF0dHJpYnV0ZSB1cGRhdGVzIHRvIHRoZSBwcm92aWRlZCBzZXQgb2YgZGlzdHJpYnV0ZWQgaW1hZ2VzLCBzdWNoIGFzIGxhdW5jaCBwZXJtaXNzaW9uIHVwZGF0ZXNcbiAgICovXG4gIE1PRElGWV9JTUFHRV9BVFRSSUJVVEVTID0gJ01vZGlmeUltYWdlQXR0cmlidXRlcycsXG5cbiAgLyoqXG4gICAqIFRoZSBSdW5Db21tYW5kIGFjdGlvbiBydW5zIGEgY29tbWFuZCBkb2N1bWVudCBhZ2FpbnN0IHRoZSBwcm92aWRlZCBpbnN0YW5jZVxuICAgKi9cbiAgUlVOX0NPTU1BTkQgPSAnUnVuQ29tbWFuZCcsXG5cbiAgLyoqXG4gICAqIFRoZSBSZWdpc3RlckltYWdlIGFjdGlvbiBjcmVhdGVzIGFuIEFNSSBmcm9tIGEgc2V0IG9mIHNuYXBzaG90cyB3aXRoIHRoZSBlYzI6UmVnaXN0ZXJJbWFnZSBBUElcbiAgICovXG4gIFJFR0lTVEVSX0lNQUdFID0gJ1JlZ2lzdGVySW1hZ2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgUnVuU3lzcHJlcCBhY3Rpb24gcnVucyB0aGUgU3lzcHJlcCBkb2N1bWVudCBvbiB0aGUgcHJvdmlkZWQgV2luZG93cyBpbnN0YW5jZVxuICAgKi9cbiAgUlVOX1NZU19QUkVQID0gJ1J1blN5c1ByZXAnLFxuXG4gIC8qKlxuICAgKiBUaGUgU2FuaXRpemVJbnN0YW5jZSBhY3Rpb24gcnVucyBhIHJlY29tbWVuZGVkIHNhbml0aXphdGlvbiBzY3JpcHQgb24gTGludXggaW5zdGFuY2VzXG4gICAqL1xuICBTQU5JVElaRV9JTlNUQU5DRSA9ICdTYW5pdGl6ZUluc3RhbmNlJyxcblxuICAvKipcbiAgICogVGhlIFRlcm1pbmF0ZUluc3RhbmNlIGFjdGlvbiB0ZXJtaW5hdGVzIHRoZSBwcm92aWRlZCBpbnN0YW5jZVxuICAgKi9cbiAgVEVSTUlOQVRFX0lOU1RBTkNFID0gJ1Rlcm1pbmF0ZUluc3RhbmNlJyxcblxuICAvKipcbiAgICogVGhlIFdhaXRGb3JBY3Rpb24gYWN0aW9uIHBhdXNlcyB0aGUgd29ya2Zsb3cgYW5kIHdhaXRzIHRvIHJlY2VpdmUgYW4gZXh0ZXJuYWwgc2lnbmFsIGZyb20gdGhlXG4gICAqIGltYWdlYnVpbGRlcjpTZW5kV29ya2Zsb3dTdGVwQWN0aW9uIEFQSVxuICAgKi9cbiAgV0FJVF9GT1JfQUNUSU9OID0gJ1dhaXRGb3JBY3Rpb24nLFxuXG4gIC8qKlxuICAgKiBUaGUgV2FpdEZvclNTTUFnZW50IGFjdGlvbiB3YWl0cyBmb3IgdGhlIGdpdmVuIGluc3RhbmNlIHRvIGhhdmUgY29ubmVjdGl2aXR5IHdpdGggU1NNIGJlZm9yZSBwcm9jZWVkaW5nXG4gICAqL1xuICBXQUlUX0ZPUl9TU01fQUdFTlQgPSAnV2FpdEZvclNTTUFnZW50Jyxcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHRha2UgaWYgdGhlIHdvcmtmbG93IGZhaWxzXG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93T25GYWlsdXJlIHtcbiAgLyoqXG4gICAqIEZhaWxzIHRoZSBpbWFnZSBidWlsZCBpZiB0aGUgd29ya2Zsb3cgZmFpbHNcbiAgICovXG4gIEFCT1JUID0gJ0Fib3J0JyxcblxuICAvKipcbiAgICogQ29udGludWVzIHdpdGggdGhlIGltYWdlIGJ1aWxkIGlmIHRoZSB3b3JrZmxvdyBmYWlsc1xuICAgKi9cbiAgQ09OVElOVUUgPSAnQ29udGludWUnLFxufVxuXG4vKipcbiAqIFRoZSBwYXJhbWV0ZXIgdHlwZSBmb3IgdGhlIHdvcmtmbG93IHBhcmFtZXRlclxuICovXG5leHBvcnQgZW51bSBXb3JrZmxvd1BhcmFtZXRlclR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBwYXJhbWV0ZXIgaGFzIGEgYm9vbGVhbiB2YWx1ZVxuICAgKi9cbiAgQk9PTEVBTiA9ICdib29sZWFuJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBwYXJhbWV0ZXIgaGFzIGFuIGludGVnZXIgdmFsdWVcbiAgICovXG4gIElOVEVHRVIgPSAnaW50ZWdlcicsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgcGFyYW1ldGVyIGhhcyBhIHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgU1RSSU5HID0gJ3N0cmluZycsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgcGFyYW1ldGVyIGhhcyBhIHN0cmluZyBsaXN0IHZhbHVlXG4gICAqL1xuICBTVFJJTkdfTElTVCA9ICdzdHJpbmdMaXN0Jyxcbn1cblxuLyoqXG4gKiBUaGUgc2NoZW1hIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93XG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93U2NoZW1hVmVyc2lvbiB7XG4gIC8qKlxuICAgKiBTY2hlbWEgdmVyc2lvbiAxLjAgZm9yIHRoZSB3b3JrZmxvdyBkb2N1bWVudFxuICAgKi9cbiAgVjFfMCA9ICcxLjAnLFxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICovXG5leHBvcnQgZW51bSBXb3JrZmxvd1R5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBpcyBmb3IgYnVpbGRpbmcgaW1hZ2VzXG4gICAqL1xuICBCVUlMRCA9ICdCVUlMRCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgaXMgZm9yIHRlc3RpbmcgaW1hZ2VzXG4gICAqL1xuICBURVNUID0gJ1RFU1QnLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHdvcmtmbG93IGlzIGZvciBkaXN0cmlidXRpbmcgaW1hZ2VzXG4gICAqL1xuICBESVNUUklCVVRJT04gPSAnRElTVFJJQlVUSU9OJyxcbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAqIC0gRm9yIGlubGluZSB3b3JrZmxvd3MsIGRhdGEgaXMgdGhlIHdvcmtmbG93IHRleHRcbiAqIC0gRm9yIFMzLWJhY2tlZCB3b3JrZmxvd3MsIHVyaSBpcyB0aGUgUzMgVVJMXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dEYXRhQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCB3b3JrZmxvdyBkYXRhLCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiB1cmkgaXMgc2V0XG4gICAqL1xuICByZWFkb25seSBkYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSBVUkksIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIGRhdGEgaXMgc2V0XG4gICAqL1xuICByZWFkb25seSB1cmk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciByZWZlcmVuY2luZyBhbmQgdXBsb2FkaW5nIHdvcmtmbG93IGRhdGFcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdvcmtmbG93RGF0YSB7XG4gIC8qKlxuICAgKiBVcGxvYWRzIHdvcmtmbG93IGRhdGEgZnJvbSBhIGxvY2FsIGZpbGUgdG8gUzMgdG8gdXNlIGFzIHRoZSB3b3JrZmxvdyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIHBhdGggVGhlIGxvY2FsIHBhdGggdG8gdGhlIHdvcmtmbG93IGRhdGEgZmlsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBTMyBhc3NldCB1cGxvYWQgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQXNzZXQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zOiBzM2Fzc2V0cy5Bc3NldE9wdGlvbnMgPSB7fSxcbiAgKTogUzNXb3JrZmxvd0RhdGEge1xuICAgIGNvbnN0IGFzc2V0ID0gbmV3IHMzYXNzZXRzLkFzc2V0KHNjb3BlLCBpZCwgeyAuLi5vcHRpb25zLCBwYXRoIH0pO1xuICAgIHJldHVybiBuZXcgUzNXb3JrZmxvd0RhdGFGcm9tQXNzZXQoYXNzZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZXMgd29ya2Zsb3cgZGF0YSBmcm9tIGEgcHJlLWV4aXN0aW5nIFMzIG9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0IFRoZSBTMyBidWNrZXQgd2hlcmUgdGhlIHdvcmtmbG93IGRhdGEgaXMgc3RvcmVkXG4gICAqIEBwYXJhbSBrZXkgVGhlIFMzIGtleSBvZiB0aGUgd29ya2Zsb3cgZGF0YSBmaWxlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TMyhidWNrZXQ6IHMzLklCdWNrZXQsIGtleTogc3RyaW5nKTogUzNXb3JrZmxvd0RhdGEge1xuICAgIHJldHVybiBuZXcgUzNXb3JrZmxvd0RhdGFGcm9tQnVja2V0S2V5KGJ1Y2tldCwga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBKU09OIG9iamVjdCBhcyB0aGUgd29ya2Zsb3cgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBBbiBpbmxpbmUgSlNPTiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSB3b3JrZmxvdyBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Kc29uT2JqZWN0KGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiBXb3JrZmxvd0RhdGEge1xuICAgIGNvbnN0IGlubGluZURhdGEgPSB5YW1sLnN0cmluZ2lmeShkYXRhLCB7IGluZGVudDogMiB9KTtcbiAgICByZXR1cm4gbmV3IElubGluZVdvcmtmbG93RGF0YShpbmxpbmVEYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBKU09OIG9yIFlBTUwgc3RyaW5nIGFzIHRoZSB3b3JrZmxvdyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIEFuIGlubGluZSBKU09OIG9yIFlBTUwgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgd29ya2Zsb3cgZGF0YVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW5saW5lKGRhdGE6IHN0cmluZyk6IFdvcmtmbG93RGF0YSB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVXb3JrZmxvd0RhdGEoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIHdvcmtmbG93IGRhdGEgdmFsdWUsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb24uXG4gICAqIC0gRm9yIGlubGluZSB3b3JrZmxvd3MsIGRhdGEgaXMgdGhlIHdvcmtmbG93IHRleHRcbiAgICogLSBGb3IgUzMtYmFja2VkIHdvcmtmbG93cywgdXJpIGlzIHRoZSBTMyBVUkxcbiAgICovXG4gIGFic3RyYWN0IHJlbmRlcigpOiBXb3JrZmxvd0RhdGFDb25maWc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBTMy1iYXNlZCB3b3JrZmxvdyBkYXRhIHJlZmVyZW5jZXMsIGNvbnRhaW5pbmcgYWRkaXRpb25hbCBwZXJtaXNzaW9uIGdyYW50IG1ldGhvZHMgb24gdGhlIFMzIG9iamVjdFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUzNXb3JrZmxvd0RhdGEgZXh0ZW5kcyBXb3JrZmxvd0RhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnVja2V0OiBzMy5JQnVja2V0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5idWNrZXQgPSBidWNrZXQ7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIHdvcmtmbG93IGRhdGEgdGV4dCwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBXb3JrZmxvd0RhdGFDb25maWcge1xuICAgIHJldHVybiB7IHVyaTogdGhpcy5idWNrZXQuczNVcmxGb3JPYmplY3QodGhpcy5rZXkpIH07XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcHV0IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgd29ya2Zsb3cgZGF0YSBpbiBTM1xuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UHV0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRQdXQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvdyBkYXRhIGluIFMzXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRSZWFkKGdyYW50ZWUsIHRoaXMua2V5KTtcbiAgfVxufVxuXG5jbGFzcyBJbmxpbmVXb3JrZmxvd0RhdGEgZXh0ZW5kcyBXb3JrZmxvd0RhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRhOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSB0ZXh0LCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IFdvcmtmbG93RGF0YUNvbmZpZyB7XG4gICAgcmV0dXJuIHsgZGF0YTogdGhpcy5kYXRhIH07XG4gIH1cbn1cblxuY2xhc3MgUzNXb3JrZmxvd0RhdGFGcm9tQnVja2V0S2V5IGV4dGVuZHMgUzNXb3JrZmxvd0RhdGEge1xuICBwdWJsaWMgY29uc3RydWN0b3IoYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZykge1xuICAgIHN1cGVyKGJ1Y2tldCwga2V5KTtcbiAgfVxufVxuXG5jbGFzcyBTM1dvcmtmbG93RGF0YUZyb21Bc3NldCBleHRlbmRzIFMzV29ya2Zsb3dEYXRhIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGFzc2V0OiBzM2Fzc2V0cy5Bc3NldCkge1xuICAgIHN1cGVyKGFzc2V0LmJ1Y2tldCwgYXNzZXQuczNPYmplY3RLZXkpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHBhcmFtZXRlciB2YWx1ZSBmb3IgYSB3b3JrZmxvdyBwYXJhbWV0ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIFdvcmtmbG93UGFyYW1ldGVyVmFsdWUge1xuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBib29sZWFuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgYm9vbGVhbiB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Cb29sZWFuKHZhbHVlOiBib29sZWFuKTogV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSB7XG4gICAgcmV0dXJuIG5ldyBXb3JrZmxvd1BhcmFtZXRlclZhbHVlKFt2YWx1ZS50b1N0cmluZygpXSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYW4gaW50ZWdlclxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIGludGVnZXIgdmFsdWUgb2YgdGhlIHBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW50ZWdlcih2YWx1ZTogbnVtYmVyKTogV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSB7XG4gICAgcmV0dXJuIG5ldyBXb3JrZmxvd1BhcmFtZXRlclZhbHVlKFt2YWx1ZS50b1N0cmluZygpXSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIHBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBXb3JrZmxvd1BhcmFtZXRlclZhbHVlIHtcbiAgICByZXR1cm4gbmV3IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUoW3ZhbHVlXSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBzdHJpbmcgbGlzdCB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmdMaXN0KHZhbHVlczogc3RyaW5nW10pOiBXb3JrZmxvd1BhcmFtZXRlclZhbHVlIHtcbiAgICByZXR1cm4gbmV3IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUodmFsdWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgcGFyYW1ldGVyIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZ1tdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIGEgd29ya2Zsb3dcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHdvcmtmbG93IHRvIGV4ZWN1dGUgaW4gdGhlIGltYWdlIGJ1aWxkXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvdzogSVdvcmtmbG93O1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHRha2UgaWYgdGhlIHdvcmtmbG93IGZhaWxzXG4gICAqXG4gICAqIEBkZWZhdWx0IFdvcmtmbG93T25GYWlsdXJlLkFCT1JUXG4gICAqL1xuICByZWFkb25seSBvbkZhaWx1cmU/OiBXb3JrZmxvd09uRmFpbHVyZTtcblxuICAvKipcbiAgICogVGhlIG5hbWVkIHBhcmFsbGVsIGdyb3VwIHRvIGluY2x1ZGUgdGhpcyB3b3JrZmxvdyBpbi4gV29ya2Zsb3dzIGluIHRoZSBzYW1lIHBhcmFsbGVsIGdyb3VwIHJ1biBpbiBwYXJhbGxlbCBvZiBlYWNoXG4gICAqIG90aGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbEdyb3VwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVycyB0byBwYXNzIHRvIHRoZSB3b3JrZmxvdyBhdCBleGVjdXRpb24gdGltZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgdGhlIHdvcmtmbG93IGhhcyBubyBwYXJhbWV0ZXJzLCBvdGhlcndpc2UgdGhlIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHsgW25hbWU6IHN0cmluZ106IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUgfTtcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBXb3JrZmxvd1xuICovXG5hYnN0cmFjdCBjbGFzcyBXb3JrZmxvd0Jhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJV29ya2Zsb3cge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgd29ya2Zsb3dcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IHdvcmtmbG93QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgd29ya2Zsb3dOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgd29ya2Zsb3dUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgd29ya2Zsb3dWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgd29ya2Zsb3dcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMud29ya2Zsb3dBcm5dLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIHdvcmtmbG93XG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldFdvcmtmbG93Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIFdvcmtmbG93LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1pbWFnZS13b3JrZmxvd3MuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgV29ya2Zsb3cgZXh0ZW5kcyBXb3JrZmxvd0Jhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuV29ya2Zsb3cnO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgd29ya2Zsb3cgZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVdvcmtmbG93QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHdvcmtmbG93QXJuOiBzdHJpbmcpOiBJV29ya2Zsb3cge1xuICAgIHJldHVybiB0aGlzLmZyb21Xb3JrZmxvd0F0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHdvcmtmbG93QXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB3b3JrZmxvdyBieSBwcm92aWRpbmcgaXRzIGF0dHJpYnV0ZXMuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nXG4gICAqIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLiBZb3UgbWF5IG5vdFxuICAgKiBwcm92aWRlIGEgZHluYW1pYyBleHByZXNzaW9uIGZvciB0aGUgd29ya2Zsb3dBcm4gb3Igd29ya2Zsb3dUeXBlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Xb3JrZmxvd0F0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFdvcmtmbG93QXR0cmlidXRlcyk6IElXb3JrZmxvdyB7XG4gICAgaWYgKFxuICAgICAgYXR0cnMud29ya2Zsb3dBcm4gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgKGF0dHJzLndvcmtmbG93TmFtZSAhPT0gdW5kZWZpbmVkIHx8IGF0dHJzLndvcmtmbG93VHlwZSAhPT0gdW5kZWZpbmVkIHx8IGF0dHJzLndvcmtmbG93VmVyc2lvbiAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdDb25mbGljdGluZ1dvcmtmbG93QXR0cmlidXRlcycsXG4gICAgICAgICdhIHdvcmtmbG93TmFtZSwgd29ya2Zsb3dUeXBlLCBvciB3b3JrZmxvd1ZlcnNpb24gY2Fubm90IGJlIHByb3ZpZGVkIHdoZW4gYSB3b3JrZmxvd0FybiBpcyBwcm92aWRlZCcsXG4gICAgICAgIHNjb3BlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMud29ya2Zsb3dBcm4gPT09IHVuZGVmaW5lZCAmJiAoYXR0cnMud29ya2Zsb3dOYW1lID09PSB1bmRlZmluZWQgfHwgYXR0cnMud29ya2Zsb3dUeXBlID09PSB1bmRlZmluZWQpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignRWl0aGVyV29ya2Zsb3dBcm5Pck5hbWVBbmRUeXBlUmVxdWlyZWQnLCAnZWl0aGVyIHdvcmtmbG93QXJuLCBvciB3b3JrZmxvd05hbWUgYW5kIHdvcmtmbG93VHlwZSBpcyByZXF1aXJlZCcsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMud29ya2Zsb3dUeXBlICYmIGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoYXR0cnMud29ya2Zsb3dUeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1dvcmtmbG93VHlwZUNhbm5vdEJlVW5yZXNvbHZlZCcsICd3b3JrZmxvd1R5cGUgY2Fubm90IGJlIGFuIHVucmVzb2x2ZWQgdG9rZW4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgd29ya2Zsb3dBcm4gPSAoKCkgPT4ge1xuICAgICAgaWYgKGF0dHJzLndvcmtmbG93QXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJzLndvcmtmbG93QXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICd3b3JrZmxvdycsXG4gICAgICAgIHJlc291cmNlTmFtZTogYCR7YXR0cnMud29ya2Zsb3dUeXBlIS50b0xvd2VyQ2FzZSgpfS8ke2F0dHJzLndvcmtmbG93TmFtZSF9LyR7YXR0cnMud29ya2Zsb3dWZXJzaW9uID8/IExBVEVTVF9WRVJTSU9OfWAsXG4gICAgICB9KTtcbiAgICB9KSgpO1xuXG4gICAgY29uc3QgW3dvcmtmbG93VHlwZSwgd29ya2Zsb3dOYW1lLCB3b3JrZmxvd1ZlcnNpb25dID0gKCgpID0+IHtcbiAgICAgIGlmIChhdHRycy53b3JrZmxvd05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gW2F0dHJzLndvcmtmbG93VHlwZSEudG9VcHBlckNhc2UoKSwgYXR0cnMud29ya2Zsb3dOYW1lLCBhdHRycy53b3JrZmxvd1ZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT05dO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3b3JrZmxvd05hbWVUeXBlVmVyc2lvbiA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICAgIHdvcmtmbG93QXJuLFxuICAgICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAnV29ya2Zsb3dBcm5DYW5ub3RCZVVucmVzb2x2ZWQnLFxuICAgICAgICAgICd0aGUgd29ya2Zsb3dOYW1lLCB3b3JrZmxvd1R5cGUsIGFuZCB3b3JrZmxvd1ZlcnNpb24gaW4gdGhlIHdvcmtmbG93QXJuIGNhbm5vdCBiZSBhbiB1bnJlc29sdmVkIHRva2VuJyxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uLnNwbGl0KCcvJykubGVuZ3RoIDwgMykge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAnSW52YWxpZFdvcmtmbG93QXJuRm9ybWF0JyxcbiAgICAgICAgICAndGhlIHdvcmtmbG93IEFSTiBtdXN0IGVuZCB3aXRoIDx3b3JrZmxvdy10eXBlPi88d29ya2Zsb3ctbmFtZT4vPHdvcmtmbG93LXZlcnNpb24+JyxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd29ya2Zsb3dOYW1lVHlwZVZlcnNpb25TcGxpdCA9IHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uLnNwbGl0KCcvJyk7XG4gICAgICBjb25zdCBbd29ya2Zsb3dUeXBlRnJvbUFybiwgd29ya2Zsb3dOYW1lRnJvbUFybiwgd29ya2Zsb3dWZXJzaW9uRnJvbUFybl0gPSB3b3JrZmxvd05hbWVUeXBlVmVyc2lvblNwbGl0LnNsaWNlKFxuICAgICAgICAwLFxuICAgICAgICAzLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIFt3b3JrZmxvd1R5cGVGcm9tQXJuLnRvVXBwZXJDYXNlKCksIHdvcmtmbG93TmFtZUZyb21Bcm4sIHdvcmtmbG93VmVyc2lvbkZyb21Bcm5dO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBXb3JrZmxvd0Jhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93QXJuID0gd29ya2Zsb3dBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3dOYW1lID0gd29ya2Zsb3dOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93VHlwZSA9IHdvcmtmbG93VHlwZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd1ZlcnNpb24gPSB3b3JrZmxvd1ZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgV29ya2Zsb3cuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzV29ya2Zsb3coeDogYW55KTogeCBpcyBXb3JrZmxvdyB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIFdPUktGTE9XX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93VHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3dcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd1ZlcnNpb246IHN0cmluZztcblxuICBwcml2YXRlIHJlc291cmNlOiBDZm5Xb3JrZmxvdztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdvcmtmbG93UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMud29ya2Zsb3dOYW1lID8/XG4gICAgICAgIGNkay5MYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICAgIGNkay5OYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICAgICAgICBtYXhMZW5ndGg6IDEyOCxcbiAgICAgICAgICAgICAgc2VwYXJhdG9yOiAnLScsXG4gICAgICAgICAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogJy0nLFxuICAgICAgICAgICAgfSkudG9Mb3dlckNhc2UoKSwgLy8gRW5mb3JjZSBsb3dlcmNhc2UgZm9yIHRoZSBhdXRvLWdlbmVyYXRlZCBmYWxsYmFja1xuICAgICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBXT1JLRkxPV19TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnZhbGlkYXRlV29ya2Zsb3dOYW1lKCk7XG5cbiAgICBjb25zdCB3b3JrZmxvd1ZlcnNpb24gPSBwcm9wcy53b3JrZmxvd1ZlcnNpb24gPz8gJzEuMC4wJztcbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmbldvcmtmbG93KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgdmVyc2lvbjogd29ya2Zsb3dWZXJzaW9uLFxuICAgICAgdHlwZTogcHJvcHMud29ya2Zsb3dUeXBlLFxuICAgICAgY2hhbmdlRGVzY3JpcHRpb246IHByb3BzLmNoYW5nZURlc2NyaXB0aW9uLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAga21zS2V5SWQ6IHByb3BzLmttc0tleT8ua2V5QXJuLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIC4uLnByb3BzLmRhdGEucmVuZGVyKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLndvcmtmbG93VmVyc2lvbiA9IHdvcmtmbG93VmVyc2lvbjtcbiAgICB0aGlzLndvcmtmbG93VHlwZSA9IHByb3BzLndvcmtmbG93VHlwZTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IHdvcmtmbG93TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmdldEF0dCgnTmFtZScpLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgd29ya2Zsb3dBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRyQXJuO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVdvcmtmbG93TmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1dvcmtmbG93TmFtZVRvb0xvbmcnLCAndGhlIHdvcmtmbG93TmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1dvcmtmbG93TmFtZUNvbnRhaW5zU3BhY2VzJywgJ3RoZSB3b3JrZmxvd05hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdXb3JrZmxvd05hbWVDb250YWluc1VuZGVyc2NvcmVzJywgJ3RoZSB3b3JrZmxvd05hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUgIT09IHRoaXMucGh5c2ljYWxOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdXb3JrZmxvd05hbWVOb3RMb3dlcmNhc2UnLCAndGhlIHdvcmtmbG93TmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/aws-imagebuilder-alpha",
3
- "version": "2.243.0-alpha.0",
3
+ "version": "2.244.0-alpha.0",
4
4
  "private": false,
5
5
  "description": "The CDK Construct Library for EC2 Image Builder",
6
6
  "main": "lib/index.js",
@@ -77,14 +77,14 @@
77
77
  },
78
78
  "license": "Apache-2.0",
79
79
  "devDependencies": {
80
- "@aws-cdk/cdk-build-tools": "2.243.0-alpha.0",
80
+ "@aws-cdk/cdk-build-tools": "2.244.0-alpha.0",
81
81
  "@aws-cdk/integ-runner": "^2.196.1",
82
- "@aws-cdk/integ-tests-alpha": "2.243.0-alpha.0",
83
- "@aws-cdk/pkglint": "2.243.0-alpha.0",
82
+ "@aws-cdk/integ-tests-alpha": "2.244.0-alpha.0",
83
+ "@aws-cdk/pkglint": "2.244.0-alpha.0",
84
84
  "@aws-sdk/client-inspector2": "^3",
85
85
  "@types/aws-lambda": "^8.10.160",
86
86
  "@types/jest": "^29.5.14",
87
- "aws-cdk-lib": "2.243.0",
87
+ "aws-cdk-lib": "2.244.0",
88
88
  "constructs": "^10.5.0",
89
89
  "jest": "^29.7.0"
90
90
  },
@@ -96,7 +96,7 @@
96
96
  ],
97
97
  "homepage": "https://github.com/aws/aws-cdk",
98
98
  "peerDependencies": {
99
- "aws-cdk-lib": "^2.243.0",
99
+ "aws-cdk-lib": "^2.244.0",
100
100
  "constructs": "^10.5.0"
101
101
  },
102
102
  "engines": {