raise-common-lib-new 0.0.62 → 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 (223) 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/form/richtexteditor/index.component.mjs +7 -9
  29. package/esm2022/lib/layout/drawer/index.component.mjs +2 -2
  30. package/esm2022/lib/layout/page-list/index.component.mjs +9 -3
  31. package/esm2022/lib/layout/page-tab/index.component.mjs +5 -3
  32. package/esm2022/lib/layout/rs-stepper/constants.mjs +2 -0
  33. package/esm2022/lib/layout/rs-stepper/index.component.mjs +148 -0
  34. package/esm2022/lib/raise-common-lib.module.mjs +114 -7
  35. package/esm2022/lib/service/InjectionToken.mjs +5 -0
  36. package/esm2022/lib/service/keep-alive.service.mjs +2 -2
  37. package/esm2022/lib/smart-popup/index.component.mjs +1084 -0
  38. package/esm2022/public-api.mjs +19 -1
  39. package/fesm2022/raise-common-lib-new.mjs +18042 -227
  40. package/fesm2022/raise-common-lib-new.mjs.map +1 -1
  41. package/lib/common-grid/index.component.d.ts +2 -1
  42. package/lib/dashboard/api.d.ts +24 -0
  43. package/lib/dashboard/bar-charts/bar-charts.component.d.ts +63 -0
  44. package/lib/dashboard/bar-charts/utils.d.ts +1 -0
  45. package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +52 -0
  46. package/lib/dashboard/dashboard.service.d.ts +152 -0
  47. package/lib/dashboard/dashboardPorlets.service.d.ts +214 -0
  48. package/lib/dashboard/dialog-group/download/index.component.d.ts +36 -0
  49. package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +15 -0
  50. package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +128 -0
  51. package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +131 -0
  52. package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +77 -0
  53. package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +47 -0
  54. package/lib/dashboard/pane-group-new.component.d.ts +169 -0
  55. package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +56 -0
  56. package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +62 -0
  57. package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +30 -0
  58. package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +150 -0
  59. package/lib/dialog/common-dialog/index.component.d.ts +3 -1
  60. package/lib/float-box/index.component.d.ts +4 -3
  61. package/lib/form/checkbox-group/index.component.d.ts +5 -0
  62. package/lib/form/drawer-form/drawer-form.component.d.ts +21 -8
  63. package/lib/form/richtexteditor/index.component.d.ts +1 -3
  64. package/lib/layout/page-list/index.component.d.ts +3 -1
  65. package/lib/layout/page-tab/index.component.d.ts +1 -0
  66. package/lib/layout/rs-stepper/constants.d.ts +5 -0
  67. package/lib/layout/rs-stepper/index.component.d.ts +31 -0
  68. package/lib/raise-common-lib.module.d.ts +61 -40
  69. package/lib/service/InjectionToken.d.ts +4 -0
  70. package/lib/smart-popup/index.component.d.ts +60 -0
  71. package/package.json +1 -1
  72. package/public-api.d.ts +18 -0
  73. package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
  74. package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
  75. package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
  76. package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
  77. package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
  78. package/src/assets/img/dashboard_icon/Close.svg +4 -0
  79. package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
  80. package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
  81. package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
  82. package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
  83. package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
  84. package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
  85. package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
  86. package/src/assets/img/dashboard_icon/area-white.svg +3 -0
  87. package/src/assets/img/dashboard_icon/area.svg +3 -0
  88. package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
  89. package/src/assets/img/dashboard_icon/bar.svg +14 -0
  90. package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
  91. package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
  92. package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
  93. package/src/assets/img/dashboard_icon/column-white.svg +14 -0
  94. package/src/assets/img/dashboard_icon/column.svg +26 -0
  95. package/src/assets/img/dashboard_icon/customize.png +0 -0
  96. package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
  97. package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
  98. package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
  99. package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
  100. package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
  101. package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
  102. package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
  103. package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
  104. package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
  105. package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
  106. package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
  107. package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
  108. package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
  109. package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
  110. package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
  111. package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
  112. package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
  113. package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
  114. package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
  115. package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
  116. package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
  117. package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
  118. package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
  119. package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
  120. package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
  121. package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
  122. package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
  123. package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
  124. package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
  125. package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
  126. package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
  127. package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
  128. package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
  129. package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
  130. package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
  131. package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
  132. package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
  133. package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
  134. package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
  135. package/src/assets/img/dashboard_icon/ftable.svg +24 -0
  136. package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
  137. package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
  138. package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
  139. package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
  140. package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
  141. package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
  142. package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
  143. package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
  144. package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
  145. package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
  146. package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
  147. package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
  148. package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
  149. package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
  150. package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
  151. package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
  152. package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
  153. package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
  154. package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
  155. package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
  156. package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
  157. package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
  158. package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
  159. package/src/assets/img/dashboard_icon/geo.svg +14 -0
  160. package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
  161. package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
  162. package/src/assets/img/dashboard_icon/information-1.png +0 -0
  163. package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
  164. package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
  165. package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
  166. package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
  167. package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
  168. package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
  169. package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
  170. package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
  171. package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
  172. package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
  173. package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
  174. package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
  175. package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
  176. package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
  177. package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
  178. package/src/assets/img/dashboard_icon/more_View.svg +3 -0
  179. package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
  180. package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
  181. package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
  182. package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
  183. package/src/assets/img/dashboard_icon/pie.svg +16 -0
  184. package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
  185. package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
  186. package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
  187. package/src/assets/img/dashboard_icon/pivot.svg +8 -0
  188. package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
  189. package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
  190. package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
  191. package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
  192. package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
  193. package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
  194. package/src/assets/img/dashboard_icon/radar.svg +19 -0
  195. package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
  196. package/src/assets/img/dashboard_icon/search_input.svg +4 -0
  197. package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
  198. package/src/assets/img/dashboard_icon/table-3.svg +16 -0
  199. package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
  200. package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
  201. package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
  202. package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
  203. package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
  204. package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
  205. package/src/assets/img/dashboard_icon/tick.svg +26 -0
  206. package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
  207. package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
  208. package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
  209. package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
  210. package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
  211. package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
  212. package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
  213. package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
  214. package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
  215. package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
  216. package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
  217. package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
  218. package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
  219. package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
  220. package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
  221. package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
  222. package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
  223. package/src/assets/img/dashboard_icon/transpose.svg +16 -0
