@sapui5/sap.fe.macros 1.138.0 → 1.139.1

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 (210) 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 +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/Chart.js +1 -1
  6. package/src/sap/fe/macros/Chart.tsx +1 -1
  7. package/src/sap/fe/macros/CommonHelper.js +2 -2
  8. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  9. package/src/sap/fe/macros/Field.js +21 -4
  10. package/src/sap/fe/macros/Field.ts +21 -3
  11. package/src/sap/fe/macros/FooterContent.js +40 -10
  12. package/src/sap/fe/macros/FooterContent.tsx +44 -8
  13. package/src/sap/fe/macros/FormElement.js +2 -2
  14. package/src/sap/fe/macros/FormElement.ts +1 -2
  15. package/src/sap/fe/macros/MultiValueField.js +17 -4
  16. package/src/sap/fe/macros/MultiValueField.tsx +7 -2
  17. package/src/sap/fe/macros/RichTextEditor.js +30 -6
  18. package/src/sap/fe/macros/RichTextEditor.tsx +34 -7
  19. package/src/sap/fe/macros/Share.js +73 -40
  20. package/src/sap/fe/macros/Share.tsx +29 -1
  21. package/src/sap/fe/macros/ValueHelp.js +4 -29
  22. package/src/sap/fe/macros/ValueHelp.tsx +2 -43
  23. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  24. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  25. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  26. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  27. package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
  28. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
  29. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  30. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  31. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  32. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  33. package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
  34. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
  35. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  36. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  37. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  38. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  39. package/src/sap/fe/macros/controls/FilterBar.js +86 -3
  40. package/src/sap/fe/macros/controls/FilterBar.ts +97 -2
  41. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  42. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  43. package/src/sap/fe/macros/controls/Section.js +3 -2
  44. package/src/sap/fe/macros/controls/Section.ts +2 -1
  45. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  46. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  47. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  48. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  49. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  50. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  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/designtime/Designtime.helper.js +12 -2
  54. package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +16 -5
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +6 -1
  57. package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
  58. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
  59. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  60. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  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/filter/FilterUtils.js +7 -1
  64. package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
  65. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  66. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  67. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  68. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  69. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  70. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  71. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  72. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  73. package/src/sap/fe/macros/form/Form.block.js +6 -2
  74. package/src/sap/fe/macros/form/Form.block.ts +4 -1
  75. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  76. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  77. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  78. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  79. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  80. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  81. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  82. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  83. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  84. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  85. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  86. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  87. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  88. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  89. package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
  90. package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
  91. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  92. package/src/sap/fe/macros/internal/field/DisplayStyle.js +52 -12
  93. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +54 -5
  94. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  95. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  96. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  97. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
  98. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  99. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  100. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  101. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
  102. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
  103. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +11 -3
  104. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +12 -7
  105. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  106. package/src/sap/fe/macros/library.js +1 -1
  107. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +11 -6
  108. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +12 -7
  109. package/src/sap/fe/macros/messagebundle.properties +37 -29
  110. package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
  111. package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
  112. package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
  113. package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
  114. package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
  115. package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
  116. package/src/sap/fe/macros/messagebundle_da.properties +6 -4
  117. package/src/sap/fe/macros/messagebundle_de.properties +11 -9
  118. package/src/sap/fe/macros/messagebundle_el.properties +7 -5
  119. package/src/sap/fe/macros/messagebundle_en.properties +8 -6
  120. package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
  121. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
  122. package/src/sap/fe/macros/messagebundle_es.properties +6 -4
  123. package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
  124. package/src/sap/fe/macros/messagebundle_et.properties +5 -3
  125. package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
  126. package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
  127. package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
  128. package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
  129. package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
  130. package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  131. package/src/sap/fe/macros/messagebundle_id.properties +8 -6
  132. package/src/sap/fe/macros/messagebundle_it.properties +4 -2
  133. package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
  134. package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
  135. package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
  136. package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
  137. package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
  138. package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
  139. package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
  140. package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
  141. package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
  142. package/src/sap/fe/macros/messagebundle_no.properties +6 -4
  143. package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
  144. package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
  145. package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
  146. package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
  147. package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
  148. package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
  149. package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
  150. package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
  151. package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
  152. package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
  153. package/src/sap/fe/macros/messagebundle_th.properties +4 -2
  154. package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
  155. package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
  156. package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
  157. package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
  158. package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
  159. package/src/sap/fe/macros/messages/MessageButton.js +17 -19
  160. package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
  161. package/src/sap/fe/macros/table/Action.js +24 -2
  162. package/src/sap/fe/macros/table/Action.ts +13 -0
  163. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  164. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  165. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  166. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  167. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  168. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  169. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  170. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  171. package/src/sap/fe/macros/table/Column.js +3 -3
  172. package/src/sap/fe/macros/table/Column.ts +2 -2
  173. package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
  174. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +32 -6
  175. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  176. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  177. package/src/sap/fe/macros/table/Table.block.js +137 -108
  178. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  179. package/src/sap/fe/macros/table/Table.js +7 -1
  180. package/src/sap/fe/macros/table/Table.tsx +7 -1
  181. package/src/sap/fe/macros/table/TableAPI.js +150 -133
  182. package/src/sap/fe/macros/table/TableAPI.ts +20 -3
  183. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  184. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  185. package/src/sap/fe/macros/table/TableRuntime.js +3 -3
  186. package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
  187. package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
  188. package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
  189. package/src/sap/fe/macros/table/TreeTable.js +7 -1
  190. package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
  191. package/src/sap/fe/macros/table/delegates/TableDelegate.js +27 -20
  192. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +35 -26
  193. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  194. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  195. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  196. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  197. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
  198. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
  199. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  200. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  201. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  202. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  203. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
  204. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
  205. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +37 -8
  206. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +47 -16
  207. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
  208. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
  209. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
  210. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
@@ -2,7 +2,7 @@
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/util/deepClone", "sap/fe/core/CommonUtils", "sap/m/Button", "sap/m/CheckBox", "sap/m/Dialog", "sap/m/Input", "sap/m/InputListItem", "sap/m/List", "sap/m/MessageStrip", "sap/m/MultiInput", "sap/m/Select", "sap/m/Token", "sap/ui/core/Item", "sap/ui/model/json/JSONModel"], function (deepClone, CommonUtils, Button, CheckBox, Dialog, Input, InputListItem, List, MessageStrip, MultiInput, Select, Token, Item, JSONModel) {
5
+ sap.ui.define(["sap/base/util/deepClone", "sap/fe/core/CommonUtils", "sap/m/Button", "sap/m/CheckBox", "sap/m/Dialog", "sap/m/Input", "sap/m/InputListItem", "sap/m/List", "sap/m/MessageStrip", "sap/m/MultiInput", "sap/m/Select", "sap/m/Token", "sap/ui/core/Component", "sap/ui/core/Item", "sap/ui/model/json/JSONModel"], function (deepClone, CommonUtils, Button, CheckBox, Dialog, Input, InputListItem, List, MessageStrip, MultiInput, Select, Token, Component, Item, JSONModel) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
@@ -438,6 +438,16 @@ sap.ui.define(["sap/base/util/deepClone", "sap/fe/core/CommonUtils", "sap/m/Butt
438
438
  return props;
439
439
  }
440
440
  _exports.getPropertyNamesAndDescriptions = getPropertyNamesAndDescriptions;
441
+ function isManifestChangesEnabled(control) {
442
+ let owner = Component.getOwnerComponentFor(control);
443
+ if (owner === undefined && control.getParent()) {
444
+ // In case of MassEdit, control is a sap.m.Dialog for which there is now OwnerComponent, so we need to consider its parent control
445
+ owner = Component.getOwnerComponentFor(control.getParent());
446
+ }
447
+ const sapFeManifest = owner?.getAppComponent().getManifestEntry("sap.fe");
448
+ return sapFeManifest?.app?.disableManifestChanges !== true;
449
+ }
450
+ _exports.isManifestChangesEnabled = isManifestChangesEnabled;
441
451
  return _exports;
442
452
  }, false);
