@sapui5/sap.fe.macros 1.141.1 → 1.142.0

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 (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/Field.js +30 -13
  14. package/src/sap/fe/macros/Field.ts +60 -30
  15. package/src/sap/fe/macros/FooterContent.js +5 -2
  16. package/src/sap/fe/macros/FooterContent.tsx +6 -3
  17. package/src/sap/fe/macros/KPITag.js +1 -1
  18. package/src/sap/fe/macros/KPITag.tsx +3 -1
  19. package/src/sap/fe/macros/MacroAPI.js +3 -2
  20. package/src/sap/fe/macros/MacroAPI.ts +2 -2
  21. package/src/sap/fe/macros/MessageButton.js +3 -2
  22. package/src/sap/fe/macros/MessageButton.tsx +5 -2
  23. package/src/sap/fe/macros/MicroChart.js +10 -6
  24. package/src/sap/fe/macros/MicroChart.tsx +8 -2
  25. package/src/sap/fe/macros/MultiValueField.js +22 -36
  26. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  27. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  28. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  29. package/src/sap/fe/macros/Status.js +35 -8
  30. package/src/sap/fe/macros/Status.tsx +23 -2
  31. package/src/sap/fe/macros/ValueHelp.js +5 -2
  32. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  33. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  34. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  35. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  36. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  37. package/src/sap/fe/macros/chart/Action.js +25 -2
  38. package/src/sap/fe/macros/chart/Action.ts +13 -0
  39. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  40. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  41. package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
  42. package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
  43. package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
  44. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
  45. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  46. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  47. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  48. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  49. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  50. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  51. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  52. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  53. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
  54. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  57. package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
  58. package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
  59. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  60. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  61. package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
  62. package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
  63. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  64. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  65. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  66. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  67. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  68. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  69. package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
  70. package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
  71. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  72. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  73. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  74. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  75. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
  76. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
  77. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
  78. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  79. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  80. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  81. package/src/sap/fe/macros/form/Form.block.js +27 -2
  82. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  83. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  84. package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
  85. package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
  86. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  87. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  88. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  89. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  90. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  91. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  92. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  93. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  94. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  95. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  96. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  97. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  98. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  99. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  100. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  101. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  102. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  103. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  104. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  105. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  106. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  107. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  108. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  109. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  110. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  111. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  112. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  113. package/src/sap/fe/macros/library.js +3 -3
  114. package/src/sap/fe/macros/library.ts +2 -0
  115. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  116. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  117. package/src/sap/fe/macros/messagebundle.properties +7 -5
  118. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  119. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  120. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  121. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  122. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  123. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  124. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  125. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  126. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  127. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  128. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  129. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
  130. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  131. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  132. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  133. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  134. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  135. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  136. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  137. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  138. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  140. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  143. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  144. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  145. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  146. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  147. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  148. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  149. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  150. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  155. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  158. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  159. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  160. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  162. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  164. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  167. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  168. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  169. package/src/sap/fe/macros/table/Action.js +15 -2
  170. package/src/sap/fe/macros/table/Action.ts +11 -1
  171. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  172. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  173. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  174. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  175. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  176. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  177. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  178. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  179. package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
  180. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
  181. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  182. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  183. package/src/sap/fe/macros/table/Table.block.js +70 -29
  184. package/src/sap/fe/macros/table/Table.block.tsx +65 -12
  185. package/src/sap/fe/macros/table/TableAPI.js +169 -131
  186. package/src/sap/fe/macros/table/TableAPI.ts +58 -28
  187. package/src/sap/fe/macros/table/TableDefinition.js +19 -2
  188. package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
  189. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
  190. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
  191. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  192. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  193. package/src/sap/fe/macros/table/TableRuntime.js +2 -2
  194. package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
  195. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  196. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  197. package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
  198. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
  199. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
  200. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
  201. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  202. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  203. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
  204. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
  205. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  206. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  207. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  208. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  209. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  210. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  211. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  212. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  213. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  214. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  215. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  216. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  217. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -2,12 +2,11 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/macros/MacroAPI", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableAPI", "sap/fe/macros/table/TableCreationOptions", "sap/m/FlexItemData", "../TSXUtils", "./TableEventHandlerProvider", "sap/fe/base/jsx-runtime/jsx"], function (Log, BuildingBlockSupport, BuildingBlockTemplatingBase, ManifestSettings, MetaModelConverter, DataVisualization, StandardActions, StableIdHelper, TypeGuards, DataModelPathHelper, MacroAPI, MdcTableTemplate, TableAPI, TableCreationOptions, FlexItemData, TSXUtils, TableEventHandlerProvider, _jsx) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/macros/MacroAPI", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableAPI", "sap/fe/macros/table/TableCreationOptions", "./TableEventHandlerProvider", "sap/fe/base/jsx-runtime/jsx"], function (Log, BuildingBlockSupport, BuildingBlockTemplatingBase, ManifestSettings, MetaModelConverter, DataVisualization, StandardActions, StableIdHelper, TypeGuards, DataModelPathHelper, MacroAPI, MdcTableTemplate, TableAPI, TableCreationOptions, TableEventHandlerProvider, _jsx) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _TableBlock;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _descriptor59, _descriptor60, _descriptor61, _TableBlock;
9
9
  var _exports = {};
10
- var createCustomData = TSXUtils.createCustomData;
11
10
  var getMDCTableTemplate = MdcTableTemplate.getMDCTableTemplate;
12
11
  var getContextRelativeTargetObjectPath = DataModelPathHelper.getContextRelativeTargetObjectPath;
13
12
  var isAnnotationOfTerm = TypeGuards.isAnnotationOfTerm;
@@ -111,6 +110,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
111
110
  if (actionNode?.getAttribute("group")) {
112
111
  action["group"] = Number.parseInt(safeGetAttribute(actionNode, "group") ?? "", 10);
113
112
  }
113
+ if (actionNode?.getAttribute("overflowGroup")) {
114
+ action["overflowGroup"] = Number.parseInt(safeGetAttribute(actionNode, "overflowGroup") ?? "", 10);
115
+ }
114
116
  return action;
115
117
  }
116
118
 
@@ -158,6 +160,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
158
160
  showCounts: quickVariantSelection.getAttribute("showCounts") === "true"
159
161
  };
160
162
  };
163
+ const setCustomActionOverflowGroupProperties = function (overFlowGroup) {
164
+ return {
165
+ overflowGroup: Number.parseInt(overFlowGroup.getAttribute("overflowGroup"), 10),
166
+ showSeparator: overFlowGroup.getAttribute("showSeparator") === "true"
167
+ };
168
+ };
161
169
 
162
170
  /**
163
171
  * Parses the common custom properties of the action groups from the XML node.
@@ -506,7 +514,15 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
506
514
  skipKey: true,
507
515
  multiple: false,
508
516
  processAggregations: setQuickVariantSelection
509
- }), _dec54 = blockEvent(), _dec55 = blockEvent(), _dec56 = blockEvent(), _dec57 = blockEvent(), _dec58 = blockEvent(), _dec59 = blockEvent(), _dec60 = blockEvent(), _dec61 = blockAttribute({
517
+ }), _dec54 = blockAggregation({
518
+ type: "sap.fe.macros.table.OverflowGroup",
519
+ isPublic: true,
520
+ multiple: true,
521
+ hasVirtualNode: true,
522
+ skipKey: true,
523
+ reallySkipKey: true,
524
+ processAggregations: setCustomActionOverflowGroupProperties
525
+ }), _dec55 = blockEvent(), _dec56 = blockEvent(), _dec57 = blockEvent(), _dec58 = blockEvent(), _dec59 = blockEvent(), _dec60 = blockEvent(), _dec61 = blockEvent(), _dec62 = blockAttribute({
510
526
  type: "boolean",
511
527
  isPublic: true
512
528
  }), _dec(_class = (_class2 = (_TableBlock = /*#__PURE__*/function (_BuildingBlockTemplat) {
@@ -790,6 +806,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
790
806
  * @public
791
807
  */
792
808
  _initializerDefineProperty(_this, "quickVariantSelection", _descriptor52, _this);
809
+ /**
810
+ * Aggregate overflowGroups of the table.
811
+ * @public
812
+ */
813
+ _initializerDefineProperty(_this, "actionOverflowGroups", _descriptor53, _this);
793
814
  /**
794
815
  * Before a table rebind, an event is triggered that contains information about the binding.
795
816
  *
@@ -800,32 +821,32 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
800
821
  * You can use this event to add selects, and add or read the sorters and filters.
801
822
  * @public
802
823
  */
803
- _initializerDefineProperty(_this, "beforeRebindTable", _descriptor53, _this);
824
+ _initializerDefineProperty(_this, "beforeRebindTable", _descriptor54, _this);
804
825
  /**
805
- * An event is triggered when the user chooses a row; the event contains information about which row is chosen.
826
+ * An event is triggered when the user chooses a row. The event contains information about which row is chosen.
806
827
  *
807
- * You can set this in order to handle the navigation manually.
828
+ * You can set this to handle the navigation manually.
808
829
  * @public
809
830
  */
810
- _initializerDefineProperty(_this, "rowPress", _descriptor54, _this);
831
+ _initializerDefineProperty(_this, "rowPress", _descriptor55, _this);
811
832
  /**
812
833
  * Event handler to react to the change event of the table's list binding.
813
834
  *
814
835
  * Internal only
815
836
  */
816
- _initializerDefineProperty(_this, "listBindingChange", _descriptor55, _this);
837
+ _initializerDefineProperty(_this, "listBindingChange", _descriptor56, _this);
817
838
  /**
818
839
  * Event handler called when the user chooses an option of the segmented button in the ALP View
819
840
  */
820
- _initializerDefineProperty(_this, "segmentedButtonPress", _descriptor56, _this);
821
- _initializerDefineProperty(_this, "variantSaved", _descriptor57, _this);
841
+ _initializerDefineProperty(_this, "segmentedButtonPress", _descriptor57, _this);
842
+ _initializerDefineProperty(_this, "variantSaved", _descriptor58, _this);
822
843
  /**
823
844
  * An event triggered when the selection in the table changes.
824
845
  * @public
825
846
  */
826
- _initializerDefineProperty(_this, "selectionChange", _descriptor58, _this);
827
- _initializerDefineProperty(_this, "variantSelected", _descriptor59, _this);
828
- _initializerDefineProperty(_this, "initialLoad", _descriptor60, _this);
847
+ _initializerDefineProperty(_this, "selectionChange", _descriptor59, _this);
848
+ _initializerDefineProperty(_this, "variantSelected", _descriptor60, _this);
849
+ _initializerDefineProperty(_this, "initialLoad", _descriptor61, _this);
829
850
  const contextObjectPath = getInvolvedDataModelObjects(_this.metaPath, _this.contextPath);
830
851
  _this.contextObjectPath = contextObjectPath;
831
852
  _this.tableDefinition = TableBlock.createTableDefinition(_this, templateProcessorSettings);
@@ -971,6 +992,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
971
992
  const visualizationPath = TableBlock.getVisualizationPath(table.contextObjectPath, initialConverterContext);
972
993
  const tableSettings = table.getTableSettings();
973
994
  const extraManifestSettings = {
995
+ overflowGroups: TableBlock.createActionOverflowGroups(table),
974
996
  actions: TableBlock.createActionsFromManifest(table),
975
997
  columns: TableBlock.createColumnsForManifest(table),
976
998
  tableSettings
@@ -1013,7 +1035,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1013
1035
  enabled: action.enabled,
1014
1036
  isAIOperation: action.isAIOperation,
1015
1037
  priority: action.priority,
1016
- group: action.group
1038
+ group: action.group,
1039
+ overflowGroup: action.overflowGroup
1017
1040
  };
1018
1041
  if (action._type === "Action") {
1019
1042
  actionsSettings[key] = {
@@ -1067,10 +1090,27 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1067
1090
  return actionsSettings;
1068
1091
  }
1069
1092
 
1093
+ /**
1094
+ * Creates the manifest overflowGroups for the table.
1095
+ * @param table The table block
1096
+ * @returns The manifest overflowGroups for the table
1097
+ */;
1098
+ TableBlock.createActionOverflowGroups = function createActionOverflowGroups(table) {
1099
+ const overflowGroupsSettings = {};
1100
+ if (table.actionOverflowGroups) {
1101
+ Object.values(table.actionOverflowGroups).forEach(overFlowGroup => {
1102
+ overflowGroupsSettings[overFlowGroup.overflowGroup] = {
1103
+ showSeparator: overFlowGroup.showSeparator
1104
+ };
1105
+ });
1106
+ }
1107
+ return overflowGroupsSettings;
1108
+ }
1109
+
1070
1110
  /**
1071
1111
  * Creates the manifest columns for the table.
1072
1112
  * @param table The table block
1073
- * @returns The manifest actions for the table
1113
+ * @returns The manifest columns for the table
1074
1114
  */;
1075
1115
  TableBlock.createColumnsForManifest = function createColumnsForManifest(table) {
1076
1116
  const isBlockColumn = block => {
@@ -1223,11 +1263,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1223
1263
  selectionLimit: this.selectionLimit,
1224
1264
  condensedTableLayout: this.condensedTableLayout,
1225
1265
  children: {
1226
- customData: createCustomData("tableAPILocalId", this._apiId),
1227
1266
  creationMode,
1228
- layoutData: _jsx(FlexItemData, {
1229
- maxWidth: "100%"
1230
- }),
1231
1267
  content: getMDCTableTemplate(tableProps, {
1232
1268
  metaPath: this.metaPath,
1233
1269
  convertedMetadata: this.convertedMetadata,
@@ -1515,42 +1551,47 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1515
1551
  enumerable: true,
1516
1552
  writable: true,
1517
1553
  initializer: null
1518
- }), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec54], {
1554
+ }), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "actionOverflowGroups", [_dec54], {
1555
+ configurable: true,
1556
+ enumerable: true,
1557
+ writable: true,
1558
+ initializer: null
1559
+ }), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec55], {
1519
1560
  configurable: true,
1520
1561
  enumerable: true,
1521
1562
  writable: true,
1522
1563
  initializer: null
1523
- }), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec55], {
1564
+ }), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec56], {
1524
1565
  configurable: true,
1525
1566
  enumerable: true,
1526
1567
  writable: true,
1527
1568
  initializer: null
1528
- }), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec56], {
1569
+ }), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec57], {
1529
1570
  configurable: true,
1530
1571
  enumerable: true,
1531
1572
  writable: true,
1532
1573
  initializer: null
1533
- }), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec57], {
1574
+ }), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec58], {
1534
1575
  configurable: true,
1535
1576
  enumerable: true,
1536
1577
  writable: true,
1537
1578
  initializer: null
1538
- }), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec58], {
1579
+ }), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec59], {
1539
1580
  configurable: true,
1540
1581
  enumerable: true,
1541
1582
  writable: true,
1542
1583
  initializer: null
1543
- }), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec59], {
1584
+ }), _descriptor59 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec60], {
1544
1585
  configurable: true,
1545
1586
  enumerable: true,
1546
1587
  writable: true,
1547
1588
  initializer: null
1548
- }), _descriptor59 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec60], {
1589
+ }), _descriptor60 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec61], {
1549
1590
  configurable: true,
1550
1591
  enumerable: true,
1551
1592
  writable: true,
1552
1593
  initializer: null
1553
- }), _descriptor60 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec61], {
1594
+ }), _descriptor61 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec62], {
1554
1595
  configurable: true,
1555
1596
  enumerable: true,
1556
1597
  writable: true,
@@ -1559,4 +1600,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1559
1600
  _exports = TableBlock;
1560
1601
  return _exports;
1561
1602
  }, false);