@@ -0,0 +1,33 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class ApiList {
4
+ baseurl = "/api/";
5
+ urlList = {
6
+ GetSchema: "ws/DatamartWS/GetSchema",
7
+ GetPortletDataV2: "ws/DatamartWS/GetPortletDataV2",
8
+ GetDashboardV2: "ws/DashboardWS.asmx/GetDashboardV2",
9
+ SaveDashboardPortlets: "ws/DashboardWS.asmx/SaveDashboardPortlets",
10
+ GetPropertyList: "ws/CommonWS.asmx/GetPropertyList",
11
+ LPGetPropertyList: "ws/LPCommonWS.asmx/GetPropertyList",
12
+ GetDistinctColumnValsByPortletDataParam: "ws/DatamartWS/GetDistinctColumnValsByPortletDataParam",
13
+ FileGet: "ws/FileGet.ashx",
14
+ GetSources: "ws/DatamartWS/GetSources",
15
+ AddDataMartTables: "ws/DashboardWS.asmx/AddDataMartTables",
16
+ // GetPortletDataOrCreate: "ws/DatamartWS/GetPortletDataOrCreate",
17
+ GetPortletDataOrCreate: "ws/DashboardWS.asmx/GetPortletDataOrCreate",
18
+ GetAllCompanyByAccount: "ws/CompanyWS.asmx/GetAllCompanyByAccount",
19
+ GetDropdown: "ws/CommonWS.asmx/GetDropdown",
20
+ GetFinancialItems: "ws/DashboardWS.asmx/GetFinancialItems",
21
+ GetFundListByInvestorId: "ws/FundWS.asmx/GetFundListByInvestorId",
22
+ GetAllInvestee: "ws/DashboardWS.asmx/GetAllInvestee",
23
+ };
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiList, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiList, providedIn: "root" });
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiList, decorators: [{
28
+ type: Injectable,
29
+ args: [{
30
+ providedIn: "root",
31
+ }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2Rhc2hib2FyZC9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLE9BQU87SUFDbEIsT0FBTyxHQUFRLE9BQU8sQ0FBQztJQUNoQixPQUFPLEdBQUc7UUFDZixTQUFTLEVBQUUseUJBQXlCO1FBQ3BDLGdCQUFnQixFQUFFLGdDQUFnQztRQUNsRCxjQUFjLEVBQUUsb0NBQW9DO1FBQ3BELHFCQUFxQixFQUFFLDJDQUEyQztRQUNsRSxlQUFlLEVBQUUsa0NBQWtDO1FBQ25ELGlCQUFpQixFQUFFLG9DQUFvQztRQUN2RCx1Q0FBdUMsRUFDckMsdURBQXVEO1FBQ3pELE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsVUFBVSxFQUFFLDBCQUEwQjtRQUN0QyxpQkFBaUIsRUFBRSx1Q0FBdUM7UUFDMUQsa0VBQWtFO1FBQ2xFLHNCQUFzQixFQUFFLDRDQUE0QztRQUNwRSxzQkFBc0IsRUFBRSwwQ0FBMEM7UUFDbEUsV0FBVyxFQUFFLDhCQUE4QjtRQUMzQyxpQkFBaUIsRUFBRSx1Q0FBdUM7UUFDMUQsdUJBQXVCLEVBQUUsd0NBQXdDO1FBQ2pFLGNBQWMsRUFBRSxvQ0FBb0M7S0FDckQsQ0FBQzt3R0FyQlMsT0FBTzs0R0FBUCxPQUFPLGNBRk4sTUFBTTs7NEZBRVAsT0FBTztrQkFIbkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaUxpc3Qge1xyXG4gIGJhc2V1cmw6IGFueSA9IFwiL2FwaS9cIjtcclxuICBwdWJsaWMgdXJsTGlzdCA9IHtcclxuICAgIEdldFNjaGVtYTogXCJ3cy9EYXRhbWFydFdTL0dldFNjaGVtYVwiLFxyXG4gICAgR2V0UG9ydGxldERhdGFWMjogXCJ3cy9EYXRhbWFydFdTL0dldFBvcnRsZXREYXRhVjJcIixcclxuICAgIEdldERhc2hib2FyZFYyOiBcIndzL0Rhc2hib2FyZFdTLmFzbXgvR2V0RGFzaGJvYXJkVjJcIixcclxuICAgIFNhdmVEYXNoYm9hcmRQb3J0bGV0czogXCJ3cy9EYXNoYm9hcmRXUy5hc214L1NhdmVEYXNoYm9hcmRQb3J0bGV0c1wiLFxyXG4gICAgR2V0UHJvcGVydHlMaXN0OiBcIndzL0NvbW1vbldTLmFzbXgvR2V0UHJvcGVydHlMaXN0XCIsXHJcbiAgICBMUEdldFByb3BlcnR5TGlzdDogXCJ3cy9MUENvbW1vbldTLmFzbXgvR2V0UHJvcGVydHlMaXN0XCIsXHJcbiAgICBHZXREaXN0aW5jdENvbHVtblZhbHNCeVBvcnRsZXREYXRhUGFyYW06XHJcbiAgICAgIFwid3MvRGF0YW1hcnRXUy9HZXREaXN0aW5jdENvbHVtblZhbHNCeVBvcnRsZXREYXRhUGFyYW1cIixcclxuICAgIEZpbGVHZXQ6IFwid3MvRmlsZUdldC5hc2h4XCIsXHJcbiAgICBHZXRTb3VyY2VzOiBcIndzL0RhdGFtYXJ0V1MvR2V0U291cmNlc1wiLFxyXG4gICAgQWRkRGF0YU1hcnRUYWJsZXM6IFwid3MvRGFzaGJvYXJkV1MuYXNteC9BZGREYXRhTWFydFRhYmxlc1wiLFxyXG4gICAgLy8gR2V0UG9ydGxldERhdGFPckNyZWF0ZTogXCJ3cy9EYXRhbWFydFdTL0dldFBvcnRsZXREYXRhT3JDcmVhdGVcIixcclxuICAgIEdldFBvcnRsZXREYXRhT3JDcmVhdGU6IFwid3MvRGFzaGJvYXJkV1MuYXNteC9HZXRQb3J0bGV0RGF0YU9yQ3JlYXRlXCIsXHJcbiAgICBHZXRBbGxDb21wYW55QnlBY2NvdW50OiBcIndzL0NvbXBhbnlXUy5hc214L0dldEFsbENvbXBhbnlCeUFjY291bnRcIiwgLy8g6I635Y+W5YWs5Y+45YiX6KGo77yI5omA5pyJ5pWw5o2u77yJXHJcbiAgICBHZXREcm9wZG93bjogXCJ3cy9Db21tb25XUy5hc214L0dldERyb3Bkb3duXCIsIC8vIOiOt+WPluS4i+aLieiPnOWNlVxyXG4gICAgR2V0RmluYW5jaWFsSXRlbXM6IFwid3MvRGFzaGJvYXJkV1MuYXNteC9HZXRGaW5hbmNpYWxJdGVtc1wiLFxyXG4gICAgR2V0RnVuZExpc3RCeUludmVzdG9ySWQ6IFwid3MvRnVuZFdTLmFzbXgvR2V0RnVuZExpc3RCeUludmVzdG9ySWRcIixcclxuICAgIEdldEFsbEludmVzdGVlOiBcIndzL0Rhc2hib2FyZFdTLmFzbXgvR2V0QWxsSW52ZXN0ZWVcIixcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,430 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, Input, ViewChild, ViewEncapsulation, } from "@angular/core";
3
+ import { DecimalPipe } from "@angular/common";
4
+ import { debounce } from "./utils";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../dashboard.service";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@syncfusion/ej2-angular-charts";
9
+ export class BarChartsComponent {
10
+ ref;
11
+ dashboardService;
12
+ decimalPipe;
13
+ content;
14
+ chart;
15
+ dataColumn = []; // 柱状图数据源
16
+ dataLine = []; // 折线图数据源
17
+ dataStackingColumn = []; // 堆积图数据源
18
+ columnType = "number";
19
+ lineType = "number";
20
+ themeColor = null;
21
+ portlet = null;
22
+ dashboard = null;
23
+ column = [];
24
+ columnLine = [];
25
+ config;
26
+ _dataStackingColumn = [];
27
+ marker;
28
+ specialKey = ["IRR", "DPI", "MOIC", "PIC", "RVPI", "TVPI"];
29
+ pageLoading = false;
30
+ zoomSettings = {
31
+ // enableMouseWheelZooming: true,
32
+ // enableSelectionZooming: true,
33
+ // toolbarItems: [],
34
+ // enablePan: true,
35
+ enable: false,
36
+ };
37
+ //Initializing Primary X Axis
38
+ primaryXAxis = {
39
+ valueType: "Category",
40
+ labelIntersectAction: "Rotate45",
41
+ majorGridLines: { width: 0 },
42
+ majorTickLines: { width: 0 },
43
+ edgeLabelPlacement: "Shift",
44
+ // enableScrollbar: true,
45
+ // enableTrim: true,
46
+ // enablePan: true,
47
+ // rotate: 0,
48
+ labelStyle: {
49
+ fontWeight: "normal",
50
+ color: "#44566c",
51
+ fontFamily: "Arial",
52
+ size: "13px",
53
+ },
54
+ };
55
+ //Initializing Primary Y Axis
56
+ primaryYAxis = {
57
+ title: "",
58
+ lineStyle: { width: 0 },
59
+ majorTickLines: { width: 0 },
60
+ majorGridLines: { color: "#f2f2f2" },
61
+ labelFormat: "n2",
62
+ };
63
+ chartArea = {
64
+ border: {
65
+ width: 0,
66
+ },
67
+ };
68
+ // 鼠标移到bar上面显示的box
69
+ tooltip = {
70
+ enable: true,
71
+ };
72
+ // 图例设置
73
+ legend = {
74
+ visible: true,
75
+ enableHighlight: true,
76
+ };
77
+ // custom code start
78
+ load(args) {
79
+ let selectedTheme = location.hash.split("/")[1];
80
+ selectedTheme = selectedTheme ? selectedTheme : "Material";
81
+ args.chart.theme = ((selectedTheme.charAt(0).toUpperCase() + selectedTheme.slice(1))
82
+ .replace(/-dark/i, "Dark")
83
+ .replace(/contrast/i, "Contrast"));
84
+ }
85
+ // custom code end
86
+ title = "";
87
+ height = "250px";
88
+ width = "100%";
89
+ customPalette = []; //默认颜色组
90
+ subscriptions = [];
91
+ exportType;
92
+ markerFormat = "";
93
+ constructor(ref, dashboardService, decimalPipe) {
94
+ this.ref = ref;
95
+ this.dashboardService = dashboardService;
96
+ this.decimalPipe = decimalPipe;
97
+ }
98
+ ngOnInit() {
99
+ this.config = this.portlet.config && JSON.parse(this.portlet.config);
100
+ this.initMarkerConfig();
101
+ this.initData();
102
+ this.subscriptions.push(this.dashboardService.getSwitchConfig().subscribe((res) => {
103
+ if (this.portlet.newId === res.id) {
104
+ this.config.hasMarker = res.checked;
105
+ this.portlet.config = JSON.stringify(this.config);
106
+ this.initMarkerConfig();
107
+ this.chart.refresh();
108
+ }
109
+ }), this.dashboardService.getMarkerFormat().subscribe((res) => {
110
+ if (this.portlet.newId === res.newId) {
111
+ this.config.markerFormat = res.markerFormat;
112
+ this.portlet.config = JSON.stringify(this.config);
113
+ this.markerFormat = res.markerFormat;
114
+ this.initMarkerConfig();
115
+ this.chart.refresh();
116
+ }
117
+ }));
118
+ }
119
+ initMarkerConfig() {
120
+ const format = this.config.portletType === "historicalIRR" ? "p2" : "n2";
121
+ this.pageLoading = false;
122
+ const hasMarker = this.config && this.config.hasMarker;
123
+ this.markerFormat = this.config && this.config.markerFormat;
124
+ this.marker = {
125
+ visible: hasMarker,
126
+ dataLabel: {
127
+ visible: hasMarker,
128
+ format,
129
+ },
130
+ };
131
+ }
132
+ textRender(e) {
133
+ this.dataLine.forEach((data) => {
134
+ Object.keys(data).forEach((key) => {
135
+ if (this.specialKey.includes(key)) {
136
+ if (!e.text) {
137
+ return;
138
+ }
139
+ if (e.text != data[key]) {
140
+ return;
141
+ }
142
+ if (key === "IRR") {
143
+ e.text = (e.text * 100).toFixed(2) + "%";
144
+ }
145
+ else {
146
+ e.text = Number(e.text).toFixed(2) + "x";
147
+ }
148
+ }
149
+ });
150
+ });
151
+ this.dataColumn.forEach((data) => {
152
+ Object.keys(data).forEach((key) => {
153
+ if (this.specialKey.includes(key)) {
154
+ if (!e.text) {
155
+ return;
156
+ }
157
+ if (e.text != data[key]) {
158
+ return;
159
+ }
160
+ if (key === "IRR") {
161
+ e.text = (e.text * 100).toFixed(2) + "%";
162
+ }
163
+ else {
164
+ e.text = Number(e.text).toFixed(2) + "x";
165
+ }
166
+ }
167
+ });
168
+ });
169
+ if (!isNaN(e.text)) {
170
+ if (e.text !== 0) {
171
+ switch (this.markerFormat) {
172
+ case "M":
173
+ e.text =
174
+ this.decimalPipe.transform(e.text / 1000000, "1.2-2") + "m";
175
+ return;
176
+ case "K":
177
+ e.text = this.decimalPipe.transform(e.text / 1000, "1.2-2") + "k";
178
+ return;
179
+ case "bn":
180
+ e.text =
181
+ this.decimalPipe.transform(e.text / 1000000000, "1.2-2") + "b";
182
+ return;
183
+ case "T":
184
+ e.text =
185
+ this.decimalPipe.transform(e.text / 1000000000000, "1.2-2") + "t";
186
+ return;
187
+ default:
188
+ return;
189
+ }
190
+ }
191
+ else {
192
+ e.text = "";
193
+ }
194
+ }
195
+ }
196
+ initData() {
197
+ this.column = [];
198
+ this.columnLine = [];
199
+ if (this.dataColumn && this.dataColumn.length > 0) {
200
+ for (var i in this.dataColumn[0]) {
201
+ if (i != "period") {
202
+ this.column.push({
203
+ xName: "period",
204
+ yName: i,
205
+ name: i,
206
+ });
207
+ }
208
+ }
209
+ }
210
+ if (this.dataLine && this.dataLine.length > 0) {
211
+ for (var i in this.dataLine[0]) {
212
+ if (i != "period") {
213
+ this.columnLine.push({
214
+ xName: "period",
215
+ yName: i,
216
+ name: i,
217
+ });
218
+ }
219
+ }
220
+ }
221
+ if (this.themeColor && this.themeColor.length > 0) {
222
+ this.customPalette = this.themeColor;
223
+ }
224
+ this.ref.markForCheck();
225
+ }
226
+ ngOnChanges(changes) {
227
+ // if (
228
+ // (changes.dataColumn &&
229
+ // !this.arraysAreEqual(
230
+ // changes.dataColumn.currentValue,
231
+ // changes.dataColumn.previousValue
232
+ // )) ||
233
+ // (changes.dataLine &&
234
+ // !this.arraysAreEqual(
235
+ // changes.dataLine.currentValue,
236
+ // changes.dataLine.previousValue
237
+ // )) ||
238
+ // !this.arraysAreEqual(
239
+ // changes.themeColor ? changes.themeColor.currentValue : null,
240
+ // changes.themeColor ? changes.themeColor.previousValue : null
241
+ // )
242
+ // ) {
243
+ // this.initData();
244
+ // }
245
+ }
246
+ refreshChart() {
247
+ setTimeout(() => {
248
+ if (this.chart)
249
+ this.chart.refresh();
250
+ }, 0);
251
+ }
252
+ resizeObserver;
253
+ ngAfterViewInit() {
254
+ this.resizeObserver = new ResizeObserver((entries) => {
255
+ for (let entry of entries) {
256
+ const { width, height } = entry.contentRect;
257
+ // 在这里执行你想要的操作,比如更新图表或其他相关操作
258
+ this.changeSize(width, height);
259
+ }
260
+ });
261
+ if (this.content) {
262
+ this.resizeObserver.observe(this.content.nativeElement);
263
+ }
264
+ this.subscriptions.push(this.dashboardService.getStartRefresh().subscribe((dashboardId) => {
265
+ if (dashboardId === this.dashboard.id) {
266
+ this.pageLoading = true;
267
+ this.ref.markForCheck();
268
+ }
269
+ }));
270
+ this.subscriptions.push(this.dashboardService.getRefreshGadget().subscribe((e) => {
271
+ if (!e) {
272
+ return;
273
+ }
274
+ const newId = e["newId"];
275
+ if (newId === this.portlet.newId || newId === this.portlet.id) {
276
+ this.initMarkerConfig();
277
+ this.refreshChart();
278
+ }
279
+ }));
280
+ }
281
+ ngOnDestroy() {
282
+ // 在组件销毁时取消监听
283
+ if (this.resizeObserver) {
284
+ this.resizeObserver.disconnect();
285
+ }
286
+ this.subscriptions.forEach((ele) => ele.unsubscribe());
287
+ }
288
+ changeSize(width, height) {
289
+ if (!width || !height) {
290
+ return;
291
+ }
292
+ this.width = `${width}px`;
293
+ this.height = `${height - 10}px`;
294
+ this.ref.markForCheck();
295
+ }
296
+ exportChart() {
297
+ this.chart.exportModule.export("PNG", "Chart");
298
+ }
299
+ OnChartAxisLabeRender(args) {
300
+ if (args.axis.propName == "primaryYAxis") {
301
+ if (this.columnType == "percent" ||
302
+ (this.dataColumn &&
303
+ this.dataColumn.length <= 0 &&
304
+ this.lineType == "percent")) {
305
+ args.text = this.formatPercentage(args.text);
306
+ }
307
+ else {
308
+ if (isNaN(args.text)) {
309
+ return;
310
+ }
311
+ args.text =
312
+ Number(args.text) >= 0
313
+ ? this.getT(args.text)
314
+ : `-${this.getT(args.text)}`;
315
+ }
316
+ }
317
+ else if (args.axis.propName == "yAxis2") {
318
+ if (this.lineType == "percent" &&
319
+ this.dataColumn &&
320
+ this.dataColumn.length > 0) {
321
+ args.text = this.formatPercentage(args.text);
322
+ }
323
+ else {
324
+ if (isNaN(args.text)) {
325
+ return;
326
+ }
327
+ args.text =
328
+ Number(args.text) >= 0
329
+ ? this.getT(args.text)
330
+ : `-${this.getT(args.text)}`;
331
+ }
332
+ }
333
+ }
334
+ getT(value) {
335
+ return String(value)
336
+ .replace(/[^0-9.]/g, "")
337
+ .replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
338
+ // return this.decimalPipe.transform(Number(value), "1.2-2");
339
+ }
340
+ formatPercentage(decimal) {
341
+ const percentage = (decimal * 100).toFixed(2);
342
+ return `${percentage}%`;
343
+ }
344
+ arraysAreEqual(arr1, arr2) {
345
+ if ((!arr1 && arr2) || (arr1 && !arr2)) {
346
+ return false;
347
+ }
348
+ if (!arr1 && !arr2) {
349
+ return true;
350
+ }
351
+ if (arr1.length !== arr2.length) {
352
+ return false;
353
+ }
354
+ for (let i = 0; i < arr1.length; i++) {
355
+ const obj1 = arr1[i];
356
+ const obj2 = arr2[i];
357
+ if (typeof obj1 !== "object" || typeof obj2 !== "object") {
358
+ if (obj1 !== obj2) {
359
+ return false;
360
+ }
361
+ }
362
+ else {
363
+ if (!this.objectsAreEqual(obj1, obj2)) {
364
+ return false;
365
+ }
366
+ }
367
+ }
368
+ return true;
369
+ }
370
+ objectsAreEqual(obj1, obj2) {
371
+ const keys1 = Object.keys(obj1);
372
+ const keys2 = Object.keys(obj2);
373
+ if (keys1.length !== keys2.length) {
374
+ return false;
375
+ }
376
+ for (let key of keys1) {
377
+ if (obj1[key] !== obj2[key]) {
378
+ return false;
379
+ }
380
+ }
381
+ return true;
382
+ }
383
+ onPointRender(e) {
384
+ if (e.point.y == 0) {
385
+ e.cancel = true;
386
+ }
387
+ }
388
+ tooltipRender(args) {
389
+ if (isNaN(args.data.pointY)) {
390
+ return;
391
+ }
392
+ if (this.config.portletType === "historicalIRR") {
393
+ args.text = `${args.data.pointX}: ${(args.data.pointY * 100).toFixed(2)}%`;
394
+ return;
395
+ }
396
+ args.text = `${args.data.pointX}: ${this.decimalPipe.transform(args.data.pointY, "1.2-2")}`;
397
+ }
398
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BarChartsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DashboardService }, { token: i2.DecimalPipe }], target: i0.ɵɵFactoryTarget.Component });
399
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BarChartsComponent, selector: "rs-bar-charts", inputs: { dataColumn: "dataColumn", dataLine: "dataLine", dataStackingColumn: "dataStackingColumn", columnType: "columnType", lineType: "lineType", themeColor: "themeColor", portlet: "portlet", dashboard: "dashboard" }, providers: [DecimalPipe], viewQueries: [{ propertyName: "content", first: true, predicate: ["chartContent"], descendants: true }, { propertyName: "chart", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n\tclass=\"content\"\r\n\t#chartContent\r\n\tid=\"chartContent\"\r\n\t*ngIf=\"dataColumn || dataLine\"\r\n>\r\n\t<ejs-chart\r\n\t\t#chart\r\n\t\tstyle=\"display: block\"\r\n\t\talign=\"center\"\r\n\t\t[title]=\"title\"\r\n\t\t[primaryXAxis]=\"primaryXAxis\"\r\n\t\t[primaryYAxis]=\"primaryYAxis\"\r\n\t\t[tooltip]=\"tooltip\"\r\n\t\t(load)=\"load($event)\"\r\n\t\t[chartArea]=\"chartArea\"\r\n\t\twidth=\"100%\"\r\n\t\t[height]=\"height\"\r\n\t\t[width]=\"width\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\t[legendSettings]=\"legend\"\r\n\t\t[palettes]=\"customPalette\"\r\n\t\t(pointRender)=\"onPointRender($event)\"\r\n\t\t[enableAnimation]=\"false\"\r\n\t\t(textRender)=\"textRender($event)\"\r\n\t\t(tooltipRender)=\"tooltipRender($event)\"\r\n\t\t(axisLabelRender)=\"OnChartAxisLabeRender($event)\"\r\n\t>\r\n\t\t<e-series-collection>\r\n\t\t\t<ng-container *ngIf=\"dataColumn && dataColumn.length > 0\">\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of column\"\r\n\t\t\t\t\t[dataSource]=\"dataColumn\"\r\n\t\t\t\t\ttype=\"Column\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u53EA\u9009\u7B2C\u4E8C\u4E2AY\u8F74\u65F6\uFF0C\u663E\u793A\u6298\u7EBF\u56FE -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length <= 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5171\u7528\u4E00\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType == lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u4E0D\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5C31\u7528\u4E24\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType != lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t\tyAxisName=\"yAxis2\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\t\t</e-series-collection>\r\n\r\n\t\t<e-axes>\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-axis\r\n\t\t\t\t\topposedPosition=\"true\"\r\n\t\t\t\t\trowIndex=\"0\"\r\n\t\t\t\t\tname=\"yAxis2\"\r\n\t\t\t\t\t[majorGridLines]=\"{ width: 0 }\"\r\n\t\t\t\t\ttitle=\"\"\r\n\t\t\t\t\t[lineStyle]=\"{ width: 0 }\"\r\n\t\t\t\t\t[majorTickLines]=\"{ width: 0 }\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-axis>\r\n\t\t\t</ng-container>\r\n\t\t</e-axes>\r\n\t</ejs-chart>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n", styles: ["#chartContent{width:100%;height:100%;padding-top:10px}#chartContent .full-screen-mask{width:100%;height:100%;background:#0000004d;position:absolute;top:0;left:0;z-index:9999}#chartContent mat-spinner.mat-spinner.mat-progress-spinner.mat-primary.mat-progress-spinner-indeterminate-animation{position:absolute;top:45%;left:47.5%!important;transform:translate(-25%,-25%)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { kind: "directive", type: i3.SeriesDirective, selector: "e-series-collection>e-series", inputs: ["animation", "bearFillColor", "binInterval", "border", "boxPlotMode", "bullFillColor", "cardinalSplineTension", "close", "colorName", "columnFacet", "columnSpacing", "columnWidth", "columnWidthInPixel", "connector", "cornerRadius", "dashArray", "dataSource", "dragSettings", "drawType", "emptyPointSettings", "enableComplexProperty", "enableSolidCandles", "enableTooltip", "errorBar", "fill", "groupName", "high", "intermediateSumIndexes", "isClosed", "legendImageUrl", "legendShape", "low", "marker", "maxRadius", "minRadius", "name", "negativeFillColor", "noRisers", "nonHighlightStyle", "opacity", "open", "paretoOptions", "pointColorMapping", "query", "segmentAxis", "segments", "selectionStyle", "showMean", "showNormalDistribution", "size", "splineType", "stackingGroup", "step", "sumIndexes", "summaryFillColor", "tooltipFormat", "tooltipMappingName", "trendlines", "type", "unSelectedStyle", "visible", "volume", "width", "xAxisName", "xName", "yAxisName", "yName", "zOrder"] }, { kind: "directive", type: i3.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { kind: "directive", type: i3.AxisDirective, selector: "e-axes>e-axis", inputs: ["border", "coefficient", "columnIndex", "crossesAt", "crossesInAxis", "crosshairTooltip", "description", "desiredIntervals", "edgeLabelPlacement", "enableAutoIntervalOnZooming", "enableScrollbarOnZooming", "enableTrim", "interval", "intervalType", "isIndexed", "isInversed", "labelFormat", "labelIntersectAction", "labelPadding", "labelPlacement", "labelPosition", "labelRotation", "labelStyle", "lineBreakAlignment", "lineStyle", "logBase", "majorGridLines", "majorTickLines", "maximum", "maximumLabelWidth", "maximumLabels", "minimum", "minorGridLines", "minorTickLines", "minorTicksPerInterval", "multiLevelLabels", "name", "opposedPosition", "placeNextToAxisLine", "plotOffset", "plotOffsetBottom", "plotOffsetLeft", "plotOffsetRight", "plotOffsetTop", "rangePadding", "rowIndex", "scrollbarSettings", "skeleton", "skeletonType", "span", "startAngle", "startFromZero", "stripLines", "tabIndex", "tickPosition", "title", "titlePadding", "titleRotation", "titleStyle", "valueType", "visible", "zoomFactor", "zoomPosition"] }, { kind: "directive", type: i3.AxesDirective, selector: "ejs-chart>e-axes" }], encapsulation: i0.ViewEncapsulation.None });
400
+ }
401
+ __decorate([
402
+ debounce(100)
403
+ ], BarChartsComponent.prototype, "changeSize", null);
404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BarChartsComponent, decorators: [{
405
+ type: Component,
406
+ args: [{ selector: "rs-bar-charts", encapsulation: ViewEncapsulation.None, providers: [DecimalPipe], template: "<div\r\n\tclass=\"content\"\r\n\t#chartContent\r\n\tid=\"chartContent\"\r\n\t*ngIf=\"dataColumn || dataLine\"\r\n>\r\n\t<ejs-chart\r\n\t\t#chart\r\n\t\tstyle=\"display: block\"\r\n\t\talign=\"center\"\r\n\t\t[title]=\"title\"\r\n\t\t[primaryXAxis]=\"primaryXAxis\"\r\n\t\t[primaryYAxis]=\"primaryYAxis\"\r\n\t\t[tooltip]=\"tooltip\"\r\n\t\t(load)=\"load($event)\"\r\n\t\t[chartArea]=\"chartArea\"\r\n\t\twidth=\"100%\"\r\n\t\t[height]=\"height\"\r\n\t\t[width]=\"width\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\t[legendSettings]=\"legend\"\r\n\t\t[palettes]=\"customPalette\"\r\n\t\t(pointRender)=\"onPointRender($event)\"\r\n\t\t[enableAnimation]=\"false\"\r\n\t\t(textRender)=\"textRender($event)\"\r\n\t\t(tooltipRender)=\"tooltipRender($event)\"\r\n\t\t(axisLabelRender)=\"OnChartAxisLabeRender($event)\"\r\n\t>\r\n\t\t<e-series-collection>\r\n\t\t\t<ng-container *ngIf=\"dataColumn && dataColumn.length > 0\">\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of column\"\r\n\t\t\t\t\t[dataSource]=\"dataColumn\"\r\n\t\t\t\t\ttype=\"Column\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u53EA\u9009\u7B2C\u4E8C\u4E2AY\u8F74\u65F6\uFF0C\u663E\u793A\u6298\u7EBF\u56FE -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length <= 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5171\u7528\u4E00\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType == lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u4E0D\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5C31\u7528\u4E24\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType != lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t\tyAxisName=\"yAxis2\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\t\t</e-series-collection>\r\n\r\n\t\t<e-axes>\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-axis\r\n\t\t\t\t\topposedPosition=\"true\"\r\n\t\t\t\t\trowIndex=\"0\"\r\n\t\t\t\t\tname=\"yAxis2\"\r\n\t\t\t\t\t[majorGridLines]=\"{ width: 0 }\"\r\n\t\t\t\t\ttitle=\"\"\r\n\t\t\t\t\t[lineStyle]=\"{ width: 0 }\"\r\n\t\t\t\t\t[majorTickLines]=\"{ width: 0 }\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-axis>\r\n\t\t\t</ng-container>\r\n\t\t</e-axes>\r\n\t</ejs-chart>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n", styles: ["#chartContent{width:100%;height:100%;padding-top:10px}#chartContent .full-screen-mask{width:100%;height:100%;background:#0000004d;position:absolute;top:0;left:0;z-index:9999}#chartContent mat-spinner.mat-spinner.mat-progress-spinner.mat-primary.mat-progress-spinner-indeterminate-animation{position:absolute;top:45%;left:47.5%!important;transform:translate(-25%,-25%)}\n"] }]
407
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DashboardService }, { type: i2.DecimalPipe }]; }, propDecorators: { content: [{
408
+ type: ViewChild,
409
+ args: ["chartContent", { static: false }]
410
+ }], chart: [{
411
+ type: ViewChild,
412
+ args: ["chart", { static: false }]
413
+ }], dataColumn: [{
414
+ type: Input
415
+ }], dataLine: [{
416
+ type: Input
417
+ }], dataStackingColumn: [{
418
+ type: Input
419
+ }], columnType: [{
420
+ type: Input
421
+ }], lineType: [{
422
+ type: Input
423
+ }], themeColor: [{
424
+ type: Input
425
+ }], portlet: [{
426
+ type: Input
427
+ }], dashboard: [{
428
+ type: Input
429
+ }], changeSize: [] } });
430
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvZGFzaGJvYXJkL2Jhci1jaGFydHMvYmFyLWNoYXJ0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvZGFzaGJvYXJkL2Jhci1jaGFydHMvYmFyLWNoYXJ0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQVV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFTbkMsTUFBTSxPQUFPLGtCQUFrQjtJQThGbkI7SUFDRDtJQUNDO0lBL0ZvQyxPQUFPLENBQWE7SUFDM0IsS0FBSyxDQUFpQjtJQUNwRCxVQUFVLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTtJQUNoQyxRQUFRLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTtJQUM5QixrQkFBa0IsR0FBUSxFQUFFLENBQUMsQ0FBQyxVQUFVO0lBQ3hDLFVBQVUsR0FBUSxRQUFRLENBQUM7SUFDM0IsUUFBUSxHQUFRLFFBQVEsQ0FBQztJQUN6QixVQUFVLEdBQVEsSUFBSSxDQUFDO0lBQ3ZCLE9BQU8sR0FBUSxJQUFJLENBQUM7SUFDcEIsU0FBUyxHQUFRLElBQUksQ0FBQztJQUN4QixNQUFNLEdBQVUsRUFBRSxDQUFDO0lBQ25CLFVBQVUsR0FBVSxFQUFFLENBQUM7SUFDdkIsTUFBTSxDQUFDO0lBQ1AsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sQ0FBQztJQUNQLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEUsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUViLFlBQVksR0FBVztRQUM1QixpQ0FBaUM7UUFDakMsZ0NBQWdDO1FBQ2hDLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsTUFBTSxFQUFFLEtBQUs7S0FDZCxDQUFDO0lBRUYsNkJBQTZCO0lBQ3RCLFlBQVksR0FBVztRQUM1QixTQUFTLEVBQUUsVUFBVTtRQUNyQixvQkFBb0IsRUFBRSxVQUFVO1FBQ2hDLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDNUIsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtRQUM1QixrQkFBa0IsRUFBRSxPQUFPO1FBRTNCLHlCQUF5QjtRQUN6QixvQkFBb0I7UUFDcEIsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixVQUFVLEVBQUU7WUFDVixVQUFVLEVBQUUsUUFBUTtZQUNwQixLQUFLLEVBQUUsU0FBUztZQUNoQixVQUFVLEVBQUUsT0FBTztZQUNuQixJQUFJLEVBQUUsTUFBTTtTQUNiO0tBQ0YsQ0FBQztJQUVGLDZCQUE2QjtJQUN0QixZQUFZLEdBQVc7UUFDNUIsS0FBSyxFQUFFLEVBQUU7UUFDVCxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQ3ZCLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDNUIsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtRQUNwQyxXQUFXLEVBQUUsSUFBSTtLQUNsQixDQUFDO0lBRUssU0FBUyxHQUFXO1FBQ3pCLE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRSxDQUFDO1NBQ1Q7S0FDRixDQUFDO0lBRUYsa0JBQWtCO0lBQ1gsT0FBTyxHQUFXO1FBQ3ZCLE1BQU0sRUFBRSxJQUFJO0tBQ2IsQ0FBQztJQUVGLE9BQU87SUFDQSxNQUFNLEdBQVc7UUFDdEIsT0FBTyxFQUFFLElBQUk7UUFDYixlQUFlLEVBQUUsSUFBSTtLQUN0QixDQUFDO0lBQ0Ysb0JBQW9CO0lBQ2IsSUFBSSxDQUFDLElBQXNCO1FBQ2hDLElBQUksYUFBYSxHQUFXLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFlLENBQzdCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdELE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO2FBQ3pCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQ3BDLENBQUM7SUFDSixDQUFDO0lBQ0Qsa0JBQWtCO0lBQ1gsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUUxQixNQUFNLEdBQVcsT0FBTyxDQUFDO0lBQ3pCLEtBQUssR0FBVyxNQUFNLENBQUM7SUFFaEIsYUFBYSxHQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU87SUFDcEMsYUFBYSxHQUFtQixFQUFFLENBQUM7SUFDcEMsVUFBVSxDQUFlO0lBQ3pCLFlBQVksR0FBRyxFQUFFLENBQUM7SUFFekIsWUFDVSxHQUFzQixFQUN2QixnQkFBa0MsRUFDakMsV0FBd0I7UUFGeEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUMvQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzdELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzdELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztnQkFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztnQkFDckMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdEI7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixPQUFPLEVBQUUsU0FBUztZQUNsQixTQUFTLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLE1BQU07YUFDUDtTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsVUFBVSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO3dCQUNYLE9BQU87cUJBQ1I7b0JBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDdkIsT0FBTztxQkFDUjtvQkFDRCxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUU7d0JBQ2pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7cUJBQzFDO3lCQUFNO3dCQUNMLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO3FCQUMxQztpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO3dCQUNYLE9BQU87cUJBQ1I7b0JBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDdkIsT0FBTztxQkFDUjtvQkFFRCxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUU7d0JBQ2pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7cUJBQzFDO3lCQUFNO3dCQUNMLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO3FCQUMxQztpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUNoQixRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3pCLEtBQUssR0FBRzt3QkFDTixDQUFDLENBQUMsSUFBSTs0QkFDSixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUM7d0JBQzlELE9BQU87b0JBQ1QsS0FBSyxHQUFHO3dCQUNOLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDO3dCQUNsRSxPQUFPO29CQUNULEtBQUssSUFBSTt3QkFDUCxDQUFDLENBQUMsSUFBSTs0QkFDSixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUM7d0JBQ2pFLE9BQU87b0JBQ1QsS0FBSyxHQUFHO3dCQUNOLENBQUMsQ0FBQyxJQUFJOzRCQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQzt3QkFDcEUsT0FBTztvQkFDVDt3QkFDRSxPQUFPO2lCQUNWO2FBQ0Y7aUJBQU07Z0JBQ0wsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7YUFDYjtTQUNGO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pELEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLElBQUksUUFBUSxFQUFFO29CQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFDZixLQUFLLEVBQUUsUUFBUTt3QkFDZixLQUFLLEVBQUUsQ0FBQzt3QkFDUixJQUFJLEVBQUUsQ0FBQztxQkFDUixDQUFDLENBQUM7aUJBQ0o7YUFDRjtTQUNGO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRTtvQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7d0JBQ25CLEtBQUssRUFBRSxRQUFRO3dCQUNmLEtBQUssRUFBRSxDQUFDO3dCQUNSLElBQUksRUFBRSxDQUFDO3FCQUNSLENBQUMsQ0FBQztpQkFDSjthQUNGO1NBQ0Y7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxPQUFPO1FBQ1AsMEJBQTBCO1FBQzFCLDBCQUEwQjtRQUMxQixzQ0FBc0M7UUFDdEMsc0NBQXNDO1FBQ3RDLFVBQVU7UUFDVix3QkFBd0I7UUFDeEIsMEJBQTBCO1FBQzFCLG9DQUFvQztRQUNwQyxvQ0FBb0M7UUFDcEMsVUFBVTtRQUNWLHlCQUF5QjtRQUN6QixpRUFBaUU7UUFDakUsaUVBQWlFO1FBQ2pFLEtBQUs7UUFDTCxNQUFNO1FBQ04sb0JBQW9CO1FBQ3BCLElBQUk7SUFDTixDQUFDO0lBRUQsWUFBWTtRQUNWLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELGNBQWMsQ0FBTTtJQUNwQixlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25ELEtBQUssSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUN6QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0JBQzVDLDRCQUE0QjtnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNoRSxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ04sT0FBTzthQUNSO1lBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTtnQkFDN0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNyQjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULGFBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBR0QsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNO1FBQ3RCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQVM7UUFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxjQUFjLEVBQUU7WUFDeEMsSUFDRSxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVM7Z0JBQzVCLENBQUMsSUFBSSxDQUFDLFVBQVU7b0JBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFDM0IsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsRUFDN0I7Z0JBQ0EsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzlDO2lCQUFNO2dCQUNMLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDcEIsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsSUFBSTtvQkFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ3RCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7YUFDbEM7U0FDRjthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFO1lBQ3pDLElBQ0UsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTO2dCQUMxQixJQUFJLENBQUMsVUFBVTtnQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzFCO2dCQUNBLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5QztpQkFBTTtnQkFDTCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxDQUFDLElBQUk7b0JBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUN0QixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2FBQ2xDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUs7UUFDUixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDakIsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7YUFDdkIsT0FBTyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLDZEQUE2RDtJQUMvRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBTztRQUN0QixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsT0FBTyxHQUFHLFVBQVUsR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUk7UUFDdkIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDeEQsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUNqQixPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDckMsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xCLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFtQztRQUN0RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNCLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEtBQUssZUFBZSxFQUFFO1lBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDbEUsQ0FBQyxDQUNGLEdBQUcsQ0FBQztZQUNMLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQ2hCLE9BQU8sQ0FDUixFQUFFLENBQUM7SUFDTixDQUFDO3dHQWxiVSxrQkFBa0I7NEZBQWxCLGtCQUFrQixvUUFGbEIsQ0FBQyxXQUFXLENBQUMseU9DM0IxQixreklBc0pBOztBRHVMRTtJQURDLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0RBUWI7NEZBdlRVLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxlQUFlLGlCQUdWLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxXQUFXLENBQUM7aUtBR3NCLE9BQU87c0JBQXBELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDTCxLQUFLO3NCQUEzQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQzVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBc1NOLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIElMb2FkZWRFdmVudEFyZ3MsXHJcbiAgQ2hhcnRUaGVtZSxcclxuICBDaGFydENvbXBvbmVudCxcclxuICBJVG9vbHRpcFJlbmRlckV2ZW50QXJncyxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzXCI7XHJcbmltcG9ydCB7IERyb3BEb3duTGlzdCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkU2VydmljZSB9IGZyb20gXCIuLi9kYXNoYm9hcmQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtYmFyLWNoYXJ0c1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYmFyLWNoYXJ0cy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9iYXItY2hhcnRzLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbRGVjaW1hbFBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFyQ2hhcnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKFwiY2hhcnRDb250ZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250ZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJjaGFydFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgY2hhcnQ6IENoYXJ0Q29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGRhdGFDb2x1bW46IGFueSA9IFtdOyAvLyAg5p+x54q25Zu+5pWw5o2u5rqQXHJcbiAgQElucHV0KCkgZGF0YUxpbmU6IGFueSA9IFtdOyAvLyAg5oqY57q/5Zu+5pWw5o2u5rqQXHJcbiAgQElucHV0KCkgZGF0YVN0YWNraW5nQ29sdW1uOiBhbnkgPSBbXTsgLy8gIOWghuenr+WbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGNvbHVtblR5cGU6IGFueSA9IFwibnVtYmVyXCI7XHJcbiAgQElucHV0KCkgbGluZVR5cGU6IGFueSA9IFwibnVtYmVyXCI7XHJcbiAgQElucHV0KCkgdGhlbWVDb2xvcjogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBwb3J0bGV0OiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRhc2hib2FyZDogYW55ID0gbnVsbDtcclxuICBwdWJsaWMgY29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjb2x1bW5MaW5lOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBjb25maWc7XHJcbiAgcHVibGljIF9kYXRhU3RhY2tpbmdDb2x1bW4gPSBbXTtcclxuICBwdWJsaWMgbWFya2VyO1xyXG4gIHB1YmxpYyBzcGVjaWFsS2V5ID0gW1wiSVJSXCIsIFwiRFBJXCIsIFwiTU9JQ1wiLCBcIlBJQ1wiLCBcIlJWUElcIiwgXCJUVlBJXCJdO1xyXG4gIHBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyB6b29tU2V0dGluZ3M6IE9iamVjdCA9IHtcclxuICAgIC8vIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogdHJ1ZSxcclxuICAgIC8vIHRvb2xiYXJJdGVtczogW10sXHJcbiAgICAvLyBlbmFibGVQYW46IHRydWUsXHJcbiAgICBlbmFibGU6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIC8vSW5pdGlhbGl6aW5nIFByaW1hcnkgWCBBeGlzXHJcbiAgcHVibGljIHByaW1hcnlYQXhpczogT2JqZWN0ID0ge1xyXG4gICAgdmFsdWVUeXBlOiBcIkNhdGVnb3J5XCIsXHJcbiAgICBsYWJlbEludGVyc2VjdEFjdGlvbjogXCJSb3RhdGU0NVwiLFxyXG4gICAgbWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIG1ham9yVGlja0xpbmVzOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBlZGdlTGFiZWxQbGFjZW1lbnQ6IFwiU2hpZnRcIixcclxuXHJcbiAgICAvLyBlbmFibGVTY3JvbGxiYXI6IHRydWUsXHJcbiAgICAvLyBlbmFibGVUcmltOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlUGFuOiB0cnVlLFxyXG4gICAgLy8gcm90YXRlOiAwLFxyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBmb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxyXG4gICAgICBjb2xvcjogXCIjNDQ1NjZjXCIsXHJcbiAgICAgIGZvbnRGYW1pbHk6IFwiQXJpYWxcIixcclxuICAgICAgc2l6ZTogXCIxM3B4XCIsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIC8vSW5pdGlhbGl6aW5nIFByaW1hcnkgWSBBeGlzXHJcbiAgcHVibGljIHByaW1hcnlZQXhpczogT2JqZWN0ID0ge1xyXG4gICAgdGl0bGU6IFwiXCIsIC8vRmlyc3QgWVxyXG4gICAgbGluZVN0eWxlOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBtYWpvclRpY2tMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgbWFqb3JHcmlkTGluZXM6IHsgY29sb3I6IFwiI2YyZjJmMlwiIH0sIC8vIOiuvue9ruS4u+imgee9keagvOe6v+minOiJslxyXG4gICAgbGFiZWxGb3JtYXQ6IFwibjJcIixcclxuICB9O1xyXG5cclxuICBwdWJsaWMgY2hhcnRBcmVhOiBPYmplY3QgPSB7XHJcbiAgICBib3JkZXI6IHtcclxuICAgICAgd2lkdGg6IDAsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIC8vIOm8oOagh+enu+WIsGJhcuS4iumdouaYvuekuueahGJveFxyXG4gIHB1YmxpYyB0b29sdGlwOiBPYmplY3QgPSB7XHJcbiAgICBlbmFibGU6IHRydWUsXHJcbiAgfTtcclxuXHJcbiAgLy8g5Zu+5L6L6K6+572uXHJcbiAgcHVibGljIGxlZ2VuZDogT2JqZWN0ID0ge1xyXG4gICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgIGVuYWJsZUhpZ2hsaWdodDogdHJ1ZSxcclxuICB9O1xyXG4gIC8vIGN1c3RvbSBjb2RlIHN0YXJ0XHJcbiAgcHVibGljIGxvYWQoYXJnczogSUxvYWRlZEV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgbGV0IHNlbGVjdGVkVGhlbWU6IHN0cmluZyA9IGxvY2F0aW9uLmhhc2guc3BsaXQoXCIvXCIpWzFdO1xyXG4gICAgc2VsZWN0ZWRUaGVtZSA9IHNlbGVjdGVkVGhlbWUgPyBzZWxlY3RlZFRoZW1lIDogXCJNYXRlcmlhbFwiO1xyXG4gICAgYXJncy5jaGFydC50aGVtZSA9IDxDaGFydFRoZW1lPihcclxuICAgICAgKHNlbGVjdGVkVGhlbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzZWxlY3RlZFRoZW1lLnNsaWNlKDEpKVxyXG4gICAgICAgIC5yZXBsYWNlKC8tZGFyay9pLCBcIkRhcmtcIilcclxuICAgICAgICAucmVwbGFjZSgvY29udHJhc3QvaSwgXCJDb250cmFzdFwiKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8gY3VzdG9tIGNvZGUgZW5kXHJcbiAgcHVibGljIHRpdGxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBoZWlnaHQ6IHN0cmluZyA9IFwiMjUwcHhcIjtcclxuICB3aWR0aDogc3RyaW5nID0gXCIxMDAlXCI7XHJcblxyXG4gIHB1YmxpYyBjdXN0b21QYWxldHRlOiBzdHJpbmdbXSA9IFtdOyAvL+m7mOiupOminOiJsue7hFxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgZXhwb3J0VHlwZTogRHJvcERvd25MaXN0O1xyXG4gIHB1YmxpYyBtYXJrZXJGb3JtYXQgPSBcIlwiO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBkYXNoYm9hcmRTZXJ2aWNlOiBEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGVcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb25maWcgPSB0aGlzLnBvcnRsZXQuY29uZmlnICYmIEpTT04ucGFyc2UodGhpcy5wb3J0bGV0LmNvbmZpZyk7XHJcbiAgICB0aGlzLmluaXRNYXJrZXJDb25maWcoKTtcclxuICAgIHRoaXMuaW5pdERhdGEoKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0U3dpdGNoQ29uZmlnKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcnRsZXQubmV3SWQgPT09IHJlcy5pZCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maWcuaGFzTWFya2VyID0gcmVzLmNoZWNrZWQ7XHJcbiAgICAgICAgICB0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0TWFya2VyRm9ybWF0KCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcnRsZXQubmV3SWQgPT09IHJlcy5uZXdJZCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maWcubWFya2VyRm9ybWF0ID0gcmVzLm1hcmtlckZvcm1hdDtcclxuICAgICAgICAgIHRoaXMucG9ydGxldC5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgICB0aGlzLm1hcmtlckZvcm1hdCA9IHJlcy5tYXJrZXJGb3JtYXQ7XHJcbiAgICAgICAgICB0aGlzLmluaXRNYXJrZXJDb25maWcoKTtcclxuICAgICAgICAgIHRoaXMuY2hhcnQucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRNYXJrZXJDb25maWcoKSB7XHJcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCIgPyBcInAyXCIgOiBcIm4yXCI7XHJcbiAgICB0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBjb25zdCBoYXNNYXJrZXIgPSB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5oYXNNYXJrZXI7XHJcbiAgICB0aGlzLm1hcmtlckZvcm1hdCA9IHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLm1hcmtlckZvcm1hdDtcclxuICAgIHRoaXMubWFya2VyID0ge1xyXG4gICAgICB2aXNpYmxlOiBoYXNNYXJrZXIsXHJcbiAgICAgIGRhdGFMYWJlbDoge1xyXG4gICAgICAgIHZpc2libGU6IGhhc01hcmtlcixcclxuICAgICAgICBmb3JtYXQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH1cclxuICB0ZXh0UmVuZGVyKGUpIHtcclxuICAgIHRoaXMuZGF0YUxpbmUuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zcGVjaWFsS2V5LmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgIGlmICghZS50ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnRleHQgIT0gZGF0YVtrZXldKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChrZXkgPT09IFwiSVJSXCIpIHtcclxuICAgICAgICAgICAgZS50ZXh0ID0gKGUudGV4dCAqIDEwMCkudG9GaXhlZCgyKSArIFwiJVwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZS50ZXh0ID0gTnVtYmVyKGUudGV4dCkudG9GaXhlZCgyKSArIFwieFwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0YUNvbHVtbi5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNwZWNpYWxLZXkuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICAgICAgaWYgKCFlLnRleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGUudGV4dCAhPSBkYXRhW2tleV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChrZXkgPT09IFwiSVJSXCIpIHtcclxuICAgICAgICAgICAgZS50ZXh0ID0gKGUudGV4dCAqIDEwMCkudG9GaXhlZCgyKSArIFwiJVwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZS50ZXh0ID0gTnVtYmVyKGUudGV4dCkudG9GaXhlZCgyKSArIFwieFwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIGlmICghaXNOYU4oZS50ZXh0KSkge1xyXG4gICAgICBpZiAoZS50ZXh0ICE9PSAwKSB7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLm1hcmtlckZvcm1hdCkge1xyXG4gICAgICAgICAgY2FzZSBcIk1cIjpcclxuICAgICAgICAgICAgZS50ZXh0ID1cclxuICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwMDAwLCBcIjEuMi0yXCIpICsgXCJtXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGNhc2UgXCJLXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9IHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAsIFwiMS4yLTJcIikgKyBcImtcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgY2FzZSBcImJuXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZS50ZXh0IC8gMTAwMDAwMDAwMCwgXCIxLjItMlwiKSArIFwiYlwiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBjYXNlIFwiVFwiOlxyXG4gICAgICAgICAgICBlLnRleHQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAwMDAwMDAwMDAsIFwiMS4yLTJcIikgKyBcInRcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlLnRleHQgPSBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0RGF0YSgpIHtcclxuICAgIHRoaXMuY29sdW1uID0gW107XHJcbiAgICB0aGlzLmNvbHVtbkxpbmUgPSBbXTtcclxuICAgIGlmICh0aGlzLmRhdGFDb2x1bW4gJiYgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLmRhdGFDb2x1bW5bMF0pIHtcclxuICAgICAgICBpZiAoaSAhPSBcInBlcmlvZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbi5wdXNoKHtcclxuICAgICAgICAgICAgeE5hbWU6IFwicGVyaW9kXCIsXHJcbiAgICAgICAgICAgIHlOYW1lOiBpLFxyXG4gICAgICAgICAgICBuYW1lOiBpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YUxpbmUgJiYgdGhpcy5kYXRhTGluZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5kYXRhTGluZVswXSkge1xyXG4gICAgICAgIGlmIChpICE9IFwicGVyaW9kXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29sdW1uTGluZS5wdXNoKHtcclxuICAgICAgICAgICAgeE5hbWU6IFwicGVyaW9kXCIsXHJcbiAgICAgICAgICAgIHlOYW1lOiBpLFxyXG4gICAgICAgICAgICBuYW1lOiBpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudGhlbWVDb2xvciAmJiB0aGlzLnRoZW1lQ29sb3IubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmN1c3RvbVBhbGV0dGUgPSB0aGlzLnRoZW1lQ29sb3I7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vIFx0KGNoYW5nZXMuZGF0YUNvbHVtbiAmJlxyXG4gICAgLy8gXHRcdCF0aGlzLmFycmF5c0FyZUVxdWFsKFxyXG4gICAgLy8gXHRcdFx0Y2hhbmdlcy5kYXRhQ29sdW1uLmN1cnJlbnRWYWx1ZSxcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUNvbHVtbi5wcmV2aW91c1ZhbHVlXHJcbiAgICAvLyBcdFx0KSkgfHxcclxuICAgIC8vIFx0KGNoYW5nZXMuZGF0YUxpbmUgJiZcclxuICAgIC8vIFx0XHQhdGhpcy5hcnJheXNBcmVFcXVhbChcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUxpbmUuY3VycmVudFZhbHVlLFxyXG4gICAgLy8gXHRcdFx0Y2hhbmdlcy5kYXRhTGluZS5wcmV2aW91c1ZhbHVlXHJcbiAgICAvLyBcdFx0KSkgfHxcclxuICAgIC8vIFx0IXRoaXMuYXJyYXlzQXJlRXF1YWwoXHJcbiAgICAvLyBcdFx0Y2hhbmdlcy50aGVtZUNvbG9yID8gY2hhbmdlcy50aGVtZUNvbG9yLmN1cnJlbnRWYWx1ZSA6IG51bGwsXHJcbiAgICAvLyBcdFx0Y2hhbmdlcy50aGVtZUNvbG9yID8gY2hhbmdlcy50aGVtZUNvbG9yLnByZXZpb3VzVmFsdWUgOiBudWxsXHJcbiAgICAvLyBcdClcclxuICAgIC8vICkge1xyXG4gICAgLy8gXHR0aGlzLmluaXREYXRhKCk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoQ2hhcnQoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY2hhcnQpIHRoaXMuY2hhcnQucmVmcmVzaCgpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICByZXNpemVPYnNlcnZlcjogYW55O1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xyXG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZW50cnkuY29udGVudFJlY3Q7XHJcbiAgICAgICAgLy8g5Zyo6L+Z6YeM5omn6KGM5L2g5oOz6KaB55qE5pON5L2c77yM5q+U5aaC5pu05paw5Zu+6KGo5oiW5YW25LuW55u45YWz5pON5L2cXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0U3RhcnRSZWZyZXNoKCkuc3Vic2NyaWJlKChkYXNoYm9hcmRJZCkgPT4ge1xyXG4gICAgICAgIGlmIChkYXNoYm9hcmRJZCA9PT0gdGhpcy5kYXNoYm9hcmQuaWQpIHtcclxuICAgICAgICAgIHRoaXMucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFJlZnJlc2hHYWRnZXQoKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgICBpZiAoIWUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbmV3SWQgPSBlW1wibmV3SWRcIl07XHJcbiAgICAgICAgaWYgKG5ld0lkID09PSB0aGlzLnBvcnRsZXQubmV3SWQgfHwgbmV3SWQgPT09IHRoaXMucG9ydGxldC5pZCkge1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hDaGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIOWcqOe7hOS7tumUgOavgeaXtuWPlua2iOebkeWQrFxyXG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoZWxlKSA9PiBlbGUudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBAZGVib3VuY2UoMTAwKVxyXG4gIGNoYW5nZVNpemUod2lkdGgsIGhlaWdodCkge1xyXG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMud2lkdGggPSBgJHt3aWR0aH1weGA7XHJcbiAgICB0aGlzLmhlaWdodCA9IGAke2hlaWdodCAtIDEwfXB4YDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0Q2hhcnQoKSB7XHJcbiAgICB0aGlzLmNoYXJ0LmV4cG9ydE1vZHVsZS5leHBvcnQoXCJQTkdcIiwgXCJDaGFydFwiKTtcclxuICB9XHJcblxyXG4gIE9uQ2hhcnRBeGlzTGFiZVJlbmRlcihhcmdzOiBhbnkpIHtcclxuICAgIGlmIChhcmdzLmF4aXMucHJvcE5hbWUgPT0gXCJwcmltYXJ5WUF4aXNcIikge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb2x1bW5UeXBlID09IFwicGVyY2VudFwiIHx8XHJcbiAgICAgICAgKHRoaXMuZGF0YUNvbHVtbiAmJlxyXG4gICAgICAgICAgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA8PSAwICYmXHJcbiAgICAgICAgICB0aGlzLmxpbmVUeXBlID09IFwicGVyY2VudFwiKVxyXG4gICAgICApIHtcclxuICAgICAgICBhcmdzLnRleHQgPSB0aGlzLmZvcm1hdFBlcmNlbnRhZ2UoYXJncy50ZXh0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNOYU4oYXJncy50ZXh0KSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcmdzLnRleHQgPVxyXG4gICAgICAgICAgTnVtYmVyKGFyZ3MudGV4dCkgPj0gMFxyXG4gICAgICAgICAgICA/IHRoaXMuZ2V0VChhcmdzLnRleHQpXHJcbiAgICAgICAgICAgIDogYC0ke3RoaXMuZ2V0VChhcmdzLnRleHQpfWA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoYXJncy5heGlzLnByb3BOYW1lID09IFwieUF4aXMyXCIpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMubGluZVR5cGUgPT0gXCJwZXJjZW50XCIgJiZcclxuICAgICAgICB0aGlzLmRhdGFDb2x1bW4gJiZcclxuICAgICAgICB0aGlzLmRhdGFDb2x1bW4ubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICBhcmdzLnRleHQgPSB0aGlzLmZvcm1hdFBlcmNlbnRhZ2UoYXJncy50ZXh0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNOYU4oYXJncy50ZXh0KSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcmdzLnRleHQgPVxyXG4gICAgICAgICAgTnVtYmVyKGFyZ3MudGV4dCkgPj0gMFxyXG4gICAgICAgICAgICA/IHRoaXMuZ2V0VChhcmdzLnRleHQpXHJcbiAgICAgICAgICAgIDogYC0ke3RoaXMuZ2V0VChhcmdzLnRleHQpfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFQodmFsdWUpIHtcclxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpXHJcbiAgICAgIC5yZXBsYWNlKC9bXjAtOS5dL2csIFwiXCIpXHJcbiAgICAgIC5yZXBsYWNlKC8oXFxkKSg/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiJDEsXCIpO1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKE51bWJlcih2YWx1ZSksIFwiMS4yLTJcIik7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRQZXJjZW50YWdlKGRlY2ltYWwpIHtcclxuICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSAoZGVjaW1hbCAqIDEwMCkudG9GaXhlZCgyKTtcclxuICAgIHJldHVybiBgJHtwZXJjZW50YWdlfSVgO1xyXG4gIH1cclxuXHJcbiAgYXJyYXlzQXJlRXF1YWwoYXJyMSwgYXJyMikge1xyXG4gICAgaWYgKCghYXJyMSAmJiBhcnIyKSB8fCAoYXJyMSAmJiAhYXJyMikpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghYXJyMSAmJiAhYXJyMikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgb2JqMSA9IGFycjFbaV07XHJcbiAgICAgIGNvbnN0IG9iajIgPSBhcnIyW2ldO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBvYmoxICE9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvYmoyICE9PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgaWYgKG9iajEgIT09IG9iajIpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdHNBcmVFcXVhbChvYmoxLCBvYmoyKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb2JqZWN0c0FyZUVxdWFsKG9iajEsIG9iajIpIHtcclxuICAgIGNvbnN0IGtleXMxID0gT2JqZWN0LmtleXMob2JqMSk7XHJcbiAgICBjb25zdCBrZXlzMiA9IE9iamVjdC5rZXlzKG9iajIpO1xyXG5cclxuICAgIGlmIChrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQga2V5IG9mIGtleXMxKSB7XHJcbiAgICAgIGlmIChvYmoxW2tleV0gIT09IG9iajJba2V5XSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25Qb2ludFJlbmRlcihlKSB7XHJcbiAgICBpZiAoZS5wb2ludC55ID09IDApIHtcclxuICAgICAgZS5jYW5jZWwgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvb2x0aXBSZW5kZXIoYXJnczogSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MgfCBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChpc05hTihhcmdzLmRhdGEucG9pbnRZKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiKSB7XHJcbiAgICAgIGFyZ3MudGV4dCA9IGAke2FyZ3MuZGF0YS5wb2ludFh9OiAkeyhhcmdzLmRhdGEucG9pbnRZICogMTAwKS50b0ZpeGVkKFxyXG4gICAgICAgIDJcclxuICAgICAgKX0lYDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXJncy50ZXh0ID0gYCR7YXJncy5kYXRhLnBvaW50WH06ICR7dGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oXHJcbiAgICAgIGFyZ3MuZGF0YS5wb2ludFksXHJcbiAgICAgIFwiMS4yLTJcIlxyXG4gICAgKX1gO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcblx0Y2xhc3M9XCJjb250ZW50XCJcclxuXHQjY2hhcnRDb250ZW50XHJcblx0aWQ9XCJjaGFydENvbnRlbnRcIlxyXG5cdCpuZ0lmPVwiZGF0YUNvbHVtbiB8fCBkYXRhTGluZVwiXHJcbj5cclxuXHQ8ZWpzLWNoYXJ0XHJcblx0XHQjY2hhcnRcclxuXHRcdHN0eWxlPVwiZGlzcGxheTogYmxvY2tcIlxyXG5cdFx0YWxpZ249XCJjZW50ZXJcIlxyXG5cdFx0W3RpdGxlXT1cInRpdGxlXCJcclxuXHRcdFtwcmltYXJ5WEF4aXNdPVwicHJpbWFyeVhBeGlzXCJcclxuXHRcdFtwcmltYXJ5WUF4aXNdPVwicHJpbWFyeVlBeGlzXCJcclxuXHRcdFt0b29sdGlwXT1cInRvb2x0aXBcIlxyXG5cdFx0KGxvYWQpPVwibG9hZCgkZXZlbnQpXCJcclxuXHRcdFtjaGFydEFyZWFdPVwiY2hhcnRBcmVhXCJcclxuXHRcdHdpZHRoPVwiMTAwJVwiXHJcblx0XHRbaGVpZ2h0XT1cImhlaWdodFwiXHJcblx0XHRbd2lkdGhdPVwid2lkdGhcIlxyXG5cdFx0W3pvb21TZXR0aW5nc109XCJ6b29tU2V0dGluZ3NcIlxyXG5cdFx0W2xlZ2VuZFNldHRpbmdzXT1cImxlZ2VuZFwiXHJcblx0XHRbcGFsZXR0ZXNdPVwiY3VzdG9tUGFsZXR0ZVwiXHJcblx0XHQocG9pbnRSZW5kZXIpPVwib25Qb2ludFJlbmRlcigkZXZlbnQpXCJcclxuXHRcdFtlbmFibGVBbmltYXRpb25dPVwiZmFsc2VcIlxyXG5cdFx0KHRleHRSZW5kZXIpPVwidGV4dFJlbmRlcigkZXZlbnQpXCJcclxuXHRcdCh0b29sdGlwUmVuZGVyKT1cInRvb2x0aXBSZW5kZXIoJGV2ZW50KVwiXHJcblx0XHQoYXhpc0xhYmVsUmVuZGVyKT1cIk9uQ2hhcnRBeGlzTGFiZVJlbmRlcigkZXZlbnQpXCJcclxuXHQ+XHJcblx0XHQ8ZS1zZXJpZXMtY29sbGVjdGlvbj5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFDb2x1bW4gJiYgZGF0YUNvbHVtbi5sZW5ndGggPiAwXCI+XHJcblx0XHRcdFx0PGUtc2VyaWVzXHJcblx0XHRcdFx0XHQqbmdGb3I9XCJsZXQgaSBvZiBjb2x1bW5cIlxyXG5cdFx0XHRcdFx0W2RhdGFTb3VyY2VdPVwiZGF0YUNvbHVtblwiXHJcblx0XHRcdFx0XHR0eXBlPVwiQ29sdW1uXCJcclxuXHRcdFx0XHRcdFt4TmFtZV09XCJpLnhOYW1lXCJcclxuXHRcdFx0XHRcdFttYXJrZXJdPVwibWFya2VyXCJcclxuXHRcdFx0XHRcdFt5TmFtZV09XCJpLnlOYW1lXCJcclxuXHRcdFx0XHRcdFtuYW1lXT1cImkubmFtZVwiXHJcblx0XHRcdFx0XHRjb2x1bW5TcGFjaW5nPVwiMC4xXCJcclxuXHRcdFx0XHRcdHdpZHRoPVwiMlwiXHJcblx0XHRcdFx0XHRvcGFjaXR5PVwiMVwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdDwvZS1zZXJpZXM+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0PCEtLSDlj6rpgInnrKzkuozkuKpZ6L205pe277yM5pi+56S65oqY57q/5Zu+IC0tPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0Km5nSWY9XCJcclxuXHRcdFx0XHRcdGRhdGFMaW5lICYmXHJcblx0XHRcdFx0XHRkYXRhTGluZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uLmxlbmd0aCA8PSAwXHJcblx0XHRcdFx0XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxlLXNlcmllc1xyXG5cdFx0XHRcdFx0Km5nRm9yPVwibGV0IGkgb2YgY29sdW1uTGluZVwiXHJcblx0XHRcdFx0XHRbZGF0YVNvdXJjZV09XCJkYXRhTGluZVwiXHJcblx0XHRcdFx0XHR0eXBlPVwiU3BsaW5lXCJcclxuXHRcdFx0XHRcdFt4TmFtZV09XCJpLnhOYW1lXCJcclxuXHRcdFx0XHRcdFt5TmFtZV09XCJpLnlOYW1lXCJcclxuXHRcdFx0XHRcdFttYXJrZXJdPVwibWFya2VyXCJcclxuXHRcdFx0XHRcdFtuYW1lXT1cImkubmFtZVwiXHJcblx0XHRcdFx0XHRjb2x1bW5TcGFjaW5nPVwiMC4xXCJcclxuXHRcdFx0XHRcdHdpZHRoPVwiMlwiXHJcblx0XHRcdFx0XHRvcGFjaXR5PVwiMVwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdDwvZS1zZXJpZXM+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0PCEtLSDlpoLmnpzkuKTkuKpZ6L205piv5ZCM57G75Z6L5pWw5o2u77yM5YWx55So5LiA5LiqWei9tCAtLT5cclxuXHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdCpuZ0lmPVwiXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0XHRcdGRhdGFMaW5lICYmXHJcblx0XHRcdFx0XHRkYXRhTGluZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdFx0XHRjb2x1bW5UeXBlID09IGxpbmVUeXBlXHJcblx0XHRcdFx0XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxlLXNlcmllc1xyXG5cdFx0XHRcdFx0Km5nRm9yPVwibGV0IGkgb2YgY29sdW1uTGluZVwiXHJcblx0XHRcdFx0XHRbZGF0YVNvdXJjZV09XCJkYXRhTGluZVwiXHJcblx0XHRcdFx0XHR0eXBlPVwiU3BsaW5lXCJcclxuXHRcdFx0XHRcdFt4TmFtZV09XCJpLnhOYW1lXCJcclxuXHRcdFx0XHRcdFt5TmFtZV09XCJpLnlOYW1lXCJcclxuXHRcdFx0XHRcdFtuYW1lXT1cImkubmFtZVwiXHJcblx0XHRcdFx0XHRbbWFya2VyXT1cIm1hcmtlclwiXHJcblx0XHRcdFx0XHRjb2x1bW5TcGFjaW5nPVwiMC4xXCJcclxuXHRcdFx0XHRcdHdpZHRoPVwiMlwiXHJcblx0XHRcdFx0XHRvcGFjaXR5PVwiMVwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdDwvZS1zZXJpZXM+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0PCEtLSDlpoLmnpzkuKTkuKpZ6L205piv5LiN5ZCM57G75Z6L5pWw5o2u77yM5bCx55So5Lik5LiqWei9tCAtLT5cclxuXHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdCpuZ0lmPVwiXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0XHRcdGRhdGFMaW5lICYmXHJcblx0XHRcdFx0XHRkYXRhTGluZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdFx0XHRjb2x1bW5UeXBlICE9IGxpbmVUeXBlXHJcblx0XHRcdFx0XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxlLXNlcmllc1xyXG5cdFx0XHRcdFx0Km5nRm9yPVwibGV0IGkgb2YgY29sdW1uTGluZVwiXHJcblx0XHRcdFx0XHRbZGF0YVNvdXJjZV09XCJkYXRhTGluZVwiXHJcblx0XHRcdFx0XHR0eXBlPVwiU3BsaW5lXCJcclxuXHRcdFx0XHRcdFt4TmFtZV09XCJpLnhOYW1lXCJcclxuXHRcdFx0XHRcdFt5TmFtZV09XCJpLnlOYW1lXCJcclxuXHRcdFx0XHRcdFttYXJrZXJdPVwibWFya2VyXCJcclxuXHRcdFx0XHRcdFtuYW1lXT1cImkubmFtZVwiXHJcblx0XHRcdFx0XHR3aWR0aD1cIjJcIlxyXG5cdFx0XHRcdFx0b3BhY2l0eT1cIjFcIlxyXG5cdFx0XHRcdFx0eUF4aXNOYW1lPVwieUF4aXMyXCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0PC9lLXNlcmllcz5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8L2Utc2VyaWVzLWNvbGxlY3Rpb24+XHJcblxyXG5cdFx0PGUtYXhlcz5cclxuXHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdCpuZ0lmPVwiXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uICYmXHJcblx0XHRcdFx0XHRkYXRhQ29sdW1uLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0XHRcdGRhdGFMaW5lICYmXHJcblx0XHRcdFx0XHRkYXRhTGluZS5sZW5ndGggPiAwXHJcblx0XHRcdFx0XCJcclxuXHRcdFx0PlxyXG5cdFx0XHRcdDxlLWF4aXNcclxuXHRcdFx0XHRcdG9wcG9zZWRQb3NpdGlvbj1cInRydWVcIlxyXG5cdFx0XHRcdFx0cm93SW5kZXg9XCIwXCJcclxuXHRcdFx0XHRcdG5hbWU9XCJ5QXhpczJcIlxyXG5cdFx0XHRcdFx0W21ham9yR3JpZExpbmVzXT1cInsgd2lkdGg6IDAgfVwiXHJcblx0XHRcdFx0XHR0aXRsZT1cIlwiXHJcblx0XHRcdFx0XHRbbGluZVN0eWxlXT1cInsgd2lkdGg6IDAgfVwiXHJcblx0XHRcdFx0XHRbbWFqb3JUaWNrTGluZXNdPVwieyB3aWR0aDogMCB9XCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0PC9lLWF4aXM+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PC9lLWF4ZXM+XHJcblx0PC9lanMtY2hhcnQ+XHJcblx0PGRpdiBjbGFzcz1cImZ1bGwtYm94LW1hc2tcIiAqbmdJZj1cInBhZ2VMb2FkaW5nXCI+XHJcblx0XHQ8bWF0LXNwaW5uZXJcclxuXHRcdFx0c3R5bGU9XCJ6LWluZGV4OiA5OTlcIlxyXG5cdFx0XHRtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiXHJcblx0XHRcdFtkaWFtZXRlcl09XCIyNFwiXHJcblx0XHQ+PC9tYXQtc3Bpbm5lcj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ export function debounce(delay = 300) {
2
+ // tslint:disable-next-line: only-arrow-functions
3
+ return function (descriptor) {
4
+ const timeoutKey = Symbol();
5
+ const original = descriptor.value;
6
+ if (!original) {
7
+ return;
8
+ }
9
+ descriptor.value = function (...args) {
10
+ clearTimeout(this[timeoutKey]);
11
+ this[timeoutKey] = setTimeout(function () {
12
+ original.apply(this, args);
13
+ }.bind(this), delay);
14
+ };
15
+ return descriptor;
16
+ };
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvZGFzaGJvYXJkL2Jhci1jaGFydHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFnQixHQUFHO0lBQzNDLGlEQUFpRDtJQUNqRCxPQUFPLFVBQVUsVUFBOEI7UUFDOUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFNUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2QsT0FBTztTQUNQO1FBRUQsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBSTtZQUNuQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsQ0FDNUI7Z0JBQ0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDWixLQUFLLENBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZGVsYXk6IG51bWJlciA9IDMwMCk6IE1ldGhvZERlY29yYXRvciB7XHJcblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBvbmx5LWFycm93LWZ1bmN0aW9uc1xyXG5cdHJldHVybiBmdW5jdGlvbiAoZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSB7XHJcblx0XHRjb25zdCB0aW1lb3V0S2V5ID0gU3ltYm9sKCk7XHJcblxyXG5cdFx0Y29uc3Qgb3JpZ2luYWwgPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cdFx0aWYgKCFvcmlnaW5hbCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0ZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzW3RpbWVvdXRLZXldKTtcclxuXHRcdFx0dGhpc1t0aW1lb3V0S2V5XSA9IHNldFRpbWVvdXQoXHJcblx0XHRcdFx0ZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0XHRvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcclxuXHRcdFx0XHR9LmJpbmQodGhpcyksXHJcblx0XHRcdFx0ZGVsYXlcclxuXHRcdFx0KTtcclxuXHRcdH07XHJcblxyXG5cdFx0cmV0dXJuIGRlc2NyaXB0b3I7XHJcblx0fTtcclxufVxyXG4iXX0=