443
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMiLCJkZXNpZ250aW1lU2V0dGluZ3MiLCJ1bmNoYW5nZWREYXRhIiwicHJvcGVydHlWYWx1ZXMiLCJwcm9wZXJ0eUNoYW5nZXMiLCJmb3JFYWNoIiwic2V0dGluZyIsImlkIiwiSlNPTiIsInN0cmluZ2lmeSIsIndyaXRlT2JqZWN0Iiwid3JpdGVPYmplY3RGb3IiLCJjaGFuZ2VPYmplY3QiLCJsZW5ndGgiLCJzZXR0aW5nc1RvZ2V0aGVyIiwicGF0aCIsInNraXBDaGFuZ2UiLCJfZXhwb3J0cyIsImdldENoYW5nZVN0cnVjdHVyZSIsImFwcENvbXBvbmVudCIsInBhZ2UiLCJwcm9wZXJ0eVBhdGgiLCJzZWxlY3RvciIsImNoYW5nZVNwZWNpZmljRGF0YSIsImFwcERlc2NyaXB0b3JDaGFuZ2VUeXBlIiwiY29udGVudCIsInBhcmFtZXRlcnMiLCJlbnRpdHlQcm9wZXJ0eUNoYW5nZSIsIm9wZXJhdGlvbiIsInByb3BlcnR5VmFsdWUiLCJzZXRMb2NhbFRleHQiLCJpdGVtIiwicmVzb3VyY2VNb2RlbCIsImtleSIsImdldFRleHQiLCJzZXRMb2NhbFRleHRzIiwibW9kZWwiLCJzZXR0aW5nc0RhdGEiLCJnZXREYXRhIiwiY29udHJvbCIsImNvbnRyb2xEYXRhIiwiZW51bSIsImVudW1EYXRhIiwiY3JlYXRlQWRhcHRpb25EaWFsb2dDb250ZW50IiwiY29uZmlnQ29udGV4dCIsImNvbmZpZ1BhdGgiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJzZXR0aW5nc01vZGVsIiwiSlNPTk1vZGVsIiwic2V0RGF0YSIsImRlZXBDbG9uZSIsImdldFByb3BlcnR5IiwibGlzdCIsIkxpc3QiLCJzZXRNb2RlbCIsImxpc3RJdGVtIiwiSW5wdXRMaXN0SXRlbSIsImxhYmVsIiwiYmluZENvbnRlbnQiLCJmYWN0b3J5IiwiY29udGV4dCIsInR5cGUiLCJJdGVtIiwidGV4dCIsInNlbGVjdCIsIlNlbGVjdCIsInNlbGVjdGVkS2V5IiwiY2hhbmdlIiwiZXZlbnQiLCJkYXRhIiwiZ2V0UGFyYW1ldGVyIiwiZ2V0S2V5IiwiYmluZEl0ZW1zIiwidGVtcGxhdGUiLCJJbnB1dCIsInZhbHVlIiwib011bHRpSW5wdXQiLCJNdWx0aUlucHV0Iiwid2lkdGgiLCJzaG93VmFsdWVIZWxwIiwic2hvd0NsZWFySWNvbiIsInRva2VucyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibWFwIiwibmF2aWdhdGlvblByb3BlcnR5IiwiVG9rZW4iLCJ0b2tlblVwZGF0ZSIsImFycmF5IiwicHVzaCIsInNwbGljZSIsImluZGV4T2YiLCJhZGRWYWxpZGF0b3IiLCJhcmdzIiwiQ2hlY2tCb3giLCJzZWxlY3RlZCIsInRvTG93ZXJDYXNlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wZW5BZGFwdGlvbkRpYWxvZyIsInRpdGxlIiwiaW5mb1RleHQiLCJzaXplIiwiaW5mb3JtYXRpb25NZXNzYWdlIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJhZGRTdHlsZUNsYXNzIiwibGlzdEluZGV4IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJkaWFsb2ciLCJEaWFsb2ciLCJjb250ZW50V2lkdGgiLCJjb250ZW50SGVpZ2h0IiwiaGVpZ2h0IiwiYnV0dG9ucyIsIkJ1dHRvbiIsInByZXNzIiwidXBkYXRlQ29uZmlnTW9kZWwiLCJnZXRDb250ZW50IiwiZ2V0TW9kZWwiLCJjbG9zZSIsIm9wZW4iLCJwcm9jZXNzQ2hhbmdlcyIsInNpbmdsZUNoYW5nZSIsImNoYW5nZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwiZ2V0Q2hhbmdlIiwicHJvY2Vzc0dsb2JhbENoYW5nZXMiLCJrZXlzIiwic2VwYXJhdGVDaGFuZ2VzIiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRQYWdlIiwiZ2V0UGFyZW50Iiwic2VwYXJhdGVHbG9iYWxDaGFuZ2VzIiwidmlld0lkIiwiZ2V0VGFyZ2V0VmlldyIsImdldElkIiwic3BsaXQiLCJleHRyYWN0Q2hhbmdlcyIsInByb3BlcnR5VmFsdWVzRW50ZXJlZCIsImdsb2JhbFNldHRpbmdzIiwiZ2xvYmFsQ2hhbmdlcyIsImdsb2JhbCIsImNvbmNhdCIsIm5vQ2hhbmdlcyIsImlzRmlvcmlUb29sc1J0YU1vZGUiLCJ1cmxQYXJhbXMiLCJzaGVsbFNlcnZpY2UiLCJnZXRTaGVsbFNlcnZpY2VzIiwicGFyc2VQYXJhbWV0ZXJzIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpc1JUQU1vZGUiLCJnZXRTZXR0aW5nc0lmS2V5VXNlciIsIml0ZW1zIiwiZmlsdGVyIiwia2V5VXNlciIsImlzQ29uZmlnTW9kZWxQcmVwYXJlZCIsInByZXBhcmVDb25maWdNb2RlbCIsInNldFByb3BlcnR5IiwiZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyIsInNldHRpbmdzIiwiZ2V0T2JqZWN0IiwicGVyc29uYWxpemF0aW9uU2V0dGluZyIsImZpbmQiLCJ1cGRhdGVkU2V0dGluZ3MiLCJnZXRQcm9wZXJ0eU5hbWVzQW5kRGVzY3JpcHRpb25zIiwicHJvcHMiLCJwcm9wIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiZW51bXMiLCJlbnVtbSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGVzaWdudGltZS5oZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBSZXVzZSBmdW5jdGlvbnMgZm9yIGRlc2lnbnRpbWUgYWRhcHRpb25cbiAqL1xuXG5pbXBvcnQgZGVlcENsb25lIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBDbG9uZVwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQ2hlY2tCb3ggZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dExpc3RJdGVtIGZyb20gXCJzYXAvbS9JbnB1dExpc3RJdGVtXCI7XG5pbXBvcnQgTGlzdCBmcm9tIFwic2FwL20vTGlzdFwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgdHlwZSB7IE11bHRpSW5wdXQkVG9rZW5VcGRhdGVFdmVudCB9IGZyb20gXCJzYXAvbS9NdWx0aUlucHV0XCI7XG5pbXBvcnQgTXVsdGlJbnB1dCBmcm9tIFwic2FwL20vTXVsdGlJbnB1dFwiO1xuaW1wb3J0IFNlbGVjdCBmcm9tIFwic2FwL20vU2VsZWN0XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9tL1Rva2VuXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgSXRlbSBmcm9tIFwic2FwL3VpL2NvcmUvSXRlbVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG5leHBvcnQgdHlwZSBhZGFwdGlvbkNoYW5nZSA9IHtcblx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cdHNlbGVjdG9yOiBBcHBDb21wb25lbnQ7XG5cdGNoYW5nZVNwZWNpZmljRGF0YToge1xuXHRcdGFwcERlc2NyaXB0b3JDaGFuZ2VUeXBlOiBcImFwcGRlc2NyX2ZlX2NoYW5nZVBhZ2VDb25maWd1cmF0aW9uXCI7XG5cdFx0Y29udGVudDoge1xuXHRcdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0XHRwYWdlOiBzdHJpbmc7XG5cdFx0XHRcdGVudGl0eVByb3BlcnR5Q2hhbmdlOiB7XG5cdFx0XHRcdFx0cHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdFx0XHRcdFx0b3BlcmF0aW9uOiBzdHJpbmc7XG5cdFx0XHRcdFx0cHJvcGVydHlWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgbnVtYmVyIHwgb2JqZWN0IHwgdW5kZWZpbmVkO1xuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblx0XHR9O1xuXHR9O1xufTtcblxuZXhwb3J0IHR5cGUgRGVzaWdudGltZVNldHRpbmdFbnVtcyA9IHtcblx0aWQ6IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlc2lnbnRpbWVTZXR0aW5nID0ge1xuXHRpZDogc3RyaW5nO1xuXHRwYXRoPzogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cdHJlc3RyaWN0ZWRUbz86IFRlbXBsYXRlVHlwZVtdO1xuXHR2YWx1ZTogdW5rbm93bjtcblx0dHlwZT86IHN0cmluZztcblx0ZW51bXM/OiBEZXNpZ250aW1lU2V0dGluZ0VudW1zW107XG5cdHNraXBDaGFuZ2U/OiBib29sZWFuO1xuXHR3cml0ZU9iamVjdEZvcj86IHN0cmluZztcblx0d3JpdGVPYmplY3Q/OiB7IGlkOiBzdHJpbmc7IHBhdGg/OiBzdHJpbmcgfVtdO1xuXHRrZXlVc2VyPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VmFsdWUgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgdHlwZSBTZXR0aW5nc0RhdGEgPSB7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdHRvb2x0aXA6IHN0cmluZztcblx0Y29udHJvbDogQ29udHJvbERhdGFbXTtcblx0a2V5VXNlcj86IGJvb2xlYW47XG59O1xuXG50eXBlIENvbnRyb2xEYXRhID0ge1xuXHR0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGVudW06IERlc2lnbnRpbWVTZXR0aW5nRW51bXNbXSB8IHVuZGVmaW5lZDtcblx0dmFsdWU6IHVua25vd247XG5cdGlkOiBzdHJpbmc7XG59O1xuXG50eXBlIHByb3BLZXlBbmRWYWx1ZSA9IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuIHwgbnVtYmVyIHwgb2JqZWN0IHwgdW5kZWZpbmVkIH07XG5cbi8qKlxuICogSWRlbnRpZnkgd2hpY2ggc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkLlxuICogQHBhcmFtIGRlc2lnbnRpbWVTZXR0aW5nc1xuICogQHBhcmFtIHVuY2hhbmdlZERhdGFcbiAqIEBwYXJhbSBwcm9wZXJ0eVZhbHVlc1xuICogIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgd2hlcmUgdGhlIHZhbHVlcyBoYXZlIGJlZW4gY2hhbmdlZCBjb21wYXJlZCB0byB0aGUgc3RhcnRpbmcgdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMoXG5cdGRlc2lnbnRpbWVTZXR0aW5nczogRGVzaWdudGltZVNldHRpbmdbXSxcblx0dW5jaGFuZ2VkRGF0YTogUHJvcGVydHlWYWx1ZSxcblx0cHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWVcbik6IFByb3BlcnR5VmFsdWUge1xuXHRjb25zdCBwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5VmFsdWUgPSB7fTtcblxuXHRkZXNpZ250aW1lU2V0dGluZ3MuZm9yRWFjaChmdW5jdGlvbiAoc2V0dGluZykge1xuXHRcdGlmIChcblx0XHRcdCh0eXBlb2YgdW5jaGFuZ2VkRGF0YVtzZXR0aW5nLmlkXSAhPT0gXCJvYmplY3RcIiAmJiB1bmNoYW5nZWREYXRhW3NldHRpbmcuaWRdICE9PSBwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXSkgfHxcblx0XHRcdCh0eXBlb2YgdW5jaGFuZ2VkRGF0YVtzZXR0aW5nLmlkXSA9PT0gXCJvYmplY3RcIiAmJlxuXHRcdFx0XHRKU09OLnN0cmluZ2lmeSh1bmNoYW5nZWREYXRhW3NldHRpbmcuaWRdKSAhPT0gSlNPTi5zdHJpbmdpZnkocHJvcGVydHlWYWx1ZXNbc2V0dGluZy5pZF0pKVxuXHRcdCkge1xuXHRcdFx0aWYgKHNldHRpbmcud3JpdGVPYmplY3QgJiYgcHJvcGVydHlWYWx1ZXNbc2V0dGluZy5pZF0gPT09IHNldHRpbmcud3JpdGVPYmplY3RGb3IpIHtcblx0XHRcdFx0Ly8gV2Ugd3JpdGUgYW4gb2JqZWN0IGZvciB0aGlzIHNldHRpbmdcblx0XHRcdFx0Y29uc3QgY2hhbmdlT2JqZWN0OiBQcm9wZXJ0eVZhbHVlID0ge307XG5cdFx0XHRcdGlmIChzZXR0aW5nLndyaXRlT2JqZWN0ICYmIHNldHRpbmcud3JpdGVPYmplY3Q/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRzZXR0aW5nLndyaXRlT2JqZWN0LmZvckVhY2goZnVuY3Rpb24gKHNldHRpbmdzVG9nZXRoZXIpIHtcblx0XHRcdFx0XHRcdGNoYW5nZU9iamVjdFtzZXR0aW5nc1RvZ2V0aGVyLnBhdGggPyBzZXR0aW5nc1RvZ2V0aGVyLnBhdGggOiBzZXR0aW5nc1RvZ2V0aGVyLmlkXSA9XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzW3NldHRpbmdzVG9nZXRoZXIuaWRdO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHByb3BlcnR5Q2hhbmdlc1tzZXR0aW5nLnBhdGggPyBzZXR0aW5nLnBhdGggOiBzZXR0aW5nLmlkXSA9IGNoYW5nZU9iamVjdDtcblx0XHRcdH0gZWxzZSBpZiAoIXNldHRpbmcuc2tpcENoYW5nZSkge1xuXHRcdFx0XHRwcm9wZXJ0eUNoYW5nZXNbc2V0dGluZy5wYXRoID8gc2V0dGluZy5wYXRoIDogc2V0dGluZy5pZF0gPSBwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gcHJvcGVydHlDaGFuZ2VzO1xufVxuLyoqXG4gKiBDb252ZXJ0IHNhcC5mZSBjaGFuZ2UgaW50byBhIHN0cnVjdHVyZSByZXF1aXJlZCBieSB0aGUgZmxleGliaWxpdHkgdG9vbHMuXG4gKiBAcGFyYW0gYXBwQ29tcG9uZW50XG4gKiBAcGFyYW0gcGFnZVxuICogQHBhcmFtIHByb3BlcnR5UGF0aFxuICogQHBhcmFtIHByb3BlcnR5Q2hhbmdlc1xuICogQHJldHVybnMgVGhlIGNoYW5nZSBzdHJ1Y3R1cmUgdXNlZCBieSBmbGV4aWJpbGl0eSB0b29sc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbmdlU3RydWN0dXJlKFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0cGFnZTogc3RyaW5nLFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0cHJvcGVydHlDaGFuZ2VzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCB1bmRlZmluZWRcbik6IGFkYXB0aW9uQ2hhbmdlIHtcblx0cmV0dXJuIHtcblx0XHRhcHBDb21wb25lbnQ6IGFwcENvbXBvbmVudCxcblx0XHRzZWxlY3RvcjogYXBwQ29tcG9uZW50LFxuXHRcdGNoYW5nZVNwZWNpZmljRGF0YToge1xuXHRcdFx0YXBwRGVzY3JpcHRvckNoYW5nZVR5cGU6IFwiYXBwZGVzY3JfZmVfY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb25cIixcblx0XHRcdGNvbnRlbnQ6IHtcblx0XHRcdFx0cGFyYW1ldGVyczoge1xuXHRcdFx0XHRcdHBhZ2U6IHBhZ2UsXG5cdFx0XHRcdFx0ZW50aXR5UHJvcGVydHlDaGFuZ2U6IHtcblx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aDogcHJvcGVydHlQYXRoLFxuXHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcIlVQU0VSVFwiLFxuXHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZTogcHJvcGVydHlDaGFuZ2VzXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBzZXRMb2NhbFRleHQoaXRlbTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwpOiB2b2lkIHtcblx0Zm9yIChjb25zdCBrZXkgaW4gaXRlbSkge1xuXHRcdGlmIChrZXkgIT09IFwiaWRcIiAmJiB0eXBlb2YgaXRlbVtrZXldID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRpdGVtW2tleV0gPSByZXNvdXJjZU1vZGVsLmdldFRleHQoaXRlbVtrZXldIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHNldExvY2FsVGV4dHMobW9kZWw6IEpTT05Nb2RlbCwgcmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCk6IHZvaWQge1xuXHRjb25zdCBzZXR0aW5nc0RhdGEgPSBtb2RlbC5nZXREYXRhKCkgYXMgU2V0dGluZ3NEYXRhW107XG5cdHNldHRpbmdzRGF0YS5mb3JFYWNoKChzZXR0aW5nKSA9PiB7XG5cdFx0c2V0TG9jYWxUZXh0KHNldHRpbmcsIHJlc291cmNlTW9kZWwpO1xuXHRcdHNldHRpbmcuY29udHJvbC5mb3JFYWNoKChjb250cm9sRGF0YSkgPT4ge1xuXHRcdFx0c2V0TG9jYWxUZXh0KGNvbnRyb2xEYXRhLCByZXNvdXJjZU1vZGVsKTtcblx0XHRcdGNvbnRyb2xEYXRhLmVudW0/LmZvckVhY2goKGVudW1EYXRhKSA9PiB7XG5cdFx0XHRcdHNldExvY2FsVGV4dChlbnVtRGF0YSwgcmVzb3VyY2VNb2RlbCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZGFwdGlvbkRpYWxvZ0NvbnRlbnQoXG5cdGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsXG5cdHByb3BlcnR5VmFsdWVzOiBQcm9wZXJ0eVZhbHVlLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsLFxuXHRjb25maWdQYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIlxuKTogTGlzdCB7XG5cdGNvbnN0IHNldHRpbmdzTW9kZWwgPSBuZXcgSlNPTk1vZGVsKCk7XG5cdHNldHRpbmdzTW9kZWwuc2V0RGF0YShkZWVwQ2xvbmUoY29uZmlnQ29udGV4dC5nZXRQcm9wZXJ0eShjb25maWdQYXRoKSkpO1xuXHRzZXRMb2NhbFRleHRzKHNldHRpbmdzTW9kZWwsIHJlc291cmNlTW9kZWwpO1xuXHRjb25zdCBsaXN0ID0gbmV3IExpc3QoKTtcblx0bGlzdC5zZXRNb2RlbChzZXR0aW5nc01vZGVsKTtcblxuXHRjb25zdCBsaXN0SXRlbSA9IG5ldyBJbnB1dExpc3RJdGVtKHtcblx0XHRsYWJlbDogXCJ7bGFiZWx9XCJcblx0fSk7XG5cblx0bGlzdEl0ZW0uYmluZENvbnRlbnQoe1xuXHRcdHBhdGg6IFwiY29udHJvbFwiLFxuXHRcdGZhY3Rvcnk6IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGNvbnRleHQ6IHsgZ2V0UHJvcGVydHkobmFtZTogc3RyaW5nKTogc3RyaW5nIH0gLyogc2FwLnVpLm1vZGVsLkNvbnRleHQgKi8pIHtcblx0XHRcdGNvbnN0IHR5cGUgPSBjb250ZXh0LmdldFByb3BlcnR5KFwidHlwZVwiKTtcblx0XHRcdGNvbnN0IGlkID0gY29udGV4dC5nZXRQcm9wZXJ0eShcImlkXCIpO1xuXG5cdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0Y2FzZSBcInN0cmluZ1wiOlxuXHRcdFx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwiZW51bVwiKSkge1xuXHRcdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgc2VsZWN0IGxpc3QgZm9yIG11bHRpcGxlIG9wdGlvbnMgdG8gc2VsZWN0XG5cdFx0XHRcdFx0XHRjb25zdCBpdGVtID0gbmV3IEl0ZW0oe1xuXHRcdFx0XHRcdFx0XHR0ZXh0OiBcIntuYW1lfVwiLFxuXHRcdFx0XHRcdFx0XHRrZXk6IFwie2lkfVwiXG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ID0gbmV3IFNlbGVjdCh7XG5cdFx0XHRcdFx0XHRcdHNlbGVjdGVkS2V5OiBcInt2YWx1ZX1cIixcblx0XHRcdFx0XHRcdFx0Y2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBTZWxlY3QpLmRhdGEoXCJpZFwiKSBhcyBrZXlvZiBQcm9wZXJ0eVZhbHVlXSA9IChcblx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50LmdldFBhcmFtZXRlcihcInNlbGVjdGVkSXRlbVwiKSBhcyBJdGVtXG5cdFx0XHRcdFx0XHRcdFx0KS5nZXRLZXkoKSBhcyBzdHJpbmcgJiBib29sZWFuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXG5cdFx0XHRcdFx0XHRzZWxlY3QuYmluZEl0ZW1zKHtcblx0XHRcdFx0XHRcdFx0cGF0aDogXCJlbnVtXCIsXG5cdFx0XHRcdFx0XHRcdHRlbXBsYXRlOiBpdGVtXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybiBzZWxlY3Q7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBJbnB1dCBmb3IgdGV4dCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRyZXR1cm4gbmV3IElucHV0KHtcblx0XHRcdFx0XHRcdFx0dmFsdWU6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIElucHV0KS5kYXRhKFwiaWRcIikgYXMga2V5b2YgUHJvcGVydHlWYWx1ZV0gPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSBhcyBzdHJpbmcgJlxuXHRcdFx0XHRcdFx0XHRcdFx0Ym9vbGVhbjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSkuZGF0YShcImlkXCIsIGlkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgXCJzdHJpbmdbXVwiOlxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBtdWx0aSBpbnB1dCBmaWVsZCBmb3IgdGhlIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXHRcdFx0XHRcdGNvbnN0IG9NdWx0aUlucHV0ID0gbmV3IE11bHRpSW5wdXQoe1xuXHRcdFx0XHRcdFx0d2lkdGg6IFwiNzAlXCIsXG5cdFx0XHRcdFx0XHRzaG93VmFsdWVIZWxwOiBmYWxzZSxcblx0XHRcdFx0XHRcdHNob3dDbGVhckljb246IHRydWUsXG5cdFx0XHRcdFx0XHR0b2tlbnM6IChwcm9wZXJ0eVZhbHVlcz8ubmF2aWdhdGlvblByb3BlcnRpZXMgYXMgc3RyaW5nW10pLm1hcCgobmF2aWdhdGlvblByb3BlcnR5KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBuZXcgVG9rZW4oeyB0ZXh0OiBuYXZpZ2F0aW9uUHJvcGVydHksIGtleTogbmF2aWdhdGlvblByb3BlcnR5IH0pO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR0b2tlblVwZGF0ZTogZnVuY3Rpb24gKGV2ZW50OiBNdWx0aUlucHV0JFRva2VuVXBkYXRlRXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXJyYXkgPSBwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBNdWx0aUlucHV0KS5kYXRhKFwiaWRcIildIGFzIHN0cmluZ1tdO1xuXHRcdFx0XHRcdFx0XHRpZiAoKGV2ZW50LmdldFBhcmFtZXRlcihcImFkZGVkVG9rZW5zXCIpIGFzIFRva2VuW10pPy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0YXJyYXkucHVzaCgoZXZlbnQ/LmdldFBhcmFtZXRlcihcImFkZGVkVG9rZW5zXCIpIGFzIFRva2VuW10pWzBdPy5nZXRQcm9wZXJ0eShcImtleVwiKSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoKGV2ZW50LmdldFBhcmFtZXRlcihcInJlbW92ZWRUb2tlbnNcIikgYXMgVG9rZW5bXSk/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0XHRhcnJheS5zcGxpY2UoYXJyYXkuaW5kZXhPZigoZXZlbnQ/LmdldFBhcmFtZXRlcihcInJlbW92ZWRUb2tlbnNcIikgYXMgVG9rZW5bXSlbMF0/LmdldFByb3BlcnR5KFwia2V5XCIpKSwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXHRcdFx0XHRcdG9NdWx0aUlucHV0LmFkZFZhbGlkYXRvcihmdW5jdGlvbiAoYXJnczogeyB0ZXh0OiBzdHJpbmcgfSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGV4dCA9IGFyZ3MudGV4dDtcblx0XHRcdFx0XHRcdHJldHVybiBuZXcgVG9rZW4oe1xuXHRcdFx0XHRcdFx0XHRrZXk6IHRleHQsXG5cdFx0XHRcdFx0XHRcdHRleHQ6IHRleHRcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybiBvTXVsdGlJbnB1dDtcblx0XHRcdFx0Y2FzZSBcIm51bWJlclwiOlxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBJbnB1dCBmb3IgbnVtYmVyIGNoYW5nZXNcblx0XHRcdFx0XHRyZXR1cm4gbmV3IElucHV0KHtcblx0XHRcdFx0XHRcdHZhbHVlOiBcInt2YWx1ZX1cIixcblx0XHRcdFx0XHRcdHR5cGU6IFwiTnVtYmVyXCIsXG5cdFx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBJbnB1dCkuZGF0YShcImlkXCIpIGFzIGtleW9mIFByb3BlcnR5VmFsdWVdID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIikgYXMgc3RyaW5nICZcblx0XHRcdFx0XHRcdFx0XHRib29sZWFuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmRhdGEoXCJpZFwiLCBpZCk7XG5cdFx0XHRcdGNhc2UgXCJib29sZWFuXCI6XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgY2hlY2tib3ggZm9yIHRydWUvZmFsc2UgdmFsdWVzXG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBDaGVja0JveCh7XG5cdFx0XHRcdFx0XHRzZWxlY3RlZDogXCJ7dmFsdWV9XCIsXG5cdFx0XHRcdFx0XHRzZWxlY3Q6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBDaGVja0JveCkuZGF0YShcImlkXCIpIGFzIGtleW9mIFByb3BlcnR5VmFsdWVdID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFxuXHRcdFx0XHRcdFx0XHRcdFwic2VsZWN0ZWRcIlxuXHRcdFx0XHRcdFx0XHQpIGFzIHN0cmluZyAmIGJvb2xlYW47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkuZGF0YShcImlkXCIsIGlkKTtcblx0XHRcdFx0Y2FzZSBcImJvb2xlYW5PclN0cmluZ1wiOlxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIHNlbGVjdCBsaXN0IGZvciBib29sZWFuIGFuZCBzdHJpbmcgb3B0aW9ucyB0byBzZWxlY3Rcblx0XHRcdFx0XHQvLyBUaGlzIHR5cGUgaXMgYXQgdGhlIG1vbWVudCBvbmx5IHVzZWQgZm9yIHBlcnNvbmFsaXphdGlvbiBzZXR0aW5ncyB3aGljaCBjYW4gYmUgdW5kZWZpbmVkLCB0cnVlLCBmYWxzZSBvciBhbiBvYmplY3Rcblx0XHRcdFx0XHQvLyBUaGUgc2VsZWN0IGxpc3QgaXMgdXNlZCB0byBzZWxlY3QgYmV0d2VlbiB0cnVlLCBmYWxzZSBhbmQgXCJPd24gU2V0dGluZ3NcIlxuXHRcdFx0XHRcdC8vIElmIFwiT3duIFNldHRpbmdzXCIgaXMgc2VsZWN0ZWQsIHRoZSBwZXJzb25hbGl6YXRpb24gb2JqZWN0IGlzIHdyaXR0ZW4sIG90aGVyd2lzZSB0aGUgYm9vbGVhbiBpcyB3cml0dGVuICh1bmRlZmluZWQgY2Fubm90IGJlIHdyaXR0ZW4gaW4gYSBtYW5pZmVzdCBjaGFuZ2UpXG5cdFx0XHRcdFx0Y29uc3QgaXRlbSA9IG5ldyBJdGVtKHtcblx0XHRcdFx0XHRcdHRleHQ6IFwie25hbWV9XCIsXG5cdFx0XHRcdFx0XHRrZXk6IFwie2lkfVwiXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zdCBzZWxlY3QgPSBuZXcgU2VsZWN0KHtcblx0XHRcdFx0XHRcdHNlbGVjdGVkS2V5OiBcInt2YWx1ZX1cIixcblx0XHRcdFx0XHRcdGNoYW5nZTogZnVuY3Rpb24gKGV2ZW50KTogdm9pZCB7XG5cdFx0XHRcdFx0XHRcdGxldCB2YWx1ZSA9IChldmVudC5nZXRQYXJhbWV0ZXIoXCJzZWxlY3RlZEl0ZW1cIikgYXMgSXRlbSkuZ2V0S2V5KCk7XG5cdFx0XHRcdFx0XHRcdC8vIENvbnZlcnQgc3RyaW5nIHRvIGJvb2xlYW4gaWYgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0XHRcdGlmICh2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcImZhbHNlXCIgfHwgdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZSA9IEpTT04ucGFyc2UodmFsdWUudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXNbKHRoaXMgYXMgU2VsZWN0KS5kYXRhKFwiaWRcIikgYXMga2V5b2YgUHJvcGVydHlWYWx1ZV0gPSB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXG5cdFx0XHRcdFx0c2VsZWN0LmJpbmRJdGVtcyh7XG5cdFx0XHRcdFx0XHRwYXRoOiBcImVudW1cIixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiBpdGVtXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIHNlbGVjdDtcblx0XHRcdFx0Y2FzZSBcImpzb25cIjpcblx0XHRcdFx0XHQvLyBDcmVhdGUgYW4gaW5wdXQgZm9yIGpzb24gb2JqZWN0IGRlc2NyaXB0aW9uc1xuXHRcdFx0XHRcdC8vIEEgdGV4dCBhcmVhIHdvdWxkIGhhdmUgYmVlbiBiZXR0ZXIgYnV0IHRoaXMgZG9lcyBub3Qgd29yayB3aXRoIHRoZSBJbnB1dExpc3RJdGVtXG5cdFx0XHRcdFx0Ly8gd2Ugd291bGQgaGF2ZSBuZWVkZWQgYSBDdXN0b21MaXN0SXRlbSBpbnN0ZWFkXG5cdFx0XHRcdFx0Ly8gd2hpY2ggd291bGQgaGF2ZSBiZWVuIHRvbyBtdWNoIGVmZm9ydCBhcyB3ZSB3b3VsZCBoYXZlIG5lZWRlZCB0byBjaGFuZ2UgdGhlIHdob2xlIHN0cnVjdHVyZVxuXHRcdFx0XHRcdHJldHVybiBuZXcgSW5wdXQoe1xuXHRcdFx0XHRcdFx0dmFsdWU6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0Y2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXNbKHRoaXMgYXMgSW5wdXQpLmRhdGEoXCJpZFwiKSBhcyBrZXlvZiBQcm9wZXJ0eVZhbHVlXSA9IEpTT04ucGFyc2UoXG5cdFx0XHRcdFx0XHRcdFx0ZXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIik/LnRvU3RyaW5nKCkgYXMgc3RyaW5nXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkuZGF0YShcImlkXCIsIGlkKTtcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXG5cdGxpc3QuYmluZEl0ZW1zKHtcblx0XHRwYXRoOiBcIi9cIixcblx0XHR0ZW1wbGF0ZTogbGlzdEl0ZW1cblx0fSk7XG5cblx0cmV0dXJuIGxpc3Q7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuQWRhcHRpb25EaWFsb2coXG5cdGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsXG5cdHByb3BlcnR5VmFsdWVzOiBQcm9wZXJ0eVZhbHVlLFxuXHR0aXRsZTogc3RyaW5nLFxuXHRyZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsLFxuXHRjb25maWdQYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIixcblx0aW5mb1RleHQgPSBcIntzYXAuZmUuaTE4bj5SVEFfQ09ORklHVVJBVElPTl9JTkZPX01FU1NBR0V9XCIsXG5cdHNpemU/OiB7IHdpZHRoOiBzdHJpbmc7IGhlaWdodDogc3RyaW5nIH1cbik6IFByb21pc2U8UHJvcGVydHlWYWx1ZT4ge1xuXHRjb25zdCBsaXN0ID0gY3JlYXRlQWRhcHRpb25EaWFsb2dDb250ZW50KGNvbmZpZ0NvbnRleHQsIHByb3BlcnR5VmFsdWVzLCByZXNvdXJjZU1vZGVsLCBjb25maWdQYXRoKTtcblx0Y29uc3QgY29udGVudDogKExpc3QgfCBNZXNzYWdlU3RyaXApW10gPSBbXTtcblx0Y29uc3QgaW5mb3JtYXRpb25NZXNzYWdlID0gbmV3IE1lc3NhZ2VTdHJpcCh7XG5cdFx0c2hvd0ljb246IHRydWUsXG5cdFx0dHlwZTogXCJJbmZvcm1hdGlvblwiLFxuXHRcdHRleHQ6IGluZm9UZXh0XG5cdH0pO1xuXHRpbmZvcm1hdGlvbk1lc3NhZ2UuYWRkU3R5bGVDbGFzcyhcInNhcFVpU21hbGxNYXJnaW5Cb3R0b21cIik7XG5cdGNvbnRlbnQucHVzaChpbmZvcm1hdGlvbk1lc3NhZ2UpO1xuXHRjb250ZW50LnB1c2gobGlzdCk7XG5cdGNvbnN0IGxpc3RJbmRleCA9IGNvbnRlbnQuaW5kZXhPZihsaXN0KTtcblx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0XHRjb25zdCBkaWFsb2cgPSBuZXcgRGlhbG9nKHtcblx0XHRcdHRpdGxlOiB0aXRsZSxcblx0XHRcdGNvbnRlbnRXaWR0aDogc2l6ZSA/IHNpemUud2lkdGggOiBcIjU1MHB4XCIsXG5cdFx0XHRjb250ZW50SGVpZ2h0OiBzaXplID8gc2l6ZS5oZWlnaHQgOiBcIjMwMHB4XCIsXG5cdFx0XHRjb250ZW50OiBjb250ZW50LFxuXHRcdFx0YnV0dG9uczogW1xuXHRcdFx0XHRuZXcgQnV0dG9uKHtcblx0XHRcdFx0XHR0ZXh0OiBcIntzYXAuZmUuaTE4bj5SVEFfQ09ORklHVVJBVElPTl9BUFBMWX1cIixcblx0XHRcdFx0XHR0eXBlOiBcIkVtcGhhc2l6ZWRcIixcblx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0Ly8gcGVyc2lzdCBjaGFuZ2VzIGRvbmVcblx0XHRcdFx0XHRcdHVwZGF0ZUNvbmZpZ01vZGVsKGNvbmZpZ0NvbnRleHQsIGRpYWxvZy5nZXRDb250ZW50KClbbGlzdEluZGV4XS5nZXRNb2RlbCgpIGFzIEpTT05Nb2RlbCwgY29uZmlnUGF0aCk7XG5cdFx0XHRcdFx0XHRkaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdHJlc29sdmUocHJvcGVydHlWYWx1ZXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdG5ldyBCdXR0b24oe1xuXHRcdFx0XHRcdHRleHQ6IFwie3NhcC5mZS5pMThuPlJUQV9DT05GSUdVUkFUSU9OX0NBTkNFTH1cIixcblx0XHRcdFx0XHRwcmVzczogZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0ZGlhbG9nLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRyZWplY3QoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRdXG5cdFx0fSk7XG5cdFx0ZGlhbG9nLnNldE1vZGVsKHJlc291cmNlTW9kZWwsIFwic2FwLmZlLmkxOG5cIik7XG5cdFx0ZGlhbG9nLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaUNvbnRlbnRQYWRkaW5nXCIpO1xuXHRcdGRpYWxvZy5hZGRTdHlsZUNsYXNzKFwic2FwVWlSVEFCb3JkZXJcIik7XG5cdFx0ZGlhbG9nLm9wZW4oKTtcblx0XHRyZXR1cm47XG5cdH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0NoYW5nZXMoXG5cdHByb3BlcnR5Q2hhbmdlczogcHJvcEtleUFuZFZhbHVlLFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0cGFnZTogc3RyaW5nLFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZ1xuKTogYWRhcHRpb25DaGFuZ2VbXSB7XG5cdGxldCBzaW5nbGVDaGFuZ2U6IHByb3BLZXlBbmRWYWx1ZSA9IHt9O1xuXHRjb25zdCBjaGFuZ2VzID0gW107XG5cdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnR5Q2hhbmdlcykpIHtcblx0XHRzaW5nbGVDaGFuZ2UgPSB7fTtcblx0XHRzaW5nbGVDaGFuZ2Vba2V5XSA9IHZhbHVlO1xuXHRcdGNoYW5nZXMucHVzaChnZXRDaGFuZ2Uoc2luZ2xlQ2hhbmdlLCBhcHBDb21wb25lbnQsIHBhZ2UsIHByb3BlcnR5UGF0aCkpO1xuXHR9XG5cdHJldHVybiBjaGFuZ2VzO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlYWNoIGNoYW5nZSBtYWRlIHRvIGdsb2JhbCBzZXR0aW5ncyBcInNhcC5mZVwiXG4gKiBUaGUgc2V0IG9mIGNoYW5nZXMgYXJlIHB1dCBpbnRvIGluZGl2aWR1YWwgY2hhbmdlcyB0byBlbnN1cmVcbiAqIHRoYXQgZWFybGllciBjaGFuZ2VzIGFyZSBub3QgbG9zdCB3aGVuIHRoZXNlIGFyZSBsb2FkZWQgYXQgcnVudGltZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eUNoYW5nZXNcbiAqIEBwYXJhbSBhcHBDb21wb25lbnRcbiAqIEBwYXJhbSBwYWdlXG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoXG4gKiBAcmV0dXJucyBUaGUgY2hhbmdlIHN0cnVjdHVyZSB1c2VkIGJ5IGZsZXhpYmlsaXR5IHRvb2xzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzR2xvYmFsQ2hhbmdlcyhcblx0cHJvcGVydHlDaGFuZ2VzOiBwcm9wS2V5QW5kVmFsdWUsXG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRwYWdlOiBzdHJpbmcsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nXG4pOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0bGV0IHNpbmdsZUNoYW5nZTogcHJvcEtleUFuZFZhbHVlID0ge307XG5cdGNvbnN0IGNoYW5nZXMgPSBbXTtcblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydHlDaGFuZ2VzKSkge1xuXHRcdHNpbmdsZUNoYW5nZSA9IHt9O1xuXHRcdHNpbmdsZUNoYW5nZVtrZXldID0gdmFsdWU7XG5cdFx0Y2hhbmdlcy5wdXNoKGdldENoYW5nZShzaW5nbGVDaGFuZ2UsIGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoKSk7XG5cdH1cblx0cmV0dXJuIGNoYW5nZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2UoXG5cdHByb3BlcnR5Q2hhbmdlczogcHJvcEtleUFuZFZhbHVlLFxuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCxcblx0cGFnZTogc3RyaW5nLFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZ1xuKTogYWRhcHRpb25DaGFuZ2Uge1xuXHQvLyBDaGFuZ2VzIGZvciBjb250cm9scyBoYXZlIGEgcGF0aCBzdGFydGluZyB3aXRoIGNvbnRyb2xDb25maWd1cmF0aW9uLCBmb2xsb3dlZCBieSBhbiBhbm5vdGF0aW9uIHBhdGhcblx0Ly8gRm9yIHRoZSBsaXN0IHJlcG9ydCBjaGFuZ2VzLCB0aGVyZSBpcyBubyBwYXRoIGJlY2F1c2UgdGhlIHByb3BlcnRpZXMgYXJlIGRpcmVjdGx5IHVuZGVyIFNldHRpbmdzXG5cdC8vIGZvciB0aGUgXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnRcIiBpbiB0aGUgbWFuaWZlc3QuXG5cdGlmIChwcm9wZXJ0eVBhdGggPT09IFwiXCIpIHtcblx0XHRwcm9wZXJ0eVBhdGggPSBPYmplY3Qua2V5cyhwcm9wZXJ0eUNoYW5nZXMpWzBdO1xuXHR9IGVsc2Uge1xuXHRcdHByb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aCArIFwiL1wiICsgT2JqZWN0LmtleXMocHJvcGVydHlDaGFuZ2VzKVswXTtcblx0fVxuXHRjb25zdCB2YWx1ZSA9IHByb3BlcnR5Q2hhbmdlc1tPYmplY3Qua2V5cyhwcm9wZXJ0eUNoYW5nZXMpWzBdXTtcblxuXHRyZXR1cm4gZ2V0Q2hhbmdlU3RydWN0dXJlKGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoLCB2YWx1ZSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBwYXJhbWV0ZXJzIG90aGVyIHRoYW4gdGhlIGNvbnRyb2wgc2V0dGluZ3MgdGhhdCBhcmUgbmVlZGVkXG4gKiBmb3IgdGhlIGNoYW5nZSBzdHJ1Y3R1cmUuXG4gKiBAcGFyYW0gcHJvcGVydHlDaGFuZ2VzXG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoXG4gKiBAcGFyYW0gY29udHJvbFxuICogQHJldHVybnMgVGhlIGNoYW5nZXMgaW4gYSBzdHJ1Y3R1cmUgdXNlZCBieSBmbGV4aWJpbGl0eSB0b29sc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGVDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlWYWx1ZSwgcHJvcGVydHlQYXRoOiBzdHJpbmcsIGNvbnRyb2w6IENvbnRyb2wpOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KGNvbnRyb2wpO1xuXHRjb25zdCBwYWdlID0gZ2V0UGFnZShjb250cm9sLmdldFBhcmVudCgpIGFzIENvbnRyb2wpO1xuXHRyZXR1cm4gcHJvY2Vzc0NoYW5nZXMocHJvcGVydHlDaGFuZ2VzLCBhcHBDb21wb25lbnQsIHBhZ2UsIHByb3BlcnR5UGF0aCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBwYXJhbWV0ZXJzIG90aGVyIHRoYW4gdGhlIGdsb2JhbCBzZXR0aW5ncyB0aGF0IGFyZSBuZWVkZWRcbiAqIGZvciB0aGUgY2hhbmdlIHN0cnVjdHVyZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eUNoYW5nZXNcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGhcbiAqIEBwYXJhbSBjb250cm9sXG4gKiBAcmV0dXJucyBUaGUgY2hhbmdlcyBpbiBhIHN0cnVjdHVyZSB1c2VkIGJ5IGZsZXhpYmlsaXR5IHRvb2xzXG4gKi9cbmZ1bmN0aW9uIHNlcGFyYXRlR2xvYmFsQ2hhbmdlcyhwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5VmFsdWUsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBjb250cm9sOiBDb250cm9sKTogYWRhcHRpb25DaGFuZ2VbXSB7XG5cdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChjb250cm9sKTtcblx0Y29uc3QgcGFnZSA9IFwic2FwLmZlXCI7XG5cdHJldHVybiBwcm9jZXNzR2xvYmFsQ2hhbmdlcyhwcm9wZXJ0eUNoYW5nZXMsIGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFnZShjb250cm9sOiBDb250cm9sKTogc3RyaW5nIHtcblx0Y29uc3Qgdmlld0lkID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyhjb250cm9sKS5nZXRJZCgpLnNwbGl0KFwiOjpcIik7XG5cdHJldHVybiB2aWV3SWRbdmlld0lkLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgY29uc3QgZXh0cmFjdENoYW5nZXMgPSBmdW5jdGlvbiAoXG5cdGRlc2lnbnRpbWVTZXR0aW5nczogRGVzaWdudGltZVNldHRpbmdbXSxcblx0dW5jaGFuZ2VkRGF0YTogUHJvcGVydHlWYWx1ZSxcblx0cHJvcGVydHlWYWx1ZXNFbnRlcmVkOiBQcm9wZXJ0eVZhbHVlLFxuXHRwcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0Y29udHJvbDogQ29udHJvbCxcblx0Z2xvYmFsU2V0dGluZ3M/OiBEZXNpZ250aW1lU2V0dGluZ1tdXG4pOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0Y29uc3QgcHJvcGVydHlDaGFuZ2VzID0gZ2V0Q2hhbmdlZFByb3BlcnR5VmFsdWVzKGRlc2lnbnRpbWVTZXR0aW5ncywgdW5jaGFuZ2VkRGF0YSwgcHJvcGVydHlWYWx1ZXNFbnRlcmVkKTtcblx0Ly8gUHV0IGVhY2ggcHJvcGVydHkgaW50byBpdHMgb3duIGNoYW5nZS4gVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QgbG9zZSBwcmV2aW91cyBjaGFuZ2VzLlxuXHRsZXQgY2hhbmdlcyA9IHNlcGFyYXRlQ2hhbmdlcyhwcm9wZXJ0eUNoYW5nZXMsIHByb3BlcnR5UGF0aCwgY29udHJvbCk7XG5cdGlmIChnbG9iYWxTZXR0aW5ncykge1xuXHRcdGNvbnN0IGdsb2JhbENoYW5nZXMgPSBnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMoZ2xvYmFsU2V0dGluZ3MsIHVuY2hhbmdlZERhdGEsIHByb3BlcnR5VmFsdWVzRW50ZXJlZCk7XG5cdFx0Y29uc3QgZ2xvYmFsID0gc2VwYXJhdGVHbG9iYWxDaGFuZ2VzKGdsb2JhbENoYW5nZXMsIHByb3BlcnR5UGF0aCwgY29udHJvbCk7XG5cdFx0Y2hhbmdlcyA9IGNoYW5nZXMuY29uY2F0KGdsb2JhbCk7XG5cdH1cblx0aWYgKGNoYW5nZXMubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBjaGFuZ2VzO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBbXTtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IG5vQ2hhbmdlcyA9IGZ1bmN0aW9uICgpOiBbXSB7XG5cdHJldHVybiBbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zpb3JpVG9vbHNSdGFNb2RlKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogYm9vbGVhbiB7XG5cdC8vIENoZWNrIGlmIHJ0YSBtb2RlIGhhcyBiZWVuIHNwZWNpZmllZCBvbiB1cmwgKGZvciBsb2NhbCB0ZXN0aW5nKVxuXHRsZXQgdXJsUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcblx0Y29uc3Qgc2hlbGxTZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0dXJsUGFyYW1zID0gc2hlbGxTZXJ2aWNlPy5wYXJzZVBhcmFtZXRlcnM/Lih3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcblx0cmV0dXJuICEhdXJsUGFyYW1zICYmIHVybFBhcmFtc1tcImZpb3JpLXRvb2xzLXJ0YS1tb2RlXCJdPy5bMF0gPT09IFwiZm9yQWRhcHRhdGlvblwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSVEFNb2RlKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KTogYm9vbGVhbiB7XG5cdC8vIENoZWNrIGlmIHJ0YSBtb2RlIGhhcyBiZWVuIHNwZWNpZmllZCBvbiB1cmwgKGZvciBsb2NhbCB0ZXN0aW5nKVxuXHRsZXQgdXJsUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcblx0Y29uc3Qgc2hlbGxTZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0dXJsUGFyYW1zID0gc2hlbGxTZXJ2aWNlPy5wYXJzZVBhcmFtZXRlcnM/Lih3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcblx0cmV0dXJuICEhdXJsUGFyYW1zICYmIHVybFBhcmFtc1tcInNhcC1mZS1ydGEtbW9kZVwiXT8uWzBdID09PSBcInRydWVcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdzSWZLZXlVc2VyKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LCBpdGVtczogU2V0dGluZ3NEYXRhW10pOiBTZXR0aW5nc0RhdGFbXSB7XG5cdGlmICghaXNGaW9yaVRvb2xzUnRhTW9kZShhcHBDb21wb25lbnQpKSB7XG5cdFx0Ly8gbm90IHRvb2xzID0+IGtleSB1c2VyXG5cdFx0cmV0dXJuIGl0ZW1zLmZpbHRlcigoc2V0dGluZykgPT4ge1xuXHRcdFx0cmV0dXJuIHNldHRpbmcua2V5VXNlcjtcblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gaXRlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbmZpZ01vZGVsUHJlcGFyZWQoY29uZmlnQ29udGV4dDogQ29udGV4dCwgcGF0aCA9IFwicnRhL2NvbmZpZ1NldHRpbmdzXCIpOiBib29sZWFuIHtcblx0aWYgKGNvbmZpZ0NvbnRleHQuZ2V0UHJvcGVydHkocGF0aCkpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnTW9kZWwoaXRlbXM6IFNldHRpbmdzRGF0YVtdLCBjb25maWdDb250ZXh0OiBDb250ZXh0LCBwYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIik6IHZvaWQge1xuXHRpZiAoIWNvbmZpZ0NvbnRleHQuZ2V0UHJvcGVydHkocGF0aCkpIHtcblx0XHRjb25maWdDb250ZXh0LnNldFByb3BlcnR5KHBhdGgsIGl0ZW1zKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyhjb25maWdDb250ZXh0OiBDb250ZXh0LCBwYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIik6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBzZXR0aW5ncyA9IGNvbmZpZ0NvbnRleHQuZ2V0T2JqZWN0KHBhdGgpO1xuXHRjb25zdCBwZXJzb25hbGl6YXRpb25TZXR0aW5nID0gc2V0dGluZ3MuZmluZCgoc2V0dGluZzogU2V0dGluZ3NEYXRhKSA9PiB7XG5cdFx0cmV0dXJuIHNldHRpbmc/LmNvbnRyb2xbMF0/LmlkID09PSBcInBlcnNvbmFsaXphdGlvblwiO1xuXHR9KTtcblx0aWYgKHBlcnNvbmFsaXphdGlvblNldHRpbmcpIHtcblx0XHRyZXR1cm4gcGVyc29uYWxpemF0aW9uU2V0dGluZy5jb250cm9sWzBdLnZhbHVlO1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDb25maWdNb2RlbChjb25maWdDb250ZXh0OiBDb250ZXh0LCBzZXR0aW5nc01vZGVsOiBKU09OTW9kZWwsIHBhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiKTogdm9pZCB7XG5cdGNvbnN0IHVwZGF0ZWRTZXR0aW5ncyA9IGRlZXBDbG9uZShzZXR0aW5nc01vZGVsLmdldERhdGEoKSk7XG5cdGNvbmZpZ0NvbnRleHQuc2V0UHJvcGVydHkocGF0aCwgdXBkYXRlZFNldHRpbmdzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZXNBbmREZXNjcmlwdGlvbnMocHJvcHM6IERlc2lnbnRpbWVTZXR0aW5nW10sIHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwpOiBEZXNpZ250aW1lU2V0dGluZ1tdIHtcblx0cHJvcHMuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuXHRcdHByb3AubmFtZSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChwcm9wLm5hbWUpO1xuXHRcdHByb3AuZGVzY3JpcHRpb24gPSByZXNvdXJjZU1vZGVsLmdldFRleHQocHJvcC5kZXNjcmlwdGlvbik7XG5cdFx0aWYgKHByb3AuZW51bXMpIHtcblx0XHRcdHByb3AuZW51bXMuZm9yRWFjaChmdW5jdGlvbiAoZW51bW0pIHtcblx0XHRcdFx0ZW51bW0ubmFtZSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChlbnVtbS5uYW1lKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIHByb3BzO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztFQUFBO0FBQ0E7QUFDQTtFQWdGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNBLHdCQUF3QkEsQ0FDdkNDLGtCQUF1QyxFQUN2Q0MsYUFBNEIsRUFDNUJDLGNBQTZCLEVBQ2I7SUFDaEIsTUFBTUMsZUFBOEIsR0FBRyxDQUFDLENBQUM7SUFFekNILGtCQUFrQixDQUFDSSxPQUFPLENBQUMsVUFBVUMsT0FBTyxFQUFFO01BQzdDLElBQ0UsT0FBT0osYUFBYSxDQUFDSSxPQUFPLENBQUNDLEVBQUUsQ0FBQyxLQUFLLFFBQVEsSUFBSUwsYUFBYSxDQUFDSSxPQUFPLENBQUNDLEVBQUUsQ0FBQyxLQUFLSixjQUFjLENBQUNHLE9BQU8sQ0FBQ0MsRUFBRSxDQUFDLElBQ3pHLE9BQU9MLGFBQWEsQ0FBQ0ksT0FBTyxDQUFDQyxFQUFFLENBQUMsS0FBSyxRQUFRLElBQzdDQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ1AsYUFBYSxDQUFDSSxPQUFPLENBQUNDLEVBQUUsQ0FBQyxDQUFDLEtBQUtDLElBQUksQ0FBQ0MsU0FBUyxDQUFDTixjQUFjLENBQUNHLE9BQU8sQ0FBQ0MsRUFBRSxDQUFDLENBQUUsRUFDekY7UUFDRCxJQUFJRCxPQUFPLENBQUNJLFdBQVcsSUFBSVAsY0FBYyxDQUFDRyxPQUFPLENBQUNDLEVBQUUsQ0FBQyxLQUFLRCxPQUFPLENBQUNLLGNBQWMsRUFBRTtVQUNqRjtVQUNBLE1BQU1DLFlBQTJCLEdBQUcsQ0FBQyxDQUFDO1VBQ3RDLElBQUlOLE9BQU8sQ0FBQ0ksV0FBVyxJQUFJSixPQUFPLENBQUNJLFdBQVcsRUFBRUcsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzRFAsT0FBTyxDQUFDSSxXQUFXLENBQUNMLE9BQU8sQ0FBQyxVQUFVUyxnQkFBZ0IsRUFBRTtjQUN2REYsWUFBWSxDQUFDRSxnQkFBZ0IsQ0FBQ0MsSUFBSSxHQUFHRCxnQkFBZ0IsQ0FBQ0MsSUFBSSxHQUFHRCxnQkFBZ0IsQ0FBQ1AsRUFBRSxDQUFDLEdBQ2hGSixjQUFjLENBQUNXLGdCQUFnQixDQUFDUCxFQUFFLENBQUM7WUFDckMsQ0FBQyxDQUFDO1VBQ0g7VUFDQUgsZUFBZSxDQUFDRSxPQUFPLENBQUNTLElBQUksR0FBR1QsT0FBTyxDQUFDUyxJQUFJLEdBQUdULE9BQU8sQ0FBQ0MsRUFBRSxDQUFDLEdBQUdLLFlBQVk7UUFDekUsQ0FBQyxNQUFNLElBQUksQ0FBQ04sT0FBTyxDQUFDVSxVQUFVLEVBQUU7VUFDL0JaLGVBQWUsQ0FBQ0UsT0FBTyxDQUFDUyxJQUFJLEdBQUdULE9BQU8sQ0FBQ1MsSUFBSSxHQUFHVCxPQUFPLENBQUNDLEVBQUUsQ0FBQyxHQUFHSixjQUFjLENBQUNHLE9BQU8sQ0FBQ0MsRUFBRSxDQUFDO1FBQ3ZGO01BQ0Q7SUFDRCxDQUFDLENBQUM7SUFDRixPQUFPSCxlQUFlO0VBQ3ZCO0VBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBYSxRQUFBLENBQUFqQix3QkFBQSxHQUFBQSx3QkFBQTtFQVFPLFNBQVNrQixrQkFBa0JBLENBQ2pDQyxZQUEwQixFQUMxQkMsSUFBWSxFQUNaQyxZQUFvQixFQUNwQmpCLGVBQTBFLEVBQ3pEO0lBQ2pCLE9BQU87TUFDTmUsWUFBWSxFQUFFQSxZQUFZO01BQzFCRyxRQUFRLEVBQUVILFlBQVk7TUFDdEJJLGtCQUFrQixFQUFFO1FBQ25CQyx1QkFBdUIsRUFBRSxxQ0FBcUM7UUFDOURDLE9BQU8sRUFBRTtVQUNSQyxVQUFVLEVBQUU7WUFDWE4sSUFBSSxFQUFFQSxJQUFJO1lBQ1ZPLG9CQUFvQixFQUFFO2NBQ3JCTixZQUFZLEVBQUVBLFlBQVk7Y0FDMUJPLFNBQVMsRUFBRSxRQUFRO2NBQ25CQyxhQUFhLEVBQUV6QjtZQUNoQjtVQUNEO1FBQ0Q7TUFDRDtJQUNELENBQUM7RUFDRjtFQUFDYSxRQUFBLENBQUFDLGtCQUFBLEdBQUFBLGtCQUFBO0VBRUQsU0FBU1ksWUFBWUEsQ0FBQ0MsSUFBNkIsRUFBRUMsYUFBNEIsRUFBUTtJQUN4RixLQUFLLE1BQU1DLEdBQUcsSUFBSUYsSUFBSSxFQUFFO01BQ3ZCLElBQUlFLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBT0YsSUFBSSxDQUFDRSxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDbERGLElBQUksQ0FBQ0UsR0FBRyxDQUFDLEdBQUdELGFBQWEsQ0FBQ0UsT0FBTyxDQUFDSCxJQUFJLENBQUNFLEdBQUcsQ0FBVyxDQUFDO01BQ3ZEO0lBQ0Q7RUFDRDtFQUVBLFNBQVNFLGFBQWFBLENBQUNDLEtBQWdCLEVBQUVKLGFBQTRCLEVBQVE7SUFDNUUsTUFBTUssWUFBWSxHQUFHRCxLQUFLLENBQUNFLE9BQU8sQ0FBQyxDQUFtQjtJQUN0REQsWUFBWSxDQUFDaEMsT0FBTyxDQUFFQyxPQUFPLElBQUs7TUFDakN3QixZQUFZLENBQUN4QixPQUFPLEVBQUUwQixhQUFhLENBQUM7TUFDcEMxQixPQUFPLENBQUNpQyxPQUFPLENBQUNsQyxPQUFPLENBQUVtQyxXQUFXLElBQUs7UUFDeENWLFlBQVksQ0FBQ1UsV0FBVyxFQUFFUixhQUFhLENBQUM7UUFDeENRLFdBQVcsQ0FBQ0MsSUFBSSxFQUFFcEMsT0FBTyxDQUFFcUMsUUFBUSxJQUFLO1VBQ3ZDWixZQUFZLENBQUNZLFFBQVEsRUFBRVYsYUFBYSxDQUFDO1FBQ3RDLENBQUMsQ0FBQztNQUNILENBQUMsQ0FBQztJQUNILENBQUMsQ0FBQztFQUNIO0VBRU8sU0FBU1csMkJBQTJCQSxDQUMxQ0MsYUFBc0IsRUFDdEJ6QyxjQUE2QixFQUM3QjZCLGFBQTRCLEVBRXJCO0lBQUEsSUFEUGEsVUFBVSxHQUFBQyxTQUFBLENBQUFqQyxNQUFBLFFBQUFpQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLG9CQUFvQjtJQUVqQyxNQUFNRSxhQUFhLEdBQUcsSUFBSUMsU0FBUyxDQUFDLENBQUM7SUFDckNELGFBQWEsQ0FBQ0UsT0FBTyxDQUFDQyxTQUFTLENBQUNQLGFBQWEsQ0FBQ1EsV0FBVyxDQUFDUCxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFVixhQUFhLENBQUNhLGFBQWEsRUFBRWhCLGFBQWEsQ0FBQztJQUMzQyxNQUFNcUIsSUFBSSxHQUFHLElBQUlDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCRCxJQUFJLENBQUNFLFFBQVEsQ0FBQ1AsYUFBYSxDQUFDO0lBRTVCLE1BQU1RLFFBQVEsR0FBRyxJQUFJQyxhQUFhLENBQUM7TUFDbENDLEtBQUssRUFBRTtJQUNSLENBQUMsQ0FBQztJQUVGRixRQUFRLENBQUNHLFdBQVcsQ0FBQztNQUNwQjVDLElBQUksRUFBRSxTQUFTO01BQ2Y2QyxPQUFPLEVBQUUsU0FBQUEsQ0FBVTdDLElBQVksRUFBRThDLE9BQThDLEVBQTZCO1FBQzNHLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDVCxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3hDLE1BQU03QyxFQUFFLEdBQUdzRCxPQUFPLENBQUNULFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFFcEMsUUFBUVUsSUFBSTtVQUNYLEtBQUssUUFBUTtZQUNaLElBQUlELE9BQU8sQ0FBQ1QsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2NBQ2hDO2NBQ0EsTUFBTXJCLElBQUksR0FBRyxJQUFJZ0MsSUFBSSxDQUFDO2dCQUNyQkMsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QvQixHQUFHLEVBQUU7Y0FDTixDQUFDLENBQUM7Y0FFRixNQUFNZ0MsTUFBTSxHQUFHLElBQUlDLE1BQU0sQ0FBQztnQkFDekJDLFdBQVcsRUFBRSxTQUFTO2dCQUN0QkMsTUFBTSxFQUFFLFNBQUFBLENBQVVDLEtBQUssRUFBUTtrQkFDOUJsRSxjQUFjLENBQUUsSUFBSSxDQUFZbUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUF3QixHQUNqRUQsS0FBSyxDQUFDRSxZQUFZLENBQUMsY0FBYyxDQUFDLENBQ2pDQyxNQUFNLENBQUMsQ0FBcUI7Z0JBQy9CO2NBQ0QsQ0FBQyxDQUFDLENBQUNGLElBQUksQ0FBQyxJQUFJLEVBQUUvRCxFQUFFLENBQUM7Y0FFakIwRCxNQUFNLENBQUNRLFNBQVMsQ0FBQztnQkFDaEIxRCxJQUFJLEVBQUUsTUFBTTtnQkFDWjJELFFBQVEsRUFBRTNDO2NBQ1gsQ0FBQyxDQUFDO2NBQ0YsT0FBT2tDLE1BQU07WUFDZCxDQUFDLE1BQU07Y0FDTjtjQUNBLE9BQU8sSUFBSVUsS0FBSyxDQUFDO2dCQUNoQkMsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCUixNQUFNLEVBQUUsU0FBQUEsQ0FBVUMsS0FBSyxFQUFRO2tCQUM5QmxFLGNBQWMsQ0FBRSxJQUFJLENBQVdtRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQXdCLEdBQUdELEtBQUssQ0FBQ0UsWUFBWSxDQUFDLE9BQU8sQ0FDdEY7Z0JBQ1Q7Y0FDRCxDQUFDLENBQUMsQ0FBQ0QsSUFBSSxDQUFDLElBQUksRUFBRS9ELEVBQUUsQ0FBQztZQUNsQjtVQUNELEtBQUssVUFBVTtZQUNkO1lBQ0EsTUFBTXNFLFdBQVcsR0FBRyxJQUFJQyxVQUFVLENBQUM7Y0FDbENDLEtBQUssRUFBRSxLQUFLO2NBQ1pDLGFBQWEsRUFBRSxLQUFLO2NBQ3BCQyxhQUFhLEVBQUUsSUFBSTtjQUNuQkMsTUFBTSxFQUFFLENBQUMvRSxjQUFjLEVBQUVnRixvQkFBb0IsRUFBY0MsR0FBRyxDQUFFQyxrQkFBa0IsSUFBSztnQkFDdEYsT0FBTyxJQUFJQyxLQUFLLENBQUM7a0JBQUV0QixJQUFJLEVBQUVxQixrQkFBa0I7a0JBQUVwRCxHQUFHLEVBQUVvRDtnQkFBbUIsQ0FBQyxDQUFDO2NBQ3hFLENBQUMsQ0FBQztjQUNGRSxXQUFXLEVBQUUsU0FBQUEsQ0FBVWxCLEtBQWtDLEVBQVE7Z0JBQ2hFLE1BQU1tQixLQUFLLEdBQUdyRixjQUFjLENBQUUsSUFBSSxDQUFnQm1FLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBYTtnQkFDekUsSUFBS0QsS0FBSyxDQUFDRSxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQWMxRCxNQUFNLEdBQUcsQ0FBQyxFQUFFO2tCQUMvRDJFLEtBQUssQ0FBQ0MsSUFBSSxDQUFDLENBQUNwQixLQUFLLEVBQUVFLFlBQVksQ0FBQyxhQUFhLENBQUMsRUFBYSxDQUFDLENBQUMsRUFBRW5CLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkYsQ0FBQyxNQUFNLElBQUtpQixLQUFLLENBQUNFLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBYzFELE1BQU0sR0FBRyxDQUFDLEVBQUU7a0JBQ3hFMkUsS0FBSyxDQUFDRSxNQUFNLENBQUNGLEtBQUssQ0FBQ0csT0FBTyxDQUFDLENBQUN0QixLQUFLLEVBQUVFLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBYSxDQUFDLENBQUMsRUFBRW5CLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekc7Y0FDRDtZQUNELENBQUMsQ0FBQyxDQUFDa0IsSUFBSSxDQUFDLElBQUksRUFBRS9ELEVBQUUsQ0FBQztZQUNqQnNFLFdBQVcsQ0FBQ2UsWUFBWSxDQUFDLFVBQVVDLElBQXNCLEVBQUU7Y0FDMUQsTUFBTTdCLElBQUksR0FBRzZCLElBQUksQ0FBQzdCLElBQUk7Y0FDdEIsT0FBTyxJQUFJc0IsS0FBSyxDQUFDO2dCQUNoQnJELEdBQUcsRUFBRStCLElBQUk7Z0JBQ1RBLElBQUksRUFBRUE7Y0FDUCxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUM7WUFDRixPQUFPYSxXQUFXO1VBQ25CLEtBQUssUUFBUTtZQUNaO1lBQ0EsT0FBTyxJQUFJRixLQUFLLENBQUM7Y0FDaEJDLEtBQUssRUFBRSxTQUFTO2NBQ2hCZCxJQUFJLEVBQUUsUUFBUTtjQUNkTSxNQUFNLEVBQUUsU0FBQUEsQ0FBVUMsS0FBSyxFQUFRO2dCQUM5QmxFLGNBQWMsQ0FBRSxJQUFJLENBQVdtRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQXdCLEdBQUdELEtBQUssQ0FBQ0UsWUFBWSxDQUFDLE9BQU8sQ0FDdEY7Y0FDVDtZQUNELENBQUMsQ0FBQyxDQUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFL0QsRUFBRSxDQUFDO1VBQ2xCLEtBQUssU0FBUztZQUNiO1lBQ0EsT0FBTyxJQUFJdUYsUUFBUSxDQUFDO2NBQ25CQyxRQUFRLEVBQUUsU0FBUztjQUNuQjlCLE1BQU0sRUFBRSxTQUFBQSxDQUFVSSxLQUFLLEVBQVE7Z0JBQzlCbEUsY0FBYyxDQUFFLElBQUksQ0FBY21FLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBd0IsR0FBR0QsS0FBSyxDQUFDRSxZQUFZLENBQ3hGLFVBQ0QsQ0FBcUI7Y0FDdEI7WUFDRCxDQUFDLENBQUMsQ0FBQ0QsSUFBSSxDQUFDLElBQUksRUFBRS9ELEVBQUUsQ0FBQztVQUNsQixLQUFLLGlCQUFpQjtZQUNyQjtZQUNBO1lBQ0E7WUFDQTtZQUNBLE1BQU13QixJQUFJLEdBQUcsSUFBSWdDLElBQUksQ0FBQztjQUNyQkMsSUFBSSxFQUFFLFFBQVE7Y0FDZC9CLEdBQUcsRUFBRTtZQUNOLENBQUMsQ0FBQztZQUVGLE1BQU1nQyxNQUFNLEdBQUcsSUFBSUMsTUFBTSxDQUFDO2NBQ3pCQyxXQUFXLEVBQUUsU0FBUztjQUN0QkMsTUFBTSxFQUFFLFNBQUFBLENBQVVDLEtBQUssRUFBUTtnQkFDOUIsSUFBSU8sS0FBSyxHQUFJUCxLQUFLLENBQUNFLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBVUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pFO2dCQUNBLElBQUlJLEtBQUssQ0FBQ29CLFdBQVcsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJcEIsS0FBSyxDQUFDb0IsV0FBVyxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUU7a0JBQ3RFcEIsS0FBSyxHQUFHcEUsSUFBSSxDQUFDeUYsS0FBSyxDQUFDckIsS0FBSyxDQUFDb0IsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDeEM7Z0JBQ0E3RixjQUFjLENBQUUsSUFBSSxDQUFZbUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUF3QixHQUFHTSxLQUFLO2NBQzNFO1lBQ0QsQ0FBQyxDQUFDLENBQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUvRCxFQUFFLENBQUM7WUFFakIwRCxNQUFNLENBQUNRLFNBQVMsQ0FBQztjQUNoQjFELElBQUksRUFBRSxNQUFNO2NBQ1oyRCxRQUFRLEVBQUUzQztZQUNYLENBQUMsQ0FBQztZQUNGLE9BQU9rQyxNQUFNO1VBQ2QsS0FBSyxNQUFNO1lBQ1Y7WUFDQTtZQUNBO1lBQ0E7WUFDQSxPQUFPLElBQUlVLEtBQUssQ0FBQztjQUNoQkMsS0FBSyxFQUFFLFNBQVM7Y0FDaEJSLE1BQU0sRUFBRSxTQUFBQSxDQUFVQyxLQUFLLEVBQVE7Z0JBQzlCbEUsY0FBYyxDQUFFLElBQUksQ0FBV21FLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBd0IsR0FBRzlELElBQUksQ0FBQ3lGLEtBQUssQ0FDN0U1QixLQUFLLENBQUNFLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRTJCLFFBQVEsQ0FBQyxDQUN2QyxDQUFDO2NBQ0Y7WUFDRCxDQUFDLENBQUMsQ0FBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUvRCxFQUFFLENBQUM7VUFDbEI7WUFDQztRQUNGO01BQ0Q7SUFDRCxDQUFDLENBQUM7SUFFRjhDLElBQUksQ0FBQ29CLFNBQVMsQ0FBQztNQUNkMUQsSUFBSSxFQUFFLEdBQUc7TUFDVDJELFFBQVEsRUFBRWxCO0lBQ1gsQ0FBQyxDQUFDO0lBRUYsT0FBT0gsSUFBSTtFQUNaO0VBQUNwQyxRQUFBLENBQUEwQiwyQkFBQSxHQUFBQSwyQkFBQTtFQUVNLGVBQWV3RCxrQkFBa0JBLENBQ3ZDdkQsYUFBc0IsRUFDdEJ6QyxjQUE2QixFQUM3QmlHLEtBQWEsRUFDYnBFLGFBQTRCLEVBSUg7SUFBQSxJQUh6QmEsVUFBVSxHQUFBQyxTQUFBLENBQUFqQyxNQUFBLFFBQUFpQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLG9CQUFvQjtJQUFBLElBQ2pDdUQsUUFBUSxHQUFBdkQsU0FBQSxDQUFBakMsTUFBQSxRQUFBaUMsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyw4Q0FBOEM7SUFBQSxJQUN6RHdELElBQXdDLEdBQUF4RCxTQUFBLENBQUFqQyxNQUFBLE9BQUFpQyxTQUFBLE1BQUFDLFNBQUE7SUFFeEMsTUFBTU0sSUFBSSxHQUFHViwyQkFBMkIsQ0FBQ0MsYUFBYSxFQUFFekMsY0FBYyxFQUFFNkIsYUFBYSxFQUFFYSxVQUFVLENBQUM7SUFDbEcsTUFBTXBCLE9BQWdDLEdBQUcsRUFBRTtJQUMzQyxNQUFNOEUsa0JBQWtCLEdBQUcsSUFBSUMsWUFBWSxDQUFDO01BQzNDQyxRQUFRLEVBQUUsSUFBSTtNQUNkM0MsSUFBSSxFQUFFLGFBQWE7TUFDbkJFLElBQUksRUFBRXFDO0lBQ1AsQ0FBQyxDQUFDO0lBQ0ZFLGtCQUFrQixDQUFDRyxhQUFhLENBQUMsd0JBQXdCLENBQUM7SUFDMURqRixPQUFPLENBQUNnRSxJQUFJLENBQUNjLGtCQUFrQixDQUFDO0lBQ2hDOUUsT0FBTyxDQUFDZ0UsSUFBSSxDQUFDcEMsSUFBSSxDQUFDO0lBQ2xCLE1BQU1zRCxTQUFTLEdBQUdsRixPQUFPLENBQUNrRSxPQUFPLENBQUN0QyxJQUFJLENBQUM7SUFDdkMsT0FBTyxJQUFJdUQsT0FBTyxDQUFDLFVBQVVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFO01BQzdDLE1BQU1DLE1BQU0sR0FBRyxJQUFJQyxNQUFNLENBQUM7UUFDekJaLEtBQUssRUFBRUEsS0FBSztRQUNaYSxZQUFZLEVBQUVYLElBQUksR0FBR0EsSUFBSSxDQUFDdkIsS0FBSyxHQUFHLE9BQU87UUFDekNtQyxhQUFhLEVBQUVaLElBQUksR0FBR0EsSUFBSSxDQUFDYSxNQUFNLEdBQUcsT0FBTztRQUMzQzFGLE9BQU8sRUFBRUEsT0FBTztRQUNoQjJGLE9BQU8sRUFBRSxDQUNSLElBQUlDLE1BQU0sQ0FBQztVQUNWckQsSUFBSSxFQUFFLHVDQUF1QztVQUM3Q0YsSUFBSSxFQUFFLFlBQVk7VUFDbEJ3RCxLQUFLLEVBQUUsU0FBQUEsQ0FBQSxFQUFrQjtZQUN4QjtZQUNBQyxpQkFBaUIsQ0FBQzNFLGFBQWEsRUFBRW1FLE1BQU0sQ0FBQ1MsVUFBVSxDQUFDLENBQUMsQ0FBQ2IsU0FBUyxDQUFDLENBQUNjLFFBQVEsQ0FBQyxDQUFDLEVBQWU1RSxVQUFVLENBQUM7WUFDcEdrRSxNQUFNLENBQUNXLEtBQUssQ0FBQyxDQUFDO1lBQ2RiLE9BQU8sQ0FBQzFHLGNBQWMsQ0FBQztVQUN4QjtRQUNELENBQUMsQ0FBQyxFQUNGLElBQUlrSCxNQUFNLENBQUM7VUFDVnJELElBQUksRUFBRSx3Q0FBd0M7VUFDOUNzRCxLQUFLLEVBQUUsU0FBQUEsQ0FBQSxFQUFrQjtZQUN4QlAsTUFBTSxDQUFDVyxLQUFLLENBQUMsQ0FBQztZQUNkWixNQUFNLENBQUMsQ0FBQztVQUNUO1FBQ0QsQ0FBQyxDQUFDO01BRUosQ0FBQyxDQUFDO01BQ0ZDLE1BQU0sQ0FBQ3hELFFBQVEsQ0FBQ3ZCLGFBQWEsRUFBRSxhQUFhLENBQUM7TUFDN0MrRSxNQUFNLENBQUNMLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQztNQUMzQ0ssTUFBTSxDQUFDTCxhQUFhLENBQUMsZ0JBQWdCLENBQUM7TUFDdENLLE1BQU0sQ0FBQ1ksSUFBSSxDQUFDLENBQUM7TUFDYjtJQUNELENBQUMsQ0FBQztFQUNIO0VBQUMxRyxRQUFBLENBQUFrRixrQkFBQSxHQUFBQSxrQkFBQTtFQUVNLFNBQVN5QixjQUFjQSxDQUM3QnhILGVBQWdDLEVBQ2hDZSxZQUEwQixFQUMxQkMsSUFBWSxFQUNaQyxZQUFvQixFQUNEO0lBQ25CLElBQUl3RyxZQUE2QixHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNQyxPQUFPLEdBQUcsRUFBRTtJQUNsQixLQUFLLE1BQU0sQ0FBQzdGLEdBQUcsRUFBRTJDLEtBQUssQ0FBQyxJQUFJbUQsTUFBTSxDQUFDQyxPQUFPLENBQUM1SCxlQUFlLENBQUMsRUFBRTtNQUMzRHlILFlBQVksR0FBRyxDQUFDLENBQUM7TUFDakJBLFlBQVksQ0FBQzVGLEdBQUcsQ0FBQyxHQUFHMkMsS0FBSztNQUN6QmtELE9BQU8sQ0FBQ3JDLElBQUksQ0FBQ3dDLFNBQVMsQ0FBQ0osWUFBWSxFQUFFMUcsWUFBWSxFQUFFQyxJQUFJLEVBQUVDLFlBQVksQ0FBQyxDQUFDO0lBQ3hFO0lBQ0EsT0FBT3lHLE9BQU87RUFDZjs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVRBN0csUUFBQSxDQUFBMkcsY0FBQSxHQUFBQSxjQUFBO0VBVU8sU0FBU00sb0JBQW9CQSxDQUNuQzlILGVBQWdDLEVBQ2hDZSxZQUEwQixFQUMxQkMsSUFBWSxFQUNaQyxZQUFvQixFQUNEO0lBQ25CLElBQUl3RyxZQUE2QixHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNQyxPQUFPLEdBQUcsRUFBRTtJQUNsQixLQUFLLE1BQU0sQ0FBQzdGLEdBQUcsRUFBRTJDLEtBQUssQ0FBQyxJQUFJbUQsTUFBTSxDQUFDQyxPQUFPLENBQUM1SCxlQUFlLENBQUMsRUFBRTtNQUMzRHlILFlBQVksR0FBRyxDQUFDLENBQUM7TUFDakJBLFlBQVksQ0FBQzVGLEdBQUcsQ0FBQyxHQUFHMkMsS0FBSztNQUN6QmtELE9BQU8sQ0FBQ3JDLElBQUksQ0FBQ3dDLFNBQVMsQ0FBQ0osWUFBWSxFQUFFMUcsWUFBWSxFQUFFQyxJQUFJLEVBQUVDLFlBQVksQ0FBQyxDQUFDO0lBQ3hFO0lBQ0EsT0FBT3lHLE9BQU87RUFDZjtFQUFDN0csUUFBQSxDQUFBaUgsb0JBQUEsR0FBQUEsb0JBQUE7RUFFTSxTQUFTRCxTQUFTQSxDQUN4QjdILGVBQWdDLEVBQ2hDZSxZQUEwQixFQUMxQkMsSUFBWSxFQUNaQyxZQUFvQixFQUNIO0lBQ2pCO0lBQ0E7SUFDQTtJQUNBLElBQUlBLFlBQVksS0FBSyxFQUFFLEVBQUU7TUFDeEJBLFlBQVksR0FBRzBHLE1BQU0sQ0FBQ0ksSUFBSSxDQUFDL0gsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUMsTUFBTTtNQUNOaUIsWUFBWSxHQUFHQSxZQUFZLEdBQUcsR0FBRyxHQUFHMEcsTUFBTSxDQUFDSSxJQUFJLENBQUMvSCxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEU7SUFDQSxNQUFNd0UsS0FBSyxHQUFHeEUsZUFBZSxDQUFDMkgsTUFBTSxDQUFDSSxJQUFJLENBQUMvSCxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5RCxPQUFPYyxrQkFBa0IsQ0FBQ0MsWUFBWSxFQUFFQyxJQUFJLEVBQUVDLFlBQVksRUFBRXVELEtBQUssQ0FBQztFQUNuRTs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEzRCxRQUFBLENBQUFnSCxTQUFBLEdBQUFBLFNBQUE7RUFRTyxTQUFTRyxlQUFlQSxDQUFDaEksZUFBOEIsRUFBRWlCLFlBQW9CLEVBQUVrQixPQUFnQixFQUFvQjtJQUN6SCxNQUFNcEIsWUFBWSxHQUFHa0gsV0FBVyxDQUFDQyxlQUFlLENBQUMvRixPQUFPLENBQUM7SUFDekQsTUFBTW5CLElBQUksR0FBR21ILE9BQU8sQ0FBQ2hHLE9BQU8sQ0FBQ2lHLFNBQVMsQ0FBQyxDQUFZLENBQUM7SUFDcEQsT0FBT1osY0FBYyxDQUFDeEgsZUFBZSxFQUFFZSxZQUFZLEVBQUVDLElBQUksRUFBRUMsWUFBWSxDQUFDO0VBQ3pFOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQUosUUFBQSxDQUFBbUgsZUFBQSxHQUFBQSxlQUFBO0VBUUEsU0FBU0sscUJBQXFCQSxDQUFDckksZUFBOEIsRUFBRWlCLFlBQW9CLEVBQUVrQixPQUFnQixFQUFvQjtJQUN4SCxNQUFNcEIsWUFBWSxHQUFHa0gsV0FBVyxDQUFDQyxlQUFlLENBQUMvRixPQUFPLENBQUM7SUFDekQsTUFBTW5CLElBQUksR0FBRyxRQUFRO0lBQ3JCLE9BQU84RyxvQkFBb0IsQ0FBQzlILGVBQWUsRUFBRWUsWUFBWSxFQUFFQyxJQUFJLEVBQUVDLFlBQVksQ0FBQztFQUMvRTtFQUVBLFNBQVNrSCxPQUFPQSxDQUFDaEcsT0FBZ0IsRUFBVTtJQUMxQyxNQUFNbUcsTUFBTSxHQUFHTCxXQUFXLENBQUNNLGFBQWEsQ0FBQ3BHLE9BQU8sQ0FBQyxDQUFDcUcsS0FBSyxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNyRSxPQUFPSCxNQUFNLENBQUNBLE1BQU0sQ0FBQzdILE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDakM7RUFFTyxNQUFNaUksY0FBYyxHQUFHLFNBQUFBLENBQzdCN0ksa0JBQXVDLEVBQ3ZDQyxhQUE0QixFQUM1QjZJLHFCQUFvQyxFQUNwQzFILFlBQW9CLEVBQ3BCa0IsT0FBZ0IsRUFDaEJ5RyxjQUFvQyxFQUNqQjtJQUNuQixNQUFNNUksZUFBZSxHQUFHSix3QkFBd0IsQ0FBQ0Msa0JBQWtCLEVBQUVDLGFBQWEsRUFBRTZJLHFCQUFxQixDQUFDO0lBQzFHO0lBQ0EsSUFBSWpCLE9BQU8sR0FBR00sZUFBZSxDQUFDaEksZUFBZSxFQUFFaUIsWUFBWSxFQUFFa0IsT0FBTyxDQUFDO0lBQ3JFLElBQUl5RyxjQUFjLEVBQUU7TUFDbkIsTUFBTUMsYUFBYSxHQUFHakosd0JBQXdCLENBQUNnSixjQUFjLEVBQUU5SSxhQUFhLEVBQUU2SSxxQkFBcUIsQ0FBQztNQUNwRyxNQUFNRyxNQUFNLEdBQUdULHFCQUFxQixDQUFDUSxhQUFhLEVBQUU1SCxZQUFZLEVBQUVrQixPQUFPLENBQUM7TUFDMUV1RixPQUFPLEdBQUdBLE9BQU8sQ0FBQ3FCLE1BQU0sQ0FBQ0QsTUFBTSxDQUFDO0lBQ2pDO0lBQ0EsSUFBSXBCLE9BQU8sQ0FBQ2pILE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDdkIsT0FBT2lILE9BQU87SUFDZixDQUFDLE1BQU07TUFDTixPQUFPLEVBQUU7SUFDVjtFQUNELENBQUM7RUFBQzdHLFFBQUEsQ0FBQTZILGNBQUEsR0FBQUEsY0FBQTtFQUVLLE1BQU1NLFNBQVMsR0FBRyxTQUFBQSxDQUFBLEVBQWdCO0lBQ3hDLE9BQU8sRUFBRTtFQUNWLENBQUM7RUFBQ25JLFFBQUEsQ0FBQW1JLFNBQUEsR0FBQUEsU0FBQTtFQUVLLFNBQVNDLG1CQUFtQkEsQ0FBQ2xJLFlBQTBCLEVBQVc7SUFDeEU7SUFDQSxJQUFJbUksU0FBbUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsTUFBTUMsWUFBWSxHQUFHcEksWUFBWSxDQUFDcUksZ0JBQWdCLENBQUMsQ0FBQztJQUNwREYsU0FBUyxHQUFHQyxZQUFZLEVBQUVFLGVBQWUsR0FBR0MsTUFBTSxDQUFDQyxRQUFRLENBQUNDLE1BQU0sQ0FBQztJQUNuRSxPQUFPLENBQUMsQ0FBQ04sU0FBUyxJQUFJQSxTQUFTLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxlQUFlO0VBQ2pGO0VBQUNySSxRQUFBLENBQUFvSSxtQkFBQSxHQUFBQSxtQkFBQTtFQUVNLFNBQVNRLFNBQVNBLENBQUMxSSxZQUEwQixFQUFXO0lBQzlEO0lBQ0EsSUFBSW1JLFNBQW1DLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLE1BQU1DLFlBQVksR0FBR3BJLFlBQVksQ0FBQ3FJLGdCQUFnQixDQUFDLENBQUM7SUFDcERGLFNBQVMsR0FBR0MsWUFBWSxFQUFFRSxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxNQUFNLENBQUM7SUFDbkUsT0FBTyxDQUFDLENBQUNOLFNBQVMsSUFBSUEsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssTUFBTTtFQUNuRTtFQUFDckksUUFBQSxDQUFBNEksU0FBQSxHQUFBQSxTQUFBO0VBRU0sU0FBU0Msb0JBQW9CQSxDQUFDM0ksWUFBMEIsRUFBRTRJLEtBQXFCLEVBQWtCO0lBQ3ZHLElBQUksQ0FBQ1YsbUJBQW1CLENBQUNsSSxZQUFZLENBQUMsRUFBRTtNQUN2QztNQUNBLE9BQU80SSxLQUFLLENBQUNDLE1BQU0sQ0FBRTFKLE9BQU8sSUFBSztRQUNoQyxPQUFPQSxPQUFPLENBQUMySixPQUFPO01BQ3ZCLENBQUMsQ0FBQztJQUNIO0lBQ0EsT0FBT0YsS0FBSztFQUNiO0VBQUM5SSxRQUFBLENBQUE2SSxvQkFBQSxHQUFBQSxvQkFBQTtFQUVNLFNBQVNJLHFCQUFxQkEsQ0FBQ3RILGFBQXNCLEVBQXdDO0lBQUEsSUFBdEM3QixJQUFJLEdBQUErQixTQUFBLENBQUFqQyxNQUFBLFFBQUFpQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLG9CQUFvQjtJQUN4RixJQUFJRixhQUFhLENBQUNRLFdBQVcsQ0FBQ3JDLElBQUksQ0FBQyxFQUFFO01BQ3BDLE9BQU8sSUFBSTtJQUNaO0lBQ0EsT0FBTyxLQUFLO0VBQ2I7RUFBQ0UsUUFBQSxDQUFBaUoscUJBQUEsR0FBQUEscUJBQUE7RUFFTSxTQUFTQyxrQkFBa0JBLENBQUNKLEtBQXFCLEVBQUVuSCxhQUFzQixFQUFxQztJQUFBLElBQW5DN0IsSUFBSSxHQUFBK0IsU0FBQSxDQUFBakMsTUFBQSxRQUFBaUMsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxvQkFBb0I7SUFDNUcsSUFBSSxDQUFDRixhQUFhLENBQUNRLFdBQVcsQ0FBQ3JDLElBQUksQ0FBQyxFQUFFO01BQ3JDNkIsYUFBYSxDQUFDd0gsV0FBVyxDQUFDckosSUFBSSxFQUFFZ0osS0FBSyxDQUFDO0lBQ3ZDO0VBQ0Q7RUFBQzlJLFFBQUEsQ0FBQWtKLGtCQUFBLEdBQUFBLGtCQUFBO0VBRU0sU0FBU0UseUJBQXlCQSxDQUFDekgsYUFBc0IsRUFBNkQ7SUFBQSxJQUEzRDdCLElBQUksR0FBQStCLFNBQUEsQ0FBQWpDLE1BQUEsUUFBQWlDLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsb0JBQW9CO0lBQzVGLE1BQU13SCxRQUFRLEdBQUcxSCxhQUFhLENBQUMySCxTQUFTLENBQUN4SixJQUFJLENBQUM7SUFDOUMsTUFBTXlKLHNCQUFzQixHQUFHRixRQUFRLENBQUNHLElBQUksQ0FBRW5LLE9BQXFCLElBQUs7TUFDdkUsT0FBT0EsT0FBTyxFQUFFaUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFaEMsRUFBRSxLQUFLLGlCQUFpQjtJQUNyRCxDQUFDLENBQUM7SUFDRixJQUFJaUssc0JBQXNCLEVBQUU7TUFDM0IsT0FBT0Esc0JBQXNCLENBQUNqSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNxQyxLQUFLO0lBQy9DO0lBQ0EsT0FBTzdCLFNBQVM7RUFDakI7RUFBQzlCLFFBQUEsQ0FBQW9KLHlCQUFBLEdBQUFBLHlCQUFBO0VBRU0sU0FBUzlDLGlCQUFpQkEsQ0FBQzNFLGFBQXNCLEVBQUVJLGFBQXdCLEVBQXFDO0lBQUEsSUFBbkNqQyxJQUFJLEdBQUErQixTQUFBLENBQUFqQyxNQUFBLFFBQUFpQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLG9CQUFvQjtJQUM5RyxNQUFNNEgsZUFBZSxHQUFHdkgsU0FBUyxDQUFDSCxhQUFhLENBQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMURNLGFBQWEsQ0FBQ3dILFdBQVcsQ0FBQ3JKLElBQUksRUFBRTJKLGVBQWUsQ0FBQztFQUNqRDtFQUFDekosUUFBQSxDQUFBc0csaUJBQUEsR0FBQUEsaUJBQUE7RUFFTSxTQUFTb0QsK0JBQStCQSxDQUFDQyxLQUEwQixFQUFFNUksYUFBNEIsRUFBdUI7SUFDOUg0SSxLQUFLLENBQUN2SyxPQUFPLENBQUMsVUFBVXdLLElBQUksRUFBRTtNQUM3QkEsSUFBSSxDQUFDQyxJQUFJLEdBQUc5SSxhQUFhLENBQUNFLE9BQU8sQ0FBQzJJLElBQUksQ0FBQ0MsSUFBSSxDQUFDO01BQzVDRCxJQUFJLENBQUNFLFdBQVcsR0FBRy9JLGFBQWEsQ0FBQ0UsT0FBTyxDQUFDMkksSUFBSSxDQUFDRSxXQUFXLENBQUM7TUFDMUQsSUFBSUYsSUFBSSxDQUFDRyxLQUFLLEVBQUU7UUFDZkgsSUFBSSxDQUFDRyxLQUFLLENBQUMzSyxPQUFPLENBQUMsVUFBVTRLLEtBQUssRUFBRTtVQUNuQ0EsS0FBSyxDQUFDSCxJQUFJLEdBQUc5SSxhQUFhLENBQUNFLE9BQU8sQ0FBQytJLEtBQUssQ0FBQ0gsSUFBSSxDQUFDO1FBQy9DLENBQUMsQ0FBQztNQUNIO0lBQ0QsQ0FBQyxDQUFDO0lBRUYsT0FBT0YsS0FBSztFQUNiO0VBQUMzSixRQUFBLENBQUEwSiwrQkFBQSxHQUFBQSwrQkFBQTtFQUFBLE9BQUExSixRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
453
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMiLCJkZXNpZ250aW1lU2V0dGluZ3MiLCJ1bmNoYW5nZWREYXRhIiwicHJvcGVydHlWYWx1ZXMiLCJwcm9wZXJ0eUNoYW5nZXMiLCJmb3JFYWNoIiwic2V0dGluZyIsImlkIiwiSlNPTiIsInN0cmluZ2lmeSIsIndyaXRlT2JqZWN0Iiwid3JpdGVPYmplY3RGb3IiLCJjaGFuZ2VPYmplY3QiLCJsZW5ndGgiLCJzZXR0aW5nc1RvZ2V0aGVyIiwicGF0aCIsInNraXBDaGFuZ2UiLCJfZXhwb3J0cyIsImdldENoYW5nZVN0cnVjdHVyZSIsImFwcENvbXBvbmVudCIsInBhZ2UiLCJwcm9wZXJ0eVBhdGgiLCJzZWxlY3RvciIsImNoYW5nZVNwZWNpZmljRGF0YSIsImFwcERlc2NyaXB0b3JDaGFuZ2VUeXBlIiwiY29udGVudCIsInBhcmFtZXRlcnMiLCJlbnRpdHlQcm9wZXJ0eUNoYW5nZSIsIm9wZXJhdGlvbiIsInByb3BlcnR5VmFsdWUiLCJzZXRMb2NhbFRleHQiLCJpdGVtIiwicmVzb3VyY2VNb2RlbCIsImtleSIsImdldFRleHQiLCJzZXRMb2NhbFRleHRzIiwibW9kZWwiLCJzZXR0aW5nc0RhdGEiLCJnZXREYXRhIiwiY29udHJvbCIsImNvbnRyb2xEYXRhIiwiZW51bSIsImVudW1EYXRhIiwiY3JlYXRlQWRhcHRpb25EaWFsb2dDb250ZW50IiwiY29uZmlnQ29udGV4dCIsImNvbmZpZ1BhdGgiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJzZXR0aW5nc01vZGVsIiwiSlNPTk1vZGVsIiwic2V0RGF0YSIsImRlZXBDbG9uZSIsImdldFByb3BlcnR5IiwibGlzdCIsIkxpc3QiLCJzZXRNb2RlbCIsImxpc3RJdGVtIiwiSW5wdXRMaXN0SXRlbSIsImxhYmVsIiwiYmluZENvbnRlbnQiLCJmYWN0b3J5IiwiY29udGV4dCIsInR5cGUiLCJJdGVtIiwidGV4dCIsInNlbGVjdCIsIlNlbGVjdCIsInNlbGVjdGVkS2V5IiwiY2hhbmdlIiwiZXZlbnQiLCJkYXRhIiwiZ2V0UGFyYW1ldGVyIiwiZ2V0S2V5IiwiYmluZEl0ZW1zIiwidGVtcGxhdGUiLCJJbnB1dCIsInZhbHVlIiwib011bHRpSW5wdXQiLCJNdWx0aUlucHV0Iiwid2lkdGgiLCJzaG93VmFsdWVIZWxwIiwic2hvd0NsZWFySWNvbiIsInRva2VucyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibWFwIiwibmF2aWdhdGlvblByb3BlcnR5IiwiVG9rZW4iLCJ0b2tlblVwZGF0ZSIsImFycmF5IiwicHVzaCIsInNwbGljZSIsImluZGV4T2YiLCJhZGRWYWxpZGF0b3IiLCJhcmdzIiwiQ2hlY2tCb3giLCJzZWxlY3RlZCIsInRvTG93ZXJDYXNlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wZW5BZGFwdGlvbkRpYWxvZyIsInRpdGxlIiwiaW5mb1RleHQiLCJzaXplIiwiaW5mb3JtYXRpb25NZXNzYWdlIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJhZGRTdHlsZUNsYXNzIiwibGlzdEluZGV4IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJkaWFsb2ciLCJEaWFsb2ciLCJjb250ZW50V2lkdGgiLCJjb250ZW50SGVpZ2h0IiwiaGVpZ2h0IiwiYnV0dG9ucyIsIkJ1dHRvbiIsInByZXNzIiwidXBkYXRlQ29uZmlnTW9kZWwiLCJnZXRDb250ZW50IiwiZ2V0TW9kZWwiLCJjbG9zZSIsIm9wZW4iLCJwcm9jZXNzQ2hhbmdlcyIsInNpbmdsZUNoYW5nZSIsImNoYW5nZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwiZ2V0Q2hhbmdlIiwicHJvY2Vzc0dsb2JhbENoYW5nZXMiLCJrZXlzIiwic2VwYXJhdGVDaGFuZ2VzIiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRQYWdlIiwiZ2V0UGFyZW50Iiwic2VwYXJhdGVHbG9iYWxDaGFuZ2VzIiwidmlld0lkIiwiZ2V0VGFyZ2V0VmlldyIsImdldElkIiwic3BsaXQiLCJleHRyYWN0Q2hhbmdlcyIsInByb3BlcnR5VmFsdWVzRW50ZXJlZCIsImdsb2JhbFNldHRpbmdzIiwiZ2xvYmFsQ2hhbmdlcyIsImdsb2JhbCIsImNvbmNhdCIsIm5vQ2hhbmdlcyIsImlzRmlvcmlUb29sc1J0YU1vZGUiLCJ1cmxQYXJhbXMiLCJzaGVsbFNlcnZpY2UiLCJnZXRTaGVsbFNlcnZpY2VzIiwicGFyc2VQYXJhbWV0ZXJzIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpc1JUQU1vZGUiLCJnZXRTZXR0aW5nc0lmS2V5VXNlciIsIml0ZW1zIiwiZmlsdGVyIiwia2V5VXNlciIsImlzQ29uZmlnTW9kZWxQcmVwYXJlZCIsInByZXBhcmVDb25maWdNb2RlbCIsInNldFByb3BlcnR5IiwiZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyIsInNldHRpbmdzIiwiZ2V0T2JqZWN0IiwicGVyc29uYWxpemF0aW9uU2V0dGluZyIsImZpbmQiLCJ1cGRhdGVkU2V0dGluZ3MiLCJnZXRQcm9wZXJ0eU5hbWVzQW5kRGVzY3JpcHRpb25zIiwicHJvcHMiLCJwcm9wIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiZW51bXMiLCJlbnVtbSIsImlzTWFuaWZlc3RDaGFuZ2VzRW5hYmxlZCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJzYXBGZU1hbmlmZXN0IiwiZ2V0TWFuaWZlc3RFbnRyeSIsImFwcCIsImRpc2FibGVNYW5pZmVzdENoYW5nZXMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRlc2lnbnRpbWUuaGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogUmV1c2UgZnVuY3Rpb25zIGZvciBkZXNpZ250aW1lIGFkYXB0aW9uXG4gKi9cblxuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9SZXNvdXJjZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQ2hlY2tCb3ggZnJvbSBcInNhcC9tL0NoZWNrQm94XCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dExpc3RJdGVtIGZyb20gXCJzYXAvbS9JbnB1dExpc3RJdGVtXCI7XG5pbXBvcnQgTGlzdCBmcm9tIFwic2FwL20vTGlzdFwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgdHlwZSB7IE11bHRpSW5wdXQkVG9rZW5VcGRhdGVFdmVudCB9IGZyb20gXCJzYXAvbS9NdWx0aUlucHV0XCI7XG5pbXBvcnQgTXVsdGlJbnB1dCBmcm9tIFwic2FwL20vTXVsdGlJbnB1dFwiO1xuaW1wb3J0IFNlbGVjdCBmcm9tIFwic2FwL20vU2VsZWN0XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9tL1Rva2VuXCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBJdGVtIGZyb20gXCJzYXAvdWkvY29yZS9JdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIGFkYXB0aW9uQ2hhbmdlID0ge1xuXHRhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblx0c2VsZWN0b3I6IEFwcENvbXBvbmVudDtcblx0Y2hhbmdlU3BlY2lmaWNEYXRhOiB7XG5cdFx0YXBwRGVzY3JpcHRvckNoYW5nZVR5cGU6IFwiYXBwZGVzY3JfZmVfY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb25cIjtcblx0XHRjb250ZW50OiB7XG5cdFx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRcdHBhZ2U6IHN0cmluZztcblx0XHRcdFx0ZW50aXR5UHJvcGVydHlDaGFuZ2U6IHtcblx0XHRcdFx0XHRwcm9wZXJ0eVBhdGg6IHN0cmluZztcblx0XHRcdFx0XHRvcGVyYXRpb246IHN0cmluZztcblx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdH07XG5cdFx0XHR9O1xuXHRcdH07XG5cdH07XG59O1xuXG5leHBvcnQgdHlwZSBEZXNpZ250aW1lU2V0dGluZ0VudW1zID0ge1xuXHRpZDogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVzaWdudGltZVNldHRpbmcgPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHBhdGg/OiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0ZGVzY3JpcHRpb246IHN0cmluZztcblx0cmVzdHJpY3RlZFRvPzogVGVtcGxhdGVUeXBlW107XG5cdHZhbHVlOiB1bmtub3duO1xuXHR0eXBlPzogc3RyaW5nO1xuXHRlbnVtcz86IERlc2lnbnRpbWVTZXR0aW5nRW51bXNbXTtcblx0c2tpcENoYW5nZT86IGJvb2xlYW47XG5cdHdyaXRlT2JqZWN0Rm9yPzogc3RyaW5nO1xuXHR3cml0ZU9iamVjdD86IHsgaWQ6IHN0cmluZzsgcGF0aD86IHN0cmluZyB9W107XG5cdGtleVVzZXI/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvcGVydHlWYWx1ZSA9IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbiB8IG51bWJlciB8IG9iamVjdCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCB0eXBlIFNldHRpbmdzRGF0YSA9IHtcblx0bGFiZWw6IHN0cmluZztcblx0dG9vbHRpcDogc3RyaW5nO1xuXHRjb250cm9sOiBDb250cm9sRGF0YVtdO1xuXHRrZXlVc2VyPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgQ29udHJvbERhdGEgPSB7XG5cdHR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0ZW51bTogRGVzaWdudGltZVNldHRpbmdFbnVtc1tdIHwgdW5kZWZpbmVkO1xuXHR2YWx1ZTogdW5rbm93bjtcblx0aWQ6IHN0cmluZztcbn07XG5cbnR5cGUgcHJvcEtleUFuZFZhbHVlID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCB1bmRlZmluZWQgfTtcblxuLyoqXG4gKiBJZGVudGlmeSB3aGljaCBzZXR0aW5ncyBoYXZlIGNoYW5nZWQuXG4gKiBAcGFyYW0gZGVzaWdudGltZVNldHRpbmdzXG4gKiBAcGFyYW0gdW5jaGFuZ2VkRGF0YVxuICogQHBhcmFtIHByb3BlcnR5VmFsdWVzXG4gKiAgQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB3aGVyZSB0aGUgdmFsdWVzIGhhdmUgYmVlbiBjaGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBzdGFydGluZyB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYW5nZWRQcm9wZXJ0eVZhbHVlcyhcblx0ZGVzaWdudGltZVNldHRpbmdzOiBEZXNpZ250aW1lU2V0dGluZ1tdLFxuXHR1bmNoYW5nZWREYXRhOiBQcm9wZXJ0eVZhbHVlLFxuXHRwcm9wZXJ0eVZhbHVlczogUHJvcGVydHlWYWx1ZVxuKTogUHJvcGVydHlWYWx1ZSB7XG5cdGNvbnN0IHByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlWYWx1ZSA9IHt9O1xuXG5cdGRlc2lnbnRpbWVTZXR0aW5ncy5mb3JFYWNoKGZ1bmN0aW9uIChzZXR0aW5nKSB7XG5cdFx0aWYgKFxuXHRcdFx0KHR5cGVvZiB1bmNoYW5nZWREYXRhW3NldHRpbmcuaWRdICE9PSBcIm9iamVjdFwiICYmIHVuY2hhbmdlZERhdGFbc2V0dGluZy5pZF0gIT09IHByb3BlcnR5VmFsdWVzW3NldHRpbmcuaWRdKSB8fFxuXHRcdFx0KHR5cGVvZiB1bmNoYW5nZWREYXRhW3NldHRpbmcuaWRdID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRcdEpTT04uc3RyaW5naWZ5KHVuY2hhbmdlZERhdGFbc2V0dGluZy5pZF0pICE9PSBKU09OLnN0cmluZ2lmeShwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXSkpXG5cdFx0KSB7XG5cdFx0XHRpZiAoc2V0dGluZy53cml0ZU9iamVjdCAmJiBwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXSA9PT0gc2V0dGluZy53cml0ZU9iamVjdEZvcikge1xuXHRcdFx0XHQvLyBXZSB3cml0ZSBhbiBvYmplY3QgZm9yIHRoaXMgc2V0dGluZ1xuXHRcdFx0XHRjb25zdCBjaGFuZ2VPYmplY3Q6IFByb3BlcnR5VmFsdWUgPSB7fTtcblx0XHRcdFx0aWYgKHNldHRpbmcud3JpdGVPYmplY3QgJiYgc2V0dGluZy53cml0ZU9iamVjdD8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdHNldHRpbmcud3JpdGVPYmplY3QuZm9yRWFjaChmdW5jdGlvbiAoc2V0dGluZ3NUb2dldGhlcikge1xuXHRcdFx0XHRcdFx0Y2hhbmdlT2JqZWN0W3NldHRpbmdzVG9nZXRoZXIucGF0aCA/IHNldHRpbmdzVG9nZXRoZXIucGF0aCA6IHNldHRpbmdzVG9nZXRoZXIuaWRdID1cblx0XHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXNbc2V0dGluZ3NUb2dldGhlci5pZF07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cHJvcGVydHlDaGFuZ2VzW3NldHRpbmcucGF0aCA/IHNldHRpbmcucGF0aCA6IHNldHRpbmcuaWRdID0gY2hhbmdlT2JqZWN0O1xuXHRcdFx0fSBlbHNlIGlmICghc2V0dGluZy5za2lwQ2hhbmdlKSB7XG5cdFx0XHRcdHByb3BlcnR5Q2hhbmdlc1tzZXR0aW5nLnBhdGggPyBzZXR0aW5nLnBhdGggOiBzZXR0aW5nLmlkXSA9IHByb3BlcnR5VmFsdWVzW3NldHRpbmcuaWRdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cdHJldHVybiBwcm9wZXJ0eUNoYW5nZXM7XG59XG4vKipcbiAqIENvbnZlcnQgc2FwLmZlIGNoYW5nZSBpbnRvIGEgc3RydWN0dXJlIHJlcXVpcmVkIGJ5IHRoZSBmbGV4aWJpbGl0eSB0b29scy5cbiAqIEBwYXJhbSBhcHBDb21wb25lbnRcbiAqIEBwYXJhbSBwYWdlXG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoXG4gKiBAcGFyYW0gcHJvcGVydHlDaGFuZ2VzXG4gKiBAcmV0dXJucyBUaGUgY2hhbmdlIHN0cnVjdHVyZSB1c2VkIGJ5IGZsZXhpYmlsaXR5IHRvb2xzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2VTdHJ1Y3R1cmUoXG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRwYWdlOiBzdHJpbmcsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRwcm9wZXJ0eUNoYW5nZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbiB8IG51bWJlciB8IG9iamVjdCB8IHVuZGVmaW5lZFxuKTogYWRhcHRpb25DaGFuZ2Uge1xuXHRyZXR1cm4ge1xuXHRcdGFwcENvbXBvbmVudDogYXBwQ29tcG9uZW50LFxuXHRcdHNlbGVjdG9yOiBhcHBDb21wb25lbnQsXG5cdFx0Y2hhbmdlU3BlY2lmaWNEYXRhOiB7XG5cdFx0XHRhcHBEZXNjcmlwdG9yQ2hhbmdlVHlwZTogXCJhcHBkZXNjcl9mZV9jaGFuZ2VQYWdlQ29uZmlndXJhdGlvblwiLFxuXHRcdFx0Y29udGVudDoge1xuXHRcdFx0XHRwYXJhbWV0ZXJzOiB7XG5cdFx0XHRcdFx0cGFnZTogcGFnZSxcblx0XHRcdFx0XHRlbnRpdHlQcm9wZXJ0eUNoYW5nZToge1xuXHRcdFx0XHRcdFx0cHJvcGVydHlQYXRoOiBwcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0XHRvcGVyYXRpb246IFwiVVBTRVJUXCIsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlOiBwcm9wZXJ0eUNoYW5nZXNcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIHNldExvY2FsVGV4dChpdGVtOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCk6IHZvaWQge1xuXHRmb3IgKGNvbnN0IGtleSBpbiBpdGVtKSB7XG5cdFx0aWYgKGtleSAhPT0gXCJpZFwiICYmIHR5cGVvZiBpdGVtW2tleV0gPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGl0ZW1ba2V5XSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChpdGVtW2tleV0gYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gc2V0TG9jYWxUZXh0cyhtb2RlbDogSlNPTk1vZGVsLCByZXNvdXJjZU1vZGVsOiBSZXNvdXJjZU1vZGVsKTogdm9pZCB7XG5cdGNvbnN0IHNldHRpbmdzRGF0YSA9IG1vZGVsLmdldERhdGEoKSBhcyBTZXR0aW5nc0RhdGFbXTtcblx0c2V0dGluZ3NEYXRhLmZvckVhY2goKHNldHRpbmcpID0+IHtcblx0XHRzZXRMb2NhbFRleHQoc2V0dGluZywgcmVzb3VyY2VNb2RlbCk7XG5cdFx0c2V0dGluZy5jb250cm9sLmZvckVhY2goKGNvbnRyb2xEYXRhKSA9PiB7XG5cdFx0XHRzZXRMb2NhbFRleHQoY29udHJvbERhdGEsIHJlc291cmNlTW9kZWwpO1xuXHRcdFx0Y29udHJvbERhdGEuZW51bT8uZm9yRWFjaCgoZW51bURhdGEpID0+IHtcblx0XHRcdFx0c2V0TG9jYWxUZXh0KGVudW1EYXRhLCByZXNvdXJjZU1vZGVsKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkYXB0aW9uRGlhbG9nQ29udGVudChcblx0Y29uZmlnQ29udGV4dDogQ29udGV4dCxcblx0cHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWUsXG5cdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsXG5cdGNvbmZpZ1BhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiXG4pOiBMaXN0IHtcblx0Y29uc3Qgc2V0dGluZ3NNb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0c2V0dGluZ3NNb2RlbC5zZXREYXRhKGRlZXBDbG9uZShjb25maWdDb250ZXh0LmdldFByb3BlcnR5KGNvbmZpZ1BhdGgpKSk7XG5cdHNldExvY2FsVGV4dHMoc2V0dGluZ3NNb2RlbCwgcmVzb3VyY2VNb2RlbCk7XG5cdGNvbnN0IGxpc3QgPSBuZXcgTGlzdCgpO1xuXHRsaXN0LnNldE1vZGVsKHNldHRpbmdzTW9kZWwpO1xuXG5cdGNvbnN0IGxpc3RJdGVtID0gbmV3IElucHV0TGlzdEl0ZW0oe1xuXHRcdGxhYmVsOiBcIntsYWJlbH1cIlxuXHR9KTtcblxuXHRsaXN0SXRlbS5iaW5kQ29udGVudCh7XG5cdFx0cGF0aDogXCJjb250cm9sXCIsXG5cdFx0ZmFjdG9yeTogZnVuY3Rpb24gKHBhdGg6IHN0cmluZywgY29udGV4dDogeyBnZXRQcm9wZXJ0eShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfSAvKiBzYXAudWkubW9kZWwuQ29udGV4dCAqLykge1xuXHRcdFx0Y29uc3QgdHlwZSA9IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJ0eXBlXCIpO1xuXHRcdFx0Y29uc3QgaWQgPSBjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIik7XG5cblx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRjYXNlIFwic3RyaW5nXCI6XG5cdFx0XHRcdFx0aWYgKGNvbnRleHQuZ2V0UHJvcGVydHkoXCJlbnVtXCIpKSB7XG5cdFx0XHRcdFx0XHQvLyBDcmVhdGUgYSBzZWxlY3QgbGlzdCBmb3IgbXVsdGlwbGUgb3B0aW9ucyB0byBzZWxlY3Rcblx0XHRcdFx0XHRcdGNvbnN0IGl0ZW0gPSBuZXcgSXRlbSh7XG5cdFx0XHRcdFx0XHRcdHRleHQ6IFwie25hbWV9XCIsXG5cdFx0XHRcdFx0XHRcdGtleTogXCJ7aWR9XCJcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBzZWxlY3QgPSBuZXcgU2VsZWN0KHtcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIFNlbGVjdCkuZGF0YShcImlkXCIpIGFzIGtleW9mIFByb3BlcnR5VmFsdWVdID0gKFxuXHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnQuZ2V0UGFyYW1ldGVyKFwic2VsZWN0ZWRJdGVtXCIpIGFzIEl0ZW1cblx0XHRcdFx0XHRcdFx0XHQpLmdldEtleSgpIGFzIHN0cmluZyAmIGJvb2xlYW47XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pLmRhdGEoXCJpZFwiLCBpZCk7XG5cblx0XHRcdFx0XHRcdHNlbGVjdC5iaW5kSXRlbXMoe1xuXHRcdFx0XHRcdFx0XHRwYXRoOiBcImVudW1cIixcblx0XHRcdFx0XHRcdFx0dGVtcGxhdGU6IGl0ZW1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNlbGVjdDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuIElucHV0IGZvciB0ZXh0IGNoYW5nZXNcblx0XHRcdFx0XHRcdHJldHVybiBuZXcgSW5wdXQoe1xuXHRcdFx0XHRcdFx0XHR2YWx1ZTogXCJ7dmFsdWV9XCIsXG5cdFx0XHRcdFx0XHRcdGNoYW5nZTogZnVuY3Rpb24gKGV2ZW50KTogdm9pZCB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXNbKHRoaXMgYXMgSW5wdXQpLmRhdGEoXCJpZFwiKSBhcyBrZXlvZiBQcm9wZXJ0eVZhbHVlXSA9IGV2ZW50LmdldFBhcmFtZXRlcihcInZhbHVlXCIpIGFzIHN0cmluZyAmXG5cdFx0XHRcdFx0XHRcdFx0XHRib29sZWFuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBcInN0cmluZ1tdXCI6XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuIG11bHRpIGlucHV0IGZpZWxkIGZvciB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzXG5cdFx0XHRcdFx0Y29uc3Qgb011bHRpSW5wdXQgPSBuZXcgTXVsdGlJbnB1dCh7XG5cdFx0XHRcdFx0XHR3aWR0aDogXCI3MCVcIixcblx0XHRcdFx0XHRcdHNob3dWYWx1ZUhlbHA6IGZhbHNlLFxuXHRcdFx0XHRcdFx0c2hvd0NsZWFySWNvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdHRva2VuczogKHByb3BlcnR5VmFsdWVzPy5uYXZpZ2F0aW9uUHJvcGVydGllcyBhcyBzdHJpbmdbXSkubWFwKChuYXZpZ2F0aW9uUHJvcGVydHkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBUb2tlbih7IHRleHQ6IG5hdmlnYXRpb25Qcm9wZXJ0eSwga2V5OiBuYXZpZ2F0aW9uUHJvcGVydHkgfSk7XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHRva2VuVXBkYXRlOiBmdW5jdGlvbiAoZXZlbnQ6IE11bHRpSW5wdXQkVG9rZW5VcGRhdGVFdmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBhcnJheSA9IHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIE11bHRpSW5wdXQpLmRhdGEoXCJpZFwiKV0gYXMgc3RyaW5nW107XG5cdFx0XHRcdFx0XHRcdGlmICgoZXZlbnQuZ2V0UGFyYW1ldGVyKFwiYWRkZWRUb2tlbnNcIikgYXMgVG9rZW5bXSk/Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0XHRhcnJheS5wdXNoKChldmVudD8uZ2V0UGFyYW1ldGVyKFwiYWRkZWRUb2tlbnNcIikgYXMgVG9rZW5bXSlbMF0/LmdldFByb3BlcnR5KFwia2V5XCIpKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICgoZXZlbnQuZ2V0UGFyYW1ldGVyKFwicmVtb3ZlZFRva2Vuc1wiKSBhcyBUb2tlbltdKT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHRcdGFycmF5LnNwbGljZShhcnJheS5pbmRleE9mKChldmVudD8uZ2V0UGFyYW1ldGVyKFwicmVtb3ZlZFRva2Vuc1wiKSBhcyBUb2tlbltdKVswXT8uZ2V0UHJvcGVydHkoXCJrZXlcIikpLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmRhdGEoXCJpZFwiLCBpZCk7XG5cdFx0XHRcdFx0b011bHRpSW5wdXQuYWRkVmFsaWRhdG9yKGZ1bmN0aW9uIChhcmdzOiB7IHRleHQ6IHN0cmluZyB9KSB7XG5cdFx0XHRcdFx0XHRjb25zdCB0ZXh0ID0gYXJncy50ZXh0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBUb2tlbih7XG5cdFx0XHRcdFx0XHRcdGtleTogdGV4dCxcblx0XHRcdFx0XHRcdFx0dGV4dDogdGV4dFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIG9NdWx0aUlucHV0O1xuXHRcdFx0XHRjYXNlIFwibnVtYmVyXCI6XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuIElucHV0IGZvciBudW1iZXIgY2hhbmdlc1xuXHRcdFx0XHRcdHJldHVybiBuZXcgSW5wdXQoe1xuXHRcdFx0XHRcdFx0dmFsdWU6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJOdW1iZXJcIixcblx0XHRcdFx0XHRcdGNoYW5nZTogZnVuY3Rpb24gKGV2ZW50KTogdm9pZCB7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIElucHV0KS5kYXRhKFwiaWRcIikgYXMga2V5b2YgUHJvcGVydHlWYWx1ZV0gPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSBhcyBzdHJpbmcgJlxuXHRcdFx0XHRcdFx0XHRcdGJvb2xlYW47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkuZGF0YShcImlkXCIsIGlkKTtcblx0XHRcdFx0Y2FzZSBcImJvb2xlYW5cIjpcblx0XHRcdFx0XHQvLyBDcmVhdGUgYSBjaGVja2JveCBmb3IgdHJ1ZS9mYWxzZSB2YWx1ZXNcblx0XHRcdFx0XHRyZXR1cm4gbmV3IENoZWNrQm94KHtcblx0XHRcdFx0XHRcdHNlbGVjdGVkOiBcInt2YWx1ZX1cIixcblx0XHRcdFx0XHRcdHNlbGVjdDogZnVuY3Rpb24gKGV2ZW50KTogdm9pZCB7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5VmFsdWVzWyh0aGlzIGFzIENoZWNrQm94KS5kYXRhKFwiaWRcIikgYXMga2V5b2YgUHJvcGVydHlWYWx1ZV0gPSBldmVudC5nZXRQYXJhbWV0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0XCJzZWxlY3RlZFwiXG5cdFx0XHRcdFx0XHRcdCkgYXMgc3RyaW5nICYgYm9vbGVhbjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXHRcdFx0XHRjYXNlIFwiYm9vbGVhbk9yU3RyaW5nXCI6XG5cdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgc2VsZWN0IGxpc3QgZm9yIGJvb2xlYW4gYW5kIHN0cmluZyBvcHRpb25zIHRvIHNlbGVjdFxuXHRcdFx0XHRcdC8vIFRoaXMgdHlwZSBpcyBhdCB0aGUgbW9tZW50IG9ubHkgdXNlZCBmb3IgcGVyc29uYWxpemF0aW9uIHNldHRpbmdzIHdoaWNoIGNhbiBiZSB1bmRlZmluZWQsIHRydWUsIGZhbHNlIG9yIGFuIG9iamVjdFxuXHRcdFx0XHRcdC8vIFRoZSBzZWxlY3QgbGlzdCBpcyB1c2VkIHRvIHNlbGVjdCBiZXR3ZWVuIHRydWUsIGZhbHNlIGFuZCBcIk93biBTZXR0aW5nc1wiXG5cdFx0XHRcdFx0Ly8gSWYgXCJPd24gU2V0dGluZ3NcIiBpcyBzZWxlY3RlZCwgdGhlIHBlcnNvbmFsaXphdGlvbiBvYmplY3QgaXMgd3JpdHRlbiwgb3RoZXJ3aXNlIHRoZSBib29sZWFuIGlzIHdyaXR0ZW4gKHVuZGVmaW5lZCBjYW5ub3QgYmUgd3JpdHRlbiBpbiBhIG1hbmlmZXN0IGNoYW5nZSlcblx0XHRcdFx0XHRjb25zdCBpdGVtID0gbmV3IEl0ZW0oe1xuXHRcdFx0XHRcdFx0dGV4dDogXCJ7bmFtZX1cIixcblx0XHRcdFx0XHRcdGtleTogXCJ7aWR9XCJcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGNvbnN0IHNlbGVjdCA9IG5ldyBTZWxlY3Qoe1xuXHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk6IFwie3ZhbHVlfVwiLFxuXHRcdFx0XHRcdFx0Y2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpOiB2b2lkIHtcblx0XHRcdFx0XHRcdFx0bGV0IHZhbHVlID0gKGV2ZW50LmdldFBhcmFtZXRlcihcInNlbGVjdGVkSXRlbVwiKSBhcyBJdGVtKS5nZXRLZXkoKTtcblx0XHRcdFx0XHRcdFx0Ly8gQ29udmVydCBzdHJpbmcgdG8gYm9vbGVhbiBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRcdFx0aWYgKHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwiZmFsc2VcIiB8fCB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlID0gSlNPTi5wYXJzZSh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBTZWxlY3QpLmRhdGEoXCJpZFwiKSBhcyBrZXlvZiBQcm9wZXJ0eVZhbHVlXSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmRhdGEoXCJpZFwiLCBpZCk7XG5cblx0XHRcdFx0XHRzZWxlY3QuYmluZEl0ZW1zKHtcblx0XHRcdFx0XHRcdHBhdGg6IFwiZW51bVwiLFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IGl0ZW1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm4gc2VsZWN0O1xuXHRcdFx0XHRjYXNlIFwianNvblwiOlxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhbiBpbnB1dCBmb3IganNvbiBvYmplY3QgZGVzY3JpcHRpb25zXG5cdFx0XHRcdFx0Ly8gQSB0ZXh0IGFyZWEgd291bGQgaGF2ZSBiZWVuIGJldHRlciBidXQgdGhpcyBkb2VzIG5vdCB3b3JrIHdpdGggdGhlIElucHV0TGlzdEl0ZW1cblx0XHRcdFx0XHQvLyB3ZSB3b3VsZCBoYXZlIG5lZWRlZCBhIEN1c3RvbUxpc3RJdGVtIGluc3RlYWRcblx0XHRcdFx0XHQvLyB3aGljaCB3b3VsZCBoYXZlIGJlZW4gdG9vIG11Y2ggZWZmb3J0IGFzIHdlIHdvdWxkIGhhdmUgbmVlZGVkIHRvIGNoYW5nZSB0aGUgd2hvbGUgc3RydWN0dXJlXG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBJbnB1dCh7XG5cdFx0XHRcdFx0XHR2YWx1ZTogXCJ7dmFsdWV9XCIsXG5cdFx0XHRcdFx0XHRjaGFuZ2U6IGZ1bmN0aW9uIChldmVudCk6IHZvaWQge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVZhbHVlc1sodGhpcyBhcyBJbnB1dCkuZGF0YShcImlkXCIpIGFzIGtleW9mIFByb3BlcnR5VmFsdWVdID0gSlNPTi5wYXJzZShcblx0XHRcdFx0XHRcdFx0XHRldmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKT8udG9TdHJpbmcoKSBhcyBzdHJpbmdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5kYXRhKFwiaWRcIiwgaWQpO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0bGlzdC5iaW5kSXRlbXMoe1xuXHRcdHBhdGg6IFwiL1wiLFxuXHRcdHRlbXBsYXRlOiBsaXN0SXRlbVxuXHR9KTtcblxuXHRyZXR1cm4gbGlzdDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5BZGFwdGlvbkRpYWxvZyhcblx0Y29uZmlnQ29udGV4dDogQ29udGV4dCxcblx0cHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWUsXG5cdHRpdGxlOiBzdHJpbmcsXG5cdHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWwsXG5cdGNvbmZpZ1BhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiLFxuXHRpbmZvVGV4dCA9IFwie3NhcC5mZS5pMThuPlJUQV9DT05GSUdVUkFUSU9OX0lORk9fTUVTU0FHRX1cIixcblx0c2l6ZT86IHsgd2lkdGg6IHN0cmluZzsgaGVpZ2h0OiBzdHJpbmcgfVxuKTogUHJvbWlzZTxQcm9wZXJ0eVZhbHVlPiB7XG5cdGNvbnN0IGxpc3QgPSBjcmVhdGVBZGFwdGlvbkRpYWxvZ0NvbnRlbnQoY29uZmlnQ29udGV4dCwgcHJvcGVydHlWYWx1ZXMsIHJlc291cmNlTW9kZWwsIGNvbmZpZ1BhdGgpO1xuXHRjb25zdCBjb250ZW50OiAoTGlzdCB8IE1lc3NhZ2VTdHJpcClbXSA9IFtdO1xuXHRjb25zdCBpbmZvcm1hdGlvbk1lc3NhZ2UgPSBuZXcgTWVzc2FnZVN0cmlwKHtcblx0XHRzaG93SWNvbjogdHJ1ZSxcblx0XHR0eXBlOiBcIkluZm9ybWF0aW9uXCIsXG5cdFx0dGV4dDogaW5mb1RleHRcblx0fSk7XG5cdGluZm9ybWF0aW9uTWVzc2FnZS5hZGRTdHlsZUNsYXNzKFwic2FwVWlTbWFsbE1hcmdpbkJvdHRvbVwiKTtcblx0Y29udGVudC5wdXNoKGluZm9ybWF0aW9uTWVzc2FnZSk7XG5cdGNvbnRlbnQucHVzaChsaXN0KTtcblx0Y29uc3QgbGlzdEluZGV4ID0gY29udGVudC5pbmRleE9mKGxpc3QpO1xuXHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXHRcdGNvbnN0IGRpYWxvZyA9IG5ldyBEaWFsb2coe1xuXHRcdFx0dGl0bGU6IHRpdGxlLFxuXHRcdFx0Y29udGVudFdpZHRoOiBzaXplID8gc2l6ZS53aWR0aCA6IFwiNTUwcHhcIixcblx0XHRcdGNvbnRlbnRIZWlnaHQ6IHNpemUgPyBzaXplLmhlaWdodCA6IFwiMzAwcHhcIixcblx0XHRcdGNvbnRlbnQ6IGNvbnRlbnQsXG5cdFx0XHRidXR0b25zOiBbXG5cdFx0XHRcdG5ldyBCdXR0b24oe1xuXHRcdFx0XHRcdHRleHQ6IFwie3NhcC5mZS5pMThuPlJUQV9DT05GSUdVUkFUSU9OX0FQUExZfVwiLFxuXHRcdFx0XHRcdHR5cGU6IFwiRW1waGFzaXplZFwiLFxuXHRcdFx0XHRcdHByZXNzOiBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRcdFx0XHQvLyBwZXJzaXN0IGNoYW5nZXMgZG9uZVxuXHRcdFx0XHRcdFx0dXBkYXRlQ29uZmlnTW9kZWwoY29uZmlnQ29udGV4dCwgZGlhbG9nLmdldENvbnRlbnQoKVtsaXN0SW5kZXhdLmdldE1vZGVsKCkgYXMgSlNPTk1vZGVsLCBjb25maWdQYXRoKTtcblx0XHRcdFx0XHRcdGRpYWxvZy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShwcm9wZXJ0eVZhbHVlcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0bmV3IEJ1dHRvbih7XG5cdFx0XHRcdFx0dGV4dDogXCJ7c2FwLmZlLmkxOG4+UlRBX0NPTkZJR1VSQVRJT05fQ0FOQ0VMfVwiLFxuXHRcdFx0XHRcdHByZXNzOiBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRcdFx0XHRkaWFsb2cuY2xvc2UoKTtcblx0XHRcdFx0XHRcdHJlamVjdCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdF1cblx0XHR9KTtcblx0XHRkaWFsb2cuc2V0TW9kZWwocmVzb3VyY2VNb2RlbCwgXCJzYXAuZmUuaTE4blwiKTtcblx0XHRkaWFsb2cuYWRkU3R5bGVDbGFzcyhcInNhcFVpQ29udGVudFBhZGRpbmdcIik7XG5cdFx0ZGlhbG9nLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaVJUQUJvcmRlclwiKTtcblx0XHRkaWFsb2cub3BlbigpO1xuXHRcdHJldHVybjtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQ2hhbmdlcyhcblx0cHJvcGVydHlDaGFuZ2VzOiBwcm9wS2V5QW5kVmFsdWUsXG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRwYWdlOiBzdHJpbmcsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nXG4pOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0bGV0IHNpbmdsZUNoYW5nZTogcHJvcEtleUFuZFZhbHVlID0ge307XG5cdGNvbnN0IGNoYW5nZXMgPSBbXTtcblx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydHlDaGFuZ2VzKSkge1xuXHRcdHNpbmdsZUNoYW5nZSA9IHt9O1xuXHRcdHNpbmdsZUNoYW5nZVtrZXldID0gdmFsdWU7XG5cdFx0Y2hhbmdlcy5wdXNoKGdldENoYW5nZShzaW5nbGVDaGFuZ2UsIGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoKSk7XG5cdH1cblx0cmV0dXJuIGNoYW5nZXM7XG59XG5cbi8qKlxuICogRm9ybWF0IGVhY2ggY2hhbmdlIG1hZGUgdG8gZ2xvYmFsIHNldHRpbmdzIFwic2FwLmZlXCJcbiAqIFRoZSBzZXQgb2YgY2hhbmdlcyBhcmUgcHV0IGludG8gaW5kaXZpZHVhbCBjaGFuZ2VzIHRvIGVuc3VyZVxuICogdGhhdCBlYXJsaWVyIGNoYW5nZXMgYXJlIG5vdCBsb3N0IHdoZW4gdGhlc2UgYXJlIGxvYWRlZCBhdCBydW50aW1lLlxuICogQHBhcmFtIHByb3BlcnR5Q2hhbmdlc1xuICogQHBhcmFtIGFwcENvbXBvbmVudFxuICogQHBhcmFtIHBhZ2VcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGhcbiAqIEByZXR1cm5zIFRoZSBjaGFuZ2Ugc3RydWN0dXJlIHVzZWQgYnkgZmxleGliaWxpdHkgdG9vbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NHbG9iYWxDaGFuZ2VzKFxuXHRwcm9wZXJ0eUNoYW5nZXM6IHByb3BLZXlBbmRWYWx1ZSxcblx0YXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQsXG5cdHBhZ2U6IHN0cmluZyxcblx0cHJvcGVydHlQYXRoOiBzdHJpbmdcbik6IGFkYXB0aW9uQ2hhbmdlW10ge1xuXHRsZXQgc2luZ2xlQ2hhbmdlOiBwcm9wS2V5QW5kVmFsdWUgPSB7fTtcblx0Y29uc3QgY2hhbmdlcyA9IFtdO1xuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0eUNoYW5nZXMpKSB7XG5cdFx0c2luZ2xlQ2hhbmdlID0ge307XG5cdFx0c2luZ2xlQ2hhbmdlW2tleV0gPSB2YWx1ZTtcblx0XHRjaGFuZ2VzLnB1c2goZ2V0Q2hhbmdlKHNpbmdsZUNoYW5nZSwgYXBwQ29tcG9uZW50LCBwYWdlLCBwcm9wZXJ0eVBhdGgpKTtcblx0fVxuXHRyZXR1cm4gY2hhbmdlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoYW5nZShcblx0cHJvcGVydHlDaGFuZ2VzOiBwcm9wS2V5QW5kVmFsdWUsXG5cdGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRwYWdlOiBzdHJpbmcsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nXG4pOiBhZGFwdGlvbkNoYW5nZSB7XG5cdC8vIENoYW5nZXMgZm9yIGNvbnRyb2xzIGhhdmUgYSBwYXRoIHN0YXJ0aW5nIHdpdGggY29udHJvbENvbmZpZ3VyYXRpb24sIGZvbGxvd2VkIGJ5IGFuIGFubm90YXRpb24gcGF0aFxuXHQvLyBGb3IgdGhlIGxpc3QgcmVwb3J0IGNoYW5nZXMsIHRoZXJlIGlzIG5vIHBhdGggYmVjYXVzZSB0aGUgcHJvcGVydGllcyBhcmUgZGlyZWN0bHkgdW5kZXIgU2V0dGluZ3Ncblx0Ly8gZm9yIHRoZSBcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydFwiIGluIHRoZSBtYW5pZmVzdC5cblx0aWYgKHByb3BlcnR5UGF0aCA9PT0gXCJcIikge1xuXHRcdHByb3BlcnR5UGF0aCA9IE9iamVjdC5rZXlzKHByb3BlcnR5Q2hhbmdlcylbMF07XG5cdH0gZWxzZSB7XG5cdFx0cHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoICsgXCIvXCIgKyBPYmplY3Qua2V5cyhwcm9wZXJ0eUNoYW5nZXMpWzBdO1xuXHR9XG5cdGNvbnN0IHZhbHVlID0gcHJvcGVydHlDaGFuZ2VzW09iamVjdC5rZXlzKHByb3BlcnR5Q2hhbmdlcylbMF1dO1xuXG5cdHJldHVybiBnZXRDaGFuZ2VTdHJ1Y3R1cmUoYXBwQ29tcG9uZW50LCBwYWdlLCBwcm9wZXJ0eVBhdGgsIHZhbHVlKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHBhcmFtZXRlcnMgb3RoZXIgdGhhbiB0aGUgY29udHJvbCBzZXR0aW5ncyB0aGF0IGFyZSBuZWVkZWRcbiAqIGZvciB0aGUgY2hhbmdlIHN0cnVjdHVyZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eUNoYW5nZXNcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGhcbiAqIEBwYXJhbSBjb250cm9sXG4gKiBAcmV0dXJucyBUaGUgY2hhbmdlcyBpbiBhIHN0cnVjdHVyZSB1c2VkIGJ5IGZsZXhpYmlsaXR5IHRvb2xzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXBhcmF0ZUNoYW5nZXMocHJvcGVydHlDaGFuZ2VzOiBQcm9wZXJ0eVZhbHVlLCBwcm9wZXJ0eVBhdGg6IHN0cmluZywgY29udHJvbDogQ29udHJvbCk6IGFkYXB0aW9uQ2hhbmdlW10ge1xuXHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQoY29udHJvbCk7XG5cdGNvbnN0IHBhZ2UgPSBnZXRQYWdlKGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCk7XG5cdHJldHVybiBwcm9jZXNzQ2hhbmdlcyhwcm9wZXJ0eUNoYW5nZXMsIGFwcENvbXBvbmVudCwgcGFnZSwgcHJvcGVydHlQYXRoKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHBhcmFtZXRlcnMgb3RoZXIgdGhhbiB0aGUgZ2xvYmFsIHNldHRpbmdzIHRoYXQgYXJlIG5lZWRlZFxuICogZm9yIHRoZSBjaGFuZ2Ugc3RydWN0dXJlLlxuICogQHBhcmFtIHByb3BlcnR5Q2hhbmdlc1xuICogQHBhcmFtIHByb3BlcnR5UGF0aFxuICogQHBhcmFtIGNvbnRyb2xcbiAqIEByZXR1cm5zIFRoZSBjaGFuZ2VzIGluIGEgc3RydWN0dXJlIHVzZWQgYnkgZmxleGliaWxpdHkgdG9vbHNcbiAqL1xuZnVuY3Rpb24gc2VwYXJhdGVHbG9iYWxDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlWYWx1ZSwgcHJvcGVydHlQYXRoOiBzdHJpbmcsIGNvbnRyb2w6IENvbnRyb2wpOiBhZGFwdGlvbkNoYW5nZVtdIHtcblx0Y29uc3QgYXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KGNvbnRyb2wpO1xuXHRjb25zdCBwYWdlID0gXCJzYXAuZmVcIjtcblx0cmV0dXJuIHByb2Nlc3NHbG9iYWxDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlcywgYXBwQ29tcG9uZW50LCBwYWdlLCBwcm9wZXJ0eVBhdGgpO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlKGNvbnRyb2w6IENvbnRyb2wpOiBzdHJpbmcge1xuXHRjb25zdCB2aWV3SWQgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGNvbnRyb2wpLmdldElkKCkuc3BsaXQoXCI6OlwiKTtcblx0cmV0dXJuIHZpZXdJZFt2aWV3SWQubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0Q2hhbmdlcyA9IGZ1bmN0aW9uIChcblx0ZGVzaWdudGltZVNldHRpbmdzOiBEZXNpZ250aW1lU2V0dGluZ1tdLFxuXHR1bmNoYW5nZWREYXRhOiBQcm9wZXJ0eVZhbHVlLFxuXHRwcm9wZXJ0eVZhbHVlc0VudGVyZWQ6IFByb3BlcnR5VmFsdWUsXG5cdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRjb250cm9sOiBDb250cm9sLFxuXHRnbG9iYWxTZXR0aW5ncz86IERlc2lnbnRpbWVTZXR0aW5nW11cbik6IGFkYXB0aW9uQ2hhbmdlW10ge1xuXHRjb25zdCBwcm9wZXJ0eUNoYW5nZXMgPSBnZXRDaGFuZ2VkUHJvcGVydHlWYWx1ZXMoZGVzaWdudGltZVNldHRpbmdzLCB1bmNoYW5nZWREYXRhLCBwcm9wZXJ0eVZhbHVlc0VudGVyZWQpO1xuXHQvLyBQdXQgZWFjaCBwcm9wZXJ0eSBpbnRvIGl0cyBvd24gY2hhbmdlLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBkb24ndCBsb3NlIHByZXZpb3VzIGNoYW5nZXMuXG5cdGxldCBjaGFuZ2VzID0gc2VwYXJhdGVDaGFuZ2VzKHByb3BlcnR5Q2hhbmdlcywgcHJvcGVydHlQYXRoLCBjb250cm9sKTtcblx0aWYgKGdsb2JhbFNldHRpbmdzKSB7XG5cdFx0Y29uc3QgZ2xvYmFsQ2hhbmdlcyA9IGdldENoYW5nZWRQcm9wZXJ0eVZhbHVlcyhnbG9iYWxTZXR0aW5ncywgdW5jaGFuZ2VkRGF0YSwgcHJvcGVydHlWYWx1ZXNFbnRlcmVkKTtcblx0XHRjb25zdCBnbG9iYWwgPSBzZXBhcmF0ZUdsb2JhbENoYW5nZXMoZ2xvYmFsQ2hhbmdlcywgcHJvcGVydHlQYXRoLCBjb250cm9sKTtcblx0XHRjaGFuZ2VzID0gY2hhbmdlcy5jb25jYXQoZ2xvYmFsKTtcblx0fVxuXHRpZiAoY2hhbmdlcy5sZW5ndGggPiAwKSB7XG5cdFx0cmV0dXJuIGNoYW5nZXM7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG59O1xuXG5leHBvcnQgY29uc3Qgbm9DaGFuZ2VzID0gZnVuY3Rpb24gKCk6IFtdIHtcblx0cmV0dXJuIFtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlvcmlUb29sc1J0YU1vZGUoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBib29sZWFuIHtcblx0Ly8gQ2hlY2sgaWYgcnRhIG1vZGUgaGFzIGJlZW4gc3BlY2lmaWVkIG9uIHVybCAoZm9yIGxvY2FsIHRlc3RpbmcpXG5cdGxldCB1cmxQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXHRjb25zdCBzaGVsbFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHR1cmxQYXJhbXMgPSBzaGVsbFNlcnZpY2U/LnBhcnNlUGFyYW1ldGVycz8uKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuXHRyZXR1cm4gISF1cmxQYXJhbXMgJiYgdXJsUGFyYW1zW1wiZmlvcmktdG9vbHMtcnRhLW1vZGVcIl0/LlswXSA9PT0gXCJmb3JBZGFwdGF0aW9uXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JUQU1vZGUoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBib29sZWFuIHtcblx0Ly8gQ2hlY2sgaWYgcnRhIG1vZGUgaGFzIGJlZW4gc3BlY2lmaWVkIG9uIHVybCAoZm9yIGxvY2FsIHRlc3RpbmcpXG5cdGxldCB1cmxQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXHRjb25zdCBzaGVsbFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHR1cmxQYXJhbXMgPSBzaGVsbFNlcnZpY2U/LnBhcnNlUGFyYW1ldGVycz8uKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuXHRyZXR1cm4gISF1cmxQYXJhbXMgJiYgdXJsUGFyYW1zW1wic2FwLWZlLXJ0YS1tb2RlXCJdPy5bMF0gPT09IFwidHJ1ZVwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dGluZ3NJZktleVVzZXIoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQsIGl0ZW1zOiBTZXR0aW5nc0RhdGFbXSk6IFNldHRpbmdzRGF0YVtdIHtcblx0aWYgKCFpc0Zpb3JpVG9vbHNSdGFNb2RlKGFwcENvbXBvbmVudCkpIHtcblx0XHQvLyBub3QgdG9vbHMgPT4ga2V5IHVzZXJcblx0XHRyZXR1cm4gaXRlbXMuZmlsdGVyKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRyZXR1cm4gc2V0dGluZy5rZXlVc2VyO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBpdGVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uZmlnTW9kZWxQcmVwYXJlZChjb25maWdDb250ZXh0OiBDb250ZXh0LCBwYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIik6IGJvb2xlYW4ge1xuXHRpZiAoY29uZmlnQ29udGV4dC5nZXRQcm9wZXJ0eShwYXRoKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVDb25maWdNb2RlbChpdGVtczogU2V0dGluZ3NEYXRhW10sIGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsIHBhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiKTogdm9pZCB7XG5cdGlmICghY29uZmlnQ29udGV4dC5nZXRQcm9wZXJ0eShwYXRoKSkge1xuXHRcdGNvbmZpZ0NvbnRleHQuc2V0UHJvcGVydHkocGF0aCwgaXRlbXMpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQZXJzb25hbGl6YXRpb25TZXR0aW5nKGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsIHBhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiKTogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHNldHRpbmdzID0gY29uZmlnQ29udGV4dC5nZXRPYmplY3QocGF0aCk7XG5cdGNvbnN0IHBlcnNvbmFsaXphdGlvblNldHRpbmcgPSBzZXR0aW5ncy5maW5kKChzZXR0aW5nOiBTZXR0aW5nc0RhdGEpID0+IHtcblx0XHRyZXR1cm4gc2V0dGluZz8uY29udHJvbFswXT8uaWQgPT09IFwicGVyc29uYWxpemF0aW9uXCI7XG5cdH0pO1xuXHRpZiAocGVyc29uYWxpemF0aW9uU2V0dGluZykge1xuXHRcdHJldHVybiBwZXJzb25hbGl6YXRpb25TZXR0aW5nLmNvbnRyb2xbMF0udmFsdWU7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUNvbmZpZ01vZGVsKGNvbmZpZ0NvbnRleHQ6IENvbnRleHQsIHNldHRpbmdzTW9kZWw6IEpTT05Nb2RlbCwgcGF0aCA9IFwicnRhL2NvbmZpZ1NldHRpbmdzXCIpOiB2b2lkIHtcblx0Y29uc3QgdXBkYXRlZFNldHRpbmdzID0gZGVlcENsb25lKHNldHRpbmdzTW9kZWwuZ2V0RGF0YSgpKTtcblx0Y29uZmlnQ29udGV4dC5zZXRQcm9wZXJ0eShwYXRoLCB1cGRhdGVkU2V0dGluZ3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHlOYW1lc0FuZERlc2NyaXB0aW9ucyhwcm9wczogRGVzaWdudGltZVNldHRpbmdbXSwgcmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbCk6IERlc2lnbnRpbWVTZXR0aW5nW10ge1xuXHRwcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG5cdFx0cHJvcC5uYW1lID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KHByb3AubmFtZSk7XG5cdFx0cHJvcC5kZXNjcmlwdGlvbiA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChwcm9wLmRlc2NyaXB0aW9uKTtcblx0XHRpZiAocHJvcC5lbnVtcykge1xuXHRcdFx0cHJvcC5lbnVtcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnVtbSkge1xuXHRcdFx0XHRlbnVtbS5uYW1lID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KGVudW1tLm5hbWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4gcHJvcHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01hbmlmZXN0Q2hhbmdlc0VuYWJsZWQoY29udHJvbDogQ29udHJvbCk6IGJvb2xlYW4ge1xuXHRsZXQgb3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbCkgYXMgVGVtcGxhdGVDb21wb25lbnQ7XG5cdGlmIChvd25lciA9PT0gdW5kZWZpbmVkICYmIGNvbnRyb2wuZ2V0UGFyZW50KCkpIHtcblx0XHQvLyBJbiBjYXNlIG9mIE1hc3NFZGl0LCBjb250cm9sIGlzIGEgc2FwLm0uRGlhbG9nIGZvciB3aGljaCB0aGVyZSBpcyBub3cgT3duZXJDb21wb25lbnQsIHNvIHdlIG5lZWQgdG8gY29uc2lkZXIgaXRzIHBhcmVudCBjb250cm9sXG5cdFx0b3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbC5nZXRQYXJlbnQoKSEpIGFzIFRlbXBsYXRlQ29tcG9uZW50O1xuXHR9XG5cdGNvbnN0IHNhcEZlTWFuaWZlc3QgPSBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKTtcblx0cmV0dXJuIHNhcEZlTWFuaWZlc3Q/LmFwcD8uZGlzYWJsZU1hbmlmZXN0Q2hhbmdlcyAhPT0gdHJ1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7RUFBQTtBQUNBO0FBQ0E7RUFrRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTQSx3QkFBd0JBLENBQ3ZDQyxrQkFBdUMsRUFDdkNDLGFBQTRCLEVBQzVCQyxjQUE2QixFQUNiO0lBQ2hCLE1BQU1DLGVBQThCLEdBQUcsQ0FBQyxDQUFDO0lBRXpDSCxrQkFBa0IsQ0FBQ0ksT0FBTyxDQUFDLFVBQVVDLE9BQU8sRUFBRTtNQUM3QyxJQUNFLE9BQU9KLGFBQWEsQ0FBQ0ksT0FBTyxDQUFDQyxFQUFFLENBQUMsS0FBSyxRQUFRLElBQUlMLGFBQWEsQ0FBQ0ksT0FBTyxDQUFDQyxFQUFFLENBQUMsS0FBS0osY0FBYyxDQUFDRyxPQUFPLENBQUNDLEVBQUUsQ0FBQyxJQUN6RyxPQUFPTCxhQUFhLENBQUNJLE9B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
@@ -6,6 +6,7 @@ import deepClone from "sap/base/util/deepClone";
6
6
  import type AppComponent from "sap/fe/core/AppComponent";
