@wertzui/ngx-restworld-client 13.2.1 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/restworld-inputs/restworld-inputs.mjs +7 -4
- package/esm2022/lib/restworld-client.module.mjs +4 -1
- package/esm2022/lib/services/opentelemetry.service.mjs +95 -0
- package/fesm2022/wertzui-ngx-restworld-client.mjs +100 -3
- package/fesm2022/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/lib/components/restworld-inputs/restworld-inputs.d.ts.map +1 -1
- package/lib/restworld-client.module.d.ts.map +1 -1
- package/lib/services/opentelemetry.service.d.ts +11 -0
- package/lib/services/opentelemetry.service.d.ts.map +1 -0
- package/package.json +6 -1
|
@@ -319,11 +319,14 @@ export class RestWorldInputDropdownComponent {
|
|
|
319
319
|
return items;
|
|
320
320
|
const selectedValues = this.getSelectedValues();
|
|
321
321
|
const itemsToKeep = oldInline.filter(i => selectedValues.includes(this.getValue(i)));
|
|
322
|
-
const
|
|
322
|
+
const newValues = items.map(i => this.getValue(i));
|
|
323
|
+
const newItems = items.concat(itemsToKeep.filter(i => !newValues.includes(this.getValue(i))));
|
|
323
324
|
return newItems;
|
|
324
325
|
}
|
|
325
326
|
getSelectedValues() {
|
|
326
327
|
const value = this._formControl.value;
|
|
328
|
+
if (value === undefined || value === null)
|
|
329
|
+
return [];
|
|
327
330
|
if (Array.isArray(value))
|
|
328
331
|
return value;
|
|
329
332
|
return [value];
|
|
@@ -342,11 +345,11 @@ export class RestWorldInputDropdownComponent {
|
|
|
342
345
|
return shortened;
|
|
343
346
|
}
|
|
344
347
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RestWorldInputDropdownComponent, deps: [{ token: i9.MessageService }, { token: i10.RestWorldClientCollection }, { token: i4.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
345
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: RestWorldInputDropdownComponent, selector: "rw-input-dropdown", inputs: { property: "property", apiName: "apiName", getLabel: "getLabel", getTooltip: "getTooltip" }, outputs: { onChange: "onChange" }, queries: [{ propertyName: "inputOptionsSingleRef", first: true, predicate: ["inputOptionsSingle"], descendants: true }, { propertyName: "inputOptionsMultipleRef", first: true, predicate: ["inputOptionsMultiple"], descendants: true }], ngImport: i0, template: "<ng-template #defaultInputOptionsSingle let-property=\"property\" let-template=\"template\">\n <p-dropdown\n [formControlName]=\"property.name\"\n [id]=\"property.name\"\n [options]=\"property.options.inline\"\n [filterBy]=\"promptField + ',' + valueField\"\n [optionLabel]=\"promptField\"\n [optionValue]=\"valueField\"\n [readonly]=\"property.readOnly\"\n [required]=\"property.required || property.options.minItems > 0\"\n [filter]=\"true\"\n [filterValue]=\"filterValue\"\n [autoDisplayFirst]=\"false\"\n [showClear]=\"!property.required || property.options.minItems <= 0\"\n (onFilter)=\"onOptionsFiltered($event)\"\n (onChange)=\"onOptionsChanged($event)\"\n styleClass=\"w-full\"\n [panelStyleClass]=\"loading ? 'loading' : ''\"\n [filterPlaceholder]=\"property?.options?.link?.href ? 'search for more results' : ''\"\n [emptyFilterMessage]=\"loading ? 'Loading...' : ''\"\n >\n <ng-template let-item pTemplate=\"selectedItem\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template pTemplate=\"filtericon\">\n <SearchIcon *ngIf=\"!loading\"></SearchIcon>\n <SpinnerIcon *ngIf=\"loading\" [spin]=\"true\"></SpinnerIcon>\n </ng-template>\n </p-dropdown>\n</ng-template>\n<ng-container *ngIf=\"!property.options.maxItems || property.options.maxItems == 1\">\n <ng-container *ngTemplateOutlet=\"inputOptionsSingleRef ?? defaultInputOptionsSingle; context: { property: property, apiName: apiName }\"></ng-container>\n</ng-container>\n\n<ng-template #defaultInputOptionsMultiple let-property=\"property\" let-template=\"template\">\n <p-multiSelect\n [formControlName]=\"property.name\"\n [id]=\"property.name\"\n [options]=\"property.options.inline\"\n [filterBy]=\"promptField + ',' + valueField\"\n [optionLabel]=\"promptField\"\n [optionValue]=\"valueField\"\n [readonly]=\"property.readOnly\"\n [required]=\"property.required || property.options.minItems > 0\"\n [filter]=\"true\"\n [filterValue]=\"filterValue\"\n [showClear]=\"true\"\n [showToggleAll]=\"true\"\n (onFilter)=\"onOptionsFiltered($event)\"\n (onChange)=\"onOptionsChanged($event)\"\n styleClass=\"w-full\"\n [panelStyleClass]=\"loading ? 'loading' : ''\"\n [filterPlaceHolder]=\"property?.options?.link?.href ? 'search for more results' : ''\"\n [emptyFilterMessage]=\"loading ? 'Loading...' : ''\"\n [selectionLimit]=\"property.options.maxItems\"\n display=\"chip\"\n >\n <ng-template let-value pTemplate=\"selectedItems\">\n <p-chip\n *ngFor=\"let item of value; let i = index\"\n [pTooltip]=\"getTooltip(
|
|
348
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: RestWorldInputDropdownComponent, selector: "rw-input-dropdown", inputs: { property: "property", apiName: "apiName", getLabel: "getLabel", getTooltip: "getTooltip" }, outputs: { onChange: "onChange" }, queries: [{ propertyName: "inputOptionsSingleRef", first: true, predicate: ["inputOptionsSingle"], descendants: true }, { propertyName: "inputOptionsMultipleRef", first: true, predicate: ["inputOptionsMultiple"], descendants: true }], ngImport: i0, template: "<ng-template #defaultInputOptionsSingle let-property=\"property\" let-template=\"template\">\n <p-dropdown\n [formControlName]=\"property.name\"\n [id]=\"property.name\"\n [options]=\"property.options.inline\"\n [filterBy]=\"promptField + ',' + valueField\"\n [optionLabel]=\"promptField\"\n [optionValue]=\"valueField\"\n [readonly]=\"property.readOnly\"\n [required]=\"property.required || property.options.minItems > 0\"\n [filter]=\"true\"\n [filterValue]=\"filterValue\"\n [autoDisplayFirst]=\"false\"\n [showClear]=\"!property.required || property.options.minItems <= 0\"\n (onFilter)=\"onOptionsFiltered($event)\"\n (onChange)=\"onOptionsChanged($event)\"\n styleClass=\"w-full\"\n [panelStyleClass]=\"loading ? 'loading' : ''\"\n [filterPlaceholder]=\"property?.options?.link?.href ? 'search for more results' : ''\"\n [emptyFilterMessage]=\"loading ? 'Loading...' : ''\"\n >\n <ng-template let-item pTemplate=\"selectedItem\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template pTemplate=\"filtericon\">\n <SearchIcon *ngIf=\"!loading\"></SearchIcon>\n <SpinnerIcon *ngIf=\"loading\" [spin]=\"true\"></SpinnerIcon>\n </ng-template>\n </p-dropdown>\n</ng-template>\n<ng-container *ngIf=\"!property.options.maxItems || property.options.maxItems == 1\">\n <ng-container *ngTemplateOutlet=\"inputOptionsSingleRef ?? defaultInputOptionsSingle; context: { property: property, apiName: apiName }\"></ng-container>\n</ng-container>\n\n<ng-template #defaultInputOptionsMultiple let-property=\"property\" let-template=\"template\">\n <p-multiSelect\n [formControlName]=\"property.name\"\n [id]=\"property.name\"\n [options]=\"property.options.inline\"\n [filterBy]=\"promptField + ',' + valueField\"\n [optionLabel]=\"promptField\"\n [optionValue]=\"valueField\"\n [readonly]=\"property.readOnly\"\n [required]=\"property.required || property.options.minItems > 0\"\n [filter]=\"true\"\n [filterValue]=\"filterValue\"\n [showClear]=\"true\"\n [showToggleAll]=\"true\"\n (onFilter)=\"onOptionsFiltered($event)\"\n (onChange)=\"onOptionsChanged($event)\"\n styleClass=\"w-full\"\n [panelStyleClass]=\"loading ? 'loading' : ''\"\n [filterPlaceHolder]=\"property?.options?.link?.href ? 'search for more results' : ''\"\n [emptyFilterMessage]=\"loading ? 'Loading...' : ''\"\n [selectionLimit]=\"property.options.maxItems\"\n display=\"chip\"\n >\n <ng-template let-value pTemplate=\"selectedItems\">\n <p-chip\n *ngFor=\"let item of value; let i = index\"\n [pTooltip]=\"getTooltip(item)\"\n [label]=\"getLabel(item)\"\n [removable]=\"true\"\n (onRemove)=\"removeByValue(getValue(item))\"\n >\n </p-chip>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template pTemplate=\"filtericon\">\n <SearchIcon *ngIf=\"!loading\"></SearchIcon>\n <SpinnerIcon *ngIf=\"loading\" [spin]=\"true\"></SpinnerIcon>\n </ng-template>\n </p-multiSelect>\n</ng-template>\n<ng-container *ngIf=\"(property.options.maxItems ?? 0) > 1\">\n <ng-container *ngTemplateOutlet=\"inputOptionsMultipleRef ?? defaultInputOptionsMultiple; context: { property: property, apiName: apiName }\"></ng-container>\n</ng-container>\n", styles: ["::ng-deep .p-multiselect-label{display:inline-flex!important}::ng-deep .p-multiselect-label-empty{height:36px}::ng-deep .p-chip{background-color:#eff6ff;color:#1d4ed8}::ng-deep .pi-chip-remove-icon:hover{filter:brightness(.6)}\n"], dependencies: [{ kind: "directive", type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i11.Chip, selector: "p-chip", inputs: ["label", "icon", "image", "style", "styleClass", "removable", "removeIcon"], outputs: ["onRemove", "onImageError"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i12.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i13.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i14.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i15.SearchIcon, selector: "SearchIcon" }, { kind: "component", type: i16.SpinnerIcon, selector: "SpinnerIcon" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
346
349
|
}
|
|
347
350
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RestWorldInputDropdownComponent, decorators: [{
|
|
348
351
|
type: Component,
|
|
349
|
-
args: [{ selector: 'rw-input-dropdown', viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: "<ng-template #defaultInputOptionsSingle let-property=\"property\" let-template=\"template\">\n <p-dropdown\n [formControlName]=\"property.name\"\n [id]=\"property.name\"\n [options]=\"property.options.inline\"\n [filterBy]=\"promptField + ',' + valueField\"\n [optionLabel]=\"promptField\"\n [optionValue]=\"valueField\"\n [readonly]=\"property.readOnly\"\n [required]=\"property.required || property.options.minItems > 0\"\n [filter]=\"true\"\n [filterValue]=\"filterValue\"\n [autoDisplayFirst]=\"false\"\n [showClear]=\"!property.required || property.options.minItems <= 0\"\n (onFilter)=\"onOptionsFiltered($event)\"\n (onChange)=\"onOptionsChanged($event)\"\n styleClass=\"w-full\"\n [panelStyleClass]=\"loading ? 'loading' : ''\"\n [filterPlaceholder]=\"property?.options?.link?.href ? 'search for more results' : ''\"\n [emptyFilterMessage]=\"loading ? 'Loading...' : ''\"\n >\n <ng-template let-item pTemplate=\"selectedItem\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template pTemplate=\"filtericon\">\n <SearchIcon *ngIf=\"!loading\"></SearchIcon>\n <SpinnerIcon *ngIf=\"loading\" [spin]=\"true\"></SpinnerIcon>\n </ng-template>\n </p-dropdown>\n</ng-template>\n<ng-container *ngIf=\"!property.options.maxItems || property.options.maxItems == 1\">\n <ng-container *ngTemplateOutlet=\"inputOptionsSingleRef ?? defaultInputOptionsSingle; context: { property: property, apiName: apiName }\"></ng-container>\n</ng-container>\n\n<ng-template #defaultInputOptionsMultiple let-property=\"property\" let-template=\"template\">\n <p-multiSelect\n [formControlName]=\"property.name\"\n [id]=\"property.name\"\n [options]=\"property.options.inline\"\n [filterBy]=\"promptField + ',' + valueField\"\n [optionLabel]=\"promptField\"\n [optionValue]=\"valueField\"\n [readonly]=\"property.readOnly\"\n [required]=\"property.required || property.options.minItems > 0\"\n [filter]=\"true\"\n [filterValue]=\"filterValue\"\n [showClear]=\"true\"\n [showToggleAll]=\"true\"\n (onFilter)=\"onOptionsFiltered($event)\"\n (onChange)=\"onOptionsChanged($event)\"\n styleClass=\"w-full\"\n [panelStyleClass]=\"loading ? 'loading' : ''\"\n [filterPlaceHolder]=\"property?.options?.link?.href ? 'search for more results' : ''\"\n [emptyFilterMessage]=\"loading ? 'Loading...' : ''\"\n [selectionLimit]=\"property.options.maxItems\"\n display=\"chip\"\n >\n <ng-template let-value pTemplate=\"selectedItems\">\n <p-chip\n *ngFor=\"let item of value; let i = index\"\n [pTooltip]=\"getTooltip(
|
|
352
|
+
args: [{ selector: 'rw-input-dropdown', viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: "<ng-template #defaultInputOptionsSingle let-property=\"property\" let-template=\"template\">\n <p-dropdown\n [formControlName]=\"property.name\"\n [id]=\"property.name\"\n [options]=\"property.options.inline\"\n [filterBy]=\"promptField + ',' + valueField\"\n [optionLabel]=\"promptField\"\n [optionValue]=\"valueField\"\n [readonly]=\"property.readOnly\"\n [required]=\"property.required || property.options.minItems > 0\"\n [filter]=\"true\"\n [filterValue]=\"filterValue\"\n [autoDisplayFirst]=\"false\"\n [showClear]=\"!property.required || property.options.minItems <= 0\"\n (onFilter)=\"onOptionsFiltered($event)\"\n (onChange)=\"onOptionsChanged($event)\"\n styleClass=\"w-full\"\n [panelStyleClass]=\"loading ? 'loading' : ''\"\n [filterPlaceholder]=\"property?.options?.link?.href ? 'search for more results' : ''\"\n [emptyFilterMessage]=\"loading ? 'Loading...' : ''\"\n >\n <ng-template let-item pTemplate=\"selectedItem\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template pTemplate=\"filtericon\">\n <SearchIcon *ngIf=\"!loading\"></SearchIcon>\n <SpinnerIcon *ngIf=\"loading\" [spin]=\"true\"></SpinnerIcon>\n </ng-template>\n </p-dropdown>\n</ng-template>\n<ng-container *ngIf=\"!property.options.maxItems || property.options.maxItems == 1\">\n <ng-container *ngTemplateOutlet=\"inputOptionsSingleRef ?? defaultInputOptionsSingle; context: { property: property, apiName: apiName }\"></ng-container>\n</ng-container>\n\n<ng-template #defaultInputOptionsMultiple let-property=\"property\" let-template=\"template\">\n <p-multiSelect\n [formControlName]=\"property.name\"\n [id]=\"property.name\"\n [options]=\"property.options.inline\"\n [filterBy]=\"promptField + ',' + valueField\"\n [optionLabel]=\"promptField\"\n [optionValue]=\"valueField\"\n [readonly]=\"property.readOnly\"\n [required]=\"property.required || property.options.minItems > 0\"\n [filter]=\"true\"\n [filterValue]=\"filterValue\"\n [showClear]=\"true\"\n [showToggleAll]=\"true\"\n (onFilter)=\"onOptionsFiltered($event)\"\n (onChange)=\"onOptionsChanged($event)\"\n styleClass=\"w-full\"\n [panelStyleClass]=\"loading ? 'loading' : ''\"\n [filterPlaceHolder]=\"property?.options?.link?.href ? 'search for more results' : ''\"\n [emptyFilterMessage]=\"loading ? 'Loading...' : ''\"\n [selectionLimit]=\"property.options.maxItems\"\n display=\"chip\"\n >\n <ng-template let-value pTemplate=\"selectedItems\">\n <p-chip\n *ngFor=\"let item of value; let i = index\"\n [pTooltip]=\"getTooltip(item)\"\n [label]=\"getLabel(item)\"\n [removable]=\"true\"\n (onRemove)=\"removeByValue(getValue(item))\"\n >\n </p-chip>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n <span [pTooltip]=\"getTooltip(item)\">{{getLabel(item)}}</span>\n </ng-template>\n <ng-template pTemplate=\"filtericon\">\n <SearchIcon *ngIf=\"!loading\"></SearchIcon>\n <SpinnerIcon *ngIf=\"loading\" [spin]=\"true\"></SpinnerIcon>\n </ng-template>\n </p-multiSelect>\n</ng-template>\n<ng-container *ngIf=\"(property.options.maxItems ?? 0) > 1\">\n <ng-container *ngTemplateOutlet=\"inputOptionsMultipleRef ?? defaultInputOptionsMultiple; context: { property: property, apiName: apiName }\"></ng-container>\n</ng-container>\n", styles: ["::ng-deep .p-multiselect-label{display:inline-flex!important}::ng-deep .p-multiselect-label-empty{height:36px}::ng-deep .p-chip{background-color:#eff6ff;color:#1d4ed8}::ng-deep .pi-chip-remove-icon:hover{filter:brightness(.6)}\n"] }]
|
|
350
353
|
}], ctorParameters: () => [{ type: i9.MessageService }, { type: i10.RestWorldClientCollection }, { type: i4.ControlContainer }], propDecorators: { property: [{
|
|
351
354
|
type: Input,
|
|
352
355
|
args: [{ required: true }]
|
|
@@ -481,4 +484,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
481
484
|
type: Input,
|
|
482
485
|
args: [{ required: true }]
|
|
483
486
|
}] } });
|
|
484
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWlucHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXN0d29ybGQtaW5wdXRzL3Jlc3R3b3JsZC1pbnB1dHMudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtZm9ybS1lbGVtZW50L3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24vcmVzdHdvcmxkLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LW9iamVjdC9yZXN0d29ybGQtaW5wdXQtb2JqZWN0LmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LXNpbXBsZS9yZXN0d29ybGQtaW5wdXQtc2ltcGxlLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFtQixnQkFBZ0IsRUFBcUMsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxSCxPQUFPLEVBQWUsY0FBYyxFQUEyQixjQUFjLEVBQVksWUFBWSxFQUFrRSxNQUFNLHlCQUF5QixDQUFDO0FBTXZNLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvQzs7OztHQUlHO0FBT0gsTUFBTSxPQUFPLDZCQUE2QjtJQUV4QyxRQUFRLENBQWE7SUFHckIsT0FBTyxDQUFVO3VHQUxOLDZCQUE2QjsyRkFBN0IsNkJBQTZCLDZHQ3ZCMUMsdVBBSUEsOEVEd0NhLHVCQUF1QixzTUF2Qm5CLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7OzJGQUVwRSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUdaLENBQUMs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QkFETixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJekIsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlLCBOdW1iZXJUZW1wbGF0ZSwgT3B0aW9ucywgT3B0aW9uc0l0ZW1EdG8sIFByb2JsZW1EZXRhaWxzLCBQcm9wZXJ0eSwgUHJvcGVydHlUeXBlLCBSZXNvdXJjZUR0bywgUmVzb3VyY2VPZkR0bywgU2ltcGxlVmFsdWUsIFRlbXBsYXRlLCBUZW1wbGF0ZUR0byB9IGZyb20gJ0B3ZXJ0enVpL25neC1oYWwtY2xpZW50JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnRzJztcclxuaW1wb3J0IHsgUHJvcGVydHlUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGVtcGxhdGluZyc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZENsaWVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3R3b3JsZC1jbGllbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRDbGllbnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgUHJvcGVydHlXaXRoT3B0aW9ucywgUHJvcGVydHlXaXRoSW1hZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3BlY2lhbC1wcm9wZXJ0aWVzJ1xyXG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJy4uLy4uL3V0aWwvZGVib3VuY2UnO1xyXG5cclxuLyoqXHJcbiAqIEEgZm9ybSBlbGVtZW50IHdpdGggYSBsYWJlbCB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmcm9tIGEgcHJvcGVydHkgaW4gYSBmb3JtIHRlbXBsYXRlLlxyXG4gKiBUaGlzIG1heSBhbHNvIGJlIGEgY29tcGxleCBvYmplY3Qgb3IgYSBjb2xsZWN0aW9uIGluIHdoaWNoIGNhc2UgbXVsdGlwbGUgYW5kIG5lc3RlZCBpbnB1dCBlbGVtZW50cyBtYXkgYmUgcmVuZGVyZWQuXHJcbiAqIElmIHlvdSB3YW50IGEgZm9ybSBlbGVtZW50IHdpdGhvdXQgYSBsYWJlbCwgdXNlIFJlc3RXb3JsZEZvcm1JbnB1dCA8cnctaW5wdXQ+LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1mb3JtLWVsZW1lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtZm9ybS1lbGVtZW50L3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQvcmVzdHdvcmxkLWZvcm0tZWxlbWVudC5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQ8VFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8U2ltcGxlVmFsdWUsIHN0cmluZywgc3RyaW5nPj4ge1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgcHJvcGVydHkhOiBUUHJvcGVydHk7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgZm9ybSBpbnB1dCBlbGVtZW50IHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gYSBwcm9wZXJ0eSBpbiBhIGZvcm0gdGVtcGxhdGUuXHJcbiAqIFRoaXMgbWF5IGFsc28gYmUgYSBjb21wbGV4IG9iamVjdCBvciBhIGNvbGxlY3Rpb24gaW4gd2hpY2ggY2FzZSBtdWx0aXBsZSBhbmQgbmVzdGVkIGlucHV0IGVsZW1lbnRzIG1heSBiZSByZW5kZXJlZC5cclxuICogSWYgeW91IGFsc28gd2FudCBhIGxhYmVsLCB1c2UgUmVzdFdvcmxkRm9ybUVsZW1lbnQgPHJ3LWZvcm0tZWxlbWVudD4uXHJcbiAqIFlvdSBjYW4gYWxzbyB1c2Ugb25lIG9mIHRoZSBkaWZmZXJlbnQgUmVzdFdvcmxkSW5wdXQuLi4gPHJ3LWlucHV0LS4uLj4gZWxlbWVudHMgdG8gcmVuZGVyIGEgc3BlY2lmaWMgaW5wdXQsXHJcbiAqIGJ1dCBpdCBpcyBhZHZpc2VkIHRvIGNvbnRyb2wgdGhlIHJlbmRlcmVkIGlucHV0IHRocm91Z2ggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dENvbXBvbmVudDxUUHJvcGVydHkgZXh0ZW5kcyBQcm9wZXJ0eTxTaW1wbGVWYWx1ZSwgc3RyaW5nLCBzdHJpbmc+PiB7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgcHJvcGVydHkhOiBUUHJvcGVydHk7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVR5cGUoKSB7XHJcbiAgICByZXR1cm4gUHJvcGVydHlUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVdpdGhPcHRpb25zKCkge1xyXG4gICAgcmV0dXJuIFByb3BlcnR5V2l0aE9wdGlvbnM8U2ltcGxlVmFsdWUsIHN0cmluZywgc3RyaW5nPjtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQSBjb2xsZWN0aW9uIHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gdGhlIGdpdmVuIHByb3BlcnR5LlxyXG4gKiBUaGUgY29sbGVjdGlvbiBzdXBwb3J0cyBkcmFnICYgZHJvcCB0byByZSBvcmRlciB0aGUgZWxlbWVudHMgYW5kIGNhbiBhbHNvIGJlIG5lc3RlZC5cclxuICogQHJlbWFya3MgSXQgaXMgYWR2aXNlZCB0byB1c2UgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQgPHJ3LWlucHV0PiBhbmQgY29udHJvbCB0aGUgcmVuZGVyZWQgaW5wdXRzIHdpdGggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eVxyXG4gKiBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMgY29tcG9uZW50IGRpcmVjdGx5LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1pbnB1dC1jb2xsZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbnB1dC1jb2xsZWN0aW9uL3Jlc3R3b3JsZC1pbnB1dC1jb2xsZWN0aW9uLmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dENvbGxlY3Rpb25Db21wb25lbnQ8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47IH0+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBwcm9wZXJ0eSE6IFByb3BlcnR5ICYge190ZW1wbGF0ZXM6IHsgZGVmYXVsdDogVGVtcGxhdGUgfX07XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXRDb2xsZWN0aW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgaW5wdXRDb2xsZWN0aW9uUmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcblxyXG5cclxuICBwcml2YXRlIF90ZW1wbGF0ZXM6IE51bWJlclRlbXBsYXRlW10gPSBbXTtcclxuICBwdWJsaWMgZ2V0IHRlbXBsYXRlcygpOiBOdW1iZXJUZW1wbGF0ZVtdIHtcclxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZWZhdWx0VGVtcGxhdGU/OiBUZW1wbGF0ZTtcclxuICBwdWJsaWMgZ2V0IGRlZmF1bHRUZW1wbGF0ZSgpOiBUZW1wbGF0ZSB7XHJcbiAgICBpZiAodGhpcy5fZGVmYXVsdFRlbXBsYXRlID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGRlZmF1bHQgdGVtcGxhdGUgZm91bmQuXCIpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VGVtcGxhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbm5lckZvcm1BcnJheT86IEZvcm1BcnJheTxGb3JtR3JvdXA8VD4+O1xyXG4gIHB1YmxpYyBnZXQgaW5uZXJGb3JtQXJyYXkoKSB7XHJcbiAgICBpZiAodGhpcy5faW5uZXJGb3JtQXJyYXkgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybUdyb3VwIGlzIG5vdCBzZXQuXCIpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9pbm5lckZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5fY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDxhbnk+O1xyXG4gICAgdGhpcy5faW5uZXJGb3JtQXJyYXkgPSBmb3JtR3JvdXAuY29udHJvbHNbdGhpcy5wcm9wZXJ0eS5uYW1lXSBhcyBGb3JtQXJyYXk8Rm9ybUdyb3VwPFQ+PjtcclxuICAgIHRoaXMuX3RlbXBsYXRlcyA9IFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudC5nZXRDb2xsZWN0aW9uRW50cnlUZW1wbGF0ZXModGhpcy5wcm9wZXJ0eSk7XHJcbiAgICB0aGlzLl9kZWZhdWx0VGVtcGxhdGUgPSB0aGlzLnByb3BlcnR5Ll90ZW1wbGF0ZXMuZGVmYXVsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldENvbGxlY3Rpb25FbnRyeVRlbXBsYXRlcyhwcm9wZXJ0eT86IFByb3BlcnR5KTogTnVtYmVyVGVtcGxhdGVbXSB7XHJcbiAgICBpZiAoIXByb3BlcnR5KVxyXG4gICAgICByZXR1cm4gW107XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHByb3BlcnR5Ll90ZW1wbGF0ZXMpXHJcbiAgICAgIC5maWx0ZXIoKFtrZXksIHZhbHVlXSkgPT4gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIucGFyc2VJbnQoa2V5KSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIucGFyc2VJbnQodmFsdWU/LnRpdGxlID8/IFwiXCIpKSlcclxuICAgICAgLm1hcCgoWywgdmFsdWVdKSA9PiBuZXcgTnVtYmVyVGVtcGxhdGUodmFsdWUgYXMgVGVtcGxhdGVEdG8pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGROZXdJdGVtVG9Db2xsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4SW5kZXggPSBNYXRoLm1heCguLi5PYmplY3Qua2V5cyh0aGlzLnRlbXBsYXRlcylcclxuICAgICAgLm1hcChrZXkgPT4gTnVtYmVyLnBhcnNlSW50KGtleSkpXHJcbiAgICAgIC5maWx0ZXIoa2V5ID0+IE51bWJlci5pc1NhZmVJbnRlZ2VyKGtleSkpKTtcclxuICAgIGNvbnN0IG5leHRJbmRleCA9IG1heEluZGV4IDwgMCA/IDAgOiBtYXhJbmRleCArIDE7XHJcblxyXG4gICAgY29uc3QgY29waWVkVGVtcGxhdGVEdG8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGVmYXVsdFRlbXBsYXRlKSkgYXMgVGVtcGxhdGVEdG87XHJcbiAgICBjb3BpZWRUZW1wbGF0ZUR0by50aXRsZSA9IG5leHRJbmRleC50b1N0cmluZygpO1xyXG4gICAgY29uc3QgY29waWVkVGVtcGxhdGUgPSBuZXcgTnVtYmVyVGVtcGxhdGUoY29waWVkVGVtcGxhdGVEdG8pO1xyXG5cclxuICAgIHRoaXMudGVtcGxhdGVzW25leHRJbmRleF0gPSBjb3BpZWRUZW1wbGF0ZTtcclxuICAgIHRoaXMuaW5uZXJGb3JtQXJyYXkucHVzaCh0aGlzLl9mb3JtU2VydmljZS5jcmVhdGVGb3JtR3JvdXBGcm9tVGVtcGxhdGUodGhpcy5kZWZhdWx0VGVtcGxhdGUpIGFzIHVua25vd24gYXMgRm9ybUdyb3VwPFQ+KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVJdGVtRnJvbUNvbGxlY3Rpb24odGVtcGxhdGU6IE51bWJlclRlbXBsYXRlKTogdm9pZCB7XHJcbiAgICBpZiAodGVtcGxhdGUudGl0bGUgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRlbGV0ZSBhIHRlbXBsYXRlIHdpdGhvdXQgYSB0aXRsZS5cIik7XHJcblxyXG4gICAgZGVsZXRlIHRoaXMudGVtcGxhdGVzW3RlbXBsYXRlLnRpdGxlXTtcclxuICAgIHRoaXMuaW5uZXJGb3JtQXJyYXkucmVtb3ZlQXQodGVtcGxhdGUudGl0bGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbGxlY3Rpb25JdGVtRHJvcHBlZCgkZXZlbnQ6IENka0RyYWdEcm9wPHt9Pikge1xyXG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9ICRldmVudC5wcmV2aW91c0luZGV4O1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gJGV2ZW50LmN1cnJlbnRJbmRleDtcclxuICAgIGNvbnN0IG1vdmVtZW50RGlyZWN0aW9uID0gY3VycmVudEluZGV4ID4gcHJldmlvdXNJbmRleCA/IDEgOiAtMTtcclxuXHJcbiAgICAvLyBNb3ZlIGluIEZvcm1BcnJheVxyXG4gICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gbW92ZSB0aGUgaXRlbSBpbiB0aGUgX3RlbXBsYXRlcyBvYmplY3RcclxuICAgIGNvbnN0IG1vdmVkQ29udHJvbCA9IHRoaXMuaW5uZXJGb3JtQXJyYXkuYXQocHJldmlvdXNJbmRleCk7XHJcbiAgICBmb3IgKGxldCBpID0gcHJldmlvdXNJbmRleDsgaSAqIG1vdmVtZW50RGlyZWN0aW9uIDwgY3VycmVudEluZGV4ICogbW92ZW1lbnREaXJlY3Rpb247IGkgPSBpICsgbW92ZW1lbnREaXJlY3Rpb24pIHtcclxuICAgICAgdGhpcy5pbm5lckZvcm1BcnJheS5zZXRDb250cm9sKGksIHRoaXMuaW5uZXJGb3JtQXJyYXkuYXQoaSArIG1vdmVtZW50RGlyZWN0aW9uKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlubmVyRm9ybUFycmF5LnNldENvbnRyb2woY3VycmVudEluZGV4LCBtb3ZlZENvbnRyb2wpO1xyXG5cclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRoaXMgaGVscGVyIHR5cGUgY29udmVydHMgYSBQcm9wZXJ0eTxYLCBZLCBaPiB0byBhbiBPcHRpb25zSXRlbUR0bzxYLCBZLCBaPiBhbmQgcHJlc2VydmVzIHRoZSBnZW5lcmljIHBhcmFtZXRlcnMuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBFeHRyYWN0R2VuZXJpY09wdGlvbnNJdGVtVHlwZTxUUHJvcGVydHk+ID0gVFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8aW5mZXIgWCwgaW5mZXIgWSwgaW5mZXIgWj4gPyBPcHRpb25zSXRlbUR0bzxYLCBZLCBaPiA6IG5ldmVyXHJcbmV4cG9ydCB0eXBlIEV4dHJhY3RHZW5lcmljT3B0aW9uc1NlbGVjdGVkVmFsdWVzVHlwZTxUUHJvcGVydHk+ID0gVFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8aW5mZXIgWCwgaW5mZXIgWSwgaW5mZXIgWj4gPyBPcHRpb25zPFgsIFksIFo+W1wic2VsZWN0ZWRWYWx1ZXNcIl0gOiBuZXZlclxyXG5leHBvcnQgdHlwZSBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT4gPSBUUHJvcGVydHkgZXh0ZW5kcyBQcm9wZXJ0eTxpbmZlciBYLCBpbmZlciBZLCBpbmZlciBaPiA/IFggOiBuZXZlclxyXG5cclxuLyoqXHJcbiAqIEEgZHJvcGRvd24gdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkuXHJcbiAqIFRoZSBkcm9wZG93biBzdXBwb3J0cyBzZWFyY2hpbmcgdGhyb3VnaCBhIFJFU1RXb3JsZCBsaXN0IGVuZHBvaW50IG9uIHRoZSBiYWNrZW5kIGlmIHRoZSBgbGlua2Agb2YgdGhlIG9wdGlvbnMgaXMgc2V0LlxyXG4gKiBPdGhlcndpc2UgdGhlIGRyb3Bkb3duIHdpbGwgdXNlIHRoZSBgaW5saW5lYCBvZiB0aGUgb3B0aW9ucy5cclxuICogQHJlbWFya3MgSXQgaXMgYWR2aXNlZCB0byB1c2UgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQgPHJ3LWlucHV0PiBhbmQgY29udHJvbCB0aGUgcmVuZGVyZWQgaW5wdXRzIHdpdGggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eVxyXG4gKiBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMgY29tcG9uZW50IGRpcmVjdGx5LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1pbnB1dC1kcm9wZG93bicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbnB1dC1kcm9wZG93bi9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbnB1dC1kcm9wZG93bi9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LmNzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZElucHV0RHJvcGRvd25Db21wb25lbnQ8VFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8U2ltcGxlVmFsdWUsIHN0cmluZywgc3RyaW5nPiAmIHsgb3B0aW9uczogT3B0aW9uczxTaW1wbGVWYWx1ZSwgc3RyaW5nLCBzdHJpbmc+IH0sIFRPcHRpb25zSXRlbSBleHRlbmRzIEV4dHJhY3RHZW5lcmljT3B0aW9uc0l0ZW1UeXBlPFRQcm9wZXJ0eT4gPSBFeHRyYWN0R2VuZXJpY09wdGlvbnNJdGVtVHlwZTxUUHJvcGVydHk+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBwcm9wZXJ0eSE6IFRQcm9wZXJ0eTtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBhcGlOYW1lITogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbGFiZWwgZm9yIHRoZSBnaXZlbiBpdGVtLlxyXG4gICAqIFRoZSBkZWZhdWx0IHJldHVybnMgdGhlIHByb21wdCBhbmQgb3B0aW9uYWxseSB0aGUgdmFsdWUgaW4gYnJhY2tldHMuXHJcbiAgICogVGhlIHZhbHVlIGluIGJyYWNrZXRzIHdpbGwgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGBjb2xzYCBmaWVsZCBvZiB0aGUgcHJvcGVydHkgaXMgdW5kZWZpbmVkIG9yIGdyZWF0ZXIgdGhhbiAxLlxyXG4gICAqIE92ZXJ3cml0ZSB0aGlzIGZ1bmN0aW9uIHRvIGNoYW5nZSB0aGUgbGFiZWwuXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gZ2V0IHRoZSBsYWJlbCBmb3IuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBnZXRMYWJlbDogKGl0ZW06IFRPcHRpb25zSXRlbSkgPT4gc3RyaW5nID0gdGhpcy5nZXRMYWJlbEludGVybmFsO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdG9vbHRpcCBmb3IgdGhlIGdpdmVuIGl0ZW0uXHJcbiAgICogVGhlIGRlZmF1bHQgcmV0dXJucyBhbGwgcHJvcGVydGllcyBvZiB0aGUgaXRlbSBleGNlcHQgdGhlIG9uZXMgdGhhdCBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmUgb3IgdGhlIG9uZXMgdGhhdCBhcmUgaW4gdGhlIGxpc3Qgb2YgZGVmYXVsdCBwcm9wZXJ0aWVzIHRvIGV4Y2x1ZGUuXHJcbiAgICogVGhlIGRlZmF1bHQgcHJvcGVydGllcyB0byBleGNsdWRlIGFyZTogY3JlYXRlZEF0LCBjcmVhdGVkQnksIGxhc3RDaGFuZ2VkQXQsIGxhc3RDaGFuZ2VkQnksIHRpbWVzdGFtcCwgcHJvbXB0RmllbGQsIHZhbHVlRmllbGQuXHJcbiAgICogT3ZlcndyaXRlIHRoaXMgZnVuY3Rpb24gdG8gY2hhbmdlIHRoZSB0b29sdGlwLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRvIGdldCB0aGUgbGFiZWwgZm9yLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0VG9vbHRpcDogKGl0ZW06IFRPcHRpb25zSXRlbSkgPT4gc3RyaW5nID0gdGhpcy5nZXRUb29sdGlwSW50ZXJuYWw7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2lucHV0T3B0aW9uc1NpbmdsZScsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGlucHV0T3B0aW9uc1NpbmdsZVJlZj86IFRlbXBsYXRlUmVmPFByb3BlcnR5VGVtcGxhdGVDb250ZXh0PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXRPcHRpb25zTXVsdGlwbGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBpbnB1dE9wdGlvbnNNdWx0aXBsZVJlZj86IFRlbXBsYXRlUmVmPFByb3BlcnR5VGVtcGxhdGVDb250ZXh0PjtcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wZG93bkNoYW5nZUV2ZW50PFRPcHRpb25zSXRlbT4+KCk7XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sITogQWJzdHJhY3RDb250cm9sPEV4dHJhY3RHZW5lcmljT3B0aW9uc1NlbGVjdGVkVmFsdWVzVHlwZTxUUHJvcGVydHk+PjtcclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyVmFsdWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBnZXQgZmlsdGVyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZhbHVlRmllbGQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Lm9wdGlvbnMudmFsdWVGaWVsZCA/PyBcInZhbHVlXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHByb21wdEZpZWxkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eS5vcHRpb25zLnByb21wdEZpZWxkID8/IFwicHJvbXB0XCI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NsaWVudHM6IFJlc3RXb3JsZENsaWVudENvbGxlY3Rpb24sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLl9jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwPGFueT47XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1t0aGlzLnByb3BlcnR5Lm5hbWVdIGFzIEFic3RyYWN0Q29udHJvbDxFeHRyYWN0R2VuZXJpY09wdGlvbnNTZWxlY3RlZFZhbHVlc1R5cGU8VFByb3BlcnR5Pj47XHJcbiAgICBhd2FpdCB0aGlzLnNldEluaXRpYWxTZWxlY3RlZE9wdGlvbnNFbGVtZW50Rm9yUHJvcGVydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRWYWx1ZShpdGVtOiBUT3B0aW9uc0l0ZW0pOiBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT4ge1xyXG4gICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCB8fCBpdGVtID09PSBudWxsIHx8ICFpdGVtLmhhc093blByb3BlcnR5KHRoaXMudmFsdWVGaWVsZCkpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGl0ZW0gZG9lcyBub3QgaGF2ZSBhIHByb3BlcnR5ICR7dGhpcy52YWx1ZUZpZWxkfS5gKTtcclxuXHJcbiAgICByZXR1cm4gaXRlbVt0aGlzLnZhbHVlRmllbGQgYXMga2V5b2YgVE9wdGlvbnNJdGVtXSBhcyBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UHJvbXB0KGl0ZW06IFRPcHRpb25zSXRlbSk6IHN0cmluZyB7XHJcbiAgICBpZiAoaXRlbSA9PT0gdW5kZWZpbmVkIHx8IGl0ZW0gPT09IG51bGwgfHwgIWl0ZW0uaGFzT3duUHJvcGVydHkodGhpcy5wcm9tcHRGaWVsZCkpXHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgIHJldHVybiBpdGVtW3RoaXMucHJvbXB0RmllbGQgYXMga2V5b2YgVE9wdGlvbnNJdGVtXSBhcyBzdHJpbmc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGFiZWxJbnRlcm5hbChpdGVtOiBUT3B0aW9uc0l0ZW0pOiBzdHJpbmcge1xyXG4gICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCB8fCBpdGVtID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICBsZXQgbGFiZWwgPSB0aGlzLmdldFByb21wdChpdGVtKTtcclxuICAgIGlmICh0aGlzLnByb3BlcnR5LmNvbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnByb3BlcnR5LmNvbHMgPiAxKVxyXG4gICAgICBsYWJlbCArPSBgICgke3RoaXMuZ2V0VmFsdWUoaXRlbSl9KWA7XHJcblxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUb29sdGlwSW50ZXJuYWwoaXRlbTogVE9wdGlvbnNJdGVtKTogc3RyaW5nIHtcclxuICAgIGlmIChpdGVtID09PSB1bmRlZmluZWQgfHwgaXRlbSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgY29uc3QgdG9vbHRpcCA9IE9iamVjdC5lbnRyaWVzKGl0ZW0pXHJcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhKGtleS5zdGFydHNXaXRoKCdfJykgfHwgWydjcmVhdGVkQXQnLCAnY3JlYXRlZEJ5JywgJ2xhc3RDaGFuZ2VkQXQnLCAnbGFzdENoYW5nZWRCeScsICd0aW1lc3RhbXAnLCB0aGlzLnByb21wdEZpZWxkLCB0aGlzLnZhbHVlRmllbGRdLmluY2x1ZGVzKGtleSkpKVxyXG4gICAgICAucmVkdWNlKChwcmV2LCBba2V5LCB2YWx1ZV0sIGluZGV4KSA9PiBgJHtwcmV2fSR7aW5kZXggPT09IDAgPyAnJyA6ICdcXG4nfSR7a2V5fTogJHtSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50Lmpzb25TdHJpbmdpZnlXaXRoRWxpcHNpcyh2YWx1ZSl9YCwgJycpO1xyXG5cclxuICAgIHJldHVybiB0b29sdGlwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEl0ZW1CeVZhbHVlKHZhbHVlOiBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT4pOiBUT3B0aW9uc0l0ZW0ge1xyXG4gICAgaWYodGhpcy5wcm9wZXJ0eS5vcHRpb25zLmlubGluZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucHJvcGVydHkub3B0aW9ucy5pbmxpbmUgPT09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3BlcnR5IGRvZXMgbm90IGhhdmUgYW55IGlubGluZSBvcHRpb25zLicpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Lm9wdGlvbnMuaW5saW5lLmZpbmQoaXRlbSA9PiB0aGlzLmdldFZhbHVlKGl0ZW0gYXMgVE9wdGlvbnNJdGVtKSA9PT0gdmFsdWUpIGFzIFRPcHRpb25zSXRlbTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVCeVZhbHVlKHZhbHVlOiBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9mb3JtQ29udHJvbC52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlID09PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5fZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGZvcm1WYWx1ZS5maWx0ZXIoaSA9PiBpICE9PSB2YWx1ZSkgYXMgRXh0cmFjdEdlbmVyaWNPcHRpb25zU2VsZWN0ZWRWYWx1ZXNUeXBlPFRQcm9wZXJ0eT47XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25PcHRpb25zRmlsdGVyZWQgPSBkZWJvdW5jZSh0aGlzLm9uT3B0aW9uc0ZpbHRlcmVkSW50ZXJuYWwsIDIwMCk7XHJcblxyXG4gIHB1YmxpYyBhc3luYyBvbk9wdGlvbnNGaWx0ZXJlZEludGVybmFsKGV2ZW50OiB7IG9yaWdpbmFsRXZlbnQ6IHVua25vd247IGZpbHRlcjogc3RyaW5nIHwgbnVsbCB9KSB7XHJcbiAgICB0aGlzLl9sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wZXJ0eT8ub3B0aW9ucztcclxuXHJcbiAgICAgIGlmICghb3B0aW9ucz8ubGluaz8uaHJlZiB8fCAhZXZlbnQuZmlsdGVyIHx8IGV2ZW50LmZpbHRlciA9PT0gJycpXHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgbGV0IGZpbHRlciA9IGBjb250YWlucygke29wdGlvbnMucHJvbXB0RmllbGR9LCAnJHtldmVudC5maWx0ZXJ9JylgO1xyXG4gICAgICBpZiAob3B0aW9ucy52YWx1ZUZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSAnaWQnICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KGV2ZW50LmZpbHRlcikpKVxyXG4gICAgICAgIGZpbHRlciA9IGAoJHtvcHRpb25zLnZhbHVlRmllbGR9IGVxICR7ZXZlbnQuZmlsdGVyfSkgIG9yICgke2ZpbHRlcn0pYDtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuU2V0SW5saW5lT3B0aW9uc0Zyb21GaWx0ZXIoZmlsdGVyLCBldmVudC5maWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9wdGlvbnNDaGFuZ2VkKGV2ZW50OiBEcm9wZG93bkNoYW5nZUV2ZW50PFRPcHRpb25zSXRlbT4pIHtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldEluaXRpYWxTZWxlY3RlZE9wdGlvbnNFbGVtZW50Rm9yUHJvcGVydHkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wZXJ0eS5vcHRpb25zO1xyXG5cclxuICAgIGlmICghb3B0aW9ucy5saW5rPy5ocmVmIHx8ICFvcHRpb25zLnNlbGVjdGVkVmFsdWVzKSB7XHJcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zLmlubGluZSkgfHwgb3B0aW9ucy5pbmxpbmUubGVuZ3RoID09PSAwKVxyXG4gICAgICAgIG9wdGlvbnMuaW5saW5lID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXIgPSBgJHtvcHRpb25zLnZhbHVlRmllbGR9IGluICgke29wdGlvbnMuc2VsZWN0ZWRWYWx1ZXN9KWA7XHJcbiAgICBhd2FpdCB0aGlzLlNldElubGluZU9wdGlvbnNGcm9tRmlsdGVyKGZpbHRlciwgXCJcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIFNldElubGluZU9wdGlvbnNGcm9tRmlsdGVyKGZpbHRlcjogc3RyaW5nLCBldmVudEZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wZXJ0eS5vcHRpb25zO1xyXG4gICAgaWYgKCFvcHRpb25zLmxpbms/LmhyZWYpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3BlcnR5IGRvZXMgbm90IGhhdmUgYSBsaW5rIGhyZWYuJyk7XHJcblxyXG4gICAgY29uc3QgdGVtcGxhdGVkVXJpID0gb3B0aW9ucy5saW5rLmhyZWY7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCkuZ2V0TGlzdEJ5VXJpPFRPcHRpb25zSXRlbT4odGVtcGxhdGVkVXJpLCB7ICRmaWx0ZXI6IGZpbHRlciwgJHRvcDogMTAgfSk7XHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpIHtcclxuICAgICAgY29uc3QgbWVzc2FnZSA9IGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIHRoZSBpbml0aWFsIHNlbGVjdGVkIGl0ZW1zIGZvciB0aGUgcHJvcGVydHkgJHt0aGlzLnByb3BlcnR5Lm5hbWV9LmA7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3InLCBkZXRhaWw6IG1lc3NhZ2UsIGRhdGE6IHJlc3BvbnNlLCBzdGlja3k6IHRydWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbXMgPSByZXNwb25zZS5ib2R5IS5fZW1iZWRkZWQuaXRlbXMgYXMgUmVzb3VyY2VPZkR0bzxUT3B0aW9uc0l0ZW0+W107XHJcbiAgICBjb25zdCBuZXdJdGVtcyA9IHRoaXMuY29tYmluZUlubGluZVdpdGhTZWxlY3RlZChpdGVtcyk7XHJcbiAgICBvcHRpb25zLmlubGluZSA9IG5ld0l0ZW1zO1xyXG5cclxuICAgIC8vIFRoZSBtdWx0aXNlbGVjdCBjb21wb25lbnQgZG9lcyBub3QgdXBkYXRlIHRoZSBvcHRpb25zIHdoZW4gdGhlIGlubGluZSBvcHRpb25zIGFyZSB1cGRhdGVkLCBzbyB3ZSBuZWVkIHRvIHRyaWdnZXIgYSBjaGFuZ2UgZGV0ZWN0aW9uLlxyXG4gICAgdGhpcy5fZmlsdGVyVmFsdWUgPSBldmVudEZpbHRlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tYmluZUlubGluZVdpdGhTZWxlY3RlZChpdGVtczogUmVzb3VyY2VPZkR0bzxUT3B0aW9uc0l0ZW0+W10pOiBUT3B0aW9uc0l0ZW1bXSB7XHJcbiAgICBjb25zdCBvbGRJbmxpbmUgPSB0aGlzLnByb3BlcnR5Lm9wdGlvbnMuaW5saW5lIGFzIFJlc291cmNlT2ZEdG88VE9wdGlvbnNJdGVtPltdO1xyXG4gICAgaWYgKCFvbGRJbmxpbmUpXHJcbiAgICAgIHJldHVybiBpdGVtcztcclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZXMoKTtcclxuICAgIGNvbnN0IGl0ZW1zVG9LZWVwID0gb2xkSW5saW5lLmZpbHRlcihpID0+IHNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKHRoaXMuZ2V0VmFsdWUoaSBhcyBUT3B0aW9uc0l0ZW0pKSk7XHJcbiAgICBjb25zdCBuZXdJdGVtcyA9IGl0ZW1zLmNvbmNhdChpdGVtc1RvS2VlcC5maWx0ZXIoaSA9PiAhaXRlbXMuaW5jbHVkZXMoaSkpKTtcclxuXHJcbiAgICByZXR1cm4gbmV3SXRlbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlbGVjdGVkVmFsdWVzKCk6IHVua25vd25bXSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxyXG4gICAgICByZXR1cm4gdmFsdWVcclxuXHJcbiAgICByZXR1cm4gW3ZhbHVlXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2xpZW50KCk6IFJlc3RXb3JsZENsaWVudCB7XHJcbiAgICBpZiAoIXRoaXMuYXBpTmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZ2V0IGEgY2xpZW50LCBiZWNhdXNlIHRoZSBhcGlOYW1lIGlzIG5vdCBzZXQuJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudHMuZ2V0Q2xpZW50KHRoaXMuYXBpTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBqc29uU3RyaW5naWZ5V2l0aEVsaXBzaXModmFsdWU6IHVua25vd24pIHtcclxuICAgIGNvbnN0IG1heExlbmd0aCA9IDIwMDtcclxuICAgIGNvbnN0IGVuZCA9IDEwO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBtYXhMZW5ndGggLSBlbmQgLSAyO1xyXG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgIGNvbnN0IHNob3J0ZW5lZCA9IGpzb24ubGVuZ3RoID4gbWF4TGVuZ3RoID8ganNvbi5zdWJzdHJpbmcoMCwgc3RhcnQpICsgJ+KApicgKyBqc29uLnN1YnN0cmluZyhqc29uLmxlbmd0aCAtIGVuZCkgOiBqc29uO1xyXG5cclxuICAgIHJldHVybiBzaG9ydGVuZWQ7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQSBjb21wbGV4IG9iamVjdCB3aXRoIG11bHRpcGxlIHByb3BlcnRpZXMgdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkuXHJcbiAqIFRoZSBvYmplY3QgY2FuIGFsc28gYmUgbmVzdGVkLlxyXG4gKiBAcmVtYXJrcyBJdCBpcyBhZHZpc2VkIHRvIHVzZSBSZXN0V29ybGRJbnB1dENvbXBvbmVudCA8cnctaW5wdXQ+IGFuZCBjb250cm9sIHRoZSByZW5kZXJlZCBpbnB1dHMgd2l0aCB0aGUgcGFzc2VkIGluIHByb3BlcnR5XHJcbiAqIGluc3RlYWQgb2YgdXNpbmcgdGhpcyBjb21wb25lbnQgZGlyZWN0bHkuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWlucHV0LW9iamVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbnB1dC1vYmplY3QvcmVzdHdvcmxkLWlucHV0LW9iamVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWlucHV0LW9iamVjdC9yZXN0d29ybGQtaW5wdXQtb2JqZWN0LmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dE9iamVjdENvbXBvbmVudDxUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjsgfT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHByb3BlcnR5ITogUHJvcGVydHk8bnVsbCwgbmV2ZXIsIG5ldmVyPiAmIHsgX3RlbXBsYXRlczogeyBkZWZhdWx0OiBUZW1wbGF0ZSB9IH07XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXRPYmplY3QnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBpbnB1dE9iamVjdFJlZj86IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG5cclxuICBwcml2YXRlIF9pbm5lckZvcm1Hcm91cD86IEZvcm1Hcm91cDxUPjtcclxuXHJcbiAgcHVibGljIGdldCBpbm5lckZvcm1Hcm91cCgpIHtcclxuICAgIGlmICh0aGlzLl9pbm5lckZvcm1Hcm91cCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtR3JvdXAgaXMgbm90IHNldC5cIik7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2lubmVyRm9ybUdyb3VwO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuX2NvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA8YW55PjtcclxuICAgIHRoaXMuX2lubmVyRm9ybUdyb3VwID0gZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMucHJvcGVydHkubmFtZV0gYXMgRm9ybUdyb3VwPFQ+O1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgc2ltcGxlIGlucHV0IGVsZW1lbnQsIGxpa2UgYSBzdHJpbmcsIGEgbnVtYmVyIG9yIGEgRGF0ZSB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwcm9wZXJ0eS5cclxuICogQHJlbWFya3MgSXQgaXMgYWR2aXNlZCB0byB1c2UgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQgPHJ3LWlucHV0PiBhbmQgY29udHJvbCB0aGUgcmVuZGVyZWQgaW5wdXRzIHdpdGggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eVxyXG4gKiBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMgY29tcG9uZW50IGRpcmVjdGx5LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1pbnB1dC1zaW1wbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtaW5wdXQtc2ltcGxlL3Jlc3R3b3JsZC1pbnB1dC1zaW1wbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbnB1dC1zaW1wbGUvcmVzdHdvcmxkLWlucHV0LXNpbXBsZS5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQ8VFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8U2ltcGxlVmFsdWUsIHN0cmluZywgc3RyaW5nPj4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHByb3BlcnR5ITogVFByb3BlcnR5O1xyXG5cclxuICBwdWJsaWMgZ2V0IFByb3BlcnR5VHlwZSgpIHtcclxuICAgIHJldHVybiBQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGF0ZUZvcm1hdCA9IG5ldyBEYXRlKDMzMzMsIDEwLCAyMikgLy8gbW9udGhzIHN0YXJ0IGF0IDAgaW4gSlNcclxuICAgIC50b0xvY2FsZURhdGVTdHJpbmcoKVxyXG4gICAgLnJlcGxhY2UoXCIyMlwiLCBcImRkXCIpXHJcbiAgICAucmVwbGFjZShcIjExXCIsIFwibW1cIilcclxuICAgIC5yZXBsYWNlKFwiMzMzM1wiLCBcInl5XCIpXHJcbiAgICAucmVwbGFjZShcIjMzXCIsIFwieVwiKTtcclxuXHJcbiAgcHVibGljIGdldCBkYXRlRm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQuX2RhdGVGb3JtYXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdGltZUZvcm1hdCA9IG5ldyBEYXRlKDEsIDEsIDEsIDIyLCAzMywgNDQpXHJcbiAgICAudG9Mb2NhbGVUaW1lU3RyaW5nKClcclxuICAgIC5yZXBsYWNlKFwiMjJcIiwgXCJoaFwiKVxyXG4gICAgLnJlcGxhY2UoXCIzM1wiLCBcIm1tXCIpXHJcbiAgICAucmVwbGFjZShcIjQ0XCIsIFwic3NcIik7XHJcblxyXG4gIHB1YmxpYyBnZXQgdGltZUZvcm1hdCgpIHtcclxuICAgIHJldHVybiBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudC5fdGltZUZvcm1hdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sPzogRm9ybUNvbnRyb2w8U2ltcGxlVmFsdWUgfCBTaW1wbGVWYWx1ZVtdPjtcclxuXHJcbiAgcHVibGljIGdldCBmb3JtQ29udHJvbCgpIHtcclxuICAgIGlmICh0aGlzLl9mb3JtQ29udHJvbCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtR3JvdXAgaXMgbm90IHNldC5cIik7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVdpdGhJbWFnZSgpIHtcclxuICAgIHJldHVybiBQcm9wZXJ0eVdpdGhJbWFnZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lclxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLl9jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwPGFueT47XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1t0aGlzLnByb3BlcnR5Lm5hbWVdIGFzIEZvcm1Db250cm9sPFNpbXBsZVZhbHVlIHwgU2ltcGxlVmFsdWVbXT47XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQSBjb2xsZWN0aW9uIG9mIHJ3LWZvcm0tZWxlbWVudHMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gYSB0ZW1wbGF0ZS5cclxuICogRG9lcyBub3QgaGF2ZSBhbnkgYnV0dG9ucyBvbiBpdHMgb3duLlxyXG4gKiBJZiB5b3Ugd2FudCBidXR0b25zLCB1c2UgUmVzdFdvcmxkRm9ybSA8cnctZm9ybT4uXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWlucHV0LXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkSW5wdXRUZW1wbGF0ZUNvbXBvbmVudDxUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjsgfT4ge1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICB0ZW1wbGF0ZSE6IFRlbXBsYXRlO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJncmlkIGZpZWxkXCI+XHJcbiAgICA8cnctbGFiZWwgW3Byb3BlcnR5XT1cInByb3BlcnR5XCIgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTIgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj48L3J3LWxhYmVsPlxyXG4gICAgPHJ3LWlucHV0IFthcGlOYW1lXT1cImFwaU5hbWVcIiBbcHJvcGVydHldPVwicHJvcGVydHlcIiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtMTBcIj48L3J3LWlucHV0PlxyXG48L2Rpdj5cclxuIiwiPHJ3LWlucHV0LWRyb3Bkb3duICpuZ0lmPVwicHJvcGVydHkub3B0aW9uc1wiIFthcGlOYW1lXT1cImFwaU5hbWVcIiBbcHJvcGVydHldPVwiJGFueShwcm9wZXJ0eSlcIj48L3J3LWlucHV0LWRyb3Bkb3duPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwcm9wZXJ0eS5vcHRpb25zXCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS50eXBlXCI+XHJcbiAgICAgICAgPHJ3LWlucHV0LW9iamVjdCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLk9iamVjdFwiIFthcGlOYW1lXT1cImFwaU5hbWVcIiBbcHJvcGVydHldPVwiJGFueShwcm9wZXJ0eSlcIj48L3J3LWlucHV0LW9iamVjdD5cclxuICAgICAgICA8cnctaW5wdXQtY29sbGVjdGlvbiAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkNvbGxlY3Rpb25cIiBbYXBpTmFtZV09XCJhcGlOYW1lXCIgW3Byb3BlcnR5XT1cIiRhbnkocHJvcGVydHkpXCI+PC9ydy1pbnB1dC1jb2xsZWN0aW9uPlxyXG4gICAgICAgIDxydy1pbnB1dC1zaW1wbGUgKm5nU3dpdGNoRGVmYXVsdCBbcHJvcGVydHldPVwicHJvcGVydHlcIj48L3J3LWlucHV0LXNpbXBsZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxydy12YWxpZGF0aW9uLWVycm9ycyBbcHJvcGVydHldPVwicHJvcGVydHlcIj48L3J3LXZhbGlkYXRpb24tZXJyb3JzPlxyXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnJhY2VcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJjb2xsZWN0aW9uSXRlbURyb3BwZWQoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXNcIiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgY2RrRHJhZz5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWdyaXAtbGluZXNcIiBjZGtEcmFnSGFuZGxlPjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmFjZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgIDxydy1pbnB1dC10ZW1wbGF0ZSBbZm9ybUdyb3VwXT1cImlubmVyRm9ybUFycmF5LmNvbnRyb2xzW3RlbXBsYXRlLnRpdGxlIV1cIiBbdGVtcGxhdGVdPVwiZGVmYXVsdFRlbXBsYXRlXCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiIGNsYXNzPVwidy1mdWxsXCI+PC9ydy1pbnB1dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cImZhcyBmYS10cmFzaFwiIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tZGFuZ2VyIG1sLTIgbWItM1wiIChjbGljayk9XCJkZWxldGVJdGVtRnJvbUNvbGxlY3Rpb24odGVtcGxhdGUpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgdy1mdWxsXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cImZhcyBmYS1wbHVzXCIgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1pbmZvXCIgKGNsaWNrKT1cImFkZE5ld0l0ZW1Ub0NvbGxlY3Rpb24oKVwiPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0T3B0aW9uc1NpbmdsZSBsZXQtcHJvcGVydHk9XCJwcm9wZXJ0eVwiIGxldC10ZW1wbGF0ZT1cInRlbXBsYXRlXCI+XG4gICAgPHAtZHJvcGRvd25cbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiXG4gICAgICBbaWRdPVwicHJvcGVydHkubmFtZVwiXG4gICAgICBbb3B0aW9uc109XCJwcm9wZXJ0eS5vcHRpb25zLmlubGluZVwiXG4gICAgICBbZmlsdGVyQnldPVwicHJvbXB0RmllbGQgKyAnLCcgKyB2YWx1ZUZpZWxkXCJcbiAgICAgIFtvcHRpb25MYWJlbF09XCJwcm9tcHRGaWVsZFwiXG4gICAgICBbb3B0aW9uVmFsdWVdPVwidmFsdWVGaWVsZFwiXG4gICAgICBbcmVhZG9ubHldPVwicHJvcGVydHkucmVhZE9ubHlcIlxuICAgICAgW3JlcXVpcmVkXT1cInByb3BlcnR5LnJlcXVpcmVkIHx8IHByb3BlcnR5Lm9wdGlvbnMubWluSXRlbXMgPiAwXCJcbiAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXG4gICAgICBbZmlsdGVyVmFsdWVdPVwiZmlsdGVyVmFsdWVcIlxuICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIlxuICAgICAgW3Nob3dDbGVhcl09XCIhcHJvcGVydHkucmVxdWlyZWQgfHwgcHJvcGVydHkub3B0aW9ucy5taW5JdGVtcyA8PSAwXCJcbiAgICAgIChvbkZpbHRlcik9XCJvbk9wdGlvbnNGaWx0ZXJlZCgkZXZlbnQpXCJcbiAgICAgIChvbkNoYW5nZSk9XCJvbk9wdGlvbnNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgc3R5bGVDbGFzcz1cInctZnVsbFwiXG4gICAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImxvYWRpbmcgPyAnbG9hZGluZycgOiAnJ1wiXG4gICAgICBbZmlsdGVyUGxhY2Vob2xkZXJdPVwicHJvcGVydHk/Lm9wdGlvbnM/Lmxpbms/LmhyZWYgPyAnc2VhcmNoIGZvciBtb3JlIHJlc3VsdHMnIDogJydcIlxuICAgICAgW2VtcHR5RmlsdGVyTWVzc2FnZV09XCJsb2FkaW5nID8gJ0xvYWRpbmcuLi4nIDogJydcIlxuICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxuICAgICAgICAgIDxzcGFuIFtwVG9vbHRpcF09XCJnZXRUb29sdGlwKGl0ZW0pXCI+e3tnZXRMYWJlbChpdGVtKX19PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxuICAgICAgICAgIDxzcGFuIFtwVG9vbHRpcF09XCJnZXRUb29sdGlwKGl0ZW0pXCI+e3tnZXRMYWJlbChpdGVtKX19PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyaWNvblwiPlxuICAgICAgICAgIDxTZWFyY2hJY29uICpuZ0lmPVwiIWxvYWRpbmdcIj48L1NlYXJjaEljb24+XG4gICAgICAgICAgPFNwaW5uZXJJY29uICpuZ0lmPVwibG9hZGluZ1wiIFtzcGluXT1cInRydWVcIj48L1NwaW5uZXJJY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC1kcm9wZG93bj5cbjwvbmctdGVtcGxhdGU+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIXByb3BlcnR5Lm9wdGlvbnMubWF4SXRlbXMgfHwgcHJvcGVydHkub3B0aW9ucy5tYXhJdGVtcyA9PSAxXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0T3B0aW9uc1NpbmdsZVJlZiA/PyBkZWZhdWx0SW5wdXRPcHRpb25zU2luZ2xlOyBjb250ZXh0OiB7IHByb3BlcnR5OiBwcm9wZXJ0eSwgYXBpTmFtZTogYXBpTmFtZSB9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRPcHRpb25zTXVsdGlwbGUgbGV0LXByb3BlcnR5PVwicHJvcGVydHlcIiBsZXQtdGVtcGxhdGU9XCJ0ZW1wbGF0ZVwiPlxuICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIlxuICAgICAgW2lkXT1cInByb3BlcnR5Lm5hbWVcIlxuICAgICAgW29wdGlvbnNdPVwicHJvcGVydHkub3B0aW9ucy5pbmxpbmVcIlxuICAgICAgW2ZpbHRlckJ5XT1cInByb21wdEZpZWxkICsgJywnICsgdmFsdWVGaWVsZFwiXG4gICAgICBbb3B0aW9uTGFiZWxdPVwicHJvbXB0RmllbGRcIlxuICAgICAgW29wdGlvblZhbHVlXT1cInZhbHVlRmllbGRcIlxuICAgICAgW3JlYWRvbmx5XT1cInByb3BlcnR5LnJlYWRPbmx5XCJcbiAgICAgIFtyZXF1aXJlZF09XCJwcm9wZXJ0eS5yZXF1aXJlZCB8fCBwcm9wZXJ0eS5vcHRpb25zLm1pbkl0ZW1zID4gMFwiXG4gICAgICBbZmlsdGVyXT1cInRydWVcIlxuICAgICAgW2ZpbHRlclZhbHVlXT1cImZpbHRlclZhbHVlXCJcbiAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXG4gICAgICBbc2hvd1RvZ2dsZUFsbF09XCJ0cnVlXCJcbiAgICAgIChvbkZpbHRlcik9XCJvbk9wdGlvbnNGaWx0ZXJlZCgkZXZlbnQpXCJcbiAgICAgIChvbkNoYW5nZSk9XCJvbk9wdGlvbnNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgc3R5bGVDbGFzcz1cInctZnVsbFwiXG4gICAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImxvYWRpbmcgPyAnbG9hZGluZycgOiAnJ1wiXG4gICAgICBbZmlsdGVyUGxhY2VIb2xkZXJdPVwicHJvcGVydHk/Lm9wdGlvbnM/Lmxpbms/LmhyZWYgPyAnc2VhcmNoIGZvciBtb3JlIHJlc3VsdHMnIDogJydcIlxuICAgICAgW2VtcHR5RmlsdGVyTWVzc2FnZV09XCJsb2FkaW5nID8gJ0xvYWRpbmcuLi4nIDogJydcIlxuICAgICAgW3NlbGVjdGlvbkxpbWl0XT1cInByb3BlcnR5Lm9wdGlvbnMubWF4SXRlbXNcIlxuICAgICAgZGlzcGxheT1cImNoaXBcIlxuICAgID5cbiAgICA8bmctdGVtcGxhdGUgbGV0LXZhbHVlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbXNcIj5cbiAgICAgIDxwLWNoaXBcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0VG9vbHRpcChnZXRJdGVtQnlWYWx1ZShpdGVtKSlcIlxuICAgICAgICBbbGFiZWxdPVwiZ2V0TGFiZWwoZ2V0SXRlbUJ5VmFsdWUoaXRlbSkpXCJcbiAgICAgICAgW3JlbW92YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgKG9uUmVtb3ZlKT1cInJlbW92ZUJ5VmFsdWUoaXRlbSlcIlxuICAgICAgPlxuICAgICAgPC9wLWNoaXA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxuICAgICAgICA8c3BhbiBbcFRvb2x0aXBdPVwiZ2V0VG9vbHRpcChpdGVtKVwiPnt7Z2V0TGFiZWwoaXRlbSl9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJpY29uXCI+XG4gICAgICA8U2VhcmNoSWNvbiAqbmdJZj1cIiFsb2FkaW5nXCI+PC9TZWFyY2hJY29uPlxuICAgICAgPFNwaW5uZXJJY29uICpuZ0lmPVwibG9hZGluZ1wiIFtzcGluXT1cInRydWVcIj48L1NwaW5uZXJJY29uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC1tdWx0aVNlbGVjdD5cbjwvbmctdGVtcGxhdGU+XG48bmctY29udGFpbmVyICpuZ0lmPVwiKHByb3BlcnR5Lm9wdGlvbnMubWF4SXRlbXMgPz8gMCkgPiAxXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0T3B0aW9uc011bHRpcGxlUmVmID8/IGRlZmF1bHRJbnB1dE9wdGlvbnNNdWx0aXBsZTsgY29udGV4dDogeyBwcm9wZXJ0eTogcHJvcGVydHksIGFwaU5hbWU6IGFwaU5hbWUgfVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iLCI8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dE9iamVjdCBsZXQtcHJvcGVydHk9XCJwcm9wZXJ0eVwiIGxldC10ZW1wbGF0ZT1cInRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJicmFjZVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgPHJ3LWlucHV0LXRlbXBsYXRlIFtmb3JtR3JvdXBdPVwiaW5uZXJGb3JtR3JvdXBcIiBbdGVtcGxhdGVdPVwicHJvcGVydHkuX3RlbXBsYXRlcy5kZWZhdWx0XCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiPjwvcnctaW5wdXQtdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0T2JqZWN0UmVmIHx8IGRlZmF1bHRJbnB1dE9iamVjdDsgY29udGV4dDogeyBwcm9wZXJ0eTogcHJvcGVydHksIGlubmVyRm9ybUdyb3VwOiBpbm5lckZvcm1Hcm91cCwgYXBpTmFtZTogYXBpTmFtZSB9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iLCI8ZGl2IFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS50eXBlXCI+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5IaWRkZW5cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJoaWRkZW5cIiBbdmFsdWVdPVwicHJvcGVydHkudmFsdWVcIiAvPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuVGV4dFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPHRleHRhcmVhICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuVGV4dGFyZWFcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHBJbnB1dFRleHRhcmVhIGNsYXNzPVwidy1mdWxsIHAtaW5wdXR0ZXh0YXJlYSBwLWlucHV0dGV4dCBwLWNvbXBvbmVudCBwLWVsZW1lbnRcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIFtjb2xzXT1cInByb3BlcnR5LmNvbHNcIiBbcm93c109XCJwcm9wZXJ0eS5yb3dzXCI+PC90ZXh0YXJlYT5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlNlYXJjaFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInNlYXJjaFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5UZWxcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJ0ZWxcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuVXJsXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwidXJsXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkVtYWlsXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwiZW1haWxcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuUGFzc3dvcmRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJwYXNzd29yZFwiIHBQYXNzd29yZCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDxwLWNhbGVuZGFyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRGF0ZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiIFtzaG93V2Vla109XCJ0cnVlXCIgW3Nob3dJY29uXT1cInRydWVcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtY2FsZW5kYXI+XG5cbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLk1vbnRoXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCIgW3Nob3dXZWVrXT1cImZhbHNlXCIgdmlldz1cIm1vbnRoXCIgW3Nob3dJY29uXT1cInRydWVcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtY2FsZW5kYXI+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5XZWVrXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwid2Vla1wiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlRpbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtkYXRlRm9ybWF0XT1cInRpbWVGb3JtYXRcIiBbc2hvd1RpbWVdPVwidHJ1ZVwiIFt0aW1lT25seV09XCJ0cnVlXCIgW3Nob3dXZWVrXT1cImZhbHNlXCIgW3Nob3dJY29uXT1cInRydWVcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtY2FsZW5kYXI+XG5cbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkRhdGV0aW1lTG9jYWxcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXRcIiBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93V2Vla109XCJmYWxzZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgPHAtaW5wdXROdW1iZXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5OdW1iZXJcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIG1vZGU9XCJkZWNpbWFsXCIgW3Nob3dCdXR0b25zXT1cIiFwcm9wZXJ0eS5yZWFkT25seVwiIGNsYXNzPVwidy1mdWxsXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCI+PC9wLWlucHV0TnVtYmVyPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuUmFuZ2VcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJyYW5nZVwiIFttaW5dPVwicHJvcGVydHkubWluXCIgW21heF09XCJwcm9wZXJ0eS5tYXhcIiBbc3RlcF09XCJwcm9wZXJ0eS5zdGVwXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkNvbG9yXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwiY29sb3JcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkJvb2xcIj5cbiAgICAgICAgPHAtY2hlY2tib3ggKm5nSWY9XCJwcm9wZXJ0eS5yZXF1aXJlZFwiIFtiaW5hcnldPVwidHJ1ZVwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgW3JlYWRvbmx5XT1cInByb3BlcnR5LnJlYWRPbmx5IVwiPjwvcC1jaGVja2JveD5cbiAgICAgICAgPHAtdHJpU3RhdGVDaGVja2JveCAqbmdJZj1cIiFwcm9wZXJ0eS5yZXF1aXJlZFwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgW3JlYWRvbmx5XT1cInByb3BlcnR5LnJlYWRPbmx5IVwiPjwvcC10cmlTdGF0ZUNoZWNrYm94PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHAtY2FsZW5kYXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5EYXRldGltZU9mZnNldFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dXZWVrXT1cImZhbHNlXCIgW3Nob3dJY29uXT1cInRydWVcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtY2FsZW5kYXI+XG5cbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkR1cmF0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJ0aW1lRm9ybWF0XCIgW3Nob3dUaW1lXT1cInRydWVcIiBbdGltZU9ubHldPVwidHJ1ZVwiIFtzaG93V2Vla109XCJmYWxzZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgPHJ3LWltYWdlICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuSW1hZ2VcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbcHJvcGVydHldPVwiJGFueShwcm9wZXJ0eSlcIj48L3J3LWltYWdlPlxuXG4gICAgPHJ3LWZpbGUgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5GaWxlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2ZpbGVOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbYWNjZXB0XT1cIiRhbnkocHJvcGVydHkucGxhY2Vob2xkZXIpXCI+PC9ydy1maWxlPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaERlZmF1bHQgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG48L2Rpdj5cbiIsIjxydy1mb3JtLWVsZW1lbnQgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHRlbXBsYXRlLnByb3BlcnRpZXNcIiBbcHJvcGVydHldPVwicHJvcGVydHlcIiBbYXBpTmFtZV09XCJhcGlOYW1lXCI+PC9ydy1mb3JtLWVsZW1lbnQ+Il19
|
|
487
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWlucHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXN0d29ybGQtaW5wdXRzL3Jlc3R3b3JsZC1pbnB1dHMudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtZm9ybS1lbGVtZW50L3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24vcmVzdHdvcmxkLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LW9iamVjdC9yZXN0d29ybGQtaW5wdXQtb2JqZWN0LmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LXNpbXBsZS9yZXN0d29ybGQtaW5wdXQtc2ltcGxlLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFtQixnQkFBZ0IsRUFBcUMsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxSCxPQUFPLEVBQWUsY0FBYyxFQUEyQixjQUFjLEVBQVksWUFBWSxFQUFrRSxNQUFNLHlCQUF5QixDQUFDO0FBTXZNLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvQzs7OztHQUlHO0FBT0gsTUFBTSxPQUFPLDZCQUE2QjtJQUV4QyxRQUFRLENBQWE7SUFHckIsT0FBTyxDQUFVO3VHQUxOLDZCQUE2QjsyRkFBN0IsNkJBQTZCLDZHQ3ZCMUMsdVBBSUEsOEVEd0NhLHVCQUF1QixzTUF2Qm5CLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7OzJGQUVwRSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUdaLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7OEJBSS9FLFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXpCLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7O0FBSTNCOzs7Ozs7R0FNRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsUUFBUSxDQUFhO0lBR3JCLE9BQU8sQ0FBVTtJQUVqQixJQUFXLFlBQVk7UUFDckIsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQWdELENBQUM7SUFDMUQsQ0FBQzt1R0FkVSx1QkFBdUI7MkZBQXZCLHVCQUF1QixzR0U1Q3BDLDhzQkFXQSxraEJGK0RhLGlDQUFpQyxzSEFtSGpDLCtCQUErQixxS0ErTy9CLDZCQUE2QixrSEEwQzdCLDZCQUE2QixpT0E1YXpCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7OzJGQUVwRSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UsVUFBVSxpQkFHTCxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDOzhCQUsvRSxRQUFRO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUl6QixPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFOztBQWEzQjs7Ozs7R0FLRztBQU9ILE1BQU0sT0FBTyxpQ0FBaUM7SUFrQ3pCO0lBQ0E7SUFDQTtJQWpDbkIsUUFBUSxDQUFrRDtJQUcxRCxPQUFPLENBQVU7SUFHakIsa0JBQWtCLENBQXdCO0lBR2xDLFVBQVUsR0FBcUIsRUFBRSxDQUFDO0lBQzFDLElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVPLGdCQUFnQixDQUFZO0lBQ3BDLElBQVcsZUFBZTtRQUN4QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUVoRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRU8sZUFBZSxDQUEyQjtJQUNsRCxJQUFXLGNBQWM7UUFDdkIsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLFNBQVM7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFDbUIsaUJBQW1DLEVBQ25DLFlBQXlCLEVBQ3pCLGtCQUFxQztRQUZyQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7SUFFeEQsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBeUIsQ0FBQztRQUNuRSxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQTRCLENBQUM7UUFDekYsSUFBSSxDQUFDLFVBQVUsR0FBRyxpQ0FBaUMsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztJQUMzRCxDQUFDO0lBRU8sTUFBTSxDQUFDLDJCQUEyQixDQUFDLFFBQW1CO1FBQzVELElBQUksQ0FBQyxRQUFRO1lBQ1gsT0FBTyxFQUFFLENBQUM7UUFFWixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQzthQUN2QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN6SCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLEtBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNyRCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sU0FBUyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUVsRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQWdCLENBQUM7UUFDMUYsaUJBQWlCLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBNEIsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxRQUF3QjtRQUN0RCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssU0FBUztZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFFL0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLHFCQUFxQixDQUFDLE1BQXVCO1FBQ2xELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN6QyxNQUFNLGlCQUFpQixHQUFHLFlBQVksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEUsb0JBQW9CO1FBQ3BCLDJEQUEyRDtRQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRCxLQUFLLElBQUksQ0FBQyxHQUFHLGFBQWEsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLEdBQUcsWUFBWSxHQUFHLGlCQUFpQixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEVBQUU7WUFDL0csSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7U0FDbEY7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7dUdBNUZVLGlDQUFpQzsyRkFBakMsaUNBQWlDLG9PRzFFOUMsMGxDQWlCTSxtdkVIc2dCTywrQkFBK0IscUZBL2MzQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDOzsyRkFFcEUsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLHFCQUFxQixpQkFHaEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzsrSUFLL0UsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJekIsT0FBTztzQkFETixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJekIsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUE4RnBEOzs7Ozs7R0FNRztBQU9ILE1BQU0sT0FBTywrQkFBK0I7SUE4RHZCO0lBQ0E7SUFDQTtJQTlEbkIsUUFBUSxDQUFhO0lBR3JCLE9BQU8sQ0FBVTtJQUVqQjs7Ozs7O09BTUc7SUFFSCxRQUFRLEdBQW1DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUVqRTs7Ozs7O09BTUc7SUFFSCxVQUFVLEdBQW1DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUdyRSxxQkFBcUIsQ0FBd0M7SUFHN0QsdUJBQXVCLENBQXdDO0lBRS9EOztPQUVHO0lBRUksUUFBUSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO0lBRWhFLFlBQVksQ0FBdUU7SUFFbkYsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUVsQyxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXpCLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUM7SUFDckQsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQ21CLGVBQStCLEVBQy9CLFFBQW1DLEVBQ25DLGlCQUFtQztRQUZuQyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBMkI7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtJQUV0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBeUIsQ0FBQztRQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQXdFLENBQUM7UUFDbEksTUFBTSxJQUFJLENBQUMsMkNBQTJDLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQWtCO1FBQ2hDLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFnQyxDQUFnQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxTQUFTLENBQUMsSUFBa0I7UUFDakMsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDL0UsT0FBTyxFQUFFLENBQUM7UUFFWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBaUMsQ0FBVyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFrQjtRQUN4QyxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUk7WUFDckMsT0FBTyxFQUFFLENBQUM7UUFFWixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDNUQsS0FBSyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRXZDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQWtCO1FBQzNDLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssSUFBSTtZQUNyQyxPQUFPLEVBQUUsQ0FBQztRQUVaLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2FBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN2SyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUssK0JBQStCLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1SixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWtDO1FBQ3RELElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSTtZQUNwRixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFFcEUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFvQixDQUFDLEtBQUssS0FBSyxDQUFpQixDQUFDO0lBQ2xILENBQUM7SUFFTSxhQUFhLENBQUMsS0FBa0M7UUFDckQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUMzRSxPQUFPO1FBRVQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDMUMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQXVELENBQUM7UUFDMUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFbEUsS0FBSyxDQUFDLHlCQUF5QixDQUFDLEtBQXdEO1FBQzdGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXJCLElBQUk7WUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztZQUV2QyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssRUFBRTtnQkFDOUQsT0FBTztZQUVULElBQUksTUFBTSxHQUFHLFlBQVksT0FBTyxDQUFDLFdBQVcsTUFBTSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDbkUsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVGLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVSxNQUFNLEdBQUcsQ0FBQztZQUV4RSxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdEO2dCQUNPO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBd0M7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLEtBQUssQ0FBQywyQ0FBMkM7UUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFFdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDL0QsT0FBTyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDdEIsT0FBTztTQUNSO1FBRUQsTUFBTSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxRQUFRLE9BQU8sQ0FBQyxjQUFjLEdBQUcsQ0FBQztRQUN0RSxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDMUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFFN0QsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFlLFlBQVksRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksY0FBYyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDcEYsTUFBTSxPQUFPLEdBQUcsK0VBQStFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDckgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2xIO1FBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUssQ0FBQyxTQUFTLENBQUMsS0FBc0MsQ0FBQztRQUM5RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFFMUIsdUlBQXVJO1FBQ3ZJLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxLQUFvQztRQUNwRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUF1QyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxTQUFTO1lBQ1osT0FBTyxLQUFLLENBQUM7UUFFZixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckcsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5RixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUN2QyxPQUFPLEVBQUUsQ0FBQztRQUVaLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEIsT0FBTyxLQUFLLENBQUE7UUFFZCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFFMUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFjO1FBQ3BELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLEtBQUssR0FBRyxTQUFTLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFdEgsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzt1R0FoT1UsK0JBQStCOzJGQUEvQiwrQkFBK0IsNmFJN0w1Qyw0cEhBa0ZBLG91SUp5R2lCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7OzJGQUVwRSwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsbUJBQW1CLGlCQUdkLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7MkpBSS9FLFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXpCLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBV3pCLFFBQVE7c0JBRFAsS0FBSztnQkFXTixVQUFVO3NCQURULEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJckQsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPaEQsUUFBUTtzQkFEZCxNQUFNOztBQStMVDs7Ozs7R0FLRztBQU9ILE1BQU0sT0FBTyw2QkFBNkI7SUFxQnJCO0lBbEJuQixRQUFRLENBQXdFO0lBR2hGLE9BQU8sQ0FBVTtJQUdqQixjQUFjLENBQXdCO0lBRTlCLGVBQWUsQ0FBZ0I7SUFFdkMsSUFBVyxjQUFjO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxTQUFTO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUUzQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQ21CLGlCQUFtQztRQUFuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO0lBRXRELENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQXlCLENBQUM7UUFDbkUsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFpQixDQUFDO0lBQ2hGLENBQUM7dUdBNUJVLDZCQUE2QjsyRkFBN0IsNkJBQTZCLHdOSzVhMUMsc21CQVdlLGl4Qkw0Z0JGLCtCQUErQixxRkE3RzNCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7OzJGQUVwRSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUdaLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7cUZBSy9FLFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXpCLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXpCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztBQXVCaEQ7Ozs7R0FJRztBQU9ILE1BQU0sT0FBTyw2QkFBNkI7SUE0Q3JCO0lBekNuQixRQUFRLENBQWE7SUFFckIsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxNQUFNLENBQVUsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsMEJBQTBCO1NBQ3BGLGtCQUFrQixFQUFFO1NBQ3BCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQ25CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQ25CLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFdEIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sNkJBQTZCLENBQUMsV0FBVyxDQUFDO0lBQ25ELENBQUM7SUFFTyxNQUFNLENBQVUsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ2hFLGtCQUFrQixFQUFFO1NBQ3BCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQ25CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQ25CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFdkIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sNkJBQTZCLENBQUMsV0FBVyxDQUFDO0lBQ25ELENBQUM7SUFFTyxZQUFZLENBQTRDO0lBRWhFLElBQVcsV0FBVztRQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFM0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUNtQixpQkFBbUM7UUFBbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtJQUV0RCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUF5QixDQUFDO1FBQ25FLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBNkMsQ0FBQztJQUN6RyxDQUFDO3VHQW5EVSw2QkFBNkI7MkZBQTdCLDZCQUE2Qix5Rk10ZDFDLHFtS0FpREEsa21JTm1haUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs7MkZBRXBFLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSxpQkFBaUIsaUJBR1osQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztxRkFLL0UsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTs7QUFvRDNCOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8sK0JBQStCO0lBRTFDLE9BQU8sQ0FBVTtJQUdqQixRQUFRLENBQVk7dUdBTFQsK0JBQStCOzJGQUEvQiwrQkFBK0IsK0dPdmhCNUMsa0lBQTBILHVMUHVCN0csNkJBQTZCLGtGQThmekIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs7MkZBRXBFLCtCQUErQjtrQkFOM0MsU0FBUzsrQkFDRSxtQkFBbUIsaUJBR2QsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs4QkFJL0UsT0FBTztzQkFETixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJekIsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlLCBOdW1iZXJUZW1wbGF0ZSwgT3B0aW9ucywgT3B0aW9uc0l0ZW1EdG8sIFByb2JsZW1EZXRhaWxzLCBQcm9wZXJ0eSwgUHJvcGVydHlUeXBlLCBSZXNvdXJjZUR0bywgUmVzb3VyY2VPZkR0bywgU2ltcGxlVmFsdWUsIFRlbXBsYXRlLCBUZW1wbGF0ZUR0byB9IGZyb20gJ0B3ZXJ0enVpL25neC1oYWwtY2xpZW50JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnRzJztcclxuaW1wb3J0IHsgUHJvcGVydHlUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGVtcGxhdGluZyc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZENsaWVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3R3b3JsZC1jbGllbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRDbGllbnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgUHJvcGVydHlXaXRoT3B0aW9ucywgUHJvcGVydHlXaXRoSW1hZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3BlY2lhbC1wcm9wZXJ0aWVzJ1xyXG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJy4uLy4uL3V0aWwvZGVib3VuY2UnO1xyXG5cclxuLyoqXHJcbiAqIEEgZm9ybSBlbGVtZW50IHdpdGggYSBsYWJlbCB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmcm9tIGEgcHJvcGVydHkgaW4gYSBmb3JtIHRlbXBsYXRlLlxyXG4gKiBUaGlzIG1heSBhbHNvIGJlIGEgY29tcGxleCBvYmplY3Qgb3IgYSBjb2xsZWN0aW9uIGluIHdoaWNoIGNhc2UgbXVsdGlwbGUgYW5kIG5lc3RlZCBpbnB1dCBlbGVtZW50cyBtYXkgYmUgcmVuZGVyZWQuXHJcbiAqIElmIHlvdSB3YW50IGEgZm9ybSBlbGVtZW50IHdpdGhvdXQgYSBsYWJlbCwgdXNlIFJlc3RXb3JsZEZvcm1JbnB1dCA8cnctaW5wdXQ+LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1mb3JtLWVsZW1lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtZm9ybS1lbGVtZW50L3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQvcmVzdHdvcmxkLWZvcm0tZWxlbWVudC5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQ8VFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8U2ltcGxlVmFsdWUsIHN0cmluZywgc3RyaW5nPj4ge1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgcHJvcGVydHkhOiBUUHJvcGVydHk7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgZm9ybSBpbnB1dCBlbGVtZW50IHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gYSBwcm9wZXJ0eSBpbiBhIGZvcm0gdGVtcGxhdGUuXHJcbiAqIFRoaXMgbWF5IGFsc28gYmUgYSBjb21wbGV4IG9iamVjdCBvciBhIGNvbGxlY3Rpb24gaW4gd2hpY2ggY2FzZSBtdWx0aXBsZSBhbmQgbmVzdGVkIGlucHV0IGVsZW1lbnRzIG1heSBiZSByZW5kZXJlZC5cclxuICogSWYgeW91IGFsc28gd2FudCBhIGxhYmVsLCB1c2UgUmVzdFdvcmxkRm9ybUVsZW1lbnQgPHJ3LWZvcm0tZWxlbWVudD4uXHJcbiAqIFlvdSBjYW4gYWxzbyB1c2Ugb25lIG9mIHRoZSBkaWZmZXJlbnQgUmVzdFdvcmxkSW5wdXQuLi4gPHJ3LWlucHV0LS4uLj4gZWxlbWVudHMgdG8gcmVuZGVyIGEgc3BlY2lmaWMgaW5wdXQsXHJcbiAqIGJ1dCBpdCBpcyBhZHZpc2VkIHRvIGNvbnRyb2wgdGhlIHJlbmRlcmVkIGlucHV0IHRocm91Z2ggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dENvbXBvbmVudDxUUHJvcGVydHkgZXh0ZW5kcyBQcm9wZXJ0eTxTaW1wbGVWYWx1ZSwgc3RyaW5nLCBzdHJpbmc+PiB7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgcHJvcGVydHkhOiBUUHJvcGVydHk7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVR5cGUoKSB7XHJcbiAgICByZXR1cm4gUHJvcGVydHlUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVdpdGhPcHRpb25zKCkge1xyXG4gICAgcmV0dXJuIFByb3BlcnR5V2l0aE9wdGlvbnM8U2ltcGxlVmFsdWUsIHN0cmluZywgc3RyaW5nPjtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQSBjb2xsZWN0aW9uIHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gdGhlIGdpdmVuIHByb3BlcnR5LlxyXG4gKiBUaGUgY29sbGVjdGlvbiBzdXBwb3J0cyBkcmFnICYgZHJvcCB0byByZSBvcmRlciB0aGUgZWxlbWVudHMgYW5kIGNhbiBhbHNvIGJlIG5lc3RlZC5cclxuICogQHJlbWFya3MgSXQgaXMgYWR2aXNlZCB0byB1c2UgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQgPHJ3LWlucHV0PiBhbmQgY29udHJvbCB0aGUgcmVuZGVyZWQgaW5wdXRzIHdpdGggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eVxyXG4gKiBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMgY29tcG9uZW50IGRpcmVjdGx5LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1pbnB1dC1jb2xsZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbnB1dC1jb2xsZWN0aW9uL3Jlc3R3b3JsZC1pbnB1dC1jb2xsZWN0aW9uLmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dENvbGxlY3Rpb25Db21wb25lbnQ8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47IH0+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBwcm9wZXJ0eSE6IFByb3BlcnR5ICYge190ZW1wbGF0ZXM6IHsgZGVmYXVsdDogVGVtcGxhdGUgfX07XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXRDb2xsZWN0aW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgaW5wdXRDb2xsZWN0aW9uUmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcblxyXG5cclxuICBwcml2YXRlIF90ZW1wbGF0ZXM6IE51bWJlclRlbXBsYXRlW10gPSBbXTtcclxuICBwdWJsaWMgZ2V0IHRlbXBsYXRlcygpOiBOdW1iZXJUZW1wbGF0ZVtdIHtcclxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZWZhdWx0VGVtcGxhdGU/OiBUZW1wbGF0ZTtcclxuICBwdWJsaWMgZ2V0IGRlZmF1bHRUZW1wbGF0ZSgpOiBUZW1wbGF0ZSB7XHJcbiAgICBpZiAodGhpcy5fZGVmYXVsdFRlbXBsYXRlID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGRlZmF1bHQgdGVtcGxhdGUgZm91bmQuXCIpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VGVtcGxhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbm5lckZvcm1BcnJheT86IEZvcm1BcnJheTxGb3JtR3JvdXA8VD4+O1xyXG4gIHB1YmxpYyBnZXQgaW5uZXJGb3JtQXJyYXkoKSB7XHJcbiAgICBpZiAodGhpcy5faW5uZXJGb3JtQXJyYXkgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybUdyb3VwIGlzIG5vdCBzZXQuXCIpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9pbm5lckZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5fY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDxhbnk+O1xyXG4gICAgdGhpcy5faW5uZXJGb3JtQXJyYXkgPSBmb3JtR3JvdXAuY29udHJvbHNbdGhpcy5wcm9wZXJ0eS5uYW1lXSBhcyBGb3JtQXJyYXk8Rm9ybUdyb3VwPFQ+PjtcclxuICAgIHRoaXMuX3RlbXBsYXRlcyA9IFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudC5nZXRDb2xsZWN0aW9uRW50cnlUZW1wbGF0ZXModGhpcy5wcm9wZXJ0eSk7XHJcbiAgICB0aGlzLl9kZWZhdWx0VGVtcGxhdGUgPSB0aGlzLnByb3BlcnR5Ll90ZW1wbGF0ZXMuZGVmYXVsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldENvbGxlY3Rpb25FbnRyeVRlbXBsYXRlcyhwcm9wZXJ0eT86IFByb3BlcnR5KTogTnVtYmVyVGVtcGxhdGVbXSB7XHJcbiAgICBpZiAoIXByb3BlcnR5KVxyXG4gICAgICByZXR1cm4gW107XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHByb3BlcnR5Ll90ZW1wbGF0ZXMpXHJcbiAgICAgIC5maWx0ZXIoKFtrZXksIHZhbHVlXSkgPT4gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIucGFyc2VJbnQoa2V5KSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIucGFyc2VJbnQodmFsdWU/LnRpdGxlID8/IFwiXCIpKSlcclxuICAgICAgLm1hcCgoWywgdmFsdWVdKSA9PiBuZXcgTnVtYmVyVGVtcGxhdGUodmFsdWUgYXMgVGVtcGxhdGVEdG8pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGROZXdJdGVtVG9Db2xsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4SW5kZXggPSBNYXRoLm1heCguLi5PYmplY3Qua2V5cyh0aGlzLnRlbXBsYXRlcylcclxuICAgICAgLm1hcChrZXkgPT4gTnVtYmVyLnBhcnNlSW50KGtleSkpXHJcbiAgICAgIC5maWx0ZXIoa2V5ID0+IE51bWJlci5pc1NhZmVJbnRlZ2VyKGtleSkpKTtcclxuICAgIGNvbnN0IG5leHRJbmRleCA9IG1heEluZGV4IDwgMCA/IDAgOiBtYXhJbmRleCArIDE7XHJcblxyXG4gICAgY29uc3QgY29waWVkVGVtcGxhdGVEdG8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGVmYXVsdFRlbXBsYXRlKSkgYXMgVGVtcGxhdGVEdG87XHJcbiAgICBjb3BpZWRUZW1wbGF0ZUR0by50aXRsZSA9IG5leHRJbmRleC50b1N0cmluZygpO1xyXG4gICAgY29uc3QgY29waWVkVGVtcGxhdGUgPSBuZXcgTnVtYmVyVGVtcGxhdGUoY29waWVkVGVtcGxhdGVEdG8pO1xyXG5cclxuICAgIHRoaXMudGVtcGxhdGVzW25leHRJbmRleF0gPSBjb3BpZWRUZW1wbGF0ZTtcclxuICAgIHRoaXMuaW5uZXJGb3JtQXJyYXkucHVzaCh0aGlzLl9mb3JtU2VydmljZS5jcmVhdGVGb3JtR3JvdXBGcm9tVGVtcGxhdGUodGhpcy5kZWZhdWx0VGVtcGxhdGUpIGFzIHVua25vd24gYXMgRm9ybUdyb3VwPFQ+KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVJdGVtRnJvbUNvbGxlY3Rpb24odGVtcGxhdGU6IE51bWJlclRlbXBsYXRlKTogdm9pZCB7XHJcbiAgICBpZiAodGVtcGxhdGUudGl0bGUgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRlbGV0ZSBhIHRlbXBsYXRlIHdpdGhvdXQgYSB0aXRsZS5cIik7XHJcblxyXG4gICAgZGVsZXRlIHRoaXMudGVtcGxhdGVzW3RlbXBsYXRlLnRpdGxlXTtcclxuICAgIHRoaXMuaW5uZXJGb3JtQXJyYXkucmVtb3ZlQXQodGVtcGxhdGUudGl0bGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbGxlY3Rpb25JdGVtRHJvcHBlZCgkZXZlbnQ6IENka0RyYWdEcm9wPHt9Pikge1xyXG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9ICRldmVudC5wcmV2aW91c0luZGV4O1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gJGV2ZW50LmN1cnJlbnRJbmRleDtcclxuICAgIGNvbnN0IG1vdmVtZW50RGlyZWN0aW9uID0gY3VycmVudEluZGV4ID4gcHJldmlvdXNJbmRleCA/IDEgOiAtMTtcclxuXHJcbiAgICAvLyBNb3ZlIGluIEZvcm1BcnJheVxyXG4gICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gbW92ZSB0aGUgaXRlbSBpbiB0aGUgX3RlbXBsYXRlcyBvYmplY3RcclxuICAgIGNvbnN0IG1vdmVkQ29udHJvbCA9IHRoaXMuaW5uZXJGb3JtQXJyYXkuYXQocHJldmlvdXNJbmRleCk7XHJcbiAgICBmb3IgKGxldCBpID0gcHJldmlvdXNJbmRleDsgaSAqIG1vdmVtZW50RGlyZWN0aW9uIDwgY3VycmVudEluZGV4ICogbW92ZW1lbnREaXJlY3Rpb247IGkgPSBpICsgbW92ZW1lbnREaXJlY3Rpb24pIHtcclxuICAgICAgdGhpcy5pbm5lckZvcm1BcnJheS5zZXRDb250cm9sKGksIHRoaXMuaW5uZXJGb3JtQXJyYXkuYXQoaSArIG1vdmVtZW50RGlyZWN0aW9uKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlubmVyRm9ybUFycmF5LnNldENvbnRyb2woY3VycmVudEluZGV4LCBtb3ZlZENvbnRyb2wpO1xyXG5cclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRoaXMgaGVscGVyIHR5cGUgY29udmVydHMgYSBQcm9wZXJ0eTxYLCBZLCBaPiB0byBhbiBPcHRpb25zSXRlbUR0bzxYLCBZLCBaPiBhbmQgcHJlc2VydmVzIHRoZSBnZW5lcmljIHBhcmFtZXRlcnMuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBFeHRyYWN0R2VuZXJpY09wdGlvbnNJdGVtVHlwZTxUUHJvcGVydHk+ID0gVFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8aW5mZXIgWCwgaW5mZXIgWSwgaW5mZXIgWj4gPyBPcHRpb25zSXRlbUR0bzxYLCBZLCBaPiA6IG5ldmVyXHJcbmV4cG9ydCB0eXBlIEV4dHJhY3RHZW5lcmljT3B0aW9uc1NlbGVjdGVkVmFsdWVzVHlwZTxUUHJvcGVydHk+ID0gVFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8aW5mZXIgWCwgaW5mZXIgWSwgaW5mZXIgWj4gPyBPcHRpb25zPFgsIFksIFo+W1wic2VsZWN0ZWRWYWx1ZXNcIl0gOiBuZXZlclxyXG5leHBvcnQgdHlwZSBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT4gPSBUUHJvcGVydHkgZXh0ZW5kcyBQcm9wZXJ0eTxpbmZlciBYLCBpbmZlciBZLCBpbmZlciBaPiA/IFggOiBuZXZlclxyXG5cclxuLyoqXHJcbiAqIEEgZHJvcGRvd24gdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkuXHJcbiAqIFRoZSBkcm9wZG93biBzdXBwb3J0cyBzZWFyY2hpbmcgdGhyb3VnaCBhIFJFU1RXb3JsZCBsaXN0IGVuZHBvaW50IG9uIHRoZSBiYWNrZW5kIGlmIHRoZSBgbGlua2Agb2YgdGhlIG9wdGlvbnMgaXMgc2V0LlxyXG4gKiBPdGhlcndpc2UgdGhlIGRyb3Bkb3duIHdpbGwgdXNlIHRoZSBgaW5saW5lYCBvZiB0aGUgb3B0aW9ucy5cclxuICogQHJlbWFya3MgSXQgaXMgYWR2aXNlZCB0byB1c2UgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQgPHJ3LWlucHV0PiBhbmQgY29udHJvbCB0aGUgcmVuZGVyZWQgaW5wdXRzIHdpdGggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eVxyXG4gKiBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMgY29tcG9uZW50IGRpcmVjdGx5LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1pbnB1dC1kcm9wZG93bicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbnB1dC1kcm9wZG93bi9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbnB1dC1kcm9wZG93bi9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LmNzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZElucHV0RHJvcGRvd25Db21wb25lbnQ8VFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHk8U2ltcGxlVmFsdWUsIHN0cmluZywgc3RyaW5nPiAmIHsgb3B0aW9uczogT3B0aW9uczxTaW1wbGVWYWx1ZSwgc3RyaW5nLCBzdHJpbmc+IH0sIFRPcHRpb25zSXRlbSBleHRlbmRzIEV4dHJhY3RHZW5lcmljT3B0aW9uc0l0ZW1UeXBlPFRQcm9wZXJ0eT4gPSBFeHRyYWN0R2VuZXJpY09wdGlvbnNJdGVtVHlwZTxUUHJvcGVydHk+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBwcm9wZXJ0eSE6IFRQcm9wZXJ0eTtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBhcGlOYW1lITogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbGFiZWwgZm9yIHRoZSBnaXZlbiBpdGVtLlxyXG4gICAqIFRoZSBkZWZhdWx0IHJldHVybnMgdGhlIHByb21wdCBhbmQgb3B0aW9uYWxseSB0aGUgdmFsdWUgaW4gYnJhY2tldHMuXHJcbiAgICogVGhlIHZhbHVlIGluIGJyYWNrZXRzIHdpbGwgb25seSBiZSBkaXNwbGF5ZWQgaWYgdGhlIGBjb2xzYCBmaWVsZCBvZiB0aGUgcHJvcGVydHkgaXMgdW5kZWZpbmVkIG9yIGdyZWF0ZXIgdGhhbiAxLlxyXG4gICAqIE92ZXJ3cml0ZSB0aGlzIGZ1bmN0aW9uIHRvIGNoYW5nZSB0aGUgbGFiZWwuXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gZ2V0IHRoZSBsYWJlbCBmb3IuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBnZXRMYWJlbDogKGl0ZW06IFRPcHRpb25zSXRlbSkgPT4gc3RyaW5nID0gdGhpcy5nZXRMYWJlbEludGVybmFsO1xyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdG9vbHRpcCBmb3IgdGhlIGdpdmVuIGl0ZW0uXHJcbiAgICogVGhlIGRlZmF1bHQgcmV0dXJucyBhbGwgcHJvcGVydGllcyBvZiB0aGUgaXRlbSBleGNlcHQgdGhlIG9uZXMgdGhhdCBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmUgb3IgdGhlIG9uZXMgdGhhdCBhcmUgaW4gdGhlIGxpc3Qgb2YgZGVmYXVsdCBwcm9wZXJ0aWVzIHRvIGV4Y2x1ZGUuXHJcbiAgICogVGhlIGRlZmF1bHQgcHJvcGVydGllcyB0byBleGNsdWRlIGFyZTogY3JlYXRlZEF0LCBjcmVhdGVkQnksIGxhc3RDaGFuZ2VkQXQsIGxhc3RDaGFuZ2VkQnksIHRpbWVzdGFtcCwgcHJvbXB0RmllbGQsIHZhbHVlRmllbGQuXHJcbiAgICogT3ZlcndyaXRlIHRoaXMgZnVuY3Rpb24gdG8gY2hhbmdlIHRoZSB0b29sdGlwLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRvIGdldCB0aGUgbGFiZWwgZm9yLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0VG9vbHRpcDogKGl0ZW06IFRPcHRpb25zSXRlbSkgPT4gc3RyaW5nID0gdGhpcy5nZXRUb29sdGlwSW50ZXJuYWw7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2lucHV0T3B0aW9uc1NpbmdsZScsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGlucHV0T3B0aW9uc1NpbmdsZVJlZj86IFRlbXBsYXRlUmVmPFByb3BlcnR5VGVtcGxhdGVDb250ZXh0PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXRPcHRpb25zTXVsdGlwbGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBpbnB1dE9wdGlvbnNNdWx0aXBsZVJlZj86IFRlbXBsYXRlUmVmPFByb3BlcnR5VGVtcGxhdGVDb250ZXh0PjtcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wZG93bkNoYW5nZUV2ZW50PFRPcHRpb25zSXRlbT4+KCk7XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sITogQWJzdHJhY3RDb250cm9sPEV4dHJhY3RHZW5lcmljT3B0aW9uc1NlbGVjdGVkVmFsdWVzVHlwZTxUUHJvcGVydHk+PjtcclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyVmFsdWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBnZXQgZmlsdGVyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZhbHVlRmllbGQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Lm9wdGlvbnMudmFsdWVGaWVsZCA/PyBcInZhbHVlXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHByb21wdEZpZWxkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eS5vcHRpb25zLnByb21wdEZpZWxkID8/IFwicHJvbXB0XCI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NsaWVudHM6IFJlc3RXb3JsZENsaWVudENvbGxlY3Rpb24sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLl9jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwPGFueT47XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1t0aGlzLnByb3BlcnR5Lm5hbWVdIGFzIEFic3RyYWN0Q29udHJvbDxFeHRyYWN0R2VuZXJpY09wdGlvbnNTZWxlY3RlZFZhbHVlc1R5cGU8VFByb3BlcnR5Pj47XHJcbiAgICBhd2FpdCB0aGlzLnNldEluaXRpYWxTZWxlY3RlZE9wdGlvbnNFbGVtZW50Rm9yUHJvcGVydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRWYWx1ZShpdGVtOiBUT3B0aW9uc0l0ZW0pOiBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT4ge1xyXG4gICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCB8fCBpdGVtID09PSBudWxsIHx8ICFpdGVtLmhhc093blByb3BlcnR5KHRoaXMudmFsdWVGaWVsZCkpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGl0ZW0gZG9lcyBub3QgaGF2ZSBhIHByb3BlcnR5ICR7dGhpcy52YWx1ZUZpZWxkfS5gKTtcclxuXHJcbiAgICByZXR1cm4gaXRlbVt0aGlzLnZhbHVlRmllbGQgYXMga2V5b2YgVE9wdGlvbnNJdGVtXSBhcyBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UHJvbXB0KGl0ZW06IFRPcHRpb25zSXRlbSk6IHN0cmluZyB7XHJcbiAgICBpZiAoaXRlbSA9PT0gdW5kZWZpbmVkIHx8IGl0ZW0gPT09IG51bGwgfHwgIWl0ZW0uaGFzT3duUHJvcGVydHkodGhpcy5wcm9tcHRGaWVsZCkpXHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgIHJldHVybiBpdGVtW3RoaXMucHJvbXB0RmllbGQgYXMga2V5b2YgVE9wdGlvbnNJdGVtXSBhcyBzdHJpbmc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGFiZWxJbnRlcm5hbChpdGVtOiBUT3B0aW9uc0l0ZW0pOiBzdHJpbmcge1xyXG4gICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCB8fCBpdGVtID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICBsZXQgbGFiZWwgPSB0aGlzLmdldFByb21wdChpdGVtKTtcclxuICAgIGlmICh0aGlzLnByb3BlcnR5LmNvbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnByb3BlcnR5LmNvbHMgPiAxKVxyXG4gICAgICBsYWJlbCArPSBgICgke3RoaXMuZ2V0VmFsdWUoaXRlbSl9KWA7XHJcblxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUb29sdGlwSW50ZXJuYWwoaXRlbTogVE9wdGlvbnNJdGVtKTogc3RyaW5nIHtcclxuICAgIGlmIChpdGVtID09PSB1bmRlZmluZWQgfHwgaXRlbSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgY29uc3QgdG9vbHRpcCA9IE9iamVjdC5lbnRyaWVzKGl0ZW0pXHJcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhKGtleS5zdGFydHNXaXRoKCdfJykgfHwgWydjcmVhdGVkQXQnLCAnY3JlYXRlZEJ5JywgJ2xhc3RDaGFuZ2VkQXQnLCAnbGFzdENoYW5nZWRCeScsICd0aW1lc3RhbXAnLCB0aGlzLnByb21wdEZpZWxkLCB0aGlzLnZhbHVlRmllbGRdLmluY2x1ZGVzKGtleSkpKVxyXG4gICAgICAucmVkdWNlKChwcmV2LCBba2V5LCB2YWx1ZV0sIGluZGV4KSA9PiBgJHtwcmV2fSR7aW5kZXggPT09IDAgPyAnJyA6ICdcXG4nfSR7a2V5fTogJHtSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50Lmpzb25TdHJpbmdpZnlXaXRoRWxpcHNpcyh2YWx1ZSl9YCwgJycpO1xyXG5cclxuICAgIHJldHVybiB0b29sdGlwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEl0ZW1CeVZhbHVlKHZhbHVlOiBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT4pOiBUT3B0aW9uc0l0ZW0ge1xyXG4gICAgaWYodGhpcy5wcm9wZXJ0eS5vcHRpb25zLmlubGluZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucHJvcGVydHkub3B0aW9ucy5pbmxpbmUgPT09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3BlcnR5IGRvZXMgbm90IGhhdmUgYW55IGlubGluZSBvcHRpb25zLicpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Lm9wdGlvbnMuaW5saW5lLmZpbmQoaXRlbSA9PiB0aGlzLmdldFZhbHVlKGl0ZW0gYXMgVE9wdGlvbnNJdGVtKSA9PT0gdmFsdWUpIGFzIFRPcHRpb25zSXRlbTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVCeVZhbHVlKHZhbHVlOiBFeHRyYWN0VmFsdWVUeXBlPFRQcm9wZXJ0eT4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9mb3JtQ29udHJvbC52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlID09PSBudWxsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5fZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGZvcm1WYWx1ZS5maWx0ZXIoaSA9PiBpICE9PSB2YWx1ZSkgYXMgRXh0cmFjdEdlbmVyaWNPcHRpb25zU2VsZWN0ZWRWYWx1ZXNUeXBlPFRQcm9wZXJ0eT47XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25PcHRpb25zRmlsdGVyZWQgPSBkZWJvdW5jZSh0aGlzLm9uT3B0aW9uc0ZpbHRlcmVkSW50ZXJuYWwsIDIwMCk7XHJcblxyXG4gIHB1YmxpYyBhc3luYyBvbk9wdGlvbnNGaWx0ZXJlZEludGVybmFsKGV2ZW50OiB7IG9yaWdpbmFsRXZlbnQ6IHVua25vd247IGZpbHRlcjogc3RyaW5nIHwgbnVsbCB9KSB7XHJcbiAgICB0aGlzLl9sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wZXJ0eT8ub3B0aW9ucztcclxuXHJcbiAgICAgIGlmICghb3B0aW9ucz8ubGluaz8uaHJlZiB8fCAhZXZlbnQuZmlsdGVyIHx8IGV2ZW50LmZpbHRlciA9PT0gJycpXHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgbGV0IGZpbHRlciA9IGBjb250YWlucygke29wdGlvbnMucHJvbXB0RmllbGR9LCAnJHtldmVudC5maWx0ZXJ9JylgO1xyXG4gICAgICBpZiAob3B0aW9ucy52YWx1ZUZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSAnaWQnICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KGV2ZW50LmZpbHRlcikpKVxyXG4gICAgICAgIGZpbHRlciA9IGAoJHtvcHRpb25zLnZhbHVlRmllbGR9IGVxICR7ZXZlbnQuZmlsdGVyfSkgIG9yICgke2ZpbHRlcn0pYDtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuU2V0SW5saW5lT3B0aW9uc0Zyb21GaWx0ZXIoZmlsdGVyLCBldmVudC5maWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9wdGlvbnNDaGFuZ2VkKGV2ZW50OiBEcm9wZG93bkNoYW5nZUV2ZW50PFRPcHRpb25zSXRlbT4pIHtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldEluaXRpYWxTZWxlY3RlZE9wdGlvbnNFbGVtZW50Rm9yUHJvcGVydHkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wZXJ0eS5vcHRpb25zO1xyXG5cclxuICAgIGlmICghb3B0aW9ucy5saW5rPy5ocmVmIHx8ICFvcHRpb25zLnNlbGVjdGVkVmFsdWVzKSB7XHJcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zLmlubGluZSkgfHwgb3B0aW9ucy5pbmxpbmUubGVuZ3RoID09PSAwKVxyXG4gICAgICAgIG9wdGlvbnMuaW5saW5lID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXIgPSBgJHtvcHRpb25zLnZhbHVlRmllbGR9IGluICgke29wdGlvbnMuc2VsZWN0ZWRWYWx1ZXN9KWA7XHJcbiAgICBhd2FpdCB0aGlzLlNldElubGluZU9wdGlvbnNGcm9tRmlsdGVyKGZpbHRlciwgXCJcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIFNldElubGluZU9wdGlvbnNGcm9tRmlsdGVyKGZpbHRlcjogc3RyaW5nLCBldmVudEZpbHRlcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wZXJ0eS5vcHRpb25zO1xyXG4gICAgaWYgKCFvcHRpb25zLmxpbms/LmhyZWYpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3BlcnR5IGRvZXMgbm90IGhhdmUgYSBsaW5rIGhyZWYuJyk7XHJcblxyXG4gICAgY29uc3QgdGVtcGxhdGVkVXJpID0gb3B0aW9ucy5saW5rLmhyZWY7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCkuZ2V0TGlzdEJ5VXJpPFRPcHRpb25zSXRlbT4odGVtcGxhdGVkVXJpLCB7ICRmaWx0ZXI6IGZpbHRlciwgJHRvcDogMTAgfSk7XHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpIHtcclxuICAgICAgY29uc3QgbWVzc2FnZSA9IGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIHRoZSBpbml0aWFsIHNlbGVjdGVkIGl0ZW1zIGZvciB0aGUgcHJvcGVydHkgJHt0aGlzLnByb3BlcnR5Lm5hbWV9LmA7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3InLCBkZXRhaWw6IG1lc3NhZ2UsIGRhdGE6IHJlc3BvbnNlLCBzdGlja3k6IHRydWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbXMgPSByZXNwb25zZS5ib2R5IS5fZW1iZWRkZWQuaXRlbXMgYXMgUmVzb3VyY2VPZkR0bzxUT3B0aW9uc0l0ZW0+W107XHJcbiAgICBjb25zdCBuZXdJdGVtcyA9IHRoaXMuY29tYmluZUlubGluZVdpdGhTZWxlY3RlZChpdGVtcyk7XHJcbiAgICBvcHRpb25zLmlubGluZSA9IG5ld0l0ZW1zO1xyXG5cclxuICAgIC8vIFRoZSBtdWx0aXNlbGVjdCBjb21wb25lbnQgZG9lcyBub3QgdXBkYXRlIHRoZSBvcHRpb25zIHdoZW4gdGhlIGlubGluZSBvcHRpb25zIGFyZSB1cGRhdGVkLCBzbyB3ZSBuZWVkIHRvIHRyaWdnZXIgYSBjaGFuZ2UgZGV0ZWN0aW9uLlxyXG4gICAgdGhpcy5fZmlsdGVyVmFsdWUgPSBldmVudEZpbHRlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tYmluZUlubGluZVdpdGhTZWxlY3RlZChpdGVtczogUmVzb3VyY2VPZkR0bzxUT3B0aW9uc0l0ZW0+W10pOiBUT3B0aW9uc0l0ZW1bXSB7XHJcbiAgICBjb25zdCBvbGRJbmxpbmUgPSB0aGlzLnByb3BlcnR5Lm9wdGlvbnMuaW5saW5lIGFzIFJlc291cmNlT2ZEdG88VE9wdGlvbnNJdGVtPltdO1xyXG4gICAgaWYgKCFvbGRJbmxpbmUpXHJcbiAgICAgIHJldHVybiBpdGVtcztcclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRWYWx1ZXMoKTtcclxuICAgIGNvbnN0IGl0ZW1zVG9LZWVwID0gb2xkSW5saW5lLmZpbHRlcihpID0+IHNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKHRoaXMuZ2V0VmFsdWUoaSBhcyBUT3B0aW9uc0l0ZW0pKSk7XHJcbiAgICBjb25zdCBuZXdWYWx1ZXMgPSBpdGVtcy5tYXAoaSA9PiB0aGlzLmdldFZhbHVlKGkpKTtcclxuICAgIGNvbnN0IG5ld0l0ZW1zID0gaXRlbXMuY29uY2F0KGl0ZW1zVG9LZWVwLmZpbHRlcihpID0+ICFuZXdWYWx1ZXMuaW5jbHVkZXModGhpcy5nZXRWYWx1ZShpKSkpKTtcclxuXHJcbiAgICByZXR1cm4gbmV3SXRlbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlbGVjdGVkVmFsdWVzKCk6IHVua25vd25bXSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBbXTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG5cclxuICAgIHJldHVybiBbdmFsdWVdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDbGllbnQoKTogUmVzdFdvcmxkQ2xpZW50IHtcclxuICAgIGlmICghdGhpcy5hcGlOYW1lKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgYSBjbGllbnQsIGJlY2F1c2UgdGhlIGFwaU5hbWUgaXMgbm90IHNldC4nKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fY2xpZW50cy5nZXRDbGllbnQodGhpcy5hcGlOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGpzb25TdHJpbmdpZnlXaXRoRWxpcHNpcyh2YWx1ZTogdW5rbm93bikge1xyXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gMjAwO1xyXG4gICAgY29uc3QgZW5kID0gMTA7XHJcbiAgICBjb25zdCBzdGFydCA9IG1heExlbmd0aCAtIGVuZCAtIDI7XHJcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgY29uc3Qgc2hvcnRlbmVkID0ganNvbi5sZW5ndGggPiBtYXhMZW5ndGggPyBqc29uLnN1YnN0cmluZygwLCBzdGFydCkgKyAn4oCmJyArIGpzb24uc3Vic3RyaW5nKGpzb24ubGVuZ3RoIC0gZW5kKSA6IGpzb247XHJcblxyXG4gICAgcmV0dXJuIHNob3J0ZW5lZDtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBIGNvbXBsZXggb2JqZWN0IHdpdGggbXVsdGlwbGUgcHJvcGVydGllcyB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwcm9wZXJ0eS5cclxuICogVGhlIG9iamVjdCBjYW4gYWxzbyBiZSBuZXN0ZWQuXHJcbiAqIEByZW1hcmtzIEl0IGlzIGFkdmlzZWQgdG8gdXNlIFJlc3RXb3JsZElucHV0Q29tcG9uZW50IDxydy1pbnB1dD4gYW5kIGNvbnRyb2wgdGhlIHJlbmRlcmVkIGlucHV0cyB3aXRoIHRoZSBwYXNzZWQgaW4gcHJvcGVydHlcclxuICogaW5zdGVhZCBvZiB1c2luZyB0aGlzIGNvbXBvbmVudCBkaXJlY3RseS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctaW5wdXQtb2JqZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0LW9iamVjdC9yZXN0d29ybGQtaW5wdXQtb2JqZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtaW5wdXQtb2JqZWN0L3Jlc3R3b3JsZC1pbnB1dC1vYmplY3QuY29tcG9uZW50LmNzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZElucHV0T2JqZWN0Q29tcG9uZW50PFQgZXh0ZW5kcyB7IFtLIGluIGtleW9mIFRdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+OyB9PiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgcHJvcGVydHkhOiBQcm9wZXJ0eTxudWxsLCBuZXZlciwgbmV2ZXI+ICYgeyBfdGVtcGxhdGVzOiB7IGRlZmF1bHQ6IFRlbXBsYXRlIH0gfTtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBhcGlOYW1lITogc3RyaW5nO1xyXG5cclxuICBAQ29udGVudENoaWxkKCdpbnB1dE9iamVjdCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGlucHV0T2JqZWN0UmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcblxyXG4gIHByaXZhdGUgX2lubmVyRm9ybUdyb3VwPzogRm9ybUdyb3VwPFQ+O1xyXG5cclxuICBwdWJsaWMgZ2V0IGlubmVyRm9ybUdyb3VwKCkge1xyXG4gICAgaWYgKHRoaXMuX2lubmVyRm9ybUdyb3VwID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm1Hcm91cCBpcyBub3Qgc2V0LlwiKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5faW5uZXJGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXJcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5fY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDxhbnk+O1xyXG4gICAgdGhpcy5faW5uZXJGb3JtR3JvdXAgPSBmb3JtR3JvdXAuY29udHJvbHNbdGhpcy5wcm9wZXJ0eS5uYW1lXSBhcyBGb3JtR3JvdXA8VD47XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQSBzaW1wbGUgaW5wdXQgZWxlbWVudCwgbGlrZSBhIHN0cmluZywgYSBudW1iZXIgb3IgYSBEYXRlIHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gdGhlIGdpdmVuIHByb3BlcnR5LlxyXG4gKiBAcmVtYXJrcyBJdCBpcyBhZHZpc2VkIHRvIHVzZSBSZXN0V29ybGRJbnB1dENvbXBvbmVudCA8cnctaW5wdXQ+IGFuZCBjb250cm9sIHRoZSByZW5kZXJlZCBpbnB1dHMgd2l0aCB0aGUgcGFzc2VkIGluIHByb3BlcnR5XHJcbiAqIGluc3RlYWQgb2YgdXNpbmcgdGhpcyBjb21wb25lbnQgZGlyZWN0bHkuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWlucHV0LXNpbXBsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbnB1dC1zaW1wbGUvcmVzdHdvcmxkLWlucHV0LXNpbXBsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWlucHV0LXNpbXBsZS9yZXN0d29ybGQtaW5wdXQtc2ltcGxlLmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudDxUUHJvcGVydHkgZXh0ZW5kcyBQcm9wZXJ0eTxTaW1wbGVWYWx1ZSwgc3RyaW5nLCBzdHJpbmc+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgcHJvcGVydHkhOiBUUHJvcGVydHk7XHJcblxyXG4gIHB1YmxpYyBnZXQgUHJvcGVydHlUeXBlKCkge1xyXG4gICAgcmV0dXJuIFByb3BlcnR5VHlwZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kYXRlRm9ybWF0ID0gbmV3IERhdGUoMzMzMywgMTAsIDIyKSAvLyBtb250aHMgc3RhcnQgYXQgMCBpbiBKU1xyXG4gICAgLnRvTG9jYWxlRGF0ZVN0cmluZygpXHJcbiAgICAucmVwbGFjZShcIjIyXCIsIFwiZGRcIilcclxuICAgIC5yZXBsYWNlKFwiMTFcIiwgXCJtbVwiKVxyXG4gICAgLnJlcGxhY2UoXCIzMzMzXCIsIFwieXlcIilcclxuICAgIC5yZXBsYWNlKFwiMzNcIiwgXCJ5XCIpO1xyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudC5fZGF0ZUZvcm1hdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90aW1lRm9ybWF0ID0gbmV3IERhdGUoMSwgMSwgMSwgMjIsIDMzLCA0NClcclxuICAgIC50b0xvY2FsZVRpbWVTdHJpbmcoKVxyXG4gICAgLnJlcGxhY2UoXCIyMlwiLCBcImhoXCIpXHJcbiAgICAucmVwbGFjZShcIjMzXCIsIFwibW1cIilcclxuICAgIC5yZXBsYWNlKFwiNDRcIiwgXCJzc1wiKTtcclxuXHJcbiAgcHVibGljIGdldCB0aW1lRm9ybWF0KCkge1xyXG4gICAgcmV0dXJuIFJlc3RXb3JsZElucHV0U2ltcGxlQ29tcG9uZW50Ll90aW1lRm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2w/OiBGb3JtQ29udHJvbDxTaW1wbGVWYWx1ZSB8IFNpbXBsZVZhbHVlW10+O1xyXG5cclxuICBwdWJsaWMgZ2V0IGZvcm1Db250cm9sKCkge1xyXG4gICAgaWYgKHRoaXMuX2Zvcm1Db250cm9sID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm1Hcm91cCBpcyBub3Qgc2V0LlwiKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFByb3BlcnR5V2l0aEltYWdlKCkge1xyXG4gICAgcmV0dXJuIFByb3BlcnR5V2l0aEltYWdlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuX2NvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA8YW55PjtcclxuICAgIHRoaXMuX2Zvcm1Db250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMucHJvcGVydHkubmFtZV0gYXMgRm9ybUNvbnRyb2w8U2ltcGxlVmFsdWUgfCBTaW1wbGVWYWx1ZVtdPjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBIGNvbGxlY3Rpb24gb2YgcnctZm9ybS1lbGVtZW50cyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZnJvbSBhIHRlbXBsYXRlLlxyXG4gKiBEb2VzIG5vdCBoYXZlIGFueSBidXR0b25zIG9uIGl0cyBvd24uXHJcbiAqIElmIHlvdSB3YW50IGJ1dHRvbnMsIHVzZSBSZXN0V29ybGRGb3JtIDxydy1mb3JtPi5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctaW5wdXQtdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtaW5wdXQtdGVtcGxhdGUvcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtaW5wdXQtdGVtcGxhdGUvcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlLmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50PFQgZXh0ZW5kcyB7IFtLIGluIGtleW9mIFRdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+OyB9PiB7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICBhcGlOYW1lITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHRlbXBsYXRlITogVGVtcGxhdGU7XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImdyaWQgZmllbGRcIj5cclxuICAgIDxydy1sYWJlbCBbcHJvcGVydHldPVwicHJvcGVydHlcIiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtMiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPjwvcnctbGFiZWw+XHJcbiAgICA8cnctaW5wdXQgW2FwaU5hbWVdPVwiYXBpTmFtZVwiIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiIGNsYXNzPVwiY29sLTEyIG1kOmNvbC0xMFwiPjwvcnctaW5wdXQ+XHJcbjwvZGl2PlxyXG4iLCI8cnctaW5wdXQtZHJvcGRvd24gKm5nSWY9XCJwcm9wZXJ0eS5vcHRpb25zXCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiIFtwcm9wZXJ0eV09XCIkYW55KHByb3BlcnR5KVwiPjwvcnctaW5wdXQtZHJvcGRvd24+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIXByb3BlcnR5Lm9wdGlvbnNcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BlcnR5LnR5cGVcIj5cclxuICAgICAgICA8cnctaW5wdXQtb2JqZWN0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuT2JqZWN0XCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiIFtwcm9wZXJ0eV09XCIkYW55KHByb3BlcnR5KVwiPjwvcnctaW5wdXQtb2JqZWN0PlxyXG4gICAgICAgIDxydy1pbnB1dC1jb2xsZWN0aW9uICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuQ29sbGVjdGlvblwiIFthcGlOYW1lXT1cImFwaU5hbWVcIiBbcHJvcGVydHldPVwiJGFueShwcm9wZXJ0eSlcIj48L3J3LWlucHV0LWNvbGxlY3Rpb24+XHJcbiAgICAgICAgPHJ3LWlucHV0LXNpbXBsZSAqbmdTd2l0Y2hEZWZhdWx0IFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiPjwvcnctaW5wdXQtc2ltcGxlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPHJ3LXZhbGlkYXRpb24tZXJyb3JzIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiPjwvcnctdmFsaWRhdGlvbi1lcnJvcnM+XHJcbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJicmFjZVwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImNvbGxlY3Rpb25JdGVtRHJvcHBlZCgkZXZlbnQpXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRlbXBsYXRlIG9mIHRlbXBsYXRlc1wiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBjZGtEcmFnPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZ3JpcC1saW5lc1wiIGNka0RyYWdIYW5kbGU+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyYWNlXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgPHJ3LWlucHV0LXRlbXBsYXRlIFtmb3JtR3JvdXBdPVwiaW5uZXJGb3JtQXJyYXkuY29udHJvbHNbdGVtcGxhdGUudGl0bGUhXVwiIFt0ZW1wbGF0ZV09XCJkZWZhdWx0VGVtcGxhdGVcIiBbYXBpTmFtZV09XCJhcGlOYW1lXCIgY2xhc3M9XCJ3LWZ1bGxcIj48L3J3LWlucHV0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwiZmFzIGZhLXRyYXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1kYW5nZXIgbWwtMiBtYi0zXCIgKGNsaWNrKT1cImRlbGV0ZUl0ZW1Gcm9tQ29sbGVjdGlvbih0ZW1wbGF0ZSlcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCB3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwiZmFzIGZhLXBsdXNcIiBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIHAtYnV0dG9uLWluZm9cIiAoY2xpY2spPVwiYWRkTmV3SXRlbVRvQ29sbGVjdGlvbigpXCI+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+IiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRPcHRpb25zU2luZ2xlIGxldC1wcm9wZXJ0eT1cInByb3BlcnR5XCIgbGV0LXRlbXBsYXRlPVwidGVtcGxhdGVcIj5cbiAgICA8cC1kcm9wZG93blxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCJcbiAgICAgIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCJcbiAgICAgIFtvcHRpb25zXT1cInByb3BlcnR5Lm9wdGlvbnMuaW5saW5lXCJcbiAgICAgIFtmaWx0ZXJCeV09XCJwcm9tcHRGaWVsZCArICcsJyArIHZhbHVlRmllbGRcIlxuICAgICAgW29wdGlvbkxhYmVsXT1cInByb21wdEZpZWxkXCJcbiAgICAgIFtvcHRpb25WYWx1ZV09XCJ2YWx1ZUZpZWxkXCJcbiAgICAgIFtyZWFkb25seV09XCJwcm9wZXJ0eS5yZWFkT25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicHJvcGVydHkucmVxdWlyZWQgfHwgcHJvcGVydHkub3B0aW9ucy5taW5JdGVtcyA+IDBcIlxuICAgICAgW2ZpbHRlcl09XCJ0cnVlXCJcbiAgICAgIFtmaWx0ZXJWYWx1ZV09XCJmaWx0ZXJWYWx1ZVwiXG4gICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiXG4gICAgICBbc2hvd0NsZWFyXT1cIiFwcm9wZXJ0eS5yZXF1aXJlZCB8fCBwcm9wZXJ0eS5vcHRpb25zLm1pbkl0ZW1zIDw9IDBcIlxuICAgICAgKG9uRmlsdGVyKT1cIm9uT3B0aW9uc0ZpbHRlcmVkKCRldmVudClcIlxuICAgICAgKG9uQ2hhbmdlKT1cIm9uT3B0aW9uc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwibG9hZGluZyA/ICdsb2FkaW5nJyA6ICcnXCJcbiAgICAgIFtmaWx0ZXJQbGFjZWhvbGRlcl09XCJwcm9wZXJ0eT8ub3B0aW9ucz8ubGluaz8uaHJlZiA/ICdzZWFyY2ggZm9yIG1vcmUgcmVzdWx0cycgOiAnJ1wiXG4gICAgICBbZW1wdHlGaWx0ZXJNZXNzYWdlXT1cImxvYWRpbmcgPyAnTG9hZGluZy4uLicgOiAnJ1wiXG4gICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtXCI+XG4gICAgICAgICAgPHNwYW4gW3BUb29sdGlwXT1cImdldFRvb2x0aXAoaXRlbSlcIj57e2dldExhYmVsKGl0ZW0pfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XG4gICAgICAgICAgPHNwYW4gW3BUb29sdGlwXT1cImdldFRvb2x0aXAoaXRlbSlcIj57e2dldExhYmVsKGl0ZW0pfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJpY29uXCI+XG4gICAgICAgICAgPFNlYXJjaEljb24gKm5nSWY9XCIhbG9hZGluZ1wiPjwvU2VhcmNoSWNvbj5cbiAgICAgICAgICA8U3Bpbm5lckljb24gKm5nSWY9XCJsb2FkaW5nXCIgW3NwaW5dPVwidHJ1ZVwiPjwvU3Bpbm5lckljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLWRyb3Bkb3duPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhcHJvcGVydHkub3B0aW9ucy5tYXhJdGVtcyB8fCBwcm9wZXJ0eS5vcHRpb25zLm1heEl0ZW1zID09IDFcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRPcHRpb25zU2luZ2xlUmVmID8/IGRlZmF1bHRJbnB1dE9wdGlvbnNTaW5nbGU7IGNvbnRleHQ6IHsgcHJvcGVydHk6IHByb3BlcnR5LCBhcGlOYW1lOiBhcGlOYW1lIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dE9wdGlvbnNNdWx0aXBsZSBsZXQtcHJvcGVydHk9XCJwcm9wZXJ0eVwiIGxldC10ZW1wbGF0ZT1cInRlbXBsYXRlXCI+XG4gICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiXG4gICAgICBbaWRdPVwicHJvcGVydHkubmFtZVwiXG4gICAgICBbb3B0aW9uc109XCJwcm9wZXJ0eS5vcHRpb25zLmlubGluZVwiXG4gICAgICBbZmlsdGVyQnldPVwicHJvbXB0RmllbGQgKyAnLCcgKyB2YWx1ZUZpZWxkXCJcbiAgICAgIFtvcHRpb25MYWJlbF09XCJwcm9tcHRGaWVsZFwiXG4gICAgICBbb3B0aW9uVmFsdWVdPVwidmFsdWVGaWVsZFwiXG4gICAgICBbcmVhZG9ubHldPVwicHJvcGVydHkucmVhZE9ubHlcIlxuICAgICAgW3JlcXVpcmVkXT1cInByb3BlcnR5LnJlcXVpcmVkIHx8IHByb3BlcnR5Lm9wdGlvbnMubWluSXRlbXMgPiAwXCJcbiAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXG4gICAgICBbZmlsdGVyVmFsdWVdPVwiZmlsdGVyVmFsdWVcIlxuICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgIFtzaG93VG9nZ2xlQWxsXT1cInRydWVcIlxuICAgICAgKG9uRmlsdGVyKT1cIm9uT3B0aW9uc0ZpbHRlcmVkKCRldmVudClcIlxuICAgICAgKG9uQ2hhbmdlKT1cIm9uT3B0aW9uc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcbiAgICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwibG9hZGluZyA/ICdsb2FkaW5nJyA6ICcnXCJcbiAgICAgIFtmaWx0ZXJQbGFjZUhvbGRlcl09XCJwcm9wZXJ0eT8ub3B0aW9ucz8ubGluaz8uaHJlZiA/ICdzZWFyY2ggZm9yIG1vcmUgcmVzdWx0cycgOiAnJ1wiXG4gICAgICBbZW1wdHlGaWx0ZXJNZXNzYWdlXT1cImxvYWRpbmcgPyAnTG9hZGluZy4uLicgOiAnJ1wiXG4gICAgICBbc2VsZWN0aW9uTGltaXRdPVwicHJvcGVydHkub3B0aW9ucy5tYXhJdGVtc1wiXG4gICAgICBkaXNwbGF5PVwiY2hpcFwiXG4gICAgPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFsdWUgcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtc1wiPlxuICAgICAgPHAtY2hpcFxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtwVG9vbHRpcF09XCJnZXRUb29sdGlwKGl0ZW0pXCJcbiAgICAgICAgW2xhYmVsXT1cImdldExhYmVsKGl0ZW0pXCJcbiAgICAgICAgW3JlbW92YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgKG9uUmVtb3ZlKT1cInJlbW92ZUJ5VmFsdWUoZ2V0VmFsdWUoaXRlbSkpXCJcbiAgICAgID5cbiAgICAgIDwvcC1jaGlwPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cbiAgICAgICAgPHNwYW4gW3BUb29sdGlwXT1cImdldFRvb2x0aXAoaXRlbSlcIj57e2dldExhYmVsKGl0ZW0pfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsdGVyaWNvblwiPlxuICAgICAgPFNlYXJjaEljb24gKm5nSWY9XCIhbG9hZGluZ1wiPjwvU2VhcmNoSWNvbj5cbiAgICAgIDxTcGlubmVySWNvbiAqbmdJZj1cImxvYWRpbmdcIiBbc3Bpbl09XCJ0cnVlXCI+PC9TcGlubmVySWNvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3AtbXVsdGlTZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIihwcm9wZXJ0eS5vcHRpb25zLm1heEl0ZW1zID8/IDApID4gMVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dE9wdGlvbnNNdWx0aXBsZVJlZiA/PyBkZWZhdWx0SW5wdXRPcHRpb25zTXVsdGlwbGU7IGNvbnRleHQ6IHsgcHJvcGVydHk6IHByb3BlcnR5LCBhcGlOYW1lOiBhcGlOYW1lIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRPYmplY3QgbGV0LXByb3BlcnR5PVwicHJvcGVydHlcIiBsZXQtdGVtcGxhdGU9XCJ0ZW1wbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnJhY2VcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxydy1pbnB1dC10ZW1wbGF0ZSBbZm9ybUdyb3VwXT1cImlubmVyRm9ybUdyb3VwXCIgW3RlbXBsYXRlXT1cInByb3BlcnR5Ll90ZW1wbGF0ZXMuZGVmYXVsdFwiIFthcGlOYW1lXT1cImFwaU5hbWVcIj48L3J3LWlucHV0LXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dE9iamVjdFJlZiB8fCBkZWZhdWx0SW5wdXRPYmplY3Q7IGNvbnRleHQ6IHsgcHJvcGVydHk6IHByb3BlcnR5LCBpbm5lckZvcm1Hcm91cDogaW5uZXJGb3JtR3JvdXAsIGFwaU5hbWU6IGFwaU5hbWUgfVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+IiwiPGRpdiBbbmdTd2l0Y2hdPVwicHJvcGVydHkudHlwZVwiPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuSGlkZGVuXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwiaGlkZGVuXCIgW3ZhbHVlXT1cInByb3BlcnR5LnZhbHVlXCIgLz5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlRleHRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDx0ZXh0YXJlYSAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlRleHRhcmVhXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBwSW5wdXRUZXh0YXJlYSBjbGFzcz1cInctZnVsbCBwLWlucHV0dGV4dGFyZWEgcC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1lbGVtZW50XCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiBbY29sc109XCJwcm9wZXJ0eS5jb2xzXCIgW3Jvd3NdPVwicHJvcGVydHkucm93c1wiPjwvdGV4dGFyZWE+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5TZWFyY2hcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJzZWFyY2hcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuVGVsXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwidGVsXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlVybFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInVybFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5FbWFpbFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cImVtYWlsXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlBhc3N3b3JkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwicGFzc3dvcmRcIiBwUGFzc3dvcmQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkRhdGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXRcIiBbc2hvd1dlZWtdPVwidHJ1ZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgPHAtY2FsZW5kYXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5Nb250aFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiIFtzaG93V2Vla109XCJmYWxzZVwiIHZpZXc9XCJtb250aFwiIFtzaG93SWNvbl09XCJ0cnVlXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuV2Vla1wiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cIndlZWtcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPHAtY2FsZW5kYXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5UaW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJ0aW1lRm9ybWF0XCIgW3Nob3dUaW1lXT1cInRydWVcIiBbdGltZU9ubHldPVwidHJ1ZVwiIFtzaG93V2Vla109XCJmYWxzZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgPHAtY2FsZW5kYXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5EYXRldGltZUxvY2FsXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1dlZWtdPVwiZmFsc2VcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cblxuICAgIDxwLWlucHV0TnVtYmVyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuTnVtYmVyXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBtb2RlPVwiZGVjaW1hbFwiIFtzaG93QnV0dG9uc109XCIhcHJvcGVydHkucmVhZE9ubHlcIiBjbGFzcz1cInctZnVsbFwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1pbnB1dE51bWJlcj5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlJhbmdlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwicmFuZ2VcIiBbbWluXT1cInByb3BlcnR5Lm1pblwiIFttYXhdPVwicHJvcGVydHkubWF4XCIgW3N0ZXBdPVwicHJvcGVydHkuc3RlcFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5Db2xvclwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cImNvbG9yXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5Cb29sXCI+XG4gICAgICAgIDxwLWNoZWNrYm94ICpuZ0lmPVwicHJvcGVydHkucmVxdWlyZWRcIiBbYmluYXJ5XT1cInRydWVcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtyZWFkb25seV09XCJwcm9wZXJ0eS5yZWFkT25seSFcIj48L3AtY2hlY2tib3g+XG4gICAgICAgIDxwLXRyaVN0YXRlQ2hlY2tib3ggKm5nSWY9XCIhcHJvcGVydHkucmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtyZWFkb25seV09XCJwcm9wZXJ0eS5yZWFkT25seSFcIj48L3AtdHJpU3RhdGVDaGVja2JveD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxwLWNhbGVuZGFyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRGF0ZXRpbWVPZmZzZXRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXRcIiBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93V2Vla109XCJmYWxzZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgPHAtY2FsZW5kYXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5EdXJhdGlvblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgW2RhdGVGb3JtYXRdPVwidGltZUZvcm1hdFwiIFtzaG93VGltZV09XCJ0cnVlXCIgW3RpbWVPbmx5XT1cInRydWVcIiBbc2hvd1dlZWtdPVwiZmFsc2VcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cblxuICAgIDxydy1pbWFnZSAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkltYWdlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW3Byb3BlcnR5XT1cIiRhbnkocHJvcGVydHkpXCI+PC9ydy1pbWFnZT5cblxuICAgIDxydy1maWxlICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRmlsZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtmaWxlTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2FjY2VwdF09XCIkYW55KHByb3BlcnR5LnBsYWNlaG9sZGVyKVwiPjwvcnctZmlsZT5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hEZWZhdWx0IFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuPC9kaXY+XG4iLCI8cnctZm9ybS1lbGVtZW50ICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiB0ZW1wbGF0ZS5wcm9wZXJ0aWVzXCIgW3Byb3BlcnR5XT1cInByb3BlcnR5XCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiPjwvcnctZm9ybS1lbGVtZW50PiJdfQ==
|
|
@@ -55,6 +55,7 @@ import { SearchIcon } from 'primeng/icons/search';
|
|
|
55
55
|
import { SpinnerIcon } from 'primeng/icons/spinner';
|
|
56
56
|
import { ClrFormatPipe } from './pipes/clr-format.pipe';
|
|
57
57
|
import { PropertyTypeFormatPipe } from './pipes/property-type-format.pipe';
|
|
58
|
+
import { OpenTelemetryService } from './services/opentelemetry.service';
|
|
58
59
|
import * as i0 from "@angular/core";
|
|
59
60
|
export function initializeSettings(settingsService) {
|
|
60
61
|
return async () => await settingsService.ensureInitialized();
|
|
@@ -160,6 +161,7 @@ export class RestworldClientModule {
|
|
|
160
161
|
ClrFormatPipe,
|
|
161
162
|
ConfirmationService,
|
|
162
163
|
MessageService,
|
|
164
|
+
OpenTelemetryService,
|
|
163
165
|
RestWorldClientCollection,
|
|
164
166
|
{
|
|
165
167
|
provide: APP_INITIALIZER,
|
|
@@ -316,6 +318,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
316
318
|
ClrFormatPipe,
|
|
317
319
|
ConfirmationService,
|
|
318
320
|
MessageService,
|
|
321
|
+
OpenTelemetryService,
|
|
319
322
|
RestWorldClientCollection,
|
|
320
323
|
{
|
|
321
324
|
provide: APP_INITIALIZER,
|
|
@@ -326,4 +329,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
326
329
|
]
|
|
327
330
|
}]
|
|
328
331
|
}] });
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3Jlc3R3b3JsZC1jbGllbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNs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WjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJ1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYW5lbCc7XHJcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xyXG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xyXG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XHJcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcclxuaW1wb3J0IHsgVHJpU3RhdGVDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdHJpc3RhdGVjaGVja2JveCc7XHJcbmltcG9ydCB7IEF2YXRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXZhdGFyJztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFZhbGRlbW9ydE1vZHVsZSB9IGZyb20gJ25neC12YWxkZW1vcnQnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29sb3JQaWNrZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbG9ycGlja2VyJztcclxuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuaW1wb3J0IHsgQ2hpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hpcCc7XHJcblxyXG5pbXBvcnQgeyBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvcmVzdHdvcmxkLWxpc3Qtdmlldy9yZXN0d29ybGQtbGlzdC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy9yZXN0d29ybGQtZWRpdC12aWV3L3Jlc3R3b3JsZC1lZGl0LXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbiB9IGZyb20gJy4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgQXZhdGFyR2VuZXJhdG9yIH0gZnJvbSAnLi9zZXJ2aWNlcy9hdmF0YXItZ2VuZXJhdG9yJztcclxuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWltYWdlL3Jlc3R3b3JsZC1pbWFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWZpbGUvcmVzdHdvcmxkLWZpbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2FmZVVybFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtdXJsLnBpcGUnO1xyXG5pbXBvcnQgeyBBc1BpcGUgfSBmcm9tICcuL3BpcGVzL2FzLnBpcGUnO1xyXG5pbXBvcnQgeyBTcGxpdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc3BsaXRidXR0b24nO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWF2YXRhci9yZXN0d29ybGQtYXZhdGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1sYWJlbC9yZXN0d29ybGQtbGFiZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtdmFsaWRhdGlvbi1lcnJvcnMvcmVzdHdvcmxkLXZhbGlkYXRpb24tZXJyb3JzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZvcm1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWZvcm0vcmVzdHdvcmxkLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLXRhYmxlL3Jlc3R3b3JsZC10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRNZW51QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1tZW51LWJ1dHRvbi9yZXN0d29ybGQtbWVudS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkSWROYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pZC1uYXZpZ2F0aW9uL3Jlc3R3b3JsZC1pZC1uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZvcm1FbGVtZW50Q29tcG9uZW50LCBSZXN0V29ybGRJbnB1dENvbGxlY3Rpb25Db21wb25lbnQsIFJlc3RXb3JsZElucHV0Q29tcG9uZW50LCBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dE9iamVjdENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQsIFJlc3RXb3JsZElucHV0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXRzJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkRGlzcGxheUVsZW1lbnRDb21wb25lbnQsIFJlc3RXb3JsZERpc3BsYXlDb2xsZWN0aW9uQ29tcG9uZW50LCBSZXN0V29ybGREaXNwbGF5Q29tcG9uZW50LCBSZXN0V29ybGREaXNwbGF5RHJvcGRvd25Db21wb25lbnQsIFJlc3RXb3JsZERpc3BsYXlPYmplY3RDb21wb25lbnQsIFJlc3RXb3JsZERpc3BsYXlTaW1wbGVDb21wb25lbnQsIFJlc3RXb3JsZERpc3BsYXlUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtZGlzcGxheXMvcmVzdHdvcmxkLWRpc3BsYXlzJztcclxuaW1wb3J0IHsgSGFsQ2xpZW50TW9kdWxlIH0gZnJvbSAnQHdlcnR6dWkvbmd4LWhhbC1jbGllbnQnO1xyXG5pbXBvcnQgeyBTZWFyY2hJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9zZWFyY2gnO1xyXG5pbXBvcnQgeyBTcGlubmVySWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvc3Bpbm5lcic7XHJcbmltcG9ydCB7IENsckZvcm1hdFBpcGUgfSBmcm9tICcuL3BpcGVzL2Nsci1mb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IFByb3BlcnR5VHlwZUZvcm1hdFBpcGUgfSBmcm9tICcuL3BpcGVzL3Byb3BlcnR5LXR5cGUtZm9ybWF0LnBpcGUnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVTZXR0aW5ncyhzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSk6ICgpID0+IFByb21pc2U8dm9pZD4ge1xyXG4gIHJldHVybiBhc3luYyAoKSA9PiBhd2FpdCBzZXR0aW5nc1NlcnZpY2UuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcclxufVxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEFzUGlwZSxcclxuICAgIENsckZvcm1hdFBpcGUsXHJcbiAgICBQcm9wZXJ0eVR5cGVGb3JtYXRQaXBlLFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheUNvbGxlY3Rpb25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGREaXNwbGF5Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheURyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheUVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGREaXNwbGF5T2JqZWN0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheVNpbXBsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlUZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRmlsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRGb3JtRWxlbWVudENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEltYWdlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0VGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRMYWJlbENvbXBvbmVudCxcclxuICAgIFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudCxcclxuICAgIFNhZmVVcmxQaXBlLFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQXZhdGFyTW9kdWxlLFxyXG4gICAgQXZhdGFyTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgQ2FsZW5kYXJNb2R1bGUsXHJcbiAgICBDaGVja2JveE1vZHVsZSxcclxuICAgIENoaXBNb2R1bGUsXHJcbiAgICBDb2xvclBpY2tlck1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENvbmZpcm1EaWFsb2dNb2R1bGUsXHJcbiAgICBDb250ZXh0TWVudU1vZHVsZSxcclxuICAgIERpYWxvZ01vZHVsZSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgSGFsQ2xpZW50TW9kdWxlLFxyXG4gICAgSW1hZ2VDcm9wcGVyTW9kdWxlLFxyXG4gICAgSW5wdXROdW1iZXJNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBNZXNzYWdlc01vZHVsZSxcclxuICAgIE11bHRpU2VsZWN0TW9kdWxlLFxyXG4gICAgUGFuZWxNb2R1bGUsXHJcbiAgICBQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgUmlwcGxlTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgU2Nyb2xsaW5nTW9kdWxlLFxyXG4gICAgU2VhcmNoSWNvbixcclxuICAgIFNrZWxldG9uTW9kdWxlLFxyXG4gICAgU3Bpbm5lckljb24sXHJcbiAgICBTcGxpdEJ1dHRvbk1vZHVsZSxcclxuICAgIFRhYmxlTW9kdWxlLFxyXG4gICAgVGFiVmlld01vZHVsZSxcclxuICAgIFRvYXN0TW9kdWxlLFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIFRyaVN0YXRlQ2hlY2tib3hNb2R1bGUsXHJcbiAgICBWYWxkZW1vcnRNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBBc1BpcGUsXHJcbiAgICBDbHJGb3JtYXRQaXBlLFxyXG4gICAgUmVzdFdvcmxkQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheUNvbGxlY3Rpb25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGREaXNwbGF5Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheURyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheUVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGREaXNwbGF5T2JqZWN0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheVNpbXBsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlUZW1wbGF0ZUNvbXBvbmVudCxcclxuICAgIFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRmlsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZvcm1Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRGb3JtRWxlbWVudENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElkTmF2aWdhdGlvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEltYWdlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0VGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRMYWJlbENvbXBvbmVudCxcclxuICAgIFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkTWVudUJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudCxcclxuICAgIFNhZmVVcmxQaXBlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBBdmF0YXJHZW5lcmF0b3IsXHJcbiAgICBDbHJGb3JtYXRQaXBlLFxyXG4gICAgQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbixcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG4gICAgICB1c2VGYWN0b3J5OiBpbml0aWFsaXplU2V0dGluZ3MsXHJcbiAgICAgIGRlcHM6IFtTZXR0aW5nc1NlcnZpY2VdLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdHdvcmxkQ2xpZW50TW9kdWxlIHsgfVxyXG4iXX0=
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3Jlc3R3b3JsZC1jbGllbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNs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VSxFQUFFLGtCQUFrQjs0QkFDOUIsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDOzRCQUN2QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJ1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYW5lbCc7XHJcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xyXG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xyXG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcic7XHJcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcclxuaW1wb3J0IHsgVHJpU3RhdGVDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdHJpc3RhdGVjaGVja2JveCc7XHJcbmltcG9ydCB7IEF2YXRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXZhdGFyJztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFZhbGRlbW9ydE1vZHVsZSB9IGZyb20gJ25neC12YWxkZW1vcnQnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29sb3JQaWNrZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbG9ycGlja2VyJztcclxuaW1wb3J0IHsgQ29udGV4dE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuaW1wb3J0IHsgQ2hpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hpcCc7XHJcblxyXG5pbXBvcnQgeyBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvcmVzdHdvcmxkLWxpc3Qtdmlldy9yZXN0d29ybGQtbGlzdC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJFU1R3b3JsZEVkaXRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy9yZXN0d29ybGQtZWRpdC12aWV3L3Jlc3R3b3JsZC1lZGl0LXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbiB9IGZyb20gJy4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgQXZhdGFyR2VuZXJhdG9yIH0gZnJvbSAnLi9zZXJ2aWNlcy9hdmF0YXItZ2VuZXJhdG9yJztcclxuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWltYWdlL3Jlc3R3b3JsZC1pbWFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWZpbGUvcmVzdHdvcmxkLWZpbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2FmZVVybFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtdXJsLnBpcGUnO1xyXG5pbXBvcnQgeyBBc1BpcGUgfSBmcm9tICcuL3BpcGVzL2FzLnBpcGUnO1xyXG5pbXBvcnQgeyBTcGxpdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc3BsaXRidXR0b24nO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWF2YXRhci9yZXN0d29ybGQtYXZhdGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1sYWJlbC9yZXN0d29ybGQtbGFiZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtdmFsaWRhdGlvbi1lcnJvcnMvcmVzdHdvcmxkLXZhbGlkYXRpb24tZXJyb3JzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZvcm1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWZvcm0vcmVzdHdvcmxkLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLXRhYmxlL3Jlc3R3b3JsZC10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRNZW51QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1tZW51LWJ1dHRvbi9yZXN0d29ybGQtbWVudS1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkSWROYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pZC1uYXZpZ2F0aW9uL3Jlc3R3b3JsZC1pZC1uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZEZvcm1FbGVtZW50Q29tcG9uZW50LCBSZXN0V29ybGRJbnB1dENvbGxlY3Rpb25Db21wb25lbnQsIFJlc3RXb3JsZElucHV0Q29tcG9uZW50LCBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50LCBSZXN0V29ybGRJbnB1dE9iamVjdENvbXBvbmVudCwgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQsIFJlc3RXb3JsZElucHV0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXRzJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkRGlzcGxheUVsZW1lbnRDb21wb25lbnQsIFJlc3RXb3JsZERpc3BsYXlDb2xsZWN0aW9uQ29tcG9uZW50LCBSZXN0V29ybGREaXNwbGF5Q29tcG9uZW50LCBSZXN0V29ybGREaXNwbGF5RHJvcGRvd25Db21wb25lbnQsIFJlc3RXb3JsZERpc3BsYXlPYmplY3RDb21wb25lbnQsIFJlc3RXb3JsZERpc3BsYXlTaW1wbGVDb21wb25lbnQsIFJlc3RXb3JsZERpc3BsYXlUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXN0d29ybGQtZGlzcGxheXMvcmVzdHdvcmxkLWRpc3BsYXlzJztcclxuaW1wb3J0IHsgSGFsQ2xpZW50TW9kdWxlIH0gZnJvbSAnQHdlcnR6dWkvbmd4LWhhbC1jbGllbnQnO1xyXG5pbXBvcnQgeyBTZWFyY2hJY29uIH0gZnJvbSAncHJpbWVuZy9pY29ucy9zZWFyY2gnO1xyXG5pbXBvcnQgeyBTcGlubmVySWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMvc3Bpbm5lcic7XHJcbmltcG9ydCB7IENsckZvcm1hdFBpcGUgfSBmcm9tICcuL3BpcGVzL2Nsci1mb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IFByb3BlcnR5VHlwZUZvcm1hdFBpcGUgfSBmcm9tICcuL3BpcGVzL3Byb3BlcnR5LXR5cGUtZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBPcGVuVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvb3BlbnRlbGVtZXRyeS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UpOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHtcclxuICByZXR1cm4gYXN5bmMgKCkgPT4gYXdhaXQgc2V0dGluZ3NTZXJ2aWNlLmVuc3VyZUluaXRpYWxpemVkKCk7XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBBc1BpcGUsXHJcbiAgICBDbHJGb3JtYXRQaXBlLFxyXG4gICAgUHJvcGVydHlUeXBlRm9ybWF0UGlwZSxcclxuICAgIFJlc3RXb3JsZEF2YXRhckNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEF2YXRhckNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlFbGVtZW50Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheU9iamVjdENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlTaW1wbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGREaXNwbGF5VGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBSRVNUd29ybGRFZGl0Vmlld0NvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZpbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRGb3JtQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJZE5hdmlnYXRpb25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbWFnZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0T2JqZWN0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkTGFiZWxDb21wb25lbnQsXHJcbiAgICBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZE1lbnVCdXR0b25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRUYWJsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQsXHJcbiAgICBTYWZlVXJsUGlwZSxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEF2YXRhck1vZHVsZSxcclxuICAgIEF2YXRhck1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIENhbGVuZGFyTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hNb2R1bGUsXHJcbiAgICBDaGlwTW9kdWxlLFxyXG4gICAgQ29sb3JQaWNrZXJNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb25maXJtRGlhbG9nTW9kdWxlLFxyXG4gICAgQ29udGV4dE1lbnVNb2R1bGUsXHJcbiAgICBEaWFsb2dNb2R1bGUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgIERyb3Bkb3duTW9kdWxlLFxyXG4gICAgRmlsZVVwbG9hZE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEhhbENsaWVudE1vZHVsZSxcclxuICAgIEltYWdlQ3JvcHBlck1vZHVsZSxcclxuICAgIElucHV0TnVtYmVyTW9kdWxlLFxyXG4gICAgSW5wdXRUZXh0TW9kdWxlLFxyXG4gICAgTWVzc2FnZXNNb2R1bGUsXHJcbiAgICBNdWx0aVNlbGVjdE1vZHVsZSxcclxuICAgIFBhbmVsTW9kdWxlLFxyXG4gICAgUHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFJpcHBsZU1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFNjcm9sbGluZ01vZHVsZSxcclxuICAgIFNlYXJjaEljb24sXHJcbiAgICBTa2VsZXRvbk1vZHVsZSxcclxuICAgIFNwaW5uZXJJY29uLFxyXG4gICAgU3BsaXRCdXR0b25Nb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIFRhYlZpZXdNb2R1bGUsXHJcbiAgICBUb2FzdE1vZHVsZSxcclxuICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICBUcmlTdGF0ZUNoZWNrYm94TW9kdWxlLFxyXG4gICAgVmFsZGVtb3J0TW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQXNQaXBlLFxyXG4gICAgQ2xyRm9ybWF0UGlwZSxcclxuICAgIFJlc3RXb3JsZEF2YXRhckNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlDb2xsZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlFbGVtZW50Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRGlzcGxheU9iamVjdENvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZERpc3BsYXlTaW1wbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGREaXNwbGF5VGVtcGxhdGVDb21wb25lbnQsXHJcbiAgICBSRVNUd29ybGRFZGl0Vmlld0NvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZEZpbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRGb3JtQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJZE5hdmlnYXRpb25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbWFnZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZElucHV0T2JqZWN0Q29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRJbnB1dFRlbXBsYXRlQ29tcG9uZW50LFxyXG4gICAgUmVzdFdvcmxkTGFiZWxDb21wb25lbnQsXHJcbiAgICBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZE1lbnVCdXR0b25Db21wb25lbnQsXHJcbiAgICBSZXN0V29ybGRUYWJsZUNvbXBvbmVudCxcclxuICAgIFJlc3RXb3JsZFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQsXHJcbiAgICBTYWZlVXJsUGlwZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQXZhdGFyR2VuZXJhdG9yLFxyXG4gICAgQ2xyRm9ybWF0UGlwZSxcclxuICAgIENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBNZXNzYWdlU2VydmljZSxcclxuICAgIE9wZW5UZWxlbWV0cnlTZXJ2aWNlLFxyXG4gICAgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbixcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG4gICAgICB1c2VGYWN0b3J5OiBpbml0aWFsaXplU2V0dGluZ3MsXHJcbiAgICAgIGRlcHM6IFtTZXR0aW5nc1NlcnZpY2VdLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdHdvcmxkQ2xpZW50TW9kdWxlIHsgfVxyXG4iXX0=
|