@esfaenza/forms-and-validations 15.2.44 → 15.2.46

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.
Files changed (27) hide show
  1. package/esm2020/lib/forms/form-adaptive/form-adaptive.component.mjs +3 -5
  2. package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.mjs +3 -5
  3. package/esm2020/lib/forms/form-checkbox/form-checkbox.component.mjs +3 -5
  4. package/esm2020/lib/forms/form-date/form-date.component.mjs +3 -5
  5. package/esm2020/lib/forms/form-datetime/form-datetime.component.mjs +3 -5
  6. package/esm2020/lib/forms/form-file/form-file.component.mjs +3 -5
  7. package/esm2020/lib/forms/form-input/form-input.component.mjs +3 -5
  8. package/esm2020/lib/forms/form-multiselect/form-multiselect.component.mjs +3 -5
  9. package/esm2020/lib/forms/form-select/form-select.component.mjs +3 -5
  10. package/esm2020/lib/forms/form-textarea/form-textarea.component.mjs +3 -5
  11. package/esm2020/lib/forms/form-time/form-time.component.mjs +3 -5
  12. package/fesm2015/esfaenza-forms-and-validations.mjs +12 -34
  13. package/fesm2015/esfaenza-forms-and-validations.mjs.map +1 -1
  14. package/fesm2020/esfaenza-forms-and-validations.mjs +12 -34
  15. package/fesm2020/esfaenza-forms-and-validations.mjs.map +1 -1
  16. package/lib/forms/form-adaptive/form-adaptive.component.d.ts +1 -1
  17. package/lib/forms/form-autocomplete/form-autocomplete.component.d.ts +1 -1
  18. package/lib/forms/form-checkbox/form-checkbox.component.d.ts +1 -1
  19. package/lib/forms/form-date/form-date.component.d.ts +1 -1
  20. package/lib/forms/form-datetime/form-datetime.component.d.ts +1 -1
  21. package/lib/forms/form-file/form-file.component.d.ts +1 -1
  22. package/lib/forms/form-input/form-input.component.d.ts +1 -1
  23. package/lib/forms/form-multiselect/form-multiselect.component.d.ts +1 -1
  24. package/lib/forms/form-select/form-select.component.d.ts +1 -1
  25. package/lib/forms/form-textarea/form-textarea.component.d.ts +1 -1
  26. package/lib/forms/form-time/form-time.component.d.ts +1 -1
  27. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  // Angular
2
- import { ChangeDetectionStrategy, Component, Host, Inject, Input, Optional, Self, ViewEncapsulation } from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, Inject, Input, Optional, Self, ViewEncapsulation } from "@angular/core";
3
3
  import { NG_VALIDATORS } from "@angular/forms";
4
4
  // Configurazioni
5
5
  import { LocalizationService } from "@esfaenza/localizations";
@@ -123,7 +123,7 @@ export class FormMultiSelectComponent extends BaseFormControl {
123
123
  super.finalized();
124
124
  }
125
125
  }