7
7
  import CommonUtils from "sap/fe/core/CommonUtils";
8
8
  import type ResourceModel from "sap/fe/core/ResourceModel";
9
+ import type TemplateComponent from "sap/fe/core/TemplateComponent";
9
10
  import type { TemplateType } from "sap/fe/core/converters/ManifestSettings";
10
11
  import Button from "sap/m/Button";
11
12
  import CheckBox from "sap/m/CheckBox";
@@ -18,6 +19,7 @@ import type { MultiInput$TokenUpdateEvent } from "sap/m/MultiInput";
18
19
  import MultiInput from "sap/m/MultiInput";
19
20
  import Select from "sap/m/Select";
20
21
  import Token from "sap/m/Token";
22
+ import Component from "sap/ui/core/Component";
21
23
  import type Control from "sap/ui/core/Control";
22
24
  import Item from "sap/ui/core/Item";
23
25
  import type Context from "sap/ui/model/Context";
@@ -569,3 +571,13 @@ export function getPropertyNamesAndDescriptions(props: DesigntimeSetting[], reso
569
571
 
570
572
  return props;
571
573
  }
574
+
575
+ export function isManifestChangesEnabled(control: Control): boolean {
576
+ let owner = Component.getOwnerComponentFor(control) as TemplateComponent;
577
+ if (owner === undefined && control.getParent()) {
578
+ // In case of MassEdit, control is a sap.m.Dialog for which there is now OwnerComponent, so we need to consider its parent control
579
+ owner = Component.getOwnerComponentFor(control.getParent()!) as TemplateComponent;
580
+ }
581
+ const sapFeManifest = owner?.getAppComponent().getManifestEntry("sap.fe");
582
+ return sapFeManifest?.app?.disableManifestChanges !== true;
583
+ }
@@ -5,7 +5,7 @@
5
5
  sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/helpers/BindingHelper", "sap/m/Button", "sap/m/ObjectMarker", "sap/m/Popover", "sap/m/Text", "sap/m/VBox", "sap/m/library", "sap/ui/core/Lib", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (formatMessage, BindingToolkit, ClassSupport, CommonUtils, BuildingBlock, BindingHelper, Button, ObjectMarker, Popover, Text, VBox, library, Library, _jsx, _jsxs) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;
