@gravitee/ui-particles-angular 12.22.2-angular-18-96ea9e3 → 12.22.2-angular-18-e536208

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.
@@ -186,7 +186,7 @@ export class GioFormCronComponent {
186
186
  useExisting: forwardRef(() => GioFormCronComponent),
187
187
  multi: true,
188
188
  },
189
- ], ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"label\"><ng-content select=\"gio-form-cron-label\"></ng-content></div>\n<div class=\"wrapper\" [class.smallDisplay]=\"smallDisplay\" [class.disabled]=\"isDisabled\">\n <ng-container *ngIf=\"internalFormGroup\" [formGroup]=\"internalFormGroup\">\n <div class=\"menu\">\n <mat-button-toggle-group class=\"gio-button-toggle-group menu__mode\" name=\"mode\" aria-label=\"Cron mode\" formControlName=\"mode\">\n <mat-button-toggle value=\"secondly\" matTooltip=\"Secondly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 's' : 'Secondly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"minutely\" matTooltip=\"Minutely\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'm' : 'Minutely'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"hourly\" matTooltip=\"Hourly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'h' : 'Hourly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"daily\" matTooltip=\"Daily\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'D' : 'Daily'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"weekly\" matTooltip=\"Weekly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'W' : 'Weekly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"monthly\" matTooltip=\"Monthly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'M' : 'Monthly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"custom\" matTooltip=\"Custom\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'C' : 'Custom'\n }}</mat-button-toggle>\n </mat-button-toggle-group>\n <button\n *ngIf=\"value && !isDisabled\"\n mat-button\n aria-label=\"Clear\"\n matTooltip=\"Clear\"\n type=\"button\"\n (click)=\"onClear({ touched: true })\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container [ngSwitch]=\"internalFormGroup.get('mode')?.value\">\n <ng-container *ngSwitchCase=\"'secondly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Second</mat-label>\n <mat-select formControlName=\"secondInterval\">\n <mat-option *ngFor=\"let second of seconds\" [value]=\"second\">{{ second }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'minutely'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minuteInterval\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'hourly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hourInterval\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'daily'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayInterval\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'weekly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-medium\">\n <mat-label>Day of the week</mat-label>\n <mat-select formControlName=\"dayOfWeek\">\n <mat-option *ngFor=\"let day of daysOfWeek; let index = index\" [value]=\"index\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'monthly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">On the </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayOfMonth\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> of every month at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <div class=\"modeForm\">\n <mat-form-field class=\"modeForm__field-custom\">\n <mat-label>Cron expression</mat-label>\n <input matInput formControlName=\"customExpression\" placeholder=\"* * * * * *\" />\n </mat-form-field>\n </div>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"value; else placeholder\" class=\"preview\">\n <span *ngIf=\"internalFormGroup.get('mode')?.value !== 'custom'\" class=\"preview__value\">\n {{ value }}\n </span>\n <span class=\"preview__hint\">{{ expressionDescription }}</span>\n </div>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"placeholder\">No cron expression defined.</div>\n </ng-template>\n</div>\n<div class=\"hint\"><ng-content select=\"gio-form-cron-hint\"></ng-content></div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;min-width:342px;flex-direction:column}::ng-deep gio-form-cron{--mat-form-field-container-height: 48px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 12px;--mat-form-field-filled-with-label-container-padding-top: 12px;--mat-form-field-filled-with-label-container-padding-bottom: 12px}.label{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-left:10px;color:var(--mdc-outlined-text-field-label-text-color)}.label:empty{display:none}.wrapper{display:inline-flex;flex-direction:column;padding:8px;border:1px solid var(--mdc-outlined-text-field-outline-color);border-radius:4px}.wrapper:hover:not(.disabled){padding:8px;border:1px solid var(--mdc-outlined-text-field-hover-outline-color)}.wrapper .menu{display:inline-flex;align-items:center;justify-content:space-between;margin-bottom:4px}.wrapper .menu__mode{border:none;margin-bottom:0}.wrapper .modeForm{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:8px;column-gap:4px}.wrapper .modeForm__field-small,.wrapper .modeForm__field-medium,.wrapper .modeForm__field-custom{display:inline-block;height:52px}.wrapper .modeForm__field-small{width:124px}.wrapper .modeForm__field-medium{width:158px}.wrapper .modeForm__field-custom{width:100%}.wrapper .preview,.wrapper .placeholder{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:4px;background-color:#e7e8ef;color:#000}.wrapper .preview__hint,.wrapper .placeholder{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.wrapper.disabled .preview,.wrapper.disabled .placeholder{opacity:.4}.hint{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-top:2px;padding-left:10px}.hint:empty{display:none}:host(.ng-invalid.ng-touched) .wrapper{padding:8px;border-width:1px;border-color:var(--mdc-outlined-text-field-error-outline-color)}:host(.ng-invalid.ng-touched) .wrapper .preview,:host(.ng-invalid.ng-touched) .wrapper .placeholder{color:#ec4899}:host(.ng-invalid.ng-touched) .label,:host(.ng-invalid.ng-touched) .hint{color:var(--mdc-outlined-text-field-error-outline-color)}:host(.disabled) .wrapper{border-color:#e7e8ef}:host(.disabled) .wrapper,:host(.disabled) .hint,:host(.disabled) .label{color:#d3d5dc}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { 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.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
189
+ ], ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"label\"><ng-content select=\"gio-form-cron-label\"></ng-content></div>\n<div class=\"wrapper\" [class.smallDisplay]=\"smallDisplay\" [class.disabled]=\"isDisabled\">\n <ng-container *ngIf=\"internalFormGroup\" [formGroup]=\"internalFormGroup\">\n <div class=\"menu\">\n <mat-button-toggle-group class=\"gio-button-toggle-group menu__mode\" name=\"mode\" aria-label=\"Cron mode\" formControlName=\"mode\" [hideMultipleSelectionIndicator]=\"false\">\n <mat-button-toggle value=\"secondly\" matTooltip=\"Secondly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 's' : 'Secondly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"minutely\" matTooltip=\"Minutely\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'm' : 'Minutely'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"hourly\" matTooltip=\"Hourly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'h' : 'Hourly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"daily\" matTooltip=\"Daily\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'D' : 'Daily'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"weekly\" matTooltip=\"Weekly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'W' : 'Weekly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"monthly\" matTooltip=\"Monthly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'M' : 'Monthly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"custom\" matTooltip=\"Custom\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'C' : 'Custom'\n }}</mat-button-toggle>\n </mat-button-toggle-group>\n <button\n *ngIf=\"value && !isDisabled\"\n mat-button\n aria-label=\"Clear\"\n matTooltip=\"Clear\"\n type=\"button\"\n (click)=\"onClear({ touched: true })\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container [ngSwitch]=\"internalFormGroup.get('mode')?.value\">\n <ng-container *ngSwitchCase=\"'secondly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Second</mat-label>\n <mat-select formControlName=\"secondInterval\">\n <mat-option *ngFor=\"let second of seconds\" [value]=\"second\">{{ second }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'minutely'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minuteInterval\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'hourly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hourInterval\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'daily'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayInterval\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'weekly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-medium\">\n <mat-label>Day of the week</mat-label>\n <mat-select formControlName=\"dayOfWeek\">\n <mat-option *ngFor=\"let day of daysOfWeek; let index = index\" [value]=\"index\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'monthly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">On the </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayOfMonth\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> of every month at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <div class=\"modeForm\">\n <mat-form-field class=\"modeForm__field-custom\">\n <mat-label>Cron expression</mat-label>\n <input matInput formControlName=\"customExpression\" placeholder=\"* * * * * *\" />\n </mat-form-field>\n </div>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"value; else placeholder\" class=\"preview\">\n <span *ngIf=\"internalFormGroup.get('mode')?.value !== 'custom'\" class=\"preview__value\">\n {{ value }}\n </span>\n <span class=\"preview__hint\">{{ expressionDescription }}</span>\n </div>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"placeholder\">No cron expression defined.</div>\n </ng-template>\n</div>\n<div class=\"hint\"><ng-content select=\"gio-form-cron-hint\"></ng-content></div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;min-width:342px;flex-direction:column}::ng-deep gio-form-cron{--mat-form-field-container-height: 48px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 12px;--mat-form-field-filled-with-label-container-padding-top: 12px;--mat-form-field-filled-with-label-container-padding-bottom: 12px}.label{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-left:10px;color:var(--mdc-outlined-text-field-label-text-color)}.label:empty{display:none}.wrapper{display:inline-flex;flex-direction:column;padding:8px;border:1px solid var(--mdc-outlined-text-field-outline-color);border-radius:4px}.wrapper:hover:not(.disabled){padding:8px;border:1px solid var(--mdc-outlined-text-field-hover-outline-color)}.wrapper .menu{display:inline-flex;align-items:center;justify-content:space-between;margin-bottom:4px}.wrapper .menu__mode{border:none;margin-bottom:0}.wrapper .modeForm{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:8px;column-gap:4px}.wrapper .modeForm__field-small,.wrapper .modeForm__field-medium,.wrapper .modeForm__field-custom{display:inline-block;height:52px}.wrapper .modeForm__field-small{width:124px}.wrapper .modeForm__field-medium{width:158px}.wrapper .modeForm__field-custom{width:100%}.wrapper .preview,.wrapper .placeholder{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:4px;background-color:#e7e8ef;color:#000}.wrapper .preview__hint,.wrapper .placeholder{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.wrapper.disabled .preview,.wrapper.disabled .placeholder{opacity:.4}.hint{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-top:2px;padding-left:10px}.hint:empty{display:none}:host(.ng-invalid.ng-touched) .wrapper{padding:8px;border-width:1px;border-color:var(--mdc-outlined-text-field-error-outline-color)}:host(.ng-invalid.ng-touched) .wrapper .preview,:host(.ng-invalid.ng-touched) .wrapper .placeholder{color:#ec4899}:host(.ng-invalid.ng-touched) .label,:host(.ng-invalid.ng-touched) .hint{color:var(--mdc-outlined-text-field-error-outline-color)}:host(.disabled) .wrapper{border-color:#e7e8ef}:host(.disabled) .wrapper,:host(.disabled) .hint,:host(.disabled) .label{color:#d3d5dc}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { 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.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
190
190
  }
