raise-common-lib-new 0.0.63 → 0.0.64
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/actions/toolbar/index.component.mjs +4 -3
- package/esm2022/lib/actions/toolbar-item/index.component.mjs +2 -2
- package/esm2022/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.mjs +1 -1
- package/esm2022/lib/common-grid/grid-action/grid-action.component.mjs +3 -2
- package/esm2022/lib/common-grid/index.component.mjs +6 -3
- package/esm2022/lib/dashboard/api.mjs +33 -0
- package/esm2022/lib/dashboard/bar-charts/bar-charts.component.mjs +430 -0
- package/esm2022/lib/dashboard/bar-charts/utils.mjs +18 -0
- package/esm2022/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.mjs +442 -0
- package/esm2022/lib/dashboard/dashboard.service.mjs +295 -0
- package/esm2022/lib/dashboard/dashboardPorlets.service.mjs +2169 -0
- package/esm2022/lib/dashboard/dialog-group/download/index.component.mjs +212 -0
- package/esm2022/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.mjs +36 -0
- package/esm2022/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.mjs +3211 -0
- package/esm2022/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.mjs +3117 -0
- package/esm2022/lib/dashboard/gadget-group/gadget-table/gadget-table.component.mjs +1099 -0
- package/esm2022/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.mjs +583 -0
- package/esm2022/lib/dashboard/pane-group-new.component.mjs +2031 -0
- package/esm2022/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.mjs +637 -0
- package/esm2022/lib/dashboard/sidebar-iconlist/field-format/field-format.component.mjs +753 -0
- package/esm2022/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.mjs +216 -0
- package/esm2022/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.mjs +1239 -0
- package/esm2022/lib/dialog/common-delete-dialog/index.component.mjs +1 -1
- package/esm2022/lib/dialog/common-dialog/index.component.mjs +16 -5
- package/esm2022/lib/float-box/index.component.mjs +18 -4
- package/esm2022/lib/form/checkbox-group/index.component.mjs +35 -5
- package/esm2022/lib/form/drawer-form/drawer-form.component.mjs +177 -76
- package/esm2022/lib/layout/drawer/index.component.mjs +2 -2
- package/esm2022/lib/layout/page-list/index.component.mjs +9 -3
- package/esm2022/lib/layout/page-tab/index.component.mjs +5 -3
- package/esm2022/lib/layout/rs-stepper/constants.mjs +2 -0
- package/esm2022/lib/layout/rs-stepper/index.component.mjs +148 -0
- package/esm2022/lib/raise-common-lib.module.mjs +114 -7
- package/esm2022/lib/service/InjectionToken.mjs +5 -0
- package/esm2022/lib/service/keep-alive.service.mjs +2 -2
- package/esm2022/lib/smart-popup/index.component.mjs +1084 -0
- package/esm2022/public-api.mjs +19 -1
- package/fesm2022/raise-common-lib-new.mjs +18037 -220
- package/fesm2022/raise-common-lib-new.mjs.map +1 -1
- package/lib/common-grid/index.component.d.ts +2 -1
- package/lib/dashboard/api.d.ts +24 -0
- package/lib/dashboard/bar-charts/bar-charts.component.d.ts +63 -0
- package/lib/dashboard/bar-charts/utils.d.ts +1 -0
- package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +52 -0
- package/lib/dashboard/dashboard.service.d.ts +152 -0
- package/lib/dashboard/dashboardPorlets.service.d.ts +214 -0
- package/lib/dashboard/dialog-group/download/index.component.d.ts +36 -0
- package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +15 -0
- package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +128 -0
- package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +131 -0
- package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +77 -0
- package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +47 -0
- package/lib/dashboard/pane-group-new.component.d.ts +169 -0
- package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +56 -0
- package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +62 -0
- package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +30 -0
- package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +150 -0
- package/lib/dialog/common-dialog/index.component.d.ts +3 -1
- package/lib/float-box/index.component.d.ts +4 -3
- package/lib/form/checkbox-group/index.component.d.ts +5 -0
- package/lib/form/drawer-form/drawer-form.component.d.ts +21 -8
- package/lib/layout/page-list/index.component.d.ts +3 -1
- package/lib/layout/page-tab/index.component.d.ts +1 -0
- package/lib/layout/rs-stepper/constants.d.ts +5 -0
- package/lib/layout/rs-stepper/index.component.d.ts +31 -0
- package/lib/raise-common-lib.module.d.ts +61 -40
- package/lib/service/InjectionToken.d.ts +4 -0
- package/lib/smart-popup/index.component.d.ts +60 -0
- package/package.json +1 -1
- package/public-api.d.ts +18 -0
- package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
- package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
- package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
- package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
- package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
- package/src/assets/img/dashboard_icon/Close.svg +4 -0
- package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
- package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
- package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
- package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
- package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
- package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
- package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
- package/src/assets/img/dashboard_icon/area-white.svg +3 -0
- package/src/assets/img/dashboard_icon/area.svg +3 -0
- package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
- package/src/assets/img/dashboard_icon/bar.svg +14 -0
- package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
- package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
- package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
- package/src/assets/img/dashboard_icon/column-white.svg +14 -0
- package/src/assets/img/dashboard_icon/column.svg +26 -0
- package/src/assets/img/dashboard_icon/customize.png +0 -0
- package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
- package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
- package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
- package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
- package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
- package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
- package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
- package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
- package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
- package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
- package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
- package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
- package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
- package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
- package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
- package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
- package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
- package/src/assets/img/dashboard_icon/ftable.svg +24 -0
- package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
- package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
- package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
- package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
- package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
- package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
- package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
- package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
- package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
- package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
- package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
- package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
- package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
- package/src/assets/img/dashboard_icon/geo.svg +14 -0
- package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
- package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
- package/src/assets/img/dashboard_icon/information-1.png +0 -0
- package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
- package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
- package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
- package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
- package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
- package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
- package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
- package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
- package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
- package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
- package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
- package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
- package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
- package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
- package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
- package/src/assets/img/dashboard_icon/more_View.svg +3 -0
- package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
- package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
- package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
- package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
- package/src/assets/img/dashboard_icon/pie.svg +16 -0
- package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
- package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
- package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
- package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
- package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
- package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
- package/src/assets/img/dashboard_icon/radar.svg +19 -0
- package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
- package/src/assets/img/dashboard_icon/search_input.svg +4 -0
- package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
- package/src/assets/img/dashboard_icon/table-3.svg +16 -0
- package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
- package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
- package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
- package/src/assets/img/dashboard_icon/tick.svg +26 -0
- package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
- package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
- package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
- package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
- package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
- package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
- package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
- package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
- package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
- package/src/assets/img/dashboard_icon/transpose.svg +16 -0
|
@@ -0,0 +1,753 @@
|
|
|
1
|
+
import { Component, Inject, Optional, ViewChildren, } from "@angular/core";
|
|
2
|
+
//syncfusion
|
|
3
|
+
import { addClass } from "@syncfusion/ej2-base";
|
|
4
|
+
import { MAT_DIALOG_DATA } from "@angular/material/dialog";
|
|
5
|
+
import { PBF_TOKEN } from "../../../service/InjectionToken";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../dashboard.service";
|
|
8
|
+
import * as i2 from "../../dashboardPorlets.service";
|
|
9
|
+
import * as i3 from "../../../service/dialog.service";
|
|
10
|
+
import * as i4 from "@angular/material/dialog";
|
|
11
|
+
import * as i5 from "@angular/common";
|
|
12
|
+
import * as i6 from "@angular/forms";
|
|
13
|
+
import * as i7 from "@angular/material/icon";
|
|
14
|
+
import * as i8 from "@angular/material/checkbox";
|
|
15
|
+
import * as i9 from "@angular/material/form-field";
|
|
16
|
+
import * as i10 from "@angular/material/select";
|
|
17
|
+
import * as i11 from "@angular/material/core";
|
|
18
|
+
import * as i12 from "@angular/material/input";
|
|
19
|
+
import * as i13 from "@syncfusion/ej2-angular-inputs";
|
|
20
|
+
export class FieldFormatComponent {
|
|
21
|
+
DashboardService;
|
|
22
|
+
dashboardPorletsService;
|
|
23
|
+
dialogService;
|
|
24
|
+
dialogRef;
|
|
25
|
+
data;
|
|
26
|
+
pbf;
|
|
27
|
+
colorPicker;
|
|
28
|
+
colorPickerFont;
|
|
29
|
+
PreviewColor;
|
|
30
|
+
colorpickerBurden;
|
|
31
|
+
colorpickerFontBurden;
|
|
32
|
+
previewColorBurden;
|
|
33
|
+
translation = {};
|
|
34
|
+
alignList;
|
|
35
|
+
fontSizeList;
|
|
36
|
+
compareList;
|
|
37
|
+
stringAndDateCompareList;
|
|
38
|
+
fontFamilyList;
|
|
39
|
+
compareSelect = "";
|
|
40
|
+
config = {};
|
|
41
|
+
Conditional = true;
|
|
42
|
+
fieldslist = [];
|
|
43
|
+
currentField;
|
|
44
|
+
currentFieldFormatInfo;
|
|
45
|
+
quarterFormat;
|
|
46
|
+
dateFormat;
|
|
47
|
+
constructor(DashboardService, dashboardPorletsService, dialogService, dialogRef, data, pbf) {
|
|
48
|
+
this.DashboardService = DashboardService;
|
|
49
|
+
this.dashboardPorletsService = dashboardPorletsService;
|
|
50
|
+
this.dialogService = dialogService;
|
|
51
|
+
this.dialogRef = dialogRef;
|
|
52
|
+
this.data = data;
|
|
53
|
+
this.pbf = pbf;
|
|
54
|
+
}
|
|
55
|
+
ngOnInit() {
|
|
56
|
+
this.translation = JSON.parse(localStorage.getItem("translation"));
|
|
57
|
+
this.alignList = this.setAlignList();
|
|
58
|
+
this.fontSizeList = this.setFontSizeList();
|
|
59
|
+
this.compareList = this.setCompareList();
|
|
60
|
+
this.stringAndDateCompareList = this.setStringAndDateCompareList();
|
|
61
|
+
this.fontFamilyList = this.setFontFamilyList();
|
|
62
|
+
this.quarterFormat = this.setQuarterFormat();
|
|
63
|
+
this.dateFormat = this.setDateFormat();
|
|
64
|
+
if (this.data.portletData)
|
|
65
|
+
this.getConditionalData();
|
|
66
|
+
}
|
|
67
|
+
// 获取field list页面数据
|
|
68
|
+
getConditionalData() {
|
|
69
|
+
this.config = JSON.parse(this.data.portletData.config);
|
|
70
|
+
this.fieldslist = [];
|
|
71
|
+
//pivot table/chart(get the rows,colums,values etc)
|
|
72
|
+
if ([
|
|
73
|
+
"pivot",
|
|
74
|
+
"bar",
|
|
75
|
+
"column",
|
|
76
|
+
"line",
|
|
77
|
+
"area",
|
|
78
|
+
"pie",
|
|
79
|
+
"radar",
|
|
80
|
+
"newchart",
|
|
81
|
+
].includes(this.config.portletType)) {
|
|
82
|
+
if (this.config.xaxis.groups)
|
|
83
|
+
for (let group of this.config.xaxis.groups) {
|
|
84
|
+
this.fieldslist.push(this.config.fields.filter((el) => el.colName === group.name)[0]);
|
|
85
|
+
}
|
|
86
|
+
if (this.config.columnGroup)
|
|
87
|
+
for (let column of this.config.columnGroup) {
|
|
88
|
+
this.fieldslist.push(this.config.fields.filter((el) => el.colName === column.name)[0]);
|
|
89
|
+
}
|
|
90
|
+
if (this.config.yaxis.series)
|
|
91
|
+
for (let value of this.config.yaxis.series) {
|
|
92
|
+
const pvalue = this.config.fields.find((el) => el.colName === value.colName);
|
|
93
|
+
let allFields = this.config.fields;
|
|
94
|
+
let displayName = value.title;
|
|
95
|
+
if (allFields && pvalue) {
|
|
96
|
+
const item = allFields.find((field) => field.colName === pvalue.colName);
|
|
97
|
+
if (item) {
|
|
98
|
+
displayName =
|
|
99
|
+
(item.format &&
|
|
100
|
+
item.format.length &&
|
|
101
|
+
item.format[0].displayName) ||
|
|
102
|
+
item.langValue;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (pvalue) {
|
|
106
|
+
pvalue["isValue"] = true;
|
|
107
|
+
pvalue["showSubTotals"] = value.showSubTotals;
|
|
108
|
+
pvalue["showGrandTotals"] = value.showGrandTotals;
|
|
109
|
+
pvalue["langValue"] = displayName;
|
|
110
|
+
this.fieldslist.push(pvalue);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
value.isValue = true;
|
|
114
|
+
this.fieldslist.push({
|
|
115
|
+
colName: value.colName,
|
|
116
|
+
langValue: displayName,
|
|
117
|
+
isValue: true,
|
|
118
|
+
showSubTotals: value.showSubTotals,
|
|
119
|
+
showGrandTotals: value.showGrandTotals,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
let keys = [];
|
|
126
|
+
if (this.config.fields.length)
|
|
127
|
+
keys = Object.keys(this.config.fields[0]);
|
|
128
|
+
this.fieldslist = this.config.fields.filter((el) => keys.includes("visible")
|
|
129
|
+
? el.visible && !el.isHidden
|
|
130
|
+
: !el.isHidden);
|
|
131
|
+
}
|
|
132
|
+
// 所有field都给一个showGrandTotals和showSubTotals的值,绑定field list页面icon状态,及format页面Hide subtotal、Hide grandtotal等状态
|
|
133
|
+
this.fieldslist.map((el) => {
|
|
134
|
+
let keys = Object.keys(el);
|
|
135
|
+
if (!keys.includes("showGrandTotals") ||
|
|
136
|
+
el.showGrandTotals === undefined)
|
|
137
|
+
el.showGrandTotals = true;
|
|
138
|
+
if (!keys.includes("showSubTotals") ||
|
|
139
|
+
el.showSubTotals === undefined)
|
|
140
|
+
el.showSubTotals = true;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
// 打开field的format页面
|
|
144
|
+
openFormat(item) {
|
|
145
|
+
//clear the checkbox
|
|
146
|
+
this.Conditional = false;
|
|
147
|
+
this.currentField = JSON.parse(JSON.stringify(item));
|
|
148
|
+
this.currentFieldFormatInfo =
|
|
149
|
+
(item.format && item.format[0]) || this.setFormatGroupDefaultData();
|
|
150
|
+
delete this.currentField.format; // 删掉currentField的format,将format信息保存在currentFieldFormatInfo
|
|
151
|
+
this.selectOption(item.colName, "field");
|
|
152
|
+
if (!["string", "nvarchar", "date", "datetime"].includes(item.dataType))
|
|
153
|
+
this.addColorPickerStyle();
|
|
154
|
+
this.currentFieldFormatInfo.formatList &&
|
|
155
|
+
this.currentFieldFormatInfo.formatList.map((el) => (el.isChecked =
|
|
156
|
+
el.key ==
|
|
157
|
+
this.currentFieldFormatInfo.selectedFormatDisplay
|
|
158
|
+
? true
|
|
159
|
+
: false));
|
|
160
|
+
}
|
|
161
|
+
selectOption(value, type) {
|
|
162
|
+
let PreviewColorElement = this.PreviewColor["_results"];
|
|
163
|
+
let previewColorBurdenElement = this.previewColorBurden["_results"];
|
|
164
|
+
let allFields = this.config.fields;
|
|
165
|
+
let displayName = this.currentField.displayName;
|
|
166
|
+
if (allFields && (!displayName || displayName.length === 0)) {
|
|
167
|
+
const item = allFields.find((field) => field.colName === this.currentField.colName);
|
|
168
|
+
if (item) {
|
|
169
|
+
displayName =
|
|
170
|
+
(item.format &&
|
|
171
|
+
item.format.length &&
|
|
172
|
+
item.format[0].displayName) ||
|
|
173
|
+
item.langValue;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
switch (type) {
|
|
177
|
+
case "field":
|
|
178
|
+
this.currentFieldFormatInfo.selectedField =
|
|
179
|
+
this.currentField.colName;
|
|
180
|
+
this.currentFieldFormatInfo.dataType =
|
|
181
|
+
this.currentField.dataType;
|
|
182
|
+
this.currentFieldFormatInfo.displayName = displayName || "";
|
|
183
|
+
this.getFiledFormat();
|
|
184
|
+
break;
|
|
185
|
+
case "compare":
|
|
186
|
+
this.currentFieldFormatInfo.formatChecked = true;
|
|
187
|
+
this.currentFieldFormatInfo.compareSelect = this.optionFilter(this.compareList, "code", value)[0].code;
|
|
188
|
+
break;
|
|
189
|
+
case "selectdDateType":
|
|
190
|
+
this.currentFieldFormatInfo.formatChecked = true;
|
|
191
|
+
if (value == "Quarter") {
|
|
192
|
+
this.currentFieldFormatInfo.formatList = this.quarterFormat;
|
|
193
|
+
}
|
|
194
|
+
else if (value == "Date") {
|
|
195
|
+
this.currentFieldFormatInfo.formatList = this.dateFormat;
|
|
196
|
+
}
|
|
197
|
+
this.currentFieldFormatInfo.selectedFormatDisplay = "";
|
|
198
|
+
this.currentFieldFormatInfo.selectedFormat = "";
|
|
199
|
+
break;
|
|
200
|
+
case "selectdDateformat":
|
|
201
|
+
case "number":
|
|
202
|
+
this.currentFieldFormatInfo.formatChecked = true;
|
|
203
|
+
for (const iterator of this.currentFieldFormatInfo.formatList) {
|
|
204
|
+
iterator.isChecked = Boolean(iterator.key == value);
|
|
205
|
+
if (iterator.key == value)
|
|
206
|
+
this.currentFieldFormatInfo.selectedFormat =
|
|
207
|
+
iterator.val;
|
|
208
|
+
}
|
|
209
|
+
break;
|
|
210
|
+
case "fontFamily":
|
|
211
|
+
this.currentFieldFormatInfo.fontSettingChecked = true;
|
|
212
|
+
this.currentFieldFormatInfo.fontFamilyValue = this.optionFilter(this.fontFamilyList, "value", value)[0].value;
|
|
213
|
+
PreviewColorElement[0].nativeElement.querySelector(".format-groups").style.fontFamily =
|
|
214
|
+
this.currentFieldFormatInfo.fontFamilyValue;
|
|
215
|
+
break;
|
|
216
|
+
case "negaFontFamily":
|
|
217
|
+
this.currentFieldFormatInfo.fontSettingChecked = true;
|
|
218
|
+
this.currentFieldFormatInfo.negaFontFamilyValue =
|
|
219
|
+
this.optionFilter(this.fontFamilyList, "value", value)[0].value;
|
|
220
|
+
previewColorBurdenElement[0].nativeElement.querySelector(".format-groups").style.fontFamily =
|
|
221
|
+
this.currentFieldFormatInfo.negaFontFamilyValue;
|
|
222
|
+
break;
|
|
223
|
+
case "negaFontSize":
|
|
224
|
+
this.currentFieldFormatInfo.fontSettingChecked = true;
|
|
225
|
+
this.currentFieldFormatInfo.negaFontSizeValue =
|
|
226
|
+
this.optionFilter(this.fontSizeList, "value", value)[0].value;
|
|
227
|
+
previewColorBurdenElement[0].nativeElement.querySelector(".format-groups").style.fontSize =
|
|
228
|
+
this.currentFieldFormatInfo.negaFontSizeValue;
|
|
229
|
+
break;
|
|
230
|
+
case "fontSize":
|
|
231
|
+
this.currentFieldFormatInfo.fontSettingChecked = true;
|
|
232
|
+
this.currentFieldFormatInfo.fontSizeValue = this.optionFilter(this.fontSizeList, "value", value)[0].value;
|
|
233
|
+
PreviewColorElement[0].nativeElement.querySelector(".format-groups").style.fontSize = this.currentFieldFormatInfo.fontSizeValue;
|
|
234
|
+
break;
|
|
235
|
+
default:
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
getFiledFormat() {
|
|
240
|
+
if (!this.currentFieldFormatInfo.align)
|
|
241
|
+
this.currentFieldFormatInfo.align = [
|
|
242
|
+
"string",
|
|
243
|
+
"nvarchar",
|
|
244
|
+
"date",
|
|
245
|
+
"datetime",
|
|
246
|
+
].includes(this.currentField.dataType)
|
|
247
|
+
? "Left"
|
|
248
|
+
: "Right";
|
|
249
|
+
switch (this.currentField.dataType) {
|
|
250
|
+
case "number":
|
|
251
|
+
this.currentFieldFormatInfo.formatList =
|
|
252
|
+
this.dashboardPorletsService.GetFigureFormat();
|
|
253
|
+
this.addColorPickerStyle();
|
|
254
|
+
break;
|
|
255
|
+
case "integer":
|
|
256
|
+
this.currentFieldFormatInfo.formatList =
|
|
257
|
+
this.dashboardPorletsService.GetFigureFormat3();
|
|
258
|
+
this.addColorPickerStyle();
|
|
259
|
+
break;
|
|
260
|
+
case "percent":
|
|
261
|
+
case "percentNum":
|
|
262
|
+
this.currentFieldFormatInfo.formatList =
|
|
263
|
+
this.dashboardPorletsService.GetPercentFormats();
|
|
264
|
+
break;
|
|
265
|
+
case "multiple":
|
|
266
|
+
this.currentFieldFormatInfo.formatList =
|
|
267
|
+
this.dashboardPorletsService.GetMultipleFormats();
|
|
268
|
+
break;
|
|
269
|
+
default:
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
optionFilter(data, field, compareValue) {
|
|
274
|
+
return data.filter((item) => item[field] === compareValue);
|
|
275
|
+
}
|
|
276
|
+
changeAligh(code) {
|
|
277
|
+
this.currentFieldFormatInfo.align = code;
|
|
278
|
+
this.currentFieldFormatInfo.formatChecked = true;
|
|
279
|
+
}
|
|
280
|
+
addColorPickerStyle() {
|
|
281
|
+
setTimeout(() => {
|
|
282
|
+
let colorPickerFontElement = this.colorPickerFont["_results"];
|
|
283
|
+
let colorPickerElement = this.colorPicker["_results"];
|
|
284
|
+
let PreviewColorElement = this.PreviewColor["_results"];
|
|
285
|
+
let colorpickerBurdenElement = this.colorpickerBurden["_results"];
|
|
286
|
+
let colorpickerFontBurdenElement = this.colorpickerFontBurden["_results"];
|
|
287
|
+
let previewColorBurdenElement = this.previewColorBurden["_results"];
|
|
288
|
+
colorPickerFontElement.forEach((item) => {
|
|
289
|
+
addClass([
|
|
290
|
+
item.element.nextElementSibling.querySelector(".e-selected-color"),
|
|
291
|
+
], "e-icons");
|
|
292
|
+
});
|
|
293
|
+
colorPickerElement.forEach((item) => {
|
|
294
|
+
addClass([
|
|
295
|
+
item.element.nextElementSibling.querySelector(".e-selected-color"),
|
|
296
|
+
], "e-icons");
|
|
297
|
+
});
|
|
298
|
+
if (colorpickerBurdenElement.length)
|
|
299
|
+
colorpickerBurdenElement.forEach((item) => {
|
|
300
|
+
addClass([
|
|
301
|
+
item.element.nextElementSibling.querySelector(".e-selected-color"),
|
|
302
|
+
], "e-icons");
|
|
303
|
+
});
|
|
304
|
+
if (colorpickerFontBurdenElement.length)
|
|
305
|
+
colorpickerFontBurdenElement.forEach((item) => {
|
|
306
|
+
addClass([
|
|
307
|
+
item.element.nextElementSibling.querySelector(".e-selected-color"),
|
|
308
|
+
], "e-icons");
|
|
309
|
+
});
|
|
310
|
+
addClass([
|
|
311
|
+
colorPickerFontElement[0].element.nextElementSibling.querySelector(".e-selected-color"),
|
|
312
|
+
], "format-groups");
|
|
313
|
+
addClass([
|
|
314
|
+
colorPickerElement[0].element.nextElementSibling.querySelector(".e-selected-color"),
|
|
315
|
+
], "format-groups");
|
|
316
|
+
addClass([
|
|
317
|
+
PreviewColorElement[0].nativeElement.querySelector(".preview"),
|
|
318
|
+
], "format-groups");
|
|
319
|
+
PreviewColorElement[0].nativeElement.querySelector(".format-groups").style.color = this.currentFieldFormatInfo.fontColor;
|
|
320
|
+
PreviewColorElement[0].nativeElement.querySelector(".format-groups").style["background-color"] =
|
|
321
|
+
this.currentFieldFormatInfo.backgroundColor;
|
|
322
|
+
colorPickerFontElement[0].element.nextElementSibling.querySelector(".format-groups").style.borderBottomColor = this.currentFieldFormatInfo.fontColor;
|
|
323
|
+
colorPickerElement[0].element.nextElementSibling.querySelector(".format-groups").style.borderBottomColor =
|
|
324
|
+
this.currentFieldFormatInfo.backgroundColor;
|
|
325
|
+
if (colorpickerBurdenElement[0] &&
|
|
326
|
+
colorpickerFontBurdenElement[0] &&
|
|
327
|
+
previewColorBurdenElement[0]) {
|
|
328
|
+
addClass([
|
|
329
|
+
colorpickerFontBurdenElement[0].element.nextElementSibling.querySelector(".e-selected-color"),
|
|
330
|
+
], "format-groups");
|
|
331
|
+
addClass([
|
|
332
|
+
colorpickerBurdenElement[0].element.nextElementSibling.querySelector(".e-selected-color"),
|
|
333
|
+
], "format-groups");
|
|
334
|
+
addClass([
|
|
335
|
+
previewColorBurdenElement[0].nativeElement.querySelector(".preview"),
|
|
336
|
+
], "format-groups");
|
|
337
|
+
previewColorBurdenElement[0].nativeElement.querySelector(".format-groups").style.color = this.currentFieldFormatInfo.negaFontColor;
|
|
338
|
+
previewColorBurdenElement[0].nativeElement.querySelector(".format-groups").style["background-color"] =
|
|
339
|
+
this.currentFieldFormatInfo.negaBackgroundColor;
|
|
340
|
+
colorpickerFontBurdenElement[0].element.nextElementSibling.querySelector(".format-groups").style.borderBottomColor =
|
|
341
|
+
this.currentFieldFormatInfo.negaFontColor;
|
|
342
|
+
colorpickerBurdenElement[0].element.nextElementSibling.querySelector(".format-groups").style.borderBottomColor =
|
|
343
|
+
this.currentFieldFormatInfo.negaBackgroundColor;
|
|
344
|
+
}
|
|
345
|
+
}, 400);
|
|
346
|
+
}
|
|
347
|
+
colorOnChange(args, type) {
|
|
348
|
+
this.currentFieldFormatInfo.fontSettingChecked = true;
|
|
349
|
+
let colorPickerFontElement = this.colorPickerFont["_results"];
|
|
350
|
+
let colorPickerElement = this.colorPicker["_results"];
|
|
351
|
+
let PreviewColorElement = this.PreviewColor["_results"];
|
|
352
|
+
let colorpickerBurdenElement = this.colorpickerBurden["_results"];
|
|
353
|
+
let colorpickerFontBurdenElement = this.colorpickerFontBurden["_results"];
|
|
354
|
+
let previewColorBurdenElement = this.previewColorBurden["_results"];
|
|
355
|
+
if (type) {
|
|
356
|
+
switch (type) {
|
|
357
|
+
case "font":
|
|
358
|
+
colorPickerFontElement[0].element.nextElementSibling.querySelector(".format-groups").style.borderBottomColor = args.currentValue.rgba;
|
|
359
|
+
PreviewColorElement[0].nativeElement.querySelector(".format-groups").style.color = args.currentValue.rgba;
|
|
360
|
+
this.currentFieldFormatInfo.fontColor =
|
|
361
|
+
args.currentValue.rgba;
|
|
362
|
+
break;
|
|
363
|
+
case "ngeaFont":
|
|
364
|
+
colorpickerFontBurdenElement[0].element.nextElementSibling.querySelector(".format-groups").style.borderBottomColor = args.currentValue.rgba;
|
|
365
|
+
previewColorBurdenElement[0].nativeElement.querySelector(".format-groups").style.color = args.currentValue.rgba;
|
|
366
|
+
this.currentFieldFormatInfo.negaFontColor =
|
|
367
|
+
args.currentValue.rgba;
|
|
368
|
+
break;
|
|
369
|
+
case "ngeaBgColor":
|
|
370
|
+
colorpickerBurdenElement[0].element.nextElementSibling.querySelector(".format-groups").style.borderBottomColor = args.currentValue.rgba;
|
|
371
|
+
previewColorBurdenElement[0].nativeElement.querySelector(".format-groups").style["background-color"] = args.currentValue.rgba;
|
|
372
|
+
this.currentFieldFormatInfo.negaBackgroundColor =
|
|
373
|
+
args.currentValue.rgba;
|
|
374
|
+
break;
|
|
375
|
+
default:
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
colorPickerElement[0].element.nextElementSibling.querySelector(".format-groups").style.borderBottomColor = args.currentValue.rgba;
|
|
381
|
+
PreviewColorElement[0].nativeElement.querySelector(".format-groups").style["background-color"] = args.currentValue.rgba;
|
|
382
|
+
this.currentFieldFormatInfo.backgroundColor =
|
|
383
|
+
args.currentValue.rgba;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
changeHideStatus(code) {
|
|
387
|
+
this.currentField[code] = !this.currentField[code];
|
|
388
|
+
}
|
|
389
|
+
saveFormat() {
|
|
390
|
+
this.config.yaxis.series.forEach((col) => {
|
|
391
|
+
if (col.colName === this.currentField.colName &&
|
|
392
|
+
!this.config.fields.find((item) => item.colName === this.currentField.colName)) {
|
|
393
|
+
this.config.fields.push({
|
|
394
|
+
colName: this.currentField.colName,
|
|
395
|
+
dataType: "number",
|
|
396
|
+
displayName: this.currentField.langValue,
|
|
397
|
+
dp: 2,
|
|
398
|
+
format: [],
|
|
399
|
+
formula: null,
|
|
400
|
+
isCalculatedField: true,
|
|
401
|
+
isGroup: false,
|
|
402
|
+
isHidden: false,
|
|
403
|
+
isValue: true,
|
|
404
|
+
langCode: this.currentField.colName,
|
|
405
|
+
langValue: this.currentField.colName,
|
|
406
|
+
seq: this.config.fields.length + 1,
|
|
407
|
+
showGrandTotals: this.currentField.showGrandTotals,
|
|
408
|
+
showSubTotals: this.currentField.showSubTotals,
|
|
409
|
+
sortColumn: null,
|
|
410
|
+
visible: true,
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
for (const field of this.config.fields) {
|
|
415
|
+
if (this.currentField.colName === field.colName) {
|
|
416
|
+
field.showGrandTotals = this.currentField.showGrandTotals;
|
|
417
|
+
field.showSubTotals = this.currentField.showSubTotals;
|
|
418
|
+
if (this.currentFieldFormatInfo.formatChecked ||
|
|
419
|
+
this.currentFieldFormatInfo.fontSettingChecked) {
|
|
420
|
+
field.format = [];
|
|
421
|
+
field.displayName = this.currentFieldFormatInfo.displayName;
|
|
422
|
+
field.format.push(this.currentFieldFormatInfo);
|
|
423
|
+
}
|
|
424
|
+
else
|
|
425
|
+
delete field.format;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
for (const series of this.config.yaxis.series) {
|
|
429
|
+
if (this.currentFieldFormatInfo.selectedField === series.colName) {
|
|
430
|
+
series.showSubTotals = this.currentField.showSubTotals;
|
|
431
|
+
series.showGrandTotals = this.currentField.showGrandTotals;
|
|
432
|
+
let fields = this.config.fields.filter((el) => el.colName === this.currentFieldFormatInfo.selectedField);
|
|
433
|
+
if (fields && fields.length) {
|
|
434
|
+
if (fields[0].format &&
|
|
435
|
+
fields[0].format.length &&
|
|
436
|
+
fields[0].format[0].formatChecked)
|
|
437
|
+
series.title =
|
|
438
|
+
this.currentFieldFormatInfo.displayName ||
|
|
439
|
+
fields[0].langValue.replace("Calculate", "").trim();
|
|
440
|
+
}
|
|
441
|
+
else if (series.calMethod !== "CalculatedField")
|
|
442
|
+
series.title = series.colName;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
this.data.portletData.config = JSON.stringify(this.config);
|
|
446
|
+
const index = this.data.portlets.findIndex((x) => x.newId === this.data.portletData.newId);
|
|
447
|
+
if (index > -1)
|
|
448
|
+
this.data.portlets[index].config = this.data.portletData.config;
|
|
449
|
+
this.DashboardService.tableFormat.next(this.data.portletData.newId);
|
|
450
|
+
this.dialogRef.close();
|
|
451
|
+
}
|
|
452
|
+
close() {
|
|
453
|
+
this.dialogRef.close();
|
|
454
|
+
}
|
|
455
|
+
clearFormat_All() {
|
|
456
|
+
const _title = this.translation
|
|
457
|
+
.ARE_YOU_SURE_TO_CLEAR_ALL_THE_FORMATTING_AND_SUB_TOTALS_TO_DEFAULT_SETTINGS ||
|
|
458
|
+
"Are you sure to clear all the formatting and totals to default settings?";
|
|
459
|
+
const _no = this.translation.NO_PLEASE_GO_BACK || "No, please go back";
|
|
460
|
+
const _yes = this.translation.YES_CLEAR_THEM || "Yes, clear them";
|
|
461
|
+
// const dialogRef = this.layoutUtilsService.alertElement(
|
|
462
|
+
// this.translation.WARNING || ".WARNING",
|
|
463
|
+
// _title,
|
|
464
|
+
// _no,
|
|
465
|
+
// _yes,
|
|
466
|
+
// true,
|
|
467
|
+
// true,
|
|
468
|
+
// "450px",
|
|
469
|
+
// "320px"
|
|
470
|
+
// );
|
|
471
|
+
const dialogRef = this.dialogService.showCommonDilaog({
|
|
472
|
+
title: this.translation.WARNING || ".WARNING",
|
|
473
|
+
description: _title,
|
|
474
|
+
saveBtnLabel: _yes,
|
|
475
|
+
cancelBtnLabel: _no,
|
|
476
|
+
});
|
|
477
|
+
dialogRef.afterClosed().subscribe((res) => {
|
|
478
|
+
if (res === "save") {
|
|
479
|
+
this.config.fields.map((el) => {
|
|
480
|
+
delete el.format;
|
|
481
|
+
delete el.showSubTotals;
|
|
482
|
+
delete el.showGrandTotals;
|
|
483
|
+
});
|
|
484
|
+
//SMP2-3010
|
|
485
|
+
//pivot
|
|
486
|
+
if (this.config.portletType === "pivot") {
|
|
487
|
+
if (this.config.yaxis.series) {
|
|
488
|
+
this.config.yaxis.series.map((el) => {
|
|
489
|
+
delete el.showSubTotals;
|
|
490
|
+
delete el.showGrandTotals;
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
this.data.portletData.config = JSON.stringify(this.config);
|
|
495
|
+
const index = this.data.portlets.findIndex((x) => x.newId === this.data.portletData.newId);
|
|
496
|
+
if (index > -1)
|
|
497
|
+
this.data.portlets[index].config = this.data.portletData.config;
|
|
498
|
+
this.DashboardService.tableFormat.next(this.data.portletData.newId);
|
|
499
|
+
this.dialogRef.close();
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
clearFormat_Current() {
|
|
504
|
+
this.currentFieldFormatInfo = this.setFormatGroupDefaultData();
|
|
505
|
+
this.currentField.showSubTotals = true;
|
|
506
|
+
this.currentField.showGrandTotals = true;
|
|
507
|
+
if (!["string", "nvarchar", "date", "datetime"].includes(this.currentFieldFormatInfo.dataType))
|
|
508
|
+
this.addColorPickerStyle();
|
|
509
|
+
}
|
|
510
|
+
disabledGrandTotal() {
|
|
511
|
+
if (this.config.portletType !== "pivot" &&
|
|
512
|
+
this.config.portletType !== "table") {
|
|
513
|
+
return true;
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
if (this.config.portletType === "table") {
|
|
517
|
+
if (this.currentField.dataType !== "string" &&
|
|
518
|
+
this.currentField.dataType !== "datetime" &&
|
|
519
|
+
this.currentField.dataType !== "date")
|
|
520
|
+
return false;
|
|
521
|
+
else
|
|
522
|
+
return true;
|
|
523
|
+
}
|
|
524
|
+
else {
|
|
525
|
+
if (this.currentField.isValue)
|
|
526
|
+
return false;
|
|
527
|
+
else
|
|
528
|
+
return true;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
setAlignList() {
|
|
533
|
+
return [
|
|
534
|
+
{
|
|
535
|
+
name: "format_align_left",
|
|
536
|
+
code: "Left",
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
name: "format_align_center",
|
|
540
|
+
code: "Center",
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
name: "format_align_right",
|
|
544
|
+
code: "Right",
|
|
545
|
+
},
|
|
546
|
+
];
|
|
547
|
+
}
|
|
548
|
+
setFontSizeList() {
|
|
549
|
+
return [
|
|
550
|
+
{
|
|
551
|
+
value: "12px",
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
value: "13px",
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
value: "14px",
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
value: "15px",
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
value: "16px",
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
value: "17px",
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
value: "18px",
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
value: "19px",
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
value: "20px",
|
|
576
|
+
},
|
|
577
|
+
];
|
|
578
|
+
}
|
|
579
|
+
setCompareList() {
|
|
580
|
+
return [
|
|
581
|
+
{
|
|
582
|
+
value: this.translation.LESS_THAN || "Less Than",
|
|
583
|
+
code: "LessThan",
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
value: this.translation.LESS_THAN_OR_EQUAL_TO ||
|
|
587
|
+
"Less Than Or Equal To",
|
|
588
|
+
code: "LessThanOrEqualTo",
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
value: this.translation.GREATER_THAN || "Greater Than",
|
|
592
|
+
code: "GreaterThan",
|
|
593
|
+
},
|
|
594
|
+
{
|
|
595
|
+
value: this.translation.GREATER_THAN_OR_EQUAL_TO ||
|
|
596
|
+
"Greater Than Or Equal To",
|
|
597
|
+
code: "GreaterThanOrEqualTo",
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
value: this.translation.EQUALS || "Equals",
|
|
601
|
+
code: "Equals",
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
value: this.translation.NOT_EQUALS || "Not Equals",
|
|
605
|
+
code: "NotEquals",
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
value: this.translation.BETWEEN || "Between",
|
|
609
|
+
code: "Between",
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
value: this.translation.NOT_BETWEEN || "Not Between",
|
|
613
|
+
code: "NotBetween",
|
|
614
|
+
},
|
|
615
|
+
];
|
|
616
|
+
}
|
|
617
|
+
setStringAndDateCompareList() {
|
|
618
|
+
return [
|
|
619
|
+
{
|
|
620
|
+
value: "Equals",
|
|
621
|
+
code: "Equals",
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
value: "Not Equals",
|
|
625
|
+
code: "NotEquals",
|
|
626
|
+
},
|
|
627
|
+
];
|
|
628
|
+
}
|
|
629
|
+
setFontFamilyList() {
|
|
630
|
+
return [
|
|
631
|
+
{
|
|
632
|
+
value: "Arial",
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
value: "San Serif",
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
value: "Impact",
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
value: "Trebuchet MS",
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
value: "Serif",
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
value: "Verdana",
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
value: "Courier New",
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
value: "Times New Roman",
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
value: "Tahoma",
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
value: "Gerogia",
|
|
660
|
+
},
|
|
661
|
+
];
|
|
662
|
+
}
|
|
663
|
+
setFormatGroupDefaultData() {
|
|
664
|
+
return {
|
|
665
|
+
selectedField: this.currentField.colName,
|
|
666
|
+
dataType: this.currentField.dataType,
|
|
667
|
+
compareSelect: "",
|
|
668
|
+
compareValue1: null,
|
|
669
|
+
compareValue2: null,
|
|
670
|
+
align: "",
|
|
671
|
+
selectedFormat: "",
|
|
672
|
+
selectedFormatDisplay: "",
|
|
673
|
+
fontFamilyValue: "San Serif",
|
|
674
|
+
negaFontFamilyValue: "San Serif",
|
|
675
|
+
negaFontSizeValue: "12px",
|
|
676
|
+
negaFontColor: "#495057",
|
|
677
|
+
negaBackgroundColor: "#F8E71C",
|
|
678
|
+
fontSizeValue: "12px",
|
|
679
|
+
fontColor: "#495057",
|
|
680
|
+
backgroundColor: "#F8E71C",
|
|
681
|
+
displayName: "",
|
|
682
|
+
formatList: [],
|
|
683
|
+
fontSettingChecked: false,
|
|
684
|
+
formatChecked: false,
|
|
685
|
+
dateType: "",
|
|
686
|
+
};
|
|
687
|
+
}
|
|
688
|
+
setQuarterFormat() {
|
|
689
|
+
return [
|
|
690
|
+
{ key: "03/2021", val: 1, isChecked: false },
|
|
691
|
+
{ key: "03/21", val: 2, isChecked: false },
|
|
692
|
+
{ key: "3/2021", val: 3, isChecked: false },
|
|
693
|
+
{ key: "3/21", val: 4, isChecked: false },
|
|
694
|
+
{ key: "March 2021", val: 5, isChecked: false },
|
|
695
|
+
{ key: "Mar, 2021", val: 6, isChecked: false },
|
|
696
|
+
{ key: "March, 2021", val: 7, isChecked: false },
|
|
697
|
+
{ key: "Q1 2021", val: 8, isChecked: false },
|
|
698
|
+
{ key: "Q1 21", val: 9, isChecked: false },
|
|
699
|
+
{ key: "2021 Q1", val: 10, isChecked: false },
|
|
700
|
+
{ key: "21 Q1", val: 11, isChecked: false },
|
|
701
|
+
{ key: "2021", val: 12, isChecked: false },
|
|
702
|
+
];
|
|
703
|
+
}
|
|
704
|
+
setDateFormat() {
|
|
705
|
+
return [
|
|
706
|
+
{ key: "14/03/2021 (DD/MM/YYYY)", val: 1, isChecked: false },
|
|
707
|
+
{ key: "14/03/21 (DD/MM/YY)", val: 2, isChecked: false },
|
|
708
|
+
{ key: "03/14/2021 (MM/DD/YYYY)", val: 3, isChecked: false },
|
|
709
|
+
{ key: "03/14/21 (MM/DD/YY)", val: 4, isChecked: false },
|
|
710
|
+
{ key: "2021-03-14 (YYYY-MM-DD)", val: 5, isChecked: false },
|
|
711
|
+
{ key: "21-03-14 (YY-MM-DD)", val: 6, isChecked: false },
|
|
712
|
+
{ key: "14-03-2021 (DD-MM-YYYY)", val: 7, isChecked: false },
|
|
713
|
+
{ key: "14-03-21 (DD-MM-YY)", val: 8, isChecked: false },
|
|
714
|
+
{ key: "03-14-2021 (MM-DD-YYYY)", val: 9, isChecked: false },
|
|
715
|
+
{ key: "03-14-21 (MM-DD-YY)", val: 10, isChecked: false },
|
|
716
|
+
{ key: "Mar 14, 2021 (MMM DD, YYYY)", val: 11, isChecked: false },
|
|
717
|
+
{ key: "14-Mar-2021 (DD-MMM-YYYY)", val: 12, isChecked: false },
|
|
718
|
+
];
|
|
719
|
+
}
|
|
720
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FieldFormatComponent, deps: [{ token: i1.DashboardService }, { token: i2.DashboardPorletsService }, { token: i3.DialogService }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: PBF_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
721
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FieldFormatComponent, selector: "rs-field-format", viewQueries: [{ propertyName: "colorPicker", predicate: ["colorpicker"], descendants: true }, { propertyName: "colorPickerFont", predicate: ["colorpickerFont"], descendants: true }, { propertyName: "PreviewColor", predicate: ["previewColor"], descendants: true }, { propertyName: "colorpickerBurden", predicate: ["colorpickerBurden"], descendants: true }, { propertyName: "colorpickerFontBurden", predicate: ["colorpickerFontBurden"], descendants: true }, { propertyName: "previewColorBurden", predicate: ["previewColorBurden"], descendants: true }], ngImport: i0, template: "<div class=\"container dashboard-format-container\">\r\n\t<div class=\"header\">\r\n\t\t<mat-icon\r\n\t\t\tclass=\"icon-previous\"\r\n\t\t\t*ngIf=\"!Conditional\"\r\n\t\t\t(click)=\"Conditional = true\"\r\n\t\t>\r\n\t\t\tkeyboard_arrow_left</mat-icon\r\n\t\t>\r\n\t\t<p class=\"format-title\">\r\n\t\t\t{{\r\n\t\t\t\tConditional\r\n\t\t\t\t\t? translation.CONDITIONAL_SETTING || \"Conditional Setting\"\r\n\t\t\t\t\t: translation.FORMATTING_AND_HIDE_SUBTOTAL ||\r\n\t\t\t\t\t \"Formatting and hide sub total\"\r\n\t\t\t}}\r\n\t\t</p>\r\n\t\t<mat-icon class=\"close\" (click)=\"close()\">close</mat-icon>\r\n\t</div>\r\n\t<div class=\"content\">\r\n\t\t<!--Conditional Setting start \u7B2C\u4E00\u9875\uFF1Afield list-->\r\n\t\t<div *ngIf=\"Conditional\">\r\n\t\t\t<div class=\"notice\">\r\n\t\t\t\t{{\r\n\t\t\t\t\ttranslation.CONDITIONAL_SETTING_TIPS ||\r\n\t\t\t\t\t\t\"The fields you have selected are shown below, you can apply formatting,sub totals or grand totals. Sub totals are only available for pivot tables.\"\r\n\t\t\t\t}}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"all-fields\">\r\n\t\t\t\t<div class=\"fields-group\" *ngFor=\"let field of fieldslist\">\r\n\t\t\t\t\t<p class=\"fl\">{{ field.langValue }}</p>\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\tclass=\"fr\"\r\n\t\t\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t\t\topacity: field.showGrandTotals\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\tsrc=\"../../../../../assets/img/dashboard_icon/gadget-basic-total{{\r\n\t\t\t\t\t\t\tfield.showGrandTotals ? '' : '-1'\r\n\t\t\t\t\t\t}}.svg\"\r\n\t\t\t\t\t\t(click)=\"openFormat(field)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\tclass=\"fr format-icon\"\r\n\t\t\t\t\t\tsrc=\"../../../../../assets/img/dashboard_icon/gadget-sub-total{{\r\n\t\t\t\t\t\t\tfield.showSubTotals ? '-0' : '-1'\r\n\t\t\t\t\t\t}}.svg\"\r\n\t\t\t\t\t\t(click)=\"openFormat(field)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\tclass=\"fr format-icon\"\r\n\t\t\t\t\t\tsrc=\"../../../../../assets/img/dashboard_icon/gadget-format{{\r\n\t\t\t\t\t\t\tfield.format && field.format.length ? '-1' : '-0'\r\n\t\t\t\t\t\t}}.svg\"\r\n\t\t\t\t\t\t(click)=\"openFormat(field)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!--Conditional Setting end \u7B2C\u4E00\u9875\uFF1Afield list-->\r\n\r\n\t\t<!--Formatting and hide sub total start \u7B2C\u4E8C\u9875\uFF1Aformat setting-->\r\n\t\t<div *ngIf=\"!Conditional\">\r\n\t\t\t<div class=\"format-group format-field\">\r\n\t\t\t\t<div class=\"field-name\">\r\n\t\t\t\t\t<label>{{ translation.FIELD || \".FIELD\" }}</label>\r\n\t\t\t\t\t<p>{{ currentField?.langValue }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"format-checkbox\">\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\tclass=\"example-margin\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[(ngModel)]=\"currentFieldFormatInfo.formatChecked\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ translation.FORMAT || \"Format\" }}</mat-checkbox\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Format part start -->\r\n\t\t\t<div class=\"format-group format-box\">\r\n\t\t\t\t<!-- compare \u90E8\u5206 start -->\r\n\t\t\t\t<div class=\"group-style\">\r\n\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\t\tcurrentField.dataType !== 'string' &&\r\n\t\t\t\t\t\t\tcurrentField.dataType !== 'date'\r\n\t\t\t\t\t\t\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 50%\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\t\tselectOption($event.value, 'compare')\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t\t*ngFor=\"let item of compareList\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"item.code\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t[ngStyle]=\"{\r\n\t\t\t\t\t\t\t\twidth:\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect ===\r\n\t\t\t\t\t\t\t\t\t\t'Between' ||\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect ===\r\n\t\t\t\t\t\t\t\t\t\t'NotBetween'\r\n\t\t\t\t\t\t\t\t\t\t? '15%'\r\n\t\t\t\t\t\t\t\t\t\t: '36%'\r\n\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<mat-form-field class=\"marging-top-style\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareValue1\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect ===\r\n\t\t\t\t\t\t\t\t\t'Between' ||\r\n\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect ===\r\n\t\t\t\t\t\t\t\t\t'NotBetween'\r\n\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\tstyle=\"width: 15%; display: flex\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\tline-height: 60px;\r\n\t\t\t\t\t\t\t\t\ttransform: translateX(8px);\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t-\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<mat-form-field\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\tstyle=\"margin-left: 15px\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareValue2\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- compare \u90E8\u5206 end -->\r\n\r\n\t\t\t\t<!-- Field Title & align start -->\r\n\t\t\t\t<div class=\"group-style marging-top-style\">\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 40%\">\r\n\t\t\t\t\t\t<mat-form-field class=\"marging-top-style\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\t\tplaceholder=\"{{\r\n\t\t\t\t\t\t\t\t\ttranslation.EDIT_FIELD_TITLE ||\r\n\t\t\t\t\t\t\t\t\t\t'.EDIT_FIELD_TITLE'\r\n\t\t\t\t\t\t\t\t}}\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"currentFieldFormatInfo.displayName\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.formatChecked = true\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div style=\"transform: translateY(-9px)\">\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"box-content\"\r\n\t\t\t\t\t\t\t*ngIf=\"config.portletType == 'table'\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div class=\"content-title\">\r\n\t\t\t\t\t\t\t\t{{ translation.ALIGNMENT || \".ALIGNMENT\" }}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"icon-list\">\r\n\t\t\t\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of alignList\"\r\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t\t\t\t\t\tselected:\r\n\t\t\t\t\t\t\t\t\t\t\titem.code ==\r\n\t\t\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.align\r\n\t\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"changeAligh(item.code)\"\r\n\t\t\t\t\t\t\t\t\t>{{ item.name }}</mat-icon\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- Field Title & align end -->\r\n\r\n\t\t\t\t<!-- Number/percent format start -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"group-style marging-top-style\"\r\n\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\tcurrentField.dataType !== 'string' &&\r\n\t\t\t\t\t\tcurrentField.dataType !== 'date'\r\n\t\t\t\t\t\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div style=\"width: 96%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style format-font\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"{{\r\n\t\t\t\t\t\t\t\t\ttranslation.NUMBER_FORMAT ||\r\n\t\t\t\t\t\t\t\t\t\t'.NUMBER_FORMAT'\r\n\t\t\t\t\t\t\t\t}}\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.selectedFormatDisplay\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'number')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"\r\n\t\t\t\t\t\t\t\t\t\tlet format of currentFieldFormatInfo.formatList\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"format.key\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\tclass=\"format-select-checkbox\"\r\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\t\t\t[id]=\"format.val\"\r\n\t\t\t\t\t\t\t\t\t\t[name]=\"format.key\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"format.isChecked\"\r\n\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"format.isChecked\"\r\n\t\t\t\t\t\t\t\t\t/>{{ format.key }}\r\n\t\t\t\t\t\t\t\t\t<!-- <mat-checkbox\r\n\t\t\t\t\t\t\t\t\t\tstyle=\"margin-left: 15px\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"format.isChecked\"\r\n\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"format.isChecked\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{{ format.key }}\r\n\t\t\t\t\t\t\t\t\t</mat-checkbox> -->\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- Number/percent format end -->\r\n\r\n\t\t\t\t<!-- date format start -->\r\n\t\t\t\t<div *ngIf=\"currentField.dataType === 'date'\">\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclass=\"marging-right-style\"\r\n\t\t\t\t\t\tstyle=\"display: inline-block; width: 26%\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"currentFieldFormatInfo.dateType\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption(\r\n\t\t\t\t\t\t\t\t\t\t$event.value,\r\n\t\t\t\t\t\t\t\t\t\t'selectdDateType'\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"Quarter\">Quarter</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"Date\">Date</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div style=\"display: inline-block; width: 60%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption(\r\n\t\t\t\t\t\t\t\t\t\t$event.value,\r\n\t\t\t\t\t\t\t\t\t\t'selectdDateformat'\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.selectedFormatDisplay\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"\r\n\t\t\t\t\t\t\t\t\t\tlet date of currentFieldFormatInfo.formatList\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"date.key\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\tclass=\"format-select-checkbox\"\r\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\t\t\t[id]=\"date.val\"\r\n\t\t\t\t\t\t\t\t\t\t[name]=\"date.key\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"date.isChecked\"\r\n\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"date.isChecked\"\r\n\t\t\t\t\t\t\t\t\t/>{{ date.key }}\r\n\r\n\t\t\t\t\t\t\t\t\t<!-- <mat-checkbox\r\n\t\t\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\t\t\t\t\t\t\twidth: 100%;\r\n\t\t\t\t\t\t\t\t\t\t\tmargin-left: 15px;\r\n\t\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\t\t[checked]=\"date.isChecked\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{{ date.key }}\r\n\t\t\t\t\t\t\t\t\t</mat-checkbox> -->\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- date format end -->\r\n\t\t\t</div>\r\n\t\t\t<!-- Format part end -->\r\n\r\n\t\t\t<!-- font setting start -->\r\n\t\t\t<div\r\n\t\t\t\tclass=\"format-checkbox\"\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t!['string', 'nvarchar', 'date', 'datetime'].includes(\r\n\t\t\t\t\t\tcurrentField.dataType\r\n\t\t\t\t\t)\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\tclass=\"example-margin\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[(ngModel)]=\"currentFieldFormatInfo.fontSettingChecked\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\ttranslation.FONT_SETTINGS || \".FONT_SETTINGS\"\r\n\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\t\t\t<div\r\n\t\t\t\tclass=\"format-group format-box\"\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t!['string', 'nvarchar', 'date', 'datetime'].includes(\r\n\t\t\t\t\t\tcurrentField.dataType\r\n\t\t\t\t\t)\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<!-- Number Format \u5B57\u4F53\u5927\u5C0F\u3001\u5B57\u4F53\u989C\u8272\u3001\u5355\u5143\u683C\u80CC\u666F\u8272 start -->\r\n\t\t\t\t<span class=\"format-number\">\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\ttranslation.POSITIVE_NUMBER_FORMAT ||\r\n\t\t\t\t\t\t\t\"Positive Number Format\"\r\n\t\t\t\t\t}}\r\n\t\t\t\t</span>\r\n\t\t\t\t<div class=\"group-style marging-top-style\">\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 35%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'fontFamily')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.fontFamilyValue\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of fontFamilyList\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 15%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'fontSize')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.fontSizeValue\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of fontSizeList\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div style=\"display: flex; line-height: 54px\">\r\n\t\t\t\t\t\t<div class=\"wrap\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tejs-colorpicker\r\n\t\t\t\t\t\t\t\t#colorpickerFont\r\n\t\t\t\t\t\t\t\t[modeSwitcher]=\"false\"\r\n\t\t\t\t\t\t\t\tid=\"pickerFontElement\"\r\n\t\t\t\t\t\t\t\t(change)=\"colorOnChange($event, 'font')\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"wrap\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tejs-colorpicker\r\n\t\t\t\t\t\t\t\t#colorpicker\r\n\t\t\t\t\t\t\t\t[modeSwitcher]=\"false\"\r\n\t\t\t\t\t\t\t\tid=\"pickerElement\"\r\n\t\t\t\t\t\t\t\t(change)=\"colorOnChange($event)\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div #previewColor>\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"preview\"\r\n\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\twidth: 62px;\r\n\t\t\t\t\t\t\t\t\theight: 30px;\r\n\t\t\t\t\t\t\t\t\ttransform: translateY(12px);\r\n\t\t\t\t\t\t\t\t\tborder-radius: 5px;\r\n\t\t\t\t\t\t\t\t\tline-height: 35px;\r\n\t\t\t\t\t\t\t\t\ttext-align: center;\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t123.45\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<span class=\"format-number\">{{\r\n\t\t\t\t\ttranslation.NEGATIVE_NUMBER_FORMAT ||\r\n\t\t\t\t\t\t\"Negative Number Format\"\r\n\t\t\t\t}}</span>\r\n\t\t\t\t<div class=\"group-style marging-top-style\">\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 35%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'negaFontFamily')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.negaFontFamilyValue\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of fontFamilyList\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 15%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'negaFontSize')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.negaFontSizeValue\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of fontSizeList\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div style=\"display: flex; line-height: 54px\">\r\n\t\t\t\t\t\t<div class=\"wrap\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tejs-colorpicker\r\n\t\t\t\t\t\t\t\t#colorpickerFontBurden\r\n\t\t\t\t\t\t\t\t[modeSwitcher]=\"false\"\r\n\t\t\t\t\t\t\t\tid=\"pickerFontElement\"\r\n\t\t\t\t\t\t\t\t(change)=\"colorOnChange($event, 'ngeaFont')\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"wrap\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tejs-colorpicker\r\n\t\t\t\t\t\t\t\t#colorpickerBurden\r\n\t\t\t\t\t\t\t\t[modeSwitcher]=\"false\"\r\n\t\t\t\t\t\t\t\tid=\"pickerElement\"\r\n\t\t\t\t\t\t\t\t(change)=\"colorOnChange($event, 'ngeaBgColor')\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div #previewColorBurden>\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"preview\"\r\n\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\twidth: 62px;\r\n\t\t\t\t\t\t\t\t\theight: 30px;\r\n\t\t\t\t\t\t\t\t\ttransform: translateY(12px);\r\n\t\t\t\t\t\t\t\t\tborder-radius: 5px;\r\n\t\t\t\t\t\t\t\t\tline-height: 35px;\r\n\t\t\t\t\t\t\t\t\ttext-align: center;\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t123.45\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- Number Format \u5B57\u4F53\u5927\u5C0F\u3001\u5B57\u4F53\u989C\u8272\u3001\u5355\u5143\u683C\u80CC\u666F\u8272 end -->\r\n\t\t\t</div>\r\n\t\t\t<!-- font setting end -->\r\n\r\n\t\t\t<!-- hide subtotal start -->\r\n\t\t\t<div\r\n\t\t\t\tclass=\"subtotal-checkbox\"\r\n\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\topacity:\r\n\t\t\t\t\t\tconfig.portletType !== 'pivot' || !currentField?.isValue\r\n\t\t\t\t}\"\r\n\t\t\t>\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\tclass=\"example-margin\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[(ngModel)]=\"!currentField.showSubTotals\"\r\n\t\t\t\t\t(ngModelChange)=\"changeHideStatus('showSubTotals')\"\r\n\t\t\t\t\t[disabled]=\"\r\n\t\t\t\t\t\tconfig.portletType !== 'pivot' || !currentField?.isValue\r\n\t\t\t\t\t\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\ttranslation.HIDE_SUB_TOTAL || \"Hide Sub total\"\r\n\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\t\t\t<!-- hide subtotal end -->\r\n\r\n\t\t\t<!-- hide grandtotal start -->\r\n\t\t\t<div\r\n\t\t\t\tclass=\"subtotal-checkbox\"\r\n\t\t\t\t[ngClass]=\"{ opacity: disabledGrandTotal() }\"\r\n\t\t\t>\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\tclass=\"example-margin\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[(ngModel)]=\"!currentField.showGrandTotals\"\r\n\t\t\t\t\t(ngModelChange)=\"changeHideStatus('showGrandTotals')\"\r\n\t\t\t\t\t[disabled]=\"disabledGrandTotal()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\ttranslation.HIDE_GRAND_TOTAL || \"Hide Grand total\"\r\n\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\t\t\t<!-- hide grandtotal end -->\r\n\t\t</div>\r\n\t\t<!--Formatting and hide sub total end \u7B2C\u4E8C\u9875\uFF1Aformat setting-->\r\n\t</div>\r\n\t<div class=\"button-group\" *ngIf=\"!Conditional\">\r\n\t\t<button (click)=\"clearFormat_Current()\" class=\"btn clear-button\">\r\n\t\t\t{{ translation.CLEAR || \".CLEAR\" }}\r\n\t\t</button>\r\n\t\t<button (click)=\"saveFormat()\" class=\"btn save-button\">\r\n\t\t\t{{ translation.SAVE || \".SAVE\" }}\r\n\t\t</button>\r\n\t</div>\r\n\t<div class=\"button-group\" *ngIf=\"Conditional\">\r\n\t\t<button (click)=\"clearFormat_All()\" class=\"btn clear-button\">\r\n\t\t\t{{ translation.CLEAR || \".CLEAR\" }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n", styles: [".container{font-size:13px;font-weight:400}.container.dashboard-format-container .e-split-btn-wrapper .e-btn+.e-icon-btn,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):hover+.e-icon-btn,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):active+.e-icon-btn,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):focus+.e-icon-btn{--rs-primary-btn-hover-bg: #f8fafb !important;--rs-primary-btn-bg: #f8fafb !important;max-width:18px!important;min-width:unset!important;width:18px!important}.container.dashboard-format-container .e-split-btn-wrapper .e-btn+.e-icon-btn .e-btn-icon,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):hover+.e-icon-btn .e-btn-icon,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):active+.e-icon-btn .e-btn-icon,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):focus+.e-icon-btn .e-btn-icon{font-size:8px!important}.container.dashboard-format-container .e-split-btn-wrapper .e-split-btn .e-btn-icon{font-size:14px!important}.container.dashboard-format-container .e-split-btn-wrapper .e-btn.e-icon-btn .e-btn-icon:before{width:8px!important;height:8px!important;content:\"\\e744\"!important;color:#495057!important}.container.dashboard-format-container .e-split-btn-wrapper .e-btn{--rs-primary-btn-hover: #f8fafb !important;--rs-primary-btn: #f8fafb !important}.container .header{width:109%;display:flex;border-bottom:1px solid #e9ecef;transform:translate(-25px);height:41px}.container .header .icon-previous{transform:translate(20px,5px);cursor:pointer}.container .header .close{margin-right:30px;padding-left:3px;padding-top:3px;border-radius:18px;transform:scale(1.1);cursor:pointer;background-color:#eaedf0;float:right;font-size:18px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.container .header .format-title{width:91%;font-family:HelveticaNeue;font-size:20px;font-weight:700;font-stretch:normal;font-style:normal;line-height:1.2;letter-spacing:normal;color:#212529;margin-left:28px}.container .content .all-fields{height:543px;overflow:auto}.container .content .all-fields .fields-group{width:calc(100% - 9px);height:30px;border-radius:4px;border:solid 1px #efeff3;padding:4px 9px 0 11px;margin:0 0 11px 4px}.container .content .all-fields .fields-group p{color:#44566c}.container .content .all-fields .fields-group img:hover{cursor:pointer}.container .content .all-fields .fields-group .format-icon{margin-right:10px}.container .content .format-group{width:535px;border-radius:5px;border:solid 1px #b3c0ce;padding:15px 0 0 10px;margin:0 0 20px 4px}.container .content .format-group .group-style{display:flex;width:100%}.container .content .format-group .group-style .format-font{color:#4a4a4a!important;font-weight:400!important}.container .content .format-group .marging-right-style{margin-right:16px}.container .content .format-group .marging-top-style{margin-top:10px}.container .content .format-field{margin-top:36px}.container .content .format-field .field-name label{font-family:Arial;font-size:10px;font-weight:700;color:#a2a3b5}.container .content .format-field .field-name p{font-family:Arial;font-size:15px;color:#4a4a4a;margin-bottom:12px}.container .content .format-checkbox,.container .content .subtotal-checkbox{font-family:Arial;font-size:15px;font-weight:700;color:#4a4a4a;margin-bottom:10px;margin-left:4px}.container .content .format-box{width:512px;margin-left:25px}.container .button-group{text-align:right;position:absolute;right:0;bottom:0;margin:0 20px 20px 0}.container .button-group .btn{width:117px;height:36px;border:none;border-radius:5px;font-family:Arial;font-size:14px;font-weight:700}.container .button-group .clear-button{color:#979cb4;background-color:#f2f3f7;margin-right:20px}.container .button-group .save-button{color:#0081ff;background-color:#d9edff}.container .fl{float:left}.container .fr{float:right}.add-format-button{width:36px;height:39px;background:none;border:none}.add-format-button img{width:36px;height:39px;transform:translate(-10px)}.add-format-font{font-family:Arial;font-size:15px;font-weight:700;color:#09b66d;transform:translateY(5px)}.icon-list mat-icon.mat-icon{width:30px;height:30px;line-height:30px;background:#eff1fe;margin-right:12px;color:#44566c;text-align:center;border-radius:5px;cursor:pointer;margin-top:6px}.icon-list mat-icon.mat-icon.selected{color:#fff;background-color:#606ede}.wrap{margin-right:10px}.e-colorpicker-wrapper #pickerFontElement+.e-split-btn-wrapper .e-split-btn .e-selected-color,#pickerElement+.e-split-btn-wrapper .e-split-btn .e-selected-color{background:none;border-bottom-style:solid;border-bottom-width:5px;width:25px;height:20px;border-radius:unset}.e-colorpicker-wrapper #pickerFontElement+.e-split-btn-wrapper .e-split-btn .e-selected-color .e-split-preview,#pickerElement+.e-split-btn-wrapper .e-split-btn .e-selected-color .e-split-preview{display:none}.e-colorpicker-wrapper #pickerFontElement+.e-split-btn-wrapper .e-split-btn .e-selected-color:before{content:\"\"!important;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M6.97852 14.999L11.1021 4.26172H12.6328L17.0274 14.999H15.4087L14.1563 11.747H9.66651L8.48731 14.999H6.97852ZM10.0767 10.5898H13.7168L12.5962 7.61621C12.2544 6.71289 12.0005 5.9707 11.8345 5.38964C11.6978 6.07812 11.5049 6.76172 11.2559 7.44043L10.0767 10.5898Z%22 fill%3D%22%23495057%22%2F%3E%0D%3C%2Fsvg%3E%0D\")!important;height:16px!important;width:16px!important;display:block;background-position:center center;color:#495057!important;margin:0 auto}.e-colorpicker-wrapper #pickerElement+.e-split-btn-wrapper .e-split-btn .e-selected-color:before{content:\"\"!important;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Crect x%3D%2211.1289%22 y%3D%224.9709%22 width%3D%227.03601%22 height%3D%226.65776%22 transform%3D%22rotate(45 11.1289 4.9709)%22 stroke%3D%22%23495057%22%2F%3E%0D%3Cline x1%3D%2215.8242%22 y1%3D%229.66825%22 x2%3D%229.51049%22 y2%3D%223.35456%22 stroke%3D%22%23495057%22%2F%3E%0D%3Cpath d%3D%22M6.9466 9.70842L15.8786 9.61563L11.3662 14.128L6.9466 9.70842Z%22 fill%3D%22%23495057%22%2F%3E%0D%3Cpath d%3D%22M18 13.9353C18 14.4324 17.5523 14.8353 17 14.8353C16.4477 14.8353 16 14.4324 16 13.9353C16 13.4383 17 11.8353 17 11.8353C17 11.8353 18 13.4383 18 13.9353Z%22 fill%3D%22%23495057%22%2F%3E%0D%3C%2Fsvg%3E%0D\")!important;height:16px!important;width:16px!important;display:block;background-position:center center;color:#495057!important;margin:0 auto}.e-colorpicker-wrapper .e-split-btn-wrapper .e-split-colorpicker+.e-dropdown-btn,.e-colorpicker-container .e-split-btn-wrapper .e-split-colorpicker+.e-dropdown-btn{padding:5px;background-color:#f8fafb;border:none!important}.e-dropdown-btn .e-caret,.e-dropdown-btn.e-btn .e-caret{transform:translate(-2px)}.e-colorpicker-wrapper .e-icon-btnr,.e-colorpicker-container .e-icon-btn{background-color:#f8fafb!important;color:unset!important}.e-colorpicker-wrapper .e-split-btn-wrapper .e-split-colorpicker.e-split-btn,.e-colorpicker-container .e-split-btn-wrapper .e-split-colorpicker.e-split-btn{padding:0 10px!important;background-color:#f8fafb!important;border:none!important}.e-btn.e-active,.e-css.e-btn.e-active{box-shadow:unset!important}::ng-deep .mat-checkbox-frame{background-color:#fff!important;border:solid 1px #d6d6d6!important}.select-chip{transform:translateY(20px);height:24px;border-radius:5px;min-height:24px}.delete-group{margin-left:468px;cursor:pointer;transform:translateY(-10px);padding-left:3px;padding-top:3px}.format-number{font-family:Arial;font-size:10px;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#a2a3b5}.notice{margin:15px 0 20px;width:529px;font-family:Arial;font-size:13px;color:#212529}.opacity{opacity:30%}input[type=checkbox].format-select-checkbox{transform:translateY(1px);margin-right:12px;width:14px;height:14px;border:1px solid #d6d6d6!important;background-color:#fff;line-height:14px;border-radius:4px;text-align:center;cursor:pointer}::ng-deep .e-colorpicker-popup{padding:0!important;border-radius:unset!important}::ng-deep .e-colorpicker-popup .e-switch-ctrl-btn{padding:14px!important}::ng-deep .e-colorpicker-popup .e-ctrl-btn{display:flex;justify-content:right}::ng-deep .e-colorpicker-popup .e-selected-value .e-value-switch-btn{border:unset!important;width:28px!important;max-width:28px!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i13.ColorPickerComponent, selector: "[ejs-colorpicker]", inputs: ["columns", "createPopupOnClick", "cssClass", "disabled", "enableOpacity", "enablePersistence", "enableRtl", "inline", "locale", "mode", "modeSwitcher", "noColor", "presetColors", "showButtons", "showRecentColors", "value"], outputs: ["focus", "blur", "beforeClose", "beforeModeSwitch", "beforeOpen", "beforeTileRender", "change", "created", "onModeSwitch", "open", "select", "valueChange"] }] });
|
|
722
|
+
}
|
|
723
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FieldFormatComponent, decorators: [{
|
|
724
|
+
type: Component,
|
|
725
|
+
args: [{ selector: "rs-field-format", template: "<div class=\"container dashboard-format-container\">\r\n\t<div class=\"header\">\r\n\t\t<mat-icon\r\n\t\t\tclass=\"icon-previous\"\r\n\t\t\t*ngIf=\"!Conditional\"\r\n\t\t\t(click)=\"Conditional = true\"\r\n\t\t>\r\n\t\t\tkeyboard_arrow_left</mat-icon\r\n\t\t>\r\n\t\t<p class=\"format-title\">\r\n\t\t\t{{\r\n\t\t\t\tConditional\r\n\t\t\t\t\t? translation.CONDITIONAL_SETTING || \"Conditional Setting\"\r\n\t\t\t\t\t: translation.FORMATTING_AND_HIDE_SUBTOTAL ||\r\n\t\t\t\t\t \"Formatting and hide sub total\"\r\n\t\t\t}}\r\n\t\t</p>\r\n\t\t<mat-icon class=\"close\" (click)=\"close()\">close</mat-icon>\r\n\t</div>\r\n\t<div class=\"content\">\r\n\t\t<!--Conditional Setting start \u7B2C\u4E00\u9875\uFF1Afield list-->\r\n\t\t<div *ngIf=\"Conditional\">\r\n\t\t\t<div class=\"notice\">\r\n\t\t\t\t{{\r\n\t\t\t\t\ttranslation.CONDITIONAL_SETTING_TIPS ||\r\n\t\t\t\t\t\t\"The fields you have selected are shown below, you can apply formatting,sub totals or grand totals. Sub totals are only available for pivot tables.\"\r\n\t\t\t\t}}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"all-fields\">\r\n\t\t\t\t<div class=\"fields-group\" *ngFor=\"let field of fieldslist\">\r\n\t\t\t\t\t<p class=\"fl\">{{ field.langValue }}</p>\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\tclass=\"fr\"\r\n\t\t\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t\t\topacity: field.showGrandTotals\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\tsrc=\"../../../../../assets/img/dashboard_icon/gadget-basic-total{{\r\n\t\t\t\t\t\t\tfield.showGrandTotals ? '' : '-1'\r\n\t\t\t\t\t\t}}.svg\"\r\n\t\t\t\t\t\t(click)=\"openFormat(field)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\tclass=\"fr format-icon\"\r\n\t\t\t\t\t\tsrc=\"../../../../../assets/img/dashboard_icon/gadget-sub-total{{\r\n\t\t\t\t\t\t\tfield.showSubTotals ? '-0' : '-1'\r\n\t\t\t\t\t\t}}.svg\"\r\n\t\t\t\t\t\t(click)=\"openFormat(field)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\tclass=\"fr format-icon\"\r\n\t\t\t\t\t\tsrc=\"../../../../../assets/img/dashboard_icon/gadget-format{{\r\n\t\t\t\t\t\t\tfield.format && field.format.length ? '-1' : '-0'\r\n\t\t\t\t\t\t}}.svg\"\r\n\t\t\t\t\t\t(click)=\"openFormat(field)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!--Conditional Setting end \u7B2C\u4E00\u9875\uFF1Afield list-->\r\n\r\n\t\t<!--Formatting and hide sub total start \u7B2C\u4E8C\u9875\uFF1Aformat setting-->\r\n\t\t<div *ngIf=\"!Conditional\">\r\n\t\t\t<div class=\"format-group format-field\">\r\n\t\t\t\t<div class=\"field-name\">\r\n\t\t\t\t\t<label>{{ translation.FIELD || \".FIELD\" }}</label>\r\n\t\t\t\t\t<p>{{ currentField?.langValue }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"format-checkbox\">\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\tclass=\"example-margin\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[(ngModel)]=\"currentFieldFormatInfo.formatChecked\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ translation.FORMAT || \"Format\" }}</mat-checkbox\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Format part start -->\r\n\t\t\t<div class=\"format-group format-box\">\r\n\t\t\t\t<!-- compare \u90E8\u5206 start -->\r\n\t\t\t\t<div class=\"group-style\">\r\n\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\t\tcurrentField.dataType !== 'string' &&\r\n\t\t\t\t\t\t\tcurrentField.dataType !== 'date'\r\n\t\t\t\t\t\t\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 50%\">\r\n\t\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\t\tselectOption($event.value, 'compare')\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t\t*ngFor=\"let item of compareList\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"item.code\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t[ngStyle]=\"{\r\n\t\t\t\t\t\t\t\twidth:\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect ===\r\n\t\t\t\t\t\t\t\t\t\t'Between' ||\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect ===\r\n\t\t\t\t\t\t\t\t\t\t'NotBetween'\r\n\t\t\t\t\t\t\t\t\t\t? '15%'\r\n\t\t\t\t\t\t\t\t\t\t: '36%'\r\n\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<mat-form-field class=\"marging-top-style\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareValue1\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect ===\r\n\t\t\t\t\t\t\t\t\t'Between' ||\r\n\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareSelect ===\r\n\t\t\t\t\t\t\t\t\t'NotBetween'\r\n\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\tstyle=\"width: 15%; display: flex\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\tline-height: 60px;\r\n\t\t\t\t\t\t\t\t\ttransform: translateX(8px);\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t-\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<mat-form-field\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\tstyle=\"margin-left: 15px\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.compareValue2\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- compare \u90E8\u5206 end -->\r\n\r\n\t\t\t\t<!-- Field Title & align start -->\r\n\t\t\t\t<div class=\"group-style marging-top-style\">\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 40%\">\r\n\t\t\t\t\t\t<mat-form-field class=\"marging-top-style\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\t\tplaceholder=\"{{\r\n\t\t\t\t\t\t\t\t\ttranslation.EDIT_FIELD_TITLE ||\r\n\t\t\t\t\t\t\t\t\t\t'.EDIT_FIELD_TITLE'\r\n\t\t\t\t\t\t\t\t}}\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"currentFieldFormatInfo.displayName\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.formatChecked = true\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div style=\"transform: translateY(-9px)\">\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"box-content\"\r\n\t\t\t\t\t\t\t*ngIf=\"config.portletType == 'table'\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div class=\"content-title\">\r\n\t\t\t\t\t\t\t\t{{ translation.ALIGNMENT || \".ALIGNMENT\" }}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"icon-list\">\r\n\t\t\t\t\t\t\t\t<mat-icon\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of alignList\"\r\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t\t\t\t\t\tselected:\r\n\t\t\t\t\t\t\t\t\t\t\titem.code ==\r\n\t\t\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.align\r\n\t\t\t\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"changeAligh(item.code)\"\r\n\t\t\t\t\t\t\t\t\t>{{ item.name }}</mat-icon\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- Field Title & align end -->\r\n\r\n\t\t\t\t<!-- Number/percent format start -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"group-style marging-top-style\"\r\n\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\tcurrentField.dataType !== 'string' &&\r\n\t\t\t\t\t\tcurrentField.dataType !== 'date'\r\n\t\t\t\t\t\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<div style=\"width: 96%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style format-font\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"{{\r\n\t\t\t\t\t\t\t\t\ttranslation.NUMBER_FORMAT ||\r\n\t\t\t\t\t\t\t\t\t\t'.NUMBER_FORMAT'\r\n\t\t\t\t\t\t\t\t}}\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.selectedFormatDisplay\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'number')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"\r\n\t\t\t\t\t\t\t\t\t\tlet format of currentFieldFormatInfo.formatList\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"format.key\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\tclass=\"format-select-checkbox\"\r\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\t\t\t[id]=\"format.val\"\r\n\t\t\t\t\t\t\t\t\t\t[name]=\"format.key\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"format.isChecked\"\r\n\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"format.isChecked\"\r\n\t\t\t\t\t\t\t\t\t/>{{ format.key }}\r\n\t\t\t\t\t\t\t\t\t<!-- <mat-checkbox\r\n\t\t\t\t\t\t\t\t\t\tstyle=\"margin-left: 15px\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"format.isChecked\"\r\n\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"format.isChecked\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{{ format.key }}\r\n\t\t\t\t\t\t\t\t\t</mat-checkbox> -->\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- Number/percent format end -->\r\n\r\n\t\t\t\t<!-- date format start -->\r\n\t\t\t\t<div *ngIf=\"currentField.dataType === 'date'\">\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclass=\"marging-right-style\"\r\n\t\t\t\t\t\tstyle=\"display: inline-block; width: 26%\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"currentFieldFormatInfo.dateType\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption(\r\n\t\t\t\t\t\t\t\t\t\t$event.value,\r\n\t\t\t\t\t\t\t\t\t\t'selectdDateType'\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"Quarter\">Quarter</mat-option>\r\n\t\t\t\t\t\t\t\t<mat-option value=\"Date\">Date</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div style=\"display: inline-block; width: 60%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption(\r\n\t\t\t\t\t\t\t\t\t\t$event.value,\r\n\t\t\t\t\t\t\t\t\t\t'selectdDateformat'\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.selectedFormatDisplay\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"\r\n\t\t\t\t\t\t\t\t\t\tlet date of currentFieldFormatInfo.formatList\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"date.key\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\tclass=\"format-select-checkbox\"\r\n\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\t\t\t[id]=\"date.val\"\r\n\t\t\t\t\t\t\t\t\t\t[name]=\"date.key\"\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"date.isChecked\"\r\n\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"date.isChecked\"\r\n\t\t\t\t\t\t\t\t\t/>{{ date.key }}\r\n\r\n\t\t\t\t\t\t\t\t\t<!-- <mat-checkbox\r\n\t\t\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\t\t\t\t\t\t\twidth: 100%;\r\n\t\t\t\t\t\t\t\t\t\t\tmargin-left: 15px;\r\n\t\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t\t\t[checked]=\"date.isChecked\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{{ date.key }}\r\n\t\t\t\t\t\t\t\t\t</mat-checkbox> -->\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- date format end -->\r\n\t\t\t</div>\r\n\t\t\t<!-- Format part end -->\r\n\r\n\t\t\t<!-- font setting start -->\r\n\t\t\t<div\r\n\t\t\t\tclass=\"format-checkbox\"\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t!['string', 'nvarchar', 'date', 'datetime'].includes(\r\n\t\t\t\t\t\tcurrentField.dataType\r\n\t\t\t\t\t)\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\tclass=\"example-margin\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[(ngModel)]=\"currentFieldFormatInfo.fontSettingChecked\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\ttranslation.FONT_SETTINGS || \".FONT_SETTINGS\"\r\n\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\t\t\t<div\r\n\t\t\t\tclass=\"format-group format-box\"\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t!['string', 'nvarchar', 'date', 'datetime'].includes(\r\n\t\t\t\t\t\tcurrentField.dataType\r\n\t\t\t\t\t)\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<!-- Number Format \u5B57\u4F53\u5927\u5C0F\u3001\u5B57\u4F53\u989C\u8272\u3001\u5355\u5143\u683C\u80CC\u666F\u8272 start -->\r\n\t\t\t\t<span class=\"format-number\">\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\ttranslation.POSITIVE_NUMBER_FORMAT ||\r\n\t\t\t\t\t\t\t\"Positive Number Format\"\r\n\t\t\t\t\t}}\r\n\t\t\t\t</span>\r\n\t\t\t\t<div class=\"group-style marging-top-style\">\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 35%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'fontFamily')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.fontFamilyValue\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of fontFamilyList\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 15%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'fontSize')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.fontSizeValue\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of fontSizeList\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div style=\"display: flex; line-height: 54px\">\r\n\t\t\t\t\t\t<div class=\"wrap\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tejs-colorpicker\r\n\t\t\t\t\t\t\t\t#colorpickerFont\r\n\t\t\t\t\t\t\t\t[modeSwitcher]=\"false\"\r\n\t\t\t\t\t\t\t\tid=\"pickerFontElement\"\r\n\t\t\t\t\t\t\t\t(change)=\"colorOnChange($event, 'font')\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"wrap\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tejs-colorpicker\r\n\t\t\t\t\t\t\t\t#colorpicker\r\n\t\t\t\t\t\t\t\t[modeSwitcher]=\"false\"\r\n\t\t\t\t\t\t\t\tid=\"pickerElement\"\r\n\t\t\t\t\t\t\t\t(change)=\"colorOnChange($event)\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div #previewColor>\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"preview\"\r\n\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\twidth: 62px;\r\n\t\t\t\t\t\t\t\t\theight: 30px;\r\n\t\t\t\t\t\t\t\t\ttransform: translateY(12px);\r\n\t\t\t\t\t\t\t\t\tborder-radius: 5px;\r\n\t\t\t\t\t\t\t\t\tline-height: 35px;\r\n\t\t\t\t\t\t\t\t\ttext-align: center;\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t123.45\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<span class=\"format-number\">{{\r\n\t\t\t\t\ttranslation.NEGATIVE_NUMBER_FORMAT ||\r\n\t\t\t\t\t\t\"Negative Number Format\"\r\n\t\t\t\t}}</span>\r\n\t\t\t\t<div class=\"group-style marging-top-style\">\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 35%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'negaFontFamily')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.negaFontFamilyValue\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of fontFamilyList\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"marging-right-style\" style=\"width: 15%\">\r\n\t\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t\t<mat-select\r\n\t\t\t\t\t\t\t\tclass=\"marging-top-style\"\r\n\t\t\t\t\t\t\t\t(selectionChange)=\"\r\n\t\t\t\t\t\t\t\t\tselectOption($event.value, 'negaFontSize')\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"\r\n\t\t\t\t\t\t\t\t\tcurrentFieldFormatInfo.negaFontSizeValue\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<mat-option\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let item of fontSizeList\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"item.value\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{{ item.value }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div style=\"display: flex; line-height: 54px\">\r\n\t\t\t\t\t\t<div class=\"wrap\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tejs-colorpicker\r\n\t\t\t\t\t\t\t\t#colorpickerFontBurden\r\n\t\t\t\t\t\t\t\t[modeSwitcher]=\"false\"\r\n\t\t\t\t\t\t\t\tid=\"pickerFontElement\"\r\n\t\t\t\t\t\t\t\t(change)=\"colorOnChange($event, 'ngeaFont')\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"wrap\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tejs-colorpicker\r\n\t\t\t\t\t\t\t\t#colorpickerBurden\r\n\t\t\t\t\t\t\t\t[modeSwitcher]=\"false\"\r\n\t\t\t\t\t\t\t\tid=\"pickerElement\"\r\n\t\t\t\t\t\t\t\t(change)=\"colorOnChange($event, 'ngeaBgColor')\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div #previewColorBurden>\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"preview\"\r\n\t\t\t\t\t\t\t\tstyle=\"\r\n\t\t\t\t\t\t\t\t\twidth: 62px;\r\n\t\t\t\t\t\t\t\t\theight: 30px;\r\n\t\t\t\t\t\t\t\t\ttransform: translateY(12px);\r\n\t\t\t\t\t\t\t\t\tborder-radius: 5px;\r\n\t\t\t\t\t\t\t\t\tline-height: 35px;\r\n\t\t\t\t\t\t\t\t\ttext-align: center;\r\n\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t123.45\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- Number Format \u5B57\u4F53\u5927\u5C0F\u3001\u5B57\u4F53\u989C\u8272\u3001\u5355\u5143\u683C\u80CC\u666F\u8272 end -->\r\n\t\t\t</div>\r\n\t\t\t<!-- font setting end -->\r\n\r\n\t\t\t<!-- hide subtotal start -->\r\n\t\t\t<div\r\n\t\t\t\tclass=\"subtotal-checkbox\"\r\n\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\topacity:\r\n\t\t\t\t\t\tconfig.portletType !== 'pivot' || !currentField?.isValue\r\n\t\t\t\t}\"\r\n\t\t\t>\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\tclass=\"example-margin\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[(ngModel)]=\"!currentField.showSubTotals\"\r\n\t\t\t\t\t(ngModelChange)=\"changeHideStatus('showSubTotals')\"\r\n\t\t\t\t\t[disabled]=\"\r\n\t\t\t\t\t\tconfig.portletType !== 'pivot' || !currentField?.isValue\r\n\t\t\t\t\t\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\ttranslation.HIDE_SUB_TOTAL || \"Hide Sub total\"\r\n\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\t\t\t<!-- hide subtotal end -->\r\n\r\n\t\t\t<!-- hide grandtotal start -->\r\n\t\t\t<div\r\n\t\t\t\tclass=\"subtotal-checkbox\"\r\n\t\t\t\t[ngClass]=\"{ opacity: disabledGrandTotal() }\"\r\n\t\t\t>\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\tclass=\"example-margin\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t[(ngModel)]=\"!currentField.showGrandTotals\"\r\n\t\t\t\t\t(ngModelChange)=\"changeHideStatus('showGrandTotals')\"\r\n\t\t\t\t\t[disabled]=\"disabledGrandTotal()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\ttranslation.HIDE_GRAND_TOTAL || \"Hide Grand total\"\r\n\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\t\t\t<!-- hide grandtotal end -->\r\n\t\t</div>\r\n\t\t<!--Formatting and hide sub total end \u7B2C\u4E8C\u9875\uFF1Aformat setting-->\r\n\t</div>\r\n\t<div class=\"button-group\" *ngIf=\"!Conditional\">\r\n\t\t<button (click)=\"clearFormat_Current()\" class=\"btn clear-button\">\r\n\t\t\t{{ translation.CLEAR || \".CLEAR\" }}\r\n\t\t</button>\r\n\t\t<button (click)=\"saveFormat()\" class=\"btn save-button\">\r\n\t\t\t{{ translation.SAVE || \".SAVE\" }}\r\n\t\t</button>\r\n\t</div>\r\n\t<div class=\"button-group\" *ngIf=\"Conditional\">\r\n\t\t<button (click)=\"clearFormat_All()\" class=\"btn clear-button\">\r\n\t\t\t{{ translation.CLEAR || \".CLEAR\" }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n", styles: [".container{font-size:13px;font-weight:400}.container.dashboard-format-container .e-split-btn-wrapper .e-btn+.e-icon-btn,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):hover+.e-icon-btn,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):active+.e-icon-btn,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):focus+.e-icon-btn{--rs-primary-btn-hover-bg: #f8fafb !important;--rs-primary-btn-bg: #f8fafb !important;max-width:18px!important;min-width:unset!important;width:18px!important}.container.dashboard-format-container .e-split-btn-wrapper .e-btn+.e-icon-btn .e-btn-icon,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):hover+.e-icon-btn .e-btn-icon,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):active+.e-icon-btn .e-btn-icon,.container.dashboard-format-container .e-split-btn-wrapper .e-btn:not([disabled]):focus+.e-icon-btn .e-btn-icon{font-size:8px!important}.container.dashboard-format-container .e-split-btn-wrapper .e-split-btn .e-btn-icon{font-size:14px!important}.container.dashboard-format-container .e-split-btn-wrapper .e-btn.e-icon-btn .e-btn-icon:before{width:8px!important;height:8px!important;content:\"\\e744\"!important;color:#495057!important}.container.dashboard-format-container .e-split-btn-wrapper .e-btn{--rs-primary-btn-hover: #f8fafb !important;--rs-primary-btn: #f8fafb !important}.container .header{width:109%;display:flex;border-bottom:1px solid #e9ecef;transform:translate(-25px);height:41px}.container .header .icon-previous{transform:translate(20px,5px);cursor:pointer}.container .header .close{margin-right:30px;padding-left:3px;padding-top:3px;border-radius:18px;transform:scale(1.1);cursor:pointer;background-color:#eaedf0;float:right;font-size:18px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.container .header .format-title{width:91%;font-family:HelveticaNeue;font-size:20px;font-weight:700;font-stretch:normal;font-style:normal;line-height:1.2;letter-spacing:normal;color:#212529;margin-left:28px}.container .content .all-fields{height:543px;overflow:auto}.container .content .all-fields .fields-group{width:calc(100% - 9px);height:30px;border-radius:4px;border:solid 1px #efeff3;padding:4px 9px 0 11px;margin:0 0 11px 4px}.container .content .all-fields .fields-group p{color:#44566c}.container .content .all-fields .fields-group img:hover{cursor:pointer}.container .content .all-fields .fields-group .format-icon{margin-right:10px}.container .content .format-group{width:535px;border-radius:5px;border:solid 1px #b3c0ce;padding:15px 0 0 10px;margin:0 0 20px 4px}.container .content .format-group .group-style{display:flex;width:100%}.container .content .format-group .group-style .format-font{color:#4a4a4a!important;font-weight:400!important}.container .content .format-group .marging-right-style{margin-right:16px}.container .content .format-group .marging-top-style{margin-top:10px}.container .content .format-field{margin-top:36px}.container .content .format-field .field-name label{font-family:Arial;font-size:10px;font-weight:700;color:#a2a3b5}.container .content .format-field .field-name p{font-family:Arial;font-size:15px;color:#4a4a4a;margin-bottom:12px}.container .content .format-checkbox,.container .content .subtotal-checkbox{font-family:Arial;font-size:15px;font-weight:700;color:#4a4a4a;margin-bottom:10px;margin-left:4px}.container .content .format-box{width:512px;margin-left:25px}.container .button-group{text-align:right;position:absolute;right:0;bottom:0;margin:0 20px 20px 0}.container .button-group .btn{width:117px;height:36px;border:none;border-radius:5px;font-family:Arial;font-size:14px;font-weight:700}.container .button-group .clear-button{color:#979cb4;background-color:#f2f3f7;margin-right:20px}.container .button-group .save-button{color:#0081ff;background-color:#d9edff}.container .fl{float:left}.container .fr{float:right}.add-format-button{width:36px;height:39px;background:none;border:none}.add-format-button img{width:36px;height:39px;transform:translate(-10px)}.add-format-font{font-family:Arial;font-size:15px;font-weight:700;color:#09b66d;transform:translateY(5px)}.icon-list mat-icon.mat-icon{width:30px;height:30px;line-height:30px;background:#eff1fe;margin-right:12px;color:#44566c;text-align:center;border-radius:5px;cursor:pointer;margin-top:6px}.icon-list mat-icon.mat-icon.selected{color:#fff;background-color:#606ede}.wrap{margin-right:10px}.e-colorpicker-wrapper #pickerFontElement+.e-split-btn-wrapper .e-split-btn .e-selected-color,#pickerElement+.e-split-btn-wrapper .e-split-btn .e-selected-color{background:none;border-bottom-style:solid;border-bottom-width:5px;width:25px;height:20px;border-radius:unset}.e-colorpicker-wrapper #pickerFontElement+.e-split-btn-wrapper .e-split-btn .e-selected-color .e-split-preview,#pickerElement+.e-split-btn-wrapper .e-split-btn .e-selected-color .e-split-preview{display:none}.e-colorpicker-wrapper #pickerFontElement+.e-split-btn-wrapper .e-split-btn .e-selected-color:before{content:\"\"!important;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M6.97852 14.999L11.1021 4.26172H12.6328L17.0274 14.999H15.4087L14.1563 11.747H9.66651L8.48731 14.999H6.97852ZM10.0767 10.5898H13.7168L12.5962 7.61621C12.2544 6.71289 12.0005 5.9707 11.8345 5.38964C11.6978 6.07812 11.5049 6.76172 11.2559 7.44043L10.0767 10.5898Z%22 fill%3D%22%23495057%22%2F%3E%0D%3C%2Fsvg%3E%0D\")!important;height:16px!important;width:16px!important;display:block;background-position:center center;color:#495057!important;margin:0 auto}.e-colorpicker-wrapper #pickerElement+.e-split-btn-wrapper .e-split-btn .e-selected-color:before{content:\"\"!important;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Crect x%3D%2211.1289%22 y%3D%224.9709%22 width%3D%227.03601%22 height%3D%226.65776%22 transform%3D%22rotate(45 11.1289 4.9709)%22 stroke%3D%22%23495057%22%2F%3E%0D%3Cline x1%3D%2215.8242%22 y1%3D%229.66825%22 x2%3D%229.51049%22 y2%3D%223.35456%22 stroke%3D%22%23495057%22%2F%3E%0D%3Cpath d%3D%22M6.9466 9.70842L15.8786 9.61563L11.3662 14.128L6.9466 9.70842Z%22 fill%3D%22%23495057%22%2F%3E%0D%3Cpath d%3D%22M18 13.9353C18 14.4324 17.5523 14.8353 17 14.8353C16.4477 14.8353 16 14.4324 16 13.9353C16 13.4383 17 11.8353 17 11.8353C17 11.8353 18 13.4383 18 13.9353Z%22 fill%3D%22%23495057%22%2F%3E%0D%3C%2Fsvg%3E%0D\")!important;height:16px!important;width:16px!important;display:block;background-position:center center;color:#495057!important;margin:0 auto}.e-colorpicker-wrapper .e-split-btn-wrapper .e-split-colorpicker+.e-dropdown-btn,.e-colorpicker-container .e-split-btn-wrapper .e-split-colorpicker+.e-dropdown-btn{padding:5px;background-color:#f8fafb;border:none!important}.e-dropdown-btn .e-caret,.e-dropdown-btn.e-btn .e-caret{transform:translate(-2px)}.e-colorpicker-wrapper .e-icon-btnr,.e-colorpicker-container .e-icon-btn{background-color:#f8fafb!important;color:unset!important}.e-colorpicker-wrapper .e-split-btn-wrapper .e-split-colorpicker.e-split-btn,.e-colorpicker-container .e-split-btn-wrapper .e-split-colorpicker.e-split-btn{padding:0 10px!important;background-color:#f8fafb!important;border:none!important}.e-btn.e-active,.e-css.e-btn.e-active{box-shadow:unset!important}::ng-deep .mat-checkbox-frame{background-color:#fff!important;border:solid 1px #d6d6d6!important}.select-chip{transform:translateY(20px);height:24px;border-radius:5px;min-height:24px}.delete-group{margin-left:468px;cursor:pointer;transform:translateY(-10px);padding-left:3px;padding-top:3px}.format-number{font-family:Arial;font-size:10px;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:#a2a3b5}.notice{margin:15px 0 20px;width:529px;font-family:Arial;font-size:13px;color:#212529}.opacity{opacity:30%}input[type=checkbox].format-select-checkbox{transform:translateY(1px);margin-right:12px;width:14px;height:14px;border:1px solid #d6d6d6!important;background-color:#fff;line-height:14px;border-radius:4px;text-align:center;cursor:pointer}::ng-deep .e-colorpicker-popup{padding:0!important;border-radius:unset!important}::ng-deep .e-colorpicker-popup .e-switch-ctrl-btn{padding:14px!important}::ng-deep .e-colorpicker-popup .e-ctrl-btn{display:flex;justify-content:right}::ng-deep .e-colorpicker-popup .e-selected-value .e-value-switch-btn{border:unset!important;width:28px!important;max-width:28px!important}\n"] }]
|
|
726
|
+
}], ctorParameters: function () { return [{ type: i1.DashboardService }, { type: i2.DashboardPorletsService }, { type: i3.DialogService }, { type: i4.MatDialogRef }, { type: undefined, decorators: [{
|
|
727
|
+
type: Inject,
|
|
728
|
+
args: [MAT_DIALOG_DATA]
|
|
729
|
+
}] }, { type: undefined, decorators: [{
|
|
730
|
+
type: Optional
|
|
731
|
+
}, {
|
|
732
|
+
type: Inject,
|
|
733
|
+
args: [PBF_TOKEN]
|
|
734
|
+
}] }]; }, propDecorators: { colorPicker: [{
|
|
735
|
+
type: ViewChildren,
|
|
736
|
+
args: ["colorpicker"]
|
|
737
|
+
}], colorPickerFont: [{
|
|
738
|
+
type: ViewChildren,
|
|
739
|
+
args: ["colorpickerFont"]
|
|
740
|
+
}], PreviewColor: [{
|
|
741
|
+
type: ViewChildren,
|
|
742
|
+
args: ["previewColor"]
|
|
743
|
+
}], colorpickerBurden: [{
|
|
744
|
+
type: ViewChildren,
|
|
745
|
+
args: ["colorpickerBurden"]
|
|
746
|
+
}], colorpickerFontBurden: [{
|
|
747
|
+
type: ViewChildren,
|
|
748
|
+
args: ["colorpickerFontBurden"]
|
|
749
|
+
}], previewColorBurden: [{
|
|
750
|
+
type: ViewChildren,
|
|
751
|
+
args: ["previewColorBurden"]
|
|
752
|
+
}] } });
|
|
753
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZm9ybWF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhaXNlLWNvbW1vbi1saWIvc3JjL2xpYi9kYXNoYm9hcmQvc2lkZWJhci1pY29ubGlzdC9maWVsZC1mb3JtYXQvZmllbGQtZm9ybWF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhaXNlLWNvbW1vbi1saWIvc3JjL2xpYi9kYXNoYm9hcmQvc2lkZWJhci1pY29ubGlzdC9maWVsZC1mb3JtYXQvZmllbGQtZm9ybWF0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTixTQUFTLEVBRVQsTUFBTSxFQUVOLFFBQVEsRUFFUixZQUFZLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsWUFBWTtBQUNaLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUdoRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBUzVELE1BQU0sT0FBTyxvQkFBb0I7SUEyQnZCO0lBQ0Q7SUFDQztJQUNEO0lBQ3lCO0lBQ087SUEvQlgsV0FBVyxDQUFrQztJQUUxRSxlQUFlLENBQWtDO0lBQ25CLFlBQVksQ0FBd0I7SUFFbEUsaUJBQWlCLENBQWtDO0lBRW5ELHFCQUFxQixDQUFrQztJQUV2RCxrQkFBa0IsQ0FBd0I7SUFDbkMsV0FBVyxHQUFRLEVBQUUsQ0FBQztJQUN0QixTQUFTLENBQWE7SUFDdEIsWUFBWSxDQUFhO0lBQ3pCLFdBQVcsQ0FBYTtJQUN4Qix3QkFBd0IsQ0FBYTtJQUNyQyxjQUFjLENBQWE7SUFDM0IsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ2pC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QUFROzswQkFBSSxNQUFNOzJCQUFDLFNBQVM7NENBL0JELFdBQVc7c0JBQXZDLFlBQVk7dUJBQUMsYUFBYTtnQkFFM0IsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGlCQUFpQjtnQkFFRCxZQUFZO3NCQUF6QyxZQUFZO3VCQUFDLGNBQWM7Z0JBRTVCLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxtQkFBbUI7Z0JBR2pDLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBR3JDLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRFbGVtZW50UmVmLFxyXG5cdEluamVjdCxcclxuXHRPbkluaXQsXHJcblx0T3B0aW9uYWwsXHJcblx0UXVlcnlMaXN0LFxyXG5cdFZpZXdDaGlsZHJlbixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZFBvcmxldHMuc2VydmljZVwiO1xyXG4vL3N5bmNmdXNpb25cclxuaW1wb3J0IHsgYWRkQ2xhc3MgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHsgQ29sb3JQaWNrZXJDb21wb25lbnQgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItaW5wdXRzXCI7XHJcbmltcG9ydCB7IENvbG9yUGlja2VyRXZlbnRBcmdzIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1pbnB1dHNcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IFBCRl9UT0tFTiB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL0luamVjdGlvblRva2VuXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWFsb2cuc2VydmljZVwiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInJzLWZpZWxkLWZvcm1hdFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vZmllbGQtZm9ybWF0LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2ZpZWxkLWZvcm1hdC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpZWxkRm9ybWF0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRAVmlld0NoaWxkcmVuKFwiY29sb3JwaWNrZXJcIikgY29sb3JQaWNrZXI6IFF1ZXJ5TGlzdDxDb2xvclBpY2tlckNvbXBvbmVudD47XHJcblx0QFZpZXdDaGlsZHJlbihcImNvbG9ycGlja2VyRm9udFwiKVxyXG5cdGNvbG9yUGlja2VyRm9udDogUXVlcnlMaXN0PENvbG9yUGlja2VyQ29tcG9uZW50PjtcclxuXHRAVmlld0NoaWxkcmVuKFwicHJldmlld0NvbG9yXCIpIFByZXZpZXdDb2xvcjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cdEBWaWV3Q2hpbGRyZW4oXCJjb2xvcnBpY2tlckJ1cmRlblwiKVxyXG5cdGNvbG9ycGlja2VyQnVyZGVuOiBRdWVyeUxpc3Q8Q29sb3JQaWNrZXJDb21wb25lbnQ+O1xyXG5cdEBWaWV3Q2hpbGRyZW4oXCJjb2xvcnBpY2tlckZvbnRCdXJkZW5cIilcclxuXHRjb2xvcnBpY2tlckZvbnRCdXJkZW46IFF1ZXJ5TGlzdDxDb2xvclBpY2tlckNvbXBvbmVudD47XHJcblx0QFZpZXdDaGlsZHJlbihcInByZXZpZXdDb2xvckJ1cmRlblwiKVxyXG5cdHByZXZpZXdDb2xvckJ1cmRlbjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cdHB1YmxpYyB0cmFuc2xhdGlvbjogYW55ID0ge307XHJcblx0cHVibGljIGFsaWduTGlzdDogQXJyYXk8YW55PjtcclxuXHRwdWJsaWMgZm9udFNpemVMaXN0OiBBcnJheTxhbnk+O1xyXG5cdHB1YmxpYyBjb21wYXJlTGlzdDogQXJyYXk8YW55PjtcclxuXHRwdWJsaWMgc3RyaW5nQW5kRGF0ZUNvbXBhcmVMaXN0OiBBcnJheTxhbnk+O1xyXG5cdHB1YmxpYyBmb250RmFtaWx5TGlzdDogQXJyYXk8YW55PjtcclxuXHRwdWJsaWMgY29tcGFyZVNlbGVjdDogc3RyaW5nID0gXCJcIjtcclxuXHRwdWJsaWMgY29uZmlnOiBhbnkgPSB7fTtcclxuXHRwdWJsaWMgQ29uZGl0aW9uYWw6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdHB1YmxpYyBmaWVsZHNsaXN0ID0gW107XHJcblx0cHVibGljIGN1cnJlbnRGaWVsZDtcclxuXHRwdWJsaWMgY3VycmVudEZpZWxkRm9ybWF0SW5mbztcclxuXHRwcml2YXRlIHF1YXJ0ZXJGb3JtYXQ7XHJcblx0cHJpdmF0ZSBkYXRlRm9ybWF0O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgRGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuXHRcdHB1YmxpYyBkYXNoYm9hcmRQb3JsZXRzU2VydmljZTogRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcblx0XHRwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RmllbGRGb3JtYXRDb21wb25lbnQ+LFxyXG5cdFx0QEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXHJcblx0XHRAT3B0aW9uYWwoKSBASW5qZWN0KFBCRl9UT0tFTikgcHJpdmF0ZSBwYmY6IGFueSxcclxuXHJcblx0KSB7IH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuXHRcdHRoaXMuYWxpZ25MaXN0ID0gdGhpcy5zZXRBbGlnbkxpc3QoKTtcclxuXHRcdHRoaXMuZm9udFNpemVMaXN0ID0gdGhpcy5zZXRGb250U2l6ZUxpc3QoKTtcclxuXHRcdHRoaXMuY29tcGFyZUxpc3QgPSB0aGlzLnNldENvbXBhcmVMaXN0KCk7XHJcblx0XHR0aGlzLnN0cmluZ0FuZERhdGVDb21wYXJlTGlzdCA9IHRoaXMuc2V0U3RyaW5nQW5kRGF0ZUNvbXBhcmVMaXN0KCk7XHJcblx0XHR0aGlzLmZvbnRGYW1pbHlMaXN0ID0gdGhpcy5zZXRGb250RmFtaWx5TGlzdCgpO1xyXG5cdFx0dGhpcy5xdWFydGVyRm9ybWF0ID0gdGhpcy5zZXRRdWFydGVyRm9ybWF0KCk7XHJcblx0XHR0aGlzLmRhdGVGb3JtYXQgPSB0aGlzLnNldERhdGVGb3JtYXQoKTtcclxuXHRcdGlmICh0aGlzLmRhdGEucG9ydGxldERhdGEpIHRoaXMuZ2V0Q29uZGl0aW9uYWxEYXRhKCk7XHJcblx0fVxyXG5cclxuXHQvLyDojrflj5ZmaWVsZCBsaXN06aG16Z2i5pWw5o2uXHJcblx0cHJpdmF0ZSBnZXRDb25kaXRpb25hbERhdGEoKSB7XHJcblx0XHR0aGlzLmNvbmZpZyA9IEpTT04ucGFyc2UodGhpcy5kYXRhLnBvcnRsZXREYXRhLmNvbmZpZyk7XHJcblx0XHR0aGlzLmZpZWxkc2xpc3QgPSBbXTtcclxuXHRcdC8vcGl2b3QgdGFibGUvY2hhcnQoZ2V0IHRoZSByb3dzLGNvbHVtcyx2YWx1ZXMgZXRjKVxyXG5cdFx0aWYgKFxyXG5cdFx0XHRbXHJcblx0XHRcdFx0XCJwaXZvdFwiLFxyXG5cdFx0XHRcdFwiYmFyXCIsXHJcblx0XHRcdFx0XCJjb2x1bW5cIixcclxuXHRcdFx0XHRcImxpbmVcIixcclxuXHRcdFx0XHRcImFyZWFcIixcclxuXHRcdFx0XHRcInBpZVwiLFxyXG5cdFx0XHRcdFwicmFkYXJcIixcclxuXHRcdFx0XHRcIm5ld2NoYXJ0XCIsXHJcblx0XHRcdF0uaW5jbHVkZXModGhpcy5jb25maWcucG9ydGxldFR5cGUpXHJcblx0XHQpIHtcclxuXHRcdFx0aWYgKHRoaXMuY29uZmlnLnhheGlzLmdyb3VwcylcclxuXHRcdFx0XHRmb3IgKGxldCBncm91cCBvZiB0aGlzLmNvbmZpZy54YXhpcy5ncm91cHMpIHtcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRzbGlzdC5wdXNoKFxyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbmZpZy5maWVsZHMuZmlsdGVyKFxyXG5cdFx0XHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZ3JvdXAubmFtZVxyXG5cdFx0XHRcdFx0XHQpWzBdXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuY29uZmlnLmNvbHVtbkdyb3VwKVxyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiB0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cCkge1xyXG5cdFx0XHRcdFx0dGhpcy5maWVsZHNsaXN0LnB1c2goXHJcblx0XHRcdFx0XHRcdHRoaXMuY29uZmlnLmZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0KGVsKSA9PiBlbC5jb2xOYW1lID09PSBjb2x1bW4ubmFtZVxyXG5cdFx0XHRcdFx0XHQpWzBdXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMuY29uZmlnLnlheGlzLnNlcmllcylcclxuXHRcdFx0XHRmb3IgKGxldCB2YWx1ZSBvZiB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMpIHtcclxuXHRcdFx0XHRcdGNvbnN0IHB2YWx1ZSA9IHRoaXMuY29uZmlnLmZpZWxkcy5maW5kKFxyXG5cdFx0XHRcdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IHZhbHVlLmNvbE5hbWVcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRsZXQgYWxsRmllbGRzID0gdGhpcy5jb25maWcuZmllbGRzO1xyXG5cdFx0XHRcdFx0bGV0IGRpc3BsYXlOYW1lID0gdmFsdWUudGl0bGU7XHJcblx0XHRcdFx0XHRpZiAoYWxsRmllbGRzICYmIHB2YWx1ZSkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpdGVtID0gYWxsRmllbGRzLmZpbmQoXHJcblx0XHRcdFx0XHRcdFx0KGZpZWxkKSA9PiBmaWVsZC5jb2xOYW1lID09PSBwdmFsdWUuY29sTmFtZVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHRcdFx0XHRcdGRpc3BsYXlOYW1lID1cclxuXHRcdFx0XHRcdFx0XHRcdChpdGVtLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVtLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0aXRlbS5mb3JtYXRbMF0uZGlzcGxheU5hbWUpIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRpdGVtLmxhbmdWYWx1ZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHB2YWx1ZSkge1xyXG5cdFx0XHRcdFx0XHRwdmFsdWVbXCJpc1ZhbHVlXCJdID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0cHZhbHVlW1wic2hvd1N1YlRvdGFsc1wiXSA9IHZhbHVlLnNob3dTdWJUb3RhbHM7XHJcblx0XHRcdFx0XHRcdHB2YWx1ZVtcInNob3dHcmFuZFRvdGFsc1wiXSA9IHZhbHVlLnNob3dHcmFuZFRvdGFscztcclxuXHRcdFx0XHRcdFx0cHZhbHVlW1wibGFuZ1ZhbHVlXCJdID0gZGlzcGxheU5hbWU7XHJcblx0XHRcdFx0XHRcdHRoaXMuZmllbGRzbGlzdC5wdXNoKHB2YWx1ZSk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZS5pc1ZhbHVlID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0dGhpcy5maWVsZHNsaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdFx0bGFuZ1ZhbHVlOiBkaXNwbGF5TmFtZSxcclxuXHRcdFx0XHRcdFx0XHRpc1ZhbHVlOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHZhbHVlLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0c2hvd0dyYW5kVG90YWxzOiB2YWx1ZS5zaG93R3JhbmRUb3RhbHMsXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGxldCBrZXlzID0gW107XHJcblx0XHRcdGlmICh0aGlzLmNvbmZpZy5maWVsZHMubGVuZ3RoKVxyXG5cdFx0XHRcdGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZy5maWVsZHNbMF0pO1xyXG5cdFx0XHR0aGlzLmZpZWxkc2xpc3QgPSB0aGlzLmNvbmZpZy5maWVsZHMuZmlsdGVyKChlbCkgPT5cclxuXHRcdFx0XHRrZXlzLmluY2x1ZGVzKFwidmlzaWJsZVwiKVxyXG5cdFx0XHRcdFx0PyBlbC52aXNpYmxlICYmICFlbC5pc0hpZGRlblxyXG5cdFx0XHRcdFx0OiAhZWwuaXNIaWRkZW5cclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdC8vIOaJgOaciWZpZWxk6YO957uZ5LiA5Liqc2hvd0dyYW5kVG90YWxz5ZKMc2hvd1N1YlRvdGFsc+eahOWAvO+8jOe7keWummZpZWxkIGxpc3TpobXpnaJpY29u54q25oCB77yM5Y+KZm9ybWF06aG16Z2iSGlkZSBzdWJ0b3RhbOOAgUhpZGUgZ3JhbmR0b3RhbOetieeKtuaAgVxyXG5cdFx0dGhpcy5maWVsZHNsaXN0Lm1hcCgoZWwpID0+IHtcclxuXHRcdFx0bGV0IGtleXMgPSBPYmplY3Qua2V5cyhlbCk7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHQha2V5cy5pbmNsdWRlcyhcInNob3dHcmFuZFRvdGFsc1wiKSB8fFxyXG5cdFx0XHRcdGVsLnNob3dHcmFuZFRvdGFscyA9PT0gdW5kZWZpbmVkXHJcblx0XHRcdClcclxuXHRcdFx0XHRlbC5zaG93R3JhbmRUb3RhbHMgPSB0cnVlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0IWtleXMuaW5jbHVkZXMoXCJzaG93U3ViVG90YWxzXCIpIHx8XHJcblx0XHRcdFx0ZWwuc2hvd1N1YlRvdGFscyA9PT0gdW5kZWZpbmVkXHJcblx0XHRcdClcclxuXHRcdFx0XHRlbC5zaG93U3ViVG90YWxzID0gdHJ1ZTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8g5omT5byAZmllbGTnmoRmb3JtYXTpobXpnaJcclxuXHRwdWJsaWMgb3BlbkZvcm1hdChpdGVtKSB7XHJcblx0XHQvL2NsZWFyIHRoZSBjaGVja2JveFxyXG5cdFx0dGhpcy5Db25kaXRpb25hbCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5jdXJyZW50RmllbGQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0pKTtcclxuXHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mbyA9XHJcblx0XHRcdChpdGVtLmZvcm1hdCAmJiBpdGVtLmZvcm1hdFswXSkgfHwgdGhpcy5zZXRGb3JtYXRHcm91cERlZmF1bHREYXRhKCk7XHJcblx0XHRkZWxldGUgdGhpcy5jdXJyZW50RmllbGQuZm9ybWF0OyAvLyDliKDmjoljdXJyZW50RmllbGTnmoRmb3JtYXTvvIzlsIZmb3JtYXTkv6Hmga/kv53lrZjlnKhjdXJyZW50RmllbGRGb3JtYXRJbmZvXHJcblx0XHR0aGlzLnNlbGVjdE9wdGlvbihpdGVtLmNvbE5hbWUsIFwiZmllbGRcIik7XHJcblx0XHRpZiAoIVtcInN0cmluZ1wiLCBcIm52YXJjaGFyXCIsIFwiZGF0ZVwiLCBcImRhdGV0aW1lXCJdLmluY2x1ZGVzKGl0ZW0uZGF0YVR5cGUpKVxyXG5cdFx0XHR0aGlzLmFkZENvbG9yUGlja2VyU3R5bGUoKTtcclxuXHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb3JtYXRMaXN0ICYmXHJcblx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb3JtYXRMaXN0Lm1hcChcclxuXHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0KGVsLmlzQ2hlY2tlZCA9XHJcblx0XHRcdFx0XHRlbC5rZXkgPT1cclxuXHRcdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLnNlbGVjdGVkRm9ybWF0RGlzcGxheVxyXG5cdFx0XHRcdFx0XHQ/IHRydWVcclxuXHRcdFx0XHRcdFx0OiBmYWxzZSlcclxuXHRcdFx0KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBzZWxlY3RPcHRpb24odmFsdWUsIHR5cGUpIHtcclxuXHRcdGxldCBQcmV2aWV3Q29sb3JFbGVtZW50ID0gdGhpcy5QcmV2aWV3Q29sb3JbXCJfcmVzdWx0c1wiXTtcclxuXHRcdGxldCBwcmV2aWV3Q29sb3JCdXJkZW5FbGVtZW50ID0gdGhpcy5wcmV2aWV3Q29sb3JCdXJkZW5bXCJfcmVzdWx0c1wiXTtcclxuXHRcdGxldCBhbGxGaWVsZHMgPSB0aGlzLmNvbmZpZy5maWVsZHM7XHJcblx0XHRsZXQgZGlzcGxheU5hbWUgPSB0aGlzLmN1cnJlbnRGaWVsZC5kaXNwbGF5TmFtZTtcclxuXHRcdGlmIChhbGxGaWVsZHMgJiYgKCFkaXNwbGF5TmFtZSB8fCBkaXNwbGF5TmFtZS5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdGNvbnN0IGl0ZW0gPSBhbGxGaWVsZHMuZmluZChcclxuXHRcdFx0XHQoZmllbGQpID0+IGZpZWxkLmNvbE5hbWUgPT09IHRoaXMuY3VycmVudEZpZWxkLmNvbE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGl0ZW0pIHtcclxuXHRcdFx0XHRkaXNwbGF5TmFtZSA9XHJcblx0XHRcdFx0XHQoaXRlbS5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0aXRlbS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdGl0ZW0uZm9ybWF0WzBdLmRpc3BsYXlOYW1lKSB8fFxyXG5cdFx0XHRcdFx0aXRlbS5sYW5nVmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHRjYXNlIFwiZmllbGRcIjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uc2VsZWN0ZWRGaWVsZCA9XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZC5jb2xOYW1lO1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5kYXRhVHlwZSA9XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZC5kYXRhVHlwZTtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZSB8fCBcIlwiO1xyXG5cdFx0XHRcdHRoaXMuZ2V0RmlsZWRGb3JtYXQoKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImNvbXBhcmVcIjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9ybWF0Q2hlY2tlZCA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmNvbXBhcmVTZWxlY3QgPSB0aGlzLm9wdGlvbkZpbHRlcihcclxuXHRcdFx0XHRcdHRoaXMuY29tcGFyZUxpc3QsXHJcblx0XHRcdFx0XHRcImNvZGVcIixcclxuXHRcdFx0XHRcdHZhbHVlXHJcblx0XHRcdFx0KVswXS5jb2RlO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwic2VsZWN0ZERhdGVUeXBlXCI6XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdENoZWNrZWQgPSB0cnVlO1xyXG5cdFx0XHRcdGlmICh2YWx1ZSA9PSBcIlF1YXJ0ZXJcIikge1xyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdExpc3QgPSB0aGlzLnF1YXJ0ZXJGb3JtYXQ7XHJcblx0XHRcdFx0fSBlbHNlIGlmICh2YWx1ZSA9PSBcIkRhdGVcIikge1xyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdExpc3QgPSB0aGlzLmRhdGVGb3JtYXQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5zZWxlY3RlZEZvcm1hdERpc3BsYXkgPSBcIlwiO1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5zZWxlY3RlZEZvcm1hdCA9IFwiXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJzZWxlY3RkRGF0ZWZvcm1hdFwiOlxyXG5cdFx0XHRjYXNlIFwibnVtYmVyXCI6XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdENoZWNrZWQgPSB0cnVlO1xyXG5cdFx0XHRcdGZvciAoY29uc3QgaXRlcmF0b3Igb2YgdGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdExpc3QpIHtcclxuXHRcdFx0XHRcdGl0ZXJhdG9yLmlzQ2hlY2tlZCA9IEJvb2xlYW4oaXRlcmF0b3Iua2V5ID09IHZhbHVlKTtcclxuXHRcdFx0XHRcdGlmIChpdGVyYXRvci5rZXkgPT0gdmFsdWUpXHJcblx0XHRcdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5zZWxlY3RlZEZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0aXRlcmF0b3IudmFsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImZvbnRGYW1pbHlcIjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9udFNldHRpbmdDaGVja2VkID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9udEZhbWlseVZhbHVlID0gdGhpcy5vcHRpb25GaWx0ZXIoXHJcblx0XHRcdFx0XHR0aGlzLmZvbnRGYW1pbHlMaXN0LFxyXG5cdFx0XHRcdFx0XCJ2YWx1ZVwiLFxyXG5cdFx0XHRcdFx0dmFsdWVcclxuXHRcdFx0XHQpWzBdLnZhbHVlO1xyXG5cdFx0XHRcdChcclxuXHRcdFx0XHRcdFByZXZpZXdDb2xvckVsZW1lbnRbMF0ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG5cdFx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHRcdCkgYXMgSFRNTEVsZW1lbnRcclxuXHRcdFx0XHQpLnN0eWxlLmZvbnRGYW1pbHkgPVxyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvbnRGYW1pbHlWYWx1ZTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcIm5lZ2FGb250RmFtaWx5XCI6XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvbnRTZXR0aW5nQ2hlY2tlZCA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLm5lZ2FGb250RmFtaWx5VmFsdWUgPVxyXG5cdFx0XHRcdFx0dGhpcy5vcHRpb25GaWx0ZXIoXHJcblx0XHRcdFx0XHRcdHRoaXMuZm9udEZhbWlseUxpc3QsXHJcblx0XHRcdFx0XHRcdFwidmFsdWVcIixcclxuXHRcdFx0XHRcdFx0dmFsdWVcclxuXHRcdFx0XHRcdClbMF0udmFsdWU7XHJcblx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0cHJldmlld0NvbG9yQnVyZGVuRWxlbWVudFswXS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFwiLmZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHRcdFx0KSBhcyBIVE1MRWxlbWVudFxyXG5cdFx0XHRcdCkuc3R5bGUuZm9udEZhbWlseSA9XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8ubmVnYUZvbnRGYW1pbHlWYWx1ZTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcIm5lZ2FGb250U2l6ZVwiOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb250U2V0dGluZ0NoZWNrZWQgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5uZWdhRm9udFNpemVWYWx1ZSA9XHJcblx0XHRcdFx0XHR0aGlzLm9wdGlvbkZpbHRlcihcclxuXHRcdFx0XHRcdFx0dGhpcy5mb250U2l6ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFwidmFsdWVcIixcclxuXHRcdFx0XHRcdFx0dmFsdWVcclxuXHRcdFx0XHRcdClbMF0udmFsdWU7XHJcblx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0cHJldmlld0NvbG9yQnVyZGVuRWxlbWVudFswXS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFwiLmZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHRcdFx0KSBhcyBIVE1MRWxlbWVudFxyXG5cdFx0XHRcdCkuc3R5bGUuZm9udFNpemUgPVxyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLm5lZ2FGb250U2l6ZVZhbHVlO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiZm9udFNpemVcIjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9udFNldHRpbmdDaGVja2VkID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9udFNpemVWYWx1ZSA9IHRoaXMub3B0aW9uRmlsdGVyKFxyXG5cdFx0XHRcdFx0dGhpcy5mb250U2l6ZUxpc3QsXHJcblx0XHRcdFx0XHRcInZhbHVlXCIsXHJcblx0XHRcdFx0XHR2YWx1ZVxyXG5cdFx0XHRcdClbMF0udmFsdWU7XHJcblx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0UHJldmlld0NvbG9yRWxlbWVudFswXS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFwiLmZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHRcdFx0KSBhcyBIVE1MRWxlbWVudFxyXG5cdFx0XHRcdCkuc3R5bGUuZm9udFNpemUgPSB0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9udFNpemVWYWx1ZTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0RmlsZWRGb3JtYXQoKSB7XHJcblx0XHRpZiAoIXRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5hbGlnbilcclxuXHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmFsaWduID0gW1xyXG5cdFx0XHRcdFwic3RyaW5nXCIsXHJcblx0XHRcdFx0XCJudmFyY2hhclwiLFxyXG5cdFx0XHRcdFwiZGF0ZVwiLFxyXG5cdFx0XHRcdFwiZGF0ZXRpbWVcIixcclxuXHRcdFx0XS5pbmNsdWRlcyh0aGlzLmN1cnJlbnRGaWVsZC5kYXRhVHlwZSlcclxuXHRcdFx0XHQ/IFwiTGVmdFwiXHJcblx0XHRcdFx0OiBcIlJpZ2h0XCI7XHJcblx0XHRzd2l0Y2ggKHRoaXMuY3VycmVudEZpZWxkLmRhdGFUeXBlKSB7XHJcblx0XHRcdGNhc2UgXCJudW1iZXJcIjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9ybWF0TGlzdCA9XHJcblx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLkdldEZpZ3VyZUZvcm1hdCgpO1xyXG5cdFx0XHRcdHRoaXMuYWRkQ29sb3JQaWNrZXJTdHlsZSgpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiaW50ZWdlclwiOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb3JtYXRMaXN0ID1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0RmlndXJlRm9ybWF0MygpO1xyXG5cdFx0XHRcdHRoaXMuYWRkQ29sb3JQaWNrZXJTdHlsZSgpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicGVyY2VudFwiOlxyXG5cdFx0XHRjYXNlIFwicGVyY2VudE51bVwiOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb3JtYXRMaXN0ID1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0UGVyY2VudEZvcm1hdHMoKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcIm11bHRpcGxlXCI6XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdExpc3QgPVxyXG5cdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5HZXRNdWx0aXBsZUZvcm1hdHMoKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgb3B0aW9uRmlsdGVyKGRhdGEsIGZpZWxkLCBjb21wYXJlVmFsdWUpIHtcclxuXHRcdHJldHVybiBkYXRhLmZpbHRlcigoaXRlbSkgPT4gaXRlbVtmaWVsZF0gPT09IGNvbXBhcmVWYWx1ZSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgY2hhbmdlQWxpZ2goY29kZSkge1xyXG5cdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmFsaWduID0gY29kZTtcclxuXHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb3JtYXRDaGVja2VkID0gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYWRkQ29sb3JQaWNrZXJTdHlsZSgpIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRsZXQgY29sb3JQaWNrZXJGb250RWxlbWVudCA9IHRoaXMuY29sb3JQaWNrZXJGb250W1wiX3Jlc3VsdHNcIl07XHJcblx0XHRcdGxldCBjb2xvclBpY2tlckVsZW1lbnQgPSB0aGlzLmNvbG9yUGlja2VyW1wiX3Jlc3VsdHNcIl07XHJcblx0XHRcdGxldCBQcmV2aWV3Q29sb3JFbGVtZW50ID0gdGhpcy5QcmV2aWV3Q29sb3JbXCJfcmVzdWx0c1wiXTtcclxuXHRcdFx0bGV0IGNvbG9ycGlja2VyQnVyZGVuRWxlbWVudCA9IHRoaXMuY29sb3JwaWNrZXJCdXJkZW5bXCJfcmVzdWx0c1wiXTtcclxuXHRcdFx0bGV0IGNvbG9ycGlja2VyRm9udEJ1cmRlbkVsZW1lbnQgPVxyXG5cdFx0XHRcdHRoaXMuY29sb3JwaWNrZXJGb250QnVyZGVuW1wiX3Jlc3VsdHNcIl07XHJcblx0XHRcdGxldCBwcmV2aWV3Q29sb3JCdXJkZW5FbGVtZW50ID0gdGhpcy5wcmV2aWV3Q29sb3JCdXJkZW5bXCJfcmVzdWx0c1wiXTtcclxuXHRcdFx0Y29sb3JQaWNrZXJGb250RWxlbWVudC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0YWRkQ2xhc3MoXHJcblx0XHRcdFx0XHRbXHJcblx0XHRcdFx0XHRcdGl0ZW0uZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XHRcIi5lLXNlbGVjdGVkLWNvbG9yXCJcclxuXHRcdFx0XHRcdFx0KSxcclxuXHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0XHRcImUtaWNvbnNcIlxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRjb2xvclBpY2tlckVsZW1lbnQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG5cdFx0XHRcdGFkZENsYXNzKFxyXG5cdFx0XHRcdFx0W1xyXG5cdFx0XHRcdFx0XHRpdGVtLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFx0XCIuZS1zZWxlY3RlZC1jb2xvclwiXHJcblx0XHRcdFx0XHRcdCksXHJcblx0XHRcdFx0XHRdLFxyXG5cdFx0XHRcdFx0XCJlLWljb25zXCJcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdGlmIChjb2xvcnBpY2tlckJ1cmRlbkVsZW1lbnQubGVuZ3RoKVxyXG5cdFx0XHRcdGNvbG9ycGlja2VyQnVyZGVuRWxlbWVudC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0XHRhZGRDbGFzcyhcclxuXHRcdFx0XHRcdFx0W1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0uZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XHRcdFwiLmUtc2VsZWN0ZWQtY29sb3JcIlxyXG5cdFx0XHRcdFx0XHRcdCksXHJcblx0XHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0XHRcdFwiZS1pY29uc1wiXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRpZiAoY29sb3JwaWNrZXJGb250QnVyZGVuRWxlbWVudC5sZW5ndGgpXHJcblx0XHRcdFx0Y29sb3JwaWNrZXJGb250QnVyZGVuRWxlbWVudC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0XHRhZGRDbGFzcyhcclxuXHRcdFx0XHRcdFx0W1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0uZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XHRcdFwiLmUtc2VsZWN0ZWQtY29sb3JcIlxyXG5cdFx0XHRcdFx0XHRcdCksXHJcblx0XHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0XHRcdFwiZS1pY29uc1wiXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRhZGRDbGFzcyhcclxuXHRcdFx0XHRbXHJcblx0XHRcdFx0XHRjb2xvclBpY2tlckZvbnRFbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFwiLmUtc2VsZWN0ZWQtY29sb3JcIlxyXG5cdFx0XHRcdFx0KSxcclxuXHRcdFx0XHRdLFxyXG5cdFx0XHRcdFwiZm9ybWF0LWdyb3Vwc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGFkZENsYXNzKFxyXG5cdFx0XHRcdFtcclxuXHRcdFx0XHRcdGNvbG9yUGlja2VyRWxlbWVudFswXS5lbGVtZW50Lm5leHRFbGVtZW50U2libGluZy5xdWVyeVNlbGVjdG9yKFxyXG5cdFx0XHRcdFx0XHRcIi5lLXNlbGVjdGVkLWNvbG9yXCJcclxuXHRcdFx0XHRcdCksXHJcblx0XHRcdFx0XSxcclxuXHRcdFx0XHRcImZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRhZGRDbGFzcyhcclxuXHRcdFx0XHRbXHJcblx0XHRcdFx0XHRQcmV2aWV3Q29sb3JFbGVtZW50WzBdLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XCIucHJldmlld1wiXHJcblx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdF0sXHJcblx0XHRcdFx0XCJmb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdChcclxuXHRcdFx0XHRQcmV2aWV3Q29sb3JFbGVtZW50WzBdLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFwiLmZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHRcdCkgYXMgSFRNTEVsZW1lbnRcclxuXHRcdFx0KS5zdHlsZS5jb2xvciA9IHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb250Q29sb3I7XHJcblx0XHRcdChcclxuXHRcdFx0XHRQcmV2aWV3Q29sb3JFbGVtZW50WzBdLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFwiLmZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHRcdCkgYXMgSFRNTEVsZW1lbnRcclxuXHRcdFx0KS5zdHlsZVtcImJhY2tncm91bmQtY29sb3JcIl0gPVxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5iYWNrZ3JvdW5kQ29sb3I7XHJcblx0XHRcdChcclxuXHRcdFx0XHRjb2xvclBpY2tlckZvbnRFbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHQpIGFzIEhUTUxFbGVtZW50XHJcblx0XHRcdCkuc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPSB0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9udENvbG9yO1xyXG5cdFx0XHQoXHJcblx0XHRcdFx0Y29sb3JQaWNrZXJFbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHQpIGFzIEhUTUxFbGVtZW50XHJcblx0XHRcdCkuc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPVxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5iYWNrZ3JvdW5kQ29sb3I7XHJcblxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0Y29sb3JwaWNrZXJCdXJkZW5FbGVtZW50WzBdICYmXHJcblx0XHRcdFx0Y29sb3JwaWNrZXJGb250QnVyZGVuRWxlbWVudFswXSAmJlxyXG5cdFx0XHRcdHByZXZpZXdDb2xvckJ1cmRlbkVsZW1lbnRbMF1cclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0YWRkQ2xhc3MoXHJcblx0XHRcdFx0XHRbXHJcblx0XHRcdFx0XHRcdGNvbG9ycGlja2VyRm9udEJ1cmRlbkVsZW1lbnRbMF0uZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XHRcIi5lLXNlbGVjdGVkLWNvbG9yXCJcclxuXHRcdFx0XHRcdFx0KSxcclxuXHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0XHRcImZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0YWRkQ2xhc3MoXHJcblx0XHRcdFx0XHRbXHJcblx0XHRcdFx0XHRcdGNvbG9ycGlja2VyQnVyZGVuRWxlbWVudFswXS5lbGVtZW50Lm5leHRFbGVtZW50U2libGluZy5xdWVyeVNlbGVjdG9yKFxyXG5cdFx0XHRcdFx0XHRcdFwiLmUtc2VsZWN0ZWQtY29sb3JcIlxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0XSxcclxuXHRcdFx0XHRcdFwiZm9ybWF0LWdyb3Vwc1wiXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRhZGRDbGFzcyhcclxuXHRcdFx0XHRcdFtcclxuXHRcdFx0XHRcdFx0cHJldmlld0NvbG9yQnVyZGVuRWxlbWVudFswXS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFx0XCIucHJldmlld1wiXHJcblx0XHRcdFx0XHRcdCksXHJcblx0XHRcdFx0XHRdLFxyXG5cdFx0XHRcdFx0XCJmb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHQoXHJcblx0XHRcdFx0XHRwcmV2aWV3Q29sb3JCdXJkZW5FbGVtZW50WzBdLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XCIuZm9ybWF0LWdyb3Vwc1wiXHJcblx0XHRcdFx0XHQpIGFzIEhUTUxFbGVtZW50XHJcblx0XHRcdFx0KS5zdHlsZS5jb2xvciA9IHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5uZWdhRm9udENvbG9yO1xyXG5cdFx0XHRcdChcclxuXHRcdFx0XHRcdHByZXZpZXdDb2xvckJ1cmRlbkVsZW1lbnRbMF0ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG5cdFx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHRcdCkgYXMgSFRNTEVsZW1lbnRcclxuXHRcdFx0XHQpLnN0eWxlW1wiYmFja2dyb3VuZC1jb2xvclwiXSA9XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8ubmVnYUJhY2tncm91bmRDb2xvcjtcclxuXHRcdFx0XHQoXHJcblx0XHRcdFx0XHRjb2xvcnBpY2tlckZvbnRCdXJkZW5FbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFwiLmZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHRcdFx0KSBhcyBIVE1MRWxlbWVudFxyXG5cdFx0XHRcdCkuc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPVxyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLm5lZ2FGb250Q29sb3I7XHJcblx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0Y29sb3JwaWNrZXJCdXJkZW5FbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFwiLmZvcm1hdC1ncm91cHNcIlxyXG5cdFx0XHRcdFx0KSBhcyBIVE1MRWxlbWVudFxyXG5cdFx0XHRcdCkuc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPVxyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLm5lZ2FCYWNrZ3JvdW5kQ29sb3I7XHJcblx0XHRcdH1cclxuXHRcdH0sIDQwMCk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgY29sb3JPbkNoYW5nZShhcmdzOiBDb2xvclBpY2tlckV2ZW50QXJncywgdHlwZT8pOiB2b2lkIHtcclxuXHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb250U2V0dGluZ0NoZWNrZWQgPSB0cnVlO1xyXG5cdFx0bGV0IGNvbG9yUGlja2VyRm9udEVsZW1lbnQgPSB0aGlzLmNvbG9yUGlja2VyRm9udFtcIl9yZXN1bHRzXCJdO1xyXG5cdFx0bGV0IGNvbG9yUGlja2VyRWxlbWVudCA9IHRoaXMuY29sb3JQaWNrZXJbXCJfcmVzdWx0c1wiXTtcclxuXHRcdGxldCBQcmV2aWV3Q29sb3JFbGVtZW50ID0gdGhpcy5QcmV2aWV3Q29sb3JbXCJfcmVzdWx0c1wiXTtcclxuXHRcdGxldCBjb2xvcnBpY2tlckJ1cmRlbkVsZW1lbnQgPSB0aGlzLmNvbG9ycGlja2VyQnVyZGVuW1wiX3Jlc3VsdHNcIl07XHJcblx0XHRsZXQgY29sb3JwaWNrZXJGb250QnVyZGVuRWxlbWVudCA9XHJcblx0XHRcdHRoaXMuY29sb3JwaWNrZXJGb250QnVyZGVuW1wiX3Jlc3VsdHNcIl07XHJcblx0XHRsZXQgcHJldmlld0NvbG9yQnVyZGVuRWxlbWVudCA9IHRoaXMucHJldmlld0NvbG9yQnVyZGVuW1wiX3Jlc3VsdHNcIl07XHJcblx0XHRpZiAodHlwZSkge1xyXG5cdFx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0XHRjYXNlIFwiZm9udFwiOlxyXG5cdFx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0XHRjb2xvclBpY2tlckZvbnRFbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFx0XCIuZm9ybWF0LWdyb3Vwc1wiXHJcblx0XHRcdFx0XHRcdCkgYXMgSFRNTEVsZW1lbnRcclxuXHRcdFx0XHRcdCkuc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPSBhcmdzLmN1cnJlbnRWYWx1ZS5yZ2JhO1xyXG5cdFx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0XHRQcmV2aWV3Q29sb3JFbGVtZW50WzBdLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHRcdFx0KSBhcyBIVE1MRWxlbWVudFxyXG5cdFx0XHRcdFx0KS5zdHlsZS5jb2xvciA9IGFyZ3MuY3VycmVudFZhbHVlLnJnYmE7XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9udENvbG9yID1cclxuXHRcdFx0XHRcdFx0YXJncy5jdXJyZW50VmFsdWUucmdiYTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJuZ2VhRm9udFwiOlxyXG5cdFx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0XHRjb2xvcnBpY2tlckZvbnRCdXJkZW5FbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFx0XCIuZm9ybWF0LWdyb3Vwc1wiXHJcblx0XHRcdFx0XHRcdCkgYXMgSFRNTEVsZW1lbnRcclxuXHRcdFx0XHRcdCkuc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPSBhcmdzLmN1cnJlbnRWYWx1ZS5yZ2JhO1xyXG5cdFx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0XHRwcmV2aWV3Q29sb3JCdXJkZW5FbGVtZW50WzBdLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHRcdFx0KSBhcyBIVE1MRWxlbWVudFxyXG5cdFx0XHRcdFx0KS5zdHlsZS5jb2xvciA9IGFyZ3MuY3VycmVudFZhbHVlLnJnYmE7XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8ubmVnYUZvbnRDb2xvciA9XHJcblx0XHRcdFx0XHRcdGFyZ3MuY3VycmVudFZhbHVlLnJnYmE7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwibmdlYUJnQ29sb3JcIjpcclxuXHRcdFx0XHRcdChcclxuXHRcdFx0XHRcdFx0Y29sb3JwaWNrZXJCdXJkZW5FbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcdFx0XCIuZm9ybWF0LWdyb3Vwc1wiXHJcblx0XHRcdFx0XHRcdCkgYXMgSFRNTEVsZW1lbnRcclxuXHRcdFx0XHRcdCkuc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPSBhcmdzLmN1cnJlbnRWYWx1ZS5yZ2JhO1xyXG5cdFx0XHRcdFx0KFxyXG5cdFx0XHRcdFx0XHRwcmV2aWV3Q29sb3JCdXJkZW5FbGVtZW50WzBdLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHRcdFx0KSBhcyBIVE1MRWxlbWVudFxyXG5cdFx0XHRcdFx0KS5zdHlsZVtcImJhY2tncm91bmQtY29sb3JcIl0gPSBhcmdzLmN1cnJlbnRWYWx1ZS5yZ2JhO1xyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLm5lZ2FCYWNrZ3JvdW5kQ29sb3IgPVxyXG5cdFx0XHRcdFx0XHRhcmdzLmN1cnJlbnRWYWx1ZS5yZ2JhO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQoXHJcblx0XHRcdFx0Y29sb3JQaWNrZXJFbGVtZW50WzBdLmVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHQpIGFzIEhUTUxFbGVtZW50XHJcblx0XHRcdCkuc3R5bGUuYm9yZGVyQm90dG9tQ29sb3IgPSBhcmdzLmN1cnJlbnRWYWx1ZS5yZ2JhO1xyXG5cdFx0XHQoXHJcblx0XHRcdFx0UHJldmlld0NvbG9yRWxlbWVudFswXS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcblx0XHRcdFx0XHRcIi5mb3JtYXQtZ3JvdXBzXCJcclxuXHRcdFx0XHQpIGFzIEhUTUxFbGVtZW50XHJcblx0XHRcdCkuc3R5bGVbXCJiYWNrZ3JvdW5kLWNvbG9yXCJdID0gYXJncy5jdXJyZW50VmFsdWUucmdiYTtcclxuXHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmJhY2tncm91bmRDb2xvciA9XHJcblx0XHRcdFx0YXJncy5jdXJyZW50VmFsdWUucmdiYTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHB1YmxpYyBjaGFuZ2VIaWRlU3RhdHVzKGNvZGUpIHtcclxuXHRcdHRoaXMuY3VycmVudEZpZWxkW2NvZGVdID0gIXRoaXMuY3VycmVudEZpZWxkW2NvZGVdO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHNhdmVGb3JtYXQoKSB7XHJcblx0XHR0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZm9yRWFjaCgoY29sKSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRjb2wuY29sTmFtZSA9PT0gdGhpcy5jdXJyZW50RmllbGQuY29sTmFtZSAmJlxyXG5cdFx0XHRcdCF0aGlzLmNvbmZpZy5maWVsZHMuZmluZChcclxuXHRcdFx0XHRcdChpdGVtKSA9PiBpdGVtLmNvbE5hbWUgPT09IHRoaXMuY3VycmVudEZpZWxkLmNvbE5hbWVcclxuXHRcdFx0XHQpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdHRoaXMuY29uZmlnLmZpZWxkcy5wdXNoKHtcclxuXHRcdFx0XHRcdGNvbE5hbWU6IHRoaXMuY3VycmVudEZpZWxkLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTogXCJudW1iZXJcIixcclxuXHRcdFx0XHRcdGRpc3BsYXlOYW1lOiB0aGlzLmN1cnJlbnRGaWVsZC5sYW5nVmFsdWUsXHJcblx0XHRcdFx0XHRkcDogMixcclxuXHRcdFx0XHRcdGZvcm1hdDogW10sXHJcblx0XHRcdFx0XHRmb3JtdWxhOiBudWxsLFxyXG5cdFx0XHRcdFx0aXNDYWxjdWxhdGVkRmllbGQ6IHRydWUsXHJcblx0XHRcdFx0XHRpc0dyb3VwOiBmYWxzZSxcclxuXHRcdFx0XHRcdGlzSGlkZGVuOiBmYWxzZSxcclxuXHRcdFx0XHRcdGlzVmFsdWU6IHRydWUsXHJcblx0XHRcdFx0XHRsYW5nQ29kZTogdGhpcy5jdXJyZW50RmllbGQuY29sTmFtZSxcclxuXHRcdFx0XHRcdGxhbmdWYWx1ZTogdGhpcy5jdXJyZW50RmllbGQuY29sTmFtZSxcclxuXHRcdFx0XHRcdHNlcTogdGhpcy5jb25maWcuZmllbGRzLmxlbmd0aCArIDEsXHJcblx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRoaXMuY3VycmVudEZpZWxkLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRoaXMuY3VycmVudEZpZWxkLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRzb3J0Q29sdW1uOiBudWxsLFxyXG5cdFx0XHRcdFx0dmlzaWJsZTogdHJ1ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmNvbmZpZy5maWVsZHMpIHtcclxuXHRcdFx0aWYgKHRoaXMuY3VycmVudEZpZWxkLmNvbE5hbWUgPT09IGZpZWxkLmNvbE5hbWUpIHtcclxuXHRcdFx0XHRmaWVsZC5zaG93R3JhbmRUb3RhbHMgPSB0aGlzLmN1cnJlbnRGaWVsZC5zaG93R3JhbmRUb3RhbHM7XHJcblx0XHRcdFx0ZmllbGQuc2hvd1N1YlRvdGFscyA9IHRoaXMuY3VycmVudEZpZWxkLnNob3dTdWJUb3RhbHM7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdENoZWNrZWQgfHxcclxuXHRcdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5mb250U2V0dGluZ0NoZWNrZWRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGZpZWxkLmZvcm1hdCA9IFtdO1xyXG5cdFx0XHRcdFx0ZmllbGQuZGlzcGxheU5hbWUgPSB0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZGlzcGxheU5hbWU7XHJcblx0XHRcdFx0XHRmaWVsZC5mb3JtYXQucHVzaCh0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8pO1xyXG5cdFx0XHRcdH0gZWxzZSBkZWxldGUgZmllbGQuZm9ybWF0O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Zm9yIChjb25zdCBzZXJpZXMgb2YgdGhpcy5jb25maWcueWF4aXMuc2VyaWVzKSB7XHJcblx0XHRcdGlmICh0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8uc2VsZWN0ZWRGaWVsZCA9PT0gc2VyaWVzLmNvbE5hbWUpIHtcclxuXHRcdFx0XHRzZXJpZXMuc2hvd1N1YlRvdGFscyA9IHRoaXMuY3VycmVudEZpZWxkLnNob3dTdWJUb3RhbHM7XHJcblx0XHRcdFx0c2VyaWVzLnNob3dHcmFuZFRvdGFscyA9IHRoaXMuY3VycmVudEZpZWxkLnNob3dHcmFuZFRvdGFscztcclxuXHRcdFx0XHRsZXQgZmllbGRzID0gdGhpcy5jb25maWcuZmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT0gdGhpcy5jdXJyZW50RmllbGRGb3JtYXRJbmZvLnNlbGVjdGVkRmllbGRcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGlmIChmaWVsZHMgJiYgZmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRmaWVsZHNbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdGZpZWxkc1swXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdGZpZWxkc1swXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRzZXJpZXMudGl0bGUgPVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5kaXNwbGF5TmFtZSB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkc1swXS5sYW5nVmFsdWUucmVwbGFjZShcIkNhbGN1bGF0ZVwiLCBcIlwiKS50cmltKCk7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChzZXJpZXMuY2FsTWV0aG9kICE9PSBcIkNhbGN1bGF0ZWRGaWVsZFwiKVxyXG5cdFx0XHRcdFx0c2VyaWVzLnRpdGxlID0gc2VyaWVzLmNvbE5hbWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHRoaXMuZGF0YS5wb3J0bGV0RGF0YS5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcblx0XHRjb25zdCBpbmRleCA9IHRoaXMuZGF0YS5wb3J0bGV0cy5maW5kSW5kZXgoXHJcblx0XHRcdCh4KSA9PiB4Lm5ld0lkID09PSB0aGlzLmRhdGEucG9ydGxldERhdGEubmV3SWRcclxuXHRcdCk7XHJcblx0XHRpZiAoaW5kZXggPiAtMSlcclxuXHRcdFx0dGhpcy5kYXRhLnBvcnRsZXRzW2luZGV4XS5jb25maWcgPSB0aGlzLmRhdGEucG9ydGxldERhdGEuY29uZmlnO1xyXG5cdFx0dGhpcy5EYXNoYm9hcmRTZXJ2aWNlLnRhYmxlRm9ybWF0Lm5leHQodGhpcy5kYXRhLnBvcnRsZXREYXRhLm5ld0lkKTtcclxuXHRcdHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgY2xvc2UoKSB7XHJcblx0XHR0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGNsZWFyRm9ybWF0X0FsbCgpIHtcclxuXHRcdGNvbnN0IF90aXRsZSA9XHJcblx0XHRcdHRoaXMudHJhbnNsYXRpb25cclxuXHRcdFx0XHQuQVJFX1lPVV9TVVJFX1RPX0NMRUFSX0FMTF9USEVfRk9STUFUVElOR19BTkRfU1VCX1RPVEFMU19UT19ERUZBVUxUX1NFVFRJTkdTIHx8XHJcblx0XHRcdFwiQXJlIHlvdSBzdXJlIHRvIGNsZWFyIGFsbCB0aGUgZm9ybWF0dGluZyBhbmQgdG90YWxzIHRvIGRlZmF1bHQgc2V0dGluZ3M/XCI7XHJcblx0XHRjb25zdCBfbm8gPSB0aGlzLnRyYW5zbGF0aW9uLk5PX1BMRUFTRV9HT19CQUNLIHx8IFwiTm8sIHBsZWFzZSBnbyBiYWNrXCI7XHJcblx0XHRjb25zdCBfeWVzID0gdGhpcy50cmFuc2xhdGlvbi5ZRVNfQ0xFQVJfVEhFTSB8fCBcIlllcywgY2xlYXIgdGhlbVwiO1xyXG5cdFx0Ly8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5sYXlvdXRVdGlsc1NlcnZpY2UuYWxlcnRFbGVtZW50KFxyXG5cdFx0Ly8gXHR0aGlzLnRyYW5zbGF0aW9uLldBUk5JTkcgfHwgXCIuV0FSTklOR1wiLFxyXG5cdFx0Ly8gXHRfdGl0bGUsXHJcblx0XHQvLyBcdF9ubyxcclxuXHRcdC8vIFx0X3llcyxcclxuXHRcdC8vIFx0dHJ1ZSxcclxuXHRcdC8vIFx0dHJ1ZSxcclxuXHRcdC8vIFx0XCI0NTBweFwiLFxyXG5cdFx0Ly8gXHRcIjMyMHB4XCJcclxuXHRcdC8vICk7XHJcblx0XHRjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0NvbW1vbkRpbGFvZyh7XHJcblx0XHRcdHRpdGxlOiB0aGlzLnRyYW5zbGF0aW9uLldBUk5JTkcgfHwgXCIuV0FSTklOR1wiLFxyXG5cdFx0XHRkZXNjcmlwdGlvbjogX3RpdGxlLFxyXG5cdFx0XHRzYXZlQnRuTGFiZWw6IF95ZXMsXHJcblx0XHRcdGNhbmNlbEJ0bkxhYmVsOiBfbm8sXHJcblx0XHR9KTtcclxuXHRcdGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdGlmIChyZXMgPT09IFwic2F2ZVwiKSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuZmllbGRzLm1hcCgoZWwpID0+IHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBlbC5mb3JtYXQ7XHJcblx0XHRcdFx0XHRkZWxldGUgZWwuc2hvd1N1YlRvdGFscztcclxuXHRcdFx0XHRcdGRlbGV0ZSBlbC5zaG93R3JhbmRUb3RhbHM7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Ly9TTVAyLTMwMTBcclxuXHRcdFx0XHQvL3Bpdm90XHJcblx0XHRcdFx0aWYgKHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcInBpdm90XCIpIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5jb25maWcueWF4aXMuc2VyaWVzLm1hcCgoZWwpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRkZWxldGUgZWwuc2hvd1N1YlRvdGFscztcclxuXHRcdFx0XHRcdFx0XHRkZWxldGUgZWwuc2hvd0dyYW5kVG90YWxzO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5kYXRhLnBvcnRsZXREYXRhLmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdFx0XHRjb25zdCBpbmRleCA9IHRoaXMuZGF0YS5wb3J0bGV0cy5maW5kSW5kZXgoXHJcblx0XHRcdFx0XHQoeCkgPT4geC5uZXdJZCA9PT0gdGhpcy5kYXRhLnBvcnRsZXREYXRhLm5ld0lkXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoaW5kZXggPiAtMSlcclxuXHRcdFx0XHRcdHRoaXMuZGF0YS5wb3J0bGV0c1tpbmRleF0uY29uZmlnID0gdGhpcy5kYXRhLnBvcnRsZXREYXRhLmNvbmZpZztcclxuXHRcdFx0XHR0aGlzLkRhc2hib2FyZFNlcnZpY2UudGFibGVGb3JtYXQubmV4dCh0aGlzLmRhdGEucG9ydGxldERhdGEubmV3SWQpO1xyXG5cdFx0XHRcdHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGNsZWFyRm9ybWF0X0N1cnJlbnQoKSB7XHJcblx0XHR0aGlzLmN1cnJlbnRGaWVsZEZvcm1hdEluZm8gPSB0aGlzLnNldEZvcm1hdEdyb3VwRGVmYXVsdERhdGEoKTtcclxuXHRcdHRoaXMuY3VycmVudEZpZWxkLnNob3dTdWJUb3RhbHMgPSB0cnVlO1xyXG5cdFx0dGhpcy5jdXJyZW50RmllbGQuc2hvd0dyYW5kVG90YWxzID0gdHJ1ZTtcclxuXHRcdGlmIChcclxuXHRcdFx0IVtcInN0cmluZ1wiLCBcIm52YXJjaGFyXCIsIFwiZGF0ZVwiLCBcImRhdGV0aW1lXCJdLmluY2x1ZGVzKFxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkRm9ybWF0SW5mby5kYXRhVHlwZVxyXG5cdFx0XHQpXHJcblx0XHQpXHJcblx0XHRcdHRoaXMuYWRkQ29sb3JQaWNrZXJTdHlsZSgpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGRpc2FibGVkR3JhbmRUb3RhbCgpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5jb25maWcucG9ydGxldFR5cGUgIT09IFwicGl2b3RcIiAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSAhPT0gXCJ0YWJsZVwiXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRpZiAodGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwidGFibGVcIikge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdHRoaXMuY3VycmVudEZpZWxkLmRhdGFUeXBlICE9PSBcInN0cmluZ1wiICYmXHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZC5kYXRhVHlwZSAhPT0gXCJkYXRldGltZVwiICYmXHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRGaWVsZC5kYXRhVHlwZSAhPT0gXCJkYXRlXCJcclxuXHRcdFx0XHQpXHJcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdFx0ZWxzZSByZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRpZiAodGhpcy5jdXJyZW50RmllbGQuaXNWYWx1ZSkgcmV0dXJuIGZhbHNlO1xyXG5cdFx0XHRcdGVsc2UgcmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0QWxpZ25MaXN0KCkge1xyXG5cdFx0cmV0dXJuIFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdG5hbWU6IFwiZm9ybWF0X2FsaWduX2xlZnRcIixcclxuXHRcdFx0XHRjb2RlOiBcIkxlZnRcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdG5hbWU6IFwiZm9ybWF0X2FsaWduX2NlbnRlclwiLFxyXG5cdFx0XHRcdGNvZGU6IFwiQ2VudGVyXCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHRuYW1lOiBcImZvcm1hdF9hbGlnbl9yaWdodFwiLFxyXG5cdFx0XHRcdGNvZGU6IFwiUmlnaHRcIixcclxuXHRcdFx0fSxcclxuXHRcdF07XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldEZvbnRTaXplTGlzdCgpIHtcclxuXHRcdHJldHVybiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIxMnB4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIxM3B4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIxNHB4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIxNXB4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIxNnB4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIxN3B4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIxOHB4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIxOXB4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCIyMHB4XCIsXHJcblx0XHRcdH0sXHJcblx0XHRdO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZXRDb21wYXJlTGlzdCgpIHtcclxuXHRcdHJldHVybiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogdGhpcy50cmFuc2xhdGlvbi5MRVNTX1RIQU4gfHwgXCJMZXNzIFRoYW5cIixcclxuXHRcdFx0XHRjb2RlOiBcIkxlc3NUaGFuXCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTpcclxuXHRcdFx0XHRcdHRoaXMudHJhbnNsYXRpb24uTEVTU19USEFOX09SX0VRVUFMX1RPIHx8XHJcblx0XHRcdFx0XHRcIkxlc3MgVGhhbiBPciBFcXVhbCBUb1wiLFxyXG5cdFx0XHRcdGNvZGU6IFwiTGVzc1RoYW5PckVxdWFsVG9cIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHZhbHVlOiB0aGlzLnRyYW5zbGF0aW9uLkdSRUFURVJfVEhBTiB8fCBcIkdyZWF0ZXIgVGhhblwiLFxyXG5cdFx0XHRcdGNvZGU6IFwiR3JlYXRlclRoYW5cIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHZhbHVlOlxyXG5cdFx0XHRcdFx0dGhpcy50cmFuc2xhdGlvbi5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE8gfHxcclxuXHRcdFx0XHRcdFwiR3JlYXRlciBUaGFuIE9yIEVxdWFsIFRvXCIsXHJcblx0XHRcdFx0Y29kZTogXCJHcmVhdGVyVGhhbk9yRXF1YWxUb1wiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0dmFsdWU6IHRoaXMudHJhbnNsYXRpb24uRVFVQUxTIHx8IFwiRXF1YWxzXCIsXHJcblx0XHRcdFx0Y29kZTogXCJFcXVhbHNcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHZhbHVlOiB0aGlzLnRyYW5zbGF0aW9uLk5PVF9FUVVBTFMgfHwgXCJOb3QgRXF1YWxzXCIsXHJcblx0XHRcdFx0Y29kZTogXCJOb3RFcXVhbHNcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHZhbHVlOiB0aGlzLnRyYW5zbGF0aW9uLkJFVFdFRU4gfHwgXCJCZXR3ZWVuXCIsXHJcblx0XHRcdFx0Y29kZTogXCJCZXR3ZWVuXCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogdGhpcy50cmFuc2xhdGlvbi5OT1RfQkVUV0VFTiB8fCBcIk5vdCBCZXR3ZWVuXCIsXHJcblx0XHRcdFx0Y29kZTogXCJOb3RCZXR3ZWVuXCIsXHJcblx0XHRcdH0sXHJcblx0XHRdO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZXRTdHJpbmdBbmREYXRlQ29tcGFyZUxpc3QoKSB7XHJcblx0XHRyZXR1cm4gW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dmFsdWU6IFwiRXF1YWxzXCIsXHJcblx0XHRcdFx0Y29kZTogXCJFcXVhbHNcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHZhbHVlOiBcIk5vdCBFcXVhbHNcIixcclxuXHRcdFx0XHRjb2RlOiBcIk5vdEVxdWFsc1wiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0Rm9udEZhbWlseUxpc3QoKSB7XHJcblx0XHRyZXR1cm4gW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dmFsdWU6IFwiQXJpYWxcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHZhbHVlOiBcIlNhbiBTZXJpZlwiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0dmFsdWU6IFwiSW1wYWN0XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCJUcmVidWNoZXQgTVNcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHZhbHVlOiBcIlNlcmlmXCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCJWZXJkYW5hXCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCJDb3VyaWVyIE5ld1wiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0dmFsdWU6IFwiVGltZXMgTmV3IFJvbWFuXCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR2YWx1ZTogXCJUYWhvbWFcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHZhbHVlOiBcIkdlcm9naWFcIixcclxuXHRcdFx0fSxcclxuXHRcdF07XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldEZvcm1hdEdyb3VwRGVmYXVsdERhdGEoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRzZWxlY3RlZEZpZWxkOiB0aGlzLmN1cnJlbnRGaWVsZC5jb2xOYW1lLFxyXG5cdFx0XHRkYXRhVHlwZTogdGhpcy5jdXJyZW50RmllbGQuZGF0YVR5cGUsXHJcblx0XHRcdGNvbXBhcmVTZWxlY3Q6IFwiXCIsXHJcblx0XHRcdGNvbXBhcmVWYWx1ZTE6IG51bGwsXHJcblx0XHRcdGNvbXBhcmVWYWx1ZTI6IG51bGwsXHJcblx0XHRcdGFsaWduOiBcIlwiLFxyXG5cdFx0XHRzZWxlY3RlZEZvcm1hdDogXCJcIixcclxuXHRcdFx0c2VsZWN0ZWRGb3JtYXREaXNwbGF5OiBcIlwiLFxyXG5cdFx0XHRmb250RmFtaWx5VmFsdWU6IFwiU2FuIFNlcmlmXCIsXHJcblx0XHRcdG5lZ2FGb250RmFtaWx5VmFsdWU6IFwiU2FuIFNlcmlmXCIsXHJcblx0XHRcdG5lZ2FGb250U2l6ZVZhbHVlOiBcIjEycHhcIixcclxuXHRcdFx0bmVnYUZvbnRDb2xvcjogXCIjNDk1MDU3XCIsXHJcblx0XHRcdG5lZ2FCYWNrZ3JvdW5kQ29sb3I6IFwiI0Y4RTcxQ1wiLFxyXG5cdFx0XHRmb250U2l6ZVZhbHVlOiBcIjEycHhcIixcclxuXHRcdFx0Zm9udENvbG9yOiBcIiM0OTUwNTdcIixcclxuXHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIiNGOEU3MUNcIixcclxuXHRcdFx0ZGlzcGxheU5hbWU6IFwiXCIsXHJcblx0XHRcdGZvcm1hdExpc3Q6IFtdLFxyXG5cdFx0XHRmb250U2V0dGluZ0NoZWNrZWQ6IGZhbHNlLFxyXG5cdFx0XHRmb3JtYXRDaGVja2VkOiBmYWxzZSxcclxuXHRcdFx0ZGF0ZVR5cGU6IFwiXCIsXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZXRRdWFydGVyRm9ybWF0KCkge1xyXG5cdFx0cmV0dXJuIFtcclxuXHRcdFx0eyBrZXk6IFwiMDMvMjAyMVwiLCB2YWw6IDEsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiMDMvMjFcIiwgdmFsOiAyLCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0XHRcdHsga2V5OiBcIjMvMjAyMVwiLCB2YWw6IDMsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiMy8yMVwiLCB2YWw6IDQsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiTWFyY2ggMjAyMVwiLCB2YWw6IDUsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiTWFyLCAyMDIxXCIsIHZhbDogNiwgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdFx0XHR7IGtleTogXCJNYXJjaCwgMjAyMVwiLCB2YWw6IDcsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiUTEgMjAyMVwiLCB2YWw6IDgsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiUTEgMjFcIiwgdmFsOiA5LCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0XHRcdHsga2V5OiBcIjIwMjEgUTFcIiwgdmFsOiAxMCwgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdFx0XHR7IGtleTogXCIyMSBRMVwiLCB2YWw6IDExLCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0XHRcdHsga2V5OiBcIjIwMjFcIiwgdmFsOiAxMiwgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdFx0XTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0RGF0ZUZvcm1hdCgpIHtcclxuXHRcdHJldHVybiBbXHJcblx0XHRcdHsga2V5OiBcIjE0LzAzLzIwMjEgKEREL01NL1lZWVkpXCIsIHZhbDogMSwgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdFx0XHR7IGtleTogXCIxNC8wMy8yMSAoREQvTU0vWVkpXCIsIHZhbDogMiwgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdFx0XHR7IGtleTogXCIwMy8xNC8yMDIxIChNTS9ERC9ZWVlZKVwiLCB2YWw6IDMsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiMDMvMTQvMjEgKE1NL0REL1lZKVwiLCB2YWw6IDQsIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiMjAyMS0wMy0xNCAoWVlZWS1NTS1ERClcIiwgdmFsOiA1LCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0XHRcdHsga2V5OiBcIjIxLTAzLTE0IChZWS1NTS1ERClcIiwgdmFsOiA2LCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0XHRcdHsga2V5OiBcIjE0LTAzLTIwMjEgKERELU1NLVlZWVkpXCIsIHZhbDogNywgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdFx0XHR7IGtleTogXCIxNC0wMy0yMSAoREQtTU0tWVkpXCIsIHZhbDogOCwgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdFx0XHR7IGtleTogXCIwMy0xNC0yMDIxIChNTS1ERC1ZWVlZKVwiLCB2YWw6IDksIGlzQ2hlY2tlZDogZmFsc2UgfSxcclxuXHRcdFx0eyBrZXk6IFwiMDMtMTQtMjEgKE1NLURELVlZKVwiLCB2YWw6IDEwLCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0XHRcdHsga2V5OiBcIk1hciAxNCwgMjAyMSAoTU1NIERELCBZWVlZKVwiLCB2YWw6IDExLCBpc0NoZWNrZWQ6IGZhbHNlIH0sXHJcblx0XHRcdHsga2V5OiBcIjE0LU1hci0yMDIxIChERC1NTU0tWVlZWSlcIiwgdmFsOiAxMiwgaXNDaGVja2VkOiBmYWxzZSB9LFxyXG5cdFx0XTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lciBkYXNoYm9hcmQtZm9ybWF0LWNvbnRhaW5lclwiPlxyXG5cdDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuXHRcdDxtYXQtaWNvblxyXG5cdFx0XHRjbGFzcz1cImljb24tcHJldmlvdXNcIlxyXG5cdFx0XHQqbmdJZj1cIiFDb25kaXRpb25hbFwiXHJcblx0XHRcdChjbGljayk9XCJDb25kaXRpb25hbCA9IHRydWVcIlxyXG5cdFx0PlxyXG5cdFx0XHRrZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvblxyXG5cdFx0PlxyXG5cdFx0PHAgY2xhc3M9XCJmb3JtYXQtdGl0bGVcIj5cclxuXHRcdFx0e3tcclxuXHRcdFx0XHRDb25kaXRpb25hbFxyXG5cdFx0XHRcdFx0PyB0cmFuc2xhdGlvbi5DT05ESVRJT05BTF9TRVRUSU5HIHx8IFwiQ29uZGl0aW9uYWwgU2V0dGluZ1wiXHJcblx0XHRcdFx0XHQ6IHRyYW5zbGF0aW9uLkZPUk1BVFRJTkdfQU5EX0hJREVfU1VCVE9UQUwgfHxcclxuXHRcdFx0XHRcdCAgXCJGb3JtYXR0aW5nIGFuZCBoaWRlIHN1YiB0b3RhbFwiXHJcblx0XHRcdH19XHJcblx0XHQ8L3A+XHJcblx0XHQ8bWF0LWljb24gY2xhc3M9XCJjbG9zZVwiIChjbGljayk9XCJjbG9zZSgpXCI+Y2xvc2U8L21hdC1pY29uPlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XHJcblx0XHQ8IS0tQ29uZGl0aW9uYWwgU2V0dGluZyBzdGFydCAgICDnrKzkuIDpobXvvJpmaWVsZCBsaXN0LS0+XHJcblx0XHQ8ZGl2ICpuZ0lmPVwiQ29uZGl0aW9uYWxcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5vdGljZVwiPlxyXG5cdFx0XHRcdHt7XHJcblx0XHRcdFx0XHR0cmFuc2xhdGlvbi5DT05ESVRJT05BTF9TRVRUSU5HX1RJUFMgfHxcclxuXHRcdFx0XHRcdFx0XCJUaGUgZmllbGRzIHlvdSBoYXZlIHNlbGVjdGVkIGFyZSBzaG93biBiZWxvdywgeW91IGNhbiBhcHBseSBmb3JtYXR0aW5nLHN1YiB0b3RhbHMgb3IgZ3JhbmQgdG90YWxzLiBTdWIgdG90YWxzIGFyZSBvbmx5IGF2YWlsYWJsZSBmb3IgcGl2b3QgdGFibGVzLlwiXHJcblx0XHRcdFx0fX1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJhbGwtZmllbGRzXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImZpZWxkcy1ncm91cFwiICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHNsaXN0XCI+XHJcblx0XHRcdFx0XHQ8cCBjbGFzcz1cImZsXCI+e3sgZmllbGQubGFuZ1ZhbHVlIH19PC9wPlxyXG5cdFx0XHRcdFx0PGltZ1xyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImZyXCJcclxuXHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwie1xyXG5cdFx0XHRcdFx0XHRcdG9wYWNpdHk6IGZpZWxkLnNob3dHcmFuZFRvdGFsc1xyXG5cdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0c3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltZy9kYXNoYm9hcmRfaWNvbi9nYWRnZXQtYmFzaWMtdG90YWx7e1xyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLnNob3dHcmFuZFRvdGFscyA/ICcnIDogJy0xJ1xyXG5cdFx0XHRcdFx0XHR9fS5zdmdcIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwib3BlbkZvcm1hdChmaWVsZClcIlxyXG5cdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdDxpbWdcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJmciBmb3JtYXQtaWNvblwiXHJcblx0XHRcdFx0XHRcdHNyYz1cIi4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWcvZGFzaGJvYXJkX2ljb24vZ2FkZ2V0LXN1Yi10b3RhbHt7XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuc2hvd1N1YlRvdGFscyA/ICctMCcgOiAnLTEnXHJcblx0XHRcdFx0XHRcdH19LnN2Z1wiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJvcGVuRm9ybWF0KGZpZWxkKVwiXHJcblx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0PGltZ1xyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImZyIGZvcm1hdC1pY29uXCJcclxuXHRcdFx0XHRcdFx0c3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltZy9kYXNoYm9hcmRfaWNvbi9nYWRnZXQtZm9ybWF0e3tcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXQgJiYgZmllbGQuZm9ybWF0Lmxlbmd0aCA/ICctMScgOiAnLTAnXHJcblx0XHRcdFx0XHRcdH19LnN2Z1wiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJvcGVuRm9ybWF0KGZpZWxkKVwiXHJcblx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PCEtLUNvbmRpdGlvbmFsIFNldHRpbmcgZW5kICAgIOesrOS4gOmhte+8mmZpZWxkIGxpc3QtLT5cclxuXHJcblx0XHQ8IS0tRm9ybWF0dGluZyBhbmQgaGlkZSBzdWIgdG90YWwgc3RhcnQgICAg56ys5LqM6aG177yaZm9ybWF0IHNldHRpbmctLT5cclxuXHRcdDxkaXYgKm5nSWY9XCIhQ29uZGl0aW9uYWxcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm1hdC1ncm91cCBmb3JtYXQtZmllbGRcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmllbGQtbmFtZVwiPlxyXG5cdFx0XHRcdFx0PGxhYmVsPnt7IHRyYW5zbGF0aW9uLkZJRUxEIHx8IFwiLkZJRUxEXCIgfX08L2xhYmVsPlxyXG5cdFx0XHRcdFx0PHA+e3sgY3VycmVudEZpZWxkPy5sYW5nVmFsdWUgfX08L3A+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybWF0LWNoZWNrYm94XCI+XHJcblx0XHRcdFx0PG1hdC1jaGVja2JveFxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJleGFtcGxlLW1hcmdpblwiXHJcblx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJjdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdENoZWNrZWRcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdHt7IHRyYW5zbGF0aW9uLkZPUk1BVCB8fCBcIkZvcm1hdFwiIH19PC9tYXQtY2hlY2tib3hcclxuXHRcdFx0XHQ+XHJcblx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0PCEtLSBGb3JtYXQgcGFydCBzdGFydCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm1hdC1ncm91cCBmb3JtYXQtYm94XCI+XHJcblx0XHRcdFx0PCEtLSBjb21wYXJlIOmDqOWIhiBzdGFydCAtLT5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZ3JvdXAtc3R5bGVcIj5cclxuXHRcdFx0XHRcdDxuZy1jb250YWluZXJcclxuXHRcdFx0XHRcdFx0Km5nSWY9XCJcclxuXHRcdFx0XHRcdFx0XHRjdXJyZW50RmllbGQuZGF0YVR5cGUgIT09ICdzdHJpbmcnICYmXHJcblx0XHRcdFx0XHRcdFx0Y3VycmVudEZpZWxkLmRhdGFUeXBlICE9PSAnZGF0ZSdcclxuXHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1hcmdpbmctcmlnaHQtc3R5bGVcIiBzdHlsZT1cIndpZHRoOiA1MCVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bWF0LXNlbGVjdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm1hcmdpbmctdG9wLXN0eWxlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KHNlbGVjdGlvbkNoYW5nZSk9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb24oJGV2ZW50LnZhbHVlLCAnY29tcGFyZScpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudEZpZWxkRm9ybWF0SW5mby5jb21wYXJlU2VsZWN0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtb3B0aW9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nRm9yPVwibGV0IGl0ZW0gb2YgY29tcGFyZUxpc3RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFt2YWx1ZV09XCJpdGVtLmNvZGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0e3sgaXRlbS52YWx1ZSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L21hdC1vcHRpb24+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1zZWxlY3Q+XHJcblx0XHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRbbmdTdHlsZV09XCJ7XHJcblx0XHRcdFx0XHRcdFx0XHR3aWR0aDpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudEZpZWxkRm9ybWF0SW5mby5jb21wYXJlU2VsZWN0ID09PVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdCZXR3ZWVuJyB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50RmllbGRGb3JtYXRJbmZvLmNvbXBhcmVTZWxlY3QgPT09XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0J05vdEJldHdlZW4nXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PyAnMTUlJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJzM2JSdcclxuXHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hcmdpbmctdG9wLXN0eWxlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0bWF0SW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50RmllbGRGb3JtYXRJbmZvLmNvbXBhcmVWYWx1ZTFcclxuXHRcdFx0XHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuXHRcdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHQqbmdJZj1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudEZpZWxkRm9ybWF0SW5mby5jb21wYXJlU2VsZWN0ID09PVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQnQmV0d2VlbicgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRGaWVsZEZvcm1hdEluZm8uY29tcGFyZVNlbGVjdCA9PT1cclxuXHRcdFx0XHRcdFx0XHRcdFx0J05vdEJldHdlZW4nXHJcblx0XHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cIndpZHRoOiAxNSU7IGRpc3BsYXk6IGZsZXhcIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDYwcHg7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCg4cHgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQtXHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkXHJcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm1hcmdpbmctdG9wLXN0eWxlXCJcclxuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPVwibWFyZ2luLWxlZnQ6IDE1cHhcIlxyXG5cdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXRJbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRGaWVsZEZvcm1hdEluZm8uY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJvZmZcIlxyXG5cdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwhLS0gY29tcGFyZSDpg6jliIYgZW5kIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tIEZpZWxkIFRpdGxlICYgYWxpZ24gc3RhcnQgLS0+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImdyb3VwLXN0eWxlIG1hcmdpbmctdG9wLXN0eWxlXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWFyZ2luZy1yaWdodC1zdHlsZVwiIHN0eWxlPVwid2lkdGg6IDQwJVwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXJnaW5nLXRvcC1zdHlsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0bWF0SW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwie3tcclxuXHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNsYXRpb24uRURJVF9GSUVMRF9USVRMRSB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCcuRURJVF9GSUVMRF9USVRMRSdcclxuXHRcdFx0XHRcdFx0XHRcdH19XCJcclxuXHRcdFx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwiY3VycmVudEZpZWxkRm9ybWF0SW5mby5kaXNwbGF5TmFtZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJvZmZcIlxyXG5cdFx0XHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9ybWF0Q2hlY2tlZCA9IHRydWVcclxuXHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBzdHlsZT1cInRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOXB4KVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJib3gtY29udGVudFwiXHJcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCJjb25maWcucG9ydGxldFR5cGUgPT0gJ3RhYmxlJ1wiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29udGVudC10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0e3sgdHJhbnNsYXRpb24uQUxJR05NRU5UIHx8IFwiLkFMSUdOTUVOVFwiIH19XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImljb24tbGlzdFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1pY29uXHJcblx0XHRcdFx0XHRcdFx0XHRcdCpuZ0Zvcj1cImxldCBpdGVtIG9mIGFsaWduTGlzdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cIntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RlZDpcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW0uY29kZSA9PVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudEZpZWxkRm9ybWF0SW5mby5hbGlnblxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImNoYW5nZUFsaWdoKGl0ZW0uY29kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ+e3sgaXRlbS5uYW1lIH19PC9tYXQtaWNvblxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwhLS0gRmllbGQgVGl0bGUgJiBhbGlnbiBlbmQgLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gTnVtYmVyL3BlcmNlbnQgZm9ybWF0IHN0YXJ0IC0tPlxyXG5cdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdGNsYXNzPVwiZ3JvdXAtc3R5bGUgbWFyZ2luZy10b3Atc3R5bGVcIlxyXG5cdFx0XHRcdFx0Km5nSWY9XCJcclxuXHRcdFx0XHRcdFx0Y3VycmVudEZpZWxkLmRhdGFUeXBlICE9PSAnc3RyaW5nJyAmJlxyXG5cdFx0XHRcdFx0XHRjdXJyZW50RmllbGQuZGF0YVR5cGUgIT09ICdkYXRlJ1xyXG5cdFx0XHRcdFx0XCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0XHQ8ZGl2IHN0eWxlPVwid2lkdGg6IDk2JVwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1zZWxlY3RcclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibWFyZ2luZy10b3Atc3R5bGUgZm9ybWF0LWZvbnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJ7e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0cmFuc2xhdGlvbi5OVU1CRVJfRk9STUFUIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Jy5OVU1CRVJfRk9STUFUJ1xyXG5cdFx0XHRcdFx0XHRcdFx0fX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudEZpZWxkRm9ybWF0SW5mby5zZWxlY3RlZEZvcm1hdERpc3BsYXlcclxuXHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0XHQoc2VsZWN0aW9uQ2hhbmdlKT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb24oJGV2ZW50LnZhbHVlLCAnbnVtYmVyJylcclxuXHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1vcHRpb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0Km5nRm9yPVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IGZvcm1hdCBvZiBjdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvcm1hdExpc3RcclxuXHRcdFx0XHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W3ZhbHVlXT1cImZvcm1hdC5rZXlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImZvcm1hdC1zZWxlY3QtY2hlY2tib3hcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJjaGVja2JveFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W2lkXT1cImZvcm1hdC52YWxcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFtuYW1lXT1cImZvcm1hdC5rZXlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFt2YWx1ZV09XCJmb3JtYXQuaXNDaGVja2VkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cImZvcm1hdC5pc0NoZWNrZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvPnt7IGZvcm1hdC5rZXkgfX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8bWF0LWNoZWNrYm94XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJtYXJnaW4tbGVmdDogMTVweFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W3ZhbHVlXT1cImZvcm1hdC5pc0NoZWNrZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwiZm9ybWF0LmlzQ2hlY2tlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBmb3JtYXQua2V5IH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvbWF0LWNoZWNrYm94PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHRcdFx0XHQ8L21hdC1zZWxlY3Q+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8IS0tIE51bWJlci9wZXJjZW50IGZvcm1hdCBlbmQgLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gZGF0ZSBmb3JtYXQgc3RhcnQgLS0+XHJcblx0XHRcdFx0PGRpdiAqbmdJZj1cImN1cnJlbnRGaWVsZC5kYXRhVHlwZSA9PT0gJ2RhdGUnXCI+XHJcblx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdGNsYXNzPVwibWFyZ2luZy1yaWdodC1zdHlsZVwiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMjYlXCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0XHRcdDxtYXQtc2VsZWN0XHJcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm1hcmdpbmctdG9wLXN0eWxlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwiY3VycmVudEZpZWxkRm9ybWF0SW5mby5kYXRlVHlwZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQoc2VsZWN0aW9uQ2hhbmdlKT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb24oXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JGV2ZW50LnZhbHVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RkRGF0ZVR5cGUnXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1vcHRpb24gdmFsdWU9XCJRdWFydGVyXCI+UXVhcnRlcjwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtb3B0aW9uIHZhbHVlPVwiRGF0ZVwiPkRhdGU8L21hdC1vcHRpb24+XHJcblx0XHRcdFx0XHRcdFx0PC9tYXQtc2VsZWN0PlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNjAlXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LXNlbGVjdFxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtYXJnaW5nLXRvcC1zdHlsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQoc2VsZWN0aW9uQ2hhbmdlKT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb24oXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JGV2ZW50LnZhbHVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RkRGF0ZWZvcm1hdCdcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRGaWVsZEZvcm1hdEluZm8uc2VsZWN0ZWRGb3JtYXREaXNwbGF5XHJcblx0XHRcdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtb3B0aW9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdCpuZ0Zvcj1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBkYXRlIG9mIGN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9ybWF0TGlzdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbdmFsdWVdPVwiZGF0ZS5rZXlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImZvcm1hdC1zZWxlY3QtY2hlY2tib3hcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJjaGVja2JveFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W2lkXT1cImRhdGUudmFsXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbbmFtZV09XCJkYXRlLmtleVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W3ZhbHVlXT1cImRhdGUuaXNDaGVja2VkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cImRhdGUuaXNDaGVja2VkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Lz57eyBkYXRlLmtleSB9fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8bWF0LWNoZWNrYm94XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDE1cHg7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbY2hlY2tlZF09XCJkYXRlLmlzQ2hlY2tlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBkYXRlLmtleSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L21hdC1jaGVja2JveD4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1vcHRpb24+XHJcblx0XHRcdFx0XHRcdFx0PC9tYXQtc2VsZWN0PlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PCEtLSBkYXRlIGZvcm1hdCBlbmQgLS0+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8IS0tIEZvcm1hdCBwYXJ0IGVuZCAtLT5cclxuXHJcblx0XHRcdDwhLS0gZm9udCBzZXR0aW5nIHN0YXJ0IC0tPlxyXG5cdFx0XHQ8ZGl2XHJcblx0XHRcdFx0Y2xhc3M9XCJmb3JtYXQtY2hlY2tib3hcIlxyXG5cdFx0XHRcdCpuZ0lmPVwiXHJcblx0XHRcdFx0XHQhWydzdHJpbmcnLCAnbnZhcmNoYXInLCAnZGF0ZScsICdkYXRldGltZSddLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRjdXJyZW50RmllbGQuZGF0YVR5cGVcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHRcIlxyXG5cdFx0XHQ+XHJcblx0XHRcdFx0PG1hdC1jaGVja2JveFxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJleGFtcGxlLW1hcmdpblwiXHJcblx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJjdXJyZW50RmllbGRGb3JtYXRJbmZvLmZvbnRTZXR0aW5nQ2hlY2tlZFwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0e3tcclxuXHRcdFx0XHRcdFx0dHJhbnNsYXRpb24uRk9OVF9TRVRUSU5HUyB8fCBcIi5GT05UX1NFVFRJTkdTXCJcclxuXHRcdFx0XHRcdH19PC9tYXQtY2hlY2tib3hcclxuXHRcdFx0XHQ+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2XHJcblx0XHRcdFx0Y2xhc3M9XCJmb3JtYXQtZ3JvdXAgZm9ybWF0LWJveFwiXHJcblx0XHRcdFx0Km5nSWY9XCJcclxuXHRcdFx0XHRcdCFbJ3N0cmluZycsICdudmFyY2hhcicsICdkYXRlJywgJ2RhdGV0aW1lJ10uaW5jbHVkZXMoXHJcblx0XHRcdFx0XHRcdGN1cnJlbnRGaWVsZC5kYXRhVHlwZVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFwiXHJcblx0XHRcdD5cclxuXHRcdFx0XHQ8IS0tIE51bWJlciBGb3JtYXQg5a2X5L2T5aSn5bCP44CB5a2X5L2T6aKc6Imy44CB5Y2V5YWD5qC86IOM5pmv6ImyIHN0YXJ0IC0tPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybWF0LW51bWJlclwiPlxyXG5cdFx0XHRcdFx0e3tcclxuXHRcdFx0XHRcdFx0dHJhbnNsYXRpb24uUE9TSVRJVkVfTlVNQkVSX0ZPUk1BVCB8fFxyXG5cdFx0XHRcdFx0XHRcdFwiUG9zaXRpdmUgTnVtYmVyIEZvcm1hdFwiXHJcblx0XHRcdFx0XHR9fVxyXG5cdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZ3JvdXAtc3R5bGUgbWFyZ2luZy10b3Atc3R5bGVcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXJnaW5nLXJpZ2h0LXN0eWxlXCIgc3R5bGU9XCJ3aWR0aDogMzUlXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LXNlbGVjdFxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtYXJnaW5nLXRvcC1zdHlsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQoc2VsZWN0aW9uQ2hhbmdlKT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb24oJGV2ZW50LnZhbHVlLCAnZm9udEZhbWlseScpXHJcblx0XHRcdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudEZpZWxkRm9ybWF0SW5mby5mb250RmFtaWx5VmFsdWVcclxuXHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1vcHRpb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0Km5nRm9yPVwibGV0IGl0ZW0gb2YgZm9udEZhbWlseUxpc3RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7IGl0ZW0udmFsdWUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHRcdFx0XHQ8L21hdC1zZWxlY3Q+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXJnaW5nLXJpZ2h0LXN0eWxlXCIgc3R5bGU9XCJ3aWR0aDogMTUlXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LXNlbGVjdFxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtYXJnaW5nLXRvcC1zdHlsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQoc2VsZWN0aW9uQ2hhbmdlKT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb24oJGV2ZW50LnZhbHVlLCAnZm9udFNpemUnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFsobmdNb2RlbCldPVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRGaWVsZEZvcm1hdEluZm8uZm9udFNpemVWYWx1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0XCJcclxuXHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bWF0LW9wdGlvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgaXRlbSBvZiBmb250U2l6ZUxpc3RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7IGl0ZW0udmFsdWUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHRcdFx0XHQ8L21hdC1zZWxlY3Q+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBsaW5lLWhlaWdodDogNTRweFwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwid3JhcFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0ZWpzLWNvbG9ycGlja2VyXHJcblx0XHRcdFx0XHRcdFx0XHQjY29sb3JwaWNrZXJGb250XHJcblx0XHRcdFx0XHRcdFx0XHRbbW9kZVN3aXRjaGVyXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdGlkPVwicGlja2VyRm9udEVsZW1lbnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0KGNoYW5nZSk9XCJjb2xvck9uQ2hhbmdlKCRldmVudCwgJ2ZvbnQnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJvZmZcIlxyXG5cdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwid3JhcFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0ZWpzLWNvbG9ycGlja2VyXHJcblx0XHRcdFx0XHRcdFx0XHQjY29sb3JwaWNrZXJcclxuXHRcdFx0XHRcdFx0XHRcdFttb2RlU3dpdGNoZXJdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0aWQ9XCJwaWNrZXJFbGVtZW50XCJcclxuXHRcdFx0XHRcdFx0XHRcdChjaGFuZ2UpPVwiY29sb3JPbkNoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcblx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgI3ByZXZpZXdDb2xvcj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInByZXZpZXdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg6IDYycHg7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGhlaWdodDogMzBweDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEycHgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA1cHg7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAzNXB4O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdDEyMy40NVxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybWF0LW51bWJlclwiPnt7XHJcblx0XHRcdFx0XHR0cmFuc2xhdGlvbi5ORUdBVElWRV9OVU1CRVJfRk9STUFUIHx8XHJcblx0XHRcdFx0XHRcdFwiTmVnYXRpdmUgTnVtYmVyIEZvcm1hdFwiXHJcblx0XHRcdFx0fX08L3NwYW4+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImdyb3VwLXN0eWxlIG1hcmdpbmctdG9wLXN0eWxlXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWFyZ2luZy1yaWdodC1zdHlsZVwiIHN0eWxlPVwid2lkdGg6IDM1JVwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHRcdFx0PG1hdC1zZWxlY3RcclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibWFyZ2luZy10b3Atc3R5bGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0KHNlbGVjdGlvbkNoYW5nZSk9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2VsZWN0T3B0aW9uKCRldmVudC52YWx1ZSwgJ25lZ2FGb250RmFtaWx5JylcclxuXHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50RmllbGRGb3JtYXRJbmZvLm5lZ2FGb250RmFtaWx5VmFsdWVcclxuXHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1vcHRpb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0Km5nRm9yPVwibGV0IGl0ZW0gb2YgZm9udEZhbWlseUxpc3RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7IGl0ZW0udmFsdWUgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHRcdFx0XHQ8L21hdC1zZWxlY3Q+XHJcblx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXJnaW5nLXJpZ2h0LXN0eWxlXCIgc3R5bGU9XCJ3aWR0aDogMTUlXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdFx0XHQ8bWF0LXNlbGVjdFxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtYXJnaW5nLXRvcC1zdHlsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQoc2VsZWN0aW9uQ2hhbmdlKT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb24oJGV2ZW50LnZhbHVlLCAnbmVnYUZvbnRTaXplJylcclxuXHRcdFx0XHRcdFx0XHRcdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50RmllbGRGb3JtYXRJbmZvLm5lZ2FGb250U2l6ZVZhbHVlXHJcblx0XHRcdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtb3B0aW9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdCpuZ0Zvcj1cImxldCBpdGVtIG9mIGZvbnRTaXplTGlzdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFt2YWx1ZV09XCJpdGVtLnZhbHVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgaXRlbS52YWx1ZSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9tYXQtb3B0aW9uPlxyXG5cdFx0XHRcdFx0XHRcdDwvbWF0LXNlbGVjdD5cclxuXHRcdFx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGxpbmUtaGVpZ2h0OiA1NHB4XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ3cmFwXCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdFx0XHRlanMtY29sb3JwaWNrZXJcclxuXHRcdFx0XHRcdFx0XHRcdCNjb2xvcnBpY2tlckZvbnRCdXJkZW5cclxuXHRcdFx0XHRcdFx0XHRcdFttb2RlU3dpdGNoZXJdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0aWQ9XCJwaWNrZXJGb250RWxlbWVudFwiXHJcblx0XHRcdFx0XHRcdFx0XHQoY2hhbmdlKT1cImNvbG9yT25DaGFuZ2UoJGV2ZW50LCAnbmdlYUZvbnQnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJvZmZcIlxyXG5cdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwid3JhcFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0ZWpzLWNvbG9ycGlja2VyXHJcblx0XHRcdFx0XHRcdFx0XHQjY29sb3JwaWNrZXJCdXJkZW5cclxuXHRcdFx0XHRcdFx0XHRcdFttb2RlU3dpdGNoZXJdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0aWQ9XCJwaWNrZXJFbGVtZW50XCJcclxuXHRcdFx0XHRcdFx0XHRcdChjaGFuZ2UpPVwiY29sb3JPbkNoYW5nZSgkZXZlbnQsICduZ2VhQmdDb2xvcicpXCJcclxuXHRcdFx0XHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcblx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgI3ByZXZpZXdDb2xvckJ1cmRlbj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInByZXZpZXdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg6IDYycHg7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGhlaWdodDogMzBweDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEycHgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA1cHg7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAzNXB4O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdDEyMy40NVxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwhLS0gTnVtYmVyIEZvcm1hdCDlrZfkvZPlpKflsI/jgIHlrZfkvZPpopzoibLjgIHljZXlhYPmoLzog4zmma/oibIgZW5kIC0tPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PCEtLSBmb250IHNldHRpbmcgZW5kIC0tPlxyXG5cclxuXHRcdFx0PCEtLSBoaWRlIHN1YnRvdGFsIHN0YXJ0IC0tPlxyXG5cdFx0XHQ8ZGl2XHJcblx0XHRcdFx0Y2xhc3M9XCJzdWJ0b3RhbC1jaGVja2JveFwiXHJcblx0XHRcdFx0W25nQ2xhc3NdPVwie1xyXG5cdFx0XHRcdFx0b3BhY2l0eTpcclxuXHRcdFx0XHRcdFx0Y29uZmlnLnBvcnRsZXRUeXBlICE9PSAncGl2b3QnIHx8ICFjdXJyZW50RmllbGQ/LmlzVmFsdWVcclxuXHRcdFx0XHR9XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxtYXQtY2hlY2tib3hcclxuXHRcdFx0XHRcdGNsYXNzPVwiZXhhbXBsZS1tYXJnaW5cIlxyXG5cdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiIWN1cnJlbnRGaWVsZC5zaG93U3ViVG90YWxzXCJcclxuXHRcdFx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUhpZGVTdGF0dXMoJ3Nob3dTdWJUb3RhbHMnKVwiXHJcblx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiXHJcblx0XHRcdFx0XHRcdGNvbmZpZy5wb3J0bGV0VHlwZSAhPT0gJ3Bpdm90JyB8fCAhY3VycmVudEZpZWxkPy5pc1ZhbHVlXHJcblx0XHRcdFx0XHRcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdHt7XHJcblx0XHRcdFx0XHRcdHRyYW5zbGF0aW9uLkhJREVfU1VCX1RPVEFMIHx8IFwiSGlkZSBTdWIgdG90YWxcIlxyXG5cdFx0XHRcdFx0fX08L21hdC1jaGVja2JveFxyXG5cdFx0XHRcdD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDwhLS0gaGlkZSBzdWJ0b3RhbCBlbmQgLS0+XHJcblxyXG5cdFx0XHQ8IS0tIGhpZGUgZ3JhbmR0b3RhbCBzdGFydCAtLT5cclxuXHRcdFx0PGRpdlxyXG5cdFx0XHRcdGNsYXNzPVwic3VidG90YWwtY2hlY2tib3hcIlxyXG5cdFx0XHRcdFtuZ0NsYXNzXT1cInsgb3BhY2l0eTogZGlzYWJsZWRHcmFuZFRvdGFsKCkgfVwiXHJcblx0XHRcdD5cclxuXHRcdFx0XHQ8bWF0LWNoZWNrYm94XHJcblx0XHRcdFx0XHRjbGFzcz1cImV4YW1wbGUtbWFyZ2luXCJcclxuXHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cIiFjdXJyZW50RmllbGQuc2hvd0dyYW5kVG90YWxzXCJcclxuXHRcdFx0XHRcdChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUhpZGVTdGF0dXMoJ3Nob3dHcmFuZFRvdGFscycpXCJcclxuXHRcdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZEdyYW5kVG90YWwoKVwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0e3tcclxuXHRcdFx0XHRcdFx0dHJhbnNsYXRpb24uSElERV9HUkFORF9UT1RBTCB8fCBcIkhpZGUgR3JhbmQgdG90YWxcIlxyXG5cdFx0XHRcdFx0fX08L21hdC1jaGVja2JveFxyXG5cdFx0XHRcdD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDwhLS0gaGlkZSBncmFuZHRvdGFsIGVuZCAtLT5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PCEtLUZvcm1hdHRpbmcgYW5kIGhpZGUgc3ViIHRvdGFsIGVuZCAgICDnrKzkuozpobXvvJpmb3JtYXQgc2V0dGluZy0tPlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIiAqbmdJZj1cIiFDb25kaXRpb25hbFwiPlxyXG5cdFx0PGJ1dHRvbiAoY2xpY2spPVwiY2xlYXJGb3JtYXRfQ3VycmVudCgpXCIgY2xhc3M9XCJidG4gY2xlYXItYnV0dG9uXCI+XHJcblx0XHRcdHt7IHRyYW5zbGF0aW9uLkNMRUFSIHx8IFwiLkNMRUFSXCIgfX1cclxuXHRcdDwvYnV0dG9uPlxyXG5cdFx0PGJ1dHRvbiAoY2xpY2spPVwic2F2ZUZvcm1hdCgpXCIgY2xhc3M9XCJidG4gc2F2ZS1idXR0b25cIj5cclxuXHRcdFx0e3sgdHJhbnNsYXRpb24uU0FWRSB8fCBcIi5TQVZFXCIgfX1cclxuXHRcdDwvYnV0dG9uPlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIiAqbmdJZj1cIkNvbmRpdGlvbmFsXCI+XHJcblx0XHQ8YnV0dG9uIChjbGljayk9XCJjbGVhckZvcm1hdF9BbGwoKVwiIGNsYXNzPVwiYnRuIGNsZWFyLWJ1dHRvblwiPlxyXG5cdFx0XHR7eyB0cmFuc2xhdGlvbi5DTEVBUiB8fCBcIi5DTEVBUlwiIH19XHJcblx0XHQ8L2J1dHRvbj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|