9
9
  var _exports = {};
10
10
  var ObjectMarkerVisibility = library.ObjectMarkerVisibility;
11
11
  var ObjectMarkerType = library.ObjectMarkerType;
@@ -48,6 +48,9 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
48
48
  type: "boolean"
49
49
  }), _dec7 = property({
50
50
  type: "boolean"
51
+ }), _dec8 = property({
52
+ type: "string",
53
+ allowedValues: ["Inline", "Overlay"]
51
54
  }), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
52
55
  function DraftIndicator(properties, others) {
53
56
  var _this;
@@ -61,6 +64,7 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
61
64
  _initializerDefineProperty(_this, "class", _descriptor4, _this);
62
65
  _initializerDefineProperty(_this, "usedInTable", _descriptor5, _this);
63
66
  _initializerDefineProperty(_this, "usedInAnalyticalTable", _descriptor6, _this);
67
+ _initializerDefineProperty(_this, "reactiveAreaMode", _descriptor7, _this);
64
68
  return _this;
65
69
  }
66
70
  _exports = DraftIndicator;
@@ -280,7 +284,8 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
280
284
  visibility: visibility,
281
285
  additionalInfo: this.getIconAndTextAdditionalInfoBindingExpression(),
282
286
  ariaLabelledBy: this.ariaLabelledBy ? this.ariaLabelledBy : [],