126
- FormMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormMultiSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i2.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, host: true, optional: true }, { token: i3.AccessControlService, optional: true }, { token: i3.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: FAV_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
126
+ FormMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormMultiSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i2.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i3.AccessControlService, optional: true }, { token: i3.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: FAV_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
127
127
  FormMultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormMultiSelectComponent, selector: "form-multiselect", inputs: { SelectLabel: "SelectLabel", UseKeyValues: "UseKeyValues", UseCommaSeparatedList: "UseCommaSeparatedList", UseJsonList: "UseJsonList" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <div [class.ms-placeholder]=\"!Model || Model.length == 0\" (click)=\"focused($event)\">\r\n <angular2-multiselect #validationControl=\"ngModel\" type=\"text\"\r\n [(ngModel)]=\"Model\" name=\"{{GeneratedName}}\"\r\n [settings]=\"Settings\" [data]=\"BoundSource\"\r\n (onSelect)=\"changed();\" \r\n (onDeSelect)=\"changed();\" \r\n (onSelectAll)=\"changed();\"\r\n (onDeSelectAll)=\"changed();\" \r\n (onDeSelectAll)=\"Model = []; changed();\">\r\n </angular2-multiselect>\r\n </div>\r\n</ng-template>", styles: [".c-btn{background:#fff;border:1px solid #ccc;color:#333}.selected-list .c-list .c-token{background:#415269}.selected-list .c-list .c-token .c-label{color:#fff}.selected-list .c-list .c-token .c-remove svg{fill:#fff}.selected-list .c-angle-down svg,.selected-list .c-angle-up svg{fill:#333}.dropdown-list ul li:hover{background:#f5f5f5}.arrow-up,.arrow-down{border-bottom:15px solid #fff}.arrow-2{border-bottom:15px solid #ccc}.list-area{border:1px solid #ccc;background:#fff;box-shadow:0 1px 5px #959595}.select-all,.list-filter{border-bottom:1px solid #ccc}.list-filter .c-search svg{fill:#888}.list-filter .c-clear svg{fill:#888}.pure-checkbox input[type=checkbox]:focus+label:before,.pure-checkbox input[type=checkbox]:hover+label:before{border-color:#415269;background-color:#f2f2f2}.pure-checkbox input[type=checkbox]+label{color:#000}.pure-checkbox input[type=checkbox]+label:before{color:#415269;border:1px solid #415269}.pure-checkbox input[type=checkbox]+label:after{background-color:#415269}.pure-checkbox input[type=checkbox]:disabled+label:before{border-color:#ccc}.pure-checkbox input[type=checkbox]:disabled:checked+label:before{background-color:#ccc}.pure-checkbox input[type=checkbox]+label:after{border-color:#fff}.pure-checkbox input[type=radio]:checked+label:before{background-color:#fff}.pure-checkbox input[type=checkbox]:checked+label:before{background:#415269}.single-select-mode .pure-checkbox input[type=checkbox]:focus+label:before,.single-select-mode .pure-checkbox input[type=checkbox]:hover+label:before{border-color:#415269;background-color:#f2f2f2}.single-select-mode .pure-checkbox input[type=checkbox]+label{color:#000}.single-select-mode .pure-checkbox input[type=checkbox]+label:before{color:transparent!important;border:0px solid #415269}.single-select-mode .pure-checkbox input[type=checkbox]+label:after{background-color:transparent!important}.single-select-mode .pure-checkbox input[type=checkbox]:disabled+label:before{border-color:#ccc}.single-select-mode .pure-checkbox input[type=checkbox]:disabled:checked+label:before{background-color:#ccc}.single-select-mode .pure-checkbox input[type=checkbox]+label:after{border-color:#415269}.single-select-mode .pure-checkbox input[type=radio]:checked+label:before{background-color:#fff}.single-select-mode .pure-checkbox input[type=checkbox]:checked+label:before{background:none!important}.selected-item{background:#e9f4ff}.btn-iceblue{background:#415269;border:1px solid #ccc;color:#fff}.cuppa-dropdown{margin-top:2px;min-width:200px}.cuppa-dropdown .c-btn{min-height:34px}.cuppa-dropdown .c-angle-down,.cuppa-dropdown .c-angle-up{margin-top:-2px}.selected-list .c-list{width:auto!important;padding-right:35px!important;margin-top:-2px!important}.selected-list .c-list .c-token{padding:3px 22px 3px 8px!important}.ms-placeholder .cuppa-dropdown .selected-list>div>span{color:#aaa}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.AngularMultiSelect, selector: "angular2-multiselect", inputs: ["settings", "data", "loading"], outputs: ["onSelect", "onDeSelect", "onSelectAll", "onDeSelectAll", "onOpen", "onClose", "onScrollToEnd", "onFilterSelectAll", "onFilterDeSelectAll", "onAddFilterNewItem", "onGroupSelect", "onGroupDeSelect"] }], viewProviders: [{ provide: LocalizationService, useClass: FormMultiSelectComponentLoc }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
128
128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormMultiSelectComponent, decorators: [{
129
129
  type: Component,
@@ -134,8 +134,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
134
134
  type: Self
135
135
  }] }, { type: Array, decorators: [{
136
136
  type: Optional
137
- }, {
138
- type: Host
139
137
  }, {
140
138
  type: Inject,
141
139
  args: [NG_VALIDATORS]
@@ -162,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
162
160
  }], UseJsonList: [{
163
161
  type: Input
164
162
  }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLW11bHRpc2VsZWN0L2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBd0IsYUFBYSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEYsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdELGVBQWU7QUFDZixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFHL0U7Ozs7O0dBS0c7QUFTSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBZTtJQTJCekQsMkJBQTJCO0lBQzNCLFlBQVksR0FBc0IsRUFBUyxFQUF1QixFQUFzQixTQUFvQixFQUE2QyxXQUF1QixFQUFjLEVBQXdCLEVBQWMsVUFBNEIsRUFBcUMsYUFBcUIsRUFBc0MsY0FBd0I7UUFDcFgsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFT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QyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxPQUFPOzswQkE4QnFCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUEwQixRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUE0QixRQUFROzswQkFBOEIsUUFBUTs7MEJBQWtDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQTBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzs0Q0FmclYsV0FBVztzQkFBbkIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0LCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgU2VsZiwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEJhc2VGb3JtQ29udHJvbCB9IGZyb20gXCIuLi9iYXNlLWZvcm0tY29udHJvbFwiO1xyXG5pbXBvcnQgeyBGb3JtTXVsdGlTZWxlY3RDb21wb25lbnRMb2MgfSBmcm9tIFwiLi9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5sb2NcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgY2hlIHBlcm1ldHRlIGRpIGVmZmV0dHVhcmUgdW5hIHNlbGV6aW9uZSBtdWx0aXBsYSBmcmEgZ2xpIG9nZ2V0dGkgcGFzc2F0aSBuZWxsJ0lucHV0ICoqU291cmNlKipcclxuICogXHJcbiAqIE4uQjogQWwgY29udHJhcmlvIGRlZ2xpIGFsdHJpIGNvbXBvbmVudGkgZm9ybS0qIHF1ZXN0byB2aWVuZSB0ZW51dG8gY29uICoqY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0KiogaW4gcXVhbnRvIGlsIGNvbXBvbmVudGUgXHJcbiAqIHV0aWxpenphdG8gaW50ZXJuYW1lbnRlIChhbmd1bGFyMi1tdWx0aXNlbGVjdCkgbm9uIMOoIHN0YXRvIGFzc29sdXRhbWVudGUgcGVuc2F0byBwZXIgZXNzZXJlIHVzYXRvIGNvbiAqKkNoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCoqXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZvcm0tbXVsdGlzZWxlY3RcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBGb3JtTXVsdGlTZWxlY3RDb21wb25lbnRMb2MgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJmb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcImZvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LmNzc1wiXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtQ29udHJvbCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vZGVsbG8gdGVtcG9yYW5lbyAqKk5PTioqIGNvbXBhdGliaWxlIGluIG1hbmllcmEgZGlyZXR0YSBjb24gaWwgY29tcG9uZW50ZSAqKmFuZ3VsYXIyLW11bHRpc2VsZWN0KiogdXNhdG8gaW50ZXJuYW1lbnRlXHJcbiAgICAgKiBcclxuICAgICAqIFNlcnZlIGRhIGFwcG9nZ2lvIHBlciBlZmZldHR1YXJlIHVuIHJlLWJpbmQgcXVhbG9yYSBsYSBzb3JnZW50ZSBjYW1iaWFzc2UgZSBxdWFsb3JhICoqUmViaW5kTW9kZWxBZnRlclNvdXJjZSoqIGZvc3NlIHRydWVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBUbXBNb2RlbDogc3RyaW5nIHwgc3RyaW5nW10gfCB7aWQ6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZ31bXSA9IFtdO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgbGEgcHJvc3NpbWEgbW9kaWZpY2EgYWxsYSBTb3VyY2UgZGV2ZSBhbmNoZSBlZmZldHR1YXJlIHVuIHJlLWJpbmQgZGVsIG1vZGVsbG8uIFNlcnZlIHNlIGxhICoqQm91bmRTb3VyY2UqKiBwYXNzYSBkYSBub24gYXZlcmUgb2dnZXR0aSBhZCBhdmVybmUgKi9cclxuICAgIHByaXZhdGUgUmViaW5kTW9kZWxBZnRlclNvdXJjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBQZXJtZXR0ZSBkaSBzcGVjaWZpY2FyZSBpbCB0ZXN0byBkZWxsYSBMYWJlbCBmbG90dGFudGUgbWF0ZXJpYWwtc3R5bGUgKi9cclxuICAgIEBJbnB1dCgpIFNlbGVjdExhYmVsOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKiBQZXJtZXR0ZSBhbCBjb21wb25lbnRlIGRpIGdlc3RpcmUgY29tZSBtb2RlbGxvIG5vbiB1bmEgbGlzdGEgZGkgY2hpYXZpLCBtYSB1bmEgbGlzdGEgZGkgS2V5VmFsdWUgKi9cclxuICAgIEBJbnB1dCgpIFVzZUtleVZhbHVlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2EgYWwgY29tcG9uZW50ZSBkaSBlbWV0dGVyZSB1bmEgbGlzdGEgZGkgY2hpYXZpIHNlcGFyYXRlIGRhIHZpcmdvbGEgcGl1dHRvc3RvIGNoZSB1bmEgbGlzdGEgdmVyYSBlIHByb3ByaWEgZGkgY2hpYXZpL0tleVZhbHVlICovXHJcbiAgICBASW5wdXQoKSBVc2VDb21tYVNlcGFyYXRlZExpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIGVmZmV0dHVhcmUgbCdlbWl0IGNvbWUgbGlzdGEgZGkgdmFsb3JpIGluIHVuIEpzb24gKi9cclxuICAgIEBJbnB1dCgpIFVzZUpzb25MaXN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEltcG9zdGF6aW9uaSBkZWwgY29tcG9uZW50ZSBpbnRlcm5vICoqYW5ndWxhcjItbXVsdGlzZWxlY3QqKiAqL1xyXG4gICAgcHVibGljIFNldHRpbmdzOiB7IHNlbGVjdEFsbFRleHQ6IHN0cmluZywgdW5TZWxlY3RBbGxUZXh0OiBzdHJpbmcsIHRleHQ6IHN0cmluZywgZW5hYmxlQ2hlY2tBbGw6IGJvb2xlYW4sIGRpc2FibGVkOiBib29sZWFuLCBsYWJlbEtleTogc3RyaW5nLCB0YWdUb0JvZHk6IGJvb2xlYW4gfSA9IG51bGw7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgICovXHJcbiAgICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsIEBPcHRpb25hbCgpIEBIb3N0KCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZywgQE9wdGlvbmFsKCkgQEluamVjdChGQVZfREVCVUdfTU9ERSkgRkFWX0RFQlVHX01PREUgOiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCwgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUpO1xyXG5cclxuICAgICAgICAvLyBEZWZhdWx0IGRlaSBzZXR0aW5ncyBwZXIgZXZpdGFyZSBjaGUgc2lhbm8gbWFpIG51bGxpLCBhbHRyaW1lbnRpIGlsIGNhenpvIGRpIEN1cHBhTGFiIHNhbHRhIGluIGFyYWlhIGNoZSDDqCB2ZXJhbWVudGUgdW5hIGJlbGxlenphXHJcbiAgICAgICAgdGhpcy5ldmFsdWF0ZVNldHRpbmdzKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBjb25zdCBuZXdTb3VyY2UgPSBjaGFuZ2VzW1wiU291cmNlXCJdO1xyXG4gICAgICAgIGlmIChuZXdTb3VyY2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnRyeUJpbmRTb3VyY2VEaXNwbGF5KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLlRtcE1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUmViaW5kTW9kZWxBZnRlclNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZWFkb25seSA9IGNoYW5nZXNbXCJSZWFkb25seVwiXTtcclxuICAgICAgICB0aGlzLmV2YWx1YXRlU2V0dGluZ3MocmVhZG9ubHkgPyByZWFkb25seS5jdXJyZW50VmFsdWUgPz8gZmFsc2UgOiB0aGlzLlJlYWRvbmx5ID8/IGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcml2ZSBpIG51b3ZpIHNldHRpbmdzIHBlciBpbCBjb21wb25lbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZWQgSW5kaWNhIHNlIGlsIGNvbXBvbmVudGUgZGV2J2Vzc2VyZSBkaXNhYmlsaXRhdG8gbyBtZW5vXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXZhbHVhdGVTZXR0aW5ncyhkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuU2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAgIHNlbGVjdEFsbFRleHQ6IHRoaXMubGMubG9jKFwiU2VsZWN0IGV2ZXJ5dGhpbmdcIiksXHJcbiAgICAgICAgICAgIHVuU2VsZWN0QWxsVGV4dDogdGhpcy5sYy5sb2MoXCJEZXNlbGVjdCBldmVyeXRoaW5nXCIpLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLlNlbGVjdExhYmVsIHx8IHRoaXMubGMubG9jKFwiU2VsZWN0IG9uZSBvciBtb3JlIHZhbHVlcy4uLlwiKSxcclxuICAgICAgICAgICAgZW5hYmxlQ2hlY2tBbGw6IHRydWUsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICAgICAgbGFiZWxLZXk6IFwiZGVzY3JpcHRpb25cIixcclxuICAgICAgICAgICAgdGFnVG9Cb2R5OiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG9uTm90TnVsbFZhbHVlU2V0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgaWwgY29tb3BuZW50ZSBpbiBxdWVzdGlvbmUgw6ggaW4gZ3JhZG8gZGkgZ2VzdGlyZSBuZ0NvbnRyb2wgbnVsbGkuIFxyXG4gICAgICogSW4gcXVlc3RvIGNvbXBvbmVudGUgw6ggbm9ybWFsZSBjaGUgc2lhIGNvc8OsIHF1aW5kaSByZXN0aXR1aXNjZSBzZW1wbGljZW1lbnRlICoqdHJ1ZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAqKnRydWUqKiBzZSBnZXN0aXNjbyBuZ0NvbnRyb2wgbnVsbGksICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZU51bGxOZ0NvbnRyb2woKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gaW5ncmVzc28gKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnlbXSB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuVG1wTW9kZWwgPSBvYmo7XHJcbiAgICAgICAgbGV0IHRvUGFzczogeyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZih0aGlzLlVzZUNvbW1hU2VwYXJhdGVkTGlzdCAmJiBvYmogJiYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZykpXHJcbiAgICAgICAgICAgIG9iaiA9ICg8c3RyaW5nPm9iaikuc3BsaXQoJywnKTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5Vc2VKc29uTGlzdCAmJiBvYmogJiYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZykpXHJcbiAgICAgICAgICAgIG9iaiA9IEpTT04ucGFyc2UoPHN0cmluZz5vYmopO1xyXG5cclxuICAgICAgICAvL1F1aSBhcnJpdmFubyBzb2xvIGdsaSBpZCwgbyB7aWQ6IHgsIGRlc2NyaXB0aW9uOiB5fSBpbiBjYXNvIHNvbm8gaW4gVXNlS2V5VmFsdWVzLCBcclxuICAgICAgICAvL2Rldm8gdGlyYXJlIGZ1b3JpIGdsaSBvZ2dldHRpIHJlbGF0aXZpIGUgcGlhenphcmxpIGNvbWUgbGlzdGEgcGVyIGlsIE1vZGVsXHJcbiAgICAgICAgaWYgKG9iaiAmJiBvYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAoPGFueVtdPm9iaikuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKG8gPT4gby5pZCA9PSAodGhpcy5Vc2VLZXlWYWx1ZXMgPyB0LmlkIDogdCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgdG9QYXNzLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSkpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuQm91bmRTb3VyY2UgfHwgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0b1Bhc3MubWFwKHQgPT4gdC5kZXNjcmlwdGlvbikuam9pbignLCAnKTtcclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHRvUGFzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gdXNjaXRhICovXHJcbiAgICBjaGFuZ2VkKCkge1xyXG4gICAgICAgIGxldCB0b0VtaXQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLlVzZUpzb25MaXN0KVxyXG4gICAgICAgICAgICB0b0VtaXQgPSBKU09OLnN0cmluZ2lmeSgoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+IG0uaWQpKTtcclxuICAgICAgICBlbHNlIGlmICghdGhpcy5Vc2VLZXlWYWx1ZXMgJiYgIXRoaXMuVXNlQ29tbWFTZXBhcmF0ZWRMaXN0KVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+IG0uaWQpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVXNlS2V5VmFsdWVzKVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+ICh7IGlkOiBtLmlkLCBkZXNjcmlwdGlvbjogbS5kZXNjcmlwdGlvbiB9KSk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5Vc2VDb21tYVNlcGFyYXRlZExpc3QpXHJcbiAgICAgICAgICAgIHRvRW1pdCA9ICg8YW55W10+dGhpcy5Nb2RlbCkubWFwKG0gPT4gbS5pZCkuam9pbignLCcpO1xyXG5cclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Nb2RlbC5tYXAodCA9PiB0Lml0ZW1OYW1lKS5qb2luKCcsICcpO1xyXG4gICAgICAgIHN1cGVyLmNoYW5nZWQodG9FbWl0LCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgc3VwZXIuZmluYWxpemVkKCk7XHJcbiAgICB9XHJcbn0iLCI8IS0tIFVndWFsZSBpbiB0dXR0aSBpIGNvbXBvbmVudGkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIUZvcm1MYXlvdXQgJiYgKCFEaXNwbGF5TW9kZSB8fCAoRGlzcGxheUxheW91dCAhPSAnaGlkZGVuJyAmJiBEaXNwbGF5Q29uZGl0aW9uKSlcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiAhRGlzcGxheU1vZGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdmb3JtJ1wiPnt7IEV2YWx1YXRlZE1vZGVsIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIkRpc3BsYXlMYXlvdXQgPT0gJ2lubGluZSdcIiBjbGFzcz1cImFwcC1pbmxpbmVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCIgY2xhc3M9XCJ7e0Zvcm1Hcm91cENsYXNzICsgKExhc3QgPyAnIGFwcC1tYXJnaW4tYm90dG9tLTAgYXBwLW1hcmdpbi1yaWdodC0wICcgOiAnJykgKyAoRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBEaXNwbGF5TW9kZSA/ICgnIGFwcC1pbmxpbmUtYmxvY2sgJyArICghTGFzdCA/ICdhcHAtbWFyZ2luLXJpZ2h0LTEwJyA6ICcnKSkgOiAnIGZvcm0tZ3JvdXAgcm93Jyl9fVwiPlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC17eyhEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWJvbGQgYXBwLW1hcmdpbi1ib3R0b20tMCcgOiBMYWJlbENvbFdpZHRoKSArIChEaXNwbGF5TW9kZSA/ICcgYXBwLWJvbGQnIDogJyBtLXQtNScpIH19XCI+e3tMYWJlbH19e3tSZXF1aXJlZCAmJiAhRGlzcGxheU1vZGUgPyAnKicgOiAnJ319e3tMYWJlbCA/IFwiOlwiIDogXCJcIn19PC9sYWJlbD5cclxuICAgIDxzcGFuICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBJbmxpbmVTZXBhcmF0b3IgIT0gJydcIj57e0lubGluZVNlcGFyYXRvcn19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0Rpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgPyAnbm9uZSBhcHAtaW5saW5lLWJsb2NrJyA6IElucHV0Q29sV2lkdGh9fVwiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TW9kZVRlbXBsYXRlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkRpc3BsYXlNb2RlVGVtcGxhdGUsIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBFdmFsdWF0ZWRNb2RlbCB9XCI+PC9uZy1jb250YWluZXI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cclxuICAgIDxkaXYgW2NsYXNzLm1zLXBsYWNlaG9sZGVyXT1cIiFNb2RlbCB8fCBNb2RlbC5sZW5ndGggPT0gMFwiIChjbGljayk9XCJmb2N1c2VkKCRldmVudClcIj5cclxuICAgICAgICA8YW5ndWxhcjItbXVsdGlzZWxlY3QgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJNb2RlbFwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiXHJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJTZXR0aW5nc1wiIFtkYXRhXT1cIkJvdW5kU291cmNlXCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cImNoYW5nZWQoKTtcIiBcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3QpPVwiY2hhbmdlZCgpO1wiIFxyXG4gICAgICAgICAgICAob25TZWxlY3RBbGwpPVwiY2hhbmdlZCgpO1wiXHJcbiAgICAgICAgICAgIChvbkRlU2VsZWN0QWxsKT1cImNoYW5nZWQoKTtcIiBcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3RBbGwpPVwiTW9kZWwgPSBbXTsgY2hhbmdlZCgpO1wiPlxyXG4gICAgICAgIDwvYW5ndWxhcjItbXVsdGlzZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLW11bHRpc2VsZWN0L2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFRLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUF3QixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0QsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztBQUcvRTs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxlQUFlO0lBMkJ6RCwyQkFBMkI7SUFDM0IsWUFBWSxHQUFzQixFQUFTLEVBQXVCLEVBQXNCLFNBQW9CLEVBQXFDLFdBQXVCLEVBQWMsRUFBd0IsRUFBYyxVQUE0QixFQUFxQyxhQUFxQixFQUFzQyxjQUF3QjtRQUM1VyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFX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Q3BCLHVCQUF1QixDQUFDLE9BQU87OzBCQThCcUIsUUFBUTs7MEJBQUksSUFBSTs7MEJBQTBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQTRCLFFBQVE7OzBCQUE4QixRQUFROzswQkFBa0MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBMEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzRDQWY3VSxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3QsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UsIENvbXBvbmVudENvbnRleHQgfSBmcm9tICdAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBBQ09fQ1VTVE9NS0VZLCBGQVZfREVCVUdfTU9ERSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQmFzZUZvcm1Db250cm9sIH0gZnJvbSBcIi4uL2Jhc2UtZm9ybS1jb250cm9sXCI7XHJcbmltcG9ydCB7IEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudExvYyB9IGZyb20gXCIuL2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LmxvY1wiO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBjaGUgcGVybWV0dGUgZGkgZWZmZXR0dWFyZSB1bmEgc2VsZXppb25lIG11bHRpcGxhIGZyYSBnbGkgb2dnZXR0aSBwYXNzYXRpIG5lbGwnSW5wdXQgKipTb3VyY2UqKlxyXG4gKiBcclxuICogTi5COiBBbCBjb250cmFyaW8gZGVnbGkgYWx0cmkgY29tcG9uZW50aSBmb3JtLSogcXVlc3RvIHZpZW5lIHRlbnV0byBjb24gKipjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQqKiBpbiBxdWFudG8gaWwgY29tcG9uZW50ZSBcclxuICogdXRpbGl6emF0byBpbnRlcm5hbWVudGUgKGFuZ3VsYXIyLW11bHRpc2VsZWN0KSBub24gw6ggc3RhdG8gYXNzb2x1dGFtZW50ZSBwZW5zYXRvIHBlciBlc3NlcmUgdXNhdG8gY29uICoqQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoKipcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS1tdWx0aXNlbGVjdFwiLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudExvYyB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiBcImZvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuY3NzXCJdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1Db250cm9sIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZWxsbyB0ZW1wb3JhbmVvICoqTk9OKiogY29tcGF0aWJpbGUgaW4gbWFuaWVyYSBkaXJldHRhIGNvbiBpbCBjb21wb25lbnRlICoqYW5ndWxhcjItbXVsdGlzZWxlY3QqKiB1c2F0byBpbnRlcm5hbWVudGVcclxuICAgICAqIFxyXG4gICAgICogU2VydmUgZGEgYXBwb2dnaW8gcGVyIGVmZmV0dHVhcmUgdW4gcmUtYmluZCBxdWFsb3JhIGxhIHNvcmdlbnRlIGNhbWJpYXNzZSBlIHF1YWxvcmEgKipSZWJpbmRNb2RlbEFmdGVyU291cmNlKiogZm9zc2UgdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIFRtcE1vZGVsOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHtpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nfVtdID0gW107XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBsYSBwcm9zc2ltYSBtb2RpZmljYSBhbGxhIFNvdXJjZSBkZXZlIGFuY2hlIGVmZmV0dHVhcmUgdW4gcmUtYmluZCBkZWwgbW9kZWxsby4gU2VydmUgc2UgbGEgKipCb3VuZFNvdXJjZSoqIHBhc3NhIGRhIG5vbiBhdmVyZSBvZ2dldHRpIGFkIGF2ZXJuZSAqL1xyXG4gICAgcHJpdmF0ZSBSZWJpbmRNb2RlbEFmdGVyU291cmNlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIFBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGlsIHRlc3RvIGRlbGxhIExhYmVsIGZsb3R0YW50ZSBtYXRlcmlhbC1zdHlsZSAqL1xyXG4gICAgQElucHV0KCkgU2VsZWN0TGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIFBlcm1ldHRlIGFsIGNvbXBvbmVudGUgZGkgZ2VzdGlyZSBjb21lIG1vZGVsbG8gbm9uIHVuYSBsaXN0YSBkaSBjaGlhdmksIG1hIHVuYSBsaXN0YSBkaSBLZXlWYWx1ZSAqL1xyXG4gICAgQElucHV0KCkgVXNlS2V5VmFsdWVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBhbCBjb21wb25lbnRlIGRpIGVtZXR0ZXJlIHVuYSBsaXN0YSBkaSBjaGlhdmkgc2VwYXJhdGUgZGEgdmlyZ29sYSBwaXV0dG9zdG8gY2hlIHVuYSBsaXN0YSB2ZXJhIGUgcHJvcHJpYSBkaSBjaGlhdmkvS2V5VmFsdWUgKi9cclxuICAgIEBJbnB1dCgpIFVzZUNvbW1hU2VwYXJhdGVkTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgZWZmZXR0dWFyZSBsJ2VtaXQgY29tZSBsaXN0YSBkaSB2YWxvcmkgaW4gdW4gSnNvbiAqL1xyXG4gICAgQElucHV0KCkgVXNlSnNvbkxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogSW1wb3N0YXppb25pIGRlbCBjb21wb25lbnRlIGludGVybm8gKiphbmd1bGFyMi1tdWx0aXNlbGVjdCoqICovXHJcbiAgICBwdWJsaWMgU2V0dGluZ3M6IHsgc2VsZWN0QWxsVGV4dDogc3RyaW5nLCB1blNlbGVjdEFsbFRleHQ6IHN0cmluZywgdGV4dDogc3RyaW5nLCBlbmFibGVDaGVja0FsbDogYm9vbGVhbiwgZGlzYWJsZWQ6IGJvb2xlYW4sIGxhYmVsS2V5OiBzdHJpbmcsIHRhZ1RvQm9keTogYm9vbGVhbiB9ID0gbnVsbDtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZywgQE9wdGlvbmFsKCkgQEluamVjdChGQVZfREVCVUdfTU9ERSkgRkFWX0RFQlVHX01PREUgOiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCwgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUpO1xyXG5cclxuICAgICAgICAvLyBEZWZhdWx0IGRlaSBzZXR0aW5ncyBwZXIgZXZpdGFyZSBjaGUgc2lhbm8gbWFpIG51bGxpLCBhbHRyaW1lbnRpIGlsIGNhenpvIGRpIEN1cHBhTGFiIHNhbHRhIGluIGFyYWlhIGNoZSDDqCB2ZXJhbWVudGUgdW5hIGJlbGxlenphXHJcbiAgICAgICAgdGhpcy5ldmFsdWF0ZVNldHRpbmdzKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBjb25zdCBuZXdTb3VyY2UgPSBjaGFuZ2VzW1wiU291cmNlXCJdO1xyXG4gICAgICAgIGlmIChuZXdTb3VyY2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnRyeUJpbmRTb3VyY2VEaXNwbGF5KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLlRtcE1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUmViaW5kTW9kZWxBZnRlclNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZWFkb25seSA9IGNoYW5nZXNbXCJSZWFkb25seVwiXTtcclxuICAgICAgICB0aGlzLmV2YWx1YXRlU2V0dGluZ3MocmVhZG9ubHkgPyByZWFkb25seS5jdXJyZW50VmFsdWUgPz8gZmFsc2UgOiB0aGlzLlJlYWRvbmx5ID8/IGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcml2ZSBpIG51b3ZpIHNldHRpbmdzIHBlciBpbCBjb21wb25lbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZWQgSW5kaWNhIHNlIGlsIGNvbXBvbmVudGUgZGV2J2Vzc2VyZSBkaXNhYmlsaXRhdG8gbyBtZW5vXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXZhbHVhdGVTZXR0aW5ncyhkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuU2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAgIHNlbGVjdEFsbFRleHQ6IHRoaXMubGMubG9jKFwiU2VsZWN0IGV2ZXJ5dGhpbmdcIiksXHJcbiAgICAgICAgICAgIHVuU2VsZWN0QWxsVGV4dDogdGhpcy5sYy5sb2MoXCJEZXNlbGVjdCBldmVyeXRoaW5nXCIpLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLlNlbGVjdExhYmVsIHx8IHRoaXMubGMubG9jKFwiU2VsZWN0IG9uZSBvciBtb3JlIHZhbHVlcy4uLlwiKSxcclxuICAgICAgICAgICAgZW5hYmxlQ2hlY2tBbGw6IHRydWUsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICAgICAgbGFiZWxLZXk6IFwiZGVzY3JpcHRpb25cIixcclxuICAgICAgICAgICAgdGFnVG9Cb2R5OiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG9uTm90TnVsbFZhbHVlU2V0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgaWwgY29tb3BuZW50ZSBpbiBxdWVzdGlvbmUgw6ggaW4gZ3JhZG8gZGkgZ2VzdGlyZSBuZ0NvbnRyb2wgbnVsbGkuIFxyXG4gICAgICogSW4gcXVlc3RvIGNvbXBvbmVudGUgw6ggbm9ybWFsZSBjaGUgc2lhIGNvc8OsIHF1aW5kaSByZXN0aXR1aXNjZSBzZW1wbGljZW1lbnRlICoqdHJ1ZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAqKnRydWUqKiBzZSBnZXN0aXNjbyBuZ0NvbnRyb2wgbnVsbGksICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZU51bGxOZ0NvbnRyb2woKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gaW5ncmVzc28gKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnlbXSB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuVG1wTW9kZWwgPSBvYmo7XHJcbiAgICAgICAgbGV0IHRvUGFzczogeyBpZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZih0aGlzLlVzZUNvbW1hU2VwYXJhdGVkTGlzdCAmJiBvYmogJiYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZykpXHJcbiAgICAgICAgICAgIG9iaiA9ICg8c3RyaW5nPm9iaikuc3BsaXQoJywnKTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5Vc2VKc29uTGlzdCAmJiBvYmogJiYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IG9iaiBpbnN0YW5jZW9mIFN0cmluZykpXHJcbiAgICAgICAgICAgIG9iaiA9IEpTT04ucGFyc2UoPHN0cmluZz5vYmopO1xyXG5cclxuICAgICAgICAvL1F1aSBhcnJpdmFubyBzb2xvIGdsaSBpZCwgbyB7aWQ6IHgsIGRlc2NyaXB0aW9uOiB5fSBpbiBjYXNvIHNvbm8gaW4gVXNlS2V5VmFsdWVzLCBcclxuICAgICAgICAvL2Rldm8gdGlyYXJlIGZ1b3JpIGdsaSBvZ2dldHRpIHJlbGF0aXZpIGUgcGlhenphcmxpIGNvbWUgbGlzdGEgcGVyIGlsIE1vZGVsXHJcbiAgICAgICAgaWYgKG9iaiAmJiBvYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAoPGFueVtdPm9iaikuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKG8gPT4gby5pZCA9PSAodGhpcy5Vc2VLZXlWYWx1ZXMgPyB0LmlkIDogdCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgdG9QYXNzLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSkpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuQm91bmRTb3VyY2UgfHwgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSB0b1Bhc3MubWFwKHQgPT4gdC5kZXNjcmlwdGlvbikuam9pbignLCAnKTtcclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHRvUGFzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gdXNjaXRhICovXHJcbiAgICBjaGFuZ2VkKCkge1xyXG4gICAgICAgIGxldCB0b0VtaXQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLlVzZUpzb25MaXN0KVxyXG4gICAgICAgICAgICB0b0VtaXQgPSBKU09OLnN0cmluZ2lmeSgoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+IG0uaWQpKTtcclxuICAgICAgICBlbHNlIGlmICghdGhpcy5Vc2VLZXlWYWx1ZXMgJiYgIXRoaXMuVXNlQ29tbWFTZXBhcmF0ZWRMaXN0KVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+IG0uaWQpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuVXNlS2V5VmFsdWVzKVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+ICh7IGlkOiBtLmlkLCBkZXNjcmlwdGlvbjogbS5kZXNjcmlwdGlvbiB9KSk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5Vc2VDb21tYVNlcGFyYXRlZExpc3QpXHJcbiAgICAgICAgICAgIHRvRW1pdCA9ICg8YW55W10+dGhpcy5Nb2RlbCkubWFwKG0gPT4gbS5pZCkuam9pbignLCcpO1xyXG5cclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Nb2RlbC5tYXAodCA9PiB0Lml0ZW1OYW1lKS5qb2luKCcsICcpO1xyXG4gICAgICAgIHN1cGVyLmNoYW5nZWQodG9FbWl0LCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgc3VwZXIuZmluYWxpemVkKCk7XHJcbiAgICB9XHJcbn0iLCI8IS0tIFVndWFsZSBpbiB0dXR0aSBpIGNvbXBvbmVudGkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIUZvcm1MYXlvdXQgJiYgKCFEaXNwbGF5TW9kZSB8fCAoRGlzcGxheUxheW91dCAhPSAnaGlkZGVuJyAmJiBEaXNwbGF5Q29uZGl0aW9uKSlcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiAhRGlzcGxheU1vZGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdmb3JtJ1wiPnt7IEV2YWx1YXRlZE1vZGVsIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIkRpc3BsYXlMYXlvdXQgPT0gJ2lubGluZSdcIiBjbGFzcz1cImFwcC1pbmxpbmVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCIgY2xhc3M9XCJ7e0Zvcm1Hcm91cENsYXNzICsgKExhc3QgPyAnIGFwcC1tYXJnaW4tYm90dG9tLTAgYXBwLW1hcmdpbi1yaWdodC0wICcgOiAnJykgKyAoRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBEaXNwbGF5TW9kZSA/ICgnIGFwcC1pbmxpbmUtYmxvY2sgJyArICghTGFzdCA/ICdhcHAtbWFyZ2luLXJpZ2h0LTEwJyA6ICcnKSkgOiAnIGZvcm0tZ3JvdXAgcm93Jyl9fVwiPlxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC17eyhEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWJvbGQgYXBwLW1hcmdpbi1ib3R0b20tMCcgOiBMYWJlbENvbFdpZHRoKSArIChEaXNwbGF5TW9kZSA/ICcgYXBwLWJvbGQnIDogJyBtLXQtNScpIH19XCI+e3tMYWJlbH19e3tSZXF1aXJlZCAmJiAhRGlzcGxheU1vZGUgPyAnKicgOiAnJ319e3tMYWJlbCA/IFwiOlwiIDogXCJcIn19PC9sYWJlbD5cclxuICAgIDxzcGFuICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyAmJiBJbmxpbmVTZXBhcmF0b3IgIT0gJydcIj57e0lubGluZVNlcGFyYXRvcn19PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0Rpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgPyAnbm9uZSBhcHAtaW5saW5lLWJsb2NrJyA6IElucHV0Q29sV2lkdGh9fVwiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TW9kZVRlbXBsYXRlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkRpc3BsYXlNb2RlVGVtcGxhdGUsIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBFdmFsdWF0ZWRNb2RlbCB9XCI+PC9uZy1jb250YWluZXI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBbaGlkZGVuXT1cIkRpc3BsYXlNb2RlXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cclxuICAgIDxkaXYgW2NsYXNzLm1zLXBsYWNlaG9sZGVyXT1cIiFNb2RlbCB8fCBNb2RlbC5sZW5ndGggPT0gMFwiIChjbGljayk9XCJmb2N1c2VkKCRldmVudClcIj5cclxuICAgICAgICA8YW5ndWxhcjItbXVsdGlzZWxlY3QgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJNb2RlbFwiIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiXHJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJTZXR0aW5nc1wiIFtkYXRhXT1cIkJvdW5kU291cmNlXCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cImNoYW5nZWQoKTtcIiBcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3QpPVwiY2hhbmdlZCgpO1wiIFxyXG4gICAgICAgICAgICAob25TZWxlY3RBbGwpPVwiY2hhbmdlZCgpO1wiXHJcbiAgICAgICAgICAgIChvbkRlU2VsZWN0QWxsKT1cImNoYW5nZWQoKTtcIiBcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3RBbGwpPVwiTW9kZWwgPSBbXTsgY2hhbmdlZCgpO1wiPlxyXG4gICAgICAgIDwvYW5ndWxhcjItbXVsdGlzZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -1,5 +1,5 @@
1
1
  // Angular
2
- import { ChangeDetectionStrategy, Component, Inject, Input, Optional, Self, Host } from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, Inject, Input, Optional, Self } from "@angular/core";
3
3
  import { NG_VALIDATORS } from "@angular/forms";
4
4
  // Configurazioni
5
5
  import { LocalizationService } from "@esfaenza/localizations";
@@ -121,7 +121,7 @@ export class FormSelectComponent extends BaseFormControl {
121
121
  /** @ignore */
122
122
  onNotNullValueSet() { }
123
123
  }
124
- FormSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i2.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, host: true, optional: true }, { token: i3.AccessControlService, optional: true }, { token: i3.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: FAV_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
124
+ FormSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i2.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i3.AccessControlService, optional: true }, { token: i3.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: FAV_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
125
125
  FormSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormSelectComponent, selector: "form-select", inputs: { SelectLabel: "SelectLabel", PlaceholderValue: "PlaceholderValue", RequiredPlaceholder: "RequiredPlaceholder", EmptyFieldValue: "EmptyFieldValue", ShowValidationSymbol: "ShowValidationSymbol", OptionTemplate: "OptionTemplate" }, providers: [{ provide: LocalizationService, useClass: FormSelectComponentLoc }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n\r\n <!-- Select vuota per quando non ho Sorgenti dati da cui selezionare. Uguale identica alla piena ma senza option\r\n Purtroppo devono essere due componenti distinti perch\u00E9 una select una volta creata non riesce pi\u00F9 ad adattarsi ai cambi di options -->\r\n <val-select *ngIf=\"!BoundSource || BoundSource.length == 0\"\r\n [FocusSubject]=\"FocusSubject\" [SetValidationSubject]=\"SetValidationSubject\" [FieldAppearence]=\"FieldAppearence\"\r\n [attr.required]=\"Required\"\r\n [noValidate]=\"!Validation\"\r\n [Readonly]=\"Readonly\"\r\n [label]=\"SelectLabel\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [placeholder]=\"Required ? ((RequiredPlaceholder != null ? RequiredPlaceholder : ('Seleziona' | localize : lc) + '...')) : Placeholder\"\r\n [placeHolderValue]=\"PlaceholderValue\"\r\n [submitted]=\"Form?.submitted\"\r\n [emptyFieldValue]=\"Required || Placeholder || SelectLabel ? EmptyFieldValue : ''\"\r\n [(ngModel)]=\"Model\"\r\n [showValidationSymbol]=\"ShowValidationSymbol\"\r\n [id]=\"GeneratedName\"\r\n name=\"{{GeneratedName}}_zero\"\r\n (inputChange)=\"Model = $event == EmptyFieldValue ? (Required? PlaceholderValue : '') : $event; changed();\"\r\n (inputFocus)=\"focused($event);\"\r\n #validationControl=\"ngModel\">\r\n </val-select>\r\n\r\n <!-- Select vera e propria per quando arrivano i dati -->\r\n <val-select *ngIf=\"BoundSource && BoundSource.length > 0\"\r\n [FocusSubject]=\"FocusSubject\" [SetValidationSubject]=\"SetValidationSubject\" [FieldAppearence]=\"FieldAppearence\"\r\n [attr.required]=\"Required\"\r\n [noValidate]=\"!Validation\"\r\n [Readonly]=\"Readonly\"\r\n [label]=\"SelectLabel\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [showValidationSymbol]=\"ShowValidationSymbol\"\r\n [placeholder]=\"Required ? ((RequiredPlaceholder != null ? RequiredPlaceholder : ('Seleziona' | localize : lc) + '...')) : Placeholder\"\r\n [placeHolderValue]=\"PlaceholderValue\"\r\n [submitted]=\"Form?.submitted\"\r\n [emptyFieldValue]=\"Required || Placeholder || SelectLabel ? EmptyFieldValue : ''\"\r\n [(ngModel)]=\"Model\"\r\n [id]=\"GeneratedName\"\r\n name=\"{{GeneratedName}}_filled\"\r\n (inputChange)=\"Model = $event == EmptyFieldValue ? (Required? PlaceholderValue : '') : $event; changed();\"\r\n (inputFocus)=\"focused($event);\"\r\n (inputFinalized)=\"finalized()\"\r\n #validationControl=\"ngModel\">\r\n\r\n <ng-container *ngIf=\"OptionTemplate\">\r\n <option *ngFor=\"let obj of Source\" [value]=\"obj[IdField]\">\r\n <ng-container *ngTemplateOutlet=\"OptionTemplate; context: { $implicit : obj }\"></ng-container>\r\n </option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!OptionTemplate\">\r\n <option *ngFor=\"let obj of BoundSource\" [value]=\"obj.id\">\r\n {{obj.description}}\r\n </option>\r\n </ng-container>\r\n </val-select>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ValidationSelectComponent, selector: "val-select", inputs: ["emptyFieldValue", "placeHolderValue", "emptyValue", "showValidationSymbol", "label"], outputs: ["onBlur"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormSelectComponent, decorators: [{
127
127
  type: Component,
@@ -132,8 +132,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
132
132
  type: Self
133
133
  }] }, { type: Array, decorators: [{
134
134
  type: Optional
135
- }, {
136
- type: Host
137
135
  }, {
138
136
  type: Inject,
139
137
  args: [NG_VALIDATORS]
@@ -164,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
164
162
  }], OptionTemplate: [{
165
163
  type: Input
166
164
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1zZWxlY3QvZm9ybS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1zZWxlY3QvZm9ybS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFpRCxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUF3QixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0QsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQUVyRSwwRkFBMEY7QUFPMUYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUE0QnBELDJCQUEyQjtJQUMzQixZQUFZLEdBQXNCLEVBQVMsRUFBdUIsRUFBc0IsU0FBb0IsRUFBNkMsV0FBdUIsRUFBYyxFQUF3QixFQUFjLFVBQTRCLEVBQXFDLGFBQXFCLEVBQXNDLGNBQXdCO1FBQ3BYLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLGFB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QixRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUE0QixRQUFROzswQkFBOEIsUUFBUTs7MEJBQWtDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQTBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzs0Q0ExQnJWLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFPRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgU2VsZiwgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIFRlbXBsYXRlUmVmLCBIb3N0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5nQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSwgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gJ0Blc2ZhZW56YS9hY2Nlc3MtY29udHJvbCc7XHJcbmltcG9ydCB7IEFDT19DVVNUT01LRVksIEZBVl9ERUJVR19NT0RFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgRm9ybVNlbGVjdENvbXBvbmVudExvYyB9IGZyb20gXCIuL2Zvcm0tc2VsZWN0LmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8qKiBDb21wb25lbnRlIGNoZSBwZXJtZXR0ZSBkaSBzZWxlemlvbmFyZSB1biB2YWxvcmUgZGEgdW5hIGxpc3RhIGRpIHZhbG9yaSBkaXNwb25pYmlsaSAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZvcm0tc2VsZWN0XCIsXHJcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBGb3JtU2VsZWN0Q29tcG9uZW50TG9jIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiZm9ybS1zZWxlY3QuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1Db250cm9sIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIC8qKiBQZXJtZXR0ZSBkaSBzcGVjaWZpY2FyZSBpbCB0ZXN0byBkZWxsYSBMYWJlbCBmbG90dGFudGUgbWF0ZXJpYWwtc3R5bGUgKi9cclxuICAgIEBJbnB1dCgpIFNlbGVjdExhYmVsOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVybWV0dGUgYWwgY29tcG9uZW50ZSBkaSBjb25zaWRlcmFyZSBxdWVzdG8gdmFsb3JlIGNvbWUgXCJ2YWxvcmUgcGxhY2Vob2xkZXJcIlxyXG4gICAgICogXHJcbiAgICAgKiBTaSBjb25zaWdsaWEgZGkgbWFudGVuZXJlIGlsIGRlZmF1bHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgUGxhY2Vob2xkZXJWYWx1ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqIE92ZXJyaWRlIGRlbCBwbGFjZWhvbGRlciBwZXIgc2VsZWN0IHJlcXVyaWVkICovXHJcbiAgICBASW5wdXQoKSBSZXF1aXJlZFBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVybWV0dGUgYWwgY29tcG9uZW50ZSBkaSBjb25zaWRlcmFyZSBxdWVzdG8gdmFsb3JlIGNvbWUgXCJ2YWxvcmUgdnVvdG9cIlxyXG4gICAgICogXHJcbiAgICAgKiBTaSBjb25zaWdsaWEgZGkgbWFudGVuZXJlIGlsIGRlZmF1bHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgRW1wdHlGaWVsZFZhbHVlOiBzdHJpbmcgPSAnLTIwMDAnO1xyXG5cclxuICAgIC8qKiBTZSAqKnRydWUqKiByaW11b3ZlIGlsIHNpbWJvbGlubyBkaSB2YWxpZGF6aW9uZSAoY3JvY2Ugcm9zc2EgbyB0aWNrIHZlcmRlKSAqL1xyXG4gICAgQElucHV0KCkgU2hvd1ZhbGlkYXRpb25TeW1ib2w6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGRlbGxlIG9wemlvbmkgKi9cclxuICAgIEBJbnB1dCgpIE9wdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEhvc3QoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIF92YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBAT3B0aW9uYWwoKSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEFwcENvbnRleHQ6IENvbXBvbmVudENvbnRleHQsIEBPcHRpb25hbCgpIEBJbmplY3QoQUNPX0NVU1RPTUtFWSkgQUNPX0NVU1RPTUtFWTogc3RyaW5nLCBAT3B0aW9uYWwoKSBASW5qZWN0KEZBVl9ERUJVR19NT0RFKSBGQVZfREVCVUdfTU9ERSA6IGJvb2xlYW4pIHtcclxuICAgICAgICBzdXBlcihjZHIsIG5nQ29udHJvbCwgX3ZhbGlkYXRvcnMsIGFjLCBBcHBDb250ZXh0LCBBQ09fQ1VTVE9NS0VZLCBGQVZfREVCVUdfTU9ERSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgbGV0IG5ld1NvdXJjZSA9IGNoYW5nZXNbXCJTb3VyY2VcIl07XHJcbiAgICAgICAgaWYgKCFuZXdTb3VyY2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgbGV0IGN1cnIgPSBuZXdTb3VyY2UuY3VycmVudFZhbHVlO1xyXG4gICAgICAgIGxldCBwcmV2ID0gbmV3U291cmNlLnByZXZpb3VzVmFsdWU7XHJcblxyXG4gICAgICAgIC8vIFNlIG1hbmNhIGN1cnIgdnVvbCBkaXJlIGNoZSBub24gaG8gdW4gdmFsb3JlIGUgcG9zc28gaWdub3JhcmUgKGFsbGEgcGVnZ2lvIGRldmUgYXJyaXZhcm1pIHVuIGFycmF5IHZ1b3RvKVxyXG4gICAgICAgIGlmICghY3VycilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBTZSBtYW5jYSBwcmV2IHZ1b2wgZGlyZSBjaGUgw6ggbGEgcHJpbWEgYXNzZWduYXppb25lLCBsbyBjb25zaWRlcm8gdW4gYXJyYXkgdnVvdG8gZSBwcm9zZWd1by4uLiBvZ25pIHRhbnRvIHZpZW5lIGNoaWFtYXRvIHVuYSBzb2xhIHZvbHRhXHJcbiAgICAgICAgLy8gb2duaSB0YW50byB2aWVuZSBjaGlhbWF0byBkdWUgdm9sdGUuLi4gw6ggdW4gcGVsbyBhcmJpdHJhcmlvIG1hIHZhYmLDqFxyXG4gICAgICAgIGlmICghcHJldilcclxuICAgICAgICAgICAgcHJldiA9IFtdO1xyXG5cclxuICAgICAgICAvLyBDb25zaWRlcm8gZGkgYXZlciByaWNldnV0byB1bmEgbnVvdmEgc29yZ2VudGUgc2U6XHJcbiAgICAgICAgLy8gMTogTGEgc29yZ2VudGUgbnVvdmEgaGEgdW4gbnVtZXJvIGRpIGVsZW1lbnRpIGRpdmVyc28gZGFsbGEgc29yZ2VudGUgdmVjY2hpYVxyXG4gICAgICAgIC8vIDI6IFNpYSBsYSBzb3JnZW50ZSBudW92YSBjaGUgdmVjY2hpYSBoYW5ubyBhbG1lbm8gdW4gZWxlbWVudG8gZSBsJ2lkIGRlbCBwcmltbyBlbGVtZW50byBkZWxsYSBzb3JnZW50ZSBudW92YSDDqCBkaXZlcnNvIGRhbGwnaWQgZGVsIHByaW1vIGVsZW1lbnRvIGRlbGxhIHNvcmdlbnRlIHZlY2NoaWFcclxuICAgICAgICBpZiAobmV3U291cmNlICYmIChjdXJyLmxlbmd0aCAhPSBwcmV2Lmxlbmd0aCB8fCAoY3Vyci5sZW5ndGggPiAwICYmIGN1cnJbMF1bdGhpcy5JZEZpZWxkXSAhPSBwcmV2WzBdW3RoaXMuSWRGaWVsZF0pKSkge1xyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgKiBOR0JVRzpcclxuICAgICAgICAgICAgICogVXNvIHF1ZXN0byBlc2NhbW90YWdlIHBlciBkaXN0cnVnZ2VyZSBpbCB2YWwtc2VsZWN0IGUgcmljcmVhcmxvXHJcbiAgICAgICAgICAgICAqIFB1cnRyb3BwbyB1bmEgdm9sdGEgYmluZGF0byBhIHVuYSBzb3JnZW50ZSwgY2FtYmlhcmdsaWVsYSBzb3R0byBzaWduaWZpY2EgbWFuZGFyZSBpbiBwYWxsYSBtYXRlcmlhbFxyXG4gICAgICAgICAgICAgKiBjaGUgc2kgbWV0dGUgYSBmYXIgZmxvYXR0YXJlIGxhIGxhYmVsIGFuY2hlIHNlIGlsIHZhbG9yZSBlJyB2dW90b1xyXG4gICAgICAgICAgICAgKiBEaXN0cnVnZ2VuZG8gaWwgY29tcG9uZW50ZSBlIHJpY3JlYW5kb2xvIG1hdGVyaWFsIHJpcGFydGUgZGEgMCBlIG5vbiBkYScgcHJvYmxlbWkuXHJcbiAgICAgICAgICAgICAqIE92dmlhbWVudGUgbG8gZmFjY2lvIHNvbG8gcXVhbmRvIGhvIHVuYSBTZWxlY3RMYWJlbCwgYWx0cmltZW50aSBub24gaG8gcHJvYmxlbWkgZGkgZmxvYXR0YW1lbnRpXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuU291cmNlRmlyc3RCaW5kICYmIHRoaXMuU2VsZWN0TGFiZWwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGF0Y2hQcmV2aW91c0FuZFJldGF0Y2hOZXh0KChhZnRlclN0dWZmKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Cb3VuZFNvdXJjZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJ5QmluZFNvdXJjZURpc3BsYXkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMuQm91bmRTb3VyY2UgJiYgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPiAwID8gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKHQgPT4gdC5pZCA9PSB0aGlzLk1vZGVsKT8uZGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBhZnRlclN0dWZmKCk7IH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhdGNoUHJldmlvdXNBbmRSZXRhdGNoTmV4dCgoYWZ0ZXJTdHVmZikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJ5QmluZFNvdXJjZURpc3BsYXkoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Cb3VuZFNvdXJjZSAmJiB0aGlzLkJvdW5kU291cmNlLmxlbmd0aCA+IDAgPyB0aGlzLkJvdW5kU291cmNlLmZpbmQodCA9PiB0LmlkID09IHRoaXMuTW9kZWwpPy5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBhZnRlclN0dWZmKCk7IH0pXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBkZXRhdGNoUHJldmlvdXNBbmRSZXRhdGNoTmV4dChkb1N0dWZmOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGlmICh0aGlzLkRpc3BsYXlNb2RlKSB7XHJcbiAgICAgICAgICAgIGRvU3R1ZmYoKCkgPT4geyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy52YWxpZGF0aW9uQ29udHJvbCAmJiB0aGlzLkZvcm0pXHJcbiAgICAgICAgICAgIHRoaXMuRm9ybS5yZW1vdmVDb250cm9sKHRoaXMudmFsaWRhdGlvbkNvbnRyb2wpO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgZG9TdHVmZigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0aW9uQ29udHJvbCAmJiB0aGlzLkZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Gb3JtLmFkZENvbnRyb2wodGhpcy52YWxpZGF0aW9uQ29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsaWRhdGlvbkNvbnRyb2wgJiYgdGhpcy5Gb3JtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRm9ybS5hZGRDb250cm9sKHRoaXMudmFsaWRhdGlvbkNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy52YWxpZGF0aW9uQ29udHJvbCAmJiB0aGlzLkZvcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUXVlc3RvIG1lc3NhZ2dpbyBoYSBzZW5zbyBzb2xvIHNlIGFsbWVubyBpbCBmb3JtIGVzaXN0ZS4uLiBzZSBub24gZXNpc3RlIHN0aWNhenppIGluc29tbWEuLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgSW1wb3NzaWJpbGUgYWdnaXVuZ2VyZSBpbCBjb21wb25lbnRlIGRpIHZhbGlkYXppb25lIHBlciAke3RoaXMuR2VuZXJhdGVkTmFtZX0sIGxlIHZhbGlkYXppb25pIHBvdHJlYmJlcm8gZnVuemlvbmFyZSBpbiBtYW5pZXJhIGVycmF0aWNhYClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Cb3VuZFNvdXJjZSAmJiB0aGlzLkJvdW5kU291cmNlLmxlbmd0aCA+IDAgPyB0aGlzLkJvdW5kU291cmNlLmZpbmQodCA9PiB0LmlkID09IG9iaik/LmRlc2NyaXB0aW9uIDogXCJcIjtcclxuXHJcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZShvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZWQoKSB7XHJcbiAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMuQm91bmRTb3VyY2UgJiYgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPiAwID8gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKHQgPT4gdC5pZCA9PSB0aGlzLk1vZGVsKT8uZGVzY3JpcHRpb24gOiBcIlwiO1xyXG5cclxuICAgICAgICBzdXBlci5jaGFuZ2VkKG51bGwsIGZhbHNlLCB0cnVlKTtcclxuICAgIH1cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59IiwiPCEtLSBVZ3VhbGUgaW4gdHV0dGkgaSBjb21wb25lbnRpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnZm9ybSdcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnXCIgY2xhc3M9XCJhcHAtaW5saW5lXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiIGNsYXNzPVwie3tGb3JtR3JvdXBDbGFzcyArIChMYXN0ID8gJyBhcHAtbWFyZ2luLWJvdHRvbS0wIGFwcC1tYXJnaW4tcmlnaHQtMCAnIDogJycpICsgKERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgRGlzcGxheU1vZGUgPyAoJyBhcHAtaW5saW5lLWJsb2NrICcgKyAoIUxhc3QgPyAnYXBwLW1hcmdpbi1yaWdodC0xMCcgOiAnJykpIDogJyBmb3JtLWdyb3VwIHJvdycpfX1cIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3soRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1ib2xkIGFwcC1tYXJnaW4tYm90dG9tLTAnIDogTGFiZWxDb2xXaWR0aCkgKyAoRGlzcGxheU1vZGUgPyAnIGFwcC1ib2xkJyA6ICcgbS10LTUnKSB9fVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgJiYgIURpc3BsYXlNb2RlID8gJyonIDogJyd9fXt7TGFiZWwgPyBcIjpcIiA6IFwiXCJ9fTwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgSW5saW5lU2VwYXJhdG9yICE9ICcnXCI+e3tJbmxpbmVTZXBhcmF0b3J9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWlubGluZS1ibG9jaycgOiBJbnB1dENvbFdpZHRofX1cIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSBTZWxlY3QgdnVvdGEgcGVyIHF1YW5kbyBub24gaG8gU29yZ2VudGkgZGF0aSBkYSBjdWkgc2VsZXppb25hcmUuIFVndWFsZSBpZGVudGljYSBhbGxhIHBpZW5hIG1hIHNlbnphIG9wdGlvblxyXG4gICAgUHVydHJvcHBvIGRldm9ubyBlc3NlcmUgZHVlIGNvbXBvbmVudGkgZGlzdGludGkgcGVyY2jDqSB1bmEgc2VsZWN0IHVuYSB2b2x0YSBjcmVhdGEgbm9uIHJpZXNjZSBwacO5IGFkIGFkYXR0YXJzaSBhaSBjYW1iaSBkaSBvcHRpb25zIC0tPlxyXG4gICAgPHZhbC1zZWxlY3QgKm5nSWY9XCIhQm91bmRTb3VyY2UgfHwgQm91bmRTb3VyY2UubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgW0ZvY3VzU3ViamVjdF09XCJGb2N1c1N1YmplY3RcIiBbU2V0VmFsaWRhdGlvblN1YmplY3RdPVwiU2V0VmFsaWRhdGlvblN1YmplY3RcIiBbRmllbGRBcHBlYXJlbmNlXT1cIkZpZWxkQXBwZWFyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJSZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbUmVhZG9ubHldPVwiUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlNlbGVjdExhYmVsXCJcclxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uRmFpbGVkXT1cIkZhaWxlZFZhbGlkYXRpb25NZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJSZXF1aXJlZCA/ICgoUmVxdWlyZWRQbGFjZWhvbGRlciAhPSBudWxsID8gUmVxdWlyZWRQbGFjZWhvbGRlciA6ICgnU2VsZXppb25hJyB8IGxvY2FsaXplIDogbGMpICsgJy4uLicpKSAgOiBQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJWYWx1ZV09XCJQbGFjZWhvbGRlclZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtzdWJtaXR0ZWRdPVwiRm9ybT8uc3VibWl0dGVkXCJcclxuICAgICAgICAgICAgICAgIFtlbXB0eUZpZWxkVmFsdWVdPVwiUmVxdWlyZWQgfHwgUGxhY2Vob2xkZXIgfHwgU2VsZWN0TGFiZWwgPyBFbXB0eUZpZWxkVmFsdWUgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIk1vZGVsXCJcclxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvblN5bWJvbF09XCJTaG93VmFsaWRhdGlvblN5bWJvbFwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1femVyb1wiXHJcbiAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiTW9kZWwgPSAkZXZlbnQgPT0gRW1wdHlGaWVsZFZhbHVlID8gKFJlcXVpcmVkPyBQbGFjZWhvbGRlclZhbHVlIDogJycpIDogJGV2ZW50OyBjaGFuZ2VkKCk7XCJcclxuICAgICAgICAgICAgICAgIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIlxyXG4gICAgICAgICAgICAgICAgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiPlxyXG4gICAgPC92YWwtc2VsZWN0PlxyXG5cclxuICAgIDwhLS0gU2VsZWN0IHZlcmEgZSBwcm9wcmlhIHBlciBxdWFuZG8gYXJyaXZhbm8gaSBkYXRpIC0tPlxyXG4gICAgPHZhbC1zZWxlY3QgKm5nSWY9XCJCb3VuZFNvdXJjZSAmJiBCb3VuZFNvdXJjZS5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwiUmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgW25vVmFsaWRhdGVdPVwiIVZhbGlkYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJTZWxlY3RMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkZhaWxlZF09XCJGYWlsZWRWYWxpZGF0aW9uTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25TeW1ib2xdPVwiU2hvd1ZhbGlkYXRpb25TeW1ib2xcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlJlcXVpcmVkID8gKChSZXF1aXJlZFBsYWNlaG9sZGVyICE9IG51bGwgPyBSZXF1aXJlZFBsYWNlaG9sZGVyIDogKCdTZWxlemlvbmEnIHwgbG9jYWxpemUgOiBsYykgKyAnLi4uJykpIDogUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyVmFsdWVdPVwiUGxhY2Vob2xkZXJWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3VibWl0dGVkXT1cIkZvcm0/LnN1Ym1pdHRlZFwiXHJcbiAgICAgICAgICAgICAgICBbZW1wdHlGaWVsZFZhbHVlXT1cIlJlcXVpcmVkIHx8IFBsYWNlaG9sZGVyIHx8IFNlbGVjdExhYmVsID8gRW1wdHlGaWVsZFZhbHVlIDogJydcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1fZmlsbGVkXCJcclxuICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJNb2RlbCA9ICRldmVudCA9PSBFbXB0eUZpZWxkVmFsdWUgPyAoUmVxdWlyZWQ/IFBsYWNlaG9sZGVyVmFsdWUgOiAnJykgOiAkZXZlbnQ7IGNoYW5nZWQoKTtcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0Rm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiXHJcbiAgICAgICAgICAgICAgICAoaW5wdXRGaW5hbGl6ZWQpPVwiZmluYWxpemVkKClcIlxyXG4gICAgICAgICAgICAgICAgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiT3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb2JqIG9mIFNvdXJjZVwiIFt2YWx1ZV09XCJvYmpbSWRGaWVsZF1cIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJPcHRpb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQgOiBvYmogfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIU9wdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9iaiBvZiBCb3VuZFNvdXJjZVwiIFt2YWx1ZV09XCJvYmouaWRcIj5cclxuICAgICAgICAgICAgICAgIHt7b2JqLmRlc2NyaXB0aW9ufX1cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3ZhbC1zZWxlY3Q+XHJcbjwvbmctdGVtcGxhdGU+Il19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1zZWxlY3QvZm9ybS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1zZWxlY3QvZm9ybS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUF1RCxNQUFNLGVBQWUsQ0FBQztBQUN2SixPQUFPLEVBQXdCLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3RCxlQUFlO0FBQ2YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBRXJFLDBGQUEwRjtBQU8xRixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQTRCcEQsMkJBQTJCO0lBQzNCLFlBQVksR0FBc0IsRUFBUyxFQUF1QixFQUFzQixTQUFvQixFQUFxQyxXQUF1QixFQUFjLEVBQXdCLEVBQWMsVUFBNEIsRUFBcUMsYUFBcUIsRUFBc0MsY0FBd0I7UUFDNVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGNB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QUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQTRCLFFBQVE7OzBCQUE4QixRQUFROzswQkFBa0MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBMEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzRDQTFCN1UsV0FBVztzQkFBbkIsS0FBSztnQkFPRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQU9HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiwgVGVtcGxhdGVSZWYsIEhvc3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEJhc2VGb3JtQ29udHJvbCB9IGZyb20gXCIuLi9iYXNlLWZvcm0tY29udHJvbFwiO1xyXG5pbXBvcnQgeyBGb3JtU2VsZWN0Q29tcG9uZW50TG9jIH0gZnJvbSBcIi4vZm9ybS1zZWxlY3QuY29tcG9uZW50LmxvY1wiO1xyXG5cclxuLyoqIENvbXBvbmVudGUgY2hlIHBlcm1ldHRlIGRpIHNlbGV6aW9uYXJlIHVuIHZhbG9yZSBkYSB1bmEgbGlzdGEgZGkgdmFsb3JpIGRpc3BvbmliaWxpICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS1zZWxlY3RcIixcclxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IEZvcm1TZWxlY3RDb21wb25lbnRMb2MgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJmb3JtLXNlbGVjdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1TZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqIFBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGlsIHRlc3RvIGRlbGxhIExhYmVsIGZsb3R0YW50ZSBtYXRlcmlhbC1zdHlsZSAqL1xyXG4gICAgQElucHV0KCkgU2VsZWN0TGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJtZXR0ZSBhbCBjb21wb25lbnRlIGRpIGNvbnNpZGVyYXJlIHF1ZXN0byB2YWxvcmUgY29tZSBcInZhbG9yZSBwbGFjZWhvbGRlclwiXHJcbiAgICAgKiBcclxuICAgICAqIFNpIGNvbnNpZ2xpYSBkaSBtYW50ZW5lcmUgaWwgZGVmYXVsdFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBQbGFjZWhvbGRlclZhbHVlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAvKiogT3ZlcnJpZGUgZGVsIHBsYWNlaG9sZGVyIHBlciBzZWxlY3QgcmVxdXJpZWQgKi9cclxuICAgIEBJbnB1dCgpIFJlcXVpcmVkUGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJtZXR0ZSBhbCBjb21wb25lbnRlIGRpIGNvbnNpZGVyYXJlIHF1ZXN0byB2YWxvcmUgY29tZSBcInZhbG9yZSB2dW90b1wiXHJcbiAgICAgKiBcclxuICAgICAqIFNpIGNvbnNpZ2xpYSBkaSBtYW50ZW5lcmUgaWwgZGVmYXVsdFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBFbXB0eUZpZWxkVmFsdWU6IHN0cmluZyA9ICctMjAwMCc7XHJcblxyXG4gICAgLyoqIFNlICoqdHJ1ZSoqIHJpbXVvdmUgaWwgc2ltYm9saW5vIGRpIHZhbGlkYXppb25lIChjcm9jZSByb3NzYSBvIHRpY2sgdmVyZGUpICovXHJcbiAgICBASW5wdXQoKSBTaG93VmFsaWRhdGlvblN5bWJvbDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqIFRlbXBsYXRlIHBlciBsYSB2aXN1YWxpenphemlvbmUgZGVsbGUgb3B6aW9uaSAqL1xyXG4gICAgQElucHV0KCkgT3B0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICAqL1xyXG4gICAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLCBAT3B0aW9uYWwoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIF92YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBAT3B0aW9uYWwoKSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEFwcENvbnRleHQ6IENvbXBvbmVudENvbnRleHQsIEBPcHRpb25hbCgpIEBJbmplY3QoQUNPX0NVU1RPTUtFWSkgQUNPX0NVU1RPTUtFWTogc3RyaW5nLCBAT3B0aW9uYWwoKSBASW5qZWN0KEZBVl9ERUJVR19NT0RFKSBGQVZfREVCVUdfTU9ERSA6IGJvb2xlYW4pIHtcclxuICAgICAgICBzdXBlcihjZHIsIG5nQ29udHJvbCwgX3ZhbGlkYXRvcnMsIGFjLCBBcHBDb250ZXh0LCBBQ09fQ1VTVE9NS0VZLCBGQVZfREVCVUdfTU9ERSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgbGV0IG5ld1NvdXJjZSA9IGNoYW5nZXNbXCJTb3VyY2VcIl07XHJcbiAgICAgICAgaWYgKCFuZXdTb3VyY2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgbGV0IGN1cnIgPSBuZXdTb3VyY2UuY3VycmVudFZhbHVlO1xyXG4gICAgICAgIGxldCBwcmV2ID0gbmV3U291cmNlLnByZXZpb3VzVmFsdWU7XHJcblxyXG4gICAgICAgIC8vIFNlIG1hbmNhIGN1cnIgdnVvbCBkaXJlIGNoZSBub24gaG8gdW4gdmFsb3JlIGUgcG9zc28gaWdub3JhcmUgKGFsbGEgcGVnZ2lvIGRldmUgYXJyaXZhcm1pIHVuIGFycmF5IHZ1b3RvKVxyXG4gICAgICAgIGlmICghY3VycilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBTZSBtYW5jYSBwcmV2IHZ1b2wgZGlyZSBjaGUgw6ggbGEgcHJpbWEgYXNzZWduYXppb25lLCBsbyBjb25zaWRlcm8gdW4gYXJyYXkgdnVvdG8gZSBwcm9zZWd1by4uLiBvZ25pIHRhbnRvIHZpZW5lIGNoaWFtYXRvIHVuYSBzb2xhIHZvbHRhXHJcbiAgICAgICAgLy8gb2duaSB0YW50byB2aWVuZSBjaGlhbWF0byBkdWUgdm9sdGUuLi4gw6ggdW4gcGVsbyBhcmJpdHJhcmlvIG1hIHZhYmLDqFxyXG4gICAgICAgIGlmICghcHJldilcclxuICAgICAgICAgICAgcHJldiA9IFtdO1xyXG5cclxuICAgICAgICAvLyBDb25zaWRlcm8gZGkgYXZlciByaWNldnV0byB1bmEgbnVvdmEgc29yZ2VudGUgc2U6XHJcbiAgICAgICAgLy8gMTogTGEgc29yZ2VudGUgbnVvdmEgaGEgdW4gbnVtZXJvIGRpIGVsZW1lbnRpIGRpdmVyc28gZGFsbGEgc29yZ2VudGUgdmVjY2hpYVxyXG4gICAgICAgIC8vIDI6IFNpYSBsYSBzb3JnZW50ZSBudW92YSBjaGUgdmVjY2hpYSBoYW5ubyBhbG1lbm8gdW4gZWxlbWVudG8gZSBsJ2lkIGRlbCBwcmltbyBlbGVtZW50byBkZWxsYSBzb3JnZW50ZSBudW92YSDDqCBkaXZlcnNvIGRhbGwnaWQgZGVsIHByaW1vIGVsZW1lbnRvIGRlbGxhIHNvcmdlbnRlIHZlY2NoaWFcclxuICAgICAgICBpZiAobmV3U291cmNlICYmIChjdXJyLmxlbmd0aCAhPSBwcmV2Lmxlbmd0aCB8fCAoY3Vyci5sZW5ndGggPiAwICYmIGN1cnJbMF1bdGhpcy5JZEZpZWxkXSAhPSBwcmV2WzBdW3RoaXMuSWRGaWVsZF0pKSkge1xyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgKiBOR0JVRzpcclxuICAgICAgICAgICAgICogVXNvIHF1ZXN0byBlc2NhbW90YWdlIHBlciBkaXN0cnVnZ2VyZSBpbCB2YWwtc2VsZWN0IGUgcmljcmVhcmxvXHJcbiAgICAgICAgICAgICAqIFB1cnRyb3BwbyB1bmEgdm9sdGEgYmluZGF0byBhIHVuYSBzb3JnZW50ZSwgY2FtYmlhcmdsaWVsYSBzb3R0byBzaWduaWZpY2EgbWFuZGFyZSBpbiBwYWxsYSBtYXRlcmlhbFxyXG4gICAgICAgICAgICAgKiBjaGUgc2kgbWV0dGUgYSBmYXIgZmxvYXR0YXJlIGxhIGxhYmVsIGFuY2hlIHNlIGlsIHZhbG9yZSBlJyB2dW90b1xyXG4gICAgICAgICAgICAgKiBEaXN0cnVnZ2VuZG8gaWwgY29tcG9uZW50ZSBlIHJpY3JlYW5kb2xvIG1hdGVyaWFsIHJpcGFydGUgZGEgMCBlIG5vbiBkYScgcHJvYmxlbWkuXHJcbiAgICAgICAgICAgICAqIE92dmlhbWVudGUgbG8gZmFjY2lvIHNvbG8gcXVhbmRvIGhvIHVuYSBTZWxlY3RMYWJlbCwgYWx0cmltZW50aSBub24gaG8gcHJvYmxlbWkgZGkgZmxvYXR0YW1lbnRpXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuU291cmNlRmlyc3RCaW5kICYmIHRoaXMuU2VsZWN0TGFiZWwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGF0Y2hQcmV2aW91c0FuZFJldGF0Y2hOZXh0KChhZnRlclN0dWZmKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Cb3VuZFNvdXJjZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJ5QmluZFNvdXJjZURpc3BsYXkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMuQm91bmRTb3VyY2UgJiYgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPiAwID8gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKHQgPT4gdC5pZCA9PSB0aGlzLk1vZGVsKT8uZGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBhZnRlclN0dWZmKCk7IH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhdGNoUHJldmlvdXNBbmRSZXRhdGNoTmV4dCgoYWZ0ZXJTdHVmZikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJ5QmluZFNvdXJjZURpc3BsYXkoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Cb3VuZFNvdXJjZSAmJiB0aGlzLkJvdW5kU291cmNlLmxlbmd0aCA+IDAgPyB0aGlzLkJvdW5kU291cmNlLmZpbmQodCA9PiB0LmlkID09IHRoaXMuTW9kZWwpPy5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBhZnRlclN0dWZmKCk7IH0pXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBkZXRhdGNoUHJldmlvdXNBbmRSZXRhdGNoTmV4dChkb1N0dWZmOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGlmICh0aGlzLkRpc3BsYXlNb2RlKSB7XHJcbiAgICAgICAgICAgIGRvU3R1ZmYoKCkgPT4geyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy52YWxpZGF0aW9uQ29udHJvbCAmJiB0aGlzLkZvcm0pXHJcbiAgICAgICAgICAgIHRoaXMuRm9ybS5yZW1vdmVDb250cm9sKHRoaXMudmFsaWRhdGlvbkNvbnRyb2wpO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgZG9TdHVmZigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0aW9uQ29udHJvbCAmJiB0aGlzLkZvcm0pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Gb3JtLmFkZENvbnRyb2wodGhpcy52YWxpZGF0aW9uQ29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsaWRhdGlvbkNvbnRyb2wgJiYgdGhpcy5Gb3JtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRm9ybS5hZGRDb250cm9sKHRoaXMudmFsaWRhdGlvbkNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy52YWxpZGF0aW9uQ29udHJvbCAmJiB0aGlzLkZvcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUXVlc3RvIG1lc3NhZ2dpbyBoYSBzZW5zbyBzb2xvIHNlIGFsbWVubyBpbCBmb3JtIGVzaXN0ZS4uLiBzZSBub24gZXNpc3RlIHN0aWNhenppIGluc29tbWEuLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgSW1wb3NzaWJpbGUgYWdnaXVuZ2VyZSBpbCBjb21wb25lbnRlIGRpIHZhbGlkYXppb25lIHBlciAke3RoaXMuR2VuZXJhdGVkTmFtZX0sIGxlIHZhbGlkYXppb25pIHBvdHJlYmJlcm8gZnVuemlvbmFyZSBpbiBtYW5pZXJhIGVycmF0aWNhYClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdGhpcy5Cb3VuZFNvdXJjZSAmJiB0aGlzLkJvdW5kU291cmNlLmxlbmd0aCA+IDAgPyB0aGlzLkJvdW5kU291cmNlLmZpbmQodCA9PiB0LmlkID09IG9iaik/LmRlc2NyaXB0aW9uIDogXCJcIjtcclxuXHJcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZShvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZWQoKSB7XHJcbiAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRoaXMuQm91bmRTb3VyY2UgJiYgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPiAwID8gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKHQgPT4gdC5pZCA9PSB0aGlzLk1vZGVsKT8uZGVzY3JpcHRpb24gOiBcIlwiO1xyXG5cclxuICAgICAgICBzdXBlci5jaGFuZ2VkKG51bGwsIGZhbHNlLCB0cnVlKTtcclxuICAgIH1cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59IiwiPCEtLSBVZ3VhbGUgaW4gdHV0dGkgaSBjb21wb25lbnRpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnZm9ybSdcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnXCIgY2xhc3M9XCJhcHAtaW5saW5lXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiIGNsYXNzPVwie3tGb3JtR3JvdXBDbGFzcyArIChMYXN0ID8gJyBhcHAtbWFyZ2luLWJvdHRvbS0wIGFwcC1tYXJnaW4tcmlnaHQtMCAnIDogJycpICsgKERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgRGlzcGxheU1vZGUgPyAoJyBhcHAtaW5saW5lLWJsb2NrICcgKyAoIUxhc3QgPyAnYXBwLW1hcmdpbi1yaWdodC0xMCcgOiAnJykpIDogJyBmb3JtLWdyb3VwIHJvdycpfX1cIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3soRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1ib2xkIGFwcC1tYXJnaW4tYm90dG9tLTAnIDogTGFiZWxDb2xXaWR0aCkgKyAoRGlzcGxheU1vZGUgPyAnIGFwcC1ib2xkJyA6ICcgbS10LTUnKSB9fVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgJiYgIURpc3BsYXlNb2RlID8gJyonIDogJyd9fXt7TGFiZWwgPyBcIjpcIiA6IFwiXCJ9fTwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgSW5saW5lU2VwYXJhdG9yICE9ICcnXCI+e3tJbmxpbmVTZXBhcmF0b3J9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWlubGluZS1ibG9jaycgOiBJbnB1dENvbFdpZHRofX1cIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSBTZWxlY3QgdnVvdGEgcGVyIHF1YW5kbyBub24gaG8gU29yZ2VudGkgZGF0aSBkYSBjdWkgc2VsZXppb25hcmUuIFVndWFsZSBpZGVudGljYSBhbGxhIHBpZW5hIG1hIHNlbnphIG9wdGlvblxyXG4gICAgUHVydHJvcHBvIGRldm9ubyBlc3NlcmUgZHVlIGNvbXBvbmVudGkgZGlzdGludGkgcGVyY2jDqSB1bmEgc2VsZWN0IHVuYSB2b2x0YSBjcmVhdGEgbm9uIHJpZXNjZSBwacO5IGFkIGFkYXR0YXJzaSBhaSBjYW1iaSBkaSBvcHRpb25zIC0tPlxyXG4gICAgPHZhbC1zZWxlY3QgKm5nSWY9XCIhQm91bmRTb3VyY2UgfHwgQm91bmRTb3VyY2UubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgW0ZvY3VzU3ViamVjdF09XCJGb2N1c1N1YmplY3RcIiBbU2V0VmFsaWRhdGlvblN1YmplY3RdPVwiU2V0VmFsaWRhdGlvblN1YmplY3RcIiBbRmllbGRBcHBlYXJlbmNlXT1cIkZpZWxkQXBwZWFyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJSZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICBbbm9WYWxpZGF0ZV09XCIhVmFsaWRhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbUmVhZG9ubHldPVwiUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlNlbGVjdExhYmVsXCJcclxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uRmFpbGVkXT1cIkZhaWxlZFZhbGlkYXRpb25NZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJSZXF1aXJlZCA/ICgoUmVxdWlyZWRQbGFjZWhvbGRlciAhPSBudWxsID8gUmVxdWlyZWRQbGFjZWhvbGRlciA6ICgnU2VsZXppb25hJyB8IGxvY2FsaXplIDogbGMpICsgJy4uLicpKSAgOiBQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJWYWx1ZV09XCJQbGFjZWhvbGRlclZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtzdWJtaXR0ZWRdPVwiRm9ybT8uc3VibWl0dGVkXCJcclxuICAgICAgICAgICAgICAgIFtlbXB0eUZpZWxkVmFsdWVdPVwiUmVxdWlyZWQgfHwgUGxhY2Vob2xkZXIgfHwgU2VsZWN0TGFiZWwgPyBFbXB0eUZpZWxkVmFsdWUgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIk1vZGVsXCJcclxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvblN5bWJvbF09XCJTaG93VmFsaWRhdGlvblN5bWJvbFwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1femVyb1wiXHJcbiAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiTW9kZWwgPSAkZXZlbnQgPT0gRW1wdHlGaWVsZFZhbHVlID8gKFJlcXVpcmVkPyBQbGFjZWhvbGRlclZhbHVlIDogJycpIDogJGV2ZW50OyBjaGFuZ2VkKCk7XCJcclxuICAgICAgICAgICAgICAgIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIlxyXG4gICAgICAgICAgICAgICAgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiPlxyXG4gICAgPC92YWwtc2VsZWN0PlxyXG5cclxuICAgIDwhLS0gU2VsZWN0IHZlcmEgZSBwcm9wcmlhIHBlciBxdWFuZG8gYXJyaXZhbm8gaSBkYXRpIC0tPlxyXG4gICAgPHZhbC1zZWxlY3QgKm5nSWY9XCJCb3VuZFNvdXJjZSAmJiBCb3VuZFNvdXJjZS5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwiUmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgW25vVmFsaWRhdGVdPVwiIVZhbGlkYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJTZWxlY3RMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkZhaWxlZF09XCJGYWlsZWRWYWxpZGF0aW9uTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25TeW1ib2xdPVwiU2hvd1ZhbGlkYXRpb25TeW1ib2xcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlJlcXVpcmVkID8gKChSZXF1aXJlZFBsYWNlaG9sZGVyICE9IG51bGwgPyBSZXF1aXJlZFBsYWNlaG9sZGVyIDogKCdTZWxlemlvbmEnIHwgbG9jYWxpemUgOiBsYykgKyAnLi4uJykpIDogUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyVmFsdWVdPVwiUGxhY2Vob2xkZXJWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3VibWl0dGVkXT1cIkZvcm0/LnN1Ym1pdHRlZFwiXHJcbiAgICAgICAgICAgICAgICBbZW1wdHlGaWVsZFZhbHVlXT1cIlJlcXVpcmVkIHx8IFBsYWNlaG9sZGVyIHx8IFNlbGVjdExhYmVsID8gRW1wdHlGaWVsZFZhbHVlIDogJydcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiR2VuZXJhdGVkTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1fZmlsbGVkXCJcclxuICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJNb2RlbCA9ICRldmVudCA9PSBFbXB0eUZpZWxkVmFsdWUgPyAoUmVxdWlyZWQ/IFBsYWNlaG9sZGVyVmFsdWUgOiAnJykgOiAkZXZlbnQ7IGNoYW5nZWQoKTtcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0Rm9jdXMpPVwiZm9jdXNlZCgkZXZlbnQpO1wiXHJcbiAgICAgICAgICAgICAgICAoaW5wdXRGaW5hbGl6ZWQpPVwiZmluYWxpemVkKClcIlxyXG4gICAgICAgICAgICAgICAgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiT3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb2JqIG9mIFNvdXJjZVwiIFt2YWx1ZV09XCJvYmpbSWRGaWVsZF1cIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJPcHRpb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQgOiBvYmogfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIU9wdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9iaiBvZiBCb3VuZFNvdXJjZVwiIFt2YWx1ZV09XCJvYmouaWRcIj5cclxuICAgICAgICAgICAgICAgIHt7b2JqLmRlc2NyaXB0aW9ufX1cclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3ZhbC1zZWxlY3Q+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -1,6 +1,6 @@
1
1
  // Angular
2
2
  import { NG_VALIDATORS } from "@angular/forms";
3
- import { ChangeDetectionStrategy, Component, Host, Inject, Input, Optional, Self } from "@angular/core";
3
+ import { ChangeDetectionStrategy, Component, Inject, Input, Optional, Self } from "@angular/core";
4
4
  // Applicazione
5
5
  import { BaseFormControl } from "../base-form-control";
6
6
  import { ACO_CUSTOMKEY, FAV_DEBUG_MODE } from '../../tokens';
@@ -23,7 +23,7 @@ export class FormTextareaComponent extends BaseFormControl {
23
23
  /** @ignore */
24
24
  onNotNullValueSet() { }
25
25
  }
26
- FormTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormTextareaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, host: true, optional: true }, { token: i2.AccessControlService, optional: true }, { token: i2.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: FAV_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
26
+ FormTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormTextareaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i2.AccessControlService, optional: true }, { token: i2.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: FAV_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
27
27
  FormTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormTextareaComponent, selector: "form-textarea", inputs: { Rows: "Rows" }, usesInheritance: true, ngImport: i0, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <val-textarea \r\n [FocusSubject]=\"FocusSubject\" [SetValidationSubject]=\"SetValidationSubject\" [FieldAppearence]=\"FieldAppearence\"\r\n [noValidate]=\"!Validation\" \r\n [submitted]=\"Form?.submitted\" \r\n [forceInvalid]=\"ForcedError\" \r\n [FloatingLabel]=\"FloatingLabel\"\r\n [id]=\"GeneratedName\" \r\n [rows]=\"Rows\" \r\n [Readonly]=\"Readonly\"\r\n [class]=\"Readonly ? 'app-bg-lightgrey app-no-resize' : 'app-no-resize'\" \r\n [(ngModel)]=\"Model\"\r\n name=\"{{GeneratedName}}\" \r\n autocomplete=\"off\" \r\n [placeholder]=\"Placeholder\"\r\n [validationFailed]=\"FailedValidationMessage\" \r\n #validationControl=\"ngModel\" \r\n (inputChange)=\"changed();\"\r\n (inputFocus)=\"focused($event);\"\r\n (inputFinalized)=\"finalized()\"\r\n >\r\n </val-textarea>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ValidationTextAreaComponent, selector: "val-textarea", inputs: ["rows"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormTextareaComponent, decorators: [{
29
29
  type: Component,
@@ -34,8 +34,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
34
34
  type: Self
35
35
  }] }, { type: Array, decorators: [{
36
36
  type: Optional
37
- }, {
38
- type: Host
39
37
  }, {
40
38
  type: Inject,
41
39
  args: [NG_VALIDATORS]
@@ -56,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
56
54
  }] }]; }, propDecorators: { Rows: [{
57
55
  type: Input
58
56
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS10ZXh0YXJlYS9mb3JtLXRleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQXdCLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0gsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBRTdELGtIQUFrSDtBQU1sSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUt0RCwyQkFBMkI7SUFDM0IsWUFBWSxHQUFzQixFQUFzQixTQUFvQixFQUE2QyxXQUF1QixFQUFjLEVBQXdCLEVBQWMsVUFBNEIsRUFBb0MsYUFBYSxFQUFzQyxjQUF3QjtRQUMzVSxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVLENBQUMsR0FBUTtRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1QyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLEtBQVcsQ0FBQzs7a0hBakJwQixxQkFBcUIsd0dBTTRFLGFBQWEsNklBQThILGFBQWEsNkJBQXFDLGNBQWM7c0dBTjVTLHFCQUFxQixzR0NqQmxDLGtwR0E4Q2M7MkZEN0JELHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSxlQUFlLG1CQUVSLHVCQUF1QixDQUFDLE1BQU07OzBCQVFWLFFBQVE7OzBCQUFJLElBQUk7OzBCQUEwQixRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUE0QixRQUFROzswQkFBOEIsUUFBUTs7MEJBQWtDLFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsYUFBYTs7MEJBQWtCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzs0Q0FINVMsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0LCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgU2VsZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQmFzZUZvcm1Db250cm9sIH0gZnJvbSBcIi4uL2Jhc2UtZm9ybS1jb250cm9sXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSwgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gJ0Blc2ZhZW56YS9hY2Nlc3MtY29udHJvbCc7XHJcbmltcG9ydCB7IEFDT19DVVNUT01LRVksIEZBVl9ERUJVR19NT0RFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8qKiBDb21wb25lbnRlIGNoZSBwcmVzZW50YSB1bmEgY2FzZWxsYSBkaSB0ZXN0byB0aXBpY2FtZW50ZSB1dGlsaXp6YXRhIHBlciBzY3JpdmVyZSBkZWxsZSBub3RlIG8gZGVsIGxvZyBicmV2ZSAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZvcm0tdGV4dGFyZWFcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcImZvcm0tdGV4dGFyZWEuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtVGV4dGFyZWFDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqIE51bWVybyBkaSByaWdoZSBkYSB2aXN1YWxpenphcmUgZGkgZGVmYXVsdCAqL1xyXG4gICAgQElucHV0KCkgUm93czogbnVtYmVyO1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICAqL1xyXG4gICAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEhvc3QoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIF92YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBAT3B0aW9uYWwoKSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEFwcENvbnRleHQ6IENvbXBvbmVudENvbnRleHQsIEBPcHRpb25hbCgpQEluamVjdChBQ09fQ1VTVE9NS0VZKSBBQ09fQ1VTVE9NS0VZLCBAT3B0aW9uYWwoKSBASW5qZWN0KEZBVl9ERUJVR19NT0RFKSBGQVZfREVCVUdfTU9ERSA6IGJvb2xlYW4pIHtcclxuICAgICAgICBzdXBlcihjZHIsIG5nQ29udHJvbCwgX3ZhbGlkYXRvcnMsIGFjLCBBcHBDb250ZXh0LCBBQ09fQ1VTVE9NS0VZLCBGQVZfREVCVUdfTU9ERSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gb2JqPy50b1N0cmluZygpIHx8IFwiXCI7XHJcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZShvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59IiwiPCEtLSBVZ3VhbGUgaW4gdHV0dGkgaSBjb21wb25lbnRpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnZm9ybSdcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnXCIgY2xhc3M9XCJhcHAtaW5saW5lXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiIGNsYXNzPVwie3tGb3JtR3JvdXBDbGFzcyArIChMYXN0ID8gJyBhcHAtbWFyZ2luLWJvdHRvbS0wIGFwcC1tYXJnaW4tcmlnaHQtMCAnIDogJycpICsgKERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgRGlzcGxheU1vZGUgPyAoJyBhcHAtaW5saW5lLWJsb2NrICcgKyAoIUxhc3QgPyAnYXBwLW1hcmdpbi1yaWdodC0xMCcgOiAnJykpIDogJyBmb3JtLWdyb3VwIHJvdycpfX1cIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3soRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1ib2xkIGFwcC1tYXJnaW4tYm90dG9tLTAnIDogTGFiZWxDb2xXaWR0aCkgKyAoRGlzcGxheU1vZGUgPyAnIGFwcC1ib2xkJyA6ICcgbS10LTUnKSB9fVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgJiYgIURpc3BsYXlNb2RlID8gJyonIDogJyd9fXt7TGFiZWwgPyBcIjpcIiA6IFwiXCJ9fTwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgSW5saW5lU2VwYXJhdG9yICE9ICcnXCI+e3tJbmxpbmVTZXBhcmF0b3J9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWlubGluZS1ibG9jaycgOiBJbnB1dENvbFdpZHRofX1cIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcbiAgICA8dmFsLXRleHRhcmVhIFxyXG4gICAgICAgIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIlxyXG4gICAgICAgIFtub1ZhbGlkYXRlXT1cIiFWYWxpZGF0aW9uXCIgXHJcbiAgICAgICAgW3N1Ym1pdHRlZF09XCJGb3JtPy5zdWJtaXR0ZWRcIiBcclxuICAgICAgICBbZm9yY2VJbnZhbGlkXT1cIkZvcmNlZEVycm9yXCIgXHJcbiAgICAgICAgW0Zsb2F0aW5nTGFiZWxdPVwiRmxvYXRpbmdMYWJlbFwiXHJcbiAgICAgICAgW2lkXT1cIkdlbmVyYXRlZE5hbWVcIiBcclxuICAgICAgICBbcm93c109XCJSb3dzXCIgXHJcbiAgICAgICAgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCJcclxuICAgICAgICBbY2xhc3NdPVwiUmVhZG9ubHkgPyAnYXBwLWJnLWxpZ2h0Z3JleSBhcHAtbm8tcmVzaXplJyA6ICdhcHAtbm8tcmVzaXplJ1wiIFxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiTW9kZWxcIlxyXG4gICAgICAgIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIFxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW3ZhbGlkYXRpb25GYWlsZWRdPVwiRmFpbGVkVmFsaWRhdGlvbk1lc3NhZ2VcIiBcclxuICAgICAgICAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgXHJcbiAgICAgICAgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIlxyXG4gICAgICAgIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIlxyXG4gICAgICAgIChpbnB1dEZpbmFsaXplZCk9XCJmaW5hbGl6ZWQoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgPC92YWwtdGV4dGFyZWE+XHJcbjwvbmctdGVtcGxhdGU+Il19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS10ZXh0YXJlYS9mb3JtLXRleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQXdCLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFRLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzSCxlQUFlO0FBQ2YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFFN0Qsa0hBQWtIO0FBTWxILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxlQUFlO0lBS3RELDJCQUEyQjtJQUMzQixZQUFZLEdBQXNCLEVBQXNCLFNBQW9CLEVBQXFDLFdBQXVCLEVBQWMsRUFBd0IsRUFBYyxVQUE0QixFQUFvQyxhQUFhLEVBQXNDLGNBQXdCO1FBQ25VLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxHQUFRO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzVDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsS0FBVyxDQUFDOztrSEFqQnBCLHFCQUFxQix3R0FNb0UsYUFBYSxpSUFBOEgsYUFBYSw2QkFBcUMsY0FBYztzR0FOcFMscUJBQXFCLHNHQ2pCbEMsa3BHQThDYzsyRkQ3QkQscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGVBQWUsbUJBRVIsdUJBQXVCLENBQUMsTUFBTTs7MEJBUVYsUUFBUTs7MEJBQUksSUFBSTs7MEJBQTBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQTRCLFFBQVE7OzBCQUE4QixRQUFROzswQkFBa0MsUUFBUTs7MEJBQUcsTUFBTTsyQkFBQyxhQUFhOzswQkFBa0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzRDQUhwUyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3QsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSwgRkFWX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLyoqIENvbXBvbmVudGUgY2hlIHByZXNlbnRhIHVuYSBjYXNlbGxhIGRpIHRlc3RvIHRpcGljYW1lbnRlIHV0aWxpenphdGEgcGVyIHNjcml2ZXJlIGRlbGxlIG5vdGUgbyBkZWwgbG9nIGJyZXZlICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS10ZXh0YXJlYVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiZm9ybS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1UZXh0YXJlYUNvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtQ29udHJvbCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICAvKiogTnVtZXJvIGRpIHJpZ2hlIGRhIHZpc3VhbGl6emFyZSBkaSBkZWZhdWx0ICovXHJcbiAgICBASW5wdXQoKSBSb3dzOiBudW1iZXI7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgICovXHJcbiAgICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLCBAT3B0aW9uYWwoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIF92YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBAT3B0aW9uYWwoKSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEFwcENvbnRleHQ6IENvbXBvbmVudENvbnRleHQsIEBPcHRpb25hbCgpQEluamVjdChBQ09fQ1VTVE9NS0VZKSBBQ09fQ1VTVE9NS0VZLCBAT3B0aW9uYWwoKSBASW5qZWN0KEZBVl9ERUJVR19NT0RFKSBGQVZfREVCVUdfTU9ERSA6IGJvb2xlYW4pIHtcclxuICAgICAgICBzdXBlcihjZHIsIG5nQ29udHJvbCwgX3ZhbGlkYXRvcnMsIGFjLCBBcHBDb250ZXh0LCBBQ09fQ1VTVE9NS0VZLCBGQVZfREVCVUdfTU9ERSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gb2JqPy50b1N0cmluZygpIHx8IFwiXCI7XHJcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZShvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59IiwiPCEtLSBVZ3VhbGUgaW4gdHV0dGkgaSBjb21wb25lbnRpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnZm9ybSdcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnXCIgY2xhc3M9XCJhcHAtaW5saW5lXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiIGNsYXNzPVwie3tGb3JtR3JvdXBDbGFzcyArIChMYXN0ID8gJyBhcHAtbWFyZ2luLWJvdHRvbS0wIGFwcC1tYXJnaW4tcmlnaHQtMCAnIDogJycpICsgKERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgRGlzcGxheU1vZGUgPyAoJyBhcHAtaW5saW5lLWJsb2NrICcgKyAoIUxhc3QgPyAnYXBwLW1hcmdpbi1yaWdodC0xMCcgOiAnJykpIDogJyBmb3JtLWdyb3VwIHJvdycpfX1cIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3soRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1ib2xkIGFwcC1tYXJnaW4tYm90dG9tLTAnIDogTGFiZWxDb2xXaWR0aCkgKyAoRGlzcGxheU1vZGUgPyAnIGFwcC1ib2xkJyA6ICcgbS10LTUnKSB9fVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgJiYgIURpc3BsYXlNb2RlID8gJyonIDogJyd9fXt7TGFiZWwgPyBcIjpcIiA6IFwiXCJ9fTwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgSW5saW5lU2VwYXJhdG9yICE9ICcnXCI+e3tJbmxpbmVTZXBhcmF0b3J9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWlubGluZS1ibG9jaycgOiBJbnB1dENvbFdpZHRofX1cIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcbiAgICA8dmFsLXRleHRhcmVhIFxyXG4gICAgICAgIFtGb2N1c1N1YmplY3RdPVwiRm9jdXNTdWJqZWN0XCIgW1NldFZhbGlkYXRpb25TdWJqZWN0XT1cIlNldFZhbGlkYXRpb25TdWJqZWN0XCIgW0ZpZWxkQXBwZWFyZW5jZV09XCJGaWVsZEFwcGVhcmVuY2VcIlxyXG4gICAgICAgIFtub1ZhbGlkYXRlXT1cIiFWYWxpZGF0aW9uXCIgXHJcbiAgICAgICAgW3N1Ym1pdHRlZF09XCJGb3JtPy5zdWJtaXR0ZWRcIiBcclxuICAgICAgICBbZm9yY2VJbnZhbGlkXT1cIkZvcmNlZEVycm9yXCIgXHJcbiAgICAgICAgW0Zsb2F0aW5nTGFiZWxdPVwiRmxvYXRpbmdMYWJlbFwiXHJcbiAgICAgICAgW2lkXT1cIkdlbmVyYXRlZE5hbWVcIiBcclxuICAgICAgICBbcm93c109XCJSb3dzXCIgXHJcbiAgICAgICAgW1JlYWRvbmx5XT1cIlJlYWRvbmx5XCJcclxuICAgICAgICBbY2xhc3NdPVwiUmVhZG9ubHkgPyAnYXBwLWJnLWxpZ2h0Z3JleSBhcHAtbm8tcmVzaXplJyA6ICdhcHAtbm8tcmVzaXplJ1wiIFxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiTW9kZWxcIlxyXG4gICAgICAgIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiIFxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW3ZhbGlkYXRpb25GYWlsZWRdPVwiRmFpbGVkVmFsaWRhdGlvbk1lc3NhZ2VcIiBcclxuICAgICAgICAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgXHJcbiAgICAgICAgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIlxyXG4gICAgICAgIChpbnB1dEZvY3VzKT1cImZvY3VzZWQoJGV2ZW50KTtcIlxyXG4gICAgICAgIChpbnB1dEZpbmFsaXplZCk9XCJmaW5hbGl6ZWQoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgPC92YWwtdGV4dGFyZWE+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -1,6 +1,6 @@
1
1
  // Angular
2
2
  import { NG_VALIDATORS } from "@angular/forms";
3
- import { Component, Inject, Optional, Self, Host, Input, ChangeDetectionStrategy } from "@angular/core";
3
+ import { Component, Inject, Optional, Self, Input, ChangeDetectionStrategy } from "@angular/core";
4
4
  // Applicazione
5
5
  import { BaseFormControl } from "../base-form-control";
6
6
  import { ACO_CUSTOMKEY } from '../../tokens';
@@ -78,7 +78,7 @@ export class FormTimeComponent extends BaseFormControl {
78
78
  /** @ignore */
79
79
  onNotNullValueSet() { }
80
80
  }
81
- FormTimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormTimeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgxMatDateAdapter }, { token: i2.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, host: true, optional: true }, { token: i3.AccessControlService }, { token: i3.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Component });
81
+ FormTimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormTimeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgxMatDateAdapter }, { token: i2.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i3.AccessControlService }, { token: i3.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Component });
82
82
  FormTimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormTimeComponent, selector: "form-time", inputs: { ShowSpinners: "ShowSpinners", StepHour: "StepHour", StepMinute: "StepMinute", StepSecond: "StepSecond", ShowSeconds: "ShowSeconds", InOutFormat: "InOutFormat" }, usesInheritance: true, ngImport: i0, template: "<!-- Uguale in tutti i componenti --------------------------------------------------------------------------->\r\n<ng-container *ngIf=\"!FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\">\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">\r\n <ng-container *ngIf=\"DisplayLayout == 'form'\">{{ EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"DisplayLayout == 'inline'\" class=\"app-inline\">{{ EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && (!DisplayMode || (DisplayLayout != 'hidden' && DisplayCondition))\" class=\"{{FormGroupClass + (Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (DisplayLayout == 'inline' && DisplayMode ? (' app-inline-block ' + (!Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n\r\n <label class=\"col-md-{{(DisplayMode && DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : LabelColWidth) + (DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{Label}}{{Required && !DisplayMode ? '*' : ''}}{{Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"DisplayMode && DisplayLayout == 'inline' && InlineSeparator != ''\">{{InlineSeparator}}</span>\r\n <div class=\"col-md-{{DisplayMode && DisplayLayout == 'inline' ? 'none app-inline-block' : InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"DisplayMode && !DisplayModeTemplate\">{{ EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"DisplayMode && DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"DisplayModeTemplate, context: { $implicit: EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"DisplayMode\"><ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n<!----------------------------------------------------------------------------------------------------------->\r\n\r\n<ng-template #controlTemplate>\r\n <ngx-mat-timepicker name=\"{{GeneratedName}}\" #elementRef #baseInput=\"ngModel\" [(ngModel)]=\"Model\" [disabled]=\"Readonly\"\r\n [showSpinners]=\"ShowSpinners\" [stepHour]=\"StepHour\" [stepMinute]=\"StepMinute\" [stepSecond]=\"StepSecond\"\r\n [showSeconds]=\"ShowSeconds\" (ngModelChange)=\"changed()\" #validationControl=\"ngModel\">\r\n </ngx-mat-timepicker>\r\n\r\n</ng-template>", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.NgxMatTimepickerComponent, selector: "ngx-mat-timepicker", inputs: ["disabled", "showSpinners", "stepHour", "stepMinute", "stepSecond", "showSeconds", "disableMinute", "enableMeridian", "defaultTime", "color"], exportAs: ["ngxMatTimepicker"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormTimeComponent, decorators: [{
84
84
  type: Component,
@@ -89,8 +89,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
89
89
  type: Self
90
90
  }] }, { type: Array, decorators: [{
91
91
  type: Optional
92
- }, {
93
- type: Host
94
92
  }, {
95
93
  type: Inject,
96
94
  args: [NG_VALIDATORS]
@@ -114,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
114
112
  }], InOutFormat: [{
115
113
  type: Input
116
114
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zL2Zvcm0tdGltZS9mb3JtLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS10aW1lL2Zvcm0tdGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUF3QixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQXFCLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNILGVBQWU7QUFDZixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBUTdDLDBEQUEwRDtBQU0xRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQTRCbEQsY0FBYztJQUNkLFlBQVksR0FBc0IsRUFBVSxXQUFtQyxFQUFzQixTQUFvQixFQUE2QyxXQUF1QixFQUFFLEVBQXdCLEVBQWMsVUFBNEIsRUFBcUMsYUFBcUI7UUFDdlQsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRGhDLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQTNCL0UsMEhBQTBIO1FBQ2pILGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRXZDLDhEQUE4RDtRQUNyRCxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBRTlCLGlF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QUMsYUFBYTs7MEJBQXNELFFBQVE7OzBCQUFrQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7NENBMUIzUixZQUFZO3NCQUFwQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBV0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5nQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT3B0aW9uYWwsIFNlbGYsIEhvc3QsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgTmd4TWF0RGF0ZUFkYXB0ZXIgfSBmcm9tIFwiQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9kYXRldGltZS1waWNrZXJcIjtcclxuXHJcbi8vIEVzZmFlbnphXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG4vKipcclxuICogRGljaGlhcmF6aW9uZSBkZWxsYSB2YXJpYWJpbGUgZ2xvYmFsZSBkYXlqcy4gTCdvbmVyZSBkaSBcImNyZWFybGFcIiDDqCBhZmZpZGF0byBhbGwnYXBwbGljYXppb25lIGNoZSB1dGlsaXp6YSBxdWVzdGEgbGlicmVyaWEsIFxyXG4gKiBjaGUgZG92csOgIGltcG9ydGFyZSBsbyBzY3JpcHQgZ2xvYmFsZSBkaSBkYXlqcyBuZWxsYSBDTElcclxuICovXHJcbmRlY2xhcmUgdmFyIGRheWpzOiBhbnk7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBjaGUgaWRlbnRpZmljYSBsYSBzZWxlemlvbmUgZGkgdW4gb3JhcmlvICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS10aW1lXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJmb3JtLXRpbWUuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtVGltZUNvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtQ29udHJvbCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICAvKiogTW9zdHJhIG8gbWVubyBnbGkgc3Bpbm5lciBkb3ZlIGNsaWNjYXJlIHBlciBhdW1lbnRhcmUvZGltaW51aXJlIGxlIGNvbXBvbmVudGkgZGVsbCdvcm9sb2dpbyAob3JlLCBtaW51dGkgZSBzZWNvbmRpKSAqL1xyXG4gICAgQElucHV0KCkgU2hvd1NwaW5uZXJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEltcG9zdGEgbG8gc3RlcCAobWluaW1vIGF2YW56YW1lbnRvKSBwZXIgbGEgY2VsbGEgXCJvcmVcIiAqL1xyXG4gICAgQElucHV0KCkgU3RlcEhvdXI6IG51bWJlciA9IDE7XHJcblxyXG4gICAgLyoqIEltcG9zdGEgbG8gc3RlcCAobWluaW1vIGF2YW56YW1lbnRvKSBwZXIgbGEgY2VsbGEgXCJtaW51dGlcIiAqL1xyXG4gICAgQElucHV0KCkgU3RlcE1pbnV0ZTogbnVtYmVyID0gMTtcclxuXHJcbiAgICAvKiogSW1wb3N0YSBsbyBzdGVwIChtaW5pbW8gYXZhbnphbWVudG8pIHBlciBsYSBjZWxsYSBcInNlY29uZGlcIiAqL1xyXG4gICAgQElucHV0KCkgU3RlcFNlY29uZDogbnVtYmVyID0gNTtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIG1vc3RyYXJlIGkgc2Vjb25kaSBvIG1lbm8gKi9cclxuICAgIEBJbnB1dCgpIFNob3dTZWNvbmRzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2EgaWwgZm9ybWF0byBkYSB1dGlsaXp6YXJlIHNpYSBpbiBJbnB1dCBjaGUgaW4gT3V0cHV0XHJcbiAgICAgKiBcclxuICAgICAqIDEuIFNlIGRhdGUgdmVuZ29ubyB1dGlsaXp6YXRlIGxlIERhdGUgZGkgSmF2YXNjcmlwdFxyXG4gICAgICogXHJcbiAgICAgKiAyLiBTZSB0aW1lc3RyaW5nIHZlbmdvbm8gdXRpbGl6emF0ZSBzdHJpbmdoZSBkZWwgdGlwbyAnMDA6MDA6MDAnXHJcbiAgICAgKiBcclxuICAgICAqIDMuIFNlIGRheWpzIHZpZW5lIHV0aWxpenphdG8sIGFwcHVudG8sIGRheWpzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIEluT3V0Rm9ybWF0OiAnZGF0ZScgfCAndGltZXN0cmluZycgfCAnZGF5anMnID0gJ3RpbWVzdHJpbmcnO1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGRhdGVBZGFwdGVyOiBOZ3hNYXREYXRlQWRhcHRlcjxhbnk+LCBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLCBAT3B0aW9uYWwoKSBASG9zdCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgX3ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIGFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQE9wdGlvbmFsKCkgQXBwQ29udGV4dDogQ29tcG9uZW50Q29udGV4dCwgQE9wdGlvbmFsKCkgQEluamVjdChBQ09fQ1VTVE9NS0VZKSBBQ09fQ1VTVE9NS0VZOiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihjZHIsIG5nQ29udHJvbCwgX3ZhbGlkYXRvcnMsIGFjLCBBcHBDb250ZXh0LCBBQ09fQ1VTVE9NS0VZLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBPdmVycmlkZSBwZXIgZ2VzdGlyZSBpbnB1dCBpbiBpbmdyZXNzbyAqL1xyXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG5cclxuICAgICAgICAvL1F1YWxzaWFzaSBjb3NhIG1pIGFycml2aSBkZXZvIHJpY29uZHVybGEgYSB1biBkYXlqc1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5Jbk91dEZvcm1hdCkge1xyXG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgIG9iaiA9IGRheWpzKG9iaik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gb2JqLmZvcm1hdCgnSEg6bW06c3MnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0aW1lc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSAob2JqIHx8IFwiMDA6MDA6MDBcIikuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgb2JqID0gZGF5anMoKS5ob3VyKHBhcnNlSW50KGhvdXJzID8/IDApKS5taW51dGUocGFyc2VJbnQobWludXRlcyA/PyAwKSkuc2Vjb25kKHBhcnNlSW50KHNlY29uZHMgPz8gMCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IGAke2hvdXJzIHx8ICcwMCd9OiR7bWludXRlcyB8fCAnMDAnfToke3NlY29uZHMgfHwgJzAwJ31gO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheWpzJzpcclxuICAgICAgICAgICAgICAgIG9iaiA9IG9iajtcclxuICAgICAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSBvYmouZm9ybWF0KCdISDptbTpzcycpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gdXNjaXRhICovXHJcbiAgICBjaGFuZ2VkKCkge1xyXG4gICAgICAgIHZhciB0b0VtaXQgPSB0aGlzLmRhdGVBZGFwdGVyLmNsb25lKHRoaXMuTW9kZWwpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMuSW5PdXRGb3JtYXQpIHtcclxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgICAgICB0b0VtaXQgPSB0b0VtaXQudG9EYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdG9FbWl0LmZvcm1hdCgnSEg6bW06c3MnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0aW1lc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIHRvRW1pdCA9IHRvRW1pdC5mb3JtYXQoXCJISDptbVwiICsgKHRoaXMuU2hvd1NlY29uZHMgPyBcIjpzc1wiIDogXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRvRW1pdDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdkYXlqcyc6XHJcbiAgICAgICAgICAgICAgICB0b0VtaXQgPSB0b0VtaXQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdG9FbWl0LmZvcm1hdCgnSEg6bW06c3MnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VwZXIuY2hhbmdlZCh0b0VtaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59IiwiPCEtLSBVZ3VhbGUgaW4gdHV0dGkgaSBjb21wb25lbnRpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnZm9ybSdcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnXCIgY2xhc3M9XCJhcHAtaW5saW5lXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiIGNsYXNzPVwie3tGb3JtR3JvdXBDbGFzcyArIChMYXN0ID8gJyBhcHAtbWFyZ2luLWJvdHRvbS0wIGFwcC1tYXJnaW4tcmlnaHQtMCAnIDogJycpICsgKERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgRGlzcGxheU1vZGUgPyAoJyBhcHAtaW5saW5lLWJsb2NrICcgKyAoIUxhc3QgPyAnYXBwLW1hcmdpbi1yaWdodC0xMCcgOiAnJykpIDogJyBmb3JtLWdyb3VwIHJvdycpfX1cIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3soRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1ib2xkIGFwcC1tYXJnaW4tYm90dG9tLTAnIDogTGFiZWxDb2xXaWR0aCkgKyAoRGlzcGxheU1vZGUgPyAnIGFwcC1ib2xkJyA6ICcgbS10LTUnKSB9fVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgJiYgIURpc3BsYXlNb2RlID8gJyonIDogJyd9fXt7TGFiZWwgPyBcIjpcIiA6IFwiXCJ9fTwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgSW5saW5lU2VwYXJhdG9yICE9ICcnXCI+e3tJbmxpbmVTZXBhcmF0b3J9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWlubGluZS1ibG9jaycgOiBJbnB1dENvbFdpZHRofX1cIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcbiAgICA8bmd4LW1hdC10aW1lcGlja2VyIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiICNlbGVtZW50UmVmICNiYXNlSW5wdXQ9XCJuZ01vZGVsXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIFtkaXNhYmxlZF09XCJSZWFkb25seVwiXHJcbiAgICAgICAgW3Nob3dTcGlubmVyc109XCJTaG93U3Bpbm5lcnNcIiBbc3RlcEhvdXJdPVwiU3RlcEhvdXJcIiBbc3RlcE1pbnV0ZV09XCJTdGVwTWludXRlXCIgW3N0ZXBTZWNvbmRdPVwiU3RlcFNlY29uZFwiXHJcbiAgICAgICAgW3Nob3dTZWNvbmRzXT1cIlNob3dTZWNvbmRzXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlZCgpXCIgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiPlxyXG4gICAgPC9uZ3gtbWF0LXRpbWVwaWNrZXI+XHJcblxyXG48L25nLXRlbXBsYXRlPiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zL2Zvcm0tdGltZS9mb3JtLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS10aW1lL2Zvcm0tdGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUF3QixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFRLEtBQUssRUFBcUIsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPM0gsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFRN0MsMERBQTBEO0FBTTFELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBNEJsRCxjQUFjO0lBQ2QsWUFBWSxHQUFzQixFQUFVLFdBQW1DLEVBQXNCLFNBQW9CLEVBQXFDLFdBQXVCLEVBQUUsRUFBd0IsRUFBYyxVQUE0QixFQUFxQyxhQUFxQjtRQUMvUyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFEaEMsZ0JBQVcsR0FBWCxXQUFXLENBQXdCO1FBM0IvRSwwSEFBMEg7UUFDakgsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFdkMsOERBQThEO1FBQ3JELGFBQVEsR0FBVyxDQUFDLENBQUM7UUFFOUIsaUVBQWlFO1FBQ3hE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MEJBQWtDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs0Q0ExQm5SLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFXRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPcHRpb25hbCwgU2VsZiwgSG9zdCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBOZ3hNYXREYXRlQWRhcHRlciB9IGZyb20gXCJAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlclwiO1xyXG5cclxuLy8gRXNmYWVuemFcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UsIENvbXBvbmVudENvbnRleHQgfSBmcm9tICdAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2wnO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEJhc2VGb3JtQ29udHJvbCB9IGZyb20gXCIuLi9iYXNlLWZvcm0tY29udHJvbFwiO1xyXG5pbXBvcnQgeyBBQ09fQ1VTVE9NS0VZIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBEaWNoaWFyYXppb25lIGRlbGxhIHZhcmlhYmlsZSBnbG9iYWxlIGRheWpzLiBMJ29uZXJlIGRpIFwiY3JlYXJsYVwiIMOoIGFmZmlkYXRvIGFsbCdhcHBsaWNhemlvbmUgY2hlIHV0aWxpenphIHF1ZXN0YSBsaWJyZXJpYSwgXHJcbiAqIGNoZSBkb3Zyw6AgaW1wb3J0YXJlIGxvIHNjcmlwdCBnbG9iYWxlIGRpIGRheWpzIG5lbGxhIENMSVxyXG4gKi9cclxuZGVjbGFyZSB2YXIgZGF5anM6IGFueTtcclxuXHJcbi8qKiBDb21wb25lbnRlIGNoZSBpZGVudGlmaWNhIGxhIHNlbGV6aW9uZSBkaSB1biBvcmFyaW8gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJmb3JtLXRpbWVcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcImZvcm0tdGltZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1UaW1lQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1Db250cm9sIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIC8qKiBNb3N0cmEgbyBtZW5vIGdsaSBzcGlubmVyIGRvdmUgY2xpY2NhcmUgcGVyIGF1bWVudGFyZS9kaW1pbnVpcmUgbGUgY29tcG9uZW50aSBkZWxsJ29yb2xvZ2lvIChvcmUsIG1pbnV0aSBlIHNlY29uZGkpICovXHJcbiAgICBASW5wdXQoKSBTaG93U3Bpbm5lcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogSW1wb3N0YSBsbyBzdGVwIChtaW5pbW8gYXZhbnphbWVudG8pIHBlciBsYSBjZWxsYSBcIm9yZVwiICovXHJcbiAgICBASW5wdXQoKSBTdGVwSG91cjogbnVtYmVyID0gMTtcclxuXHJcbiAgICAvKiogSW1wb3N0YSBsbyBzdGVwIChtaW5pbW8gYXZhbnphbWVudG8pIHBlciBsYSBjZWxsYSBcIm1pbnV0aVwiICovXHJcbiAgICBASW5wdXQoKSBTdGVwTWludXRlOiBudW1iZXIgPSAxO1xyXG5cclxuICAgIC8qKiBJbXBvc3RhIGxvIHN0ZXAgKG1pbmltbyBhdmFuemFtZW50bykgcGVyIGxhIGNlbGxhIFwic2Vjb25kaVwiICovXHJcbiAgICBASW5wdXQoKSBTdGVwU2Vjb25kOiBudW1iZXIgPSA1O1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgbW9zdHJhcmUgaSBzZWNvbmRpIG8gbWVubyAqL1xyXG4gICAgQElucHV0KCkgU2hvd1NlY29uZHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBpbCBmb3JtYXRvIGRhIHV0aWxpenphcmUgc2lhIGluIElucHV0IGNoZSBpbiBPdXRwdXRcclxuICAgICAqIFxyXG4gICAgICogMS4gU2UgZGF0ZSB2ZW5nb25vIHV0aWxpenphdGUgbGUgRGF0ZSBkaSBKYXZhc2NyaXB0XHJcbiAgICAgKiBcclxuICAgICAqIDIuIFNlIHRpbWVzdHJpbmcgdmVuZ29ubyB1dGlsaXp6YXRlIHN0cmluZ2hlIGRlbCB0aXBvICcwMDowMDowMCdcclxuICAgICAqIFxyXG4gICAgICogMy4gU2UgZGF5anMgdmllbmUgdXRpbGl6emF0bywgYXBwdW50bywgZGF5anNcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgSW5PdXRGb3JtYXQ6ICdkYXRlJyB8ICd0aW1lc3RyaW5nJyB8ICdkYXlqcycgPSAndGltZXN0cmluZyc7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IE5neE1hdERhdGVBZGFwdGVyPGFueT4sIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsIEBPcHRpb25hbCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgX3ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIGFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQE9wdGlvbmFsKCkgQXBwQ29udGV4dDogQ29tcG9uZW50Q29udGV4dCwgQE9wdGlvbmFsKCkgQEluamVjdChBQ09fQ1VTVE9NS0VZKSBBQ09fQ1VTVE9NS0VZOiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihjZHIsIG5nQ29udHJvbCwgX3ZhbGlkYXRvcnMsIGFjLCBBcHBDb250ZXh0LCBBQ09fQ1VTVE9NS0VZLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSBPdmVycmlkZSBwZXIgZ2VzdGlyZSBpbnB1dCBpbiBpbmdyZXNzbyAqL1xyXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG5cclxuICAgICAgICAvL1F1YWxzaWFzaSBjb3NhIG1pIGFycml2aSBkZXZvIHJpY29uZHVybGEgYSB1biBkYXlqc1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5Jbk91dEZvcm1hdCkge1xyXG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgIG9iaiA9IGRheWpzKG9iaik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gb2JqLmZvcm1hdCgnSEg6bW06c3MnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0aW1lc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSAob2JqIHx8IFwiMDA6MDA6MDBcIikuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgb2JqID0gZGF5anMoKS5ob3VyKHBhcnNlSW50KGhvdXJzID8/IDApKS5taW51dGUocGFyc2VJbnQobWludXRlcyA/PyAwKSkuc2Vjb25kKHBhcnNlSW50KHNlY29uZHMgPz8gMCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IGAke2hvdXJzIHx8ICcwMCd9OiR7bWludXRlcyB8fCAnMDAnfToke3NlY29uZHMgfHwgJzAwJ31gO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheWpzJzpcclxuICAgICAgICAgICAgICAgIG9iaiA9IG9iajtcclxuICAgICAgICAgICAgICAgIHRoaXMuRXZhbHVhdGVkTW9kZWwgPSBvYmouZm9ybWF0KCdISDptbTpzcycpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gdXNjaXRhICovXHJcbiAgICBjaGFuZ2VkKCkge1xyXG4gICAgICAgIHZhciB0b0VtaXQgPSB0aGlzLmRhdGVBZGFwdGVyLmNsb25lKHRoaXMuTW9kZWwpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMuSW5PdXRGb3JtYXQpIHtcclxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgICAgICB0b0VtaXQgPSB0b0VtaXQudG9EYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdG9FbWl0LmZvcm1hdCgnSEg6bW06c3MnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0aW1lc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIHRvRW1pdCA9IHRvRW1pdC5mb3JtYXQoXCJISDptbVwiICsgKHRoaXMuU2hvd1NlY29uZHMgPyBcIjpzc1wiIDogXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FdmFsdWF0ZWRNb2RlbCA9IHRvRW1pdDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdkYXlqcyc6XHJcbiAgICAgICAgICAgICAgICB0b0VtaXQgPSB0b0VtaXQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkV2YWx1YXRlZE1vZGVsID0gdG9FbWl0LmZvcm1hdCgnSEg6bW06c3MnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VwZXIuY2hhbmdlZCh0b0VtaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59IiwiPCEtLSBVZ3VhbGUgaW4gdHV0dGkgaSBjb21wb25lbnRpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0ICYmICghRGlzcGxheU1vZGUgfHwgKERpc3BsYXlMYXlvdXQgIT0gJ2hpZGRlbicgJiYgRGlzcGxheUNvbmRpdGlvbikpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgIURpc3BsYXlNb2RlVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheUxheW91dCA9PSAnZm9ybSdcIj57eyBFdmFsdWF0ZWRNb2RlbCB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnXCIgY2xhc3M9XCJhcHAtaW5saW5lXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlNb2RlVGVtcGxhdGVcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRGlzcGxheU1vZGVUZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IEV2YWx1YXRlZE1vZGVsIH1cIj48L25nLWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiRm9ybUxheW91dCAmJiAoIURpc3BsYXlNb2RlIHx8IChEaXNwbGF5TGF5b3V0ICE9ICdoaWRkZW4nICYmIERpc3BsYXlDb25kaXRpb24pKVwiIGNsYXNzPVwie3tGb3JtR3JvdXBDbGFzcyArIChMYXN0ID8gJyBhcHAtbWFyZ2luLWJvdHRvbS0wIGFwcC1tYXJnaW4tcmlnaHQtMCAnIDogJycpICsgKERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgRGlzcGxheU1vZGUgPyAoJyBhcHAtaW5saW5lLWJsb2NrICcgKyAoIUxhc3QgPyAnYXBwLW1hcmdpbi1yaWdodC0xMCcgOiAnJykpIDogJyBmb3JtLWdyb3VwIHJvdycpfX1cIj5cclxuXHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3soRGlzcGxheU1vZGUgJiYgRGlzcGxheUxheW91dCA9PSAnaW5saW5lJyA/ICdub25lIGFwcC1ib2xkIGFwcC1tYXJnaW4tYm90dG9tLTAnIDogTGFiZWxDb2xXaWR0aCkgKyAoRGlzcGxheU1vZGUgPyAnIGFwcC1ib2xkJyA6ICcgbS10LTUnKSB9fVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgJiYgIURpc3BsYXlNb2RlID8gJyonIDogJyd9fXt7TGFiZWwgPyBcIjpcIiA6IFwiXCJ9fTwvbGFiZWw+XHJcbiAgICA8c3BhbiAqbmdJZj1cIkRpc3BsYXlNb2RlICYmIERpc3BsYXlMYXlvdXQgPT0gJ2lubGluZScgJiYgSW5saW5lU2VwYXJhdG9yICE9ICcnXCI+e3tJbmxpbmVTZXBhcmF0b3J9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQte3tEaXNwbGF5TW9kZSAmJiBEaXNwbGF5TGF5b3V0ID09ICdpbmxpbmUnID8gJ25vbmUgYXBwLWlubGluZS1ibG9jaycgOiBJbnB1dENvbFdpZHRofX1cIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRpc3BsYXlNb2RlICYmICFEaXNwbGF5TW9kZVRlbXBsYXRlXCI+e3sgRXZhbHVhdGVkTW9kZWwgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGlzcGxheU1vZGUgJiYgRGlzcGxheU1vZGVUZW1wbGF0ZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJEaXNwbGF5TW9kZVRlbXBsYXRlLCBjb250ZXh0OiB7ICRpbXBsaWNpdDogRXZhbHVhdGVkTW9kZWwgfVwiPjwvbmctY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW2hpZGRlbl09XCJEaXNwbGF5TW9kZVwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcbiAgICA8bmd4LW1hdC10aW1lcGlja2VyIG5hbWU9XCJ7e0dlbmVyYXRlZE5hbWV9fVwiICNlbGVtZW50UmVmICNiYXNlSW5wdXQ9XCJuZ01vZGVsXCIgWyhuZ01vZGVsKV09XCJNb2RlbFwiIFtkaXNhYmxlZF09XCJSZWFkb25seVwiXHJcbiAgICAgICAgW3Nob3dTcGlubmVyc109XCJTaG93U3Bpbm5lcnNcIiBbc3RlcEhvdXJdPVwiU3RlcEhvdXJcIiBbc3RlcE1pbnV0ZV09XCJTdGVwTWludXRlXCIgW3N0ZXBTZWNvbmRdPVwiU3RlcFNlY29uZFwiXHJcbiAgICAgICAgW3Nob3dTZWNvbmRzXT1cIlNob3dTZWNvbmRzXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlZCgpXCIgI3ZhbGlkYXRpb25Db250cm9sPVwibmdNb2RlbFwiPlxyXG4gICAgPC9uZ3gtbWF0LXRpbWVwaWNrZXI+XHJcblxyXG48L25nLXRlbXBsYXRlPiJdfQ==