barsa-sap-ui 2.2.22 → 2.2.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/barsa-chat/barsa-chat.component.mjs +2 -2
- package/esm2022/lib/barsa-form-layout-panel/barsa-form-layout-panel.component.mjs +58 -0
- package/esm2022/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +1 -1
- package/esm2022/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +1 -1
- package/esm2022/lib/barsa-list-file-linear/barsa-list-file-linear.component.mjs +1 -1
- package/esm2022/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.mjs +1 -1
- package/esm2022/lib/barsa-list-layout-panel/barsa-list-layout-panel.component.mjs +1 -1
- package/esm2022/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +1 -1
- package/esm2022/lib/barsa-sap-ui.module.mjs +24 -23
- package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +1 -1
- package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +3 -3
- package/esm2022/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +10 -9
- package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +2 -2
- package/esm2022/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +1 -1
- package/esm2022/lib/file-viewer-content/file-viewer-content.component.mjs +1 -1
- package/esm2022/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +7 -5
- package/esm2022/lib/index.mjs +4 -2
- package/esm2022/lib/layout-actions/layout-actions.component.mjs +3 -3
- package/esm2022/lib/layout-control/layout-control.component.mjs +4 -3
- package/esm2022/lib/list-item/list-item.component.mjs +1 -1
- package/esm2022/lib/ly-label/ly-label.component.mjs +5 -3
- package/esm2022/lib/manage-filters-report/manage-filters-report.component.mjs +1 -1
- package/esm2022/lib/report-search-fields-manage/report-search-fields-manage.component.mjs +1 -1
- package/esm2022/lib/report-view-renderer.directive.mjs +5 -2
- package/esm2022/lib/sap-ui-report-base.component.mjs +14 -4
- package/esm2022/lib/table-th.directive.mjs +2 -2
- package/esm2022/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.mjs +1 -1
- package/esm2022/lib/ui-check-box/ui-check-box.component.mjs +9 -4
- package/esm2022/lib/ui-date-range-ex/ui-date-range-ex.component.mjs +1 -1
- package/esm2022/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.mjs +27 -15
- package/esm2022/lib/ui-grid-columns/ui-grid-columns.component.mjs +1 -1
- package/esm2022/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.mjs +24 -5
- package/esm2022/lib/ui-multi-select-card/ui-multi-select-card.component.mjs +1 -1
- package/esm2022/lib/ui-multi-select-radio/ui-multi-select-radio.component.mjs +1 -1
- package/esm2022/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +1 -1
- package/esm2022/lib/ui-radio-group/ui-radio-group.component.mjs +1 -1
- package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +3 -3
- package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +3 -3
- package/esm2022/lib/ui-tinymce/ui-tinymce.component.mjs +8 -4
- package/esm2022/lib/ulv-context-menu/ulv-context-menu.component.mjs +3 -3
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/barsa-sap-ui.mjs +287 -179
- package/fesm2022/barsa-sap-ui.mjs.map +1 -1
- package/lib/barsa-form-layout-panel/barsa-form-layout-panel.component.d.ts +30 -0
- package/lib/barsa-sap-ui.module.d.ts +37 -36
- package/lib/barsa-tinyemce/barsa-tinyemce.component.d.ts +2 -3
- package/lib/index.d.ts +3 -3
- package/lib/layout-control/layout-control.component.d.ts +1 -0
- package/lib/ly-label/ly-label.component.d.ts +2 -1
- package/lib/report-view-renderer.directive.d.ts +2 -1
- package/lib/sap-ui-report-base.component.d.ts +5 -3
- package/lib/ui-check-box/ui-check-box.component.d.ts +1 -0
- package/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.d.ts +2 -0
- package/lib/ui-tinymce/ui-tinymce.component.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -259,11 +259,11 @@ export class UiTableViewComponent extends ReportViewBaseComponent {
|
|
|
259
259
|
this._renderer2.setStyle(this._el.nativeElement, 'width', this._width);
|
|
260
260
|
}
|
|
261
261
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiTableViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
262
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiTableViewComponent, selector: "bsu-ui-table-view", inputs: { columnWidth: "columnWidth", minWidth: "minWidth", minHeight: "minHeight", disableResize: "disableResize", disableHeaderContextMenu: "disableHeaderContextMenu", rowResizer: "rowResizer", enableResizing: "enableResizing", disableFixedTableLayout: "disableFixedTableLayout" }, host: { properties: { "style.height.px": "this.height", "style.max-height": "this.maxHeight" } }, viewQueries: [{ propertyName: "_tableRef", first: true, predicate: ["tableTpl"], descendants: true, read: ElementRef, static: true }, { propertyName: "_tableHeaderComponent", first: true, predicate: BarsaTableHeaderComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<table\r\n fd-table\r\n #tableTpl\r\n #headerBottomObserver\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onTableVisibilityChange($event, headerBottomObserver)\"\r\n [popIn]=\"popin\"\r\n [class.table-fixed]=\"\r\n !contextView?.Grid_HideHeader && (!popin || secondaryColumns.length === 0) && !disableFixedTableLayout\r\n \"\r\n [noBorderX]=\"viewSetting?.NoHoriztonalBorders === true\"\r\n [noBorderY]=\"viewSetting?.NoVerticalBorders === true || (popin && secondaryColumns.length > 0)\"\r\n>\r\n @if (columns | mergeFieldsToColumns: viewSetting?.MergeFieldsToColumns?.MoDataList; as mergeFieldsToColumns) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate;\r\n context: { $implicit: mergeFieldsToColumns, moDataListCount: moDataList?.length }\r\n \"\r\n ></ng-container>\r\n @if (moDataList?.length) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate;\r\n context: { $implicit: mergeFieldsToColumns, previewColumn: allColumns | findPreviewColumn }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n } }\r\n</table>\r\n<!--renderColumn-->\r\n\r\n@if (!moDataList?.length) {\r\n<bsu-no-data\r\n [class.no-topborder]=\"!hideToolbar\"\r\n [class.noborder]=\"contextView.Grid_HideHeader && hideToolbar\"\r\n [simple]=\"true\"\r\n>\r\n</bsu-no-data>\r\n}\r\n\r\n<ng-template #headerTemplate let-columns let-moDataListCount>\r\n <bsu-barsa-table-header\r\n [sticky]=\"stickyEnable()\"\r\n [hasSecondaryColumns]=\"secondaryColumns.length > 0\"\r\n [class.has-toolbar]=\"!hideToolbar\"\r\n [style.pointer-events]=\"moDataListCount ? 'auto' : 'none'\"\r\n [tableWidth]=\"elWidth\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [resizedByUser]=\"resizedByUser\"\r\n [tableHeaderMode]=\"tableHeaderMode\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [allChecked]=\"allChecked\"\r\n [rtl]=\"rtl\"\r\n [actionList]=\"actionList\"\r\n [disableResponsive]=\"disableResponsive\"\r\n [isCheckList]=\"isCheckList\"\r\n [columns]=\"\r\n columns\r\n | filterColumnsByDetails: detailsColumns:rowIndicator\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [fitWidth]=\"fitWidth\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [contextMenuWidth]=\"contextMenuWidth\"\r\n [showViewButton]=\"showViewButton\"\r\n [deviceSize]=\"deviceSize\"\r\n [viewSetting]=\"viewSetting\"\r\n [hideHeader]=\"contextView.Grid_HideHeader\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [disableResize]=\"disableResize\"\r\n [disableHeaderContextMenu]=\"disableHeaderContextMenu\"\r\n (headerRender)=\"onSetTableHeaderDom($event)\"\r\n (columnResize)=\"onColumnResized($event)\"\r\n (columnResizing)=\"onColumnResizing($event)\"\r\n (fitToContent)=\"onFitToContent($event)\"\r\n (fitToContainer)=\"onFitToContainer()\"\r\n (freeColumnSize)=\"onFreeColumnSizing()\"\r\n (allCheckbox)=\"onAllCheckbox($event)\"\r\n (sortAscending)=\"onSortAscending($event)\"\r\n (sortDescending)=\"onSortDescending($event)\"\r\n (filter)=\"onFilter($event)\"\r\n (resetGridSettings)=\"resetGridSettings.emit()\"\r\n ></bsu-barsa-table-header>\r\n <!-- <div\r\n #headerBottomObserver\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onHeaderVisibilityChange($event, headerBottomObserver)\"\r\n ></div> -->\r\n</ng-template>\r\n<ng-template #bodyTemplate let-columns let-previewColumn=\"previewColumn\">\r\n <tbody\r\n #body\r\n fd-table-body\r\n [class.noborder]=\"viewSetting?.NoBodyBorders === true\"\r\n [noBorderX]=\"viewSetting?.NoHoriztonalBorders === true || previewColumn\"\r\n [noBorderY]=\"(popin && secondaryColumns.length > 0) || previewColumn\"\r\n >\r\n <ng-container>\r\n @for (mo of moDataList | multipleGroupBy: groupby; track _trackByRow(index, mo); let index = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n hasRowOlgo ? rowOlgoTemplate : rowTemplate;\r\n context: {\r\n $implicit: mo,\r\n index: index,\r\n rowNumber: mo.Id | rowNumber: pagingSetting:moDataList,\r\n rowIndicatorColor: !columns.length ? '' : (columns[0].Caption | rval: mo:columns),\r\n columns: columns | columnCustomComponent: viewSetting?.ColumnComponents?.MoDataList,\r\n secondaryColumns:\r\n secondaryColumns | columnCustomComponent: viewSetting?.ColumnComponents?.MoDataList,\r\n moDataList: moDataList,\r\n moDataListCount: moDataList.length,\r\n cartableTemplate: cartableTemplates[mo.RelatedMo?.$TypeDefId + '@' + mo.CartableSettings?.Id],\r\n previewColumn: previewColumn,\r\n detailsCollapsed: viewSetting?.DetailsSetting?.DetailsCollapsed === true,\r\n hideDetailsText: viewSetting?.DetailsSetting?.HideDetailsText === true\r\n }\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </tbody>\r\n</ng-template>\r\n<ng-template #footerTemplate let-columns>\r\n @if (hasSummary) {\r\n <tfoot fd-table-footer>\r\n <tr fd-table-row class=\"row-summary\">\r\n @if (isCheckList) {\r\n <td fd-table-cell columnResizer>\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n } @if (!isCheckList) {\r\n <td fd-table-cell class=\"single-select\">\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n } @for (column of columns; track column; let i = $index) {\r\n <td>\r\n @if (column.HasSummary) {\r\n <strong style=\"direction: ltr; display: block\">\r\n {{ moDataList | totalSummary: column.Name | number }}</strong\r\n >\r\n }\r\n </td>\r\n } @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <td fd-table-cell style=\"width: 100px\"></td>\r\n } @if (!hideOpenIcon && canView && (!inlineEditMode || !allowInlineEdit)) {\r\n <td fd-table-cell></td>\r\n }\r\n </tr>\r\n </tfoot>\r\n }\r\n</ng-template>\r\n<ng-template\r\n #rowOlgoTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n let-cartableTemplate=\"cartableTemplate\"\r\n let-secondaryColumns=\"secondaryColumns\"\r\n let-rowIndicatorColor=\"rowIndicatorColor\"\r\n let-rowNumber=\"rowNumber\"\r\n let-previewColumn=\"previewColumn\"\r\n let-detailsCollapsed=\"detailsCollapsed\"\r\n let-hideDetailsText=\"hideDetailsText\"\r\n>\r\n <bnrc-dynamic-item-component\r\n [component]=\"viewSetting.RowOlgo\"\r\n [mo]=\"mo\"\r\n [detailsCollapsed]=\"detailsCollapsed\"\r\n [hideDetailsText]=\"hideDetailsText\"\r\n [isLastChildGroup]=\"mo.$IsLastChildGroup\"\r\n [groupSummary]=\"groupSummary\"\r\n [showViewButton]=\"showViewButton\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [moDataList]=\"moDataList\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"rowNumber\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableTemplate]=\"cartableTemplate\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [dirtyColumns]=\"mo.$DirtyColumns\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsTextFunction]=\"viewSetting?.DetailsSetting?.ButtonTextFunction\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [coloringRow]=\"viewSetting?.ColoringRow\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [secondaryColumns]=\"secondaryColumns | filterColumnsByDetails: detailsColumns:rowIndicator\"\r\n [columns]=\"columns | filterColumnsByDetails: detailsColumns:rowIndicator\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [rowIndicatorColor]=\"rowIndicatorColor\"\r\n (events)=\"onOlgoEvents($event)\"\r\n >\r\n </bnrc-dynamic-item-component>\r\n</ng-template>\r\n<ng-template\r\n #rowTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-rowNumber=\"rowNumber\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n let-cartableTemplate=\"cartableTemplate\"\r\n let-secondaryColumns=\"secondaryColumns\"\r\n let-rowIndicatorColor=\"rowIndicatorColor\"\r\n let-previewColumn=\"previewColumn\"\r\n let-detailsCollapsed=\"detailsCollapsed\"\r\n let-hideDetailsText=\"hideDetailsText\"\r\n>\r\n <bsu-barsa-table-row\r\n [mo]=\"mo\"\r\n [dirtyColumns]=\"mo.$DirtyColumns\"\r\n [isLastChildGroup]=\"mo.$IsLastChildGroup\"\r\n [moDataList]=\"moDataList\"\r\n [hideDetailsText]=\"hideDetailsText\"\r\n [detailsCollapsed]=\"detailsCollapsed\"\r\n [groupSummary]=\"groupSummary\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [isMobile]=\"isMobile\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"rowNumber\"\r\n [coloringRow]=\"viewSetting?.ColoringRow\"\r\n [disableEllapsis]=\"viewSetting?.DisableEllapsis\"\r\n [showViewButton]=\"showViewButton\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableTemplate]=\"cartableTemplate\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [checkboxComponent]=\"viewSetting?.CheckboxComponent\"\r\n [secondaryColumns]=\"\r\n secondaryColumns\r\n | filterColumnsByDetails: detailsColumns:false\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [columns]=\"\r\n columns\r\n | filterColumnsByDetails: detailsColumns:rowIndicator\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [simpleInlineEdit]=\"simpleInlineEdit\"\r\n [noSaveInlineEditInServer]=\"simpleInlineEdit\"\r\n [actionList]=\"actionList\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [rowIndicatorColor]=\"rowIndicatorColor\"\r\n [previewColumn]=\"previewColumn\"\r\n (columnSummary)=\"columnSummary.emit($event)\"\r\n (resetWorkflowState)=\"resetWorkflowState.emit(mo)\"\r\n (escapeKey)=\"onEscapeKey($event)\"\r\n (expandClick)=\"onExpandClick($event)\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (workflowShareButtons)=\"onWorkflowShareButtons($event)\"\r\n (deselectAll)=\"onDeselectAll()\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (actionListClick)=\"onActionListClick(mo, index, $event)\"\r\n (selectNextInlineRecord)=\"onSelectNextInlineRecord($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (editFormPanelValueChange)=\"onEditFormPanelValueChange($event)\"\r\n (cartableFormClosed)=\"onCartableFormClosed($event)\"\r\n >\r\n </bsu-barsa-table-row>\r\n <!-- <div\r\n #rowBottom\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onRowVisibilityChange($event, index, rowBottom)\"\r\n ></div> -->\r\n</ng-template>\r\n<div #tableBottomObserve></div>\r\n", styles: [":host{display:block;width:100%;position:relative;padding-bottom:.2rem;overflow-x:auto;max-width:100vw}.table-fixed{table-layout:fixed}.table-fixed td{overflow:hidden}tr td{font-weight:inherit}::ng-deep span.fd-toolbar__spacer{display:none}.row-summary{position:relative}.row-summary .col-total-text{position:absolute;top:25%}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "hideOpenIcon", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i2.ColumnResizerDirective, selector: "[columnResizer]", inputs: ["disableResizer"] }, { kind: "component", type: i3.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3.TableFooterDirective, selector: "[fdTableFooter], [fd-table-footer]" }, { kind: "directive", type: i3.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "component", type: i4.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: i5.BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: ["allChecked", "isCheckList", "columns", "fitWidth", "contextMenuItems", "contextMenuWidth", "showViewButton", "hasSelected", "hideOpenIcon", "disableOverflowContextMenu", "inlineEditMode", "hideHeader", "showDetailsInRow", "viewSetting", "tableWidth", "resizedByUser", "disableResponsive", "actionList", "rowIndicator", "rtl", "sticky", "showRowNumber", "hasSecondaryColumns", "disableResize", "disableHeaderContextMenu", "deviceSize", "tableHeaderMode"], outputs: ["allCheckbox", "columnResize", "columnResizing", "fitToContent", "fitToContainer", "freeColumnSize", "sortAscending", "sortDescending", "filter", "resetGridSettings", "headerRender"] }, { kind: "component", type: i6.BarsaTableRowComponent, selector: "bsu-barsa-table-row", inputs: ["showDetailsInRow", "previewColumn", "columnComponents", "dirtyColumns", "detailsCollapsed"], outputs: ["columnSummary"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.FilterPipe, name: "filter" }, { kind: "pipe", type: i2.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i2.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.TotalSummaryPipe, name: "totalSummary" }, { kind: "pipe", type: i2.MergeFieldsToColumnsPipe, name: "mergeFieldsToColumns" }, { kind: "pipe", type: i2.FilterColumnsByDetailsPipe, name: "filterColumnsByDetails" }, { kind: "pipe", type: i2.ColumnCustomComponentPipe, name: "columnCustomComponent" }, { kind: "pipe", type: i2.RowNumberPipe, name: "rowNumber" }, { kind: "pipe", type: i2.FindPreviewColumnPipe, name: "findPreviewColumn" }, { kind: "pipe", type: i2.HideColumnsInmobilePipe, name: "hideColumnsInmobile" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
262
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiTableViewComponent, selector: "bsu-ui-table-view", inputs: { columnWidth: "columnWidth", minWidth: "minWidth", minHeight: "minHeight", disableResize: "disableResize", disableHeaderContextMenu: "disableHeaderContextMenu", rowResizer: "rowResizer", enableResizing: "enableResizing", disableFixedTableLayout: "disableFixedTableLayout" }, host: { properties: { "style.height.px": "this.height", "style.max-height": "this.maxHeight" } }, viewQueries: [{ propertyName: "_tableRef", first: true, predicate: ["tableTpl"], descendants: true, read: ElementRef, static: true }, { propertyName: "_tableHeaderComponent", first: true, predicate: BarsaTableHeaderComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<table\r\n fd-table\r\n #tableTpl\r\n #headerBottomObserver\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onTableVisibilityChange($event, headerBottomObserver)\"\r\n [popIn]=\"popin\"\r\n [class.table-fixed]=\"\r\n !contextView?.Grid_HideHeader && (!popin || secondaryColumns.length === 0) && !disableFixedTableLayout\r\n \"\r\n [noBorderX]=\"viewSetting?.NoHoriztonalBorders === true\"\r\n [noBorderY]=\"viewSetting?.NoVerticalBorders === true || (popin && secondaryColumns.length > 0)\"\r\n>\r\n @if (columns | mergeFieldsToColumns: viewSetting?.MergeFieldsToColumns?.MoDataList; as mergeFieldsToColumns) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate;\r\n context: { $implicit: mergeFieldsToColumns, moDataListCount: moDataList?.length }\r\n \"\r\n ></ng-container>\r\n @if (moDataList?.length) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate;\r\n context: { $implicit: mergeFieldsToColumns, previewColumn: allColumns | findPreviewColumn }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n } }\r\n</table>\r\n<!--renderColumn-->\r\n\r\n@if (!moDataList?.length) {\r\n<bsu-no-data\r\n [class.no-topborder]=\"!hideToolbar\"\r\n [class.noborder]=\"contextView.Grid_HideHeader && hideToolbar\"\r\n [simple]=\"true\"\r\n>\r\n</bsu-no-data>\r\n}\r\n\r\n<ng-template #headerTemplate let-columns let-moDataListCount>\r\n <bsu-barsa-table-header\r\n [sticky]=\"stickyEnable()\"\r\n [hasSecondaryColumns]=\"secondaryColumns.length > 0\"\r\n [class.has-toolbar]=\"!hideToolbar\"\r\n [style.pointer-events]=\"moDataListCount ? 'auto' : 'none'\"\r\n [tableWidth]=\"elWidth\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [resizedByUser]=\"resizedByUser\"\r\n [tableHeaderMode]=\"tableHeaderMode\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [allChecked]=\"allChecked\"\r\n [rtl]=\"rtl\"\r\n [actionList]=\"actionList\"\r\n [disableResponsive]=\"disableResponsive\"\r\n [isCheckList]=\"isCheckList\"\r\n [columns]=\"\r\n columns\r\n | filterColumnsByDetails: detailsColumns:rowIndicator\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [fitWidth]=\"fitWidth\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [contextMenuWidth]=\"contextMenuWidth\"\r\n [showViewButton]=\"showViewButton\"\r\n [deviceSize]=\"deviceSize\"\r\n [viewSetting]=\"viewSetting\"\r\n [hideHeader]=\"contextView.Grid_HideHeader\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [disableResize]=\"disableResize\"\r\n [disableHeaderContextMenu]=\"disableHeaderContextMenu\"\r\n (headerRender)=\"onSetTableHeaderDom($event)\"\r\n (columnResize)=\"onColumnResized($event)\"\r\n (columnResizing)=\"onColumnResizing($event)\"\r\n (fitToContent)=\"onFitToContent($event)\"\r\n (fitToContainer)=\"onFitToContainer()\"\r\n (freeColumnSize)=\"onFreeColumnSizing()\"\r\n (allCheckbox)=\"onAllCheckbox($event)\"\r\n (sortAscending)=\"onSortAscending($event)\"\r\n (sortDescending)=\"onSortDescending($event)\"\r\n (filter)=\"onFilter($event)\"\r\n (resetGridSettings)=\"resetGridSettings.emit()\"\r\n ></bsu-barsa-table-header>\r\n <!-- <div\r\n #headerBottomObserver\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onHeaderVisibilityChange($event, headerBottomObserver)\"\r\n ></div> -->\r\n</ng-template>\r\n<ng-template #bodyTemplate let-columns let-previewColumn=\"previewColumn\">\r\n <tbody\r\n #body\r\n fd-table-body\r\n [class.noborder]=\"viewSetting?.NoBodyBorders === true\"\r\n [noBorderX]=\"viewSetting?.NoHoriztonalBorders === true || previewColumn\"\r\n [noBorderY]=\"(popin && secondaryColumns.length > 0) || previewColumn\"\r\n >\r\n <ng-container>\r\n @for (mo of moDataList | multipleGroupBy: groupby; track _trackByRow(index, mo); let index = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n hasRowOlgo ? rowOlgoTemplate : rowTemplate;\r\n context: {\r\n $implicit: mo,\r\n index: index,\r\n rowNumber: mo.Id | rowNumber: pagingSetting:moDataList,\r\n rowIndicatorColor: !columns.length ? '' : (columns[0].Caption | rval: mo:columns),\r\n columns: columns | columnCustomComponent: viewSetting?.ColumnComponents?.MoDataList,\r\n secondaryColumns:\r\n secondaryColumns | columnCustomComponent: viewSetting?.ColumnComponents?.MoDataList,\r\n moDataList: moDataList,\r\n moDataListCount: moDataList.length,\r\n cartableTemplate: cartableTemplates[mo.RelatedMo?.$TypeDefId + '@' + mo.CartableSettings?.Id],\r\n previewColumn: previewColumn,\r\n detailsCollapsed: viewSetting?.DetailsSetting?.DetailsCollapsed === true,\r\n hideDetailsText: viewSetting?.DetailsSetting?.HideDetailsText === true\r\n }\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </tbody>\r\n</ng-template>\r\n<ng-template #footerTemplate let-columns>\r\n @if (hasSummary) {\r\n <tfoot fd-table-footer>\r\n <tr fd-table-row class=\"row-summary\">\r\n @if (isCheckList) {\r\n <td fd-table-cell columnResizer>\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n } @if (!isCheckList) {\r\n <td fd-table-cell class=\"single-select\">\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n } @for (column of columns; track column; let i = $index) {\r\n <td>\r\n @if (column.HasSummary) {\r\n <strong style=\"direction: ltr; display: block\">\r\n {{ moDataList | totalSummary: column.Name | number }}</strong\r\n >\r\n }\r\n </td>\r\n } @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <td fd-table-cell style=\"width: 100px\"></td>\r\n } @if (!hideOpenIcon && canView && (!inlineEditMode || !allowInlineEdit)) {\r\n <td fd-table-cell></td>\r\n }\r\n </tr>\r\n </tfoot>\r\n }\r\n</ng-template>\r\n<ng-template\r\n #rowOlgoTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n let-cartableTemplate=\"cartableTemplate\"\r\n let-secondaryColumns=\"secondaryColumns\"\r\n let-rowIndicatorColor=\"rowIndicatorColor\"\r\n let-rowNumber=\"rowNumber\"\r\n let-previewColumn=\"previewColumn\"\r\n let-detailsCollapsed=\"detailsCollapsed\"\r\n let-hideDetailsText=\"hideDetailsText\"\r\n>\r\n <bnrc-dynamic-item-component\r\n [component]=\"viewSetting.RowOlgo\"\r\n [mo]=\"mo\"\r\n [detailsCollapsed]=\"detailsCollapsed\"\r\n [hideDetailsText]=\"hideDetailsText\"\r\n [isLastChildGroup]=\"mo.$IsLastChildGroup\"\r\n [groupSummary]=\"groupSummary\"\r\n [showViewButton]=\"showViewButton\"\r\n [inlineEditWithoutSelection]=\"inlineEditWithoutSelection\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [moDataList]=\"moDataList\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"rowNumber\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableTemplate]=\"cartableTemplate\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [dirtyColumns]=\"mo.$DirtyColumns\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsTextFunction]=\"viewSetting?.DetailsSetting?.ButtonTextFunction\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [coloringRow]=\"viewSetting?.ColoringRow\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [secondaryColumns]=\"secondaryColumns | filterColumnsByDetails: detailsColumns:rowIndicator\"\r\n [columns]=\"columns | filterColumnsByDetails: detailsColumns:rowIndicator\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [rowIndicatorColor]=\"rowIndicatorColor\"\r\n (events)=\"onOlgoEvents($event)\"\r\n >\r\n </bnrc-dynamic-item-component>\r\n</ng-template>\r\n<ng-template\r\n #rowTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-rowNumber=\"rowNumber\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n let-cartableTemplate=\"cartableTemplate\"\r\n let-secondaryColumns=\"secondaryColumns\"\r\n let-rowIndicatorColor=\"rowIndicatorColor\"\r\n let-previewColumn=\"previewColumn\"\r\n let-detailsCollapsed=\"detailsCollapsed\"\r\n let-hideDetailsText=\"hideDetailsText\"\r\n>\r\n <bsu-barsa-table-row\r\n [mo]=\"mo\"\r\n [dirtyColumns]=\"mo.$DirtyColumns\"\r\n [inlineEditWithoutSelection]=\"inlineEditWithoutSelection\"\r\n [isLastChildGroup]=\"mo.$IsLastChildGroup\"\r\n [moDataList]=\"moDataList\"\r\n [hideDetailsText]=\"hideDetailsText\"\r\n [detailsCollapsed]=\"detailsCollapsed\"\r\n [groupSummary]=\"groupSummary\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [isMobile]=\"isMobile\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"rowNumber\"\r\n [coloringRow]=\"viewSetting?.ColoringRow\"\r\n [disableEllapsis]=\"viewSetting?.DisableEllapsis\"\r\n [showViewButton]=\"showViewButton\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableTemplate]=\"cartableTemplate\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [checkboxComponent]=\"viewSetting?.CheckboxComponent\"\r\n [secondaryColumns]=\"\r\n secondaryColumns\r\n | filterColumnsByDetails: detailsColumns:false\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [columns]=\"\r\n columns\r\n | filterColumnsByDetails: detailsColumns:rowIndicator\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [simpleInlineEdit]=\"simpleInlineEdit\"\r\n [noSaveInlineEditInServer]=\"simpleInlineEdit\"\r\n [actionList]=\"actionList\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [rowIndicatorColor]=\"rowIndicatorColor\"\r\n [previewColumn]=\"previewColumn\"\r\n (columnSummary)=\"columnSummary.emit($event)\"\r\n (resetWorkflowState)=\"resetWorkflowState.emit(mo)\"\r\n (escapeKey)=\"onEscapeKey($event)\"\r\n (expandClick)=\"onExpandClick($event)\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (workflowShareButtons)=\"onWorkflowShareButtons($event)\"\r\n (deselectAll)=\"onDeselectAll()\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (actionListClick)=\"onActionListClick(mo, index, $event)\"\r\n (selectNextInlineRecord)=\"onSelectNextInlineRecord($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (editFormPanelValueChange)=\"onEditFormPanelValueChange($event)\"\r\n (cartableFormClosed)=\"onCartableFormClosed($event)\"\r\n >\r\n </bsu-barsa-table-row>\r\n <!-- <div\r\n #rowBottom\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onRowVisibilityChange($event, index, rowBottom)\"\r\n ></div> -->\r\n</ng-template>\r\n<div #tableBottomObserve></div>\r\n", styles: [":host{display:block;width:100%;position:relative;padding-bottom:.2rem;overflow-x:auto;max-width:100vw}.table-fixed{table-layout:fixed}.table-fixed td{overflow:hidden}tr td{font-weight:inherit}::ng-deep span.fd-toolbar__spacer{display:none}.row-summary{position:relative}.row-summary .col-total-text{position:absolute;top:25%}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "hideOpenIcon", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i2.ColumnResizerDirective, selector: "[columnResizer]", inputs: ["disableResizer"] }, { kind: "component", type: i3.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3.TableFooterDirective, selector: "[fdTableFooter], [fd-table-footer]" }, { kind: "directive", type: i3.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "component", type: i4.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: i5.BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: ["allChecked", "isCheckList", "columns", "fitWidth", "contextMenuItems", "contextMenuWidth", "showViewButton", "hasSelected", "hideOpenIcon", "disableOverflowContextMenu", "inlineEditMode", "hideHeader", "showDetailsInRow", "viewSetting", "tableWidth", "resizedByUser", "disableResponsive", "actionList", "rowIndicator", "rtl", "sticky", "showRowNumber", "hasSecondaryColumns", "disableResize", "disableHeaderContextMenu", "deviceSize", "tableHeaderMode"], outputs: ["allCheckbox", "columnResize", "columnResizing", "fitToContent", "fitToContainer", "freeColumnSize", "sortAscending", "sortDescending", "filter", "resetGridSettings", "headerRender"] }, { kind: "component", type: i6.BarsaTableRowComponent, selector: "bsu-barsa-table-row", inputs: ["showDetailsInRow", "previewColumn", "columnComponents", "dirtyColumns", "detailsCollapsed"], outputs: ["columnSummary"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.FilterPipe, name: "filter" }, { kind: "pipe", type: i2.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i2.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.TotalSummaryPipe, name: "totalSummary" }, { kind: "pipe", type: i2.MergeFieldsToColumnsPipe, name: "mergeFieldsToColumns" }, { kind: "pipe", type: i2.FilterColumnsByDetailsPipe, name: "filterColumnsByDetails" }, { kind: "pipe", type: i2.ColumnCustomComponentPipe, name: "columnCustomComponent" }, { kind: "pipe", type: i2.RowNumberPipe, name: "rowNumber" }, { kind: "pipe", type: i2.FindPreviewColumnPipe, name: "findPreviewColumn" }, { kind: "pipe", type: i2.HideColumnsInmobilePipe, name: "hideColumnsInmobile" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
263
263
|
}
|
|
264
264
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiTableViewComponent, decorators: [{
|
|
265
265
|
type: Component,
|
|
266
|
-
args: [{ selector: 'bsu-ui-table-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<table\r\n fd-table\r\n #tableTpl\r\n #headerBottomObserver\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onTableVisibilityChange($event, headerBottomObserver)\"\r\n [popIn]=\"popin\"\r\n [class.table-fixed]=\"\r\n !contextView?.Grid_HideHeader && (!popin || secondaryColumns.length === 0) && !disableFixedTableLayout\r\n \"\r\n [noBorderX]=\"viewSetting?.NoHoriztonalBorders === true\"\r\n [noBorderY]=\"viewSetting?.NoVerticalBorders === true || (popin && secondaryColumns.length > 0)\"\r\n>\r\n @if (columns | mergeFieldsToColumns: viewSetting?.MergeFieldsToColumns?.MoDataList; as mergeFieldsToColumns) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate;\r\n context: { $implicit: mergeFieldsToColumns, moDataListCount: moDataList?.length }\r\n \"\r\n ></ng-container>\r\n @if (moDataList?.length) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate;\r\n context: { $implicit: mergeFieldsToColumns, previewColumn: allColumns | findPreviewColumn }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n } }\r\n</table>\r\n<!--renderColumn-->\r\n\r\n@if (!moDataList?.length) {\r\n<bsu-no-data\r\n [class.no-topborder]=\"!hideToolbar\"\r\n [class.noborder]=\"contextView.Grid_HideHeader && hideToolbar\"\r\n [simple]=\"true\"\r\n>\r\n</bsu-no-data>\r\n}\r\n\r\n<ng-template #headerTemplate let-columns let-moDataListCount>\r\n <bsu-barsa-table-header\r\n [sticky]=\"stickyEnable()\"\r\n [hasSecondaryColumns]=\"secondaryColumns.length > 0\"\r\n [class.has-toolbar]=\"!hideToolbar\"\r\n [style.pointer-events]=\"moDataListCount ? 'auto' : 'none'\"\r\n [tableWidth]=\"elWidth\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [resizedByUser]=\"resizedByUser\"\r\n [tableHeaderMode]=\"tableHeaderMode\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [allChecked]=\"allChecked\"\r\n [rtl]=\"rtl\"\r\n [actionList]=\"actionList\"\r\n [disableResponsive]=\"disableResponsive\"\r\n [isCheckList]=\"isCheckList\"\r\n [columns]=\"\r\n columns\r\n | filterColumnsByDetails: detailsColumns:rowIndicator\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [fitWidth]=\"fitWidth\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [contextMenuWidth]=\"contextMenuWidth\"\r\n [showViewButton]=\"showViewButton\"\r\n [deviceSize]=\"deviceSize\"\r\n [viewSetting]=\"viewSetting\"\r\n [hideHeader]=\"contextView.Grid_HideHeader\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [disableResize]=\"disableResize\"\r\n [disableHeaderContextMenu]=\"disableHeaderContextMenu\"\r\n (headerRender)=\"onSetTableHeaderDom($event)\"\r\n (columnResize)=\"onColumnResized($event)\"\r\n (columnResizing)=\"onColumnResizing($event)\"\r\n (fitToContent)=\"onFitToContent($event)\"\r\n (fitToContainer)=\"onFitToContainer()\"\r\n (freeColumnSize)=\"onFreeColumnSizing()\"\r\n (allCheckbox)=\"onAllCheckbox($event)\"\r\n (sortAscending)=\"onSortAscending($event)\"\r\n (sortDescending)=\"onSortDescending($event)\"\r\n (filter)=\"onFilter($event)\"\r\n (resetGridSettings)=\"resetGridSettings.emit()\"\r\n ></bsu-barsa-table-header>\r\n <!-- <div\r\n #headerBottomObserver\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onHeaderVisibilityChange($event, headerBottomObserver)\"\r\n ></div> -->\r\n</ng-template>\r\n<ng-template #bodyTemplate let-columns let-previewColumn=\"previewColumn\">\r\n <tbody\r\n #body\r\n fd-table-body\r\n [class.noborder]=\"viewSetting?.NoBodyBorders === true\"\r\n [noBorderX]=\"viewSetting?.NoHoriztonalBorders === true || previewColumn\"\r\n [noBorderY]=\"(popin && secondaryColumns.length > 0) || previewColumn\"\r\n >\r\n <ng-container>\r\n @for (mo of moDataList | multipleGroupBy: groupby; track _trackByRow(index, mo); let index = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n hasRowOlgo ? rowOlgoTemplate : rowTemplate;\r\n context: {\r\n $implicit: mo,\r\n index: index,\r\n rowNumber: mo.Id | rowNumber: pagingSetting:moDataList,\r\n rowIndicatorColor: !columns.length ? '' : (columns[0].Caption | rval: mo:columns),\r\n columns: columns | columnCustomComponent: viewSetting?.ColumnComponents?.MoDataList,\r\n secondaryColumns:\r\n secondaryColumns | columnCustomComponent: viewSetting?.ColumnComponents?.MoDataList,\r\n moDataList: moDataList,\r\n moDataListCount: moDataList.length,\r\n cartableTemplate: cartableTemplates[mo.RelatedMo?.$TypeDefId + '@' + mo.CartableSettings?.Id],\r\n previewColumn: previewColumn,\r\n detailsCollapsed: viewSetting?.DetailsSetting?.DetailsCollapsed === true,\r\n hideDetailsText: viewSetting?.DetailsSetting?.HideDetailsText === true\r\n }\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </tbody>\r\n</ng-template>\r\n<ng-template #footerTemplate let-columns>\r\n @if (hasSummary) {\r\n <tfoot fd-table-footer>\r\n <tr fd-table-row class=\"row-summary\">\r\n @if (isCheckList) {\r\n <td fd-table-cell columnResizer>\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n } @if (!isCheckList) {\r\n <td fd-table-cell class=\"single-select\">\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n } @for (column of columns; track column; let i = $index) {\r\n <td>\r\n @if (column.HasSummary) {\r\n <strong style=\"direction: ltr; display: block\">\r\n {{ moDataList | totalSummary: column.Name | number }}</strong\r\n >\r\n }\r\n </td>\r\n } @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <td fd-table-cell style=\"width: 100px\"></td>\r\n } @if (!hideOpenIcon && canView && (!inlineEditMode || !allowInlineEdit)) {\r\n <td fd-table-cell></td>\r\n }\r\n </tr>\r\n </tfoot>\r\n }\r\n</ng-template>\r\n<ng-template\r\n #rowOlgoTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n let-cartableTemplate=\"cartableTemplate\"\r\n let-secondaryColumns=\"secondaryColumns\"\r\n let-rowIndicatorColor=\"rowIndicatorColor\"\r\n let-rowNumber=\"rowNumber\"\r\n let-previewColumn=\"previewColumn\"\r\n let-detailsCollapsed=\"detailsCollapsed\"\r\n let-hideDetailsText=\"hideDetailsText\"\r\n>\r\n <bnrc-dynamic-item-component\r\n [component]=\"viewSetting.RowOlgo\"\r\n [mo]=\"mo\"\r\n [detailsCollapsed]=\"detailsCollapsed\"\r\n [hideDetailsText]=\"hideDetailsText\"\r\n [isLastChildGroup]=\"mo.$IsLastChildGroup\"\r\n [groupSummary]=\"groupSummary\"\r\n [showViewButton]=\"showViewButton\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [moDataList]=\"moDataList\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"rowNumber\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableTemplate]=\"cartableTemplate\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [dirtyColumns]=\"mo.$DirtyColumns\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsTextFunction]=\"viewSetting?.DetailsSetting?.ButtonTextFunction\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [coloringRow]=\"viewSetting?.ColoringRow\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [secondaryColumns]=\"secondaryColumns | filterColumnsByDetails: detailsColumns:rowIndicator\"\r\n [columns]=\"columns | filterColumnsByDetails: detailsColumns:rowIndicator\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [rowIndicatorColor]=\"rowIndicatorColor\"\r\n (events)=\"onOlgoEvents($event)\"\r\n >\r\n </bnrc-dynamic-item-component>\r\n</ng-template>\r\n<ng-template\r\n #rowTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-rowNumber=\"rowNumber\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n let-cartableTemplate=\"cartableTemplate\"\r\n let-secondaryColumns=\"secondaryColumns\"\r\n let-rowIndicatorColor=\"rowIndicatorColor\"\r\n let-previewColumn=\"previewColumn\"\r\n let-detailsCollapsed=\"detailsCollapsed\"\r\n let-hideDetailsText=\"hideDetailsText\"\r\n>\r\n <bsu-barsa-table-row\r\n [mo]=\"mo\"\r\n [dirtyColumns]=\"mo.$DirtyColumns\"\r\n [isLastChildGroup]=\"mo.$IsLastChildGroup\"\r\n [moDataList]=\"moDataList\"\r\n [hideDetailsText]=\"hideDetailsText\"\r\n [detailsCollapsed]=\"detailsCollapsed\"\r\n [groupSummary]=\"groupSummary\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [isMobile]=\"isMobile\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"rowNumber\"\r\n [coloringRow]=\"viewSetting?.ColoringRow\"\r\n [disableEllapsis]=\"viewSetting?.DisableEllapsis\"\r\n [showViewButton]=\"showViewButton\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableTemplate]=\"cartableTemplate\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [checkboxComponent]=\"viewSetting?.CheckboxComponent\"\r\n [secondaryColumns]=\"\r\n secondaryColumns\r\n | filterColumnsByDetails: detailsColumns:false\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [columns]=\"\r\n columns\r\n | filterColumnsByDetails: detailsColumns:rowIndicator\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [simpleInlineEdit]=\"simpleInlineEdit\"\r\n [noSaveInlineEditInServer]=\"simpleInlineEdit\"\r\n [actionList]=\"actionList\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [rowIndicatorColor]=\"rowIndicatorColor\"\r\n [previewColumn]=\"previewColumn\"\r\n (columnSummary)=\"columnSummary.emit($event)\"\r\n (resetWorkflowState)=\"resetWorkflowState.emit(mo)\"\r\n (escapeKey)=\"onEscapeKey($event)\"\r\n (expandClick)=\"onExpandClick($event)\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (workflowShareButtons)=\"onWorkflowShareButtons($event)\"\r\n (deselectAll)=\"onDeselectAll()\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (actionListClick)=\"onActionListClick(mo, index, $event)\"\r\n (selectNextInlineRecord)=\"onSelectNextInlineRecord($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (editFormPanelValueChange)=\"onEditFormPanelValueChange($event)\"\r\n (cartableFormClosed)=\"onCartableFormClosed($event)\"\r\n >\r\n </bsu-barsa-table-row>\r\n <!-- <div\r\n #rowBottom\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onRowVisibilityChange($event, index, rowBottom)\"\r\n ></div> -->\r\n</ng-template>\r\n<div #tableBottomObserve></div>\r\n", styles: [":host{display:block;width:100%;position:relative;padding-bottom:.2rem;overflow-x:auto;max-width:100vw}.table-fixed{table-layout:fixed}.table-fixed td{overflow:hidden}tr td{font-weight:inherit}::ng-deep span.fd-toolbar__spacer{display:none}.row-summary{position:relative}.row-summary .col-total-text{position:absolute;top:25%}\n"] }]
|
|
266
|
+
args: [{ selector: 'bsu-ui-table-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<table\r\n fd-table\r\n #tableTpl\r\n #headerBottomObserver\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onTableVisibilityChange($event, headerBottomObserver)\"\r\n [popIn]=\"popin\"\r\n [class.table-fixed]=\"\r\n !contextView?.Grid_HideHeader && (!popin || secondaryColumns.length === 0) && !disableFixedTableLayout\r\n \"\r\n [noBorderX]=\"viewSetting?.NoHoriztonalBorders === true\"\r\n [noBorderY]=\"viewSetting?.NoVerticalBorders === true || (popin && secondaryColumns.length > 0)\"\r\n>\r\n @if (columns | mergeFieldsToColumns: viewSetting?.MergeFieldsToColumns?.MoDataList; as mergeFieldsToColumns) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate;\r\n context: { $implicit: mergeFieldsToColumns, moDataListCount: moDataList?.length }\r\n \"\r\n ></ng-container>\r\n @if (moDataList?.length) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n bodyTemplate;\r\n context: { $implicit: mergeFieldsToColumns, previewColumn: allColumns | findPreviewColumn }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n } }\r\n</table>\r\n<!--renderColumn-->\r\n\r\n@if (!moDataList?.length) {\r\n<bsu-no-data\r\n [class.no-topborder]=\"!hideToolbar\"\r\n [class.noborder]=\"contextView.Grid_HideHeader && hideToolbar\"\r\n [simple]=\"true\"\r\n>\r\n</bsu-no-data>\r\n}\r\n\r\n<ng-template #headerTemplate let-columns let-moDataListCount>\r\n <bsu-barsa-table-header\r\n [sticky]=\"stickyEnable()\"\r\n [hasSecondaryColumns]=\"secondaryColumns.length > 0\"\r\n [class.has-toolbar]=\"!hideToolbar\"\r\n [style.pointer-events]=\"moDataListCount ? 'auto' : 'none'\"\r\n [tableWidth]=\"elWidth\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [resizedByUser]=\"resizedByUser\"\r\n [tableHeaderMode]=\"tableHeaderMode\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [allChecked]=\"allChecked\"\r\n [rtl]=\"rtl\"\r\n [actionList]=\"actionList\"\r\n [disableResponsive]=\"disableResponsive\"\r\n [isCheckList]=\"isCheckList\"\r\n [columns]=\"\r\n columns\r\n | filterColumnsByDetails: detailsColumns:rowIndicator\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [fitWidth]=\"fitWidth\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [contextMenuWidth]=\"contextMenuWidth\"\r\n [showViewButton]=\"showViewButton\"\r\n [deviceSize]=\"deviceSize\"\r\n [viewSetting]=\"viewSetting\"\r\n [hideHeader]=\"contextView.Grid_HideHeader\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [disableResize]=\"disableResize\"\r\n [disableHeaderContextMenu]=\"disableHeaderContextMenu\"\r\n (headerRender)=\"onSetTableHeaderDom($event)\"\r\n (columnResize)=\"onColumnResized($event)\"\r\n (columnResizing)=\"onColumnResizing($event)\"\r\n (fitToContent)=\"onFitToContent($event)\"\r\n (fitToContainer)=\"onFitToContainer()\"\r\n (freeColumnSize)=\"onFreeColumnSizing()\"\r\n (allCheckbox)=\"onAllCheckbox($event)\"\r\n (sortAscending)=\"onSortAscending($event)\"\r\n (sortDescending)=\"onSortDescending($event)\"\r\n (filter)=\"onFilter($event)\"\r\n (resetGridSettings)=\"resetGridSettings.emit()\"\r\n ></bsu-barsa-table-header>\r\n <!-- <div\r\n #headerBottomObserver\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onHeaderVisibilityChange($event, headerBottomObserver)\"\r\n ></div> -->\r\n</ng-template>\r\n<ng-template #bodyTemplate let-columns let-previewColumn=\"previewColumn\">\r\n <tbody\r\n #body\r\n fd-table-body\r\n [class.noborder]=\"viewSetting?.NoBodyBorders === true\"\r\n [noBorderX]=\"viewSetting?.NoHoriztonalBorders === true || previewColumn\"\r\n [noBorderY]=\"(popin && secondaryColumns.length > 0) || previewColumn\"\r\n >\r\n <ng-container>\r\n @for (mo of moDataList | multipleGroupBy: groupby; track _trackByRow(index, mo); let index = $index) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n hasRowOlgo ? rowOlgoTemplate : rowTemplate;\r\n context: {\r\n $implicit: mo,\r\n index: index,\r\n rowNumber: mo.Id | rowNumber: pagingSetting:moDataList,\r\n rowIndicatorColor: !columns.length ? '' : (columns[0].Caption | rval: mo:columns),\r\n columns: columns | columnCustomComponent: viewSetting?.ColumnComponents?.MoDataList,\r\n secondaryColumns:\r\n secondaryColumns | columnCustomComponent: viewSetting?.ColumnComponents?.MoDataList,\r\n moDataList: moDataList,\r\n moDataListCount: moDataList.length,\r\n cartableTemplate: cartableTemplates[mo.RelatedMo?.$TypeDefId + '@' + mo.CartableSettings?.Id],\r\n previewColumn: previewColumn,\r\n detailsCollapsed: viewSetting?.DetailsSetting?.DetailsCollapsed === true,\r\n hideDetailsText: viewSetting?.DetailsSetting?.HideDetailsText === true\r\n }\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </tbody>\r\n</ng-template>\r\n<ng-template #footerTemplate let-columns>\r\n @if (hasSummary) {\r\n <tfoot fd-table-footer>\r\n <tr fd-table-row class=\"row-summary\">\r\n @if (isCheckList) {\r\n <td fd-table-cell columnResizer>\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n } @if (!isCheckList) {\r\n <td fd-table-cell class=\"single-select\">\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n } @for (column of columns; track column; let i = $index) {\r\n <td>\r\n @if (column.HasSummary) {\r\n <strong style=\"direction: ltr; display: block\">\r\n {{ moDataList | totalSummary: column.Name | number }}</strong\r\n >\r\n }\r\n </td>\r\n } @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <td fd-table-cell style=\"width: 100px\"></td>\r\n } @if (!hideOpenIcon && canView && (!inlineEditMode || !allowInlineEdit)) {\r\n <td fd-table-cell></td>\r\n }\r\n </tr>\r\n </tfoot>\r\n }\r\n</ng-template>\r\n<ng-template\r\n #rowOlgoTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n let-cartableTemplate=\"cartableTemplate\"\r\n let-secondaryColumns=\"secondaryColumns\"\r\n let-rowIndicatorColor=\"rowIndicatorColor\"\r\n let-rowNumber=\"rowNumber\"\r\n let-previewColumn=\"previewColumn\"\r\n let-detailsCollapsed=\"detailsCollapsed\"\r\n let-hideDetailsText=\"hideDetailsText\"\r\n>\r\n <bnrc-dynamic-item-component\r\n [component]=\"viewSetting.RowOlgo\"\r\n [mo]=\"mo\"\r\n [detailsCollapsed]=\"detailsCollapsed\"\r\n [hideDetailsText]=\"hideDetailsText\"\r\n [isLastChildGroup]=\"mo.$IsLastChildGroup\"\r\n [groupSummary]=\"groupSummary\"\r\n [showViewButton]=\"showViewButton\"\r\n [inlineEditWithoutSelection]=\"inlineEditWithoutSelection\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [moDataList]=\"moDataList\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"rowNumber\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableTemplate]=\"cartableTemplate\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [dirtyColumns]=\"mo.$DirtyColumns\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsTextFunction]=\"viewSetting?.DetailsSetting?.ButtonTextFunction\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [coloringRow]=\"viewSetting?.ColoringRow\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [secondaryColumns]=\"secondaryColumns | filterColumnsByDetails: detailsColumns:rowIndicator\"\r\n [columns]=\"columns | filterColumnsByDetails: detailsColumns:rowIndicator\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [rowIndicatorColor]=\"rowIndicatorColor\"\r\n (events)=\"onOlgoEvents($event)\"\r\n >\r\n </bnrc-dynamic-item-component>\r\n</ng-template>\r\n<ng-template\r\n #rowTemplate\r\n let-mo\r\n let-index=\"index\"\r\n let-rowNumber=\"rowNumber\"\r\n let-columns=\"columns\"\r\n let-moDataListCount=\"moDataListCount\"\r\n let-moDataList=\"moDataList\"\r\n let-cartableTemplate=\"cartableTemplate\"\r\n let-secondaryColumns=\"secondaryColumns\"\r\n let-rowIndicatorColor=\"rowIndicatorColor\"\r\n let-previewColumn=\"previewColumn\"\r\n let-detailsCollapsed=\"detailsCollapsed\"\r\n let-hideDetailsText=\"hideDetailsText\"\r\n>\r\n <bsu-barsa-table-row\r\n [mo]=\"mo\"\r\n [dirtyColumns]=\"mo.$DirtyColumns\"\r\n [inlineEditWithoutSelection]=\"inlineEditWithoutSelection\"\r\n [isLastChildGroup]=\"mo.$IsLastChildGroup\"\r\n [moDataList]=\"moDataList\"\r\n [hideDetailsText]=\"hideDetailsText\"\r\n [detailsCollapsed]=\"detailsCollapsed\"\r\n [groupSummary]=\"groupSummary\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [isMobile]=\"isMobile\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"rowNumber\"\r\n [coloringRow]=\"viewSetting?.ColoringRow\"\r\n [disableEllapsis]=\"viewSetting?.DisableEllapsis\"\r\n [showViewButton]=\"showViewButton\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableTemplate]=\"cartableTemplate\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [checkboxComponent]=\"viewSetting?.CheckboxComponent\"\r\n [secondaryColumns]=\"\r\n secondaryColumns\r\n | filterColumnsByDetails: detailsColumns:false\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [columns]=\"\r\n columns\r\n | filterColumnsByDetails: detailsColumns:rowIndicator\r\n | filter: { IsPreview: false }\r\n | hideColumnsInmobile: viewSetting?.HideColumnsInMobile\r\n \"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [simpleInlineEdit]=\"simpleInlineEdit\"\r\n [noSaveInlineEditInServer]=\"simpleInlineEdit\"\r\n [actionList]=\"actionList\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n [rowIndicator]=\"rowIndicator\"\r\n [rowIndicatorColor]=\"rowIndicatorColor\"\r\n [previewColumn]=\"previewColumn\"\r\n (columnSummary)=\"columnSummary.emit($event)\"\r\n (resetWorkflowState)=\"resetWorkflowState.emit(mo)\"\r\n (escapeKey)=\"onEscapeKey($event)\"\r\n (expandClick)=\"onExpandClick($event)\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (workflowShareButtons)=\"onWorkflowShareButtons($event)\"\r\n (deselectAll)=\"onDeselectAll()\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (actionListClick)=\"onActionListClick(mo, index, $event)\"\r\n (selectNextInlineRecord)=\"onSelectNextInlineRecord($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (editFormPanelValueChange)=\"onEditFormPanelValueChange($event)\"\r\n (cartableFormClosed)=\"onCartableFormClosed($event)\"\r\n >\r\n </bsu-barsa-table-row>\r\n <!-- <div\r\n #rowBottom\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onRowVisibilityChange($event, index, rowBottom)\"\r\n ></div> -->\r\n</ng-template>\r\n<div #tableBottomObserve></div>\r\n", styles: [":host{display:block;width:100%;position:relative;padding-bottom:.2rem;overflow-x:auto;max-width:100vw}.table-fixed{table-layout:fixed}.table-fixed td{overflow:hidden}tr td{font-weight:inherit}::ng-deep span.fd-toolbar__spacer{display:none}.row-summary{position:relative}.row-summary .col-total-text{position:absolute;top:25%}\n"] }]
|
|
267
267
|
}], propDecorators: { _tableRef: [{
|
|
268
268
|
type: ViewChild,
|
|
269
269
|
args: ['tableTpl', { static: true, read: ElementRef }]
|
|
@@ -293,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
293
293
|
type: HostBinding,
|
|
294
294
|
args: ['style.max-height']
|
|
295
295
|
}] } });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUVILHVCQUF1QixFQUV2QixvQkFBb0IsRUFFcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixrQ0FBa0MsRUFDbEMsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixpQ0FBaUMsRUFDakMsaUJBQWlCLEVBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7O0FBUy9GLE1BQU0sT0FBTyxvQkFDVCxTQUFRLHVCQUEyQztJQVJ2RDs7UUFxQm9DLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2pFLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFHaEIscUJBQWdCLEdBQW1FLEVBQUUsQ0FBQztRQUV0RixvQkFBZSxHQUFHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztRQUN0RCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3BDLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDNUMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLHNCQUFpQixHQUFHLENBQUMsQ0FBQztRQUV0QixvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQUM1QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsYUFBUSxHQUFHLGlCQUFpQixFQUFFLENBQUM7S0FtUGxDO0lBbFBHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9FLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQjtZQUM1QyxDQUFDLENBQUMsb0JBQW9CLENBQUMsY0FBYztZQUNyQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsZUFBZTtRQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMvRyxJQUFJLGdCQUFnQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksaUJBQWlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNyRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUNELElBQUksWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxnQkFBZ0I7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG9CQUFvQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsR0FBRztRQUMxQixJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0wsQ0FBQztJQUNELGdCQUFnQixDQUFDLENBQThDO1FBQzNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsZUFBZSxDQUFDLEdBQTZCO1FBQ3pDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLG9CQUFvQixDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztRQUMzRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNyRCwwQkFBMEI7UUFDMUIsNkJBQTZCO0lBQ2pDLENBQUM7SUFDRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsZUFBZSxHQUFHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztRQUMzRCxJQUFJLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELGNBQWMsQ0FBQyxDQUE0RDtRQUN2RSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztRQUMzRCxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBRztRQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztRQUMxQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDekMsQ0FBQztJQUNELHdCQUF3QixDQUFDLENBQUMsRUFBRSxHQUFHO1FBQzNCLE9BQU87UUFDUCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNMLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUc7UUFDL0IsT0FBTztRQUNQLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFDckUsQ0FBQztnQkFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFFdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELHlDQUF5QztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUNPLGtCQUFrQjtRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNPLCtCQUErQjtRQUNuQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDTyxlQUFlO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUNPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFDTyxTQUFTLENBQUMsUUFBa0I7UUFDaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRiwyQkFBMkI7UUFFM0IsSUFBSSxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRixJQUFJLFdBQVcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUNPLHlCQUF5QixDQUFDLEdBQWdCO1FBQzlDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM3Qyw4REFBOEQ7WUFDOUQsdUJBQXVCO1lBQ3ZCLDBFQUEwRTtZQUMxRSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUV4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNMLENBQUM7SUFFUyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDcEIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN2RSxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ1Msc0JBQXNCLENBQUMsVUFBaUMsRUFBRSxPQUEyQjtRQUMzRixRQUFRLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixLQUFLLG9CQUFvQixDQUFDLGNBQWM7Z0JBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMxQyxNQUFNO1lBQ1YsS0FBSyxvQkFBb0IsQ0FBQyxlQUFlO2dCQUNyQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCxNQUFNO1lBQ1YsS0FBSyxvQkFBb0IsQ0FBQyxjQUFjO2dCQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDMUMsTUFBTTtRQUNkLENBQUM7SUFDTCxDQUFDO0lBQ1MsWUFBWSxDQUFDLFVBQVUsRUFBRSxPQUFPO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBNEIsQ0FBQztRQUNwRCxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0csQ0FBQztJQUNTLHNCQUFzQixDQUFDLFVBQWlDLEVBQUUsT0FBMkI7UUFDM0Ysc0JBQXNCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDUyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU87UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsYUFBNEIsQ0FBQztRQUNsRSxrQ0FBa0MsQ0FDOUIsS0FBSyxFQUNMLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLHdCQUF3QixFQUM3QixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxPQUFPLENBQ2YsQ0FBQztJQUNOLENBQUM7SUFDUyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU87UUFDekMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDUyxVQUFVLENBQUMsWUFBb0I7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7UUFDL0IsQ0FBQztJQUNMLENBQUM7SUFDUyxjQUFjLENBQUMsaUJBQWlCO1FBQ3RDLElBQ0ksSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUTtZQUMvQixDQUFDLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQ2xFLENBQUM7WUFDQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFDUyxzQkFBc0IsQ0FBQyxHQUFXO1FBQ3hDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzVDLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7K0dBcFJRLG9CQUFvQjttR0FBcEIsb0JBQW9CLHlnQkFJZ0IsVUFBVSxtRkFDNUMseUJBQXlCLDRGQzNDeEMsc3ZlQXlWQTs7NEZEblRhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLOzhCQU0wQyxTQUFTO3NCQUFuRSxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDbkIscUJBQXFCO3NCQUExRCxTQUFTO3VCQUFDLHlCQUF5QjtnQkFDM0IsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDMEIsTUFBTTtzQkFBckMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ0csU0FBUztzQkFBekMsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBzaWduYWwsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LFxyXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcclxuICAgIFRhYmxlSGVhZGVyV2lkdGhNb2RlLFxyXG4gICAgQ29sdW1uUmVzaXplZEFyZ3MsXHJcbiAgICBjYWxjQ29udGV4dE1lbnVXaWR0aCxcclxuICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoLFxyXG4gICAgY2FsY3VsYXRlQ29sdW1uV2lkdGhGaXRUb0NvbnRhaW5lcixcclxuICAgIGNhbGN1bGF0ZUZyZWVDb2x1bW5TaXplLFxyXG4gICAgY2FsY3VsYXRlQ29sdW1uQ29udGVudCxcclxuICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aCxcclxuICAgIGdldERldmljZUlzTW9iaWxlXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcclxuaW1wb3J0IHsgQmFyc2FUYWJsZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktdGFibGUtdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS10YWJsZS12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaVRhYmxlVmlld0NvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxVaVRhYmxlVmlld1NldHRpbmc+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzXHJcbntcclxuICAgIEBWaWV3Q2hpbGQoJ3RhYmxlVHBsJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgX3RhYmxlUmVmOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZChCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50KSBfdGFibGVIZWFkZXJDb21wb25lbnQ6IEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjb2x1bW5XaWR0aDogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgbWluV2lkdGg7XHJcbiAgICBASW5wdXQoKSBtaW5IZWlnaHQ7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzaXplO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZUhlYWRlckNvbnRleHRNZW51O1xyXG4gICAgQElucHV0KCkgcm93UmVzaXplcjtcclxuICAgIEBJbnB1dCgpIGVuYWJsZVJlc2l6aW5nO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZUZpeGVkVGFibGVMYXlvdXQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5weCcpIGhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC1oZWlnaHQnKSBtYXhIZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgX3dpZHRoID0gJzEwMCUnO1xyXG4gICAgc2hvd0RldGFpbHNJblJvdzogYm9vbGVhbjtcclxuICAgIGhhc1Jvd09sZ286IGJvb2xlYW47XHJcbiAgICBjb2x1bW5Db21wb25lbnRzOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgY29tcG9uZW50OiBNZXRhb2JqZWN0RGF0YU1vZGVsIH1bXSA9IFtdO1xyXG4gICAgcm93SW5kaWNhdG9yOiBib29sZWFuO1xyXG4gICAgdGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XHJcbiAgICBzdGlja3lFbmFibGUgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgcm93VmlzaWJpbHR5Q2hhbmdlID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIHRhYmxlSGVhZGVyRG9tOiBIVE1MRWxlbWVudDtcclxuICAgIF9oZWFkZXJUb3AkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gICAgcm93VmlzaWJsZSQgPSBuZXcgU3ViamVjdDx7IGluZGV4OyBkb20gfT4oKTtcclxuICAgIF9pc1BhcmVudFdpZHRoU2V0ID0gZmFsc2U7XHJcbiAgICB0YWJsZUhlYWRlclRvcCA9IDA7XHJcbiAgICB0YWJsZUhlYWRlckhlaWdodCA9IDA7XHJcbiAgICBoZWFkZXJPYnNlcnZlckRvbTogSFRNTEVsZW1lbnQ7XHJcbiAgICBub3RWaXNpYmxlSXRlbXM6IG51bWJlcltdID0gW107XHJcbiAgICB2aXNpYmxlSXRlbXM6IG51bWJlcltdID0gW107XHJcbiAgICBvbGRXaWR0aCA9IDA7XHJcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLndpbmRvd1Jlc2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB4ICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LXdpZHRoJywgeCArICdweCcpO1xyXG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVGhXaWR0aCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaGFzUm93T2xnbyA9IHRoaXMudmlld1NldHRpbmc/LlJvd09sZ28/LlNlbGVjdG9yO1xyXG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy52aWV3U2V0dGluZz8uQm9keUhlaWdodDtcclxuICAgICAgICB0aGlzLl9zZXRIYXNTdW1tZXJ5KHRoaXMuY2FydGFibGVDaGlsZHNNbyk7XHJcbiAgICAgICAgdGhpcy5fc2V0SGVpZ2h0KHRoaXMucGFyZW50SGVpZ2h0KTtcclxuICAgICAgICB0aGlzLl9zZXRXaWR0aCgpO1xyXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XHJcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlck1vZGUgPSB0aGlzLmdyaWRGcmVlQ29sdW1uU2l6aW5nXHJcbiAgICAgICAgICAgID8gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemVcclxuICAgICAgICAgICAgOiBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjtcclxuICAgICAgICB0aGlzLl9jYWxjQ29udGV4dE1lbnVXaWR0aCh0aGlzLmNvbnRleHRNZW51SXRlbXMpO1xyXG4gICAgfVxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgaWYgKHgpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3h9cHhgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgeyBjYXJ0YWJsZVRlbXBsYXRlcywgcGFyZW50SGVpZ2h0LCBjb250ZXh0TWVudUl0ZW1zLCBjb2x1bW5zQ291bnQsIGNvbHVtbnMsIHNlY29uZGFyeUNvbHVtbnMgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgIWNvbnRleHRNZW51SXRlbXMuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2FydGFibGVUZW1wbGF0ZXMgJiYgIWNhcnRhYmxlVGVtcGxhdGVzLmZpcnN0Q2hhbmdlICYmICF0aGlzLmhhc1N1bW1hcnkpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGNvbHVtbnNDb3VudCAmJiAhY29sdW1uc0NvdW50LmZpcnN0Q2hhbmdlKSB8fCAoc2Vjb25kYXJ5Q29sdW1ucyAmJiAhc2Vjb25kYXJ5Q29sdW1ucy5maXJzdENoYW5nZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHRoaXMubW9EYXRhTGlzdCwgY29sdW1ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyZW50SGVpZ2h0ICYmICFwYXJlbnRIZWlnaHQuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGVpZ2h0KHBhcmVudEhlaWdodC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgIH1cclxuICAgIF9jYWxjQ29udGV4dE1lbnVXaWR0aChjb250ZXh0TWVudUl0ZW1zKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudVdpZHRoID0gY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcywgdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudSk7XHJcbiAgICB9XHJcbiAgICBvblRhYmxlVmlzaWJpbGl0eUNoYW5nZShlLCBkb20pOiB2b2lkIHtcclxuICAgICAgICBpZiAoZSA9PT0gJ1Zpc2libGUnKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0V2lkdGgodHJ1ZSksIDEwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25Db2x1bW5SZXNpemluZyhlOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgd2lkdGg6IG51bWJlciB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuU2V0Q29sdW1uV2lkdGhUb1RoV2lkdGgoKTtcclxuICAgICAgICB0aGlzLl9zZXRQYXJlbnRXaWR0aCgpO1xyXG4gICAgfVxyXG4gICAgb25Db2x1bW5SZXNpemVkKGFycjogQXJyYXk8Q29sdW1uUmVzaXplZEFyZ3M+KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5Q29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkZXJNb2RlID09PSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl90YWJsZUhlYWRlckNvbXBvbmVudC5TZXRDb2x1bW5XaWR0aFRvVGhXaWR0aCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9QZXJjZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlJlZnJlc2hUYWJsZVRoV2lkdGgoKTtcclxuICAgICAgICB0aGlzLnJlc2l6ZWRCeVVzZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUobGFzdFRoLCAnd2lkdGgnLCBgMTAwJWApO1xyXG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KHsgY29sdW1uczogdGhpcy5jb2x1bW5zLCByZXNpemVkOiBhcnIgfSk7XHJcbiAgICB9XHJcbiAgICBvbkZpdFRvQ29udGFpbmVyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XHJcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50V2lkdGhGaXQoKTtcclxuICAgICAgICB0aGlzLl90YWJsZUhlYWRlckNvbXBvbmVudC5TZXRDb2x1bW5XaWR0aFRvUGVyY2VudCgpO1xyXG4gICAgICAgIC8vIHRoaXMuX3JlZnJlc2hUaFdpZHRoKCk7XHJcbiAgICAgICAgLy8gdGhpcy5fZmlyZVJlc2l6ZUNoYW5nZWQoKTtcclxuICAgIH1cclxuICAgIG9uRnJlZUNvbHVtblNpemluZygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplO1xyXG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9UaFdpZHRoKCk7XHJcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50V2lkdGhGaXRUb09mZnNldFdpZHRoKCk7XHJcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHRoaXMubW9EYXRhTGlzdCwgdGhpcy5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIG9uRml0VG9Db250ZW50KGU6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgfSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHsgY29sdW1uLCB0aERvbSB9ID0gZTtcclxuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplO1xyXG4gICAgICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIGNvbHVtbik7XHJcbiAgICAgICAgY29sdW1uLiRXaWR0aCA9IGNvbHVtbi4kQ29udGVudFdpZHRoO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aERvbSwgJ3dpZHRoJywgY29sdW1uLiRXaWR0aCk7XHJcbiAgICAgICAgdGhpcy5fZmlyZVJlc2l6ZUNoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNldFRhYmxlSGVhZGVyRG9tKGRvbSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJEb20gPSBkb207XHJcbiAgICAgICAgY29uc3QgcmVjdCA9IGRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyVG9wID0gcmVjdC50b3A7XHJcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlckhlaWdodCA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgb25IZWFkZXJWaXNpYmlsaXR5Q2hhbmdlKGUsIGRvbSk6IHZvaWQge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLmhlYWRlck9ic2VydmVyRG9tID0gZG9tO1xyXG4gICAgICAgIGlmIChlID09PSAnTm90VmlzaWJsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGlja3lFbmFibGUuc2V0KHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5RW5hYmxlLnNldChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uUm93VmlzaWJpbGl0eUNoYW5nZShlLCBpbmRleCwgZG9tKTogdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmIChlICE9PSAnUGVuZGluZycpIHtcclxuICAgICAgICAgICAgaWYgKGUgPT09ICdOb3RWaXNpYmxlJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZUl0ZW1zLmluZGV4T2YoaW5kZXgpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93VmlzaWJsZSQubmV4dCh7IGluZGV4LCBkb20gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnZpc2libGVJdGVtcy5maWx0ZXIoKGMpID0+IGMgIT09IGluZGV4KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zLnB1c2goaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zID0gdGhpcy5ub3RWaXNpYmxlSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpbmRleCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMucHVzaChpbmRleCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdGhpcy5yb3dWaXNpYmxlJC5uZXh0KHsgaW5kZXgsIGRvbSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRQYXJlbnRXaWR0aEZpdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCAnd2lkdGgnLCBgMTAwJWApO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWluLXdpZHRoJywgYDEwMCVgKTtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYDEwMCVgKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3NldFBhcmVudFdpZHRoRml0VG9PZmZzZXRXaWR0aCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB4MSA9IE1hdGguZmxvb3IodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCAnd2lkdGgnLCBgJHt4MX1weGApO1xyXG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWluLXdpZHRoJywgYCR7eH1weGApO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBgJHt4fXB4YCk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRQYXJlbnRXaWR0aCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB4ID0gTWF0aC5mbG9vcih0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAke3h9cHhgKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3JlZnJlc2hUaFdpZHRoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XHJcbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQ/LlJlZnJlc2hUYWJsZVRoV2lkdGgoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3NldFdpZHRoKHNldFdpZHRoPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHdpZHRoT2ZEb20gPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2cod2lkdGhPZkRvbSk7XHJcblxyXG4gICAgICAgIGlmICh3aWR0aE9mRG9tID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHdpZHRoT2ZEb20gIT09IHRoaXMub2xkV2lkdGgpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRoV2lkdGgoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbGRXaWR0aCA9IHdpZHRoT2ZEb207XHJcbiAgICAgICAgY29uc3QgcGFyZW50V2lkdGggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgY29uc3QgZWxXaWR0aCA9IE1hdGguZmxvb3IodGhpcy5fZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgaWYgKHBhcmVudFdpZHRoICE9PSBlbFdpZHRoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBwYXJlbnRXaWR0aCArICdweCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ21heC13aWR0aCcsIHBhcmVudFdpZHRoICsgJ3B4Jyk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIHBhcmVudFdpZHRoICsgJ3B4Jyk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9jYWxjdWxhdGVIZWFkZXJTdGlja3lUb3AoZG9tOiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN0aWNreUVuYWJsZSgpICYmIHRoaXMudGFibGVIZWFkZXJEb20pIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgcmVjID0gdGhpcy5oZWFkZXJPYnNlcnZlckRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgLy8gY29uc3QgdG9wID0gcmVjLnRvcDtcclxuICAgICAgICAgICAgLy8gY29uc3QgY2FsYyA9IHRoaXMudGFibGVIZWFkZXJUb3AgLSB0b3AgLSB0aGlzLnRhYmxlSGVhZGVySGVpZ2h0ICsgJ3B4JztcclxuICAgICAgICAgICAgY29uc3QgcmVjID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5faGVhZGVyVG9wJC5uZXh0KHJlYy50b3AgLSAxMiArIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgKyAncHgnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9maXJlUmVzaXplQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvbHVtblJlc2l6ZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcclxuICAgICAgICAgICAgcmVzaXplZDogdGhpcy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgbmFtZTogYy5OYW1lLCB3aWR0aDogYy5XaWR0aCB9KSlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY2FsY3VsYXRlQ29sdW1uc1dpZHRoKG1vRGF0YUxpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSwgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdKTogdm9pZCB7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnRhYmxlSGVhZGVyTW9kZSkge1xyXG4gICAgICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZnJlZUNvbHVtblNpemUobW9EYXRhTGlzdCwgY29sdW1ucyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb1Jvd0NvbnRlbnQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9maXRUb1Jvd0NvbnRlbnRDb2x1bW4obW9EYXRhTGlzdCwgY29sdW1ucyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjpcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpdFRvQ29udGFpbmVyKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9maXRUb0NvbHVtbihtb0RhdGFMaXN0LCBjb2x1bW5zKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoKGVsRG9tLCBjb2x1bW5zLCBtb0RhdGFMaXN0LCB0aGlzLmRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51LCB0aGlzLmNvbnRleHRNZW51SXRlbXMpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9maXRUb1Jvd0NvbnRlbnRDb2x1bW4obW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10pOiB2b2lkIHtcclxuICAgICAgICBjYWxjdWxhdGVDb2x1bW5Db250ZW50KGNvbHVtbnMsIG1vRGF0YUxpc3QpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9maXRUb0NvbnRhaW5lcihtb0RhdGFMaXN0LCBjb2x1bW5zKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY2FsY3VsYXRlQ29sdW1uV2lkdGhGaXRUb0NvbnRhaW5lcihcclxuICAgICAgICAgICAgZWxEb20sXHJcbiAgICAgICAgICAgIHRoaXMuY2FuVmlldyxcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlSGVhZGVyQ29udGV4dE1lbnUsXHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcyxcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZnJlZUNvbHVtblNpemUobW9EYXRhTGlzdCwgY29sdW1ucyk6IHZvaWQge1xyXG4gICAgICAgIGNhbGN1bGF0ZUZyZWVDb2x1bW5TaXplKHRoaXMuY29sdW1ucyk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3NldEhlaWdodChwYXJlbnRIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmluRGlhbG9nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gcGFyZW50SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxzQ29sdW1ucz8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb21wb25lbnQ/LlNlbGVjdG9yIHx8XHJcbiAgICAgICAgICAgIChjYXJ0YWJsZVRlbXBsYXRlcyAmJiBPYmplY3Qua2V5cyhjYXJ0YWJsZVRlbXBsYXRlcykubGVuZ3RoID4gMClcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93RGV0YWlsc0luUm93ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oYXNEZXRhaWxzSW5Sb3cuZW1pdCh0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmhhc0RldGFpbHNJblJvdy5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NvbnRhaW5lcldpZHRoQ2hhbmdlZCh2YWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICh2YWwgPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fd2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fd2lkdGggPSB2YWwgPyB2YWwgKyAncHgnIDogJzEwMCUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgdGhpcy5fd2lkdGgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjx0YWJsZVxyXG4gICAgZmQtdGFibGVcclxuICAgICN0YWJsZVRwbFxyXG4gICAgI2hlYWRlckJvdHRvbU9ic2VydmVyXHJcbiAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxyXG4gICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxyXG4gICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25UYWJsZVZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBoZWFkZXJCb3R0b21PYnNlcnZlcilcIlxyXG4gICAgW3BvcEluXT1cInBvcGluXCJcclxuICAgIFtjbGFzcy50YWJsZS1maXhlZF09XCJcclxuICAgICAgICAhY29udGV4dFZpZXc/LkdyaWRfSGlkZUhlYWRlciAmJiAoIXBvcGluIHx8IHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID09PSAwKSAmJiAhZGlzYWJsZUZpeGVkVGFibGVMYXlvdXRcclxuICAgIFwiXHJcbiAgICBbbm9Cb3JkZXJYXT1cInZpZXdTZXR0aW5nPy5Ob0hvcml6dG9uYWxCb3JkZXJzID09PSB0cnVlXCJcclxuICAgIFtub0JvcmRlclldPVwidmlld1NldHRpbmc/Lk5vVmVydGljYWxCb3JkZXJzID09PSB0cnVlIHx8IChwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApXCJcclxuPlxyXG4gICAgQGlmIChjb2x1bW5zIHwgbWVyZ2VGaWVsZHNUb0NvbHVtbnM6IHZpZXdTZXR0aW5nPy5NZXJnZUZpZWxkc1RvQ29sdW1ucz8uTW9EYXRhTGlzdDsgYXMgbWVyZ2VGaWVsZHNUb0NvbHVtbnMpIHtcclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICBoZWFkZXJUZW1wbGF0ZTtcclxuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zLCBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3Q/Lmxlbmd0aCB9XHJcbiAgICAgICAgXCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIEBpZiAobW9EYXRhTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgYm9keVRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbWVyZ2VGaWVsZHNUb0NvbHVtbnMsIHByZXZpZXdDb2x1bW46IGFsbENvbHVtbnMgfCBmaW5kUHJldmlld0NvbHVtbiB9XHJcbiAgICAgICAgXCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIH0gfVxyXG48L3RhYmxlPlxyXG48IS0tcmVuZGVyQ29sdW1uLS0+XHJcblxyXG5AaWYgKCFtb0RhdGFMaXN0Py5sZW5ndGgpIHtcclxuPGJzdS1uby1kYXRhXHJcbiAgICBbY2xhc3Mubm8tdG9wYm9yZGVyXT1cIiFoaWRlVG9vbGJhclwiXHJcbiAgICBbY2xhc3Mubm9ib3JkZXJdPVwiY29udGV4dFZpZXcuR3JpZF9IaWRlSGVhZGVyICYmIGhpZGVUb29sYmFyXCJcclxuICAgIFtzaW1wbGVdPVwidHJ1ZVwiXHJcbj5cclxuPC9ic3Utbm8tZGF0YT5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtbW9EYXRhTGlzdENvdW50PlxyXG4gICAgPGJzdS1iYXJzYS10YWJsZS1oZWFkZXJcclxuICAgICAgICBbc3RpY2t5XT1cInN0aWNreUVuYWJsZSgpXCJcclxuICAgICAgICBbaGFzU2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgIFtjbGFzcy5oYXMtdG9vbGJhcl09XCIhaGlkZVRvb2xiYXJcIlxyXG4gICAgICAgIFtzdHlsZS5wb2ludGVyLWV2ZW50c109XCJtb0RhdGFMaXN0Q291bnQgPyAnYXV0bycgOiAnbm9uZSdcIlxyXG4gICAgICAgIFt0YWJsZVdpZHRoXT1cImVsV2lkdGhcIlxyXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxyXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcclxuICAgICAgICBbcmVzaXplZEJ5VXNlcl09XCJyZXNpemVkQnlVc2VyXCJcclxuICAgICAgICBbdGFibGVIZWFkZXJNb2RlXT1cInRhYmxlSGVhZGVyTW9kZVwiXHJcbiAgICAgICAgW3Nob3dSb3dOdW1iZXJdPVwiY29udGV4dFZpZXc/LkdyaWRfU2hvd1Jvd051bWJlclwiXHJcbiAgICAgICAgW2FsbENoZWNrZWRdPVwiYWxsQ2hlY2tlZFwiXHJcbiAgICAgICAgW3J0bF09XCJydGxcIlxyXG4gICAgICAgIFthY3Rpb25MaXN0XT1cImFjdGlvbkxpc3RcIlxyXG4gICAgICAgIFtkaXNhYmxlUmVzcG9uc2l2ZV09XCJkaXNhYmxlUmVzcG9uc2l2ZVwiXHJcbiAgICAgICAgW2lzQ2hlY2tMaXN0XT1cImlzQ2hlY2tMaXN0XCJcclxuICAgICAgICBbY29sdW1uc109XCJcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uczpyb3dJbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyOiB7IElzUHJldmlldzogZmFsc2UgfVxyXG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2ZpdFdpZHRoXT1cImZpdFdpZHRoXCJcclxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxyXG4gICAgICAgIFtpbmxpbmVFZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXHJcbiAgICAgICAgW2NvbnRleHRNZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgICAgW2NvbnRleHRNZW51V2lkdGhdPVwiY29udGV4dE1lbnVXaWR0aFwiXHJcbiAgICAgICAgW3Nob3dWaWV3QnV0dG9uXT1cInNob3dWaWV3QnV0dG9uXCJcclxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICBbdmlld1NldHRpbmddPVwidmlld1NldHRpbmdcIlxyXG4gICAgICAgIFtoaWRlSGVhZGVyXT1cImNvbnRleHRWaWV3LkdyaWRfSGlkZUhlYWRlclwiXHJcbiAgICAgICAgW3Jvd0luZGljYXRvcl09XCJyb3dJbmRpY2F0b3JcIlxyXG4gICAgICAgIFtkaXNhYmxlUmVzaXplXT1cImRpc2FibGVSZXNpemVcIlxyXG4gICAgICAgIFtkaXNhYmxlSGVhZGVyQ29udGV4dE1lbnVdPVwiZGlzYWJsZUhlYWRlckNvbnRleHRNZW51XCJcclxuICAgICAgICAoaGVhZGVyUmVuZGVyKT1cIm9uU2V0VGFibGVIZWFkZXJEb20oJGV2ZW50KVwiXHJcbiAgICAgICAgKGNvbHVtblJlc2l6ZSk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNvbHVtblJlc2l6aW5nKT1cIm9uQ29sdW1uUmVzaXppbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgKGZpdFRvQ29udGVudCk9XCJvbkZpdFRvQ29udGVudCgkZXZlbnQpXCJcclxuICAgICAgICAoZml0VG9Db250YWluZXIpPVwib25GaXRUb0NvbnRhaW5lcigpXCJcclxuICAgICAgICAoZnJlZUNvbHVtblNpemUpPVwib25GcmVlQ29sdW1uU2l6aW5nKClcIlxyXG4gICAgICAgIChhbGxDaGVja2JveCk9XCJvbkFsbENoZWNrYm94KCRldmVudClcIlxyXG4gICAgICAgIChzb3J0QXNjZW5kaW5nKT1cIm9uU29ydEFzY2VuZGluZygkZXZlbnQpXCJcclxuICAgICAgICAoc29ydERlc2NlbmRpbmcpPVwib25Tb3J0RGVzY2VuZGluZygkZXZlbnQpXCJcclxuICAgICAgICAoZmlsdGVyKT1cIm9uRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgIChyZXNldEdyaWRTZXR0aW5ncyk9XCJyZXNldEdyaWRTZXR0aW5ncy5lbWl0KClcIlxyXG4gICAgPjwvYnN1LWJhcnNhLXRhYmxlLWhlYWRlcj5cclxuICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICNoZWFkZXJCb3R0b21PYnNlcnZlclxyXG4gICAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyXHJcbiAgICAgICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxyXG4gICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uSGVhZGVyVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGhlYWRlckJvdHRvbU9ic2VydmVyKVwiXHJcbiAgICA+PC9kaXY+IC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIj5cclxuICAgIDx0Ym9keVxyXG4gICAgICAgICNib2R5XHJcbiAgICAgICAgZmQtdGFibGUtYm9keVxyXG4gICAgICAgIFtjbGFzcy5ub2JvcmRlcl09XCJ2aWV3U2V0dGluZz8uTm9Cb2R5Qm9yZGVycyA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgW25vQm9yZGVyWF09XCJ2aWV3U2V0dGluZz8uTm9Ib3JpenRvbmFsQm9yZGVycyA9PT0gdHJ1ZSB8fCBwcmV2aWV3Q29sdW1uXCJcclxuICAgICAgICBbbm9Cb3JkZXJZXT1cIihwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApIHx8IHByZXZpZXdDb2x1bW5cIlxyXG4gICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIEBmb3IgKG1vIG9mIG1vRGF0YUxpc3QgfCBtdWx0aXBsZUdyb3VwQnk6IGdyb3VwYnk7IHRyYWNrIF90cmFja0J5Um93KGluZGV4LCBtbyk7IGxldCBpbmRleCA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGhhc1Jvd09sZ28gPyByb3dPbGdvVGVtcGxhdGUgOiByb3dUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogbW8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm93TnVtYmVyOiBtby5JZCB8IHJvd051bWJlcjogcGFnaW5nU2V0dGluZzptb0RhdGFMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJbmRpY2F0b3JDb2xvcjogIWNvbHVtbnMubGVuZ3RoID8gJycgOiAoY29sdW1uc1swXS5DYXB0aW9uIHwgcnZhbDogbW86Y29sdW1ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMgfCBjb2x1bW5DdXN0b21Db21wb25lbnQ6IHZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzPy5Nb0RhdGFMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb2x1bW5zOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5Q29sdW1ucyB8IGNvbHVtbkN1c3RvbUNvbXBvbmVudDogdmlld1NldHRpbmc/LkNvbHVtbkNvbXBvbmVudHM/Lk1vRGF0YUxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vRGF0YUxpc3Q6IG1vRGF0YUxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vRGF0YUxpc3RDb3VudDogbW9EYXRhTGlzdC5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGU6IGNhcnRhYmxlVGVtcGxhdGVzW21vLlJlbGF0ZWRNbz8uJFR5cGVEZWZJZCArICdAJyArIG1vLkNhcnRhYmxlU2V0dGluZ3M/LklkXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0NvbHVtbjogcHJldmlld0NvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0NvbGxhcHNlZDogdmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5EZXRhaWxzQ29sbGFwc2VkID09PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRlRGV0YWlsc1RleHQ6IHZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uSGlkZURldGFpbHNUZXh0ID09PSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3Rib2R5PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlIGxldC1jb2x1bW5zPlxyXG4gICAgQGlmIChoYXNTdW1tYXJ5KSB7XHJcbiAgICA8dGZvb3QgZmQtdGFibGUtZm9vdGVyPlxyXG4gICAgICAgIDx0ciBmZC10YWJsZS1yb3cgY2xhc3M9XCJyb3ctc3VtbWFyeVwiPlxyXG4gICAgICAgICAgICBAaWYgKGlzQ2hlY2tMaXN0KSB7XHJcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNvbHVtblJlc2l6ZXI+XHJcbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY29sLXRvdGFsLXRleHRcIj57eyAnVG90YWwnIHwgYmJiVHJhbnNsYXRlIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIH0gQGlmICghaXNDaGVja0xpc3QpIHtcclxuICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY29sLXRvdGFsLXRleHRcIj57eyAnVG90YWwnIHwgYmJiVHJhbnNsYXRlIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIH0gQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbjsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uSGFzU3VtbWFyeSkge1xyXG4gICAgICAgICAgICAgICAgPHN0cm9uZyBzdHlsZT1cImRpcmVjdGlvbjogbHRyOyBkaXNwbGF5OiBibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG1vRGF0YUxpc3QgfCB0b3RhbFN1bW1hcnk6IGNvbHVtbi5OYW1lIHwgbnVtYmVyIH19PC9zdHJvbmdcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgfSBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIHN0eWxlPVwid2lkdGg6IDEwMHB4XCI+PC90ZD5cclxuICAgICAgICAgICAgfSBAaWYgKCFoaWRlT3Blbkljb24gJiYgY2FuVmlldyAmJiAoIWlubGluZUVkaXRNb2RlIHx8ICFhbGxvd0lubGluZUVkaXQpKSB7XHJcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsPjwvdGQ+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90Zm9vdD5cclxuICAgIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlXHJcbiAgICAjcm93T2xnb1RlbXBsYXRlXHJcbiAgICBsZXQtbW9cclxuICAgIGxldC1pbmRleD1cImluZGV4XCJcclxuICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgICBsZXQtbW9EYXRhTGlzdENvdW50PVwibW9EYXRhTGlzdENvdW50XCJcclxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXHJcbiAgICBsZXQtY2FydGFibGVUZW1wbGF0ZT1cImNhcnRhYmxlVGVtcGxhdGVcIlxyXG4gICAgbGV0LXNlY29uZGFyeUNvbHVtbnM9XCJzZWNvbmRhcnlDb2x1bW5zXCJcclxuICAgIGxldC1yb3dJbmRpY2F0b3JDb2xvcj1cInJvd0luZGljYXRvckNvbG9yXCJcclxuICAgIGxldC1yb3dOdW1iZXI9XCJyb3dOdW1iZXJcIlxyXG4gICAgbGV0LXByZXZpZXdDb2x1bW49XCJwcmV2aWV3Q29sdW1uXCJcclxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXHJcbiAgICBsZXQtaGlkZURldGFpbHNUZXh0PVwiaGlkZURldGFpbHNUZXh0XCJcclxuPlxyXG4gICAgPGJucmMtZHluYW1pYy1pdGVtLWNvbXBvbmVudFxyXG4gICAgICAgIFtjb21wb25lbnRdPVwidmlld1NldHRpbmcuUm93T2xnb1wiXHJcbiAgICAgICAgW21vXT1cIm1vXCJcclxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcclxuICAgICAgICBbaGlkZURldGFpbHNUZXh0XT1cImhpZGVEZXRhaWxzVGV4dFwiXHJcbiAgICAgICAgW2lzTGFzdENoaWxkR3JvdXBdPVwibW8uJElzTGFzdENoaWxkR3JvdXBcIlxyXG4gICAgICAgIFtncm91cFN1bW1hcnldPVwiZ3JvdXBTdW1tYXJ5XCJcclxuICAgICAgICBbc2hvd1ZpZXdCdXR0b25dPVwic2hvd1ZpZXdCdXR0b25cIlxyXG4gICAgICAgIFtVbHZNYWluQ3RybHJdPVwiVWx2TWFpbkN0cmxyXCJcclxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcclxuICAgICAgICBbc2hvd0RldGFpbHNJblJvd109XCJzaG93RGV0YWlsc0luUm93XCJcclxuICAgICAgICBbaGlkZU9wZW5JY29uXT1cImhpZGVPcGVuSWNvblwiXHJcbiAgICAgICAgW2RldGFpbHNDb2x1bW5zXT1cImRldGFpbHNDb2x1bW5zXCJcclxuICAgICAgICBbc2hvd1Jvd051bWJlcl09XCJjb250ZXh0Vmlldz8uR3JpZF9TaG93Um93TnVtYmVyXCJcclxuICAgICAgICBbcm93TnVtYmVyXT1cInJvd051bWJlclwiXHJcbiAgICAgICAgW2NvbHVtbkNvbXBvbmVudHNdPVwidmlld1NldHRpbmc/LkNvbHVtbkNvbXBvbmVudHMgfHwgbnVsbFwiXHJcbiAgICAgICAgW2NhcnRhYmxlVGVtcGxhdGVdPVwiY2FydGFibGVUZW1wbGF0ZVwiXHJcbiAgICAgICAgW2NhcnRhYmxlTW9dPVwibW8uUmVsYXRlZE1vXCJcclxuICAgICAgICBbZGlydHlDb2x1bW5zXT1cIm1vLiREaXJ0eUNvbHVtbnNcIlxyXG4gICAgICAgIFtjYXJ0YWJsZVdvcmtmbG93RGF0YV09XCJtby5TZXJpYWxpemVkV29ya2Zsb3dEYXRhXCJcclxuICAgICAgICBbc2VyaWFsaXplZFJlbGF0ZWRNb109XCJtby5TZXJpYWxpemVkUmVsYXRlZE1vXCJcclxuICAgICAgICBbZGV0YWlsc1RleHRdPVwidmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5CdXR0b25UZXh0XCJcclxuICAgICAgICBbZGV0YWlsc1RleHRGdW5jdGlvbl09XCJ2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkJ1dHRvblRleHRGdW5jdGlvblwiXHJcbiAgICAgICAgW2RldGFpbHNDb21wb25lbnRdPVwiZGV0YWlsc0NvbXBvbmVudFwiXHJcbiAgICAgICAgW2NvbG9yaW5nUm93XT1cInZpZXdTZXR0aW5nPy5Db2xvcmluZ1Jvd1wiXHJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJtby4kSXNDaGVja2VkXCJcclxuICAgICAgICBbdmlzaWJpbGl0eV09XCJtby4kVmlzaWJpbGl0eVwiXHJcbiAgICAgICAgW2V4cGFuZGVkXT1cIm1vLiRFeHBhbmRlZFwiXHJcbiAgICAgICAgW3N0eWxlSW5kZXhdPVwibW8uJFN0eWxlSW5kZXhcIlxyXG4gICAgICAgIFtsZXZlbF09XCJtby4kTGV2ZWxcIlxyXG4gICAgICAgIFtwYXJlbnRFeHBhbmRlZF09XCJtby4kUGFyZW50Py4kRXhwYW5kZWRcIlxyXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdENvdW50XCJcclxuICAgICAgICBbY29sdW1uc0NvdW50XT1cImNvbHVtbnNDb3VudCAtIGRldGFpbHNDb2x1bW5zLmxlbmd0aFwiXHJcbiAgICAgICAgW3R5cGVEZWZJZF09XCJ0eXBlRGVmSWRcIlxyXG4gICAgICAgIFtleHRyYVJlbGF0aW9uXT1cImV4dHJhUmVsYXRpb25cIlxyXG4gICAgICAgIFtmb3JtU2V0dGluZ109XCJmb3JtU2V0dGluZ1wiXHJcbiAgICAgICAgW2luZGV4XT1cImluZGV4XCJcclxuICAgICAgICBbc2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXHJcbiAgICAgICAgW3NlY29uZGFyeUNvbHVtbnNdPVwic2Vjb25kYXJ5Q29sdW1ucyB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOnJvd0luZGljYXRvclwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1ucyB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOnJvd0luZGljYXRvclwiXHJcbiAgICAgICAgW2lzTmV3SW5saW5lTW9dPVwibW8uJE5ld0lubGluZU1vXCJcclxuICAgICAgICBbYWNjZXNzXT1cImFjY2Vzc1wiXHJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcclxuICAgICAgICBbYWxsb3dJbmxpbmVFZGl0XT1cImFsbG93SW5saW5lRWRpdFwiXHJcbiAgICAgICAgW3J0bF09XCJydGxcIlxyXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxyXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxyXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxyXG4gICAgICAgIFtjYW5WaWV3XT1cImNhblZpZXdcIlxyXG4gICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcclxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxyXG4gICAgICAgIFtuYXZpZ2F0aW9uQXJyb3ddPVwibmF2aWdhdGlvbkFycm93XCJcclxuICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxyXG4gICAgICAgIFtyb3dJbmRpY2F0b3JdPVwicm93SW5kaWNhdG9yXCJcclxuICAgICAgICBbcm93SW5kaWNhdG9yQ29sb3JdPVwicm93SW5kaWNhdG9yQ29sb3JcIlxyXG4gICAgICAgIChldmVudHMpPVwib25PbGdvRXZlbnRzKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9ibnJjLWR5bmFtaWMtaXRlbS1jb21wb25lbnQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZVxyXG4gICAgI3Jvd1RlbXBsYXRlXHJcbiAgICBsZXQtbW9cclxuICAgIGxldC1pbmRleD1cImluZGV4XCJcclxuICAgIGxldC1yb3dOdW1iZXI9XCJyb3dOdW1iZXJcIlxyXG4gICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgIGxldC1tb0RhdGFMaXN0Q291bnQ9XCJtb0RhdGFMaXN0Q291bnRcIlxyXG4gICAgbGV0LW1vRGF0YUxpc3Q9XCJtb0RhdGFMaXN0XCJcclxuICAgIGxldC1jYXJ0YWJsZVRlbXBsYXRlPVwiY2FydGFibGVUZW1wbGF0ZVwiXHJcbiAgICBsZXQtc2Vjb25kYXJ5Q29sdW1ucz1cInNlY29uZGFyeUNvbHVtbnNcIlxyXG4gICAgbGV0LXJvd0luZGljYXRvckNvbG9yPVwicm93SW5kaWNhdG9yQ29sb3JcIlxyXG4gICAgbGV0LXByZXZpZXdDb2x1bW49XCJwcmV2aWV3Q29sdW1uXCJcclxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXHJcbiAgICBsZXQtaGlkZURldGFpbHNUZXh0PVwiaGlkZURldGFpbHNUZXh0XCJcclxuPlxyXG4gICAgPGJzdS1iYXJzYS10YWJsZS1yb3dcclxuICAgICAgICBbbW9dPVwibW9cIlxyXG4gICAgICAgIFtkaXJ0eUNvbHVtbnNdPVwibW8uJERpcnR5Q29sdW1uc1wiXHJcbiAgICAgICAgW2lzTGFzdENoaWxkR3JvdXBdPVwibW8uJElzTGFzdENoaWxkR3JvdXBcIlxyXG4gICAgICAgIFttb0RhdGFMaXN0XT1cIm1vRGF0YUxpc3RcIlxyXG4gICAgICAgIFtoaWRlRGV0YWlsc1RleHRdPVwiaGlkZURldGFpbHNUZXh0XCJcclxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcclxuICAgICAgICBbZ3JvdXBTdW1tYXJ5XT1cImdyb3VwU3VtbWFyeVwiXHJcbiAgICAgICAgW1Vsdk1haW5DdHJscl09XCJVbHZNYWluQ3RybHJcIlxyXG4gICAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXHJcbiAgICAgICAgW3Nob3dEZXRhaWxzSW5Sb3ddPVwic2hvd0RldGFpbHNJblJvd1wiXHJcbiAgICAgICAgW2hpZGVPcGVuSWNvbl09XCJoaWRlT3Blbkljb25cIlxyXG4gICAgICAgIFtzaG93Um93TnVtYmVyXT1cImNvbnRleHRWaWV3Py5HcmlkX1Nob3dSb3dOdW1iZXJcIlxyXG4gICAgICAgIFtyb3dOdW1iZXJdPVwicm93TnVtYmVyXCJcclxuICAgICAgICBbY29sb3JpbmdSb3ddPVwidmlld1NldHRpbmc/LkNvbG9yaW5nUm93XCJcclxuICAgICAgICBbZGlzYWJsZUVsbGFwc2lzXT1cInZpZXdTZXR0aW5nPy5EaXNhYmxlRWxsYXBzaXNcIlxyXG4gICAgICAgIFtzaG93Vmlld0J1dHRvbl09XCJzaG93Vmlld0J1dHRvblwiXHJcbiAgICAgICAgW2RldGFpbHNDb2x1bW5zXT1cImRldGFpbHNDb2x1bW5zXCJcclxuICAgICAgICBbY29sdW1uQ29tcG9uZW50c109XCJ2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cyB8fCBudWxsXCJcclxuICAgICAgICBbY2FydGFibGVUZW1wbGF0ZV09XCJjYXJ0YWJsZVRlbXBsYXRlXCJcclxuICAgICAgICBbY2FydGFibGVNb109XCJtby5SZWxhdGVkTW9cIlxyXG4gICAgICAgIFtjYXJ0YWJsZVdvcmtmbG93RGF0YV09XCJtby5TZXJpYWxpemVkV29ya2Zsb3dEYXRhXCJcclxuICAgICAgICBbc2VyaWFsaXplZFJlbGF0ZWRNb109XCJtby5TZXJpYWxpemVkUmVsYXRlZE1vXCJcclxuICAgICAgICBbZGV0YWlsc1RleHRdPVwidmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5CdXR0b25UZXh0XCJcclxuICAgICAgICBbZGV0YWlsc0NvbXBvbmVudF09XCJkZXRhaWxzQ29tcG9uZW50XCJcclxuICAgICAgICBbaXNDaGVja2VkXT1cIm1vLiRJc0NoZWNrZWRcIlxyXG4gICAgICAgIFt2aXNpYmlsaXR5XT1cIm1vLiRWaXNpYmlsaXR5XCJcclxuICAgICAgICBbZXhwYW5kZWRdPVwibW8uJEV4cGFuZGVkXCJcclxuICAgICAgICBbc3R5bGVJbmRleF09XCJtby4kU3R5bGVJbmRleFwiXHJcbiAgICAgICAgW2xldmVsXT1cIm1vLiRMZXZlbFwiXHJcbiAgICAgICAgW3BhcmVudEV4cGFuZGVkXT1cIm1vLiRQYXJlbnQ/LiRFeHBhbmRlZFwiXHJcbiAgICAgICAgW21vRGF0YUxpc3RDb3VudF09XCJtb0RhdGFMaXN0Q291bnRcIlxyXG4gICAgICAgIFtjb2x1bW5zQ291bnRdPVwiY29sdW1uc0NvdW50IC0gZGV0YWlsc0NvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXHJcbiAgICAgICAgW2V4dHJhUmVsYXRpb25dPVwiZXh0cmFSZWxhdGlvblwiXHJcbiAgICAgICAgW2Zvcm1TZXR0aW5nXT1cImZvcm1TZXR0aW5nXCJcclxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxyXG4gICAgICAgIFtzZXR0aW5nXT1cInZpZXdTZXR0aW5nXCJcclxuICAgICAgICBbY2hlY2tib3hDb21wb25lbnRdPVwidmlld1NldHRpbmc/LkNoZWNrYm94Q29tcG9uZW50XCJcclxuICAgICAgICBbc2Vjb25kYXJ5Q29sdW1uc109XCJcclxuICAgICAgICAgICAgc2Vjb25kYXJ5Q29sdW1uc1xyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uczpmYWxzZVxyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXI6IHsgSXNQcmV2aWV3OiBmYWxzZSB9XHJcbiAgICAgICAgICAgICAgICB8IGhpZGVDb2x1bW5zSW5tb2JpbGU6IHZpZXdTZXR0aW5nPy5IaWRlQ29sdW1uc0luTW9iaWxlXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbY29sdW1uc109XCJcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uczpyb3dJbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyOiB7IElzUHJldmlldzogZmFsc2UgfVxyXG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2lzTmV3SW5saW5lTW9dPVwibW8uJE5ld0lubGluZU1vXCJcclxuICAgICAgICBbYWNjZXNzXT1cImFjY2Vzc1wiXHJcbiAgICAgICAgW3NpbXBsZUlubGluZUVkaXRdPVwic2ltcGxlSW5saW5lRWRpdFwiXHJcbiAgICAgICAgW25vU2F2ZUlubGluZUVkaXRJblNlcnZlcl09XCJzaW1wbGVJbmxpbmVFZGl0XCJcclxuICAgICAgICBbYWN0aW9uTGlzdF09XCJhY3Rpb25MaXN0XCJcclxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxyXG4gICAgICAgIFthbGxvd0lubGluZUVkaXRdPVwiYWxsb3dJbmxpbmVFZGl0XCJcclxuICAgICAgICBbcnRsXT1cInJ0bFwiXHJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXHJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXHJcbiAgICAgICAgW2NvbnRleHRNZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgICAgW2NhblZpZXddPVwiY2FuVmlld1wiXHJcbiAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXHJcbiAgICAgICAgW25hdmlnYXRpb25BcnJvd109XCJuYXZpZ2F0aW9uQXJyb3dcIlxyXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXHJcbiAgICAgICAgW3Jvd0luZGljYXRvcl09XCJyb3dJbmRpY2F0b3JcIlxyXG4gICAgICAgIFtyb3dJbmRpY2F0b3JDb2xvcl09XCJyb3dJbmRpY2F0b3JDb2xvclwiXHJcbiAgICAgICAgW3ByZXZpZXdDb2x1bW5dPVwicHJldmlld0NvbHVtblwiXHJcbiAgICAgICAgKGNvbHVtblN1bW1hcnkpPVwiY29sdW1uU3VtbWFyeS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChyZXNldFdvcmtmbG93U3RhdGUpPVwicmVzZXRXb3JrZmxvd1N0YXRlLmVtaXQobW8pXCJcclxuICAgICAgICAoZXNjYXBlS2V5KT1cIm9uRXNjYXBlS2V5KCRldmVudClcIlxyXG4gICAgICAgIChleHBhbmRDbGljayk9XCJvbkV4cGFuZENsaWNrKCRldmVudClcIlxyXG4gICAgICAgIChyb3dDaGVjayk9XCJvblJvd0NoZWNrKCRldmVudClcIlxyXG4gICAgICAgICh3b3JrZmxvd1NoYXJlQnV0dG9ucyk9XCJvbldvcmtmbG93U2hhcmVCdXR0b25zKCRldmVudClcIlxyXG4gICAgICAgIChkZXNlbGVjdEFsbCk9XCJvbkRlc2VsZWN0QWxsKClcIlxyXG4gICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxyXG4gICAgICAgICh1bHZDb21tYW5kKT1cIm9uVWx2Q29tbWFuZCgkZXZlbnQpXCJcclxuICAgICAgICAoYWN0aW9uTGlzdENsaWNrKT1cIm9uQWN0aW9uTGlzdENsaWNrKG1vLCBpbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgKHNlbGVjdE5leHRJbmxpbmVSZWNvcmQpPVwib25TZWxlY3ROZXh0SW5saW5lUmVjb3JkKCRldmVudClcIlxyXG4gICAgICAgIChlZGl0Rm9ybVBhbmVsU2F2ZSk9XCJvbkVkaXRGb3JtUGFuZWxTYXZlKCRldmVudClcIlxyXG4gICAgICAgIChlZGl0Rm9ybVBhbmVsQ2FuY2VsKT1cIm9uRWRpdEZvcm1QYW5lbENhbmNlbCgkZXZlbnQpXCJcclxuICAgICAgICAoZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKT1cIm9uRWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChjYXJ0YWJsZUZvcm1DbG9zZWQpPVwib25DYXJ0YWJsZUZvcm1DbG9zZWQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L2JzdS1iYXJzYS10YWJsZS1yb3c+XHJcbiAgICA8IS0tIDxkaXZcclxuICAgICAgICAjcm93Qm90dG9tXHJcbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcclxuICAgICAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXHJcbiAgICAgICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25Sb3dWaXNpYmlsaXR5Q2hhbmdlKCRldmVudCwgaW5kZXgsIHJvd0JvdHRvbSlcIlxyXG4gICAgPjwvZGl2PiAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPGRpdiAjdGFibGVCb3R0b21PYnNlcnZlPjwvZGl2PlxyXG4iXX0=
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUVILHVCQUF1QixFQUV2QixvQkFBb0IsRUFFcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixrQ0FBa0MsRUFDbEMsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixpQ0FBaUMsRUFDakMsaUJBQWlCLEVBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7O0FBUy9GLE1BQU0sT0FBTyxvQkFDVCxTQUFRLHVCQUEyQztJQVJ2RDs7UUFxQm9DLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2pFLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFHaEIscUJBQWdCLEdBQW1FLEVBQUUsQ0FBQztRQUV0RixvQkFBZSxHQUFHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztRQUN0RCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxNQUFNLENBQUMsS0FBSyxD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QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDMEIsTUFBTTtzQkFBckMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ0csU0FBUztzQkFBekMsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBzaWduYWwsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LFxyXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcclxuICAgIFRhYmxlSGVhZGVyV2lkdGhNb2RlLFxyXG4gICAgQ29sdW1uUmVzaXplZEFyZ3MsXHJcbiAgICBjYWxjQ29udGV4dE1lbnVXaWR0aCxcclxuICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoLFxyXG4gICAgY2FsY3VsYXRlQ29sdW1uV2lkdGhGaXRUb0NvbnRhaW5lcixcclxuICAgIGNhbGN1bGF0ZUZyZWVDb2x1bW5TaXplLFxyXG4gICAgY2FsY3VsYXRlQ29sdW1uQ29udGVudCxcclxuICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aCxcclxuICAgIGdldERldmljZUlzTW9iaWxlXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcclxuaW1wb3J0IHsgQmFyc2FUYWJsZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktdGFibGUtdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS10YWJsZS12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaVRhYmxlVmlld0NvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxVaVRhYmxlVmlld1NldHRpbmc+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzXHJcbntcclxuICAgIEBWaWV3Q2hpbGQoJ3RhYmxlVHBsJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgX3RhYmxlUmVmOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZChCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50KSBfdGFibGVIZWFkZXJDb21wb25lbnQ6IEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBjb2x1bW5XaWR0aDogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgbWluV2lkdGg7XHJcbiAgICBASW5wdXQoKSBtaW5IZWlnaHQ7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzaXplO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZUhlYWRlckNvbnRleHRNZW51O1xyXG4gICAgQElucHV0KCkgcm93UmVzaXplcjtcclxuICAgIEBJbnB1dCgpIGVuYWJsZVJlc2l6aW5nO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZUZpeGVkVGFibGVMYXlvdXQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5weCcpIGhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC1oZWlnaHQnKSBtYXhIZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgX3dpZHRoID0gJzEwMCUnO1xyXG4gICAgc2hvd0RldGFpbHNJblJvdzogYm9vbGVhbjtcclxuICAgIGhhc1Jvd09sZ286IGJvb2xlYW47XHJcbiAgICBjb2x1bW5Db21wb25lbnRzOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgY29tcG9uZW50OiBNZXRhb2JqZWN0RGF0YU1vZGVsIH1bXSA9IFtdO1xyXG4gICAgcm93SW5kaWNhdG9yOiBib29sZWFuO1xyXG4gICAgdGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XHJcbiAgICBzdGlja3lFbmFibGUgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgcm93VmlzaWJpbHR5Q2hhbmdlID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIHRhYmxlSGVhZGVyRG9tOiBIVE1MRWxlbWVudDtcclxuICAgIF9oZWFkZXJUb3AkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gICAgcm93VmlzaWJsZSQgPSBuZXcgU3ViamVjdDx7IGluZGV4OyBkb20gfT4oKTtcclxuICAgIF9pc1BhcmVudFdpZHRoU2V0ID0gZmFsc2U7XHJcbiAgICB0YWJsZUhlYWRlclRvcCA9IDA7XHJcbiAgICB0YWJsZUhlYWRlckhlaWdodCA9IDA7XHJcbiAgICBoZWFkZXJPYnNlcnZlckRvbTogSFRNTEVsZW1lbnQ7XHJcbiAgICBub3RWaXNpYmxlSXRlbXM6IG51bWJlcltdID0gW107XHJcbiAgICB2aXNpYmxlSXRlbXM6IG51bWJlcltdID0gW107XHJcbiAgICBvbGRXaWR0aCA9IDA7XHJcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLndpbmRvd1Jlc2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB4ICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LXdpZHRoJywgeCArICdweCcpO1xyXG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVGhXaWR0aCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaGFzUm93T2xnbyA9IHRoaXMudmlld1NldHRpbmc/LlJvd09sZ28/LlNlbGVjdG9yO1xyXG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy52aWV3U2V0dGluZz8uQm9keUhlaWdodDtcclxuICAgICAgICB0aGlzLl9zZXRIYXNTdW1tZXJ5KHRoaXMuY2FydGFibGVDaGlsZHNNbyk7XHJcbiAgICAgICAgdGhpcy5fc2V0SGVpZ2h0KHRoaXMucGFyZW50SGVpZ2h0KTtcclxuICAgICAgICB0aGlzLl9zZXRXaWR0aCgpO1xyXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XHJcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlck1vZGUgPSB0aGlzLmdyaWRGcmVlQ29sdW1uU2l6aW5nXHJcbiAgICAgICAgICAgID8gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemVcclxuICAgICAgICAgICAgOiBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjtcclxuICAgICAgICB0aGlzLl9jYWxjQ29udGV4dE1lbnVXaWR0aCh0aGlzLmNvbnRleHRNZW51SXRlbXMpO1xyXG4gICAgfVxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgaWYgKHgpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3h9cHhgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgeyBjYXJ0YWJsZVRlbXBsYXRlcywgcGFyZW50SGVpZ2h0LCBjb250ZXh0TWVudUl0ZW1zLCBjb2x1bW5zQ291bnQsIGNvbHVtbnMsIHNlY29uZGFyeUNvbHVtbnMgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgIWNvbnRleHRNZW51SXRlbXMuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2FydGFibGVUZW1wbGF0ZXMgJiYgIWNhcnRhYmxlVGVtcGxhdGVzLmZpcnN0Q2hhbmdlICYmICF0aGlzLmhhc1N1bW1hcnkpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGNvbHVtbnNDb3VudCAmJiAhY29sdW1uc0NvdW50LmZpcnN0Q2hhbmdlKSB8fCAoc2Vjb25kYXJ5Q29sdW1ucyAmJiAhc2Vjb25kYXJ5Q29sdW1ucy5maXJzdENoYW5nZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHRoaXMubW9EYXRhTGlzdCwgY29sdW1ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyZW50SGVpZ2h0ICYmICFwYXJlbnRIZWlnaHQuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGVpZ2h0KHBhcmVudEhlaWdodC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgIH1cclxuICAgIF9jYWxjQ29udGV4dE1lbnVXaWR0aChjb250ZXh0TWVudUl0ZW1zKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudVdpZHRoID0gY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcywgdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudSk7XHJcbiAgICB9XHJcbiAgICBvblRhYmxlVmlzaWJpbGl0eUNoYW5nZShlLCBkb20pOiB2b2lkIHtcclxuICAgICAgICBpZiAoZSA9PT0gJ1Zpc2libGUnKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0V2lkdGgodHJ1ZSksIDEwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25Db2x1bW5SZXNpemluZyhlOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgd2lkdGg6IG51bWJlciB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuU2V0Q29sdW1uV2lkdGhUb1RoV2lkdGgoKTtcclxuICAgICAgICB0aGlzLl9zZXRQYXJlbnRXaWR0aCgpO1xyXG4gICAgfVxyXG4gICAgb25Db2x1bW5SZXNpemVkKGFycjogQXJyYXk8Q29sdW1uUmVzaXplZEFyZ3M+KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5Q29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkZXJNb2RlID09PSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl90YWJsZUhlYWRlckNvbXBvbmVudC5TZXRDb2x1bW5XaWR0aFRvVGhXaWR0aCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9QZXJjZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlJlZnJlc2hUYWJsZVRoV2lkdGgoKTtcclxuICAgICAgICB0aGlzLnJlc2l6ZWRCeVVzZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUobGFzdFRoLCAnd2lkdGgnLCBgMTAwJWApO1xyXG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KHsgY29sdW1uczogdGhpcy5jb2x1bW5zLCByZXNpemVkOiBhcnIgfSk7XHJcbiAgICB9XHJcbiAgICBvbkZpdFRvQ29udGFpbmVyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XHJcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50V2lkdGhGaXQoKTtcclxuICAgICAgICB0aGlzLl90YWJsZUhlYWRlckNvbXBvbmVudC5TZXRDb2x1bW5XaWR0aFRvUGVyY2VudCgpO1xyXG4gICAgICAgIC8vIHRoaXMuX3JlZnJlc2hUaFdpZHRoKCk7XHJcbiAgICAgICAgLy8gdGhpcy5fZmlyZVJlc2l6ZUNoYW5nZWQoKTtcclxuICAgIH1cclxuICAgIG9uRnJlZUNvbHVtblNpemluZygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplO1xyXG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9UaFdpZHRoKCk7XHJcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50V2lkdGhGaXRUb09mZnNldFdpZHRoKCk7XHJcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHRoaXMubW9EYXRhTGlzdCwgdGhpcy5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIG9uRml0VG9Db250ZW50KGU6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgfSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHsgY29sdW1uLCB0aERvbSB9ID0gZTtcclxuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplO1xyXG4gICAgICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIGNvbHVtbik7XHJcbiAgICAgICAgY29sdW1uLiRXaWR0aCA9IGNvbHVtbi4kQ29udGVudFdpZHRoO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aERvbSwgJ3dpZHRoJywgY29sdW1uLiRXaWR0aCk7XHJcbiAgICAgICAgdGhpcy5fZmlyZVJlc2l6ZUNoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNldFRhYmxlSGVhZGVyRG9tKGRvbSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJEb20gPSBkb207XHJcbiAgICAgICAgY29uc3QgcmVjdCA9IGRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyVG9wID0gcmVjdC50b3A7XHJcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlckhlaWdodCA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgb25IZWFkZXJWaXNpYmlsaXR5Q2hhbmdlKGUsIGRvbSk6IHZvaWQge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLmhlYWRlck9ic2VydmVyRG9tID0gZG9tO1xyXG4gICAgICAgIGlmIChlID09PSAnTm90VmlzaWJsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGlja3lFbmFibGUuc2V0KHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5RW5hYmxlLnNldChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uUm93VmlzaWJpbGl0eUNoYW5nZShlLCBpbmRleCwgZG9tKTogdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmIChlICE9PSAnUGVuZGluZycpIHtcclxuICAgICAgICAgICAgaWYgKGUgPT09ICdOb3RWaXNpYmxlJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZUl0ZW1zLmluZGV4T2YoaW5kZXgpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93VmlzaWJsZSQubmV4dCh7IGluZGV4LCBkb20gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnZpc2libGVJdGVtcy5maWx0ZXIoKGMpID0+IGMgIT09IGluZGV4KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zLnB1c2goaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zID0gdGhpcy5ub3RWaXNpYmxlSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpbmRleCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMucHVzaChpbmRleCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gdGhpcy5yb3dWaXNpYmxlJC5uZXh0KHsgaW5kZXgsIGRvbSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRQYXJlbnRXaWR0aEZpdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCAnd2lkdGgnLCBgMTAwJWApO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWluLXdpZHRoJywgYDEwMCVgKTtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYDEwMCVgKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3NldFBhcmVudFdpZHRoRml0VG9PZmZzZXRXaWR0aCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB4MSA9IE1hdGguZmxvb3IodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCAnd2lkdGgnLCBgJHt4MX1weGApO1xyXG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWluLXdpZHRoJywgYCR7eH1weGApO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBgJHt4fXB4YCk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRQYXJlbnRXaWR0aCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB4ID0gTWF0aC5mbG9vcih0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAke3h9cHhgKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3JlZnJlc2hUaFdpZHRoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XHJcbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQ/LlJlZnJlc2hUYWJsZVRoV2lkdGgoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3NldFdpZHRoKHNldFdpZHRoPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHdpZHRoT2ZEb20gPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2cod2lkdGhPZkRvbSk7XHJcblxyXG4gICAgICAgIGlmICh3aWR0aE9mRG9tID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHdpZHRoT2ZEb20gIT09IHRoaXMub2xkV2lkdGgpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRoV2lkdGgoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbGRXaWR0aCA9IHdpZHRoT2ZEb207XHJcbiAgICAgICAgY29uc3QgcGFyZW50V2lkdGggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgY29uc3QgZWxXaWR0aCA9IE1hdGguZmxvb3IodGhpcy5fZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgaWYgKHBhcmVudFdpZHRoICE9PSBlbFdpZHRoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBwYXJlbnRXaWR0aCArICdweCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ21heC13aWR0aCcsIHBhcmVudFdpZHRoICsgJ3B4Jyk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIHBhcmVudFdpZHRoICsgJ3B4Jyk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9jYWxjdWxhdGVIZWFkZXJTdGlja3lUb3AoZG9tOiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN0aWNreUVuYWJsZSgpICYmIHRoaXMudGFibGVIZWFkZXJEb20pIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgcmVjID0gdGhpcy5oZWFkZXJPYnNlcnZlckRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgLy8gY29uc3QgdG9wID0gcmVjLnRvcDtcclxuICAgICAgICAgICAgLy8gY29uc3QgY2FsYyA9IHRoaXMudGFibGVIZWFkZXJUb3AgLSB0b3AgLSB0aGlzLnRhYmxlSGVhZGVySGVpZ2h0ICsgJ3B4JztcclxuICAgICAgICAgICAgY29uc3QgcmVjID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5faGVhZGVyVG9wJC5uZXh0KHJlYy50b3AgLSAxMiArIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgKyAncHgnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9maXJlUmVzaXplQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvbHVtblJlc2l6ZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcclxuICAgICAgICAgICAgcmVzaXplZDogdGhpcy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgbmFtZTogYy5OYW1lLCB3aWR0aDogYy5XaWR0aCB9KSlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY2FsY3VsYXRlQ29sdW1uc1dpZHRoKG1vRGF0YUxpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSwgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdKTogdm9pZCB7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnRhYmxlSGVhZGVyTW9kZSkge1xyXG4gICAgICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZnJlZUNvbHVtblNpemUobW9EYXRhTGlzdCwgY29sdW1ucyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb1Jvd0NvbnRlbnQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9maXRUb1Jvd0NvbnRlbnRDb2x1bW4obW9EYXRhTGlzdCwgY29sdW1ucyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjpcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpdFRvQ29udGFpbmVyKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9maXRUb0NvbHVtbihtb0RhdGFMaXN0LCBjb2x1bW5zKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoKGVsRG9tLCBjb2x1bW5zLCBtb0RhdGFMaXN0LCB0aGlzLmRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51LCB0aGlzLmNvbnRleHRNZW51SXRlbXMpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9maXRUb1Jvd0NvbnRlbnRDb2x1bW4obW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10pOiB2b2lkIHtcclxuICAgICAgICBjYWxjdWxhdGVDb2x1bW5Db250ZW50KGNvbHVtbnMsIG1vRGF0YUxpc3QpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9maXRUb0NvbnRhaW5lcihtb0RhdGFMaXN0LCBjb2x1bW5zKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY2FsY3VsYXRlQ29sdW1uV2lkdGhGaXRUb0NvbnRhaW5lcihcclxuICAgICAgICAgICAgZWxEb20sXHJcbiAgICAgICAgICAgIHRoaXMuY2FuVmlldyxcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlSGVhZGVyQ29udGV4dE1lbnUsXHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcyxcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfZnJlZUNvbHVtblNpemUobW9EYXRhTGlzdCwgY29sdW1ucyk6IHZvaWQge1xyXG4gICAgICAgIGNhbGN1bGF0ZUZyZWVDb2x1bW5TaXplKHRoaXMuY29sdW1ucyk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3NldEhlaWdodChwYXJlbnRIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmluRGlhbG9nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gcGFyZW50SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxzQ29sdW1ucz8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb21wb25lbnQ/LlNlbGVjdG9yIHx8XHJcbiAgICAgICAgICAgIChjYXJ0YWJsZVRlbXBsYXRlcyAmJiBPYmplY3Qua2V5cyhjYXJ0YWJsZVRlbXBsYXRlcykubGVuZ3RoID4gMClcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93RGV0YWlsc0luUm93ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5oYXNEZXRhaWxzSW5Sb3cuZW1pdCh0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmhhc0RldGFpbHNJblJvdy5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2NvbnRhaW5lcldpZHRoQ2hhbmdlZCh2YWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICh2YWwgPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fd2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fd2lkdGggPSB2YWwgPyB2YWwgKyAncHgnIDogJzEwMCUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgdGhpcy5fd2lkdGgpO1xyXG4gICAgfVxyXG59XHJcbiIsIjx0YWJsZVxyXG4gICAgZmQtdGFibGVcclxuICAgICN0YWJsZVRwbFxyXG4gICAgI2hlYWRlckJvdHRvbU9ic2VydmVyXHJcbiAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxyXG4gICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxyXG4gICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25UYWJsZVZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBoZWFkZXJCb3R0b21PYnNlcnZlcilcIlxyXG4gICAgW3BvcEluXT1cInBvcGluXCJcclxuICAgIFtjbGFzcy50YWJsZS1maXhlZF09XCJcclxuICAgICAgICAhY29udGV4dFZpZXc/LkdyaWRfSGlkZUhlYWRlciAmJiAoIXBvcGluIHx8IHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID09PSAwKSAmJiAhZGlzYWJsZUZpeGVkVGFibGVMYXlvdXRcclxuICAgIFwiXHJcbiAgICBbbm9Cb3JkZXJYXT1cInZpZXdTZXR0aW5nPy5Ob0hvcml6dG9uYWxCb3JkZXJzID09PSB0cnVlXCJcclxuICAgIFtub0JvcmRlclldPVwidmlld1NldHRpbmc/Lk5vVmVydGljYWxCb3JkZXJzID09PSB0cnVlIHx8IChwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApXCJcclxuPlxyXG4gICAgQGlmIChjb2x1bW5zIHwgbWVyZ2VGaWVsZHNUb0NvbHVtbnM6IHZpZXdTZXR0aW5nPy5NZXJnZUZpZWxkc1RvQ29sdW1ucz8uTW9EYXRhTGlzdDsgYXMgbWVyZ2VGaWVsZHNUb0NvbHVtbnMpIHtcclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICBoZWFkZXJUZW1wbGF0ZTtcclxuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zLCBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3Q/Lmxlbmd0aCB9XHJcbiAgICAgICAgXCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIEBpZiAobW9EYXRhTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgYm9keVRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbWVyZ2VGaWVsZHNUb0NvbHVtbnMsIHByZXZpZXdDb2x1bW46IGFsbENvbHVtbnMgfCBmaW5kUHJldmlld0NvbHVtbiB9XHJcbiAgICAgICAgXCJcclxuICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIH0gfVxyXG48L3RhYmxlPlxyXG48IS0tcmVuZGVyQ29sdW1uLS0+XHJcblxyXG5AaWYgKCFtb0RhdGFMaXN0Py5sZW5ndGgpIHtcclxuPGJzdS1uby1kYXRhXHJcbiAgICBbY2xhc3Mubm8tdG9wYm9yZGVyXT1cIiFoaWRlVG9vbGJhclwiXHJcbiAgICBbY2xhc3Mubm9ib3JkZXJdPVwiY29udGV4dFZpZXcuR3JpZF9IaWRlSGVhZGVyICYmIGhpZGVUb29sYmFyXCJcclxuICAgIFtzaW1wbGVdPVwidHJ1ZVwiXHJcbj5cclxuPC9ic3Utbm8tZGF0YT5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtbW9EYXRhTGlzdENvdW50PlxyXG4gICAgPGJzdS1iYXJzYS10YWJsZS1oZWFkZXJcclxuICAgICAgICBbc3RpY2t5XT1cInN0aWNreUVuYWJsZSgpXCJcclxuICAgICAgICBbaGFzU2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgIFtjbGFzcy5oYXMtdG9vbGJhcl09XCIhaGlkZVRvb2xiYXJcIlxyXG4gICAgICAgIFtzdHlsZS5wb2ludGVyLWV2ZW50c109XCJtb0RhdGFMaXN0Q291bnQgPyAnYXV0bycgOiAnbm9uZSdcIlxyXG4gICAgICAgIFt0YWJsZVdpZHRoXT1cImVsV2lkdGhcIlxyXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxyXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcclxuICAgICAgICBbcmVzaXplZEJ5VXNlcl09XCJyZXNpemVkQnlVc2VyXCJcclxuICAgICAgICBbdGFibGVIZWFkZXJNb2RlXT1cInRhYmxlSGVhZGVyTW9kZVwiXHJcbiAgICAgICAgW3Nob3dSb3dOdW1iZXJdPVwiY29udGV4dFZpZXc/LkdyaWRfU2hvd1Jvd051bWJlclwiXHJcbiAgICAgICAgW2FsbENoZWNrZWRdPVwiYWxsQ2hlY2tlZFwiXHJcbiAgICAgICAgW3J0bF09XCJydGxcIlxyXG4gICAgICAgIFthY3Rpb25MaXN0XT1cImFjdGlvbkxpc3RcIlxyXG4gICAgICAgIFtkaXNhYmxlUmVzcG9uc2l2ZV09XCJkaXNhYmxlUmVzcG9uc2l2ZVwiXHJcbiAgICAgICAgW2lzQ2hlY2tMaXN0XT1cImlzQ2hlY2tMaXN0XCJcclxuICAgICAgICBbY29sdW1uc109XCJcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uczpyb3dJbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyOiB7IElzUHJldmlldzogZmFsc2UgfVxyXG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2ZpdFdpZHRoXT1cImZpdFdpZHRoXCJcclxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxyXG4gICAgICAgIFtpbmxpbmVFZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXHJcbiAgICAgICAgW2NvbnRleHRNZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgICAgW2NvbnRleHRNZW51V2lkdGhdPVwiY29udGV4dE1lbnVXaWR0aFwiXHJcbiAgICAgICAgW3Nob3dWaWV3QnV0dG9uXT1cInNob3dWaWV3QnV0dG9uXCJcclxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICBbdmlld1NldHRpbmddPVwidmlld1NldHRpbmdcIlxyXG4gICAgICAgIFtoaWRlSGVhZGVyXT1cImNvbnRleHRWaWV3LkdyaWRfSGlkZUhlYWRlclwiXHJcbiAgICAgICAgW3Jvd0luZGljYXRvcl09XCJyb3dJbmRpY2F0b3JcIlxyXG4gICAgICAgIFtkaXNhYmxlUmVzaXplXT1cImRpc2FibGVSZXNpemVcIlxyXG4gICAgICAgIFtkaXNhYmxlSGVhZGVyQ29udGV4dE1lbnVdPVwiZGlzYWJsZUhlYWRlckNvbnRleHRNZW51XCJcclxuICAgICAgICAoaGVhZGVyUmVuZGVyKT1cIm9uU2V0VGFibGVIZWFkZXJEb20oJGV2ZW50KVwiXHJcbiAgICAgICAgKGNvbHVtblJlc2l6ZSk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNvbHVtblJlc2l6aW5nKT1cIm9uQ29sdW1uUmVzaXppbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgKGZpdFRvQ29udGVudCk9XCJvbkZpdFRvQ29udGVudCgkZXZlbnQpXCJcclxuICAgICAgICAoZml0VG9Db250YWluZXIpPVwib25GaXRUb0NvbnRhaW5lcigpXCJcclxuICAgICAgICAoZnJlZUNvbHVtblNpemUpPVwib25GcmVlQ29sdW1uU2l6aW5nKClcIlxyXG4gICAgICAgIChhbGxDaGVja2JveCk9XCJvbkFsbENoZWNrYm94KCRldmVudClcIlxyXG4gICAgICAgIChzb3J0QXNjZW5kaW5nKT1cIm9uU29ydEFzY2VuZGluZygkZXZlbnQpXCJcclxuICAgICAgICAoc29ydERlc2NlbmRpbmcpPVwib25Tb3J0RGVzY2VuZGluZygkZXZlbnQpXCJcclxuICAgICAgICAoZmlsdGVyKT1cIm9uRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgIChyZXNldEdyaWRTZXR0aW5ncyk9XCJyZXNldEdyaWRTZXR0aW5ncy5lbWl0KClcIlxyXG4gICAgPjwvYnN1LWJhcnNhLXRhYmxlLWhlYWRlcj5cclxuICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICNoZWFkZXJCb3R0b21PYnNlcnZlclxyXG4gICAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyXHJcbiAgICAgICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxyXG4gICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uSGVhZGVyVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGhlYWRlckJvdHRvbU9ic2VydmVyKVwiXHJcbiAgICA+PC9kaXY+IC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIj5cclxuICAgIDx0Ym9keVxyXG4gICAgICAgICNib2R5XHJcbiAgICAgICAgZmQtdGFibGUtYm9keVxyXG4gICAgICAgIFtjbGFzcy5ub2JvcmRlcl09XCJ2aWV3U2V0dGluZz8uTm9Cb2R5Qm9yZGVycyA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgW25vQm9yZGVyWF09XCJ2aWV3U2V0dGluZz8uTm9Ib3JpenRvbmFsQm9yZGVycyA9PT0gdHJ1ZSB8fCBwcmV2aWV3Q29sdW1uXCJcclxuICAgICAgICBbbm9Cb3JkZXJZXT1cIihwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApIHx8IHByZXZpZXdDb2x1bW5cIlxyXG4gICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIEBmb3IgKG1vIG9mIG1vRGF0YUxpc3QgfCBtdWx0aXBsZUdyb3VwQnk6IGdyb3VwYnk7IHRyYWNrIF90cmFja0J5Um93KGluZGV4LCBtbyk7IGxldCBpbmRleCA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGhhc1Jvd09sZ28gPyByb3dPbGdvVGVtcGxhdGUgOiByb3dUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogbW8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm93TnVtYmVyOiBtby5JZCB8IHJvd051bWJlcjogcGFnaW5nU2V0dGluZzptb0RhdGFMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJbmRpY2F0b3JDb2xvcjogIWNvbHVtbnMubGVuZ3RoID8gJycgOiAoY29sdW1uc1swXS5DYXB0aW9uIHwgcnZhbDogbW86Y29sdW1ucyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMgfCBjb2x1bW5DdXN0b21Db21wb25lbnQ6IHZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzPy5Nb0RhdGFMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb2x1bW5zOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5Q29sdW1ucyB8IGNvbHVtbkN1c3RvbUNvbXBvbmVudDogdmlld1NldHRpbmc/LkNvbHVtbkNvbXBvbmVudHM/Lk1vRGF0YUxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vRGF0YUxpc3Q6IG1vRGF0YUxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vRGF0YUxpc3RDb3VudDogbW9EYXRhTGlzdC5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRhYmxlVGVtcGxhdGU6IGNhcnRhYmxlVGVtcGxhdGVzW21vLlJlbGF0ZWRNbz8uJFR5cGVEZWZJZCArICdAJyArIG1vLkNhcnRhYmxlU2V0dGluZ3M/LklkXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0NvbHVtbjogcHJldmlld0NvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsc0NvbGxhcHNlZDogdmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5EZXRhaWxzQ29sbGFwc2VkID09PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRlRGV0YWlsc1RleHQ6IHZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uSGlkZURldGFpbHNUZXh0ID09PSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3Rib2R5PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlIGxldC1jb2x1bW5zPlxyXG4gICAgQGlmIChoYXNTdW1tYXJ5KSB7XHJcbiAgICA8dGZvb3QgZmQtdGFibGUtZm9vdGVyPlxyXG4gICAgICAgIDx0ciBmZC10YWJsZS1yb3cgY2xhc3M9XCJyb3ctc3VtbWFyeVwiPlxyXG4gICAgICAgICAgICBAaWYgKGlzQ2hlY2tMaXN0KSB7XHJcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNvbHVtblJlc2l6ZXI+XHJcbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY29sLXRvdGFsLXRleHRcIj57eyAnVG90YWwnIHwgYmJiVHJhbnNsYXRlIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIH0gQGlmICghaXNDaGVja0xpc3QpIHtcclxuICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY29sLXRvdGFsLXRleHRcIj57eyAnVG90YWwnIHwgYmJiVHJhbnNsYXRlIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIH0gQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbjsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uSGFzU3VtbWFyeSkge1xyXG4gICAgICAgICAgICAgICAgPHN0cm9uZyBzdHlsZT1cImRpcmVjdGlvbjogbHRyOyBkaXNwbGF5OiBibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG1vRGF0YUxpc3QgfCB0b3RhbFN1bW1hcnk6IGNvbHVtbi5OYW1lIHwgbnVtYmVyIH19PC9zdHJvbmdcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgfSBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIHN0eWxlPVwid2lkdGg6IDEwMHB4XCI+PC90ZD5cclxuICAgICAgICAgICAgfSBAaWYgKCFoaWRlT3Blbkljb24gJiYgY2FuVmlldyAmJiAoIWlubGluZUVkaXRNb2RlIHx8ICFhbGxvd0lubGluZUVkaXQpKSB7XHJcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsPjwvdGQ+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90Zm9vdD5cclxuICAgIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlXHJcbiAgICAjcm93T2xnb1RlbXBsYXRlXHJcbiAgICBsZXQtbW9cclxuICAgIGxldC1pbmRleD1cImluZGV4XCJcclxuICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgICBsZXQtbW9EYXRhTGlzdENvdW50PVwibW9EYXRhTGlzdENvdW50XCJcclxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXHJcbiAgICBsZXQtY2FydGFibGVUZW1wbGF0ZT1cImNhcnRhYmxlVGVtcGxhdGVcIlxyXG4gICAgbGV0LXNlY29uZGFyeUNvbHVtbnM9XCJzZWNvbmRhcnlDb2x1bW5zXCJcclxuICAgIGxldC1yb3dJbmRpY2F0b3JDb2xvcj1cInJvd0luZGljYXRvckNvbG9yXCJcclxuICAgIGxldC1yb3dOdW1iZXI9XCJyb3dOdW1iZXJcIlxyXG4gICAgbGV0LXByZXZpZXdDb2x1bW49XCJwcmV2aWV3Q29sdW1uXCJcclxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXHJcbiAgICBsZXQtaGlkZURldGFpbHNUZXh0PVwiaGlkZURldGFpbHNUZXh0XCJcclxuPlxyXG4gICAgPGJucmMtZHluYW1pYy1pdGVtLWNvbXBvbmVudFxyXG4gICAgICAgIFtjb21wb25lbnRdPVwidmlld1NldHRpbmcuUm93T2xnb1wiXHJcbiAgICAgICAgW21vXT1cIm1vXCJcclxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcclxuICAgICAgICBbaGlkZURldGFpbHNUZXh0XT1cImhpZGVEZXRhaWxzVGV4dFwiXHJcbiAgICAgICAgW2lzTGFzdENoaWxkR3JvdXBdPVwibW8uJElzTGFzdENoaWxkR3JvdXBcIlxyXG4gICAgICAgIFtncm91cFN1bW1hcnldPVwiZ3JvdXBTdW1tYXJ5XCJcclxuICAgICAgICBbc2hvd1ZpZXdCdXR0b25dPVwic2hvd1ZpZXdCdXR0b25cIlxyXG4gICAgICAgIFtpbmxpbmVFZGl0V2l0aG91dFNlbGVjdGlvbl09XCJpbmxpbmVFZGl0V2l0aG91dFNlbGVjdGlvblwiXHJcbiAgICAgICAgW1Vsdk1haW5DdHJscl09XCJVbHZNYWluQ3RybHJcIlxyXG4gICAgICAgIFttb0RhdGFMaXN0XT1cIm1vRGF0YUxpc3RcIlxyXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxyXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcclxuICAgICAgICBbZGV0YWlsc0NvbHVtbnNdPVwiZGV0YWlsc0NvbHVtbnNcIlxyXG4gICAgICAgIFtzaG93Um93TnVtYmVyXT1cImNvbnRleHRWaWV3Py5HcmlkX1Nob3dSb3dOdW1iZXJcIlxyXG4gICAgICAgIFtyb3dOdW1iZXJdPVwicm93TnVtYmVyXCJcclxuICAgICAgICBbY29sdW1uQ29tcG9uZW50c109XCJ2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cyB8fCBudWxsXCJcclxuICAgICAgICBbY2FydGFibGVUZW1wbGF0ZV09XCJjYXJ0YWJsZVRlbXBsYXRlXCJcclxuICAgICAgICBbY2FydGFibGVNb109XCJtby5SZWxhdGVkTW9cIlxyXG4gICAgICAgIFtkaXJ0eUNvbHVtbnNdPVwibW8uJERpcnR5Q29sdW1uc1wiXHJcbiAgICAgICAgW2NhcnRhYmxlV29ya2Zsb3dEYXRhXT1cIm1vLlNlcmlhbGl6ZWRXb3JrZmxvd0RhdGFcIlxyXG4gICAgICAgIFtzZXJpYWxpemVkUmVsYXRlZE1vXT1cIm1vLlNlcmlhbGl6ZWRSZWxhdGVkTW9cIlxyXG4gICAgICAgIFtkZXRhaWxzVGV4dF09XCJ2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkJ1dHRvblRleHRcIlxyXG4gICAgICAgIFtkZXRhaWxzVGV4dEZ1bmN0aW9uXT1cInZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uQnV0dG9uVGV4dEZ1bmN0aW9uXCJcclxuICAgICAgICBbZGV0YWlsc0NvbXBvbmVudF09XCJkZXRhaWxzQ29tcG9uZW50XCJcclxuICAgICAgICBbY29sb3JpbmdSb3ddPVwidmlld1NldHRpbmc/LkNvbG9yaW5nUm93XCJcclxuICAgICAgICBbaXNDaGVja2VkXT1cIm1vLiRJc0NoZWNrZWRcIlxyXG4gICAgICAgIFt2aXNpYmlsaXR5XT1cIm1vLiRWaXNpYmlsaXR5XCJcclxuICAgICAgICBbZXhwYW5kZWRdPVwibW8uJEV4cGFuZGVkXCJcclxuICAgICAgICBbc3R5bGVJbmRleF09XCJtby4kU3R5bGVJbmRleFwiXHJcbiAgICAgICAgW2xldmVsXT1cIm1vLiRMZXZlbFwiXHJcbiAgICAgICAgW3BhcmVudEV4cGFuZGVkXT1cIm1vLiRQYXJlbnQ/LiRFeHBhbmRlZFwiXHJcbiAgICAgICAgW21vRGF0YUxpc3RDb3VudF09XCJtb0RhdGFMaXN0Q291bnRcIlxyXG4gICAgICAgIFtjb2x1bW5zQ291bnRdPVwiY29sdW1uc0NvdW50IC0gZGV0YWlsc0NvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXHJcbiAgICAgICAgW2V4dHJhUmVsYXRpb25dPVwiZXh0cmFSZWxhdGlvblwiXHJcbiAgICAgICAgW2Zvcm1TZXR0aW5nXT1cImZvcm1TZXR0aW5nXCJcclxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxyXG4gICAgICAgIFtzZXR0aW5nXT1cInZpZXdTZXR0aW5nXCJcclxuICAgICAgICBbc2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXCJcclxuICAgICAgICBbaXNOZXdJbmxpbmVNb109XCJtby4kTmV3SW5saW5lTW9cIlxyXG4gICAgICAgIFthY2Nlc3NdPVwiYWNjZXNzXCJcclxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxyXG4gICAgICAgIFthbGxvd0lubGluZUVkaXRdPVwiYWxsb3dJbmxpbmVFZGl0XCJcclxuICAgICAgICBbcnRsXT1cInJ0bFwiXHJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXHJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXHJcbiAgICAgICAgW2NvbnRleHRNZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgICAgW2NhblZpZXddPVwiY2FuVmlld1wiXHJcbiAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXHJcbiAgICAgICAgW25hdmlnYXRpb25BcnJvd109XCJuYXZpZ2F0aW9uQXJyb3dcIlxyXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXHJcbiAgICAgICAgW3Jvd0luZGljYXRvcl09XCJyb3dJbmRpY2F0b3JcIlxyXG4gICAgICAgIFtyb3dJbmRpY2F0b3JDb2xvcl09XCJyb3dJbmRpY2F0b3JDb2xvclwiXHJcbiAgICAgICAgKGV2ZW50cyk9XCJvbk9sZ29FdmVudHMoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L2JucmMtZHluYW1pYy1pdGVtLWNvbXBvbmVudD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlXHJcbiAgICAjcm93VGVtcGxhdGVcclxuICAgIGxldC1tb1xyXG4gICAgbGV0LWluZGV4PVwiaW5kZXhcIlxyXG4gICAgbGV0LXJvd051bWJlcj1cInJvd051bWJlclwiXHJcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxyXG4gICAgbGV0LW1vRGF0YUxpc3RDb3VudD1cIm1vRGF0YUxpc3RDb3VudFwiXHJcbiAgICBsZXQtbW9EYXRhTGlzdD1cIm1vRGF0YUxpc3RcIlxyXG4gICAgbGV0LWNhcnRhYmxlVGVtcGxhdGU9XCJjYXJ0YWJsZVRlbXBsYXRlXCJcclxuICAgIGxldC1zZWNvbmRhcnlDb2x1bW5zPVwic2Vjb25kYXJ5Q29sdW1uc1wiXHJcbiAgICBsZXQtcm93SW5kaWNhdG9yQ29sb3I9XCJyb3dJbmRpY2F0b3JDb2xvclwiXHJcbiAgICBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIlxyXG4gICAgbGV0LWRldGFpbHNDb2xsYXBzZWQ9XCJkZXRhaWxzQ29sbGFwc2VkXCJcclxuICAgIGxldC1oaWRlRGV0YWlsc1RleHQ9XCJoaWRlRGV0YWlsc1RleHRcIlxyXG4+XHJcbiAgICA8YnN1LWJhcnNhLXRhYmxlLXJvd1xyXG4gICAgICAgIFttb109XCJtb1wiXHJcbiAgICAgICAgW2RpcnR5Q29sdW1uc109XCJtby4kRGlydHlDb2x1bW5zXCJcclxuICAgICAgICBbaW5saW5lRWRpdFdpdGhvdXRTZWxlY3Rpb25dPVwiaW5saW5lRWRpdFdpdGhvdXRTZWxlY3Rpb25cIlxyXG4gICAgICAgIFtpc0xhc3RDaGlsZEdyb3VwXT1cIm1vLiRJc0xhc3RDaGlsZEdyb3VwXCJcclxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcclxuICAgICAgICBbaGlkZURldGFpbHNUZXh0XT1cImhpZGVEZXRhaWxzVGV4dFwiXHJcbiAgICAgICAgW2RldGFpbHNDb2xsYXBzZWRdPVwiZGV0YWlsc0NvbGxhcHNlZFwiXHJcbiAgICAgICAgW2dyb3VwU3VtbWFyeV09XCJncm91cFN1bW1hcnlcIlxyXG4gICAgICAgIFtVbHZNYWluQ3RybHJdPVwiVWx2TWFpbkN0cmxyXCJcclxuICAgICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxyXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxyXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcclxuICAgICAgICBbc2hvd1Jvd051bWJlcl09XCJjb250ZXh0Vmlldz8uR3JpZF9TaG93Um93TnVtYmVyXCJcclxuICAgICAgICBbcm93TnVtYmVyXT1cInJvd051bWJlclwiXHJcbiAgICAgICAgW2NvbG9yaW5nUm93XT1cInZpZXdTZXR0aW5nPy5Db2xvcmluZ1Jvd1wiXHJcbiAgICAgICAgW2Rpc2FibGVFbGxhcHNpc109XCJ2aWV3U2V0dGluZz8uRGlzYWJsZUVsbGFwc2lzXCJcclxuICAgICAgICBbc2hvd1ZpZXdCdXR0b25dPVwic2hvd1ZpZXdCdXR0b25cIlxyXG4gICAgICAgIFtkZXRhaWxzQ29sdW1uc109XCJkZXRhaWxzQ29sdW1uc1wiXHJcbiAgICAgICAgW2NvbHVtbkNvbXBvbmVudHNdPVwidmlld1NldHRpbmc/LkNvbHVtbkNvbXBvbmVudHMgfHwgbnVsbFwiXHJcbiAgICAgICAgW2NhcnRhYmxlVGVtcGxhdGVdPVwiY2FydGFibGVUZW1wbGF0ZVwiXHJcbiAgICAgICAgW2NhcnRhYmxlTW9dPVwibW8uUmVsYXRlZE1vXCJcclxuICAgICAgICBbY2FydGFibGVXb3JrZmxvd0RhdGFdPVwibW8uU2VyaWFsaXplZFdvcmtmbG93RGF0YVwiXHJcbiAgICAgICAgW3NlcmlhbGl6ZWRSZWxhdGVkTW9dPVwibW8uU2VyaWFsaXplZFJlbGF0ZWRNb1wiXHJcbiAgICAgICAgW2RldGFpbHNUZXh0XT1cInZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uQnV0dG9uVGV4dFwiXHJcbiAgICAgICAgW2RldGFpbHNDb21wb25lbnRdPVwiZGV0YWlsc0NvbXBvbmVudFwiXHJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJtby4kSXNDaGVja2VkXCJcclxuICAgICAgICBbdmlzaWJpbGl0eV09XCJtby4kVmlzaWJpbGl0eVwiXHJcbiAgICAgICAgW2V4cGFuZGVkXT1cIm1vLiRFeHBhbmRlZFwiXHJcbiAgICAgICAgW3N0eWxlSW5kZXhdPVwibW8uJFN0eWxlSW5kZXhcIlxyXG4gICAgICAgIFtsZXZlbF09XCJtby4kTGV2ZWxcIlxyXG4gICAgICAgIFtwYXJlbnRFeHBhbmRlZF09XCJtby4kUGFyZW50Py4kRXhwYW5kZWRcIlxyXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdENvdW50XCJcclxuICAgICAgICBbY29sdW1uc0NvdW50XT1cImNvbHVtbnNDb3VudCAtIGRldGFpbHNDb2x1bW5zLmxlbmd0aFwiXHJcbiAgICAgICAgW3R5cGVEZWZJZF09XCJ0eXBlRGVmSWRcIlxyXG4gICAgICAgIFtleHRyYVJlbGF0aW9uXT1cImV4dHJhUmVsYXRpb25cIlxyXG4gICAgICAgIFtmb3JtU2V0dGluZ109XCJmb3JtU2V0dGluZ1wiXHJcbiAgICAgICAgW2luZGV4XT1cImluZGV4XCJcclxuICAgICAgICBbc2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXHJcbiAgICAgICAgW2NoZWNrYm94Q29tcG9uZW50XT1cInZpZXdTZXR0aW5nPy5DaGVja2JveENvbXBvbmVudFwiXHJcbiAgICAgICAgW3NlY29uZGFyeUNvbHVtbnNdPVwiXHJcbiAgICAgICAgICAgIHNlY29uZGFyeUNvbHVtbnNcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6ZmFsc2VcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyOiB7IElzUHJldmlldzogZmFsc2UgfVxyXG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbnNcclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXHJcbiAgICAgICAgICAgICAgICB8IGZpbHRlcjogeyBJc1ByZXZpZXc6IGZhbHNlIH1cclxuICAgICAgICAgICAgICAgIHwgaGlkZUNvbHVtbnNJbm1vYmlsZTogdmlld1NldHRpbmc/LkhpZGVDb2x1bW5zSW5Nb2JpbGVcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtpc05ld0lubGluZU1vXT1cIm1vLiROZXdJbmxpbmVNb1wiXHJcbiAgICAgICAgW2FjY2Vzc109XCJhY2Nlc3NcIlxyXG4gICAgICAgIFtzaW1wbGVJbmxpbmVFZGl0XT1cInNpbXBsZUlubGluZUVkaXRcIlxyXG4gICAgICAgIFtub1NhdmVJbmxpbmVFZGl0SW5TZXJ2ZXJdPVwic2ltcGxlSW5saW5lRWRpdFwiXHJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXHJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcclxuICAgICAgICBbYWxsb3dJbmxpbmVFZGl0XT1cImFsbG93SW5saW5lRWRpdFwiXHJcbiAgICAgICAgW3J0bF09XCJydGxcIlxyXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxyXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxyXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxyXG4gICAgICAgIFtjYW5WaWV3XT1cImNhblZpZXdcIlxyXG4gICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcclxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxyXG4gICAgICAgIFtuYXZpZ2F0aW9uQXJyb3ddPVwibmF2aWdhdGlvbkFycm93XCJcclxuICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxyXG4gICAgICAgIFtyb3dJbmRpY2F0b3JdPVwicm93SW5kaWNhdG9yXCJcclxuICAgICAgICBbcm93SW5kaWNhdG9yQ29sb3JdPVwicm93SW5kaWNhdG9yQ29sb3JcIlxyXG4gICAgICAgIFtwcmV2aWV3Q29sdW1uXT1cInByZXZpZXdDb2x1bW5cIlxyXG4gICAgICAgIChjb2x1bW5TdW1tYXJ5KT1cImNvbHVtblN1bW1hcnkuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAocmVzZXRXb3JrZmxvd1N0YXRlKT1cInJlc2V0V29ya2Zsb3dTdGF0ZS5lbWl0KG1vKVwiXHJcbiAgICAgICAgKGVzY2FwZUtleSk9XCJvbkVzY2FwZUtleSgkZXZlbnQpXCJcclxuICAgICAgICAoZXhwYW5kQ2xpY2spPVwib25FeHBhbmRDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAocm93Q2hlY2spPVwib25Sb3dDaGVjaygkZXZlbnQpXCJcclxuICAgICAgICAod29ya2Zsb3dTaGFyZUJ1dHRvbnMpPVwib25Xb3JrZmxvd1NoYXJlQnV0dG9ucygkZXZlbnQpXCJcclxuICAgICAgICAoZGVzZWxlY3RBbGwpPVwib25EZXNlbGVjdEFsbCgpXCJcclxuICAgICAgICAocm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAodWx2Q29tbWFuZCk9XCJvblVsdkNvbW1hbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGFjdGlvbkxpc3RDbGljayk9XCJvbkFjdGlvbkxpc3RDbGljayhtbywgaW5kZXgsICRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3ROZXh0SW5saW5lUmVjb3JkKT1cIm9uU2VsZWN0TmV4dElubGluZVJlY29yZCgkZXZlbnQpXCJcclxuICAgICAgICAoZWRpdEZvcm1QYW5lbFNhdmUpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcclxuICAgICAgICAoZWRpdEZvcm1QYW5lbENhbmNlbCk9XCJvbkVkaXRGb3JtUGFuZWxDYW5jZWwoJGV2ZW50KVwiXHJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZSk9XCJvbkVkaXRGb3JtUGFuZWxWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoY2FydGFibGVGb3JtQ2xvc2VkKT1cIm9uQ2FydGFibGVGb3JtQ2xvc2VkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9ic3UtYmFyc2EtdGFibGUtcm93PlxyXG4gICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgI3Jvd0JvdHRvbVxyXG4gICAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyXHJcbiAgICAgICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxyXG4gICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uUm93VmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGluZGV4LCByb3dCb3R0b20pXCJcclxuICAgID48L2Rpdj4gLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxkaXYgI3RhYmxlQm90dG9tT2JzZXJ2ZT48L2Rpdj5cclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
|
|
2
|
-
import { BarsaApi, FieldBaseComponent } from 'barsa-novin-ray-core';
|
|
2
|
+
import { BarsaApi, FieldBaseComponent, getDeviceIsMobile } from 'barsa-novin-ray-core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
5
5
|
import * as i2 from "barsa-novin-ray-core";
|
|
@@ -9,6 +9,7 @@ export class UiTinymceComponent extends FieldBaseComponent {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
super(...arguments);
|
|
11
11
|
this.tinyHeight = '100px';
|
|
12
|
+
this._minWidth = getDeviceIsMobile() ? '100%' : '320px';
|
|
12
13
|
this.tinyInit = false;
|
|
13
14
|
}
|
|
14
15
|
ngOnInit() {
|
|
@@ -41,13 +42,16 @@ export class UiTinymceComponent extends FieldBaseComponent {
|
|
|
41
42
|
this.context.fireEvent('change', this, newValue, this.value, {});
|
|
42
43
|
}
|
|
43
44
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiTinymceComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UiTinymceComponent, selector: "bsu-ui-tinymce", host: { properties: { "style.min-height": "this.tinyHeight" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n <div\r\n class=\"html-readonly\"\r\n *ngIf=\"Setting.IsHtmlViewer || (disableOrReadonly$ | async); else textarea\"\r\n [class.readonly]=\"readonly$ | async\"\r\n [class.anonymous]=\"isAnonymous\"\r\n [class.disable]=\"disable$ | async\"\r\n [innerHtml]=\"Setting.IsHtmlViewer ? sefeValue : ''\"\r\n ></div>\r\n <ng-template #textarea>\r\n <bsu-mask *ngIf=\"!tinyInit\"></bsu-mask>\r\n <bsu-barsa-tinyemce\r\n [attr.ismobile]=\"isMobile\"\r\n [attr.ismobile]=\"isTablet\"\r\n [Setting]=\"Setting\"\r\n [IsInline]=\"parameters?.IsInline === true\"\r\n [value]=\"value\"\r\n [defaultVerbs]=\"context.defaultVerbs\"\r\n (tinyInit)=\"onTinyInit()\"\r\n (valueChange)=\"onTinyChanged($event)\"\r\n [readonly]=\"isReadonly\"\r\n ></bsu-barsa-tinyemce>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;height:100%;width:100%;align-self:flex-start
|
|
45
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UiTinymceComponent, selector: "bsu-ui-tinymce", host: { properties: { "style.min-height": "this.tinyHeight", "style.min-width": "this._minWidth" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n <div\r\n class=\"html-readonly\"\r\n *ngIf=\"Setting.IsHtmlViewer || (disableOrReadonly$ | async); else textarea\"\r\n [class.readonly]=\"readonly$ | async\"\r\n [class.anonymous]=\"isAnonymous\"\r\n [class.disable]=\"disable$ | async\"\r\n [innerHtml]=\"Setting.IsHtmlViewer ? sefeValue : ''\"\r\n ></div>\r\n <ng-template #textarea>\r\n <bsu-mask *ngIf=\"!tinyInit\"></bsu-mask>\r\n <bsu-barsa-tinyemce\r\n [attr.ismobile]=\"isMobile\"\r\n [attr.ismobile]=\"isTablet\"\r\n [Setting]=\"Setting\"\r\n [IsInline]=\"parameters?.IsInline === true\"\r\n [value]=\"value\"\r\n [defaultVerbs]=\"context.defaultVerbs\"\r\n (tinyInit)=\"onTinyInit()\"\r\n (valueChange)=\"onTinyChanged($event)\"\r\n [readonly]=\"isReadonly\"\r\n ></bsu-barsa-tinyemce>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;height:100%;width:100%;align-self:flex-start}:host ::ng-deep .tox.tox-tinymce{border-radius:0%;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor)}.html-readonly,bsu-barsa-tinyemce{flex-grow:1}.html-readonly ::ng-deep>p{overflow:auto}.readonly{background:var(--sapBackgroundColor);height:100%}.disable{background:var(--sapBackgroundColor);height:100%;opacity:.5}.readonly.anonymous{background-color:transparent;border:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4.BarsaTinyemceComponent, selector: "bsu-barsa-tinyemce", inputs: ["Setting", "isReadonly", "value", "IsInline", "defaultVerbs"], outputs: ["valueChange", "tinyInit"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
45
46
|
}
|
|
46
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiTinymceComponent, decorators: [{
|
|
47
48
|
type: Component,
|
|
48
|
-
args: [{ selector: 'bsu-ui-tinymce', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container *untilInView=\"el\">\r\n <div\r\n class=\"html-readonly\"\r\n *ngIf=\"Setting.IsHtmlViewer || (disableOrReadonly$ | async); else textarea\"\r\n [class.readonly]=\"readonly$ | async\"\r\n [class.anonymous]=\"isAnonymous\"\r\n [class.disable]=\"disable$ | async\"\r\n [innerHtml]=\"Setting.IsHtmlViewer ? sefeValue : ''\"\r\n ></div>\r\n <ng-template #textarea>\r\n <bsu-mask *ngIf=\"!tinyInit\"></bsu-mask>\r\n <bsu-barsa-tinyemce\r\n [attr.ismobile]=\"isMobile\"\r\n [attr.ismobile]=\"isTablet\"\r\n [Setting]=\"Setting\"\r\n [IsInline]=\"parameters?.IsInline === true\"\r\n [value]=\"value\"\r\n [defaultVerbs]=\"context.defaultVerbs\"\r\n (tinyInit)=\"onTinyInit()\"\r\n (valueChange)=\"onTinyChanged($event)\"\r\n [readonly]=\"isReadonly\"\r\n ></bsu-barsa-tinyemce>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;height:100%;width:100%;align-self:flex-start
|
|
49
|
+
args: [{ selector: 'bsu-ui-tinymce', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container *untilInView=\"el\">\r\n <div\r\n class=\"html-readonly\"\r\n *ngIf=\"Setting.IsHtmlViewer || (disableOrReadonly$ | async); else textarea\"\r\n [class.readonly]=\"readonly$ | async\"\r\n [class.anonymous]=\"isAnonymous\"\r\n [class.disable]=\"disable$ | async\"\r\n [innerHtml]=\"Setting.IsHtmlViewer ? sefeValue : ''\"\r\n ></div>\r\n <ng-template #textarea>\r\n <bsu-mask *ngIf=\"!tinyInit\"></bsu-mask>\r\n <bsu-barsa-tinyemce\r\n [attr.ismobile]=\"isMobile\"\r\n [attr.ismobile]=\"isTablet\"\r\n [Setting]=\"Setting\"\r\n [IsInline]=\"parameters?.IsInline === true\"\r\n [value]=\"value\"\r\n [defaultVerbs]=\"context.defaultVerbs\"\r\n (tinyInit)=\"onTinyInit()\"\r\n (valueChange)=\"onTinyChanged($event)\"\r\n [readonly]=\"isReadonly\"\r\n ></bsu-barsa-tinyemce>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;height:100%;width:100%;align-self:flex-start}:host ::ng-deep .tox.tox-tinymce{border-radius:0%;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor)}.html-readonly,bsu-barsa-tinyemce{flex-grow:1}.html-readonly ::ng-deep>p{overflow:auto}.readonly{background:var(--sapBackgroundColor);height:100%}.disable{background:var(--sapBackgroundColor);height:100%;opacity:.5}.readonly.anonymous{background-color:transparent;border:none}\n"] }]
|
|
49
50
|
}], propDecorators: { tinyHeight: [{
|
|
50
51
|
type: HostBinding,
|
|
51
52
|
args: ['style.min-height']
|
|
53
|
+
}], _minWidth: [{
|
|
54
|
+
type: HostBinding,
|
|
55
|
+
args: ['style.min-width']
|
|
52
56
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGlueW1jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10aW55bWNlL3VpLXRpbnltY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGlueW1jZS91aS10aW55bWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUdsSCxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUF1QixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFTNUcsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGtCQUFrQjtJQVAxRDs7UUFRcUMsZUFBVSxHQUFHLE9BQU8sQ0FBQztRQUN0QixjQUFTLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFHbkYsYUFBUSxHQUFHLEtBQUssQ0FBQztLQWdDcEI7SUE3QkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDNUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUE0QixDQUFDO1FBQ2pELElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7UUFDMUQsMERBQTBEO0lBQzlELENBQUM7SUFDRCxXQUFXLENBQUMsYUFBNEI7UUFDcEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUNELGFBQWEsQ0FBQyxRQUFRO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBcENRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdNQ1ovQix5K0JBd0JBOzs0RkRaYSxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHZ0IsVUFBVTtzQkFBMUMsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ0MsU0FBUztzQkFBeEMsV0FBVzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbmltcG9ydCB7IEJhcnNhQXBpLCBGaWVsZEJhc2VDb21wb25lbnQsIGdldERldmljZUlzTW9iaWxlLCBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS11aS10aW55bWNlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS10aW55bWNlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLXRpbnltY2UuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpVGlueW1jZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWluLWhlaWdodCcpIHRpbnlIZWlnaHQgPSAnMTAwcHgnO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgnKSBfbWluV2lkdGggPSBnZXREZXZpY2VJc01vYmlsZSgpID8gJzEwMCUnIDogJzMyMHB4JztcclxuICAgIGlzUmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgICBzZWZlVmFsdWU6IFNhZmVIdG1sO1xyXG4gICAgdGlueUluaXQgPSBmYWxzZTtcclxuICAgIGlzQW5vbnltb3VzOiBib29sZWFuO1xyXG4gICAgcGFyYW1ldGVyczogVWlUaW55bWNlU2V0dGluZztcclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5pc1JlYWRvbmx5ID0gdGhpcy5TZXR0aW5nLklzUmVhZE9ubHkgfHwgdGhpcy5TZXR0aW5nLkNvbnRyb2xJc1JlYWRPbmx5O1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAoZWwucGFyZW50RWxlbWVudCkge1xyXG4gICAgICAgICAgICBlbC5wYXJlbnRFbGVtZW50LnN0eWxlLmFsaWduU2VsZiA9ICdzdHJldGNoJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuU2V0dGluZy5Jc0h0bWxWaWV3ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy50aW55SGVpZ2h0ID0gJ2F1dG8nO1xyXG4gICAgICAgICAgICB0aGlzLnNlZmVWYWx1ZSA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc0Fub255bW91cyA9ICFCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzVXNlckxvZ2dlZEluO1xyXG4gICAgICAgIC8vIHRoaXMudGlueUhlaWdodCA9IHRoaXMubGF5b3V0SW5mby5Db250cm9sQm91bmRzLmhlaWdodDtcclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzKTtcclxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlcy52YWx1ZSAmJiAhc2ltcGxlQ2hhbmdlcy52YWx1ZS5maXJzdENoYW5nZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5TZXR0aW5nLklzSHRtbFZpZXdlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWZlVmFsdWUgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvblRpbnlJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGlueUluaXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgb25UaW55Q2hhbmdlZChuZXdWYWx1ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29udGV4dC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2NoYW5nZScsIHRoaXMsIG5ld1ZhbHVlLCB0aGlzLnZhbHVlLCB7fSk7XHJcbiAgICB9XHJcbn1cclxuaW50ZXJmYWNlIFVpVGlueW1jZVNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcclxuICAgIElzSW5saW5lOiBib29sZWFuO1xyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKnVudGlsSW5WaWV3PVwiZWxcIj5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImh0bWwtcmVhZG9ubHlcIlxyXG4gICAgICAgICpuZ0lmPVwiU2V0dGluZy5Jc0h0bWxWaWV3ZXIgfHwgKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKTsgZWxzZSB0ZXh0YXJlYVwiXHJcbiAgICAgICAgW2NsYXNzLnJlYWRvbmx5XT1cInJlYWRvbmx5JCB8IGFzeW5jXCJcclxuICAgICAgICBbY2xhc3MuYW5vbnltb3VzXT1cImlzQW5vbnltb3VzXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZV09XCJkaXNhYmxlJCB8IGFzeW5jXCJcclxuICAgICAgICBbaW5uZXJIdG1sXT1cIlNldHRpbmcuSXNIdG1sVmlld2VyID8gc2VmZVZhbHVlIDogJydcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0YXJlYT5cclxuICAgICAgICA8YnN1LW1hc2sgKm5nSWY9XCIhdGlueUluaXRcIj48L2JzdS1tYXNrPlxyXG4gICAgICAgIDxic3UtYmFyc2EtdGlueWVtY2VcclxuICAgICAgICAgICAgW2F0dHIuaXNtb2JpbGVdPVwiaXNNb2JpbGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5pc21vYmlsZV09XCJpc1RhYmxldFwiXHJcbiAgICAgICAgICAgIFtTZXR0aW5nXT1cIlNldHRpbmdcIlxyXG4gICAgICAgICAgICBbSXNJbmxpbmVdPVwicGFyYW1ldGVycz8uSXNJbmxpbmUgPT09IHRydWVcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgICBbZGVmYXVsdFZlcmJzXT1cImNvbnRleHQuZGVmYXVsdFZlcmJzXCJcclxuICAgICAgICAgICAgKHRpbnlJbml0KT1cIm9uVGlueUluaXQoKVwiXHJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblRpbnlDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNSZWFkb25seVwiXHJcbiAgICAgICAgPjwvYnN1LWJhcnNhLXRpbnllbWNlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|