283
- class: this.class
287
+ class: this.class,
288
+ reactiveAreaMode: this.reactiveAreaMode
284
289
  });
285
290
  }
286
291
 
@@ -292,7 +297,7 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
292
297
  const type = ifElse(not(Entity.IsActive), ObjectMarkerType.Draft, ifElse(Entity.HasDraft, ifElse(!!this.usedInAnalyticalTable, ObjectMarkerType.Locked, ifElse(pathInModel("DraftAdministrativeData/InProcessByUser"), ObjectMarkerType.Locked, ObjectMarkerType.Unsaved)), ObjectMarkerType.Flagged));
293
298
  let visible;
294
299
  if (this.usedInTable === true) {
295
- visible = or(not(Entity.IsActive), and(Entity.IsActive, Entity.HasDraft));
300
+ visible = or(not(Entity.IsActive), Entity.HasDraft);
296
301
  } else {
297
302
  // If Entity.HasDraft is empty, there is no context at all, so don't show the indicator
298
303
  visible = and(not(isEmpty(Entity.HasDraft)), not(UI.IsEditable), Entity.HasDraft, not(pathInModel("DraftAdministrativeData/DraftIsCreatedByMe")));
@@ -303,7 +308,8 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
303
308
  visibility: ObjectMarkerVisibility.IconOnly,
304
309
  visible: visible,
305
310
  ariaLabelledBy: this.ariaLabelledBy ? this.ariaLabelledBy : [],
306
- class: this.class
311
+ class: this.class,
312
+ reactiveAreaMode: this.reactiveAreaMode
307
313
  });