191
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioFormCronComponent, decorators: [{
192
192
  type: Component,
@@ -201,7 +201,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
201
201
  useExisting: forwardRef(() => GioFormCronComponent),
202
202
  multi: true,
203
203
  },
204
- ], template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"label\"><ng-content select=\"gio-form-cron-label\"></ng-content></div>\n<div class=\"wrapper\" [class.smallDisplay]=\"smallDisplay\" [class.disabled]=\"isDisabled\">\n <ng-container *ngIf=\"internalFormGroup\" [formGroup]=\"internalFormGroup\">\n <div class=\"menu\">\n <mat-button-toggle-group class=\"gio-button-toggle-group menu__mode\" name=\"mode\" aria-label=\"Cron mode\" formControlName=\"mode\">\n <mat-button-toggle value=\"secondly\" matTooltip=\"Secondly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 's' : 'Secondly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"minutely\" matTooltip=\"Minutely\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'm' : 'Minutely'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"hourly\" matTooltip=\"Hourly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'h' : 'Hourly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"daily\" matTooltip=\"Daily\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'D' : 'Daily'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"weekly\" matTooltip=\"Weekly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'W' : 'Weekly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"monthly\" matTooltip=\"Monthly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'M' : 'Monthly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"custom\" matTooltip=\"Custom\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'C' : 'Custom'\n }}</mat-button-toggle>\n </mat-button-toggle-group>\n <button\n *ngIf=\"value && !isDisabled\"\n mat-button\n aria-label=\"Clear\"\n matTooltip=\"Clear\"\n type=\"button\"\n (click)=\"onClear({ touched: true })\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container [ngSwitch]=\"internalFormGroup.get('mode')?.value\">\n <ng-container *ngSwitchCase=\"'secondly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Second</mat-label>\n <mat-select formControlName=\"secondInterval\">\n <mat-option *ngFor=\"let second of seconds\" [value]=\"second\">{{ second }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'minutely'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minuteInterval\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'hourly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hourInterval\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'daily'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayInterval\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'weekly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-medium\">\n <mat-label>Day of the week</mat-label>\n <mat-select formControlName=\"dayOfWeek\">\n <mat-option *ngFor=\"let day of daysOfWeek; let index = index\" [value]=\"index\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'monthly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">On the </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayOfMonth\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> of every month at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <div class=\"modeForm\">\n <mat-form-field class=\"modeForm__field-custom\">\n <mat-label>Cron expression</mat-label>\n <input matInput formControlName=\"customExpression\" placeholder=\"* * * * * *\" />\n </mat-form-field>\n </div>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"value; else placeholder\" class=\"preview\">\n <span *ngIf=\"internalFormGroup.get('mode')?.value !== 'custom'\" class=\"preview__value\">\n {{ value }}\n </span>\n <span class=\"preview__hint\">{{ expressionDescription }}</span>\n </div>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"placeholder\">No cron expression defined.</div>\n </ng-template>\n</div>\n<div class=\"hint\"><ng-content select=\"gio-form-cron-hint\"></ng-content></div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;min-width:342px;flex-direction:column}::ng-deep gio-form-cron{--mat-form-field-container-height: 48px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 12px;--mat-form-field-filled-with-label-container-padding-top: 12px;--mat-form-field-filled-with-label-container-padding-bottom: 12px}.label{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-left:10px;color:var(--mdc-outlined-text-field-label-text-color)}.label:empty{display:none}.wrapper{display:inline-flex;flex-direction:column;padding:8px;border:1px solid var(--mdc-outlined-text-field-outline-color);border-radius:4px}.wrapper:hover:not(.disabled){padding:8px;border:1px solid var(--mdc-outlined-text-field-hover-outline-color)}.wrapper .menu{display:inline-flex;align-items:center;justify-content:space-between;margin-bottom:4px}.wrapper .menu__mode{border:none;margin-bottom:0}.wrapper .modeForm{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:8px;column-gap:4px}.wrapper .modeForm__field-small,.wrapper .modeForm__field-medium,.wrapper .modeForm__field-custom{display:inline-block;height:52px}.wrapper .modeForm__field-small{width:124px}.wrapper .modeForm__field-medium{width:158px}.wrapper .modeForm__field-custom{width:100%}.wrapper .preview,.wrapper .placeholder{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:4px;background-color:#e7e8ef;color:#000}.wrapper .preview__hint,.wrapper .placeholder{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.wrapper.disabled .preview,.wrapper.disabled .placeholder{opacity:.4}.hint{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-top:2px;padding-left:10px}.hint:empty{display:none}:host(.ng-invalid.ng-touched) .wrapper{padding:8px;border-width:1px;border-color:var(--mdc-outlined-text-field-error-outline-color)}:host(.ng-invalid.ng-touched) .wrapper .preview,:host(.ng-invalid.ng-touched) .wrapper .placeholder{color:#ec4899}:host(.ng-invalid.ng-touched) .label,:host(.ng-invalid.ng-touched) .hint{color:var(--mdc-outlined-text-field-error-outline-color)}:host(.disabled) .wrapper{border-color:#e7e8ef}:host(.disabled) .wrapper,:host(.disabled) .hint,:host(.disabled) .label{color:#d3d5dc}\n"] }]
204
+ ], template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"label\"><ng-content select=\"gio-form-cron-label\"></ng-content></div>\n<div class=\"wrapper\" [class.smallDisplay]=\"smallDisplay\" [class.disabled]=\"isDisabled\">\n <ng-container *ngIf=\"internalFormGroup\" [formGroup]=\"internalFormGroup\">\n <div class=\"menu\">\n <mat-button-toggle-group class=\"gio-button-toggle-group menu__mode\" name=\"mode\" aria-label=\"Cron mode\" formControlName=\"mode\" [hideMultipleSelectionIndicator]=\"false\">\n <mat-button-toggle value=\"secondly\" matTooltip=\"Secondly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 's' : 'Secondly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"minutely\" matTooltip=\"Minutely\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'm' : 'Minutely'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"hourly\" matTooltip=\"Hourly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'h' : 'Hourly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"daily\" matTooltip=\"Daily\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'D' : 'Daily'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"weekly\" matTooltip=\"Weekly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'W' : 'Weekly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"monthly\" matTooltip=\"Monthly\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'M' : 'Monthly'\n }}</mat-button-toggle>\n <mat-button-toggle value=\"custom\" matTooltip=\"Custom\" [matTooltipDisabled]=\"!smallDisplay\">{{\n smallDisplay ? 'C' : 'Custom'\n }}</mat-button-toggle>\n </mat-button-toggle-group>\n <button\n *ngIf=\"value && !isDisabled\"\n mat-button\n aria-label=\"Clear\"\n matTooltip=\"Clear\"\n type=\"button\"\n (click)=\"onClear({ touched: true })\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container [ngSwitch]=\"internalFormGroup.get('mode')?.value\">\n <ng-container *ngSwitchCase=\"'secondly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Second</mat-label>\n <mat-select formControlName=\"secondInterval\">\n <mat-option *ngFor=\"let second of seconds\" [value]=\"second\">{{ second }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'minutely'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minuteInterval\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'hourly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hourInterval\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'daily'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayInterval\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hour(s)</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minute(s)</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'weekly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">Every </span>\n <mat-form-field class=\"modeForm__field-medium\">\n <mat-label>Day of the week</mat-label>\n <mat-select formControlName=\"dayOfWeek\">\n <mat-option *ngFor=\"let day of daysOfWeek; let index = index\" [value]=\"index\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'monthly'\">\n <div class=\"modeForm\">\n <span class=\"cron-form-label\">On the </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Day(s)</mat-label>\n <mat-select formControlName=\"dayOfMonth\">\n <mat-option *ngFor=\"let day of daysOfMonth\" [value]=\"day\">{{ day }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\"> of every month at </span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Hours</mat-label>\n <mat-select formControlName=\"hours\">\n <mat-option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour }}</mat-option>\n </mat-select>\n </mat-form-field>\n <span class=\"cron-form-label\">:</span>\n <mat-form-field class=\"modeForm__field-small\">\n <mat-label>Minutes</mat-label>\n <mat-select formControlName=\"minutes\">\n <mat-option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{ minute }}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <div class=\"modeForm\">\n <mat-form-field class=\"modeForm__field-custom\">\n <mat-label>Cron expression</mat-label>\n <input matInput formControlName=\"customExpression\" placeholder=\"* * * * * *\" />\n </mat-form-field>\n </div>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"value; else placeholder\" class=\"preview\">\n <span *ngIf=\"internalFormGroup.get('mode')?.value !== 'custom'\" class=\"preview__value\">\n {{ value }}\n </span>\n <span class=\"preview__hint\">{{ expressionDescription }}</span>\n </div>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"placeholder\">No cron expression defined.</div>\n </ng-template>\n</div>\n<div class=\"hint\"><ng-content select=\"gio-form-cron-hint\"></ng-content></div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;min-width:342px;flex-direction:column}::ng-deep gio-form-cron{--mat-form-field-container-height: 48px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 12px;--mat-form-field-filled-with-label-container-padding-top: 12px;--mat-form-field-filled-with-label-container-padding-bottom: 12px}.label{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-left:10px;color:var(--mdc-outlined-text-field-label-text-color)}.label:empty{display:none}.wrapper{display:inline-flex;flex-direction:column;padding:8px;border:1px solid var(--mdc-outlined-text-field-outline-color);border-radius:4px}.wrapper:hover:not(.disabled){padding:8px;border:1px solid var(--mdc-outlined-text-field-hover-outline-color)}.wrapper .menu{display:inline-flex;align-items:center;justify-content:space-between;margin-bottom:4px}.wrapper .menu__mode{border:none;margin-bottom:0}.wrapper .modeForm{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:8px;column-gap:4px}.wrapper .modeForm__field-small,.wrapper .modeForm__field-medium,.wrapper .modeForm__field-custom{display:inline-block;height:52px}.wrapper .modeForm__field-small{width:124px}.wrapper .modeForm__field-medium{width:158px}.wrapper .modeForm__field-custom{width:100%}.wrapper .preview,.wrapper .placeholder{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:4px;background-color:#e7e8ef;color:#000}.wrapper .preview__hint,.wrapper .placeholder{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal}.wrapper.disabled .preview,.wrapper.disabled .placeholder{opacity:.4}.hint{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;padding-top:2px;padding-left:10px}.hint:empty{display:none}:host(.ng-invalid.ng-touched) .wrapper{padding:8px;border-width:1px;border-color:var(--mdc-outlined-text-field-error-outline-color)}:host(.ng-invalid.ng-touched) .wrapper .preview,:host(.ng-invalid.ng-touched) .wrapper .placeholder{color:#ec4899}:host(.ng-invalid.ng-touched) .label,:host(.ng-invalid.ng-touched) .hint{color:var(--mdc-outlined-text-field-error-outline-color)}:host(.disabled) .wrapper{border-color:#e7e8ef}:host(.disabled) .wrapper,:host(.disabled) .hint,:host(.disabled) .label{color:#d3d5dc}\n"] }]
205
205
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { isDisabled: [{
206
206
  type: HostBinding,
207
207
  args: ['class.disabled']
@@ -209,4 +209,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
209
209
  type: HostBinding,
210
210
  args: ['class.smallDisplay']
211
211
  }] } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQTZCLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFlLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFtQnZJLE1BQU0sT0FBTyxvQkFBb0I7SUEyQi9CLFlBQ21CLEtBQWlCLEVBQ2pCLEVBQWdCLEVBQ2hCLE1BQWMsRUFDZCxHQUFzQjtRQUh0QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLE9BQUUsR0FBRixFQUFFLENBQWM7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBOUJsQyxjQUFTLEdBQW1DLEdBQUcsRUFBRSxDQUFD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ek1VLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGtKQWJwQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ2pESCxza1NBeU1BOzsyRkR0SmEsb0JBQW9CO2tCQWpCaEMsU0FBUzsrQkFDRSxlQUFlLGFBR2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7K0pBZ0JNLFVBQVU7c0JBRGhCLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUd0QixZQUFZO3NCQURsQixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIGZvcndhcmRSZWYsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzRW1wdHksIHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENyb25EaXNwbGF5LCBnZXREZWZhdWx0Q3JvbkRpc3BsYXksIHBhcnNlQ3JvbkV4cHJlc3Npb24sIHRvQ3JvbkRlc2NyaXB0aW9uLCB0b0Nyb25FeHByZXNzaW9uIH0gZnJvbSAnLi9naW8tZm9ybS1jcm9uLmFkYXB0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tZm9ybS1jcm9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1mb3JtLWNyb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tZm9ybS1jcm9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2lvRm9ybUNyb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2lvRm9ybUNyb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvRm9ybUNyb25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3ksIFZhbGlkYXRvciB7XG4gIHB1YmxpYyBfb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgcHVibGljIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gIHB1YmxpYyBzZWNvbmRzID0gWy4uLnJhbmdlKDAsIDYwKV07XG4gIHB1YmxpYyBtaW51dGVzID0gWy4uLnJhbmdlKDAsIDYwKV07XG4gIHB1YmxpYyBob3VycyA9IFsuLi5yYW5nZSgwLCAyNCldO1xuICBwdWJsaWMgZGF5c09mTW9udGggPSBbLi4ucmFuZ2UoMSwgMzIpXTtcbiAgcHVibGljIGRheXNPZldlZWsgPSBbJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknLCAnU3VuZGF5J107XG4gIHB1YmxpYyBpbnRlcm5hbEZvcm1Hcm91cD86IFVudHlwZWRGb3JtR3JvdXA7XG4gIHB1YmxpYyB2YWx1ZT86IHN0cmluZztcbiAgcHVibGljIGV4cHJlc3Npb25EZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc21hbGxEaXNwbGF5JylcbiAgcHVibGljIHNtYWxsRGlzcGxheSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBoYXNFcnJvciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY3JvbkRpc3BsYXk/OiBDcm9uRGlzcGxheTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm06IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgZm0ubW9uaXRvcihlbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUob3JpZ2luID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHdpbmRvdy5SZXNpemVPYnNlcnZlcikge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGVudHJpZXNbMF0uY29udGVudFJlY3Qud2lkdGg7XG4gICAgICAgICAgdGhpcy5zbWFsbERpc3BsYXkgPSB3aWR0aCA8IDU4MDtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBtb2RlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCksXG4gICAgICBzZWNvbmRJbnRlcnZhbDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgbWludXRlSW50ZXJ2YWw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKSxcbiAgICAgIGhvdXJJbnRlcnZhbDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgZGF5SW50ZXJ2YWw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKSxcbiAgICAgIGRheU9mV2VlazogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgZGF5T2ZNb250aDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuXG4gICAgICBob3VyczogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgbWludXRlczogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgY3VzdG9tRXhwcmVzc2lvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pc0Rpc2FibGVkID8gdGhpcy5pbnRlcm5hbEZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblxuICAgIHRoaXMuaW50ZXJuYWxGb3JtR3JvdXBcbiAgICAgIC5nZXQoJ21vZGUnKVxuICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgZmlsdGVyKG1vZGUgPT4gISFtb2RlKSxcbiAgICAgICAgdGFwKG1vZGUgPT4ge1xuICAgICAgICAgIHRoaXMuY3JvbkRpc3BsYXkgPSBnZXREZWZhdWx0Q3JvbkRpc3BsYXkobW9kZSk7XG5cbiAgICAgICAgICB0aGlzLnJlZnJlc2hJbnRlcm5hbEZvcm0oKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmludGVybmFsRm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgPy5waXBlKFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoIXZhbHVlPy5tb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0b0Nyb25FeHByZXNzaW9uKHtcbiAgICAgICAgICAgICAgbW9kZTogdmFsdWUubW9kZSxcbiAgICAgICAgICAgICAgc2Vjb25kSW50ZXJ2YWw6IHZhbHVlLnNlY29uZEludGVydmFsLFxuICAgICAgICAgICAgICBtaW51dGVJbnRlcnZhbDogdmFsdWUubWludXRlSW50ZXJ2YWwsXG4gICAgICAgICAgICAgIGhvdXJJbnRlcnZhbDogdmFsdWUuaG91ckludGVydmFsLFxuICAgICAgICAgICAgICBkYXlJbnRlcnZhbDogdmFsdWUuZGF5SW50ZXJ2YWwsXG4gICAgICAgICAgICAgIGRheU9mV2VlazogdmFsdWUuZGF5T2ZXZWVrLFxuICAgICAgICAgICAgICBkYXlPZk1vbnRoOiB2YWx1ZS5kYXlPZk1vbnRoLFxuICAgICAgICAgICAgICBjdXN0b21FeHByZXNzaW9uOiB2YWx1ZS5jdXN0b21FeHByZXNzaW9uLFxuICAgICAgICAgICAgICBob3VyczogdmFsdWUuaG91cnMsXG4gICAgICAgICAgICAgIG1pbnV0ZXM6IHZhbHVlLm1pbnV0ZXMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uRGVzY3JpcHRpb24gPSB0b0Nyb25EZXNjcmlwdGlvbih0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbkRlc2NyaXB0aW9uID0gYCR7ZXJyb3J9YCA/PyAnSW52YWxpZCBjcm9uIGV4cHJlc3Npb24uJztcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnJlZnJlc2hJbnRlcm5hbEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZtLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICB0aGlzLm9uQ2xlYXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY3JvbkRpc3BsYXkgPSBwYXJzZUNyb25FeHByZXNzaW9uKHZhbHVlKTtcblxuICAgICAgdGhpcy5leHByZXNzaW9uRGVzY3JpcHRpb24gPSB0b0Nyb25EZXNjcmlwdGlvbih0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMucmVmcmVzaEludGVybmFsRm9ybSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXhwcmVzc2lvbkRlc2NyaXB0aW9uID0gYCR7ZXJyb3J9YCA/PyAnSW52YWxpZCBjcm9uIGV4cHJlc3Npb24uJztcbiAgICB9XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cbiAgICB0aGlzLnJlZnJlc2hJbnRlcm5hbEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShfOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuaGFzRXJyb3IgPyB7IGludmFsaWQ6IHRydWUgfSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb25DbGVhcih7IHRvdWNoZWQgfTogeyB0b3VjaGVkPzogYm9vbGVhbiB9ID0ge30pOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3JvbkRpc3BsYXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pbnRlcm5hbEZvcm1Hcm91cD8ucmVzZXQoe30sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXG4gICAgaWYgKHRvdWNoZWQpIHtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hJbnRlcm5hbEZvcm0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmludGVybmFsRm9ybUdyb3VwKSByZXR1cm47XG5cbiAgICB0aGlzLmlzRGlzYWJsZWQgPyB0aGlzLmludGVybmFsRm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pIDogdGhpcy5pbnRlcm5hbEZvcm1Hcm91cC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgY29uc3QgZCA9IHRoaXMuY3JvbkRpc3BsYXk7XG4gICAgaWYgKGQpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAucGF0Y2hWYWx1ZShcbiAgICAgICAge1xuICAgICAgICAgIG1vZGU6IGQubW9kZSxcbiAgICAgICAgICBjdXN0b21FeHByZXNzaW9uOiBkLmN1c3RvbUV4cHJlc3Npb24sXG4gICAgICAgICAgc2Vjb25kSW50ZXJ2YWw6IGQuc2Vjb25kSW50ZXJ2YWwsXG4gICAgICAgICAgbWludXRlSW50ZXJ2YWw6IGQubWludXRlSW50ZXJ2YWwsXG4gICAgICAgICAgaG91ckludGVydmFsOiBkLmhvdXJJbnRlcnZhbCxcbiAgICAgICAgICBkYXlJbnRlcnZhbDogZC5kYXlJbnRlcnZhbCxcbiAgICAgICAgICBkYXlPZldlZWs6IGQuZGF5T2ZXZWVrLFxuICAgICAgICAgIGRheU9mTW9udGg6IGQuZGF5T2ZNb250aCxcblxuICAgICAgICAgIGhvdXJzOiBkLmhvdXJzLFxuICAgICAgICAgIG1pbnV0ZXM6IGQubWludXRlcyxcbiAgICAgICAgfSxcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH0sXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48ZGl2IGNsYXNzPVwibGFiZWxcIj48bmctY29udGVudCBzZWxlY3Q9XCJnaW8tZm9ybS1jcm9uLWxhYmVsXCI+PC9uZy1jb250ZW50PjwvZGl2PlxuPGRpdiBjbGFzcz1cIndyYXBwZXJcIiBbY2xhc3Muc21hbGxEaXNwbGF5XT1cInNtYWxsRGlzcGxheVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlcm5hbEZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiaW50ZXJuYWxGb3JtR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiPlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiZ2lvLWJ1dHRvbi10b2dnbGUtZ3JvdXAgbWVudV9fbW9kZVwiIG5hbWU9XCJtb2RlXCIgYXJpYS1sYWJlbD1cIkNyb24gbW9kZVwiIGZvcm1Db250cm9sTmFtZT1cIm1vZGVcIj5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwic2Vjb25kbHlcIiBtYXRUb29sdGlwPVwiU2Vjb25kbHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdzJyA6ICdTZWNvbmRseSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJtaW51dGVseVwiIG1hdFRvb2x0aXA9XCJNaW51dGVseVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIXNtYWxsRGlzcGxheVwiPnt7XG4gICAgICAgICAgc21hbGxEaXNwbGF5ID8gJ20nIDogJ01pbnV0ZWx5J1xuICAgICAgICB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImhvdXJseVwiIG1hdFRvb2x0aXA9XCJIb3VybHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdoJyA6ICdIb3VybHknXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiZGFpbHlcIiBtYXRUb29sdGlwPVwiRGFpbHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdEJyA6ICdEYWlseSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJ3ZWVrbHlcIiBtYXRUb29sdGlwPVwiV2Vla2x5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc21hbGxEaXNwbGF5XCI+e3tcbiAgICAgICAgICBzbWFsbERpc3BsYXkgPyAnVycgOiAnV2Vla2x5J1xuICAgICAgICB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIm1vbnRobHlcIiBtYXRUb29sdGlwPVwiTW9udGhseVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIXNtYWxsRGlzcGxheVwiPnt7XG4gICAgICAgICAgc21hbGxEaXNwbGF5ID8gJ00nIDogJ01vbnRobHknXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiY3VzdG9tXCIgbWF0VG9vbHRpcD1cIkN1c3RvbVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIXNtYWxsRGlzcGxheVwiPnt7XG4gICAgICAgICAgc21hbGxEaXNwbGF5ID8gJ0MnIDogJ0N1c3RvbSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJ2YWx1ZSAmJiAhaXNEaXNhYmxlZFwiXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgbWF0VG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvbkNsZWFyKHsgdG91Y2hlZDogdHJ1ZSB9KVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImludGVybmFsRm9ybUdyb3VwLmdldCgnbW9kZScpPy52YWx1ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlY29uZGx5J1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZUZvcm1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPkV2ZXJ5IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+U2Vjb25kPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZWNvbmRJbnRlcnZhbFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc2Vjb25kIG9mIHNlY29uZHNcIiBbdmFsdWVdPVwic2Vjb25kXCI+e3sgc2Vjb25kIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtaW51dGVseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5FdmVyeSA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1pbnV0ZShzKTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWludXRlSW50ZXJ2YWxcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaG91cmx5J1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZUZvcm1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPkV2ZXJ5IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+SG91cihzKTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaG91ckludGVydmFsXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57eyBob3VyIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj46PC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5NaW51dGUocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGFpbHknXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+RXZlcnkgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EYXkocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImRheUludGVydmFsXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mTW9udGhcIiBbdmFsdWVdPVwiZGF5XCI+e3sgZGF5IH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj4gYXQgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Ib3VyKHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJob3Vyc1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3Vyc1wiIFt2YWx1ZV09XCJob3VyXCI+e3sgaG91ciB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+Ojwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TWludXRlKHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtaW51dGVzXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57eyBtaW51dGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3dlZWtseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5FdmVyeSA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLW1lZGl1bVwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EYXkgb2YgdGhlIHdlZWs8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImRheU9mV2Vla1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNPZldlZWs7IGxldCBpbmRleCA9IGluZGV4XCIgW3ZhbHVlXT1cImluZGV4XCI+e3sgZGF5IH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj4gYXQgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Ib3VyczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaG91cnNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7IGhvdXIgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPjo8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1pbnV0ZXM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGhseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5PbiB0aGUgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EYXkocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImRheU9mTW9udGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZNb250aFwiIFt2YWx1ZV09XCJkYXlcIj57eyBkYXkgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPiBvZiBldmVyeSBtb250aCBhdCA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPkhvdXJzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJob3Vyc1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3Vyc1wiIFt2YWx1ZV09XCJob3VyXCI+e3sgaG91ciB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+Ojwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TWludXRlczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWludXRlc1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIG1pbnV0ZXNcIiBbdmFsdWVdPVwibWludXRlXCI+e3sgbWludXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXN0b20nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1jdXN0b21cIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Q3JvbiBleHByZXNzaW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY3VzdG9tRXhwcmVzc2lvblwiIHBsYWNlaG9sZGVyPVwiKiAqICogKiAqICpcIiAvPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwidmFsdWU7IGVsc2UgcGxhY2Vob2xkZXJcIiBjbGFzcz1cInByZXZpZXdcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaW50ZXJuYWxGb3JtR3JvdXAuZ2V0KCdtb2RlJyk/LnZhbHVlICE9PSAnY3VzdG9tJ1wiIGNsYXNzPVwicHJldmlld19fdmFsdWVcIj5cbiAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlld19faGludFwiPnt7IGV4cHJlc3Npb25EZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cbiAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIj5ObyBjcm9uIGV4cHJlc3Npb24gZGVmaW5lZC48L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImhpbnRcIj48bmctY29udGVudCBzZWxlY3Q9XCJnaW8tZm9ybS1jcm9uLWhpbnRcIj48L25nLWNvbnRlbnQ+PC9kaXY+XG4iXX0=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWNyb24vZ2lvLWZvcm0tY3Jvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQTZCLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFlLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFtQnZJLE1BQU0sT0FBTyxvQkFBb0I7SUEyQi9CLFlBQ21CLEtBQWlCLEVBQ2pCLEVBQWdCLEVBQ2hCLE1BQWMsRUFDZCxHQUFzQjtRQUh0QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLE9BQUUsR0FBRixFQUFFLENBQWM7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBOUJsQyxjQUFTLEdBQW1DLEdBQUcsRUFBRSxDQUFD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ek1VLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGtKQWJwQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ2pESCxpblNBeU1BOzsyRkR0SmEsb0JBQW9CO2tCQWpCaEMsU0FBUzsrQkFDRSxlQUFlLGFBR2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7K0pBZ0JNLFVBQVU7c0JBRGhCLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUd0QixZQUFZO3NCQURsQixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIGZvcndhcmRSZWYsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzRW1wdHksIHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENyb25EaXNwbGF5LCBnZXREZWZhdWx0Q3JvbkRpc3BsYXksIHBhcnNlQ3JvbkV4cHJlc3Npb24sIHRvQ3JvbkRlc2NyaXB0aW9uLCB0b0Nyb25FeHByZXNzaW9uIH0gZnJvbSAnLi9naW8tZm9ybS1jcm9uLmFkYXB0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tZm9ybS1jcm9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1mb3JtLWNyb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tZm9ybS1jcm9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2lvRm9ybUNyb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR2lvRm9ybUNyb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvRm9ybUNyb25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3ksIFZhbGlkYXRvciB7XG4gIHB1YmxpYyBfb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgcHVibGljIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gIHB1YmxpYyBzZWNvbmRzID0gWy4uLnJhbmdlKDAsIDYwKV07XG4gIHB1YmxpYyBtaW51dGVzID0gWy4uLnJhbmdlKDAsIDYwKV07XG4gIHB1YmxpYyBob3VycyA9IFsuLi5yYW5nZSgwLCAyNCldO1xuICBwdWJsaWMgZGF5c09mTW9udGggPSBbLi4ucmFuZ2UoMSwgMzIpXTtcbiAgcHVibGljIGRheXNPZldlZWsgPSBbJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknLCAnU3VuZGF5J107XG4gIHB1YmxpYyBpbnRlcm5hbEZvcm1Hcm91cD86IFVudHlwZWRGb3JtR3JvdXA7XG4gIHB1YmxpYyB2YWx1ZT86IHN0cmluZztcbiAgcHVibGljIGV4cHJlc3Npb25EZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc21hbGxEaXNwbGF5JylcbiAgcHVibGljIHNtYWxsRGlzcGxheSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBoYXNFcnJvciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY3JvbkRpc3BsYXk/OiBDcm9uRGlzcGxheTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm06IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgZm0ubW9uaXRvcihlbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUob3JpZ2luID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHdpbmRvdy5SZXNpemVPYnNlcnZlcikge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGVudHJpZXNbMF0uY29udGVudFJlY3Qud2lkdGg7XG4gICAgICAgICAgdGhpcy5zbWFsbERpc3BsYXkgPSB3aWR0aCA8IDU4MDtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBtb2RlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCksXG4gICAgICBzZWNvbmRJbnRlcnZhbDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgbWludXRlSW50ZXJ2YWw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKSxcbiAgICAgIGhvdXJJbnRlcnZhbDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgZGF5SW50ZXJ2YWw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKSxcbiAgICAgIGRheU9mV2VlazogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgZGF5T2ZNb250aDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuXG4gICAgICBob3VyczogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgbWludXRlczogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgICAgY3VzdG9tRXhwcmVzc2lvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pc0Rpc2FibGVkID8gdGhpcy5pbnRlcm5hbEZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSA6IHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblxuICAgIHRoaXMuaW50ZXJuYWxGb3JtR3JvdXBcbiAgICAgIC5nZXQoJ21vZGUnKVxuICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgZmlsdGVyKG1vZGUgPT4gISFtb2RlKSxcbiAgICAgICAgdGFwKG1vZGUgPT4ge1xuICAgICAgICAgIHRoaXMuY3JvbkRpc3BsYXkgPSBnZXREZWZhdWx0Q3JvbkRpc3BsYXkobW9kZSk7XG5cbiAgICAgICAgICB0aGlzLnJlZnJlc2hJbnRlcm5hbEZvcm0oKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmludGVybmFsRm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgPy5waXBlKFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoIXZhbHVlPy5tb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0b0Nyb25FeHByZXNzaW9uKHtcbiAgICAgICAgICAgICAgbW9kZTogdmFsdWUubW9kZSxcbiAgICAgICAgICAgICAgc2Vjb25kSW50ZXJ2YWw6IHZhbHVlLnNlY29uZEludGVydmFsLFxuICAgICAgICAgICAgICBtaW51dGVJbnRlcnZhbDogdmFsdWUubWludXRlSW50ZXJ2YWwsXG4gICAgICAgICAgICAgIGhvdXJJbnRlcnZhbDogdmFsdWUuaG91ckludGVydmFsLFxuICAgICAgICAgICAgICBkYXlJbnRlcnZhbDogdmFsdWUuZGF5SW50ZXJ2YWwsXG4gICAgICAgICAgICAgIGRheU9mV2VlazogdmFsdWUuZGF5T2ZXZWVrLFxuICAgICAgICAgICAgICBkYXlPZk1vbnRoOiB2YWx1ZS5kYXlPZk1vbnRoLFxuICAgICAgICAgICAgICBjdXN0b21FeHByZXNzaW9uOiB2YWx1ZS5jdXN0b21FeHByZXNzaW9uLFxuICAgICAgICAgICAgICBob3VyczogdmFsdWUuaG91cnMsXG4gICAgICAgICAgICAgIG1pbnV0ZXM6IHZhbHVlLm1pbnV0ZXMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uRGVzY3JpcHRpb24gPSB0b0Nyb25EZXNjcmlwdGlvbih0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbkRlc2NyaXB0aW9uID0gYCR7ZXJyb3J9YCA/PyAnSW52YWxpZCBjcm9uIGV4cHJlc3Npb24uJztcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnJlZnJlc2hJbnRlcm5hbEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZtLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICB0aGlzLm9uQ2xlYXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY3JvbkRpc3BsYXkgPSBwYXJzZUNyb25FeHByZXNzaW9uKHZhbHVlKTtcblxuICAgICAgdGhpcy5leHByZXNzaW9uRGVzY3JpcHRpb24gPSB0b0Nyb25EZXNjcmlwdGlvbih0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMucmVmcmVzaEludGVybmFsRm9ybSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXhwcmVzc2lvbkRlc2NyaXB0aW9uID0gYCR7ZXJyb3J9YCA/PyAnSW52YWxpZCBjcm9uIGV4cHJlc3Npb24uJztcbiAgICB9XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cbiAgICB0aGlzLnJlZnJlc2hJbnRlcm5hbEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShfOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuaGFzRXJyb3IgPyB7IGludmFsaWQ6IHRydWUgfSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb25DbGVhcih7IHRvdWNoZWQgfTogeyB0b3VjaGVkPzogYm9vbGVhbiB9ID0ge30pOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3JvbkRpc3BsYXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pbnRlcm5hbEZvcm1Hcm91cD8ucmVzZXQoe30sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXG4gICAgaWYgKHRvdWNoZWQpIHtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hJbnRlcm5hbEZvcm0oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmludGVybmFsRm9ybUdyb3VwKSByZXR1cm47XG5cbiAgICB0aGlzLmlzRGlzYWJsZWQgPyB0aGlzLmludGVybmFsRm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pIDogdGhpcy5pbnRlcm5hbEZvcm1Hcm91cC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgY29uc3QgZCA9IHRoaXMuY3JvbkRpc3BsYXk7XG4gICAgaWYgKGQpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxGb3JtR3JvdXAucGF0Y2hWYWx1ZShcbiAgICAgICAge1xuICAgICAgICAgIG1vZGU6IGQubW9kZSxcbiAgICAgICAgICBjdXN0b21FeHByZXNzaW9uOiBkLmN1c3RvbUV4cHJlc3Npb24sXG4gICAgICAgICAgc2Vjb25kSW50ZXJ2YWw6IGQuc2Vjb25kSW50ZXJ2YWwsXG4gICAgICAgICAgbWludXRlSW50ZXJ2YWw6IGQubWludXRlSW50ZXJ2YWwsXG4gICAgICAgICAgaG91ckludGVydmFsOiBkLmhvdXJJbnRlcnZhbCxcbiAgICAgICAgICBkYXlJbnRlcnZhbDogZC5kYXlJbnRlcnZhbCxcbiAgICAgICAgICBkYXlPZldlZWs6IGQuZGF5T2ZXZWVrLFxuICAgICAgICAgIGRheU9mTW9udGg6IGQuZGF5T2ZNb250aCxcblxuICAgICAgICAgIGhvdXJzOiBkLmhvdXJzLFxuICAgICAgICAgIG1pbnV0ZXM6IGQubWludXRlcyxcbiAgICAgICAgfSxcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH0sXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48ZGl2IGNsYXNzPVwibGFiZWxcIj48bmctY29udGVudCBzZWxlY3Q9XCJnaW8tZm9ybS1jcm9uLWxhYmVsXCI+PC9uZy1jb250ZW50PjwvZGl2PlxuPGRpdiBjbGFzcz1cIndyYXBwZXJcIiBbY2xhc3Muc21hbGxEaXNwbGF5XT1cInNtYWxsRGlzcGxheVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnRlcm5hbEZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiaW50ZXJuYWxGb3JtR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiPlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIGNsYXNzPVwiZ2lvLWJ1dHRvbi10b2dnbGUtZ3JvdXAgbWVudV9fbW9kZVwiIG5hbWU9XCJtb2RlXCIgYXJpYS1sYWJlbD1cIkNyb24gbW9kZVwiIGZvcm1Db250cm9sTmFtZT1cIm1vZGVcIiBbaGlkZU11bHRpcGxlU2VsZWN0aW9uSW5kaWNhdG9yXT1cImZhbHNlXCI+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cInNlY29uZGx5XCIgbWF0VG9vbHRpcD1cIlNlY29uZGx5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc21hbGxEaXNwbGF5XCI+e3tcbiAgICAgICAgICBzbWFsbERpc3BsYXkgPyAncycgOiAnU2Vjb25kbHknXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwibWludXRlbHlcIiBtYXRUb29sdGlwPVwiTWludXRlbHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdtJyA6ICdNaW51dGVseSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJob3VybHlcIiBtYXRUb29sdGlwPVwiSG91cmx5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc21hbGxEaXNwbGF5XCI+e3tcbiAgICAgICAgICBzbWFsbERpc3BsYXkgPyAnaCcgOiAnSG91cmx5J1xuICAgICAgICB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImRhaWx5XCIgbWF0VG9vbHRpcD1cIkRhaWx5XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc21hbGxEaXNwbGF5XCI+e3tcbiAgICAgICAgICBzbWFsbERpc3BsYXkgPyAnRCcgOiAnRGFpbHknXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwid2Vla2x5XCIgbWF0VG9vbHRpcD1cIldlZWtseVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiIXNtYWxsRGlzcGxheVwiPnt7XG4gICAgICAgICAgc21hbGxEaXNwbGF5ID8gJ1cnIDogJ1dlZWtseSdcbiAgICAgICAgfX08L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJtb250aGx5XCIgbWF0VG9vbHRpcD1cIk1vbnRobHlcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdNJyA6ICdNb250aGx5J1xuICAgICAgICB9fTwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImN1c3RvbVwiIG1hdFRvb2x0aXA9XCJDdXN0b21cIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cIiFzbWFsbERpc3BsYXlcIj57e1xuICAgICAgICAgIHNtYWxsRGlzcGxheSA/ICdDJyA6ICdDdXN0b20nXG4gICAgICAgIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwidmFsdWUgJiYgIWlzRGlzYWJsZWRcIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgICAgIG1hdFRvb2x0aXA9XCJDbGVhclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwib25DbGVhcih7IHRvdWNoZWQ6IHRydWUgfSlcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJpbnRlcm5hbEZvcm1Hcm91cC5nZXQoJ21vZGUnKT8udmFsdWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWNvbmRseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5FdmVyeSA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlNlY29uZDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic2Vjb25kSW50ZXJ2YWxcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlY29uZCBvZiBzZWNvbmRzXCIgW3ZhbHVlXT1cInNlY29uZFwiPnt7IHNlY29uZCB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWludXRlbHknXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+RXZlcnkgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5NaW51dGUocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1pbnV0ZUludGVydmFsXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57eyBtaW51dGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2hvdXJseSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGVGb3JtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj5FdmVyeSA8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPkhvdXIocyk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImhvdXJJbnRlcnZhbFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3Vyc1wiIFt2YWx1ZV09XCJob3VyXCI+e3sgaG91ciB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+Ojwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TWludXRlKHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtaW51dGVzXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57eyBtaW51dGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhaWx5J1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZUZvcm1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPkV2ZXJ5IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGF5KHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJkYXlJbnRlcnZhbFwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNPZk1vbnRoXCIgW3ZhbHVlXT1cImRheVwiPnt7IGRheSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+IGF0IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+SG91cihzKTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaG91cnNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7IGhvdXIgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPjo8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1pbnV0ZShzKTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWludXRlc1wiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIG1pbnV0ZXNcIiBbdmFsdWVdPVwibWludXRlXCI+e3sgbWludXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid3ZWVrbHknXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+RXZlcnkgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1tZWRpdW1cIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGF5IG9mIHRoZSB3ZWVrPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJkYXlPZldlZWtcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZXZWVrOyBsZXQgaW5kZXggPSBpbmRleFwiIFt2YWx1ZV09XCJpbmRleFwiPnt7IGRheSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+IGF0IDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+SG91cnM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImhvdXJzXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57eyBob3VyIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj46PC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5NaW51dGVzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtaW51dGVzXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57eyBtaW51dGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRobHknXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlRm9ybVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Jvbi1mb3JtLWxhYmVsXCI+T24gdGhlIDwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtc21hbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGF5KHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJkYXlPZk1vbnRoXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mTW9udGhcIiBbdmFsdWVdPVwiZGF5XCI+e3sgZGF5IH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcm9uLWZvcm0tbGFiZWxcIj4gb2YgZXZlcnkgbW9udGggYXQgPC9zcGFuPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1vZGVGb3JtX19maWVsZC1zbWFsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Ib3VyczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaG91cnNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7IGhvdXIgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyb24tZm9ybS1sYWJlbFwiPjo8L3NwYW4+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibW9kZUZvcm1fX2ZpZWxkLXNtYWxsXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1pbnV0ZXM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBtaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7IG1pbnV0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VzdG9tJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kZUZvcm1cIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtb2RlRm9ybV9fZmllbGQtY3VzdG9tXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPkNyb24gZXhwcmVzc2lvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImN1c3RvbUV4cHJlc3Npb25cIiBwbGFjZWhvbGRlcj1cIiogKiAqICogKiAqXCIgLz5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiAqbmdJZj1cInZhbHVlOyBlbHNlIHBsYWNlaG9sZGVyXCIgY2xhc3M9XCJwcmV2aWV3XCI+XG4gICAgICA8c3BhbiAqbmdJZj1cImludGVybmFsRm9ybUdyb3VwLmdldCgnbW9kZScpPy52YWx1ZSAhPT0gJ2N1c3RvbSdcIiBjbGFzcz1cInByZXZpZXdfX3ZhbHVlXCI+XG4gICAgICAgIHt7IHZhbHVlIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInByZXZpZXdfX2hpbnRcIj57eyBleHByZXNzaW9uRGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+Tm8gY3JvbiBleHByZXNzaW9uIGRlZmluZWQuPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJoaW50XCI+PG5nLWNvbnRlbnQgc2VsZWN0PVwiZ2lvLWZvcm0tY3Jvbi1oaW50XCI+PC9uZy1jb250ZW50PjwvZGl2PlxuIl19
