barsa-sap-ui 1.0.438 → 1.0.439

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.
@@ -1,4 +1,5 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { BarsaApi } from 'barsa-novin-ray-core';
2
3
  import { map } from 'rxjs/operators';
3
4
  import { SapUiReportBaseComponent } from '../sap-ui-report-base.component';
4
5
  import * as i0 from "@angular/core";
@@ -24,6 +25,10 @@ export class UiCalendarComponent extends SapUiReportBaseComponent {
24
25
  });
25
26
  }
26
27
  onDaySelect(date) {
28
+ const access = BarsaApi.Common.Util.TryGetValue(this.context, 'Setting.Extra.DefaultCommandsAccess', null);
29
+ if (access && !access.Add) {
30
+ return;
31
+ }
27
32
  this.context.fireEvent('DaySelect', { date });
28
33
  }
29
34
  onLoadData(t) {
@@ -38,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
38
43
  type: Component,
39
44
  args: [{ selector: 'bsu-ui-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--render container-->\n<ng-container\n *ngTemplateOutlet=\"\n renderCalendar;\n context: {\n $implicit: gridDataSource.data$ | async,\n allChecked: allChecked$ | async,\n groupby: groupby$ | async,\n isCheckList: context.Setting.View?.IsCheckList,\n columns: columns$ | async,\n columnsCount: columnsCount$ | async,\n allowInlineEdit: allowInlineEdit$ | async,\n inlineEditMode: inlineEditMode$ | async,\n onlyInlineEdit: onlyInlineEdit$ | async,\n secondaryColumns: secondaryColumns$ | async,\n toolbarButtons: (toolbarButtons$ | async)!! | seperatorFix,\n popin: (mobileOrTablet$ | async) || (secondaryColumnsCount$ | async) ? true : false,\n contextMenuItems: menuItems$ | async | contextMenu: context.Setting.View?.IsCheckList,\n conditionalFormats: conditionalFormats$ | async,\n deviceName: deviceName$ | async,\n deviceSize: deviceSize$ | async,\n mobileOrTablet: mobileOrTablet$ | async,\n access: context.Setting.Extra?.DefaultCommandsAccess,\n title: title$ | async,\n rtl: rtl$ | async,\n hideToolbar: hideToolbar$ | async,\n allColumns: allColumns,\n gridSetting: gridSetting$ | async,\n contentDensity: contentDensity$ | async,\n formLayout: layout$ | async,\n contextSetting: context.Setting,\n hasSelected: hasSelected$ | async,\n navigationArrow: navigationArrow$ | async,\n inDialog: inDialog$ | async,\n isMultiSelect: isMultiSelect$ | async,\n viewSetting: context.ViewSetting,\n selectedMo: selectedMo$ | async\n }\n \"\n></ng-container>\n\n<ng-template\n #renderCalendar\n let-moDataList\n let-allChecked=\"allChecked\"\n let-isCheckList=\"isCheckList\"\n let-columns=\"columns\"\n let-columnsCount=\"columnsCount\"\n let-groupby=\"groupby\"\n let-secondaryColumns=\"secondaryColumns\"\n let-contextMenuItems=\"contextMenuItems\"\n let-conditionalFormats=\"conditionalFormats\"\n let-deviceName=\"deviceName\"\n let-deviceSize=\"deviceSize\"\n let-access=\"access\"\n let-toolbarButtons=\"toolbarButtons\"\n let-popin=\"popin\"\n let-mobileOrTablet=\"mobileOrTablet\"\n let-title=\"title\"\n let-inlineEditMode=\"inlineEditMode\"\n let-allowInlineEdit=\"allowInlineEdit\"\n let-hideToolbar=\"hideToolbar\"\n let-gridSetting=\"gridSetting\"\n let-contentDensity=\"contentDensity\"\n let-formLayout=\"formLayout\"\n let-rtl=\"rtl\"\n let-hasSelected=\"hasSelected\"\n let-navigationArrow=\"navigationArrow\"\n let-inDialog=\"inDialog\"\n let-selectedMo=\"selectedMo\"\n let-contextSetting=\"contextSetting\"\n let-viewSetting=\"viewSetting\"\n>\n <bsu-ulv-toolbar\n [hideToolbar]=\"hideToolbar\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [toolbarButtons]=\"toolbarButtons\"\n [gridSetting]=\"gridSetting\"\n [title]=\"title\"\n [context]=\"context\"\n [access]=\"access\"\n [hasSelected]=\"hasSelected\"\n [contentDensity]=\"contentDensity\"\n [inlineEditMode]=\"inlineEditMode\"\n [allowInlineEdit]=\"allowInlineEdit\"\n [moDataListCount]=\"moDataList.length\"\n (sortClick)=\"onSortSettings(deviceName)\"\n (groupbyClick)=\"onGroupbySettings(deviceName)\"\n (columnClick)=\"onColumnSettings(deviceName)\"\n (editModeClick)=\"onEditMode()\"\n ></bsu-ulv-toolbar>\n <bc-calendar-container\n [inDialog]=\"inDialog\"\n [contextSetting]=\"contextSetting\"\n [viewSetting]=\"viewSetting\"\n [isCheckList]=\"isCheckList\"\n [selectedMo]=\"selectedMo\"\n [allChecked]=\"allChecked\"\n [moDataList]=\"moDataList\"\n [access]=\"access\"\n [parentHeight]=\"parentHeight\"\n [groupby]=\"groupby\"\n [conditionalFormats]=\"conditionalFormats\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [navigationArrow]=\"navigationArrow\"\n [title]=\"title\"\n [mobileOrTablet]=\"mobileOrTablet\"\n [rtl]=\"rtl\"\n [popin]=\"popin\"\n [secondaryColumns]=\"secondaryColumns\"\n [contextMenuItems]=\"contextMenuItems\"\n [inlineEditMode]=\"inlineEditMode\"\n [allowInlineEdit]=\"allowInlineEdit\"\n [columns]=\"columns\"\n [columnsCount]=\"columnsCount\"\n [rowHoverable]=\"rowHoverable\"\n [rowActivable]=\"rowActivable\"\n [formLayout]=\"formLayout\"\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (sortAscending)=\"onSortAscending($event)\"\n (sortDescending)=\"onSortDescending($event)\"\n (filter)=\"onFilter($event)\"\n (rowCheck)=\"onRowCheck($event)\"\n (rowClick)=\"onRowClick($event)\"\n (allCheckbox)=\"onAllCheckbox($event)\"\n (expandClick)=\"(onExpandClick)\"\n (deleteTask)=\"onDeleteTask($event)\"\n (editTask)=\"onEditTask($event)\"\n (daySelect)=\"onDaySelect($event)\"\n (loadData)=\"onLoadData($event)\"\n >\n </bc-calendar-container>\n</ng-template>\n", styles: [":host{display:block;height:94%}\n"] }]
40
45
  }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2FsZW5kYXIvdWktY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2FsZW5kYXIvdWktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUczRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQU8zRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsd0JBQWlEO0lBQ3RGLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQ2pFLENBQUM7SUFDTixDQUFDO0lBQ0QsWUFBWSxDQUFDLEVBQXVCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUNsQyxNQUFNLEVBQUUsUUFBUTtZQUNoQixLQUFLLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxVQUFVLENBQUMsRUFBdUI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQVU7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsVUFBVSxDQUFDLENBQTZCO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxDQUFDOztnSEExQlEsbUJBQW1CO29HQUFuQixtQkFBbUIsOEVDWmhDLGkxS0F3SUE7MkZENUhhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDSSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZywgTWV0YW9iamVjdERhdGFNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2FwLXVpLXJlcG9ydC1iYXNlLmNvbXBvbmVudCc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1jYWxlbmRhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91aS1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVpQ2FsZW5kYXJDb21wb25lbnQgZXh0ZW5kcyBTYXBVaVJlcG9ydEJhc2VDb21wb25lbnQ8VWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyQgPSB0aGlzLnRvb2xiYXJCdXR0b25zJC5waXBlKFxuICAgICAgICAgICAgbWFwKChidXR0b25zKSA9PiBidXR0b25zLmZpbHRlcigoYykgPT4gYy5pdGVtSWQgIT09ICdEZWxldGUnKSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgb25EZWxldGVUYXNrKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ0V2ZW50QWN0aW9uJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgICAgICAgIGV2ZW50OiBtb1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25FZGl0VGFzayhtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdFdmVudEFjdGlvbicsIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ2VkaXQnLFxuICAgICAgICAgICAgZXZlbnQ6IG1vXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbkRheVNlbGVjdChkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ0RheVNlbGVjdCcsIHsgZGF0ZSB9KTtcbiAgICB9XG4gICAgb25Mb2FkRGF0YSh0OiB7IHN0YXJ0OiBEYXRlOyBlbmQ6IERhdGUgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQuc3RhcnQgPSB0LnN0YXJ0O1xuICAgICAgICB0aGlzLmNvbnRleHQuZW5kID0gdC5lbmQ7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2RhdGVjaGFuZ2UnKTtcbiAgICB9XG59XG4iLCI8IS0tcmVuZGVyIGNvbnRhaW5lci0tPlxuPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIHJlbmRlckNhbGVuZGFyO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IGdyaWREYXRhU291cmNlLmRhdGEkIHwgYXN5bmMsXG4gICAgICAgICAgICBhbGxDaGVja2VkOiBhbGxDaGVja2VkJCB8IGFzeW5jLFxuICAgICAgICAgICAgZ3JvdXBieTogZ3JvdXBieSQgfCBhc3luYyxcbiAgICAgICAgICAgIGlzQ2hlY2tMaXN0OiBjb250ZXh0LlNldHRpbmcuVmlldz8uSXNDaGVja0xpc3QsXG4gICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zJCB8IGFzeW5jLFxuICAgICAgICAgICAgY29sdW1uc0NvdW50OiBjb2x1bW5zQ291bnQkIHwgYXN5bmMsXG4gICAgICAgICAgICBhbGxvd0lubGluZUVkaXQ6IGFsbG93SW5saW5lRWRpdCQgfCBhc3luYyxcbiAgICAgICAgICAgIGlubGluZUVkaXRNb2RlOiBpbmxpbmVFZGl0TW9kZSQgfCBhc3luYyxcbiAgICAgICAgICAgIG9ubHlJbmxpbmVFZGl0OiBvbmx5SW5saW5lRWRpdCQgfCBhc3luYyxcbiAgICAgICAgICAgIHNlY29uZGFyeUNvbHVtbnM6IHNlY29uZGFyeUNvbHVtbnMkIHwgYXN5bmMsXG4gICAgICAgICAgICB0b29sYmFyQnV0dG9uczogKHRvb2xiYXJCdXR0b25zJCB8IGFzeW5jKSEhIHwgc2VwZXJhdG9yRml4LFxuICAgICAgICAgICAgcG9waW46IChtb2JpbGVPclRhYmxldCQgfCBhc3luYykgfHwgKHNlY29uZGFyeUNvbHVtbnNDb3VudCQgfCBhc3luYykgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1zOiBtZW51SXRlbXMkIHwgYXN5bmMgfCBjb250ZXh0TWVudTogY29udGV4dC5TZXR0aW5nLlZpZXc/LklzQ2hlY2tMaXN0LFxuICAgICAgICAgICAgY29uZGl0aW9uYWxGb3JtYXRzOiBjb25kaXRpb25hbEZvcm1hdHMkIHwgYXN5bmMsXG4gICAgICAgICAgICBkZXZpY2VOYW1lOiBkZXZpY2VOYW1lJCB8IGFzeW5jLFxuICAgICAgICAgICAgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSQgfCBhc3luYyxcbiAgICAgICAgICAgIG1vYmlsZU9yVGFibGV0OiBtb2JpbGVPclRhYmxldCQgfCBhc3luYyxcbiAgICAgICAgICAgIGFjY2VzczogY29udGV4dC5TZXR0aW5nLkV4dHJhPy5EZWZhdWx0Q29tbWFuZHNBY2Nlc3MsXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUkIHwgYXN5bmMsXG4gICAgICAgICAgICBydGw6IHJ0bCQgfCBhc3luYyxcbiAgICAgICAgICAgIGhpZGVUb29sYmFyOiBoaWRlVG9vbGJhciQgfCBhc3luYyxcbiAgICAgICAgICAgIGFsbENvbHVtbnM6IGFsbENvbHVtbnMsXG4gICAgICAgICAgICBncmlkU2V0dGluZzogZ3JpZFNldHRpbmckIHwgYXN5bmMsXG4gICAgICAgICAgICBjb250ZW50RGVuc2l0eTogY29udGVudERlbnNpdHkkIHwgYXN5bmMsXG4gICAgICAgICAgICBmb3JtTGF5b3V0OiBsYXlvdXQkIHwgYXN5bmMsXG4gICAgICAgICAgICBjb250ZXh0U2V0dGluZzogY29udGV4dC5TZXR0aW5nLFxuICAgICAgICAgICAgaGFzU2VsZWN0ZWQ6IGhhc1NlbGVjdGVkJCB8IGFzeW5jLFxuICAgICAgICAgICAgbmF2aWdhdGlvbkFycm93OiBuYXZpZ2F0aW9uQXJyb3ckIHwgYXN5bmMsXG4gICAgICAgICAgICBpbkRpYWxvZzogaW5EaWFsb2ckIHwgYXN5bmMsXG4gICAgICAgICAgICBpc011bHRpU2VsZWN0OiBpc011bHRpU2VsZWN0JCB8IGFzeW5jLFxuICAgICAgICAgICAgdmlld1NldHRpbmc6IGNvbnRleHQuVmlld1NldHRpbmcsXG4gICAgICAgICAgICBzZWxlY3RlZE1vOiBzZWxlY3RlZE1vJCB8IGFzeW5jXG4gICAgICAgIH1cbiAgICBcIlxuPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGVcbiAgICAjcmVuZGVyQ2FsZW5kYXJcbiAgICBsZXQtbW9EYXRhTGlzdFxuICAgIGxldC1hbGxDaGVja2VkPVwiYWxsQ2hlY2tlZFwiXG4gICAgbGV0LWlzQ2hlY2tMaXN0PVwiaXNDaGVja0xpc3RcIlxuICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgbGV0LWNvbHVtbnNDb3VudD1cImNvbHVtbnNDb3VudFwiXG4gICAgbGV0LWdyb3VwYnk9XCJncm91cGJ5XCJcbiAgICBsZXQtc2Vjb25kYXJ5Q29sdW1ucz1cInNlY29uZGFyeUNvbHVtbnNcIlxuICAgIGxldC1jb250ZXh0TWVudUl0ZW1zPVwiY29udGV4dE1lbnVJdGVtc1wiXG4gICAgbGV0LWNvbmRpdGlvbmFsRm9ybWF0cz1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgbGV0LWRldmljZU5hbWU9XCJkZXZpY2VOYW1lXCJcbiAgICBsZXQtZGV2aWNlU2l6ZT1cImRldmljZVNpemVcIlxuICAgIGxldC1hY2Nlc3M9XCJhY2Nlc3NcIlxuICAgIGxldC10b29sYmFyQnV0dG9ucz1cInRvb2xiYXJCdXR0b25zXCJcbiAgICBsZXQtcG9waW49XCJwb3BpblwiXG4gICAgbGV0LW1vYmlsZU9yVGFibGV0PVwibW9iaWxlT3JUYWJsZXRcIlxuICAgIGxldC10aXRsZT1cInRpdGxlXCJcbiAgICBsZXQtaW5saW5lRWRpdE1vZGU9XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgbGV0LWFsbG93SW5saW5lRWRpdD1cImFsbG93SW5saW5lRWRpdFwiXG4gICAgbGV0LWhpZGVUb29sYmFyPVwiaGlkZVRvb2xiYXJcIlxuICAgIGxldC1ncmlkU2V0dGluZz1cImdyaWRTZXR0aW5nXCJcbiAgICBsZXQtY29udGVudERlbnNpdHk9XCJjb250ZW50RGVuc2l0eVwiXG4gICAgbGV0LWZvcm1MYXlvdXQ9XCJmb3JtTGF5b3V0XCJcbiAgICBsZXQtcnRsPVwicnRsXCJcbiAgICBsZXQtaGFzU2VsZWN0ZWQ9XCJoYXNTZWxlY3RlZFwiXG4gICAgbGV0LW5hdmlnYXRpb25BcnJvdz1cIm5hdmlnYXRpb25BcnJvd1wiXG4gICAgbGV0LWluRGlhbG9nPVwiaW5EaWFsb2dcIlxuICAgIGxldC1zZWxlY3RlZE1vPVwic2VsZWN0ZWRNb1wiXG4gICAgbGV0LWNvbnRleHRTZXR0aW5nPVwiY29udGV4dFNldHRpbmdcIlxuICAgIGxldC12aWV3U2V0dGluZz1cInZpZXdTZXR0aW5nXCJcbj5cbiAgICA8YnN1LXVsdi10b29sYmFyXG4gICAgICAgIFtoaWRlVG9vbGJhcl09XCJoaWRlVG9vbGJhclwiXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgW3Rvb2xiYXJCdXR0b25zXT1cInRvb2xiYXJCdXR0b25zXCJcbiAgICAgICAgW2dyaWRTZXR0aW5nXT1cImdyaWRTZXR0aW5nXCJcbiAgICAgICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgICAgIFthY2Nlc3NdPVwiYWNjZXNzXCJcbiAgICAgICAgW2hhc1NlbGVjdGVkXT1cImhhc1NlbGVjdGVkXCJcbiAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgW2FsbG93SW5saW5lRWRpdF09XCJhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbbW9EYXRhTGlzdENvdW50XT1cIm1vRGF0YUxpc3QubGVuZ3RoXCJcbiAgICAgICAgKHNvcnRDbGljayk9XCJvblNvcnRTZXR0aW5ncyhkZXZpY2VOYW1lKVwiXG4gICAgICAgIChncm91cGJ5Q2xpY2spPVwib25Hcm91cGJ5U2V0dGluZ3MoZGV2aWNlTmFtZSlcIlxuICAgICAgICAoY29sdW1uQ2xpY2spPVwib25Db2x1bW5TZXR0aW5ncyhkZXZpY2VOYW1lKVwiXG4gICAgICAgIChlZGl0TW9kZUNsaWNrKT1cIm9uRWRpdE1vZGUoKVwiXG4gICAgPjwvYnN1LXVsdi10b29sYmFyPlxuICAgIDxiYy1jYWxlbmRhci1jb250YWluZXJcbiAgICAgICAgW2luRGlhbG9nXT1cImluRGlhbG9nXCJcbiAgICAgICAgW2NvbnRleHRTZXR0aW5nXT1cImNvbnRleHRTZXR0aW5nXCJcbiAgICAgICAgW3ZpZXdTZXR0aW5nXT1cInZpZXdTZXR0aW5nXCJcbiAgICAgICAgW2lzQ2hlY2tMaXN0XT1cImlzQ2hlY2tMaXN0XCJcbiAgICAgICAgW3NlbGVjdGVkTW9dPVwic2VsZWN0ZWRNb1wiXG4gICAgICAgIFthbGxDaGVja2VkXT1cImFsbENoZWNrZWRcIlxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcbiAgICAgICAgW2FjY2Vzc109XCJhY2Nlc3NcIlxuICAgICAgICBbcGFyZW50SGVpZ2h0XT1cInBhcmVudEhlaWdodFwiXG4gICAgICAgIFtncm91cGJ5XT1cImdyb3VwYnlcIlxuICAgICAgICBbY29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgW25hdmlnYXRpb25BcnJvd109XCJuYXZpZ2F0aW9uQXJyb3dcIlxuICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgICBbbW9iaWxlT3JUYWJsZXRdPVwibW9iaWxlT3JUYWJsZXRcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtwb3Bpbl09XCJwb3BpblwiXG4gICAgICAgIFtzZWNvbmRhcnlDb2x1bW5zXT1cInNlY29uZGFyeUNvbHVtbnNcIlxuICAgICAgICBbY29udGV4dE1lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgW2FsbG93SW5saW5lRWRpdF09XCJhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgW2NvbHVtbnNDb3VudF09XCJjb2x1bW5zQ291bnRcIlxuICAgICAgICBbcm93SG92ZXJhYmxlXT1cInJvd0hvdmVyYWJsZVwiXG4gICAgICAgIFtyb3dBY3RpdmFibGVdPVwicm93QWN0aXZhYmxlXCJcbiAgICAgICAgW2Zvcm1MYXlvdXRdPVwiZm9ybUxheW91dFwiXG4gICAgICAgIChlZGl0Rm9ybVBhbmVsQ2FuY2VsKT1cIm9uRWRpdEZvcm1QYW5lbENhbmNlbCgkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxTYXZlKT1cIm9uRWRpdEZvcm1QYW5lbFNhdmUoJGV2ZW50KVwiXG4gICAgICAgIChzb3J0QXNjZW5kaW5nKT1cIm9uU29ydEFzY2VuZGluZygkZXZlbnQpXCJcbiAgICAgICAgKHNvcnREZXNjZW5kaW5nKT1cIm9uU29ydERlc2NlbmRpbmcoJGV2ZW50KVwiXG4gICAgICAgIChmaWx0ZXIpPVwib25GaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgIChyb3dDaGVjayk9XCJvblJvd0NoZWNrKCRldmVudClcIlxuICAgICAgICAocm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCJcbiAgICAgICAgKGFsbENoZWNrYm94KT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgICAgIChleHBhbmRDbGljayk9XCIob25FeHBhbmRDbGljaylcIlxuICAgICAgICAoZGVsZXRlVGFzayk9XCJvbkRlbGV0ZVRhc2soJGV2ZW50KVwiXG4gICAgICAgIChlZGl0VGFzayk9XCJvbkVkaXRUYXNrKCRldmVudClcIlxuICAgICAgICAoZGF5U2VsZWN0KT1cIm9uRGF5U2VsZWN0KCRldmVudClcIlxuICAgICAgICAobG9hZERhdGEpPVwib25Mb2FkRGF0YSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9iYy1jYWxlbmRhci1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2FsZW5kYXIvdWktY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2FsZW5kYXIvdWktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQWdELFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBTzNFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx3QkFBaUQ7SUFDdEYsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM1QyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FDakUsQ0FBQztJQUNOLENBQUM7SUFDRCxZQUFZLENBQUMsRUFBdUI7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEtBQUssRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELFVBQVUsQ0FBQyxFQUF1QjtRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUU7WUFDbEMsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxXQUFXLENBQUMsSUFBVTtRQUNsQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDdkIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsVUFBVSxDQUFDLENBQTZCO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxDQUFDOztnSEE5QlEsbUJBQW1CO29HQUFuQixtQkFBbUIsOEVDWmhDLGkxS0F3SUE7MkZENUhhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDSSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZywgTWV0YW9iamVjdERhdGFNb2RlbCwgQmFyc2FBcGkgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNhcFVpUmVwb3J0QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL3NhcC11aS1yZXBvcnQtYmFzZS5jb21wb25lbnQnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtdWktY2FsZW5kYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBVaUNhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMkID0gdGhpcy50b29sYmFyQnV0dG9ucyQucGlwZShcbiAgICAgICAgICAgIG1hcCgoYnV0dG9ucykgPT4gYnV0dG9ucy5maWx0ZXIoKGMpID0+IGMuaXRlbUlkICE9PSAnRGVsZXRlJykpXG4gICAgICAgICk7XG4gICAgfVxuICAgIG9uRGVsZXRlVGFzayhtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdFdmVudEFjdGlvbicsIHtcbiAgICAgICAgICAgIGFjdGlvbjogJ2RlbGV0ZScsXG4gICAgICAgICAgICBldmVudDogbW9cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uRWRpdFRhc2sobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnRXZlbnRBY3Rpb24nLCB7XG4gICAgICAgICAgICBhY3Rpb246ICdlZGl0JyxcbiAgICAgICAgICAgIGV2ZW50OiBtb1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25EYXlTZWxlY3QoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY2Nlc3MgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLmNvbnRleHQsICdTZXR0aW5nLkV4dHJhLkRlZmF1bHRDb21tYW5kc0FjY2VzcycsIG51bGwpO1xuICAgICAgICBpZiAoYWNjZXNzICYmICFhY2Nlc3MuQWRkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnRGF5U2VsZWN0JywgeyBkYXRlIH0pO1xuICAgIH1cbiAgICBvbkxvYWREYXRhKHQ6IHsgc3RhcnQ6IERhdGU7IGVuZDogRGF0ZSB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5zdGFydCA9IHQuc3RhcnQ7XG4gICAgICAgIHRoaXMuY29udGV4dC5lbmQgPSB0LmVuZDtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnZGF0ZWNoYW5nZScpO1xuICAgIH1cbn1cbiIsIjwhLS1yZW5kZXIgY29udGFpbmVyLS0+XG48bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgcmVuZGVyQ2FsZW5kYXI7XG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogZ3JpZERhdGFTb3VyY2UuZGF0YSQgfCBhc3luYyxcbiAgICAgICAgICAgIGFsbENoZWNrZWQ6IGFsbENoZWNrZWQkIHwgYXN5bmMsXG4gICAgICAgICAgICBncm91cGJ5OiBncm91cGJ5JCB8IGFzeW5jLFxuICAgICAgICAgICAgaXNDaGVja0xpc3Q6IGNvbnRleHQuU2V0dGluZy5WaWV3Py5Jc0NoZWNrTGlzdCxcbiAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMkIHwgYXN5bmMsXG4gICAgICAgICAgICBjb2x1bW5zQ291bnQ6IGNvbHVtbnNDb3VudCQgfCBhc3luYyxcbiAgICAgICAgICAgIGFsbG93SW5saW5lRWRpdDogYWxsb3dJbmxpbmVFZGl0JCB8IGFzeW5jLFxuICAgICAgICAgICAgaW5saW5lRWRpdE1vZGU6IGlubGluZUVkaXRNb2RlJCB8IGFzeW5jLFxuICAgICAgICAgICAgb25seUlubGluZUVkaXQ6IG9ubHlJbmxpbmVFZGl0JCB8IGFzeW5jLFxuICAgICAgICAgICAgc2Vjb25kYXJ5Q29sdW1uczogc2Vjb25kYXJ5Q29sdW1ucyQgfCBhc3luYyxcbiAgICAgICAgICAgIHRvb2xiYXJCdXR0b25zOiAodG9vbGJhckJ1dHRvbnMkIHwgYXN5bmMpISEgfCBzZXBlcmF0b3JGaXgsXG4gICAgICAgICAgICBwb3BpbjogKG1vYmlsZU9yVGFibGV0JCB8IGFzeW5jKSB8fCAoc2Vjb25kYXJ5Q29sdW1uc0NvdW50JCB8IGFzeW5jKSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRleHRNZW51SXRlbXM6IG1lbnVJdGVtcyQgfCBhc3luYyB8IGNvbnRleHRNZW51OiBjb250ZXh0LlNldHRpbmcuVmlldz8uSXNDaGVja0xpc3QsXG4gICAgICAgICAgICBjb25kaXRpb25hbEZvcm1hdHM6IGNvbmRpdGlvbmFsRm9ybWF0cyQgfCBhc3luYyxcbiAgICAgICAgICAgIGRldmljZU5hbWU6IGRldmljZU5hbWUkIHwgYXN5bmMsXG4gICAgICAgICAgICBkZXZpY2VTaXplOiBkZXZpY2VTaXplJCB8IGFzeW5jLFxuICAgICAgICAgICAgbW9iaWxlT3JUYWJsZXQ6IG1vYmlsZU9yVGFibGV0JCB8IGFzeW5jLFxuICAgICAgICAgICAgYWNjZXNzOiBjb250ZXh0LlNldHRpbmcuRXh0cmE/LkRlZmF1bHRDb21tYW5kc0FjY2VzcyxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSQgfCBhc3luYyxcbiAgICAgICAgICAgIHJ0bDogcnRsJCB8IGFzeW5jLFxuICAgICAgICAgICAgaGlkZVRvb2xiYXI6IGhpZGVUb29sYmFyJCB8IGFzeW5jLFxuICAgICAgICAgICAgYWxsQ29sdW1uczogYWxsQ29sdW1ucyxcbiAgICAgICAgICAgIGdyaWRTZXR0aW5nOiBncmlkU2V0dGluZyQgfCBhc3luYyxcbiAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5OiBjb250ZW50RGVuc2l0eSQgfCBhc3luYyxcbiAgICAgICAgICAgIGZvcm1MYXlvdXQ6IGxheW91dCQgfCBhc3luYyxcbiAgICAgICAgICAgIGNvbnRleHRTZXR0aW5nOiBjb250ZXh0LlNldHRpbmcsXG4gICAgICAgICAgICBoYXNTZWxlY3RlZDogaGFzU2VsZWN0ZWQkIHwgYXN5bmMsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uQXJyb3c6IG5hdmlnYXRpb25BcnJvdyQgfCBhc3luYyxcbiAgICAgICAgICAgIGluRGlhbG9nOiBpbkRpYWxvZyQgfCBhc3luYyxcbiAgICAgICAgICAgIGlzTXVsdGlTZWxlY3Q6IGlzTXVsdGlTZWxlY3QkIHwgYXN5bmMsXG4gICAgICAgICAgICB2aWV3U2V0dGluZzogY29udGV4dC5WaWV3U2V0dGluZyxcbiAgICAgICAgICAgIHNlbGVjdGVkTW86IHNlbGVjdGVkTW8kIHwgYXN5bmNcbiAgICAgICAgfVxuICAgIFwiXG4+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICNyZW5kZXJDYWxlbmRhclxuICAgIGxldC1tb0RhdGFMaXN0XG4gICAgbGV0LWFsbENoZWNrZWQ9XCJhbGxDaGVja2VkXCJcbiAgICBsZXQtaXNDaGVja0xpc3Q9XCJpc0NoZWNrTGlzdFwiXG4gICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcbiAgICBsZXQtY29sdW1uc0NvdW50PVwiY29sdW1uc0NvdW50XCJcbiAgICBsZXQtZ3JvdXBieT1cImdyb3VwYnlcIlxuICAgIGxldC1zZWNvbmRhcnlDb2x1bW5zPVwic2Vjb25kYXJ5Q29sdW1uc1wiXG4gICAgbGV0LWNvbnRleHRNZW51SXRlbXM9XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICBsZXQtY29uZGl0aW9uYWxGb3JtYXRzPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICBsZXQtZGV2aWNlTmFtZT1cImRldmljZU5hbWVcIlxuICAgIGxldC1kZXZpY2VTaXplPVwiZGV2aWNlU2l6ZVwiXG4gICAgbGV0LWFjY2Vzcz1cImFjY2Vzc1wiXG4gICAgbGV0LXRvb2xiYXJCdXR0b25zPVwidG9vbGJhckJ1dHRvbnNcIlxuICAgIGxldC1wb3Bpbj1cInBvcGluXCJcbiAgICBsZXQtbW9iaWxlT3JUYWJsZXQ9XCJtb2JpbGVPclRhYmxldFwiXG4gICAgbGV0LXRpdGxlPVwidGl0bGVcIlxuICAgIGxldC1pbmxpbmVFZGl0TW9kZT1cImlubGluZUVkaXRNb2RlXCJcbiAgICBsZXQtYWxsb3dJbmxpbmVFZGl0PVwiYWxsb3dJbmxpbmVFZGl0XCJcbiAgICBsZXQtaGlkZVRvb2xiYXI9XCJoaWRlVG9vbGJhclwiXG4gICAgbGV0LWdyaWRTZXR0aW5nPVwiZ3JpZFNldHRpbmdcIlxuICAgIGxldC1jb250ZW50RGVuc2l0eT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICBsZXQtZm9ybUxheW91dD1cImZvcm1MYXlvdXRcIlxuICAgIGxldC1ydGw9XCJydGxcIlxuICAgIGxldC1oYXNTZWxlY3RlZD1cImhhc1NlbGVjdGVkXCJcbiAgICBsZXQtbmF2aWdhdGlvbkFycm93PVwibmF2aWdhdGlvbkFycm93XCJcbiAgICBsZXQtaW5EaWFsb2c9XCJpbkRpYWxvZ1wiXG4gICAgbGV0LXNlbGVjdGVkTW89XCJzZWxlY3RlZE1vXCJcbiAgICBsZXQtY29udGV4dFNldHRpbmc9XCJjb250ZXh0U2V0dGluZ1wiXG4gICAgbGV0LXZpZXdTZXR0aW5nPVwidmlld1NldHRpbmdcIlxuPlxuICAgIDxic3UtdWx2LXRvb2xiYXJcbiAgICAgICAgW2hpZGVUb29sYmFyXT1cImhpZGVUb29sYmFyXCJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbdG9vbGJhckJ1dHRvbnNdPVwidG9vbGJhckJ1dHRvbnNcIlxuICAgICAgICBbZ3JpZFNldHRpbmddPVwiZ3JpZFNldHRpbmdcIlxuICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgW2FjY2Vzc109XCJhY2Nlc3NcIlxuICAgICAgICBbaGFzU2VsZWN0ZWRdPVwiaGFzU2VsZWN0ZWRcIlxuICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgICAgICBbYWxsb3dJbmxpbmVFZGl0XT1cImFsbG93SW5saW5lRWRpdFwiXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdC5sZW5ndGhcIlxuICAgICAgICAoc29ydENsaWNrKT1cIm9uU29ydFNldHRpbmdzKGRldmljZU5hbWUpXCJcbiAgICAgICAgKGdyb3VwYnlDbGljayk9XCJvbkdyb3VwYnlTZXR0aW5ncyhkZXZpY2VOYW1lKVwiXG4gICAgICAgIChjb2x1bW5DbGljayk9XCJvbkNvbHVtblNldHRpbmdzKGRldmljZU5hbWUpXCJcbiAgICAgICAgKGVkaXRNb2RlQ2xpY2spPVwib25FZGl0TW9kZSgpXCJcbiAgICA+PC9ic3UtdWx2LXRvb2xiYXI+XG4gICAgPGJjLWNhbGVuZGFyLWNvbnRhaW5lclxuICAgICAgICBbaW5EaWFsb2ddPVwiaW5EaWFsb2dcIlxuICAgICAgICBbY29udGV4dFNldHRpbmddPVwiY29udGV4dFNldHRpbmdcIlxuICAgICAgICBbdmlld1NldHRpbmddPVwidmlld1NldHRpbmdcIlxuICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxuICAgICAgICBbc2VsZWN0ZWRNb109XCJzZWxlY3RlZE1vXCJcbiAgICAgICAgW2FsbENoZWNrZWRdPVwiYWxsQ2hlY2tlZFwiXG4gICAgICAgIFttb0RhdGFMaXN0XT1cIm1vRGF0YUxpc3RcIlxuICAgICAgICBbYWNjZXNzXT1cImFjY2Vzc1wiXG4gICAgICAgIFtwYXJlbnRIZWlnaHRdPVwicGFyZW50SGVpZ2h0XCJcbiAgICAgICAgW2dyb3VwYnldPVwiZ3JvdXBieVwiXG4gICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbbmF2aWdhdGlvbkFycm93XT1cIm5hdmlnYXRpb25BcnJvd1wiXG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgIFttb2JpbGVPclRhYmxldF09XCJtb2JpbGVPclRhYmxldFwiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW3BvcGluXT1cInBvcGluXCJcbiAgICAgICAgW3NlY29uZGFyeUNvbHVtbnNdPVwic2Vjb25kYXJ5Q29sdW1uc1wiXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgICAgICBbYWxsb3dJbmxpbmVFZGl0XT1cImFsbG93SW5saW5lRWRpdFwiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICBbY29sdW1uc0NvdW50XT1cImNvbHVtbnNDb3VudFwiXG4gICAgICAgIFtyb3dIb3ZlcmFibGVdPVwicm93SG92ZXJhYmxlXCJcbiAgICAgICAgW3Jvd0FjdGl2YWJsZV09XCJyb3dBY3RpdmFibGVcIlxuICAgICAgICBbZm9ybUxheW91dF09XCJmb3JtTGF5b3V0XCJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxDYW5jZWwpPVwib25FZGl0Rm9ybVBhbmVsQ2FuY2VsKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFNhdmUpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgKHNvcnRBc2NlbmRpbmcpPVwib25Tb3J0QXNjZW5kaW5nKCRldmVudClcIlxuICAgICAgICAoc29ydERlc2NlbmRpbmcpPVwib25Tb3J0RGVzY2VuZGluZygkZXZlbnQpXCJcbiAgICAgICAgKGZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgKHJvd0NoZWNrKT1cIm9uUm93Q2hlY2soJGV2ZW50KVwiXG4gICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuICAgICAgICAoYWxsQ2hlY2tib3gpPVwib25BbGxDaGVja2JveCgkZXZlbnQpXCJcbiAgICAgICAgKGV4cGFuZENsaWNrKT1cIihvbkV4cGFuZENsaWNrKVwiXG4gICAgICAgIChkZWxldGVUYXNrKT1cIm9uRGVsZXRlVGFzaygkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRUYXNrKT1cIm9uRWRpdFRhc2soJGV2ZW50KVwiXG4gICAgICAgIChkYXlTZWxlY3QpPVwib25EYXlTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgIChsb2FkRGF0YSk9XCJvbkxvYWREYXRhKCRldmVudClcIlxuICAgID5cbiAgICA8L2JjLWNhbGVuZGFyLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -79,6 +79,10 @@ export class UiDateTimeComponent extends FieldBaseComponent {
79
79
  onRangeChange(rangeValue) {
80
80
  console.log('endDate', rangeValue);
81
81
  }
82
+ _configChaned(options) {
83
+ // implemented by child components
84
+ super._configChaned(options);
85
+ }
82
86
  _setValue(value) {
83
87
  this._setCaption(value);
84
88
  super._setValue(value);
@@ -125,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
125
129
  }], GetCaption: [{
126
130
  type: Input
127
131
  }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZGF0ZS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3VpLWRhdGUtdGltZS91aS1kYXRlLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktZGF0ZS10aW1lL3VpLWRhdGUtdGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBc0IsS0FBSyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBRUgsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsVUFBVSxFQUNWLGNBQWMsRUFDakIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFlOUIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQWIzRDs7UUFtQkksaUJBQVksR0FBRyxFQUFFLENBQUM7UUEyRmxCLG9CQUFvQjtRQUNYLGVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0tBQ2pEO0lBMUZHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLG1CQUFtQixFQUFFO1lBQ3hFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNHLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMs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akI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLFdBQVc7NEJBQ3BCLFVBQVUsRUFBRSxjQUFjOzRCQUMxQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7eUJBQ3JCO3FCQUNKLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUdsQixpQkFBaUI7c0JBQTdDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNGLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDTSxpQkFBaUI7c0JBQTdDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQStGbEIsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgQmFyc2FBcGksXG4gICAgRmllbGRCYXNlQ29tcG9uZW50LFxuICAgIERhdGVTZXJ2aWNlLFxuICAgIExvZ1NlcnZpY2UsXG4gICAgZ2V0RGF0ZVNlcnZpY2Vcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1kYXRlLXRpbWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1kYXRlLXRpbWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3VpLWRhdGUtdGltZS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBEYXRlU2VydmljZSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IGdldERhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgZGVwczogW0xvZ1NlcnZpY2VdXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVpRGF0ZVRpbWVDb21wb25lbnQgZXh0ZW5kcyBGaWVsZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2RhdGV0aW1lUGlja2VyJykgZGF0ZXRpbWVQaWNrZXJSZWY6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXJSZWY6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnZHVyYXRpb25QaWNrZXInKSBkdXJhdGlvblBpY2tlclJlZjogRWxlbWVudFJlZjtcbiAgICBmdWxsQ2FsZW5kYXI6IGJvb2xlYW47XG4gICAgdmFsdWU6IERhdGU7XG4gICAgdmFsdWVDYXB0aW9uID0gJyc7XG4gICAgZm9ybWF0UGF0dGVybjogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFVpRGF0ZVRpbWVTZXR0aW5nO1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzPy5EYXRlUmFuZ2VNb2RlICYmIHRoaXMucGFyYW1ldGVycz8uRGF0ZVJhbmdlT3RoZXJGaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybXBhbmVsID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5jb250ZXh0LCAnTGF5b3V0Q29udHJvbC5jb25maWcuRm9ybVBhbmVsVWknLCBudWxsKTtcbiAgICAgICAgICAgIGlmIChmb3JtcGFuZWwpIHtcbiAgICAgICAgICAgICAgICBmb3JtcGFuZWwuZmlyZUV2ZW50KCdDaGFuZ2VGaWVsZFZpc2libGUnLCB0aGlzLnBhcmFtZXRlcnMuRGF0ZVJhbmdlT3RoZXJGaWVsZCwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udGV4dC52YWx1ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZnVsbENhbGVuZGFyID0gdGhpcy5TZXR0aW5nLlNob3dUaW1lMSAmJiB0aGlzLlNldHRpbmcuU2hvd0RhdGUxO1xuICAgICAgICBjb25zdCB0aW1lRm9ybWF0OiBzdHJpbmcgPSB0aGlzLlNldHRpbmcuVGltZUZvcm1hdD8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IHRpbWVGb3JtYXQyID0gJyc7XG4gICAgICAgIGlmICh0aW1lRm9ybWF0KSB7XG4gICAgICAgICAgICB0aW1lRm9ybWF0MiA9ICcgJztcbiAgICAgICAgICAgIHRpbWVGb3JtYXQuc3BsaXQoJzonKS5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQyICs9ICdISCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0MiArPSAnOm1tJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQyICs9ICc6U1MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGltZUZvcm1hdDIgKz0gJyBBJztcbiAgICAgICAgdGhpcy5mb3JtYXRQYXR0ZXJuID0gYFlZWVkvTU0vREQke3RpbWVGb3JtYXQyfWA7XG4gICAgICAgIC8vIHRoaXMudmFsdWUkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vICAgdGhpcy52YWx1ZSA9IDxEYXRlPnZhbHVlO1xuXG4gICAgICAgIC8vICAgLy8gdGhpcy5fc2V0VmFsdWVDYXB0aW9uKHZhbHVlKTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIC8vIC8vIHRoaXMuX3NldFZhbHVlQ2FwdGlvbih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICB0aGlzLl9zZXRDYXB0aW9uKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgICBvbkRhdGVUaW1lQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRldGltZVBpY2tlckNvbnRyb2wgPSB0aGlzLmRhdGV0aW1lUGlja2VyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMudmFsdWUgPSBkYXRldGltZVBpY2tlckNvbnRyb2wuZGF0ZVZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2FwdGlvbiA9IGRhdGV0aW1lUGlja2VyQ29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgICBvbkRhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRhdGVQaWNrZXJDb250cm9sID0gdGhpcy5kYXRlUGlja2VyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuX3ZhbHVlRGF0ZUNoYW5nZShkYXRlUGlja2VyQ29udHJvbC5kYXRlVmFsdWUpO1xuICAgIH1cbiAgICBvbkRhdGVDaGFuZ2UyKGRhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWVEYXRlQ2hhbmdlKGRhdGUpO1xuICAgIH1cblxuICAgIG9uRHVyYXRpb25DaGFuZ2UoZSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHZhbHVlIH0gPSBlLmRldGFpbDtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0aW1lID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICAgICAgdGhpcy52YWx1ZS5zZXRIb3VycyhOdW1iZXIodGltZVswXSksIE51bWJlcih0aW1lWzFdKSwgTnVtYmVyKHRpbWVbMl0pKTtcbiAgICAgICAgdGhpcy52YWx1ZUNhcHRpb24gPSB0aGlzLmR1cmF0aW9uUGlja2VyUmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgb25SYW5nZUNoYW5nZShyYW5nZVZhbHVlOiB7IHN0YXJ0RGF5OiBEYXRlOyBlbmREYXk6IERhdGUgfSk6IHZvaWQge1xuICAgICAgICBjb25zb2xlLmxvZygnZW5kRGF0ZScsIHJhbmdlVmFsdWUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldFZhbHVlKHZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldENhcHRpb24odmFsdWUpO1xuICAgICAgICBzdXBlci5fc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF92YWx1ZURhdGVDaGFuZ2UoZGF0ZVZhbHVlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBkYXRlVmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDYXB0aW9uID0gdGhpcy5fc2V0Q2FwdGlvbihkYXRlVmFsdWUpOyAvLyBkYXRlUGlja2VyQ29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRDYXB0aW9uKHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY2FwdGlvbiA9XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmNhcHRpb24gPVxuICAgICAgICAgICAgdGhpcy52YWx1ZUNhcHRpb24gPVxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVTZXJ2aWNlLmZvcm1hdCh2YWx1ZSwgdGhpcy5mb3JtYXRQYXR0ZXJuKSk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiBjYXB0aW9uO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBJbnB1dCgpIEdldENhcHRpb24gPSAoKSA9PiB0aGlzLnZhbHVlQ2FwdGlvbjtcbn1cbmludGVyZmFjZSBVaURhdGVUaW1lU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIEJ1dHRvbk1lbnVNb2RlOiBib29sZWFuO1xuICAgIFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgSW5saW5lTW9kZTogYm9vbGVhbjtcbiAgICBEYXRlUmFuZ2VNb2RlOiBib29sZWFuO1xuICAgIERhdGVSYW5nZU90aGVyRmllbGQ6IHN0cmluZztcbn1cbiIsIjxpbnB1dFxuICAgICpuZ0lmPVwiKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKSEhOyBlbHNlIGRhdGV0aW1lXCJcbiAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW2F0dHIucmVhZG9ubHldPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcbiAgICBbYXR0ci5kaXNhYmxlZF09XCIoZGlzYWJsZSQgfCBhc3luYykgPT09IHRydWUgPyB0cnVlIDogbnVsbFwiXG4gICAgW3ZhbHVlXT1cInZhbHVlID8gdmFsdWVDYXB0aW9uIDogJydcIlxuLz5cbjxuZy10ZW1wbGF0ZSAjZGF0ZXRpbWU+XG4gICAgPGRpdlxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCIoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpISEgPyAnaGlkZGVuJyA6ICdibG9jaydcIlxuICAgICAgICBbYXR0ci5kaXJdPVwiU2V0dGluZy5Jc0x0ciA9PT0gdHJ1ZSA/ICdsdHInIDogJ3J0bCdcIlxuICAgID5cbiAgICAgICAgPGJjLWRhdGUtdGltZS1waWNrZXJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICBbYnV0dG9uTWVudU1vZGVdPVwicGFyYW1ldGVycz8uQnV0dG9uTWVudU1vZGUgPT09IHRydWVcIlxuICAgICAgICAgICAgW3Nob3dEYXRlXT1cIlNldHRpbmcuU2hvd0RhdGUxXCJcbiAgICAgICAgICAgIFtzaG93VGltZV09XCJTZXR0aW5nLlNob3dUaW1lMVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGFyYW1ldGVycz8uQnV0dG9uTWVudU1vZGUgPT09IHRydWUgPyBwYXJhbWV0ZXJzLlBsYWNlaG9sZGVyIDogZm9ybWF0UGF0dGVyblwiXG4gICAgICAgICAgICBbcHJpbWFyeUNhbGVuZGFyVHlwZV09XCJTZXR0aW5nLkNhbGVuZGFyVHlwZVwiXG4gICAgICAgICAgICBbZm9ybWF0UGF0dGVybl09XCJmb3JtYXRQYXR0ZXJuXCJcbiAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cIihkZXZpY2VTaXplJCB8IGFzeW5jKSEhXCJcbiAgICAgICAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICAgICAgICBbZGF0ZXJhbmdlTW9kZV09XCJwYXJhbWV0ZXJzPy5EYXRlUmFuZ2VNb2RlID09PSB0cnVlXCJcbiAgICAgICAgICAgIFtpbmxpbmVNb2RlXT1cInBhcmFtZXRlcnM/LklubGluZU1vZGUgPT09IHRydWVcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cIihyZWFkb25seSQgfCBhc3luYykgPT09IHRydWUgPyB0cnVlIDogZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIihkaXNhYmxlJCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlMigkZXZlbnQpXCJcbiAgICAgICAgICAgIChyYW5nZUNoYW5nZSk9XCJvblJhbmdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvYmMtZGF0ZS10aW1lLXBpY2tlcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZGF0ZS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3VpLWRhdGUtdGltZS91aS1kYXRlLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktZGF0ZS10aW1lL3VpLWRhdGUtdGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBc0IsS0FBSyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBRUgsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsVUFBVSxFQUNWLGNBQWMsRUFDakIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFlOUIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQWIzRDs7UUFtQkksaUJBQVksR0FBRyxFQUFFLENBQUM7UUErRmxCLG9CQUFvQjtRQUNYLGVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0tBQ2pEO0lBOUZHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLG1CQUFtQixFQUFFO1lBQ3hFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNHLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMs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QUUsQ0FBQyxVQUFVLENBQUM7U0FDckI7S0FDSiwwV0NyQkwsazdDQWlDQTsyRkRUYSxtQkFBbUI7a0JBYi9CLFNBQVM7K0JBQ0ksa0JBQWtCLGFBR2pCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxXQUFXOzRCQUNwQixVQUFVLEVBQUUsY0FBYzs0QkFDMUIsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO3lCQUNyQjtxQkFDSixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHbEIsaUJBQWlCO3NCQUE3QyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRixhQUFhO3NCQUFyQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ00saUJBQWlCO3NCQUE3QyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFtR2xCLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIEJhcnNhQXBpLFxuICAgIEZpZWxkQmFzZUNvbXBvbmVudCxcbiAgICBEYXRlU2VydmljZSxcbiAgICBMb2dTZXJ2aWNlLFxuICAgIGdldERhdGVTZXJ2aWNlXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtdWktZGF0ZS10aW1lJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktZGF0ZS10aW1lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91aS1kYXRlLXRpbWUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBnZXREYXRlU2VydmljZSxcbiAgICAgICAgICAgIGRlcHM6IFtMb2dTZXJ2aWNlXVxuICAgICAgICB9XG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBVaURhdGVUaW1lQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKCdkYXRldGltZVBpY2tlcicpIGRhdGV0aW1lUGlja2VyUmVmOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyUmVmOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2R1cmF0aW9uUGlja2VyJykgZHVyYXRpb25QaWNrZXJSZWY6IEVsZW1lbnRSZWY7XG4gICAgZnVsbENhbGVuZGFyOiBib29sZWFuO1xuICAgIHZhbHVlOiBEYXRlO1xuICAgIHZhbHVlQ2FwdGlvbiA9ICcnO1xuICAgIGZvcm1hdFBhdHRlcm46IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzOiBVaURhdGVUaW1lU2V0dGluZztcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVycz8uRGF0ZVJhbmdlTW9kZSAmJiB0aGlzLnBhcmFtZXRlcnM/LkRhdGVSYW5nZU90aGVyRmllbGQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1wYW5lbCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuY29udGV4dCwgJ0xheW91dENvbnRyb2wuY29uZmlnLkZvcm1QYW5lbFVpJywgbnVsbCk7XG4gICAgICAgICAgICBpZiAoZm9ybXBhbmVsKSB7XG4gICAgICAgICAgICAgICAgZm9ybXBhbmVsLmZpcmVFdmVudCgnQ2hhbmdlRmllbGRWaXNpYmxlJywgdGhpcy5wYXJhbWV0ZXJzLkRhdGVSYW5nZU90aGVyRmllbGQsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvbnRleHQudmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZ1bGxDYWxlbmRhciA9IHRoaXMuU2V0dGluZy5TaG93VGltZTEgJiYgdGhpcy5TZXR0aW5nLlNob3dEYXRlMTtcbiAgICAgICAgY29uc3QgdGltZUZvcm1hdDogc3RyaW5nID0gdGhpcy5TZXR0aW5nLlRpbWVGb3JtYXQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxldCB0aW1lRm9ybWF0MiA9ICcnO1xuICAgICAgICBpZiAodGltZUZvcm1hdCkge1xuICAgICAgICAgICAgdGltZUZvcm1hdDIgPSAnICc7XG4gICAgICAgICAgICB0aW1lRm9ybWF0LnNwbGl0KCc6JykuZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0MiArPSAnSEgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdDIgKz0gJzptbSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0MiArPSAnOlNTJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRpbWVGb3JtYXQyICs9ICcgQSc7XG4gICAgICAgIHRoaXMuZm9ybWF0UGF0dGVybiA9IGBZWVlZL01NL0REJHt0aW1lRm9ybWF0Mn1gO1xuICAgICAgICAvLyB0aGlzLnZhbHVlJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAvLyAgIHRoaXMudmFsdWUgPSA8RGF0ZT52YWx1ZTtcblxuICAgICAgICAvLyAgIC8vIHRoaXMuX3NldFZhbHVlQ2FwdGlvbih2YWx1ZSk7XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyAvLyB0aGlzLl9zZXRWYWx1ZUNhcHRpb24odGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgdGhpcy5fc2V0Q2FwdGlvbih0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgb25EYXRlVGltZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0ZXRpbWVQaWNrZXJDb250cm9sID0gdGhpcy5kYXRldGltZVBpY2tlclJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZXRpbWVQaWNrZXJDb250cm9sLmRhdGVWYWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNhcHRpb24gPSBkYXRldGltZVBpY2tlckNvbnRyb2wudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgb25EYXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRlUGlja2VyQ29udHJvbCA9IHRoaXMuZGF0ZVBpY2tlclJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLl92YWx1ZURhdGVDaGFuZ2UoZGF0ZVBpY2tlckNvbnRyb2wuZGF0ZVZhbHVlKTtcbiAgICB9XG4gICAgb25EYXRlQ2hhbmdlMihkYXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlRGF0ZUNoYW5nZShkYXRlKTtcbiAgICB9XG5cbiAgICBvbkR1cmF0aW9uQ2hhbmdlKGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gZS5kZXRhaWw7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGltZSA9IHZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0SG91cnMoTnVtYmVyKHRpbWVbMF0pLCBOdW1iZXIodGltZVsxXSksIE51bWJlcih0aW1lWzJdKSk7XG4gICAgICAgIHRoaXMudmFsdWVDYXB0aW9uID0gdGhpcy5kdXJhdGlvblBpY2tlclJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIG9uUmFuZ2VDaGFuZ2UocmFuZ2VWYWx1ZTogeyBzdGFydERheTogRGF0ZTsgZW5kRGF5OiBEYXRlIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2VuZERhdGUnLCByYW5nZVZhbHVlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jb25maWdDaGFuZWQob3B0aW9ucyk6IHZvaWQge1xuICAgICAgICAvLyBpbXBsZW1lbnRlZCBieSBjaGlsZCBjb21wb25lbnRzXG4gICAgICAgIHN1cGVyLl9jb25maWdDaGFuZWQob3B0aW9ucyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0VmFsdWUodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0Q2FwdGlvbih2YWx1ZSk7XG4gICAgICAgIHN1cGVyLl9zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3ZhbHVlRGF0ZUNoYW5nZShkYXRlVmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGVWYWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNhcHRpb24gPSB0aGlzLl9zZXRDYXB0aW9uKGRhdGVWYWx1ZSk7IC8vIGRhdGVQaWNrZXJDb250cm9sLnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldENhcHRpb24odmFsdWU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjYXB0aW9uID1cbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuY2FwdGlvbiA9XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2FwdGlvbiA9XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0ZVNlcnZpY2UuZm9ybWF0KHZhbHVlLCB0aGlzLmZvcm1hdFBhdHRlcm4pKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuIGNhcHRpb247XG4gICAgfVxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgQElucHV0KCkgR2V0Q2FwdGlvbiA9ICgpID0+IHRoaXMudmFsdWVDYXB0aW9uO1xufVxuaW50ZXJmYWNlIFVpRGF0ZVRpbWVTZXR0aW5nIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgQnV0dG9uTWVudU1vZGU6IGJvb2xlYW47XG4gICAgUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBJbmxpbmVNb2RlOiBib29sZWFuO1xuICAgIERhdGVSYW5nZU1vZGU6IGJvb2xlYW47XG4gICAgRGF0ZVJhbmdlT3RoZXJGaWVsZDogc3RyaW5nO1xufVxuIiwiPGlucHV0XG4gICAgKm5nSWY9XCIoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpISE7IGVsc2UgZGF0ZXRpbWVcIlxuICAgIGZkLWZvcm0tY29udHJvbFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBbYXR0ci5yZWFkb25seV09XCIocmVhZG9ubHkkIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuICAgIFthdHRyLmRpc2FibGVkXT1cIihkaXNhYmxlJCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcbiAgICBbdmFsdWVdPVwidmFsdWUgPyB2YWx1ZUNhcHRpb24gOiAnJ1wiXG4vPlxuPG5nLXRlbXBsYXRlICNkYXRldGltZT5cbiAgICA8ZGl2XG4gICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIihkaXNhYmxlT3JSZWFkb25seSQgfCBhc3luYykhISA/ICdoaWRkZW4nIDogJ2Jsb2NrJ1wiXG4gICAgICAgIFthdHRyLmRpcl09XCJTZXR0aW5nLklzTHRyID09PSB0cnVlID8gJ2x0cicgOiAncnRsJ1wiXG4gICAgPlxuICAgICAgICA8YmMtZGF0ZS10aW1lLXBpY2tlclxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIFtidXR0b25NZW51TW9kZV09XCJwYXJhbWV0ZXJzPy5CdXR0b25NZW51TW9kZSA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICBbc2hvd0RhdGVdPVwiU2V0dGluZy5TaG93RGF0ZTFcIlxuICAgICAgICAgICAgW3Nob3dUaW1lXT1cIlNldHRpbmcuU2hvd1RpbWUxXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwYXJhbWV0ZXJzPy5CdXR0b25NZW51TW9kZSA9PT0gdHJ1ZSA/IHBhcmFtZXRlcnMuUGxhY2Vob2xkZXIgOiBmb3JtYXRQYXR0ZXJuXCJcbiAgICAgICAgICAgIFtwcmltYXJ5Q2FsZW5kYXJUeXBlXT1cIlNldHRpbmcuQ2FsZW5kYXJUeXBlXCJcbiAgICAgICAgICAgIFtmb3JtYXRQYXR0ZXJuXT1cImZvcm1hdFBhdHRlcm5cIlxuICAgICAgICAgICAgW2RldmljZVNpemVdPVwiKGRldmljZVNpemUkIHwgYXN5bmMpISFcIlxuICAgICAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgICAgIFtkYXRlcmFuZ2VNb2RlXT1cInBhcmFtZXRlcnM/LkRhdGVSYW5nZU1vZGUgPT09IHRydWVcIlxuICAgICAgICAgICAgW2lubGluZU1vZGVdPVwicGFyYW1ldGVycz8uSW5saW5lTW9kZSA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiKGRpc2FibGUkIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UyKCRldmVudClcIlxuICAgICAgICAgICAgKHJhbmdlQ2hhbmdlKT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9iYy1kYXRlLXRpbWUtcGlja2VyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -132,9 +132,7 @@ export class UiMoInfoUlvComboComponent extends FieldBaseComponent {
132
132
  });
133
133
  }
134
134
  onItemClick(e, moDataList) {
135
- moDataList.forEach((c) => (c.$IsChecked = false));
136
- const selectedMo = e.item;
137
- this._fireValueChange(selectedMo);
135
+ this._handleItemSelect(moDataList, e.item);
138
136
  }
139
137
  onPageChange2(pageSetting, e) {
140
138
  PreventDefaulEvent(e);
@@ -219,6 +217,10 @@ export class UiMoInfoUlvComboComponent extends FieldBaseComponent {
219
217
  }
220
218
  return colName;
221
219
  }
220
+ _handleItemSelect(moDataList, mo) {
221
+ moDataList.forEach((c) => (c.$IsChecked = false));
222
+ this._fireValueChange(mo);
223
+ }
222
224
  _setValue(value) {
223
225
  this._setValueText(value);
224
226
  this._checkHasValue(value);
@@ -358,10 +360,10 @@ export class UiMoInfoUlvComboComponent extends FieldBaseComponent {
358
360
  }
359
361
  }
360
362
  UiMoInfoUlvComboComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiMoInfoUlvComboComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
361
- UiMoInfoUlvComboComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiMoInfoUlvComboComponent, selector: "bsu-ui-mo-info-ulv-combo", inputs: { ulvAdapter: "ulvAdapter", Control: "Control", UlvUi: "UlvUi", UlvMainCtrlr: "UlvMainCtrlr", IsExpanded: "IsExpanded", Collapse: "Collapse", Expand: "Expand", on: "on", Focus: "Focus", SetUlvAdapter: "SetUlvAdapter", IsUiCreated: "IsUiCreated", Mask: "Mask", hide: "hide", show: "show", Unmask: "Unmask", getRawValue: "getRawValue" }, host: { listeners: { "keydown": "onKeyDown($event)", "keydown.alt": "onAlt($event)" } }, viewQueries: [{ propertyName: "fdComboRef", first: true, predicate: ComboboxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container\r\n *ngTemplateOutlet=\"\r\n context._showPopup || context._showDropDown === false ? inputTemplate : comboTemplate;\r\n context: {\r\n $implicit:\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging,\r\n deviceSize: deviceSize$ | async,\r\n disableOrReadonly: disableOrReadonly$ | async,\r\n disable: disable$ | async,\r\n readonly: readonly$ | async\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n<ng-template\r\n #inputTemplate\r\n let-deviceSize=\"deviceSize\"\r\n let-disableOrReadonly=\"disableOrReadonly\"\r\n let-disable=\"disable\"\r\n let-readonly=\"readonly\"\r\n>\r\n <div style=\"display: flex\" class=\"fd-input-group\">\r\n <input\r\n fd-input-group-input\r\n fd-form-control\r\n #inputRef\r\n [placeholder]=\"Setting.NullText || ''\"\r\n [attr.readonly]=\"true\"\r\n [attr.disabled]=\"disable === true ? true : null\"\r\n [value]=\"!value ? '' : (value | bbbTranslate)\"\r\n [id]=\"id\"\r\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\r\n (input)=\"onValueChange($event)\"\r\n />\r\n <span fd-input-group-addon *ngIf=\"hasValue && disableOrReadonly !== true\" class=\"fd-input-group__addon--button\">\r\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"onClear()\"></button>\r\n </span>\r\n <span\r\n fd-input-group-addon\r\n *ngIf=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\r\n class=\"fd-input-group__addon--button\"\r\n >\r\n <button fd-button fdType=\"transparent\" glyph=\"add\" (click)=\"onNew()\"></button>\r\n </span>\r\n <span\r\n fd-input-group-addon\r\n *ngIf=\"hasValue && disableOrReadonly !== true && Setting.ViewRelatedFormType === 'Show'\"\r\n class=\"fd-input-group__addon--button\"\r\n >\r\n <button fd-button fdType=\"transparent\" glyph=\"edit\" (click)=\"onEdit()\"></button>\r\n </span>\r\n <span\r\n fd-input-group-addon\r\n *ngIf=\"hasValue && disableOrReadonly !== true && Setting.ViewRelatedFormType === 'ShowReadOnly'\"\r\n class=\"fd-input-group__addon--button\"\r\n >\r\n <button fd-button fdType=\"transparent\" glyph=\"show\" (click)=\"onEdit()\"></button>\r\n </span>\r\n <span\r\n fd-input-group-addon\r\n *ngIf=\"context._showPopup && !value && disableOrReadonly !== true\"\r\n class=\"fd-input-group__addon--button\"\r\n >\r\n <button fd-button fdType=\"transparent\" glyph=\"search\" (click)=\"onSearch()\"></button>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template\r\n #comboTemplate\r\n let-moDataList\r\n let-deviceSize=\"deviceSize\"\r\n let-disableOrReadonly=\"disableOrReadonly\"\r\n let-disable=\"disable\"\r\n let-readonly=\"readonly\"\r\n>\r\n <div class=\"simple-combo-wrapper\">\r\n <fd-combobox\r\n #fdCombobox\r\n class=\"combo-mo-ulv\"\r\n [comboboxId]=\"comboboxId\"\r\n [class.has-report]=\"hasReport\"\r\n [class.has-Value]=\"hasValue\"\r\n [placeholder]=\"'Select' | bbbTranslate\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"mobileConfig\"\r\n [fillOnSelect]=\"true\"\r\n [readOnly]=\"readonly === true ? true : false\"\r\n [disabled]=\"disable === true ? true : false\"\r\n [dropdownValues]=\"moDataList\"\r\n [filterFn]=\"customFilter\"\r\n [openOnKeyboardEvent]=\"true\"\r\n [byline]=\"allColumns.length > 0\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [displayFn]=\"displayFunc\"\r\n [showDropdownButton]=\"disableOrReadonly !== true\"\r\n (itemClicked)=\"onItemClick($event, moDataList)\"\r\n (inputTextChange)=\"onInputChange($event)\"\r\n (openChange)=\"onOpenChange(fdCombobox, $event)\"\r\n >\r\n </fd-combobox>\r\n <button\r\n fd-button\r\n *ngIf=\"hasValue && disableOrReadonly !== true\"\r\n glyph=\"decline\"\r\n fdType=\"transparent\"\r\n class=\"combo-popup-btn\"\r\n (click)=\"onClear()\"\r\n ></button>\r\n\r\n <button\r\n fd-button\r\n *ngIf=\"hasReport && disableOrReadonly !== true\"\r\n glyph=\"search\"\r\n fdType=\"transparent\"\r\n class=\"combo-popup-btn\"\r\n (click)=\"onSearch()\"\r\n ></button>\r\n </div>\r\n <ng-template #itemTemplate let-item>\r\n <div fd-list-content *ngIf=\"item.$isLoading; else itemWrapper\" style=\"width: 100%; height: 20px\">\r\n <bsu-mask [size]=\"'s'\" [top]=\"'10px'\"></bsu-mask>\r\n </div>\r\n <ng-template #itemWrapper>\r\n <ng-container *ngIf=\"item.$LoadMore; else showItem\">\r\n <!-- <bsu-ulv-paging\r\n (click)=\"onPagingClick($event)\"\r\n (pageChange)=\"onPageChange($event)\"\r\n [pagingSetting]=\"ulvAdapter.Setting.Data.Paging\"\r\n >\r\n </bsu-ulv-paging> -->\r\n <button\r\n style=\"width: 100%\"\r\n *ngIf=\"ulvAdapter.Setting.Data.Paging.Page + 1 < ulvAdapter.Setting.Data.Paging.TotalPages\"\r\n fd-button\r\n (click)=\"onPageChange2(ulvAdapter.Setting.Data.Paging, $event)\"\r\n [label]=\"'More' | bbbTranslate\"\r\n ></button>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #showItem>\r\n <ng-container *ngIf=\"allColumns?.length && !item.isEmpty; else captionTemplate\">\r\n <div *ngIf=\"!item.$__IsLast\" class=\"moinfoulv devider\"></div>\r\n <span fd-list-thumbnail *ngIf=\"item.$Icon\"><fd-icon [glyph]=\"item.$Icon\"></fd-icon></span>\r\n <div fd-list-content class=\"moinfoulv hasColumns\">\r\n <div fd-list-title class=\"title\">{{ allColumns[0].Alias | rval: item:allColumns:true }}</div>\r\n <div fd-list-byline class=\"byline\" *ngIf=\"allColumns[1]\">\r\n {{ allColumns[1].Alias | rval: item:allColumns:true }}\r\n </div>\r\n <div style=\"display: flex; column-gap: 8px; flex-wrap: wrap\">\r\n <ng-container *ngFor=\"let column of allColumns; let index = index\">\r\n <ng-container *ngIf=\"index > 1\">\r\n <ng-container *ngIf=\"column.Alias | rval: item:allColumns:true as value\">\r\n <span> {{ column.Alias }}:{{ value }}</span>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #captionTemplate>\r\n <span fd-list-title [class.list-empty-item]=\"item.isEmpty\">{{\r\n item.isEmpty ? ('NoData' | bbbTranslate) : (item.$MoCaption || item.$Caption | bbbTranslate)\r\n }}</span>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n", styles: [":host{display:block}.combo-mo-ulv{width:100%}.combo-mo-ulv ::ng-deep .fd-popover-custom{width:100%}.fd-input-group>.fd-input-group__input{background-color:transparent!important}.simple-combo-wrapper{display:flex;align-items:center;position:relative}.simple-combo-wrapper ::ng-deep .combo-mo-ulv[class*=has-] .fd-input-group{border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset}.simple-combo-wrapper ::ng-deep .combo-popup-btn{background-color:var(--sapField_Background);border-top:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-bottom:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);box-sizing:content-box;border-radius:0}.simple-combo-wrapper ::ng-deep .combo-popup-btn:first-child{margin-right:-1px}.simple-combo-wrapper ::ng-deep .combo-popup-btn:last-child{border-left:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor)}.combo-wrapper{display:flex;align-items:center;border:var(--sapField_BorderWidth, .0625rem) solid var(--sapField_BorderColor, #89919a);border-radius:var(--sapField_BorderCornerRadius, .125rem)}::ng-deep .combo-popup-btn{border:none;background:transparent}::ng-deep .combo-popup-btn button{border-color:transparent!important;border:none}::ng-deep .fd-combobox-count-list-results{display: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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ComboboxComponent, selector: "fd-combobox", inputs: ["comboboxId", "inputId", "ariaLabel", "ariaLabelledBy", "required", "dropdownValues", "filterFn", "disabled", "placeholder", "isSearch", "glyph", "showClearButton", "triggers", "closeOnOutsideClick", "openOnKeyboardEvent", "state", "itemTemplate", "groupFn", "maxHeight", "searchFn", "highlighting", "closeOnSelect", "fillOnSelect", "autoComplete", "fillControlMode", "communicateByObject", "displayFn", "buttonFocusable", "readOnly", "mobile", "mobileConfig", "showDropdownButton", "includes", "title", "byline"], outputs: ["itemClicked", "openChange", "inputTextChange"] }, { kind: "component", type: i5.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i5.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i6.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "directive", type: i7.InputGroupInputDirective, selector: "[fd-input-group-input]", inputs: ["class"] }, { kind: "directive", type: i7.InputGroupAddOnDirective, selector: "[fd-input-group-addon]", inputs: ["class", "placement", "type", "state", "button"] }, { kind: "directive", type: i8.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i8.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i8.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i8.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "component", type: i9.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.MoInfoUlvMoListPipe, name: "moInfoUlvMoList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
363
+ UiMoInfoUlvComboComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiMoInfoUlvComboComponent, selector: "bsu-ui-mo-info-ulv-combo", inputs: { ulvAdapter: "ulvAdapter", Control: "Control", UlvUi: "UlvUi", UlvMainCtrlr: "UlvMainCtrlr", IsExpanded: "IsExpanded", Collapse: "Collapse", Expand: "Expand", on: "on", Focus: "Focus", SetUlvAdapter: "SetUlvAdapter", IsUiCreated: "IsUiCreated", Mask: "Mask", hide: "hide", show: "show", Unmask: "Unmask", getRawValue: "getRawValue" }, host: { listeners: { "keydown": "onKeyDown($event)", "keydown.alt": "onAlt($event)" } }, viewQueries: [{ propertyName: "fdComboRef", first: true, predicate: ComboboxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"\n context._showPopup || context._showDropDown === false ? inputTemplate : comboTemplate;\n context: {\n $implicit:\n (loading$ | async) === true\n | moInfoUlvMoList\n : isDataLoadedFirstTime\n : ulvAdapter?.Setting?.Data?.MoDataList\n : UlvUi?.Setting?.Data?.MoDataList\n : ulvAdapter?.Setting?.Data?.Paging\n : UlvUi?.Setting?.Data?.Paging,\n deviceSize: deviceSize$ | async,\n disableOrReadonly: disableOrReadonly$ | async,\n disable: disable$ | async,\n readonly: readonly$ | async\n }\n \"\n>\n</ng-container>\n<ng-template\n #inputTemplate\n let-deviceSize=\"deviceSize\"\n let-disableOrReadonly=\"disableOrReadonly\"\n let-disable=\"disable\"\n let-readonly=\"readonly\"\n>\n <div style=\"display: flex\" class=\"fd-input-group\">\n <input\n fd-input-group-input\n fd-form-control\n #inputRef\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"true\"\n [attr.disabled]=\"disable === true ? true : null\"\n [value]=\"!value ? '' : (value | bbbTranslate)\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n (input)=\"onValueChange($event)\"\n />\n <ng-container *ngTemplateOutlet=\"btnsTpl; context: { disableOrReadonly: disableOrReadonly }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #btnsTpl let-disableOrReadonly=\"disableOrReadonly\">\n <span\n class=\"fd-input-group__addon--button combo-popup-btn\"\n fd-input-group-addon\n *ngIf=\"hasValue && disableOrReadonly !== true\"\n >\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"onClear()\"></button>\n </span>\n <span\n fd-input-group-addon\n *ngIf=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\n class=\"fd-input-group__addon--button combo-popup-btn\"\n >\n <button fd-button fdType=\"transparent\" glyph=\"add\" (click)=\"onNew()\"></button>\n </span>\n <span\n fd-input-group-addon\n *ngIf=\"hasValue && disableOrReadonly !== true && Setting.ViewRelatedFormType !== 'Hide'\"\n class=\"fd-input-group__addon--button combo-popup-btn\"\n >\n <button fd-button fdType=\"transparent\" glyph=\"edit\" (click)=\"onEdit()\"></button>\n </span>\n <span\n fd-input-group-addon\n *ngIf=\"context._showPopup && !value && disableOrReadonly !== true\"\n class=\"fd-input-group__addon--button combo-popup-btn\"\n >\n <button fd-button fdType=\"transparent\" glyph=\"search\" (click)=\"onSearch()\"></button>\n </span>\n</ng-template>\n<ng-template\n #comboTemplate\n let-moDataList\n let-deviceSize=\"deviceSize\"\n let-disableOrReadonly=\"disableOrReadonly\"\n let-disable=\"disable\"\n let-readonly=\"readonly\"\n>\n <div class=\"simple-combo-wrapper\">\n <fd-combobox\n #fdCombobox\n class=\"combo-mo-ulv\"\n [class.canAdd]=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\n [class.canEdit]=\"hasValue && disableOrReadonly !== true\"\n [comboboxId]=\"comboboxId\"\n [class.has-report]=\"hasReport\"\n [class.has-Value]=\"hasValue\"\n [placeholder]=\"'Select' | bbbTranslate\"\n [mobile]=\"deviceSize === 's'\"\n [mobileConfig]=\"mobileConfig\"\n [fillOnSelect]=\"true\"\n [readOnly]=\"readonly === true ? true : false\"\n [disabled]=\"disable === true ? true : false\"\n [dropdownValues]=\"moDataList\"\n [filterFn]=\"customFilter\"\n [openOnKeyboardEvent]=\"true\"\n [byline]=\"allColumns.length > 0\"\n [itemTemplate]=\"itemTemplate\"\n [displayFn]=\"displayFunc\"\n [showDropdownButton]=\"disableOrReadonly !== true\"\n (itemClicked)=\"onItemClick($event, moDataList)\"\n (inputTextChange)=\"onInputChange($event)\"\n (openChange)=\"onOpenChange(fdCombobox, $event)\"\n >\n </fd-combobox>\n <ng-container *ngTemplateOutlet=\"btnsTpl\"></ng-container>\n </div>\n <ng-template #itemTemplate let-item>\n <div fd-list-content *ngIf=\"item.$isLoading; else itemWrapper\" style=\"width: 100%; height: 20px\">\n <bsu-mask [size]=\"'s'\" [top]=\"'10px'\"></bsu-mask>\n </div>\n <ng-template #itemWrapper>\n <ng-container *ngIf=\"item.$LoadMore; else showItem\">\n <!-- <bsu-ulv-paging\n (click)=\"onPagingClick($event)\"\n (pageChange)=\"onPageChange($event)\"\n [pagingSetting]=\"ulvAdapter.Setting.Data.Paging\"\n >\n </bsu-ulv-paging> -->\n <button\n style=\"width: 100%\"\n *ngIf=\"ulvAdapter.Setting.Data.Paging.Page + 1 < ulvAdapter.Setting.Data.Paging.TotalPages\"\n fd-button\n (click)=\"onPageChange2(ulvAdapter.Setting.Data.Paging, $event)\"\n [label]=\"'More' | bbbTranslate\"\n ></button>\n </ng-container>\n </ng-template>\n <ng-template #showItem>\n <ng-container *ngIf=\"allColumns?.length && !item.isEmpty; else captionTemplate\">\n <div *ngIf=\"!item.$__IsLast\" class=\"moinfoulv devider\"></div>\n <span fd-list-thumbnail *ngIf=\"item.$Icon\"><fd-icon [glyph]=\"item.$Icon\"></fd-icon></span>\n <div fd-list-content class=\"moinfoulv hasColumns\">\n <div fd-list-title class=\"title\">{{ allColumns[0].Alias | rval: item:allColumns:true }}</div>\n <div fd-list-byline class=\"byline\" *ngIf=\"allColumns[1]\">\n {{ allColumns[1].Alias | rval: item:allColumns:true }}\n </div>\n <div style=\"display: flex; column-gap: 8px; flex-wrap: wrap\">\n <ng-container *ngFor=\"let column of allColumns; let index = index\">\n <ng-container *ngIf=\"index > 1\">\n <ng-container *ngIf=\"column.Alias | rval: item:allColumns:true as value\">\n <span> {{ column.Alias }}:{{ value }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n <ng-template #captionTemplate>\n <span fd-list-title [class.list-empty-item]=\"item.isEmpty\"\n >{{ item.isEmpty ? ('NoData' | bbbTranslate) : (item.$MoCaption || item.$Caption | bbbTranslate) }}\n </span>\n <span\n fd-list-secondary\n *ngIf=\"!item.isEmpty && !disableOrReadonly && Setting.ViewRelatedFormType !== 'Hide'\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n bodyClick\n (click)=\"$event.stopPropagation(); _handleItemSelect(moDataList, item); onEdit()\"\n title=\"Edit\"\n ></button>\n </span>\n </ng-template>\n </ng-template>\n </ng-template>\n</ng-template>\n", styles: [":host{display:block}.combo-mo-ulv{width:100%}.combo-mo-ulv ::ng-deep .fd-popover-custom{width:100%}.fd-input-group>.fd-input-group__input{background-color:transparent!important}.simple-combo-wrapper{display:flex;align-items:center;position:relative}.simple-combo-wrapper ::ng-deep .combo-mo-ulv[class*=has-] .fd-input-group,.simple-combo-wrapper ::ng-deep .combo-mo-ulv.canAdd .fd-input-group,.simple-combo-wrapper ::ng-deep .combo-mo-ulv.canEdit .fd-input-group{border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset}.simple-combo-wrapper ::ng-deep .combo-popup-btn{background-color:var(--sapField_Background)!important;border-top:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-bottom:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);box-sizing:content-box;border-radius:0}.simple-combo-wrapper ::ng-deep .combo-popup-btn:first-child{margin-right:-1px}.simple-combo-wrapper ::ng-deep .combo-popup-btn:last-child{border-left:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor)}.combo-wrapper{display:flex;align-items:center;border:var(--sapField_BorderWidth, .0625rem) solid var(--sapField_BorderColor, #89919a);border-radius:var(--sapField_BorderCornerRadius, .125rem)}::ng-deep .combo-popup-btn{border:none;background:transparent}::ng-deep .combo-popup-btn button{border-color:transparent!important;border:none}::ng-deep .fd-combobox-count-list-results{display: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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i2.BodyClickDirective, selector: "[bodyClick]" }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ComboboxComponent, selector: "fd-combobox", inputs: ["comboboxId", "inputId", "ariaLabel", "ariaLabelledBy", "required", "dropdownValues", "filterFn", "disabled", "placeholder", "isSearch", "glyph", "showClearButton", "triggers", "closeOnOutsideClick", "openOnKeyboardEvent", "state", "itemTemplate", "groupFn", "maxHeight", "searchFn", "highlighting", "closeOnSelect", "fillOnSelect", "autoComplete", "fillControlMode", "communicateByObject", "displayFn", "buttonFocusable", "readOnly", "mobile", "mobileConfig", "showDropdownButton", "includes", "title", "byline"], outputs: ["itemClicked", "openChange", "inputTextChange"] }, { kind: "component", type: i5.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i5.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i6.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "directive", type: i7.InputGroupInputDirective, selector: "[fd-input-group-input]", inputs: ["class"] }, { kind: "directive", type: i7.InputGroupAddOnDirective, selector: "[fd-input-group-addon]", inputs: ["class", "placement", "type", "state", "button"] }, { kind: "directive", type: i8.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i8.ListSecondaryDirective, selector: "[fd-list-secondary] ,[fdListSecondary]" }, { kind: "directive", type: i8.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i8.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i8.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "component", type: i9.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.MoInfoUlvMoListPipe, name: "moInfoUlvMoList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
362
364
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiMoInfoUlvComboComponent, decorators: [{
363
365
  type: Component,
364
- args: [{ selector: 'bsu-ui-mo-info-ulv-combo', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\r\n *ngTemplateOutlet=\"\r\n context._showPopup || context._showDropDown === false ? inputTemplate : comboTemplate;\r\n context: {\r\n $implicit:\r\n (loading$ | async) === true\r\n | moInfoUlvMoList\r\n : isDataLoadedFirstTime\r\n : ulvAdapter?.Setting?.Data?.MoDataList\r\n : UlvUi?.Setting?.Data?.MoDataList\r\n : ulvAdapter?.Setting?.Data?.Paging\r\n : UlvUi?.Setting?.Data?.Paging,\r\n deviceSize: deviceSize$ | async,\r\n disableOrReadonly: disableOrReadonly$ | async,\r\n disable: disable$ | async,\r\n readonly: readonly$ | async\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n<ng-template\r\n #inputTemplate\r\n let-deviceSize=\"deviceSize\"\r\n let-disableOrReadonly=\"disableOrReadonly\"\r\n let-disable=\"disable\"\r\n let-readonly=\"readonly\"\r\n>\r\n <div style=\"display: flex\" class=\"fd-input-group\">\r\n <input\r\n fd-input-group-input\r\n fd-form-control\r\n #inputRef\r\n [placeholder]=\"Setting.NullText || ''\"\r\n [attr.readonly]=\"true\"\r\n [attr.disabled]=\"disable === true ? true : null\"\r\n [value]=\"!value ? '' : (value | bbbTranslate)\"\r\n [id]=\"id\"\r\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\r\n (input)=\"onValueChange($event)\"\r\n />\r\n <span fd-input-group-addon *ngIf=\"hasValue && disableOrReadonly !== true\" class=\"fd-input-group__addon--button\">\r\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"onClear()\"></button>\r\n </span>\r\n <span\r\n fd-input-group-addon\r\n *ngIf=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\r\n class=\"fd-input-group__addon--button\"\r\n >\r\n <button fd-button fdType=\"transparent\" glyph=\"add\" (click)=\"onNew()\"></button>\r\n </span>\r\n <span\r\n fd-input-group-addon\r\n *ngIf=\"hasValue && disableOrReadonly !== true && Setting.ViewRelatedFormType === 'Show'\"\r\n class=\"fd-input-group__addon--button\"\r\n >\r\n <button fd-button fdType=\"transparent\" glyph=\"edit\" (click)=\"onEdit()\"></button>\r\n </span>\r\n <span\r\n fd-input-group-addon\r\n *ngIf=\"hasValue && disableOrReadonly !== true && Setting.ViewRelatedFormType === 'ShowReadOnly'\"\r\n class=\"fd-input-group__addon--button\"\r\n >\r\n <button fd-button fdType=\"transparent\" glyph=\"show\" (click)=\"onEdit()\"></button>\r\n </span>\r\n <span\r\n fd-input-group-addon\r\n *ngIf=\"context._showPopup && !value && disableOrReadonly !== true\"\r\n class=\"fd-input-group__addon--button\"\r\n >\r\n <button fd-button fdType=\"transparent\" glyph=\"search\" (click)=\"onSearch()\"></button>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template\r\n #comboTemplate\r\n let-moDataList\r\n let-deviceSize=\"deviceSize\"\r\n let-disableOrReadonly=\"disableOrReadonly\"\r\n let-disable=\"disable\"\r\n let-readonly=\"readonly\"\r\n>\r\n <div class=\"simple-combo-wrapper\">\r\n <fd-combobox\r\n #fdCombobox\r\n class=\"combo-mo-ulv\"\r\n [comboboxId]=\"comboboxId\"\r\n [class.has-report]=\"hasReport\"\r\n [class.has-Value]=\"hasValue\"\r\n [placeholder]=\"'Select' | bbbTranslate\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"mobileConfig\"\r\n [fillOnSelect]=\"true\"\r\n [readOnly]=\"readonly === true ? true : false\"\r\n [disabled]=\"disable === true ? true : false\"\r\n [dropdownValues]=\"moDataList\"\r\n [filterFn]=\"customFilter\"\r\n [openOnKeyboardEvent]=\"true\"\r\n [byline]=\"allColumns.length > 0\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [displayFn]=\"displayFunc\"\r\n [showDropdownButton]=\"disableOrReadonly !== true\"\r\n (itemClicked)=\"onItemClick($event, moDataList)\"\r\n (inputTextChange)=\"onInputChange($event)\"\r\n (openChange)=\"onOpenChange(fdCombobox, $event)\"\r\n >\r\n </fd-combobox>\r\n <button\r\n fd-button\r\n *ngIf=\"hasValue && disableOrReadonly !== true\"\r\n glyph=\"decline\"\r\n fdType=\"transparent\"\r\n class=\"combo-popup-btn\"\r\n (click)=\"onClear()\"\r\n ></button>\r\n\r\n <button\r\n fd-button\r\n *ngIf=\"hasReport && disableOrReadonly !== true\"\r\n glyph=\"search\"\r\n fdType=\"transparent\"\r\n class=\"combo-popup-btn\"\r\n (click)=\"onSearch()\"\r\n ></button>\r\n </div>\r\n <ng-template #itemTemplate let-item>\r\n <div fd-list-content *ngIf=\"item.$isLoading; else itemWrapper\" style=\"width: 100%; height: 20px\">\r\n <bsu-mask [size]=\"'s'\" [top]=\"'10px'\"></bsu-mask>\r\n </div>\r\n <ng-template #itemWrapper>\r\n <ng-container *ngIf=\"item.$LoadMore; else showItem\">\r\n <!-- <bsu-ulv-paging\r\n (click)=\"onPagingClick($event)\"\r\n (pageChange)=\"onPageChange($event)\"\r\n [pagingSetting]=\"ulvAdapter.Setting.Data.Paging\"\r\n >\r\n </bsu-ulv-paging> -->\r\n <button\r\n style=\"width: 100%\"\r\n *ngIf=\"ulvAdapter.Setting.Data.Paging.Page + 1 < ulvAdapter.Setting.Data.Paging.TotalPages\"\r\n fd-button\r\n (click)=\"onPageChange2(ulvAdapter.Setting.Data.Paging, $event)\"\r\n [label]=\"'More' | bbbTranslate\"\r\n ></button>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #showItem>\r\n <ng-container *ngIf=\"allColumns?.length && !item.isEmpty; else captionTemplate\">\r\n <div *ngIf=\"!item.$__IsLast\" class=\"moinfoulv devider\"></div>\r\n <span fd-list-thumbnail *ngIf=\"item.$Icon\"><fd-icon [glyph]=\"item.$Icon\"></fd-icon></span>\r\n <div fd-list-content class=\"moinfoulv hasColumns\">\r\n <div fd-list-title class=\"title\">{{ allColumns[0].Alias | rval: item:allColumns:true }}</div>\r\n <div fd-list-byline class=\"byline\" *ngIf=\"allColumns[1]\">\r\n {{ allColumns[1].Alias | rval: item:allColumns:true }}\r\n </div>\r\n <div style=\"display: flex; column-gap: 8px; flex-wrap: wrap\">\r\n <ng-container *ngFor=\"let column of allColumns; let index = index\">\r\n <ng-container *ngIf=\"index > 1\">\r\n <ng-container *ngIf=\"column.Alias | rval: item:allColumns:true as value\">\r\n <span> {{ column.Alias }}:{{ value }}</span>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #captionTemplate>\r\n <span fd-list-title [class.list-empty-item]=\"item.isEmpty\">{{\r\n item.isEmpty ? ('NoData' | bbbTranslate) : (item.$MoCaption || item.$Caption | bbbTranslate)\r\n }}</span>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n</ng-template>\r\n", styles: [":host{display:block}.combo-mo-ulv{width:100%}.combo-mo-ulv ::ng-deep .fd-popover-custom{width:100%}.fd-input-group>.fd-input-group__input{background-color:transparent!important}.simple-combo-wrapper{display:flex;align-items:center;position:relative}.simple-combo-wrapper ::ng-deep .combo-mo-ulv[class*=has-] .fd-input-group{border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset}.simple-combo-wrapper ::ng-deep .combo-popup-btn{background-color:var(--sapField_Background);border-top:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-bottom:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);box-sizing:content-box;border-radius:0}.simple-combo-wrapper ::ng-deep .combo-popup-btn:first-child{margin-right:-1px}.simple-combo-wrapper ::ng-deep .combo-popup-btn:last-child{border-left:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor)}.combo-wrapper{display:flex;align-items:center;border:var(--sapField_BorderWidth, .0625rem) solid var(--sapField_BorderColor, #89919a);border-radius:var(--sapField_BorderCornerRadius, .125rem)}::ng-deep .combo-popup-btn{border:none;background:transparent}::ng-deep .combo-popup-btn button{border-color:transparent!important;border:none}::ng-deep .fd-combobox-count-list-results{display:none}\n"] }]
366
+ args: [{ selector: 'bsu-ui-mo-info-ulv-combo', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngTemplateOutlet=\"\n context._showPopup || context._showDropDown === false ? inputTemplate : comboTemplate;\n context: {\n $implicit:\n (loading$ | async) === true\n | moInfoUlvMoList\n : isDataLoadedFirstTime\n : ulvAdapter?.Setting?.Data?.MoDataList\n : UlvUi?.Setting?.Data?.MoDataList\n : ulvAdapter?.Setting?.Data?.Paging\n : UlvUi?.Setting?.Data?.Paging,\n deviceSize: deviceSize$ | async,\n disableOrReadonly: disableOrReadonly$ | async,\n disable: disable$ | async,\n readonly: readonly$ | async\n }\n \"\n>\n</ng-container>\n<ng-template\n #inputTemplate\n let-deviceSize=\"deviceSize\"\n let-disableOrReadonly=\"disableOrReadonly\"\n let-disable=\"disable\"\n let-readonly=\"readonly\"\n>\n <div style=\"display: flex\" class=\"fd-input-group\">\n <input\n fd-input-group-input\n fd-form-control\n #inputRef\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"true\"\n [attr.disabled]=\"disable === true ? true : null\"\n [value]=\"!value ? '' : (value | bbbTranslate)\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n (input)=\"onValueChange($event)\"\n />\n <ng-container *ngTemplateOutlet=\"btnsTpl; context: { disableOrReadonly: disableOrReadonly }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #btnsTpl let-disableOrReadonly=\"disableOrReadonly\">\n <span\n class=\"fd-input-group__addon--button combo-popup-btn\"\n fd-input-group-addon\n *ngIf=\"hasValue && disableOrReadonly !== true\"\n >\n <button fd-button fdType=\"transparent\" glyph=\"decline\" (click)=\"onClear()\"></button>\n </span>\n <span\n fd-input-group-addon\n *ngIf=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\n class=\"fd-input-group__addon--button combo-popup-btn\"\n >\n <button fd-button fdType=\"transparent\" glyph=\"add\" (click)=\"onNew()\"></button>\n </span>\n <span\n fd-input-group-addon\n *ngIf=\"hasValue && disableOrReadonly !== true && Setting.ViewRelatedFormType !== 'Hide'\"\n class=\"fd-input-group__addon--button combo-popup-btn\"\n >\n <button fd-button fdType=\"transparent\" glyph=\"edit\" (click)=\"onEdit()\"></button>\n </span>\n <span\n fd-input-group-addon\n *ngIf=\"context._showPopup && !value && disableOrReadonly !== true\"\n class=\"fd-input-group__addon--button combo-popup-btn\"\n >\n <button fd-button fdType=\"transparent\" glyph=\"search\" (click)=\"onSearch()\"></button>\n </span>\n</ng-template>\n<ng-template\n #comboTemplate\n let-moDataList\n let-deviceSize=\"deviceSize\"\n let-disableOrReadonly=\"disableOrReadonly\"\n let-disable=\"disable\"\n let-readonly=\"readonly\"\n>\n <div class=\"simple-combo-wrapper\">\n <fd-combobox\n #fdCombobox\n class=\"combo-mo-ulv\"\n [class.canAdd]=\"!hasValue && disableOrReadonly !== true && Setting.ShowNewButton\"\n [class.canEdit]=\"hasValue && disableOrReadonly !== true\"\n [comboboxId]=\"comboboxId\"\n [class.has-report]=\"hasReport\"\n [class.has-Value]=\"hasValue\"\n [placeholder]=\"'Select' | bbbTranslate\"\n [mobile]=\"deviceSize === 's'\"\n [mobileConfig]=\"mobileConfig\"\n [fillOnSelect]=\"true\"\n [readOnly]=\"readonly === true ? true : false\"\n [disabled]=\"disable === true ? true : false\"\n [dropdownValues]=\"moDataList\"\n [filterFn]=\"customFilter\"\n [openOnKeyboardEvent]=\"true\"\n [byline]=\"allColumns.length > 0\"\n [itemTemplate]=\"itemTemplate\"\n [displayFn]=\"displayFunc\"\n [showDropdownButton]=\"disableOrReadonly !== true\"\n (itemClicked)=\"onItemClick($event, moDataList)\"\n (inputTextChange)=\"onInputChange($event)\"\n (openChange)=\"onOpenChange(fdCombobox, $event)\"\n >\n </fd-combobox>\n <ng-container *ngTemplateOutlet=\"btnsTpl\"></ng-container>\n </div>\n <ng-template #itemTemplate let-item>\n <div fd-list-content *ngIf=\"item.$isLoading; else itemWrapper\" style=\"width: 100%; height: 20px\">\n <bsu-mask [size]=\"'s'\" [top]=\"'10px'\"></bsu-mask>\n </div>\n <ng-template #itemWrapper>\n <ng-container *ngIf=\"item.$LoadMore; else showItem\">\n <!-- <bsu-ulv-paging\n (click)=\"onPagingClick($event)\"\n (pageChange)=\"onPageChange($event)\"\n [pagingSetting]=\"ulvAdapter.Setting.Data.Paging\"\n >\n </bsu-ulv-paging> -->\n <button\n style=\"width: 100%\"\n *ngIf=\"ulvAdapter.Setting.Data.Paging.Page + 1 < ulvAdapter.Setting.Data.Paging.TotalPages\"\n fd-button\n (click)=\"onPageChange2(ulvAdapter.Setting.Data.Paging, $event)\"\n [label]=\"'More' | bbbTranslate\"\n ></button>\n </ng-container>\n </ng-template>\n <ng-template #showItem>\n <ng-container *ngIf=\"allColumns?.length && !item.isEmpty; else captionTemplate\">\n <div *ngIf=\"!item.$__IsLast\" class=\"moinfoulv devider\"></div>\n <span fd-list-thumbnail *ngIf=\"item.$Icon\"><fd-icon [glyph]=\"item.$Icon\"></fd-icon></span>\n <div fd-list-content class=\"moinfoulv hasColumns\">\n <div fd-list-title class=\"title\">{{ allColumns[0].Alias | rval: item:allColumns:true }}</div>\n <div fd-list-byline class=\"byline\" *ngIf=\"allColumns[1]\">\n {{ allColumns[1].Alias | rval: item:allColumns:true }}\n </div>\n <div style=\"display: flex; column-gap: 8px; flex-wrap: wrap\">\n <ng-container *ngFor=\"let column of allColumns; let index = index\">\n <ng-container *ngIf=\"index > 1\">\n <ng-container *ngIf=\"column.Alias | rval: item:allColumns:true as value\">\n <span> {{ column.Alias }}:{{ value }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n <ng-template #captionTemplate>\n <span fd-list-title [class.list-empty-item]=\"item.isEmpty\"\n >{{ item.isEmpty ? ('NoData' | bbbTranslate) : (item.$MoCaption || item.$Caption | bbbTranslate) }}\n </span>\n <span\n fd-list-secondary\n *ngIf=\"!item.isEmpty && !disableOrReadonly && Setting.ViewRelatedFormType !== 'Hide'\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n bodyClick\n (click)=\"$event.stopPropagation(); _handleItemSelect(moDataList, item); onEdit()\"\n title=\"Edit\"\n ></button>\n </span>\n </ng-template>\n </ng-template>\n </ng-template>\n</ng-template>\n", styles: [":host{display:block}.combo-mo-ulv{width:100%}.combo-mo-ulv ::ng-deep .fd-popover-custom{width:100%}.fd-input-group>.fd-input-group__input{background-color:transparent!important}.simple-combo-wrapper{display:flex;align-items:center;position:relative}.simple-combo-wrapper ::ng-deep .combo-mo-ulv[class*=has-] .fd-input-group,.simple-combo-wrapper ::ng-deep .combo-mo-ulv.canAdd .fd-input-group,.simple-combo-wrapper ::ng-deep .combo-mo-ulv.canEdit .fd-input-group{border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset}.simple-combo-wrapper ::ng-deep .combo-popup-btn{background-color:var(--sapField_Background)!important;border-top:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-bottom:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);box-sizing:content-box;border-radius:0}.simple-combo-wrapper ::ng-deep .combo-popup-btn:first-child{margin-right:-1px}.simple-combo-wrapper ::ng-deep .combo-popup-btn:last-child{border-left:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor)}.combo-wrapper{display:flex;align-items:center;border:var(--sapField_BorderWidth, .0625rem) solid var(--sapField_BorderColor, #89919a);border-radius:var(--sapField_BorderCornerRadius, .125rem)}::ng-deep .combo-popup-btn{border:none;background:transparent}::ng-deep .combo-popup-btn button{border-color:transparent!important;border:none}::ng-deep .fd-combobox-count-list-results{display:none}\n"] }]
365
367
  }], propDecorators: { ulvAdapter: [{
366
368
  type: Input
367
369
  }], Control: [{
@@ -404,4 +406,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
404
406
  }], getRawValue: [{
405
407
  type: Input
406
408
  }] } });
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFHMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQTJCLE1BQU0sdUJBQXVCLENBQUM7QUFFbkYsT0FBTyxFQUNILGtCQUFrQixFQUNsQixRQUFRLEVBTVIsa0JBQWtCLEVBR2xCLFdBQVcsRUFFZCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7OztBQVE5QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsa0JBQWtCO0lBTmpFOztRQXdCSSxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFhcEMsZUFBVSxHQUF1QixFQUFFLENBQUM7UUFHNUIsa0NBQTZCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwRCx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3pDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQXdI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STtzQkFESCxLQUFLO2dCQVVOLE1BQU07c0JBREwsS0FBSztnQkFNTixXQUFXO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIE9uSW5pdCxcbiAgICBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFwLCB0YWtlVW50aWwsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbWJvYm94Q29tcG9uZW50LCBDb21ib2JveEl0ZW0sIERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgRmllbGRCYXNlQ29tcG9uZW50LFxuICAgIEJhcnNhQXBpLFxuICAgIFJlcG9ydEV4dHJhSW5mbyxcbiAgICBNb0ZvclJlcG9ydE1vZGVsLFxuICAgIENsYXNzTmFtZXNNb2RlbCxcbiAgICBWaWV3VHlwZXMsXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBQcmV2ZW50RGVmYXVsRXZlbnQsXG4gICAgUGFnaW5nU2V0dGluZyxcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxuICAgIGdldFVuaXF1ZUlkLFxuICAgIEdyaWRWaWV3XG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtdWktbW8taW5mby11bHYtY29tYm8nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1tby1pbmZvLXVsdi1jb21iby5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBVaU1vSW5mb1VsdkNvbWJvQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKSB1bHZBZGFwdGVyOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgU2V0dGluZzoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgVmlldzogVmlld1R5cGVzO1xuICAgICAgICAgICAgQ2xhc3NOYW1lczogQ2xhc3NOYW1lc01vZGVsO1xuICAgICAgICAgICAgRXh0cmE6IFJlcG9ydEV4dHJhSW5mbztcbiAgICAgICAgICAgIERhdGE6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBASW5wdXQoKSBDb250cm9sOiBhbnk7XG4gICAgQElucHV0KCkgVWx2VWk6IGFueTtcbiAgICBASW5wdXQoKSBVbHZNYWluQ3RybHI6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoQ29tYm9ib3hDb21wb25lbnQpIGZkQ29tYm9SZWY6IENvbWJvYm94Q29tcG9uZW50O1xuXG4gICAgaXNFeHBhbmQ6IGJvb2xlYW47XG4gICAgc21hcnRDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgdGlja1JlZjogYW55O1xuICAgIGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudDtcbiAgICBpc0ZpcnN0TG9hZDogYm9vbGVhbjtcbiAgICBwb3BvdmVyRWxlbWVudDogYW55O1xuICAgIHJhd1ZhbHVlOiBzdHJpbmc7XG4gICAgZm9ybVNlbGVjdGlvbkRpYWxvZzogRGlhbG9nUmVmO1xuICAgIGlzT3BlblNlbGVjdGlvbkRpYWxvZzogYm9vbGVhbjtcbiAgICBoYXNSZXBvcnQ6IGFueTtcbiAgICBvcmlnaW5hbFZhbHVlOiBhbnk7XG4gICAgaXNEYXRhTG9hZGVkRmlyc3RUaW1lOiBib29sZWFuO1xuICAgIHZhbHVlVGV4dDogc3RyaW5nO1xuICAgIGFsbENvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSA9IFtdO1xuICAgIGhhc1ZhbHVlOiBib29sZWFuO1xuICAgIGNvbWJvYm94SWQ6IHN0cmluZztcbiAgICBwcml2YXRlIF9vcGVuUG9wdXBGb3JtU2VsZWN0aW9uU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9jbG9zZURpYWxvZ1NvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfbG9hZGluZ1NvdXJjZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlEb3duKGUpOiB2b2lkIHtcbiAgICAgICAgZSA9IG5ldyBCYXJzYUFwaS5FeHQuRXZlbnRPYmplY3RJbXBsKGUpO1xuICAgICAgICBjb25zdCBrID0gZS5nZXRLZXkoKTtcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gZS5FTlRFUiB8fCBrID09PSBCYXJzYUFwaS5FeHQuRXZlbnRPYmplY3QuVEFCKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdrZXlkb3duJywgdGhpcy5jb250ZXh0LCBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFsdCcsIFsnJGV2ZW50J10pXG4gICAgb25BbHQoZSk6IHZvaWQge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbWJvYm94SWQgPSBnZXRVbmlxdWVJZCgzKTtcbiAgICAgICAgdGhpcy5fY2hlY2tIYXNWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMuX2xvYWRpbmdTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuICAgICAgICB0aGlzLmxvYWRpbmckLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZEZpcnN0VGltZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMudWx2QWRhcHRlcj8uU2V0dGluZz8uRGF0YT8uTW9EYXRhTGlzdCA9PT0gJ29iamVjdCcgfHxcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5VbHZVaT8uU2V0dGluZz8uRGF0YT8uTW9EYXRhTGlzdCA9PT0gJ29iamVjdCc7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNtYXJ0Q2hhbmdlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdGhpcy5fZmlsdGVyU21hcnRDaGFuZ2UodmFsdWUpKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHRhcCgodmFsdWUpID0+ICh0aGlzLnJhd1ZhbHVlID0gdmFsdWUpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdTbWFydENoYW5nZScsIHRoaXMuY29udGV4dCwgdmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX29wZW5Qb3B1cEZvcm1TZWxlY3Rpb25Tb3VyY2VcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Nsb3NlRGlhbG9nU291cmNlKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuVWx2VWkgJiYgIXRoaXMuaXNPcGVuU2VsZWN0aW9uRGlhbG9nICYmIHRoaXMuY29udGV4dC5fc2hvd1BvcHVwKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fb3BlblBvcHVwRm9ybVNlbGVjdGlvbigpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm9yaWdpbmFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLmhhc1JlcG9ydCA9IHRoaXMuU2V0dGluZy5SZWxhdGlvblZpZXdUeXBlID09PSAnUmVwb3J0VmlldycgfHwgdGhpcy5TZXR0aW5nLlJlcG9ydE5hbWUgPT09ICdIaWVyYXJjaGljYWwnO1xuICAgICAgICB0aGlzLkNvbnRyb2wgPSB0aGlzO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlVGV4dCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIC8vIHRoaXMuX3NldENvbWJvVGV4dCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgb25QYWdpbmdDbGljayhlKTogdm9pZCB7XG4gICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICB9XG4gICAgb25QYWdlQ2hhbmdlKGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMudWx2QWRhcHRlci5EYXRhQ3RybHIuTW92ZVRvUGFnZShlLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25JdGVtQ2xpY2soZTogQ29tYm9ib3hJdGVtLCBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgbW9EYXRhTGlzdC5mb3JFYWNoKChjKSA9PiAoYy4kSXNDaGVja2VkID0gZmFsc2UpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRNbyA9IGUuaXRlbTtcbiAgICAgICAgdGhpcy5fZmlyZVZhbHVlQ2hhbmdlKHNlbGVjdGVkTW8pO1xuICAgIH1cbiAgICBvblBhZ2VDaGFuZ2UyKHBhZ2VTZXR0aW5nOiBQYWdpbmdTZXR0aW5nLCBlKTogdm9pZCB7XG4gICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ1NvdXJjZS5uZXh0KHRydWUpO1xuICAgICAgICBjb25zdCB1bHZBZGFwdGVyID0gdGhpcy51bHZBZGFwdGVyO1xuICAgICAgICBjb25zdCB0ZW1wMSA9IHVsdkFkYXB0ZXIuU2V0dGluZy5EYXRhLk1vRGF0YUxpc3Q7XG4gICAgICAgIHRlbXAxLnNwbGljZSh0ZW1wMS5sZW5ndGggLSAxLCAxKTtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdE9sZCA9IFsuLi50ZW1wMV07XG4gICAgICAgIG1vRGF0YUxpc3RPbGQuZm9yRWFjaCgoYykgPT4gKGMuJF9fSXNMYXN0ID0gZmFsc2UpKTtcbiAgICAgICAgdGhpcy51bHZBZGFwdGVyLkRhdGFDdHJsci5Nb3ZlVG9QYWdlKHBhZ2VTZXR0aW5nLlBhZ2UgKyAxLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSB1bHZBZGFwdGVyLlNldHRpbmcuRGF0YS5Nb0RhdGFMaXN0O1xuICAgICAgICAgICAgbW9EYXRhTGlzdC5zcGxpY2UoMCwgMCwgLi4ubW9EYXRhTGlzdE9sZCk7XG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25PcGVuQ2hhbmdlKGZkQ29tYm9ib3gsIGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgICAgICAgLy8gZmRDb21ib2JveC5vcGVuID0gZmFsc2U7IC8vIGl0IGNsb3NlIHBvcHVwIHdoZW4gY2xpY2sgb24gZHJvcGRvd24gYnV0dG9uIGluIGNvbXBvbmVudFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRUZXh0ID0gdGhpcy5mZENvbWJvUmVmPy5pbnB1dFRleHRWYWx1ZTtcbiAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSAmJiBpbnB1dFRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yYWlzZVNtYXJ0Q2hhbmdlKGlucHV0VGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25JbnB1dENoYW5nZShlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JhaXNlU21hcnRDaGFuZ2UoZSk7XG4gICAgfVxuICAgIG9uSW5wdXRDaGFuZ2UyKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmFpc2VTbWFydENoYW5nZShlLnRhcmdldC52YWx1ZSk7XG4gICAgfVxuICAgIG9uVmFsdWVDaGFuZ2UoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yYWlzZVZhbHVlQ2hhbmdlZChlLnRhcmdldC52YWx1ZSk7XG4gICAgfVxuICAgIG9uTmV3KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90cmlnZ2VyQ2xpY2soJ05ldycpO1xuICAgIH1cbiAgICBvbkNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90cmlnZ2VyQ2xpY2soJ0RlbGV0ZScpO1xuICAgIH1cbiAgICBvbkVkaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJDbGljaygnRWRpdCcpO1xuICAgIH1cbiAgICBvblNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdQb3B1cCcpO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIGN1c3RvbUZpbHRlcihjb250ZW50OiBhbnlbXSwgc2VhcmNoVGVybTogc3RyaW5nKTogYW55W10ge1xuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICBkaXNwbGF5RnVuYyA9IChvYmo6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgaWYgKG9iaikge1xuICAgICAgICAgICAgY29uc3QgY29sTmFtZSA9IHRoaXMuZ2V0Rmlyc3RDb2x1bW5OYW1lKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRNb1ZhbHVlQ2FwdGlvbihvYmosIGNvbE5hbWUsIG9iai4kQ2FwdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH07XG4gICAgZ2V0TW9WYWx1ZUNhcHRpb24odmFsdWVNbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwsIGNvbE5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodmFsdWVNbyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY2FwdGlvblZhbHVlTW87XG4gICAgICAgIGNvbnN0IG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgICAgICB0aGlzLnVsdkFkYXB0ZXIsXG4gICAgICAgICAgICAnU2V0dGluZy5EYXRhLk1vRGF0YUxpc3QnLFxuICAgICAgICAgICAgW11cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZm91bmRlZE1vID0gbW9saXN0LmZpbmQoKGMpID0+IGMuSWQgPT09IHZhbHVlTW8uSWQpO1xuICAgICAgICBpZiAoY29sTmFtZSAmJiBmb3VuZGVkTW8gJiYgZm91bmRlZE1vW2NvbE5hbWVdKSB7XG4gICAgICAgICAgICBpZiAoZm91bmRlZE1vW2NvbE5hbWUgKyAnJENhcHRpb24nXSkge1xuICAgICAgICAgICAgICAgIGNhcHRpb25WYWx1ZU1vID0gZm91bmRlZE1vW2NvbE5hbWUgKyAnJENhcHRpb24nXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm91bmRlZE1vW2NvbE5hbWVdLiRDYXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FwdGlvblZhbHVlTW8gPSBmb3VuZGVkTW9bY29sTmFtZV0uJENhcHRpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhcHRpb25WYWx1ZU1vID0gZm91bmRlZE1vW2NvbE5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9iYmJQaXBlLnRyYW5zZm9ybShjYXB0aW9uVmFsdWVNbyB8fCBkZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgICBnZXRGaXJzdENvbHVtbk5hbWUoKSB7XG4gICAgICAgIGxldCBjb2xOYW1lID0gJyRDYXB0aW9uJztcbiAgICAgICAgaWYgKHRoaXMuVWx2TWFpbkN0cmxyICYmIHRoaXMuVWx2TWFpbkN0cmxyPy5EZD8uU2V0dGluZz8uVmlldykge1xuICAgICAgICAgICAgaWYgKHRoaXMuVWx2TWFpbkN0cmxyLkRkLlNldHRpbmcuVmlldy5Db2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RDb2wgPSB0aGlzLlVsdk1haW5DdHJsci5EZC5TZXR0aW5nLlZpZXcuQ29sdW1ucy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoYykgPT4gIWMuTmFtZS5zdGFydHNXaXRoKCckJykgJiYgYy5OYW1lICE9PSAnSWQnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3RDb2w/Lk5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sTmFtZSA9IGZpcnN0Q29sLk5hbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xOYW1lO1xuICAgIH1cblxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgQElucHV0KCkgSXNFeHBhbmRlZCA9ICh0eXBlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlID09PSAnRGQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmRDb21ib1JlZj8ucG9wb3ZlckNvbXBvbmVudD8uaXNPcGVuO1xuICAgIH07XG4gICAgLy8gcmV0dXJuIHRoaXMuY29tYm9SZWYubmF0aXZlRWxlbWVudC5yZXNwb25zaXZlUG9wb3Zlci5pc09wZW4oKTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBJbnB1dCgpIENvbGxhcHNlID0gKHR5cGUpID0+IHt9O1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgQElucHV0KCkgRXhwYW5kID0gKHR5cGUpID0+IHtcbiAgICAgICAgdGhpcy51bHZBZGFwdGVyID0gdGhpcy5VbHZNYWluQ3RybHJbdHlwZV07XG4gICAgfTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBJbnB1dCgpIG9uID0gKCkgPT4ge307XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBGb2N1cyA9ICgpID0+IHt9O1xuICAgIEBJbnB1dCgpXG4gICAgU2V0VWx2QWRhcHRlciA9ICh0eXBlLCB1bHZBZGFwdGVyKSA9PiB7XG4gICAgICAgIHRoaXMudWx2QWRhcHRlciA9IHVsdkFkYXB0ZXI7XG4gICAgICAgIHRoaXMuX3NldENvbHVtbnMoKTtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICB9O1xuICAgIEBJbnB1dCgpXG4gICAgSXNVaUNyZWF0ZWQgPSAodHlwZSkgPT4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICB9O1xuICAgIEBJbnB1dCgpXG4gICAgTWFzayA9ICh0eXBlKSA9PiB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmdTb3VyY2UubmV4dCh0cnVlKTtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICB9O1xuICAgIEBJbnB1dCgpXG4gICAgaGlkZSA9ICh0eXBlKSA9PiB7XG4gICAgICAgIC8vIHRoaXMudHJpZ2dlckNsaWNrKCdOb3JtYWwnKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybVNlbGVjdGlvbkRpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5mb3JtU2VsZWN0aW9uRGlhbG9nLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICB9O1xuICAgIEBJbnB1dCgpXG4gICAgc2hvdyA9ICh0eXBlKSA9PiB7XG4gICAgICAgIC8vIHRoaXMudHJpZ2dlckNsaWNrKCdOb3JtYWwnKTtcblxuICAgICAgICB0aGlzLl9vcGVuUG9wdXBGb3JtU2VsZWN0aW9uU291cmNlLm5leHQoKTsgLy8gcmFiZXRlIHRha2kgZ2VuZXJhbCBpbmZvIC5wb3B1cCBiYXogbWlzaG9kIGtlIGJhaWFkIGRyb3Bkb3duIGJhc2hlLlxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgfTtcbiAgICBASW5wdXQoKVxuICAgIFVubWFzayA9ICh0eXBlKSA9PiB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmdTb3VyY2UubmV4dChmYWxzZSk7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgfTtcbiAgICBASW5wdXQoKVxuICAgIGdldFJhd1ZhbHVlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdWYWx1ZTtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICB9O1xuICAgIHByb3RlY3RlZCBfc2V0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRWYWx1ZVRleHQodmFsdWUpO1xuICAgICAgICB0aGlzLl9jaGVja0hhc1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgc3VwZXIuX3NldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgLy8gdGhpcy5fc2V0Q29tYm9UZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jaGVja0hhc1ZhbHVlKHZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzVmFsdWUgPSB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldFZhbHVlVGV4dCh2YWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlVGV4dCA9IHRoaXMuX2dldFZhbHVlVGV4dCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX3NldENvbWJvVGV4dCh0aGlzLnZhbHVlVGV4dCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZ2V0VmFsdWVUZXh0KHZhbHVlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLiRDYXB0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICYmIHZhbHVlICYmIHRoaXMuVWx2TWFpbkN0cmxyICYmIHRoaXMuVWx2TWFpbkN0cmxyLkRkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5VbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3O1xuICAgICAgICAgICAgbGV0IGNvbE5hbWUgPSAnJENhcHRpb24nO1xuICAgICAgICAgICAgaWYgKHZpZXcuQ29sdW1ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Q29sID0gdmlldy5Db2x1bW5zLmZpbmQoKGMpID0+ICFjLk5hbWUuc3RhcnRzV2l0aCgnJCcpICYmIGMuTmFtZSAhPT0gJ0lkJyk7XG4gICAgICAgICAgICAgICAgY29sTmFtZSA9IGZpcnN0Q29sPy5OYW1lID8gZmlyc3RDb2wuTmFtZSA6ICckQ2FwdGlvbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0Q29tYm9UZXh0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgLy8gdGhpcy5fdmFsdWVNbyA9IG51bGw7XG4gICAgICAgIC8vdGhpcy5mZENvbWJvUmVmLmlucHV0VGV4dFZhbHVlID0gJyc7XG4gICAgICAgIC8vdGhpcy5mZENvbWJvUmVmLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgY29uc3QgZmRDb21ib1JlZiA9IHRoaXMuZmRDb21ib1JlZjtcbiAgICAgICAgY29uc3QgaW5wdXRUZXh0ID0gZmRDb21ib1JlZj8uaW5wdXRUZXh0VmFsdWU7XG4gICAgICAgIGlmIChmZENvbWJvUmVmICYmIHZhbHVlICE9IGlucHV0VGV4dCkge1xuICAgICAgICAgICAgLy8gY29uc3QgVWx2TWFpbkN0cmxyID0gdGhpcy5VbHZNYWluQ3RybHI7XG4gICAgICAgICAgICAvLyBpZiAoVWx2TWFpbkN0cmxyICYmIFVsdk1haW5DdHJsci5EZCkge1xuICAgICAgICAgICAgLy8gICAgIGNvbnN0IHZpZXcgPSBVbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3O1xuICAgICAgICAgICAgLy8gICAgIGxldCBjb2xOYW1lID0gJyRDYXB0aW9uJztcbiAgICAgICAgICAgIC8vICAgICBpZiAodmlldy5Db2x1bW5zKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IGZpcnN0Q29sID0gdmlldy5Db2x1bW5zLmZpbmQoKGMpID0+ICFjLk5hbWUuc3RhcnRzV2l0aCgnJCcpICYmIGMuTmFtZSAhPT0gJ0lkJyk7XG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbE5hbWUgPSBmaXJzdENvbD8uTmFtZSA/IGZpcnN0Q29sLk5hbWUgOiAnJENhcHRpb24nO1xuICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgIC8vICAgICB2YWx1ZSA9IHRoaXMuZ2V0TW9WYWx1ZUNhcHRpb24odGhpcy5fdmFsdWVNbywgY29sTmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgZmRDb21ib1JlZi5pbnB1dFRleHQgPSB2YWx1ZSA/IHRoaXMuX2JiYlBpcGUudHJhbnNmb3JtKHZhbHVlKSArICcnIDogJyc7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfb3BlblBvcHVwRm9ybVNlbGVjdGlvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgdGhpcy5pc09wZW5TZWxlY3Rpb25EaWFsb2cgPSB0cnVlO1xuICAgICAgICB0aGlzLlVsdlVpLnZpZXdlckNvbnRyb2wuU2hvd09rQ2FuY2VsQnV0dG9ucyA9IHRydWU7IC8vIHRoaXMgaXMgdXNlZnVsIHRvIHVsdiBtYW5hZ2UgdG9vbGJhciBidXR0b25zLmZvciBleGFtcGxlIG1vdmUgaW4gdHJlZSBkb2VzIG5vdCBzaG93blxuICAgICAgICB0aGlzLmZvcm1TZWxlY3Rpb25EaWFsb2cgPSBCYXJzYUFwaS5Cdy5VbHZGb3JtTXVsdGlTZWxlY3QuU2hvdyh0aGlzLmNvbnRleHQsIHtcbiAgICAgICAgICAgIHVsdjE6IHRoaXMuVWx2VWksXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0oJ1NlbGVjdCcpLFxuICAgICAgICAgICAgSXNMb2FkZWQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5TZWxlY3Rpb25EaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclNtYXJ0Q2hhbmdlKHZhbHVlKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjYW5SZXF1ZXN0ID0gKHRoaXMudWx2QWRhcHRlciB8fCB0aGlzLlVsdlVpKSAmJiB2YWx1ZSAhPT0gdGhpcy52YWx1ZTtcbiAgICAgICAgLy8gaWYgKGNhblJlcXVlc3QpIHtcbiAgICAgICAgLy8gICAgIGNvbnN0IG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgIC8vICAgICAgICAgdGhpcy51bHZBZGFwdGVyLFxuICAgICAgICAvLyAgICAgICAgICdTZXR0aW5nLkRhdGEuTW9EYXRhTGlzdCcsXG4gICAgICAgIC8vICAgICAgICAgW11cbiAgICAgICAgLy8gICAgICk7XG4gICAgICAgIC8vICAgICBpZiAoIW1vbGlzdCkge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgY29uc3QgY29sTmFtZSA9IHRoaXMuZ2V0Rmlyc3RDb2x1bW5OYW1lKCk7XG5cbiAgICAgICAgLy8gICAgIGNvbnN0IGZpbmRNbyA9IG1vbGlzdC5maW5kKChtbykgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNhcHRpb24gPSB0aGlzLmdldE1vVmFsdWVDYXB0aW9uKG1vLCBjb2xOYW1lLCBtby4kQ2FwdGlvbik7XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIGNhcHRpb24gPT09IHZhbHVlO1xuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vICAgICBpZiAoZmluZE1vKSB7XG4gICAgICAgIC8vICAgICAgICAgY2FuUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICAvLyAgICAgICAgIC8vdGhpcy5fZmlyZVZhbHVlQ2hhbmdlKGZpbmRNbyk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIGNhblJlcXVlc3Q7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0Q29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdWx2QWRhcHRlciA9IHRoaXMudWx2QWRhcHRlcjtcbiAgICAgICAgY29uc3QgdmlldyA9IDxHcmlkVmlldz51bHZBZGFwdGVyPy5TZXR0aW5nPy5WaWV3O1xuICAgICAgICBpZiAodmlldyAmJiB2aWV3LkNvbHVtbnM/Lmxlbmd0aCAmJiB0aGlzLmFsbENvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFsbENvbHVtbnMgPSB2aWV3LkNvbHVtbnMuZmlsdGVyKChjKSA9PiBOdW1iZXIoYy5NZXRhRmllbGRUeXBlSWQpID4gMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9mb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdOb3JtYWwnKTtcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1ucygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpc2VTbWFydENoYW5nZSh2YWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNtYXJ0Q2hhbmdlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdHJpZ2dlckNsaWNrKGV2ZW50TmFtZSwgdmFsdWUgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ1RyaWdnZXJDbGljaycsIHRoaXMuY29udGV4dCwgZXZlbnROYW1lLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZVZhbHVlQ2hhbmdlZChjYXB0aW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBjYXB0aW9uO1xuICAgICAgICBjb25zdCBtb2xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy51bHZBZGFwdGVyLFxuICAgICAgICAgICAgJ1NldHRpbmcuRGF0YS5Nb0RhdGFMaXN0JyxcbiAgICAgICAgICAgIFtdXG4gICAgICAgICk7XG4gICAgICAgIGlmICghbW9saXN0IHx8IG1vbGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvL2NvbnN0IGNvbE5hbWUgPSB0aGlzLmdldEZpcnN0Q29sdW1uTmFtZSgpO1xuXG4gICAgICAgIGNvbnN0IG1vID0gbW9saXN0LmZpbmQoKGMpID0+IGMuJENhcHRpb24gPT09IGlucHV0VmFsdWUpO1xuICAgICAgICBpZiAoIW1vKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbW9saXN0LmZvckVhY2goKGMpID0+IChjLiRJc0NoZWNrZWQgPSBmYWxzZSkpO1xuXG4gICAgICAgIHRoaXMuX2ZpcmVWYWx1ZUNoYW5nZShtbyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZmlyZVZhbHVlQ2hhbmdlKG1vKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBtbztcbiAgICAgICAgbW8uJElzQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlVGV4dCh0aGlzLnZhbHVlKTtcbiAgICAgICAgLy8gdGhpcy5fc2V0Q29tYm9UZXh0KG1vLiRDYXB0aW9uKTtcbiAgICAgICAgLy8gdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgaWYgKHRoaXMuVWx2VWkpIHtcbiAgICAgICAgICAgIHRoaXMuVWx2VWkudmlld2VyQ29udHJvbC5maXJlRXZlbnQoJ3Jvd2NsaWNrJywgdGhpcy5VbHZVaSwgMCwgbW8pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudWx2QWRhcHRlcikge1xuICAgICAgICAgICAgdGhpcy51bHZBZGFwdGVyLlZpZXdlckFkYXB0ZXIuQ29udHJvbC5maXJlRXZlbnQoJ3Jvd2NsaWNrJywgdGhpcy51bHZBZGFwdGVyLlZpZXdlckFkYXB0ZXIuQ29udHJvbCwgMCwgbW8pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuX3RyaWdnZXJDbGljaygnSXRlbVNlbGVjdCcsIHRoaXMudmFsdWUpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXJcclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgY29udGV4dC5fc2hvd1BvcHVwIHx8IGNvbnRleHQuX3Nob3dEcm9wRG93biA9PT0gZmFsc2UgPyBpbnB1dFRlbXBsYXRlIDogY29tYm9UZW1wbGF0ZTtcclxuICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICRpbXBsaWNpdDpcclxuICAgICAgICAgICAgICAgIChsb2FkaW5nJCB8IGFzeW5jKSA9PT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfCBtb0luZm9VbHZNb0xpc3RcclxuICAgICAgICAgICAgICAgICAgICA6IGlzRGF0YUxvYWRlZEZpcnN0VGltZVxyXG4gICAgICAgICAgICAgICAgICAgIDogdWx2QWRhcHRlcj8uU2V0dGluZz8uRGF0YT8uTW9EYXRhTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIDogVWx2VWk/LlNldHRpbmc/LkRhdGE/Lk1vRGF0YUxpc3RcclxuICAgICAgICAgICAgICAgICAgICA6IHVsdkFkYXB0ZXI/LlNldHRpbmc/LkRhdGE/LlBhZ2luZ1xyXG4gICAgICAgICAgICAgICAgICAgIDogVWx2VWk/LlNldHRpbmc/LkRhdGE/LlBhZ2luZyxcclxuICAgICAgICAgICAgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSQgfCBhc3luYyxcclxuICAgICAgICAgICAgZGlzYWJsZU9yUmVhZG9ubHk6IGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jLFxyXG4gICAgICAgICAgICBkaXNhYmxlOiBkaXNhYmxlJCB8IGFzeW5jLFxyXG4gICAgICAgICAgICByZWFkb25seTogcmVhZG9ubHkkIHwgYXN5bmNcclxuICAgICAgICB9XHJcbiAgICBcIlxyXG4+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctdGVtcGxhdGVcclxuICAgICNpbnB1dFRlbXBsYXRlXHJcbiAgICBsZXQtZGV2aWNlU2l6ZT1cImRldmljZVNpemVcIlxyXG4gICAgbGV0LWRpc2FibGVPclJlYWRvbmx5PVwiZGlzYWJsZU9yUmVhZG9ubHlcIlxyXG4gICAgbGV0LWRpc2FibGU9XCJkaXNhYmxlXCJcclxuICAgIGxldC1yZWFkb25seT1cInJlYWRvbmx5XCJcclxuPlxyXG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIiBjbGFzcz1cImZkLWlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGZkLWlucHV0LWdyb3VwLWlucHV0XHJcbiAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxyXG4gICAgICAgICAgICAjaW5wdXRSZWZcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlNldHRpbmcuTnVsbFRleHQgfHwgJydcIlxyXG4gICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cIiF2YWx1ZSA/ICcnIDogKHZhbHVlIHwgYmJiVHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5kaXJlY3Rpb25dPVwiU2V0dGluZy5Jc0x0ciA9PT0gdHJ1ZSA/ICdsdHInIDogbnVsbFwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gZmQtaW5wdXQtZ3JvdXAtYWRkb24gKm5nSWY9XCJoYXNWYWx1ZSAmJiBkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZVwiIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b25cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cImRlY2xpbmVcIiAoY2xpY2spPVwib25DbGVhcigpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGZkLWlucHV0LWdyb3VwLWFkZG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWhhc1ZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIFNldHRpbmcuU2hvd05ld0J1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cImFkZFwiIChjbGljayk9XCJvbk5ldygpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGZkLWlucHV0LWdyb3VwLWFkZG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzVmFsdWUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgU2V0dGluZy5WaWV3UmVsYXRlZEZvcm1UeXBlID09PSAnU2hvdydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgZ2x5cGg9XCJlZGl0XCIgKGNsaWNrKT1cIm9uRWRpdCgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGZkLWlucHV0LWdyb3VwLWFkZG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzVmFsdWUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgU2V0dGluZy5WaWV3UmVsYXRlZEZvcm1UeXBlID09PSAnU2hvd1JlYWRPbmx5J1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cInNob3dcIiAoY2xpY2spPVwib25FZGl0KClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgZmQtaW5wdXQtZ3JvdXAtYWRkb25cclxuICAgICAgICAgICAgKm5nSWY9XCJjb250ZXh0Ll9zaG93UG9wdXAgJiYgIXZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvblwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGdseXBoPVwic2VhcmNoXCIgKGNsaWNrKT1cIm9uU2VhcmNoKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICAgI2NvbWJvVGVtcGxhdGVcclxuICAgIGxldC1tb0RhdGFMaXN0XHJcbiAgICBsZXQtZGV2aWNlU2l6ZT1cImRldmljZVNpemVcIlxyXG4gICAgbGV0LWRpc2FibGVPclJlYWRvbmx5PVwiZGlzYWJsZU9yUmVhZG9ubHlcIlxyXG4gICAgbGV0LWRpc2FibGU9XCJkaXNhYmxlXCJcclxuICAgIGxldC1yZWFkb25seT1cInJlYWRvbmx5XCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpbXBsZS1jb21iby13cmFwcGVyXCI+XHJcbiAgICAgICAgPGZkLWNvbWJvYm94XHJcbiAgICAgICAgICAgICNmZENvbWJvYm94XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29tYm8tbW8tdWx2XCJcclxuICAgICAgICAgICAgW2NvbWJvYm94SWRdPVwiY29tYm9ib3hJZFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5oYXMtcmVwb3J0XT1cImhhc1JlcG9ydFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5oYXMtVmFsdWVdPVwiaGFzVmFsdWVcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICBbbW9iaWxlXT1cImRldmljZVNpemUgPT09ICdzJ1wiXHJcbiAgICAgICAgICAgIFttb2JpbGVDb25maWddPVwibW9iaWxlQ29uZmlnXCJcclxuICAgICAgICAgICAgW2ZpbGxPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5ID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGUgPT09IHRydWUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwibW9EYXRhTGlzdFwiXHJcbiAgICAgICAgICAgIFtmaWx0ZXJGbl09XCJjdXN0b21GaWx0ZXJcIlxyXG4gICAgICAgICAgICBbb3Blbk9uS2V5Ym9hcmRFdmVudF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2J5bGluZV09XCJhbGxDb2x1bW5zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiZGlzcGxheUZ1bmNcIlxyXG4gICAgICAgICAgICBbc2hvd0Ryb3Bkb3duQnV0dG9uXT1cImRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlXCJcclxuICAgICAgICAgICAgKGl0ZW1DbGlja2VkKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgbW9EYXRhTGlzdClcIlxyXG4gICAgICAgICAgICAoaW5wdXRUZXh0Q2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZShmZENvbWJvYm94LCAkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9mZC1jb21ib2JveD5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImhhc1ZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlXCJcclxuICAgICAgICAgICAgZ2x5cGg9XCJkZWNsaW5lXCJcclxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImNvbWJvLXBvcHVwLWJ0blwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyKClcIlxyXG4gICAgICAgID48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJoYXNSZXBvcnQgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWVcIlxyXG4gICAgICAgICAgICBnbHlwaD1cInNlYXJjaFwiXHJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJjb21iby1wb3B1cC1idG5cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2goKVwiXHJcbiAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbT5cclxuICAgICAgICA8ZGl2IGZkLWxpc3QtY29udGVudCAqbmdJZj1cIml0ZW0uJGlzTG9hZGluZzsgZWxzZSBpdGVtV3JhcHBlclwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMjBweFwiPlxyXG4gICAgICAgICAgICA8YnN1LW1hc2sgW3NpemVdPVwiJ3MnXCIgW3RvcF09XCInMTBweCdcIj48L2JzdS1tYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVdyYXBwZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLiRMb2FkTW9yZTsgZWxzZSBzaG93SXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnN1LXVsdi1wYWdpbmdcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QYWdpbmdDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2luZ1NldHRpbmddPVwidWx2QWRhcHRlci5TZXR0aW5nLkRhdGEuUGFnaW5nXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvYnN1LXVsdi1wYWdpbmc+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidWx2QWRhcHRlci5TZXR0aW5nLkRhdGEuUGFnaW5nLlBhZ2UgKyAxIDwgdWx2QWRhcHRlci5TZXR0aW5nLkRhdGEuUGFnaW5nLlRvdGFsUGFnZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblBhZ2VDaGFuZ2UyKHVsdkFkYXB0ZXIuU2V0dGluZy5EYXRhLlBhZ2luZywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidNb3JlJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93SXRlbT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbENvbHVtbnM/Lmxlbmd0aCAmJiAhaXRlbS5pc0VtcHR5OyBlbHNlIGNhcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpdGVtLiRfX0lzTGFzdFwiIGNsYXNzPVwibW9pbmZvdWx2IGRldmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGh1bWJuYWlsICpuZ0lmPVwiaXRlbS4kSWNvblwiPjxmZC1pY29uIFtnbHlwaF09XCJpdGVtLiRJY29uXCI+PC9mZC1pY29uPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1jb250ZW50IGNsYXNzPVwibW9pbmZvdWx2IGhhc0NvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtdGl0bGUgY2xhc3M9XCJ0aXRsZVwiPnt7IGFsbENvbHVtbnNbMF0uQWxpYXMgfCBydmFsOiBpdGVtOmFsbENvbHVtbnM6dHJ1ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1ieWxpbmUgY2xhc3M9XCJieWxpbmVcIiAqbmdJZj1cImFsbENvbHVtbnNbMV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgYWxsQ29sdW1uc1sxXS5BbGlhcyB8IHJ2YWw6IGl0ZW06YWxsQ29sdW1uczp0cnVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGNvbHVtbi1nYXA6IDhweDsgZmxleC13cmFwOiB3cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBhbGxDb2x1bW5zOyBsZXQgaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4ID4gMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uQWxpYXMgfCBydmFsOiBpdGVtOmFsbENvbHVtbnM6dHJ1ZSBhcyB2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ge3sgY29sdW1uLkFsaWFzIH19Ont7IHZhbHVlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NhcHRpb25UZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGUgW2NsYXNzLmxpc3QtZW1wdHktaXRlbV09XCJpdGVtLmlzRW1wdHlcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNFbXB0eSA/ICgnTm9EYXRhJyB8IGJiYlRyYW5zbGF0ZSkgOiAoaXRlbS4kTW9DYXB0aW9uIHx8IGl0ZW0uJENhcHRpb24gfCBiYmJUcmFuc2xhdGUpXHJcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbW8taW5mby11bHYtY29tYm8vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFHMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQTJCLE1BQU0sdUJBQXVCLENBQUM7QUFFbkYsT0FBTyxFQUNILGtCQUFrQixFQUNsQixRQUFRLEVBTVIsa0JBQWtCLEVBR2xCLFdBQVcsRUFFZCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7OztBQVE5QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsa0JBQWtCO0lBTmpFOztRQXdCSSxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFhcEMsZUFBVSxHQUF1QixFQUFFLENBQUM7UUFHNUIsa0NBQTZCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwRCx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3pDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQXNI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QVc7c0JBRFYsS0FBSztnQkFNTixJQUFJO3NCQURILEtBQUs7Z0JBTU4sSUFBSTtzQkFESCxLQUFLO2dCQVNOLElBQUk7c0JBREgsS0FBSztnQkFVTixNQUFNO3NCQURMLEtBQUs7Z0JBTU4sV0FBVztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBPbkluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCwgdGFrZVVudGlsLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21ib2JveENvbXBvbmVudCwgQ29tYm9ib3hJdGVtLCBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEZpZWxkQmFzZUNvbXBvbmVudCxcbiAgICBCYXJzYUFwaSxcbiAgICBSZXBvcnRFeHRyYUluZm8sXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcbiAgICBDbGFzc05hbWVzTW9kZWwsXG4gICAgVmlld1R5cGVzLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgUHJldmVudERlZmF1bEV2ZW50LFxuICAgIFBhZ2luZ1NldHRpbmcsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBnZXRVbmlxdWVJZCxcbiAgICBHcmlkVmlld1xufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXVpLW1vLWluZm8tdWx2LWNvbWJvJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktbW8taW5mby11bHYtY29tYm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3VpLW1vLWluZm8tdWx2LWNvbWJvLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVWlNb0luZm9VbHZDb21ib0NvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgdWx2QWRhcHRlcjoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIFNldHRpbmc6IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgICAgIFZpZXc6IFZpZXdUeXBlcztcbiAgICAgICAgICAgIENsYXNzTmFtZXM6IENsYXNzTmFtZXNNb2RlbDtcbiAgICAgICAgICAgIEV4dHJhOiBSZXBvcnRFeHRyYUluZm87XG4gICAgICAgICAgICBEYXRhOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgQElucHV0KCkgQ29udHJvbDogYW55O1xuICAgIEBJbnB1dCgpIFVsdlVpOiBhbnk7XG4gICAgQElucHV0KCkgVWx2TWFpbkN0cmxyOiBhbnk7XG5cbiAgICBAVmlld0NoaWxkKENvbWJvYm94Q29tcG9uZW50KSBmZENvbWJvUmVmOiBDb21ib2JveENvbXBvbmVudDtcblxuICAgIGlzRXhwYW5kOiBib29sZWFuO1xuICAgIHNtYXJ0Q2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHRpY2tSZWY6IGFueTtcbiAgICBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaXNGaXJzdExvYWQ6IGJvb2xlYW47XG4gICAgcG9wb3ZlckVsZW1lbnQ6IGFueTtcbiAgICByYXdWYWx1ZTogc3RyaW5nO1xuICAgIGZvcm1TZWxlY3Rpb25EaWFsb2c6IERpYWxvZ1JlZjtcbiAgICBpc09wZW5TZWxlY3Rpb25EaWFsb2c6IGJvb2xlYW47XG4gICAgaGFzUmVwb3J0OiBhbnk7XG4gICAgb3JpZ2luYWxWYWx1ZTogYW55O1xuICAgIGlzRGF0YUxvYWRlZEZpcnN0VGltZTogYm9vbGVhbjtcbiAgICB2YWx1ZVRleHQ6IHN0cmluZztcbiAgICBhbGxDb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10gPSBbXTtcbiAgICBoYXNWYWx1ZTogYm9vbGVhbjtcbiAgICBjb21ib2JveElkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfb3BlblBvcHVwRm9ybVNlbGVjdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfY2xvc2VEaWFsb2dTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX2xvYWRpbmdTb3VyY2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5RG93bihlKTogdm9pZCB7XG4gICAgICAgIGUgPSBuZXcgQmFyc2FBcGkuRXh0LkV2ZW50T2JqZWN0SW1wbChlKTtcbiAgICAgICAgY29uc3QgayA9IGUuZ2V0S2V5KCk7XG4gICAgICAgIGlmIChlLmtleUNvZGUgPT09IGUuRU5URVIgfHwgayA9PT0gQmFyc2FBcGkuRXh0LkV2ZW50T2JqZWN0LlRBQikge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgna2V5ZG93bicsIHRoaXMuY29udGV4dCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hbHQnLCBbJyRldmVudCddKVxuICAgIG9uQWx0KGUpOiB2b2lkIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb21ib2JveElkID0gZ2V0VW5pcXVlSWQoMyk7XG4gICAgICAgIHRoaXMuX2NoZWNrSGFzVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMubG9hZGluZyQgPSB0aGlzLl9sb2FkaW5nU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0RhdGFMb2FkZWRGaXJzdFRpbWUgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnVsdkFkYXB0ZXI/LlNldHRpbmc/LkRhdGE/Lk1vRGF0YUxpc3QgPT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuVWx2VWk/LlNldHRpbmc/LkRhdGE/Lk1vRGF0YUxpc3QgPT09ICdvYmplY3QnO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zbWFydENoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICAgICAgICAgIGZpbHRlcigodmFsdWUpID0+IHRoaXMuX2ZpbHRlclNtYXJ0Q2hhbmdlKHZhbHVlKSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICB0YXAoKHZhbHVlKSA9PiAodGhpcy5yYXdWYWx1ZSA9IHZhbHVlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnU21hcnRDaGFuZ2UnLCB0aGlzLmNvbnRleHQsIHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9vcGVuUG9wdXBGb3JtU2VsZWN0aW9uU291cmNlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9jbG9zZURpYWxvZ1NvdXJjZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLlVsdlVpICYmICF0aGlzLmlzT3BlblNlbGVjdGlvbkRpYWxvZyAmJiB0aGlzLmNvbnRleHQuX3Nob3dQb3B1cCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX29wZW5Qb3B1cEZvcm1TZWxlY3Rpb24oKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5oYXNSZXBvcnQgPSB0aGlzLlNldHRpbmcuUmVsYXRpb25WaWV3VHlwZSA9PT0gJ1JlcG9ydFZpZXcnIHx8IHRoaXMuU2V0dGluZy5SZXBvcnROYW1lID09PSAnSGllcmFyY2hpY2FsJztcbiAgICAgICAgdGhpcy5Db250cm9sID0gdGhpcztcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZVRleHQodGhpcy52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICAvLyB0aGlzLl9zZXRDb21ib1RleHQodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIG9uUGFnaW5nQ2xpY2soZSk6IHZvaWQge1xuICAgICAgICBQcmV2ZW50RGVmYXVsRXZlbnQoZSk7XG4gICAgfVxuICAgIG9uUGFnZUNoYW5nZShlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbG9hZGluZ1NvdXJjZS5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLnVsdkFkYXB0ZXIuRGF0YUN0cmxyLk1vdmVUb1BhZ2UoZSwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ1NvdXJjZS5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uSXRlbUNsaWNrKGU6IENvbWJvYm94SXRlbSwgbW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUl0ZW1TZWxlY3QobW9EYXRhTGlzdCwgZS5pdGVtKTtcbiAgICB9XG4gICAgb25QYWdlQ2hhbmdlMihwYWdlU2V0dGluZzogUGFnaW5nU2V0dGluZywgZSk6IHZvaWQge1xuICAgICAgICBQcmV2ZW50RGVmYXVsRXZlbnQoZSk7XG4gICAgICAgIHRoaXMuX2xvYWRpbmdTb3VyY2UubmV4dCh0cnVlKTtcbiAgICAgICAgY29uc3QgdWx2QWRhcHRlciA9IHRoaXMudWx2QWRhcHRlcjtcbiAgICAgICAgY29uc3QgdGVtcDEgPSB1bHZBZGFwdGVyLlNldHRpbmcuRGF0YS5Nb0RhdGFMaXN0O1xuICAgICAgICB0ZW1wMS5zcGxpY2UodGVtcDEubGVuZ3RoIC0gMSwgMSk7XG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3RPbGQgPSBbLi4udGVtcDFdO1xuICAgICAgICBtb0RhdGFMaXN0T2xkLmZvckVhY2goKGMpID0+IChjLiRfX0lzTGFzdCA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMudWx2QWRhcHRlci5EYXRhQ3RybHIuTW92ZVRvUGFnZShwYWdlU2V0dGluZy5QYWdlICsgMSwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gdWx2QWRhcHRlci5TZXR0aW5nLkRhdGEuTW9EYXRhTGlzdDtcbiAgICAgICAgICAgIG1vRGF0YUxpc3Quc3BsaWNlKDAsIDAsIC4uLm1vRGF0YUxpc3RPbGQpO1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ1NvdXJjZS5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uT3BlbkNoYW5nZShmZENvbWJvYm94LCBpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXMoKTtcbiAgICAgICAgICAgIC8vIGZkQ29tYm9ib3gub3BlbiA9IGZhbHNlOyAvLyBpdCBjbG9zZSBwb3B1cCB3aGVuIGNsaWNrIG9uIGRyb3Bkb3duIGJ1dHRvbiBpbiBjb21wb25lbnRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0VGV4dCA9IHRoaXMuZmRDb21ib1JlZj8uaW5wdXRUZXh0VmFsdWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmFsdWUgJiYgaW5wdXRUZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmFpc2VTbWFydENoYW5nZShpbnB1dFRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9uSW5wdXRDaGFuZ2UoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yYWlzZVNtYXJ0Q2hhbmdlKGUpO1xuICAgIH1cbiAgICBvbklucHV0Q2hhbmdlMihlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JhaXNlU21hcnRDaGFuZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgICBvblZhbHVlQ2hhbmdlKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmFpc2VWYWx1ZUNoYW5nZWQoZS50YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgICBvbk5ldygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdOZXcnKTtcbiAgICB9XG4gICAgb25DbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdEZWxldGUnKTtcbiAgICB9XG4gICAgb25FZGl0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90cmlnZ2VyQ2xpY2soJ0VkaXQnKTtcbiAgICB9XG4gICAgb25TZWFyY2goKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJDbGljaygnUG9wdXAnKTtcbiAgICB9XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBjdXN0b21GaWx0ZXIoY29udGVudDogYW55W10sIHNlYXJjaFRlcm06IHN0cmluZyk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgZGlzcGxheUZ1bmMgPSAob2JqOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiB7XG4gICAgICAgIGlmIChvYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbE5hbWUgPSB0aGlzLmdldEZpcnN0Q29sdW1uTmFtZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9WYWx1ZUNhcHRpb24ob2JqLCBjb2xOYW1lLCBvYmouJENhcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9O1xuICAgIGdldE1vVmFsdWVDYXB0aW9uKHZhbHVlTW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLCBjb2xOYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlTW8gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNhcHRpb25WYWx1ZU1vO1xuICAgICAgICBjb25zdCBtb2xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy51bHZBZGFwdGVyLFxuICAgICAgICAgICAgJ1NldHRpbmcuRGF0YS5Nb0RhdGFMaXN0JyxcbiAgICAgICAgICAgIFtdXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZvdW5kZWRNbyA9IG1vbGlzdC5maW5kKChjKSA9PiBjLklkID09PSB2YWx1ZU1vLklkKTtcbiAgICAgICAgaWYgKGNvbE5hbWUgJiYgZm91bmRlZE1vICYmIGZvdW5kZWRNb1tjb2xOYW1lXSkge1xuICAgICAgICAgICAgaWYgKGZvdW5kZWRNb1tjb2xOYW1lICsgJyRDYXB0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsdWVNbyA9IGZvdW5kZWRNb1tjb2xOYW1lICsgJyRDYXB0aW9uJ107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kZWRNb1tjb2xOYW1lXS4kQ2FwdGlvbikge1xuICAgICAgICAgICAgICAgIGNhcHRpb25WYWx1ZU1vID0gZm91bmRlZE1vW2NvbE5hbWVdLiRDYXB0aW9uO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsdWVNbyA9IGZvdW5kZWRNb1tjb2xOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0oY2FwdGlvblZhbHVlTW8gfHwgZGVmYXVsdFZhbHVlKTtcbiAgICB9XG4gICAgZ2V0Rmlyc3RDb2x1bW5OYW1lKCkge1xuICAgICAgICBsZXQgY29sTmFtZSA9ICckQ2FwdGlvbic7XG4gICAgICAgIGlmICh0aGlzLlVsdk1haW5DdHJsciAmJiB0aGlzLlVsdk1haW5DdHJscj8uRGQ/LlNldHRpbmc/LlZpZXcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLlVsdk1haW5DdHJsci5EZC5TZXR0aW5nLlZpZXcuQ29sdW1ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Q29sID0gdGhpcy5VbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3LkNvbHVtbnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGMpID0+ICFjLk5hbWUuc3RhcnRzV2l0aCgnJCcpICYmIGMuTmFtZSAhPT0gJ0lkJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0Q29sPy5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbE5hbWUgPSBmaXJzdENvbC5OYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sTmFtZTtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBJbnB1dCgpIElzRXhwYW5kZWQgPSAodHlwZSkgPT4ge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ0RkJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZkQ29tYm9SZWY/LnBvcG92ZXJDb21wb25lbnQ/LmlzT3BlbjtcbiAgICB9O1xuICAgIC8vIHJldHVybiB0aGlzLmNvbWJvUmVmLm5hdGl2ZUVsZW1lbnQucmVzcG9uc2l2ZVBvcG92ZXIuaXNPcGVuKCk7XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBDb2xsYXBzZSA9ICh0eXBlKSA9PiB7fTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBJbnB1dCgpIEV4cGFuZCA9ICh0eXBlKSA9PiB7XG4gICAgICAgIHRoaXMudWx2QWRhcHRlciA9IHRoaXMuVWx2TWFpbkN0cmxyW3R5cGVdO1xuICAgIH07XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBASW5wdXQoKSBvbiA9ICgpID0+IHt9O1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgQElucHV0KCkgRm9jdXMgPSAoKSA9PiB7fTtcbiAgICBASW5wdXQoKVxuICAgIFNldFVsdkFkYXB0ZXIgPSAodHlwZSwgdWx2QWRhcHRlcikgPT4ge1xuICAgICAgICB0aGlzLnVsdkFkYXB0ZXIgPSB1bHZBZGFwdGVyO1xuICAgICAgICB0aGlzLl9zZXRDb2x1bW5zKCk7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgfTtcbiAgICBASW5wdXQoKVxuICAgIElzVWlDcmVhdGVkID0gKHR5cGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgfTtcbiAgICBASW5wdXQoKVxuICAgIE1hc2sgPSAodHlwZSkgPT4ge1xuICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQodHJ1ZSk7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgfTtcbiAgICBASW5wdXQoKVxuICAgIGhpZGUgPSAodHlwZSkgPT4ge1xuICAgICAgICAvLyB0aGlzLnRyaWdnZXJDbGljaygnTm9ybWFsJyk7XG4gICAgICAgIGlmICh0aGlzLmZvcm1TZWxlY3Rpb25EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVNlbGVjdGlvbkRpYWxvZy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgfTtcbiAgICBASW5wdXQoKVxuICAgIHNob3cgPSAodHlwZSkgPT4ge1xuICAgICAgICAvLyB0aGlzLnRyaWdnZXJDbGljaygnTm9ybWFsJyk7XG5cbiAgICAgICAgdGhpcy5fb3BlblBvcHVwRm9ybVNlbGVjdGlvblNvdXJjZS5uZXh0KCk7IC8vIHJhYmV0ZSB0YWtpIGdlbmVyYWwgaW5mbyAucG9wdXAgYmF6IG1pc2hvZCBrZSBiYWlhZCBkcm9wZG93biBiYXNoZS5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIH07XG4gICAgQElucHV0KClcbiAgICBVbm1hc2sgPSAodHlwZSkgPT4ge1xuICAgICAgICB0aGlzLl9sb2FkaW5nU291cmNlLm5leHQoZmFsc2UpO1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIH07XG4gICAgQElucHV0KClcbiAgICBnZXRSYXdWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3VmFsdWU7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBfaGFuZGxlSXRlbVNlbGVjdChtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIG1vRGF0YUxpc3QuZm9yRWFjaCgoYykgPT4gKGMuJElzQ2hlY2tlZCA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMuX2ZpcmVWYWx1ZUNoYW5nZShtbyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRWYWx1ZVRleHQodmFsdWUpO1xuICAgICAgICB0aGlzLl9jaGVja0hhc1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgc3VwZXIuX3NldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgLy8gdGhpcy5fc2V0Q29tYm9UZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jaGVja0hhc1ZhbHVlKHZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzVmFsdWUgPSB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3NldFZhbHVlVGV4dCh2YWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlVGV4dCA9IHRoaXMuX2dldFZhbHVlVGV4dCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX3NldENvbWJvVGV4dCh0aGlzLnZhbHVlVGV4dCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZ2V0VmFsdWVUZXh0KHZhbHVlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLiRDYXB0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICYmIHZhbHVlICYmIHRoaXMuVWx2TWFpbkN0cmxyICYmIHRoaXMuVWx2TWFpbkN0cmxyLkRkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5VbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3O1xuICAgICAgICAgICAgbGV0IGNvbE5hbWUgPSAnJENhcHRpb24nO1xuICAgICAgICAgICAgaWYgKHZpZXcuQ29sdW1ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Q29sID0gdmlldy5Db2x1bW5zLmZpbmQoKGMpID0+ICFjLk5hbWUuc3RhcnRzV2l0aCgnJCcpICYmIGMuTmFtZSAhPT0gJ0lkJyk7XG4gICAgICAgICAgICAgICAgY29sTmFtZSA9IGZpcnN0Q29sPy5OYW1lID8gZmlyc3RDb2wuTmFtZSA6ICckQ2FwdGlvbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0Q29tYm9UZXh0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgLy8gdGhpcy5fdmFsdWVNbyA9IG51bGw7XG4gICAgICAgIC8vdGhpcy5mZENvbWJvUmVmLmlucHV0VGV4dFZhbHVlID0gJyc7XG4gICAgICAgIC8vdGhpcy5mZENvbWJvUmVmLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgY29uc3QgZmRDb21ib1JlZiA9IHRoaXMuZmRDb21ib1JlZjtcbiAgICAgICAgY29uc3QgaW5wdXRUZXh0ID0gZmRDb21ib1JlZj8uaW5wdXRUZXh0VmFsdWU7XG4gICAgICAgIGlmIChmZENvbWJvUmVmICYmIHZhbHVlICE9IGlucHV0VGV4dCkge1xuICAgICAgICAgICAgLy8gY29uc3QgVWx2TWFpbkN0cmxyID0gdGhpcy5VbHZNYWluQ3RybHI7XG4gICAgICAgICAgICAvLyBpZiAoVWx2TWFpbkN0cmxyICYmIFVsdk1haW5DdHJsci5EZCkge1xuICAgICAgICAgICAgLy8gICAgIGNvbnN0IHZpZXcgPSBVbHZNYWluQ3RybHIuRGQuU2V0dGluZy5WaWV3O1xuICAgICAgICAgICAgLy8gICAgIGxldCBjb2xOYW1lID0gJyRDYXB0aW9uJztcbiAgICAgICAgICAgIC8vICAgICBpZiAodmlldy5Db2x1bW5zKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnN0IGZpcnN0Q29sID0gdmlldy5Db2x1bW5zLmZpbmQoKGMpID0+ICFjLk5hbWUuc3RhcnRzV2l0aCgnJCcpICYmIGMuTmFtZSAhPT0gJ0lkJyk7XG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbE5hbWUgPSBmaXJzdENvbD8uTmFtZSA/IGZpcnN0Q29sLk5hbWUgOiAnJENhcHRpb24nO1xuICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgIC8vICAgICB2YWx1ZSA9IHRoaXMuZ2V0TW9WYWx1ZUNhcHRpb24odGhpcy5fdmFsdWVNbywgY29sTmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgZmRDb21ib1JlZi5pbnB1dFRleHQgPSB2YWx1ZSA/IHRoaXMuX2JiYlBpcGUudHJhbnNmb3JtKHZhbHVlKSArICcnIDogJyc7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfb3BlblBvcHVwRm9ybVNlbGVjdGlvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgdGhpcy5pc09wZW5TZWxlY3Rpb25EaWFsb2cgPSB0cnVlO1xuICAgICAgICB0aGlzLlVsdlVpLnZpZXdlckNvbnRyb2wuU2hvd09rQ2FuY2VsQnV0dG9ucyA9IHRydWU7IC8vIHRoaXMgaXMgdXNlZnVsIHRvIHVsdiBtYW5hZ2UgdG9vbGJhciBidXR0b25zLmZvciBleGFtcGxlIG1vdmUgaW4gdHJlZSBkb2VzIG5vdCBzaG93blxuICAgICAgICB0aGlzLmZvcm1TZWxlY3Rpb25EaWFsb2cgPSBCYXJzYUFwaS5Cdy5VbHZGb3JtTXVsdGlTZWxlY3QuU2hvdyh0aGlzLmNvbnRleHQsIHtcbiAgICAgICAgICAgIHVsdjE6IHRoaXMuVWx2VWksXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0oJ1NlbGVjdCcpLFxuICAgICAgICAgICAgSXNMb2FkZWQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5TZWxlY3Rpb25EaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclNtYXJ0Q2hhbmdlKHZhbHVlKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjYW5SZXF1ZXN0ID0gKHRoaXMudWx2QWRhcHRlciB8fCB0aGlzLlVsdlVpKSAmJiB2YWx1ZSAhPT0gdGhpcy52YWx1ZTtcbiAgICAgICAgLy8gaWYgKGNhblJlcXVlc3QpIHtcbiAgICAgICAgLy8gICAgIGNvbnN0IG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgIC8vICAgICAgICAgdGhpcy51bHZBZGFwdGVyLFxuICAgICAgICAvLyAgICAgICAgICdTZXR0aW5nLkRhdGEuTW9EYXRhTGlzdCcsXG4gICAgICAgIC8vICAgICAgICAgW11cbiAgICAgICAgLy8gICAgICk7XG4gICAgICAgIC8vICAgICBpZiAoIW1vbGlzdCkge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgY29uc3QgY29sTmFtZSA9IHRoaXMuZ2V0Rmlyc3RDb2x1bW5OYW1lKCk7XG5cbiAgICAgICAgLy8gICAgIGNvbnN0IGZpbmRNbyA9IG1vbGlzdC5maW5kKChtbykgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNhcHRpb24gPSB0aGlzLmdldE1vVmFsdWVDYXB0aW9uKG1vLCBjb2xOYW1lLCBtby4kQ2FwdGlvbik7XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIGNhcHRpb24gPT09IHZhbHVlO1xuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vICAgICBpZiAoZmluZE1vKSB7XG4gICAgICAgIC8vICAgICAgICAgY2FuUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICAvLyAgICAgICAgIC8vdGhpcy5fZmlyZVZhbHVlQ2hhbmdlKGZpbmRNbyk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIGNhblJlcXVlc3Q7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0Q29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdWx2QWRhcHRlciA9IHRoaXMudWx2QWRhcHRlcjtcbiAgICAgICAgY29uc3QgdmlldyA9IDxHcmlkVmlldz51bHZBZGFwdGVyPy5TZXR0aW5nPy5WaWV3O1xuICAgICAgICBpZiAodmlldyAmJiB2aWV3LkNvbHVtbnM/Lmxlbmd0aCAmJiB0aGlzLmFsbENvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFsbENvbHVtbnMgPSB2aWV3LkNvbHVtbnMuZmlsdGVyKChjKSA9PiBOdW1iZXIoYy5NZXRhRmllbGRUeXBlSWQpID4gMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9mb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrKCdOb3JtYWwnKTtcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1ucygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmFpc2VTbWFydENoYW5nZSh2YWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNtYXJ0Q2hhbmdlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdHJpZ2dlckNsaWNrKGV2ZW50TmFtZSwgdmFsdWUgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ1RyaWdnZXJDbGljaycsIHRoaXMuY29udGV4dCwgZXZlbnROYW1lLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yYWlzZVZhbHVlQ2hhbmdlZChjYXB0aW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBjYXB0aW9uO1xuICAgICAgICBjb25zdCBtb2xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy51bHZBZGFwdGVyLFxuICAgICAgICAgICAgJ1NldHRpbmcuRGF0YS5Nb0RhdGFMaXN0JyxcbiAgICAgICAgICAgIFtdXG4gICAgICAgICk7XG4gICAgICAgIGlmICghbW9saXN0IHx8IG1vbGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvL2NvbnN0IGNvbE5hbWUgPSB0aGlzLmdldEZpcnN0Q29sdW1uTmFtZSgpO1xuXG4gICAgICAgIGNvbnN0IG1vID0gbW9saXN0LmZpbmQoKGMpID0+IGMuJENhcHRpb24gPT09IGlucHV0VmFsdWUpO1xuICAgICAgICBpZiAoIW1vKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbW9saXN0LmZvckVhY2goKGMpID0+IChjLiRJc0NoZWNrZWQgPSBmYWxzZSkpO1xuXG4gICAgICAgIHRoaXMuX2ZpcmVWYWx1ZUNoYW5nZShtbyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZmlyZVZhbHVlQ2hhbmdlKG1vKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBtbztcbiAgICAgICAgbW8uJElzQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlVGV4dCh0aGlzLnZhbHVlKTtcbiAgICAgICAgLy8gdGhpcy5fc2V0Q29tYm9UZXh0KG1vLiRDYXB0aW9uKTtcbiAgICAgICAgLy8gdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgaWYgKHRoaXMuVWx2VWkpIHtcbiAgICAgICAgICAgIHRoaXMuVWx2VWkudmlld2VyQ29udHJvbC5maXJlRXZlbnQoJ3Jvd2NsaWNrJywgdGhpcy5VbHZVaSwgMCwgbW8pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudWx2QWRhcHRlcikge1xuICAgICAgICAgICAgdGhpcy51bHZBZGFwdGVyLlZpZXdlckFkYXB0ZXIuQ29udHJvbC5maXJlRXZlbnQoJ3Jvd2NsaWNrJywgdGhpcy51bHZBZGFwdGVyLlZpZXdlckFkYXB0ZXIuQ29udHJvbCwgMCwgbW8pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuX3RyaWdnZXJDbGljaygnSXRlbVNlbGVjdCcsIHRoaXMudmFsdWUpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBjb250ZXh0Ll9zaG93UG9wdXAgfHwgY29udGV4dC5fc2hvd0Ryb3BEb3duID09PSBmYWxzZSA/IGlucHV0VGVtcGxhdGUgOiBjb21ib1RlbXBsYXRlO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6XG4gICAgICAgICAgICAgICAgKGxvYWRpbmckIHwgYXN5bmMpID09PSB0cnVlXG4gICAgICAgICAgICAgICAgfCBtb0luZm9VbHZNb0xpc3RcbiAgICAgICAgICAgICAgICAgICAgOiBpc0RhdGFMb2FkZWRGaXJzdFRpbWVcbiAgICAgICAgICAgICAgICAgICAgOiB1bHZBZGFwdGVyPy5TZXR0aW5nPy5EYXRhPy5Nb0RhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgIDogVWx2VWk/LlNldHRpbmc/LkRhdGE/Lk1vRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgOiB1bHZBZGFwdGVyPy5TZXR0aW5nPy5EYXRhPy5QYWdpbmdcbiAgICAgICAgICAgICAgICAgICAgOiBVbHZVaT8uU2V0dGluZz8uRGF0YT8uUGFnaW5nLFxuICAgICAgICAgICAgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSQgfCBhc3luYyxcbiAgICAgICAgICAgIGRpc2FibGVPclJlYWRvbmx5OiBkaXNhYmxlT3JSZWFkb25seSQgfCBhc3luYyxcbiAgICAgICAgICAgIGRpc2FibGU6IGRpc2FibGUkIHwgYXN5bmMsXG4gICAgICAgICAgICByZWFkb25seTogcmVhZG9ubHkkIHwgYXN5bmNcbiAgICAgICAgfVxuICAgIFwiXG4+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZVxuICAgICNpbnB1dFRlbXBsYXRlXG4gICAgbGV0LWRldmljZVNpemU9XCJkZXZpY2VTaXplXCJcbiAgICBsZXQtZGlzYWJsZU9yUmVhZG9ubHk9XCJkaXNhYmxlT3JSZWFkb25seVwiXG4gICAgbGV0LWRpc2FibGU9XCJkaXNhYmxlXCJcbiAgICBsZXQtcmVhZG9ubHk9XCJyZWFkb25seVwiXG4+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIiBjbGFzcz1cImZkLWlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgZmQtaW5wdXQtZ3JvdXAtaW5wdXRcbiAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgI2lucHV0UmVmXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiU2V0dGluZy5OdWxsVGV4dCB8fCAnJ1wiXG4gICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGUgPT09IHRydWUgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiIXZhbHVlID8gJycgOiAodmFsdWUgfCBiYmJUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgICBbc3R5bGUuZGlyZWN0aW9uXT1cIlNldHRpbmcuSXNMdHIgPT09IHRydWUgPyAnbHRyJyA6IG51bGxcIlxuICAgICAgICAgICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidG5zVHBsOyBjb250ZXh0OiB7IGRpc2FibGVPclJlYWRvbmx5OiBkaXNhYmxlT3JSZWFkb25seSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J0bnNUcGwgbGV0LWRpc2FibGVPclJlYWRvbmx5PVwiZGlzYWJsZU9yUmVhZG9ubHlcIj5cbiAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIGNvbWJvLXBvcHVwLWJ0blwiXG4gICAgICAgIGZkLWlucHV0LWdyb3VwLWFkZG9uXG4gICAgICAgICpuZ0lmPVwiaGFzVmFsdWUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWVcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cImRlY2xpbmVcIiAoY2xpY2spPVwib25DbGVhcigpXCI+PC9idXR0b24+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAgIGZkLWlucHV0LWdyb3VwLWFkZG9uXG4gICAgICAgICpuZ0lmPVwiIWhhc1ZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIFNldHRpbmcuU2hvd05ld0J1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24gY29tYm8tcG9wdXAtYnRuXCJcbiAgICA+XG4gICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgZ2x5cGg9XCJhZGRcIiAoY2xpY2spPVwib25OZXcoKVwiPjwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgICBmZC1pbnB1dC1ncm91cC1hZGRvblxuICAgICAgICAqbmdJZj1cImhhc1ZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlICYmIFNldHRpbmcuVmlld1JlbGF0ZWRGb3JtVHlwZSAhPT0gJ0hpZGUnXCJcbiAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiBjb21iby1wb3B1cC1idG5cIlxuICAgID5cbiAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cImVkaXRcIiAoY2xpY2spPVwib25FZGl0KClcIj48L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICAgZmQtaW5wdXQtZ3JvdXAtYWRkb25cbiAgICAgICAgKm5nSWY9XCJjb250ZXh0Ll9zaG93UG9wdXAgJiYgIXZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiBjb21iby1wb3B1cC1idG5cIlxuICAgID5cbiAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBnbHlwaD1cInNlYXJjaFwiIChjbGljayk9XCJvblNlYXJjaCgpXCI+PC9idXR0b24+XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZVxuICAgICNjb21ib1RlbXBsYXRlXG4gICAgbGV0LW1vRGF0YUxpc3RcbiAgICBsZXQtZGV2aWNlU2l6ZT1cImRldmljZVNpemVcIlxuICAgIGxldC1kaXNhYmxlT3JSZWFkb25seT1cImRpc2FibGVPclJlYWRvbmx5XCJcbiAgICBsZXQtZGlzYWJsZT1cImRpc2FibGVcIlxuICAgIGxldC1yZWFkb25seT1cInJlYWRvbmx5XCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwic2ltcGxlLWNvbWJvLXdyYXBwZXJcIj5cbiAgICAgICAgPGZkLWNvbWJvYm94XG4gICAgICAgICAgICAjZmRDb21ib2JveFxuICAgICAgICAgICAgY2xhc3M9XCJjb21iby1tby11bHZcIlxuICAgICAgICAgICAgW2NsYXNzLmNhbkFkZF09XCIhaGFzVmFsdWUgJiYgZGlzYWJsZU9yUmVhZG9ubHkgIT09IHRydWUgJiYgU2V0dGluZy5TaG93TmV3QnV0dG9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5jYW5FZGl0XT1cImhhc1ZhbHVlICYmIGRpc2FibGVPclJlYWRvbmx5ICE9PSB0cnVlXCJcbiAgICAgICAgICAgIFtjb21ib2JveElkXT1cImNvbWJvYm94SWRcIlxuICAgICAgICAgICAgW2NsYXNzLmhhcy1yZXBvcnRdPVwiaGFzUmVwb3J0XCJcbiAgICAgICAgICAgIFtjbGFzcy5oYXMtVmFsdWVdPVwiaGFzVmFsdWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcbiAgICAgICAgICAgIFttb2JpbGVDb25maWddPVwibW9iaWxlQ29uZmlnXCJcbiAgICAgICAgICAgIFtmaWxsT25TZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHkgPT09IHRydWUgPyB0cnVlIDogZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGUgPT09IHRydWUgPyB0cnVlIDogZmFsc2VcIlxuICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIm1vRGF0YUxpc3RcIlxuICAgICAgICAgICAgW2ZpbHRlckZuXT1cImN1c3RvbUZpbHRlclwiXG4gICAgICAgICAgICBbb3Blbk9uS2V5Ym9hcmRFdmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtieWxpbmVdPVwiYWxsQ29sdW1ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiZGlzcGxheUZ1bmNcIlxuICAgICAgICAgICAgW3Nob3dEcm9wZG93bkJ1dHRvbl09XCJkaXNhYmxlT3JSZWFkb25seSAhPT0gdHJ1ZVwiXG4gICAgICAgICAgICAoaXRlbUNsaWNrZWQpPVwib25JdGVtQ2xpY2soJGV2ZW50LCBtb0RhdGFMaXN0KVwiXG4gICAgICAgICAgICAoaW5wdXRUZXh0Q2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAob3BlbkNoYW5nZSk9XCJvbk9wZW5DaGFuZ2UoZmRDb21ib2JveCwgJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9mZC1jb21ib2JveD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ0bnNUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICAgICAgPGRpdiBmZC1saXN0LWNvbnRlbnQgKm5nSWY9XCJpdGVtLiRpc0xvYWRpbmc7IGVsc2UgaXRlbVdyYXBwZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDIwcHhcIj5cbiAgICAgICAgICAgIDxic3UtbWFzayBbc2l6ZV09XCIncydcIiBbdG9wXT1cIicxMHB4J1wiPjwvYnN1LW1hc2s+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW1XcmFwcGVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uJExvYWRNb3JlOyBlbHNlIHNob3dJdGVtXCI+XG4gICAgICAgICAgICAgICAgPCEtLSA8YnN1LXVsdi1wYWdpbmdcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUGFnaW5nQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2luZ1NldHRpbmddPVwidWx2QWRhcHRlci5TZXR0aW5nLkRhdGEuUGFnaW5nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9ic3UtdWx2LXBhZ2luZz4gLS0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ1bHZBZGFwdGVyLlNldHRpbmcuRGF0YS5QYWdpbmcuUGFnZSArIDEgPCB1bHZBZGFwdGVyLlNldHRpbmcuRGF0YS5QYWdpbmcuVG90YWxQYWdlc1wiXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QYWdlQ2hhbmdlMih1bHZBZGFwdGVyLlNldHRpbmcuRGF0YS5QYWdpbmcsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ01vcmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93SXRlbT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxDb2x1bW5zPy5sZW5ndGggJiYgIWl0ZW0uaXNFbXB0eTsgZWxzZSBjYXB0aW9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWl0ZW0uJF9fSXNMYXN0XCIgY2xhc3M9XCJtb2luZm91bHYgZGV2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGh1bWJuYWlsICpuZ0lmPVwiaXRlbS4kSWNvblwiPjxmZC1pY29uIFtnbHlwaF09XCJpdGVtLiRJY29uXCI+PC9mZC1pY29uPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtY29udGVudCBjbGFzcz1cIm1vaW5mb3VsdiBoYXNDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC10aXRsZSBjbGFzcz1cInRpdGxlXCI+e3sgYWxsQ29sdW1uc1swXS5BbGlhcyB8IHJ2YWw6IGl0ZW06YWxsQ29sdW1uczp0cnVlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1ieWxpbmUgY2xhc3M9XCJieWxpbmVcIiAqbmdJZj1cImFsbENvbHVtbnNbMV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFsbENvbHVtbnNbMV0uQWxpYXMgfCBydmFsOiBpdGVtOmFsbENvbHVtbnM6dHJ1ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGNvbHVtbi1nYXA6IDhweDsgZmxleC13cmFwOiB3cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgYWxsQ29sdW1uczsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uQWxpYXMgfCBydmFsOiBpdGVtOmFsbENvbHVtbnM6dHJ1ZSBhcyB2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IGNvbHVtbi5BbGlhcyB9fTp7eyB2YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FwdGlvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGUgW2NsYXNzLmxpc3QtZW1wdHktaXRlbV09XCJpdGVtLmlzRW1wdHlcIlxuICAgICAgICAgICAgICAgICAgICA+e3sgaXRlbS5pc0VtcHR5ID8gKCdOb0RhdGEnIHwgYmJiVHJhbnNsYXRlKSA6IChpdGVtLiRNb0NhcHRpb24gfHwgaXRlbS4kQ2FwdGlvbiB8IGJiYlRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgZmQtbGlzdC1zZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5pc0VtcHR5ICYmICFkaXNhYmxlT3JSZWFkb25seSAmJiBTZXR0aW5nLlZpZXdSZWxhdGVkRm9ybVR5cGUgIT09ICdIaWRlJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5Q2xpY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IF9oYW5kbGVJdGVtU2VsZWN0KG1vRGF0YUxpc3QsIGl0ZW0pOyBvbkVkaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==