308
314
  }
309
315
 
@@ -353,8 +359,13 @@ sap.ui.define(["sap/base/strings/formatMessage", "sap/fe/base/BindingToolkit", "
353
359
  enumerable: true,
354
360
  writable: true,
355
361
  initializer: null
362
+ }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "reactiveAreaMode", [_dec8], {
363
+ configurable: true,
364
+ enumerable: true,
365
+ writable: true,
366
+ initializer: null
356
367
  }), _class2)) || _class);
357
368
  _exports = DraftIndicator;
358
369
  return _exports;
359
370
  }, false);
360
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcmFmdEluZGljYXRvciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJfZGVjNCIsInJlcXVpcmVkIiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0RHJhZnRJbmRpY2F0b3JUeXBlIiwiaW5kaWNhdG9yIiwiT2JqZWN0TWFya2VyVmlzaWJpbGl0eSIsIkljb25Pbmx5IiwiSWNvbkFuZFRleHQiLCJpbmNsdWRlcyIsInNldFByb3BlcnR5IiwiRXJyb3IiLCJhZGRBcmlhTGFiZWxsZWRCeUZvckRyYWZ0SW5kaWNhdG9yIiwiZWxlbWVudCIsImFyaWFMYWJlbGxlZEJ5cyIsImNvbnRlbnQiLCJnZXRBcmlhTGFiZWxsZWRCeSIsImFkZEFyaWFMYWJlbGxlZEJ5Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNyZWF0ZUNvbnRlbnQiLCJmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciIsImhhc0RyYWZ0RW50aXR5IiwiZHJhZnRJblByb2Nlc3NCeVVzZXIiLCJkcmFmdExhc3RDaGFuZ2VkQnlVc2VyIiwiZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjIiwiZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MiLCJtYWNyb1Jlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwidXNlckRlc2NyaXB0aW9uIiwiZ2V0VGV4dCIsImdldERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyIsIm1ldGFEYXRhIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImNvbnRleHRQYXRoIiwiZHJhZnRBZG1pbkVsZW1lbnQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJmaW5kIiwiYSIsIm5hbWUiLCJkcmFmdEFkbWluUHJvcGVydGllcyIsInRhcmdldFR5cGUiLCJlbnRpdHlQcm9wZXJ0aWVzIiwibWFwIiwib0RyYWZ0QWRtaW5Qcm9wZXJ0eSIsImdldFBvcG92ZXJUaXRsZUJpbmRpbmdFeHByZXNzaW9uIiwiaWZFbHNlIiwibm90IiwiRW50aXR5IiwiSXNBY3RpdmUiLCJpc0hpZGRlbkRyYWZ0RW5hYmxlZCIsInBhdGhJbk1vZGVsIiwiSGFzRHJhZnQiLCJpc0VtcHR5IiwiZHJhZnRJbmRpY2F0b3JUeXBlIiwiZ2V0RHJhZnRPd25lclRleHRCaW5kaW5nRXhwcmVzc2lvbiIsImRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyIsInBhcnRzIiwicGF0aCIsInB1c2giLCJmb3JtYXR0ZXIiLCJjcmVhdGVQb3BvdmVyIiwiY29udHJvbCIsImlzRHJhZnRXaXRoTm9DaGFuZ2VzQmluZGluZyIsImFuZCIsImRyYWZ0V2l0aE5vQ2hhbmdlc1RleHRCaW5kaW5nIiwiaXNEcmFmdFdpdGhDaGFuZ2VzQmluZGluZyIsImRyYWZ0V2l0aENoYW5nZXNUZXh0QmluZGluZyIsIm1vZGVsIiwiZm9ybWF0TWVzc2FnZSIsImlzQWN0aXZlSW5zdGFuY2VCaW5kaW5nIiwiYWN0aXZlSW5zdGFuY2VUZXh0QmluZGluZyIsInBvcG92ZXIiLCJfanN4IiwiUG9wb3ZlciIsInRpdGxlIiwic2hvd0hlYWRlciIsInZlcnRpY2FsU2Nyb2xsaW5nIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJlbmRCdXR0b24iLCJCdXR0b24iLCJpY29uIiwicHJlc3MiLCJkcmFmdFBvcG92ZXIiLCJjbG9zZSIsImNoaWxkcmVuIiwiX2pzeHMiLCJWQm94IiwidmlzaWJsZSIsIlRleHQiLCJ0ZXh0IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiYWRkRGVwZW5kZW50Iiwib25PYmplY3RNYXJrZXJQcmVzc2VkIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2V0QmluZGluZ0NvbnRleHQiLCJvcGVuQnkiLCJnZXRJY29uQW5kVGV4dEFkZGl0aW9uYWxJbmZvQmluZGluZ0V4cHJlc3Npb24iLCJvckJpbmRpbmdzIiwib3IiLCJnZXRJY29uQW5kVGV4dENvbnRlbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkhpZGRlbkRyYWZ0IiwiZW5hYmxlZCIsIm9iak1hcmtlclR5cGUiLCJPYmplY3RNYXJrZXJUeXBlIiwiVW5zYXZlZCIsIkRyYWZ0IiwiTG9ja2VkQnkiLCJVbnNhdmVkQnkiLCJGbGFnZ2VkIiwidmlzaWJpbGl0eSIsIlRleHRPbmx5IiwiT2JqZWN0TWFya2VyIiwiYmluZCIsImFkZGl0aW9uYWxJbmZvIiwiYXJpYUxhYmVsbGVkQnkiLCJnZXRJY29uT25seUNvbnRlbnQiLCJ1c2VkSW5BbmFseXRpY2FsVGFibGUiLCJMb2NrZWQiLCJ1c2VkSW5UYWJsZSIsIlVJIiwiSXNFZGl0YWJsZSIsInVuZGVmaW5lZCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRyYWZ0SW5kaWNhdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgZm9ybWF0TWVzc2FnZSBmcm9tIFwic2FwL2Jhc2Uvc3RyaW5ncy9mb3JtYXRNZXNzYWdlXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBpZkVsc2UsIGlzRW1wdHksIG5vdCwgb3IsIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgdHlwZSB7IEhpZGRlbkRyYWZ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgRW50aXR5LCBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBPYmplY3RNYXJrZXIkUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9PYmplY3RNYXJrZXJcIjtcbmltcG9ydCBPYmplY3RNYXJrZXIgZnJvbSBcInNhcC9tL09iamVjdE1hcmtlclwiO1xuaW1wb3J0IFBvcG92ZXIgZnJvbSBcInNhcC9tL1BvcG92ZXJcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHsgT2JqZWN0TWFya2VyVHlwZSwgT2JqZWN0TWFya2VyVmlzaWJpbGl0eSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRHJhZnRJbmRpY2F0b3IgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpEcmFmdEluZGljYXRvclxuICogaWQ9XCJTb21lSURcIlxuICogLyZndDtcbiAqIDwvcHJlPlxuICogQHByaXZhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5kcmFmdEluZGljYXRvci5EcmFmdEluZGljYXRvclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJhZnRJbmRpY2F0b3IgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPENvbnRyb2w+IHtcblx0LyoqXG5cdCAqIElEIG9mIHRoZSBEcmFmdEluZGljYXRvclxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGRyYWZ0SW5kaWNhdG9yVHlwZT86IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHkgfCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0ID0gT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dDtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjbGFzcyA9IFwiXCI7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRwdWJsaWMgdXNlZEluVGFibGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0cHVibGljIHVzZWRJbkFuYWx5dGljYWxUYWJsZT86IGJvb2xlYW47XG5cblx0ZHJhZnRQb3BvdmVyPzogUG9wb3ZlcjtcblxuXHRwcml2YXRlIGlzSGlkZGVuRHJhZnRFbmFibGVkPzogYm9vbGVhbjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPERyYWZ0SW5kaWNhdG9yPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdH1cblxuXHRzZXREcmFmdEluZGljYXRvclR5cGUoXG5cdFx0aW5kaWNhdG9yOiBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25Pbmx5IHwgT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dCB8IE9iamVjdE1hcmtlclZpc2liaWxpdHkuVGV4dE9ubHlcblx0KTogdm9pZCB7XG5cdFx0aWYgKFtPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25Pbmx5LCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0XS5pbmNsdWRlcyhpbmRpY2F0b3IpKSB7XG5cdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZHJhZnRJbmRpY2F0b3JUeXBlXCIsIGluZGljYXRvcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgQWxsb3dlZCB2YWx1ZSAke2luZGljYXRvcn0gZG9lcyBub3QgbWF0Y2hgKTtcblx0XHR9XG5cdH1cblxuXHRhZGRBcmlhTGFiZWxsZWRCeUZvckRyYWZ0SW5kaWNhdG9yKGVsZW1lbnQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFyaWFMYWJlbGxlZEJ5cyA9ICh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBPYmplY3RNYXJrZXIpPy5nZXRBcmlhTGFiZWxsZWRCeSgpID8/IFtdO1xuXHRcdGlmICghYXJpYUxhYmVsbGVkQnlzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG5cdFx0XHQodGhpcy5jb250ZW50IGFzIHVua25vd24gYXMgT2JqZWN0TWFya2VyKT8uYWRkQXJpYUxhYmVsbGVkQnkoZWxlbWVudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnRpbWUgZm9ybWF0dGVyIGZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgY29ycmVjdCB0ZXh0IHRoYXQgZGlzcGxheXMgdGhlIG93bmVyIG9mIGEgZHJhZnQuXG5cdCAqXG5cdCAqIFRoaXMgaXMgdXNlZCBpbiBjYXNlIHRoZSBEcmFmdEluZGljYXRvciBpcyBzaG93biBmb3IgYW4gYWN0aXZlIGVudGl0eSB0aGF0IGhhcyBhIGRyYWZ0IG9mIGFub3RoZXIgdXNlci5cblx0ICogQHBhcmFtIGhhc0RyYWZ0RW50aXR5XG5cdCAqIEBwYXJhbSBkcmFmdEluUHJvY2Vzc0J5VXNlclxuXHQgKiBAcGFyYW0gZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlclxuXHQgKiBAcGFyYW0gZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjXG5cdCAqIEBwYXJhbSBkcmFmdExhc3RDaGFuZ2VkQnlVc2VyRGVzY1xuXHQgKiBAcmV0dXJucyBUZXh0IHRvIGRpc3BsYXlcblx0ICovXG5cdHN0YXRpYyBmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3Zlcihcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlXG5cdFx0dGhpczogdm9pZCxcblx0XHRoYXNEcmFmdEVudGl0eTogYm9vbGVhbixcblx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlcjogc3RyaW5nLFxuXHRcdGRyYWZ0TGFzdENoYW5nZWRCeVVzZXI6IHN0cmluZyxcblx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlckRlc2M6IHN0cmluZyxcblx0XHRkcmFmdExhc3RDaGFuZ2VkQnlVc2VyRGVzYzogc3RyaW5nXG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWFjcm9SZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpO1xuXHRcdGlmICghbWFjcm9SZXNvdXJjZUJ1bmRsZSkge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHRcdGlmIChoYXNEcmFmdEVudGl0eSkge1xuXHRcdFx0Y29uc3QgdXNlckRlc2NyaXB0aW9uID1cblx0XHRcdFx0ZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjIHx8IGRyYWZ0SW5Qcm9jZXNzQnlVc2VyIHx8IGRyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjIHx8IGRyYWZ0TGFzdENoYW5nZWRCeVVzZXI7XG5cblx0XHRcdGlmICghdXNlckRlc2NyaXB0aW9uKSB7XG5cdFx0XHRcdHJldHVybiBtYWNyb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0ZJRUxEX1JVTlRJTUVfRFJBRlRfUE9QT1ZFUl9VTlNBVkVEX0NIQU5HRVNfQllfVU5LTk9XTlwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBkcmFmdEluUHJvY2Vzc0J5VXNlclxuXHRcdFx0XHRcdD8gbWFjcm9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfTE9DS0VEX0JZX0tOT1dOXCIsIFt1c2VyRGVzY3JpcHRpb25dKVxuXHRcdFx0XHRcdDogbWFjcm9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfVU5TQVZFRF9DSEFOR0VTX0JZX0tOT1dOXCIsIFt1c2VyRGVzY3JpcHRpb25dKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG1hY3JvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRklFTERfUlVOVElNRV9EUkFGVF9QT1BPVkVSX05PX0RBVEFfVEVYVFwiKTtcblx0XHR9XG5cdH1cblxuXHQvKioqXG5cdCAqIEdldHMgdGhlIHByb3BlcnRpZXMgb2YgdGhlIERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhIGVudGl0eSBjb25uZWN0ZWQgdG8gdGhlIGdpdmVuIGVudGl0eSBzZXRcblx0ICpcblx0ICogQHJldHVybnMgTGlzdCBvZiBwcm9wZXJ0eSBuYW1lc1xuXHQgKi9cblx0Z2V0RHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhRGF0YTogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gfCB1bmRlZmluZWQgPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdFBhdGgodGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0Y29uc3QgZHJhZnRBZG1pbkVsZW1lbnQgPSBtZXRhRGF0YT8udGFyZ2V0RW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChhKSA9PiBhLm5hbWUgPT09IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFcIik7XG5cdFx0Y29uc3QgZHJhZnRBZG1pblByb3BlcnRpZXMgPSBkcmFmdEFkbWluRWxlbWVudD8udGFyZ2V0VHlwZS5lbnRpdHlQcm9wZXJ0aWVzO1xuXHRcdHJldHVybiBkcmFmdEFkbWluUHJvcGVydGllcz8ubWFwKChvRHJhZnRBZG1pblByb3BlcnR5KSA9PiBvRHJhZnRBZG1pblByb3BlcnR5Lm5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHRleHQgZGlzcGxheWVkIGFzIHRpdGxlIG9mIHRoZSBwb3B1cC5cblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHQgKi9cblx0Z2V0UG9wb3ZlclRpdGxlQmluZGluZ0V4cHJlc3Npb24oKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPFByaW1pdGl2ZVR5cGU+IHtcblx0XHRyZXR1cm4gaWZFbHNlKFxuXHRcdFx0bm90KEVudGl0eS5Jc0FjdGl2ZSksXG5cdFx0XHR0aGlzLmlzSGlkZGVuRHJhZnRFbmFibGVkXG5cdFx0XHRcdD8gcGF0aEluTW9kZWwoXCJNX0RSQUZUX1BPUE9WRVJfQURNSU5fVU5TQVZFRF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0XHQ6IHBhdGhJbk1vZGVsKFwiTV9DT01NT05fRFJBRlRfT0JKRUNUXCIsIFwic2FwLmZlLmkxOG5cIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdEVudGl0eS5IYXNEcmFmdCxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG5vdChpc0VtcHR5KHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIpKSksXG5cdFx0XHRcdFx0cGF0aEluTW9kZWwoXCJNX0NPTU1PTl9EUkFGVF9MT0NLRURfT0JKRUNUXCIsIFwic2FwLmZlLmkxOG5cIiksXG5cdFx0XHRcdFx0cGF0aEluTW9kZWwoXCJNX0RSQUZUX1BPUE9WRVJfQURNSU5fVU5TQVZFRF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHR0aGlzLmRyYWZ0SW5kaWNhdG9yVHlwZSA9PT0gT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dFxuXHRcdFx0XHRcdD8gXCIgXCJcblx0XHRcdFx0XHQ6IHBhdGhJbk1vZGVsKFwiQ19EUkFGVF9QT1BPVkVSX0FETUlOX0RBVEFfRFJBRlRJTkZPX0ZMQUdHRURfT0JKRUNUXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHRcdClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHRleHQgZGlzcGxheWVkIHRvIGlkZW50aWZ5IHRoZSBkcmFmdCBvd25lciBpbiB0aGUgcG9wdXAuXG5cdCAqIFRoaXMgYmluZGluZyBpcyBjb25maWd1cmVkIHRvIGNhbGwgZm9ybWF0RHJhZnRPd25lclRleHRJblBvcG92ZXIgYXQgcnVudGltZS5cblx0ICpcblx0ICogV2UgY2Fubm90IHJlZmVyZW5jZSBmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciBkaXJlY3RseSBhcyB3ZSBuZWVkIHRvIGNvbmRpdGlvbmFsbHkgcGFzcyBwcm9wZXJ0aWVzIHRoYXQgbWlnaHQgZXhpc3Qgb3Igbm90LFxuXHQgKiBhbmQgcmVmZXJyaW5nIHRvIG5vbi1leGlzdGluZyBwcm9wZXJ0aWVzIGZhaWxzIHRoZSBiaW5kaW5nLlxuXHQgKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uXG5cdCAqL1xuXHRnZXREcmFmdE93bmVyVGV4dEJpbmRpbmdFeHByZXNzaW9uKCk6IHtcblx0XHRwYXJ0czogdW5rbm93bltdO1xuXHRcdGZvcm1hdHRlcjogKFxuXHRcdFx0aGFzRHJhZnRFbnRpdHk6IGJvb2xlYW4sXG5cdFx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlcjogc3RyaW5nLFxuXHRcdFx0ZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlcjogc3RyaW5nLFxuXHRcdFx0ZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjOiBzdHJpbmcsXG5cdFx0XHRkcmFmdExhc3RDaGFuZ2VkQnlVc2VyRGVzYzogc3RyaW5nXG5cdFx0KSA9PiBzdHJpbmc7XG5cdH0ge1xuXHRcdGNvbnN0IGRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyA9IHRoaXMuZ2V0RHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzKCk7XG5cblx0XHRjb25zdCBwYXJ0cyA9IFtcblx0XHRcdHsgcGF0aDogXCJIYXNEcmFmdEVudGl0eVwiLCB0YXJnZXRUeXBlOiBcImFueVwiIH0sXG5cdFx0XHR7IHBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIgfSxcblx0XHRcdHsgcGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlclwiIH1cblx0XHRdO1xuXHRcdGlmIChkcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXM/LmluY2x1ZGVzKFwiSW5Qcm9jZXNzQnlVc2VyRGVzY3JpcHRpb25cIikpIHtcblx0XHRcdHBhcnRzLnB1c2goeyBwYXRoOiBcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0luUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uXCIgfSk7XG5cdFx0fVxuXHRcdGlmIChkcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXM/LmluY2x1ZGVzKFwiTGFzdENoYW5nZWRCeVVzZXJEZXNjcmlwdGlvblwiKSkge1xuXHRcdFx0cGFydHMucHVzaCh7IHBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZWRCeVVzZXJEZXNjcmlwdGlvblwiIH0pO1xuXHRcdH1cblxuXHRcdC8vcGFydHMucHVzaCh7cGF0aDogXCJzYXAuZmUuaTE4bj5cIn0pXG5cblx0XHRyZXR1cm4geyBwYXJ0cywgZm9ybWF0dGVyOiBEcmFmdEluZGljYXRvci5mb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBwb3BvdmVyIGNvbnRyb2wgdG8gZGlzcGxheSBkcmFmdCBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCB0aGF0IHRoZSBwb3BvdmVyIGlzIHRvIGJlIGNyZWF0ZWQgZm9yXG5cdCAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIHBvcG92ZXIgY29udHJvbFxuXHQgKi9cblx0Y3JlYXRlUG9wb3Zlcihjb250cm9sOiBDb250cm9sKTogUG9wb3ZlciB7XG5cdFx0Y29uc3QgaXNEcmFmdFdpdGhOb0NoYW5nZXNCaW5kaW5nID0gYW5kKG5vdChFbnRpdHkuSXNBY3RpdmUpLCBpc0VtcHR5KHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZURhdGVUaW1lXCIpKSk7XG5cdFx0Y29uc3QgZHJhZnRXaXRoTm9DaGFuZ2VzVGV4dEJpbmRpbmcgPVxuXHRcdFx0dGhpcy5kcmFmdEluZGljYXRvclR5cGUgPT09IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHRcblx0XHRcdFx0PyBwYXRoSW5Nb2RlbChcIk1fRFJBRlRfUE9QT1ZFUl9BRE1JTl9HRU5FUklDX0xPQ0tFRF9PQkpFQ1RfUE9QT1ZFUl9URVhUXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHRcdFx0OiBwYXRoSW5Nb2RlbChcIkNfRFJBRlRfUE9QT1ZFUl9BRE1JTl9EQVRBX0RSQUZUSU5GT19QT1BPVkVSX05PX0RBVEFfVEVYVFwiLCBcInNhcC5mZS5pMThuXCIpO1xuXG5cdFx0Y29uc3QgaXNEcmFmdFdpdGhDaGFuZ2VzQmluZGluZyA9IGFuZChcblx0XHRcdG5vdChFbnRpdHkuSXNBY3RpdmUpLFxuXHRcdFx0bm90KGlzRW1wdHkocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlRGF0ZVRpbWVcIikpKVxuXHRcdCk7XG5cdFx0Y29uc3QgZHJhZnRXaXRoQ2hhbmdlc1RleHRCaW5kaW5nID0ge1xuXHRcdFx0cGFydHM6IFtcblx0XHRcdFx0eyBwYXRoOiBcIk1fRFJBRlRfUE9QT1ZFUl9BRE1JTl9MQVNUX0NIQU5HRV9URVhUXCIsIG1vZGVsOiBcInNhcC5mZS5pMThuXCIgfSxcblx0XHRcdFx0eyBwYXRoOiBcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VEYXRlVGltZVwiIH1cblx0XHRcdF0sXG5cdFx0XHRmb3JtYXR0ZXI6IGZvcm1hdE1lc3NhZ2Vcblx0XHR9O1xuXG5cdFx0Y29uc3QgaXNBY3RpdmVJbnN0YW5jZUJpbmRpbmcgPSBhbmQoRW50aXR5LklzQWN0aXZlLCBub3QoaXNFbXB0eShwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VEYXRlVGltZVwiKSkpKTtcblx0XHRjb25zdCBhY3RpdmVJbnN0YW5jZVRleHRCaW5kaW5nID0geyAuLi5kcmFmdFdpdGhDaGFuZ2VzVGV4dEJpbmRpbmcgfTtcblxuXHRcdGNvbnN0IHBvcG92ZXI6IFBvcG92ZXIgPSAoXG5cdFx0XHQ8UG9wb3ZlclxuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRQb3BvdmVyVGl0bGVCaW5kaW5nRXhwcmVzc2lvbigpfVxuXHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHR2ZXJ0aWNhbFNjcm9sbGluZz17ZmFsc2V9XG5cdFx0XHRcdGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn1cblx0XHRcdFx0cGxhY2VtZW50PXtcIkF1dG9cIn1cblx0XHRcdFx0ZW5kQnV0dG9uPXtcblx0XHRcdFx0XHQoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9kZWNsaW5lXCJ9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kcmFmdFBvcG92ZXI/LmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCkgYXMgQnV0dG9uXG5cdFx0XHRcdH1cblx0XHRcdD5cblx0XHRcdFx0PFZCb3ggY2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifT5cblx0XHRcdFx0XHQ8VkJveCB2aXNpYmxlPXtpc0RyYWZ0V2l0aE5vQ2hhbmdlc0JpbmRpbmd9PlxuXHRcdFx0XHRcdFx0PFRleHQgdGV4dD17ZHJhZnRXaXRoTm9DaGFuZ2VzVGV4dEJpbmRpbmd9IC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdDxWQm94IHZpc2libGU9e2lzRHJhZnRXaXRoQ2hhbmdlc0JpbmRpbmd9PlxuXHRcdFx0XHRcdFx0PFRleHQgdGV4dD17ZHJhZnRXaXRoQ2hhbmdlc1RleHRCaW5kaW5nfSAvPlxuXHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQ8VkJveCB2aXNpYmxlPXtpc0FjdGl2ZUluc3RhbmNlQmluZGluZ30+XG5cdFx0XHRcdFx0XHQ8VGV4dCB0ZXh0PXt0aGlzLmdldERyYWZ0T3duZXJUZXh0QmluZGluZ0V4cHJlc3Npb24oKX0gLz5cblx0XHRcdFx0XHRcdDxUZXh0IGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5Ub3BcIn0gdGV4dD17YWN0aXZlSW5zdGFuY2VUZXh0QmluZGluZ30gLz5cblx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdDwvVkJveD5cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpIGFzIFBvcG92ZXI7XG5cblx0XHRDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGNvbnRyb2wpLmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHRyZXR1cm4gcG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHByZXNzaW5nIG9mIHRoZSBvYmplY3QgbWFya2VyIGJ5IG9wZW5pbmcgYSBjb3JyZXNwb25kaW5nIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBFdmVudCBvYmplY3QgcGFzc2VkIGZyb20gdGhlIHByZXNzIGV2ZW50XG5cdCAqL1xuXHRvbk9iamVjdE1hcmtlclByZXNzZWQoZXZlbnQ6IE9iamVjdE1hcmtlciRQcmVzc0V2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dDtcblxuXHRcdHRoaXMuZHJhZnRQb3BvdmVyID8/PSB0aGlzLmNyZWF0ZVBvcG92ZXIoc291cmNlKTtcblxuXHRcdHRoaXMuZHJhZnRQb3BvdmVyLnNldEJpbmRpbmdDb250ZXh0KGJpbmRpbmdDb250ZXh0KTtcblx0XHR0aGlzLmRyYWZ0UG9wb3Zlci5vcGVuQnkoc291cmNlLCBmYWxzZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29uc3RydWN0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgXCJhZGRpdGlvbmFsSW5mb1wiIGF0dHJpYnV0ZSBpbiB0aGUgXCJJY29uQW5kVGV4dFwiIGNhc2UuXG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldEljb25BbmRUZXh0QWRkaXRpb25hbEluZm9CaW5kaW5nRXhwcmVzc2lvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdFx0Y29uc3QgZHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzID0gdGhpcy5nZXREcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXMoKTtcblxuXHRcdGNvbnN0IG9yQmluZGluZ3MgPSBbXTtcblx0XHRpZiAoZHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzPy5pbmNsdWRlcyhcIkluUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uXCIpKSB7XG5cdFx0XHRvckJpbmRpbmdzLnB1c2gocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJEZXNjcmlwdGlvblwiKSk7XG5cdFx0fVxuXHRcdG9yQmluZGluZ3MucHVzaChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0luUHJvY2Vzc0J5VXNlclwiKSk7XG5cdFx0aWYgKGRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcz8uaW5jbHVkZXMoXCJMYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIpKSB7XG5cdFx0XHRvckJpbmRpbmdzLnB1c2gocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIpKTtcblx0XHR9XG5cdFx0b3JCaW5kaW5ncy5wdXNoKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZWRCeVVzZXJcIikpO1xuXG5cdFx0cmV0dXJuIGlmRWxzZTxzdHJpbmc+KEVudGl0eS5IYXNEcmFmdCwgb3IoLi4ub3JCaW5kaW5ncykgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sIFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGNvbnRlbnQgb2YgdGhpcyBidWlsZGluZyBibG9jayBmb3IgdGhlIFwiSWNvbkFuZFRleHRcIiB0eXBlLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRnZXRJY29uQW5kVGV4dENvbnRlbnQoKTogT2JqZWN0TWFya2VyIHtcblx0XHR0aGlzLmlzSGlkZGVuRHJhZnRFbmFibGVkID0gKHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuSGlkZGVuRHJhZnQgYXMgSGlkZGVuRHJhZnQpXG5cdFx0XHQ/LmVuYWJsZWQ7XG5cdFx0Y29uc3Qgb2JqTWFya2VyVHlwZSA9IHRoaXMuaXNIaWRkZW5EcmFmdEVuYWJsZWQgPyBPYmplY3RNYXJrZXJUeXBlLlVuc2F2ZWQgOiBPYmplY3RNYXJrZXJUeXBlLkRyYWZ0O1xuXHRcdGNvbnN0IHR5cGUgPSBpZkVsc2UoXG5cdFx0XHRub3QoRW50aXR5LklzQWN0aXZlKSxcblx0XHRcdG9iak1hcmtlclR5cGUsXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdEVudGl0eS5IYXNEcmFmdCxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIpLFxuXHRcdFx0XHRcdE9iamVjdE1hcmtlclR5cGUuTG9ja2VkQnksXG5cdFx0XHRcdFx0aWZFbHNlKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZWRCeVVzZXJcIiksIE9iamVjdE1hcmtlclR5cGUuVW5zYXZlZEJ5LCBPYmplY3RNYXJrZXJUeXBlLlVuc2F2ZWQpXG5cdFx0XHRcdCksXG5cdFx0XHRcdE9iamVjdE1hcmtlclR5cGUuRmxhZ2dlZFxuXHRcdFx0KVxuXHRcdCk7XG5cblx0XHRjb25zdCB2aXNpYmlsaXR5ID0gaWZFbHNlKG5vdChFbnRpdHkuSGFzRHJhZnQpLCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5LlRleHRPbmx5LCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0KTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8T2JqZWN0TWFya2VyXG5cdFx0XHRcdHR5cGU9e3R5cGV9XG5cdFx0XHRcdHByZXNzPXt0aGlzLm9uT2JqZWN0TWFya2VyUHJlc3NlZC5iaW5kKHRoaXMpfVxuXHRcdFx0XHR2aXNpYmlsaXR5PXt2aXNpYmlsaXR5fVxuXHRcdFx0XHRhZGRpdGlvbmFsSW5mbz17dGhpcy5nZXRJY29uQW5kVGV4dEFkZGl0aW9uYWxJbmZvQmluZGluZ0V4cHJlc3Npb24oKX1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e3RoaXMuYXJpYUxhYmVsbGVkQnkgPyB0aGlzLmFyaWFMYWJlbGxlZEJ5IDogW119XG5cdFx0XHRcdGNsYXNzPXt0aGlzLmNsYXNzfVxuXHRcdFx0Lz5cblx0XHQpIGFzIE9iamVjdE1hcmtlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb250ZW50IG9mIHRoaXMgYnVpbGRpbmcgYmxvY2sgZm9yIHRoZSBcIkljb25Pbmx5XCIgdHlwZS5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0SWNvbk9ubHlDb250ZW50KCk6IE9iamVjdE1hcmtlciB7XG5cdFx0Y29uc3QgdHlwZSA9IGlmRWxzZShcblx0XHRcdG5vdChFbnRpdHkuSXNBY3RpdmUpLFxuXHRcdFx0T2JqZWN0TWFya2VyVHlwZS5EcmFmdCxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0RW50aXR5Lkhhc0RyYWZ0LFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0ISF0aGlzLnVzZWRJbkFuYWx5dGljYWxUYWJsZSxcblx0XHRcdFx0XHRPYmplY3RNYXJrZXJUeXBlLkxvY2tlZCxcblx0XHRcdFx0XHRpZkVsc2UocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJcIiksIE9iamVjdE1hcmtlclR5cGUuTG9ja2VkLCBPYmplY3RNYXJrZXJUeXBlLlVuc2F2ZWQpXG5cdFx0XHRcdCksXG5cdFx0XHRcdE9iamVjdE1hcmtlclR5cGUuRmxhZ2dlZFxuXHRcdFx0KVxuXHRcdCk7XG5cblx0XHRsZXQgdmlzaWJsZTtcblx0XHRpZiAodGhpcy51c2VkSW5UYWJsZSA9PT0gdHJ1ZSkge1xuXHRcdFx0dmlzaWJsZSA9IG9yKG5vdChFbnRpdHkuSXNBY3RpdmUpLCBhbmQoRW50aXR5LklzQWN0aXZlLCBFbnRpdHkuSGFzRHJhZnQpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gSWYgRW50aXR5Lkhhc0RyYWZ0IGlzIGVtcHR5LCB0aGVyZSBpcyBubyBjb250ZXh0IGF0IGFsbCwgc28gZG9uJ3Qgc2hvdyB0aGUgaW5kaWNhdG9yXG5cdFx0XHR2aXNpYmxlID0gYW5kKFxuXHRcdFx0XHRub3QoaXNFbXB0eShFbnRpdHkuSGFzRHJhZnQpKSxcblx0XHRcdFx0bm90KFVJLklzRWRpdGFibGUpLFxuXHRcdFx0XHRFbnRpdHkuSGFzRHJhZnQsXG5cdFx0XHRcdG5vdChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxPYmplY3RNYXJrZXJcblx0XHRcdFx0dHlwZT17dHlwZX1cblx0XHRcdFx0cHJlc3M9eyF0aGlzLnVzZWRJbkFuYWx5dGljYWxUYWJsZSA/IHRoaXMub25PYmplY3RNYXJrZXJQcmVzc2VkLmJpbmQodGhpcykgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHZpc2liaWxpdHk9e09iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHl9XG5cdFx0XHRcdHZpc2libGU9e3Zpc2libGV9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IFtdfVxuXHRcdFx0XHRjbGFzcz17dGhpcy5jbGFzc31cblx0XHRcdC8+XG5cdFx0KSBhcyBPYmplY3RNYXJrZXI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGlzIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IE9iamVjdE1hcmtlciB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuZHJhZnRJbmRpY2F0b3JUeXBlID09PSBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRJY29uQW5kVGV4dENvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0SWNvbk9ubHlDb250ZW50KCk7XG5cdFx0fVxuXHR9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
371
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcmFmdEluZGljYXRvciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJfZGVjNCIsInJlcXVpcmVkIiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJhbGxvd2VkVmFsdWVzIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0RHJhZnRJbmRpY2F0b3JUeXBlIiwiaW5kaWNhdG9yIiwiT2JqZWN0TWFya2VyVmlzaWJpbGl0eSIsIkljb25Pbmx5IiwiSWNvbkFuZFRleHQiLCJpbmNsdWRlcyIsInNldFByb3BlcnR5IiwiRXJyb3IiLCJhZGRBcmlhTGFiZWxsZWRCeUZvckRyYWZ0SW5kaWNhdG9yIiwiZWxlbWVudCIsImFyaWFMYWJlbGxlZEJ5cyIsImNvbnRlbnQiLCJnZXRBcmlhTGFiZWxsZWRCeSIsImFkZEFyaWFMYWJlbGxlZEJ5Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNyZWF0ZUNvbnRlbnQiLCJmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciIsImhhc0RyYWZ0RW50aXR5IiwiZHJhZnRJblByb2Nlc3NCeVVzZXIiLCJkcmFmdExhc3RDaGFuZ2VkQnlVc2VyIiwiZHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjIiwiZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MiLCJtYWNyb1Jlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwidXNlckRlc2NyaXB0aW9uIiwiZ2V0VGV4dCIsImdldERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyIsIm1ldGFEYXRhIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImNvbnRleHRQYXRoIiwiZHJhZnRBZG1pbkVsZW1lbnQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJmaW5kIiwiYSIsIm5hbWUiLCJkcmFmdEFkbWluUHJvcGVydGllcyIsInRhcmdldFR5cGUiLCJlbnRpdHlQcm9wZXJ0aWVzIiwibWFwIiwib0RyYWZ0QWRtaW5Qcm9wZXJ0eSIsImdldFBvcG92ZXJUaXRsZUJpbmRpbmdFeHByZXNzaW9uIiwiaWZFbHNlIiwibm90IiwiRW50aXR5IiwiSXNBY3RpdmUiLCJpc0hpZGRlbkRyYWZ0RW5hYmxlZCIsInBhdGhJbk1vZGVsIiwiSGFzRHJhZnQiLCJpc0VtcHR5IiwiZHJhZnRJbmRpY2F0b3JUeXBlIiwiZ2V0RHJhZnRPd25lclRleHRCaW5kaW5nRXhwcmVzc2lvbiIsImRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcyIsInBhcnRzIiwicGF0aCIsInB1c2giLCJmb3JtYXR0ZXIiLCJjcmVhdGVQb3BvdmVyIiwiY29udHJvbCIsImlzRHJhZnRXaXRoTm9DaGFuZ2VzQmluZGluZyIsImFuZCIsImRyYWZ0V2l0aE5vQ2hhbmdlc1RleHRCaW5kaW5nIiwiaXNEcmFmdFdpdGhDaGFuZ2VzQmluZGluZyIsImRyYWZ0V2l0aENoYW5nZXNUZXh0QmluZGluZyIsIm1vZGVsIiwiZm9ybWF0TWVzc2FnZSIsImlzQWN0aXZlSW5zdGFuY2VCaW5kaW5nIiwiYWN0aXZlSW5zdGFuY2VUZXh0QmluZGluZyIsInBvcG92ZXIiLCJfanN4IiwiUG9wb3ZlciIsInRpdGxlIiwic2hvd0hlYWRlciIsInZlcnRpY2FsU2Nyb2xsaW5nIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJlbmRCdXR0b24iLCJCdXR0b24iLCJpY29uIiwicHJlc3MiLCJkcmFmdFBvcG92ZXIiLCJjbG9zZSIsImNoaWxkcmVuIiwiX2pzeHMiLCJWQm94IiwidmlzaWJsZSIsIlRleHQiLCJ0ZXh0IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiYWRkRGVwZW5kZW50Iiwib25PYmplY3RNYXJrZXJQcmVzc2VkIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJiaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2V0QmluZGluZ0NvbnRleHQiLCJvcGVuQnkiLCJnZXRJY29uQW5kVGV4dEFkZGl0aW9uYWxJbmZvQmluZGluZ0V4cHJlc3Npb24iLCJvckJpbmRpbmdzIiwib3IiLCJnZXRJY29uQW5kVGV4dENvbnRlbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkhpZGRlbkRyYWZ0IiwiZW5hYmxlZCIsIm9iak1hcmtlclR5cGUiLCJPYmplY3RNYXJrZXJUeXBlIiwiVW5zYXZlZCIsIkRyYWZ0IiwiTG9ja2VkQnkiLCJVbnNhdmVkQnkiLCJGbGFnZ2VkIiwidmlzaWJpbGl0eSIsIlRleHRPbmx5IiwiT2JqZWN0TWFya2VyIiwiYmluZCIsImFkZGl0aW9uYWxJbmZvIiwiYXJpYUxhYmVsbGVkQnkiLCJyZWFjdGl2ZUFyZWFNb2RlIiwiZ2V0SWNvbk9ubHlDb250ZW50IiwidXNlZEluQW5hbHl0aWNhbFRhYmxlIiwiTG9ja2VkIiwidXNlZEluVGFibGUiLCJVSSIsIklzRWRpdGFibGUiLCJ1bmRlZmluZWQiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJEcmFmdEluZGljYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IGZvcm1hdE1lc3NhZ2UgZnJvbSBcInNhcC9iYXNlL3N0cmluZ3MvZm9ybWF0TWVzc2FnZVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgaWZFbHNlLCBpc0VtcHR5LCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBIaWRkZW5EcmFmdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEVudGl0eSwgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgT2JqZWN0TWFya2VyJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vT2JqZWN0TWFya2VyXCI7XG5pbXBvcnQgT2JqZWN0TWFya2VyIGZyb20gXCJzYXAvbS9PYmplY3RNYXJrZXJcIjtcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB7IE9iamVjdE1hcmtlclR5cGUsIE9iamVjdE1hcmtlclZpc2liaWxpdHkgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIERyYWZ0SW5kaWNhdG9yIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6RHJhZnRJbmRpY2F0b3JcbiAqIGlkPVwiU29tZUlEXCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBwcml2YXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuZHJhZnRJbmRpY2F0b3IuRHJhZnRJbmRpY2F0b3JcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyYWZ0SW5kaWNhdG9yIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxDb250cm9sPiB7XG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRHJhZnRJbmRpY2F0b3Jcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgaWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBkcmFmdEluZGljYXRvclR5cGU/OiBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25Pbmx5IHwgT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dCA9IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHQ7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgY2xhc3MgPSBcIlwiO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0cHVibGljIHVzZWRJblRhYmxlPzogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHB1YmxpYyB1c2VkSW5BbmFseXRpY2FsVGFibGU/OiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIklubGluZVwiLCBcIk92ZXJsYXlcIl0gfSlcblx0cmVhY3RpdmVBcmVhTW9kZT86IFwiSW5saW5lXCIgfCBcIk92ZXJsYXlcIjtcblxuXHRkcmFmdFBvcG92ZXI/OiBQb3BvdmVyO1xuXG5cdHByaXZhdGUgaXNIaWRkZW5EcmFmdEVuYWJsZWQ/OiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RHJhZnRJbmRpY2F0b3I+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcywgb3RoZXJzKTtcblx0fVxuXG5cdHNldERyYWZ0SW5kaWNhdG9yVHlwZShcblx0XHRpbmRpY2F0b3I6IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHkgfCBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0IHwgT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5UZXh0T25seVxuXHQpOiB2b2lkIHtcblx0XHRpZiAoW09iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHksIE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHRdLmluY2x1ZGVzKGluZGljYXRvcikpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJkcmFmdEluZGljYXRvclR5cGVcIiwgaW5kaWNhdG9yKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBBbGxvd2VkIHZhbHVlICR7aW5kaWNhdG9yfSBkb2VzIG5vdCBtYXRjaGApO1xuXHRcdH1cblx0fVxuXG5cdGFkZEFyaWFMYWJlbGxlZEJ5Rm9yRHJhZnRJbmRpY2F0b3IoZWxlbWVudDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgYXJpYUxhYmVsbGVkQnlzID0gKHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIE9iamVjdE1hcmtlcik/LmdldEFyaWFMYWJlbGxlZEJ5KCkgPz8gW107XG5cdFx0aWYgKCFhcmlhTGFiZWxsZWRCeXMuaW5jbHVkZXMoZWxlbWVudCkpIHtcblx0XHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBPYmplY3RNYXJrZXIpPy5hZGRBcmlhTGFiZWxsZWRCeShlbGVtZW50KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUnVudGltZSBmb3JtYXR0ZXIgZnVuY3Rpb24gdG8gZm9ybWF0IHRoZSBjb3JyZWN0IHRleHQgdGhhdCBkaXNwbGF5cyB0aGUgb3duZXIgb2YgYSBkcmFmdC5cblx0ICpcblx0ICogVGhpcyBpcyB1c2VkIGluIGNhc2UgdGhlIERyYWZ0SW5kaWNhdG9yIGlzIHNob3duIGZvciBhbiBhY3RpdmUgZW50aXR5IHRoYXQgaGFzIGEgZHJhZnQgb2YgYW5vdGhlciB1c2VyLlxuXHQgKiBAcGFyYW0gaGFzRHJhZnRFbnRpdHlcblx0ICogQHBhcmFtIGRyYWZ0SW5Qcm9jZXNzQnlVc2VyXG5cdCAqIEBwYXJhbSBkcmFmdExhc3RDaGFuZ2VkQnlVc2VyXG5cdCAqIEBwYXJhbSBkcmFmdEluUHJvY2Vzc0J5VXNlckRlc2Ncblx0ICogQHBhcmFtIGRyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjXG5cdCAqIEByZXR1cm5zIFRleHQgdG8gZGlzcGxheVxuXHQgKi9cblx0c3RhdGljIGZvcm1hdERyYWZ0T3duZXJUZXh0SW5Qb3BvdmVyKFxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcblx0XHR0aGlzOiB2b2lkLFxuXHRcdGhhc0RyYWZ0RW50aXR5OiBib29sZWFuLFxuXHRcdGRyYWZ0SW5Qcm9jZXNzQnlVc2VyOiBzdHJpbmcsXG5cdFx0ZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlcjogc3RyaW5nLFxuXHRcdGRyYWZ0SW5Qcm9jZXNzQnlVc2VyRGVzYzogc3RyaW5nLFxuXHRcdGRyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjOiBzdHJpbmdcblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtYWNyb1Jlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIik7XG5cdFx0aWYgKCFtYWNyb1Jlc291cmNlQnVuZGxlKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0aWYgKGhhc0RyYWZ0RW50aXR5KSB7XG5cdFx0XHRjb25zdCB1c2VyRGVzY3JpcHRpb24gPVxuXHRcdFx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlckRlc2MgfHwgZHJhZnRJblByb2Nlc3NCeVVzZXIgfHwgZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MgfHwgZHJhZnRMYXN0Q2hhbmdlZEJ5VXNlcjtcblxuXHRcdFx0aWYgKCF1c2VyRGVzY3JpcHRpb24pIHtcblx0XHRcdFx0cmV0dXJuIG1hY3JvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRklFTERfUlVOVElNRV9EUkFGVF9QT1BPVkVSX1VOU0FWRURfQ0hBTkdFU19CWV9VTktOT1dOXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGRyYWZ0SW5Qcm9jZXNzQnlVc2VyXG5cdFx0XHRcdFx0PyBtYWNyb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0ZJRUxEX1JVTlRJTUVfRFJBRlRfUE9QT1ZFUl9MT0NLRURfQllfS05PV05cIiwgW3VzZXJEZXNjcmlwdGlvbl0pXG5cdFx0XHRcdFx0OiBtYWNyb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0ZJRUxEX1JVTlRJTUVfRFJBRlRfUE9QT1ZFUl9VTlNBVkVEX0NIQU5HRVNfQllfS05PV05cIiwgW3VzZXJEZXNjcmlwdGlvbl0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gbWFjcm9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfTk9fREFUQV9URVhUXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKipcblx0ICogR2V0cyB0aGUgcHJvcGVydGllcyBvZiB0aGUgRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEgZW50aXR5IGNvbm5lY3RlZCB0byB0aGUgZ2l2ZW4gZW50aXR5IHNldFxuXHQgKlxuXHQgKiBAcmV0dXJucyBMaXN0IG9mIHByb3BlcnR5IG5hbWVzXG5cdCAqL1xuXHRnZXREcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFEYXRhOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PiB8IHVuZGVmaW5lZCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCBkcmFmdEFkbWluRWxlbWVudCA9IG1ldGFEYXRhPy50YXJnZXRFbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKGEpID0+IGEubmFtZSA9PT0gXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YVwiKTtcblx0XHRjb25zdCBkcmFmdEFkbWluUHJvcGVydGllcyA9IGRyYWZ0QWRtaW5FbGVtZW50Py50YXJnZXRUeXBlLmVudGl0eVByb3BlcnRpZXM7XG5cdFx0cmV0dXJuIGRyYWZ0QWRtaW5Qcm9wZXJ0aWVzPy5tYXAoKG9EcmFmdEFkbWluUHJvcGVydHkpID0+IG9EcmFmdEFkbWluUHJvcGVydHkubmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29uc3RydWN0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgdGV4dCBkaXNwbGF5ZWQgYXMgdGl0bGUgb2YgdGhlIHBvcHVwLlxuXHQgKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uXG5cdCAqL1xuXHRnZXRQb3BvdmVyVGl0bGVCaW5kaW5nRXhwcmVzc2lvbigpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248UHJpbWl0aXZlVHlwZT4ge1xuXHRcdHJldHVybiBpZkVsc2UoXG5cdFx0XHRub3QoRW50aXR5LklzQWN0aXZlKSxcblx0XHRcdHRoaXMuaXNIaWRkZW5EcmFmdEVuYWJsZWRcblx0XHRcdFx0PyBwYXRoSW5Nb2RlbChcIk1fRFJBRlRfUE9QT1ZFUl9BRE1JTl9VTlNBVkVEX09CSkVDVFwiLCBcInNhcC5mZS5pMThuXCIpXG5cdFx0XHRcdDogcGF0aEluTW9kZWwoXCJNX0NPTU1PTl9EUkFGVF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0RW50aXR5Lkhhc0RyYWZ0LFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0bm90KGlzRW1wdHkocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJcIikpKSxcblx0XHRcdFx0XHRwYXRoSW5Nb2RlbChcIk1fQ09NTU9OX0RSQUZUX0xPQ0tFRF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKSxcblx0XHRcdFx0XHRwYXRoSW5Nb2RlbChcIk1fRFJBRlRfUE9QT1ZFUl9BRE1JTl9VTlNBVkVEX09CSkVDVFwiLCBcInNhcC5mZS5pMThuXCIpXG5cdFx0XHRcdCksXG5cdFx0XHRcdHRoaXMuZHJhZnRJbmRpY2F0b3JUeXBlID09PSBPYmplY3RNYXJrZXJWaXNpYmlsaXR5Lkljb25BbmRUZXh0XG5cdFx0XHRcdFx0PyBcIiBcIlxuXHRcdFx0XHRcdDogcGF0aEluTW9kZWwoXCJDX0RSQUZUX1BPUE9WRVJfQURNSU5fREFUQV9EUkFGVElORk9fRkxBR0dFRF9PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ29uc3RydWN0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgdGV4dCBkaXNwbGF5ZWQgdG8gaWRlbnRpZnkgdGhlIGRyYWZ0IG93bmVyIGluIHRoZSBwb3B1cC5cblx0ICogVGhpcyBiaW5kaW5nIGlzIGNvbmZpZ3VyZWQgdG8gY2FsbCBmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlciBhdCBydW50aW1lLlxuXHQgKlxuXHQgKiBXZSBjYW5ub3QgcmVmZXJlbmNlIGZvcm1hdERyYWZ0T3duZXJUZXh0SW5Qb3BvdmVyIGRpcmVjdGx5IGFzIHdlIG5lZWQgdG8gY29uZGl0aW9uYWxseSBwYXNzIHByb3BlcnRpZXMgdGhhdCBtaWdodCBleGlzdCBvciBub3QsXG5cdCAqIGFuZCByZWZlcnJpbmcgdG8gbm9uLWV4aXN0aW5nIHByb3BlcnRpZXMgZmFpbHMgdGhlIGJpbmRpbmcuXG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldERyYWZ0T3duZXJUZXh0QmluZGluZ0V4cHJlc3Npb24oKToge1xuXHRcdHBhcnRzOiB1bmtub3duW107XG5cdFx0Zm9ybWF0dGVyOiAoXG5cdFx0XHRoYXNEcmFmdEVudGl0eTogYm9vbGVhbixcblx0XHRcdGRyYWZ0SW5Qcm9jZXNzQnlVc2VyOiBzdHJpbmcsXG5cdFx0XHRkcmFmdExhc3RDaGFuZ2VkQnlVc2VyOiBzdHJpbmcsXG5cdFx0XHRkcmFmdEluUHJvY2Vzc0J5VXNlckRlc2M6IHN0cmluZyxcblx0XHRcdGRyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjOiBzdHJpbmdcblx0XHQpID0+IHN0cmluZztcblx0fSB7XG5cdFx0Y29uc3QgZHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzID0gdGhpcy5nZXREcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXMoKTtcblxuXHRcdGNvbnN0IHBhcnRzID0gW1xuXHRcdFx0eyBwYXRoOiBcIkhhc0RyYWZ0RW50aXR5XCIsIHRhcmdldFR5cGU6IFwiYW55XCIgfSxcblx0XHRcdHsgcGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJcIiB9LFxuXHRcdFx0eyBwYXRoOiBcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VkQnlVc2VyXCIgfVxuXHRcdF07XG5cdFx0aWYgKGRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcz8uaW5jbHVkZXMoXCJJblByb2Nlc3NCeVVzZXJEZXNjcmlwdGlvblwiKSkge1xuXHRcdFx0cGFydHMucHVzaCh7IHBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyRGVzY3JpcHRpb25cIiB9KTtcblx0XHR9XG5cdFx0aWYgKGRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcz8uaW5jbHVkZXMoXCJMYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIpKSB7XG5cdFx0XHRwYXJ0cy5wdXNoKHsgcGF0aDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlckRlc2NyaXB0aW9uXCIgfSk7XG5cdFx0fVxuXG5cdFx0Ly9wYXJ0cy5wdXNoKHtwYXRoOiBcInNhcC5mZS5pMThuPlwifSlcblxuXHRcdHJldHVybiB7IHBhcnRzLCBmb3JtYXR0ZXI6IERyYWZ0SW5kaWNhdG9yLmZvcm1hdERyYWZ0T3duZXJUZXh0SW5Qb3BvdmVyIH07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIHBvcG92ZXIgY29udHJvbCB0byBkaXNwbGF5IGRyYWZ0IGluZm9ybWF0aW9uLlxuXHQgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIHRoYXQgdGhlIHBvcG92ZXIgaXMgdG8gYmUgY3JlYXRlZCBmb3Jcblx0ICogQHJldHVybnMgVGhlIGNyZWF0ZWQgcG9wb3ZlciBjb250cm9sXG5cdCAqL1xuXHRjcmVhdGVQb3BvdmVyKGNvbnRyb2w6IENvbnRyb2wpOiBQb3BvdmVyIHtcblx0XHRjb25zdCBpc0RyYWZ0V2l0aE5vQ2hhbmdlc0JpbmRpbmcgPSBhbmQobm90KEVudGl0eS5Jc0FjdGl2ZSksIGlzRW1wdHkocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlRGF0ZVRpbWVcIikpKTtcblx0XHRjb25zdCBkcmFmdFdpdGhOb0NoYW5nZXNUZXh0QmluZGluZyA9XG5cdFx0XHR0aGlzLmRyYWZ0SW5kaWNhdG9yVHlwZSA9PT0gT2JqZWN0TWFya2VyVmlzaWJpbGl0eS5JY29uQW5kVGV4dFxuXHRcdFx0XHQ/IHBhdGhJbk1vZGVsKFwiTV9EUkFGVF9QT1BPVkVSX0FETUlOX0dFTkVSSUNfTE9DS0VEX09CSkVDVF9QT1BPVkVSX1RFWFRcIiwgXCJzYXAuZmUuaTE4blwiKVxuXHRcdFx0XHQ6IHBhdGhJbk1vZGVsKFwiQ19EUkFGVF9QT1BPVkVSX0FETUlOX0RBVEFfRFJBRlRJTkZPX1BPUE9WRVJfTk9fREFUQV9URVhUXCIsIFwic2FwLmZlLmkxOG5cIik7XG5cblx0XHRjb25zdCBpc0RyYWZ0V2l0aENoYW5nZXNCaW5kaW5nID0gYW5kKFxuXHRcdFx0bm90KEVudGl0eS5Jc0FjdGl2ZSksXG5cdFx0XHRub3QoaXNFbXB0eShwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VEYXRlVGltZVwiKSkpXG5cdFx0KTtcblx0XHRjb25zdCBkcmFmdFdpdGhDaGFuZ2VzVGV4dEJpbmRpbmcgPSB7XG5cdFx0XHRwYXJ0czogW1xuXHRcdFx0XHR7IHBhdGg6IFwiTV9EUkFGVF9QT1BPVkVSX0FETUlOX0xBU1RfQ0hBTkdFX1RFWFRcIiwgbW9kZWw6IFwic2FwLmZlLmkxOG5cIiB9LFxuXHRcdFx0XHR7IHBhdGg6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZURhdGVUaW1lXCIgfVxuXHRcdFx0XSxcblx0XHRcdGZvcm1hdHRlcjogZm9ybWF0TWVzc2FnZVxuXHRcdH07XG5cblx0XHRjb25zdCBpc0FjdGl2ZUluc3RhbmNlQmluZGluZyA9IGFuZChFbnRpdHkuSXNBY3RpdmUsIG5vdChpc0VtcHR5KHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvTGFzdENoYW5nZURhdGVUaW1lXCIpKSkpO1xuXHRcdGNvbnN0IGFjdGl2ZUluc3RhbmNlVGV4dEJpbmRpbmcgPSB7IC4uLmRyYWZ0V2l0aENoYW5nZXNUZXh0QmluZGluZyB9O1xuXG5cdFx0Y29uc3QgcG9wb3ZlcjogUG9wb3ZlciA9IChcblx0XHRcdDxQb3BvdmVyXG5cdFx0XHRcdHRpdGxlPXt0aGlzLmdldFBvcG92ZXJUaXRsZUJpbmRpbmdFeHByZXNzaW9uKCl9XG5cdFx0XHRcdHNob3dIZWFkZXI9e3RydWV9XG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPXtmYWxzZX1cblx0XHRcdFx0Y2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifVxuXHRcdFx0XHRwbGFjZW1lbnQ9e1wiQXV0b1wifVxuXHRcdFx0XHRlbmRCdXR0b249e1xuXHRcdFx0XHRcdChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2RlY2xpbmVcIn1cblx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRyYWZ0UG9wb3Zlcj8uY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0KSBhcyBCdXR0b25cblx0XHRcdFx0fVxuXHRcdFx0PlxuXHRcdFx0XHQ8VkJveCBjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9PlxuXHRcdFx0XHRcdDxWQm94IHZpc2libGU9e2lzRHJhZnRXaXRoTm9DaGFuZ2VzQmluZGluZ30+XG5cdFx0XHRcdFx0XHQ8VGV4dCB0ZXh0PXtkcmFmdFdpdGhOb0NoYW5nZXNUZXh0QmluZGluZ30gLz5cblx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdFx0PFZCb3ggdmlzaWJsZT17aXNEcmFmdFdpdGhDaGFuZ2VzQmluZGluZ30+XG5cdFx0XHRcdFx0XHQ8VGV4dCB0ZXh0PXtkcmFmdFdpdGhDaGFuZ2VzVGV4dEJpbmRpbmd9IC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdDxWQm94IHZpc2libGU9e2lzQWN0aXZlSW5zdGFuY2VCaW5kaW5nfT5cblx0XHRcdFx0XHRcdDxUZXh0IHRleHQ9e3RoaXMuZ2V0RHJhZnRPd25lclRleHRCaW5kaW5nRXhwcmVzc2lvbigpfSAvPlxuXHRcdFx0XHRcdFx0PFRleHQgY2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpblRvcFwifSB0ZXh0PXthY3RpdmVJbnN0YW5jZVRleHRCaW5kaW5nfSAvPlxuXHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0PC9WQm94PlxuXHRcdFx0PC9Qb3BvdmVyPlxuXHRcdCkgYXMgUG9wb3ZlcjtcblxuXHRcdENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoY29udHJvbCkuYWRkRGVwZW5kZW50KHBvcG92ZXIpO1xuXHRcdHJldHVybiBwb3BvdmVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgcHJlc3Npbmcgb2YgdGhlIG9iamVjdCBtYXJrZXIgYnkgb3BlbmluZyBhIGNvcnJlc3BvbmRpbmcgcG9wb3Zlci5cblx0ICogQHBhcmFtIGV2ZW50IEV2ZW50IG9iamVjdCBwYXNzZWQgZnJvbSB0aGUgcHJlc3MgZXZlbnRcblx0ICovXG5cdG9uT2JqZWN0TWFya2VyUHJlc3NlZChldmVudDogT2JqZWN0TWFya2VyJFByZXNzRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIE9EYXRhVjRDb250ZXh0O1xuXG5cdFx0dGhpcy5kcmFmdFBvcG92ZXIgPz89IHRoaXMuY3JlYXRlUG9wb3Zlcihzb3VyY2UpO1xuXG5cdFx0dGhpcy5kcmFmdFBvcG92ZXIuc2V0QmluZGluZ0NvbnRleHQoYmluZGluZ0NvbnRleHQpO1xuXHRcdHRoaXMuZHJhZnRQb3BvdmVyLm9wZW5CeShzb3VyY2UsIGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBcImFkZGl0aW9uYWxJbmZvXCIgYXR0cmlidXRlIGluIHRoZSBcIkljb25BbmRUZXh0XCIgY2FzZS5cblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHQgKi9cblx0Z2V0SWNvbkFuZFRleHRBZGRpdGlvbmFsSW5mb0JpbmRpbmdFeHByZXNzaW9uKCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0XHRjb25zdCBkcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXMgPSB0aGlzLmdldERyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhUHJvcGVydGllcygpO1xuXG5cdFx0Y29uc3Qgb3JCaW5kaW5ncyA9IFtdO1xuXHRcdGlmIChkcmFmdEFkbWluaXN0cmF0aXZlRGF0YVByb3BlcnRpZXM/LmluY2x1ZGVzKFwiSW5Qcm9jZXNzQnlVc2VyRGVzY3JpcHRpb25cIikpIHtcblx0XHRcdG9yQmluZGluZ3MucHVzaChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0luUHJvY2Vzc0J5VXNlckRlc2NyaXB0aW9uXCIpKTtcblx0XHR9XG5cdFx0b3JCaW5kaW5ncy5wdXNoKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIpKTtcblx0XHRpZiAoZHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFQcm9wZXJ0aWVzPy5pbmNsdWRlcyhcIkxhc3RDaGFuZ2VkQnlVc2VyRGVzY3JpcHRpb25cIikpIHtcblx0XHRcdG9yQmluZGluZ3MucHVzaChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0xhc3RDaGFuZ2VkQnlVc2VyRGVzY3JpcHRpb25cIikpO1xuXHRcdH1cblx0XHRvckJpbmRpbmdzLnB1c2gocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlclwiKSk7XG5cblx0XHRyZXR1cm4gaWZFbHNlPHN0cmluZz4oRW50aXR5Lkhhc0RyYWZ0LCBvciguLi5vckJpbmRpbmdzKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiwgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGlzIGJ1aWxkaW5nIGJsb2NrIGZvciB0aGUgXCJJY29uQW5kVGV4dFwiIHR5cGUuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldEljb25BbmRUZXh0Q29udGVudCgpOiBPYmplY3RNYXJrZXIge1xuXHRcdHRoaXMuaXNIaWRkZW5EcmFmdEVuYWJsZWQgPSAodGhpcy5nZXRBcHBDb21wb25lbnQoKT8uZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5IaWRkZW5EcmFmdCBhcyBIaWRkZW5EcmFmdClcblx0XHRcdD8uZW5hYmxlZDtcblx0XHRjb25zdCBvYmpNYXJrZXJUeXBlID0gdGhpcy5pc0hpZGRlbkRyYWZ0RW5hYmxlZCA/IE9iamVjdE1hcmtlclR5cGUuVW5zYXZlZCA6IE9iamVjdE1hcmtlclR5cGUuRHJhZnQ7XG5cdFx0Y29uc3QgdHlwZSA9IGlmRWxzZShcblx0XHRcdG5vdChFbnRpdHkuSXNBY3RpdmUpLFxuXHRcdFx0b2JqTWFya2VyVHlwZSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0RW50aXR5Lkhhc0RyYWZ0LFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0cGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9JblByb2Nlc3NCeVVzZXJcIiksXG5cdFx0XHRcdFx0T2JqZWN0TWFya2VyVHlwZS5Mb2NrZWRCeSxcblx0XHRcdFx0XHRpZkVsc2UocGF0aEluTW9kZWwoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9MYXN0Q2hhbmdlZEJ5VXNlclwiKSwgT2JqZWN0TWFya2VyVHlwZS5VbnNhdmVkQnksIE9iamVjdE1hcmtlclR5cGUuVW5zYXZlZClcblx0XHRcdFx0KSxcblx0XHRcdFx0T2JqZWN0TWFya2VyVHlwZS5GbGFnZ2VkXG5cdFx0XHQpXG5cdFx0KTtcblxuXHRcdGNvbnN0IHZpc2liaWxpdHkgPSBpZkVsc2Uobm90KEVudGl0eS5IYXNEcmFmdCksIE9iamVjdE1hcmtlclZpc2liaWxpdHkuVGV4dE9ubHksIE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHQpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxPYmplY3RNYXJrZXJcblx0XHRcdFx0dHlwZT17dHlwZX1cblx0XHRcdFx0cHJlc3M9e3RoaXMub25PYmplY3RNYXJrZXJQcmVzc2VkLmJpbmQodGhpcyl9XG5cdFx0XHRcdHZpc2liaWxpdHk9e3Zpc2liaWxpdHl9XG5cdFx0XHRcdGFkZGl0aW9uYWxJbmZvPXt0aGlzLmdldEljb25BbmRUZXh0QWRkaXRpb25hbEluZm9CaW5kaW5nRXhwcmVzc2lvbigpfVxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeSA/IHRoaXMuYXJpYUxhYmVsbGVkQnkgOiBbXX1cblx0XHRcdFx0Y2xhc3M9e3RoaXMuY2xhc3N9XG5cdFx0XHRcdHJlYWN0aXZlQXJlYU1vZGU9e3RoaXMucmVhY3RpdmVBcmVhTW9kZX1cblx0XHRcdC8+XG5cdFx0KSBhcyBPYmplY3RNYXJrZXI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGlzIGJ1aWxkaW5nIGJsb2NrIGZvciB0aGUgXCJJY29uT25seVwiIHR5cGUuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldEljb25Pbmx5Q29udGVudCgpOiBPYmplY3RNYXJrZXIge1xuXHRcdGNvbnN0IHR5cGUgPSBpZkVsc2UoXG5cdFx0XHRub3QoRW50aXR5LklzQWN0aXZlKSxcblx0XHRcdE9iamVjdE1hcmtlclR5cGUuRHJhZnQsXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdEVudGl0eS5IYXNEcmFmdCxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdCEhdGhpcy51c2VkSW5BbmFseXRpY2FsVGFibGUsXG5cdFx0XHRcdFx0T2JqZWN0TWFya2VyVHlwZS5Mb2NrZWQsXG5cdFx0XHRcdFx0aWZFbHNlKHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvSW5Qcm9jZXNzQnlVc2VyXCIpLCBPYmplY3RNYXJrZXJUeXBlLkxvY2tlZCwgT2JqZWN0TWFya2VyVHlwZS5VbnNhdmVkKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRPYmplY3RNYXJrZXJUeXBlLkZsYWdnZWRcblx0XHRcdClcblx0XHQpO1xuXG5cdFx0bGV0IHZpc2libGU7XG5cdFx0aWYgKHRoaXMudXNlZEluVGFibGUgPT09IHRydWUpIHtcblx0XHRcdHZpc2libGUgPSBvcihub3QoRW50aXR5LklzQWN0aXZlKSwgRW50aXR5Lkhhc0RyYWZ0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gSWYgRW50aXR5Lkhhc0RyYWZ0IGlzIGVtcHR5LCB0aGVyZSBpcyBubyBjb250ZXh0IGF0IGFsbCwgc28gZG9uJ3Qgc2hvdyB0aGUgaW5kaWNhdG9yXG5cdFx0XHR2aXNpYmxlID0gYW5kKFxuXHRcdFx0XHRub3QoaXNFbXB0eShFbnRpdHkuSGFzRHJhZnQpKSxcblx0XHRcdFx0bm90KFVJLklzRWRpdGFibGUpLFxuXHRcdFx0XHRFbnRpdHkuSGFzRHJhZnQsXG5cdFx0XHRcdG5vdChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxPYmplY3RNYXJrZXJcblx0XHRcdFx0dHlwZT17dHlwZX1cblx0XHRcdFx0cHJlc3M9eyF0aGlzLnVzZWRJbkFuYWx5dGljYWxUYWJsZSA/IHRoaXMub25PYmplY3RNYXJrZXJQcmVzc2VkLmJpbmQodGhpcykgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHZpc2liaWxpdHk9e09iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbk9ubHl9XG5cdFx0XHRcdHZpc2libGU9e3Zpc2libGV9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IFtdfVxuXHRcdFx0XHRjbGFzcz17dGhpcy5jbGFzc31cblx0XHRcdFx0cmVhY3RpdmVBcmVhTW9kZT17dGhpcy5yZWFjdGl2ZUFyZWFNb2RlfVxuXHRcdFx0Lz5cblx0XHQpIGFzIE9iamVjdE1hcmtlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb250ZW50IG9mIHRoaXMgYnVpbGRpbmcgYmxvY2suXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogT2JqZWN0TWFya2VyIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5kcmFmdEluZGljYXRvclR5cGUgPT09IE9iamVjdE1hcmtlclZpc2liaWxpdHkuSWNvbkFuZFRleHQpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldEljb25BbmRUZXh0Q29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRJY29uT25seUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVZBLElBWXFCQSxjQUFjLElBQUFDLElBQUEsR0FEbENDLGNBQWMsQ0FBQyw2Q0FBNkMsQ0FBQyxFQUFBQyxLQUFBLEdBSzVEQyxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHREYsUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBR0RILFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkRyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdETCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHRE4sUUFBUSxDQUFDO0lBQ1RDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBTSxLQUFBLEdBR0RQLFFBQVEsQ0FBQztJQUNUQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQU8sS0FBQSxHQUdEUixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRVEsYUFBYSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVM7RUFBRSxDQUFDLENBQUMsRUFBQVosSUFB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
@@ -68,6 +68,9 @@ export default class DraftIndicator extends BuildingBlock<Control> {
68
68
  })