1562
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJhY3Rpb25zSW5NZW51IiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImFwcGx5IiwibWFwIiwic3ViQWN0aW9uIiwic2V0QXR0cmlidXRlIiwiYWN0aW9ucyIsImdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzIiwiY2hpbGRDb2x1bW4iLCJ3aWR0aCIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsImF2YWlsYWJpbGl0eSIsImRpc2FibGVFeHBvcnQiLCJleHBvcnRTZXR0aW5ncyIsInBhcnNlRXhwb3J0U2V0dGluZ3MiLCJzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzIiwiaGVhZGVyIiwidG9vbHRpcCIsInRlbXBsYXRlIiwiZ2V0Q29sdW1uVGVtcGxhdGUiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uIiwid3JhcCIsInR5cGUiLCJwcm9wZXJ0eSIsInRleHRBbGlnbiIsImxhYmVsIiwidHJ1ZVZhbHVlIiwiZmFsc2VWYWx1ZSIsInZhbHVlTWFwIiwiYWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGlvbiIsImkiLCJsZW5ndGgiLCJjaGlsZCIsIml0ZW0iLCJub2RlTmFtZSIsImVuZHNXaXRoIiwiYWdncmVnYXRpb25OYW1lIiwicmVzdWx0IiwiZ2V0QXR0cmlidXRlTmFtZXMiLCJ2YWx1ZSIsIlRhYmxlQmxvY2siLCJfZGVjIiwiZGVmaW5lQnVpbGRpbmdCbG9jayIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInVuZGVybHlpbmdUeXBlIiwiZXhwZWN0ZWRUeXBlcyIsImV4cGVjdGVkQW5ub3RhdGlvbnMiLCJpc1B1YmxpYyIsIl9kZWMzIiwiYmluZGFibGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzE4IiwiX2RlYzE5IiwiX2RlYzIwIiwiX2RlYzIxIiwiX2RlYzIyIiwiX2RlYzIzIiwiX2RlYzI0IiwiaXNBc3NvY2lhdGlvbiIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIl9kZWMzNCIsIl9kZWMzNSIsIl9kZWMzNiIsIl9kZWMzNyIsIl9kZWMzOCIsIl9kZWMzOSIsIl9kZWM0MCIsIl9kZWM0MSIsIl9kZWM0MiIsIl9kZWM0MyIsIl9kZWM0NCIsIl9kZWM0NSIsIl9kZWM0NiIsIl9kZWM0NyIsIl9kZWM0OCIsInZhbGlkYXRlIiwiY3JlYXRpb25PcHRpb25zSW5wdXQiLCJFcnJvciIsIl9kZWM0OSIsImFuYWx5dGljYWxDb25maWd1cmF0aW9uIiwiYWdncmVnYXRpb25PbkxlYWZMZXZlbCIsIl9kZWM1MCIsImJsb2NrQWdncmVnYXRpb24iLCJhbHRUeXBlcyIsImhhc1ZpcnR1YWxOb2RlIiwibXVsdGlwbGUiLCJwcm9jZXNzQWdncmVnYXRpb25zIiwiX2RlYzUxIiwic2tpcEtleSIsIl9kZWM1MiIsImlzRGVmYXVsdCIsIl9kZWM1MyIsIl9kZWM1NCIsImJsb2NrRXZlbnQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfZGVjNjAiLCJfZGVjNjEiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJjb250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0YWJsZURlZmluaXRpb24iLCJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZURlZmluaXRpb25Db250ZXh0IiwiTWFjcm9BUEkiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImNvbnZlcnRlZE1ldGFkYXRhIiwiY29udmVydGVkVHlwZXMiLCJtZXRhTW9kZWwiLCJtb2RlbHMiLCJjb2xsZWN0aW9uRW50aXR5IiwicmVzb2x2ZVBhdGgiLCJhbm5vdGF0aW9uIiwiY29sbGVjdGlvbiIsInRhcmdldCIsImFwcENvbXBvbmVudCIsInNldFVwSWQiLCJjcmVhdGlvbk1vZGUiLCJjcmVhdGUiLCJtb2RlIiwiY3JlYXRlQXRFbmQiLCJhcHBlbmQiLCJyZWFkT25seSIsImRpc3BsYXlNb2RlIiwiY29udHJvbCIsIlRhYmxlQVBJIiwidXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkiLCJ1c2VCYXNpY1NlYXJjaCIsImZpbHRlckJhciIsImdlbmVyYXRlIiwiY29udGVudElkIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsImdldFZpc3VhbGl6YXRpb25QYXRoIiwiY29udmVydGVyQ29udGV4dCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJMb2ciLCJlcnJvciIsImlzQW5ub3RhdGlvbk9mVGVybSIsInRhcmdldE9iamVjdCIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9ucyIsImdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24iLCJ0ZXJtIiwibGluZUl0ZW1WaXoiLCJmaW5kIiwidml6IiwidmlzdWFsaXphdGlvbiIsImFubm90YXRpb25QYXRoIiwiX3Byb3RvIiwiZ2V0VGFibGVTZXR0aW5ncyIsInRhYmxlU2V0dGluZ3MiLCJhZGRTZXR0aW5nIiwiZW5hYmxlRXhwb3J0IiwiZXhwb3J0RmlsZU5hbWUiLCJleHBvcnRTaGVldE5hbWUiLCJzZWxlY3Rpb25MaW1pdCIsImNvbmRlbnNlZFRhYmxlTGF5b3V0IiwiZXhwb3J0UmVxdWVzdFNpemUiLCJmcm96ZW5Db2x1bW5Db3VudCIsImRpc2FibGVDb2x1bW5GcmVlemUiLCJyb3dDb3VudE1vZGUiLCJyb3dDb3VudCIsImVuYWJsZUZ1bGxTY3JlZW4iLCJlbmFibGVTZWxlY3RBbGwiLCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMiLCJlbmFibGVQYXN0ZSIsImRpc2FibGVDb3B5VG9DbGlwYm9hcmQiLCJzY3JvbGxUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJwb3BpbkxheW91dCIsInNlbGVjdGlvbk1vZGUiLCJxdWlja0ZpbHRlcnMiLCJwYXRoIiwiY3JlYXRpb25GaWVsZHMiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwib3V0Ym91bmQiLCJlbnRyaWVzIiwibWFzc0VkaXQiLCJlbmFibGVNYXNzRWRpdCIsImNvbmZpZ3VyYXRpb24iLCJqb2luIiwidGFibGUiLCJpbml0aWFsQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJnZXRQYXRoIiwidmlzdWFsaXphdGlvblBhdGgiLCJleHRyYU1hbmlmZXN0U2V0dGluZ3MiLCJjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0IiwiY29sdW1ucyIsImNyZWF0ZUNvbHVtbnNGb3JNYW5pZmVzdCIsImV4dHJhUGFyYW1zIiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50IiwidXNlQ29uZGVuc2VkTGF5b3V0IiwiaXNNYWNyb09yTXVsdGlwbGVWaWV3IiwiVmlzdWFsaXphdGlvblR5cGUiLCJUYWJsZSIsImFjdGlvbnNTZXR0aW5ncyIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsInBvc2l0aW9uIiwiaXNBSU9wZXJhdGlvbiIsInByaW9yaXR5IiwiZ3JvdXAiLCJfX25vV3JhcCIsImFmdGVyRXhlY3V0aW9uIiwidmFsdWVzIiwibWVudSIsImlzQmxvY2tDb2x1bW4iLCJibG9jayIsImNvbHVtblNldHRpbmdzIiwiY29sdW1uIiwiY3VzdG9tQ29sdW1uRGVmaW5pdGlvbiIsImlkIiwiX2FwaUlkIiwiZ2V0Q29udGVudElkIiwiYXBpSWQiLCJfZ2V0RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJ0YXJnZXRUeXBlIiwiZ2V0RW1wdHlSb3dzRW5hYmxlZCIsIkNyZWF0aW9uTW9kZSIsIklubGluZUNyZWF0aW9uUm93cyIsImEiLCJTdGFuZGFyZEFjdGlvbktleXMiLCJDcmVhdGUiLCJnZXRUZW1wbGF0ZSIsInRhYmxlUHJvcHMiLCJvdmVycmlkZVJvd1ByZXNzIiwicm93UHJlc3MiLCJoYW5kbGVyUHJvdmlkZXIiLCJUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyIiwiZ2V0TW9kZWwiLCJfanN4IiwiVGFibGVDcmVhdGlvbk9wdGlvbnMiLCJiaW5kaW5nIiwiaGVhZGVyTGV2ZWwiLCJoZWFkZXJTdHlsZSIsImhlYWRlclZpc2libGUiLCJ0YWJUaXRsZSIsImlzU2VhcmNoYWJsZSIsImJ1c3kiLCJpbml0aWFsTG9hZCIsImlzQWxwIiwiZmllbGRNb2RlIiwicGVyc29uYWxpemF0aW9uIiwidmFyaWFudFNhdmVkIiwidmFyaWFudFNlbGVjdGVkIiwic2VnbWVudGVkQnV0dG9uUHJlc3MiLCJ2YXJpYW50TWFuYWdlbWVudCIsImVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWUiLCJzZWxlY3Rpb25DaGFuZ2UiLCJsaXN0QmluZGluZ0NoYW5nZSIsImVtcHR5Um93c0VuYWJsZWQiLCJlbmFibGVBdXRvQ29sdW1uV2lkdGgiLCJiZWZvcmVSZWJpbmRUYWJsZSIsIm1vZGVGb3JOb0RhdGFNZXNzYWdlIiwiZGlzcGxheVNlZ21lbnRlZEJ1dHRvbiIsImN1c3RvbURhdGEiLCJjcmVhdGVDdXN0b21EYXRhIiwibGF5b3V0RGF0YSIsIkZsZXhJdGVtRGF0YSIsIm1heFdpZHRoIiwiY29udGVudCIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlLmJsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdGJsb2NrQWdncmVnYXRpb24sXG5cdGJsb2NrQXR0cmlidXRlLFxuXHRibG9ja0V2ZW50LFxuXHRkZWZpbmVCdWlsZGluZ0Jsb2NrXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcblx0QXZhaWxhYmlsaXR5VHlwZSxcblx0Q3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0SG9yaXpvbnRhbEFsaWduLFxuXHRJbXBvcnRhbmNlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0VGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlLCBWaXN1YWxpemF0aW9uVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgVmlzdWFsaXphdGlvbkFuZFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7XG5cdGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbixcblx0Z2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB0eXBlIHsgQ3JlYXRlQmVoYXZpb3IsIFRhYmxlVHlwZSwgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgeyBTdGFuZGFyZEFjdGlvbktleXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vdGFibGUvU3RhbmRhcmRBY3Rpb25zXCI7XG5pbXBvcnQgeyB0eXBlIFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25PZlRlcm0gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25Hcm91cFwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZUJsb2NrUHJvcGVydGllcyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB7IGdldE1EQ1RhYmxlVGVtcGxhdGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9NZGNUYWJsZVRlbXBsYXRlXCI7XG5pbXBvcnQgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCBUYWJsZUNyZWF0aW9uT3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUNyZWF0aW9uT3B0aW9uc1wiO1xuaW1wb3J0IEZsZXhJdGVtRGF0YSBmcm9tIFwic2FwL20vRmxleEl0ZW1EYXRhXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB7IHR5cGUgVGl0bGVMZXZlbCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEV4cG9ydFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBjcmVhdGVDdXN0b21EYXRhIH0gZnJvbSBcIi4uL1RTWFV0aWxzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcblx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIjtcbn07XG50eXBlIEJsb2NrTWFzc0VkaXQgPSBQYXJ0aWFsPE9taXQ8TWFzc0VkaXQsIFwiY3VzdG9tQ29udGVudFwiPj4gJiB7IGN1c3RvbUNvbnRlbnQ/OiBzdHJpbmc7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uID0gUHJvcGVydGllc09mPFF1aWNrVmFyaWFudFNlbGVjdGlvbj4gJiB7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrQWN0aW9uID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uLCBcInByZXNzXCI+PiAmIHsgX3R5cGU6IFwiQWN0aW9uXCI7IHByZXNzOiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cCA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbkdyb3VwLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQmxvY2tBY3Rpb25PdmVycmlkZSA9IFByb3BlcnRpZXNPZjxBY3Rpb25PdmVycmlkZT4gJiB7IF90eXBlOiBcIkFjdGlvbk92ZXJyaWRlXCIgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXBPdmVycmlkZSwgXCJhY3Rpb25zXCI+PiAmIHtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0Y29tbWFuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRlbmFibGVPblNlbGVjdDogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0aXNBSU9wZXJhdGlvbj86IGJvb2xlYW47XG5cdHByaW9yaXR5PzogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdGdyb3VwPzogbnVtYmVyO1xuXHRfdHlwZTogXCJBY3Rpb25cIiB8IFwiQWN0aW9uT3ZlcnJpZGVcIjtcbn07XG5mdW5jdGlvbiBzYWZlR2V0QXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBub2RlLmdldEF0dHJpYnV0ZShuYW1lKSA/PyB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZHluYW1pYyBCb29sZWFuIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIGdldCB0aGUgYXR0cmlidXRlIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIFRoZSBCb29sZWFuIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqL1xuZnVuY3Rpb24gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbmFibGVtZW50QXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRzd2l0Y2ggKGVuYWJsZW1lbnRBdHRyKSB7XG5cdFx0Y2FzZSBudWxsOlxuXHRcdGNhc2UgXCJ0cnVlXCI6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIFwiZmFsc2VcIjpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGVuYWJsZW1lbnRBdHRyIGFzIHVua25vd24gYXMgYm9vbGVhbjsgLy8gVG8gbWFuYWdlIGJpbmRpbmcgZXhwcmVzc2lvbnNcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFjdGlvbiBwcm9wZXJ0aWVzIGZyb20gYW4gWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBhY3Rpb24gcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KGFjdGlvbk5vZGU6IEVsZW1lbnQpOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUge1xuXHRjb25zdCBjb21tb25Qcm9wZXJ0aWVzID0gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlKTtcblx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdHByZXNzOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJlc3NcIiksXG5cdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlc1NlbGVjdGlvblwiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdFx0fSBhcyBCbG9ja0FjdGlvbjtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGVuYWJsZUF1dG9TY3JvbGw6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZUF1dG9TY3JvbGxcIiksXG5cdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIiksXG5cdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCIpLFxuXHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0fSBhcyBCbG9ja0FjdGlvbk92ZXJyaWRlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlOiBFbGVtZW50KTogQ29tbW9uQ3VzdG9tQWN0aW9uIHtcblx0Y29uc3QgYWN0aW9uOiBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdFx0a2V5OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcImtleVwiKSEucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIiksXG5cdFx0ZW5hYmxlZDogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlZFwiKSxcblx0XHR2aXNpYmxlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJ2aXNpYmxlXCIpLFxuXHRcdGNvbW1hbmQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJjb21tYW5kXCIpLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlT25TZWxlY3RcIikgYXMgXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZCxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiID8gXCJBY3Rpb25cIiA6IFwiQWN0aW9uT3ZlcnJpZGVcIlxuXHR9O1xuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiaXNBSU9wZXJhdGlvblwiKSkge1xuXHRcdGFjdGlvbltcImlzQUlPcGVyYXRpb25cIl0gPSBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJpc0FJT3BlcmF0aW9uXCIpO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcInByaW9yaXR5XCIpKSB7XG5cdFx0YWN0aW9uW1wicHJpb3JpdHlcIl0gPSBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJpb3JpdHlcIikgYXMgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiZ3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJncm91cFwiXSA9IE51bWJlci5wYXJzZUludChzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZ3JvdXBcIikgPz8gXCJcIiwgMTApO1xuXHR9XG5cblx0cmV0dXJuIGFjdGlvbjtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGFjdGlvbnMgYW5kIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZVxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIG9yIGFjdGlvbiBncm91cCBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21BY3Rpb25Hcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb24gfCBBY3Rpb25PdmVycmlkZSB8IEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZVxuKTogQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZSB7XG5cdGlmIChbXCJBY3Rpb25Hcm91cFwiLCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIl0uaW5jbHVkZXMoYWN0aW9uTm9kZS5sb2NhbE5hbWUpKSB7XG5cdFx0Y29uc3QgY29tbW9uUHJvcGVydGllcyA9IGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoYWN0aW9uTm9kZSwgYWdncmVnYXRpb25PYmplY3QgYXMgQWN0aW9uR3JvdXAgfCBBY3Rpb25Hcm91cE92ZXJyaWRlKTtcblx0XHRpZiAoYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIikge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGV4dDogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJ0ZXh0XCIpID8/IGNvbW1vblByb3BlcnRpZXMua2V5LFxuXHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdEFjdGlvblwiKSxcblx0XHRcdFx0Li4uY29tbW9uUHJvcGVydGllc1xuXHRcdFx0fSBhcyBCbG9ja0FjdGlvbkdyb3VwO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tbW9uUHJvcGVydGllcyBhcyBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGU7XG5cdH1cblxuXHQvL0FjdGlvbiBvciBBY3Rpb25PdmVycmlkZVxuXHRyZXR1cm4gcGFyc2VBY3Rpb25Gcm9tRWxlbWVudChhY3Rpb25Ob2RlKTtcbn1cblxuY29uc3Qgc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGVsZW1lbnQ6IEVsZW1lbnQpOiBCbG9ja01hc3NFZGl0IHtcblx0cmV0dXJuIHtcblx0XHRrZXk6IFwiY29uZmlndXJhdGlvblwiLFxuXHRcdGN1c3RvbUNvbnRlbnQ6IGVsZW1lbnQuY2hpbGRyZW5bMF0/Lm91dGVySFRNTCxcblx0XHR2aXNpYmxlRmllbGRzOiBlbGVtZW50LmdldEF0dHJpYnV0ZShcInZpc2libGVGaWVsZHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRpZ25vcmVkRmllbGRzOiBlbGVtZW50LmdldEF0dHJpYnV0ZShcImlnbm9yZWRGaWVsZHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRvcGVyYXRpb25Hcm91cGluZ01vZGU6IChlbGVtZW50LmdldEF0dHJpYnV0ZShcIm9wZXJhdGlvbkdyb3VwaW5nTW9kZVwiKSA/PyB1bmRlZmluZWQpIGFzIFwiQ2hhbmdlU2V0XCIgfCBcIklzb2xhdGVkXCIgfCB1bmRlZmluZWRcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gcXVpY2tWYXJpYW50U2VsZWN0aW9uIFRoZSBYTUwgbm9kZSBjb250YWluaW5nIHRoZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb25cbiAqIEByZXR1cm5zIFRoZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmNvbnN0IHNldFF1aWNrVmFyaWFudFNlbGVjdGlvbiA9IGZ1bmN0aW9uIChxdWlja1ZhcmlhbnRTZWxlY3Rpb246IEVsZW1lbnQpOiBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbiB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcInF1aWNrRmlsdGVyc1wiLFxuXHRcdHBhdGhzOiBxdWlja1ZhcmlhbnRTZWxlY3Rpb24uZ2V0QXR0cmlidXRlKFwicGF0aHNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRzaG93Q291bnRzOiBxdWlja1ZhcmlhbnRTZWxlY3Rpb24uZ2V0QXR0cmlidXRlKFwic2hvd0NvdW50c1wiKSA9PT0gXCJ0cnVlXCJcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdCBUaGUgYWdncmVnYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCIgfCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbn0ge1xuXHRjb25zdCBhY3Rpb25zSW5NZW51ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFjdGlvbk5vZGUuY2hpbGRyZW4pLm1hcCgoc3ViQWN0aW9uOiBFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoc3ViQWN0aW9uKTtcblx0fSk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWN0aW9uTm9kZS5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0cmV0dXJuIHtcblx0XHRrZXk6IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSxcblx0XHRhY3Rpb25zOiBhY3Rpb25zSW5NZW51LFxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImFuY2hvclwiKSxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRfdHlwZTogYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIiA/IFwiQWN0aW9uR3JvdXBcIiA6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW4gVGhlIGNvbHVtbiBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhcblx0Y2hpbGRDb2x1bW46IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpbXBvcnRhbmNlOiBJbXBvcnRhbmNlIHwgdW5kZWZpbmVkO1xuXHRob3Jpem9udGFsQWxpZ246IEhvcml6b250YWxBbGlnbiB8IHVuZGVmaW5lZDtcblx0YXZhaWxhYmlsaXR5OiBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRleHBvcnRTZXR0aW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cdGRpc2FibGVFeHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZGlzYWJsZUV4cG9ydDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZUV4cG9ydFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcImRpc2FibGVFeHBvcnRcIikgPT09IFwidHJ1ZVwiIDogdW5kZWZpbmVkLFxuXHRcdGV4cG9ydFNldHRpbmdzOiBwYXJzZUV4cG9ydFNldHRpbmdzKGNoaWxkQ29sdW1uKVxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY3VzdG9tIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW5cbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzKFxuXHRjaGlsZENvbHVtbjogRWxlbWVudCxcblx0YWdncmVnYXRpb25PYmplY3Q6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZVxuKTogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlIHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdGlmIChjaGlsZENvbHVtbi5sb2NhbE5hbWUgPT09IFwiQ29sdW1uXCIpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRcdGhlYWRlcjogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJoZWFkZXJcIiksXG5cdFx0XHR0b29sdGlwOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInRvb2x0aXBcIiksXG5cdFx0XHR0ZW1wbGF0ZTogZ2V0Q29sdW1uVGVtcGxhdGUoY2hpbGRDb2x1bW4pLFxuXHRcdFx0cHJvcGVydGllczogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwcm9wZXJ0aWVzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0XHRyZXF1aXJlZDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPyBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA9PT0gXCJ0cnVlXCIgOiB1bmRlZmluZWQsXG5cdFx0XHRfdHlwZTogY2hpbGRDb2x1bW4ubG9jYWxOYW1lXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdC4uLmdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzKGNoaWxkQ29sdW1uLCBhZ2dyZWdhdGlvbk9iamVjdCksXG5cdFx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG5jb25zdCBwYXJzZUV4cG9ydFNldHRpbmdzID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgZXhwb3J0U2V0dGluZ3MgPSBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwiZXhwb3J0U2V0dGluZ3NcIik7XG5cdGlmICghZXhwb3J0U2V0dGluZ3MpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0dGVtcGxhdGU6IGV4cG9ydFNldHRpbmdzLnRlbXBsYXRlLFxuXHRcdHdyYXA6IGV4cG9ydFNldHRpbmdzLndyYXAgPT09IFwidHJ1ZVwiLFxuXHRcdHR5cGU6IGV4cG9ydFNldHRpbmdzLnR5cGUsXG5cdFx0cHJvcGVydHk6IGV4cG9ydFNldHRpbmdzLnByb3BlcnR5Py5zcGxpdChcIixcIiksXG5cdFx0d2lkdGg6IGV4cG9ydFNldHRpbmdzLndpZHRoLFxuXHRcdHRleHRBbGlnbjogZXhwb3J0U2V0dGluZ3MudGV4dEFsaWduLFxuXHRcdGxhYmVsOiBleHBvcnRTZXR0aW5ncy5sYWJlbCxcblx0XHR0cnVlVmFsdWU6IGV4cG9ydFNldHRpbmdzLnRydWVWYWx1ZSxcblx0XHRmYWxzZVZhbHVlOiBleHBvcnRTZXR0aW5ncy5mYWxzZVZhbHVlLFxuXHRcdHZhbHVlTWFwOiBleHBvcnRTZXR0aW5ncy52YWx1ZU1hcFxuXHR9O1xufTtcblxuY29uc3QgZ2V0Q29sdW1uVGVtcGxhdGUgPSAoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbiA9IGdldEFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwidGVtcGxhdGVcIik7XG5cdGlmICghYWdncmVnYXRpb24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdFx0aWYgKGNoaWxkICYmICFjaGlsZC5ub2RlTmFtZS5lbmRzV2l0aChcImV4cG9ydFNldHRpbmdzXCIpKSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uID0gY2hpbGQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb24/Lm91dGVySFRNTCA/PyBlbGVtZW50LmdldEF0dHJpYnV0ZShcInRlbXBsYXRlXCIpID8/IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHBhcnNlU2ltcGxlQWdncmVnYXRpb24gPSAoZWxlbWVudDogRWxlbWVudCwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWUpO1xuXHRjb25zdCBjaGlsZCA9IGFnZ3JlZ2F0aW9uPy5jaGlsZHJlblswXTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cdGlmICghY2hpbGQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGZvciAoY29uc3QgbmFtZSBvZiBjaGlsZC5nZXRBdHRyaWJ1dGVOYW1lcygpKSB7XG5cdFx0Y29uc3QgdmFsdWUgPSBjaGlsZC5nZXRBdHRyaWJ1dGUobmFtZSk7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRyZXN1bHRbbmFtZV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IGdldEFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbjogRWxlbWVudCB8IHVuZGVmaW5lZDtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY2hpbGQgPSBlbGVtZW50LmNoaWxkcmVuLml0ZW0oaSk7XG5cdFx0aWYgKGNoaWxkPy5ub2RlTmFtZS5lbmRzV2l0aChhZ2dyZWdhdGlvbk5hbWUpID09PSB0cnVlKSB7XG5cdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZ2dyZWdhdGlvbjtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSB0YWJsZSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50LCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqIDxicj5cbiAqIElmIGEgUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBoYXZlIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKiA8YnI+XG4gKiBJZiBhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgY29udGFpbiBhIHZhbGlkIFByZXNlbnRhdGlvblZhcmlhbnQgdGhhdCBhbHNvIGhhcyBhIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvYnVpbGRpbmdCbG9ja3MvdGFibGUvdGFibGVEZWZhdWx0IE92ZXJ2aWV3IG9mIFRhYmxlIEJ1aWxkaW5nIEJsb2Nrc31cbiAqIEBtaXhlcyBzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXG4gKiBAYXVnbWVudHMgc2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiVGFibGVcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgJiBSZXF1aXJlZCBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpbiB0aGUgbWV0YW1vZGVsLCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0UGF0aC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXG5cdFx0XSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aCE6IENvbnRleHQ7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ2J1c3knIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlLCBiaW5kYWJsZTogdHJ1ZSB9KVxuXHRidXN5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcGF0aCBvZiB0aGUgY29udGV4dCB1c2VkIGluIHRoZSBjdXJyZW50IHBhZ2Ugb3IgYmxvY2suXG5cdCAqIFRoaXMgc2V0dGluZyBpcyBkZWZpbmVkIGJ5IHRoZSBmcmFtZXdvcmsuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIGFkYXB0cyB0byB0aGUgY29uZGVuc2VkIGxheW91dC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRhYmxlIGNhbiBiZSBvcGVuZWQgaW4gZnVsbHNjcmVlbiBtb2RlIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEgY29waWVkIHRvIHRoZSBjb21wdXRlZCBjb2x1bW5zIGlzIHNlbnQgdG8gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIENsZWFyIEFsbCBidXR0b24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXHQgKiBUbyBlbmFibGUgdGhlIENsZWFyIEFsbCBidXR0b24gYnkgZGVmYXVsdCwgeW91IG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgdG8gZmFsc2UuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBleHBvcnQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRXhwb3J0PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29uZmlndXJlcyB0aGUgZmlsZSBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb25maWd1cmVzIHRoZSBzaGVldCBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydFNoZWV0TmFtZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIGV4cG9ydGVkIGluIG9uZSByZXF1ZXN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RTaXplPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGF0IG9uY2UgaW4gdGhlIHRhYmxlLlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkxpbWl0PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBOdW1iZXIgb2YgY29sdW1ucyB0aGF0IGFyZSBmaXhlZCBvbiB0aGUgbGVmdC4gT25seSBjb2x1bW5zIHdoaWNoIGFyZSBub3QgZml4ZWQgY2FuIGJlIHNjcm9sbGVkIGhvcml6b250YWxseS5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyBub3QgcmVsZXZhbnQgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgbnVtYmVyIG9mIGZpeGVkIGNvbHVtbnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIENvbHVtbiBTZXR0aW5ncyBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgZG9lc24ndCBhcHBseSBmb3IgcmVzcG9uc2l2ZSB0YWJsZXNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZUNvbHVtbkZyZWV6ZT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgd2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyB0aGUgdGFibGUgaGFuZGxlcyB0aGUgdmlzaWJsZSByb3dzLiBEb2VzIG5vdCBhcHBseSB0byBSZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBBdXRvYCwgYEZpeGVkYCwgYW5kIGBJbnRlcmFjdGl2ZWAuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEZpeGVkYCwgdGhlIHRhYmxlIGFsd2F5cyBoYXMgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBBdXRvYCwgdGhlIG51bWJlciBvZiByb3dzIGlzIGNoYW5nZWQgYnkgdGhlIHRhYmxlIGF1dG9tYXRpY2FsbHkuIEl0IHdpbGwgdGhlbiBhZGp1c3QgaXRzIHJvdyBjb3VudCB0byB0aGUgc3BhY2UgaXQgaXMgYWxsb3dlZCB0byBjb3ZlciAobGltaXRlZCBieSB0aGUgc3Vycm91bmRpbmcgY29udGFpbmVyKSBidXQgaXQgY2Fubm90IGhhdmUgbGVzcyB0aGFuIGRlZmluZWQgaW4gdGhlIGByb3dDb3VudGAgcHJvcGVydHkuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEludGVyYWN0aXZlYCB0aGUgdGFibGUgY2FuIGhhdmUgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5LiBUaGlzIG51bWJlciBvZiByb3dzIGNhbiBiZSBtb2RpZmllZCBieSBkcmFnZ2luZyB0aGUgcmVzaXplciBhdmFpbGFibGUgaW4gdGhpcyBtb2RlLjxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkF1dG9cIiwgXCJGaXhlZFwiLCBcIkludGVyYWN0aXZlXCJdLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIHJvd3MgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0YWJsZS4gRG9lcyBub3QgYXBwbHkgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcm93Q291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBwYXN0ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGU/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBjb3B5IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGRpc2FibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGRpc2FibGVDb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyBtYW55IGFkZGl0aW9uYWwgZGF0YSByZWNvcmRzIGFyZSByZXF1ZXN0ZWQgZnJvbSB0aGUgYmFjay1lbmQgc3lzdGVtIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0c2Nyb2xsVGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBpbml0aWFsbHkgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCBvcHRpb25zIG9mIHRoZSB0YWJsZSBwb3BpbnMuIE9ubHkgYXBwbGllcyB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBCbG9ja2AsIGBHcmlkTGFyZ2VgLCBhbmQgYEdyaWRTbWFsbGAuPGJyLz5cblx0ICogLSBgQmxvY2tgOiBTZXRzIGEgYmxvY2sgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcG9waW4gY29udGFpbmVyIGFyZSByZW5kZXJlZCBvbmUgYmVsb3cgdGhlIG90aGVyLjxici8+XG5cdCAqIC0gYEdyaWRMYXJnZWA6IFNldHMgYSBncmlkIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBncmlkIHdpZHRoIGZvciBlYWNoIHRhYmxlIHBvcGluIGlzIGNvbXBhcmF0aXZlbHkgbGFyZ2VyIHRoYW4gR3JpZFNtYWxsLCBzbyB0aGlzIGxheW91dCBhbGxvd3MgbGVzcyBjb250ZW50IHRvIGJlIHJlbmRlcmVkIGluIGEgc2luZ2xlIHBvcGluIHJvdy48YnIvPlxuXHQgKiAtIGBHcmlkU21hbGxgOiBTZXRzIGEgZ3JpZCBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZ3JpZCB3aWR0aCBmb3IgZWFjaCB0YWJsZSBwb3BpbiBpcyBzbWFsbCwgc28gdGhpcyBsYXlvdXQgYWxsb3dzIG1vcmUgY29udGVudCB0byBiZSByZW5kZXJlZCBpbiBhIHNpbmdsZSBwb3BpbiByb3cuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQmxvY2tcIiwgXCJHcmlkTGFyZ2VcIiwgXCJHcmlkU21hbGxcIl0sIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcG9waW5MYXlvdXQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGlzQXNzb2NpYXRpb246IHRydWUgfSlcblx0ZmlsdGVyQmFyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIFwiYXJpYS1sZXZlbFwiIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXJMZXZlbD86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0Y29udGVudElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBZGRpdGlvbm5hbCBTZWxlY3Rpb25WYXJpYW50IHRvIGJlIGFwcGxpZWQgb24gdGhlIHRhYmxlIGNvbnRlbnQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblZhcmlhbnRcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBhY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiB0YWJsZSBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqIDxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAtIFNvcnQ8YnIvPlxuXHQgKiAtIENvbHVtbjxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogLSBHcm91cDxici8+XG5cdCAqIDxici8+XG5cdCAqIFRoZSBHcm91cCBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGFuYWx5dGljYWwgdGFibGVzIGFuZCByZXNwb25zaXZlIHRhYmxlcy48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cmVhZE9ubHk/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIHRhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBidWlsZGluZyBibG9jayB0byByZW5kZXIgdGhlIGRhdGEuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgR3JpZFRhYmxlYCwgYFJlc3BvbnNpdmVUYWJsZWAgYW5kIGBBbmFseXRpY2FsVGFibGVgLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgYWxsb3dlZFZhbHVlczogW1wiR3JpZFRhYmxlXCIsIFwiUmVzcG9uc2l2ZVRhYmxlXCIsIFwiQW5hbHl0aWNhbFRhYmxlXCJdIH0pXG5cdHJlYWRvbmx5IHR5cGU/OiBUYWJsZVR5cGU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgd2l0aCBjb25kZW5zZWQgbGF5b3V0ICh0cnVlL2ZhbHNlKS4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBgZmFsc2VgLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHVzZUNvbmRlbnNlZExheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCwgYEZvcmNlU2luZ2xlYCwgYE11bHRpYCwgYEZvcmNlTXVsdGlgIG9yIGBBdXRvYC5cblx0ICogSWYgc2V0IHRvICdTaW5nbGUnLCAnTXVsdGknIG9yICdBdXRvJywgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGNvbnNpc3RlbnQgc2VsZWN0aW9uIG1vZGUuXG5cdCAqIElmIHNldCB0byAnRm9yY2VTaW5nbGUnIG9yICdGb3JjZU11bHRpJyB5b3VyIGNob2ljZSB3aWxsIGJlIHJlc3BlY3RlZCBidXQgdGhpcyBtaWdodCBub3QgcmVzcGVjdCB0aGUgRmlvcmkgZ3VpZGVsaW5lcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aVwiLCBcIkF1dG9cIiwgXCJGb3JjZU11bHRpXCIsIFwiRm9yY2VTaW5nbGVcIl0gfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Nb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUga2luZCBvZiB2YXJpYW50IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlIGlzIGBDb250cm9sYC48YnIvPlxuXHQgKiBJZiBzZXQgd2l0aCB2YWx1ZSBgQ29udHJvbGAsIGEgdmFyaWFudCBtYW5hZ2VtZW50IGNvbnRyb2wgaXMgc2VlbiB3aXRoaW4gdGhlIHRhYmxlIGFuZCB0aGUgdGFibGUgaXMgbGlua2VkIHRvIHRoaXMuPGJyLz5cblx0ICogSWYgbm90IHNldCB3aXRoIGFueSB2YWx1ZSwgY29udHJvbCBsZXZlbCB2YXJpYW50IG1hbmFnZW1lbnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbW1hLXNlcGFyYXRlZCB2YWx1ZSBvZiBmaWVsZHMgdGhhdCBtdXN0IGJlIGlnbm9yZWQgaW4gdGhlIE9EYXRhIG1ldGFkYXRhIGJ5IHRoZSBUYWJsZSBidWlsZGluZyBibG9jay48YnI+XG5cdCAqIFRoZSB0YWJsZSBidWlsZGluZyBibG9jayBpcyBub3QgZ29pbmcgdG8gY3JlYXRlIGJ1aWx0LWluIGNvbHVtbnMgb3Igb2ZmZXIgdGFibGUgcGVyc29uYWxpemF0aW9uIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgYXJlIHByb3ZpZGVkIGluIHRoZSBpZ25vcmVkZmllbGRzLjxicj5cblx0ICogQW55IGNvbHVtbiByZWZlcmVuY2luZyBhbiBpZ25vcmVkIGZpZWxkIGlzIHRvIGJlIHJlbW92ZWQuPGJyPlxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHJpdmF0ZSBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdHByaXZhdGUgX2FwaUlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKiBAc2luY2UgMS4xMjkuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbGxlY3Rpb25FbnRpdHk6IEVudGl0eVNldCB8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgaGVhZGVyIHN0eWxlIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiIH0pXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPzogYm9vbGVhbiA9IHRydWU7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWVsZE1vZGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlzQWxwPzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBPTkxZIEZPUiBSRVNQT05TSVZFIFRBQkxFOiBTZXR0aW5nIHRvIGRlZmluZSB0aGUgY2hlY2tib3ggaW4gdGhlIGNvbHVtbiBoZWFkZXI6IEFsbG93ZWQgdmFsdWVzIGFyZSBgRGVmYXVsdGAgb3IgYENsZWFyQWxsYC4gSWYgc2V0IHRvIGBEZWZhdWx0YCwgdGhlIHNhcC5tLlRhYmxlIGNvbnRyb2wgcmVuZGVycyB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCwgb3RoZXJ3aXNlIHRoZSBEZXNlbGVjdCBBbGwgYnV0dG9uIGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0bXVsdGlTZWxlY3RNb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIGZvciBiaW5kaW5nIHRoZSB0YWJsZSB0byBhIG5hdmlnYXRpb24gcGF0aC4gT25seSB0aGUgcGF0aCBpcyB1c2VkIGZvciBiaW5kaW5nIHJvd3MuXG5cdCAqL1xuXHRuYXZpZ2F0aW9uUGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUgdGFibGUgaXMgaW4gYSBMaXN0UmVwb3J0IG11bHRpIHZpZXdcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHR1c2VCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0dGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb247IC8vIFdlIHJlcXVpcmUgdGFibGVEZWZpbml0aW9uIHRvIGJlIHRoZXJlIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBmb3JtYWxseSByZXF1aXJlZFxuXG5cdHRhYmxlRGVmaW5pdGlvbkNvbnRleHQ/OiBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGFiVGl0bGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc3BsYXlTZWdtZW50ZWRCdXR0b24/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQ3JlYXRpb25PcHRpb25zXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChjcmVhdGlvbk9wdGlvbnNJbnB1dDogVGFibGVDcmVhdGlvbk9wdGlvbnMpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSAmJlxuXHRcdFx0XHQhW1wiTmV3UGFnZVwiLCBcIklubGluZVwiLCBcIklubGluZUNyZWF0aW9uUm93c1wiLCBcIkV4dGVybmFsXCIsIFwiQ3JlYXRpb25EaWFsb2dcIl0uaW5jbHVkZXMoY3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSlcblx0XHRcdCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEFsbG93ZWQgdmFsdWUgJHtjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lfSBmb3IgY3JlYXRpb25Nb2RlIGRvZXMgbm90IG1hdGNoYCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjcmVhdGlvbk9wdGlvbnNJbnB1dDtcblx0XHR9XG5cdH0pXG5cdGNyZWF0aW9uTW9kZTogUHJvcGVydGllc09mPFRhYmxlQ3JlYXRpb25PcHRpb25zPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFuYWx5dGljYWxDb25maWd1cmF0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRcdGlmICh0eXBlb2YgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJ0cnVlXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0fVxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUHJvcGVydGllc09mPEFuYWx5dGljYWxDb25maWd1cmF0aW9uPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgYWN0aW9ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbkdyb3VwUHJvcGVydGllc1xuXHR9KVxuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBtYXNzIGVkaXQgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk1hc3NFZGl0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzXG5cdH0pXG5cdG1hc3NFZGl0PzogUmVjb3JkPHN0cmluZywgQmxvY2tNYXNzRWRpdD47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5PdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRpc0RlZmF1bHQ6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQ29sdW1uUHJvcGVydGllc1xuXHR9KVxuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuUXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0UXVpY2tWYXJpYW50U2VsZWN0aW9uXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFJlY29yZDxzdHJpbmcsIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uPjtcblxuXHRjb252ZXJ0ZWRNZXRhZGF0YTogQ29udmVydGVkTWV0YWRhdGE7XG5cblx0Y29udGV4dE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD47XG5cblx0LyoqXG5cdCAqIEJlZm9yZSBhIHRhYmxlIHJlYmluZCwgYW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJpbmRpbmcuXG5cdCAqXG5cdCAqIFRoZSBldmVudCBjb250YWlucyBhIHBhcmFtZXRlciwgYGNvbGxlY3Rpb25CaW5kaW5nSW5mb2AsIHdoaWNoIGlzIGFuIGluc3RhbmNlIG9mIGBDb2xsZWN0aW9uQmluZGluZ0luZm9BUElgLlxuXHQgKiBJdCBjYW4gYWxzbyBjb250YWluIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgYHF1aWNrRmlsdGVyS2V5YCwgd2hpY2ggaW5kaWNhdGVzIHdoYXQgaXMgdGhlIHF1aWNrIGZpbHRlciBrZXkgKGlmIGFueSkgYmVpbmcgcHJvY2Vzc2VkIGZvciB0aGUgdGFibGUuXG5cdCAqIFRoaXMgYWxsb3dzIHlvdSB0byBtYW5pcHVsYXRlIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhdHRhY2ggZXZlbnQgaGFuZGxlcnMgdG8gdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGFkZCBzZWxlY3RzLCBhbmQgYWRkIG9yIHJlYWQgdGhlIHNvcnRlcnMgYW5kIGZpbHRlcnMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0cHJpdmF0ZSByZWFkb25seSBiZWZvcmVSZWJpbmRUYWJsZT86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhIHJvdzsgdGhlIGV2ZW50IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHJvdyBpcyBjaG9zZW4uXG5cdCAqXG5cdCAqIFlvdSBjYW4gc2V0IHRoaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIG1hbnVhbGx5LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHJvd1ByZXNzPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBjaGFuZ2UgZXZlbnQgb2YgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBJbnRlcm5hbCBvbmx5XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGxpc3RCaW5kaW5nQ2hhbmdlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYW4gb3B0aW9uIG9mIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGluIHRoZSBBTFAgVmlld1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzcz86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZT86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTZWxlY3RlZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aW5pdGlhbExvYWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cblx0cHJpdmF0ZSByZWFkb25seSBtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8VGFibGVCbG9jaz4sIGNvbnRyb2xDb25maWd1cmF0aW9uOiB1bmtub3duLCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzOiBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbnRyb2xDb25maWd1cmF0aW9uLCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblx0XHRjb25zdCBjb250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pihcblx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHR0aGlzLmNvbnRleHRQYXRoXG5cdFx0KTtcblx0XHR0aGlzLmNvbnRleHRPYmplY3RQYXRoID0gY29udGV4dE9iamVjdFBhdGg7XG5cblx0XHR0aGlzLnRhYmxlRGVmaW5pdGlvbiA9IFRhYmxlQmxvY2suY3JlYXRlVGFibGVEZWZpbml0aW9uKHRoaXMsIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uQ29udGV4dCA9IE1hY3JvQVBJLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRoaXMudGFibGVEZWZpbml0aW9uIGFzIG9iamVjdCwgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cblx0XHR0aGlzLmNvbnZlcnRlZE1ldGFkYXRhID0gdGhpcy5jb250ZXh0T2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcztcblx0XHR0aGlzLm1ldGFNb2RlbCA9IHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MubW9kZWxzLm1ldGFNb2RlbDtcblx0XHR0aGlzLmNvbGxlY3Rpb25FbnRpdHkgPSB0aGlzLmNvbnZlcnRlZE1ldGFkYXRhLnJlc29sdmVQYXRoKHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY29sbGVjdGlvbikudGFyZ2V0IGFzIEVudGl0eVNldDtcblx0XHR0aGlzLmFwcENvbXBvbmVudCA9IHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MuYXBwQ29tcG9uZW50O1xuXHRcdHRoaXMuc2V0VXBJZCgpO1xuXG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUgPz89IHt9O1xuXHRcdHRoaXMuY3JlYXRpb25Nb2RlLm5hbWUgPz89IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uY3JlYXRlLm1vZGUgYXMgVGFibGVDcmVhdGlvbk9wdGlvbnNbXCJuYW1lXCJdO1xuXHRcdHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0ZUF0RW5kID8/PSAodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUgYXMgQ3JlYXRlQmVoYXZpb3IpLmFwcGVuZDtcblx0XHQvLyBTcGVjaWFsIGNvZGUgZm9yIHJlYWRPbmx5XG5cdFx0Ly8gcmVhZG9ubHkgPSBmYWxzZSAtPiBGb3JjZSBlZGl0YWJsZVxuXHRcdC8vIHJlYWRvbmx5ID0gdHJ1ZSAtPiBGb3JjZSBkaXNwbGF5IG1vZGVcblx0XHQvLyByZWFkb25seSA9IHVuZGVmaW5lZCAtPiBCb3VuZCB0byBlZGl0IGZsb3dcblx0XHRpZiAoXG5cdFx0XHR0aGlzLnJlYWRPbmx5ID09PSB1bmRlZmluZWQgJiZcblx0XHRcdCh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmRpc3BsYXlNb2RlID09PSB0cnVlIHx8IHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wucmVhZE9ubHkgPT09IHRydWUpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnJlYWRPbmx5ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRUYWJsZUFQSS51cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSh0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHMsIFtdLCB0aGlzLnRhYmxlRGVmaW5pdGlvbik7XG5cblx0XHRsZXQgdXNlQmFzaWNTZWFyY2ggPSBmYWxzZTtcblxuXHRcdC8vIE5vdGUgZm9yIHRoZSAnZmlsdGVyQmFyJyBwcm9wZXJ0eTpcblx0XHQvLyAxLiBJRCByZWxhdGl2ZSB0byB0aGUgdmlldyBvZiB0aGUgVGFibGUuXG5cdFx0Ly8gMi4gQWJzb2x1dGUgSUQuXG5cdFx0Ly8gMy4gSUQgd291bGQgYmUgY29uc2lkZXJlZCBpbiBhc3NvY2lhdGlvbiB0byBUYWJsZUFQSSdzIElELlxuXHRcdGlmICghdGhpcy5maWx0ZXJCYXIpIHtcblx0XHRcdC8vIGZpbHRlckJhcjogUHVibGljIHByb3BlcnR5IGZvciBidWlsZGluZyBibG9ja3Ncblx0XHRcdC8vIGZpbHRlckJhcklkOiBPbmx5IHVzZWQgYXMgSW50ZXJuYWwgcHJpdmF0ZSBwcm9wZXJ0eSBmb3IgRkUgdGVtcGxhdGVzXG5cdFx0XHR0aGlzLmZpbHRlckJhciA9IGdlbmVyYXRlKFt0aGlzLmNvbnRlbnRJZCwgXCJTdGFuZGFyZEFjdGlvblwiLCBcIkJhc2ljU2VhcmNoXCJdKTtcblx0XHRcdHVzZUJhc2ljU2VhcmNoID0gdHJ1ZTtcblx0XHR9XG5cdFx0Ly8gSW50ZXJuYWwgcHJvcGVydGllc1xuXHRcdHRoaXMudXNlQmFzaWNTZWFyY2ggPSB1c2VCYXNpY1NlYXJjaDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBhbm5vdGF0aW9uIHBhdGggcG9pbnRpbmcgdG8gdGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvbiAoTGluZUl0ZW0pLlxuXHQgKiBAcGFyYW0gY29udGV4dE9iamVjdFBhdGggVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuXHQgKiBAcmV0dXJucyBUaGUgYW5ub3RhdGlvbiBwYXRoXG5cdCAqL1xuXHRzdGF0aWMgZ2V0VmlzdWFsaXphdGlvblBhdGgoXG5cdFx0Y29udGV4dE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdFx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWV0YVBhdGggPSBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKGNvbnRleHRPYmplY3RQYXRoKSBhcyBzdHJpbmc7XG5cblx0XHQvLyBmYWxsYmFjayB0byBkZWZhdWx0IExpbmVJdGVtIGlmIG1ldGFwYXRoIGlzIG5vdCBzZXRcblx0XHRpZiAoIW1ldGFQYXRoKSB7XG5cdFx0XHRMb2cuZXJyb3IoYE1pc3NpbmcgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDtcblx0XHR9XG5cblx0XHRpZiAoaXNBbm5vdGF0aW9uT2ZUZXJtPExpbmVJdGVtPihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtKSkge1xuXHRcdFx0cmV0dXJuIG1ldGFQYXRoOyAvLyBNZXRhUGF0aCBpcyBhbHJlYWR5IHBvaW50aW5nIHRvIGEgTGluZUl0ZW1cblx0XHR9XG5cdFx0Ly9OZWVkIHRvIHN3aXRjaCB0byB0aGUgY29udGV4dCByZWxhdGVkIHRoZSBQViBvciBTUFZcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24obWV0YVBhdGgpO1xuXG5cdFx0bGV0IHZpc3VhbGl6YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdFx0aWYgKFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHRjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRcdCkgfHxcblx0XHRcdGlzQW5ub3RhdGlvbk9mVGVybTxQcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpXG5cdFx0KSB7XG5cdFx0XHR2aXN1YWxpemF0aW9ucyA9IGdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0bWV0YVBhdGgsXG5cdFx0XHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGFwYXRoIHBhcmFtZXRlciBmb3IgdGFibGUgOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHR9XG5cblx0XHRjb25zdCBsaW5lSXRlbVZpeiA9IHZpc3VhbGl6YXRpb25zLmZpbmQoKHZpeikgPT4ge1xuXHRcdFx0cmV0dXJuIHZpei52aXN1YWxpemF0aW9uLnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtO1xuXHRcdH0pO1xuXG5cdFx0aWYgKGxpbmVJdGVtVml6KSB7XG5cdFx0XHRyZXR1cm4gbGluZUl0ZW1WaXouYW5ub3RhdGlvblBhdGg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgYW5ub3RhdGlvbiBtaXNzaW5nIGluIFBWXG5cdFx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbTogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdFx0XHRyZXR1cm4gYEAke1VJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtfWA7IC8vIEZhbGxiYWNrXG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIGFkZFNldHRpbmcgPSAodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCA9PiB7XG5cdFx0aWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRhcmdldFtrZXldID0gdmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdGdldFRhYmxlU2V0dGluZ3MoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGNvbnN0IHRhYmxlU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlRXhwb3J0XCIsIHRoaXMuZW5hYmxlRXhwb3J0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRGaWxlTmFtZVwiLCB0aGlzLmV4cG9ydEZpbGVOYW1lKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRTaGVldE5hbWVcIiwgdGhpcy5leHBvcnRTaGVldE5hbWUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJlYWRPbmx5XCIsIHRoaXMucmVhZE9ubHkpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5pZ25vcmVkRmllbGRzKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiLCB0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJleHBvcnRSZXF1ZXN0U2l6ZVwiLCB0aGlzLmV4cG9ydFJlcXVlc3RTaXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJmcm96ZW5Db2x1bW5Db3VudFwiLCB0aGlzLmZyb3plbkNvbHVtbkNvdW50KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJkaXNhYmxlQ29sdW1uRnJlZXplXCIsIHRoaXMuZGlzYWJsZUNvbHVtbkZyZWV6ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcIiwgdGhpcy53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcik7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicm93Q291bnRNb2RlXCIsIHRoaXMucm93Q291bnRNb2RlKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudFwiLCB0aGlzLnJvd0NvdW50KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVGdWxsU2NyZWVuXCIsIHRoaXMuZW5hYmxlRnVsbFNjcmVlbik7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0QWxsXCIsIHRoaXMuZW5hYmxlU2VsZWN0QWxsKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXNcIiwgdGhpcy5lbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXMpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RlXCIsIHRoaXMuZW5hYmxlUGFzdGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb3B5VG9DbGlwYm9hcmRcIiwgdGhpcy5kaXNhYmxlQ29weVRvQ2xpcGJvYXJkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzY3JvbGxUaHJlc2hvbGRcIiwgdGhpcy5zY3JvbGxUaHJlc2hvbGQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInRocmVzaG9sZFwiLCB0aGlzLnRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicG9waW5MYXlvdXRcIiwgdGhpcy5wb3BpbkxheW91dCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwic2VsZWN0aW9uTW9kZVwiLCB0aGlzLnNlbGVjdGlvbk1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInR5cGVcIiwgdGhpcy50eXBlKTtcblx0XHRpZiAodGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24/LnF1aWNrRmlsdGVycz8ucGF0aHM/Lmxlbmd0aCkge1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsIHtcblx0XHRcdFx0cGF0aHM6IHRoaXMucXVpY2tWYXJpYW50U2VsZWN0aW9uLnF1aWNrRmlsdGVycy5wYXRocy5tYXAoKHBhdGgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4geyBhbm5vdGF0aW9uUGF0aDogcGF0aCB9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0c2hvd0NvdW50czogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnNob3dDb3VudHNcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmNyZWF0aW9uTW9kZSkge1xuXHRcdFx0Y29uc3QgY3JlYXRpb25Nb2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJuYW1lXCIsIHRoaXMuY3JlYXRpb25Nb2RlLm5hbWUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJjcmVhdGlvbkZpZWxkc1wiLCB0aGlzLmNyZWF0aW9uTW9kZS5jcmVhdGlvbkZpZWxkcyk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0ZUF0RW5kXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0ZUF0RW5kKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZVwiLCB0aGlzLmNyZWF0aW9uTW9kZS5pbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwib3V0Ym91bmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUub3V0Ym91bmQpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGNyZWF0aW9uTW9kZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0YWJsZVNldHRpbmdzW1wiY3JlYXRpb25Nb2RlXCJdID0gY3JlYXRpb25Nb2RlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1hc3NFZGl0KSB7XG5cdFx0XHRjb25zdCBlbmFibGVNYXNzRWRpdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJjdXN0b21GcmFnbWVudFwiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/LmN1c3RvbUNvbnRlbnQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImZyb21JbmxpbmVcIiwgdHJ1ZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwidmlzaWJsZUZpZWxkc1wiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/LnZpc2libGVGaWVsZHM/LmpvaW4oXCIsXCIpKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJpZ25vcmVkRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uaWdub3JlZEZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcIm9wZXJhdGlvbkdyb3VwaW5nTW9kZVwiLCB0aGlzLm1hc3NFZGl0LmNvbmZpZ3VyYXRpb24/Lm9wZXJhdGlvbkdyb3VwaW5nTW9kZSk7XG5cdFx0XHR0YWJsZVNldHRpbmdzW1wiZW5hYmxlTWFzc0VkaXRcIl0gPSBlbmFibGVNYXNzRWRpdDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5hbmFseXRpY2FsQ29uZmlndXJhdGlvbj8uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3QgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24sIFwiYWdncmVnYXRpb25PbkxlYWZMZXZlbFwiLCB0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwpO1xuXHRcdFx0aWYgKE9iamVjdC5lbnRyaWVzKGFuYWx5dGljYWxDb25maWd1cmF0aW9uKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJhbmFseXRpY2FsQ29uZmlndXJhdGlvblwiXSA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGFibGVTZXR0aW5ncztcblx0fVxuXG5cdHN0YXRpYyBjcmVhdGVUYWJsZURlZmluaXRpb24odGFibGU6IFRhYmxlQmxvY2ssIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpOiBUYWJsZVZpc3VhbGl6YXRpb24ge1xuXHRcdGNvbnN0IGluaXRpYWxDb252ZXJ0ZXJDb250ZXh0ID0gdGFibGUuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHRcdHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLFxuXHRcdFx0dGFibGUuY29udGV4dFBhdGg/LmdldFBhdGgoKSxcblx0XHRcdHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3Ncblx0XHQpO1xuXHRcdGNvbnN0IHZpc3VhbGl6YXRpb25QYXRoID0gVGFibGVCbG9jay5nZXRWaXN1YWxpemF0aW9uUGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCwgaW5pdGlhbENvbnZlcnRlckNvbnRleHQpO1xuXG5cdFx0Y29uc3QgdGFibGVTZXR0aW5ncyA9IHRhYmxlLmdldFRhYmxlU2V0dGluZ3MoKTtcblx0XHRjb25zdCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRcdFx0YWN0aW9uczogVGFibGVCbG9jay5jcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlKSxcblx0XHRcdGNvbHVtbnM6IFRhYmxlQmxvY2suY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0KHRhYmxlKSxcblx0XHRcdHRhYmxlU2V0dGluZ3Ncblx0XHR9O1xuXG5cdFx0Y29uc3QgZXh0cmFQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzO1xuXHRcdGNvbnN0IGNvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRcdGV4dHJhUGFyYW1zXG5cdFx0KTtcblxuXHRcdGxldCBhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCkge1xuXHRcdFx0Y29uc3Qgc3ZPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPFNlbGVjdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHR0YWJsZS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgsXG5cdFx0XHRcdHRhYmxlLmNvbnRleHRQYXRoIGFzIENvbnRleHRcblx0XHRcdCk7XG5cdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCA9IHN2T2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvbkRlZmluaXRpb24gPSBnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24oXG5cdFx0XHQodGFibGUuaW5NdWx0aVZpZXcgJiYgdGFibGUuY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0XG5cdFx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpXG5cdFx0XHRcdCAgKVxuXHRcdFx0XHQ6IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgodGFibGUuY29udGV4dE9iamVjdFBhdGgpKSBhcyBzdHJpbmcsXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0e1xuXHRcdFx0XHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50OiB0YWJsZS51c2VDb25kZW5zZWRMYXlvdXQsXG5cdFx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRpc01hY3JvT3JNdWx0aXBsZVZpZXc6IHRhYmxlLmluTXVsdGlWaWV3ID8/IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0Ly8gdGFrZSB0aGUgKGZpcnN0KSBUYWJsZSB2aXN1YWxpemF0aW9uXG5cdFx0cmV0dXJuIHZpc3VhbGl6YXRpb25EZWZpbml0aW9uLnZpc3VhbGl6YXRpb25zLmZpbmQoXG5cdFx0XHQodml6OiBUYWJsZVZpc3VhbGl6YXRpb24gfCBDaGFydFZpc3VhbGl6YXRpb24pID0+IHZpei50eXBlID09PSBWaXN1YWxpemF0aW9uVHlwZS5UYWJsZVxuXHRcdCkgYXMgVGFibGVWaXN1YWxpemF0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIG1hbmlmZXN0IGFjdGlvbnMgZm9yIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBibG9ja1xuXHQgKiBAcmV0dXJucyBUaGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlXG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlQWN0aW9uc0Zyb21NYW5pZmVzdCh0YWJsZTogVGFibGVCbG9jayk6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiB7XG5cdFx0Y29uc3QgYWN0aW9uc1NldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj4gPSB7fTtcblx0XHRjb25zdCBhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QgPSAoYWN0aW9uOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IGtleSA9IGFjdGlvbi5rZXkhO1xuXHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiAoYWN0aW9uLnBsYWNlbWVudCA/PyBcIkFmdGVyXCIpIGFzIFBsYWNlbWVudCxcblx0XHRcdFx0XHRhbmNob3I6IGFjdGlvbi5hbmNob3Jcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29tbWFuZDogYWN0aW9uLmNvbW1hbmQsXG5cdFx0XHRcdGVuYWJsZU9uU2VsZWN0OiBhY3Rpb24uZW5hYmxlT25TZWxlY3QsXG5cdFx0XHRcdHZpc2libGU6IGFjdGlvbi52aXNpYmxlLFxuXHRcdFx0XHRlbmFibGVkOiBhY3Rpb24uZW5hYmxlZCxcblx0XHRcdFx0aXNBSU9wZXJhdGlvbjogYWN0aW9uLmlzQUlPcGVyYXRpb24sXG5cdFx0XHRcdHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHksXG5cdFx0XHRcdGdyb3VwOiBhY3Rpb24uZ3JvdXBcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLl90eXBlID09PSBcIkFjdGlvblwiKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlLFxuXHRcdFx0XHRcdHByZXNzOiBhY3Rpb24ucHJlc3MsXG5cdFx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0aWYgKHRhYmxlLmFjdGlvbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9ucykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25cIiB8fCBpdGVtLl90eXBlID09PSBcIkFjdGlvbk92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoaXRlbSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cFwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiKSB7XG5cdFx0XHRcdFx0Ly8gQWN0aW9uR3JvdXAgb3IgQWN0aW9uR3JvdXBPdmVycmlkZVxuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGl0ZW0ua2V5ITtcblx0XHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGl0ZW0ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdFx0XHRhbmNob3I6IGl0ZW0uYW5jaG9yXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogaXRlbS5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ISlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHRcdFx0dGV4dDogaXRlbS50ZXh0LFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBpdGVtLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpdGVtLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25zU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgY29sdW1ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGU6IFRhYmxlQmxvY2spOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZT4ge1xuXHRcdGNvbnN0IGlzQmxvY2tDb2x1bW4gPSAoYmxvY2s6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZSk6IGJsb2NrIGlzIEJsb2NrQ29sdW1uID0+IHtcblx0XHRcdHJldHVybiBibG9jay5fdHlwZSA9PT0gXCJDb2x1bW5cIjtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29sdW1uU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiA9IHt9O1xuXG5cdFx0aWYgKHRhYmxlLmNvbHVtbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRcdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlciEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRyZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJTbG90XCIsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdFx0XHQvLyBhbGwgdGhlaXIgcHJvcGVydGllcyBpbiB0aGUgWE1MKVxuXHRcdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0XHRcdGFuY2hvcjogY29sdW1uLmFuY2hvcixcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uU2V0dGluZ3NbY29sdW1uLmtleSFdID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uU2V0dGluZ3M7XG5cdH1cblxuXHRzZXRVcElkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHQvLyBUaGUgZ2l2ZW4gSUQgc2hhbGwgYmUgYXNzaWduZWQgdG8gdGhlIFRhYmxlQVBJIGFuZCBub3QgdG8gdGhlIE1EQyBUYWJsZVxuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIGNvbnRlbnRJZCBiYXNlZCBvbiB0aGUgSUQsIGlmIG5vdCBwcm92aWRlZCAoRlBNIGNhc2UpXG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGdlbmVyYXRlIHRoZSBJRCBhbmQgdGhlIGNvbnRlbnRJRC4gRHVlIHRvIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBrZWVwIGl0IG9uIHRoZSBNREMgVGFibGUgYnV0IHByb3ZpZGUgYXNzaWduXG5cdFx0XHQvLyB0aGUgSUQgd2l0aCBhIDo6VGFibGUgc3VmZml4IHRvIHRoZSBUYWJsZUFQSVxuXHRcdFx0dGhpcy5pZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uaWQ7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0fVxuXHR9XG5cblx0X2dldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG5cdFx0cmV0dXJuICh0aGlzLmNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSB8fCAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk/LnRhcmdldFR5cGU7XG5cdH1cblxuXHRnZXRFbXB0eVJvd3NFbmFibGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW5hYmxlZCA9XG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID09PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGVuYWJsZWQgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IGVuYWJsZWQ7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSB0aGlzLl9nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgdGFibGVQcm9wcyA9IHRoaXMgYXMgdW5rbm93biBhcyBUYWJsZUJsb2NrUHJvcGVydGllcztcblx0XHR0YWJsZVByb3BzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLnJvd1ByZXNzICE9PSB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0YWJsZVByb3BzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRhYmxlUHJvcHMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsOiB0aGlzLm1ldGFQYXRoLmdldE1vZGVsKCkgfSk7XG5cblx0XHRsZXQgY3JlYXRpb25Nb2RlOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUgJiYgT2JqZWN0LmtleXModGhpcy5jcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNyZWF0aW9uTW9kZSA9IDxUYWJsZUNyZWF0aW9uT3B0aW9ucyB7Li4udGhpcy5jcmVhdGlvbk1vZGV9IC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGFibGVBUElcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0XHRiaW5kaW5nPXtge2ludGVybmFsPmNvbnRyb2xzLyR7dGhpcy5jb250ZW50SWR9fWB9XG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0Y29udGVudElkPXt0aGlzLmNvbnRlbnRJZH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRoZWFkZXJMZXZlbD17dGhpcy5oZWFkZXJMZXZlbH1cblx0XHRcdFx0aGVhZGVyU3R5bGU9e3RoaXMuaGVhZGVyU3R5bGV9XG5cdFx0XHRcdGhlYWRlclZpc2libGU9e3RoaXMuaGVhZGVyVmlzaWJsZX1cblx0XHRcdFx0dGFiVGl0bGU9e3RoaXMudGFiVGl0bGV9XG5cdFx0XHRcdGV4cG9ydFJlcXVlc3RTaXplPXt0aGlzLmV4cG9ydFJlcXVlc3RTaXplfVxuXHRcdFx0XHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPXt0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmR9XG5cdFx0XHRcdHNjcm9sbFRocmVzaG9sZD17dGhpcy5zY3JvbGxUaHJlc2hvbGR9XG5cdFx0XHRcdHRocmVzaG9sZD17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGR9XG5cdFx0XHRcdHBvcGluTGF5b3V0PXt0aGlzLnBvcGluTGF5b3V0fVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZXhwb3J0RmlsZU5hbWU9e3RoaXMuZXhwb3J0RmlsZU5hbWV9XG5cdFx0XHRcdGV4cG9ydFNoZWV0TmFtZT17dGhpcy5leHBvcnRTaGVldE5hbWV9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBjcmVhdGVDdXN0b21EYXRhKFwidGFibGVBUElMb2NhbElkXCIsIHRoaXMuX2FwaUlkKSxcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPEZsZXhJdGVtRGF0YSBtYXhXaWR0aD1cIjEwMCVcIiAvPixcblx0XHRcdFx0XHRjb250ZW50OiBnZXRNRENUYWJsZVRlbXBsYXRlKHRhYmxlUHJvcHMsIHtcblx0XHRcdFx0XHRcdG1ldGFQYXRoOiB0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IHRoaXMuY29udmVydGVkTWV0YWRhdGEsXG5cdFx0XHRcdFx0XHRtZXRhTW9kZWw6IHRoaXMubWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiB0aGlzLmFwcENvbXBvbmVudFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1RhYmxlQVBJPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF5R0EsU0FBU0EsZ0JBQWdCQSxDQUFDQyxJQUFhLEVBQUVDLElBQVksRUFBc0I7SUFDMUUsT0FBT0QsSUFBSSxDQUFDRSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJRSxTQUFTO0VBQzVDOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLGlDQUFpQ0EsQ0FBQ0osSUFBYSxFQUFFQyxJQUFZLEVBQVc7SUFDaEYsTUFBTUksY0FBYyxHQUFHTCxJQUFJLENBQUNFLFlBQVksQ0FBQ0QsSUFBSSxDQUFDO0lBQzlDLFFBQVFJLGNBQWM7TUFDckIsS0FBSyxJQUFJO01BQ1QsS0FBSyxNQUFNO1FBQ1YsT0FBTyxJQUFJO01BQ1osS0FBSyxPQUFPO1FBQ1gsT0FBTyxLQUFLO01BQ2I7UUFDQyxPQUFPQSxjQUFjO01BQXdCO0lBQy9DO0VBQ0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQyx5QkFBeUJBLENBQUNDLEdBQTRCLEVBQVE7SUFDdEVDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixHQUFHLENBQUMs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
1603
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyIsIm92ZXJGbG93R3JvdXAiLCJvdmVyZmxvd0dyb3VwIiwic2hvd1NlcGFyYXRvciIsImFjdGlvbnNJbk1lbnUiLCJBcnJheSIsInByb3RvdHlwZSIsInNsaWNlIiwiYXBwbHkiLCJtYXAiLCJzdWJBY3Rpb24iLCJzZXRBdHRyaWJ1dGUiLCJhY3Rpb25zIiwiZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMiLCJjaGlsZENvbHVtbiIsIndpZHRoIiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJpbXBvcnRhbmNlIiwiaG9yaXpvbnRhbEFsaWduIiwiYXZhaWxhYmlsaXR5IiwiZGlzYWJsZUV4cG9ydCIsImV4cG9ydFNldHRpbmdzIiwicGFyc2VFeHBvcnRTZXR0aW5ncyIsInNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMiLCJoZWFkZXIiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJnZXRDb2x1bW5UZW1wbGF0ZSIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsInBhcnNlU2ltcGxlQWdncmVnYXRpb24iLCJ3cmFwIiwidHlwZSIsInByb3BlcnR5IiwidGV4dEFsaWduIiwibGFiZWwiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiwidmFsdWVNYXAiLCJhZ2dyZWdhdGlvbiIsImdldEFnZ3JlZ2F0aW9uIiwiaSIsImxlbmd0aCIsImNoaWxkIiwiaXRlbSIsIm5vZGVOYW1lIiwiZW5kc1dpdGgiLCJhZ2dyZWdhdGlvbk5hbWUiLCJyZXN1bHQiLCJnZXRBdHRyaWJ1dGVOYW1lcyIsInZhbHVlIiwiVGFibGVCbG9jayIsIl9kZWMiLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidW5kZXJseWluZ1R5cGUiLCJleHBlY3RlZFR5cGVzIiwiZXhwZWN0ZWRBbm5vdGF0aW9ucyIsImlzUHVibGljIiwiX2RlYzMiLCJiaW5kYWJsZSIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsImFsbG93ZWRWYWx1ZXMiLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJpc0Fzc29jaWF0aW9uIiwiX2RlYzI1IiwiX2RlYzI2IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiX2RlYzMyIiwiX2RlYzMzIiwiX2RlYzM0IiwiX2RlYzM1IiwiX2RlYzM2IiwiX2RlYzM3IiwiX2RlYzM4IiwiX2RlYzM5IiwiX2RlYzQwIiwiX2RlYzQxIiwiX2RlYzQyIiwiX2RlYzQzIiwiX2RlYzQ0IiwiX2RlYzQ1IiwiX2RlYzQ2IiwiX2RlYzQ3IiwiX2RlYzQ4IiwidmFsaWRhdGUiLCJjcmVhdGlvbk9wdGlvbnNJbnB1dCIsIkVycm9yIiwiX2RlYzQ5IiwiYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24iLCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsIiwiX2RlYzUwIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImFsdFR5cGVzIiwiaGFzVmlydHVhbE5vZGUiLCJtdWx0aXBsZSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJfZGVjNTEiLCJza2lwS2V5IiwiX2RlYzUyIiwiaXNEZWZhdWx0IiwiX2RlYzUzIiwiX2RlYzU0IiwicmVhbGx5U2tpcEtleSIsIl9kZWM1NSIsImJsb2NrRXZlbnQiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfZGVjNjAiLCJfZGVjNjEiLCJfZGVjNjIiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiX2Rlc2NyaXB0b3I1OSIsIl9kZXNjcmlwdG9yNjAiLCJfZGVzY3JpcHRvcjYxIiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFibGVEZWZpbml0aW9uIiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uQ29udGV4dCIsIk1hY3JvQVBJIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRlZFR5cGVzIiwibWV0YU1vZGVsIiwibW9kZWxzIiwiY29sbGVjdGlvbkVudGl0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbiIsImNvbGxlY3Rpb24iLCJ0YXJnZXQiLCJhcHBDb21wb25lbnQiLCJzZXRVcElkIiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRlIiwibW9kZSIsImNyZWF0ZUF0RW5kIiwiYXBwZW5kIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImNvbnRyb2wiLCJUYWJsZUFQSSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwidXNlQmFzaWNTZWFyY2giLCJmaWx0ZXJCYXIiLCJnZW5lcmF0ZSIsImNvbnRlbnRJZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiTG9nIiwiZXJyb3IiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJ0YXJnZXRPYmplY3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwiZmluZCIsInZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9wcm90byIsImdldFRhYmxlU2V0dGluZ3MiLCJ0YWJsZVNldHRpbmdzIiwiYWRkU2V0dGluZyIsImVuYWJsZUV4cG9ydCIsImV4cG9ydEZpbGVOYW1lIiwiZXhwb3J0U2hlZXROYW1lIiwic2VsZWN0aW9uTGltaXQiLCJjb25kZW5zZWRUYWJsZUxheW91dCIsImV4cG9ydFJlcXVlc3RTaXplIiwiZnJvemVuQ29sdW1uQ291bnQiLCJkaXNhYmxlQ29sdW1uRnJlZXplIiwicm93Q291bnRNb2RlIiwicm93Q291bnQiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlU2VsZWN0QWxsIiwiZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzIiwiZW5hYmxlUGFzdGUiLCJkaXNhYmxlQ29weVRvQ2xpcGJvYXJkIiwic2Nyb2xsVGhyZXNob2xkIiwidGhyZXNob2xkIiwicG9waW5MYXlvdXQiLCJzZWxlY3Rpb25Nb2RlIiwicXVpY2tGaWx0ZXJzIiwicGF0aCIsImNyZWF0aW9uRmllbGRzIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIm91dGJvdW5kIiwiZW50cmllcyIsIm1hc3NFZGl0IiwiZW5hYmxlTWFzc0VkaXQiLCJjb25maWd1cmF0aW9uIiwiam9pbiIsInRhYmxlIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0IiwiZ2V0UGF0aCIsInZpc3VhbGl6YXRpb25QYXRoIiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwib3ZlcmZsb3dHcm91cHMiLCJjcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3VwcyIsImNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QiLCJjb2x1bW5zIiwiY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCIsImFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCIsInN2T2JqZWN0UGF0aCIsInZpc3VhbGl6YXRpb25EZWZpbml0aW9uIiwiZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIiwiaW5NdWx0aVZpZXciLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJ1c2VDb25kZW5zZWRMYXlvdXQiLCJpc01hY3JvT3JNdWx0aXBsZVZpZXciLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiYWN0aW9uc1NldHRpbmdzIiwiYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0IiwicG9zaXRpb24iLCJpc0FJT3BlcmF0aW9uIiwicHJpb3JpdHkiLCJncm91cCIsIl9fbm9XcmFwIiwiYWZ0ZXJFeGVjdXRpb24iLCJ2YWx1ZXMiLCJtZW51Iiwib3ZlcmZsb3dHcm91cHNTZXR0aW5ncyIsImFjdGlvbk92ZXJmbG93R3JvdXBzIiwiaXNCbG9ja0NvbHVtbiIsImJsb2NrIiwiY29sdW1uU2V0dGluZ3MiLCJjb2x1bW4iLCJjdXN0b21Db2x1bW5EZWZpbml0aW9uIiwiaWQiLCJfYXBpSWQiLCJnZXRDb250ZW50SWQiLCJhcGlJZCIsIl9nZXRFbnRpdHlUeXBlIiwiZW50aXR5VHlwZSIsInRhcmdldFR5cGUiLCJnZXRFbXB0eVJvd3NFbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiYSIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsImdldFRlbXBsYXRlIiwidGFibGVQcm9wcyIsIm92ZXJyaWRlUm93UHJlc3MiLCJyb3dQcmVzcyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJnZXRNb2RlbCIsIl9qc3giLCJUYWJsZUNyZWF0aW9uT3B0aW9ucyIsImJpbmRpbmciLCJoZWFkZXJMZXZlbCIsImhlYWRlclN0eWxlIiwiaGVhZGVyVmlzaWJsZSIsInRhYlRpdGxlIiwiaXNTZWFyY2hhYmxlIiwiYnVzeSIsImluaXRpYWxMb2FkIiwiaXNBbHAiLCJmaWVsZE1vZGUiLCJwZXJzb25hbGl6YXRpb24iLCJ2YXJpYW50U2F2ZWQiLCJ2YXJpYW50U2VsZWN0ZWQiLCJzZWdtZW50ZWRCdXR0b25QcmVzcyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsInNlbGVjdGlvbkNoYW5nZSIsImxpc3RCaW5kaW5nQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsImVuYWJsZUF1dG9Db2x1bW5XaWR0aCIsImJlZm9yZVJlYmluZFRhYmxlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJkaXNwbGF5U2VnbWVudGVkQnV0dG9uIiwiY29udGVudCIsImdldE1EQ1RhYmxlVGVtcGxhdGUiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlLmJsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7XG5cdGJsb2NrQWdncmVnYXRpb24sXG5cdGJsb2NrQXR0cmlidXRlLFxuXHRibG9ja0V2ZW50LFxuXHRkZWZpbmVCdWlsZGluZ0Jsb2NrXG59IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcblx0QXZhaWxhYmlsaXR5VHlwZSxcblx0Q3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0SG9yaXpvbnRhbEFsaWduLFxuXHRJbXBvcnRhbmNlLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0T3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBWaXN1YWxpemF0aW9uQW5kUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHtcblx0Z2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uLFxuXHRnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVCZWhhdmlvciwgVGFibGVUeXBlLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb2xsZWN0aW9uQmluZGluZ0luZm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TURDVGFibGVUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIE92ZXJmbG93R3JvdXAgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvT3ZlcmZsb3dHcm91cHNcIjtcbmltcG9ydCBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IE92ZXJmbG93VG9vbGJhclByaW9yaXR5IH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHsgdHlwZSBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgRXhwb3J0U2V0dGluZ3MsIFRhYmxlJFNlbGVjdGlvbkNoYW5nZUV2ZW50UGFyYW1ldGVycyB9IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFJvd0FjdGlvbkl0ZW0kUHJlc3NFdmVudFBhcmFtZXRlcnMgfSBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Sb3dBY3Rpb25JdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IG51bGw7XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgbnVsbDtcblx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIjtcbn07XG50eXBlIEJsb2NrTWFzc0VkaXQgPSBQYXJ0aWFsPE9taXQ8TWFzc0VkaXQsIFwiY3VzdG9tQ29udGVudFwiPj4gJiB7IGN1c3RvbUNvbnRlbnQ/OiBzdHJpbmc7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uID0gUHJvcGVydGllc09mPFF1aWNrVmFyaWFudFNlbGVjdGlvbj4gJiB7IGtleTogc3RyaW5nIH07XG50eXBlIEJsb2NrQWN0aW9uID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uLCBcInByZXNzXCI+PiAmIHsgX3R5cGU6IFwiQWN0aW9uXCI7IHByZXNzOiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cCA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbkdyb3VwLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQmxvY2tBY3Rpb25PdmVycmlkZSA9IFByb3BlcnRpZXNPZjxBY3Rpb25PdmVycmlkZT4gJiB7IF90eXBlOiBcIkFjdGlvbk92ZXJyaWRlXCIgfTtcbnR5cGUgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXBPdmVycmlkZSwgXCJhY3Rpb25zXCI+PiAmIHtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xufTtcbnR5cGUgQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRrZXk6IHN0cmluZztcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0Y29tbWFuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRlbmFibGVPblNlbGVjdDogXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0aXNBSU9wZXJhdGlvbj86IGJvb2xlYW47XG5cdHByaW9yaXR5PzogT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdGdyb3VwPzogbnVtYmVyO1xuXHRvdmVyZmxvd0dyb3VwPzogbnVtYmVyO1xuXHRfdHlwZTogXCJBY3Rpb25cIiB8IFwiQWN0aW9uT3ZlcnJpZGVcIjtcbn07XG5mdW5jdGlvbiBzYWZlR2V0QXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBub2RlLmdldEF0dHJpYnV0ZShuYW1lKSA/PyB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZHluYW1pYyBCb29sZWFuIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIGdldCB0aGUgYXR0cmlidXRlIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIFRoZSBCb29sZWFuIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqL1xuZnVuY3Rpb24gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKG5vZGU6IEVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbmFibGVtZW50QXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRzd2l0Y2ggKGVuYWJsZW1lbnRBdHRyKSB7XG5cdFx0Y2FzZSBudWxsOlxuXHRcdGNhc2UgXCJ0cnVlXCI6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIFwiZmFsc2VcIjpcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGVuYWJsZW1lbnRBdHRyIGFzIHVua25vd24gYXMgYm9vbGVhbjsgLy8gVG8gbWFuYWdlIGJpbmRpbmcgZXhwcmVzc2lvbnNcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFjdGlvbiBwcm9wZXJ0aWVzIGZyb20gYW4gWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBhY3Rpb24gcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KGFjdGlvbk5vZGU6IEVsZW1lbnQpOiBCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUge1xuXHRjb25zdCBjb21tb25Qcm9wZXJ0aWVzID0gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlKTtcblx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdHByZXNzOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJlc3NcIiksXG5cdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlc1NlbGVjdGlvblwiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdFx0fSBhcyBCbG9ja0FjdGlvbjtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGVuYWJsZUF1dG9TY3JvbGw6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZUF1dG9TY3JvbGxcIiksXG5cdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIiksXG5cdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXCIpLFxuXHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0fSBhcyBCbG9ja0FjdGlvbk92ZXJyaWRlO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQWN0aW9uUHJvcGVydGllcyhhY3Rpb25Ob2RlOiBFbGVtZW50KTogQ29tbW9uQ3VzdG9tQWN0aW9uIHtcblx0Y29uc3QgYWN0aW9uOiBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdFx0a2V5OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcImtleVwiKSEucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIiksXG5cdFx0ZW5hYmxlZDogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlZFwiKSxcblx0XHR2aXNpYmxlOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJ2aXNpYmxlXCIpLFxuXHRcdGNvbW1hbmQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJjb21tYW5kXCIpLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZW5hYmxlT25TZWxlY3RcIikgYXMgXCJzaW5nbGVcIiB8IFwibXVsdGlcIiB8IHVuZGVmaW5lZCxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvblwiID8gXCJBY3Rpb25cIiA6IFwiQWN0aW9uT3ZlcnJpZGVcIlxuXHR9O1xuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiaXNBSU9wZXJhdGlvblwiKSkge1xuXHRcdGFjdGlvbltcImlzQUlPcGVyYXRpb25cIl0gPSBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJpc0FJT3BlcmF0aW9uXCIpO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcInByaW9yaXR5XCIpKSB7XG5cdFx0YWN0aW9uW1wicHJpb3JpdHlcIl0gPSBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicHJpb3JpdHlcIikgYXMgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHk7XG5cdH1cblxuXHRpZiAoYWN0aW9uTm9kZT8uZ2V0QXR0cmlidXRlKFwiZ3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJncm91cFwiXSA9IE51bWJlci5wYXJzZUludChzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiZ3JvdXBcIikgPz8gXCJcIiwgMTApO1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcIm92ZXJmbG93R3JvdXBcIikpIHtcblx0XHRhY3Rpb25bXCJvdmVyZmxvd0dyb3VwXCJdID0gTnVtYmVyLnBhcnNlSW50KHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJvdmVyZmxvd0dyb3VwXCIpID8/IFwiXCIsIDEwKTtcblx0fVxuXG5cdHJldHVybiBhY3Rpb247XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBhY3Rpb25zIGFuZCBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGFjdGlvbiBvciBhY3Rpb24gZ3JvdXAgcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gc2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUge1xuXHRpZiAoW1wiQWN0aW9uR3JvdXBcIiwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCJdLmluY2x1ZGVzKGFjdGlvbk5vZGUubG9jYWxOYW1lKSkge1xuXHRcdGNvbnN0IGNvbW1vblByb3BlcnRpZXMgPSBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKGFjdGlvbk5vZGUsIGFnZ3JlZ2F0aW9uT2JqZWN0IGFzIEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZSk7XG5cdFx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRBY3Rpb25cIiksXG5cdFx0XHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0XHRcdH0gYXMgQmxvY2tBY3Rpb25Hcm91cDtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbW1vblByb3BlcnRpZXMgYXMgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlO1xuXHR9XG5cblx0Ly9BY3Rpb24gb3IgQWN0aW9uT3ZlcnJpZGVcblx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoYWN0aW9uTm9kZSk7XG59XG5cbmNvbnN0IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChlbGVtZW50OiBFbGVtZW50KTogQmxvY2tNYXNzRWRpdCB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcImNvbmZpZ3VyYXRpb25cIixcblx0XHRjdXN0b21Db250ZW50OiBlbGVtZW50LmNoaWxkcmVuWzBdPy5vdXRlckhUTUwsXG5cdFx0dmlzaWJsZUZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ2aXNpYmxlRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0aWdub3JlZEZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZ25vcmVkRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0b3BlcmF0aW9uR3JvdXBpbmdNb2RlOiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIikgPz8gdW5kZWZpbmVkKSBhcyBcIkNoYW5nZVNldFwiIHwgXCJJc29sYXRlZFwiIHwgdW5kZWZpbmVkXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBUaGUgWE1MIG5vZGUgY29udGFpbmluZyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5jb25zdCBzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24gPSBmdW5jdGlvbiAocXVpY2tWYXJpYW50U2VsZWN0aW9uOiBFbGVtZW50KTogQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24ge1xuXHRyZXR1cm4ge1xuXHRcdGtleTogXCJxdWlja0ZpbHRlcnNcIixcblx0XHRwYXRoczogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInBhdGhzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0c2hvd0NvdW50czogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInNob3dDb3VudHNcIikgPT09IFwidHJ1ZVwiXG5cdH07XG59O1xuXG5jb25zdCBzZXRDdXN0b21BY3Rpb25PdmVyZmxvd0dyb3VwUHJvcGVydGllcyA9IGZ1bmN0aW9uIChvdmVyRmxvd0dyb3VwOiBFbGVtZW50KTogUHJvcGVydGllc09mPE92ZXJmbG93R3JvdXA+IHtcblx0cmV0dXJuIHtcblx0XHRvdmVyZmxvd0dyb3VwOiBOdW1iZXIucGFyc2VJbnQob3ZlckZsb3dHcm91cC5nZXRBdHRyaWJ1dGUoXCJvdmVyZmxvd0dyb3VwXCIpIGFzIHN0cmluZywgMTApLFxuXHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuZ2V0QXR0cmlidXRlKFwic2hvd1NlcGFyYXRvclwiKSA9PT0gXCJ0cnVlXCJcblx0fTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGFjdGlvbiBncm91cHMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gYWN0aW9uTm9kZSBUaGUgYWN0aW9uIGdyb3VwIG5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdCBUaGUgYWdncmVnYXRpb24gb2JqZWN0XG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMoXG5cdGFjdGlvbk5vZGU6IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCIgfCBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbn0ge1xuXHRjb25zdCBhY3Rpb25zSW5NZW51ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFjdGlvbk5vZGUuY2hpbGRyZW4pLm1hcCgoc3ViQWN0aW9uOiBFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoc3ViQWN0aW9uKTtcblx0fSk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWN0aW9uTm9kZS5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0cmV0dXJuIHtcblx0XHRrZXk6IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSxcblx0XHRhY3Rpb25zOiBhY3Rpb25zSW5NZW51LFxuXHRcdGFuY2hvcjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImFuY2hvclwiKSxcblx0XHRwbGFjZW1lbnQ6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJwbGFjZW1lbnRcIikgYXMgXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZCxcblx0XHRfdHlwZTogYWN0aW9uTm9kZS5sb2NhbE5hbWUgPT09IFwiQWN0aW9uR3JvdXBcIiA/IFwiQWN0aW9uR3JvdXBcIiA6IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tb24gY3VzdG9tIHByb3BlcnRpZXMgb2YgdGhlIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW4gVGhlIGNvbHVtbiBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhcblx0Y2hpbGRDb2x1bW46IEVsZW1lbnQsXG5cdGFnZ3JlZ2F0aW9uT2JqZWN0OiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGVcbik6IHtcblx0a2V5OiBzdHJpbmc7XG5cdHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpbXBvcnRhbmNlOiBJbXBvcnRhbmNlIHwgdW5kZWZpbmVkO1xuXHRob3Jpem9udGFsQWxpZ246IEhvcml6b250YWxBbGlnbiB8IHVuZGVmaW5lZDtcblx0YXZhaWxhYmlsaXR5OiBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRleHBvcnRTZXR0aW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgb2JqZWN0PiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cdGRpc2FibGVFeHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZGlzYWJsZUV4cG9ydDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZUV4cG9ydFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcImRpc2FibGVFeHBvcnRcIikgPT09IFwidHJ1ZVwiIDogdW5kZWZpbmVkLFxuXHRcdGV4cG9ydFNldHRpbmdzOiBwYXJzZUV4cG9ydFNldHRpbmdzKGNoaWxkQ29sdW1uKVxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY3VzdG9tIGNvbHVtbnMgZnJvbSB0aGUgWE1MIG5vZGUuXG4gKiBAcGFyYW0gY2hpbGRDb2x1bW5cbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzKFxuXHRjaGlsZENvbHVtbjogRWxlbWVudCxcblx0YWdncmVnYXRpb25PYmplY3Q6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZVxuKTogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlIHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdGlmIChjaGlsZENvbHVtbi5sb2NhbE5hbWUgPT09IFwiQ29sdW1uXCIpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRcdGhlYWRlcjogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJoZWFkZXJcIiksXG5cdFx0XHR0b29sdGlwOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInRvb2x0aXBcIiksXG5cdFx0XHR0ZW1wbGF0ZTogZ2V0Q29sdW1uVGVtcGxhdGUoY2hpbGRDb2x1bW4pLFxuXHRcdFx0cHJvcGVydGllczogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJwcm9wZXJ0aWVzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0XHRyZXF1aXJlZDogY2hpbGRDb2x1bW4uZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPyBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA9PT0gXCJ0cnVlXCIgOiB1bmRlZmluZWQsXG5cdFx0XHRfdHlwZTogY2hpbGRDb2x1bW4ubG9jYWxOYW1lXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdC4uLmdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzKGNoaWxkQ29sdW1uLCBhZ2dyZWdhdGlvbk9iamVjdCksXG5cdFx0X3R5cGU6IFwiQ29sdW1uT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG5jb25zdCBwYXJzZUV4cG9ydFNldHRpbmdzID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBvYmplY3Q+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgZXhwb3J0U2V0dGluZ3MgPSBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwiZXhwb3J0U2V0dGluZ3NcIik7XG5cdGlmICghZXhwb3J0U2V0dGluZ3MpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0dGVtcGxhdGU6IGV4cG9ydFNldHRpbmdzLnRlbXBsYXRlLFxuXHRcdHdyYXA6IGV4cG9ydFNldHRpbmdzLndyYXAgPT09IFwidHJ1ZVwiLFxuXHRcdHR5cGU6IGV4cG9ydFNldHRpbmdzLnR5cGUsXG5cdFx0cHJvcGVydHk6IGV4cG9ydFNldHRpbmdzLnByb3BlcnR5Py5zcGxpdChcIixcIiksXG5cdFx0d2lkdGg6IGV4cG9ydFNldHRpbmdzLndpZHRoLFxuXHRcdHRleHRBbGlnbjogZXhwb3J0U2V0dGluZ3MudGV4dEFsaWduLFxuXHRcdGxhYmVsOiBleHBvcnRTZXR0aW5ncy5sYWJlbCxcblx0XHR0cnVlVmFsdWU6IGV4cG9ydFNldHRpbmdzLnRydWVWYWx1ZSxcblx0XHRmYWxzZVZhbHVlOiBleHBvcnRTZXR0aW5ncy5mYWxzZVZhbHVlLFxuXHRcdHZhbHVlTWFwOiBleHBvcnRTZXR0aW5ncy52YWx1ZU1hcFxuXHR9O1xufTtcblxuY29uc3QgZ2V0Q29sdW1uVGVtcGxhdGUgPSAoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbiA9IGdldEFnZ3JlZ2F0aW9uKGVsZW1lbnQsIFwidGVtcGxhdGVcIik7XG5cdGlmICghYWdncmVnYXRpb24pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdFx0aWYgKGNoaWxkICYmICFjaGlsZC5ub2RlTmFtZS5lbmRzV2l0aChcImV4cG9ydFNldHRpbmdzXCIpKSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uID0gY2hpbGQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb24/Lm91dGVySFRNTCA/PyBlbGVtZW50LmdldEF0dHJpYnV0ZShcInRlbXBsYXRlXCIpID8/IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHBhcnNlU2ltcGxlQWdncmVnYXRpb24gPSAoZWxlbWVudDogRWxlbWVudCwgYWdncmVnYXRpb25OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWUpO1xuXHRjb25zdCBjaGlsZCA9IGFnZ3JlZ2F0aW9uPy5jaGlsZHJlblswXTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cdGlmICghY2hpbGQpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGZvciAoY29uc3QgbmFtZSBvZiBjaGlsZC5nZXRBdHRyaWJ1dGVOYW1lcygpKSB7XG5cdFx0Y29uc3QgdmFsdWUgPSBjaGlsZC5nZXRBdHRyaWJ1dGUobmFtZSk7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRyZXN1bHRbbmFtZV0gPSB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IGdldEFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBhZ2dyZWdhdGlvbjogRWxlbWVudCB8IHVuZGVmaW5lZDtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY2hpbGQgPSBlbGVtZW50LmNoaWxkcmVuLml0ZW0oaSk7XG5cdFx0aWYgKGNoaWxkPy5ub2RlTmFtZS5lbmRzV2l0aChhZ2dyZWdhdGlvbk5hbWUpID09PSB0cnVlKSB7XG5cdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhZ2dyZWdhdGlvbjtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSB0YWJsZSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50LCBvciBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGFubm90YXRpb24gaXMgZXhwZWN0ZWQsIGJ1dCB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2sgY2FuIGFsc28gYmUgdXNlZCB0byBkaXNwbGF5IGFuIEVudGl0eVNldC5cbiAqIDxicj5cbiAqIElmIGEgUHJlc2VudGF0aW9uVmFyaWFudCBpcyBzcGVjaWZpZWQsIHRoZW4gaXQgbXVzdCBoYXZlIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKiA8YnI+XG4gKiBJZiBhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgY29udGFpbiBhIHZhbGlkIFByZXNlbnRhdGlvblZhcmlhbnQgdGhhdCBhbHNvIGhhcyBhIFVJLkxpbmVJdGVtIGFzIHRoZSBmaXJzdCBwcm9wZXJ0eSBvZiB0aGUgVmlzdWFsaXphdGlvbnMuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOlRhYmxlIGlkPVwiTXlUYWJsZVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIgLyZndDtcbiAqIDwvcHJlPlxuICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvYnVpbGRpbmdCbG9ja3MvdGFibGUvdGFibGVEZWZhdWx0IE92ZXJ2aWV3IG9mIFRhYmxlIEJ1aWxkaW5nIEJsb2Nrc31cbiAqIEBtaXhlcyBzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXG4gKiBAYXVnbWVudHMgc2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiVGFibGVcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuVGFibGVBUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgJiBSZXF1aXJlZCBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGEgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnQgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBpbiB0aGUgbWV0YW1vZGVsLCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0UGF0aC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIixcblx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFwiXG5cdFx0XSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aCE6IENvbnRleHQ7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQdWJsaWMgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogQW4gZXhwcmVzc2lvbiB0aGF0IGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgJ2J1c3knIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlLCBiaW5kYWJsZTogdHJ1ZSB9KVxuXHRidXN5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcGF0aCBvZiB0aGUgY29udGV4dCB1c2VkIGluIHRoZSBjdXJyZW50IHBhZ2Ugb3IgYmxvY2suXG5cdCAqIFRoaXMgc2V0dGluZyBpcyBkZWZpbmVkIGJ5IHRoZSBmcmFtZXdvcmsuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhYmxlIGFkYXB0cyB0byB0aGUgY29uZGVuc2VkIGxheW91dC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBjb25kZW5zZWRUYWJsZUxheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRhYmxlIGNhbiBiZSBvcGVuZWQgaW4gZnVsbHNjcmVlbiBtb2RlIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHB1YmxpYyByZWFkb25seSBlbmFibGVGdWxsU2NyZWVuPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEgY29waWVkIHRvIHRoZSBjb21wdXRlZCBjb2x1bW5zIGlzIHNlbnQgdG8gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIENsZWFyIEFsbCBidXR0b24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXHQgKiBUbyBlbmFibGUgdGhlIENsZWFyIEFsbCBidXR0b24gYnkgZGVmYXVsdCwgeW91IG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgdG8gZmFsc2UuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVNlbGVjdEFsbD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBleHBvcnQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRXhwb3J0PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29uZmlndXJlcyB0aGUgZmlsZSBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydEZpbGVOYW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb25maWd1cmVzIHRoZSBzaGVldCBuYW1lIG9mIGV4cG9ydGVkIHRhYmxlLlxuXHQgKiBJdCdzIGxpbWl0ZWQgdG8gMzEgY2hhcmFjdGVycy4gSWYgdGhlIG5hbWUgaXMgbG9uZ2VyLCBpdCB3aWxsIGJlIHRydW5jYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGV4cG9ydFNoZWV0TmFtZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIGV4cG9ydGVkIGluIG9uZSByZXF1ZXN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RTaXplPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGF0IG9uY2UgaW4gdGhlIHRhYmxlLlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkxpbWl0PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBOdW1iZXIgb2YgY29sdW1ucyB0aGF0IGFyZSBmaXhlZCBvbiB0aGUgbGVmdC4gT25seSBjb2x1bW5zIHdoaWNoIGFyZSBub3QgZml4ZWQgY2FuIGJlIHNjcm9sbGVkIGhvcml6b250YWxseS5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyBub3QgcmVsZXZhbnQgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgbnVtYmVyIG9mIGZpeGVkIGNvbHVtbnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIENvbHVtbiBTZXR0aW5ncyBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgZG9lc24ndCBhcHBseSBmb3IgcmVzcG9uc2l2ZSB0YWJsZXNcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZUNvbHVtbkZyZWV6ZT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgd2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyB0aGUgdGFibGUgaGFuZGxlcyB0aGUgdmlzaWJsZSByb3dzLiBEb2VzIG5vdCBhcHBseSB0byBSZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBBdXRvYCwgYEZpeGVkYCwgYW5kIGBJbnRlcmFjdGl2ZWAuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEZpeGVkYCwgdGhlIHRhYmxlIGFsd2F5cyBoYXMgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBBdXRvYCwgdGhlIG51bWJlciBvZiByb3dzIGlzIGNoYW5nZWQgYnkgdGhlIHRhYmxlIGF1dG9tYXRpY2FsbHkuIEl0IHdpbGwgdGhlbiBhZGp1c3QgaXRzIHJvdyBjb3VudCB0byB0aGUgc3BhY2UgaXQgaXMgYWxsb3dlZCB0byBjb3ZlciAobGltaXRlZCBieSB0aGUgc3Vycm91bmRpbmcgY29udGFpbmVyKSBidXQgaXQgY2Fubm90IGhhdmUgbGVzcyB0aGFuIGRlZmluZWQgaW4gdGhlIGByb3dDb3VudGAgcHJvcGVydHkuPGJyLz5cblx0ICogLSBJZiBzZXQgdG8gYEludGVyYWN0aXZlYCB0aGUgdGFibGUgY2FuIGhhdmUgYXMgbWFueSByb3dzIGFzIGRlZmluZWQgaW4gdGhlIHJvd0NvdW50IHByb3BlcnR5LiBUaGlzIG51bWJlciBvZiByb3dzIGNhbiBiZSBtb2RpZmllZCBieSBkcmFnZ2luZyB0aGUgcmVzaXplciBhdmFpbGFibGUgaW4gdGhpcyBtb2RlLjxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkF1dG9cIiwgXCJGaXhlZFwiLCBcIkludGVyYWN0aXZlXCJdLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIHJvd3MgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0YWJsZS4gRG9lcyBub3QgYXBwbHkgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcm93Q291bnQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBwYXN0ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBlbmFibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGU/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBjb3B5IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGRpc2FibGVkIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGRpc2FibGVDb3B5VG9DbGlwYm9hcmQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGhvdyBtYW55IGFkZGl0aW9uYWwgZGF0YSByZWNvcmRzIGFyZSByZXF1ZXN0ZWQgZnJvbSB0aGUgYmFjay1lbmQgc3lzdGVtIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0c2Nyb2xsVGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBpbml0aWFsbHkgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2sgZW5kLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aHJlc2hvbGQ/OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCBvcHRpb25zIG9mIHRoZSB0YWJsZSBwb3BpbnMuIE9ubHkgYXBwbGllcyB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBCbG9ja2AsIGBHcmlkTGFyZ2VgLCBhbmQgYEdyaWRTbWFsbGAuPGJyLz5cblx0ICogLSBgQmxvY2tgOiBTZXRzIGEgYmxvY2sgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcG9waW4gY29udGFpbmVyIGFyZSByZW5kZXJlZCBvbmUgYmVsb3cgdGhlIG90aGVyLjxici8+XG5cdCAqIC0gYEdyaWRMYXJnZWA6IFNldHMgYSBncmlkIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBncmlkIHdpZHRoIGZvciBlYWNoIHRhYmxlIHBvcGluIGlzIGNvbXBhcmF0aXZlbHkgbGFyZ2VyIHRoYW4gR3JpZFNtYWxsLCBzbyB0aGlzIGxheW91dCBhbGxvd3MgbGVzcyBjb250ZW50IHRvIGJlIHJlbmRlcmVkIGluIGEgc2luZ2xlIHBvcGluIHJvdy48YnIvPlxuXHQgKiAtIGBHcmlkU21hbGxgOiBTZXRzIGEgZ3JpZCBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZ3JpZCB3aWR0aCBmb3IgZWFjaCB0YWJsZSBwb3BpbiBpcyBzbWFsbCwgc28gdGhpcyBsYXlvdXQgYWxsb3dzIG1vcmUgY29udGVudCB0byBiZSByZW5kZXJlZCBpbiBhIHNpbmdsZSBwb3BpbiByb3cuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgYWxsb3dlZFZhbHVlczogW1wiQmxvY2tcIiwgXCJHcmlkTGFyZ2VcIiwgXCJHcmlkU21hbGxcIl0sIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgcG9waW5MYXlvdXQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXIgYnVpbGRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGlzQXNzb2NpYXRpb246IHRydWUgfSlcblx0ZmlsdGVyQmFyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIGhlYWRlciB0ZXh0IHRoYXQgaXMgc2hvd24gaW4gdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXI/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIFwiYXJpYS1sZXZlbFwiIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRoZWFkZXJMZXZlbD86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIHRoZSBoZWFkZXIgdGV4dCBzaG91bGQgYmUgc2hvd24gb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyVmlzaWJsZT86IGJvb2xlYW47XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0Y29udGVudElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBZGRpdGlvbm5hbCBTZWxlY3Rpb25WYXJpYW50IHRvIGJlIGFwcGxpZWQgb24gdGhlIHRhYmxlIGNvbnRlbnQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvbnM6IFtcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblZhcmlhbnRcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBhY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGljaCBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIGZvciB0aGUgdGFibGUgcGVyc29uYWxpemF0aW9uIGRpYWxvZy5cblx0ICpcblx0ICogSWYgaXQgaXMgc2V0IHRvIGB0cnVlYCwgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHRoaXMga2luZCBvZiB0YWJsZSBhcmUgZW5hYmxlZC48YnIvPlxuXHQgKiBJZiBpdCBpcyBzZXQgdG8gYGZhbHNlYCwgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkLjxici8+XG5cdCAqIDxici8+XG5cdCAqIFlvdSBjYW4gYWxzbyBwcm92aWRlIGEgbW9yZSBncmFudWxhciBjb250cm9sIGZvciB0aGUgcGVyc29uYWxpemF0aW9uIGJ5IHByb3ZpZGluZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggdGhlIG9wdGlvbnMgeW91IHdhbnQgdG8gYmUgYXZhaWxhYmxlLjxici8+XG5cdCAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTo8YnIvPlxuXHQgKiAtIFNvcnQ8YnIvPlxuXHQgKiAtIENvbHVtbjxici8+XG5cdCAqIC0gRmlsdGVyPGJyLz5cblx0ICogLSBHcm91cDxici8+XG5cdCAqIDxici8+XG5cdCAqIFRoZSBHcm91cCBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIHRvIGFuYWx5dGljYWwgdGFibGVzIGFuZCByZXNwb25zaXZlIHRhYmxlcy48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdyZWFkLW9ubHknIHN0YXRlIG9mIHRoZSB0YWJsZS5cblx0ICpcblx0ICogSWYgeW91IGRvIG5vdCBzZXQgYW55IGV4cHJlc3Npb24sIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cmVhZE9ubHk/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIHRhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBidWlsZGluZyBibG9jayB0byByZW5kZXIgdGhlIGRhdGEuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgR3JpZFRhYmxlYCwgYFJlc3BvbnNpdmVUYWJsZWAgYW5kIGBBbmFseXRpY2FsVGFibGVgLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgYWxsb3dlZFZhbHVlczogW1wiR3JpZFRhYmxlXCIsIFwiUmVzcG9uc2l2ZVRhYmxlXCIsIFwiQW5hbHl0aWNhbFRhYmxlXCJdIH0pXG5cdHJlYWRvbmx5IHR5cGU/OiBUYWJsZVR5cGU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgd2l0aCBjb25kZW5zZWQgbGF5b3V0ICh0cnVlL2ZhbHNlKS4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBgZmFsc2VgLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHVzZUNvbmRlbnNlZExheW91dD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHNlbGVjdGlvbiBtb2RlIHRvIGJlIHVzZWQgYnkgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYE5vbmVgLCBgU2luZ2xlYCwgYEZvcmNlU2luZ2xlYCwgYE11bHRpYCwgYEZvcmNlTXVsdGlgIG9yIGBBdXRvYC5cblx0ICogSWYgc2V0IHRvICdTaW5nbGUnLCAnTXVsdGknIG9yICdBdXRvJywgU0FQIEZpb3JpIGVsZW1lbnRzIGhvb2tzIGludG8gdGhlIHN0YW5kYXJkIGxpZmVjeWNsZSB0byBkZXRlcm1pbmUgdGhlIGNvbnNpc3RlbnQgc2VsZWN0aW9uIG1vZGUuXG5cdCAqIElmIHNldCB0byAnRm9yY2VTaW5nbGUnIG9yICdGb3JjZU11bHRpJyB5b3VyIGNob2ljZSB3aWxsIGJlIHJlc3BlY3RlZCBidXQgdGhpcyBtaWdodCBub3QgcmVzcGVjdCB0aGUgRmlvcmkgZ3VpZGVsaW5lcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIk5vbmVcIiwgXCJTaW5nbGVcIiwgXCJNdWx0aVwiLCBcIkF1dG9cIiwgXCJGb3JjZU11bHRpXCIsIFwiRm9yY2VTaW5nbGVcIl0gfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Nb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUga2luZCBvZiB2YXJpYW50IG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlIGlzIGBDb250cm9sYC48YnIvPlxuXHQgKiBJZiBzZXQgd2l0aCB2YWx1ZSBgQ29udHJvbGAsIGEgdmFyaWFudCBtYW5hZ2VtZW50IGNvbnRyb2wgaXMgc2VlbiB3aXRoaW4gdGhlIHRhYmxlIGFuZCB0aGUgdGFibGUgaXMgbGlua2VkIHRvIHRoaXMuPGJyLz5cblx0ICogSWYgbm90IHNldCB3aXRoIGFueSB2YWx1ZSwgY29udHJvbCBsZXZlbCB2YXJpYW50IG1hbmFnZW1lbnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkNvbnRyb2xcIl0gfSlcblx0dmFyaWFudE1hbmFnZW1lbnQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbW1hLXNlcGFyYXRlZCB2YWx1ZSBvZiBmaWVsZHMgdGhhdCBtdXN0IGJlIGlnbm9yZWQgaW4gdGhlIE9EYXRhIG1ldGFkYXRhIGJ5IHRoZSBUYWJsZSBidWlsZGluZyBibG9jay48YnI+XG5cdCAqIFRoZSB0YWJsZSBidWlsZGluZyBibG9jayBpcyBub3QgZ29pbmcgdG8gY3JlYXRlIGJ1aWx0LWluIGNvbHVtbnMgb3Igb2ZmZXIgdGFibGUgcGVyc29uYWxpemF0aW9uIGZvciBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgYXJlIHByb3ZpZGVkIGluIHRoZSBpZ25vcmVkZmllbGRzLjxicj5cblx0ICogQW55IGNvbHVtbiByZWZlcmVuY2luZyBhbiBpZ25vcmVkIGZpZWxkIGlzIHRvIGJlIHJlbW92ZWQuPGJyPlxuXHQgKiBAc2luY2UgMS4xMjQuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpZ25vcmVkRmllbGRzPzogc3RyaW5nO1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHJpdmF0ZSBBdHRyaWJ1dGVzICoqKioqKioqKioqKioqKioqKioqXG5cdHByaXZhdGUgX2FwaUlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIHRhYmxlLCBvciByZW1vdmVzIGl0IGNvbXBsZXRlbHkuXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9gLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURpYWxvZ2AsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtRG90YCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZWAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdGAgb3IgYHRleHRgLlxuXHQgKiBAc2luY2UgMS4xMjkuMFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0YWxsb3dlZFZhbHVlczogW1xuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQXV0b1wiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtQmFzZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTWVkaXVtXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1Eb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUV4dHJhU21hbGxcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNjZW5lXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1MYXJnZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU3BvdFwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtU21hbGxcIixcblx0XHRcdFwidGV4dFwiXG5cdFx0XVxuXHR9KVxuXHRtb2RlRm9yTm9EYXRhTWVzc2FnZT86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbGxlY3Rpb25FbnRpdHk6IEVudGl0eVNldCB8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgaGVhZGVyIHN0eWxlIG9mIHRoZSB0YWJsZSBoZWFkZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiIH0pXG5cdGhlYWRlclN0eWxlPzogVGl0bGVMZXZlbDtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBjb2x1bW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPzogYm9vbGVhbiA9IHRydWU7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWVsZE1vZGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGlzQWxwPzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBPTkxZIEZPUiBSRVNQT05TSVZFIFRBQkxFOiBTZXR0aW5nIHRvIGRlZmluZSB0aGUgY2hlY2tib3ggaW4gdGhlIGNvbHVtbiBoZWFkZXI6IEFsbG93ZWQgdmFsdWVzIGFyZSBgRGVmYXVsdGAgb3IgYENsZWFyQWxsYC4gSWYgc2V0IHRvIGBEZWZhdWx0YCwgdGhlIHNhcC5tLlRhYmxlIGNvbnRyb2wgcmVuZGVycyB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCwgb3RoZXJ3aXNlIHRoZSBEZXNlbGVjdCBBbGwgYnV0dG9uIGlzIHJlbmRlcmVkLlxuXHQgKi9cblx0bXVsdGlTZWxlY3RNb2RlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIGZvciBiaW5kaW5nIHRoZSB0YWJsZSB0byBhIG5hdmlnYXRpb24gcGF0aC4gT25seSB0aGUgcGF0aCBpcyB1c2VkIGZvciBiaW5kaW5nIHJvd3MuXG5cdCAqL1xuXHRuYXZpZ2F0aW9uUGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUgdGFibGUgaXMgaW4gYSBMaXN0UmVwb3J0IG11bHRpIHZpZXdcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGluTXVsdGlWaWV3PzogYm9vbGVhbjtcblxuXHR1c2VCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0dGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb247IC8vIFdlIHJlcXVpcmUgdGFibGVEZWZpbml0aW9uIHRvIGJlIHRoZXJlIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBmb3JtYWxseSByZXF1aXJlZFxuXG5cdHRhYmxlRGVmaW5pdGlvbkNvbnRleHQ/OiBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGFiVGl0bGUgPSBcIlwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGRpc3BsYXlTZWdtZW50ZWRCdXR0b24/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQ3JlYXRpb25PcHRpb25zXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChjcmVhdGlvbk9wdGlvbnNJbnB1dDogVGFibGVDcmVhdGlvbk9wdGlvbnMpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSAmJlxuXHRcdFx0XHQhW1wiTmV3UGFnZVwiLCBcIklubGluZVwiLCBcIklubGluZUNyZWF0aW9uUm93c1wiLCBcIkV4dGVybmFsXCIsIFwiQ3JlYXRpb25EaWFsb2dcIl0uaW5jbHVkZXMoY3JlYXRpb25PcHRpb25zSW5wdXQubmFtZSlcblx0XHRcdCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEFsbG93ZWQgdmFsdWUgJHtjcmVhdGlvbk9wdGlvbnNJbnB1dC5uYW1lfSBmb3IgY3JlYXRpb25Nb2RlIGRvZXMgbm90IG1hdGNoYCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjcmVhdGlvbk9wdGlvbnNJbnB1dDtcblx0XHR9XG5cdH0pXG5cdGNyZWF0aW9uTW9kZTogUHJvcGVydGllc09mPFRhYmxlQ3JlYXRpb25PcHRpb25zPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBIHNldCBvZiBvcHRpb25zIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29udHJvbCB0aGUgYWdncmVnYXRpb24gYmVoYXZpb3Jcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFuYWx5dGljYWxDb25maWd1cmF0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uIChhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0XHRcdGlmICh0eXBlb2YgYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbi5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9PT0gXCJ0cnVlXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0fVxuXHR9KVxuXHRhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUHJvcGVydGllc09mPEFuYWx5dGljYWxDb25maWd1cmF0aW9uPiA9IHt9O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgYWN0aW9ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIiwgXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbk92ZXJyaWRlXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25Hcm91cE92ZXJyaWRlXCJdLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbkdyb3VwUHJvcGVydGllc1xuXHR9KVxuXHRhY3Rpb25zPzogUmVjb3JkPHN0cmluZywgQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbkdyb3VwIHwgQmxvY2tBY3Rpb25PdmVycmlkZSB8IEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBtYXNzIGVkaXQgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLk1hc3NFZGl0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzXG5cdH0pXG5cdG1hc3NFZGl0PzogUmVjb3JkPHN0cmluZywgQmxvY2tNYXNzRWRpdD47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBjb2x1bW5zIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIixcblx0XHRhbHRUeXBlczogW1wic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5PdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRpc0RlZmF1bHQ6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tQ29sdW1uUHJvcGVydGllc1xuXHR9KVxuXHRjb2x1bW5zPzogUmVjb3JkPHN0cmluZywgQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuUXVpY2tWYXJpYW50U2VsZWN0aW9uXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0UXVpY2tWYXJpYW50U2VsZWN0aW9uXG5cdH0pXG5cdHF1aWNrVmFyaWFudFNlbGVjdGlvbj86IFJlY29yZDxzdHJpbmcsIEJsb2NrUXVpY2tWYXJpYW50U2VsZWN0aW9uPjtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIG92ZXJmbG93R3JvdXBzIG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5PdmVyZmxvd0dyb3VwXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0c2tpcEtleTogdHJ1ZSxcblx0XHRyZWFsbHlTa2lwS2V5OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUFjdGlvbk92ZXJmbG93R3JvdXBQcm9wZXJ0aWVzXG5cdH0pXG5cdGFjdGlvbk92ZXJmbG93R3JvdXBzPzogUmVjb3JkPHN0cmluZywgT3ZlcmZsb3dHcm91cD47XG5cblx0Y29udmVydGVkTWV0YWRhdGE6IENvbnZlcnRlZE1ldGFkYXRhO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+O1xuXG5cdC8qKlxuXHQgKiBCZWZvcmUgYSB0YWJsZSByZWJpbmQsIGFuIGV2ZW50IGlzIHRyaWdnZXJlZCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBUaGUgZXZlbnQgY29udGFpbnMgYSBwYXJhbWV0ZXIsIGBjb2xsZWN0aW9uQmluZGluZ0luZm9gLCB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiBgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJYC5cblx0ICogSXQgY2FuIGFsc28gY29udGFpbiBhbiBvcHRpb25hbCBwYXJhbWV0ZXIsIGBxdWlja0ZpbHRlcktleWAsIHdoaWNoIGluZGljYXRlcyB3aGF0IGlzIHRoZSBxdWljayBmaWx0ZXIga2V5IChpZiBhbnkpIGJlaW5nIHByb2Nlc3NlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFuaXB1bGF0ZSB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB0YWJsZSdzIGxpc3QgYmluZGluZy5cblx0ICogWW91IGNhbiB1c2UgdGhpcyBldmVudCB0byBhZGQgc2VsZWN0cywgYW5kIGFkZCBvciByZWFkIHRoZSBzb3J0ZXJzIGFuZCBmaWx0ZXJzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHByaXZhdGUgcmVhZG9ubHkgYmVmb3JlUmViaW5kVGFibGU/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8eyBjb2xsZWN0aW9uQmluZGluZ0luZm86IENvbGxlY3Rpb25CaW5kaW5nSW5mb0FQSTsgcXVpY2tGaWx0ZXJLZXk/OiBzdHJpbmcgfSwgVGFibGVBUEk+XG5cdD47XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYSByb3cuIFRoZSBldmVudCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCByb3cgaXMgY2hvc2VuLlxuXHQgKlxuXHQgKiBZb3UgY2FuIHNldCB0aGlzIHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiBtYW51YWxseS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRyb3dQcmVzcz86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDxSb3dBY3Rpb25JdGVtJFByZXNzRXZlbnRQYXJhbWV0ZXJzLCBUYWJsZUFQST4+O1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBjaGFuZ2UgZXZlbnQgb2YgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKlxuXHQgKiBJbnRlcm5hbCBvbmx5XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGxpc3RCaW5kaW5nQ2hhbmdlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNob29zZXMgYW4gb3B0aW9uIG9mIHRoZSBzZWdtZW50ZWQgYnV0dG9uIGluIHRoZSBBTFAgVmlld1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzZWdtZW50ZWRCdXR0b25QcmVzcz86IHN0cmluZztcblxuXHRAYmxvY2tFdmVudCgpXG5cdHZhcmlhbnRTYXZlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQW4gZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpbiB0aGUgdGFibGUgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZT86IEV2ZW50SGFuZGxlcjxcblx0XHRVSTVFdmVudDxUYWJsZSRTZWxlY3Rpb25DaGFuZ2VFdmVudFBhcmFtZXRlcnMgJiB7IHNlbGVjdGVkQ29udGV4dDogQ29udGV4dFtdIH0sIFRhYmxlQVBJPlxuXHQ+O1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxUYWJsZUJsb2NrPiwgY29udHJvbENvbmZpZ3VyYXRpb246IHVua25vd24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29udHJvbENvbmZpZ3VyYXRpb24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdGNvbnN0IGNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHQpO1xuXHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBjb250ZXh0T2JqZWN0UGF0aDtcblxuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gVGFibGVCbG9jay5jcmVhdGVUYWJsZURlZmluaXRpb24odGhpcywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdFx0dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0ID0gTWFjcm9BUEkuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy50YWJsZURlZmluaXRpb24gYXMgb2JqZWN0LCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblxuXHRcdHRoaXMuY29udmVydGVkTWV0YWRhdGEgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsO1xuXHRcdHRoaXMuY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXMgRW50aXR5U2V0O1xuXHRcdHRoaXMuYXBwQ29tcG9uZW50ID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zZXRVcElkKCk7XG5cblx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0ge307XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl07XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQgPz89ICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNyZWF0ZSBhcyBDcmVhdGVCZWhhdmlvcikuYXBwZW5kO1xuXHRcdC8vIFNwZWNpYWwgY29kZSBmb3IgcmVhZE9ubHlcblx0XHQvLyByZWFkb25seSA9IGZhbHNlIC0+IEZvcmNlIGVkaXRhYmxlXG5cdFx0Ly8gcmVhZG9ubHkgPSB0cnVlIC0+IEZvcmNlIGRpc3BsYXkgbW9kZVxuXHRcdC8vIHJlYWRvbmx5ID0gdW5kZWZpbmVkIC0+IEJvdW5kIHRvIGVkaXQgZmxvd1xuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdFRhYmxlQVBJLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgW10sIHRoaXMudGFibGVEZWZpbml0aW9uKTtcblxuXHRcdGxldCB1c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXG5cdFx0Ly8gTm90ZSBmb3IgdGhlICdmaWx0ZXJCYXInIHByb3BlcnR5OlxuXHRcdC8vIDEuIElEIHJlbGF0aXZlIHRvIHRoZSB2aWV3IG9mIHRoZSBUYWJsZS5cblx0XHQvLyAyLiBBYnNvbHV0ZSBJRC5cblx0XHQvLyAzLiBJRCB3b3VsZCBiZSBjb25zaWRlcmVkIGluIGFzc29jaWF0aW9uIHRvIFRhYmxlQVBJJ3MgSUQuXG5cdFx0aWYgKCF0aGlzLmZpbHRlckJhcikge1xuXHRcdFx0Ly8gZmlsdGVyQmFyOiBQdWJsaWMgcHJvcGVydHkgZm9yIGJ1aWxkaW5nIGJsb2Nrc1xuXHRcdFx0Ly8gZmlsdGVyQmFySWQ6IE9ubHkgdXNlZCBhcyBJbnRlcm5hbCBwcml2YXRlIHByb3BlcnR5IGZvciBGRSB0ZW1wbGF0ZXNcblx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0dXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdH1cblx0XHQvLyBJbnRlcm5hbCBwcm9wZXJ0aWVzXG5cdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IHVzZUJhc2ljU2VhcmNoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG5cdCAqIEBwYXJhbSBjb250ZXh0T2JqZWN0UGF0aCBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgdGFibGVcblx0ICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdHN0YXRpYyBnZXRWaXN1YWxpemF0aW9uUGF0aChcblx0XHRjb250ZXh0T2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoY29udGV4dE9iamVjdFBhdGgpIGFzIHN0cmluZztcblxuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRcdGlmICghbWV0YVBhdGgpIHtcblx0XHRcdExvZy5lcnJvcihgTWlzc2luZyBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbWApO1xuXHRcdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHRcdH1cblxuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm08TGluZUl0ZW0+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHRcdH1cblx0XHQvL05lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IHJlbGF0ZWQgdGhlIFBWIG9yIFNQVlxuXHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0XHRsZXQgdmlzdWFsaXphdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0XHRpZiAoXG5cdFx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0KSB8fFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFByZXNlbnRhdGlvblZhcmlhbnQ+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudClcblx0XHQpIHtcblx0XHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRtZXRhUGF0aCxcblx0XHRcdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKGBCYWQgbWV0YXBhdGggcGFyYW1ldGVyIGZvciB0YWJsZSA6ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpbmVJdGVtVml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LnZpc3VhbGl6YXRpb24udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW07XG5cdFx0fSk7XG5cblx0XHRpZiAobGluZUl0ZW1WaXopIHtcblx0XHRcdHJldHVybiBsaW5lSXRlbVZpei5hbm5vdGF0aW9uUGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBhbm5vdGF0aW9uIG1pc3NpbmcgaW4gUFZcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYWRkU2V0dGluZyA9ICh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0VGFibGVTZXR0aW5ncygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgdGFibGVTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydEZpbGVOYW1lXCIsIHRoaXMuZXhwb3J0RmlsZU5hbWUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFNoZWV0TmFtZVwiLCB0aGlzLmV4cG9ydFNoZWV0TmFtZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwicmVhZE9ubHlcIiwgdGhpcy5yZWFkT25seSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiaWdub3JlZEZpZWxkc1wiLCB0aGlzLmlnbm9yZWRGaWVsZHMpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNlbGVjdGlvbkxpbWl0XCIsIHRoaXMuc2VsZWN0aW9uTGltaXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImNvbmRlbnNlZFRhYmxlTGF5b3V0XCIsIHRoaXMuY29uZGVuc2VkVGFibGVMYXlvdXQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImZyb3plbkNvbHVtbkNvdW50XCIsIHRoaXMuZnJvemVuQ29sdW1uQ291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiLCB0aGlzLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudE1vZGVcIiwgdGhpcy5yb3dDb3VudE1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUZ1bGxTY3JlZW5cIiwgdGhpcy5lbmFibGVGdWxsU2NyZWVuKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc1wiLCB0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGVcIiwgdGhpcy5lbmFibGVQYXN0ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZFwiLCB0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidGhyZXNob2xkXCIsIHRoaXMudGhyZXNob2xkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJwb3BpbkxheW91dFwiLCB0aGlzLnBvcGluTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucXVpY2tGaWx0ZXJzPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJxdWlja1ZhcmlhbnRTZWxlY3Rpb25cIiwge1xuXHRcdFx0XHRwYXRoczogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5xdWlja0ZpbHRlcnMuc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlKSB7XG5cdFx0XHRjb25zdCBjcmVhdGlvbk1vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRlQXRFbmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImN1c3RvbUZyYWdtZW50XCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uY3VzdG9tQ29udGVudCk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8udmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5pZ25vcmVkRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8ub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZVNldHRpbmdzO1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0YWJsZTogVGFibGVCbG9jaywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nc1xuXHRcdCk7XG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvblBhdGggPSBUYWJsZUJsb2NrLmdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0XHRjb25zdCB0YWJsZVNldHRpbmdzID0gdGFibGUuZ2V0VGFibGVTZXR0aW5ncygpO1xuXHRcdGNvbnN0IGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0XHRvdmVyZmxvd0dyb3VwczogVGFibGVCbG9jay5jcmVhdGVBY3Rpb25PdmVyZmxvd0dyb3Vwcyh0YWJsZSksXG5cdFx0XHRhY3Rpb25zOiBUYWJsZUJsb2NrLmNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0Y29sdW1uczogVGFibGVCbG9jay5jcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0dGFibGVTZXR0aW5nc1xuXHRcdH07XG5cblx0XHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0ZXh0cmFQYXJhbXNcblx0XHQpO1xuXG5cdFx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGFibGUuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSB7XG5cdFx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCxcblx0XHRcdFx0dGFibGUuY29udGV4dFBhdGggYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdCh0YWJsZS5pbk11bHRpVmlldyAmJiB0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCkpIGFzIHN0cmluZyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHR7XG5cdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IHRhYmxlLnVzZUNvbmRlbnNlZExheW91dCxcblx0XHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGUuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbkRlZmluaXRpb24udmlzdWFsaXphdGlvbnMuZmluZChcblx0XHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdFx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlOiBUYWJsZUJsb2NrKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHtcblx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiA9IHt9O1xuXHRcdGNvbnN0IGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCA9IChhY3Rpb246IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleSE7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21tYW5kOiBhY3Rpb24uY29tbWFuZCxcblx0XHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRcdGVuYWJsZWQ6IGFjdGlvbi5lbmFibGVkLFxuXHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdFx0cHJpb3JpdHk6IGFjdGlvbi5wcmlvcml0eSxcblx0XHRcdFx0Z3JvdXA6IGFjdGlvbi5ncm91cCxcblx0XHRcdFx0b3ZlcmZsb3dHcm91cDogYWN0aW9uLm92ZXJmbG93R3JvdXBcblx0XHRcdH07XG5cdFx0XHRpZiAoYWN0aW9uLl90eXBlID09PSBcIkFjdGlvblwiKSB7XG5cdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdHRleHQ6IGFjdGlvbi50ZXh0LFxuXHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlLFxuXHRcdFx0XHRcdHByZXNzOiBhY3Rpb24ucHJlc3MsXG5cdFx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBhZnRlckV4ZWN1dGlvbiA9IHtcblx0XHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogYWN0aW9uW1wiZW5hYmxlQXV0b1Njcm9sbFwiXSxcblx0XHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHRcdH07XG5cdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGFmdGVyRXhlY3V0aW9uKTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0YWZ0ZXJFeGVjdXRpb246IE9iamVjdC5lbnRyaWVzKGFmdGVyRXhlY3V0aW9uKS5sZW5ndGggPyBhZnRlckV4ZWN1dGlvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0ZGVmYXVsdFZhbHVlc0Z1bmN0aW9uOiBhY3Rpb24uZGVmYXVsdFZhbHVlc0Z1bmN0aW9uXG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0aWYgKHRhYmxlLmFjdGlvbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9ucykuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25cIiB8fCBpdGVtLl90eXBlID09PSBcIkFjdGlvbk92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoaXRlbSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cFwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBPdmVycmlkZVwiKSB7XG5cdFx0XHRcdFx0Ly8gQWN0aW9uR3JvdXAgb3IgQWN0aW9uR3JvdXBPdmVycmlkZVxuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGl0ZW0ua2V5ITtcblx0XHRcdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGl0ZW0ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdFx0XHRhbmNob3I6IGl0ZW0uYW5jaG9yXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bWVudTogaXRlbS5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ua2V5ISlcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHQuLi5hY3Rpb25zU2V0dGluZ3Nba2V5XSxcblx0XHRcdFx0XHRcdFx0dGV4dDogaXRlbS50ZXh0LFxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0QWN0aW9uOiBpdGVtLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdF9fbm9XcmFwOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpdGVtLmFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25zU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZS5cblx0ICogQHBhcmFtIHRhYmxlIFRoZSB0YWJsZSBibG9ja1xuXHQgKiBAcmV0dXJucyBUaGUgbWFuaWZlc3Qgb3ZlcmZsb3dHcm91cHMgZm9yIHRoZSB0YWJsZVxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUFjdGlvbk92ZXJmbG93R3JvdXBzKHRhYmxlOiBUYWJsZUJsb2NrKTogT3ZlcmZsb3dHcm91cHNDb25maWd1cmF0aW9uIHtcblx0XHRjb25zdCBvdmVyZmxvd0dyb3Vwc1NldHRpbmdzOiBPdmVyZmxvd0dyb3Vwc0NvbmZpZ3VyYXRpb24gPSB7fTtcblx0XHRpZiAodGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuYWN0aW9uT3ZlcmZsb3dHcm91cHMpLmZvckVhY2goKG92ZXJGbG93R3JvdXApID0+IHtcblx0XHRcdFx0b3ZlcmZsb3dHcm91cHNTZXR0aW5nc1tvdmVyRmxvd0dyb3VwLm92ZXJmbG93R3JvdXBdID0ge1xuXHRcdFx0XHRcdHNob3dTZXBhcmF0b3I6IG92ZXJGbG93R3JvdXAuc2hvd1NlcGFyYXRvclxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG92ZXJmbG93R3JvdXBzU2V0dGluZ3M7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgY29sdW1ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBjb2x1bW5zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGU6IFRhYmxlQmxvY2spOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZT4ge1xuXHRcdGNvbnN0IGlzQmxvY2tDb2x1bW4gPSAoYmxvY2s6IEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZSk6IGJsb2NrIGlzIEJsb2NrQ29sdW1uID0+IHtcblx0XHRcdHJldHVybiBibG9jay5fdHlwZSA9PT0gXCJDb2x1bW5cIjtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29sdW1uU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiA9IHt9O1xuXG5cdFx0aWYgKHRhYmxlLmNvbHVtbnMpIHtcblx0XHRcdE9iamVjdC52YWx1ZXModGFibGUuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0XHRcdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlciEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHR0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRyZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJTbG90XCIsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzIGFzIEV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRkaXNhYmxlRXhwb3J0OiBjb2x1bW4uZGlzYWJsZUV4cG9ydFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0XHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdFx0XHQvLyBhbGwgdGhlaXIgcHJvcGVydGllcyBpbiB0aGUgWE1MKVxuXHRcdFx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXHRcdFx0XHRpZiAoaXNCbG9ja0NvbHVtbihjb2x1bW4pICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0XHRcdGFuY2hvcjogY29sdW1uLmFuY2hvcixcblx0XHRcdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uU2V0dGluZ3NbY29sdW1uLmtleSFdID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uU2V0dGluZ3M7XG5cdH1cblxuXHRzZXRVcElkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHQvLyBUaGUgZ2l2ZW4gSUQgc2hhbGwgYmUgYXNzaWduZWQgdG8gdGhlIFRhYmxlQVBJIGFuZCBub3QgdG8gdGhlIE1EQyBUYWJsZVxuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0Ly8gR2VuZXJhdGUgdGhlIGNvbnRlbnRJZCBiYXNlZCBvbiB0aGUgSUQsIGlmIG5vdCBwcm92aWRlZCAoRlBNIGNhc2UpXG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA/Pz0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFdlIGdlbmVyYXRlIHRoZSBJRCBhbmQgdGhlIGNvbnRlbnRJRC4gRHVlIHRvIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBrZWVwIGl0IG9uIHRoZSBNREMgVGFibGUgYnV0IHByb3ZpZGUgYXNzaWduXG5cdFx0XHQvLyB0aGUgSUQgd2l0aCBhIDo6VGFibGUgc3VmZml4IHRvIHRoZSBUYWJsZUFQSVxuXHRcdFx0dGhpcy5pZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0XHR0aGlzLmNvbnRlbnRJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uaWQ7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uYXBpSWQ7XG5cdFx0fVxuXHR9XG5cblx0X2dldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG5cdFx0cmV0dXJuICh0aGlzLmNvbGxlY3Rpb25FbnRpdHkgYXMgRW50aXR5U2V0KT8uZW50aXR5VHlwZSB8fCAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSk/LnRhcmdldFR5cGU7XG5cdH1cblxuXHRnZXRFbXB0eVJvd3NFbmFibGVkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgZW5hYmxlZCA9XG5cdFx0XHR0aGlzLmNyZWF0aW9uTW9kZS5uYW1lID09PSBDcmVhdGlvbk1vZGUuSW5saW5lQ3JlYXRpb25Sb3dzXG5cdFx0XHRcdD8gdGhpcy50YWJsZURlZmluaXRpb24uYWN0aW9ucy5maW5kKChhKSA9PiBhLmtleSA9PT0gU3RhbmRhcmRBY3Rpb25LZXlzLkNyZWF0ZSk/LmVuYWJsZWRcblx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIGVuYWJsZWQgPT09IFwiZmFsc2VcIiA/IHVuZGVmaW5lZCA6IGVuYWJsZWQ7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSB0aGlzLl9nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgdGFibGVQcm9wcyA9IHRoaXMgYXMgdW5rbm93biBhcyBUYWJsZUJsb2NrUHJvcGVydGllcztcblx0XHR0YWJsZVByb3BzLm92ZXJyaWRlUm93UHJlc3MgPSB0aGlzLnJvd1ByZXNzICE9PSB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBjb2xsZWN0aW9uRW50aXR5ID0gdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YS5yZXNvbHZlUGF0aCh0YWJsZVByb3BzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNvbGxlY3Rpb24pLnRhcmdldCBhc1xuXHRcdFx0fCBFbnRpdHlTZXRcblx0XHRcdHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdGNvbnN0IGhhbmRsZXJQcm92aWRlciA9IG5ldyBUYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyKHRhYmxlUHJvcHMsIHsgY29sbGVjdGlvbkVudGl0eSwgbWV0YU1vZGVsOiB0aGlzLm1ldGFQYXRoLmdldE1vZGVsKCkgfSk7XG5cblx0XHRsZXQgY3JlYXRpb25Nb2RlOiBUYWJsZUNyZWF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jcmVhdGlvbk1vZGUgJiYgT2JqZWN0LmtleXModGhpcy5jcmVhdGlvbk1vZGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGNyZWF0aW9uTW9kZSA9IDxUYWJsZUNyZWF0aW9uT3B0aW9ucyB7Li4udGhpcy5jcmVhdGlvbk1vZGV9IC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGFibGVBUElcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZQTTogJ3NhcC9mZS9jb3JlL2hlbHBlcnMvRlBNSGVscGVyJ31cIlxuXHRcdFx0XHRiaW5kaW5nPXtge2ludGVybmFsPmNvbnRyb2xzLyR7dGhpcy5jb250ZW50SWR9fWB9XG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0Y29udGVudElkPXt0aGlzLmNvbnRlbnRJZH1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy52aXNpYmxlfVxuXHRcdFx0XHRoZWFkZXJMZXZlbD17dGhpcy5oZWFkZXJMZXZlbH1cblx0XHRcdFx0aGVhZGVyU3R5bGU9e3RoaXMuaGVhZGVyU3R5bGV9XG5cdFx0XHRcdGhlYWRlclZpc2libGU9e3RoaXMuaGVhZGVyVmlzaWJsZX1cblx0XHRcdFx0dGFiVGl0bGU9e3RoaXMudGFiVGl0bGV9XG5cdFx0XHRcdGV4cG9ydFJlcXVlc3RTaXplPXt0aGlzLmV4cG9ydFJlcXVlc3RTaXplfVxuXHRcdFx0XHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPXt0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmR9XG5cdFx0XHRcdHNjcm9sbFRocmVzaG9sZD17dGhpcy5zY3JvbGxUaHJlc2hvbGR9XG5cdFx0XHRcdHRocmVzaG9sZD17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGR9XG5cdFx0XHRcdHBvcGluTGF5b3V0PXt0aGlzLnBvcGluTGF5b3V0fVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZXhwb3J0RmlsZU5hbWU9e3RoaXMuZXhwb3J0RmlsZU5hbWV9XG5cdFx0XHRcdGV4cG9ydFNoZWV0TmFtZT17dGhpcy5leHBvcnRTaGVldE5hbWV9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0Y29udGVudDogZ2V0TURDVGFibGVUZW1wbGF0ZSh0YWJsZVByb3BzLCB7XG5cdFx0XHRcdFx0XHRtZXRhUGF0aDogdGhpcy5tZXRhUGF0aCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlZE1ldGFkYXRhOiB0aGlzLmNvbnZlcnRlZE1ldGFkYXRhLFxuXHRcdFx0XHRcdFx0bWV0YU1vZGVsOiB0aGlzLm1ldGFNb2RlbCxcblx0XHRcdFx0XHRcdGhhbmRsZXJQcm92aWRlcixcblx0XHRcdFx0XHRcdGFwcENvbXBvbmVudDogdGhpcy5hcHBDb21wb25lbnRcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UYWJsZUFQST5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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