@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
93 lines • 14.6 kB
JavaScript
import { Directive, forwardRef, Input } from '@angular/core';
import { ValidationAlertSeverity } from '../validation-alert/validation-alert';
import { FormValidatorBase } from './base-validator';
import { SME_VALIDATORS } from './sme-validator';
import * as i0 from "@angular/core";
/**
* Provider for the FormFieldValidatorDirective directive
*/
export const MACHINE_NAME_VALIDATOR = {
provide: SME_VALIDATORS,
useExisting: forwardRef(() => MachineNameValidatorDirective),
multi: true
};
/**
* A Directive that marks a field as invalid if it does not conform to machine naming standards
*/
export class MachineNameValidatorDirective extends FormValidatorBase {
/**
* Instantiates a new instance of MachineNameValidatorDirective
*/
constructor() {
super();
/**
* Internal placeholder for smeMachineNameTrim
*/
this.internalSmeMachineNameTrim = true;
this.invalidCharacters = new RegExp(/(\\|\/|\*|\?|'|"|<|>|\|)/, 'i');
this.invalidCharactersWithSpace = new RegExp(/(\\|\/|\*|\?|'|"|<|>|\||\s)/, 'i');
}
/**
* Indicates that the value should be trimmed before validation. Only use when trimming the value before using it.
*/
get smeMachineNameTrim() { return this.internalSmeMachineNameTrim; }
set smeMachineNameTrim(value) {
// warn if value is undefined or truthy and not 'false' string
this.internalSmeMachineNameTrim = MsftSme.isUndefined(value) || (!!value && `${value}` !== 'false');
this.revalidate();
}
/**
* Implementation of Validator interface.
* Validates the value of the field attached to this control to be a valid machine name
* @param c The FormControl attached to this element
* @return null when valid, otherwise returns a validation object
*/
validate(c) {
const alerts = super.validate(c) || {};
let value = c.value;
// dont check for required here. The field could be optional in some forms
// if there is no value, then just skip checking
if (!value) {
return this.alertsOrNull(alerts);
}
const strings = MsftSme.self().Resources.strings;
if (this.smeMachineNameTrim) {
value = value.trim();
alerts['smeMachineName.trimWarning'] = {
valid: true,
message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.whitespaceWillBeTrimmed,
severity: ValidationAlertSeverity.Warning
};
if (this.invalidCharacters.test(c.value)) {
alerts['smeMachineName.noInvalidCharacters'] = {
message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.invalidCharacters
};
}
}
else if (this.invalidCharactersWithSpace.test(c.value)) {
alerts['smeMachineName.noInvalidCharacters'] = {
message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.invalidCharactersWithSpace
};
}
if (value.startsWith('.')) {
alerts['smeMachineName.noStartWithPeriod'] = {
message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.noStartWithPeriod
};
}
return this.alertsOrNull(alerts);
}
}
/** @nocollapse */ MachineNameValidatorDirective.ɵfac = function MachineNameValidatorDirective_Factory(t) { return new (t || MachineNameValidatorDirective)(); };
/** @nocollapse */ MachineNameValidatorDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MachineNameValidatorDirective, selectors: [["sme-form-field", "smeMachineName", "", "formControlName", ""], ["sme-form-field", "smeMachineName", "", "formControl", ""], ["sme-form-field", "smeMachineName", "", "ngModel", ""]], inputs: { smeMachineNameTrim: "smeMachineNameTrim" }, features: [i0.ɵɵProvidersFeature([MACHINE_NAME_VALIDATOR]), i0.ɵɵInheritDefinitionFeature] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MachineNameValidatorDirective, [{
type: Directive,
args: [{
// eslint-disable-next-line max-len
selector: 'sme-form-field[smeMachineName][formControlName],sme-form-field[smeMachineName][formControl],sme-form-field[smeMachineName][ngModel]',
providers: [MACHINE_NAME_VALIDATOR]
}]
}], function () { return []; }, { smeMachineNameTrim: [{
type: Input,
args: ['smeMachineNameTrim']
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjaGluZS1uYW1lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2Zvcm0vdmFsaWRhdG9ycy9tYWNoaW5lLW5hbWUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFHN0UsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBbUI7SUFDbEQsT0FBTyxFQUFFLGNBQWM7SUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztJQUM1RCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7R0FFRztBQU1ILE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxpQkFBaUI7SUFzQ2hFOztPQUVHO0lBQ0g7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQVRaOztXQUVHO1FBQ0ssK0JBQTBCLEdBQUcsSUFBSSxDQUFDO1FBT3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxNQUFNLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQXZCRDs7T0FFRztJQUNILElBQ1csa0JBQWtCLEtBQWMsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLElBQVcsa0JBQWtCLENBQUMsS0FBYztRQUN4Qyw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsS0FBSyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFnQkQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsQ0FBYztRQUMxQixNQUFNLE1BQU0sR0FBcUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxLQUFLLEdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUU1QiwwRUFBMEU7UUFDMUUsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEM7UUFDRCxNQUFNLE9BQU8sR0FBWSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHO2dCQUNuQyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLHVCQUF1QjtnQkFDaEcsUUFBUSxFQUFFLHVCQUF1QixDQUFDLE9BQU87YUFDNUMsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHO29CQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtpQkFDN0YsQ0FBQzthQUNMO1NBQ0o7YUFBTSxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RELE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHO2dCQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLDBCQUEwQjthQUN0RyxDQUFDO1NBQ0w7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLEdBQUc7Z0JBQ3pDLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCO2FBQzdGLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDOzs2SEF4RlEsNkJBQTZCOytHQUE3Qiw2QkFBNkIsNlJBRjNCLENBQUMsc0JBQXNCLENBQUM7dUZBRTFCLDZCQUE2QjtjQUx6QyxTQUFTO2VBQUM7Z0JBQ1AsbUNBQW1DO2dCQUNuQyxRQUFRLEVBQUUscUlBQXFJO2dCQUMvSSxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzthQUN0QztzQ0EyQmMsa0JBQWtCO2tCQUQ1QixLQUFLO21CQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIFN0YXRpY1Byb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdHJpbmdzIH0gZnJvbSAnLi4vLi4vLi4vZ2VuZXJhdGVkL3N0cmluZ3MnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uQWxlcnRzLCBWYWxpZGF0aW9uQWxlcnRTZXZlcml0eSB9IGZyb20gJy4uL3ZhbGlkYXRpb24tYWxlcnQvdmFsaWRhdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IEZvcm1WYWxpZGF0b3JCYXNlIH0gZnJvbSAnLi9iYXNlLXZhbGlkYXRvcic7XHJcbmltcG9ydCB7IFNNRV9WQUxJREFUT1JTIH0gZnJvbSAnLi9zbWUtdmFsaWRhdG9yJztcclxuXHJcbi8qKlxyXG4gKiBQcm92aWRlciBmb3IgdGhlIEZvcm1GaWVsZFZhbGlkYXRvckRpcmVjdGl2ZSBkaXJlY3RpdmVcclxuICovXHJcbmV4cG9ydCBjb25zdCBNQUNISU5FX05BTUVfVkFMSURBVE9SOiBTdGF0aWNQcm92aWRlciA9IHtcclxuICAgIHByb3ZpZGU6IFNNRV9WQUxJREFUT1JTLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWFjaGluZU5hbWVWYWxpZGF0b3JEaXJlY3RpdmUpLFxyXG4gICAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbi8qKlxyXG4gKiBBIERpcmVjdGl2ZSB0aGF0IG1hcmtzIGEgZmllbGQgYXMgaW52YWxpZCBpZiBpdCBkb2VzIG5vdCBjb25mb3JtIHRvIG1hY2hpbmUgbmFtaW5nIHN0YW5kYXJkc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxyXG4gICAgc2VsZWN0b3I6ICdzbWUtZm9ybS1maWVsZFtzbWVNYWNoaW5lTmFtZV1bZm9ybUNvbnRyb2xOYW1lXSxzbWUtZm9ybS1maWVsZFtzbWVNYWNoaW5lTmFtZV1bZm9ybUNvbnRyb2xdLHNtZS1mb3JtLWZpZWxkW3NtZU1hY2hpbmVOYW1lXVtuZ01vZGVsXScsXHJcbiAgICBwcm92aWRlcnM6IFtNQUNISU5FX05BTUVfVkFMSURBVE9SXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFjaGluZU5hbWVWYWxpZGF0b3JEaXJlY3RpdmUgZXh0ZW5kcyBGb3JtVmFsaWRhdG9yQmFzZSB7XHJcbiAgICAvKipcclxuICAgICAqIFJlZ2V4IHRvIGRldGVjdCBpbnZhbGlkIGNoYXJhY3RlcnMuIERvZXMgbm90IGFsbG93OlxyXG4gICAgICogIC0gYmFja3NsYXNoIChcXClcclxuICAgICAqICAtIHNsYXNoIG1hcmsgKC8pXHJcbiAgICAgKiAgLSBhc3RlcmlzayAoKilcclxuICAgICAqICAtIHF1ZXN0aW9uIG1hcmsgKD8pXHJcbiAgICAgKiAgLSBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKCcpXHJcbiAgICAgKiAgLSBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFwiKVxyXG4gICAgICogIC0gbGVzcyB0aGFuIHNpZ24gKDwpXHJcbiAgICAgKiAgLSBncmVhdGVyIHRoYW4gc2lnbiAoPilcclxuICAgICAqICAtIHZlcnRpY2FsIGJhciAofClcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbnZhbGlkQ2hhcmFjdGVyczogUmVnRXhwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnZXggdG8gZGV0ZWN0IGludmFsaWQgY2hhcmFjdGVycy4gRG9lcyBub3QgYWxsb3c6XHJcbiAgICAgKiAgLSBldmVyeXRoaW5nIGZyb20gQHNlZSBpbnZhbGlkQ2hhcmFjdGVyc1xyXG4gICAgICogIC0gc3BhY2UgKCApXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW52YWxpZENoYXJhY3RlcnNXaXRoU3BhY2U6IFJlZ0V4cDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSB2YWx1ZSBzaG91bGQgYmUgdHJpbW1lZCBiZWZvcmUgdmFsaWRhdGlvbi4gT25seSB1c2Ugd2hlbiB0cmltbWluZyB0aGUgdmFsdWUgYmVmb3JlIHVzaW5nIGl0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoJ3NtZU1hY2hpbmVOYW1lVHJpbScpXHJcbiAgICBwdWJsaWMgZ2V0IHNtZU1hY2hpbmVOYW1lVHJpbSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuaW50ZXJuYWxTbWVNYWNoaW5lTmFtZVRyaW07IH1cclxuICAgIHB1YmxpYyBzZXQgc21lTWFjaGluZU5hbWVUcmltKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgLy8gd2FybiBpZiB2YWx1ZSBpcyB1bmRlZmluZWQgb3IgdHJ1dGh5IGFuZCBub3QgJ2ZhbHNlJyBzdHJpbmdcclxuICAgICAgICB0aGlzLmludGVybmFsU21lTWFjaGluZU5hbWVUcmltID0gTXNmdFNtZS5pc1VuZGVmaW5lZCh2YWx1ZSkgfHwgKCEhdmFsdWUgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJyk7XHJcbiAgICAgICAgdGhpcy5yZXZhbGlkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnRlcm5hbCBwbGFjZWhvbGRlciBmb3Igc21lTWFjaGluZU5hbWVUcmltXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW50ZXJuYWxTbWVNYWNoaW5lTmFtZVRyaW0gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5zdGFudGlhdGVzIGEgbmV3IGluc3RhbmNlIG9mIE1hY2hpbmVOYW1lVmFsaWRhdG9yRGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5pbnZhbGlkQ2hhcmFjdGVycyA9IG5ldyBSZWdFeHAoLyhcXFxcfFxcL3xcXCp8XFw/fCd8XCJ8PHw+fFxcfCkvLCAnaScpO1xyXG4gICAgICAgIHRoaXMuaW52YWxpZENoYXJhY3RlcnNXaXRoU3BhY2UgPSBuZXcgUmVnRXhwKC8oXFxcXHxcXC98XFwqfFxcP3wnfFwifDx8PnxcXHx8XFxzKS8sICdpJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBWYWxpZGF0b3IgaW50ZXJmYWNlLlxyXG4gICAgICogVmFsaWRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgYXR0YWNoZWQgdG8gdGhpcyBjb250cm9sIHRvIGJlIGEgdmFsaWQgbWFjaGluZSBuYW1lXHJcbiAgICAgKiBAcGFyYW0gYyBUaGUgRm9ybUNvbnRyb2wgYXR0YWNoZWQgdG8gdGhpcyBlbGVtZW50XHJcbiAgICAgKiBAcmV0dXJuIG51bGwgd2hlbiB2YWxpZCwgb3RoZXJ3aXNlIHJldHVybnMgYSB2YWxpZGF0aW9uIG9iamVjdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uQWxlcnRzIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgYWxlcnRzOiBWYWxpZGF0aW9uQWxlcnRzID0gc3VwZXIudmFsaWRhdGUoYykgfHwge307XHJcbiAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgPSBjLnZhbHVlO1xyXG5cclxuICAgICAgICAvLyBkb250IGNoZWNrIGZvciByZXF1aXJlZCBoZXJlLiBUaGUgZmllbGQgY291bGQgYmUgb3B0aW9uYWwgaW4gc29tZSBmb3Jtc1xyXG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIHZhbHVlLCB0aGVuIGp1c3Qgc2tpcCBjaGVja2luZ1xyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnRzT3JOdWxsKGFsZXJ0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN0cmluZ3MgPSA8U3RyaW5ncz5Nc2Z0U21lLnNlbGYoKS5SZXNvdXJjZXMuc3RyaW5ncztcclxuICAgICAgICBpZiAodGhpcy5zbWVNYWNoaW5lTmFtZVRyaW0pIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XHJcbiAgICAgICAgICAgIGFsZXJ0c1snc21lTWFjaGluZU5hbWUudHJpbVdhcm5pbmcnXSA9IHtcclxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uRm9ybS5WYWxpZGF0aW9uLk1hY2hpbmVOYW1lLndoaXRlc3BhY2VXaWxsQmVUcmltbWVkLFxyXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFZhbGlkYXRpb25BbGVydFNldmVyaXR5Lldhcm5pbmdcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW52YWxpZENoYXJhY3RlcnMudGVzdChjLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgYWxlcnRzWydzbWVNYWNoaW5lTmFtZS5ub0ludmFsaWRDaGFyYWN0ZXJzJ10gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uRm9ybS5WYWxpZGF0aW9uLk1hY2hpbmVOYW1lLmludmFsaWRDaGFyYWN0ZXJzXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmludmFsaWRDaGFyYWN0ZXJzV2l0aFNwYWNlLnRlc3QoYy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgYWxlcnRzWydzbWVNYWNoaW5lTmFtZS5ub0ludmFsaWRDaGFyYWN0ZXJzJ10gPSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBzdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5Gb3JtLlZhbGlkYXRpb24uTWFjaGluZU5hbWUuaW52YWxpZENoYXJhY3RlcnNXaXRoU3BhY2VcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcuJykpIHtcclxuICAgICAgICAgICAgYWxlcnRzWydzbWVNYWNoaW5lTmFtZS5ub1N0YXJ0V2l0aFBlcmlvZCddID0ge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uRm9ybS5WYWxpZGF0aW9uLk1hY2hpbmVOYW1lLm5vU3RhcnRXaXRoUGVyaW9kXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5hbGVydHNPck51bGwoYWxlcnRzKTtcclxuICAgIH1cclxufVxyXG4iXX0=