69
69
  public usedInAnalyticalTable?: boolean;
70
70
 
71
+ @property({ type: "string", allowedValues: ["Inline", "Overlay"] })
72
+ reactiveAreaMode?: "Inline" | "Overlay";
73
+
71
74
  draftPopover?: Popover;
72
75
 
73
76
  private isHiddenDraftEnabled?: boolean;
@@ -345,6 +348,7 @@ export default class DraftIndicator extends BuildingBlock<Control> {
345
348
  additionalInfo={this.getIconAndTextAdditionalInfoBindingExpression()}
346
349
  ariaLabelledBy={this.ariaLabelledBy ? this.ariaLabelledBy : []}
347
350
  class={this.class}
351
+ reactiveAreaMode={this.reactiveAreaMode}
348
352
  />
349
353
  ) as ObjectMarker;
350
354
  }
@@ -370,7 +374,7 @@ export default class DraftIndicator extends BuildingBlock<Control> {
370
374
 
371
375
  let visible;
372
376
  if (this.usedInTable === true) {
373
- visible = or(not(Entity.IsActive), and(Entity.IsActive, Entity.HasDraft));
377
+ visible = or(not(Entity.IsActive), Entity.HasDraft);
374
378
  } else {
375
379
  // If Entity.HasDraft is empty, there is no context at all, so don't show the indicator
376
380
  visible = and(
@@ -389,6 +393,7 @@ export default class DraftIndicator extends BuildingBlock<Control> {
389
393
  visible={visible}
390
394
  ariaLabelledBy={this.ariaLabelledBy ? this.ariaLabelledBy : []}
391
395
  class={this.class}
396
+ reactiveAreaMode={this.reactiveAreaMode}
392
397
  />
393
398
  ) as ObjectMarker;
394
399
  }