@trudb/tru-common-lib 0.0.749 → 0.0.751

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.
@@ -7,35 +7,41 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/material/dialog";
8
8
  import * as i2 from "@angular/common/http";
9
9
  import * as i3 from "../../services/tru-app-environment";
10
- import * as i4 from "@angular/common";
11
- import * as i5 from "@angular/forms";
12
- import * as i6 from "@angular/material/button";
13
- import * as i7 from "@angular/material/checkbox";
14
- import * as i8 from "@angular/material/input";
15
- import * as i9 from "@angular/material/form-field";
16
- import * as i10 from "angular-password-strength-meter";
10
+ import * as i4 from "../../services/tru-user";
11
+ import * as i5 from "@angular/common";
12
+ import * as i6 from "@angular/forms";
13
+ import * as i7 from "@angular/material/button";
14
+ import * as i8 from "@angular/material/checkbox";
15
+ import * as i9 from "@angular/material/input";
16
+ import * as i10 from "@angular/material/form-field";
17
+ import * as i11 from "angular-password-strength-meter";
17
18
  export class TruPasswordDialog {
18
19
  dialogRef;
19
20
  http;
20
21
  appEnvironment;
22
+ user;
21
23
  data;
22
24
  currentPasswordControl = new FormControl('', []);
23
25
  newPasswordControl = new FormControl('', []);
24
26
  confirmNewPasswordControl = new FormControl('', []);
25
27
  showPasswordControl = new FormControl(false, []);
28
+ username = null;
26
29
  message = null;
27
30
  showPassword = false;
28
31
  passwordScore = 0;
29
32
  errorMsg = null;
33
+ busy = false;
30
34
  baseUrl = '';
31
- constructor(dialogRef, http, appEnvironment, data) {
35
+ subs = [];
36
+ constructor(dialogRef, http, appEnvironment, user, data) {
32
37
  this.dialogRef = dialogRef;
33
38
  this.http = http;
34
39
  this.appEnvironment = appEnvironment;
40
+ this.user = user;
35
41
  this.data = data;
42
+ this.username = this.user.username;
36
43
  this.baseUrl = this.appEnvironment.appUri;
37
44
  }
38
- ngOnInit() { }
39
45
  onPasswordStrengthChanged = (score) => {
40
46
  this.passwordScore = score;
41
47
  };
@@ -54,25 +60,36 @@ export class TruPasswordDialog {
54
60
  let passwordChangeRequest = new TruPasswordChangeRequest();
55
61
  passwordChangeRequest.currentPassword = this.currentPasswordControl.value;
56
62
  passwordChangeRequest.newPassword = this.newPasswordControl.value;
63
+ this.busy = true;
57
64
  this.http
58
65
  .post(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/changePassword`, passwordChangeRequest)
59
66
  .subscribe(() => {
67
+ this.busy = false;
60
68
  this.dialogRef.close(true);
61
69
  }, (ex) => {
70
+ this.busy = false;
62
71
  this.errorMsg = ex.error;
63
72
  });
64
73
  };
65
74
  onDismiss = () => {
66
75
  this.dialogRef.close(false);
67
76
  };
68
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruPasswordDialog, deps: [{ token: i1.MatDialogRef }, { token: i2.HttpClient }, { token: i3.TruAppEnvironment }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: TruPasswordDialog, selector: "tru-password-dialog", ngImport: i0, template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n Change Password\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n", styles: [".tru-control-container{font-family:Calibri,Helvetica,Arial,sans-serif!important}label{font-size:12px}.tru-select-option{min-height:unset}::ng-deep .mdc-text-field{border:0px;padding:0}::ng-deep .mdc-text-field--disabled .mdc-text-field__input{color:#00000061!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:unset!important}::ng-deep .tru-control-container .mdc-notched-outline__leading{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}::ng-deep .tru-control-container .mdc-notched-outline__trailing{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}::ng-deep .tru-control-container .mdc-text-field--outlined{padding:0!important}::ng-deep .tru-control-container .mdc-text-field__input{width:calc(100% - 10px)!important}::ng-deep .tru-control-container .mat-mdc-select{width:calc(100% - 10px)!important}::ng-deep .tru-control-container.search .mat-mdc-form-field-infix,::ng-deep .tru-control-container.edit .mat-mdc-form-field-infix{padding:0 0 5px!important;min-height:unset!important}::ng-deep .tru-control-container input{font-size:12px!important;padding-left:5px}::ng-deep .tru-control-container mat-select{font-size:12px!important;padding-left:5px}::ng-deep .tru-control-container .mat-mdc-form-field-focus-overlay{background-color:unset}::ng-deep .tru-control-container .mat-mdc-checkbox{height:30px;float:left}::ng-deep .tru-control-container .mdc-checkbox__ripple{display:none}::ng-deep .tru-control-container .mdc-checkbox__background{border:1px solid currentColor}::ng-deep .tru-control-container .mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{background-color:#006dcc}::ng-deep .tru-control-container .mat-mdc-checkbox label{color:#0000008a}::ng-deep .mat-mdc-form-field-icon-prefix>.mat-icon{padding:0 0 5px!important}::ng-deep .mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 0 5px!important}::ng-deep .tru-control-container .mdc-text-field{overflow:visible}::ng-deep label{font-size:12px}::ng-deep .tru-control-container .mdc-text-field{will-change:unset!important}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #006dcc;--mdc-checkbox-selected-hover-icon-color: #006dcc;--mdc-checkbox-selected-icon-color: #006dcc;--mdc-checkbox-selected-pressed-icon-color: #006dcc;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.tru-control-container{margin-bottom:10px;margin-right:10px}::ng-deep .tru-control-container .mat-mdc-form-field{display:inline!important}::ng-deep .tru-control-container .mat-mdc-form-field-infix{padding:0!important;min-height:unset!important}::ng-deep .tru-control-container mat-label{font-size:14px;font-weight:700}::ng-deep .tru-control-container input{font-size:12px;padding-left:5px}::ng-deep .tru-control-container mat-select{font-size:12px;padding-left:5px}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__leading{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__notch{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__trailing{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-bottom-align:before{content:unset!important}::ng-deep .tru-control-container path{color:#a9a9a9}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid+div:before{border-color:red}\n", "::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mdc-dialog__title{padding:20px 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important;overflow:hidden}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}.tru-password-dialog .tru-password-dialog-control-wrapper{margin-bottom:20px}.tru-password-dialog-error-msg{color:red;font-size:11px}mat-checkbox{float:right!important}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "component", type: i10.PasswordStrengthMeterComponent, selector: "password-strength-meter", inputs: ["password", "minPasswordLength", "enableFeedback", "enableAsync", "colors", "numberOfProgressBarItems"], outputs: ["strengthChange"] }] });
77
+ ngOnInit() {
78
+ this.subs.push(this.currentPasswordControl.valueChanges.subscribe(() => {
79
+ this.errorMsg = null;
80
+ }));
81
+ }
82
+ ngOnDestroy() {
83
+ this.subs.forEach(s => s.unsubscribe());
84
+ }
85
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruPasswordDialog, deps: [{ token: i1.MatDialogRef }, { token: i2.HttpClient }, { token: i3.TruAppEnvironment }, { token: i4.TruUser }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
86
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: TruPasswordDialog, selector: "tru-password-dialog", ngImport: i0, template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <h1>Change Password</h1>\r\n <p>for {{username}}</p>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() || busy || errorMsg ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n", styles: [".tru-control-container{font-family:Calibri,Helvetica,Arial,sans-serif!important}label{font-size:12px}.tru-select-option{min-height:unset}::ng-deep .mdc-text-field{border:0px;padding:0}::ng-deep .mdc-text-field--disabled .mdc-text-field__input{color:#00000061!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:unset!important}::ng-deep .tru-control-container .mdc-notched-outline__leading{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}::ng-deep .tru-control-container .mdc-notched-outline__trailing{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}::ng-deep .tru-control-container .mdc-text-field--outlined{padding:0!important}::ng-deep .tru-control-container .mdc-text-field__input{width:calc(100% - 10px)!important}::ng-deep .tru-control-container .mat-mdc-select{width:calc(100% - 10px)!important}::ng-deep .tru-control-container.search .mat-mdc-form-field-infix,::ng-deep .tru-control-container.edit .mat-mdc-form-field-infix{padding:0 0 5px!important;min-height:unset!important}::ng-deep .tru-control-container input{font-size:12px!important;padding-left:5px}::ng-deep .tru-control-container mat-select{font-size:12px!important;padding-left:5px}::ng-deep .tru-control-container .mat-mdc-form-field-focus-overlay{background-color:unset}::ng-deep .tru-control-container .mat-mdc-checkbox{height:30px;float:left}::ng-deep .tru-control-container .mdc-checkbox__ripple{display:none}::ng-deep .tru-control-container .mdc-checkbox__background{border:1px solid currentColor}::ng-deep .tru-control-container .mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{background-color:#006dcc}::ng-deep .tru-control-container .mat-mdc-checkbox label{color:#0000008a}::ng-deep .mat-mdc-form-field-icon-prefix>.mat-icon{padding:0 0 5px!important}::ng-deep .mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 0 5px!important}::ng-deep .tru-control-container .mdc-text-field{overflow:visible}::ng-deep label{font-size:12px}::ng-deep .tru-control-container .mdc-text-field{will-change:unset!important}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #006dcc;--mdc-checkbox-selected-hover-icon-color: #006dcc;--mdc-checkbox-selected-icon-color: #006dcc;--mdc-checkbox-selected-pressed-icon-color: #006dcc;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.tru-control-container{margin-bottom:10px;margin-right:10px}::ng-deep .tru-control-container .mat-mdc-form-field{display:inline!important}::ng-deep .tru-control-container .mat-mdc-form-field-infix{padding:0!important;min-height:unset!important}::ng-deep .tru-control-container mat-label{font-size:14px;font-weight:700}::ng-deep .tru-control-container input{font-size:12px;padding-left:5px}::ng-deep .tru-control-container mat-select{font-size:12px;padding-left:5px}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__leading{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__notch{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__trailing{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-bottom-align:before{content:unset!important}::ng-deep .tru-control-container path{color:#a9a9a9}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid+div:before{border-color:red}\n", "::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mdc-dialog__title{padding:20px 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important;overflow:hidden}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}.tru-password-dialog .tru-password-dialog-control-wrapper{margin-bottom:20px}.tru-password-dialog-error-msg{color:red!important;font-size:11px!important}mat-checkbox{float:right!important}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i11.PasswordStrengthMeterComponent, selector: "password-strength-meter", inputs: ["password", "minPasswordLength", "enableFeedback", "enableAsync", "colors", "numberOfProgressBarItems"], outputs: ["strengthChange"] }] });
70
87
  }
71
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruPasswordDialog, decorators: [{
72
89
  type: Component,
73
- args: [{ selector: 'tru-password-dialog', template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n Change Password\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n", styles: [".tru-control-container{font-family:Calibri,Helvetica,Arial,sans-serif!important}label{font-size:12px}.tru-select-option{min-height:unset}::ng-deep .mdc-text-field{border:0px;padding:0}::ng-deep .mdc-text-field--disabled .mdc-text-field__input{color:#00000061!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:unset!important}::ng-deep .tru-control-container .mdc-notched-outline__leading{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}::ng-deep .tru-control-container .mdc-notched-outline__trailing{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}::ng-deep .tru-control-container .mdc-text-field--outlined{padding:0!important}::ng-deep .tru-control-container .mdc-text-field__input{width:calc(100% - 10px)!important}::ng-deep .tru-control-container .mat-mdc-select{width:calc(100% - 10px)!important}::ng-deep .tru-control-container.search .mat-mdc-form-field-infix,::ng-deep .tru-control-container.edit .mat-mdc-form-field-infix{padding:0 0 5px!important;min-height:unset!important}::ng-deep .tru-control-container input{font-size:12px!important;padding-left:5px}::ng-deep .tru-control-container mat-select{font-size:12px!important;padding-left:5px}::ng-deep .tru-control-container .mat-mdc-form-field-focus-overlay{background-color:unset}::ng-deep .tru-control-container .mat-mdc-checkbox{height:30px;float:left}::ng-deep .tru-control-container .mdc-checkbox__ripple{display:none}::ng-deep .tru-control-container .mdc-checkbox__background{border:1px solid currentColor}::ng-deep .tru-control-container .mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{background-color:#006dcc}::ng-deep .tru-control-container .mat-mdc-checkbox label{color:#0000008a}::ng-deep .mat-mdc-form-field-icon-prefix>.mat-icon{padding:0 0 5px!important}::ng-deep .mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 0 5px!important}::ng-deep .tru-control-container .mdc-text-field{overflow:visible}::ng-deep label{font-size:12px}::ng-deep .tru-control-container .mdc-text-field{will-change:unset!important}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #006dcc;--mdc-checkbox-selected-hover-icon-color: #006dcc;--mdc-checkbox-selected-icon-color: #006dcc;--mdc-checkbox-selected-pressed-icon-color: #006dcc;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.tru-control-container{margin-bottom:10px;margin-right:10px}::ng-deep .tru-control-container .mat-mdc-form-field{display:inline!important}::ng-deep .tru-control-container .mat-mdc-form-field-infix{padding:0!important;min-height:unset!important}::ng-deep .tru-control-container mat-label{font-size:14px;font-weight:700}::ng-deep .tru-control-container input{font-size:12px;padding-left:5px}::ng-deep .tru-control-container mat-select{font-size:12px;padding-left:5px}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__leading{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__notch{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__trailing{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-bottom-align:before{content:unset!important}::ng-deep .tru-control-container path{color:#a9a9a9}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid+div:before{border-color:red}\n", "::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mdc-dialog__title{padding:20px 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important;overflow:hidden}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}.tru-password-dialog .tru-password-dialog-control-wrapper{margin-bottom:20px}.tru-password-dialog-error-msg{color:red;font-size:11px}mat-checkbox{float:right!important}\n"] }]
74
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.HttpClient }, { type: i3.TruAppEnvironment }, { type: TruPasswordDialog, decorators: [{
90
+ args: [{ selector: 'tru-password-dialog', template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <h1>Change Password</h1>\r\n <p>for {{username}}</p>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() || busy || errorMsg ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n", styles: [".tru-control-container{font-family:Calibri,Helvetica,Arial,sans-serif!important}label{font-size:12px}.tru-select-option{min-height:unset}::ng-deep .mdc-text-field{border:0px;padding:0}::ng-deep .mdc-text-field--disabled .mdc-text-field__input{color:#00000061!important}::ng-deep .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:unset!important}::ng-deep .tru-control-container .mdc-notched-outline__leading{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}::ng-deep .tru-control-container .mdc-notched-outline__trailing{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}::ng-deep .tru-control-container .mdc-text-field--outlined{padding:0!important}::ng-deep .tru-control-container .mdc-text-field__input{width:calc(100% - 10px)!important}::ng-deep .tru-control-container .mat-mdc-select{width:calc(100% - 10px)!important}::ng-deep .tru-control-container.search .mat-mdc-form-field-infix,::ng-deep .tru-control-container.edit .mat-mdc-form-field-infix{padding:0 0 5px!important;min-height:unset!important}::ng-deep .tru-control-container input{font-size:12px!important;padding-left:5px}::ng-deep .tru-control-container mat-select{font-size:12px!important;padding-left:5px}::ng-deep .tru-control-container .mat-mdc-form-field-focus-overlay{background-color:unset}::ng-deep .tru-control-container .mat-mdc-checkbox{height:30px;float:left}::ng-deep .tru-control-container .mdc-checkbox__ripple{display:none}::ng-deep .tru-control-container .mdc-checkbox__background{border:1px solid currentColor}::ng-deep .tru-control-container .mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{background-color:#006dcc}::ng-deep .tru-control-container .mat-mdc-checkbox label{color:#0000008a}::ng-deep .mat-mdc-form-field-icon-prefix>.mat-icon{padding:0 0 5px!important}::ng-deep .mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 0 5px!important}::ng-deep .tru-control-container .mdc-text-field{overflow:visible}::ng-deep label{font-size:12px}::ng-deep .tru-control-container .mdc-text-field{will-change:unset!important}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #006dcc;--mdc-checkbox-selected-hover-icon-color: #006dcc;--mdc-checkbox-selected-icon-color: #006dcc;--mdc-checkbox-selected-pressed-icon-color: #006dcc;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.tru-control-container{margin-bottom:10px;margin-right:10px}::ng-deep .tru-control-container .mat-mdc-form-field{display:inline!important}::ng-deep .tru-control-container .mat-mdc-form-field-infix{padding:0!important;min-height:unset!important}::ng-deep .tru-control-container mat-label{font-size:14px;font-weight:700}::ng-deep .tru-control-container input{font-size:12px;padding-left:5px}::ng-deep .tru-control-container mat-select{font-size:12px;padding-left:5px}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__leading{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__notch{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__trailing{border-color:#bd362f}::ng-deep .tru-control-container .mat-mdc-form-field-bottom-align:before{content:unset!important}::ng-deep .tru-control-container path{color:#a9a9a9}::ng-deep .tru-control-container .mat-mdc-form-field-flex.invalid+div:before{border-color:red}\n", "::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mdc-dialog__title{padding:20px 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important;overflow:hidden}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}.tru-password-dialog .tru-password-dialog-control-wrapper{margin-bottom:20px}.tru-password-dialog-error-msg{color:red!important;font-size:11px!important}mat-checkbox{float:right!important}\n"] }]
91
+ }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.HttpClient }, { type: i3.TruAppEnvironment }, { type: i4.TruUser }, { type: TruPasswordDialog, decorators: [{
75
92
  type: Inject,
76
93
  args: [MAT_DIALOG_DATA]
77
94
  }] }] });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXBhc3N3b3JkLWRpYWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1kaWFsb2cvdHJ1LXBhc3N3b3JkLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1kaWFsb2cvdHJ1LXBhc3N3b3JkLWRpYWxvZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT2pGLE1BQU0sT0FBTyxpQkFBaUI7SUFhVDtJQUNUO0lBQ0E7SUFDd0I7SUFmbEMsc0JBQXNCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsa0JBQWtCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYseUJBQXlCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUYsbUJBQW1CLEdBQWdCLElBQUksV0FBVyxDQUFVLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV2RSxPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLGFBQWEsR0FBa0IsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsR0FBa0IsSUFBSSxDQUFDO0lBRXZCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFFN0IsWUFBbUIsU0FBMEMsRUFDbkQsSUFBZ0IsRUFDaEIsY0FBaUMsRUFDVCxJQUF1QjtRQUh0QyxjQUFTLEdBQVQsU0FBUyxDQUFpQztRQUNuRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNULFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDNUMsQ0FBQztJQUVELFFBQVEsS0FBSSxDQUFDO0lBRWIseUJBQXlCLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQyxDQUFBO0lBRUQscUJBQXFCLEdBQUcsR0FBRyxFQUFFO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDLENBQUE7SUFFRCxTQUFTLEdBQUcsR0FBRyxFQUFFO1FBQ2YsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUs7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUs7WUFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUs7WUFDcEMsSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDO1lBQ3JELENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0UsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxDQUFBO0lBRUQsU0FBUyxHQUFHLEdBQVMsRUFBRTtRQUNyQixJQUFJLHFCQUFxQixHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUMzRCxxQkFBcUIsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQztRQUMxRSxxQkFBcUIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUNsRSxJQUFJLENBQUMsSUFBSTthQUNOLElBQUksQ0FBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8saUJBQWlCLEVBQUUscUJBQXFCLENBQUM7YUFDNUYsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFBO0lBRUQsU0FBUyxHQUFHLEdBQVEsRUFBRTtRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUE7dUdBdERVLGlCQUFpQix5R0FnQmxCLGVBQWU7MkZBaEJkLGlCQUFpQiwyRENiOUIsczVEQStDQTs7MkZEbENhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxxQkFBcUI7OzBCQW9CNUIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1hcHAtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBUUlVfQVVUSF9DT05GSUcgfSBmcm9tIFwiLi4vbG9naW4vY2xhc3Nlcy90cnUtYXV0aC1jb25maWdcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVHJ1UGFzc3dvcmRDaGFuZ2VSZXF1ZXN0IH0gZnJvbSAnLi9jbGFzc2VzL3RydS1wYXNzd29yZC1jaGFuZ2UtcmVxdWVzdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1wYXNzd29yZC1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtcGFzc3dvcmQtZGlhbG9nLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuLi8uLi9hc3NldHMvdHJ1LXN0eWxlLmNzcycsICcuL3RydS1wYXNzd29yZC1kaWFsb2cuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydVBhc3N3b3JkRGlhbG9nIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjdXJyZW50UGFzc3dvcmRDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPignJywgW10pO1xyXG4gIG5ld1Bhc3N3b3JkQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oJycsIFtdKTtcclxuICBjb25maXJtTmV3UGFzc3dvcmRDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPignJywgW10pO1xyXG4gIHNob3dQYXNzd29yZENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KGZhbHNlLCBbXSk7XHJcblxyXG4gIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNob3dQYXNzd29yZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhc3N3b3JkU2NvcmU6IG51bWJlciB8IG51bGwgPSAwO1xyXG4gIGVycm9yTXNnOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFRydVBhc3N3b3JkRGlhbG9nPixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBUcnVQYXNzd29yZERpYWxvZykge1xyXG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5hcHBFbnZpcm9ubWVudC5hcHBVcmk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIG9uUGFzc3dvcmRTdHJlbmd0aENoYW5nZWQgPSAoc2NvcmU6IG51bWJlciB8IG51bGwpID0+IHtcclxuICAgIHRoaXMucGFzc3dvcmRTY29yZSA9IHNjb3JlO1xyXG4gIH1cclxuXHJcbiAgb25TaG93UGFzc3dvcmRDbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zaG93UGFzc3dvcmQgPSB0aGlzLnNob3dQYXNzd29yZENvbnRyb2wudmFsdWU7XHJcbiAgfVxyXG5cclxuICBjYW5TdWJtaXQgPSAoKSA9PiB7XHJcbiAgICBsZXQgY2FuU3VibWl0ID0gdGhpcy5jdXJyZW50UGFzc3dvcmRDb250cm9sLnZhbHVlICYmXHJcbiAgICAgIHRoaXMubmV3UGFzc3dvcmRDb250cm9sLnZhbHVlICYmXHJcbiAgICAgIHRoaXMuY29uZmlybU5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZSAmJlxyXG4gICAgICB0aGlzLnBhc3N3b3JkU2NvcmUgIT09IG51bGwgJiYgdGhpcy5wYXNzd29yZFNjb3JlID4gMSAmJlxyXG4gICAgICAodGhpcy5uZXdQYXNzd29yZENvbnRyb2wudmFsdWUgPT09IHRoaXMuY29uZmlybU5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZSk7XHJcbiAgICByZXR1cm4gY2FuU3VibWl0O1xyXG4gIH1cclxuXHJcbiAgb25Db25maXJtID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHBhc3N3b3JkQ2hhbmdlUmVxdWVzdCA9IG5ldyBUcnVQYXNzd29yZENoYW5nZVJlcXVlc3QoKTtcclxuICAgIHBhc3N3b3JkQ2hhbmdlUmVxdWVzdC5jdXJyZW50UGFzc3dvcmQgPSB0aGlzLmN1cnJlbnRQYXNzd29yZENvbnRyb2wudmFsdWU7XHJcbiAgICBwYXNzd29yZENoYW5nZVJlcXVlc3QubmV3UGFzc3dvcmQgPSB0aGlzLm5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZTtcclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke1RSVV9BVVRIX0NPTkZJRy5hdXRoVXJsfS9jaGFuZ2VQYXNzd29yZGAsIHBhc3N3b3JkQ2hhbmdlUmVxdWVzdClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XHJcbiAgICAgIH0sIChleDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1zZyA9IGV4LmVycm9yO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRGlzbWlzcyA9ICgpOnZvaWQgPT4ge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwibWF0LWRpYWxvZy10aXRsZVwiPlxyXG4gIENoYW5nZSBQYXNzd29yZFxyXG48L2Rpdj5cclxuXHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibWF0LWRpYWxvZy1jb250ZW50IHRydS1jb250cm9sLWNvbnRhaW5lciB0cnUtcGFzc3dvcmQtZGlhbG9nXCI+XHJcbiAgPHA+e3ttZXNzYWdlfX08L3A+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtcGFzc3dvcmQtZGlhbG9nLWNvbnRyb2wtd3JhcHBlclwiPlxyXG4gICAgPG1hdC1sYWJlbD5DdXJyZW50IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjbmV3SW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY3VycmVudFBhc3N3b3JkQ29udHJvbFwiXHJcbiAgICAgICAgICAgICBbdHlwZV09XCJzaG93UGFzc3dvcmQgPyAndGV4dCcgOiAncGFzc3dvcmQnXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8cCBjbGFzcz1cInRydS1wYXNzd29yZC1kaWFsb2ctZXJyb3ItbXNnXCIgKm5nSWY9XCJlcnJvck1zZ1wiPnt7ZXJyb3JNc2d9fTwvcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LXBhc3N3b3JkLWRpYWxvZy1jb250cm9sLXdyYXBwZXJcIj5cclxuICAgIDxtYXQtbGFiZWw+TmV3IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjbmV3SW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmV3UGFzc3dvcmRDb250cm9sXCJcclxuICAgICAgICAgICAgIFt0eXBlXT1cInNob3dQYXNzd29yZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIiAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxwYXNzd29yZC1zdHJlbmd0aC1tZXRlciBbcGFzc3dvcmRdPVwibmV3UGFzc3dvcmRDb250cm9sLnZhbHVlXCIgKHN0cmVuZ3RoQ2hhbmdlKT1cIm9uUGFzc3dvcmRTdHJlbmd0aENoYW5nZWQoJGV2ZW50KVwiIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1wYXNzd29yZC1kaWFsb2ctY29udHJvbC13cmFwcGVyXCI+XHJcbiAgICA8bWF0LWxhYmVsPkNvbmZpcm0gTmV3IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjY29uZmlybUlucHV0XHJcbiAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW3R5cGVdPVwic2hvd1Bhc3N3b3JkID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cInNob3dQYXNzd29yZENvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd1Bhc3N3b3JkQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCI+XHJcbiAgICBTaG93IFBhc3N3b3JkXHJcbiAgPC9tYXQtY2hlY2tib3g+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJtYXQtZGlhbG9nLWFjdGlvbnNcIj5cclxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJvbkRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjYW5TdWJtaXQoKSA/ICdkaXNhYmxlZCcgOiBudWxsXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ29uZmlybSgpXCI+U3VibWl0PC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXBhc3N3b3JkLWRpYWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1kaWFsb2cvdHJ1LXBhc3N3b3JkLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1kaWFsb2cvdHJ1LXBhc3N3b3JkLWRpYWxvZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVNqRixNQUFNLE9BQU8saUJBQWlCO0lBaUJuQjtJQUNDO0lBQ0E7SUFDQTtJQUN3QjtJQXBCbEMsc0JBQXNCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsa0JBQWtCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYseUJBQXlCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUYsbUJBQW1CLEdBQWdCLElBQUksV0FBVyxDQUFVLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV2RSxRQUFRLEdBQWtCLElBQUksQ0FBQztJQUMvQixPQUFPLEdBQWtCLElBQUksQ0FBQztJQUM5QixZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLGFBQWEsR0FBa0IsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsR0FBa0IsSUFBSSxDQUFDO0lBQy9CLElBQUksR0FBWSxLQUFLLENBQUM7SUFFZCxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQ3JCLElBQUksR0FBd0IsRUFBRSxDQUFDO0lBRXZDLFlBQ1MsU0FBMEMsRUFDekMsSUFBZ0IsRUFDaEIsY0FBaUMsRUFDakMsSUFBYSxFQUNXLElBQXVCO1FBSmhELGNBQVMsR0FBVCxTQUFTLENBQWlDO1FBQ3pDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDVyxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDNUMsQ0FBQztJQUVELHlCQUF5QixHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUMsQ0FBQTtJQUVELHFCQUFxQixHQUFHLEdBQUcsRUFBRTtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFDckQsQ0FBQyxDQUFBO0lBRUQsU0FBUyxHQUFHLEdBQUcsRUFBRTtRQUNmLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLO1lBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLO1lBQzdCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLO1lBQ3BDLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQztZQUNyRCxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNFLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsQ0FBQTtJQUVELFNBQVMsR0FBRyxHQUFTLEVBQUU7UUFDckIsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDM0QscUJBQXFCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7UUFDMUUscUJBQXFCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7UUFFbEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUk7YUFDTixJQUFJLENBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLGlCQUFpQixFQUFFLHFCQUFxQixDQUFDO2FBQzVGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQTtJQUVELFNBQVMsR0FBRyxHQUFTLEVBQUU7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFBO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7dUdBeEVVLGlCQUFpQixnSUFxQmxCLGVBQWU7MkZBckJkLGlCQUFpQiwyRENmOUIsZzlEQWdEQTs7MkZEakNhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxxQkFBcUI7OzBCQXlCNUIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1hcHAtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBUUlVfQVVUSF9DT05GSUcgfSBmcm9tIFwiLi4vbG9naW4vY2xhc3Nlcy90cnUtYXV0aC1jb25maWdcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVHJ1UGFzc3dvcmRDaGFuZ2VSZXF1ZXN0IH0gZnJvbSAnLi9jbGFzc2VzL3RydS1wYXNzd29yZC1jaGFuZ2UtcmVxdWVzdCc7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdXNlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtcGFzc3dvcmQtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LXBhc3N3b3JkLWRpYWxvZy5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi4vLi4vYXNzZXRzL3RydS1zdHlsZS5jc3MnLCAnLi90cnUtcGFzc3dvcmQtZGlhbG9nLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVQYXNzd29yZERpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY3VycmVudFBhc3N3b3JkQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oJycsIFtdKTtcclxuICBuZXdQYXNzd29yZENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCcnLCBbXSk7XHJcbiAgY29uZmlybU5ld1Bhc3N3b3JkQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oJycsIFtdKTtcclxuICBzaG93UGFzc3dvcmRDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihmYWxzZSwgW10pO1xyXG5cclxuICB1c2VybmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd1Bhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFzc3dvcmRTY29yZTogbnVtYmVyIHwgbnVsbCA9IDA7XHJcbiAgZXJyb3JNc2c6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGJ1c3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VHJ1UGFzc3dvcmREaWFsb2c+LFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIHVzZXI6IFRydVVzZXIsXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFRydVBhc3N3b3JkRGlhbG9nKSB7XHJcbiAgICB0aGlzLnVzZXJuYW1lID0gdGhpcy51c2VyLnVzZXJuYW1lO1xyXG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5hcHBFbnZpcm9ubWVudC5hcHBVcmk7XHJcbiAgfVxyXG5cclxuICBvblBhc3N3b3JkU3RyZW5ndGhDaGFuZ2VkID0gKHNjb3JlOiBudW1iZXIgfCBudWxsKSA9PiB7XHJcbiAgICB0aGlzLnBhc3N3b3JkU2NvcmUgPSBzY29yZTtcclxuICB9XHJcblxyXG4gIG9uU2hvd1Bhc3N3b3JkQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgIHRoaXMuc2hvd1Bhc3N3b3JkID0gdGhpcy5zaG93UGFzc3dvcmRDb250cm9sLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2FuU3VibWl0ID0gKCkgPT4ge1xyXG4gICAgbGV0IGNhblN1Ym1pdCA9IHRoaXMuY3VycmVudFBhc3N3b3JkQ29udHJvbC52YWx1ZSAmJlxyXG4gICAgICB0aGlzLm5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZSAmJlxyXG4gICAgICB0aGlzLmNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2wudmFsdWUgJiZcclxuICAgICAgdGhpcy5wYXNzd29yZFNjb3JlICE9PSBudWxsICYmIHRoaXMucGFzc3dvcmRTY29yZSA+IDEgJiZcclxuICAgICAgKHRoaXMubmV3UGFzc3dvcmRDb250cm9sLnZhbHVlID09PSB0aGlzLmNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2wudmFsdWUpO1xyXG4gICAgcmV0dXJuIGNhblN1Ym1pdDtcclxuICB9XHJcblxyXG4gIG9uQ29uZmlybSA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBwYXNzd29yZENoYW5nZVJlcXVlc3QgPSBuZXcgVHJ1UGFzc3dvcmRDaGFuZ2VSZXF1ZXN0KCk7XHJcbiAgICBwYXNzd29yZENoYW5nZVJlcXVlc3QuY3VycmVudFBhc3N3b3JkID0gdGhpcy5jdXJyZW50UGFzc3dvcmRDb250cm9sLnZhbHVlO1xyXG4gICAgcGFzc3dvcmRDaGFuZ2VSZXF1ZXN0Lm5ld1Bhc3N3b3JkID0gdGhpcy5uZXdQYXNzd29yZENvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgdGhpcy5idXN5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke1RSVV9BVVRIX0NPTkZJRy5hdXRoVXJsfS9jaGFuZ2VQYXNzd29yZGAsIHBhc3N3b3JkQ2hhbmdlUmVxdWVzdClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XHJcbiAgICAgIH0sIChleDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lcnJvck1zZyA9IGV4LmVycm9yO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRGlzbWlzcyA9ICgpOiB2b2lkID0+IHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5jdXJyZW50UGFzc3dvcmRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cIm1hdC1kaWFsb2ctdGl0bGVcIj5cclxuICA8aDE+Q2hhbmdlIFBhc3N3b3JkPC9oMT5cclxuICA8cD5mb3Ige3t1c2VybmFtZX19PC9wPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibWF0LWRpYWxvZy1jb250ZW50IHRydS1jb250cm9sLWNvbnRhaW5lciB0cnUtcGFzc3dvcmQtZGlhbG9nXCI+XHJcbiAgPHA+e3ttZXNzYWdlfX08L3A+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtcGFzc3dvcmQtZGlhbG9nLWNvbnRyb2wtd3JhcHBlclwiPlxyXG4gICAgPG1hdC1sYWJlbD5DdXJyZW50IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjbmV3SW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY3VycmVudFBhc3N3b3JkQ29udHJvbFwiXHJcbiAgICAgICAgICAgICBbdHlwZV09XCJzaG93UGFzc3dvcmQgPyAndGV4dCcgOiAncGFzc3dvcmQnXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8cCBjbGFzcz1cInRydS1wYXNzd29yZC1kaWFsb2ctZXJyb3ItbXNnXCIgKm5nSWY9XCJlcnJvck1zZ1wiPnt7ZXJyb3JNc2d9fTwvcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LXBhc3N3b3JkLWRpYWxvZy1jb250cm9sLXdyYXBwZXJcIj5cclxuICAgIDxtYXQtbGFiZWw+TmV3IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjbmV3SW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmV3UGFzc3dvcmRDb250cm9sXCJcclxuICAgICAgICAgICAgIFt0eXBlXT1cInNob3dQYXNzd29yZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIiAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxwYXNzd29yZC1zdHJlbmd0aC1tZXRlciBbcGFzc3dvcmRdPVwibmV3UGFzc3dvcmRDb250cm9sLnZhbHVlXCIgKHN0cmVuZ3RoQ2hhbmdlKT1cIm9uUGFzc3dvcmRTdHJlbmd0aENoYW5nZWQoJGV2ZW50KVwiIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1wYXNzd29yZC1kaWFsb2ctY29udHJvbC13cmFwcGVyXCI+XHJcbiAgICA8bWF0LWxhYmVsPkNvbmZpcm0gTmV3IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjY29uZmlybUlucHV0XHJcbiAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2xcIlxyXG4gICAgICAgICAgICAgW3R5cGVdPVwic2hvd1Bhc3N3b3JkID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cInNob3dQYXNzd29yZENvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd1Bhc3N3b3JkQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCI+XHJcbiAgICBTaG93IFBhc3N3b3JkXHJcbiAgPC9tYXQtY2hlY2tib3g+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJtYXQtZGlhbG9nLWFjdGlvbnNcIj5cclxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJvbkRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjYW5TdWJtaXQoKSB8fCBidXN5IHx8IGVycm9yTXNnID8gJ2Rpc2FibGVkJyA6IG51bGxcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25Db25maXJtKClcIj5TdWJtaXQ8L2J1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==