@wertzui/ngx-restworld-client 8.0.0 → 8.1.1
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/esm2020/lib/components/restworld-inputs/restworld-inputs.mjs +18 -9
- package/esm2020/lib/components/restworld-table/restworld-table.component.mjs +14 -6
- package/esm2020/lib/models/special-properties.mjs +1 -1
- package/fesm2015/wertzui-ngx-restworld-client.mjs +30 -13
- package/fesm2015/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/fesm2020/wertzui-ngx-restworld-client.mjs +30 -13
- package/fesm2020/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/lib/components/restworld-inputs/restworld-inputs.d.ts +3 -0
- package/lib/components/restworld-inputs/restworld-inputs.d.ts.map +1 -1
- package/lib/components/restworld-table/restworld-table.component.d.ts +2 -0
- package/lib/components/restworld-table/restworld-table.component.d.ts.map +1 -1
- package/lib/models/special-properties.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -258,12 +258,10 @@ export class RestWorldInputSimpleComponent {
|
|
|
258
258
|
return PropertyType;
|
|
259
259
|
}
|
|
260
260
|
get dateFormat() {
|
|
261
|
-
return
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
.replace("3333", "yy")
|
|
266
|
-
.replace("33", "y");
|
|
261
|
+
return RestWorldInputSimpleComponent._dateFormat;
|
|
262
|
+
}
|
|
263
|
+
get timeFormat() {
|
|
264
|
+
return RestWorldInputSimpleComponent._timeFormat;
|
|
267
265
|
}
|
|
268
266
|
get formControl() {
|
|
269
267
|
if (this._formControl === undefined)
|
|
@@ -278,11 +276,22 @@ export class RestWorldInputSimpleComponent {
|
|
|
278
276
|
this._formControl = formGroup.controls[this.property.name];
|
|
279
277
|
}
|
|
280
278
|
}
|
|
279
|
+
RestWorldInputSimpleComponent._dateFormat = new Date(3333, 10, 22) // months start at 0 in JS
|
|
280
|
+
.toLocaleDateString()
|
|
281
|
+
.replace("22", "dd")
|
|
282
|
+
.replace("11", "mm")
|
|
283
|
+
.replace("3333", "yy")
|
|
284
|
+
.replace("33", "y");
|
|
285
|
+
RestWorldInputSimpleComponent._timeFormat = new Date(1, 1, 1, 22, 33, 44)
|
|
286
|
+
.toLocaleTimeString()
|
|
287
|
+
.replace("22", "hh")
|
|
288
|
+
.replace("33", "mm")
|
|
289
|
+
.replace("44", "ss");
|
|
281
290
|
RestWorldInputSimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestWorldInputSimpleComponent, deps: [{ token: i5.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
282
|
-
RestWorldInputSimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: RestWorldInputSimpleComponent, selector: "rw-input-simple", inputs: { property: "property" }, ngImport: i0, template: "<div [ngSwitch]=\"property.type\">\n\n <input *ngSwitchCase=\"PropertyType.Hidden\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"hidden\" [value]=\"property.value\" />\n
|
|
291
|
+
RestWorldInputSimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: RestWorldInputSimpleComponent, selector: "rw-input-simple", inputs: { property: "property" }, ngImport: i0, template: "<div [ngSwitch]=\"property.type\">\n\n <input *ngSwitchCase=\"PropertyType.Hidden\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"hidden\" [value]=\"property.value\" />\n\n <input *ngSwitchCase=\"PropertyType.Text\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"text\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <textarea *ngSwitchCase=\"PropertyType.Textarea\" [formControlName]=\"property.name\" [id]=\"property.name\" pInputTextarea class=\"w-full p-inputtextarea p-inputtext p-component p-element\" [class.p-disabled]=\"property.readOnly\" [cols]=\"property.cols\" [rows]=\"property.rows\"></textarea>\n\n <input *ngSwitchCase=\"PropertyType.Search\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"search\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Tel\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"tel\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Url\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"url\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Email\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"email\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Password\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"password\" pPassword class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <p-calendar *ngSwitchCase=\"PropertyType.Date\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showWeek]=\"true\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <p-calendar *ngSwitchCase=\"PropertyType.Month\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showWeek]=\"false\" view=\"month\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <input *ngSwitchCase=\"PropertyType.Week\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"week\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <p-calendar *ngSwitchCase=\"PropertyType.Time\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"timeFormat\" [showTime]=\"true\" [timeOnly]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <p-calendar *ngSwitchCase=\"PropertyType.DatetimeLocal\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <p-inputNumber *ngSwitchCase=\"PropertyType.Number\" [formControlName]=\"property.name\" [id]=\"property.name\" mode=\"decimal\" [showButtons]=\"!property.readOnly\" class=\"w-full\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-inputNumber>\n\n <input *ngSwitchCase=\"PropertyType.Range\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"range\" [min]=\"property.min\" [max]=\"property.max\" [step]=\"property.step\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Color\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"color\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <ng-container *ngSwitchCase=\"PropertyType.Bool\">\n <p-checkbox *ngIf=\"property.required\" [binary]=\"true\" [formControl]=\"formControl\" [id]=\"property.name\" [readonly]=\"property.readOnly!\"></p-checkbox>\n <p-triStateCheckbox *ngIf=\"!property.required\" [formControl]=\"formControl\" [id]=\"property.name\" [readonly]=\"property.readOnly!\"></p-triStateCheckbox>\n </ng-container>\n\n <p-calendar *ngSwitchCase=\"PropertyType.DatetimeOffset\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <p-calendar *ngSwitchCase=\"PropertyType.Duration\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"timeFormat\" [showTime]=\"true\" [timeOnly]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <rw-image *ngSwitchCase=\"PropertyType.Image\" [formControlName]=\"property.name\" [property]=\"property | as:PropertyWithImage\"></rw-image>\n\n <rw-file *ngSwitchCase=\"PropertyType.File\" [formControlName]=\"property.name\" [fileName]=\"property.name\" [accept]=\"property.placeholder\"></rw-file>\n\n <input *ngSwitchDefault [formControlName]=\"property.name\" [id]=\"property.name\" type=\"text\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i15.InputText, selector: "[pInputText]" }, { kind: "component", type: i16.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i17.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "view", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i18.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "component", type: i19.TriStateCheckbox, selector: "p-triStateCheckbox", inputs: ["disabled", "name", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "label", "readonly", "checkboxTrueIcon", "checkboxFalseIcon"], outputs: ["onChange"] }, { kind: "component", type: i20.RestWorldImageComponent, selector: "rw-image", inputs: ["property"] }, { kind: "component", type: i21.RestWorldFileComponent, selector: "rw-file", inputs: ["accept", "fileName"] }, { kind: "pipe", type: i4.AsPipe, name: "as" }], viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }] });
|
|
283
292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestWorldInputSimpleComponent, decorators: [{
|
|
284
293
|
type: Component,
|
|
285
|
-
args: [{ selector: 'rw-input-simple', viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: "<div [ngSwitch]=\"property.type\">\n\n <input *ngSwitchCase=\"PropertyType.Hidden\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"hidden\" [value]=\"property.value\" />\n
|
|
294
|
+
args: [{ selector: 'rw-input-simple', viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }], template: "<div [ngSwitch]=\"property.type\">\n\n <input *ngSwitchCase=\"PropertyType.Hidden\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"hidden\" [value]=\"property.value\" />\n\n <input *ngSwitchCase=\"PropertyType.Text\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"text\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <textarea *ngSwitchCase=\"PropertyType.Textarea\" [formControlName]=\"property.name\" [id]=\"property.name\" pInputTextarea class=\"w-full p-inputtextarea p-inputtext p-component p-element\" [class.p-disabled]=\"property.readOnly\" [cols]=\"property.cols\" [rows]=\"property.rows\"></textarea>\n\n <input *ngSwitchCase=\"PropertyType.Search\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"search\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Tel\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"tel\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Url\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"url\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Email\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"email\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Password\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"password\" pPassword class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <p-calendar *ngSwitchCase=\"PropertyType.Date\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showWeek]=\"true\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <p-calendar *ngSwitchCase=\"PropertyType.Month\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showWeek]=\"false\" view=\"month\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <input *ngSwitchCase=\"PropertyType.Week\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"week\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <p-calendar *ngSwitchCase=\"PropertyType.Time\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"timeFormat\" [showTime]=\"true\" [timeOnly]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <p-calendar *ngSwitchCase=\"PropertyType.DatetimeLocal\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <p-inputNumber *ngSwitchCase=\"PropertyType.Number\" [formControlName]=\"property.name\" [id]=\"property.name\" mode=\"decimal\" [showButtons]=\"!property.readOnly\" class=\"w-full\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-inputNumber>\n\n <input *ngSwitchCase=\"PropertyType.Range\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"range\" [min]=\"property.min\" [max]=\"property.max\" [step]=\"property.step\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <input *ngSwitchCase=\"PropertyType.Color\" [formControlName]=\"property.name\" [id]=\"property.name\" type=\"color\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n\n <ng-container *ngSwitchCase=\"PropertyType.Bool\">\n <p-checkbox *ngIf=\"property.required\" [binary]=\"true\" [formControl]=\"formControl\" [id]=\"property.name\" [readonly]=\"property.readOnly!\"></p-checkbox>\n <p-triStateCheckbox *ngIf=\"!property.required\" [formControl]=\"formControl\" [id]=\"property.name\" [readonly]=\"property.readOnly!\"></p-triStateCheckbox>\n </ng-container>\n\n <p-calendar *ngSwitchCase=\"PropertyType.DatetimeOffset\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"dateFormat\" [showTime]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <p-calendar *ngSwitchCase=\"PropertyType.Duration\" [formControlName]=\"property.name\" [id]=\"property.name\" [dateFormat]=\"timeFormat\" [showTime]=\"true\" [timeOnly]=\"true\" [showWeek]=\"false\" [showIcon]=\"true\" styleClass=\"w-full\" [class.p-disabled]=\"property.readOnly\"></p-calendar>\n\n <rw-image *ngSwitchCase=\"PropertyType.Image\" [formControlName]=\"property.name\" [property]=\"property | as:PropertyWithImage\"></rw-image>\n\n <rw-file *ngSwitchCase=\"PropertyType.File\" [formControlName]=\"property.name\" [fileName]=\"property.name\" [accept]=\"property.placeholder\"></rw-file>\n\n <input *ngSwitchDefault [formControlName]=\"property.name\" [id]=\"property.name\" type=\"text\" pInputText class=\"w-full\" [class.p-disabled]=\"property.readOnly\" />\n</div>\n" }]
|
|
286
295
|
}], ctorParameters: function () { return [{ type: i5.ControlContainer }]; }, propDecorators: { property: [{
|
|
287
296
|
type: Input
|
|
288
297
|
}] } });
|
|
@@ -303,4 +312,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
|
303
312
|
}], template: [{
|
|
304
313
|
type: Input
|
|
305
314
|
}] } });
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWlucHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXN0d29ybGQtaW5wdXRzL3Jlc3R3b3JsZC1pbnB1dHMudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtZm9ybS1lbGVtZW50L3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24vcmVzdHdvcmxkLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LW9iamVjdC9yZXN0d29ybGQtaW5wdXQtb2JqZWN0LmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LXNpbXBsZS9yZXN0d29ybGQtaW5wdXQtc2ltcGxlLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQW1CLGdCQUFnQixFQUFxQyxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFILE9BQU8sRUFBRSxjQUFjLEVBQXFCLFlBQVksRUFBbUMsTUFBTSx5QkFBeUIsQ0FBQztBQUczSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhGOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8sNkJBQTZCOzswSEFBN0IsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsNkdDdkIxQyx1UEFJQSw2RkR3Q2EsdUJBQXVCLDJOQXZCbkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzsyRkFFcEUsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLGlCQUFpQixpQkFHWixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDOzhCQUkvRSxR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LGtJQUEwSCx1TFB1QjdHLDZCQUE2QixrRkF3VXpCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7MkZBRXBFLCtCQUErQjtrQkFOM0MsU0FBUzsrQkFDRSxtQkFBbUIsaUJBR2QsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs4QkFJL0UsT0FBTztzQkFETixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTnVtYmVyVGVtcGxhdGUsIE9wdGlvbnMsIFByb3BlcnR5LCBQcm9wZXJ0eVR5cGUsIFJlc291cmNlLCBUZW1wbGF0ZSwgVGVtcGxhdGVEdG8gfSBmcm9tICdAd2VydHp1aS9uZ3gtaGFsLWNsaWVudCc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFByb2JsZW1EZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2JsZW0tZGV0YWlscyc7XHJcbmltcG9ydCB7IFByb3BlcnR5VGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbXBsYXRpbmcnO1xyXG5pbXBvcnQgeyBSZXN0V29ybGRDbGllbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0d29ybGQtY2xpZW50JztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50Q29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3R3b3JsZC1jbGllbnQtY29sbGVjdGlvbic7XHJcbmltcG9ydCB7IFByb3BlcnR5V2l0aE9wdGlvbnMsIFByb3BlcnR5V2l0aEltYWdlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NwZWNpYWwtcHJvcGVydGllcydcclxuXHJcbi8qKlxyXG4gKiBBIGZvcm0gZWxlbWVudCB3aXRoIGEgbGFiZWwgdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZnJvbSBhIHByb3BlcnR5IGluIGEgZm9ybSB0ZW1wbGF0ZS5cclxuICogVGhpcyBtYXkgYWxzbyBiZSBhIGNvbXBsZXggb2JqZWN0IG9yIGEgY29sbGVjdGlvbiBpbiB3aGljaCBjYXNlIG11bHRpcGxlIGFuZCBuZXN0ZWQgaW5wdXQgZWxlbWVudHMgbWF5IGJlIHJlbmRlcmVkLlxyXG4gKiBJZiB5b3Ugd2FudCBhIGZvcm0gZWxlbWVudCB3aXRob3V0IGEgbGFiZWwsIHVzZSBSZXN0V29ybGRGb3JtSW5wdXQgPHJ3LWZvcm0taW5wdXQ+LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1mb3JtLWVsZW1lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtZm9ybS1lbGVtZW50L3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQvcmVzdHdvcmxkLWZvcm0tZWxlbWVudC5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkRm9ybUVsZW1lbnRDb21wb25lbnQ8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47IH0+IHtcclxuICBASW5wdXQoKVxyXG4gIHByb3BlcnR5ITogUHJvcGVydHk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgZm9ybSBpbnB1dCBlbGVtZW50IHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gYSBwcm9wZXJ0eSBpbiBhIGZvcm0gdGVtcGxhdGUuXHJcbiAqIFRoaXMgbWF5IGFsc28gYmUgYSBjb21wbGV4IG9iamVjdCBvciBhIGNvbGxlY3Rpb24gaW4gd2hpY2ggY2FzZSBtdWx0aXBsZSBhbmQgbmVzdGVkIGlucHV0IGVsZW1lbnRzIG1heSBiZSByZW5kZXJlZC5cclxuICogSWYgeW91IGFsc28gd2FudCBhIGxhYmVsLCB1c2UgUmVzdFdvcmxkRm9ybUVsZW1lbnQgPHJ3LWZvcm0tZWxlbWVudD4uXHJcbiAqIFlvdSBjYW4gYWxzbyB1c2Ugb25lIG9mIHRoZSBkaWZmZXJlbnQgUmVzdFdvcmxkSW5wdXQuLi4gPHJ3LWlucHV0LS4uLj4gZWxlbWVudHMgdG8gcmVuZGVyIGEgc3BlY2lmaWMgaW5wdXQsXHJcbiAqIGJ1dCBpdCBpcyBhZHZpc2VkIHRvIGNvbnRyb2wgdGhlIHJlbmRlcmVkIGlucHV0IHRocm91Z2ggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHJvcGVydHkhOiBQcm9wZXJ0eTtcclxuXHJcbiAgQElucHV0KClcclxuICBhcGlOYW1lITogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgZ2V0IFByb3BlcnR5VHlwZSgpIHtcclxuICAgIHJldHVybiBQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFByb3BlcnR5V2l0aE9wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gUHJvcGVydHlXaXRoT3B0aW9ucztcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQSBjb2xsZWN0aW9uIHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gdGhlIGdpdmVuIHByb3BlcnR5LlxyXG4gKiBUaGUgY29sbGVjdGlvbiBzdXBwb3J0cyBkcmFnICYgZHJvcCB0byByZSBvcmRlciB0aGUgZWxlbWVudHMgYW5kIGNhbiBhbHNvIGJlIG5lc3RlZC5cclxuICogSXQgaXMgYWR2aXNlZCB0byB1c2UgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQgPHJ3LWlucHV0PiBhbmQgY29udHJvbCB0aGUgcmVuZGVyZWQgaW5wdXRzIHdpdGggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eVxyXG4gKiBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMgY29tcG9uZW50IGRpcmVjdGx5LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1pbnB1dC1jb2xsZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbnB1dC1jb2xsZWN0aW9uL3Jlc3R3b3JsZC1pbnB1dC1jb2xsZWN0aW9uLmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dENvbGxlY3Rpb25Db21wb25lbnQ8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47IH0+IGltcGxlbWVudHMgT25Jbml0e1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHByb3BlcnR5ITogUHJvcGVydHk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXRDb2xsZWN0aW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgaW5wdXRDb2xsZWN0aW9uUmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XHJcblxyXG5cclxuICBwcml2YXRlIF90ZW1wbGF0ZXM6IE51bWJlclRlbXBsYXRlW10gPSBbXTtcclxuICBwdWJsaWMgZ2V0IHRlbXBsYXRlcygpOiBOdW1iZXJUZW1wbGF0ZVtdIHtcclxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZWZhdWx0VGVtcGxhdGU/OiBUZW1wbGF0ZTtcclxuICBwdWJsaWMgZ2V0IGRlZmF1bHRUZW1wbGF0ZSgpOiBUZW1wbGF0ZSB7XHJcbiAgICBpZih0aGlzLl9kZWZhdWx0VGVtcGxhdGUgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZGVmYXVsdCB0ZW1wbGF0ZSBmb3VuZC5cIik7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRUZW1wbGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lubmVyRm9ybUFycmF5PzogRm9ybUFycmF5PEZvcm1Hcm91cDxUPj47XHJcbiAgcHVibGljIGdldCBpbm5lckZvcm1BcnJheSgpIHtcclxuICAgIGlmICh0aGlzLl9pbm5lckZvcm1BcnJheSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtR3JvdXAgaXMgbm90IHNldC5cIik7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2lubmVyRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5fY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDxhbnk+O1xyXG4gICAgdGhpcy5faW5uZXJGb3JtQXJyYXkgPSBmb3JtR3JvdXAuY29udHJvbHNbdGhpcy5wcm9wZXJ0eS5uYW1lXSBhcyBGb3JtQXJyYXk8Rm9ybUdyb3VwPFQ+PjtcclxuICAgIHRoaXMuX3RlbXBsYXRlcyA9IFJlc3RXb3JsZElucHV0Q29sbGVjdGlvbkNvbXBvbmVudC5nZXRDb2xsZWN0aW9uRW50cnlUZW1wbGF0ZXModGhpcy5wcm9wZXJ0eSk7XHJcbiAgICB0aGlzLl9kZWZhdWx0VGVtcGxhdGUgPSB0aGlzLnByb3BlcnR5Ll90ZW1wbGF0ZXMuZGVmYXVsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldENvbGxlY3Rpb25FbnRyeVRlbXBsYXRlcyhwcm9wZXJ0eT86IFByb3BlcnR5KTogTnVtYmVyVGVtcGxhdGVbXSB7XHJcbiAgICBpZiAoIXByb3BlcnR5KVxyXG4gICAgICByZXR1cm4gW107XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHByb3BlcnR5Ll90ZW1wbGF0ZXMpXHJcbiAgICAgIC5maWx0ZXIoKFtrZXksIHZhbHVlXSkgPT4gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIucGFyc2VJbnQoa2V5KSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIucGFyc2VJbnQodmFsdWUudGl0bGUgPz8gXCJcIikpKVxyXG4gICAgICAubWFwKChbLCB2YWx1ZV0pID0+IG5ldyBOdW1iZXJUZW1wbGF0ZSh2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE5ld0l0ZW1Ub0NvbGxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBtYXhJbmRleCA9IE1hdGgubWF4KC4uLk9iamVjdC5rZXlzKHRoaXMudGVtcGxhdGVzKVxyXG4gICAgICAubWFwKGtleSA9PiBOdW1iZXIucGFyc2VJbnQoa2V5KSlcclxuICAgICAgLmZpbHRlcihrZXkgPT4gTnVtYmVyLmlzU2FmZUludGVnZXIoa2V5KSkpO1xyXG4gICAgY29uc3QgbmV4dEluZGV4ID0gbWF4SW5kZXggPCAwID8gMCA6IG1heEluZGV4ICsgMTtcclxuXHJcbiAgICBjb25zdCBjb3BpZWRUZW1wbGF0ZUR0byA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0VGVtcGxhdGUpKSBhcyBUZW1wbGF0ZUR0bztcclxuICAgIGNvbnN0IGNvcGllZFRlbXBsYXRlID0gbmV3IE51bWJlclRlbXBsYXRlKGNvcGllZFRlbXBsYXRlRHRvKTtcclxuICAgIGNvcGllZFRlbXBsYXRlLnRpdGxlID0gbmV4dEluZGV4O1xyXG5cclxuICAgIHRoaXMudGVtcGxhdGVzW2NvcGllZFRlbXBsYXRlLnRpdGxlXSA9IGNvcGllZFRlbXBsYXRlO1xyXG4gICAgdGhpcy5pbm5lckZvcm1BcnJheS5wdXNoKHRoaXMuX2Zvcm1TZXJ2aWNlLmNyZWF0ZUZvcm1Hcm91cEZyb21UZW1wbGF0ZSh0aGlzLmRlZmF1bHRUZW1wbGF0ZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZUl0ZW1Gcm9tQ29sbGVjdGlvbih0ZW1wbGF0ZTogTnVtYmVyVGVtcGxhdGUpOiB2b2lkIHtcclxuICAgIGRlbGV0ZSB0aGlzLnRlbXBsYXRlc1t0ZW1wbGF0ZS50aXRsZV07XHJcbiAgICB0aGlzLmlubmVyRm9ybUFycmF5LnJlbW92ZUF0KHRlbXBsYXRlLnRpdGxlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb2xsZWN0aW9uSXRlbURyb3BwZWQoJGV2ZW50OiBDZGtEcmFnRHJvcDx7IH0+KSB7XHJcbiAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gJGV2ZW50LnByZXZpb3VzSW5kZXg7XHJcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSAkZXZlbnQuY3VycmVudEluZGV4O1xyXG4gICAgY29uc3QgbW92ZW1lbnREaXJlY3Rpb24gPSBjdXJyZW50SW5kZXggPiBwcmV2aW91c0luZGV4ID8gMSA6IC0xO1xyXG5cclxuICAgIC8vIE1vdmUgaW4gRm9ybUFycmF5XHJcbiAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBtb3ZlIHRoZSBpdGVtIGluIHRoZSBfdGVtcGxhdGVzIG9iamVjdFxyXG4gICAgY29uc3QgbW92ZWRDb250cm9sID0gdGhpcy5pbm5lckZvcm1BcnJheS5hdChwcmV2aW91c0luZGV4KTtcclxuICAgIGZvciAobGV0IGkgPSBwcmV2aW91c0luZGV4OyBpICogbW92ZW1lbnREaXJlY3Rpb24gPCBjdXJyZW50SW5kZXggKiBtb3ZlbWVudERpcmVjdGlvbjsgaSA9IGkgKyBtb3ZlbWVudERpcmVjdGlvbikge1xyXG4gICAgICB0aGlzLmlubmVyRm9ybUFycmF5LnNldENvbnRyb2woaSwgdGhpcy5pbm5lckZvcm1BcnJheS5hdChpICsgbW92ZW1lbnREaXJlY3Rpb24pKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5uZXJGb3JtQXJyYXkuc2V0Q29udHJvbChjdXJyZW50SW5kZXgsIG1vdmVkQ29udHJvbCk7XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQSBkcm9wZG93biB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwcm9wZXJ0eS5cclxuICogVGhlIGRyb3Bkb3duIHN1cHBvcnRzIHNlYXJjaGluZyB0aHJvdWdoIGEgUkVTVFdvcmxkIGxpc3QgZW5kcG9pbnQgb24gdGhlIGJhY2tlbmQuXHJcbiAqIEl0IGlzIGFkdmlzZWQgdG8gdXNlIFJlc3RXb3JsZElucHV0Q29tcG9uZW50IDxydy1pbnB1dD4gYW5kIGNvbnRyb2wgdGhlIHJlbmRlcmVkIGlucHV0cyB3aXRoIHRoZSBwYXNzZWQgaW4gcHJvcGVydHlcclxuICogaW5zdGVhZCBvZiB1c2luZyB0aGlzIGNvbXBvbmVudCBkaXJlY3RseS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctaW5wdXQtZHJvcGRvd24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24vcmVzdHdvcmxkLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24vcmVzdHdvcmxkLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50IHtcclxuICBASW5wdXQoKVxyXG4gIHByb3BlcnR5ITogUHJvcGVydHkgJiB7IG9wdGlvbnM6IE9wdGlvbnMgfTtcclxuXHJcbiAgQElucHV0KClcclxuICBhcGlOYW1lITogc3RyaW5nO1xyXG5cclxuICBAQ29udGVudENoaWxkKCdpbnB1dE9wdGlvbnNTaW5nbGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBpbnB1dE9wdGlvbnNTaW5nbGVSZWY/OiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eVRlbXBsYXRlQ29udGV4dD47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2lucHV0T3B0aW9uc011bHRpcGxlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgaW5wdXRPcHRpb25zTXVsdGlwbGVSZWY/OiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eVRlbXBsYXRlQ29udGV4dD47XHJcblxyXG4gIGNvbnN0cnVjdG9yIChcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NsaWVudHM6IFJlc3RXb3JsZENsaWVudENvbGxlY3Rpb25cclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREcm9wZG93bkVsZW1lbnRUb29sdGlwKHJlc291cmNlOiBSZXNvdXJjZSwga2V5c1RvRXhjbHVkZT86IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRvb2x0aXAgPSBPYmplY3QuZW50cmllcyhyZXNvdXJjZSlcclxuICAgICAgLmZpbHRlcigoW2tleV0pID0+ICEoa2V5LnN0YXJ0c1dpdGgoJ18nKSB8fCBbJ2NyZWF0ZWRBdCcsICdjcmVhdGVkQnknLCAnbGFzdENoYW5nZWRBdCcsICdsYXN0Q2hhbmdlZEJ5JywgJ3RpbWVzdGFtcCddLmluY2x1ZGVzKGtleSkgfHwga2V5c1RvRXhjbHVkZT8uaW5jbHVkZXMoa2V5KSkpXHJcbiAgICAgIC5yZWR1Y2UoKHByZXYsIFtrZXksIHZhbHVlXSwgaW5kZXgpID0+IGAke3ByZXZ9JHtpbmRleCA9PT0gMCA/ICcnIDogJ1xcbid9JHtrZXl9OiAke1Jlc3RXb3JsZElucHV0RHJvcGRvd25Db21wb25lbnQuanNvblN0cmluZ2lmeVdpdGhFbGlwc2lzKHZhbHVlKX1gLCAnJyk7XHJcblxyXG4gICAgcmV0dXJuIHRvb2x0aXA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgb25PcHRpb25zRmlsdGVyZWQocHJvcGVydHk6IFByb3BlcnR5LCBldmVudDogeyBvcmlnaW5hbEV2ZW50OiB1bmtub3duOyBmaWx0ZXI6IHN0cmluZyB8IG51bGwgfSkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHByb3BlcnR5Py5vcHRpb25zO1xyXG5cclxuICAgIGlmICghb3B0aW9ucz8ubGluaz8uaHJlZiB8fCAhZXZlbnQuZmlsdGVyIHx8IGV2ZW50LmZpbHRlciA9PT0gJycpXHJcbiAgICAgIHJldHVybjtcclxuXHJcblxyXG4gICAgY29uc3QgdGVtcGxhdGVkVXJpID0gb3B0aW9ucy5saW5rLmhyZWY7XHJcbiAgICBsZXQgZmlsdGVyID0gYGNvbnRhaW5zKCR7b3B0aW9ucy5wcm9tcHRGaWVsZH0sICcke2V2ZW50LmZpbHRlcn0nKWA7XHJcbiAgICBpZiAob3B0aW9ucy52YWx1ZUZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSAnaWQnICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KGV2ZW50LmZpbHRlcikpKVxyXG4gICAgICBmaWx0ZXIgPSBgKCR7b3B0aW9ucy52YWx1ZUZpZWxkfSBlcSAke2V2ZW50LmZpbHRlcn0pICBvciAoJHtmaWx0ZXJ9KWA7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpLmdldExpc3RCeVVyaSh0ZW1wbGF0ZWRVcmksIHsgJGZpbHRlcjogZmlsdGVyLCAkdG9wOiAxMCB9KTtcclxuICAgIGlmICghcmVzcG9uc2Uub2sgfHwgUHJvYmxlbURldGFpbHMuaXNQcm9ibGVtRGV0YWlscyhyZXNwb25zZS5ib2R5KSB8fCAhcmVzcG9uc2UuYm9keSkge1xyXG4gICAgICBjb25zdCBtZXNzYWdlID0gYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGdldHRpbmcgdGhlIGZpbHRlcmVkIGl0ZW1zLmA7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyb3InLCBkZXRhaWw6IG1lc3NhZ2UsIGRhdGE6IHJlc3BvbnNlLCBzdGlja3k6IHRydWUgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmJvZHkuX2VtYmVkZGVkLml0ZW1zO1xyXG4gICAgb3B0aW9ucy5pbmxpbmUgPSBpdGVtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2xpZW50KCk6IFJlc3RXb3JsZENsaWVudCB7XHJcbiAgICBpZiAoIXRoaXMuYXBpTmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZ2V0IGEgY2xpZW50LCBiZWNhdXNlIHRoZSBhcGlOYW1lIGlzIG5vdCBzZXQuJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudHMuZ2V0Q2xpZW50KHRoaXMuYXBpTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBqc29uU3RyaW5naWZ5V2l0aEVsaXBzaXModmFsdWU6IHVua25vd24pIHtcclxuICAgIGNvbnN0IG1heExlbmd0aCA9IDIwMDtcclxuICAgIGNvbnN0IGVuZCA9IDEwO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBtYXhMZW5ndGggLSBlbmQgLSAyO1xyXG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgIGNvbnN0IHNob3J0ZW5lZCA9IGpzb24ubGVuZ3RoID4gbWF4TGVuZ3RoID8ganNvbi5zdWJzdHJpbmcoMCwgc3RhcnQpICsgJ+KApicgKyBqc29uLnN1YnN0cmluZyhqc29uLmxlbmd0aCAtIGVuZCkgOiBqc29uO1xyXG5cclxuICAgIHJldHVybiBzaG9ydGVuZWQ7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQSBjb21wbGV4IG9iamVjdCB3aXRoIG11bHRpcGxlIHByb3BlcnRpZXMgdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkuXHJcbiAqIFRoZSBvYmplY3QgY2FuIGFsc28gYmUgbmVzdGVkLlxyXG4gKiBJdCBpcyBhZHZpc2VkIHRvIHVzZSBSZXN0V29ybGRJbnB1dENvbXBvbmVudCA8cnctaW5wdXQ+IGFuZCBjb250cm9sIHRoZSByZW5kZXJlZCBpbnB1dHMgd2l0aCB0aGUgcGFzc2VkIGluIHByb3BlcnR5XHJcbiAqIGluc3RlYWQgb2YgdXNpbmcgdGhpcyBjb21wb25lbnQgZGlyZWN0bHkuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWlucHV0LW9iamVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbnB1dC1vYmplY3QvcmVzdHdvcmxkLWlucHV0LW9iamVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWlucHV0LW9iamVjdC9yZXN0d29ybGQtaW5wdXQtb2JqZWN0LmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dE9iamVjdENvbXBvbmVudDxUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjsgfT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHByb3BlcnR5ITogUHJvcGVydHk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXRPYmplY3QnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBpbnB1dE9iamVjdFJlZj86IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG5cclxuICBwcml2YXRlIF9pbm5lckZvcm1Hcm91cD86IEZvcm1Hcm91cDxUPjtcclxuXHJcbiAgcHVibGljIGdldCBpbm5lckZvcm1Hcm91cCgpIHtcclxuICAgIGlmICh0aGlzLl9pbm5lckZvcm1Hcm91cCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtR3JvdXAgaXMgbm90IHNldC5cIik7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2lubmVyRm9ybUdyb3VwO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lclxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLl9jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwPGFueT47XHJcbiAgICB0aGlzLl9pbm5lckZvcm1Hcm91cCA9IGZvcm1Hcm91cC5jb250cm9sc1t0aGlzLnByb3BlcnR5Lm5hbWVdIGFzIEZvcm1Hcm91cDxUPjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBIHNpbXBsZSBpbnB1dCBlbGVtZW50LCBsaWtlIGEgdGV4dCwgb3IgYSBudW1iZXIgdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkuXHJcbiAqIEl0IGlzIGFkdmlzZWQgdG8gdXNlIFJlc3RXb3JsZElucHV0Q29tcG9uZW50IDxydy1pbnB1dD4gYW5kIGNvbnRyb2wgdGhlIHJlbmRlcmVkIGlucHV0cyB3aXRoIHRoZSBwYXNzZWQgaW4gcHJvcGVydHlcclxuICogaW5zdGVhZCBvZiB1c2luZyB0aGlzIGNvbXBvbmVudCBkaXJlY3RseS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctaW5wdXQtc2ltcGxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0LXNpbXBsZS9yZXN0d29ybGQtaW5wdXQtc2ltcGxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtaW5wdXQtc2ltcGxlL3Jlc3R3b3JsZC1pbnB1dC1zaW1wbGUuY29tcG9uZW50LmNzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZElucHV0U2ltcGxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwcm9wZXJ0eSE6IFByb3BlcnR5O1xyXG5cclxuICBwdWJsaWMgZ2V0IFByb3BlcnR5VHlwZSgpIHtcclxuICAgIHJldHVybiBQcm9wZXJ0eVR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSgzMzMzLCAxMSwgMjIpXHJcbiAgICAgIC50b0xvY2FsZURhdGVTdHJpbmcoKVxyXG4gICAgICAucmVwbGFjZShcIjIyXCIsIFwiZGRcIilcclxuICAgICAgLnJlcGxhY2UoXCIxMVwiLCBcIm1tXCIpXHJcbiAgICAgIC5yZXBsYWNlKFwiMzMzM1wiLCBcInl5XCIpXHJcbiAgICAgIC5yZXBsYWNlKFwiMzNcIiwgXCJ5XCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2w/OiBGb3JtQ29udHJvbDxUPjtcclxuXHJcbiAgcHVibGljIGdldCBmb3JtQ29udHJvbCgpIHtcclxuICAgIGlmICh0aGlzLl9mb3JtQ29udHJvbCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtR3JvdXAgaXMgbm90IHNldC5cIik7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVdpdGhJbWFnZSgpIHtcclxuICAgIHJldHVybiBQcm9wZXJ0eVdpdGhJbWFnZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yIChcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXJcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5fY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDxhbnk+O1xyXG4gICAgdGhpcy5fZm9ybUNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbdGhpcy5wcm9wZXJ0eS5uYW1lXSBhcyBGb3JtQ29udHJvbDxUPjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBIGNvbGxlY3Rpb24gb2YgcnctZm9ybS1lbGVtdG5zIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmcm9tIGEgdGVtcGxhdGUuXHJcbiAqIERvZXMgbm90IGhhdmUgYW55IGJ1dHRvbnMgb24gaXRzIG93bi5cclxuICogSWYgeW91IHdhbnQgYnV0dG9ucywgdXNlIFJlc3RXb3JsZEZvcm0gPHJ3LWZvcm0+LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1pbnB1dC10ZW1wbGF0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS9yZXN0d29ybGQtaW5wdXQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS9yZXN0d29ybGQtaW5wdXQtdGVtcGxhdGUuY29tcG9uZW50LmNzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZElucHV0VGVtcGxhdGVDb21wb25lbnQ8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47IH0+IHtcclxuICBASW5wdXQoKVxyXG4gIGFwaU5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGVtcGxhdGUhOiBUZW1wbGF0ZTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZ3JpZCBmaWVsZFwiPlxyXG4gICAgPHJ3LWxhYmVsIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiIGNsYXNzPVwiY29sLTEyIG1kOmNvbC0yIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+PC9ydy1sYWJlbD5cclxuICAgIDxydy1pbnB1dCBbYXBpTmFtZV09XCJhcGlOYW1lXCIgW3Byb3BlcnR5XT1cInByb3BlcnR5XCIgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTEwXCI+PC9ydy1pbnB1dD5cclxuPC9kaXY+XHJcbiIsIjxydy1pbnB1dC1kcm9wZG93biAqbmdJZj1cInByb3BlcnR5Lm9wdGlvbnNcIiBbYXBpTmFtZV09XCJhcGlOYW1lXCIgW3Byb3BlcnR5XT1cInByb3BlcnR5IHwgYXM6UHJvcGVydHlXaXRoT3B0aW9uc1wiPjwvcnctaW5wdXQtZHJvcGRvd24+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIXByb3BlcnR5Lm9wdGlvbnNcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BlcnR5LnR5cGVcIj5cclxuICAgICAgICA8cnctaW5wdXQtb2JqZWN0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuT2JqZWN0XCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiPjwvcnctaW5wdXQtb2JqZWN0PlxyXG4gICAgICAgIDxydy1pbnB1dC1jb2xsZWN0aW9uICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuQ29sbGVjdGlvblwiIFthcGlOYW1lXT1cImFwaU5hbWVcIiBbcHJvcGVydHldPVwicHJvcGVydHlcIj48L3J3LWlucHV0LWNvbGxlY3Rpb24+XHJcbiAgICAgICAgPHJ3LWlucHV0LXNpbXBsZSAqbmdTd2l0Y2hEZWZhdWx0IFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiPjwvcnctaW5wdXQtc2ltcGxlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPHJ3LXZhbGlkYXRpb24tZXJyb3JzIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiPjwvcnctdmFsaWRhdGlvbi1lcnJvcnM+IiwiPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImJyYWNlXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInctZnVsbFwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiY29sbGVjdGlvbkl0ZW1Ecm9wcGVkKCRldmVudClcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGVtcGxhdGUgb2YgdGVtcGxhdGVzXCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIGNka0RyYWc+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1ncmlwLWxpbmVzXCIgY2RrRHJhZ0hhbmRsZT48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJhY2VcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8cnctaW5wdXQtdGVtcGxhdGUgW2Zvcm1Hcm91cF09XCJpbm5lckZvcm1BcnJheS5jb250cm9sc1t0ZW1wbGF0ZS50aXRsZV1cIiBbdGVtcGxhdGVdPVwiZGVmYXVsdFRlbXBsYXRlXCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiIGNsYXNzPVwidy1mdWxsXCI+PC9ydy1pbnB1dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cImZhcyBmYS10cmFzaFwiIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tZGFuZ2VyIG1sLTIgbWItM1wiIChjbGljayk9XCJkZWxldGVJdGVtRnJvbUNvbGxlY3Rpb24odGVtcGxhdGUpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgdy1mdWxsXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cImZhcyBmYS1wbHVzXCIgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1pbmZvXCIgKGNsaWNrKT1cImFkZE5ld0l0ZW1Ub0NvbGxlY3Rpb24oKVwiPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0T3B0aW9uc1NpbmdsZSBsZXQtcHJvcGVydHk9XCJwcm9wZXJ0eVwiIGxldC10ZW1wbGF0ZT1cInRlbXBsYXRlXCI+XG4gICAgPHAtZHJvcGRvd24gXG4gICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgXG4gICAgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBcbiAgICBbb3B0aW9uc109XCJwcm9wZXJ0eS5vcHRpb25zLmlubGluZVwiIFxuICAgIFtmaWx0ZXJCeV09XCIocHJvcGVydHkub3B0aW9ucy5wcm9tcHRGaWVsZCA/PyAncHJvbXB0JykgKyAnLCcgKyAocHJvcGVydHkub3B0aW9ucy52YWx1ZUZpZWxkID8/ICd2YWx1ZScpXCIgXG4gICAgW29wdGlvblZhbHVlXT1cInByb3BlcnR5Lm9wdGlvbnMudmFsdWVGaWVsZCA/PyAndmFsdWUnXCIgXG4gICAgW3JlYWRvbmx5XT1cInByb3BlcnR5LnJlYWRPbmx5XCIgXG4gICAgW3JlcXVpcmVkXT1cInByb3BlcnR5LnJlcXVpcmVkIHx8IHByb3BlcnR5Lm9wdGlvbnMubWluSXRlbXMgPiAwXCIgXG4gICAgW2ZpbHRlcl09XCJ0cnVlXCIgXG4gICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBcbiAgICBbc2hvd0NsZWFyXT1cIiFwcm9wZXJ0eS5yZXF1aXJlZCB8fCBwcm9wZXJ0eS5vcHRpb25zLm1pbkl0ZW1zIDw9IDBcIiBcbiAgICAob25GaWx0ZXIpPVwib25PcHRpb25zRmlsdGVyZWQocHJvcGVydHksICRldmVudClcIiBcbiAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCIgXG4gICAgW2ZpbHRlclBsYWNlaG9sZGVyXT1cInByb3BlcnR5Py5vcHRpb25zPy5saW5rPy5ocmVmID8gJ3NlYXJjaCBmb3IgbW9yZSByZXN1bHRzJyA6ICcnXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJzZWxlY3RlZEl0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuIFtwVG9vbHRpcF09XCJnZXREcm9wZG93bkVsZW1lbnRUb29sdGlwKGl0ZW0sIFtwcm9wZXJ0eS5vcHRpb25zLnByb21wdEZpZWxkID8/ICdwcm9tcHQnLCBwcm9wZXJ0eS5vcHRpb25zLnZhbHVlRmllbGQgPz8gJ3ZhbHVlJ10pXCI+e3tpdGVtW3Byb3BlcnR5Lm9wdGlvbnMucHJvbXB0RmllbGQgPz8gJ3Byb21wdCddfX0gKHt7aXRlbVtwcm9wZXJ0eS5vcHRpb25zLnZhbHVlRmllbGQgPz8gJ3ZhbHVlJ119fSk8L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XG4gICAgICAgICAgICA8c3BhbiBbcFRvb2x0aXBdPVwiZ2V0RHJvcGRvd25FbGVtZW50VG9vbHRpcChpdGVtLCBbcHJvcGVydHkub3B0aW9ucy5wcm9tcHRGaWVsZCA/PyAncHJvbXB0JywgcHJvcGVydHkub3B0aW9ucy52YWx1ZUZpZWxkID8/ICd2YWx1ZSddKVwiPnt7aXRlbVtwcm9wZXJ0eS5vcHRpb25zLnByb21wdEZpZWxkID8/ICdwcm9tcHQnXX19ICh7e2l0ZW1bcHJvcGVydHkub3B0aW9ucy52YWx1ZUZpZWxkID8/ICd2YWx1ZSddfX0pPC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC1kcm9wZG93bj5cbjwvbmctdGVtcGxhdGU+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIXByb3BlcnR5Lm9wdGlvbnMubWF4SXRlbXMgfHwgcHJvcGVydHkub3B0aW9ucy5tYXhJdGVtcyA9PSAxXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0T3B0aW9uc1NpbmdsZVJlZiA/PyBkZWZhdWx0SW5wdXRPcHRpb25zU2luZ2xlOyBjb250ZXh0OiB7IHByb3BlcnR5OiBwcm9wZXJ0eSwgYXBpTmFtZTogYXBpTmFtZSB9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRPcHRpb25zTXVsdGlwbGUgbGV0LXByb3BlcnR5PVwicHJvcGVydHlcIiBsZXQtdGVtcGxhdGU9XCJ0ZW1wbGF0ZVwiPlxuICAgIDxwLW11bHRpU2VsZWN0IFxuICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFxuICAgIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgXG4gICAgW29wdGlvbnNdPVwicHJvcGVydHkub3B0aW9ucy5pbmxpbmVcIiBcbiAgICBbb3B0aW9uTGFiZWxdPVwicHJvcGVydHkub3B0aW9ucy5wcm9tcHRGaWVsZCA/PyAncHJvbXB0J1wiIFxuICAgIFtvcHRpb25WYWx1ZV09XCJwcm9wZXJ0eS5vcHRpb25zLnZhbHVlRmllbGQgPz8gJ3ZhbHVlJ1wiIFxuICAgIFtyZWFkb25seV09XCJwcm9wZXJ0eS5yZWFkT25seVwiIFxuICAgIFtzZWxlY3Rpb25MaW1pdF09XCJwcm9wZXJ0eS5vcHRpb25zLm1heEl0ZW1zXCIgXG4gICAgW3JlcXVpcmVkXT1cInByb3BlcnR5LnJlcXVpcmVkIHx8IHByb3BlcnR5Lm9wdGlvbnMubWluSXRlbXMgPiAwXCI+PC9wLW11bHRpU2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIocHJvcGVydHkub3B0aW9ucy5tYXhJdGVtcyA/PyAwKSA+IDFcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRPcHRpb25zTXVsdGlwbGVSZWYgPz8gZGVmYXVsdElucHV0T3B0aW9uc011bHRpcGxlOyBjb250ZXh0OiB7IHByb3BlcnR5OiBwcm9wZXJ0eSwgYXBpTmFtZTogYXBpTmFtZSB9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iLCI8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dE9iamVjdCBsZXQtcHJvcGVydHk9XCJwcm9wZXJ0eVwiIGxldC10ZW1wbGF0ZT1cInRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJicmFjZVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgPHJ3LWlucHV0LXRlbXBsYXRlIFtmb3JtR3JvdXBdPVwiaW5uZXJGb3JtR3JvdXBcIiBbdGVtcGxhdGVdPVwicHJvcGVydHkuX3RlbXBsYXRlcy5kZWZhdWx0XCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiPjwvcnctaW5wdXQtdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0T2JqZWN0UmVmIHx8IGRlZmF1bHRJbnB1dE9iamVjdDsgY29udGV4dDogeyBwcm9wZXJ0eTogcHJvcGVydHksIGlubmVyRm9ybUdyb3VwOiBpbm5lckZvcm1Hcm91cCwgYXBpTmFtZTogYXBpTmFtZSB9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iLCI8ZGl2IFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS50eXBlXCI+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5IaWRkZW5cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJoaWRkZW5cIiBbdmFsdWVdPVwicHJvcGVydHkudmFsdWVcIiAvPlxuICBcbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5UZXh0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG4gICBcbiAgICA8dGV4dGFyZWEgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5UZXh0YXJlYVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgcElucHV0VGV4dGFyZWEgY2xhc3M9XCJ3LWZ1bGwgcC1pbnB1dHRleHRhcmVhIHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50IHAtZWxlbWVudFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgW2NvbHNdPVwicHJvcGVydHkuY29sc1wiIFtyb3dzXT1cInByb3BlcnR5LnJvd3NcIj48L3RleHRhcmVhPlxuICAgXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuU2VhcmNoXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwic2VhcmNoXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cbiAgIFxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlRlbFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInRlbFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG4gICBcbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5VcmxcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJ1cmxcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuICAgXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRW1haWxcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJlbWFpbFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG4gICBcbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5QYXNzd29yZFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInBhc3N3b3JkXCIgcFBhc3N3b3JkIGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuICAgXG4gICAgPHAtY2FsZW5kYXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5EYXRlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCIgW3Nob3dXZWVrXT1cInRydWVcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cbiAgIFxuICAgIDxwLWNhbGVuZGFyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuTW9udGhcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXRcIiBbc2hvd1dlZWtdPVwiZmFsc2VcIiB2aWV3PVwibW9udGhcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cbiAgICBcbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5XZWVrXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwid2Vla1wiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG4gICBcbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlRpbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXRcIiBbc2hvd1RpbWVdPVwidHJ1ZVwiIFt0aW1lT25seV09XCJ0cnVlXCIgW3Nob3dXZWVrXT1cImZhbHNlXCIgW3Nob3dJY29uXT1cInRydWVcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtY2FsZW5kYXI+XG4gICAgXG4gICAgPHAtY2FsZW5kYXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5EYXRldGltZUxvY2FsXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1dlZWtdPVwiZmFsc2VcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cbiAgICBcbiAgICA8cC1pbnB1dE51bWJlciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLk51bWJlclwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgbW9kZT1cImRlY2ltYWxcIiBbc2hvd0J1dHRvbnNdPVwiIXByb3BlcnR5LnJlYWRPbmx5XCIgY2xhc3M9XCJ3LWZ1bGxcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtaW5wdXROdW1iZXI+XG4gICAgXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuUmFuZ2VcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJyYW5nZVwiIFttaW5dPVwicHJvcGVydHkubWluXCIgW21heF09XCJwcm9wZXJ0eS5tYXhcIiBbc3RlcF09XCJwcm9wZXJ0eS5zdGVwXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cbiAgICBcbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5Db2xvclwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cImNvbG9yXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cbiAgIFxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5Cb29sXCI+XG4gICAgICAgIDxwLWNoZWNrYm94ICpuZ0lmPVwicHJvcGVydHkucmVxdWlyZWRcIiBbYmluYXJ5XT1cInRydWVcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtyZWFkb25seV09XCJwcm9wZXJ0eS5yZWFkT25seSFcIj48L3AtY2hlY2tib3g+XG4gICAgICAgIDxwLXRyaVN0YXRlQ2hlY2tib3ggKm5nSWY9XCIhcHJvcGVydHkucmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtyZWFkb25seV09XCJwcm9wZXJ0eS5yZWFkT25seSFcIj48L3AtdHJpU3RhdGVDaGVja2JveD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBcbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkRhdGV0aW1lT2Zmc2V0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1dlZWtdPVwiZmFsc2VcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cbiAgICBcbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkR1cmF0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCIgW3Nob3dUaW1lXT1cInRydWVcIiBbdGltZU9ubHldPVwidHJ1ZVwiIFtzaG93V2Vla109XCJmYWxzZVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgPHJ3LWltYWdlICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuSW1hZ2VcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbcHJvcGVydHldPVwicHJvcGVydHkgfCBhczpQcm9wZXJ0eVdpdGhJbWFnZVwiPjwvcnctaW1hZ2U+XG5cbiAgICA8cnctZmlsZSAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkZpbGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbZmlsZU5hbWVdPVwicHJvcGVydHkubmFtZVwiIFthY2NlcHRdPVwicHJvcGVydHkucGxhY2Vob2xkZXJcIj48L3J3LWZpbGU+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoRGVmYXVsdCBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cbjwvZGl2PiIsIjxydy1mb3JtLWVsZW1lbnQgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHRlbXBsYXRlLnByb3BlcnRpZXNcIiBbcHJvcGVydHldPVwicHJvcGVydHlcIiBbYXBpTmFtZV09XCJhcGlOYW1lXCI+PC9ydy1mb3JtLWVsZW1lbnQ+Il19
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWlucHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXN0d29ybGQtaW5wdXRzL3Jlc3R3b3JsZC1pbnB1dHMudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtZm9ybS1lbGVtZW50L3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXQvcmVzdHdvcmxkLWlucHV0LmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24vcmVzdHdvcmxkLWlucHV0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL2NvbXBvbmVudHMvcmVzdHdvcmxkLWlucHV0cy9yZXN0d29ybGQtaW5wdXQtZHJvcGRvd24vcmVzdHdvcmxkLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LW9iamVjdC9yZXN0d29ybGQtaW5wdXQtb2JqZWN0LmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LXNpbXBsZS9yZXN0d29ybGQtaW5wdXQtc2ltcGxlLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9jb21wb25lbnRzL3Jlc3R3b3JsZC1pbnB1dHMvcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQW1CLGdCQUFnQixFQUFxQyxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFILE9BQU8sRUFBRSxjQUFjLEVBQXFCLFlBQVksRUFBbUMsTUFBTSx5QkFBeUIsQ0FBQztBQUczSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhGOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8sNkJBQTZCOzswSEFBN0IsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsNkdDdkIxQyx1UEFJQSw2RkR3Q2EsdUJBQXVCLDJOQXZCbkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzsyRkFFcEUsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLGlCQUFpQixpQkFHWixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDOzhCQUkvRSxR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SSxFQUFFLElBQUksQ0FBQyxDQUFDOzBIQXhCWiw2QkFBNkI7OEdBQTdCLDZCQUE2Qix5Rk01UzFDLGduS0FpREEsdWdJTnlQaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzsyRkFFcEUsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLGlCQUFpQixpQkFHWixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO3VHQUsvRSxRQUFRO3NCQURQLEtBQUs7O0FBb0RSOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8sK0JBQStCOzs0SEFBL0IsK0JBQStCO2dIQUEvQiwrQkFBK0IsK0dPN1c1QyxrSUFBMEgsdUxQdUI3Ryw2QkFBNkIsa0ZBb1Z6QixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDOzJGQUVwRSwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsbUJBQW1CLGlCQUdkLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7OEJBSS9FLE9BQU87c0JBRE4sS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE51bWJlclRlbXBsYXRlLCBPcHRpb25zLCBQcm9wZXJ0eSwgUHJvcGVydHlUeXBlLCBSZXNvdXJjZSwgVGVtcGxhdGUsIFRlbXBsYXRlRHRvIH0gZnJvbSAnQHdlcnR6dWkvbmd4LWhhbC1jbGllbnQnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBQcm9ibGVtRGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy9wcm9ibGVtLWRldGFpbHMnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4uLy4uL21vZGVscy90ZW1wbGF0aW5nJztcclxuaW1wb3J0IHsgUmVzdFdvcmxkQ2xpZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudCc7XHJcbmltcG9ydCB7IFJlc3RXb3JsZENsaWVudENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0d29ybGQtY2xpZW50LWNvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVdpdGhPcHRpb25zLCBQcm9wZXJ0eVdpdGhJbWFnZSB9IGZyb20gJy4uLy4uL21vZGVscy9zcGVjaWFsLXByb3BlcnRpZXMnXHJcblxyXG4vKipcclxuICogQSBmb3JtIGVsZW1lbnQgd2l0aCBhIGxhYmVsIHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gYSBwcm9wZXJ0eSBpbiBhIGZvcm0gdGVtcGxhdGUuXHJcbiAqIFRoaXMgbWF5IGFsc28gYmUgYSBjb21wbGV4IG9iamVjdCBvciBhIGNvbGxlY3Rpb24gaW4gd2hpY2ggY2FzZSBtdWx0aXBsZSBhbmQgbmVzdGVkIGlucHV0IGVsZW1lbnRzIG1heSBiZSByZW5kZXJlZC5cclxuICogSWYgeW91IHdhbnQgYSBmb3JtIGVsZW1lbnQgd2l0aG91dCBhIGxhYmVsLCB1c2UgUmVzdFdvcmxkRm9ybUlucHV0IDxydy1mb3JtLWlucHV0Pi5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctZm9ybS1lbGVtZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWZvcm0tZWxlbWVudC9yZXN0d29ybGQtZm9ybS1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtZm9ybS1lbGVtZW50L3Jlc3R3b3JsZC1mb3JtLWVsZW1lbnQuY29tcG9uZW50LmNzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZEZvcm1FbGVtZW50Q29tcG9uZW50PFQgZXh0ZW5kcyB7IFtLIGluIGtleW9mIFRdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+OyB9PiB7XHJcbiAgQElucHV0KClcclxuICBwcm9wZXJ0eSE6IFByb3BlcnR5O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwaU5hbWUhOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBIGZvcm0gaW5wdXQgZWxlbWVudCB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmcm9tIGEgcHJvcGVydHkgaW4gYSBmb3JtIHRlbXBsYXRlLlxyXG4gKiBUaGlzIG1heSBhbHNvIGJlIGEgY29tcGxleCBvYmplY3Qgb3IgYSBjb2xsZWN0aW9uIGluIHdoaWNoIGNhc2UgbXVsdGlwbGUgYW5kIG5lc3RlZCBpbnB1dCBlbGVtZW50cyBtYXkgYmUgcmVuZGVyZWQuXHJcbiAqIElmIHlvdSBhbHNvIHdhbnQgYSBsYWJlbCwgdXNlIFJlc3RXb3JsZEZvcm1FbGVtZW50IDxydy1mb3JtLWVsZW1lbnQ+LlxyXG4gKiBZb3UgY2FuIGFsc28gdXNlIG9uZSBvZiB0aGUgZGlmZmVyZW50IFJlc3RXb3JsZElucHV0Li4uIDxydy1pbnB1dC0uLi4+IGVsZW1lbnRzIHRvIHJlbmRlciBhIHNwZWNpZmljIGlucHV0LFxyXG4gKiBidXQgaXQgaXMgYWR2aXNlZCB0byBjb250cm9sIHRoZSByZW5kZXJlZCBpbnB1dCB0aHJvdWdoIHRoZSBwYXNzZWQgaW4gcHJvcGVydHkuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0L3Jlc3R3b3JsZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWlucHV0L3Jlc3R3b3JsZC1pbnB1dC5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHByb3BlcnR5ITogUHJvcGVydHk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVR5cGUoKSB7XHJcbiAgICByZXR1cm4gUHJvcGVydHlUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVdpdGhPcHRpb25zKCkge1xyXG4gICAgcmV0dXJuIFByb3BlcnR5V2l0aE9wdGlvbnM7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEEgY29sbGVjdGlvbiB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwcm9wZXJ0eS5cclxuICogVGhlIGNvbGxlY3Rpb24gc3VwcG9ydHMgZHJhZyAmIGRyb3AgdG8gcmUgb3JkZXIgdGhlIGVsZW1lbnRzIGFuZCBjYW4gYWxzbyBiZSBuZXN0ZWQuXHJcbiAqIEl0IGlzIGFkdmlzZWQgdG8gdXNlIFJlc3RXb3JsZElucHV0Q29tcG9uZW50IDxydy1pbnB1dD4gYW5kIGNvbnRyb2wgdGhlIHJlbmRlcmVkIGlucHV0cyB3aXRoIHRoZSBwYXNzZWQgaW4gcHJvcGVydHlcclxuICogaW5zdGVhZCBvZiB1c2luZyB0aGlzIGNvbXBvbmVudCBkaXJlY3RseS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctaW5wdXQtY29sbGVjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbnB1dC1jb2xsZWN0aW9uL3Jlc3R3b3JsZC1pbnB1dC1jb2xsZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtaW5wdXQtY29sbGVjdGlvbi9yZXN0d29ybGQtaW5wdXQtY29sbGVjdGlvbi5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkSW5wdXRDb2xsZWN0aW9uQ29tcG9uZW50PFQgZXh0ZW5kcyB7IFtLIGluIGtleW9mIFRdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+OyB9PiBpbXBsZW1lbnRzIE9uSW5pdHtcclxuXHJcbiAgQElucHV0KClcclxuICBwcm9wZXJ0eSE6IFByb3BlcnR5O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwaU5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2lucHV0Q29sbGVjdGlvbicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGlucHV0Q29sbGVjdGlvblJlZj86IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfdGVtcGxhdGVzOiBOdW1iZXJUZW1wbGF0ZVtdID0gW107XHJcbiAgcHVibGljIGdldCB0ZW1wbGF0ZXMoKTogTnVtYmVyVGVtcGxhdGVbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGVmYXVsdFRlbXBsYXRlPzogVGVtcGxhdGU7XHJcbiAgcHVibGljIGdldCBkZWZhdWx0VGVtcGxhdGUoKTogVGVtcGxhdGUge1xyXG4gICAgaWYodGhpcy5fZGVmYXVsdFRlbXBsYXRlID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGRlZmF1bHQgdGVtcGxhdGUgZm91bmQuXCIpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VGVtcGxhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbm5lckZvcm1BcnJheT86IEZvcm1BcnJheTxGb3JtR3JvdXA8VD4+O1xyXG4gIHB1YmxpYyBnZXQgaW5uZXJGb3JtQXJyYXkoKSB7XHJcbiAgICBpZiAodGhpcy5faW5uZXJGb3JtQXJyYXkgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybUdyb3VwIGlzIG5vdCBzZXQuXCIpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9pbm5lckZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yIChcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuX2NvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA8YW55PjtcclxuICAgIHRoaXMuX2lubmVyRm9ybUFycmF5ID0gZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMucHJvcGVydHkubmFtZV0gYXMgRm9ybUFycmF5PEZvcm1Hcm91cDxUPj47XHJcbiAgICB0aGlzLl90ZW1wbGF0ZXMgPSBSZXN0V29ybGRJbnB1dENvbGxlY3Rpb25Db21wb25lbnQuZ2V0Q29sbGVjdGlvbkVudHJ5VGVtcGxhdGVzKHRoaXMucHJvcGVydHkpO1xyXG4gICAgdGhpcy5fZGVmYXVsdFRlbXBsYXRlID0gdGhpcy5wcm9wZXJ0eS5fdGVtcGxhdGVzLmRlZmF1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRDb2xsZWN0aW9uRW50cnlUZW1wbGF0ZXMocHJvcGVydHk/OiBQcm9wZXJ0eSk6IE51bWJlclRlbXBsYXRlW10ge1xyXG4gICAgaWYgKCFwcm9wZXJ0eSlcclxuICAgICAgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwcm9wZXJ0eS5fdGVtcGxhdGVzKVxyXG4gICAgICAuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IE51bWJlci5pc0ludGVnZXIoTnVtYmVyLnBhcnNlSW50KGtleSkpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyLnBhcnNlSW50KHZhbHVlLnRpdGxlID8/IFwiXCIpKSlcclxuICAgICAgLm1hcCgoWywgdmFsdWVdKSA9PiBuZXcgTnVtYmVyVGVtcGxhdGUodmFsdWUpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGROZXdJdGVtVG9Db2xsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWF4SW5kZXggPSBNYXRoLm1heCguLi5PYmplY3Qua2V5cyh0aGlzLnRlbXBsYXRlcylcclxuICAgICAgLm1hcChrZXkgPT4gTnVtYmVyLnBhcnNlSW50KGtleSkpXHJcbiAgICAgIC5maWx0ZXIoa2V5ID0+IE51bWJlci5pc1NhZmVJbnRlZ2VyKGtleSkpKTtcclxuICAgIGNvbnN0IG5leHRJbmRleCA9IG1heEluZGV4IDwgMCA/IDAgOiBtYXhJbmRleCArIDE7XHJcblxyXG4gICAgY29uc3QgY29waWVkVGVtcGxhdGVEdG8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGVmYXVsdFRlbXBsYXRlKSkgYXMgVGVtcGxhdGVEdG87XHJcbiAgICBjb25zdCBjb3BpZWRUZW1wbGF0ZSA9IG5ldyBOdW1iZXJUZW1wbGF0ZShjb3BpZWRUZW1wbGF0ZUR0byk7XHJcbiAgICBjb3BpZWRUZW1wbGF0ZS50aXRsZSA9IG5leHRJbmRleDtcclxuXHJcbiAgICB0aGlzLnRlbXBsYXRlc1tjb3BpZWRUZW1wbGF0ZS50aXRsZV0gPSBjb3BpZWRUZW1wbGF0ZTtcclxuICAgIHRoaXMuaW5uZXJGb3JtQXJyYXkucHVzaCh0aGlzLl9mb3JtU2VydmljZS5jcmVhdGVGb3JtR3JvdXBGcm9tVGVtcGxhdGUodGhpcy5kZWZhdWx0VGVtcGxhdGUpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVJdGVtRnJvbUNvbGxlY3Rpb24odGVtcGxhdGU6IE51bWJlclRlbXBsYXRlKTogdm9pZCB7XHJcbiAgICBkZWxldGUgdGhpcy50ZW1wbGF0ZXNbdGVtcGxhdGUudGl0bGVdO1xyXG4gICAgdGhpcy5pbm5lckZvcm1BcnJheS5yZW1vdmVBdCh0ZW1wbGF0ZS50aXRsZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sbGVjdGlvbkl0ZW1Ecm9wcGVkKCRldmVudDogQ2RrRHJhZ0Ryb3A8eyB9Pikge1xyXG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9ICRldmVudC5wcmV2aW91c0luZGV4O1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gJGV2ZW50LmN1cnJlbnRJbmRleDtcclxuICAgIGNvbnN0IG1vdmVtZW50RGlyZWN0aW9uID0gY3VycmVudEluZGV4ID4gcHJldmlvdXNJbmRleCA/IDEgOiAtMTtcclxuXHJcbiAgICAvLyBNb3ZlIGluIEZvcm1BcnJheVxyXG4gICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gbW92ZSB0aGUgaXRlbSBpbiB0aGUgX3RlbXBsYXRlcyBvYmplY3RcclxuICAgIGNvbnN0IG1vdmVkQ29udHJvbCA9IHRoaXMuaW5uZXJGb3JtQXJyYXkuYXQocHJldmlvdXNJbmRleCk7XHJcbiAgICBmb3IgKGxldCBpID0gcHJldmlvdXNJbmRleDsgaSAqIG1vdmVtZW50RGlyZWN0aW9uIDwgY3VycmVudEluZGV4ICogbW92ZW1lbnREaXJlY3Rpb247IGkgPSBpICsgbW92ZW1lbnREaXJlY3Rpb24pIHtcclxuICAgICAgdGhpcy5pbm5lckZvcm1BcnJheS5zZXRDb250cm9sKGksIHRoaXMuaW5uZXJGb3JtQXJyYXkuYXQoaSArIG1vdmVtZW50RGlyZWN0aW9uKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlubmVyRm9ybUFycmF5LnNldENvbnRyb2woY3VycmVudEluZGV4LCBtb3ZlZENvbnRyb2wpO1xyXG5cclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgZHJvcGRvd24gdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkuXHJcbiAqIFRoZSBkcm9wZG93biBzdXBwb3J0cyBzZWFyY2hpbmcgdGhyb3VnaCBhIFJFU1RXb3JsZCBsaXN0IGVuZHBvaW50IG9uIHRoZSBiYWNrZW5kLlxyXG4gKiBJdCBpcyBhZHZpc2VkIHRvIHVzZSBSZXN0V29ybGRJbnB1dENvbXBvbmVudCA8cnctaW5wdXQ+IGFuZCBjb250cm9sIHRoZSByZW5kZXJlZCBpbnB1dHMgd2l0aCB0aGUgcGFzc2VkIGluIHByb3BlcnR5XHJcbiAqIGluc3RlYWQgb2YgdXNpbmcgdGhpcyBjb21wb25lbnQgZGlyZWN0bHkuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWlucHV0LWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0LWRyb3Bkb3duL3Jlc3R3b3JsZC1pbnB1dC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWlucHV0LWRyb3Bkb3duL3Jlc3R3b3JsZC1pbnB1dC1kcm9wZG93bi5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkSW5wdXREcm9wZG93bkNvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICBwcm9wZXJ0eSE6IFByb3BlcnR5ICYgeyBvcHRpb25zOiBPcHRpb25zIH07XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnaW5wdXRPcHRpb25zU2luZ2xlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgaW5wdXRPcHRpb25zU2luZ2xlUmVmPzogVGVtcGxhdGVSZWY8UHJvcGVydHlUZW1wbGF0ZUNvbnRleHQ+O1xyXG5cclxuICBAQ29udGVudENoaWxkKCdpbnB1dE9wdGlvbnNNdWx0aXBsZScsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGlucHV0T3B0aW9uc011bHRpcGxlUmVmPzogVGVtcGxhdGVSZWY8UHJvcGVydHlUZW1wbGF0ZUNvbnRleHQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jbGllbnRzOiBSZXN0V29ybGRDbGllbnRDb2xsZWN0aW9uXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RHJvcGRvd25FbGVtZW50VG9vbHRpcChyZXNvdXJjZTogUmVzb3VyY2UsIGtleXNUb0V4Y2x1ZGU/OiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0b29sdGlwID0gT2JqZWN0LmVudHJpZXMocmVzb3VyY2UpXHJcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhKGtleS5zdGFydHNXaXRoKCdfJykgfHwgWydjcmVhdGVkQXQnLCAnY3JlYXRlZEJ5JywgJ2xhc3RDaGFuZ2VkQXQnLCAnbGFzdENoYW5nZWRCeScsICd0aW1lc3RhbXAnXS5pbmNsdWRlcyhrZXkpIHx8IGtleXNUb0V4Y2x1ZGU/LmluY2x1ZGVzKGtleSkpKVxyXG4gICAgICAucmVkdWNlKChwcmV2LCBba2V5LCB2YWx1ZV0sIGluZGV4KSA9PiBgJHtwcmV2fSR7aW5kZXggPT09IDAgPyAnJyA6ICdcXG4nfSR7a2V5fTogJHtSZXN0V29ybGRJbnB1dERyb3Bkb3duQ29tcG9uZW50Lmpzb25TdHJpbmdpZnlXaXRoRWxpcHNpcyh2YWx1ZSl9YCwgJycpO1xyXG5cclxuICAgIHJldHVybiB0b29sdGlwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9uT3B0aW9uc0ZpbHRlcmVkKHByb3BlcnR5OiBQcm9wZXJ0eSwgZXZlbnQ6IHsgb3JpZ2luYWxFdmVudDogdW5rbm93bjsgZmlsdGVyOiBzdHJpbmcgfCBudWxsIH0pIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBwcm9wZXJ0eT8ub3B0aW9ucztcclxuXHJcbiAgICBpZiAoIW9wdGlvbnM/Lmxpbms/LmhyZWYgfHwgIWV2ZW50LmZpbHRlciB8fCBldmVudC5maWx0ZXIgPT09ICcnKVxyXG4gICAgICByZXR1cm47XHJcblxyXG5cclxuICAgIGNvbnN0IHRlbXBsYXRlZFVyaSA9IG9wdGlvbnMubGluay5ocmVmO1xyXG4gICAgbGV0IGZpbHRlciA9IGBjb250YWlucygke29wdGlvbnMucHJvbXB0RmllbGR9LCAnJHtldmVudC5maWx0ZXJ9JylgO1xyXG4gICAgaWYgKG9wdGlvbnMudmFsdWVGaWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gJ2lkJyAmJiAhTnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludChldmVudC5maWx0ZXIpKSlcclxuICAgICAgZmlsdGVyID0gYCgke29wdGlvbnMudmFsdWVGaWVsZH0gZXEgJHtldmVudC5maWx0ZXJ9KSAgb3IgKCR7ZmlsdGVyfSlgO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKS5nZXRMaXN0QnlVcmkodGVtcGxhdGVkVXJpLCB7ICRmaWx0ZXI6IGZpbHRlciwgJHRvcDogMTAgfSk7XHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpIHtcclxuICAgICAgY29uc3QgbWVzc2FnZSA9IGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIHRoZSBmaWx0ZXJlZCBpdGVtcy5gO1xyXG4gICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0Vycm9yJywgZGV0YWlsOiBtZXNzYWdlLCBkYXRhOiByZXNwb25zZSwgc3RpY2t5OiB0cnVlIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbXMgPSByZXNwb25zZS5ib2R5Ll9lbWJlZGRlZC5pdGVtcztcclxuICAgIG9wdGlvbnMuaW5saW5lID0gaXRlbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENsaWVudCgpOiBSZXN0V29ybGRDbGllbnQge1xyXG4gICAgaWYgKCF0aGlzLmFwaU5hbWUpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdldCBhIGNsaWVudCwgYmVjYXVzZSB0aGUgYXBpTmFtZSBpcyBub3Qgc2V0LicpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9jbGllbnRzLmdldENsaWVudCh0aGlzLmFwaU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMganNvblN0cmluZ2lmeVdpdGhFbGlwc2lzKHZhbHVlOiB1bmtub3duKSB7XHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSAyMDA7XHJcbiAgICBjb25zdCBlbmQgPSAxMDtcclxuICAgIGNvbnN0IHN0YXJ0ID0gbWF4TGVuZ3RoIC0gZW5kIC0gMjtcclxuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XHJcbiAgICBjb25zdCBzaG9ydGVuZWQgPSBqc29uLmxlbmd0aCA+IG1heExlbmd0aCA/IGpzb24uc3Vic3RyaW5nKDAsIHN0YXJ0KSArICfigKYnICsganNvbi5zdWJzdHJpbmcoanNvbi5sZW5ndGggLSBlbmQpIDoganNvbjtcclxuXHJcbiAgICByZXR1cm4gc2hvcnRlbmVkO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY29tcGxleCBvYmplY3Qgd2l0aCBtdWx0aXBsZSBwcm9wZXJ0aWVzIHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gdGhlIGdpdmVuIHByb3BlcnR5LlxyXG4gKiBUaGUgb2JqZWN0IGNhbiBhbHNvIGJlIG5lc3RlZC5cclxuICogSXQgaXMgYWR2aXNlZCB0byB1c2UgUmVzdFdvcmxkSW5wdXRDb21wb25lbnQgPHJ3LWlucHV0PiBhbmQgY29udHJvbCB0aGUgcmVuZGVyZWQgaW5wdXRzIHdpdGggdGhlIHBhc3NlZCBpbiBwcm9wZXJ0eVxyXG4gKiBpbnN0ZWFkIG9mIHVzaW5nIHRoaXMgY29tcG9uZW50IGRpcmVjdGx5LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdydy1pbnB1dC1vYmplY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtaW5wdXQtb2JqZWN0L3Jlc3R3b3JsZC1pbnB1dC1vYmplY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1pbnB1dC1vYmplY3QvcmVzdHdvcmxkLWlucHV0LW9iamVjdC5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkSW5wdXRPYmplY3RDb21wb25lbnQ8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47IH0+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwcm9wZXJ0eSE6IFByb3BlcnR5O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwaU5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2lucHV0T2JqZWN0JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgaW5wdXRPYmplY3RSZWY/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcclxuXHJcbiAgcHJpdmF0ZSBfaW5uZXJGb3JtR3JvdXA/OiBGb3JtR3JvdXA8VD47XHJcblxyXG4gIHB1YmxpYyBnZXQgaW5uZXJGb3JtR3JvdXAoKSB7XHJcbiAgICBpZiAodGhpcy5faW5uZXJGb3JtR3JvdXAgPT09IHVuZGVmaW5lZClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybUdyb3VwIGlzIG5vdCBzZXQuXCIpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9pbm5lckZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yIChcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXJcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5fY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDxhbnk+O1xyXG4gICAgdGhpcy5faW5uZXJGb3JtR3JvdXAgPSBmb3JtR3JvdXAuY29udHJvbHNbdGhpcy5wcm9wZXJ0eS5uYW1lXSBhcyBGb3JtR3JvdXA8VD47XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQSBzaW1wbGUgaW5wdXQgZWxlbWVudCwgbGlrZSBhIHRleHQsIG9yIGEgbnVtYmVyIHRoYXQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gdGhlIGdpdmVuIHByb3BlcnR5LlxyXG4gKiBJdCBpcyBhZHZpc2VkIHRvIHVzZSBSZXN0V29ybGRJbnB1dENvbXBvbmVudCA8cnctaW5wdXQ+IGFuZCBjb250cm9sIHRoZSByZW5kZXJlZCBpbnB1dHMgd2l0aCB0aGUgcGFzc2VkIGluIHByb3BlcnR5XHJcbiAqIGluc3RlYWQgb2YgdXNpbmcgdGhpcyBjb21wb25lbnQgZGlyZWN0bHkuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWlucHV0LXNpbXBsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1pbnB1dC1zaW1wbGUvcmVzdHdvcmxkLWlucHV0LXNpbXBsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWlucHV0LXNpbXBsZS9yZXN0d29ybGQtaW5wdXQtc2ltcGxlLmNvbXBvbmVudC5jc3MnXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRJbnB1dFNpbXBsZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHJvcGVydHkhOiBQcm9wZXJ0eTtcclxuXHJcbiAgcHVibGljIGdldCBQcm9wZXJ0eVR5cGUoKSB7XHJcbiAgICByZXR1cm4gUHJvcGVydHlUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2RhdGVGb3JtYXQgPSBuZXcgRGF0ZSgzMzMzLCAxMCwgMjIpIC8vIG1vbnRocyBzdGFydCBhdCAwIGluIEpTXHJcbiAgICAudG9Mb2NhbGVEYXRlU3RyaW5nKClcclxuICAgIC5yZXBsYWNlKFwiMjJcIiwgXCJkZFwiKVxyXG4gICAgLnJlcGxhY2UoXCIxMVwiLCBcIm1tXCIpXHJcbiAgICAucmVwbGFjZShcIjMzMzNcIiwgXCJ5eVwiKVxyXG4gICAgLnJlcGxhY2UoXCIzM1wiLCBcInlcIik7XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFJlc3RXb3JsZElucHV0U2ltcGxlQ29tcG9uZW50Ll9kYXRlRm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RpbWVGb3JtYXQgPSBuZXcgRGF0ZSgxLCAxLCAxLCAyMiwgMzMsIDQ0KVxyXG4gICAgLnRvTG9jYWxlVGltZVN0cmluZygpXHJcbiAgICAucmVwbGFjZShcIjIyXCIsIFwiaGhcIilcclxuICAgIC5yZXBsYWNlKFwiMzNcIiwgXCJtbVwiKVxyXG4gICAgLnJlcGxhY2UoXCI0NFwiLCBcInNzXCIpO1xyXG5cclxuICBwdWJsaWMgZ2V0IHRpbWVGb3JtYXQoKSB7XHJcbiAgICByZXR1cm4gUmVzdFdvcmxkSW5wdXRTaW1wbGVDb21wb25lbnQuX3RpbWVGb3JtYXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtQ29udHJvbD86IEZvcm1Db250cm9sPFQ+O1xyXG5cclxuICBwdWJsaWMgZ2V0IGZvcm1Db250cm9sKCkge1xyXG4gICAgaWYgKHRoaXMuX2Zvcm1Db250cm9sID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm1Hcm91cCBpcyBub3Qgc2V0LlwiKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFByb3BlcnR5V2l0aEltYWdlKCkge1xyXG4gICAgcmV0dXJuIFByb3BlcnR5V2l0aEltYWdlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lclxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLl9jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwPGFueT47XHJcbiAgICB0aGlzLl9mb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1t0aGlzLnByb3BlcnR5Lm5hbWVdIGFzIEZvcm1Db250cm9sPFQ+O1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY29sbGVjdGlvbiBvZiBydy1mb3JtLWVsZW10bnMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZyb20gYSB0ZW1wbGF0ZS5cclxuICogRG9lcyBub3QgaGF2ZSBhbnkgYnV0dG9ucyBvbiBpdHMgb3duLlxyXG4gKiBJZiB5b3Ugd2FudCBidXR0b25zLCB1c2UgUmVzdFdvcmxkRm9ybSA8cnctZm9ybT4uXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWlucHV0LXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLWlucHV0LXRlbXBsYXRlL3Jlc3R3b3JsZC1pbnB1dC10ZW1wbGF0ZS5jb21wb25lbnQuY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdFdvcmxkSW5wdXRUZW1wbGF0ZUNvbXBvbmVudDxUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjsgfT4ge1xyXG4gIEBJbnB1dCgpXHJcbiAgYXBpTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICB0ZW1wbGF0ZSE6IFRlbXBsYXRlO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJncmlkIGZpZWxkXCI+XHJcbiAgICA8cnctbGFiZWwgW3Byb3BlcnR5XT1cInByb3BlcnR5XCIgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTIgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj48L3J3LWxhYmVsPlxyXG4gICAgPHJ3LWlucHV0IFthcGlOYW1lXT1cImFwaU5hbWVcIiBbcHJvcGVydHldPVwicHJvcGVydHlcIiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtMTBcIj48L3J3LWlucHV0PlxyXG48L2Rpdj5cclxuIiwiPHJ3LWlucHV0LWRyb3Bkb3duICpuZ0lmPVwicHJvcGVydHkub3B0aW9uc1wiIFthcGlOYW1lXT1cImFwaU5hbWVcIiBbcHJvcGVydHldPVwicHJvcGVydHkgfCBhczpQcm9wZXJ0eVdpdGhPcHRpb25zXCI+PC9ydy1pbnB1dC1kcm9wZG93bj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIhcHJvcGVydHkub3B0aW9uc1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJvcGVydHkudHlwZVwiPlxyXG4gICAgICAgIDxydy1pbnB1dC1vYmplY3QgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5PYmplY3RcIiBbYXBpTmFtZV09XCJhcGlOYW1lXCIgW3Byb3BlcnR5XT1cInByb3BlcnR5XCI+PC9ydy1pbnB1dC1vYmplY3Q+XHJcbiAgICAgICAgPHJ3LWlucHV0LWNvbGxlY3Rpb24gKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5Db2xsZWN0aW9uXCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eVwiPjwvcnctaW5wdXQtY29sbGVjdGlvbj5cclxuICAgICAgICA8cnctaW5wdXQtc2ltcGxlICpuZ1N3aXRjaERlZmF1bHQgW3Byb3BlcnR5XT1cInByb3BlcnR5XCI+PC9ydy1pbnB1dC1zaW1wbGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48cnctdmFsaWRhdGlvbi1lcnJvcnMgW3Byb3BlcnR5XT1cInByb3BlcnR5XCI+PC9ydy12YWxpZGF0aW9uLWVycm9ycz4iLCI8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnJhY2VcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJjb2xsZWN0aW9uSXRlbURyb3BwZWQoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXNcIiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgY2RrRHJhZz5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWdyaXAtbGluZXNcIiBjZGtEcmFnSGFuZGxlPjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmFjZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgIDxydy1pbnB1dC10ZW1wbGF0ZSBbZm9ybUdyb3VwXT1cImlubmVyRm9ybUFycmF5LmNvbnRyb2xzW3RlbXBsYXRlLnRpdGxlXVwiIFt0ZW1wbGF0ZV09XCJkZWZhdWx0VGVtcGxhdGVcIiBbYXBpTmFtZV09XCJhcGlOYW1lXCIgY2xhc3M9XCJ3LWZ1bGxcIj48L3J3LWlucHV0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwiZmFzIGZhLXRyYXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1kYW5nZXIgbWwtMiBtYi0zXCIgKGNsaWNrKT1cImRlbGV0ZUl0ZW1Gcm9tQ29sbGVjdGlvbih0ZW1wbGF0ZSlcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCB3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwiZmFzIGZhLXBsdXNcIiBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIHAtYnV0dG9uLWluZm9cIiAoY2xpY2spPVwiYWRkTmV3SXRlbVRvQ29sbGVjdGlvbigpXCI+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+IiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXRPcHRpb25zU2luZ2xlIGxldC1wcm9wZXJ0eT1cInByb3BlcnR5XCIgbGV0LXRlbXBsYXRlPVwidGVtcGxhdGVcIj5cbiAgICA8cC1kcm9wZG93biBcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBcbiAgICBbaWRdPVwicHJvcGVydHkubmFtZVwiIFxuICAgIFtvcHRpb25zXT1cInByb3BlcnR5Lm9wdGlvbnMuaW5saW5lXCIgXG4gICAgW2ZpbHRlckJ5XT1cIihwcm9wZXJ0eS5vcHRpb25zLnByb21wdEZpZWxkID8/ICdwcm9tcHQnKSArICcsJyArIChwcm9wZXJ0eS5vcHRpb25zLnZhbHVlRmllbGQgPz8gJ3ZhbHVlJylcIiBcbiAgICBbb3B0aW9uVmFsdWVdPVwicHJvcGVydHkub3B0aW9ucy52YWx1ZUZpZWxkID8/ICd2YWx1ZSdcIiBcbiAgICBbcmVhZG9ubHldPVwicHJvcGVydHkucmVhZE9ubHlcIiBcbiAgICBbcmVxdWlyZWRdPVwicHJvcGVydHkucmVxdWlyZWQgfHwgcHJvcGVydHkub3B0aW9ucy5taW5JdGVtcyA+IDBcIiBcbiAgICBbZmlsdGVyXT1cInRydWVcIiBcbiAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIFxuICAgIFtzaG93Q2xlYXJdPVwiIXByb3BlcnR5LnJlcXVpcmVkIHx8IHByb3BlcnR5Lm9wdGlvbnMubWluSXRlbXMgPD0gMFwiIFxuICAgIChvbkZpbHRlcik9XCJvbk9wdGlvbnNGaWx0ZXJlZChwcm9wZXJ0eSwgJGV2ZW50KVwiIFxuICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBcbiAgICBbZmlsdGVyUGxhY2Vob2xkZXJdPVwicHJvcGVydHk/Lm9wdGlvbnM/Lmxpbms/LmhyZWYgPyAnc2VhcmNoIGZvciBtb3JlIHJlc3VsdHMnIDogJydcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxuICAgICAgICAgICAgPHNwYW4gW3BUb29sdGlwXT1cImdldERyb3Bkb3duRWxlbWVudFRvb2x0aXAoaXRlbSwgW3Byb3BlcnR5Lm9wdGlvbnMucHJvbXB0RmllbGQgPz8gJ3Byb21wdCcsIHByb3BlcnR5Lm9wdGlvbnMudmFsdWVGaWVsZCA/PyAndmFsdWUnXSlcIj57e2l0ZW1bcHJvcGVydHkub3B0aW9ucy5wcm9tcHRGaWVsZCA/PyAncHJvbXB0J119fSAoe3tpdGVtW3Byb3BlcnR5Lm9wdGlvbnMudmFsdWVGaWVsZCA/PyAndmFsdWUnXX19KTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuIFtwVG9vbHRpcF09XCJnZXREcm9wZG93bkVsZW1lbnRUb29sdGlwKGl0ZW0sIFtwcm9wZXJ0eS5vcHRpb25zLnByb21wdEZpZWxkID8/ICdwcm9tcHQnLCBwcm9wZXJ0eS5vcHRpb25zLnZhbHVlRmllbGQgPz8gJ3ZhbHVlJ10pXCI+e3tpdGVtW3Byb3BlcnR5Lm9wdGlvbnMucHJvbXB0RmllbGQgPz8gJ3Byb21wdCddfX0gKHt7aXRlbVtwcm9wZXJ0eS5vcHRpb25zLnZhbHVlRmllbGQgPz8gJ3ZhbHVlJ119fSk8L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLWRyb3Bkb3duPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhcHJvcGVydHkub3B0aW9ucy5tYXhJdGVtcyB8fCBwcm9wZXJ0eS5vcHRpb25zLm1heEl0ZW1zID09IDFcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRPcHRpb25zU2luZ2xlUmVmID8/IGRlZmF1bHRJbnB1dE9wdGlvbnNTaW5nbGU7IGNvbnRleHQ6IHsgcHJvcGVydHk6IHByb3BlcnR5LCBhcGlOYW1lOiBhcGlOYW1lIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dE9wdGlvbnNNdWx0aXBsZSBsZXQtcHJvcGVydHk9XCJwcm9wZXJ0eVwiIGxldC10ZW1wbGF0ZT1cInRlbXBsYXRlXCI+XG4gICAgPHAtbXVsdGlTZWxlY3QgXG4gICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgXG4gICAgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBcbiAgICBbb3B0aW9uc109XCJwcm9wZXJ0eS5vcHRpb25zLmlubGluZVwiIFxuICAgIFtvcHRpb25MYWJlbF09XCJwcm9wZXJ0eS5vcHRpb25zLnByb21wdEZpZWxkID8/ICdwcm9tcHQnXCIgXG4gICAgW29wdGlvblZhbHVlXT1cInByb3BlcnR5Lm9wdGlvbnMudmFsdWVGaWVsZCA/PyAndmFsdWUnXCIgXG4gICAgW3JlYWRvbmx5XT1cInByb3BlcnR5LnJlYWRPbmx5XCIgXG4gICAgW3NlbGVjdGlvbkxpbWl0XT1cInByb3BlcnR5Lm9wdGlvbnMubWF4SXRlbXNcIiBcbiAgICBbcmVxdWlyZWRdPVwicHJvcGVydHkucmVxdWlyZWQgfHwgcHJvcGVydHkub3B0aW9ucy5taW5JdGVtcyA+IDBcIj48L3AtbXVsdGlTZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIihwcm9wZXJ0eS5vcHRpb25zLm1heEl0ZW1zID8/IDApID4gMVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dE9wdGlvbnNNdWx0aXBsZVJlZiA/PyBkZWZhdWx0SW5wdXRPcHRpb25zTXVsdGlwbGU7IGNvbnRleHQ6IHsgcHJvcGVydHk6IHByb3BlcnR5LCBhcGlOYW1lOiBhcGlOYW1lIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0T2JqZWN0IGxldC1wcm9wZXJ0eT1cInByb3BlcnR5XCIgbGV0LXRlbXBsYXRlPVwidGVtcGxhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJyYWNlXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICA8cnctaW5wdXQtdGVtcGxhdGUgW2Zvcm1Hcm91cF09XCJpbm5lckZvcm1Hcm91cFwiIFt0ZW1wbGF0ZV09XCJwcm9wZXJ0eS5fdGVtcGxhdGVzLmRlZmF1bHRcIiBbYXBpTmFtZV09XCJhcGlOYW1lXCI+PC9ydy1pbnB1dC10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRPYmplY3RSZWYgfHwgZGVmYXVsdElucHV0T2JqZWN0OyBjb250ZXh0OiB7IHByb3BlcnR5OiBwcm9wZXJ0eSwgaW5uZXJGb3JtR3JvdXA6IGlubmVyRm9ybUdyb3VwLCBhcGlOYW1lOiBhcGlOYW1lIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPiIsIjxkaXYgW25nU3dpdGNoXT1cInByb3BlcnR5LnR5cGVcIj5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkhpZGRlblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cImhpZGRlblwiIFt2YWx1ZV09XCJwcm9wZXJ0eS52YWx1ZVwiIC8+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5UZXh0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8dGV4dGFyZWEgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5UZXh0YXJlYVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgcElucHV0VGV4dGFyZWEgY2xhc3M9XCJ3LWZ1bGwgcC1pbnB1dHRleHRhcmVhIHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50IHAtZWxlbWVudFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgW2NvbHNdPVwicHJvcGVydHkuY29sc1wiIFtyb3dzXT1cInByb3BlcnR5LnJvd3NcIj48L3RleHRhcmVhPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuU2VhcmNoXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiB0eXBlPVwic2VhcmNoXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlRlbFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInRlbFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5VcmxcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJ1cmxcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRW1haWxcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJlbWFpbFwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5QYXNzd29yZFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInBhc3N3b3JkXCIgcFBhc3N3b3JkIGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPHAtY2FsZW5kYXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5EYXRlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCIgW3Nob3dXZWVrXT1cInRydWVcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cblxuICAgIDxwLWNhbGVuZGFyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuTW9udGhcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXRcIiBbc2hvd1dlZWtdPVwiZmFsc2VcIiB2aWV3PVwibW9udGhcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLldlZWtcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJ3ZWVrXCIgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFtjbGFzcy5wLWRpc2FibGVkXT1cInByb3BlcnR5LnJlYWRPbmx5XCIgLz5cblxuICAgIDxwLWNhbGVuZGFyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuVGltZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgW2RhdGVGb3JtYXRdPVwidGltZUZvcm1hdFwiIFtzaG93VGltZV09XCJ0cnVlXCIgW3RpbWVPbmx5XT1cInRydWVcIiBbc2hvd1dlZWtdPVwiZmFsc2VcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cblxuICAgIDxwLWNhbGVuZGFyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRGF0ZXRpbWVMb2NhbFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dXZWVrXT1cImZhbHNlXCIgW3Nob3dJY29uXT1cInRydWVcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtY2FsZW5kYXI+XG5cbiAgICA8cC1pbnB1dE51bWJlciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLk51bWJlclwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgbW9kZT1cImRlY2ltYWxcIiBbc2hvd0J1dHRvbnNdPVwiIXByb3BlcnR5LnJlYWRPbmx5XCIgY2xhc3M9XCJ3LWZ1bGxcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtaW5wdXROdW1iZXI+XG5cbiAgICA8aW5wdXQgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5SYW5nZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInJhbmdlXCIgW21pbl09XCJwcm9wZXJ0eS5taW5cIiBbbWF4XT1cInByb3BlcnR5Lm1heFwiIFtzdGVwXT1cInByb3BlcnR5LnN0ZXBcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuXG4gICAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuQ29sb3JcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIHR5cGU9XCJjb2xvclwiIHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiIC8+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuQm9vbFwiPlxuICAgICAgICA8cC1jaGVja2JveCAqbmdJZj1cInByb3BlcnR5LnJlcXVpcmVkXCIgW2JpbmFyeV09XCJ0cnVlXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbcmVhZG9ubHldPVwicHJvcGVydHkucmVhZE9ubHkhXCI+PC9wLWNoZWNrYm94PlxuICAgICAgICA8cC10cmlTdGF0ZUNoZWNrYm94ICpuZ0lmPVwiIXByb3BlcnR5LnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbcmVhZG9ubHldPVwicHJvcGVydHkucmVhZE9ubHkhXCI+PC9wLXRyaVN0YXRlQ2hlY2tib3g+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8cC1jYWxlbmRhciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkRhdGV0aW1lT2Zmc2V0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2lkXT1cInByb3BlcnR5Lm5hbWVcIiBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1dlZWtdPVwiZmFsc2VcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiBbY2xhc3MucC1kaXNhYmxlZF09XCJwcm9wZXJ0eS5yZWFkT25seVwiPjwvcC1jYWxlbmRhcj5cblxuICAgIDxwLWNhbGVuZGFyICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRHVyYXRpb25cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BlcnR5Lm5hbWVcIiBbaWRdPVwicHJvcGVydHkubmFtZVwiIFtkYXRlRm9ybWF0XT1cInRpbWVGb3JtYXRcIiBbc2hvd1RpbWVdPVwidHJ1ZVwiIFt0aW1lT25seV09XCJ0cnVlXCIgW3Nob3dXZWVrXT1cImZhbHNlXCIgW3Nob3dJY29uXT1cInRydWVcIiBzdHlsZUNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIj48L3AtY2FsZW5kYXI+XG5cbiAgICA8cnctaW1hZ2UgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5JbWFnZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtwcm9wZXJ0eV09XCJwcm9wZXJ0eSB8IGFzOlByb3BlcnR5V2l0aEltYWdlXCI+PC9ydy1pbWFnZT5cblxuICAgIDxydy1maWxlICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRmlsZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtmaWxlTmFtZV09XCJwcm9wZXJ0eS5uYW1lXCIgW2FjY2VwdF09XCJwcm9wZXJ0eS5wbGFjZWhvbGRlclwiPjwvcnctZmlsZT5cblxuICAgIDxpbnB1dCAqbmdTd2l0Y2hEZWZhdWx0IFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcGVydHkubmFtZVwiIFtpZF09XCJwcm9wZXJ0eS5uYW1lXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGNsYXNzPVwidy1mdWxsXCIgW2NsYXNzLnAtZGlzYWJsZWRdPVwicHJvcGVydHkucmVhZE9ubHlcIiAvPlxuPC9kaXY+XG4iLCI8cnctZm9ybS1lbGVtZW50ICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiB0ZW1wbGF0ZS5wcm9wZXJ0aWVzXCIgW3Byb3BlcnR5XT1cInByb3BlcnR5XCIgW2FwaU5hbWVdPVwiYXBpTmFtZVwiPjwvcnctZm9ybS1lbGVtZW50PiJdfQ==
|
|
@@ -78,6 +78,9 @@ export class RestWorldTableComponent {
|
|
|
78
78
|
get dateFormat() {
|
|
79
79
|
return RestWorldTableComponent._dateFormat;
|
|
80
80
|
}
|
|
81
|
+
get timeFormat() {
|
|
82
|
+
return RestWorldTableComponent._timeFormat;
|
|
83
|
+
}
|
|
81
84
|
get PropertyType() {
|
|
82
85
|
return PropertyType;
|
|
83
86
|
}
|
|
@@ -109,17 +112,22 @@ export class RestWorldTableComponent {
|
|
|
109
112
|
}
|
|
110
113
|
}
|
|
111
114
|
}
|
|
112
|
-
RestWorldTableComponent._dateFormat = new Date(3333, 10, 22)
|
|
115
|
+
RestWorldTableComponent._dateFormat = new Date(3333, 10, 22) // months start at 0 in JS
|
|
113
116
|
.toLocaleDateString()
|
|
114
117
|
.replace("22", "dd")
|
|
115
118
|
.replace("11", "MM")
|
|
116
|
-
.replace("3333", "
|
|
117
|
-
.replace("33", "
|
|
119
|
+
.replace("3333", "yy")
|
|
120
|
+
.replace("33", "y");
|
|
121
|
+
RestWorldTableComponent._timeFormat = new Date(1, 1, 1, 22, 33, 44)
|
|
122
|
+
.toLocaleTimeString()
|
|
123
|
+
.replace("22", "hh")
|
|
124
|
+
.replace("33", "mm")
|
|
125
|
+
.replace("44", "ss");
|
|
118
126
|
RestWorldTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestWorldTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
119
|
-
RestWorldTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: RestWorldTableComponent, selector: "rw-table", inputs: { api: "api", template: "template", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", headerMenu: "headerMenu", rowMenu: "rowMenu", showRowMenuAsColumn: "showRowMenuAsColumn", showRowMenuOnRightClick: "showRowMenuOnRightClick", totalRecords: "totalRecords", styleClass: "styleClass", tableStyle: "tableStyle", scrollable: "scrollable", scrollHeight: "scrollHeight", isLoading: "isLoading" }, outputs: { onFilterOrSortChanged: "onFilterOrSortChanged" }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true }], ngImport: i0, template: "<p-table\n #table\n [value]=\"rows\"\n [columns]=\"columns\"\n [lazy]=\"true\"\n [lazyLoadOnInit]=\"false\"\n (onLazyLoad)=\"load($event)\"\n responsiveLayout=\"scroll\"\n [paginator]=\"true\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n [rows]=\"rows.length\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"isLoading\"\n [sortField]=\"sortField!\"\n [sortOrder]=\"sortOrder!\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" [pSortableColumn]=\"col.name\">\n <div class=\"p-d-flex p-jc-between p-ai-center\">\n {{col.prompt}}\n <ng-container *ngIf=\"!col.readOnly\">\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\n <p-columnFilter [type]=\"toColumnFilterType(col.type)\" [field]=\"col.name\" display=\"menu\"></p-columnFilter>\n </ng-container>\n </div>\n </th>\n <th *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button [items]=\"headerMenu\"></rw-menu-button>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-entity let-columns=\"columns\" let-rowIndex=\"rowIndex\">\n <tr (contextmenu)=\"openContextMenu($event, entity)\">\n <td [ngSwitch]=\"col.type\" *ngFor=\"let col of columns\">\n <ng-container *ngSwitchCase=\"PropertyType.Text\">\n <rw-avatar *ngIf=\"col.name === 'createdBy' || col.name === 'lastChangedBy'\" [user]=\"entity[col.name]\"></rw-avatar>\n <span *ngIf=\"col.name !== 'createdBy' && col.name !== 'lastChangedBy'\">{{entity[col.name]}}</span>\n </ng-container>\n <span *ngSwitchCase=\"PropertyType.Number\" class=\"flex justify-content-end\">{{entity[col.name]}}</span>\n <span *ngSwitchCase=\"PropertyType.Bool\" class=\"flex justify-content-center\"><p-triStateCheckbox [(ngModel)]=\"entity[col.name]\" [readonly]=\"true\"></p-triStateCheckbox></span>\n <span *ngSwitchCase=\"PropertyType.Date\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeLocal\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeOffset\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Collection\" class=\"flex justify-content-end\"><p *ngFor=\"let arrayElement of entity[col.name]\">{{arrayElement | json}}</p></span>\n <span *ngSwitchCase=\"PropertyType.Object\" class=\"flex justify-content-end\">{{entity[col.name] | json}}</span>\n </td>\n <td *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button *ngIf=\"showRowMenuAsColumn\" [items]=\"rowMenus[rowIndex - table.first]\"></rw-menu-button>\n </td>\n </tr>\n </ng-template>\n\n <p-contextMenu #contextMenu appendTo=\"body\" [model]=\"contextMenuItems\"></p-contextMenu>\n</p-table>\n", styles: [".p-tooltip{max-width:-moz-fit-content;max-width:fit-content}a.p-button{text-decoration:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i3.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i6.TriStateCheckbox, selector: "p-triStateCheckbox", inputs: ["disabled", "name", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "label", "readonly", "checkboxTrueIcon", "checkboxFalseIcon"], outputs: ["onChange"] }, { kind: "component", type: i7.ContextMenu, selector: "p-contextMenu", inputs: ["model", "global", "target", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "triggerEvent"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i8.RestWorldAvatarComponent, selector: "rw-avatar", inputs: ["user"] }, { kind: "component", type: i9.RestWorldMenuButtonComponent, selector: "rw-menu-button", inputs: ["items"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
127
|
+
RestWorldTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: RestWorldTableComponent, selector: "rw-table", inputs: { api: "api", template: "template", rows: "rows", rowsPerPageOptions: "rowsPerPageOptions", headerMenu: "headerMenu", rowMenu: "rowMenu", showRowMenuAsColumn: "showRowMenuAsColumn", showRowMenuOnRightClick: "showRowMenuOnRightClick", totalRecords: "totalRecords", styleClass: "styleClass", tableStyle: "tableStyle", scrollable: "scrollable", scrollHeight: "scrollHeight", isLoading: "isLoading" }, outputs: { onFilterOrSortChanged: "onFilterOrSortChanged" }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true }], ngImport: i0, template: "<p-table\n #table\n [value]=\"rows\"\n [columns]=\"columns\"\n [lazy]=\"true\"\n [lazyLoadOnInit]=\"false\"\n (onLazyLoad)=\"load($event)\"\n responsiveLayout=\"scroll\"\n [paginator]=\"true\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n [rows]=\"rows.length\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"isLoading\"\n [sortField]=\"sortField!\"\n [sortOrder]=\"sortOrder!\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" [pSortableColumn]=\"col.name\">\n <div class=\"p-d-flex p-jc-between p-ai-center\">\n {{col.prompt}}\n <ng-container *ngIf=\"!col.readOnly\">\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\n <p-columnFilter [type]=\"toColumnFilterType(col.type)\" [field]=\"col.name\" display=\"menu\"></p-columnFilter>\n </ng-container>\n </div>\n </th>\n <th *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button [items]=\"headerMenu\"></rw-menu-button>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-entity let-columns=\"columns\" let-rowIndex=\"rowIndex\">\n <tr (contextmenu)=\"openContextMenu($event, entity)\">\n <td [ngSwitch]=\"col.type\" *ngFor=\"let col of columns\">\n <ng-container *ngSwitchCase=\"PropertyType.Text\">\n <rw-avatar *ngIf=\"col.name === 'createdBy' || col.name === 'lastChangedBy'\" [user]=\"entity[col.name]\"></rw-avatar>\n <span *ngIf=\"col.name !== 'createdBy' && col.name !== 'lastChangedBy'\">{{entity[col.name]}}</span>\n </ng-container>\n <span *ngSwitchCase=\"PropertyType.Number\" class=\"flex justify-content-end\">{{entity[col.name]}}</span>\n <span *ngSwitchCase=\"PropertyType.Bool\" class=\"flex justify-content-center\"><p-triStateCheckbox [(ngModel)]=\"entity[col.name]\" [readonly]=\"true\"></p-triStateCheckbox></span>\n <span *ngSwitchCase=\"PropertyType.Date\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Time\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:timeFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Duration\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:timeFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeLocal\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeOffset\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Collection\" class=\"flex justify-content-end\"><p *ngFor=\"let arrayElement of entity[col.name]\">{{arrayElement | json}}</p></span>\n <span *ngSwitchCase=\"PropertyType.Object\" class=\"flex justify-content-end\">{{entity[col.name] | json}}</span>\n <span *ngSwitchDefault [pTooltip]=\"entity[col.name]\">{{entity[col.name]}}</span>\n </td>\n <td *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button *ngIf=\"showRowMenuAsColumn\" [items]=\"rowMenus[rowIndex - table.first]\"></rw-menu-button>\n </td>\n </tr>\n </ng-template>\n\n <p-contextMenu #contextMenu appendTo=\"body\" [model]=\"contextMenuItems\"></p-contextMenu>\n</p-table>\n", styles: [".p-tooltip{max-width:-moz-fit-content;max-width:fit-content}a.p-button{text-decoration:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i3.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i6.TriStateCheckbox, selector: "p-triStateCheckbox", inputs: ["disabled", "name", "ariaLabelledBy", "tabindex", "inputId", "style", "styleClass", "label", "readonly", "checkboxTrueIcon", "checkboxFalseIcon"], outputs: ["onChange"] }, { kind: "component", type: i7.ContextMenu, selector: "p-contextMenu", inputs: ["model", "global", "target", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "triggerEvent"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i8.RestWorldAvatarComponent, selector: "rw-avatar", inputs: ["user"] }, { kind: "component", type: i9.RestWorldMenuButtonComponent, selector: "rw-menu-button", inputs: ["items"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
120
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: RestWorldTableComponent, decorators: [{
|
|
121
129
|
type: Component,
|
|
122
|
-
args: [{ selector: 'rw-table', template: "<p-table\n #table\n [value]=\"rows\"\n [columns]=\"columns\"\n [lazy]=\"true\"\n [lazyLoadOnInit]=\"false\"\n (onLazyLoad)=\"load($event)\"\n responsiveLayout=\"scroll\"\n [paginator]=\"true\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n [rows]=\"rows.length\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"isLoading\"\n [sortField]=\"sortField!\"\n [sortOrder]=\"sortOrder!\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" [pSortableColumn]=\"col.name\">\n <div class=\"p-d-flex p-jc-between p-ai-center\">\n {{col.prompt}}\n <ng-container *ngIf=\"!col.readOnly\">\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\n <p-columnFilter [type]=\"toColumnFilterType(col.type)\" [field]=\"col.name\" display=\"menu\"></p-columnFilter>\n </ng-container>\n </div>\n </th>\n <th *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button [items]=\"headerMenu\"></rw-menu-button>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-entity let-columns=\"columns\" let-rowIndex=\"rowIndex\">\n <tr (contextmenu)=\"openContextMenu($event, entity)\">\n <td [ngSwitch]=\"col.type\" *ngFor=\"let col of columns\">\n <ng-container *ngSwitchCase=\"PropertyType.Text\">\n <rw-avatar *ngIf=\"col.name === 'createdBy' || col.name === 'lastChangedBy'\" [user]=\"entity[col.name]\"></rw-avatar>\n <span *ngIf=\"col.name !== 'createdBy' && col.name !== 'lastChangedBy'\">{{entity[col.name]}}</span>\n </ng-container>\n <span *ngSwitchCase=\"PropertyType.Number\" class=\"flex justify-content-end\">{{entity[col.name]}}</span>\n <span *ngSwitchCase=\"PropertyType.Bool\" class=\"flex justify-content-center\"><p-triStateCheckbox [(ngModel)]=\"entity[col.name]\" [readonly]=\"true\"></p-triStateCheckbox></span>\n <span *ngSwitchCase=\"PropertyType.Date\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeLocal\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeOffset\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Collection\" class=\"flex justify-content-end\"><p *ngFor=\"let arrayElement of entity[col.name]\">{{arrayElement | json}}</p></span>\n <span *ngSwitchCase=\"PropertyType.Object\" class=\"flex justify-content-end\">{{entity[col.name] | json}}</span>\n </td>\n <td *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button *ngIf=\"showRowMenuAsColumn\" [items]=\"rowMenus[rowIndex - table.first]\"></rw-menu-button>\n </td>\n </tr>\n </ng-template>\n\n <p-contextMenu #contextMenu appendTo=\"body\" [model]=\"contextMenuItems\"></p-contextMenu>\n</p-table>\n", styles: [".p-tooltip{max-width:-moz-fit-content;max-width:fit-content}a.p-button{text-decoration:none}\n"] }]
|
|
130
|
+
args: [{ selector: 'rw-table', template: "<p-table\n #table\n [value]=\"rows\"\n [columns]=\"columns\"\n [lazy]=\"true\"\n [lazyLoadOnInit]=\"false\"\n (onLazyLoad)=\"load($event)\"\n responsiveLayout=\"scroll\"\n [paginator]=\"true\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n [rows]=\"rows.length\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"isLoading\"\n [sortField]=\"sortField!\"\n [sortOrder]=\"sortOrder!\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\" [pSortableColumn]=\"col.name\">\n <div class=\"p-d-flex p-jc-between p-ai-center\">\n {{col.prompt}}\n <ng-container *ngIf=\"!col.readOnly\">\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\n <p-columnFilter [type]=\"toColumnFilterType(col.type)\" [field]=\"col.name\" display=\"menu\"></p-columnFilter>\n </ng-container>\n </div>\n </th>\n <th *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button [items]=\"headerMenu\"></rw-menu-button>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-entity let-columns=\"columns\" let-rowIndex=\"rowIndex\">\n <tr (contextmenu)=\"openContextMenu($event, entity)\">\n <td [ngSwitch]=\"col.type\" *ngFor=\"let col of columns\">\n <ng-container *ngSwitchCase=\"PropertyType.Text\">\n <rw-avatar *ngIf=\"col.name === 'createdBy' || col.name === 'lastChangedBy'\" [user]=\"entity[col.name]\"></rw-avatar>\n <span *ngIf=\"col.name !== 'createdBy' && col.name !== 'lastChangedBy'\">{{entity[col.name]}}</span>\n </ng-container>\n <span *ngSwitchCase=\"PropertyType.Number\" class=\"flex justify-content-end\">{{entity[col.name]}}</span>\n <span *ngSwitchCase=\"PropertyType.Bool\" class=\"flex justify-content-center\"><p-triStateCheckbox [(ngModel)]=\"entity[col.name]\" [readonly]=\"true\"></p-triStateCheckbox></span>\n <span *ngSwitchCase=\"PropertyType.Date\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Time\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:timeFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Duration\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:timeFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeLocal\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.DatetimeOffset\" [pTooltip]=\"entity[col.name]\">{{entity[col.name] | date:dateFormat}}</span>\n <span *ngSwitchCase=\"PropertyType.Collection\" class=\"flex justify-content-end\"><p *ngFor=\"let arrayElement of entity[col.name]\">{{arrayElement | json}}</p></span>\n <span *ngSwitchCase=\"PropertyType.Object\" class=\"flex justify-content-end\">{{entity[col.name] | json}}</span>\n <span *ngSwitchDefault [pTooltip]=\"entity[col.name]\">{{entity[col.name]}}</span>\n </td>\n <td *ngIf=\"showMenuColumn\" class=\"flex justify-content-end\">\n <rw-menu-button *ngIf=\"showRowMenuAsColumn\" [items]=\"rowMenus[rowIndex - table.first]\"></rw-menu-button>\n </td>\n </tr>\n </ng-template>\n\n <p-contextMenu #contextMenu appendTo=\"body\" [model]=\"contextMenuItems\"></p-contextMenu>\n</p-table>\n", styles: [".p-tooltip{max-width:-moz-fit-content;max-width:fit-content}a.p-button{text-decoration:none}\n"] }]
|
|
123
131
|
}], propDecorators: { api: [{
|
|
124
132
|
type: Input
|
|
125
133
|
}], template: [{
|
|
@@ -154,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
|
154
162
|
}], isLoading: [{
|
|
155
163
|
type: Input
|
|
156
164
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXN0d29ybGQtdGFibGUvcmVzdHdvcmxkLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXN0d29ybGQtdGFibGUvcmVzdHdvcmxkLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBWSxZQUFZLEVBQVksTUFBTSx5QkFBeUIsQ0FBQztBQUkzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7O0FBRzdELElBQUssZ0JBS0o7QUFMRCxXQUFLLGdCQUFnQjtJQUNuQixpQ0FBYSxDQUFBO0lBQ2IsdUNBQW1CLENBQUE7SUFDbkIsdUNBQW1CLENBQUE7SUFDbkIsaUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFMSSxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBS3BCO0FBT0QsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQXFCVSxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBWXhCLHVCQUFrQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUdsQyxlQUFVLEdBQWUsRUFBRSxDQUFDO1FBRzVCLFlBQU8sR0FBK0QsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTlFLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBVTlCLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUczQiw0QkFBdUIs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QixFQUFFO0tBQ3BCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0tBQ25CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0tBQ25CLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO0tBQ3BCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7b0hBNUdaLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLCttQkNwQnBDLDZxR0E0REE7MkZEeENhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxVQUFVOzhCQU1iLEdBQUc7c0JBRFQsS0FBSztnQkFLSyxRQUFRO3NCQURsQixLQUFLO2dCQWdCSyxJQUFJO3NCQURkLEtBQUs7Z0JBUUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQWFDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyx1QkFBdUI7c0JBRDdCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFzQkMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxxQkFBcUI7c0JBRDNCLE1BQU07Z0JBSVAsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBU2pCLFNBQVM7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3BlcnR5LCBQcm9wZXJ0eVR5cGUsIFRlbXBsYXRlIH0gZnJvbSAnQHdlcnR6dWkvbmd4LWhhbC1jbGllbnQnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCwgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBPRGF0YVBhcmFtZXRlcnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvby1kYXRhJztcbmltcG9ydCB7IE9EYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRNZW51IH0gZnJvbSAncHJpbWVuZy9jb250ZXh0bWVudSc7XG5cbmVudW0gQ29sdW1uRmlsdGVyVHlwZSB7XG4gIHRleHQgPSAndGV4dCcsXG4gIG51bWVyaWMgPSAnbnVtZXJpYycsXG4gIGJvb2xlYW4gPSAnYm9vbGVhbicsXG4gIGRhdGUgPSAnZGF0ZSdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnctdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdHdvcmxkLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdHdvcmxkLXRhYmxlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXN0V29ybGRUYWJsZUNvbXBvbmVudDxUTGlzdER0bz4ge1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXBpPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgX3RlbXBsYXRlPzogVGVtcGxhdGU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlIHwgdW5kZWZpbmVkKXtcbiAgICB0aGlzLl90ZW1wbGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMuX2NvbHVtbnMgPSB2YWx1ZT8ucHJvcGVydGllcy5maWx0ZXIocCA9PiBwLnR5cGUgIT09IFByb3BlcnR5VHlwZS5IaWRkZW4pID8/IFtdO1xuICAgIHRoaXMuc2V0U29ydEZpZWxkQW5kU29ydE9yZGVyKHZhbHVlKVxuICB9XG5cbiAgcHVibGljIGdldCB0ZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGU7XG4gIH1cblxuICBwcml2YXRlIF9yb3dzOiBUTGlzdER0b1tdID0gW107XG4gIHB1YmxpYyBnZXQgcm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93cztcbiAgfVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJvd3ModmFsdWU6IFRMaXN0RHRvW10pIHtcbiAgICB0aGlzLl9yb3dzID0gdmFsdWU7XG4gICAgaWYodGhpcy5zaG93Um93TWVudUFzQ29sdW1uKVxuICAgICAgdGhpcy5fcm93TWVudXMgPSB2YWx1ZS5tYXAociA9PiB0aGlzLnJvd01lbnUociwgZmFsc2UpKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dzUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDI1LCA1MF07XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhlYWRlck1lbnU6IE1lbnVJdGVtW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcm93TWVudTogKHJvdzogVExpc3REdG8sIG9wZW5lZEJ5UmlnaHRDbGljazogYm9vbGVhbikgPT4gTWVudUl0ZW1bXSA9ICgpID0+IFtdO1xuXG4gIHByaXZhdGUgX3Jvd01lbnVzOiBNZW51SXRlbVtdW10gPSBbXTtcbiAgcHVibGljIGdldCByb3dNZW51cygpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93TWVudXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dNZW51Q29sdW1uKCkge1xuICAgIHJldHVybiB0aGlzLmhlYWRlck1lbnUubGVuZ3RoID4gMCB8fCB0aGlzLnNob3dSb3dNZW51QXNDb2x1bW47XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1Jvd01lbnVBc0NvbHVtbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dSb3dNZW51T25SaWdodENsaWNrID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdG90YWxSZWNvcmRzID0gMDtcblxuICBwcml2YXRlIHNldFNvcnRGaWVsZEFuZFNvcnRPcmRlcih0ZW1wbGF0ZTogVGVtcGxhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBvcmRlckJ5ID0gdGVtcGxhdGU/LnByb3BlcnRpZXM/LmZpbmQocCA9PiBwPy5uYW1lID09PSBcIiRvcmRlcmJ5XCIpPy52YWx1ZTtcblxuICAgIGlmKG9yZGVyQnkgPT09IG51bGwgfHwgb3JkZXJCeSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBvcmRlckJ5ICE9PSAnc3RyaW5nJylcbiAgICByZXR1cm47XG5cbiAgICBjb25zdCBbZmllbGQsIG9yZGVyXSA9IG9yZGVyQnkuc3BsaXQoXCIgXCIpO1xuICAgIGNvbnN0IG9yZGVyQXNOdW1iZXIgPSBvcmRlcj8udG9Mb3dlckNhc2UoKSA9PT0gXCJkZXNjXCIgPyAtMSA6IDE7XG5cbiAgICBpZiAodGhpcy5zb3J0RmllbGQgIT09IGZpZWxkKVxuICAgICAgdGhpcy5zb3J0RmllbGQgPSBmaWVsZDtcbiAgICBpZiAodGhpcy5zb3J0T3JkZXIgIT09IG9yZGVyQXNOdW1iZXIpXG4gICAgICB0aGlzLnNvcnRPcmRlciA9IG9yZGVyQXNOdW1iZXI7XG4gIH1cblxuICBwdWJsaWMgc29ydEZpZWxkPzogc3RyaW5nO1xuICBwdWJsaWMgc29ydE9yZGVyPzogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdHlsZUNsYXNzOiBzdHJpbmcgPSBcIlwiO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0YWJsZVN0eWxlPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzY3JvbGxhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSBcImZsZXhcIjtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uRmlsdGVyT3JTb3J0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8T0RhdGFQYXJhbWV0ZXJzPigpO1xuXG4gIEBWaWV3Q2hpbGQoXCJjb250ZXh0TWVudVwiKVxuICBjb250ZXh0TWVudT86IENvbnRleHRNZW51O1xuXG4gIHByaXZhdGUgX2NvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcbiAgcHVibGljIGdldCBjb250ZXh0TWVudUl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0TWVudUl0ZW1zO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2NvbHVtbnM6IFByb3BlcnR5W10gPSBbXTtcbiAgcHVibGljIGdldCBjb2x1bW5zKCk6IFByb3BlcnR5W10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2RhdGVGb3JtYXQgPSBuZXcgRGF0ZSgzMzMzLCAxMCwgMjIpXG4gICAgLnRvTG9jYWxlRGF0ZVN0cmluZygpXG4gICAgLnJlcGxhY2UoXCIyMlwiLCBcImRkXCIpXG4gICAgLnJlcGxhY2UoXCIxMVwiLCBcIk1NXCIpXG4gICAgLnJlcGxhY2UoXCIzMzMzXCIsIFwieVwiKVxuICAgIC5yZXBsYWNlKFwiMzNcIiwgXCJ5eVwiKTtcblxuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKSB7XG4gICAgcmV0dXJuIFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50Ll9kYXRlRm9ybWF0O1xuICB9XG5cbiAgcHVibGljIGdldCBQcm9wZXJ0eVR5cGUoKTogdHlwZW9mIFByb3BlcnR5VHlwZSB7XG4gICAgcmV0dXJuIFByb3BlcnR5VHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgdGhpcy5zb3J0RmllbGQgPSBldmVudC5zb3J0RmllbGQ7XG4gICAgdGhpcy5zb3J0T3JkZXIgPSBldmVudC5zb3J0T3JkZXI7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IE9EYXRhU2VydmljZS5jcmVhdGVQYXJhbWV0ZXJzRnJvbVRhYmxlTG9hZEV2ZW50KGV2ZW50LCB0aGlzLnRlbXBsYXRlKTtcbiAgICB0aGlzLm9uRmlsdGVyT3JTb3J0Q2hhbmdlZC5lbWl0KHBhcmFtZXRlcnMpO1xuICB9XG5cbiAgcHVibGljIG9wZW5Db250ZXh0TWVudShldmVudDogTW91c2VFdmVudCwgcm93OiBUTGlzdER0byk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG93Um93TWVudU9uUmlnaHRDbGljayB8fCB0aGlzLmNvbnRleHRNZW51ID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm47XG5cbiAgICB0aGlzLl9jb250ZXh0TWVudUl0ZW1zID0gdGhpcy5yb3dNZW51KHJvdywgdHJ1ZSk7XG4gICAgdGhpcy5jb250ZXh0TWVudS5zaG93KGV2ZW50KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0NvbHVtbkZpbHRlclR5cGUocHJvcGVydHlUeXBlOiBQcm9wZXJ0eVR5cGUpIDogQ29sdW1uRmlsdGVyVHlwZXtcbiAgICBzd2l0Y2gocHJvcGVydHlUeXBlKSB7XG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5OdW1iZXI6XG4gICAgICAgIHJldHVybiBDb2x1bW5GaWx0ZXJUeXBlLm51bWVyaWM7XG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5Cb29sOlxuICAgICAgICByZXR1cm4gQ29sdW1uRmlsdGVyVHlwZS5ib29sZWFuO1xuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuRGF0ZTpcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkRhdGV0aW1lTG9jYWw6XG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5EYXRldGltZU9mZnNldDpcbiAgICAgICAgcmV0dXJuIENvbHVtbkZpbHRlclR5cGUuZGF0ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBDb2x1bW5GaWx0ZXJUeXBlLnRleHQ7XG4gICAgfVxuICB9XG59XG4iLCI8cC10YWJsZVxuICAjdGFibGVcbiAgW3ZhbHVlXT1cInJvd3NcIlxuICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgW2xhenldPVwidHJ1ZVwiXG4gIFtsYXp5TG9hZE9uSW5pdF09XCJmYWxzZVwiXG4gIChvbkxhenlMb2FkKT1cImxvYWQoJGV2ZW50KVwiXG4gIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIlxuICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9uc1wiXG4gIFtyb3dzXT1cInJvd3MubGVuZ3RoXCJcbiAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICBbc29ydEZpZWxkXT1cInNvcnRGaWVsZCFcIlxuICBbc29ydE9yZGVyXT1cInNvcnRPcmRlciFcIlxuICBbc3R5bGVDbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgW3RhYmxlU3R5bGVdPVwidGFibGVTdHlsZVwiXG4gIFtzY3JvbGxhYmxlXT1cInNjcm9sbGFibGVcIlxuICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiPlxuXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cbiAgICA8dHI+XG4gICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbC5uYW1lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1kLWZsZXggcC1qYy1iZXR3ZWVuIHAtYWktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAge3tjb2wucHJvbXB0fX1cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC5yZWFkT25seVwiPlxuICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gW2ZpZWxkXT1cImNvbC5uYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyIFt0eXBlXT1cInRvQ29sdW1uRmlsdGVyVHlwZShjb2wudHlwZSlcIiBbZmllbGRdPVwiY29sLm5hbWVcIiBkaXNwbGF5PVwibWVudVwiPjwvcC1jb2x1bW5GaWx0ZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoICpuZ0lmPVwic2hvd01lbnVDb2x1bW5cIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgIDxydy1tZW51LWJ1dHRvbiBbaXRlbXNdPVwiaGVhZGVyTWVudVwiPjwvcnctbWVudS1idXR0b24+XG4gICAgICAgIDwvdGg+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRpdHkgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgICA8dHIgKGNvbnRleHRtZW51KT1cIm9wZW5Db250ZXh0TWVudSgkZXZlbnQsIGVudGl0eSlcIj5cbiAgICAgICAgPHRkIFtuZ1N3aXRjaF09XCJjb2wudHlwZVwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLlRleHRcIj5cbiAgICAgICAgICAgICAgICA8cnctYXZhdGFyICpuZ0lmPVwiY29sLm5hbWUgPT09ICdjcmVhdGVkQnknIHx8IGNvbC5uYW1lID09PSAnbGFzdENoYW5nZWRCeSdcIiBbdXNlcl09XCJlbnRpdHlbY29sLm5hbWVdXCI+PC9ydy1hdmF0YXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2wubmFtZSAhPT0gJ2NyZWF0ZWRCeScgJiYgY29sLm5hbWUgIT09ICdsYXN0Q2hhbmdlZEJ5J1wiPnt7ZW50aXR5W2NvbC5uYW1lXX19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLk51bWJlclwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+e3tlbnRpdHlbY29sLm5hbWVdfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkJvb2xcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPjxwLXRyaVN0YXRlQ2hlY2tib3ggWyhuZ01vZGVsKV09XCJlbnRpdHlbY29sLm5hbWVdXCIgW3JlYWRvbmx5XT1cInRydWVcIj48L3AtdHJpU3RhdGVDaGVja2JveD48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkRhdGVcIiBbcFRvb2x0aXBdPVwiZW50aXR5W2NvbC5uYW1lXVwiPnt7ZW50aXR5W2NvbC5uYW1lXSB8IGRhdGU6ZGF0ZUZvcm1hdH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5EYXRldGltZUxvY2FsXCIgW3BUb29sdGlwXT1cImVudGl0eVtjb2wubmFtZV1cIj57e2VudGl0eVtjb2wubmFtZV0gfCBkYXRlOmRhdGVGb3JtYXR9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRGF0ZXRpbWVPZmZzZXRcIiBbcFRvb2x0aXBdPVwiZW50aXR5W2NvbC5uYW1lXVwiPnt7ZW50aXR5W2NvbC5uYW1lXSB8IGRhdGU6ZGF0ZUZvcm1hdH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5Db2xsZWN0aW9uXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj48cCAqbmdGb3I9XCJsZXQgYXJyYXlFbGVtZW50IG9mIGVudGl0eVtjb2wubmFtZV1cIj57e2FycmF5RWxlbWVudCB8IGpzb259fTwvcD48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLk9iamVjdFwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+e3tlbnRpdHlbY29sLm5hbWVdIHwganNvbn19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm5nSWY9XCJzaG93TWVudUNvbHVtblwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgPHJ3LW1lbnUtYnV0dG9uICpuZ0lmPVwic2hvd1Jvd01lbnVBc0NvbHVtblwiIFtpdGVtc109XCJyb3dNZW51c1tyb3dJbmRleCAtIHRhYmxlLmZpcnN0XVwiPjwvcnctbWVudS1idXR0b24+XG4gICAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8cC1jb250ZXh0TWVudSAjY29udGV4dE1lbnUgYXBwZW5kVG89XCJib2R5XCIgW21vZGVsXT1cImNvbnRleHRNZW51SXRlbXNcIj48L3AtY29udGV4dE1lbnU+XG48L3AtdGFibGU+XG4iXX0=
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXN0d29ybGQtdGFibGUvcmVzdHdvcmxkLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvY29tcG9uZW50cy9yZXN0d29ybGQtdGFibGUvcmVzdHdvcmxkLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBWSxZQUFZLEVBQVksTUFBTSx5QkFBeUIsQ0FBQztBQUkzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7O0FBRzdELElBQUssZ0JBS0o7QUFMRCxXQUFLLGdCQUFnQjtJQUNuQixpQ0FBYSxDQUFBO0lBQ2IsdUNBQW1CLENBQUE7SUFDbkIsdUNBQW1CLENBQUE7SUFDbkIsaUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFMSSxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBS3BCO0FBT0QsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQXFCVSxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBWXhCLHVCQUFrQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUdsQyxlQUFVLEdBQWUsRUFBRSxDQUFDO1FBRzVCLFlBQU8sR0FBK0QsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTlFLGNBQVMsR0FBaUIsRUFBRSxDQUFDO1FBVTlCLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUczQiw0QkFBdUIs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U0FBUztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvcGVydHksIFByb3BlcnR5VHlwZSwgVGVtcGxhdGUgfSBmcm9tICdAd2VydHp1aS9uZ3gtaGFsLWNsaWVudCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50LCBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IE9EYXRhUGFyYW1ldGVycyB9IGZyb20gJy4uLy4uL21vZGVscy9vLWRhdGEnO1xuaW1wb3J0IHsgT0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvby1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dE1lbnUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcblxuZW51bSBDb2x1bW5GaWx0ZXJUeXBlIHtcbiAgdGV4dCA9ICd0ZXh0JyxcbiAgbnVtZXJpYyA9ICdudW1lcmljJyxcbiAgYm9vbGVhbiA9ICdib29sZWFuJyxcbiAgZGF0ZSA9ICdkYXRlJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdydy10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtdGFibGUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlc3RXb3JsZFRhYmxlQ29tcG9uZW50PFRMaXN0RHRvPiB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcGk/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfdGVtcGxhdGU/OiBUZW1wbGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0ZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGUgfCB1bmRlZmluZWQpe1xuICAgIHRoaXMuX3RlbXBsYXRlID0gdmFsdWU7XG4gICAgdGhpcy5fY29sdW1ucyA9IHZhbHVlPy5wcm9wZXJ0aWVzLmZpbHRlcihwID0+IHAudHlwZSAhPT0gUHJvcGVydHlUeXBlLkhpZGRlbikgPz8gW107XG4gICAgdGhpcy5zZXRTb3J0RmllbGRBbmRTb3J0T3JkZXIodmFsdWUpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlbXBsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jvd3M6IFRMaXN0RHRvW10gPSBbXTtcbiAgcHVibGljIGdldCByb3dzKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcm93cyh2YWx1ZTogVExpc3REdG9bXSkge1xuICAgIHRoaXMuX3Jvd3MgPSB2YWx1ZTtcbiAgICBpZih0aGlzLnNob3dSb3dNZW51QXNDb2x1bW4pXG4gICAgICB0aGlzLl9yb3dNZW51cyA9IHZhbHVlLm1hcChyID0+IHRoaXMucm93TWVudShyLCBmYWxzZSkpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvd3NQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjUsIDUwXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyTWVudTogTWVudUl0ZW1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dNZW51OiAocm93OiBUTGlzdER0bywgb3BlbmVkQnlSaWdodENsaWNrOiBib29sZWFuKSA9PiBNZW51SXRlbVtdID0gKCkgPT4gW107XG5cbiAgcHJpdmF0ZSBfcm93TWVudXM6IE1lbnVJdGVtW11bXSA9IFtdO1xuICBwdWJsaWMgZ2V0IHJvd01lbnVzKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dNZW51cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hvd01lbnVDb2x1bW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyTWVudS5sZW5ndGggPiAwIHx8IHRoaXMuc2hvd1Jvd01lbnVBc0NvbHVtbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93Um93TWVudUFzQ29sdW1uID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1Jvd01lbnVPblJpZ2h0Q2xpY2sgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b3RhbFJlY29yZHMgPSAwO1xuXG4gIHByaXZhdGUgc2V0U29ydEZpZWxkQW5kU29ydE9yZGVyKHRlbXBsYXRlOiBUZW1wbGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG9yZGVyQnkgPSB0ZW1wbGF0ZT8ucHJvcGVydGllcz8uZmluZChwID0+IHA/Lm5hbWUgPT09IFwiJG9yZGVyYnlcIik/LnZhbHVlO1xuXG4gICAgaWYob3JkZXJCeSA9PT0gbnVsbCB8fCBvcmRlckJ5ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIG9yZGVyQnkgIT09ICdzdHJpbmcnKVxuICAgIHJldHVybjtcblxuICAgIGNvbnN0IFtmaWVsZCwgb3JkZXJdID0gb3JkZXJCeS5zcGxpdChcIiBcIik7XG4gICAgY29uc3Qgb3JkZXJBc051bWJlciA9IG9yZGVyPy50b0xvd2VyQ2FzZSgpID09PSBcImRlc2NcIiA/IC0xIDogMTtcblxuICAgIGlmICh0aGlzLnNvcnRGaWVsZCAhPT0gZmllbGQpXG4gICAgICB0aGlzLnNvcnRGaWVsZCA9IGZpZWxkO1xuICAgIGlmICh0aGlzLnNvcnRPcmRlciAhPT0gb3JkZXJBc051bWJlcilcbiAgICAgIHRoaXMuc29ydE9yZGVyID0gb3JkZXJBc051bWJlcjtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0RmllbGQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBzb3J0T3JkZXI/OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0eWxlQ2xhc3M6IHN0cmluZyA9IFwiXCI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRhYmxlU3R5bGU/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNjcm9sbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzY3JvbGxIZWlnaHQ6IHN0cmluZyA9IFwiZmxleFwiO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25GaWx0ZXJPclNvcnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxPRGF0YVBhcmFtZXRlcnM+KCk7XG5cbiAgQFZpZXdDaGlsZChcImNvbnRleHRNZW51XCIpXG4gIGNvbnRleHRNZW51PzogQ29udGV4dE1lbnU7XG5cbiAgcHJpdmF0ZSBfY29udGV4dE1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICBwdWJsaWMgZ2V0IGNvbnRleHRNZW51SXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRleHRNZW51SXRlbXM7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfY29sdW1uczogUHJvcGVydHlbXSA9IFtdO1xuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKTogUHJvcGVydHlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGF0ZUZvcm1hdCA9IG5ldyBEYXRlKDMzMzMsIDEwLCAyMikgLy8gbW9udGhzIHN0YXJ0IGF0IDAgaW4gSlNcbiAgICAudG9Mb2NhbGVEYXRlU3RyaW5nKClcbiAgICAucmVwbGFjZShcIjIyXCIsIFwiZGRcIilcbiAgICAucmVwbGFjZShcIjExXCIsIFwiTU1cIilcbiAgICAucmVwbGFjZShcIjMzMzNcIiwgXCJ5eVwiKVxuICAgIC5yZXBsYWNlKFwiMzNcIiwgXCJ5XCIpO1xuXG4gIHB1YmxpYyBnZXQgZGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBSZXN0V29ybGRUYWJsZUNvbXBvbmVudC5fZGF0ZUZvcm1hdDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90aW1lRm9ybWF0ID0gbmV3IERhdGUoMSwgMSwgMSwgMjIsIDMzLCA0NClcbiAgICAudG9Mb2NhbGVUaW1lU3RyaW5nKClcbiAgICAucmVwbGFjZShcIjIyXCIsIFwiaGhcIilcbiAgICAucmVwbGFjZShcIjMzXCIsIFwibW1cIilcbiAgICAucmVwbGFjZShcIjQ0XCIsIFwic3NcIik7XG5cbiAgcHVibGljIGdldCB0aW1lRm9ybWF0KCkge1xuICAgIHJldHVybiBSZXN0V29ybGRUYWJsZUNvbXBvbmVudC5fdGltZUZvcm1hdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUHJvcGVydHlUeXBlKCk6IHR5cGVvZiBQcm9wZXJ0eVR5cGUge1xuICAgIHJldHVybiBQcm9wZXJ0eVR5cGU7XG4gIH1cblxuICBwdWJsaWMgbG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgIHRoaXMuc29ydEZpZWxkID0gZXZlbnQuc29ydEZpZWxkO1xuICAgIHRoaXMuc29ydE9yZGVyID0gZXZlbnQuc29ydE9yZGVyO1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBPRGF0YVNlcnZpY2UuY3JlYXRlUGFyYW1ldGVyc0Zyb21UYWJsZUxvYWRFdmVudChldmVudCwgdGhpcy50ZW1wbGF0ZSk7XG4gICAgdGhpcy5vbkZpbHRlck9yU29ydENoYW5nZWQuZW1pdChwYXJhbWV0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIHJvdzogVExpc3REdG8pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd1Jvd01lbnVPblJpZ2h0Q2xpY2sgfHwgdGhpcy5jb250ZXh0TWVudSA9PT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuO1xuXG4gICAgdGhpcy5fY29udGV4dE1lbnVJdGVtcyA9IHRoaXMucm93TWVudShyb3csIHRydWUpO1xuICAgIHRoaXMuY29udGV4dE1lbnUuc2hvdyhldmVudCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgdG9Db2x1bW5GaWx0ZXJUeXBlKHByb3BlcnR5VHlwZTogUHJvcGVydHlUeXBlKSA6IENvbHVtbkZpbHRlclR5cGV7XG4gICAgc3dpdGNoKHByb3BlcnR5VHlwZSkge1xuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuTnVtYmVyOlxuICAgICAgICByZXR1cm4gQ29sdW1uRmlsdGVyVHlwZS5udW1lcmljO1xuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuQm9vbDpcbiAgICAgICAgcmV0dXJuIENvbHVtbkZpbHRlclR5cGUuYm9vbGVhbjtcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkRhdGU6XG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5EYXRldGltZUxvY2FsOlxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuRGF0ZXRpbWVPZmZzZXQ6XG4gICAgICAgIHJldHVybiBDb2x1bW5GaWx0ZXJUeXBlLmRhdGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gQ29sdW1uRmlsdGVyVHlwZS50ZXh0O1xuICAgIH1cbiAgfVxufVxuIiwiPHAtdGFibGVcbiAgI3RhYmxlXG4gIFt2YWx1ZV09XCJyb3dzXCJcbiAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gIFtsYXp5XT1cInRydWVcIlxuICBbbGF6eUxvYWRPbkluaXRdPVwiZmFsc2VcIlxuICAob25MYXp5TG9hZCk9XCJsb2FkKCRldmVudClcIlxuICByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcbiAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcbiAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnNcIlxuICBbcm93c109XCJyb3dzLmxlbmd0aFwiXG4gIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcbiAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgW3NvcnRGaWVsZF09XCJzb3J0RmllbGQhXCJcbiAgW3NvcnRPcmRlcl09XCJzb3J0T3JkZXIhXCJcbiAgW3N0eWxlQ2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gIFt0YWJsZVN0eWxlXT1cInRhYmxlU3R5bGVcIlxuICBbc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlXCJcbiAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIj5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XG4gICAgPHRyPlxuICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgW3BTb3J0YWJsZUNvbHVtbl09XCJjb2wubmFtZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZC1mbGV4IHAtamMtYmV0d2VlbiBwLWFpLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIHt7Y29sLnByb21wdH19XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wucmVhZE9ubHlcIj5cbiAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2wubmFtZVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICAgICAgICAgIDxwLWNvbHVtbkZpbHRlciBbdHlwZV09XCJ0b0NvbHVtbkZpbHRlclR5cGUoY29sLnR5cGUpXCIgW2ZpZWxkXT1cImNvbC5uYW1lXCIgZGlzcGxheT1cIm1lbnVcIj48L3AtY29sdW1uRmlsdGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCAqbmdJZj1cInNob3dNZW51Q29sdW1uXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICA8cnctbWVudS1idXR0b24gW2l0ZW1zXT1cImhlYWRlck1lbnVcIj48L3J3LW1lbnUtYnV0dG9uPlxuICAgICAgICA8L3RoPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtZW50aXR5IGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgPHRyIChjb250ZXh0bWVudSk9XCJvcGVuQ29udGV4dE1lbnUoJGV2ZW50LCBlbnRpdHkpXCI+XG4gICAgICAgIDx0ZCBbbmdTd2l0Y2hdPVwiY29sLnR5cGVcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5UZXh0XCI+XG4gICAgICAgICAgICAgICAgPHJ3LWF2YXRhciAqbmdJZj1cImNvbC5uYW1lID09PSAnY3JlYXRlZEJ5JyB8fCBjb2wubmFtZSA9PT0gJ2xhc3RDaGFuZ2VkQnknXCIgW3VzZXJdPVwiZW50aXR5W2NvbC5uYW1lXVwiPjwvcnctYXZhdGFyPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29sLm5hbWUgIT09ICdjcmVhdGVkQnknICYmIGNvbC5uYW1lICE9PSAnbGFzdENoYW5nZWRCeSdcIj57e2VudGl0eVtjb2wubmFtZV19fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5OdW1iZXJcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPnt7ZW50aXR5W2NvbC5uYW1lXX19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5Cb29sXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj48cC10cmlTdGF0ZUNoZWNrYm94IFsobmdNb2RlbCldPVwiZW50aXR5W2NvbC5uYW1lXVwiIFtyZWFkb25seV09XCJ0cnVlXCI+PC9wLXRyaVN0YXRlQ2hlY2tib3g+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5EYXRlXCIgW3BUb29sdGlwXT1cImVudGl0eVtjb2wubmFtZV1cIj57e2VudGl0eVtjb2wubmFtZV0gfCBkYXRlOmRhdGVGb3JtYXR9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuVGltZVwiIFtwVG9vbHRpcF09XCJlbnRpdHlbY29sLm5hbWVdXCI+e3tlbnRpdHlbY29sLm5hbWVdIHwgZGF0ZTp0aW1lRm9ybWF0fX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkR1cmF0aW9uXCIgW3BUb29sdGlwXT1cImVudGl0eVtjb2wubmFtZV1cIj57e2VudGl0eVtjb2wubmFtZV0gfCBkYXRlOnRpbWVGb3JtYXR9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuRGF0ZXRpbWVMb2NhbFwiIFtwVG9vbHRpcF09XCJlbnRpdHlbY29sLm5hbWVdXCI+e3tlbnRpdHlbY29sLm5hbWVdIHwgZGF0ZTpkYXRlRm9ybWF0fX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiUHJvcGVydHlUeXBlLkRhdGV0aW1lT2Zmc2V0XCIgW3BUb29sdGlwXT1cImVudGl0eVtjb2wubmFtZV1cIj57e2VudGl0eVtjb2wubmFtZV0gfCBkYXRlOmRhdGVGb3JtYXR9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJQcm9wZXJ0eVR5cGUuQ29sbGVjdGlvblwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+PHAgKm5nRm9yPVwibGV0IGFycmF5RWxlbWVudCBvZiBlbnRpdHlbY29sLm5hbWVdXCI+e3thcnJheUVsZW1lbnQgfCBqc29ufX08L3A+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIlByb3BlcnR5VHlwZS5PYmplY3RcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPnt7ZW50aXR5W2NvbC5uYW1lXSB8IGpzb259fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQgW3BUb29sdGlwXT1cImVudGl0eVtjb2wubmFtZV1cIj57e2VudGl0eVtjb2wubmFtZV19fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkICpuZ0lmPVwic2hvd01lbnVDb2x1bW5cIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgIDxydy1tZW51LWJ1dHRvbiAqbmdJZj1cInNob3dSb3dNZW51QXNDb2x1bW5cIiBbaXRlbXNdPVwicm93TWVudXNbcm93SW5kZXggLSB0YWJsZS5maXJzdF1cIj48L3J3LW1lbnUtYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPHAtY29udGV4dE1lbnUgI2NvbnRleHRNZW51IGFwcGVuZFRvPVwiYm9keVwiIFttb2RlbF09XCJjb250ZXh0TWVudUl0ZW1zXCI+PC9wLWNvbnRleHRNZW51PlxuPC9wLXRhYmxlPlxuIl19
|
|
@@ -3,4 +3,4 @@ export class PropertyWithImage extends Property {
|
|
|
3
3
|
}
|
|
4
4
|
export class PropertyWithOptions extends Property {
|
|
5
5
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lhbC1wcm9wZXJ0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9tb2RlbHMvc3BlY2lhbC1wcm9wZXJ0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQVcsTUFBTSx5QkFBeUIsQ0FBQTtBQUczRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsUUFBUTtDQUU5QztBQUVELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxRQUFRO0NBRWhEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHksIE9wdGlvbnMgfSBmcm9tICdAd2VydHp1aS9uZ3gtaGFsLWNsaWVudCdcclxuaW1wb3J0IHsgUmVzdFdvcmxkSW1hZ2UgfSBmcm9tICcuL3Jlc3R3b3JsZC1pbWFnZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlXaXRoSW1hZ2UgZXh0ZW5kcyBQcm9wZXJ0eSB7XHJcbiAgcmVzdFdvcmxkSW1hZ2UhOiBSZXN0V29ybGRJbWFnZTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFByb3BlcnR5V2l0aE9wdGlvbnMgZXh0ZW5kcyBQcm9wZXJ0eSB7XHJcbiAgZGVjbGFyZSBvcHRpb25zOiBPcHRpb25zO1xyXG59XHJcbiJdfQ==
|