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.
Files changed (221) hide show
  1. package/esm2022/lib/actions/toolbar/index.component.mjs +4 -3
  2. package/esm2022/lib/actions/toolbar-item/index.component.mjs +2 -2
  3. package/esm2022/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.mjs +1 -1
  4. package/esm2022/lib/common-grid/grid-action/grid-action.component.mjs +3 -2
  5. package/esm2022/lib/common-grid/index.component.mjs +6 -3
  6. package/esm2022/lib/dashboard/api.mjs +33 -0
  7. package/esm2022/lib/dashboard/bar-charts/bar-charts.component.mjs +430 -0
  8. package/esm2022/lib/dashboard/bar-charts/utils.mjs +18 -0
  9. package/esm2022/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.mjs +442 -0
  10. package/esm2022/lib/dashboard/dashboard.service.mjs +295 -0
  11. package/esm2022/lib/dashboard/dashboardPorlets.service.mjs +2169 -0
  12. package/esm2022/lib/dashboard/dialog-group/download/index.component.mjs +212 -0
  13. package/esm2022/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.mjs +36 -0
  14. package/esm2022/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.mjs +3211 -0
  15. package/esm2022/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.mjs +3117 -0
  16. package/esm2022/lib/dashboard/gadget-group/gadget-table/gadget-table.component.mjs +1099 -0
  17. package/esm2022/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.mjs +583 -0
  18. package/esm2022/lib/dashboard/pane-group-new.component.mjs +2031 -0
  19. package/esm2022/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.mjs +637 -0
  20. package/esm2022/lib/dashboard/sidebar-iconlist/field-format/field-format.component.mjs +753 -0
  21. package/esm2022/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.mjs +216 -0
  22. package/esm2022/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.mjs +1239 -0
  23. package/esm2022/lib/dialog/common-delete-dialog/index.component.mjs +1 -1
  24. package/esm2022/lib/dialog/common-dialog/index.component.mjs +16 -5
  25. package/esm2022/lib/float-box/index.component.mjs +18 -4
  26. package/esm2022/lib/form/checkbox-group/index.component.mjs +35 -5
  27. package/esm2022/lib/form/drawer-form/drawer-form.component.mjs +177 -76
  28. package/esm2022/lib/layout/drawer/index.component.mjs +2 -2
  29. package/esm2022/lib/layout/page-list/index.component.mjs +9 -3
  30. package/esm2022/lib/layout/page-tab/index.component.mjs +5 -3
  31. package/esm2022/lib/layout/rs-stepper/constants.mjs +2 -0
  32. package/esm2022/lib/layout/rs-stepper/index.component.mjs +148 -0
  33. package/esm2022/lib/raise-common-lib.module.mjs +114 -7
  34. package/esm2022/lib/service/InjectionToken.mjs +5 -0
  35. package/esm2022/lib/service/keep-alive.service.mjs +2 -2
  36. package/esm2022/lib/smart-popup/index.component.mjs +1084 -0
  37. package/esm2022/public-api.mjs +19 -1
  38. package/fesm2022/raise-common-lib-new.mjs +18037 -220
  39. package/fesm2022/raise-common-lib-new.mjs.map +1 -1
  40. package/lib/common-grid/index.component.d.ts +2 -1
  41. package/lib/dashboard/api.d.ts +24 -0
  42. package/lib/dashboard/bar-charts/bar-charts.component.d.ts +63 -0
  43. package/lib/dashboard/bar-charts/utils.d.ts +1 -0
  44. package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +52 -0
  45. package/lib/dashboard/dashboard.service.d.ts +152 -0
  46. package/lib/dashboard/dashboardPorlets.service.d.ts +214 -0
  47. package/lib/dashboard/dialog-group/download/index.component.d.ts +36 -0
  48. package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +15 -0
  49. package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +128 -0
  50. package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +131 -0
  51. package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +77 -0
  52. package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +47 -0
  53. package/lib/dashboard/pane-group-new.component.d.ts +169 -0
  54. package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +56 -0
  55. package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +62 -0
  56. package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +30 -0
  57. package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +150 -0
  58. package/lib/dialog/common-dialog/index.component.d.ts +3 -1
  59. package/lib/float-box/index.component.d.ts +4 -3
  60. package/lib/form/checkbox-group/index.component.d.ts +5 -0
  61. package/lib/form/drawer-form/drawer-form.component.d.ts +21 -8
  62. package/lib/layout/page-list/index.component.d.ts +3 -1
  63. package/lib/layout/page-tab/index.component.d.ts +1 -0
  64. package/lib/layout/rs-stepper/constants.d.ts +5 -0
  65. package/lib/layout/rs-stepper/index.component.d.ts +31 -0
  66. package/lib/raise-common-lib.module.d.ts +61 -40
  67. package/lib/service/InjectionToken.d.ts +4 -0
  68. package/lib/smart-popup/index.component.d.ts +60 -0
  69. package/package.json +1 -1
  70. package/public-api.d.ts +18 -0
  71. package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
  72. package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
  73. package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
  74. package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
  75. package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
  76. package/src/assets/img/dashboard_icon/Close.svg +4 -0
  77. package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
  78. package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
  79. package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
  80. package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
  81. package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
  82. package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
  83. package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
  84. package/src/assets/img/dashboard_icon/area-white.svg +3 -0
  85. package/src/assets/img/dashboard_icon/area.svg +3 -0
  86. package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
  87. package/src/assets/img/dashboard_icon/bar.svg +14 -0
  88. package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
  89. package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
  90. package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
  91. package/src/assets/img/dashboard_icon/column-white.svg +14 -0
  92. package/src/assets/img/dashboard_icon/column.svg +26 -0
  93. package/src/assets/img/dashboard_icon/customize.png +0 -0
  94. package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
  95. package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
  96. package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
  97. package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
  98. package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
  99. package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
  100. package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
  101. package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
  102. package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
  103. package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
  104. package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
  105. package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
  106. package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
  107. package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
  108. package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
  109. package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
  110. package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
  111. package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
  112. package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
  113. package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
  114. package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
  115. package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
  116. package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
  117. package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
  118. package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
  119. package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
  120. package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
  121. package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
  122. package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
  123. package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
  124. package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
  125. package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
  126. package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
  127. package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
  128. package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
  129. package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
  130. package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
  131. package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
  132. package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
  133. package/src/assets/img/dashboard_icon/ftable.svg +24 -0
  134. package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
  135. package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
  136. package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
  137. package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
  138. package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
  139. package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
  140. package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
  141. package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
  142. package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
  143. package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
  144. package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
  145. package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
  146. package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
  147. package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
  148. package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
  149. package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
  150. package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
  151. package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
  152. package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
  153. package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
  154. package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
  155. package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
  156. package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
  157. package/src/assets/img/dashboard_icon/geo.svg +14 -0
  158. package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
  159. package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
  160. package/src/assets/img/dashboard_icon/information-1.png +0 -0
  161. package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
  162. package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
  163. package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
  164. package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
  165. package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
  166. package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
  167. package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
  168. package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
  169. package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
  170. package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
  171. package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
  172. package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
  173. package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
  174. package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
  175. package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
  176. package/src/assets/img/dashboard_icon/more_View.svg +3 -0
  177. package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
  178. package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
  179. package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
  180. package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
  181. package/src/assets/img/dashboard_icon/pie.svg +16 -0
  182. package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
  183. package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
  184. package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
  185. package/src/assets/img/dashboard_icon/pivot.svg +8 -0
  186. package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
  187. package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
  188. package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
  189. package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
  190. package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
  191. package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
  192. package/src/assets/img/dashboard_icon/radar.svg +19 -0
  193. package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
  194. package/src/assets/img/dashboard_icon/search_input.svg +4 -0
  195. package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
  196. package/src/assets/img/dashboard_icon/table-3.svg +16 -0
  197. package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
  198. package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
  199. package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
  200. package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
  201. package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
  202. package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
  203. package/src/assets/img/dashboard_icon/tick.svg +26 -0
  204. package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
  205. package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
  206. package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
  207. package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
  208. package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
  209. package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
  210. package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
  211. package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
  212. package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
  213. package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
  214. package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
  215. package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
  216. package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
  217. package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
  218. package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
  219. package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
  220. package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
  221. 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==