@@ -79,4 +79,4 @@ const computeStyleAndContrastByPrefix = (prefix, color) => {
79
79
  return [paletteColor, paletteColorContrast];
80
80
  };
81
81
  export { computeStyles, computeStylesForStory, computeAndInjectStylesForStory, resetStoryStyleInjection };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VtLXRoZW1lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL29lbS10aGVtZS9vZW0tdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUlILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLGNBQWMsRUFBRTtRQUNkLE9BQU8sRUFBRSxPQUFPO0tBQ2pCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsT0FBTyxFQUFFLE9BQU87S0FDakI7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsTUFBTTtLQUNoQjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDM0IsNHNsQkFBNHNsQixDQUFDO0FBTy9zbEIsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQVUsRUFBVSxFQUFFO0lBQ25ELE9BQU8sYUFBYSxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUN2RixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDO1NBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLElBQVUsRUFBRSxRQUFrQixFQUFRLEVBQUU7SUFDOUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsT0FBTztJQUNULENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUM7UUFDM0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1FBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtLQUM1QixDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUFVLEVBQVEsRUFBRTtJQUNwRCxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQy9FLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQ3hGLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzNFLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWUsRUFBb0MsRUFBRTtJQUMxRSxNQUFNLGVBQWUsR0FBRywrQkFBK0IsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVGLE1BQU0sV0FBVyxHQUFHLCtCQUErQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEYsSUFBSSxPQUFPLEdBQXFDLEVBQUUsQ0FBQztJQUNuRCxvRUFBb0U7SUFDcEUsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixLQUFLLENBQUMsY0FBYyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFFRixNQUFNLCtCQUErQixHQUFHLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBb0MsRUFBRTtJQUMxRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsRUFBRSxzQkFBc0IsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxHQUFHLEVBQUUsc0JBQXNCLE1BQU0sV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUM3RixPQUFPLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDO0FBQ0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQXJncyB9IGZyb20gJ0BzdG9yeWJvb2svYW5ndWxhcic7XG5cbmV4cG9ydCBjb25zdCBPRU1fVEhFTUVfQVJHX1RZUEVTID0ge1xuICBtZW51QmFja2dyb3VuZDoge1xuICAgIGNvbnRyb2w6ICdjb2xvcicsXG4gIH0sXG4gIG1lbnVBY3RpdmU6IHtcbiAgICBjb250cm9sOiAnY29sb3InLFxuICB9LFxuICBsb2dvOiB7XG4gICAgY29udHJvbDogJ3RleHQnLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IE9FTV9ERUZBVUxUX0xPR08gPVxuICAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFlSUFBQUhpQ0FZQUFBQTA2YytqQUFBM3pFbEVRVlI0MnUyZDhaR2xxaEtIYjAwTVJtRWNobUl1Um1FcUptSVcvcjgxNzcxYm5uME1vNERTUUFQZlYyWE43TjY3NTZoQS8raW1hZjc1QndBQUFBQ2dKNzYvdjc4MFhyUU1BQUEwTDdJdFRSWm9iUUFBVUNOUUQvL3Q4TjlyUEsvSnVPYnpXczVydGE3dDRXWCsyOFc0UHQveitkN1B2UXpuOVpYNlhRQUFBRHdXbW9EL2Y3REVkVFlFOVNPTysza2QvNzMrS0xzTzQvNDJTOFJuUzdTZDd3U1JCZ0FBVWNHOThHWS9YdVdxVUdDUFRJSzkzUWoxSURXNUFRQ0F4b1hYNDkyYVh1M0hvOVhveVdyMHFqOGkvVmlnNmFFQUFCMko3dm5mUHVGa000eU00TXBmSDRIK2VOQzM0b3d3QXdDMEs3eW1wNHVYcTFPY2Y3VWZJVzBBZ01xRTExclROY1BMaUc0OW9lMVBXSHZBWXdZQXFNVHJOUktwUGlGbXhLMGRyeGxoQmdCUTZQVitRczJzN2ZZcHpLTXJqTTNvQVFBUUVHQ0gxNHZ3Y24yRWVmMTR5M2ZDeklnQ0FIanYrUTVHVnZPTzhIQjUxcGcvMjZiRzBNa2RBQUFDZkMrK0srTExGU0hLbjR4c1JCa0E0S0g0RW5MbWtyNHVSUmxCQm9EdUJQakNDT0w1Y3BYd2xIOGxleUhLQU5DRjkydFVzMEo4ZnlZY21RY3VYSjJnWkoraTVMcnVUbTdhclF0Ui9yOG9EM2pLQU5DNjl6c1loVFY2RWxmN2NJU3JrNHlHbEpPZ204blExWEdNNW1FVzlvRVd2U1I2VFhqSkFOQ2E5enMzdXU1cmVxL0JKeEQ1eERMbGRUZEpDcmhIKzRqSHhSTHFidGFUR2VVQVVJdjNPemEwM2VqeGFVS1NYdXdMMFh4MUZuQ0lnSHVFMmo2RGVXOG9kRDJaN3dJdkdRQTBlNzltMXZOUnFlaCt3c2lQejlmMTFiNnVvVDA5SlVRZlBZZDFmblB0WlVmM3MxOE1oSzBCUUpzQUQwYWxxMXBQL3BtdTlwcUdDaFduQTRWNzVCZml2RmN5YVR1c3RXUXlyZ0dndUFEWEZuN2V6YXBMdnNNRFlrSzE5SldmSVZ6ZmU3T3FwMjJWclNWUFY4OE9BSkJhZ0d0SXZ0cGQ1UTVEUFRwNlFER3ZlYXJvK01yOTdHZE0yZ0JBM3FzeC9qd3A5MVorRkdwQVlLdWEzRDN4bVBmYTFwRnBjUUJvV1lETmszZUN0KzVnSEt2M25yV2Z3UFZYa01tMEJvREhBbXdZTzYwQzdLd1pqT2ZidGhnN3ZHV05XNllPUEdRQUNEWnl5ajNnemJYV2kvamlKUnZWd2pTSzhtRlBIdW1yQVBEUFJZRUNiUUs4UFUyMGduNGpPRGYvajdiVHZQQ1FBZUQzNEZjbXdMc3IyWXFXZ3lmZThvMG9heExrSDVOaFdnK2dJd05sbllDa0plRnFaSTBYVWtWOWpML1RWSURtNzdZbm4zY1BBRzE1d0lNU0FmN1U4T1g0T1NqbEpXc3BTck5mWmY3VGNnQnRlc0ZMNGZXeTNaWHhUSXRCUVZIV3NFVHpvMUlYWXdLZ0xTOTRManpyLzFVS0VBRUdiUk5WUlY3eWF1OUJwclVBS2hSZ1l4MTRLNWlRY3JuMlN5dUJjakgrTXM3U0xpbklyQjhEVk93Qmwxd0gvamY4N0ROMkFOckYyZmp6VkhnOFRYakhBSlVZamNLeitILzMvVjZKTDYwRWpZeTFranNOVnJzZ0NDMENvTThMTGhXRzNzd1pPeUlNSFhqSVE2SEV4K1BxbENkYUNLQ2dZYkN5b1lzSk1FWUJPaDJIbnozSkI5blZBUDE2d1ZPQk1QVEc5aU9BWC8yL3hKTFEzM0taakVHQWpGNndNUk5mU3dzd0FHUHkxN2pNN1NIdmVNY0E3WHZCRzZmR0FQakYyRG9GYWk2eDk1Z3hDdENXRjh3YU1FRDhHRjd3amdId2dxTUdNek5zZ1BkZWNxRko5TXJrR1VCd0lHZWNVYk0xQWlDUkdKOS9sM09MSWQ0eFFNemdOUVp0TGkvWVdRbUxRUXdRUDdhTjM2Y1NZNXR4RFBETUM1NXpKbUlodWdCRnh2eWNPK0dTOFEzZ0YrRWhVK2pxVjlnS0x4aWdpSGM4WkZwK091d1N0TFFFd0QrL1RrcktGYTVhN293Q0FCUVQ1RnpuSVpQSUJYQXpDSmRNNGFrQkFRWlFiUXZtVEJHeDBYQUNzQVhRdFNlY0l4UjlrRDBKb044bVpOcnVkQkNxQmdiYy93ZGJqbEQwZWpYUUFVQzNJR2RjcmxvUlkraDFnTTI1a3JFUVlJQjZ2ZVB6ejJ1T1pTdHNCZlRpQlg5bEdGUjR3UUI0eDYrWHNMQWIwTElJcDY2cVF5VWRnSVk5NDB6ZU1ldkcwS3dJcDU3TnJyeHRnUFp0U1c1N2doaERDd0tjZWoyWWpHaUF6anhrNDFwWk53Ynd6MXdYemg4RmdJU0NQQnRia3BMc044YStRTTBpbkhJOWVLWTZEa0RmUW16OE9YVTlnZ2xiQTdYTlVsTU9DaXJpQU1EZDVIOWg4ZytFaWRJZVhiZ2l3QURnRWVNcFlhaWFJeFZCdlJDbkhBQy90aFF3RUFEZ1NwQVRSK1U0TkFMVURvQTVkU2dhQU9DaFhWb1NabFRqRUVBWElzeGVQZ0NJdFU5VFFpZUI3VTFRUFB6emxYREd1UkQrQVFBaFd6VWt5bDFoZXhPVTY5am43NmsyMDArOGFRQ1FzbG1HSUsrSmlncU5PQTVRd2hOZVUxV3k0VTBEUUVJSFlrbFY0UThoaHB3aW5DSWJjYk5ucndBQWllelpST0VQUUlRdjl1WVIyZ0dBalBZc1ZjMER4Qml5aVBDUlluK3dIVUlDQUVobDF4SlhBWnl4WnlBdHdxazZLek5IQUNndHhxbHlYaEJqU09JSko2a1h6ZHNHQUFWaXZDREcwSXNudkpsSEYvSzJBVUNEdlR0L254TmtVeVBHb01vVDNxNDZQd0NBSXU5NFRsa3JIK0JKbUdhalVEb0E5R1Qzakw4YlV4VXF3djVCYUhobVMxa3ptbzRJQUJVSTg1amdOTGtKaHdSS2lQRENHd2FBR3IzalJIdU4yUzBDems2NHNpNENBSkQ4d0FocVUwTWVFYWFUQVVBTFlueit2cWM2S0lJM1RTZExVUVI5dmdyekFBQlViQ2VsazFnUHpqUHV2R01sVE5YSEV3YUFWc1ZZdXJiQ1RsMEZoSGhPN1FuVHVRQUF6OWhiNUFoNzJha0lUNVJ5QXdCUTRSbXZ2TjMrUkhna094b0E0TDBZbjc4anh2QktoSWNVeHhqaUNRTkFwMks4cHppYm5iZmNiamhGZW0wRFR4Z0FlbmR1dm9URm1PcGJqWGVjamV4b0FBQTVJVDUvSDFLSk1XKzZMVzlZY3Evd3dvd05BQ0JaQlM3MkdEY1lPcGxUaURCdkdBRGdoeGlQd251TXY4elBoM3BGZU9JVUpRQ0FLc1Y0eGRiV0w4S1NHZEpzT2djQThOamQ4L2VKVEdxUXpwRGU4WVFCQUlLZElPa2xRWGFvVk5vUlZtcWhBZ0FVOVl3WHlkT2FzTU9WZElEenArUk1EQkVHQUhodmp5V2RJcFlISzJuMGliMXNBQUNxN1BOR0djeCtSRmh5SDl0c2gxa0FBT0NkalJhMHpRdHZ0STlaRjFsNkFBRHlqdElodEY0OFlhTjFOdkxDdmpVQUFOVjJlaVNKdHQzR25hUXJ1UUFBZ0p5dFRwQk11L0ZtZFlVN2R1a01hUVFaQUVCZWpNOXJrVDU4QjV0ZHRuRTNqdDRDQU1CMjgxYkxlTU16R2RJQUFGVjZ4bExSVFBZWEYyekVrZVFzQUlDcW5hbFJjbjh4ZGp5L0VPL1NtWGMwSWdCQWRscytVNCs2dmthVFhPaW5kaWtBUUVGN2Z2NTVGZHBmekphbVRBMDNNWHNxT2dsU0Z6a29kWDlYMzZ2bFBmWFNaaUZ0RUhNeCtyUDJnNTB0VFhVMG10VGlQdlZLSVhvVy8vVGY4UWI3YVhONDlvN1BuNk9BUi93aitaYTNtNmFoVnNtemhTSElDSTBYMTZERk9MbnVVZG9ZWDB3S3h6TkNNNS9YWXZ3K25mLzl4Ny9OOGQ1dTNzbWd4VEFaN3k2cXZXNCtSK29hcnU0SjQ1N2N4czhjbWFoN1JqcXhMbHprdmE5RzV6N3NKRGRGazdQRHVQWlBPMHQ4aC9IbjhUUVUyNFBJekg3ZTQyeStzeFQ5NzJLc21HMjJsZTd6bmo0Vm5QVnFmTTUyMGZhUzEzNSt4L3JacTRvZ1ora25LeUZxblEwakZaSW1aUEV1WEhSbzJ2WVZVTnAwa2ZvTzQzczJnWUwxeC9uZVJ1TVp2aVRmaTJQU3VtdFl0M1lZMnNmYlR3UUxRanpaWlRFanhsa21iTHRrMVMzZWFycUJ5ejZ6ZkI3TVhiaW82QWtvTjROMWsraHp4aVFrbGJGZnBUTThQZUc5WFZIeVdKUVFYM2pFdmpYRHAvL042MjBSV1NzMnlTWkVYWG1Ea05ZZVowQjNEZXZ0QVd0Sms1QUlMNEtHMjlVdnhUd3N6NWpaRmZXbGFJODRVSWhUWCt5OEtEUEdDVkZYR3FLZ0ZtbTZDVkcyY0g5QWR1WHJjTG4xMlZ0Z21ISXoxbjluSzJscjlYek9ZZDkzekh1MFBNN3A0cnQyQldOWlRJaGRFWkh6L1gvYTRPM1BOWEE1Z3VXdWRIMW1FSmhzSGJSUnZNRmRDRW1yYXBlMVpQakhzMVN4djgzbXRnVHNDQWdwVHlGWnlFYjI4aHhnVUxiWWJIVFBVa0pUSHZINS8yNHAxZ1d0U2NONDJxRUR6N2hJbnhrbEk2THdmQkNNYkZWU09VUGRTMDUySE9HcVdVQ0VmUUk4dmkwR2NiNjd5UlBoZVgzWXVWV2xTRzFvMmlHZ1VtdkVjNHFDSGg3dmpMWElNbU1laHl5REdFdXMvMHk4ZlBFSjBsd3EvTzlZcXRoc1l5OG93cnU1ZGVWTmdZZUxmN3VrRk9PYjU5bGF5cHAyQ2JFOU1ZbTgxOUJTakJ0MkptbmZRUThLREZTSkdkRENTODg2S0pKdGp3bFlxbmpzalFSc3ovb2JMcjRJVjM3RlBJZmh0UjRwRWt3MFprMWI3ekRsR25HU0xTdVdNSytzRnhlSnhoRWh6VGhRSmZZTWN6NWwyb25TbUd2eWsvSTdQWDF0emZRZXhiNi9wNnhweDRRd21SZ2E3L2V1Myt6WUhQVU8yb3cydkE5YmtTV3RyNTJXbkd0bExpODg0alBYMHJYSVBXSWNIRXJ6WkUzM3RJODRpMWVxZFc5OXA5RTQ5aFpuOG5vNDBFRm45R0pQdVcvdnlicjBrN1ZGaDlmNFl5MDE0eWxPbzIrOVdPQjlxVmdqenJDUE9PZDJ1dTJ1LzJQa2swWWpKSXJwNEtnOW5PRStEa256UnJONU5sUHFmWHV1VE8zSUxPbjlicmFjOFdDR3I0REpSbERvUFNScldzTWFzVVBBeE5hSU13cnhFanQ1Z2xmalpTWnhLOTNnRkluLzIwWUppb1FabzQyUlo2bmllTFBuTnFDdnpZWGY1ZVpLUm52d1dkcTNMMVc1UnZ3Z2dqZGhKWktQbGRnOElyTGNFNzFZOW9tVmFidTdyT1BveEMxWE5hODNJbXhjaDhaU2VGTHZzdldzYVExcnhKNW9EZG5UQ2Z1UFp4TEVJVUFSTTB1SkNsb3N3T3VMWm95UjIzMDIzeHJ1d3pYRm92dWdJOEtkUVJFQVQyaWFOZUkwejdSOWMrcVBwbjcwZENtVFpRUmpWaGxiVUgraDR4Y1g0K2pFcmNCMW9OZUM2VERlYXNKVURxL1lLVEE5WlUwYm43a1h6SnAyZWVYWW96eGVzWWgyZE8zQUNXNVhZcE8yam5ZY1k4TS9BUVBzMWFDUnZNZUNZMklMOFlpcE5aMVBpQjMzc0dBWmlrZmpIbTluNmptME1Bck1hRWlNME5HV1g3N0Vxa2hEL1RxTTVGa0NVUkdlQ3ZCb25hSCttNnpwbzhXc2FVVnJ4RitzRWF1d1FSdjVSV1c5WWM2YTFOV2V6a01oQW8zckpKM1I3Qk1BTFdGRTR4ME1iOG8zVW11NlNMTFdJYkcvSFpKRTR4N2xHSFhWWGdFRkZaNWNRNjVCQjlHaEl1ZStQVS8yL0Jwelh6SGlwczFyOUFteG93MjZxVFdkMmliRVJDNGdhelR1c1ZQWG8xZThTUzJ5MCtHcmFOc3RRRUFXYWNNV01QRWJsUXJ4WXpHbDFuVDJmY1FyUllWVVJaSCtzTXdwTTVOOGxIYU9DS3R0NStETTM0QlRrRVN5R2gzQ05sUTBSbTRQT0tmV2RQWmtyU0ZsZjRWbi9jb3prV2VwTTVFM1RBVXR4UVBETVNodU14UmRkWHNGNytmUXRtN3F1Ti94YmNJV3RhYlRDV0dBMGFkMFl0bnhFMXNZcXQwRGd3SXpRcWtuM2NlZ1dCLzBpZWhCNFRHY0tvWFlzNlo5K1U2b05aM25HRVRQYmcrU1I4djNyUm12K1AwczlsV3hiZ1JaL2FEd0Nxd3YwMW9nSkMyNkxwbnhIWHFGK0U2TXFUV2Q1QmhPWDM5bEs2V2VzYlBoRmJ0ZlVQUnNCUUd1TGdxeXVnNVFUN20zTjBVMXA4enY3bFdXZCsrMXBpOU90b3E2ak84Y0hFYWU0MWYxakp2cG13TWgwczVVOElhckd4aDNTUzJ6cTlLVjFEN01pb1g0bFVmc2lFUTBsVFh0V3lOTzVFVHNPQWpWaURGZWNjcFpDcDI5dW5hL1N4NDY3dXBUUzdWempSN3gyelhpRUNIV2tLamxtSkEvemphK2VUL0wrZTVHZ1dzNlAyL3o1S3l3YjFqUitIR01nYjY5WXFFWnlvZzNYTFVZYjk4RlR0SHloTUEzYlJXUVFzKzZmU25FUmJmOEpSRGk3V2FDSjNXeGpiSnUrN05LUldDWm5lQU45OVFIeFBkZ2FxODI1Ymp2eWJYOXl5UEU0NU05eUVyQ2hvOE9CeEdhM0VmVko2YU1aZnU2MDVvUXIxTGVNTjJzNm42dytMYWxTUnMyejZBOHRQV3RrSWxEUUxMVzNmYWFVY0ZlWXBGU293V0ZlTFBYNmJGTGJXdFAxVzFzN2JrVG1YblN2YW9mSE02dEh5bmIyVldnWDRzUUI2eHBCMFdHM3F3dlozdzJzWFlRS043d3BIYkJiQmFqd1I1MTR4V3ZyUWd4Y1hvSUxxeVJ1RWJ3cGoxaHk1T290VVErNjF6S2l3c28zZms0TXVHb2FiNmNkdWZOejkxMWxDZE9RWlcycCsrSXJJUTNURGRxUTRSTGxWKzB2bnZSdUszbjRwNm50NU5TWDVhNGd0QjBkTTN2a0gzRUVYMWxJazhGcjdpSit1R0NSYmp4aHRzVDR5VjNXYm1RVXByS3hzM3JVMzIwMXB2MlBOdjJzazAzWHgzNmw5ZnEyOS9PaUs1T2kyTHlDWW9uT3NhOGdDRndDd0NaMG5qRVdiSVRmZWNkSzFrbnZqM1ZKM0I5V0R3RUxQeitOeW1QSXlUcDYySHkxNWZSQnJ2TElHT1h1dk9LNTZyYVhiRDRObFcwMnZlSWoxeUYxa05QaFZLd3gzYVI4TnBkMmNtNW56TmtiL1NiY1I3aUVTZXdYeVNQMW11RHRzaUV2YnJhWFdCckFkNXdQeDd4a1hPL25zUGpMT1lWQjFUVDJnUU5UL2E5a1FHVG9PSGwrMHA2NklNalJEMWhuNnEwUDFNWFM2WGRoZ0hnclVlYzllaXhnRFhBSWdNdFlNL2o5UEx6WmkxWm9LNWxnWmZlY0RJaHRrTFVSMU5yaHRpZnZSc0hNVFlFUUxmcDB5UE83SGtlR3VyTEJzeld0NGpQSGtxdWlRZmtCa1JOZmxLRjNnUHZ1ODVNMm81dGtHZHkydFpXSmtkVm4yQnZtUDE2ZU1TRjdpTnJpRHBnWXZESExDSlIwc3VPZk1hN0NVSFV1bHZLMEhSZ25YUjJkZFJuaDRaSXIzaXRvczBqdHl3ZEZGSHYxeU11RUNyZFNpMk5CQnI2UmVCNzdpYkdPUlBrUkxjRFpWd2o5aVdaN2RpcEt1M1JFcG0wTmRUd2tMdkV4bWs2T0I1eEJvRVlTMFJtQWtWNHkyQjQxZ3p0UGFkWWdzb2h4SUVoellYUlhhVlgzRjRPazJCV0d1ZDZkdXdSSzdtZlN5T2I0SHprd1NIQ29yTnVUemhPL0JtTjMrZVVHYWk1dG1jWllyelhjSEFJdU1lZkowb1RmQ3FUeWdlVWVqaUVHSSs0Z0Jndm5reko0V293dnpRQW53bnJFVElobFZqclBIOU9JYVZrWS9iZlBoRGhWYWdOdDh4Q1BGWmxtS0UvcDFHZ3JqUjc4enIzaUVzVzAvQ0k4V0hYTUE0dGwzZ3hSbGJQOTRpUGc4Q1NzNXVkd0JYeGpGdEtieUxYR3ZIRFNSdGJMaXV3UXdFVHVlQmxWRlY2SlpRV3ZyTXZENDlZNmIwNWo4TUwvT3lQQUI4ZUVSNVQ3eGdJZU1iMXpXVGd2UGZGODR4aTR6eW5FRnQ5WlBDRnFLRWFXelJISmhicjI5MGpsYVJGTituWEkxWnlyM1BnSVB3Y3R6ZWQxMmhjMC9rNVMrQzQyRkx2Rm5nUWlqZEZjejJmUSt3WkpjZDVxUktlanJEbWloMnJ4ek1XU05yU3NYMHRNUHMwNU1JYnhpUFdORURIeUxEVnF4Qlhwak9aSmJ5QlY0ZXJTeHV0bkI3eFJSOVpYU0ZxcUVhTUY0bThKaTBQczhZT1VtYVJmWHZFV3RyZlNxcWFJeU05UGc5eHpDWEFkbHRrbW5Ec0tiYUI1VjRqdnJrSFY1RVNISXQ2aEhqNmJ1RjRSSUg2blNRNTlPa1JIMXF6VGkrMkdTMkNncnlaYTdDbHp3YytmNStGQlhuL2VQcUoyMmk3T01rclp6R1dPZmYrYkVqU25qRjl2K3daMVVKcDRGU202YS9UTHpWcy83allqdk14dk90RFVUYlhrOGNMb2Y4cStZeldueWZqK1k0WFkvbXpwanhrdXYrOW9FZXM4Z0FSRUoxUTZROVBCM1JFS21uQlhVaHZzcTZ4aGdGclBjTW5ZV2s1cjlXNEZpUEphY3k1Qml3aHlPZmYyUWxacStjWmh3TDNQVjcwcFNIWCt6VWlKdE5WbjhhbVZTUEVzZWNqbEMzbzRpbFd6OTVoYUc3UTN2MDV3TnRzcXA5ckNLMjMvbzRoYTMvYXFsdGVGVnJvNXJoRFpxTFZucklWV3V5aVptRjQ4b3dseFpqN2dPNjB6T3BzYSt3c0FnRHdpQUVVOU9NakluczZmM2c2NEF6VjRMZzZBQUNBQWpHT3puY3FjZFBUZDJ1blZ3QUFRSGRDZlA2c1I5TWt3OUtFdEFBQVFKRm52RmVUUGUwNTM1U1NsZ0FBVUtOWHJOL0JsSFRoU2ZJQUFBQmxRanlwTCs3eDhQUVd3dElBQUZDYktPL3FhMDlMeGRFQkFBQTBlY1hxODUrc2NtQmtTd01BUUZOQ2ZQNk1DVStuUFpOYXFFRDJ6Tm93QUFBb0Z1U1laT1MweDJCNnpnQU5Ea3NqeEFBQW9ORWpGc3FlVG52eVZtUTFyVDNwelFFQUFNZzRuTE82S2x0QzFiUVdoQmdBQUNvUTVFRmRMcFRRdGlVT3lnWUFnRnE4NGkxbUcxT3laZGpZQld6V2h3RUFvQkpCWHRRa0podUwxMlBFK25DZWlpTUFBQUJ5bXZkNktUYUo0eG03YlFraEJnQ0FpZ1E1YWh0VHF0bkJ3cllsQUFEb3lDdGVJOWFKeHhRM0ZyTStqQUFEQUVCdFFqd1hUMUFXV2gvK1cvSUxRUVlBZ0lxRU9HYWRlSlZPMktLc0pRQUE5Q2pLZTlIOXhGTHJ3elFsQUFCVTZoV3ZSZlZQWUdNenB5MEJBRUROZ3F4aW5UaW12dlJLV0JvQUFDcjJpR055cE9KS093dWR6Y2o2TUFBQTFDN0tlNUZpVmtMcDI2T0lXdzRBQUZET0sxNkxuRTlzM01BV1cxK2E1Z1FBZ05wRVdPaFl4RGlIOUx5Qm5VUXRBQURvV0l6ekw5RUtMVkpUWHhvQUFGb1E1RUdpcU5WYklZNlpCVXdrYWdFQVFPMWU4Zmx6eTVxd0pWREk0L2djOUVBekFnQkFBNEtjTjJGTElsT01aZ01BZ0lZODRybklDWVFSaVZydll1SUFBQUE2aFhnc2tiQTFGS3NtQWdBQW9FdVFod2puOUprbVNpVnFJY1FBQU5DQ1J5eDE3c0liSWFhaUZnQUFJTWIvRitJOGVWTUNHZE03QWd3QUFBMTZ4SFBFVHFMaDBaZWVQMSs3NE9hTjA0d0FBTkNJR09kZHNvM0ptRWFFQVFDZ0pTRStmMFpsVGo4UzRzaU1hVXBiQWdCQXE1NXhWT2IwRS9kN0pHTWFBQURnbDFlOEphMnZJUlFISDJreUFBQm8wQnRPbnpsTnhqUUFBTUMxQ0orL3owbHJUZ3ZVbU41STFBSUFnSVk5NGlubU1DUlRhMzFmdUpFeERRQUE4TXRSemJPRktTWXJqRDNFQUFEUXNDQkg3eW9LY2J0akNsdlBpSEJYSVpwdUpsMVh6OXphZTJqMUdYdG9POGplbDlJYy9pQzBZWGt5YjVabWcxYUVLY2UvSy9tTXVkNE5iUWUxMjRUelo5UVdwcEF2bWpqc0FRSkNNNk4xRFMwTk5yc1BHODg4blpHZitWeUsrZncrZlE3L2xoQzZFdUliOEh6cW43SDF0Z00xRTd3MXlTbE1BZ3ZSZjR0YTAzbWJudzB1UnBzZmRuNUFLd0o4R3VmNW5QM3VEN1lvYk9lL0c3UVpkZXY1aG5POHIrZDlINEZyWCtZempuZWZUOXRCdzBLOHhBaXhOeHdUdVVlS3p0cnZiTERxakhuTGlFK25RVDRpSnFXZm42c3BWcVdGeXNnRFdTTFd1ZXhuM1Q3TFVpV2VzZlcyQTVYT1NKcTl4QkpLei9wS041MXdmVjIrVGJjQWo1RkczTGUxYnlqaFlSbnQ5aG5mS1o3dlQyNUI3cUh0UUswTm5NU1BRN1JteXhUemdGQWhQbW9XWXN1UUw0bkV5WjROenlVOHJOTnc3SUxQY3ZqcUNhUjh4cDdhRHBvU1luY3VsU0hFVzJ4YU5wMjBYNCs0cG1jeERqalpIcXdmcmthU2o1bjRzejRZTzJ2cTZORUxvZnFFbUJjck9jdE1jRm9mZUoxYnFycnpyYmNkVkdFRHg0am95eFR5UmRIRlBHaXU1anRqMWFGcGExWjdCQmplS1RRcjNFb1M4Z2xWa3VUR2h4R3VIOGxKZDN0ckhZbFFQZ0VVM1VuUmV0dEJOVFp3aUJWaVorWjBUREVQT2lhaDZZWkNTK3RuUzh2VGdoQldUZHJkbDdnaE9ZRzExb00zejNkUERnRVBLbnhoSkVkNWsxTmluN0gxdG9QcUltclJoYTkrOUIwcm16S055a1BySHZHaXZmMERpN2J2NTM5L1ZYbnB4dEF2T1lUS3VvOHQ1SUR5RzNIOTlkeStlL05ra1c2MEhUUW13bEhMdU01K0tSSDNwa04yNVJGWEU1cTIxaFdQa014L3llcE1ubERxSnR3K2kyTWRlRXJSSndMc3grdUpXZzl0QjMwSzhTK1AyQmhJVk5XQ1VJKzRpcXhweXpEdnJ0SnowcUhHQzZIYXBZWEtHc096UzRSVGhGSXR6OWtsbG85dFJBOXRCOVVLOGZvdGVVcWhwQkFESG5GbDkvMXJ1MDJLWjdERzJKMUJuOTU0Y3NabkR5RWltRHBUMjJGSGR0b09FT0tiTXBjQ0J4N3ZMZFVhaG1DUFdMMFFCL1R0TGZXZTE0dDdHWDBKUUM4L2Z5dDVLbHBBaGI3bHBUZmNmTnRCbFhad1NTWEVNMElNQVo3QlVzcytZazlZODhpOXBCSXcxcGFuQ1Vibnp5bG4yRFpRakxlN0pDcmFEaHF3ZzYvMU10a0gwL202Nm9EcXM2WUQ2NmRuMzNKbnJhZHVMb0Y1K0ptYmxnbXlGY3BkbjI3ejZhbnRvRTQ3bU9SY2htUUtEejBKc2JyUXRMRWxiM2VGTlFzTDFmRTJ1aERnRGM4bFBiU3JiVkcwSFRSa0IyV1hjZ08yUGNTZHNRaXRkVVQxUWh3d3VTeTYzYzR6NW80bm5xekRHLzZxM05BMTMzWlFyVGY4bFVTSUpjNVlSSWk3ODRpUENwSzFOcTBIbEhqMnhzNnVOZFVBejJ5dVBZdTMxYmFEWnNRNDVnU21NY1RBUHQ0WGhSRGpFV3ZwQXdFWnJpcktzWHEyUVRnRng3Tk9kZFJhZnJHSHRvTm03R0QwVVloM0JUMVdQR0o0NEJHclhCdnpSSGpVWlBnSHpLeEhuMEcvOHhwckhZODl0UjFVYndlajZtNzg2QjlDWnhIakVmZnBFUithcXd2ZGlKUkd6LzB1S2VuUyt3dW9EVi85QVN5dHRoMGd4TGRWNXBJWHNZWnVQR0pGeVZxM0JsSlRYL1dNdmRWMUpPR05OMWI5RnBxVzJ3NmFFK0pEeENNT21JVWl4SERuRWFzVDRvQ3RCYXBxb25zeWhQZTdSQzNIK25BTDJkTE50aDAwWlFlakRrbHlIZnJ3V29nSnczUTFFMXdxRU9LNWhncHdBZDd0NERnemQyM3BOS0FlMmc2YXNvZlJ4d2JmZlRBZU1ZUVluaHBDMDBzTkloV3czblRyQlJyajlXZ3BYNk9IdG9PNjdhQW5SK1A5R2pFZU1Uem9nS3MxODFlVE5lM3gydFZtRXp2V1JTZkhHdkYyTnhZYmpMZzAwWGJRbEMwY3hFUFRzY2xhQ0hGWG5WRDFHckVqYkt2NXFNWmJZMzUxejQ3eFdtMjJiaTl0QjNqRWwzMUR5aU9HOWp1Z1Q0Z3g1bEgzL1hRTFU1RnRNNmNCaXJwNmJqdG94aDdLQzNHa1J6elRMRjE2eEtyMkVRZnNpZGQ2TU1YWEU2L0tNMTV6Q1BGNnR2Mys0anF1K2tvdmJRZDR4Q21GbU5BMEhuRVZvV210ZXp0RDFobU45KzhhcjhuR29rQUZ2bC90MEZ2YkFSN3hiZFkwUWd3dlBXTE4yNWVXR21vQUIyVGV2a3JXU2l6RVd5b2hicjN0QUk4NGFXVXRoQmlQV05rOTNoWlpVR3JNZzZ0a2xjb3U5cHkrOVVxSWJ5WVl6YllkTkdVUHg1dElDQVU5SUx0SGZDamRSK3cwanJWWDFucjZiNFM5Z2VFMFFsZlgxWC9iUXp6aUh0b09taFBpSkZuVEt3VTlJTUR3TEpwUFh6cnY4UzVzcENwYytPWTR2ZEtGSko1K3JrdUlieVlhemJZZE5HVVAxUlgwV09sMFhRbHhMZWNSYnpWRWJ4ekpQcGYzV3R2SlAwODg0dGJiRHRxd2c1NHpzNk9GbUdNUTRha0hjSHpYZHg2eHR0RG05TFFlcldmTWJzcjZ6VzczbFR1UHVJZTJnMlljRXJuemlCRmllTkVSMVh2RUlVWlNVWWIzK2xSMFBPdVRxaEtGbm5yRXJiY2Q0Qkg3aEhoNSthRnE2OEJDTnVPektoMHd1L0pKdzkwNlU5QTkra0tqcFovenBnMjhlNEo3YUR1b1hvaW5sM3A1UFZIMmhJT0NoSmcxNHU0OVlsVnJZcDdKWmZFTTNJREpyL2YrQXNLNGc1SzJlSm8xM1h6YlFSTU9TWXdRRDI4NkZrSU1WWnhIWEpQWDR2Qm1IMFdZSENFeUxXVkhkL3VveHBDS1V6MjBIWFFweEx0UGlPZUlENmJqOWRNQjF4b3k1d055SDRxc042YTRMOGRuamFYYjVhbEgzRnZiUWJWMlVGWXZwVDZZenRkK0IvUVY1VmM2WU80OHF5MTNMZUNBOWFYdDVlYzZuMUdaMXhDMFJ0eEwyMEdmUXZ5cjN3b3NQcXRaajRJc0hWRjlaYTJMUWJPVXp2Z1BFSmZINjR2V3FVVno2UkMxZFRqRkZGTjNvUFcyZytydFlGUnk4NXVaWHREaU0xNXhOelBCS2p6aWkvdS9LMWd6cC9hdXJKT1ROc2x6dlMweEx2YU1GN2JrZUZKcnVzZTJnNnJ0b0d4T2xjQytxSVBaWUxjZWNUVmJOandUemRuMjZCS0lrOHVRYjBMZjRhcC9POXZHSk5FelRwN1NmNC96Q1ZwdU8yaktEcjZ2UkNtMFFabEtNbjNPQkk4YVBPTEFkUjNSdmJlV0VSOGNobHhrYVNjd20zT3h6eldXK3Q2QTkvdktJKzZoN2FDWnlPRHIwOGVremxja1c3RHZEbGhORVFOUFNHbjdMTE84ZlI1cm5kVG5JUjVTaHhrRXJoZC9ubkc4dXQ4M3ozaisrVTZzam90bmY1MWgzMnJiUVQwMlVPTFk0TnMrNHlraUgzTE5ORk0zbmRBcHhDVXVZWU8rbTJ1UFQ1N0wrbzR4WU5ZOEpUUVVpMmM1YWJrNkUvamhNMzVFLzNBSTFSYTdSdHhEMjBGMWR2Q3RWaTRoWHhJbHhNd011K2lJenNwYVY0ZTlLeDFJUzhCdWdEazA5R2d0OGF5ZTZGS1NldEFYNzM4T2VNYmw2YjJjejdnNDdJV1pON0lMZXNUTnRoMVVaUU9ISkZvcGNCUWlaeEwzSFpyZVRzTlg0aG9qRFB2OElOTnhPVDI4eVRyNGZqby9adzBjbkp1NXl5Qmx0bTlnOHRSSFhEN1BPRHVlY1Ftd0VadVp2UG1tMW5UdmJRZFZDUEVobms4bGNTWXhIbkhYSG5ISmEzbTd6bWw0ZDF2dWU4MGt3aUVKUjVMWGFxL1JTbnJFUGJRZFZCR1dsajJMK0tKamN3SVR2UEdJUzE2djk1SmE2NGh6eEN6WHppSy85Qkp6Ry9JTFFaNGpRbXErVVBCa2g4Y1RlOFJOdHgyb3RvR1RWaUhlYWFadU91SGlNVnhWZU1UMmN4a2hwMFZRckxZcmdTb3dnMC8xakx1OVAvbmkybExWSlcrNTdVQzFMWXdwYnptRUdOazBYd0F0aFdYVWhhWWxKeHFHVVo4ZXJCMWVyYldxOXFJTVQvTHBNKzdudjVsOGlYazNIckY0OUt5M3RvUGl6a2lhY3htRXpsZ2trN0NQempnYWlTOGFyaUhGZ0xQV1Z6L1B2SnpYYWx4Mmd0TlhCUUpzYjFuNlBPTjg4NHkzaVhFQk5hUHQ5aHB6UEYrTGJRZHFoSGo5bGl4dmVmRUZVWXZRZEY1b01BSVFjbmJ1bDB2c3REL2oyL2RDMjBHblFyeDlTeDc0Y09QdFJKVzVwQlAzSjFBbEwwM1AyVU9idHRwSEdkbndvSDl0TWN0bzN2NG1VVEdFVGcydHo0aUJ0b051KzFGVU1ROXZhRnFpaGlZZEhnQUFHaGJpcUtpeE53SWprQlhMWG1JQUFHaFJnQ1h5cU56THQ5WW0vRFVtTlpzbUF3Q0Exb1E0NEdRejM4NmlJZWlMenA5UmU0bEpmZ0FBZ0VZOTRpWEpIdUtMTDBwVHZnc0FBS0JlYi9ncjJSN2lDeUVlSThvWGNod2lBQUMwS3Nodk02YWZIWXdVZWNRVG1kTUFBTkNpUjV6bUhHTEhGM01jSWdBQUlNUXlHZFBoUWl3UUIrY1VKZ0FBYUZHSTV5ejVVNFlRTDJST0F3QUFRaXlTTVQyOCtjS0ptdE1BQUFCLzlUSHRZUThYUWh3ZEN3Y0FBRUNJLzEzcWZYN0FTR1IyR0puVEFBRFFrZ2hIT2FkdlJGamt6RVdFR0FBQUtoZGdrZVhheHg2eFVNM3BnU1lFQUlEYWhUaXl4dlNmMDV0KzdSSG4vV0lBQUFDZFFyd1YyZEliNllyUENERUFBRFFpeUh1UnBkckloSzJWcGdNQWdKcTk0ZlBuR0Z2MnVaUTd2dEdNQUFCUXN4Q2ZWNW02R2dLbExnOHFiQUVBUUFOQ3ZNU1d0b3gxeVdjcWJBRUFRTWRDWENZeUxGUmhpOEllQUFCUXN4akhIQXU4UmtlRmpkbkFUbUVQQUFEb3lScytmNWJkUFNTeGY0ckNIZ0FBVUxFUUx4RWVjZHp5cktuaXJCTURBRUNuZ2x6V0VSVkszVjVvU2dBQXFGQ0VoOWlsV2VtYk9kaFBEQUFBSFFpd3hQcXdYTEt5d0VsTWY5MXp3dE1BQUZDUkVDK3h5N0ppTnlSdzhnVHJ4QUFBVUpzZzYwaFVsbG9ucHNJV0FBQlVKTUw2bG1SamJ3b1JCZ0NBaW9RNEpnbzhmeHpaRkRlMnh0YmJSSkFCQUVDeEFIOEo2RjI2NWRqSWhldDBNd1FBQUFCQk1ZN1l0clNuRW1DSnV0TnNZd0lBZ0JxODRXaXRTK3AwUnM0U0tIY0pBQURhaFhqUnVqNGNlejd4bnpQem11eHBBQURRTE1oYmhNNmxxNXNoVkdsa1JZZ0JBRUN4Tnh3VmxrNnVjZWNYeEd4aklqd05BQUNhaFhoV1VkYlNJY0t4NVM2cHNnVUFBSnFGZUZPOS9GckZqQUVBQU9DZHhrVkZmSFBQR0dKaTZEc2lEQUFBbXJ4aGdUTVY4dWRBRVo0R0FJQldoTGhLWFl2Y1owVjRHZ0FBTklueEdKdUluRTNUSk1QVENERUFBQ2p4aGtYQzB0bDFMYUxLRnNVOUFBQkFreURIaEtYbllucFczY0kyWkp0aDJsZEw5M1QxV2FVdVRmZGRzaTIxdjN0UTd3M0hSSGlQSXZVeGhLcHNIUlQzQUdoekVzYWJnTXI2YlV6TzAxcTlPMDhYYU5JUWp4ZlhsN0o3R2w1NmxjUE44NVc0QmlYM1BWd2xxa2lMc3FOdmxicVljTFJqdCtyVU1ZRlRLbzRzeDBWQmlSRFBmcmJ2NS9yZm44ZmNiVzJFRVNlanp4MXZ5cTBhbjdWWW4xWHFDdHA5a1BHKzkvTmF6eVdyd2U0YkF1MDVYUFN0a3RlSS9XckNaazNWMXNVUWpLMlBkSW5taFBpcXJVZGxBMjEvNGhVTG5UNG1mYTBQaERqM2ZlK24rSXV0cVVaV1BVcHhUWXo4Sm16VzJrU3VVNlJiejU3aTlvVDR1SnR3RmZhSVh4OUFFamxvRCtILzlzZ2pEcnp2dC9jWUlzaVRVRHNPTDNacUhBbWZHWSs0ZnJzVk83a3J2L3RIYVAvVlRuZm9SNGdWZWNSSFJpRXU2aEVydWU4Rmp4Z1UycXY1dTVWNkdCS3pDbWFXelhSd0ZSNnh0ZFVrMmlNMlBuZDFoR0hYakQvWEowTGd1VytKZTlrQ2JNQVMyWlozSHZFcTlCeFBmN0xybzM1N0ZSWE4xUlNXbGxpREtsZVZCSnIyaUgxQy9HU04yQ0ZvUytHeDk5WWpUckdHTzN2Q3g2K1hvaHdUL2hIYkFTOXRWVXhFUk0vU2hNZllQWG9vQmxMN1FxeklJejRpUGVMamJpS3BxYWpFUmRiMG4wejN2VXBGd0FJODRvbUNIcERaZWR6VTlRUGp3ZmFTYTBpZ1Zvai9hUFdJWHp6ZjZscXIxV2FnUFVaSDlMNXRrWEtzdngxUDkzRWJRbnk0aEIyQmhNam95cU85dytwQzArZnZ5emZuRlBmZXdVZlhOclZHMTRqWG5NLzJjb0swNXRoNmNTSEd5OXRFc3djZU1kbkw4TFIveGlScEhWbFBXbnBwaEVWbUdYU1pwanhpald2RWI3T21GNVVsN3A0SjhaSDZ2aTB4M21KckNJUjR4QUFQK3RPZWNyZUNoZ2VNeVVMYjZDSk5lTVROWlUySENKcm1nVm5TazNja3hRUWxidUVSZy9Da2RHb21TU3ZoUXpLN3hTUE80UkZMWmszWDVCRWZPZS9iODk1MjZUVmlSaUlFOU1XdDZib1hRa2xiSzRNS2p6aURSM3lrU05iQ0kzNDhRZmYyQ3p4aUVIWVUvalM5Zk9yWkt2SFk5WWRtUE9KV3M2WVAxb2lENytOT1JJTU9WTWNqaG9TUm1TZEpXdlZzWHpzSFRIUTVQQVpXdFI0eFdkTjR4S0Vod1RXa0tBa2VNUWpZZ3RndFMwdE5JaXcxODZCOFhEc2VNVm5UNWR1bDJIMkhicUVLRUdNOFlvaXhBLzFGYWlPVHRnNjg0cW85NGw2eXB0VkhjRFRjdDJjeXNPRVJRNFp4RU9zTjE1dTdGSnVkaGxlTVI1elFJeGJQbXE2eG9FY3VJWFo0Sk51RHo4QWpocmY5ZjQ3ZHpWTnQ1VGFCaDZmQUJ4NXhLby80WUkwNDc2SG1kMnZFdm5lSFJ3d0MzdkQrTFhEY1liVjlUT0FGNEJYWDd4RjNrVFZka1VkY0pOdjdSb2lYQjIySlJ3d2x2T0g2SFVKZVFwY2VNVm5UbFhqRXVlN2JNVUh6aWlnZU1VVGFnR2h2bUxDQUVSYWdhMVhyRWY4UTRnSlhpb0lleDkwcFJwcU8zaXVkTmUzeFNvSW5hRTlPWCtMWVF4QTYzS0V0UjFBZ2JSeXZ1QzZQK01wWURuWWJwcTdvNUtucUpPa1JMNW9OVWttUDJEQ0lXMlNpRmg0eDVQYUdIeC9YV1lOWGZMQlczSzFIL0ttZzlMbW16TDh2aWJPbXQvTzVwOFEveDZjRzRlWTg0aXhyeEFIbExlY243OTloUitaTTczOUE3THZ5aHR2YlFvdFgzTDFIck8yU3pKck9kVzF2eDBCdWo5Z1E0VHN2Tm5oeUhlQVI1N3F3UWZXSThGZWtIV3F6cUpTQVYzeXdYbE8xUjZ6dGVwczF2ZFFreENWT2piS1dCZFpZYnpqQUk4NTFUZGdmdk9FV2pIU3NON0V3RUtyd2lQODBMTVF0ZU1USFZYbkpCTmZkdTlwZWlMQUtqeGo3MDRYVDk2ZnBwVkFocjVpMVlqemk3S0hwQUhISklzUlBoU0NreEdXQ3ZqQTVxdW9kbjdYdXA4K2h3Q09lR2VsVjJLQkZ5dUZyYnRJbDZSVTNGekpvenlPK1M2aVpqSjg1cnlWeDFyU1pySlh5R3QrTU8wZDV5ZlVVdDFIZytyU3RyNnp0NCtJYkFSN3huT245NHdUb0QwbExPSHRqODVFUG9Wa3QyeFhxODRnSHg4RDVTdmpuVlB1SWY4MmdsUnVvMVdOOFlxOFFBL2U2QXBiSHlJNkVqTEUvUWhHcnBaY1hKWEVjVmIwbllmVHBFZitZWmVhOGpGQnA4c3BhRi8xY1UwR1AwaUgxMTVQbkFJK1lKQ3BFK0Vzb1AyWG93UnMyQjFSMEJpTmlYSlZIcksyeTF0dDl4SXRyWXFpdFB4WVc0bDFxWFRXa3N0WkxwNENxV3Uxb3l5YTE3Tmw4bXdzdXFHOTBQN1VlY1EyMXBpVkQwMnNGN2JKbVRJSmJKQS81ZUZKWkN4SHQwaFArY2hTTmVWeEZxN2VYS0xFVmdRMzJkWGpFUjRsMWZlblRsMHBWcUVyb0VlK25hSzR2ZjI2Ky9iWlM3UzNwRVVPVGdyeXpOdnpDT0o2L3p3S2hMOHJPNmZPSWF6aVBXSFNOV0hzZlRMRjl5YkVNSVZxU050UWpobTRuLzR1QWpueDEreEtsWmpLRW9QQ0lYM2pFWFlTbWZmY3RrQWczdXhJcWhkc3kranhpN0VSejlrWmlGMDZma1ZWaHI1anRUSGpFSlR6aW80WWtqNEI5eE5IcnFTRWg2aHdlTWVPL1MwZHVKZGRJN3FWdTM1a3JEa0ZXajdoSStEQlIxblIxSHJIRFlFVnRBN1RhL0RMa3A4MGpocVpFZVBvV3JCL2VmZjhSZXFFa2J1bnhpSnZMbXI3d2lDODlTOFVUcEN0UFhtdy92bU9kTHJvU0hoNHgzUFNIWGNxQlE0VGw5amxTaDFxdlIzeG85WWlGK21tMWE4U1pJbHZSUW9sSERGWi9YaVNYTk9rN2JrK0tpbHQxdG1NdldkTkhMZjNPbFRVdHVNVm9TckVPaDBjTUFaTjlrbnlWelhLWUhlTVJoM2pFYjdPbWw5WThZc214NGhqRGMyeXBUanhpOEVSZUhrZFA2VFAzTDNsblR4Z2VzVGFQT0xlZ0pmU0lVNjBSZjNuVzdsNzNBVHhpRU41bHc3blNFZUV0amtxc08yeFVmZFowZzVXMVJDY1FBZG1zS3g0eFJQUmhpVDNETzI4MFlCQUxoUjRZbkdVOTR1NnlwaXZ5aUhNSXNXdC81Mk52Qkk4WUJIV0J2dkxRcS9yRHpLY1pqNWlzNmZMdHN1VHc1QzN2WlJkTWtzTWo3dHV1ekNUemxtbUFKWEl4bmhCMU9ZKzR1NnpwUXNjN2loUWlrVzZUMFBLWG9kLzc1RHhpYmU4ZlJNYXdSRWo2Nk9LczRVUU5zUk9peGlOTzVCRkwxcHBlcnY1ZlplMlMxWk1QV0daNk5DNDlCcGxESDlxMkxadFVQV2w0MXdBU2lWdGtVZU1SU3g2RHVOeFU2SmtMWFVQZy9XZGQydzVJc05rRlBlS2wwTHZuK01YMDQxY2lKRTA5YVlFR1dWZ2JxTjRqYmpWcldzUGxQRmdocE1SbFFXTzZQSHovRWlGS3lXc24xRm5FbGp5OTJETXMwQ2hTZzI5aTBHVHppSnZMbWhZc3hacFZpRDBlY2ZJY0NxTU5YcGUvRFBDSWl3b3hvejVadjluWU02eHJaaVFSb21heHZ0d3N0c1dzYVMyZTJSUjQzMHVKMHB3Qk95RzJ3SW1FUm85NHc1WWs2eStMVlB0ZzgyVWJabVd0b0ZxUCtBOGVjVm9odm5xdkFmdDZzeXpaQkJoWHAyY3VuRDByNmhFejRyTk5uRi90R1VhRTVSdElLaXkxOEVhVHQ5VjBjWDBWSE5qRHhmMjhHcVRudjVzVVhhSGU1TlY5ajByNnh2aGduVmpUdXg4eDh1S1ROVkU3anhDbmFheFpLRVRObHFZT0IvbU5wL2pWMHJQVjZnVng3M0MrMDQzSVp4MHpwbFVveVlKTXVqN0RYdDJLc01ibnI3VWRFT0VrdG4yV0NrbnpWdE0zbWxUb2dsa1RYaG8wTktreUREcjlyejRSbGxvWEprdTY1a2FqNFNDSFVGQlNrVWtnL0xMbm9zNFZZeVZ2NHkwNTkyRUNBR0lNU2Rwclkzc3FEVWdEQWlESVVMZEROZFBtbVJ0UStMakU0S0lDQUFBZ1pzdWxrck5XM21aaFFaWnVUTVFZQUM4WmtudkNVbldrS2FxaXdTcysvN3dTM2dBQXFFS0VKV3VHczFWSmtWZjhKZGl3RTFtcUFBREo3UGFHNDlTb1p5eTRYbnhRb3hRQUlJblR0TENVMkg0alM2MFg3M2pGQUFBeTl2bjhPVXNmdG9GOVZ1Z1ZuMytXV2krbThoWUFRTHlESkhtaUVxY3ExVERyT24vZlNJc0hBRkFoeEtPZ0NNKzgyWHBDSUpJTnZ4QUNBUUI0SmNLU1owaHpoRzJGWWp4Sno4SVFZd0NBWUJzc3VVMkpwY0tLTzhRaUtNYlVwQVlBQ0JEaDgvZE5NSG1XWTJzcjd4aXJwQmpUR1FBQXN0cmRFYnZiUnFmWUpmY1kweWtBQUxLSU1PY0x0eEltRVY2cjJEbXRDUURnMHRZdTBvbXlPRDV0ZFJUSjVDM0VHQURnbnlRRmxkZzYydmhzVFZxTXFiNEZBSWl3ckFpVElVM281UGs1eG9ST0FLQmptem9UYllRM0hXZVZGbU02RGdCMDZBbExSaGs1MXJERGpyVGhHUU1BcVBDRTJhYUVHQ1BHQUFBUFJGamFFNlo2WWNlZFNuSmJFMklNQUhqQ2lEQzg2RlNTUmNsWk13YUExa1g0NEZBZEVPdFlpVTVyd2pNR0FEemhnTDNDT0N4Z2R6SnBNZDZ0ZzdIcGJBQ0FDRk93QXp5ZThaUkFqTmtUQndCVjJzVUV4VHArTE4veHB1R3UwNlVRWTlMeUFhQkcyN2hJaXpCdkZieENuQ2dNYzV5aGIyYUJBS0RhRmhxL3I0Z3d0QmFPT1RqUEdBQjZGZUgvTGROaC8rQk54MHdoeHV5WkF3RE5Uc2lXU29RQjNuWk1hVEgrZTlnMWdnd0FpbXlkZElHamYzTmtyanh1Z0VlencwU2VNWWRlQTRBbUwzaE1JTUlVTjRJcVBPTU5NUWFBd3JadFNtRGI5Z3V4eDhhQldzOTRZNjh4QUJUeWhGUFpOTVFYcXZPTTJkNEVBRm5zbVBIN21qcktoeUJEeXM2Y0lwVHo5eFFTZThBQUFBaDd3aHVlTUxUUW1WT0pNVWxjQUpES2JxVkl5dnBST3hveGhxemhuUVFIUlppbmtyQnVEQUFpdHVyOFhmb0l3MHNSNXExRENURWVFczB3ZDNQZG1BNE9BQkVpdktTTzRBRVVDL1VrRnVPRGRXTUFpSFFVdHRRNUxRQXF4UGo4YzZvT1QrZ0hBSjQ2Q0ZNaUIrR1BXYW9YbXdRYXhYaE4xUEUzdGpnQmdNOFdKZHhtK2V2d0dtd1JhQjRFUzhKQlFLZ2FBTzdzVDhwUTlOK3oxUUZxR1JncFo2UXJTVndBWUVYalVvYWlPY1lRcXAyZHB0cHIvR3QyeXVBQTZGcUVsNFMyWnVWdFE3VkNmUDQrSkp5bFVvMExvRzhCSGhPR292K2NBay8wRFpyd2pJZkVnK1hId1JFTUdJQXVSRGhWZ1E2MkowR2JneVpEK0loRUxvRDJKL1U1SnZZa1pVSHpBMnBPT0lBKzVURlpPd2JBQ3lZcEMrQnFSbnYrUGlaZU45N3hqZ0dhRXVBeFlZMENEcHlCUGdVNVEzanB4OW94Z3dzQUw1aWtUMkJ3WFNSVEpWNDNadTBZb0c0dk9QVmsvZTk2TUxZQmVoOXdVNFlaNzhacFRnQzZKK25HNzBzR20wQU5lNENML2NhcFo3K2ZmWUdEL2YwQW9HWlN2bWV3QXpPVGNnQkxqRFBVcVhZbWN6RVlBY29Jc0pFenNtWWEreVBqSHNEaEdSdXo0aVBEb056WTZnU2dZdktkWTd4VG94N2c0U3c1MXd6NU0wQUhCQmtnei9nMkp0eDdwakUrM1UzOEFjQS9XT2RNQS9YNHJCc2h5QUJKUGVBeFV6NEk1VzhCQkFkdnpvRzcyelZtR2J3QUlwUHFNV09VNjg5VkhnaGpHU0IrSUM4WkIvRkdPQXRBWk53T0dkZUJMN2NxTW5ZQlpBZDRUdS80eDZCR2tBRWVDZkFuRVd2UE9GNFh2R0NBTnIzank4TWtHT0FBdHg3d25GbUFON1lsQVdRYzhOYmhFVnNKUWNaREJyajBnSE1MOEcxeERzWWxRRjRETUdjZStIakl3R1M0ckFkTTJWb0FUUVloYzJVZVoxSVhvZ3dJY0o2dGhsZDJnRllDS0NqRWxuZGN3akJjQ2pLdEJJMUZuNzRLWkVIL3FvN0ZHQU5RUGx2UFdMUDZ6a09lN1VwZEdBeW9XWURQUDMvMkFaY1E0SjF5dEFCMXp0NUxKSE9aaG1NeEJSa0RBalZOYUkyL213cU9vOE5PeG1JTUFkUXB5Rk9CY0xWcFNGYldrYUVtQVM2NC9udDVYckI1ajR3YmdMcU55MXpRcUZ5R3JmR1NRZEg0K0NvY2ZtWlBNRURyQnNkS05Da3B5THU5SDVrWlA1UVFYOHY3M1JTTUM4cktBblEwK3g4VkdCNm5sNHdSZ2xUaWUvNzlkRTRJZHdVQ1BETVpCZWhYa0NjbGd2eDNMUmxSaG9UZTczaEdoRFQwK1IrMW9lbnJBQml0U1lGbllJZXVwd3REaXFFQ3AvRGVpTzhuOUh4b0VlRFBoQk12R0FBMEM3SzVEV3E2U2E3QmdDRyt2blhmUTFGL1h1dzk5clFpQUZ4Nm1nb0YyUmJsSWNRZ1F4L0NxOWp6TlN0aURmUlRBSGhrNk01TG95RGI0ZXZ4aWNHR1pyemVULytjRmEzNWVqMWcraVVBUEJKaXkwUFdhdXdPSS90NnV2R1dNSUFWOXovTDY5V1M3ZXpxajR2dEFkUDNBRURTUTlZcXlMYTNQRjk1eXlFR0g5UUk3M0QydVVWcHlQblgwc25WODlIU0FQRGFTTjRaRTZNQzBSL2wxMkdzTGM5MkVSR0VXWS9vV3NMN0NUZnZGZlN4bldNSkFhQ2tjZjFVNnFyQllKckN2QnJDUERpRUFZRk9KN3BmUnFoNXFVaDR2V2R4MDFjQUlKdWh0ZjV1cmlCc2ZlZlJiSmJYUElTS1RJOUc5K29kQkV4bXpERHpaNDMzcUt5dmZOWi94NnZvRVFDQUNsRTJrbW1PQ2tYWkZ1ZlZTQUliZlFiM1RxQnFGT3kzejNFSzd0aUE2UDRLUDdzbWFBQUFLZ3ozaFVHZUt3czNob1MxcndSNkNCVmFuMWlYdkI2MHRTbTJabWg1cTF4d09jSVRBSm9WWmUxYlRxUkZlckdFZWpTM3N5aHZ1K0ZHYUUyeDNSc1MzS0NEU0FBQVdnaFpmenl2V3RlU0pZUjZOOFJzTlFSdU5vUjdzZ1RjRlBMUkVFclhuOGVMYXpJeWttZmp1MDJCYlYxa2ZWWGJXUHNGZ0s2RWVWQjJFbzUySWJldjNmcHAvMzd3M29KS1QwNTN5d2FNV2dCb1Zvd2R4OVB0aUVNMlllOWFmSzlPUDBKOEFhQjdMeGxSNWtvb3ZyUGQ1MXJJYmdjQVNDM1VZNmRyeWx4eWg0Snc2QUlBd052d3RYV05sWlUrNUNwMFRHWkluMktrQVFBOEVPU0wvellZVzZMd2x2djJldWVyYkdjRUZ3Q2dUQWg3eFZ0dSt2cVVJcDA4NXhRanhBQUFDRE9YWUEzd3lTNndnZUFDQU5RbHpJTlJ4R0w3Wm8rdDlsRHo1S3RzaFFnREFOUXB5S1lYTlJsZU0rdk1aYjNkRVZFRkFHaFVlRzlFK0M0QmJMVEVtYkIyZk9FUXM1em45T1NJU1hvd0FFRDdYbkhvc1g2VEZkckdnNzQvTnRMMGNvZVE5NDhBQXdBZ3pMSG43czdHMmJ1YmNjQkRhMEs3V1NkTFRaOERKNTY4WTNvZEFBQWs4NkN0Znp0YVlqMDdUanphRXgzV1lCOENzUWVjQkRYZGViV3VkNENYQ3dBQWFyenBOK0p6Y2FTaGZZVGhrK3ZxR01VaHhiTmUvYi8wRGdBQUtDTE1vU0pkeWx0OGUwOTR1UUFBMEl3SDdmTWFuNGo0bTR1V0FBQUFTT0NGQTBCZC9BZG40QVFzU0NPa2pBQUFBQUJKUlU1RXJrSmdnZz09JztcblxuZXhwb3J0IGludGVyZmFjZSBPZW1UaGVtZSB7XG4gIG1lbnVCYWNrZ3JvdW5kOiBzdHJpbmc7XG4gIG1lbnVBY3RpdmU6IHN0cmluZztcbn1cblxuY29uc3QgY29tcHV0ZVN0eWxlc0ZvclN0b3J5ID0gKGFyZ3M6IEFyZ3MpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gY29tcHV0ZVN0eWxlcyh7IG1lbnVCYWNrZ3JvdW5kOiBhcmdzLm1lbnVCYWNrZ3JvdW5kLCBtZW51QWN0aXZlOiBhcmdzLm1lbnVBY3RpdmUgfSlcbiAgICAubWFwKHN0eWxlID0+IGAke3N0eWxlLmtleX06ICR7c3R5bGUudmFsdWV9O2ApXG4gICAgLmpvaW4oJyAnKTtcbn07XG5cbi8qKlxuICogTWltaWNzIGhvdyBzdHlsZXMgYXJlIGluamVjdGVkIGluIENvbnNvbGUuXG4gKiBJdCBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gYXBwbHkgc3R5bGVzIHRvIGdpby1tZW51LXNlbGVjdG9yIGRyb3AtZG93biBvdmVybGF5LlxuICogQHBhcmFtIGFyZ3NcbiAqIEBwYXJhbSBkb2N1bWVudFxuICovXG5jb25zdCBjb21wdXRlQW5kSW5qZWN0U3R5bGVzRm9yU3RvcnkgPSAoYXJnczogQXJncywgZG9jdW1lbnQ6IERvY3VtZW50KTogdm9pZCA9PiB7XG4gIGlmICghZG9jdW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXNldFN0b3J5U3R5bGVJbmplY3Rpb24oYXJncyk7XG5cbiAgY29uc3Qgc3R5bGVzID0gY29tcHV0ZVN0eWxlcyh7XG4gICAgbWVudUJhY2tncm91bmQ6IGFyZ3MubWVudUJhY2tncm91bmQsXG4gICAgbWVudUFjdGl2ZTogYXJncy5tZW51QWN0aXZlLFxuICB9KTtcbiAgc3R5bGVzLmZvckVhY2goc3R5bGUgPT4ge1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShzdHlsZS5rZXksIHN0eWxlLnZhbHVlKTtcbiAgfSk7XG59O1xuXG5jb25zdCByZXNldFN0b3J5U3R5bGVJbmplY3Rpb24gPSAoYXJnczogQXJncyk6IHZvaWQgPT4ge1xuICBpZiAoIWFyZ3M/Lm1lbnVCYWNrZ3JvdW5kKSB7XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWdpby1vZW0tcGFsZXR0ZS0tYmFja2dyb3VuZCcpO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1naW8tb2VtLXBhbGV0dGUtLWJhY2tncm91bmQtY29udHJhc3QnKTtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZ2lvLW9lbS1wYWxldHRlLS1zdWItbWVudScpO1xuICB9XG5cbiAgaWYgKCFhcmdzPy5tZW51QWN0aXZlKSB7XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWdpby1vZW0tcGFsZXR0ZS0tYWN0aXZlJyk7XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWdpby1vZW0tcGFsZXR0ZS0tYWN0aXZlLWNvbnRyYXN0Jyk7XG4gIH1cbn07XG5cbmNvbnN0IGNvbXB1dGVTdHlsZXMgPSAodGhlbWU6IE9lbVRoZW1lKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10gPT4ge1xuICBjb25zdCBiYWNrZ3JvdW5kU3R5bGUgPSBjb21wdXRlU3R5bGVBbmRDb250cmFzdEJ5UHJlZml4KCdiYWNrZ3JvdW5kJywgdGhlbWUubWVudUJhY2tncm91bmQpO1xuICBjb25zdCBhY3RpdmVTdHlsZSA9IGNvbXB1dGVTdHlsZUFuZENvbnRyYXN0QnlQcmVmaXgoJ2FjdGl2ZScsIHRoZW1lLm1lbnVBY3RpdmUpO1xuICBsZXQgc3ViTWVudTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10gPSBbXTtcbiAgLy8gSWYgdGhlIG1lbnUgYmFja2dyb3VuZCBpcyBkZWZpbmVkLCB0aGVuIGRlZmluZSB0aGUgc3ViLW1lbnUgY29sb3JcbiAgaWYgKHRoZW1lLm1lbnVCYWNrZ3JvdW5kKSB7XG4gICAgc3ViTWVudSA9IFt7IGtleTogYC0tZ2lvLW9lbS1wYWxldHRlLS1zdWItbWVudWAsIHZhbHVlOiBgY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUubWVudUJhY2tncm91bmR9IDgwJSwgYmxhY2spYCB9XTtcbiAgfVxuICByZXR1cm4gWy4uLmJhY2tncm91bmRTdHlsZSwgLi4uYWN0aXZlU3R5bGUsIC4uLnN1Yk1lbnVdO1xufTtcblxuY29uc3QgY29tcHV0ZVN0eWxlQW5kQ29udHJhc3RCeVByZWZpeCA9IChwcmVmaXg6IHN0cmluZywgY29sb3I6IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdID0+IHtcbiAgaWYgKCFjb2xvcikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBwYWxldHRlQ29sb3IgPSB7IGtleTogYC0tZ2lvLW9lbS1wYWxldHRlLS0ke3ByZWZpeH1gLCB2YWx1ZTogY29sb3IgfTtcbiAgY29uc3QgcGFsZXR0ZUNvbG9yQ29udHJhc3QgPSB7IGtleTogYC0tZ2lvLW9lbS1wYWxldHRlLS0ke3ByZWZpeH0tY29udHJhc3RgLCB2YWx1ZTogJyNmZmYnIH07XG4gIHJldHVybiBbcGFsZXR0ZUNvbG9yLCBwYWxldHRlQ29sb3JDb250cmFzdF07XG59O1xuZXhwb3J0IHsgY29tcHV0ZVN0eWxlcywgY29tcHV0ZVN0eWxlc0ZvclN0b3J5LCBjb21wdXRlQW5kSW5qZWN0U3R5bGVzRm9yU3RvcnksIHJlc2V0U3RvcnlTdHlsZUluamVjdGlvbiB9O1xuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VtLXRoZW1lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL29lbS10aGVtZS9vZW0tdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUlILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFhO0lBQzNDLGNBQWMsRUFBRTtRQUNkLE9BQU8sRUFBRSxPQUFPO0tBQ2pCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsT0FBTyxFQUFFLE9BQU87S0FDakI7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsTUFBTTtLQUNoQjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDM0IsNHNsQkFBNHNsQixDQUFDO0FBTy9zbEIsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQVUsRUFBVSxFQUFFO0lBQ25ELE9BQU8sYUFBYSxDQUFDLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUN2RixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDO1NBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLElBQVUsRUFBRSxRQUFrQixFQUFRLEVBQUU7SUFDOUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsT0FBTztJQUNULENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUM7UUFDM0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1FBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtLQUM1QixDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUFVLEVBQVEsRUFBRTtJQUNwRCxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQy9FLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQ3hGLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzNFLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWUsRUFBb0MsRUFBRTtJQUMxRSxNQUFNLGVBQWUsR0FBRywrQkFBK0IsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVGLE1BQU0sV0FBVyxHQUFHLCtCQUErQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEYsSUFBSSxPQUFPLEdBQXFDLEVBQUUsQ0FBQztJQUNuRCxvRUFBb0U7SUFDcEUsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixLQUFLLENBQUMsY0FBYyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFFRixNQUFNLCtCQUErQixHQUFHLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBb0MsRUFBRTtJQUMxRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsRUFBRSxzQkFBc0IsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxHQUFHLEVBQUUsc0JBQXNCLE1BQU0sV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUM3RixPQUFPLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDO0FBQ0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQXJncywgQXJnVHlwZXMgfSBmcm9tICdAc3Rvcnlib29rL2FuZ3VsYXInO1xuXG5leHBvcnQgY29uc3QgT0VNX1RIRU1FX0FSR19UWVBFUzogQXJnVHlwZXMgPSB7XG4gIG1lbnVCYWNrZ3JvdW5kOiB7XG4gICAgY29udHJvbDogJ2NvbG9yJyxcbiAgfSxcbiAgbWVudUFjdGl2ZToge1xuICAgIGNvbnRyb2w6ICdjb2xvcicsXG4gIH0sXG4gIGxvZ286IHtcbiAgICBjb250cm9sOiAndGV4dCcsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgT0VNX0RFRkFVTFRfTE9HTyA9XG4gICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWVJQUFBSGlDQVlBQUFBMDZjK2pBQUEzekVsRVFWUjQydTJkOFpHbHFoS0hiMDBNUm1FY2htSXVSbUVxSm1JVy9yODE3NzFibm4wTW80RFNRQVBmVjJYTjdONjc1NmhBLytpbWFmNzVCd0FBQUFDZ0o3Ni92NzgwWHJRTUFBQTBMN0l0VFJab2JRQUFVQ05RRC8vdDhOOXJQSy9KdU9ieldzNXJ0YTd0NFdYKzI4VzRQdC96K2Q3UHZRem45Wlg2WFFBQUFEd1dtb0QvZjdERWRUWUU5U09PKzNrZC83MytLTHNPNC80MlM4Um5TN1NkN3dTUkJnQUFVY0c5OEdZL1h1V3FVR0NQVElLOTNRajFJRFc1QVFDQXhvWFg0OTJhWHUzSG85WG95V3IwcWo4aS9WaWc2YUVBQUIySjd2bmZQdUZrTTR5TTRNcGZINEgrZU5DMzRvd3dBd0MwSzd5bXA0dVhxMU9jZjdVZklXMEFnTXFFMTFyVE5jUExpRzQ5b2UxUFdIdkFZd1lBcU1Uck5SS3BQaUZteEswZHJ4bGhCZ0JRNlBWK1FzMnM3ZllwektNcmpNM29BUUFRRUdDSDE0dndjbjJFZWYxNHkzZkN6SWdDQUhqditRNUdWdk9POEhCNTFwZy8yNmJHME1rZEFBQUNmQysrSytMTEZTSEtuNHhzUkJrQTRLSDRFbkxta3I0dVJSbEJCb0R1QlBqQ0NPTDVjcFh3bEg4bGV5SEtBTkNGOTJ0VXMwSjhmeVljbVFjdVhKMmdaSitpNUxydVRtN2FyUXRSL3I4b0QzaktBTkM2OXpzWWhUVjZFbGY3Y0lTcms0eUdsSk9nbThuUTFYR001bUVXOW9FV3ZTUjZUWGpKQU5DYTl6czN1dTVyZXEvQkp4RDV4RExsZFRkSkNyaEgrNGpIeFJMcWJ0YVRHZVVBVUl2M096YTAzZWp4YVVLU1h1d0wwWHgxRm5DSWdIdUUyajZEZVc4b2REMlo3d0l2R1FBMGU3OW0xdk5ScWVoK3dzaVB6OWYxMWI2dW9UMDlKVVFmUFlkMWZuUHRaVWYzczE4TWhLMEJRSnNBRDBhbHExcFAvcG11OXBxR0NoV25BNFY3NUJmaXZGY3lhVHVzdFdReXJnR2d1QURYRm43ZXphcEx2c01EWWtLMTlKV2ZJVnpmZTdPcXAyMlZyU1ZQVjg4T0FKQmFnR3RJdnRwZDVRNURQVHA2UURHdmVhcm8rTXI5N0dkTTJnQkEzcXN4L2p3cDkxWitGR3BBWUt1YTNEM3htUGZhMXBGcGNRQm9XWUROazNlQ3QrNWdIS3YzbnJXZndQVlhrTW0wQm9ESEFtd1lPNjBDN0t3WmpPZmJ0aGc3dkdXTlc2WU9QR1FBQ0RaeXlqM2d6YlhXaS9qaUpSdlZ3alNLOG1GUEh1bXJBUERQUllFQ2JRSzhQVTIwZ240ak9EZi9qN2JUdlBDUUFlRDM0RmNtd0xzcjJZcVdneWZlOG8wb2F4TGtINU5oV2crZ0l3TmxuWUNrSmVGcVpJMFhVa1Y5akwvVFZJRG03N1lubjNjUEFHMTV3SU1TQWY3VThPWDRPU2psSldzcFNyTmZaZjdUY2dCdGVzRkw0Zld5M1pYeFRJdEJRVkhXc0VUem8xSVhZd0tnTFM5NExqenIvMVVLRUFFR2JSTlZSVjd5YXU5QnByVUFLaFJnWXgxNEs1aVFjcm4yU3l1QmNqSCtNczdTTGluSXJCOERWT3dCbDF3SC9qZjg3RE4yQU5yRjJmanpWSGc4VFhqSEFKVVlqY0t6K0gvMy9WNkpMNjBFall5MWtqc05WcnNnQ0MwQ29NOExMaFdHM3N3Wk95SU1IWGpJUTZIRXgrUHFsQ2RhQ0tDZ1liQ3lvWXNKTUVZQk9oMkhuejNKQjluVkFQMTZ3Vk9CTVBURzlpT0FYLzIveEpMUTMzS1pqRUdBakY2d01STmZTd3N3QUdQeTE3ak03U0h2ZU1jQTdYdkJHNmZHQVBqRjJEb0ZhaTZ4OTVneEN0Q1dGOHdhTUVEOEdGN3dqZ0h3Z3FNR016TnNnUGRlY3FGSjlNcmtHVUJ3SUdlY1ViTTFBaUNSR0o5L2wzT0xJZDR4UU16Z05RWnRMaS9ZV1FtTFFRd1FQN2FOMzZjU1k1dHhEUERNQzU1ekptSWh1Z0JGeHZ5Y08rR1M4UTNnRitFaFUranFWOWdLTHhpZ2lIYzhaRnArT3V3U3RMUUV3RCsvVGtyS0ZhNWE3b3dDQUJRVDVGem5JWlBJQlhBekNKZE00YWtCQVFaUWJRdm1UQkd4MFhBQ3NBWFF0U2VjSXhSOWtEMEpvTjhtWk5ydWRCQ3FCZ2JjL3dkYmpsRDBlalhRQVVDM0lHZGNybG9SWStoMWdNMjVrckVRWUlCNnZlUHp6MnVPWlN0c0JmVGlCWDlsR0ZSNHdRQjR4NitYc0xBYjBMSUlwNjZxUXlVZGdJWTk0MHplTWV2RzBLd0lwNTdOcnJ4dGdQWnRTVzU3Z2hoREN3S2NlajJZakdpQXpqeGs0MXBaTndid3oxd1h6aDhGZ0lTQ1BCdGJrcExzTjhhK1FNMGluSEk5ZUtZNkRrRGZRbXo4T1hVOWdnbGJBN1hOVWxNT0NpcmlBTURkNUg5aDhnK0VpZEllWGJnaXdBRGdFZU1wWWFpYUl4VkJ2UkNuSEFDL3RoUXdFQURnU3BBVFIrVTROQUxVRG9BNWRTZ2FBT0NoWFZvU1psVGpFRUFYSXN4ZVBnQ0l0VTlUUWllQjdVMVFQUHp6bFhER3VSRCtBUUFoV3pVa3lsMWhleE9VNjlqbjc2azIwMCs4YVFDUXNsbUdJSytKaWdxTk9BNVF3aE5lVTFXeTRVMERRRUlIWWtsVjRROGhocHdpbkNJYmNiTm5yd0FBaWV6WlJPRVBRSVF2OXVZUjJnR0FqUFlzVmMwRHhCaXlpUENSWW4rd0hVSUNBRWhsMXhKWEFaeXhaeUF0d3FrNkt6TkhBQ2d0eHFseVhoQmpTT0lKSjZrWHpkc0dBQVZpdkNERzBJc252SmxIRi9LMkFVQ0R2VHQvbnhOa1V5UEdvTW9UM3E0NlB3Q0FJdTk0VGxrckgrQkptR2FqVURvQTlHVDNqTDhiVXhVcXd2NUJhSGhtUzFrem1vNElBQlVJODVqZ05Ma0pod1JLaVBEQ0d3YUFHcjNqUkh1TjJTMEN6azY0c2k0Q0FKRDh3QWhxVTBNZUVhYVRBVUFMWW56K3ZxYzZLSUkzVFNkTFVRUjl2Z3J6QUFCVWJDZWxrMWdQempQdXZHTWxUTlhIRXdhQVZzVll1cmJDVGwwRmhIaE83UW5UdVFBQXo5aGI1QWg3MmFrSVQ1UnlBd0JRNFJtdnZOMytSSGdrT3hvQTRMMFluNzhqeHZCS2hJY1V4eGppQ1FOQXAySzhwemlibmJmY2JqaEZlbTBEVHhnQWVuZHV2b1RGbU9wYmpYZWNqZXhvQUFBNUlUNS9IMUtKTVcrNkxXOVljcS93d293TkFDQlpCUzcyR0RjWU9wbFRpREJ2R0FEZ2h4aVB3bnVNdjh6UGgzcEZlT0lVSlFDQUtzVjR4ZGJXTDhLU0dkSnNPZ2NBOE5qZDgvZUpUR3FRenBEZThZUUJBSUtkSU9rbFFYYW9WTm9SVm1xaEFnQVU5WXdYeWRPYXNNT1ZkSUR6cCtSTURCRUdBSGh2anlXZElwWUhLMm4waWIxc0FBQ3E3UE5HR2N4K1JGaHlIOXRzaDFrQUFPQ2RqUmEwelF0dnRJOVpGMWw2QUFEeWp0SWh0RjQ4WWFOMU52TEN2alVBQU5WMmVpU0p0dDNHbmFRcnVRQUFnSnl0VHBCTXUvRm1kWVU3ZHVrTWFRUVpBRUJlak05cmtUNThCNXRkdG5FM2p0NENBTUIyODFiTGVNTXpHZElBQUZWNnhsTFJUUFlYRjJ6RWtlUXNBSUNxbmFsUmNuOHhkankvRU8vU21YYzBJZ0JBZGxzK1U0KzZ2a2FUWE9pbmRpa0FRRUY3ZnY1NUZkcGZ6SmFtVEEwM01Yc3FPZ2xTRnprb2RYOVgzNnZsUGZYU1ppRnRFSE14K3JQMmc1MHRUWFUwbXRUaVB2VktJWG9XLy9UZjhRYjdhWE40OW83UG42T0FSL3dqK1phM202YWhWc216aFNISUNJMFgxNkRGT0xudVVkb1lYMHdLeHpOQ001L1hZdncrbmYvOXg3L044ZDV1M3NtZ3hUQVo3eTZxdlc0K1Irb2FydTRKNDU3Y3hzOGNtYWg3UmpxeExsemt2YTlHNXo3c0pEZEZrN1BEdVBaUE8wdDhoL0huOFRRVTI0UEl6SDdlNDJ5K3N4VDk3MktzbUcyMmxlN3puajRWblBWcWZNNTIwZmFTMTM1K3gvclpxNG9nWitrbkt5RnFuUTBqRlpJbVpQRXVYSFJvMnZZVlVOcDBrZm9PNDNzMmdZTDF4L25lUnVNWnZpVGZpMlBTdW10WXQzWVkyc2ZiVHdRTFFqelpaVEVqeGxrbWJMdGsxUzNlYXJxQnl6NnpmQjdNWGJpbzZBa29ONE4xaytoenhpUWtsYkZmcFRNOFBlRzlYVkh5V0pRUVgzakV2alhEcC8vTjYyMFJXU3MyeVNaRVhYbURrTlllWjBCM0RldnRBV3RKazVBSUw0S0cyOVV2eFR3c3o1alpGZldsYUk4NFVJaFRYK3k4S0RQR0NWRlhHcUtnRm1tNkNWRzJjSDlBZHVYcmNMbjEyVnRnbUhJejFuOW5LMmxyOVh6T1lkOTN6SHUwUE03cDRydDJCV05aVEloZEVaSHovWC9hNE8zUE5YQTVndVd1ZEgxbUVKaHNIYlJSdk1GZENFbXJhcGUxWlBqSHMxU3h2ODNtdGdUc0NBZ3BUeUZaeUViMjhoeGdVTGJZYkhUUFVrSlRIdkg1LzI0cDFnV3RTY040MnFFRHo3aElueGtsSTZMd2ZCQ01iRlZTT1VQZFMwNTJIT0dxV1VDRWZRSTh2aTBHY2I2N3lSUGhlWDNZdVZXbFNHMW8yaUdnVW12RWM0cUNIaDd2akxYSU1tTWVoeXlER0V1cy8weThmUEVKMGx3cS9POVlxdGhzWXk4b3dydTVkZVZOZ1llTGY3dWtGT09iNTlsYXlwcDJDYkU5TVltODE5QlNqQnQySm1uZlFROEtERlNKR2REQ1M4ODZLSkp0andsWXFuanNqUVJzei9vYkxyNElWMzdGUElmaHRSNHBFa3cwWmsxYjd6RGxHbkdTTFN1V01LK3NGeGVKeGhFaHpUaFFKZllNY3o1bDJvblNtR3Z5ay9JN1BYMXR6ZlFleGI2L3A2eHB4NFF3bVJnYTcvZXUzK3pZSFBVTzJvdzJ2QTlia1NXdHI1MlduR3RsTGk4ODRqUFgwclhJUFdJY0hFcnpaRTMzdEk4NGkxZXFkVzk5cDlFNDloWm44bm80MEVGbjlHSlB1Vy92eWJyMGs3VkZoOWY0WXkwMTR5bE9vMis5V09COXFWZ2p6ckNQT09kMnV1MnUvMlBrazBZakpJcnA0S2c5bk9FK0RrbnpSck41TmxQcWZYdXVUTzNJTE9uOWJyYWM4V0NHcjRESlJsRG9QU1JyV3NNYXNVUEF4TmFJTXdyeEVqdDVnbGZqWlNaeEs5M2dGSW4vMjBZSmlvUVpvNDJSWjZuaWVMUG5OcUN2ellYZjVlWktSbnZ3V2RxM0wxVzVSdndnZ2pkaEpaS1BsZGc4SXJMY0U3MVk5b21WYWJ1N3JPUG94QzFYTmE4M0lteGNoOFpTZUZMdnN2V3NhUTFyeEo1b0RkblRDZnVQWnhMRUlVQVJNMHVKQ2xvc3dPdUxab3lSMjMwMjN4cnV3elhGb3Z1Z0k4S2RRUkVBVDJpYU5lSTB6N1I5YytxUHBuNzBkQ21UWlFSalZobGJVSCtoNHhjWDQrakVyY0Ixb05lQzZURGVhc0pVRHEvWUtUQTlaVTBibjdrWHpKcDJlZVhZb3p4ZXNZaDJkTzNBQ1c1WFlwTzJqblljWThNL0FRUHMxYUNSdk1lQ1kySUw4WWlwTloxUGlCMzNzR0FaaWtmakhtOW42am0wTUFyTWFFaU0wTkdXWDc3RXFraEQvVHFNNUZrQ1VSR2VDdkJvbmFIK202enBvOFdzYVVWcnhGK3NFYXV3UVJ2NVJXVzlZYzZhMU5XZXprTWhBbzNySkozUjdCTUFMV0ZFNHgwTWI4bzNVbXU2U0xMV0liRy9IWkpFNHg3bEdIWFZYZ0VGRlo1Y1E2NUJCOUdoSXVlK1BVLzIvQnB6WHpIaXBzMXI5QW14b3cyNnFUV2QyaWJFUkM0Z2F6VHVzVlBYbzFlOFNTMnkwK0dyYU5zdFFFQVdhY01XTVBFYmxRcnhZekdsMW5UMmZjUXJSWVZVUlpIK3NNd3BNNU44bEhhT0NLdHQ1K0RNMzRCVGtFU3lHaDNDTmxRMFJtNFBPS2ZXZFBaa3JTRmxmNFZuL2NvemtXZXBNNUUzVEFVdHhRUERNU2h1TXhSZGRYc0Y3K2ZRdG03cXVOL3hiY0lXdGFiVENXR0EwYWQwWXRueEUxc1lxdDBEZ3dJelFxa24zY2VnV0IvMGllaEI0VEdjS29YWXM2WjkrVTZvTlozbkdFVFBiZytTUjh2M3JSbXYrUDBzOWxXeGJnUlovYUR3Q3F3djAxb2dKQzI2THBueEhYcUYrRTZNcVRXZDVCaE9YMzlsSzZXZXNiUGhGYnRmVVBSc0JRR3VMZ3F5dWc1UVQ3bTNOMFUxcDh6djdsV1dkKysxcGk5T3RvcTZqTzhjSEVhZTQxZjFqSnZwbXdNaDBzNVU4SWFyR3hoM1NTMnpxOUtWMUQ3TWlvWDRsVWZzaUVRMGxUWHRXeU5PNUVUc09BalZpREZlY2NwWkNwMjl1bmEvU3g0Njd1cFRTN1Z6alI3eDJ6WGlFQ0hXa0tqbG1KQS96amErZVQvTCtlNUdnV3M2UDIvejVLeXdiMWpSK0hHTWdiNjlZcUVaeW9nM1hMVVliOThGVHRIeWhNQTNiUldRUXMrNmZTbkVSYmY4SlJEaTdXYUNKM1d4amJKdSs3TktSV0NabmVBTjk5UUh4UGRnYXE4MjVianZ5Ylg5eXlQRTQ1TTl5RXJDaG84T0J4R2EzRWZWSjZhTVpmdTYwNW9RcjFMZU1OMnM2bjZ3K0xhbFNSczJ6NkE4dFBXdGtJbERRTExXM2ZhYVVjRmVZcEZTb3dXRmVMUFg2YkZMYld0UDFXMXM3YmtUbVhuU3Zhb2ZITTZ0SHluYjJWV2dYNHNRQjZ4cEIwV0czcXd2WjN3MnNYWVFLTjd3cEhiQmJCYWp3UjUxNHhXdnJRZ3hjWG9JTHF5UnVFYndwajFoeTVPb3RVUSs2MXpLaXdzbzNmazRNdUdvYWI2Y2R1Zk56OTExbENkT1FaVzJwKytJcklRM1REZHFRNFJMbFYrMHZudlJ1SzNuNHA2bnQ1TlNYNWE0Z3RCMGRNM3ZrSDNFRVgxbElrOEZyN2lKK3VHQ1JianhodHNUNHlWM1dibVFVcHJLeHMzclUzMjAxcHYyUE52MnNrMDNYeDM2bDlmcTI5L09pSzVPaTJMeUNZb25Pc2E4Z0NGd0N3Q1owbmpFV2JJVGZlY2RLMWtudmozVkozQjlXRHdFTFB6K055bVBJeVRwNjJIeTE1ZlJCcnZMSUdPWHV2T0s1NnJhWGJENE5sVzAydmVJajF5RjFrTlBoVkt3eDNhUjhOcGQyY201bnpOa2IvU2JjUjdpRVNld1h5U1AxbXVEdHNpRXZicmFYV0JyQWQ1d1B4N3hrWE8vbnNQakxPWVZCMVRUMmdRTlQvYTlrUUdUb09IbCswcDY2SU1qUkQxaG42cTBQMU1YUzZYZGhnSGdyVWVjOWVpeGdEWEFJZ010WU0vajlQTHpaaTFab0s1bGdaZmVjRElodGtMVVIxTnJodGlmdlJzSE1UWUVRTGZwMHlQTzdIa2VHdXJMQnN6V3Q0alBIa3F1aVFma0JrUk5mbEtGM2dQdnU4NU0ybzV0a0dkeTJ0WldKa2RWbjJCdm1QMTZlTVNGN2lOcmlEcGdZdkRITENKUjBzdU9mTWE3Q1VIVXVsdkswSFJnblhSMmRkUm5oNFpJcjNpdG9zMGp0eXdkRkZIdjF5TXVFQ3JkU2kyTkJCcjZSZUI3N2liR09SUGtSTGNEWlZ3ajlpV1o3ZGlwS3UzUkVwbTBOZFR3a0x2RXhtazZPQjV4Qm9FWVMwUm1Ba1Y0eTJCNDFnenRQYWRZZ3NvaHhJRWh6WVhSWGFWWDNGNE9rMkJXR3VkNmR1d1JLN21mU3lPYjRIemt3U0hDb3JOdVR6aE8vQm1OMytlVUdhaTV0bWNaWXJ6WGNIQUl1TWVmSjBvVGZDcVR5Z2VVZWppRUdJKzRnQmd2bmt6SjRXb3d2elFBbnduckVUSWhsVmpyUEg5T0lhVmtZL2JmUGhEaFZhZ050OHhDUEZabG1LRS9wMUdncmpSNzh6cjNpRXNXMC9DSThXSFhNQTR0bDNneFJsYlA5NGlQZzhDU3M1dWR3Qlh4akZ0S2J5TFhHdkhEU1J0YkxpdXdRd0VUdWVCbFZGVjZKWlFXdnJNdkQ0OVk2YjA1ajhNTC9PeVBBQjhlRVI1VDd4Z0llTWIxeldUZ3ZQZkY4NHhpNHp5bkVGdDlaUENGcUtFYVd6UkhKaGJyMjkwamxhUkZOK25YSTFaeXIzUGdJUHdjdHplZDEyaGMwL2s1UytDNDJGTHZGbmdRaWpkRmN6MmZRK3daSmNkNXFSS2VqckRtaWgycnh6TVdTTnJTc1gwdE1QczA1TUlieGlQV05FREh5TERWcXhCWHBqT1pKYnlCVjRlclN4dXRuQjd4UlI5WlhTRnFxRWFNRjRtOEppMFBzOFlPVW1hUmZYdkVXdHJmU3FxYUl5TTlQZzl4ekNYQWRsdGttbkRzS2JhQjVWNGp2cmtIVjVFU0hJdDZoSGo2YnVGNFJJSDZuU1E1OU9rUkgxcXpUaSsyR1MyQ2dyeVphN0NsendjK2Y1K0ZCWG4vZVBxSjIyaTdPTWtyWnpHV09mZitiRWpTbmpGOXYrd1oxVUpwNEZTbTZhL1RMelZzLzdqWWp2TXh2T3REVVRiWGs4Y0xvZjhxK1l6V255ZmorWTRYWS9tenBqeGt1dis5b0VlczhnQVJFSjFRNlE5UEIzUkVLbW5CWFVodnNxNnhoZ0ZyUGNNbllXazVyOVc0RmlQSmFjeTVCaXdoeU9mZjJRbFpxK2NaaHdMM1BWNzBwU0hYK3pVaUp0TlZuOGFtVlNQRXNlY2psQzNvNGlsV3o5NWhhRzdRM3YwNXdOdHNxcDlyQ0syMy9vNGhhMy9hcWx0ZUZWcm81cmhEWnFMVm5ySVZXdXlpWm1GNDhvd2x4Wmo3Z082MHpPcHNhK3dzQWdEd2lBRVU5T01qSW5zNmYzZzY0QXpWNExnNkFBQ0FBakdPem5jcWNkUFRkMnVuVndBQVFIZENmUDZzUjlNa3c5S0V0QUFBUUpGbnZGZVRQZTA1MzVTU2xnQUFVS05Yck4vQmxIVGhTZklBQUFCbFFqeXBMKzd4OFBRV3d0SUFBRkNiS08vcWEwOUx4ZEVCQUFBMGVjWHE4NStzY21Ca1N3TUFRRk5DZlA2TUNVK25QWk5hcUVEMnpOb3dBQUFvRnVTWVpPUzB4MkI2emdBTkRrc2p4QUFBb05FakZzcWVUbnZ5Vm1RMXJUM3B6UUVBQU1nNG5MTzZLbHRDMWJRV2hCZ0FBQ29RNUVGZExwVFF0aVVPeWdZQWdGcTg0aTFtRzFPeVpkallCV3pXaHdFQW9CSkJYdFFrSmh1TDEyUEUrbkNlaWlNQUFBQnltdmQ2S1RhSjR4bTdiUWtoQmdDQWlnUTVhaHRUcXRuQndyWWxBQURveUN0ZUk5YUp4eFEzRnJNK2pBQURBRUJ0UWp3WFQxQVdXaC8rVy9JTFFRWUFnSXFFT0dhZGVKVk8yS0tzSlFBQTlDaktlOUg5eEZMcnd6UWxBQUJVNmhXdlJmVlBZR016cHkwQkFFRE5ncXhpblRpbXZ2UktXQm9BQUNyMmlHTnlwT0pLT3d1ZHpjajZNQUFBMUM3S2U1RmlWa0xwMjZPSVd3NEFBRkRPSzE2TG5FOXMzTUFXVzErYTVnUUFnTnBFV09oWXhEaUg5THlCblVRdEFBRG9XSXp6TDlFS0xWSlRYeG9BQUZvUTVFR2lxTlZiSVk2WkJVd2thZ0VBUU8xZThmbHp5NXF3SlZESTQvZ2M5RUF6QWdCQUE0S2NOMkZMSWxPTVpnTUFnSVk4NHJuSUNZUVJpVnJ2WXVJQUFBQTZoWGdza2JBMUZLc21BZ0FBb0V1UWh3am45SmttU2lWcUljUUFBTkNDUnl4MTdzSWJJYWFpRmdBQUlNYi9GK0k4ZVZNQ0dkTTdBZ3dBQUExNnhIUEVUcUxoMFplZVAxKzc0T2FOMDR3QUFOQ0lHT2Rkc28zSm1FYUVBUUNnSlNFK2YwWmxUajhTNHNpTWFVcGJBZ0JBcTU1eFZPYjBFL2Q3SkdNYUFBRGdsMWU4SmEydklSUUhIMmt5QUFCbzBCdE9uemxOeGpRQUFNQzFDSisvejBsclRndlVtTjVJMUFJQWdJWTk0aW5tTUNSVGEzMWZ1SkV4RFFBQThNdFJ6Yk9GS1NZcmpEM0VBQURRc0NCSDd5b0tjYnRqQ2x2UGlIQlhJWnB1SmwxWHo5emFlMmoxR1h0b084amVsOUljL2lDMFlYa3liNVptZzFhRUtjZS9LL21NdWQ0TmJRZTEyNFR6WjlRV3BwQXZtampzQVFKQ002TjFEUzBOTnJzUEc4ODhuWkdmK1Z5SytmdytmUTcvbGhDNkV1SWI4SHpxbjdIMXRnTTFFN3cxeVNsTUFndlJmNHRhMDNtYm53MHVScHNmZG41QUt3SjhHdWY1blAzdUQ3WW9iT2UvRzdRWmRldjVobk84citkOUg0RnJYK1l6am5lZlQ5dEJ3MEs4eEFpeE54d1R1VWVLenRydmJMRHFqSG5MaUUrblFUNGlKcVdmbjZzcFZxV0Z5c2dEV1NMV3VleG4zVDdMVWlXZXNmVzJBNVhPU0pxOXhCSkt6L3BLTjUxd2ZWMitUYmNBajVGRzNMZTFieWpoWVJudDlobmZLWjd2VDI1QjdxSHRRSzBObk1TUFE3Um15eFR6Z0ZBaFBtb1dZc3VRTDRuRXlaNE56eVU4ck5OdzdJTFBjdmpxQ2FSOHhwN2FEcG9TWW5jdWxTSEVXMnhhTnAyMFg0KzRwbWN4RGpqWkhxd2Zya2FTajVuNHN6NFlPMnZxNk5FTG9mcUVtQmNyT2N0TWNGb2ZlSjFicXJyenJiY2RWR0VEeDRqb3l4VHlSZEhGUEdpdTVqdGoxYUZwYTFaN0JCamVLVFFyM0VvUzhnbFZrdVRHaHhHdUg4bEpkM3RySFlsUVBnRVUzVW5SZXR0Qk5UWndpQlZpWitaMFRERVBPaWFoNllaQ1MrdG5TOHZUZ2hCV1RkcmRsN2doT1lHMTFvTTN6M2RQRGdFUEtueGhKRWQ1azFOaW43SDF0b1BxSW1yUmhhOSs5QjBybXpLTnlrUHJIdkdpdmYwRGk3YnY1MzkvVlhucHh0QXZPWVRLdW84dDVJRHlHM0g5OWR5K2UvTmtrVzYwSFRRbXdsSEx1TTUrS1JIM3BrTjI1UkZYRTVxMjFoV1BrTXgveWVwTW5sRHFKdHcraTJNZGVFclJKd0xzeCt1SldnOXRCMzBLOFMrUDJCaElWTldDVUkrNGlxeHB5ekR2cnRKejBxSEdDNkhhcFlYS0dzT3pTNFJUaEZJdHo5a2xsbzl0UkE5dEI5VUs4Zm90ZVVxaHBCQURIbkZsOS8xcnUwMktaN0RHMkoxQm45NTRjc1puRHlFaW1EcFQyMkZIZHRvT0VPS2JNcGNDQng3dkxkVWFobUNQV0wwUUIvVHRMZldlMTR0N0dYMEpRQzgvZnl0NUtscEFoYjdscFRmY2ZOdEJsWFp3U1NYRU0wSU1BWjdCVXNzK1lrOVk4OGk5cEJJdzFwYW5DVWJuenlsbjJEWlFqTGU3SkNyYURocXdnNi8xTXRrSDAvbTY2b0RxczZZRDY2ZG4zM0pucmFkdUxvRjUrSm1ibGdteUZjcGRuMjd6NmFudG9FNDdtT1JjaG1RS0R6MEpzYnJRdExFbGIzZUZOUXNMMWZFMnVoRGdEYzhsUGJTcmJWRzBIVFJrQjJXWGNnTzJQY1Nkc1FpdGRVVDFRaHd3dVN5NjNjNHo1bzRubnF6REcvNnEzTkExMzNaUXJUZjhsVVNJSmM1WVJJaTc4NGlQQ3BLMU5xMEhsSGoyeHM2dU5kVUF6Mnl1UFl1MzFiYURac1E0NWdTbU1jVEFQdDRYaFJEakVXdnBBd0VacmlyS3NYcTJRVGdGeDdOT2RkUmFmckdIdG9ObTdHRDBVWWgzQlQxV1BHSjQ0QkdyWEJ2elJIalVaUGdIekt4SG4wRy84eHBySFk4OXRSMVVid2VqNm03ODZCOUNaeEhqRWZmcEVSK2Fxd3ZkaUpSR3ovMHVLZW5TK3d1b0RWLzlBU3l0dGgwZ3hMZFY1cElYc1ladVBHSkZ5VnEzQmxKVFgvV012ZFYxSk9HTk4xYjlGcHFXMnc2YUUrSkR4Q01PbUlVaXhIRG5FYXNUNG9DdEJhcHFvbnN5aFBlN1JDM0grbkFMMmRMTnRoMDBaUWVqRGtseUhmcndXb2dKdzNRMUUxd3FFT0s1aGdwd0FkN3Q0RGd6ZDIzcE5LQWUyZzZhc29mUnh3YmZmVEFlTVlRWW5ocEMwMHNOSWhXdzNuVHJCUnJqOVdncFg2T0h0b082N2FBblIrUDlHakVlTVR6b2dLczE4MWVUTmUzeDJ0Vm1FenZXUlNmSEd2RjJOeFliakxnMDBYYlFsQzBjeEVQVHNjbGFDSEZYblZEMUdyRWpiS3Y1cU1aYlkzNTF6NDd4V20yMmJpOXRCM2pFbDMxRHlpT0c5anVnVDRneDVsSDMvWFFMVTVGdE02Y0JpcnA2Ymp0b3hoN0tDM0drUnp6VExGMTZ4S3IyRVFmc2lkZDZNTVhYRTYvS00xNXpDUEY2dHYzKzRqcXUra292YlFkNHhDbUZtTkEwSG5FVm9XbXRlenREMWhtTjkrOGFyOG5Hb2tBRnZsL3QwRnZiQVI3eGJkWTBRZ3d2UFdMTjI1ZVdHbW9BQjJUZXZrcldTaXpFV3lvaGJyM3RBSTg0YVdVdGhCaVBXTms5M2haWlVHck1nNnRrbGNvdTlweSs5VXFJYnlZWXpiWWROR1VQeDV0SUNBVTlJTHRIZkNqZFIrdzBqclZYMW5yNmI0UzlnZUUwUWxmWDFYL2JRenppSHRvT21oUGlKRm5US3dVOUlNRHdMSnBQWHpydjhTNXNwQ3BjK09ZNHZkS0ZKSjUrcmt1SWJ5WWF6YllkTkdVUDFSWDBXT2wwWFFseExlY1JielZFYnh6SlBwZjNXdHZKUDA4ODR0YmJEdHF3ZzU0enM2T0ZtR01RNGFrSGNIelhkeDZ4dHREbTlMUWVyV2ZNYnNyNnpXNzNsVHVQdUllMmcyWWNFcm56aUJGaWVORVIxWHZFSVVaU1VZYjMrbFIwUE91VHFoS0ZubnJFcmJjZDRCSDdoSGg1K2FGcTY4QkNOdU96S2gwd3UvSkp3OTA2VTlBOStrS2pwWi96cGcyOGU0SjdhRHVvWG9pbmwzcDVQVkgyaElPQ2hKZzE0dTQ5WWxWcllwN0paZkVNM0lESnIvZitBc0s0ZzVLMmVKbzEzWHpiUVJNT1NZd1FEMjg2RmtJTVZaeEhYSlBYNHZCbUgwV1lIQ0V5TFdWSGQvdW94cENLVXoyMEhYUXB4THRQaU9lSUQ2Ymo5ZE1CMXhveTV3TnlINHFzTjZhNEw4ZG5qYVhiNWFsSDNGdmJRYlYyVUZZdnBUNll6dGQrQi9RVjVWYzZZTzQ4cXkxM0xlQ0E5YVh0NWVjNm4xR1oxeEMwUnR4TDIwR2ZRdnlyM3dvc1BxdFpqNElzSFZGOVphMkxRYk9VenZnUEVKZkg2NHZXcVVWejZSQzFkVGpGRkZOM29QVzJnK3J0WUZSeTg1dVpYdERpTTE1eE56UEJLanppaS91L0sxZ3pwL2F1ckpPVE5zbHp2UzB4THZhTUY3YmtlRkpydXNlMmc2cnRvR3hPbGNDK3FJUFpZTGNlY1RWYk5qd1R6ZG4yNkJLSWs4dVFiMExmNGFwL085dkdKTkV6VHA3U2Y0L3pDVnB1TzJqS0RyNnZSQ20wUVpsS01uM09CSThhUE9MQWRSM1J2YmVXRVI4Y2hseGthU2N3bTNPeHp6V1crdDZBOS92S0krNmg3YUNaeU9EcjA4ZWt6bGNrVzdEdkRsaE5FUU5QU0duN0xMTzhmUjVybmRUbklSNVNoeGtFcmhkL25uRzh1dDgzejNqKytVNnNqb3RuZjUxaDMycmJRVDAyVU9MWTROcys0eWtpSDNMTk5GTTNuZEFweENVdVlZTyttMnVQVDU3TCtvNHhZTlk4SlRRVWkyYzVhYms2RS9qaE0zNUUvM0FJMVJhN1J0eEQyMEYxZHZDdFZpNGhYeElseE13TXUraUl6c3BhVjRlOUt4MUlTOEJ1Z0RrMDlHZ3Q4YXllNkZLU2V0QVg3MzhPZU1ibDZiMmN6N2c0N0lXWk43SUxlc1ROdGgxVVpRT0hKRm9wY0JRaVp4TDNIWnJlVHNOWDRob2pEUHY4SU5OeE9UMjh5VHI0ZmpvL1p3MGNuSnU1eXlCbHRtOWc4dFJIWEQ3UE9EdWVjUW13RVp1WnZQbW0xblR2YlFkVkNQRWhuazhsY1NZeEhuSFhIbkhKYTNtN3ptbDRkMXZ1ZTgwa3dpRUpSNUxYYXEvUlNuckVQYlFkVkJHV2xqMkwrS0pqY3dJVHZQR0lTMTZ2OTVKYTY0aHp4Q3pYemlLLzlCSnpHL0lMUVo0alFtcStVUEJraDhjVGU4Uk50eDJvdG9HVFZpSGVhYVp1T3VIaU1WeFZlTVQyY3hraHAwVlFyTFlyZ1Nvd2cwLzFqTHU5UC9uaTJsTFZKVys1N1VDMUxZd3Biem1FR05rMFh3QXRoV1hVaGFZbEp4cUdVWjhlckIxZXJiV3E5cUlNVC9McE0rN252NWw4aVhrM0hyRjQ5S3kzdG9QaXpraWFjeG1Femxna2s3Q1B6amdhaVM4YXJpSEZnTFBXVnovUHZKelhhbHgyZ3ROWEJRSnNiMW42UE9OODg0eTNpWEVCTmFQdDlocHpQRitMYlFkcWhIajlsaXh2ZWZFRlVZdlFkRjVvTUFJUWNuYnVsMHZzdEQvajIvZEMyMEduUXJ4OVN4NzRjT1B0UkpXNXBCUDNKMUFsTDAzUDJVT2J0dHBIR2Rud29IOXRNY3RvM3Y0bVVUR0VUZzJ0ejRpQnRvTnUrMUZVTVE5dmFGcWloaVlkSGdBQUdoYmlxS2l4TndJamtCWExYbUlBQUdoUmdDWHlxTnpMdDlZbS9EVW1OWnNtQXdDQTFvUTQ0R1F6Mzg2aUllaUx6cDlSZTRsSmZnQUFnRVk5NGlYSkh1S0xMMHBUdmdzQUFLQmViL2dyMlI3aUN5RWVJOG9YY2h3aUFBQzBLc2h2TTZhZkhZd1VlY1FUbWRNQUFOQ2lSNXptSEdMSEYzTWNJZ0FBSU1ReUdkUGhRaXdRQitjVUpnQUFhRkdJNXl6NVU0WVFMMlJPQXdBQVFpeVNNVDI4K2NLSm10TUFBQUIvOVRIdFlROFhRaHdkQ3djQUFFQ0kvMTNxZlg3QVNHUjJHSm5UQUFEUWtnaEhPYWR2UkZqa3pFV0VHQUFBS2hkZ2tlWGF4eDZ4VU0zcGdTWUVBSURhaFRpeXh2U2YwNXQrN1JIbi9XSUFBQUNkUXJ3VjJkSWI2WXJQQ0RFQUFEUWl5SHVScGRySWhLMlZwZ01BZ0pxOTRmUG5HRnYydVpRN3Z0R01BQUJRc3hDZlY1bTZHZ0tsTGc4cWJBRUFRQU5Ddk1TV3RveDF5V2NxYkFFQVFNZENYQ1l5TEZSaGk4SWVBQUJRc3hqSEhBdThSa2VGamRuQVRtRVBBQURveVJzK2Y1YmRQU1N4ZjRyQ0hnQUFVTEVRTHhFZWNkenlyS25pckJNREFFQ25nbHpXRVJWSzNWNW9TZ0FBcUZDRWg5aWxXZW1iT2RoUERBQUFIUWl3eFBxd1hMS3l3RWxNZjkxend0TUFBRkNSRUMreHk3SmlOeVJ3OGdUcnhBQUFVSnNnNjBoVWxsb25wc0lXQUFCVUpNTDZsbVJqYndvUkJnQ0Fpb1E0SmdvOGZ4elpGRGUyeHRiYlJKQUJBRUN4QUg4SjZGMjY1ZGpJaGV0ME13UUFBQUJCTVk3WXRyU25FbUNKdXROc1l3SUFnQnE4NFdpdFMrcDBSczRTS0hjSkFBRGFoWGpSdWo0Y2V6N3huelB6bXV4cEFBRFFMTWhiaE02bHE1c2hWR2xrUllnQkFFQ3hOeHdWbGs2dWNlY1h4R3hqSWp3TkFBQ2FoWGhXVWRiU0ljS3g1UzZwc2dVQUFKcUZlRk85L0ZyRmpBRUFBT0NkeGtWRmZIUFBHR0ppNkRzaURBQUFtcnhoZ1RNVjh1ZEFFWjRHQUlCV2hMaEtYWXZjWjBWNEdnQUFOSW54R0p1SW5FM1RKTVBUQ0RFQUFDanhoa1hDMHRsMUxhTEtGc1U5QUFCQWt5REhoS1huWW5wVzNjSTJaSnRoMmxkTDkzVDFXYVV1VGZkZHNpMjF2M3RRN3czSFJIaVBJdlV4aEtwc0hSVDNBR2h6RXNhYmdNcjZiVXpPMDFxOU8wOFhhTklRanhmWGw3SjdHbDU2bGNQTjg1VzRCaVgzUFZ3bHFraUxzcU52bGJxWWNMUmp0K3JVTVlGVEtvNHN4MFZCaVJEUGZyYnY1L3JmbjhmY2JXMkVFU2VqengxdnlxMGFuN1ZZbjFYcUN0cDlrUEcrOS9OYXp5V3J3ZTRiQXUwNVhQU3RrdGVJL1dyQ1prM1Yxc1VRaksyUGRJbm1oUGlxclVkbEEyMS80aFVMblQ0bWZhMFBoRGozZmUrbitJdXRxVVpXUFVweFRZejhKbXpXMmtTdVU2UmJ6NTdpOW9UNHVKdHdGZmFJWHg5QUVqbG9EK0gvOXNnakRyenZ0L2NZSXNpVFVEc09MM1pxSEFtZkdZKzRmcnNWTzdrcnYvdEhhUC9WVG5mb1I0Z1ZlY1JIUmlFdTZoRXJ1ZThGanhnVTJxdjV1NVY2R0JLekNtYVd6WFJ3RlI2eHRkVWsyaU0yUG5kMWhHSFhqRC9YSjBMZ3VXK0plOWtDYk1BUzJaWjNIdkVxOUJ4UGY3THJvMzU3RlJYTjFSU1dsbGlES2xlVkJKcjJpSDFDL0dTTjJDRm9TK0d4OTlZalRyR0dPM3ZDeDYrWG9od1QvaEhiQVM5dFZVeEVSTS9TaE1mWVBYb29CbEw3UXF6SUl6NGlQZUxqYmlLcHFhakVSZGIwbjB6M3ZVcEZ3QUk4NG9tQ0hwRFplZHpVOVFQandmYVNhMGlnVm9qL2FQV0lYenpmNmxxcjFXYWdQVVpIOUw1dGtYS3N2eDFQOTNFYlFueTRoQjJCaE1qb3lxTzl3K3BDMCtmdnl6Zm5GUGZld1VmWE5yVkcxNGpYbk0vMmNvSzA1dGg2Y1NIR3k5dEVzd2NlTWRuTDhMUi94aVJwSFZsUFducHBoRVZtR1hTWnBqeGlqV3ZFYjdPbUY1VWw3cDRKOFpINnZpMHgzbUpyQ0lSNHhBQVArdE9lY3JlQ2hnZU15VUxiNkNKTmVNVE5aVTJIQ0pybWdWblNrM2NreFFRbGJ1RVJnL0NrZEdvbVNTdmhReks3eFNQTzRSRkxaazNYNUJFZk9lL2I4OTUyNlRWaVJpSUU5TVd0NmJvWFFrbGJLNE1LanppRFIzeWtTTmJDSTM0OFFmZjJDenhpRUhZVS9qUzlmT3JaS3ZIWTlZZG1QT0pXczZZUDFvaUQ3K05PUklNT1ZNY2pob1NSbVNkSld2VnNYenNIVEhRNVBBWld0UjR4V2RONHhLRWh3VFdrS0FrZU1RallndGd0UzB0TklpdzE4NkI4WERzZU1WblQ1ZHVsMkgySGJxRUtFR004WW9peEEvMUZhaU9UdGc2ODRxbzk0bDZ5cHRWSGNEVGN0MmN5c09FUlE0WnhFT3NOMTV1N0ZKdWRobGVNUjV6UUl4YlBtcTZ4b0VjdUlYWjRKTnVEejhBamhyZjlmNDdkelZOdDVUYUJoNmZBQng1eEtvLzRZSTA0NzZIbWQydkV2bmVIUnd3QzN2RCtMWERjWWJWOVRPQUY0QlhYN3hGM2tUVmRrVWRjSk52N1JvaVhCMjJKUnd3bHZPSDZIVUplUXBjZU1WblRsWGpFdWU3Yk1VSHppaWdlTVVUYWdHaHZtTENBRVJhZ2ExWHJFZjhRNGdKWGlvSWV4OTBwUnBxTzNpdWROZTN4U29JbmFFOU9YK0xZUXhBNjNLRXRSMUFnYlJ5dnVDNlArTXBZRG5ZYnBxN281S25xSk9rUkw1b05Va21QMkRDSVcyU2lGaDR4NVBhR0h4L1hXWU5YZkxCVzNLMUgvS21nOUxtbXpMOHZpYk9tdC9PNXA4US94NmNHNGVZODRpeHJ4QUhsTGVjbjc5OWhSK1pNNzM5QTdMdnlodHZiUW90WDNMMUhyTzJTekpyT2RXMXZ4MEJ1ajlnUTRUc3ZObmh5SGVBUjU3cXdRZldJOEZla0hXcXpxSlNBVjN5d1hsTzFSNnp0ZXBzMXZkUWt4Q1ZPamJLV0JkWlliempBSTg1MVRkZ2Z2T0VXakhTc043RXdFS3J3aVA4MExNUXRlTVRIVlhuSkJOZmR1OXBlaUxBS2p4ajcwNFhUOTZmcHBWQWhyNWkxWWp6aTdLSHBBSEhKSXNSUGhTQ2t4R1dDdmpBNXF1b2RuN1h1cDgraHdDT2VHZWxWMktCRnl1RnJidElsNlJVM0Z6Sm96eU8rUzZpWmpKODVyeVZ4MXJTWnJKWHlHdCtNTzBkNXlmVVV0MUhnK3JTdHI2enQ0K0liQVI3eG5Pbjk0d1RvRDBsTE9IdGo4NUVQb1ZrdDJ4WHE4NGdIeDhENVN2am5WUHVJZjgyZ2xSdW8xV044WXE4UUEvZTZBcGJIeUk2RWpMRS9RaEdycFpjWEpYRWNWYjBuWWZUcEVmK1laZWE4akZCcDhzcGFGLzFjVTBHUDBpSDExNVBuQUkrWUpDcEUrRXNvUDJYb3dSczJCMVIwQmlOaVhKVkhySzJ5MXR0OXhJdHJZcWl0UHhZVzRsMXFYVFdrc3RaTHA0Q3FXdTFveXlhMTdObDhtd3N1cUc5MFA3VWVjUTIxcGlWRDAyc0Y3YkptVElKYkpBLzVlRkpaQ3hIdDBoUCtjaFNOZVZ4RnE3ZVhLTEVWZ1EzMmRYakVSNGwxZmVuVGwwcFZxRXJvRWUrbmFLNHZmMjYrL2JaUzdTM3BFVU9UZ3J5ek52ekNPSjYvendLaEw4ck82Zk9JYXppUFdIU05XSHNmVExGOXliRU1JVnFTTnRRamhtNG4vNHVBam54MSt4S2xaaktFb1BDSVgzakVYWVNtZmZjdGtBZzN1eElxaGRzeStqeGk3RVJ6OWtaaUYwNmZrVlZocjVqdFRIakVKVHppbzRZa2o0Qjl4TkhycVNFaDZod2VNZU8vUzBkdUpkZEk3cVZ1MzVrckRrRldqN2hJK0RCUjFuUjFIckhEWUVWdEE3VGEvRExrcDgwamhxWkVlUG9XckIvZWZmOFJlcUVrYnVueGlKdkxtcjd3aUM4OVM4VVRwQ3RQWG13L3ZtT2RMcm9TSGg0eDNQU0hYY3FCUTRUbDlqbFNoMXF2UjN4bzlZaUYrbW0xYThTWklsdlJRb2xIREZaL1hpU1hOT2s3YmsrS2lsdDF0bU12V2ROSExmM09sVFV0dU1Wb1NyRU9oMGNNQVpOOWtueVZ6WEtZSGVNUmgzakViN09tbDlZOFlzbXg0aGpEYzJ5cFRqeGk4RVJlSGtkUDZUUDNMM2xuVHhnZXNUYVBPTGVnSmZTSVU2MFJmM25XN2w3M0FUeGlFTjVsdzduU0VlRXRqa3FzTzJ4VWZkWjBnNVcxUkNjUUFkbXNLeDR4UlBSaGlUM0RPMjgwWUJBTGhSNFluR1U5NHU2eXBpdnlpSE1Jc1d0LzUyTnZCSThZQkhXQnZ2TFFxL3JEektjWmo1aXM2Zkx0c3VUdzVDM3ZaUmRNa3NNajd0dXV6Q1R6bG1tQUpYSXhuaEIxT1krNHU2enBRc2M3aWhRaWtXNlQwUEtYb2QvNzVEeGliZThmUk1hd1JFajY2T0tzNFVRTnNST2l4aU5PNUJGTDFwcGVydjVmWmUyUzFaTVBXR1o2TkM0OUJwbERIOXEyTFp0VVBXbDQxd0FTaVZ0a1VlTVJTeDZEdU54VTZKa0xYVVBnL1dkZDJ3NUlzTmtGUGVLbDBMdm4rTVgwNDFjaUpFMDlhWUVHV1ZnYnFONGpialZyV3NQbFBGZ2hwTVJsUVdPNlBIei9FaUZLeVdzbjFGbkVsank5MkRNczBDaFNnMjlpMEdUemlKdkxtaFlzeFpwVmlEMGVjZkljQ3FNTlhwZS9EUENJaXdveG96NVp2OW5ZTTZ4clppUVJvbWF4dnR3c3RzV3NhUzJlMlJSNDMwdUowcHdCT3lHMndJbUVSbzk0dzVZazZ5K0xWUHRnODJVYlptV3RvRnFQK0E4ZWNWb2h2bnF2QWZ0NnN5elpCQmhYcDJjdW5EMHI2aEV6NHJOTm5GL3RHVWFFNVJ0SUtpeTE4RWFUdDlWMGNYMFZITmpEeGYyOEdxVG52NXNVWGFIZTVOVjlqMHI2eHZoZ25WalR1eDh4OHVLVE5WRTdqeENuYWF4WktFVE5scVlPQi9tTnAvalYwclBWNmdWeDczQyswNDNJWngwenBsVW95WUpNdWo3RFh0MktzTWJucjdVZEVPRWt0bjJXQ2tuelZ0TTNtbFRvZ2xrVFhobzBOS2t5RERyOXJ6NFJsbG9YSmt1NjVrYWo0U0NIVUZCU2tVa2cvTExub3M0Vll5VnY0eTA1OTJFQ0FHSU1TZHByWTNzcURVZ0RBaURJVUxkRE5kUG1tUnRRK0xqRTRLSUNBQUFnWnN1bGtyTlczbVpoUVpadVRNUVlBQzhaa252Q1VuV2tLYXFpd1NzKy83d1MzZ0FBcUVLRUpXdUdzMVZKa1ZmOEpkaXdFMW1xQUFESjdQYUc0OVNvWnl5NFhueFFveFFBSUluVHRMQ1UySDRqUzYwWDczakZBQUF5OXZuOE9Vc2Z0b0Y5VnVnVm4zK1dXaSttOGhZQVFMeURKSG1pRXFjcTFURHJPbi9mU0lzSEFGQWh4S09nQ00rODJYcENJSklOdnhBQ0FRQjRKY0tTWjBoemhHMkZZanhKejhJUVl3Q0FZQnNzdVUySnBjS0tPOFFpS01iVXBBWUFDQkRoOC9kTk1IbVdZMnNyN3hpcnBCalRHUUFBc3RyZEVidmJScWZZSmZjWTB5a0FBTEtJTU9jTHR4SW1FVjZyMkRtdENRRGcwdFl1MG9teU9ENXRkUlRKNUMzRUdBRGdueVFGbGRnNjJ2aHNUVnFNcWI0RkFJaXdyQWlUSVUzbzVQazV4b1JPQUtCam16b1RiWVEzSFdlVkZtTTZEZ0IwNkFsTFJoazUxckREanJUaEdRTUFxUENFMmFhRUdDUEdBQUFQUkZqYUU2WjZZY2VkU25KYkUySU1BSGpDaURDODZGU1NSY2xaTXdhQTFrWDQ0RkFkRU90WWlVNXJ3ak1HQUR6aGdMM0NPQ3hnZHpKcE1kNnRnN0hwYkFDQUNGT3dBenllOFpSQWpOa1RCd0JWMnNVRXhUcCtMTi94cHVHdTA2VVFZOUx5QWFCRzI3aElpekJ2RmJ4Q25DZ01jNXloYjJhQkFLRGFGaHEvcjRnd3RCYU9PVGpQR0FCNkZlSC9MZE5oLytCTngwd2h4dXlaQXdETlRzaVdTb1FCM25aTWFUSCtlOWcxZ2d3QWlteWRkSUdqZjNOa3JqeHVnRWV6dzBTZU1ZZGVBNEFtTDNoTUlNSVVONElxUE9NTk1RYUF3clp0U21EYjlndXh4OGFCV3M5NFk2OHhBQlR5aEZQWk5NUVhxdk9NMmQ0RUFGbnNtUEg3bWpyS2h5QkR5czZjSXBUejl4UVNlOEFBQUFoN3dodWVNTFRRbVZPSk1VbGNBSkRLYnFWSXl2cFJPeG94aHF6aG5RUUhSWmlua3JCdURBQWl0dXI4WGZvSXcwc1I1cTFEQ1RFZUVzMHdkM1BkbUE0T0FCRWl2S1NPNEFFVUMvVWtGdU9EZFdNQWlIUVV0dFE1TFFBcXhQajhjNm9PVCtnSEFKNDZDRk1pQitHUFdhb1htd1FheFhoTjFQRTN0amdCZ004V0pkeG0rZXZ3R213UmFCNEVTOEpCUUtnYUFPN3NUOHBROU4rejFRRnFHUmdwWjZRclNWd0FZRVhqVW9haU9jWVFxcDJkcHRwci9HdDJ5dUFBNkZxRWw0UzJadVZ0UTdWQ2ZQNCtKSnlsVW8wTG9HOEJIaE9Hb3YrY0FrLzBEWnJ3aklmRWcrWEh3UkVNR0lBdVJEaFZnUTYySjBHYmd5WkQrSWhFTG9EMkovVTVKdllrWlVIekEycE9PSUErNVRGWk93YkFDeVlwQytCcVJuditQaVplTjk3eGpnR2FFdUF4WVkwQ0RweUJQZ1U1UTNqcHg5b3hnd3NBTDVpa1QyQndYU1JUSlY0M1p1MFlvRzR2T1BWay9lOTZNTFlCZWg5d1U0WVo3OFpwVGdDNkorbkc3MHNHbTBBTmU0Q0wvY2FwWjcrZmZZR0QvZjBBb0daU3ZtZXdBek9UY2dCTGpEUFVxWFltY3pFWUFjb0lzSkV6c21ZYSt5UGpIc0RoR1J1ejRpUERvTnpZNmdTZ1l2S2RZN3hUb3g3ZzRTdzUxd3o1TTBBSEJCa2d6L2cySnR4N3BqRSszVTM4QWNBL1dPZE1BL1g0ckJzaHlBQkpQZUF4VXo0STVXOEJCQWR2em9HNzJ6Vm1HYndBSXBQcU1XT1U2ODlWSGdoakdTQitJQzhaQi9GR09BdEFaTndPR2RlQkw3Y3FNbllCWkFkNFR1LzR4NkJHa0FFZUNmQW5FV3ZQT0Y0WHZHQ0FOcjNqeThNa0dPQUF0eDd3bkZtQU43WWxBV1FjOE5iaEVWc0pRY1pEQnJqMGdITUw4RzF4RHNZbFFGNERNR2NlK0hqSXdHUzRyQWRNMlZvQVRRWWhjMlVlWjFJWG9nd0ljSjZ0aGxkMmdGWUNLQ2pFbG5kY3dqQmNDakt0QkkxRm43NEtaRUgvcW83RkdBTlFQbHZQV0xQNnprT2U3VXBkR0F5b1dZRFBQMy8yQVpjUTRKMXl0QUIxenQ1TEpIT1pobU14QlJrREFqVk5hSTIvbXdxT284Tk94bUlNQWRRcHlGT0JjTFZwU0ZiV2thRW1BUzY0L250NVhyQjVqNHdiZ0xxTnkxelFxRnlHcmZHU1FkSDQrQ29jZm1aUE1FRHJCc2RLTkNrcHlMdTlINWtaUDVRUVg4djczUlNNQzhyS0FuUTAreDhWR0I2bmw0d1JnbFRpZS83OWRFNElkd1VDUERNWkJlaFhrQ2NsZ3Z4M0xSbFJob1RlNzNoR2hEVDArUisxb2VuckFCaXRTWUZuWUlldXB3dERpcUVDcC9EZWlPOG45SHhvRWVEUGhCTXZHQUEwQzdLNURXcTZTYTdCZ0NHK3ZuWGZRMUYvWHV3OTlyUWlBRng2bWdvRjJSYmxJY1FnUXgvQ3E5anpOU3RpRGZSVEFIaGs2TTVMb3lEYjRldnhpY0dHWnJ6ZVQvK2NGYTM1ZWoxZytpVUFQQkppeTBQV2F1d09JL3Q2dXZHV01JQVY5ei9MNjlXUzdlenFqNHZ0QWRQM0FFRFNROVlxeUxhM1BGOTV5eUVHSDlRSTczRDJ1VVZweVBuWDBzblY4OUhTQVBEYVNONFpFNk1DMFIvbDEyR3NMYzkyRVJHRVdZL29Xc0w3Q1RmdkZmU3huV01KQWFDa2NmMVU2cXJCWUpyQ3ZCckNQRGlFQVlGT0o3cGZScWg1cVVoNHZXZHgwMWNBSUp1aHRmNXVyaUJzZmVmUmJKYlhQSVNLVEk5Rzkrb2RCRXhtekREelo0MzNxS3l2Zk5aL3g2dm9FUUNBQ2xFMmttbU9Da1haRnVmVlNBSWJmUWIzVHFCcUZPeTN6M0VLN3RpQTZQNEtQN3NtYUFBQUtnejNoVUdlS3dzM2hvUzFyd1I2Q0JWYW4xaVh2QjYwdFNtMlptaDVxMXh3T2NJVEFKb1ZaZTFiVHFSRmVyR0VlalMzc3lodnUrRkdhRTJ4M1JzUzNLQ0RTQUFBV2doWmZ6eXZXdGVTSllSNk44UnNOUVJ1Tm9SN3NnVGNGUExSRUVyWG44ZUxhekl5a21manUwMkJiVjFrZlZYYldQc0ZnSzZFZVZCMkVvNTJJYmV2M2ZwcC8zN3czb0pLVDA1M3l3YU1XZ0JvVm93ZHg5UHRpRU0yWWU5YWZLOU9QMEo4QWFCN0x4bFI1a29vdnJQZDUxckliZ2NBU0MzVVk2ZHJ5bHh5aDRKdzZBSUF3TnZ3dFhXTmxaVSs1Q3AwVEdaSW4yS2tBUUE4RU9TTC96WVlXNkx3bHZ2MmV1ZXJiR2NFRndDZ1RBaDd4VnR1K3ZxVUlwMDg1eFFqeEFBQUNET1hZQTN3eVM2d2dlQUNBTlFseklOUnhHTDdabyt0OWxEejVLdHNoUWdEQU5RcHlLWVhOUmxlTSt2TVpiM2RFVkVGQUdoVWVHOUUrQzRCYkxURW1iQjJmT0VRczV6bjlPU0lTWG93QUVEN1huSG9zWDZURmRyR2c3NC9OdEwwY29lUTk0OEFBd0FnekxIbjdzN0cyYnViY2NCRGEwSzdXU2RMVFo4REo1NjhZM29kQUFBazg2Q3RmenRhWWowN1RqemFFeDNXWUI4Q3NRZWNCRFhkZWJXdWQ0Q1hDd0FBYXJ6cE4rSnpjYVNoZllUaGsrdnFHTVVoeGJOZS9iLzBEZ0FBS0NMTW9TSmR5bHQ4ZTA5NHVRQUEwSXdIN2ZNYW40ajRtNHVXQUFBQVNPQ0ZBMEJkL0FkbjRBUXNTQ09rakFBQUFBQkpSVTVFcmtKZ2dnPT0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9lbVRoZW1lIHtcbiAgbWVudUJhY2tncm91bmQ6IHN0cmluZztcbiAgbWVudUFjdGl2ZTogc3RyaW5nO1xufVxuXG5jb25zdCBjb21wdXRlU3R5bGVzRm9yU3RvcnkgPSAoYXJnczogQXJncyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBjb21wdXRlU3R5bGVzKHsgbWVudUJhY2tncm91bmQ6IGFyZ3MubWVudUJhY2tncm91bmQsIG1lbnVBY3RpdmU6IGFyZ3MubWVudUFjdGl2ZSB9KVxuICAgIC5tYXAoc3R5bGUgPT4gYCR7c3R5bGUua2V5fTogJHtzdHlsZS52YWx1ZX07YClcbiAgICAuam9pbignICcpO1xufTtcblxuLyoqXG4gKiBNaW1pY3MgaG93IHN0eWxlcyBhcmUgaW5qZWN0ZWQgaW4gQ29uc29sZS5cbiAqIEl0IGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBhcHBseSBzdHlsZXMgdG8gZ2lvLW1lbnUtc2VsZWN0b3IgZHJvcC1kb3duIG92ZXJsYXkuXG4gKiBAcGFyYW0gYXJnc1xuICogQHBhcmFtIGRvY3VtZW50XG4gKi9cbmNvbnN0IGNvbXB1dGVBbmRJbmplY3RTdHlsZXNGb3JTdG9yeSA9IChhcmdzOiBBcmdzLCBkb2N1bWVudDogRG9jdW1lbnQpOiB2b2lkID0+IHtcbiAgaWYgKCFkb2N1bWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJlc2V0U3RvcnlTdHlsZUluamVjdGlvbihhcmdzKTtcblxuICBjb25zdCBzdHlsZXMgPSBjb21wdXRlU3R5bGVzKHtcbiAgICBtZW51QmFja2dyb3VuZDogYXJncy5tZW51QmFja2dyb3VuZCxcbiAgICBtZW51QWN0aXZlOiBhcmdzLm1lbnVBY3RpdmUsXG4gIH0pO1xuICBzdHlsZXMuZm9yRWFjaChzdHlsZSA9PiB7XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHN0eWxlLmtleSwgc3R5bGUudmFsdWUpO1xuICB9KTtcbn07XG5cbmNvbnN0IHJlc2V0U3RvcnlTdHlsZUluamVjdGlvbiA9IChhcmdzOiBBcmdzKTogdm9pZCA9PiB7XG4gIGlmICghYXJncz8ubWVudUJhY2tncm91bmQpIHtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZ2lvLW9lbS1wYWxldHRlLS1iYWNrZ3JvdW5kJyk7XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWdpby1vZW0tcGFsZXR0ZS0tYmFja2dyb3VuZC1jb250cmFzdCcpO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1naW8tb2VtLXBhbGV0dGUtLXN1Yi1tZW51Jyk7XG4gIH1cblxuICBpZiAoIWFyZ3M/Lm1lbnVBY3RpdmUpIHtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZ2lvLW9lbS1wYWxldHRlLS1hY3RpdmUnKTtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tZ2lvLW9lbS1wYWxldHRlLS1hY3RpdmUtY29udHJhc3QnKTtcbiAgfVxufTtcblxuY29uc3QgY29tcHV0ZVN0eWxlcyA9ICh0aGVtZTogT2VtVGhlbWUpOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSA9PiB7XG4gIGNvbnN0IGJhY2tncm91bmRTdHlsZSA9IGNvbXB1dGVTdHlsZUFuZENvbnRyYXN0QnlQcmVmaXgoJ2JhY2tncm91bmQnLCB0aGVtZS5tZW51QmFja2dyb3VuZCk7XG4gIGNvbnN0IGFjdGl2ZVN0eWxlID0gY29tcHV0ZVN0eWxlQW5kQ29udHJhc3RCeVByZWZpeCgnYWN0aXZlJywgdGhlbWUubWVudUFjdGl2ZSk7XG4gIGxldCBzdWJNZW51OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSA9IFtdO1xuICAvLyBJZiB0aGUgbWVudSBiYWNrZ3JvdW5kIGlzIGRlZmluZWQsIHRoZW4gZGVmaW5lIHRoZSBzdWItbWVudSBjb2xvclxuICBpZiAodGhlbWUubWVudUJhY2tncm91bmQpIHtcbiAgICBzdWJNZW51ID0gW3sga2V5OiBgLS1naW8tb2VtLXBhbGV0dGUtLXN1Yi1tZW51YCwgdmFsdWU6IGBjb2xvci1taXgoaW4gc3JnYiwgJHt0aGVtZS5tZW51QmFja2dyb3VuZH0gODAlLCBibGFjaylgIH1dO1xuICB9XG4gIHJldHVybiBbLi4uYmFja2dyb3VuZFN0eWxlLCAuLi5hY3RpdmVTdHlsZSwgLi4uc3ViTWVudV07XG59O1xuXG5jb25zdCBjb21wdXRlU3R5bGVBbmRDb250cmFzdEJ5UHJlZml4ID0gKHByZWZpeDogc3RyaW5nLCBjb2xvcjogc3RyaW5nKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10gPT4ge1xuICBpZiAoIWNvbG9yKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IHBhbGV0dGVDb2xvciA9IHsga2V5OiBgLS1naW8tb2VtLXBhbGV0dGUtLSR7cHJlZml4fWAsIHZhbHVlOiBjb2xvciB9O1xuICBjb25zdCBwYWxldHRlQ29sb3JDb250cmFzdCA9IHsga2V5OiBgLS1naW8tb2VtLXBhbGV0dGUtLSR7cHJlZml4fS1jb250cmFzdGAsIHZhbHVlOiAnI2ZmZicgfTtcbiAgcmV0dXJuIFtwYWxldHRlQ29sb3IsIHBhbGV0dGVDb2xvckNvbnRyYXN0XTtcbn07XG5leHBvcnQgeyBjb21wdXRlU3R5bGVzLCBjb21wdXRlU3R5bGVzRm9yU3RvcnksIGNvbXB1dGVBbmRJbmplY3RTdHlsZXNGb3JTdG9yeSwgcmVzZXRTdG9yeVN0eWxlSW5qZWN0aW9uIH07XG4iXX0=