@sapui5/sap.fe.core 1.103.0 → 1.104.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 (162) hide show
  1. package/package.json +3 -3
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +12 -5
  4. package/src/sap/fe/core/AppComponent.ts +9 -3
  5. package/src/sap/fe/core/AppStateHandler.js +74 -62
  6. package/src/sap/fe/core/AppStateHandler.ts +24 -29
  7. package/src/sap/fe/core/CommonUtils.js +10 -34
  8. package/src/sap/fe/core/CommonUtils.ts +10 -43
  9. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
  10. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
  11. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +582 -207
  12. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +237 -88
  13. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +4 -4
  14. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +4 -3
  15. package/src/sap/fe/core/controllerextensions/EditFlow.js +257 -219
  16. package/src/sap/fe/core/controllerextensions/EditFlow.ts +103 -108
  17. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +80 -54
  18. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +40 -44
  19. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +28 -26
  20. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -30
  21. package/src/sap/fe/core/controllerextensions/InternalRouting.js +89 -47
  22. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +85 -48
  23. package/src/sap/fe/core/controllerextensions/MassEdit.js +2 -2
  24. package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
  25. package/src/sap/fe/core/controllerextensions/PageReady.js +2 -2
  26. package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -1
  27. package/src/sap/fe/core/controllerextensions/Share.js +153 -122
  28. package/src/sap/fe/core/controllerextensions/Share.ts +93 -95
  29. package/src/sap/fe/core/controllerextensions/ViewState.js +139 -73
  30. package/src/sap/fe/core/controllerextensions/ViewState.ts +78 -90
  31. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -5
  32. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +5 -3
  33. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +18 -13
  34. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +17 -15
  35. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +88 -17
  36. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +105 -31
  37. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +5 -4
  38. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +28 -32
  39. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +10 -17
  40. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -6
  41. package/src/sap/fe/core/controls/FileWrapper.js +6 -1
  42. package/src/sap/fe/core/controls/FileWrapper.ts +4 -0
  43. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -3
  44. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +2 -2
  45. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  46. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -2
  47. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
  48. package/src/sap/fe/core/converters/ConverterContext.js +1 -1
  49. package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
  50. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  51. package/src/sap/fe/core/converters/ManifestSettings.ts +3 -1
  52. package/src/sap/fe/core/converters/MetaModelConverter.js +15 -4
  53. package/src/sap/fe/core/converters/MetaModelConverter.ts +10 -3
  54. package/src/sap/fe/core/converters/annotations/DataField.js +5 -2
  55. package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
  56. package/src/sap/fe/core/converters/common/AnnotationConverter.js +11 -11
  57. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  58. package/src/sap/fe/core/converters/controls/Common/Chart.ts +4 -8
  59. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +4 -2
  60. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +25 -30
  61. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -2
  62. package/src/sap/fe/core/converters/controls/Common/Form.ts +9 -14
  63. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  64. package/src/sap/fe/core/converters/controls/Common/KPI.ts +16 -15
  65. package/src/sap/fe/core/converters/controls/Common/Table.js +8 -15
  66. package/src/sap/fe/core/converters/controls/Common/Table.ts +14 -30
  67. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  68. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +3 -4
  69. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
  70. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +2 -2
  71. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +5 -2
  72. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +4 -2
  73. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  74. package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -3
  75. package/src/sap/fe/core/converters/helpers/ID.js +3 -1
  76. package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
  77. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  78. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -3
  79. package/src/sap/fe/core/converters/templates/ListReportConverter.js +27 -15
  80. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +42 -27
  81. package/src/sap/fe/core/formatters/StandardFormatter.js +13 -6
  82. package/src/sap/fe/core/formatters/StandardFormatter.ts +20 -14
  83. package/src/sap/fe/core/helpers/BindingToolkit.js +36 -13
  84. package/src/sap/fe/core/helpers/BindingToolkit.ts +37 -11
  85. package/src/sap/fe/core/helpers/ClassSupport.js +30 -2
  86. package/src/sap/fe/core/helpers/ClassSupport.ts +23 -0
  87. package/src/sap/fe/core/helpers/MassEditHelper.js +94 -89
  88. package/src/sap/fe/core/helpers/MassEditHelper.ts +128 -157
  89. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  90. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  91. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  92. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  93. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  94. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  95. package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
  96. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
  97. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  98. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  99. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  100. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  101. package/src/sap/fe/core/library.js +1 -1
  102. package/src/sap/fe/core/messagebundle.properties +4 -37
  103. package/src/sap/fe/core/messagebundle_ar.properties +20 -40
  104. package/src/sap/fe/core/messagebundle_bg.properties +20 -40
  105. package/src/sap/fe/core/messagebundle_ca.properties +20 -40
  106. package/src/sap/fe/core/messagebundle_cs.properties +20 -40
  107. package/src/sap/fe/core/messagebundle_cy.properties +20 -40
  108. package/src/sap/fe/core/messagebundle_da.properties +20 -40
  109. package/src/sap/fe/core/messagebundle_de.properties +20 -40
  110. package/src/sap/fe/core/messagebundle_el.properties +20 -40
  111. package/src/sap/fe/core/messagebundle_en.properties +19 -39
  112. package/src/sap/fe/core/messagebundle_en_GB.properties +19 -39
  113. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +21 -39
  114. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +19 -39
  115. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +22 -18
  116. package/src/sap/fe/core/messagebundle_es.properties +22 -42
  117. package/src/sap/fe/core/messagebundle_es_MX.properties +20 -40
  118. package/src/sap/fe/core/messagebundle_et.properties +20 -40
  119. package/src/sap/fe/core/messagebundle_fi.properties +20 -40
  120. package/src/sap/fe/core/messagebundle_fr.properties +21 -41
  121. package/src/sap/fe/core/messagebundle_fr_CA.properties +20 -40
  122. package/src/sap/fe/core/messagebundle_hi.properties +20 -40
  123. package/src/sap/fe/core/messagebundle_hr.properties +20 -40
  124. package/src/sap/fe/core/messagebundle_hu.properties +20 -40
  125. package/src/sap/fe/core/messagebundle_id.properties +20 -40
  126. package/src/sap/fe/core/messagebundle_it.properties +20 -40
  127. package/src/sap/fe/core/messagebundle_iw.properties +20 -40
  128. package/src/sap/fe/core/messagebundle_ja.properties +20 -40
  129. package/src/sap/fe/core/messagebundle_kk.properties +20 -40
  130. package/src/sap/fe/core/messagebundle_ko.properties +25 -45
  131. package/src/sap/fe/core/messagebundle_lt.properties +20 -40
  132. package/src/sap/fe/core/messagebundle_lv.properties +20 -40
  133. package/src/sap/fe/core/messagebundle_ms.properties +20 -40
  134. package/src/sap/fe/core/messagebundle_nl.properties +22 -42
  135. package/src/sap/fe/core/messagebundle_no.properties +20 -40
  136. package/src/sap/fe/core/messagebundle_pl.properties +21 -41
  137. package/src/sap/fe/core/messagebundle_pt.properties +21 -41
  138. package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -40
  139. package/src/sap/fe/core/messagebundle_ro.properties +20 -40
  140. package/src/sap/fe/core/messagebundle_ru.properties +20 -40
  141. package/src/sap/fe/core/messagebundle_sh.properties +20 -40
  142. package/src/sap/fe/core/messagebundle_sk.properties +20 -40
  143. package/src/sap/fe/core/messagebundle_sl.properties +20 -40
  144. package/src/sap/fe/core/messagebundle_sv.properties +20 -40
  145. package/src/sap/fe/core/messagebundle_th.properties +20 -40
  146. package/src/sap/fe/core/messagebundle_tr.properties +20 -40
  147. package/src/sap/fe/core/messagebundle_uk.properties +20 -40
  148. package/src/sap/fe/core/messagebundle_vi.properties +20 -40
  149. package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -40
  150. package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -40
  151. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +96 -68
  152. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +58 -59
  153. package/src/sap/fe/core/services/NavigationServiceFactory.js +10 -7
  154. package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -7
  155. package/src/sap/fe/core/services/ShellServicesFactory.js +21 -1
  156. package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -0
  157. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +211 -190
  158. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +114 -120
  159. package/src/sap/fe/core/templating/FilterHelper.js +7 -7
  160. package/src/sap/fe/core/templating/FilterHelper.ts +5 -5
  161. package/src/sap/fe/core/templating/UIFormatters.js +5 -3
  162. package/src/sap/fe/core/templating/UIFormatters.ts +7 -5
@@ -33,6 +33,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
33
33
 
34
34
  (function (FormElementType) {
35
35
  FormElementType["Default"] = "Default";
36
+ FormElementType["Slot"] = "Slot";
36
37
  FormElementType["Annotation"] = "Annotation";
37
38
  })(FormElementType || (FormElementType = {}));
38
39
 
@@ -131,7 +132,7 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
131
132
  formElements[fieldId] = {
132
133
  key: fieldId,
133
134
  id: "CustomFormElement::".concat(fieldId),
134
- type: FormElementType.Default,
135
+ type: manifestFormContainer.fields[fieldId].type || FormElementType.Default,
135
136
  template: manifestFormContainer.fields[fieldId].template,
136
137
  label: manifestFormContainer.fields[fieldId].label,
137
138
  position: manifestFormContainer.fields[fieldId].position || {
@@ -265,4 +266,4 @@ sap.ui.define(["sap/fe/core/converters/annotations/DataField", "sap/fe/core/help
265
266
  _exports.createFormDefinition = createFormDefinition;
266
267
  return _exports;
267
268
  }, false);
268
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsInZhbHVlT2YiLCJhbm5vdGF0aW9ucyIsIlVJIiwiUGFydE9mUHJldmlldyIsInVuZGVmaW5lZCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsIiRUeXBlIiwiSGlkZGVuIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJub3QiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb250YWluc1RhcmdldCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJhRm9ybUVsZW1lbnRzIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJmaWx0ZXIiLCJhY3Rpb24iLCJmYWNldE5hbWUiLCJsZW5ndGgiLCJvQWN0aW9uU2hvd0RldGFpbHMiLCJnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCIsInRleHQiLCJpZkVsc2UiLCJwYXRoSW5Nb2RlbCIsIkFjdGlvblR5cGUiLCJTaG93Rm9ybURldGFpbHMiLCJwcmVzcyIsInNvbWUiLCJvRm9ybUVsZW1lbnQiLCJlbnRpdHlTZXQiLCJnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24iLCJmb3JtQ29udGFpbmVycyIsIkZhY2V0cyIsImZhY2V0IiwiaXNSZWZlcmVuY2VGYWNldCIsImNyZWF0ZUZvcm1EZWZpbml0aW9uIiwiZ2V0Rm9ybUlEIiwidXNlRm9ybUNvbnRhaW5lckxhYmVscyIsImhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXciLCJjaGlsZEZhY2V0IiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFnQ1lBLGU7O2FBQUFBLGU7QUFBQUEsSUFBQUEsZTtBQUFBQSxJQUFBQSxlO0tBQUFBLGUsS0FBQUEsZTs7OztBQXVDWjtBQUNBO0FBQ0E7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QUhyQjtBQU1Od0YsVUFBQUEsY0FBYyxFQUFFRCw4QkFBOEIsQ0FBQ2pGLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBTnhDO0FBT05LLFVBQUFBLFNBQVMsRUFBRUE7QUFQTCxTQUFQOztBQVNEO0FBQ0MsZUFBTztBQUNOYixVQUFBQSxFQUFFLEVBQUVnRCxTQUFTLENBQUM7QUFBRXJDLFlBQUFBLEtBQUssRUFBRWxEO0FBQVQsV0FBRCxDQURQO0FBRU53RixVQUFBQSxzQkFBc0IsRUFBRSxLQUZsQjtBQUdOQyxVQUFBQSx5QkFBeUIsRUFBRSw0QkFBQXpGLGVBQWUsQ0FBQ0wsV0FBaEIsK0dBQTZCQyxFQUE3QiwrR0FBaUNDLGFBQWpDLG9GQUFnREgsT0FBaEQsUUFBOEQsS0FIbkY7QUFJTndGLFVBQUFBLGNBQWMsRUFBRSxDQUFDaEQsZ0JBQWdCLENBQUNsQyxlQUFELEVBQWtCQyxnQkFBbEIsRUFBb0M4QyxPQUFwQyxDQUFqQixDQUpWO0FBS05LLFVBQUFBLFNBQVMsRUFBRUE7QUFMTCxTQUFQOztBQU9EO0FBQ0MsY0FBTSxJQUFJdUMsS0FBSixDQUFVLCtDQUFWLENBQU47QUFyQkY7QUF1QkEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQW5ub3RhdGlvblRlcm0gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sbGVjdGlvbkZhY2V0VHlwZXMsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXAsXG5cdElkZW50aWZpY2F0aW9uLFxuXHRQYXJ0T2ZQcmV2aWV3LFxuXHRSZWZlcmVuY2VGYWNldFR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IGdldFNlbWFudGljT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlQWN0aW9uLCBDb252ZXJ0ZXJBY3Rpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpZkVsc2UsIG5vdCwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCwgZ2V0VGFyZ2V0T2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhYmxlT2JqZWN0LCBDdXN0b21FbGVtZW50IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBpbnNlcnRDdXN0b21FbGVtZW50cywgUGxhY2VtZW50IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZXRGb3JtSUQsIGdldEZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IEtleUhlbHBlciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtYXRPcHRpb25zVHlwZSwgRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcblxuZXhwb3J0IHR5cGUgRm9ybURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGJvb2xlYW47XG5cdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGJvb2xlYW47XG5cdGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW107XG5cdGlzVmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG59O1xuXG5leHBvcnQgZW51bSBGb3JtRWxlbWVudFR5cGUge1xuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0O1xuXHRcdHRlbXBsYXRlOiBzdHJpbmc7XG5cdH1cbj47XG5cbmV4cG9ydCB0eXBlIEZvcm1FbGVtZW50ID0gQ3VzdG9tRm9ybUVsZW1lbnQgfCBBbm5vdGF0aW9uRm9ybUVsZW1lbnQ7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHtcblx0aWQ/OiBzdHJpbmc7XG5cdGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aXNWaXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRhY3Rpb25zPzogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGVmYXVsdCBmb3JtYXQgb3B0aW9ucyBmb3IgdGV4dCBmaWVsZHMgb24gYSBmb3JtLlxuICpcbiAqIEByZXR1cm5zIENvbGxlY3Rpb24gb2YgZm9ybWF0IG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlc1xuICovXG5mdW5jdGlvbiBnZXREZWZhdWx0Rm9ybWF0T3B0aW9uc0ZvckZvcm0oKTogRm9ybWF0T3B0aW9uc1R5cGUge1xuXHRyZXR1cm4ge1xuXHRcdHRleHRMaW5lc0VkaXQ6IDRcblx0fTtcbn1cblxuZnVuY3Rpb24gaXNGaWVsZFBhcnRPZlByZXZpZXcoZmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIGZvcm1QYXJ0T2ZQcmV2aWV3PzogUGFydE9mUHJldmlldyk6IGJvb2xlYW4ge1xuXHQvLyBCb3RoIGVhY2ggZm9ybSBhbmQgZmllbGQgY2FuIGhhdmUgdGhlIFBhcnRPZlByZXZpZXcgYW5ub3RhdGlvbi4gT25seSBpZiB0aGUgZm9ybSBpcyBub3QgaGlkZGVuIChub3QgcGFydE9mUHJldmlldykgd2UgYWxsb3cgdG9nZ2xpbmcgb24gZmllbGQgbGV2ZWxcblx0cmV0dXJuIChcblx0XHRmb3JtUGFydE9mUHJldmlldz8udmFsdWVPZigpID09PSBmYWxzZSB8fFxuXHRcdGZpZWxkLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldyA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3LnZhbHVlT2YoKSA9PT0gdHJ1ZVxuXHQpO1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10ge1xuXHRjb25zdCBmb3JtRWxlbWVudHM6IEFubm90YXRpb25Gb3JtRWxlbWVudFtdID0gW107XG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUFubm90YXRpb246IEFubm90YXRpb25UZXJtPElkZW50aWZpY2F0aW9uPiB8IEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+ID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhc1xuXHRcdHwgQW5ub3RhdGlvblRlcm08SWRlbnRpZmljYXRpb24+XG5cdFx0fCBBbm5vdGF0aW9uVGVybTxGaWVsZEdyb3VwPjtcblx0Y29udmVydGVyQ29udGV4dCA9IHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQ7XG5cblx0ZnVuY3Rpb24gZ2V0RGF0YUZpZWxkc0Zyb21Bbm5vdGF0aW9ucyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc6IFBhcnRPZlByZXZpZXcgfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoID0gZ2V0U2VtYW50aWNPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQsIGZpZWxkKTtcblx0XHRpZiAoXG5cdFx0XHRmaWVsZC4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uICYmXG5cdFx0XHRmaWVsZC4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uICYmXG5cdFx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpICE9PSB0cnVlXG5cdFx0KSB7XG5cdFx0XHRmb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChmaWVsZCksXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2AsXG5cdFx0XHRcdHNlbWFudGljT2JqZWN0UGF0aDogc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCxcblx0XHRcdFx0Zm9ybWF0T3B0aW9uczogZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtKCksXG5cdFx0XHRcdGlzUGFydE9mUHJldmlldzogaXNGaWVsZFBhcnRPZlByZXZpZXcoZmllbGQsIGZvcm1QYXJ0T2ZQcmV2aWV3KVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0c3dpdGNoIChmb3JtQW5ub3RhdGlvbj8udGVybSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRmllbGRHcm91cDpcblx0XHRcdChmb3JtQW5ub3RhdGlvbiBhcyBBbm5vdGF0aW9uVGVybTxGaWVsZEdyb3VwPikuRGF0YS5mb3JFYWNoKChmaWVsZCkgPT5cblx0XHRcdFx0Z2V0RGF0YUZpZWxkc0Zyb21Bbm5vdGF0aW9ucyhmaWVsZCwgZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldylcblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0KGZvcm1Bbm5vdGF0aW9uIGFzIEFubm90YXRpb25UZXJtPElkZW50aWZpY2F0aW9uPikuZm9yRWFjaCgoZmllbGQpID0+XG5cdFx0XHRcdGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQsIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcpXG5cdFx0XHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5EYXRhUG9pbnQ6XG5cdFx0XHRmb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdC8vIGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChmb3JtQW5ub3RhdGlvbiksXG5cdFx0XHRcdGtleTogYERhdGFQb2ludDo6JHtmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgPyBmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgOiBcIlwifWAsXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZvcm1Bbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSl9L2Bcblx0XHRcdH0pO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBDb21tdW5pY2F0aW9uQW5ub3RhdGlvblRlcm1zLkNvbnRhY3Q6XG5cdFx0XHRmb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdC8vIGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChmb3JtQW5ub3RhdGlvbiksXG5cdFx0XHRcdGtleTogYENvbnRhY3Q6OiR7Zm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIn1gLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmb3JtQW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpfS9gXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHRyZXR1cm4gZm9ybUVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUVsZW1lbnRzRnJvbU1hbmlmZXN0KFxuXHRmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUZvcm1FbGVtZW50PiB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IG1hbmlmZXN0Rm9ybUNvbnRhaW5lcjogRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbiA9IG1hbmlmZXN0V3JhcHBlci5nZXRGb3JtQ29udGFpbmVyKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBmb3JtRWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUZvcm1FbGVtZW50PiA9IHt9O1xuXHRpZiAobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpIHtcblx0XHRPYmplY3Qua2V5cyhtYW5pZmVzdEZvcm1Db250YWluZXI/LmZpZWxkcykuZm9yRWFjaCgoZmllbGRJZCkgPT4ge1xuXHRcdFx0Zm9ybUVsZW1lbnRzW2ZpZWxkSWRdID0ge1xuXHRcdFx0XHRrZXk6IGZpZWxkSWQsXG5cdFx0XHRcdGlkOiBgQ3VzdG9tRm9ybUVsZW1lbnQ6OiR7ZmllbGRJZH1gLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuRGVmYXVsdCxcblx0XHRcdFx0dGVtcGxhdGU6IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0udGVtcGxhdGUsXG5cdFx0XHRcdGxhYmVsOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLmxhYmVsLFxuXHRcdFx0XHRwb3NpdGlvbjogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5wb3NpdGlvbiB8fCB7XG5cdFx0XHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9ybWF0T3B0aW9uczoge1xuXHRcdFx0XHRcdC4uLmdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRcdC4uLm1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0uZm9ybWF0T3B0aW9uc1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBmb3JtRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQ29udGFpbmVyKFxuXHRmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybUNvbnRhaW5lciB7XG5cdGNvbnN0IHNGb3JtQ29udGFpbmVySWQgPSBnZW5lcmF0ZShbeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH1dKTtcblx0Y29uc3Qgc0Fubm90YXRpb25QYXRoID0gYC8ke2ZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWV9YDtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBpc1Zpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihub3QoZXF1YWwodHJ1ZSwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbikpKSk7XG5cdGxldCBzRW50aXR5U2V0UGF0aCE6IHN0cmluZztcblx0Ly8gcmVzb2x2ZWRUYXJnZXQgZG9lc24ndCBoYXZlIGEgZW50aXR5U2V0IGluIGNhc2UgQ29udGFpbm1lbnRzIGFuZCBQYXJhbXRlcml6ZWQgc2VydmljZXMuXG5cdGlmIChcblx0XHRyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpICYmXG5cdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSAhPT0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKVxuXHQpIHtcblx0XHRzRW50aXR5U2V0UGF0aCA9IGdldFRhcmdldEVudGl0eVNldFBhdGgocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpO1xuXHR9IGVsc2UgaWYgKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnRhcmdldE9iamVjdD8uY29udGFpbnNUYXJnZXQgPT09IHRydWUpIHtcblx0XHRzRW50aXR5U2V0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksIGZhbHNlKTtcblx0fVxuXHRjb25zdCBhRm9ybUVsZW1lbnRzID0gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoXG5cdFx0Z2V0Rm9ybUVsZW1lbnRzRnJvbUFubm90YXRpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0Z2V0Rm9ybUVsZW1lbnRzRnJvbU1hbmlmZXN0KGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0eyBmb3JtYXRPcHRpb25zOiBcIm92ZXJ3cml0ZVwiIH1cblx0KTtcblxuXHRhY3Rpb25zID0gYWN0aW9ucyAhPT0gdW5kZWZpbmVkID8gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmZhY2V0TmFtZSA9PSBmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSA6IFtdO1xuXHRpZiAoYWN0aW9ucy5sZW5ndGggPT09IDApIHtcblx0XHRhY3Rpb25zID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3Qgb0FjdGlvblNob3dEZXRhaWxzOiBCYXNlQWN0aW9uID0ge1xuXHRcdGlkOiBnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRChzRm9ybUNvbnRhaW5lcklkLCBcIlNob3dIaWRlRGV0YWlsc1wiKSxcblx0XHRrZXk6IFwiU3RhbmRhcmRBY3Rpb246OlNob3dIaWRlRGV0YWlsc1wiLFxuXHRcdHRleHQ6IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRlcXVhbChwYXRoSW5Nb2RlbChcInNob3dEZXRhaWxzXCIsIFwiaW50ZXJuYWxcIiksIHRydWUpLFxuXHRcdFx0XHRwYXRoSW5Nb2RlbChcIlRfQ09NTU9OX09CSkVDVF9QQUdFX0hJREVfRk9STV9DT05UQUlORVJfREVUQUlMU1wiLCBcInNhcC5mZS5pMThuXCIpLFxuXHRcdFx0XHRwYXRoSW5Nb2RlbChcIlRfQ09NTU9OX09CSkVDVF9QQUdFX1NIT1dfRk9STV9DT05UQUlORVJfREVUQUlMU1wiLCBcInNhcC5mZS5pMThuXCIpXG5cdFx0XHQpXG5cdFx0KSxcblx0XHR0eXBlOiBBY3Rpb25UeXBlLlNob3dGb3JtRGV0YWlscyxcblx0XHRwcmVzczogXCJGb3JtQ29udGFpbmVyUnVudGltZS50b2dnbGVEZXRhaWxzXCJcblx0fTtcblxuXHRpZiAoXG5cdFx0ZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldz8udmFsdWVPZigpICE9PSBmYWxzZSAmJlxuXHRcdGFGb3JtRWxlbWVudHMuc29tZSgob0Zvcm1FbGVtZW50KSA9PiBvRm9ybUVsZW1lbnQuaXNQYXJ0T2ZQcmV2aWV3ID09PSBmYWxzZSlcblx0KSB7XG5cdFx0aWYgKGFjdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YWN0aW9ucy5wdXNoKG9BY3Rpb25TaG93RGV0YWlscyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFjdGlvbnMgPSBbb0FjdGlvblNob3dEZXRhaWxzXTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdGlkOiBzRm9ybUNvbnRhaW5lcklkLFxuXHRcdGZvcm1FbGVtZW50czogYUZvcm1FbGVtZW50cyxcblx0XHRhbm5vdGF0aW9uUGF0aDogc0Fubm90YXRpb25QYXRoLFxuXHRcdGlzVmlzaWJsZTogaXNWaXNpYmxlLFxuXHRcdGVudGl0eVNldDogc0VudGl0eVNldFBhdGgsXG5cdFx0YWN0aW9uczogYWN0aW9uc1xuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oXG5cdGZhY2V0RGVmaW5pdGlvbjogQ29sbGVjdGlvbkZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM/OiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXVxuKTogRm9ybUNvbnRhaW5lcltdIHtcblx0Y29uc3QgZm9ybUNvbnRhaW5lcnM6IEZvcm1Db250YWluZXJbXSA9IFtdO1xuXHRmYWNldERlZmluaXRpb24uRmFjZXRzPy5mb3JFYWNoKChmYWNldCkgPT4ge1xuXHRcdC8vIElnbm9yZSBsZXZlbCAzIGNvbGxlY3Rpb24gZmFjZXRcblx0XHRpZiAoZmFjZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRmb3JtQ29udGFpbmVycy5wdXNoKGdldEZvcm1Db250YWluZXIoZmFjZXQgYXMgUmVmZXJlbmNlRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucykpO1xuXHR9KTtcblx0cmV0dXJuIGZvcm1Db250YWluZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VGYWNldChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMpOiBmYWNldERlZmluaXRpb24gaXMgUmVmZXJlbmNlRmFjZXRUeXBlcyB7XG5cdHJldHVybiBmYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybURlZmluaXRpb24oXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0aXNWaXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtRGVmaW5pdGlvbiB7XG5cdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLiRUeXBlKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQ6XG5cdFx0XHQvLyBLZWVwIG9ubHkgdmFsaWQgY2hpbGRyZW5cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGlkOiBnZXRGb3JtSUQoeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH0pLFxuXHRcdFx0XHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiB0cnVlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uRmFjZXRzLnNvbWUoXG5cdFx0XHRcdFx0KGNoaWxkRmFjZXQpID0+IGNoaWxkRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlXG5cdFx0XHRcdCksXG5cdFx0XHRcdGZvcm1Db250YWluZXJzOiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKSxcblx0XHRcdFx0aXNWaXNpYmxlOiBpc1Zpc2libGVcblx0XHRcdH07XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDpcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGlkOiBnZXRGb3JtSUQoeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH0pLFxuXHRcdFx0XHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiBmYWxzZSxcblx0XHRcdFx0aGFzRmFjZXRzTm90UGFydE9mUHJldmlldzogZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldz8udmFsdWVPZigpID09PSBmYWxzZSxcblx0XHRcdFx0Zm9ybUNvbnRhaW5lcnM6IFtnZXRGb3JtQ29udGFpbmVyKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucyldLFxuXHRcdFx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZVxuXHRcdFx0fTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNyZWF0ZSBmb3JtIGJhc2VkIG9uIFJlZmVyZW5jZVVSTEZhY2V0XCIpO1xuXHR9XG59XG4iXX0=
269
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsInZhbHVlT2YiLCJhbm5vdGF0aW9ucyIsIlVJIiwiUGFydE9mUHJldmlldyIsInVuZGVmaW5lZCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCIsImdldFNlbWFudGljT2JqZWN0UGF0aCIsIiRUeXBlIiwiSGlkZGVuIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJub3QiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJjb250YWluc1RhcmdldCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJhRm9ybUVsZW1lbnRzIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJmaWx0ZXIiLCJhY3Rpb24iLCJmYWNldE5hbWUiLCJsZW5ndGgiLCJvQWN0aW9uU2hvd0RldGFpbHMiLCJnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCIsInRleHQiLCJpZkVsc2UiLCJwYXRoSW5Nb2RlbCIsIkFjdGlvblR5cGUiLCJTaG93Rm9ybURldGFpbHMiLCJwcmVzcyIsInNvbWUiLCJvRm9ybUVsZW1lbnQiLCJlbnRpdHlTZXQiLCJnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24iLCJmb3JtQ29udGFpbmVycyIsIkZhY2V0cyIsImZhY2V0IiwiaXNSZWZlcmVuY2VGYWNldCIsImNyZWF0ZUZvcm1EZWZpbml0aW9uIiwiZ2V0Rm9ybUlEIiwidXNlRm9ybUNvbnRhaW5lckxhYmVscyIsImhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXciLCJjaGlsZEZhY2V0IiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFnQ1lBLGU7O2FBQUFBLGU7QUFBQUEsSUFBQUEsZTtBQUFBQSxJQUFBQSxlO0FBQUFBLElBQUFBLGU7S0FBQUEsZSxLQUFBQSxlOzs7O0FB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d0JDLEVBQXhCLDRHQUE0QkMsYUFBNUIsa0ZBQTJDSCxPQUEzQyxRQUF5RCxLQUF6RTtBQUFBLFdBRDBCLENBSHJCO0FBTU53RixVQUFBQSxjQUFjLEVBQUVELDhCQUE4QixDQUFDakYsZUFBRCxFQUFrQkMsZ0JBQWxCLEVBQW9DOEMsT0FBcEMsQ0FOeEM7QUFPTkssVUFBQUEsU0FBUyxFQUFFQTtBQVBMLFNBQVA7O0FBU0Q7QUFDQyxlQUFPO0FBQ05iLFVBQUFBLEVBQUUsRUFBRWdELFNBQVMsQ0FBQztBQUFFckMsWUFBQUEsS0FBSyxFQUFFbEQ7QUFBVCxXQUFELENBRFA7QUFFTndGLFVBQUFBLHNCQUFzQixFQUFFLEtBRmxCO0FBR05DLFVBQUFBLHlCQUF5QixFQUFFLDRCQUFBekYsZUFBZSxDQUFDTCxXQUFoQiwrR0FBNkJDLEVBQTdCLCtHQUFpQ0MsYUFBakMsb0ZBQWdESCxPQUFoRCxRQUE4RCxLQUhuRjtBQUlOd0YsVUFBQUEsY0FBYyxFQUFFLENBQUNoRCxnQkFBZ0IsQ0FBQ2xDLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQzhDLE9BQXBDLENBQWpCLENBSlY7QUFLTkssVUFBQUEsU0FBUyxFQUFFQTtBQUxMLFNBQVA7O0FBT0Q7QUFDQyxjQUFNLElBQUl1QyxLQUFKLENBQVUsK0NBQVYsQ0FBTjtBQXJCRjtBQXVCQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcywgQ29udGFjdCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbXVuaWNhdGlvblwiO1xuaW1wb3J0IHR5cGUge1xuXHRDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YVBvaW50LFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRJZGVudGlmaWNhdGlvbixcblx0UGFydE9mUHJldmlldyxcblx0UmVmZXJlbmNlRmFjZXRUeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBnZXRTZW1hbnRpY09iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgQmFzZUFjdGlvbiwgQ29udmVydGVyQWN0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCBub3QsIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGdldFRhcmdldEVudGl0eVNldFBhdGgsIGdldFRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ3VzdG9tRWxlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Rm9ybUlELCBnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9LZXlcIjtcbmltcG9ydCB0eXBlIHsgRm9ybWF0T3B0aW9uc1R5cGUsIEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5cbmV4cG9ydCB0eXBlIEZvcm1EZWZpbml0aW9uID0ge1xuXHRpZDogc3RyaW5nO1xuXHR1c2VGb3JtQ29udGFpbmVyTGFiZWxzOiBib29sZWFuO1xuXHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBib29sZWFuO1xuXHRmb3JtQ29udGFpbmVyczogRm9ybUNvbnRhaW5lcltdO1xuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xufTtcblxuZXhwb3J0IGVudW0gRm9ybUVsZW1lbnRUeXBlIHtcblx0RGVmYXVsdCA9IFwiRGVmYXVsdFwiLFxuXHRTbG90ID0gXCJTbG90XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZTtcblx0XHR0ZW1wbGF0ZTogc3RyaW5nO1xuXHR9XG4+O1xuXG5leHBvcnQgdHlwZSBGb3JtRWxlbWVudCA9IEN1c3RvbUZvcm1FbGVtZW50IHwgQW5ub3RhdGlvbkZvcm1FbGVtZW50O1xuXG5leHBvcnQgdHlwZSBGb3JtQ29udGFpbmVyID0ge1xuXHRpZD86IHN0cmluZztcblx0Zm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRlbnRpdHlTZXQ/OiBzdHJpbmc7XG5cdGFjdGlvbnM/OiBDb252ZXJ0ZXJBY3Rpb25bXSB8IEJhc2VBY3Rpb25bXTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBkZWZhdWx0IGZvcm1hdCBvcHRpb25zIGZvciB0ZXh0IGZpZWxkcyBvbiBhIGZvcm0uXG4gKlxuICogQHJldHVybnMgQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpOiBGb3JtYXRPcHRpb25zVHlwZSB7XG5cdHJldHVybiB7XG5cdFx0dGV4dExpbmVzRWRpdDogNFxuXHR9O1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkUGFydE9mUHJldmlldyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc/OiBQYXJ0T2ZQcmV2aWV3KTogYm9vbGVhbiB7XG5cdC8vIEJvdGggZWFjaCBmb3JtIGFuZCBmaWVsZCBjYW4gaGF2ZSB0aGUgUGFydE9mUHJldmlldyBhbm5vdGF0aW9uLiBPbmx5IGlmIHRoZSBmb3JtIGlzIG5vdCBoaWRkZW4gKG5vdCBwYXJ0T2ZQcmV2aWV3KSB3ZSBhbGxvdyB0b2dnbGluZyBvbiBmaWVsZCBsZXZlbFxuXHRyZXR1cm4gKFxuXHRcdGZvcm1QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlIHx8XG5cdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3ID09PSB1bmRlZmluZWQgfHxcblx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcudmFsdWVPZigpID09PSB0cnVlXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyhmYWNldERlZmluaXRpb246IFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBBbm5vdGF0aW9uRm9ybUVsZW1lbnRbXSB7XG5cdGNvbnN0IGZvcm1FbGVtZW50czogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10gPSBbXTtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBmb3JtQW5ub3RhdGlvbjogSWRlbnRpZmljYXRpb24gfCBGaWVsZEdyb3VwIHwgQ29udGFjdCB8IERhdGFQb2ludCA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb247XG5cdGNvbnZlcnRlckNvbnRleHQgPSByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0O1xuXG5cdGZ1bmN0aW9uIGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMsIGZvcm1QYXJ0T2ZQcmV2aWV3OiBQYXJ0T2ZQcmV2aWV3IHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3Qgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uUGF0aCA9IGdldFNlbWFudGljT2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LCBmaWVsZCk7XG5cdFx0aWYgKFxuXHRcdFx0ZmllbGQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbiAmJlxuXHRcdFx0ZmllbGQuJFR5cGUgIT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiAmJlxuXHRcdFx0ZmllbGQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSAhPT0gdHJ1ZVxuXHRcdCkge1xuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHRrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZmllbGQpLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpfS9gLFxuXHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpLFxuXHRcdFx0XHRpc1BhcnRPZlByZXZpZXc6IGlzRmllbGRQYXJ0T2ZQcmV2aWV3KGZpZWxkLCBmb3JtUGFydE9mUHJldmlldylcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHN3aXRjaCAoZm9ybUFubm90YXRpb24/LnRlcm0pIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHRmb3JtQW5ub3RhdGlvbi5EYXRhLmZvckVhY2goKGZpZWxkKSA9PiBnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkLCBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3KSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0Zm9ybUFubm90YXRpb24uZm9yRWFjaCgoZmllbGQpID0+IGdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMoZmllbGQsIGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXcpKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IGBEYXRhUG9pbnQ6OiR7Zm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIn1gLFxuXHRcdFx0XHR0eXBlOiBGb3JtRWxlbWVudFR5cGUuQW5ub3RhdGlvbixcblx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmb3JtQW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpfS9gXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IGBDb250YWN0Ojoke2Zvcm1Bbm5vdGF0aW9uLnF1YWxpZmllciA/IGZvcm1Bbm5vdGF0aW9uLnF1YWxpZmllciA6IFwiXCJ9YCxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZm9ybUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKX0vYFxuXHRcdFx0fSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBtYW5pZmVzdEZvcm1Db250YWluZXI6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBtYW5pZmVzdFdyYXBwZXIuZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4gPSB7fTtcblx0aWYgKG1hbmlmZXN0Rm9ybUNvbnRhaW5lcj8uZmllbGRzKSB7XG5cdFx0T2JqZWN0LmtleXMobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpLmZvckVhY2goKGZpZWxkSWQpID0+IHtcblx0XHRcdGZvcm1FbGVtZW50c1tmaWVsZElkXSA9IHtcblx0XHRcdFx0a2V5OiBmaWVsZElkLFxuXHRcdFx0XHRpZDogYEN1c3RvbUZvcm1FbGVtZW50Ojoke2ZpZWxkSWR9YCxcblx0XHRcdFx0dHlwZTogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS50eXBlIHx8IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0LFxuXHRcdFx0XHR0ZW1wbGF0ZTogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS50ZW1wbGF0ZSxcblx0XHRcdFx0bGFiZWw6IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0ubGFiZWwsXG5cdFx0XHRcdHBvc2l0aW9uOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLnBvc2l0aW9uIHx8IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmb3JtYXRPcHRpb25zOiB7XG5cdFx0XHRcdFx0Li4uZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtKCksXG5cdFx0XHRcdFx0Li4ubWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5mb3JtYXRPcHRpb25zXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1Db250YWluZXIoXG5cdGZhY2V0RGVmaW5pdGlvbjogUmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtQ29udGFpbmVyIHtcblx0Y29uc3Qgc0Zvcm1Db250YWluZXJJZCA9IGdlbmVyYXRlKFt7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfV0pO1xuXHRjb25zdCBzQW5ub3RhdGlvblBhdGggPSBgLyR7ZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZX1gO1xuXHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSk7XG5cdGNvbnN0IGlzVmlzaWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKG5vdChlcXVhbCh0cnVlLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSkpKTtcblx0bGV0IHNFbnRpdHlTZXRQYXRoITogc3RyaW5nO1xuXHQvLyByZXNvbHZlZFRhcmdldCBkb2Vzbid0IGhhdmUgYSBlbnRpdHlTZXQgaW4gY2FzZSBDb250YWlubWVudHMgYW5kIFBhcmFtdGVyaXplZCBzZXJ2aWNlcy5cblx0aWYgKFxuXHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCkgJiZcblx0XHRyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpICE9PSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpXG5cdCkge1xuXHRcdHNFbnRpdHlTZXRQYXRoID0gZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSk7XG5cdH0gZWxzZSBpZiAocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkudGFyZ2V0T2JqZWN0Py5jb250YWluc1RhcmdldCA9PT0gdHJ1ZSkge1xuXHRcdHNFbnRpdHlTZXRQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSwgZmFsc2UpO1xuXHR9XG5cdGNvbnN0IGFGb3JtRWxlbWVudHMgPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHR7IGZvcm1hdE9wdGlvbnM6IFwib3ZlcndyaXRlXCIgfVxuXHQpO1xuXG5cdGFjdGlvbnMgPSBhY3Rpb25zICE9PSB1bmRlZmluZWQgPyBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uZmFjZXROYW1lID09IGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpIDogW107XG5cdGlmIChhY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuXHRcdGFjdGlvbnMgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBvQWN0aW9uU2hvd0RldGFpbHM6IEJhc2VBY3Rpb24gPSB7XG5cdFx0aWQ6IGdldEZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEKHNGb3JtQ29udGFpbmVySWQsIFwiU2hvd0hpZGVEZXRhaWxzXCIpLFxuXHRcdGtleTogXCJTdGFuZGFyZEFjdGlvbjo6U2hvd0hpZGVEZXRhaWxzXCIsXG5cdFx0dGV4dDogY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdGVxdWFsKHBhdGhJbk1vZGVsKFwic2hvd0RldGFpbHNcIiwgXCJpbnRlcm5hbFwiKSwgdHJ1ZSksXG5cdFx0XHRcdHBhdGhJbk1vZGVsKFwiVF9DT01NT05fT0JKRUNUX1BBR0VfSElERV9GT1JNX0NPTlRBSU5FUl9ERVRBSUxTXCIsIFwic2FwLmZlLmkxOG5cIiksXG5cdFx0XHRcdHBhdGhJbk1vZGVsKFwiVF9DT01NT05fT0JKRUNUX1BBR0VfU0hPV19GT1JNX0NPTlRBSU5FUl9ERVRBSUxTXCIsIFwic2FwLmZlLmkxOG5cIilcblx0XHRcdClcblx0XHQpLFxuXHRcdHR5cGU6IEFjdGlvblR5cGUuU2hvd0Zvcm1EZXRhaWxzLFxuXHRcdHByZXNzOiBcIkZvcm1Db250YWluZXJSdW50aW1lLnRvZ2dsZURldGFpbHNcIlxuXHR9O1xuXG5cdGlmIChcblx0XHRmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgIT09IGZhbHNlICYmXG5cdFx0YUZvcm1FbGVtZW50cy5zb21lKChvRm9ybUVsZW1lbnQpID0+IG9Gb3JtRWxlbWVudC5pc1BhcnRPZlByZXZpZXcgPT09IGZhbHNlKVxuXHQpIHtcblx0XHRpZiAoYWN0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRhY3Rpb25zLnB1c2gob0FjdGlvblNob3dEZXRhaWxzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YWN0aW9ucyA9IFtvQWN0aW9uU2hvd0RldGFpbHNdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0aWQ6IHNGb3JtQ29udGFpbmVySWQsXG5cdFx0Zm9ybUVsZW1lbnRzOiBhRm9ybUVsZW1lbnRzLFxuXHRcdGFubm90YXRpb25QYXRoOiBzQW5ub3RhdGlvblBhdGgsXG5cdFx0aXNWaXNpYmxlOiBpc1Zpc2libGUsXG5cdFx0ZW50aXR5U2V0OiBzRW50aXR5U2V0UGF0aCxcblx0XHRhY3Rpb25zOiBhY3Rpb25zXG5cdH07XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9ucz86IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtQ29udGFpbmVyW10ge1xuXHRjb25zdCBmb3JtQ29udGFpbmVyczogRm9ybUNvbnRhaW5lcltdID0gW107XG5cdGZhY2V0RGVmaW5pdGlvbi5GYWNldHM/LmZvckVhY2goKGZhY2V0KSA9PiB7XG5cdFx0Ly8gSWdub3JlIGxldmVsIDMgY29sbGVjdGlvbiBmYWNldFxuXHRcdGlmIChmYWNldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGZvcm1Db250YWluZXJzLnB1c2goZ2V0Rm9ybUNvbnRhaW5lcihmYWNldCBhcyBSZWZlcmVuY2VGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKSk7XG5cdH0pO1xuXHRyZXR1cm4gZm9ybUNvbnRhaW5lcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZUZhY2V0KGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyk6IGZhY2V0RGVmaW5pdGlvbiBpcyBSZWZlcmVuY2VGYWNldFR5cGVzIHtcblx0cmV0dXJuIGZhY2V0RGVmaW5pdGlvbi4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtRGVmaW5pdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRpc1Zpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRhY3Rpb25zPzogQmFzZUFjdGlvbltdIHwgQ29udmVydGVyQWN0aW9uW11cbik6IEZvcm1EZWZpbml0aW9uIHtcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldDpcblx0XHRcdC8vIEtlZXAgb25seSB2YWxpZCBjaGlsZHJlblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aWQ6IGdldEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IHRydWUsXG5cdFx0XHRcdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGZhY2V0RGVmaW5pdGlvbi5GYWNldHMuc29tZShcblx0XHRcdFx0XHQoY2hpbGRGYWNldCkgPT4gY2hpbGRGYWNldC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSA9PT0gZmFsc2Vcblx0XHRcdFx0KSxcblx0XHRcdFx0Zm9ybUNvbnRhaW5lcnM6IGdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbihmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpLFxuXHRcdFx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZVxuXHRcdFx0fTtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aWQ6IGdldEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGZhbHNlLFxuXHRcdFx0XHRoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3OiBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlLFxuXHRcdFx0XHRmb3JtQ29udGFpbmVyczogW2dldEZvcm1Db250YWluZXIoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKV0sXG5cdFx0XHRcdGlzVmlzaWJsZTogaXNWaXNpYmxlXG5cdFx0XHR9O1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGZvcm0gYmFzZWQgb24gUmVmZXJlbmNlVVJMRmFjZXRcIik7XG5cdH1cbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
- import type { AnnotationTerm } from "@sap-ux/vocabularies-types";
2
- import { CommunicationAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/Communication";
1
+ import { CommunicationAnnotationTerms, Contact } from "@sap-ux/vocabularies-types/vocabularies/Communication";
3
2
  import type {
4
3
  CollectionFacetTypes,
5
4
  DataFieldAbstractTypes,
5
+ DataPoint,
6
6
  FacetTypes,
7
7
  FieldGroup,
8
8
  Identification,
@@ -34,6 +34,7 @@ export type FormDefinition = {
34
34
 
35
35
  export enum FormElementType {
36
36
  Default = "Default",
37
+ Slot = "Slot",
37
38
  Annotation = "Annotation"
38
39
  }
39
40
 
@@ -55,14 +56,14 @@ export type AnnotationFormElement = BaseFormElement & {
55
56
 
56
57
  export type CustomFormElement = CustomElement<
57
58
  BaseFormElement & {
58
- type: FormElementType.Default;
59
+ type: FormElementType;
59
60
  template: string;
60
61
  }
61
62
  >;
62
63
 
63
64
  export type FormElement = CustomFormElement | AnnotationFormElement;
64
65
 
65
- type FormContainer = {
66
+ export type FormContainer = {
66
67
  id?: string;
67
68
  formElements: FormElement[];
68
69
  annotationPath: string;
@@ -94,9 +95,7 @@ function isFieldPartOfPreview(field: DataFieldAbstractTypes, formPartOfPreview?:
94
95
  function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, converterContext: ConverterContext): AnnotationFormElement[] {
95
96
  const formElements: AnnotationFormElement[] = [];
96
97
  const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
97
- const formAnnotation: AnnotationTerm<Identification> | AnnotationTerm<FieldGroup> = resolvedTarget.annotation as
98
- | AnnotationTerm<Identification>
99
- | AnnotationTerm<FieldGroup>;
98
+ const formAnnotation: Identification | FieldGroup | Contact | DataPoint = resolvedTarget.annotation;
100
99
  converterContext = resolvedTarget.converterContext;
101
100
 
102
101
  function getDataFieldsFromAnnotations(field: DataFieldAbstractTypes, formPartOfPreview: PartOfPreview | undefined) {
@@ -119,14 +118,10 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
119
118
 
120
119
  switch (formAnnotation?.term) {
121
120
  case UIAnnotationTerms.FieldGroup:
122
- (formAnnotation as AnnotationTerm<FieldGroup>).Data.forEach((field) =>
123
- getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview)
124
- );
121
+ formAnnotation.Data.forEach((field) => getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview));
125
122
  break;
126
123
  case UIAnnotationTerms.Identification:
127
- (formAnnotation as AnnotationTerm<Identification>).forEach((field) =>
128
- getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview)
129
- );
124
+ formAnnotation.forEach((field) => getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview));
130
125
  break;
131
126
  case UIAnnotationTerms.DataPoint:
132
127
  formElements.push({
@@ -162,7 +157,7 @@ export function getFormElementsFromManifest(
162
157
  formElements[fieldId] = {
163
158
  key: fieldId,
164
159
  id: `CustomFormElement::${fieldId}`,
165
- type: FormElementType.Default,
160
+ type: manifestFormContainer.fields[fieldId].type || FormElementType.Default,
166
161
  template: manifestFormContainer.fields[fieldId].template,
167
162
  label: manifestFormContainer.fields[fieldId].label,
168
163
  position: manifestFormContainer.fields[fieldId].position || {
@@ -421,4 +421,4 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/conve
421
421
  _exports.getKPIDefinitions = getKPIDefinitions;
422
422
  return _exports;
423
423
  }, false);
424
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktQSS50cyJdLCJuYW1lcyI6WyJEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlIiwiS1BJQ2hhcnRUeXBlRnJvbVVJIiwiY29udmVydEtQSUNoYXJ0IiwiY2hhcnRBbm5vdGF0aW9uIiwicHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24iLCJNZWFzdXJlcyIsInVuZGVmaW5lZCIsImNoYXJEaW1lbnNpb25zIiwiRGltZW5zaW9ucyIsIm1hcCIsInByb3BlcnR5UGF0aCIsImRpbUF0dHJpYnV0ZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJmaW5kIiwiYXR0cmlidXRlIiwiRGltZW5zaW9uIiwidmFsdWUiLCJuYW1lIiwibGFiZWwiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwicm9sZSIsIlJvbGUiLCJyZXBsYWNlIiwiY2hhcnRNZWFzdXJlcyIsIm1lYXN1cmVBdHRyaWJ1dGUiLCJNZWFzdXJlQXR0cmlidXRlcyIsIk1lYXN1cmUiLCJjaGFydFR5cGUiLCJDaGFydFR5cGUiLCJkaW1lbnNpb25zIiwibWVhc3VyZXMiLCJzb3J0T3JkZXIiLCJTb3J0T3JkZXIiLCJQcm9wZXJ0eSIsImRlc2NlbmRpbmciLCJEZXNjZW5kaW5nIiwibWF4SXRlbXMiLCJNYXhJdGVtcyIsInZhbHVlT2YiLCJ1cGRhdGVDdXJyZW5jeSIsImRhdGFwb2ludEFubm90YXRpb24iLCJrcGlEZWYiLCJ0YXJnZXRWYWx1ZVByb3BlcnR5IiwiVmFsdWUiLCJJU09DdXJyZW5jeSIsImN1cnJlbmN5IiwiaXNQYXRoRXhwcmVzc2lvbiIsImRhdGFwb2ludCIsInVuaXQiLCJpc0N1cnJlbmN5IiwiaXNQYXRoIiwiVW5pdCIsInVwZGF0ZUNyaXRpY2FsaXR5IiwiYWdncmVnYXRpb25IZWxwZXIiLCJDcml0aWNhbGl0eSIsImNyaXRpY2FsaXR5UHJvcGVydHkiLCJpc1Byb3BlcnR5QWdncmVnYXRhYmxlIiwiY3JpdGljYWxpdHlQYXRoIiwicGF0aCIsImNyaXRpY2FsaXR5VmFsdWUiLCJNZXNzYWdlVHlwZSIsIk5vbmUiLCJnZXRNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eVR5cGUiLCJDcml0aWNhbGl0eUNhbGN1bGF0aW9uIiwiY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUiLCJJbXByb3ZlbWVudERpcmVjdGlvbiIsImNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzIiwicHVzaCIsIkRldmlhdGlvblJhbmdlTG93VmFsdWUiLCJUb2xlcmFuY2VSYW5nZUxvd1ZhbHVlIiwiQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUiLCJBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUiLCJUb2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSIsIkRldmlhdGlvblJhbmdlSGlnaFZhbHVlIiwidXBkYXRlVHJlbmQiLCJUcmVuZCIsInRyZW5kUHJvcGVydHkiLCJ0cmVuZFBhdGgiLCJ0cmVuZFZhbHVlIiwiVHJlbmRDYWxjdWxhdGlvbiIsInRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlIiwiSXNSZWxhdGl2ZURpZmZlcmVuY2UiLCJSZWZlcmVuY2VWYWx1ZSIsInJlZmVyZW5jZVByb3BlcnR5IiwidHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGgiLCJ0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWUiLCJ0cmVuZENhbGN1bGF0aW9uVHJlc2hvbGRzIiwiU3Ryb25nRG93bkRpZmZlcmVuY2UiLCJEb3duRGlmZmVyZW5jZSIsIlVwRGlmZmVyZW5jZSIsIlN0cm9uZ1VwRGlmZmVyZW5jZSIsInVwZGF0ZVRhcmdldCIsIlRhcmdldFZhbHVlIiwidGFyZ2V0UHJvcGVydHkiLCJ0YXJnZXRQYXRoIiwidGFyZ2V0VmFsdWUiLCJnZXROYXZpZ2F0aW9uSW5mb0Zyb21Qcm9wZXJ0eSIsInByb3BlcnR5Iiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJhbm5vdGF0aW9uS2V5IiwiYW5ub3RhdGlvbiIsInRlcm0iLCJxdWFsaWZpZXIiLCJyZXN1bHQiLCJzZW1hbnRpY09iamVjdCIsInVuYXZhaWxhYmxlQWN0aW9ucyIsImtleSIsImNyZWF0ZUtQSURlZmluaXRpb24iLCJrcGlOYW1lIiwia3BpQ29uZmlnIiwiY29udmVydGVyQ29udGV4dCIsImtwaUNvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yIiwiZW50aXR5U2V0IiwiQWdncmVnYXRpb25IZWxwZXIiLCJnZXRFbnRpdHlUeXBlIiwiaXNBbmFseXRpY3NTdXBwb3J0ZWQiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVUeXBlIiwiS1BJX0lTU1VFUyIsIk5PX0FOQUxZVElDUyIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwibmF2aWdhdGlvbkluZm8iLCJhS1BJQW5ub3RhdGlvbnMiLCJnZXRBbm5vdGF0aW9uc0J5VGVybSIsInRhcmdldEtQSSIsImtwaSIsIkRhdGFQb2ludCIsIlNlbGVjdGlvblZhcmlhbnQiLCJEZXRhaWwiLCJEZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudCIsIlZpc3VhbGl6YXRpb25zIiwidml6IiwiJFR5cGUiLCJTZW1hbnRpY09iamVjdCIsImFjdGlvbiIsIkFjdGlvbiIsImFTUFZBbm5vdGF0aW9ucyIsInRhcmdldFNQViIsInNwdiIsIlByZXNlbnRhdGlvblZhcmlhbnQiLCJLUElfTk9UX0ZPVU5EIiwiS1BJX0RFVEFJTF9OT1RfRk9VTkQiLCJkYXRhcG9pbnRQcm9wZXJ0eSIsIk1BSU5fUFJPUEVSVFlfTk9UX0FHR1JFR0FUQUJMRSIsImNoYXJ0RGVmIiwiaWQiLCJnZXRLUElJRCIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRpdGxlIiwiVGl0bGUiLCJkZXNjcmlwdGlvbiIsIkRlc2NyaXB0aW9uIiwic2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zIiwiZ2V0RmlsdGVyRGVmaW5pdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsImNoYXJ0IiwiZGV0YWlsTmF2aWdhdGlvbiIsIm91dGJvdW5kTmF2aWdhdGlvbiIsIm5hdmlnYXRpb24iLCJnZXRLUElEZWZpbml0aW9ucyIsImtwaUNvbmZpZ3MiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRLUElDb25maWd1cmF0aW9uIiwia3BpRGVmcyIsIm9EZWYiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQXNFQSxNQUFNQSwrQkFBdUQsR0FBRztBQUMvRCw2QkFBeUIsSUFEc0M7QUFFL0QsdUJBQW1CLElBRjRDO0FBRy9ELCtCQUEyQixNQUhvQztBQUkvRCx5QkFBcUIsTUFKMEM7QUFLL0QsNkJBQXlCO0FBTHNDLEdBQWhFO0FBUUEsTUFBTUMsa0JBQTBDLEdBQUc7QUFDbEQsa0NBQThCLGVBRG9CO0FBRWxELCtCQUEyQixZQUZ1QjtBQUdsRCwwQkFBc0IsT0FINEI7QUFJbEQseUJBQXFCLE1BSjZCO0FBS2xELDJCQUF1QixRQUwyQjtBQU1sRCwyQkFBdUIsUUFOMkI7QUFPbEQsd0JBQW9CLEtBUDhCO0FBUWxELG1DQUErQixpQkFSbUI7QUFTbEQsZ0NBQTRCLGFBVHNCO0FBVWxELDRCQUF3QjtBQVYwQixHQUFuRDs7QUFhQSxXQUFTQyxlQUFULENBQXlCQyxlQUF6QixFQUFpREMsNkJBQWpELEVBQXFJO0FBQUE7O0FBQ3BJLFFBQUlELGVBQWUsQ0FBQ0UsUUFBaEIsS0FBNkJDLFNBQWpDLEVBQTRDO0FBQzNDO0FBQ0EsYUFBT0EsU0FBUDtBQUNBOztBQUVELFFBQU1DLGNBQWMsR0FBR0osZUFBZSxDQUFDSyxVQUFoQixHQUNwQkwsZUFBZSxDQUFDSyxVQUFoQixDQUEyQkMsR0FBM0IsQ0FBK0IsVUFBQ0MsWUFBRCxFQUFrQjtBQUFBOztBQUNqRCxVQUFNQyxZQUFZLDRCQUFHUixlQUFlLENBQUNTLG1C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YjtBQUNBO0FBQ0QsS0FMRDtBQU9BLFdBQU9ELE9BQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uVGVybSwgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlbWFudGljT2JqZWN0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENoYXJ0LFxuXHRDcml0aWNhbGl0eVR5cGUsXG5cdERhdGFQb2ludCxcblx0SW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlLFxuXHRLUElUeXBlLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50VHlwZSxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0VHJlbmRUeXBlXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSwgSXNzdWVTZXZlcml0eSwgSXNzdWVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyRGVmaW5pdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvU2VsZWN0aW9uVmFyaWFudEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0RmlsdGVyRGVmaW5pdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvU2VsZWN0aW9uVmFyaWFudEhlbHBlclwiO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclR5cGVzXCI7XG5pbXBvcnQgeyBpc1BhdGhFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uSGVscGVyIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IGdldEtQSUlEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB0eXBlIHsgS1BJQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eVR5cGUgfSBmcm9tIFwiLi9Dcml0aWNhbGl0eVwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uSW5mbyA9IHtcblx0c2VtYW50aWNPYmplY3Q/OiBzdHJpbmc7XG5cdGFjdGlvbj86IHN0cmluZztcblx0dW5hdmFpbGFibGVBY3Rpb25zPzogc3RyaW5nW107XG5cdG91dGJvdW5kTmF2aWdhdGlvbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEtQSUNoYXJ0RGVmaW5pdGlvbiA9IHtcblx0Y2hhcnRUeXBlOiBzdHJpbmc7XG5cdGRpbWVuc2lvbnM6IHsgbmFtZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyByb2xlPzogc3RyaW5nIH1bXTtcblx0bWVhc3VyZXM6IHsgbmFtZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyByb2xlPzogc3RyaW5nIH1bXTtcblx0c29ydE9yZGVyPzogeyBuYW1lOiBzdHJpbmc7IGRlc2NlbmRpbmc6IGJvb2xlYW4gfVtdO1xuXHRtYXhJdGVtcz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEtQSURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdGVudGl0eVNldDogc3RyaW5nO1xuXHRkYXRhcG9pbnQ6IHtcblx0XHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nO1xuXHRcdHVuaXQ/OiB7XG5cdFx0XHR2YWx1ZTogc3RyaW5nO1xuXHRcdFx0aXNQYXRoOiBib29sZWFuO1xuXHRcdFx0aXNDdXJyZW5jeTogYm9vbGVhbjtcblx0XHR9O1xuXHRcdGNyaXRpY2FsaXR5UGF0aD86IHN0cmluZztcblx0XHRjcml0aWNhbGl0eVZhbHVlPzogTWVzc2FnZVR5cGU7XG5cdFx0Y3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGU/OiBJbXByb3ZlbWVudERpcmVjdGlvblR5cGU7XG5cdFx0Y3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHM/OiAobnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbClbXTtcblx0XHR0aXRsZT86IHN0cmluZztcblx0XHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0XHR0cmVuZFBhdGg/OiBzdHJpbmc7XG5cdFx0dHJlbmRWYWx1ZT86IHN0cmluZztcblx0XHR0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWU/OiBudW1iZXI7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGg/OiBzdHJpbmc7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcz86IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdO1xuXHRcdHRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlPzogYm9vbGVhbjtcblx0XHR0YXJnZXRWYWx1ZT86IG51bWJlcjtcblx0XHR0YXJnZXRQYXRoPzogc3RyaW5nO1xuXHR9O1xuXHRjaGFydDogS1BJQ2hhcnREZWZpbml0aW9uO1xuXHRzZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM/OiBGaWx0ZXJEZWZpbml0aW9uW107XG5cdG5hdmlnYXRpb24/OiBOYXZpZ2F0aW9uSW5mbztcbn07XG5cbmNvbnN0IERldmlhdGlvbkluZGljYXRvckZyb21UcmVuZFR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFwiVUkuVHJlbmRUeXBlL1N0cm9uZ1VwXCI6IFwiVXBcIixcblx0XCJVSS5UcmVuZFR5cGUvVXBcIjogXCJVcFwiLFxuXHRcIlVJLlRyZW5kVHlwZS9TdHJvbmdEb3duXCI6IFwiRG93blwiLFxuXHRcIlVJLlRyZW5kVHlwZS9Eb3duXCI6IFwiRG93blwiLFxuXHRcIlVJLlRyZW5kVHlwZS9TaWRld2F5c1wiOiBcIk5vbmVcIlxufTtcblxuY29uc3QgS1BJQ2hhcnRUeXBlRnJvbVVJOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcIlVJLkNoYXJ0VHlwZS9Db2x1bW5TdGFja2VkXCI6IFwiU3RhY2tlZENvbHVtblwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6IFwiU3RhY2tlZEJhclwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Eb251dFwiOiBcIkRvbnV0XCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjogXCJMaW5lXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0J1YmJsZVwiOiBcImJ1YmJsZVwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjogXCJjb2x1bW5cIixcblx0XCJVSS5DaGFydFR5cGUvQmFyXCI6IFwiYmFyXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL1ZlcnRpY2FsQnVsbGV0XCI6IFwidmVydGljYWxfYnVsbGV0XCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0NvbWJpbmF0aW9uXCI6IFwiY29tYmluYXRpb25cIixcblx0XCJVSS5DaGFydFR5cGUvU2NhdHRlclwiOiBcInNjYXR0ZXJcIlxufTtcblxuZnVuY3Rpb24gY29udmVydEtQSUNoYXJ0KGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsIHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50KTogS1BJQ2hhcnREZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlcyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0Ly8gV2UgbmVlZCBhdCBsZWFzdCAxIG1lYXN1cmUgKGJ1dCBubyBkaW1lbnNpb24gaXMgYWxsb3dlZCwgZS5nLiBmb3IgYnViYmxlIGNoYXJ0KVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBjaGFyRGltZW5zaW9ucyA9IGNoYXJ0QW5ub3RhdGlvbi5EaW1lbnNpb25zXG5cdFx0PyBjaGFydEFubm90YXRpb24uRGltZW5zaW9ucy5tYXAoKHByb3BlcnR5UGF0aCkgPT4ge1xuXHRcdFx0XHRjb25zdCBkaW1BdHRyaWJ1dGUgPSBjaGFydEFubm90YXRpb24uRGltZW5zaW9uQXR0cmlidXRlcz8uZmluZCgoYXR0cmlidXRlKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGF0dHJpYnV0ZS5EaW1lbnNpb24/LnZhbHVlID09PSBwcm9wZXJ0eVBhdGgudmFsdWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdG5hbWU6IHByb3BlcnR5UGF0aC52YWx1ZSxcblx0XHRcdFx0XHRsYWJlbDogcHJvcGVydHlQYXRoLiR0YXJnZXQuYW5ub3RhdGlvbnMuQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKSB8fCBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRcdFx0cm9sZTogZGltQXR0cmlidXRlPy5Sb2xlPy5yZXBsYWNlKFwiVUkuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS9cIiwgXCJcIilcblx0XHRcdFx0fTtcblx0XHQgIH0pXG5cdFx0OiBbXTtcblxuXHRjb25zdCBjaGFydE1lYXN1cmVzID0gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVzLm1hcCgocHJvcGVydHlQYXRoKSA9PiB7XG5cdFx0Y29uc3QgbWVhc3VyZUF0dHJpYnV0ZSA9IGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlQXR0cmlidXRlcz8uZmluZCgoYXR0cmlidXRlKSA9PiB7XG5cdFx0XHRyZXR1cm4gYXR0cmlidXRlLk1lYXN1cmU/LnZhbHVlID09PSBwcm9wZXJ0eVBhdGgudmFsdWU7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IHByb3BlcnR5UGF0aC52YWx1ZSxcblx0XHRcdGxhYmVsOiBwcm9wZXJ0eVBhdGguJHRhcmdldC5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpIHx8IHByb3BlcnR5UGF0aC52YWx1ZSxcblx0XHRcdHJvbGU6IG1lYXN1cmVBdHRyaWJ1dGU/LlJvbGU/LnJlcGxhY2UoXCJVSS5DaGFydE1lYXN1cmVSb2xlVHlwZS9cIiwgXCJcIilcblx0XHR9O1xuXHR9KTtcblxuXHRyZXR1cm4ge1xuXHRcdGNoYXJ0VHlwZTogS1BJQ2hhcnRUeXBlRnJvbVVJW2NoYXJ0QW5ub3RhdGlvbi5DaGFydFR5cGVdIHx8IFwiTGluZVwiLFxuXHRcdGRpbWVuc2lvbnM6IGNoYXJEaW1lbnNpb25zLFxuXHRcdG1lYXN1cmVzOiBjaGFydE1lYXN1cmVzLFxuXHRcdHNvcnRPcmRlcjogcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlNvcnRPcmRlcj8ubWFwKChzb3J0T3JkZXIpID0+IHtcblx0XHRcdHJldHVybiB7IG5hbWU6IHNvcnRPcmRlci5Qcm9wZXJ0eT8udmFsdWUgfHwgXCJcIiwgZGVzY2VuZGluZzogISFzb3J0T3JkZXIuRGVzY2VuZGluZyB9O1xuXHRcdH0pLFxuXHRcdG1heEl0ZW1zOiBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbj8uTWF4SXRlbXM/LnZhbHVlT2YoKSBhcyBudW1iZXJcblx0fTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ3VycmVuY3koZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50LCBrcGlEZWY6IEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0Y29uc3QgdGFyZ2V0VmFsdWVQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0aWYgKHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LklTT0N1cnJlbmN5KSB7XG5cdFx0Y29uc3QgY3VycmVuY3kgPSB0YXJnZXRWYWx1ZVByb3BlcnR5LmFubm90YXRpb25zLk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0XHRpZiAoaXNQYXRoRXhwcmVzc2lvbihjdXJyZW5jeSkpIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6IChjdXJyZW5jeS4kdGFyZ2V0IGFzIHVua25vd24gYXMgUHJvcGVydHkpLm5hbWUsXG5cdFx0XHRcdGlzQ3VycmVuY3k6IHRydWUsXG5cdFx0XHRcdGlzUGF0aDogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC51bml0ID0ge1xuXHRcdFx0XHR2YWx1ZTogY3VycmVuY3kudG9TdHJpbmcoKSxcblx0XHRcdFx0aXNDdXJyZW5jeTogdHJ1ZSxcblx0XHRcdFx0aXNQYXRoOiBmYWxzZVxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSBpZiAodGFyZ2V0VmFsdWVQcm9wZXJ0eS5hbm5vdGF0aW9ucy5NZWFzdXJlcz8uVW5pdCkge1xuXHRcdGNvbnN0IHVuaXQgPSB0YXJnZXRWYWx1ZVByb3BlcnR5LmFubm90YXRpb25zLk1lYXN1cmVzPy5Vbml0O1xuXHRcdGlmIChpc1BhdGhFeHByZXNzaW9uKHVuaXQpKSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnVuaXQgPSB7XG5cdFx0XHRcdHZhbHVlOiAodW5pdC4kdGFyZ2V0IGFzIHVua25vd24gYXMgUHJvcGVydHkpLm5hbWUsXG5cdFx0XHRcdGlzQ3VycmVuY3k6IGZhbHNlLFxuXHRcdFx0XHRpc1BhdGg6IHRydWVcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6IHVuaXQudG9TdHJpbmcoKSxcblx0XHRcdFx0aXNDdXJyZW5jeTogZmFsc2UsXG5cdFx0XHRcdGlzUGF0aDogZmFsc2Vcblx0XHRcdH07XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNyaXRpY2FsaXR5KGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludCwgYWdncmVnYXRpb25IZWxwZXI6IEFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWY6IEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpIHtcblx0XHRpZiAodHlwZW9mIGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIENyaXRpY2FsaXR5IGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCBjcml0aWNhbGl0eVByb3BlcnR5ID0gKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkgYXMgYW55IGFzIFByb3BlcnR5UGF0aCkuJHRhcmdldDtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKGNyaXRpY2FsaXR5UHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlQYXRoID0gKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPENyaXRpY2FsaXR5VHlwZT4pLnBhdGg7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgcHJvcGVydHkgaXNuJ3QgYWdncmVnYXRhYmxlIC0tPiB3ZSBpZ25vcmUgaXRcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQ3JpdGljYWxpdHkgaXMgYW4gZW51bSBWYWx1ZSAtLT4gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24pIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkltcHJvdmVtZW50RGlyZWN0aW9uO1xuXHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMgPSBbXTtcblx0XHRzd2l0Y2ggKGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUpIHtcblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvVGFyZ2V0XCI6XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvTWluaW1pemVcIjpcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlL01heGltaXplXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVUcmVuZChkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnQsIGFnZ3JlZ2F0aW9uSGVscGVyOiBBZ2dyZWdhdGlvbkhlbHBlciwga3BpRGVmOiBLUElEZWZpbml0aW9uKTogdm9pZCB7XG5cdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kKSB7XG5cdFx0aWYgKHR5cGVvZiBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHQvLyBUcmVuZCBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZVxuXHRcdFx0Y29uc3QgdHJlbmRQcm9wZXJ0eSA9IChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kIGFzIGFueSBhcyBQcm9wZXJ0eVBhdGgpLiR0YXJnZXQ7XG5cdFx0XHRpZiAoYWdncmVnYXRpb25IZWxwZXIuaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZSh0cmVuZFByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kUGF0aCA9IChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUcmVuZFR5cGU+KS5wYXRoO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gVGhlIHByb3BlcnR5IGlzbid0IGFnZ3JlZ2F0YWJsZSAtLT4gd2UgaWdub3JlIGl0XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRWYWx1ZSA9IFwiTm9uZVwiO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBUcmVuZCBpcyBhbiBlbnVtIFZhbHVlIC0tPiBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlW2RhdGFwb2ludEFubm90YXRpb24uVHJlbmRdIHx8IFwiTm9uZVwiO1xuXHRcdH1cblx0fSBlbHNlIGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24pIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLklzUmVsYXRpdmVEaWZmZXJlbmNlID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uUmVmZXJlbmNlVmFsdWUuJHRhcmdldCkge1xuXHRcdFx0Ly8gUmVmZXJlbmNlIHZhbHVlIGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCByZWZlcmVuY2VQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5SZWZlcmVuY2VWYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUocmVmZXJlbmNlUHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGggPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uUmVmZXJlbmNlVmFsdWUucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFRoZSBwcm9wZXJ0eSBpc24ndCBhZ2dyZWdhdGFibGUgLS0+IHdlIGlnbm9yZSBpdCBhbmQgc3dpdGNoIGJhY2sgdG8gdHJlbmQgJ05vbmUnXG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRWYWx1ZSA9IFwiTm9uZVwiO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBSZWZlcmVuY2UgdmFsdWUgaXMgYSBzdGF0aWMgdmFsdWVcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlO1xuXHRcdH1cblx0XHRpZiAoa3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlUGF0aCAhPT0gdW5kZWZpbmVkIHx8IGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcyA9IFtcblx0XHRcdFx0ZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlN0cm9uZ0Rvd25EaWZmZXJlbmNlLnZhbHVlT2YoKSBhcyBudW1iZXIsXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5Eb3duRGlmZmVyZW5jZS52YWx1ZU9mKCkgYXMgbnVtYmVyLFxuXHRcdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uVXBEaWZmZXJlbmNlLnZhbHVlT2YoKSBhcyBudW1iZXIsXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5TdHJvbmdVcERpZmZlcmVuY2UudmFsdWVPZigpIGFzIG51bWJlclxuXHRcdFx0XTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gXCJOb25lXCI7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlVGFyZ2V0KGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludCwgYWdncmVnYXRpb25IZWxwZXI6IEFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWY6IEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWUpIHtcblx0XHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZS4kdGFyZ2V0KSB7XG5cdFx0XHQvLyBUYXJnZXQgdmFsdWUgaXMgYSBwYXRoIC0tPiBjaGVjayBpZiB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBpcyBhZ2dyZWdhdGFibGUgKG90aGVyd2lzZSBpZ25vcmUpXG5cdFx0XHRjb25zdCB0YXJnZXRQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKHRhcmdldFByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRhcmdldFBhdGggPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRhcmdldFZhbHVlLnBhdGg7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRhcmdldCB2YWx1ZSBpcyBhIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC50YXJnZXRWYWx1ZSA9IGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWU7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGdldE5hdmlnYXRpb25JbmZvRnJvbVByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSk6IE5hdmlnYXRpb25JbmZvIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgYW5ub3RhdGlvbnM6IFJlY29yZDxzdHJpbmcsIEFubm90YXRpb25UZXJtPGFueT4+ID0gcHJvcGVydHkuYW5ub3RhdGlvbnNbXCJDb21tb25cIl0gfHwge307XG5cblx0Ly8gTG9vayBmb3IgdGhlIHNlbWFudGljT2JqZWN0IGFubm90YXRpb24gKGlmIGFueSlcblx0bGV0IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbjogQW5ub3RhdGlvblRlcm08U2VtYW50aWNPYmplY3Q+IHwgdW5kZWZpbmVkO1xuXHRPYmplY3Qua2V5cyhhbm5vdGF0aW9ucykuZm9yRWFjaCgoYW5ub3RhdGlvbktleSkgPT4ge1xuXHRcdGNvbnN0IGFubm90YXRpb24gPSBhbm5vdGF0aW9uc1thbm5vdGF0aW9uS2V5XTtcblx0XHRpZiAoYW5ub3RhdGlvbi50ZXJtID09PSBDb21tb25Bbm5vdGF0aW9uVGVybXMuU2VtYW50aWNPYmplY3QpIHtcblx0XHRcdGlmICghYW5ub3RhdGlvbi5xdWFsaWZpZXIgfHwgIXNlbWFudGljT2JqZWN0QW5ub3RhdGlvbikge1xuXHRcdFx0XHQvLyBXZSBhbHdheXMgdGFrZSB0aGUgYW5ub3RhdGlvbiB3aXRob3V0IHF1YWxpZmllciBpZiB0aGVyZSdzIG9uZSwgb3RoZXJ3aXNlIHdlIHRha2UgdGhlIGZpcnN0IG9uZVxuXHRcdFx0XHRzZW1hbnRpY09iamVjdEFubm90YXRpb24gPSBhbm5vdGF0aW9uO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0aWYgKHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbikge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHtcblx0XHRcdHNlbWFudGljT2JqZWN0OiBzZW1hbnRpY09iamVjdEFubm90YXRpb24udG9TdHJpbmcoKSxcblx0XHRcdHVuYXZhaWxhYmxlQWN0aW9uczogW11cblx0XHR9O1xuXG5cdFx0Ly8gTG9vayBmb3IgdGhlIHVuYXZhaWxhYmxlIGFjdGlvbnMgKGlmIGFueSlcblx0XHRjb25zdCBhbm5vdGF0aW9uS2V5ID0gT2JqZWN0LmtleXMoYW5ub3RhdGlvbnMpLmZpbmQoKGtleSkgPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0YW5ub3RhdGlvbnNba2V5XS50ZXJtID09PSBDb21tb25Bbm5vdGF0aW9uVGVybXMuU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMgJiZcblx0XHRcdFx0YW5ub3RhdGlvbnNba2V5XS5xdWFsaWZpZXIgPT09IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvbj8ucXVhbGlmaWVyXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHRcdGlmIChhbm5vdGF0aW9uS2V5KSB7XG5cdFx0XHRyZXN1bHQudW5hdmFpbGFibGVBY3Rpb25zID0gYW5ub3RhdGlvbnNbYW5ub3RhdGlvbktleV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtQSURlZmluaXRpb24oa3BpTmFtZTogc3RyaW5nLCBrcGlDb25maWc6IEtQSUNvbmZpZ3VyYXRpb24sIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBLUElEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qga3BpQ29udmVydGVyQ29udGV4dCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihgLyR7a3BpQ29uZmlnLmVudGl0eVNldH1gKTtcblx0Y29uc3QgYWdncmVnYXRpb25IZWxwZXIgPSBuZXcgQWdncmVnYXRpb25IZWxwZXIoa3BpQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIGtwaUNvbnZlcnRlckNvbnRleHQpO1xuXG5cdGlmICghYWdncmVnYXRpb25IZWxwZXIuaXNBbmFseXRpY3NTdXBwb3J0ZWQoKSkge1xuXHRcdC8vIFRoZSBlbnRpdHkgZG9lc24ndCBzdXBwb3J0IGFuYWx5dGljYWwgcXVlcmllc1xuXHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5Lk1lZGl1bSwgSXNzdWVUeXBlLktQSV9JU1NVRVMuTk9fQU5BTFlUSUNTICsga3BpQ29uZmlnLmVudGl0eVNldCk7XG5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0bGV0IHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBTZWxlY3Rpb25WYXJpYW50IHwgdW5kZWZpbmVkO1xuXHRsZXQgZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50IHwgdW5kZWZpbmVkO1xuXHRsZXQgcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb246IFByZXNlbnRhdGlvblZhcmlhbnQgfCB1bmRlZmluZWQ7XG5cdGxldCBjaGFydEFubm90YXRpb246IENoYXJ0IHwgdW5kZWZpbmVkO1xuXHRsZXQgbmF2aWdhdGlvbkluZm86IE5hdmlnYXRpb25JbmZvIHwgdW5kZWZpbmVkO1xuXG5cdC8vIFNlYXJjaCBmb3IgYSBLUEkgd2l0aCB0aGUgcXVhbGlmaWVyIGZybW8gdGhlIG1hbmlmZXN0XG5cdGNvbnN0IGFLUElBbm5vdGF0aW9ucyA9IGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0QW5ub3RhdGlvbnNCeVRlcm0oXCJVSVwiLCBVSUFubm90YXRpb25UZXJtcy5LUEkpIGFzIEFubm90YXRpb25UZXJtPEtQSVR5cGU+W107XG5cdGNvbnN0IHRhcmdldEtQSSA9IGFLUElBbm5vdGF0aW9ucy5maW5kKChrcGkpID0+IHtcblx0XHRyZXR1cm4ga3BpLnF1YWxpZmllciA9PT0ga3BpQ29uZmlnLnF1YWxpZmllcjtcblx0fSk7XG5cdGlmICh0YXJnZXRLUEkpIHtcblx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uID0gdGFyZ2V0S1BJLkRhdGFQb2ludDtcblx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA9IHRhcmdldEtQSS5TZWxlY3Rpb25WYXJpYW50O1xuXHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0S1BJLkRldGFpbD8uRGVmYXVsdFByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0Y2hhcnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXo6IGFueSkgPT4ge1xuXHRcdFx0cmV0dXJuIHZpei4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5DaGFydERlZmluaXRpb25UeXBlO1xuXHRcdH0pPy4kdGFyZ2V0IGFzIENoYXJ0O1xuXG5cdFx0aWYgKHRhcmdldEtQSS5EZXRhaWw/LlNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRuYXZpZ2F0aW9uSW5mbyA9IHtcblx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IHRhcmdldEtQSS5EZXRhaWwuU2VtYW50aWNPYmplY3QudG9TdHJpbmcoKSxcblx0XHRcdFx0YWN0aW9uOiB0YXJnZXRLUEkuRGV0YWlsLkFjdGlvbj8udG9TdHJpbmcoKSxcblx0XHRcdFx0dW5hdmFpbGFibGVBY3Rpb25zOiBbXVxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gRmFsbGJhY2s6IHRyeSB0byBmaW5kIGEgU1BWIHdpdGggdGhlIHNhbWUgcXVhbGlmaWVyXG5cdFx0Y29uc3QgYVNQVkFubm90YXRpb25zID0ga3BpQ29udmVydGVyQ29udGV4dC5nZXRBbm5vdGF0aW9uc0J5VGVybShcblx0XHRcdFwiVUlcIixcblx0XHRcdFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHQpIGFzIEFubm90YXRpb25UZXJtPFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRUeXBlPltdO1xuXHRcdGNvbnN0IHRhcmdldFNQViA9IGFTUFZBbm5vdGF0aW9ucy5maW5kKChzcHYpID0+IHtcblx0XHRcdHJldHVybiBzcHYucXVhbGlmaWVyID09PSBrcGlDb25maWcucXVhbGlmaWVyO1xuXHRcdH0pO1xuXHRcdGlmICh0YXJnZXRTUFYpIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0U1BWLlNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0XHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiA9IHRhcmdldFNQVi5QcmVzZW50YXRpb25WYXJpYW50O1xuXHRcdFx0ZGF0YXBvaW50QW5ub3RhdGlvbiA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5WaXN1YWxpemF0aW9ucz8uZmluZCgodml6OiBhbnkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHZpei4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlO1xuXHRcdFx0fSk/LiR0YXJnZXQgYXMgRGF0YVBvaW50O1xuXHRcdFx0Y2hhcnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXo6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdml6LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNoYXJ0RGVmaW5pdGlvblR5cGU7XG5cdFx0XHR9KT8uJHRhcmdldCBhcyBDaGFydDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQ291bGRuJ3QgZmluZCBhIEtQSSBvciBhIFNQViBhbm5vdGF0aW9uIHdpdGggdGhlIHF1YWxpZmllciBmcm9tIHRoZSBtYW5pZmVzdFxuXHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5Lk1lZGl1bSwgSXNzdWVUeXBlLktQSV9JU1NVRVMuS1BJX05PVF9GT1VORCArIGtwaUNvbmZpZy5xdWFsaWZpZXIpO1xuXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdGlmICghcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gfHwgIWRhdGFwb2ludEFubm90YXRpb24gfHwgIWNoYXJ0QW5ub3RhdGlvbikge1xuXHRcdC8vIENvdWxkbid0IGZpbmQgYSBjaGFydCBvciBkYXRhcG9pbnQgZGVmaW5pdGlvblxuXHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5Lk1lZGl1bSwgSXNzdWVUeXBlLktQSV9JU1NVRVMuS1BJX0RFVEFJTF9OT1RfRk9VTkQgKyBrcGlDb25maWcucXVhbGlmaWVyKTtcblxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBkYXRhcG9pbnRQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0aWYgKCFhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKGRhdGFwb2ludFByb3BlcnR5KSkge1xuXHRcdC8vIFRoZSBtYWluIHByb3BlcnR5IG9mIHRoZSBLUEkgaXMgbm90IGFnZ3JlZ2F0YWJsZSAtLT4gV2UgY2FuJ3QgY2FsY3VsYXRlIGl0cyB2YWx1ZSBzbyB3ZSBpZ25vcmUgdGhlIEtQSVxuXHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHQuYWRkSXNzdWUoXG5cdFx0XHRcdElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbixcblx0XHRcdFx0SXNzdWVTZXZlcml0eS5NZWRpdW0sXG5cdFx0XHRcdElzc3VlVHlwZS5LUElfSVNTVUVTLk1BSU5fUFJPUEVSVFlfTk9UX0FHR1JFR0FUQUJMRSArIGtwaUNvbmZpZy5xdWFsaWZpZXJcblx0XHRcdCk7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8vIENoYXJ0IGRlZmluaXRpb25cblx0Y29uc3QgY2hhcnREZWYgPSBjb252ZXJ0S1BJQ2hhcnQoY2hhcnRBbm5vdGF0aW9uLCBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbik7XG5cdGlmICghY2hhcnREZWYpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3Qga3BpRGVmOiBLUElEZWZpbml0aW9uID0ge1xuXHRcdGlkOiBnZXRLUElJRChrcGlOYW1lKSxcblx0XHRlbnRpdHlTZXQ6IGtwaUNvbmZpZy5lbnRpdHlTZXQsXG5cdFx0ZGF0YXBvaW50OiB7XG5cdFx0XHRwcm9wZXJ0eVBhdGg6IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUucGF0aCxcblx0XHRcdGFubm90YXRpb25QYXRoOiBrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YXBvaW50QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0dGl0bGU6IGRhdGFwb2ludEFubm90YXRpb24uVGl0bGU/LnRvU3RyaW5nKCksXG5cdFx0XHRkZXNjcmlwdGlvbjogZGF0YXBvaW50QW5ub3RhdGlvbi5EZXNjcmlwdGlvbj8udG9TdHJpbmcoKVxuXHRcdH0sXG5cdFx0c2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zOiBzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvblxuXHRcdFx0PyBnZXRGaWx0ZXJEZWZpbml0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKVxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0Y2hhcnQ6IGNoYXJ0RGVmXG5cdH07XG5cblx0Ly8gTmF2aWdhdGlvblxuXHRpZiAoIW5hdmlnYXRpb25JbmZvKSB7XG5cdFx0Ly8gTm8gbmF2aWdhdGlvbkluZm8gd2FzIGZvdW5kIGluIHRoZSBLUEkgYW5ub3RhdGlvbiAtLT4gdHJ5IHRoZSBvdXRib3VuZCBuYXZpZ2F0aW9uIGZyb20gdGhlIG1hbmlmZXN0XG5cdFx0aWYgKGtwaUNvbmZpZy5kZXRhaWxOYXZpZ2F0aW9uKSB7XG5cdFx0XHRuYXZpZ2F0aW9uSW5mbyA9IHtcblx0XHRcdFx0b3V0Ym91bmROYXZpZ2F0aW9uOiBrcGlDb25maWcuZGV0YWlsTmF2aWdhdGlvblxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTm8gb3V0Ym91bmQgbmF2aWdhdGlvbiBpbiB0aGUgbWFuaWZlc3QgLS0+IHRyeSB0aGUgc2VtYW50aWMgb2JqZWN0IG9uIHRoZSBEYXRhcG9pbnQgdmFsdWVcblx0XHRcdG5hdmlnYXRpb25JbmZvID0gZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkoZGF0YXBvaW50UHJvcGVydHkpO1xuXHRcdH1cblx0fVxuXHRpZiAobmF2aWdhdGlvbkluZm8pIHtcblx0XHRrcGlEZWYubmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JbmZvO1xuXHR9XG5cblx0dXBkYXRlQ3VycmVuY3koZGF0YXBvaW50QW5ub3RhdGlvbiwga3BpRGVmKTtcblx0dXBkYXRlQ3JpdGljYWxpdHkoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cdHVwZGF0ZVRyZW5kKGRhdGFwb2ludEFubm90YXRpb24sIGFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWYpO1xuXHR1cGRhdGVUYXJnZXQoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cblx0cmV0dXJuIGtwaURlZjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBLUEkgZGVmaW5pdGlvbnMgZnJvbSB0aGUgbWFuaWZlc3QgYW5kIHRoZSBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQgZm9yIHRoZSBwYWdlXG4gKiBAcmV0dXJucyBSZXR1cm5zIGFuIGFycmF5IG9mIEtQSSBkZWZpbml0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S1BJRGVmaW5pdGlvbnMoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEtQSURlZmluaXRpb25bXSB7XG5cdGNvbnN0IGtwaUNvbmZpZ3MgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldEtQSUNvbmZpZ3VyYXRpb24oKSxcblx0XHRrcGlEZWZzOiBLUElEZWZpbml0aW9uW10gPSBbXTtcblxuXHRPYmplY3Qua2V5cyhrcGlDb25maWdzKS5mb3JFYWNoKChrcGlOYW1lKSA9PiB7XG5cdFx0Y29uc3Qgb0RlZiA9IGNyZWF0ZUtQSURlZmluaXRpb24oa3BpTmFtZSwga3BpQ29uZmlnc1trcGlOYW1lXSwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0aWYgKG9EZWYpIHtcblx0XHRcdGtwaURlZnMucHVzaChvRGVmKTtcblx0XHR9XG5cdH0pO1xuXG5cdHJldHVybiBrcGlEZWZzO1xufVxuIl19
424
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIktQSS50cyJdLCJuYW1lcyI6WyJEZXZpYXRpb25JbmRpY2F0b3JGcm9tVHJlbmRUeXBlIiwiS1BJQ2hhcnRUeXBlRnJvbVVJIiwiY29udmVydEtQSUNoYXJ0IiwiY2hhcnRBbm5vdGF0aW9uIiwicHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24iLCJNZWFzdXJlcyIsInVuZGVmaW5lZCIsImNoYXJEaW1lbnNpb25zIiwiRGltZW5zaW9ucyIsIm1hcCIsInByb3BlcnR5UGF0aCIsImRpbUF0dHJpYnV0ZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJmaW5kIiwiYXR0cmlidXRlIiwiRGltZW5zaW9uIiwidmFsdWUiLCJuYW1lIiwibGFiZWwiLCIkdGFyZ2V0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwicm9sZSIsIlJvbGUiLCJyZXBsYWNlIiwiY2hhcnRNZWFzdXJlcyIsIm1lYXN1cmVBdHRyaWJ1dGUiLCJNZWFzdXJlQXR0cmlidXRlcyIsIk1lYXN1cmUiLCJjaGFydFR5cGUiLCJDaGFydFR5cGUiLCJkaW1lbnNpb25zIiwibWVhc3VyZXMiLCJzb3J0T3JkZXIiLCJTb3J0T3JkZXIiLCJQcm9wZXJ0eSIsImRlc2NlbmRpbmciLCJEZXNjZW5kaW5nIiwibWF4SXRlbXMiLCJNYXhJdGVtcyIsInZhbHVlT2YiLCJ1cGRhdGVDdXJyZW5jeSIsImRhdGFwb2ludEFubm90YXRpb24iLCJrcGlEZWYiLCJ0YXJnZXRWYWx1ZVByb3BlcnR5IiwiVmFsdWUiLCJJU09DdXJyZW5jeSIsImN1cnJlbmN5IiwiaXNQYXRoRXhwcmVzc2lvbiIsImRhdGFwb2ludCIsInVuaXQiLCJpc0N1cnJlbmN5IiwiaXNQYXRoIiwiVW5pdCIsInVwZGF0ZUNyaXRpY2FsaXR5IiwiYWdncmVnYXRpb25IZWxwZXIiLCJDcml0aWNhbGl0eSIsImNyaXRpY2FsaXR5UHJvcGVydHkiLCJpc1Byb3BlcnR5QWdncmVnYXRhYmxlIiwiY3JpdGljYWxpdHlQYXRoIiwicGF0aCIsImNyaXRpY2FsaXR5VmFsdWUiLCJNZXNzYWdlVHlwZSIsIk5vbmUiLCJnZXRNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eVR5cGUiLCJDcml0aWNhbGl0eUNhbGN1bGF0aW9uIiwiY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUiLCJJbXByb3ZlbWVudERpcmVjdGlvbiIsImNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzIiwicHVzaCIsIkRldmlhdGlvblJhbmdlTG93VmFsdWUiLCJUb2xlcmFuY2VSYW5nZUxvd1ZhbHVlIiwiQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUiLCJBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUiLCJUb2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSIsIkRldmlhdGlvblJhbmdlSGlnaFZhbHVlIiwidXBkYXRlVHJlbmQiLCJUcmVuZCIsInRyZW5kUHJvcGVydHkiLCJ0cmVuZFBhdGgiLCJ0cmVuZFZhbHVlIiwiVHJlbmRDYWxjdWxhdGlvbiIsInRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlIiwiSXNSZWxhdGl2ZURpZmZlcmVuY2UiLCJSZWZlcmVuY2VWYWx1ZSIsInJlZmVyZW5jZVByb3BlcnR5IiwidHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGgiLCJ0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWUiLCJ0cmVuZENhbGN1bGF0aW9uVHJlc2hvbGRzIiwiU3Ryb25nRG93bkRpZmZlcmVuY2UiLCJEb3duRGlmZmVyZW5jZSIsIlVwRGlmZmVyZW5jZSIsIlN0cm9uZ1VwRGlmZmVyZW5jZSIsInVwZGF0ZVRhcmdldCIsIlRhcmdldFZhbHVlIiwidGFyZ2V0UHJvcGVydHkiLCJ0YXJnZXRQYXRoIiwidGFyZ2V0VmFsdWUiLCJnZXROYXZpZ2F0aW9uSW5mb0Zyb21Qcm9wZXJ0eSIsInByb3BlcnR5Iiwic2VtYW50aWNPYmplY3RBbm5vdGF0aW9uIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJhbm5vdGF0aW9uS2V5IiwiYW5ub3RhdGlvbiIsInRlcm0iLCJxdWFsaWZpZXIiLCJyZXN1bHQiLCJzZW1hbnRpY09iamVjdCIsInVuYXZhaWxhYmxlQWN0aW9ucyIsImtleSIsImNyZWF0ZUtQSURlZmluaXRpb24iLCJrcGlOYW1lIiwia3BpQ29uZmlnIiwiY29udmVydGVyQ29udGV4dCIsImtwaUNvbnZlcnRlckNvbnRleHQiLCJnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yIiwiZW50aXR5U2V0IiwiQWdncmVnYXRpb25IZWxwZXIiLCJnZXRFbnRpdHlUeXBlIiwiaXNBbmFseXRpY3NTdXBwb3J0ZWQiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVUeXBlIiwiS1BJX0lTU1VFUyIsIk5PX0FOQUxZVElDUyIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwibmF2aWdhdGlvbkluZm8iLCJhS1BJQW5ub3RhdGlvbnMiLCJnZXRBbm5vdGF0aW9uc0J5VGVybSIsInRhcmdldEtQSSIsImtwaSIsIkRhdGFQb2ludCIsIlNlbGVjdGlvblZhcmlhbnQiLCJEZXRhaWwiLCJEZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudCIsIlZpc3VhbGl6YXRpb25zIiwidml6IiwiJFR5cGUiLCJTZW1hbnRpY09iamVjdCIsImFjdGlvbiIsIkFjdGlvbiIsImFTUFZBbm5vdGF0aW9ucyIsInRhcmdldFNQViIsInNwdiIsIlByZXNlbnRhdGlvblZhcmlhbnQiLCJLUElfTk9UX0ZPVU5EIiwiS1BJX0RFVEFJTF9OT1RfRk9VTkQiLCJkYXRhcG9pbnRQcm9wZXJ0eSIsIk1BSU5fUFJPUEVSVFlfTk9UX0FHR1JFR0FUQUJMRSIsImNoYXJ0RGVmIiwiaWQiLCJnZXRLUElJRCIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRpdGxlIiwiVGl0bGUiLCJkZXNjcmlwdGlvbiIsIkRlc2NyaXB0aW9uIiwic2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zIiwiZ2V0RmlsdGVyRGVmaW5pdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCIsImNoYXJ0IiwiZGV0YWlsTmF2aWdhdGlvbiIsIm91dGJvdW5kTmF2aWdhdGlvbiIsIm5hdmlnYXRpb24iLCJnZXRLUElEZWZpbml0aW9ucyIsImtwaUNvbmZpZ3MiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRLUElDb25maWd1cmF0aW9uIiwia3BpRGVmcyIsIm9EZWYiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQXVFQSxNQUFNQSwrQkFBdUQsR0FBRztBQUMvRCw2QkFBeUIsSUFEc0M7QUFFL0QsdUJBQW1CLElBRjRDO0FBRy9ELCtCQUEyQixNQUhvQztBQUkvRCx5QkFBcUIsTUFKMEM7QUFLL0QsNkJBQXlCO0FBTHNDLEdBQWhFO0FBUUEsTUFBTUMsa0JBQTBDLEdBQUc7QUFDbEQsa0NBQThCLGVBRG9CO0FBRWxELCtCQUEyQixZQUZ1QjtBQUdsRCwwQkFBc0IsT0FINEI7QUFJbEQseUJBQXFCLE1BSjZCO0FBS2xELDJCQUF1QixRQUwyQjtBQU1sRCwyQkFBdUIsUUFOMkI7QUFPbEQsd0JBQW9CLEtBUDhCO0FBUWxELG1DQUErQixpQkFSbUI7QUFTbEQsZ0NBQTRCLGFBVHNCO0FBVWxELDRCQUF3QjtBQVYwQixHQUFuRDs7QUFhQSxXQUFTQyxlQUFULENBQXlCQyxlQUF6QixFQUFpREMsNkJBQWpELEVBQXlJO0FBQUE7O0FBQ3hJLFFBQUlELGVBQWUsQ0FBQ0UsUUFBaEIsS0FBNkJDLFNBQWpDLEVBQTRDO0FBQzNDO0FBQ0EsYUFBT0EsU0FBUDtBQUNBOztBQUVELFFBQU1DLGNBQWMsR0FBR0osZUFBZSxDQUFDSyxVQUFoQixHQUNwQkwsZUFBZSxDQUFDSyxVQUFoQixDQUEyQkMsR0FBM0IsQ0FBK0IsVUFBQ0MsWUFBRCxFQUFrQjtBQUFBOztBQUNqRCxVQUFNQyxZQUFZLDRCQUFHUixlQUFlLENBQUNTLG1C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YjtBQUNBO0FBQ0QsS0FMRDtBQU9BLFdBQU9ELE9BQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uVGVybSwgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlbWFudGljT2JqZWN0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENoYXJ0LFxuXHRDcml0aWNhbGl0eVR5cGUsXG5cdERhdGFQb2ludCxcblx0RGF0YVBvaW50VHlwZSxcblx0SW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlLFxuXHRLUEksXG5cdFByZXNlbnRhdGlvblZhcmlhbnRUeXBlLFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50VHlwZSxcblx0VHJlbmRUeXBlXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSwgSXNzdWVTZXZlcml0eSwgSXNzdWVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyRGVmaW5pdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvU2VsZWN0aW9uVmFyaWFudEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0RmlsdGVyRGVmaW5pdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvU2VsZWN0aW9uVmFyaWFudEhlbHBlclwiO1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9UYWJsZUZvcm1hdHRlclR5cGVzXCI7XG5pbXBvcnQgeyBpc1BhdGhFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uSGVscGVyIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IGdldEtQSUlEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB0eXBlIHsgS1BJQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRNZXNzYWdlVHlwZUZyb21Dcml0aWNhbGl0eVR5cGUgfSBmcm9tIFwiLi9Dcml0aWNhbGl0eVwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uSW5mbyA9IHtcblx0c2VtYW50aWNPYmplY3Q/OiBzdHJpbmc7XG5cdGFjdGlvbj86IHN0cmluZztcblx0dW5hdmFpbGFibGVBY3Rpb25zPzogc3RyaW5nW107XG5cdG91dGJvdW5kTmF2aWdhdGlvbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEtQSUNoYXJ0RGVmaW5pdGlvbiA9IHtcblx0Y2hhcnRUeXBlOiBzdHJpbmc7XG5cdGRpbWVuc2lvbnM6IHsgbmFtZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyByb2xlPzogc3RyaW5nIH1bXTtcblx0bWVhc3VyZXM6IHsgbmFtZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyByb2xlPzogc3RyaW5nIH1bXTtcblx0c29ydE9yZGVyPzogeyBuYW1lOiBzdHJpbmc7IGRlc2NlbmRpbmc6IGJvb2xlYW4gfVtdO1xuXHRtYXhJdGVtcz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEtQSURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdGVudGl0eVNldDogc3RyaW5nO1xuXHRkYXRhcG9pbnQ6IHtcblx0XHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nO1xuXHRcdHVuaXQ/OiB7XG5cdFx0XHR2YWx1ZTogc3RyaW5nO1xuXHRcdFx0aXNQYXRoOiBib29sZWFuO1xuXHRcdFx0aXNDdXJyZW5jeTogYm9vbGVhbjtcblx0XHR9O1xuXHRcdGNyaXRpY2FsaXR5UGF0aD86IHN0cmluZztcblx0XHRjcml0aWNhbGl0eVZhbHVlPzogTWVzc2FnZVR5cGU7XG5cdFx0Y3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGU/OiBJbXByb3ZlbWVudERpcmVjdGlvblR5cGU7XG5cdFx0Y3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHM/OiAobnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbClbXTtcblx0XHR0aXRsZT86IHN0cmluZztcblx0XHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0XHR0cmVuZFBhdGg/OiBzdHJpbmc7XG5cdFx0dHJlbmRWYWx1ZT86IHN0cmluZztcblx0XHR0cmVuZENhbGN1bGF0aW9uUmVmZXJlbmNlVmFsdWU/OiBudW1iZXI7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGg/OiBzdHJpbmc7XG5cdFx0dHJlbmRDYWxjdWxhdGlvblRyZXNob2xkcz86IChudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKVtdO1xuXHRcdHRyZW5kQ2FsY3VsYXRpb25Jc1JlbGF0aXZlPzogYm9vbGVhbjtcblx0XHR0YXJnZXRWYWx1ZT86IG51bWJlcjtcblx0XHR0YXJnZXRQYXRoPzogc3RyaW5nO1xuXHR9O1xuXHRjaGFydDogS1BJQ2hhcnREZWZpbml0aW9uO1xuXHRzZWxlY3Rpb25WYXJpYW50RmlsdGVyRGVmaW5pdGlvbnM/OiBGaWx0ZXJEZWZpbml0aW9uW107XG5cdG5hdmlnYXRpb24/OiBOYXZpZ2F0aW9uSW5mbztcbn07XG5cbmNvbnN0IERldmlhdGlvbkluZGljYXRvckZyb21UcmVuZFR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFwiVUkuVHJlbmRUeXBlL1N0cm9uZ1VwXCI6IFwiVXBcIixcblx0XCJVSS5UcmVuZFR5cGUvVXBcIjogXCJVcFwiLFxuXHRcIlVJLlRyZW5kVHlwZS9TdHJvbmdEb3duXCI6IFwiRG93blwiLFxuXHRcIlVJLlRyZW5kVHlwZS9Eb3duXCI6IFwiRG93blwiLFxuXHRcIlVJLlRyZW5kVHlwZS9TaWRld2F5c1wiOiBcIk5vbmVcIlxufTtcblxuY29uc3QgS1BJQ2hhcnRUeXBlRnJvbVVJOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcIlVJLkNoYXJ0VHlwZS9Db2x1bW5TdGFja2VkXCI6IFwiU3RhY2tlZENvbHVtblwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6IFwiU3RhY2tlZEJhclwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Eb251dFwiOiBcIkRvbnV0XCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjogXCJMaW5lXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0J1YmJsZVwiOiBcImJ1YmJsZVwiLFxuXHRcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjogXCJjb2x1bW5cIixcblx0XCJVSS5DaGFydFR5cGUvQmFyXCI6IFwiYmFyXCIsXG5cdFwiVUkuQ2hhcnRUeXBlL1ZlcnRpY2FsQnVsbGV0XCI6IFwidmVydGljYWxfYnVsbGV0XCIsXG5cdFwiVUkuQ2hhcnRUeXBlL0NvbWJpbmF0aW9uXCI6IFwiY29tYmluYXRpb25cIixcblx0XCJVSS5DaGFydFR5cGUvU2NhdHRlclwiOiBcInNjYXR0ZXJcIlxufTtcblxuZnVuY3Rpb24gY29udmVydEtQSUNoYXJ0KGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsIHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50VHlwZSk6IEtQSUNoYXJ0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG5cdGlmIChjaGFydEFubm90YXRpb24uTWVhc3VyZXMgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIFdlIG5lZWQgYXQgbGVhc3QgMSBtZWFzdXJlIChidXQgbm8gZGltZW5zaW9uIGlzIGFsbG93ZWQsIGUuZy4gZm9yIGJ1YmJsZSBjaGFydClcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3QgY2hhckRpbWVuc2lvbnMgPSBjaGFydEFubm90YXRpb24uRGltZW5zaW9uc1xuXHRcdD8gY2hhcnRBbm5vdGF0aW9uLkRpbWVuc2lvbnMubWFwKChwcm9wZXJ0eVBhdGgpID0+IHtcblx0XHRcdFx0Y29uc3QgZGltQXR0cmlidXRlID0gY2hhcnRBbm5vdGF0aW9uLkRpbWVuc2lvbkF0dHJpYnV0ZXM/LmZpbmQoKGF0dHJpYnV0ZSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBhdHRyaWJ1dGUuRGltZW5zaW9uPy52YWx1ZSA9PT0gcHJvcGVydHlQYXRoLnZhbHVlO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRuYW1lOiBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRcdFx0bGFiZWw6IHByb3BlcnR5UGF0aC4kdGFyZ2V0LmFubm90YXRpb25zLkNvbW1vbj8uTGFiZWw/LnRvU3RyaW5nKCkgfHwgcHJvcGVydHlQYXRoLnZhbHVlLFxuXHRcdFx0XHRcdHJvbGU6IGRpbUF0dHJpYnV0ZT8uUm9sZT8ucmVwbGFjZShcIlVJLkNoYXJ0RGltZW5zaW9uUm9sZVR5cGUvXCIsIFwiXCIpXG5cdFx0XHRcdH07XG5cdFx0ICB9KVxuXHRcdDogW107XG5cblx0Y29uc3QgY2hhcnRNZWFzdXJlcyA9IGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlcy5tYXAoKHByb3BlcnR5UGF0aCkgPT4ge1xuXHRcdGNvbnN0IG1lYXN1cmVBdHRyaWJ1dGUgPSBjaGFydEFubm90YXRpb24uTWVhc3VyZUF0dHJpYnV0ZXM/LmZpbmQoKGF0dHJpYnV0ZSkgPT4ge1xuXHRcdFx0cmV0dXJuIGF0dHJpYnV0ZS5NZWFzdXJlPy52YWx1ZSA9PT0gcHJvcGVydHlQYXRoLnZhbHVlO1xuXHRcdH0pO1xuXHRcdHJldHVybiB7XG5cdFx0XHRuYW1lOiBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRsYWJlbDogcHJvcGVydHlQYXRoLiR0YXJnZXQuYW5ub3RhdGlvbnMuQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKSB8fCBwcm9wZXJ0eVBhdGgudmFsdWUsXG5cdFx0XHRyb2xlOiBtZWFzdXJlQXR0cmlidXRlPy5Sb2xlPy5yZXBsYWNlKFwiVUkuQ2hhcnRNZWFzdXJlUm9sZVR5cGUvXCIsIFwiXCIpXG5cdFx0fTtcblx0fSk7XG5cblx0cmV0dXJuIHtcblx0XHRjaGFydFR5cGU6IEtQSUNoYXJ0VHlwZUZyb21VSVtjaGFydEFubm90YXRpb24uQ2hhcnRUeXBlXSB8fCBcIkxpbmVcIixcblx0XHRkaW1lbnNpb25zOiBjaGFyRGltZW5zaW9ucyxcblx0XHRtZWFzdXJlczogY2hhcnRNZWFzdXJlcyxcblx0XHRzb3J0T3JkZXI6IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5Tb3J0T3JkZXI/Lm1hcCgoc29ydE9yZGVyKSA9PiB7XG5cdFx0XHRyZXR1cm4geyBuYW1lOiBzb3J0T3JkZXIuUHJvcGVydHk/LnZhbHVlIHx8IFwiXCIsIGRlc2NlbmRpbmc6ICEhc29ydE9yZGVyLkRlc2NlbmRpbmcgfTtcblx0XHR9KSxcblx0XHRtYXhJdGVtczogcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/Lk1heEl0ZW1zPy52YWx1ZU9mKCkgYXMgbnVtYmVyXG5cdH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUN1cnJlbmN5KGRhdGFwb2ludEFubm90YXRpb246IERhdGFQb2ludFR5cGUsIGtwaURlZjogS1BJRGVmaW5pdGlvbik6IHZvaWQge1xuXHRjb25zdCB0YXJnZXRWYWx1ZVByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5WYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRpZiAodGFyZ2V0VmFsdWVQcm9wZXJ0eS5hbm5vdGF0aW9ucy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kpIHtcblx0XHRjb25zdCBjdXJyZW5jeSA9IHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LklTT0N1cnJlbmN5O1xuXHRcdGlmIChpc1BhdGhFeHByZXNzaW9uKGN1cnJlbmN5KSkge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC51bml0ID0ge1xuXHRcdFx0XHR2YWx1ZTogKGN1cnJlbmN5LiR0YXJnZXQgYXMgdW5rbm93biBhcyBQcm9wZXJ0eSkubmFtZSxcblx0XHRcdFx0aXNDdXJyZW5jeTogdHJ1ZSxcblx0XHRcdFx0aXNQYXRoOiB0cnVlXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnVuaXQgPSB7XG5cdFx0XHRcdHZhbHVlOiBjdXJyZW5jeS50b1N0cmluZygpLFxuXHRcdFx0XHRpc0N1cnJlbmN5OiB0cnVlLFxuXHRcdFx0XHRpc1BhdGg6IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fSBlbHNlIGlmICh0YXJnZXRWYWx1ZVByb3BlcnR5LmFubm90YXRpb25zLk1lYXN1cmVzPy5Vbml0KSB7XG5cdFx0Y29uc3QgdW5pdCA9IHRhcmdldFZhbHVlUHJvcGVydHkuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LlVuaXQ7XG5cdFx0aWYgKGlzUGF0aEV4cHJlc3Npb24odW5pdCkpIHtcblx0XHRcdGtwaURlZi5kYXRhcG9pbnQudW5pdCA9IHtcblx0XHRcdFx0dmFsdWU6ICh1bml0LiR0YXJnZXQgYXMgdW5rbm93biBhcyBQcm9wZXJ0eSkubmFtZSxcblx0XHRcdFx0aXNDdXJyZW5jeTogZmFsc2UsXG5cdFx0XHRcdGlzUGF0aDogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC51bml0ID0ge1xuXHRcdFx0XHR2YWx1ZTogdW5pdC50b1N0cmluZygpLFxuXHRcdFx0XHRpc0N1cnJlbmN5OiBmYWxzZSxcblx0XHRcdFx0aXNQYXRoOiBmYWxzZVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ3JpdGljYWxpdHkoZGF0YXBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50VHlwZSwgYWdncmVnYXRpb25IZWxwZXI6IEFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWY6IEtQSURlZmluaXRpb24pOiB2b2lkIHtcblx0aWYgKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpIHtcblx0XHRpZiAodHlwZW9mIGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIENyaXRpY2FsaXR5IGlzIGEgcGF0aCAtLT4gY2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlXG5cdFx0XHRjb25zdCBjcml0aWNhbGl0eVByb3BlcnR5ID0gKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkgYXMgYW55IGFzIFByb3BlcnR5UGF0aCkuJHRhcmdldDtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKGNyaXRpY2FsaXR5UHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlQYXRoID0gKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPENyaXRpY2FsaXR5VHlwZT4pLnBhdGg7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgcHJvcGVydHkgaXNuJ3QgYWdncmVnYXRhYmxlIC0tPiB3ZSBpZ25vcmUgaXRcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQ3JpdGljYWxpdHkgaXMgYW4gZW51bSBWYWx1ZSAtLT4gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gZ2V0TWVzc2FnZVR5cGVGcm9tQ3JpdGljYWxpdHlUeXBlKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHkpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24pIHtcblx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25Nb2RlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkltcHJvdmVtZW50RGlyZWN0aW9uO1xuXHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMgPSBbXTtcblx0XHRzd2l0Y2ggKGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvbk1vZGUpIHtcblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvVGFyZ2V0XCI6XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQuY3JpdGljYWxpdHlDYWxjdWxhdGlvblRocmVzaG9sZHMucHVzaChkYXRhcG9pbnRBbm5vdGF0aW9uLkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5JbXByb3ZlbWVudERpcmVjdGlvblR5cGUvTWluaW1pemVcIjpcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlSGlnaFZhbHVlKTtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eUNhbGN1bGF0aW9uVGhyZXNob2xkcy5wdXNoKGRhdGFwb2ludEFubm90YXRpb24uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuSW1wcm92ZW1lbnREaXJlY3Rpb25UeXBlL01heGltaXplXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlTG93VmFsdWUpO1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LmNyaXRpY2FsaXR5Q2FsY3VsYXRpb25UaHJlc2hvbGRzLnB1c2goZGF0YXBvaW50QW5ub3RhdGlvbi5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkFjY2VwdGFuY2VSYW5nZUxvd1ZhbHVlKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC5jcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0fVxufVxuXG5mdW5jdGlvbiB1cGRhdGVUcmVuZChkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnRUeXBlLCBhZ2dyZWdhdGlvbkhlbHBlcjogQWdncmVnYXRpb25IZWxwZXIsIGtwaURlZjogS1BJRGVmaW5pdGlvbik6IHZvaWQge1xuXHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZCkge1xuXHRcdGlmICh0eXBlb2YgZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZCA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0Ly8gVHJlbmQgaXMgYSBwYXRoIC0tPiBjaGVjayBpZiB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBpcyBhZ2dyZWdhdGFibGVcblx0XHRcdGNvbnN0IHRyZW5kUHJvcGVydHkgPSAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZCBhcyBhbnkgYXMgUHJvcGVydHlQYXRoKS4kdGFyZ2V0O1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUodHJlbmRQcm9wZXJ0eSkpIHtcblx0XHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFBhdGggPSAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZCBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248VHJlbmRUeXBlPikucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFRoZSBwcm9wZXJ0eSBpc24ndCBhZ2dyZWdhdGFibGUgLS0+IHdlIGlnbm9yZSBpdFxuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBcIk5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVHJlbmQgaXMgYW4gZW51bSBWYWx1ZSAtLT4gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB2YWx1ZVxuXHRcdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZFZhbHVlID0gRGV2aWF0aW9uSW5kaWNhdG9yRnJvbVRyZW5kVHlwZVtkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kXSB8fCBcIk5vbmVcIjtcblx0XHR9XG5cdH0gZWxzZSBpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uKSB7XG5cdFx0a3BpRGVmLmRhdGFwb2ludC50cmVuZENhbGN1bGF0aW9uSXNSZWxhdGl2ZSA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5Jc1JlbGF0aXZlRGlmZmVyZW5jZSA/IHRydWUgOiBmYWxzZTtcblx0XHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdC8vIFJlZmVyZW5jZSB2YWx1ZSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZVxuXHRcdFx0Y29uc3QgcmVmZXJlbmNlUHJvcGVydHkgPSBkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uUmVmZXJlbmNlVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKHJlZmVyZW5jZVByb3BlcnR5KSkge1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VQYXRoID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlJlZmVyZW5jZVZhbHVlLnBhdGg7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGUgcHJvcGVydHkgaXNuJ3QgYWdncmVnYXRhYmxlIC0tPiB3ZSBpZ25vcmUgaXQgYW5kIHN3aXRjaCBiYWNrIHRvIHRyZW5kICdOb25lJ1xuXHRcdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kVmFsdWUgPSBcIk5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gUmVmZXJlbmNlIHZhbHVlIGlzIGEgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSA9IGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5SZWZlcmVuY2VWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKGtwaURlZi5kYXRhcG9pbnQudHJlbmRDYWxjdWxhdGlvblJlZmVyZW5jZVBhdGggIT09IHVuZGVmaW5lZCB8fCBrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25SZWZlcmVuY2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRyZW5kQ2FsY3VsYXRpb25UcmVzaG9sZHMgPSBbXG5cdFx0XHRcdGRhdGFwb2ludEFubm90YXRpb24uVHJlbmRDYWxjdWxhdGlvbi5TdHJvbmdEb3duRGlmZmVyZW5jZS52YWx1ZU9mKCkgYXMgbnVtYmVyLFxuXHRcdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uRG93bkRpZmZlcmVuY2UudmFsdWVPZigpIGFzIG51bWJlcixcblx0XHRcdFx0ZGF0YXBvaW50QW5ub3RhdGlvbi5UcmVuZENhbGN1bGF0aW9uLlVwRGlmZmVyZW5jZS52YWx1ZU9mKCkgYXMgbnVtYmVyLFxuXHRcdFx0XHRkYXRhcG9pbnRBbm5vdGF0aW9uLlRyZW5kQ2FsY3VsYXRpb24uU3Ryb25nVXBEaWZmZXJlbmNlLnZhbHVlT2YoKSBhcyBudW1iZXJcblx0XHRcdF07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGtwaURlZi5kYXRhcG9pbnQudHJlbmRWYWx1ZSA9IFwiTm9uZVwiO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRhcmdldChkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnRUeXBlLCBhZ2dyZWdhdGlvbkhlbHBlcjogQWdncmVnYXRpb25IZWxwZXIsIGtwaURlZjogS1BJRGVmaW5pdGlvbik6IHZvaWQge1xuXHRpZiAoZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZSkge1xuXHRcdGlmIChkYXRhcG9pbnRBbm5vdGF0aW9uLlRhcmdldFZhbHVlLiR0YXJnZXQpIHtcblx0XHRcdC8vIFRhcmdldCB2YWx1ZSBpcyBhIHBhdGggLS0+IGNoZWNrIGlmIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlzIGFnZ3JlZ2F0YWJsZSAob3RoZXJ3aXNlIGlnbm9yZSlcblx0XHRcdGNvbnN0IHRhcmdldFByb3BlcnR5ID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZS4kdGFyZ2V0IGFzIFByb3BlcnR5O1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uSGVscGVyLmlzUHJvcGVydHlBZ2dyZWdhdGFibGUodGFyZ2V0UHJvcGVydHkpKSB7XG5cdFx0XHRcdGtwaURlZi5kYXRhcG9pbnQudGFyZ2V0UGF0aCA9IGRhdGFwb2ludEFubm90YXRpb24uVGFyZ2V0VmFsdWUucGF0aDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gVGFyZ2V0IHZhbHVlIGlzIGEgc3RhdGljIHZhbHVlXG5cdFx0XHRrcGlEZWYuZGF0YXBvaW50LnRhcmdldFZhbHVlID0gZGF0YXBvaW50QW5ub3RhdGlvbi5UYXJnZXRWYWx1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkocHJvcGVydHk6IFByb3BlcnR5KTogTmF2aWdhdGlvbkluZm8gfCB1bmRlZmluZWQge1xuXHRjb25zdCBhbm5vdGF0aW9uczogUmVjb3JkPHN0cmluZywgQW5ub3RhdGlvblRlcm08YW55Pj4gPSBwcm9wZXJ0eS5hbm5vdGF0aW9uc1tcIkNvbW1vblwiXSB8fCB7fTtcblxuXHQvLyBMb29rIGZvciB0aGUgc2VtYW50aWNPYmplY3QgYW5ub3RhdGlvbiAoaWYgYW55KVxuXHRsZXQgc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uOiBTZW1hbnRpY09iamVjdCB8IHVuZGVmaW5lZDtcblx0T2JqZWN0LmtleXMoYW5ub3RhdGlvbnMpLmZvckVhY2goKGFubm90YXRpb25LZXkpID0+IHtcblx0XHRjb25zdCBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnNbYW5ub3RhdGlvbktleV07XG5cdFx0aWYgKGFubm90YXRpb24udGVybSA9PT0gQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRpZiAoIWFubm90YXRpb24ucXVhbGlmaWVyIHx8ICFzZW1hbnRpY09iamVjdEFubm90YXRpb24pIHtcblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHRha2UgdGhlIGFubm90YXRpb24gd2l0aG91dCBxdWFsaWZpZXIgaWYgdGhlcmUncyBvbmUsIG90aGVyd2lzZSB3ZSB0YWtlIHRoZSBmaXJzdCBvbmVcblx0XHRcdFx0c2VtYW50aWNPYmplY3RBbm5vdGF0aW9uID0gYW5ub3RhdGlvbjtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXG5cdGlmIChzZW1hbnRpY09iamVjdEFubm90YXRpb24pIHtcblx0XHRjb25zdCByZXN1bHQgPSB7XG5cdFx0XHRzZW1hbnRpY09iamVjdDogc2VtYW50aWNPYmplY3RBbm5vdGF0aW9uLnRvU3RyaW5nKCksXG5cdFx0XHR1bmF2YWlsYWJsZUFjdGlvbnM6IFtdXG5cdFx0fTtcblxuXHRcdC8vIExvb2sgZm9yIHRoZSB1bmF2YWlsYWJsZSBhY3Rpb25zIChpZiBhbnkpXG5cdFx0Y29uc3QgYW5ub3RhdGlvbktleSA9IE9iamVjdC5rZXlzKGFubm90YXRpb25zKS5maW5kKChrZXkpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdGFubm90YXRpb25zW2tleV0udGVybSA9PT0gQ29tbW9uQW5ub3RhdGlvblRlcm1zLlNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zICYmXG5cdFx0XHRcdGFubm90YXRpb25zW2tleV0ucXVhbGlmaWVyID09PSBzZW1hbnRpY09iamVjdEFubm90YXRpb24/LnF1YWxpZmllclxuXHRcdFx0KTtcblx0XHR9KTtcblx0XHRpZiAoYW5ub3RhdGlvbktleSkge1xuXHRcdFx0cmVzdWx0LnVuYXZhaWxhYmxlQWN0aW9ucyA9IGFubm90YXRpb25zW2Fubm90YXRpb25LZXldO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLUElEZWZpbml0aW9uKGtwaU5hbWU6IHN0cmluZywga3BpQ29uZmlnOiBLUElDb25maWd1cmF0aW9uLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogS1BJRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IGtwaUNvbnZlcnRlckNvbnRleHQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlckNvbnRleHRGb3IoYC8ke2twaUNvbmZpZy5lbnRpdHlTZXR9YCk7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGtwaUNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBrcGlDb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRpZiAoIWFnZ3JlZ2F0aW9uSGVscGVyLmlzQW5hbHl0aWNzU3VwcG9ydGVkKCkpIHtcblx0XHQvLyBUaGUgZW50aXR5IGRvZXNuJ3Qgc3VwcG9ydCBhbmFseXRpY2FsIHF1ZXJpZXNcblx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0LmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5NZWRpdW0sIElzc3VlVHlwZS5LUElfSVNTVUVTLk5PX0FOQUxZVElDUyArIGtwaUNvbmZpZy5lbnRpdHlTZXQpO1xuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGxldCBzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbjogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdGxldCBkYXRhcG9pbnRBbm5vdGF0aW9uOiBEYXRhUG9pbnRUeXBlIHwgdW5kZWZpbmVkO1xuXHRsZXQgcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb246IFByZXNlbnRhdGlvblZhcmlhbnRUeXBlIHwgdW5kZWZpbmVkO1xuXHRsZXQgY2hhcnRBbm5vdGF0aW9uOiBDaGFydCB8IHVuZGVmaW5lZDtcblx0bGV0IG5hdmlnYXRpb25JbmZvOiBOYXZpZ2F0aW9uSW5mbyB8IHVuZGVmaW5lZDtcblxuXHQvLyBTZWFyY2ggZm9yIGEgS1BJIHdpdGggdGhlIHF1YWxpZmllciBmcm1vIHRoZSBtYW5pZmVzdFxuXHRjb25zdCBhS1BJQW5ub3RhdGlvbnMgPSBrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEFubm90YXRpb25zQnlUZXJtKFwiVUlcIiwgVUlBbm5vdGF0aW9uVGVybXMuS1BJKSBhcyBLUElbXTtcblx0Y29uc3QgdGFyZ2V0S1BJID0gYUtQSUFubm90YXRpb25zLmZpbmQoKGtwaSkgPT4ge1xuXHRcdHJldHVybiBrcGkucXVhbGlmaWVyID09PSBrcGlDb25maWcucXVhbGlmaWVyO1xuXHR9KTtcblx0aWYgKHRhcmdldEtQSSkge1xuXHRcdGRhdGFwb2ludEFubm90YXRpb24gPSB0YXJnZXRLUEkuRGF0YVBvaW50O1xuXHRcdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0S1BJLlNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gPSB0YXJnZXRLUEkuRGV0YWlsPy5EZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudDtcblx0XHRjaGFydEFubm90YXRpb24gPSBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbj8uVmlzdWFsaXphdGlvbnM/LmZpbmQoKHZpejogYW55KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNoYXJ0RGVmaW5pdGlvblR5cGU7XG5cdFx0fSk/LiR0YXJnZXQgYXMgQ2hhcnQ7XG5cblx0XHRpZiAodGFyZ2V0S1BJLkRldGFpbD8uU2VtYW50aWNPYmplY3QpIHtcblx0XHRcdG5hdmlnYXRpb25JbmZvID0ge1xuXHRcdFx0XHRzZW1hbnRpY09iamVjdDogdGFyZ2V0S1BJLkRldGFpbC5TZW1hbnRpY09iamVjdC50b1N0cmluZygpLFxuXHRcdFx0XHRhY3Rpb246IHRhcmdldEtQSS5EZXRhaWwuQWN0aW9uPy50b1N0cmluZygpLFxuXHRcdFx0XHR1bmF2YWlsYWJsZUFjdGlvbnM6IFtdXG5cdFx0XHR9O1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBGYWxsYmFjazogdHJ5IHRvIGZpbmQgYSBTUFYgd2l0aCB0aGUgc2FtZSBxdWFsaWZpZXJcblx0XHRjb25zdCBhU1BWQW5ub3RhdGlvbnMgPSBrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEFubm90YXRpb25zQnlUZXJtKFxuXHRcdFx0XCJVSVwiLFxuXHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdCkgYXMgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFtdO1xuXHRcdGNvbnN0IHRhcmdldFNQViA9IGFTUFZBbm5vdGF0aW9ucy5maW5kKChzcHYpID0+IHtcblx0XHRcdHJldHVybiBzcHYucXVhbGlmaWVyID09PSBrcGlDb25maWcucXVhbGlmaWVyO1xuXHRcdH0pO1xuXHRcdGlmICh0YXJnZXRTUFYpIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gdGFyZ2V0U1BWLlNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0XHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiA9IHRhcmdldFNQVi5QcmVzZW50YXRpb25WYXJpYW50O1xuXHRcdFx0ZGF0YXBvaW50QW5ub3RhdGlvbiA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uPy5WaXN1YWxpemF0aW9ucz8uZmluZCgodml6OiBhbnkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHZpei4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlO1xuXHRcdFx0fSk/LiR0YXJnZXQgYXMgRGF0YVBvaW50O1xuXHRcdFx0Y2hhcnRBbm5vdGF0aW9uID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24/LlZpc3VhbGl6YXRpb25zPy5maW5kKCh2aXo6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdml6LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNoYXJ0RGVmaW5pdGlvblR5cGU7XG5cdFx0XHR9KT8uJHRhcmdldCBhcyBDaGFydDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gQ291bGRuJ3QgZmluZCBhIEtQSSBvciBhIFNQViBhbm5vdGF0aW9uIHdpdGggdGhlIHF1YWxpZmllciBmcm9tIHRoZSBtYW5pZmVzdFxuXHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5Lk1lZGl1bSwgSXNzdWVUeXBlLktQSV9JU1NVRVMuS1BJX05PVF9GT1VORCArIGtwaUNvbmZpZy5xdWFsaWZpZXIpO1xuXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdGlmICghcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gfHwgIWRhdGFwb2ludEFubm90YXRpb24gfHwgIWNoYXJ0QW5ub3RhdGlvbikge1xuXHRcdC8vIENvdWxkbid0IGZpbmQgYSBjaGFydCBvciBkYXRhcG9pbnQgZGVmaW5pdGlvblxuXHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5Lk1lZGl1bSwgSXNzdWVUeXBlLktQSV9JU1NVRVMuS1BJX0RFVEFJTF9OT1RfRk9VTkQgKyBrcGlDb25maWcucXVhbGlmaWVyKTtcblxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHRjb25zdCBkYXRhcG9pbnRQcm9wZXJ0eSA9IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUuJHRhcmdldCBhcyBQcm9wZXJ0eTtcblx0aWYgKCFhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5QWdncmVnYXRhYmxlKGRhdGFwb2ludFByb3BlcnR5KSkge1xuXHRcdC8vIFRoZSBtYWluIHByb3BlcnR5IG9mIHRoZSBLUEkgaXMgbm90IGFnZ3JlZ2F0YWJsZSAtLT4gV2UgY2FuJ3QgY2FsY3VsYXRlIGl0cyB2YWx1ZSBzbyB3ZSBpZ25vcmUgdGhlIEtQSVxuXHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHQuYWRkSXNzdWUoXG5cdFx0XHRcdElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbixcblx0XHRcdFx0SXNzdWVTZXZlcml0eS5NZWRpdW0sXG5cdFx0XHRcdElzc3VlVHlwZS5LUElfSVNTVUVTLk1BSU5fUFJPUEVSVFlfTk9UX0FHR1JFR0FUQUJMRSArIGtwaUNvbmZpZy5xdWFsaWZpZXJcblx0XHRcdCk7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8vIENoYXJ0IGRlZmluaXRpb25cblx0Y29uc3QgY2hhcnREZWYgPSBjb252ZXJ0S1BJQ2hhcnQoY2hhcnRBbm5vdGF0aW9uLCBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbik7XG5cdGlmICghY2hhcnREZWYpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3Qga3BpRGVmOiBLUElEZWZpbml0aW9uID0ge1xuXHRcdGlkOiBnZXRLUElJRChrcGlOYW1lKSxcblx0XHRlbnRpdHlTZXQ6IGtwaUNvbmZpZy5lbnRpdHlTZXQsXG5cdFx0ZGF0YXBvaW50OiB7XG5cdFx0XHRwcm9wZXJ0eVBhdGg6IGRhdGFwb2ludEFubm90YXRpb24uVmFsdWUucGF0aCxcblx0XHRcdGFubm90YXRpb25QYXRoOiBrcGlDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZGF0YXBvaW50QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0dGl0bGU6IGRhdGFwb2ludEFubm90YXRpb24uVGl0bGU/LnRvU3RyaW5nKCksXG5cdFx0XHRkZXNjcmlwdGlvbjogZGF0YXBvaW50QW5ub3RhdGlvbi5EZXNjcmlwdGlvbj8udG9TdHJpbmcoKVxuXHRcdH0sXG5cdFx0c2VsZWN0aW9uVmFyaWFudEZpbHRlckRlZmluaXRpb25zOiBzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvblxuXHRcdFx0PyBnZXRGaWx0ZXJEZWZpbml0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50KHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKVxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0Y2hhcnQ6IGNoYXJ0RGVmXG5cdH07XG5cblx0Ly8gTmF2aWdhdGlvblxuXHRpZiAoIW5hdmlnYXRpb25JbmZvKSB7XG5cdFx0Ly8gTm8gbmF2aWdhdGlvbkluZm8gd2FzIGZvdW5kIGluIHRoZSBLUEkgYW5ub3RhdGlvbiAtLT4gdHJ5IHRoZSBvdXRib3VuZCBuYXZpZ2F0aW9uIGZyb20gdGhlIG1hbmlmZXN0XG5cdFx0aWYgKGtwaUNvbmZpZy5kZXRhaWxOYXZpZ2F0aW9uKSB7XG5cdFx0XHRuYXZpZ2F0aW9uSW5mbyA9IHtcblx0XHRcdFx0b3V0Ym91bmROYXZpZ2F0aW9uOiBrcGlDb25maWcuZGV0YWlsTmF2aWdhdGlvblxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTm8gb3V0Ym91bmQgbmF2aWdhdGlvbiBpbiB0aGUgbWFuaWZlc3QgLS0+IHRyeSB0aGUgc2VtYW50aWMgb2JqZWN0IG9uIHRoZSBEYXRhcG9pbnQgdmFsdWVcblx0XHRcdG5hdmlnYXRpb25JbmZvID0gZ2V0TmF2aWdhdGlvbkluZm9Gcm9tUHJvcGVydHkoZGF0YXBvaW50UHJvcGVydHkpO1xuXHRcdH1cblx0fVxuXHRpZiAobmF2aWdhdGlvbkluZm8pIHtcblx0XHRrcGlEZWYubmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JbmZvO1xuXHR9XG5cblx0dXBkYXRlQ3VycmVuY3koZGF0YXBvaW50QW5ub3RhdGlvbiwga3BpRGVmKTtcblx0dXBkYXRlQ3JpdGljYWxpdHkoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cdHVwZGF0ZVRyZW5kKGRhdGFwb2ludEFubm90YXRpb24sIGFnZ3JlZ2F0aW9uSGVscGVyLCBrcGlEZWYpO1xuXHR1cGRhdGVUYXJnZXQoZGF0YXBvaW50QW5ub3RhdGlvbiwgYWdncmVnYXRpb25IZWxwZXIsIGtwaURlZik7XG5cblx0cmV0dXJuIGtwaURlZjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBLUEkgZGVmaW5pdGlvbnMgZnJvbSB0aGUgbWFuaWZlc3QgYW5kIHRoZSBhbm5vdGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQgZm9yIHRoZSBwYWdlXG4gKiBAcmV0dXJucyBSZXR1cm5zIGFuIGFycmF5IG9mIEtQSSBkZWZpbml0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S1BJRGVmaW5pdGlvbnMoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEtQSURlZmluaXRpb25bXSB7XG5cdGNvbnN0IGtwaUNvbmZpZ3MgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldEtQSUNvbmZpZ3VyYXRpb24oKSxcblx0XHRrcGlEZWZzOiBLUElEZWZpbml0aW9uW10gPSBbXTtcblxuXHRPYmplY3Qua2V5cyhrcGlDb25maWdzKS5mb3JFYWNoKChrcGlOYW1lKSA9PiB7XG5cdFx0Y29uc3Qgb0RlZiA9IGNyZWF0ZUtQSURlZmluaXRpb24oa3BpTmFtZSwga3BpQ29uZmlnc1trcGlOYW1lXSwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0aWYgKG9EZWYpIHtcblx0XHRcdGtwaURlZnMucHVzaChvRGVmKTtcblx0XHR9XG5cdH0pO1xuXG5cdHJldHVybiBrcGlEZWZzO1xufVxuIl19
@@ -5,11 +5,12 @@ import type {
5
5
  Chart,
6
6
  CriticalityType,
7
7
  DataPoint,
8
+ DataPointType,
8
9
  ImprovementDirectionType,
9
- KPIType,
10
- PresentationVariant,
11
- SelectionPresentationVariantType,
12
- SelectionVariant,
10
+ KPI,
11
+ PresentationVariantType,
12
+ SelectionPresentationVariant,
13
+ SelectionVariantType,
13
14
  TrendType
14
15
  } from "@sap-ux/vocabularies-types/vocabularies/UI";
15
16
  import { UIAnnotationTerms, UIAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
@@ -91,7 +92,7 @@ const KPIChartTypeFromUI: Record<string, string> = {
91
92
  "UI.ChartType/Scatter": "scatter"
92
93
  };
93
94
 
94
- function convertKPIChart(chartAnnotation: Chart, presentationVariantAnnotation: PresentationVariant): KPIChartDefinition | undefined {
95
+ function convertKPIChart(chartAnnotation: Chart, presentationVariantAnnotation: PresentationVariantType): KPIChartDefinition | undefined {
95
96
  if (chartAnnotation.Measures === undefined) {
96
97
  // We need at least 1 measure (but no dimension is allowed, e.g. for bubble chart)
97
98
  return undefined;
@@ -132,7 +133,7 @@ function convertKPIChart(chartAnnotation: Chart, presentationVariantAnnotation:
132
133
  };
133
134
  }
134
135
 
135
- function updateCurrency(datapointAnnotation: DataPoint, kpiDef: KPIDefinition): void {
136
+ function updateCurrency(datapointAnnotation: DataPointType, kpiDef: KPIDefinition): void {
136
137
  const targetValueProperty = datapointAnnotation.Value.$target as Property;
137
138
  if (targetValueProperty.annotations.Measures?.ISOCurrency) {
138
139
  const currency = targetValueProperty.annotations.Measures?.ISOCurrency;
@@ -167,7 +168,7 @@ function updateCurrency(datapointAnnotation: DataPoint, kpiDef: KPIDefinition):
167
168
  }
168
169
  }
169
170
 
170
- function updateCriticality(datapointAnnotation: DataPoint, aggregationHelper: AggregationHelper, kpiDef: KPIDefinition): void {
171
+ function updateCriticality(datapointAnnotation: DataPointType, aggregationHelper: AggregationHelper, kpiDef: KPIDefinition): void {
171
172
  if (datapointAnnotation.Criticality) {
172
173
  if (typeof datapointAnnotation.Criticality === "object") {
173
174
  // Criticality is a path --> check if the corresponding property is aggregatable
@@ -212,7 +213,7 @@ function updateCriticality(datapointAnnotation: DataPoint, aggregationHelper: Ag
212
213
  }
213
214
  }
214
215
 
215
- function updateTrend(datapointAnnotation: DataPoint, aggregationHelper: AggregationHelper, kpiDef: KPIDefinition): void {
216
+ function updateTrend(datapointAnnotation: DataPointType, aggregationHelper: AggregationHelper, kpiDef: KPIDefinition): void {
216
217
  if (datapointAnnotation.Trend) {
217
218
  if (typeof datapointAnnotation.Trend === "object") {
218
219
  // Trend is a path --> check if the corresponding property is aggregatable
@@ -255,7 +256,7 @@ function updateTrend(datapointAnnotation: DataPoint, aggregationHelper: Aggregat
255
256
  }
256
257
  }
257
258
 
258
- function updateTarget(datapointAnnotation: DataPoint, aggregationHelper: AggregationHelper, kpiDef: KPIDefinition): void {
259
+ function updateTarget(datapointAnnotation: DataPointType, aggregationHelper: AggregationHelper, kpiDef: KPIDefinition): void {
259
260
  if (datapointAnnotation.TargetValue) {
260
261
  if (datapointAnnotation.TargetValue.$target) {
261
262
  // Target value is a path --> check if the corresponding property is aggregatable (otherwise ignore)
@@ -274,7 +275,7 @@ function getNavigationInfoFromProperty(property: Property): NavigationInfo | und
274
275
  const annotations: Record<string, AnnotationTerm<any>> = property.annotations["Common"] || {};
275
276
 
276
277
  // Look for the semanticObject annotation (if any)
277
- let semanticObjectAnnotation: AnnotationTerm<SemanticObject> | undefined;
278
+ let semanticObjectAnnotation: SemanticObject | undefined;
278
279
  Object.keys(annotations).forEach((annotationKey) => {
279
280
  const annotation = annotations[annotationKey];
280
281
  if (annotation.term === CommonAnnotationTerms.SemanticObject) {
@@ -321,14 +322,14 @@ function createKPIDefinition(kpiName: string, kpiConfig: KPIConfiguration, conve
321
322
  return undefined;
322
323
  }
323
324
 
324
- let selectionVariantAnnotation: SelectionVariant | undefined;
325
- let datapointAnnotation: DataPoint | undefined;
326
- let presentationVariantAnnotation: PresentationVariant | undefined;
325
+ let selectionVariantAnnotation: SelectionVariantType | undefined;
326
+ let datapointAnnotation: DataPointType | undefined;
327
+ let presentationVariantAnnotation: PresentationVariantType | undefined;
327
328
  let chartAnnotation: Chart | undefined;
328
329
  let navigationInfo: NavigationInfo | undefined;
329
330
 
330
331
  // Search for a KPI with the qualifier frmo the manifest
331
- const aKPIAnnotations = kpiConverterContext.getAnnotationsByTerm("UI", UIAnnotationTerms.KPI) as AnnotationTerm<KPIType>[];
332
+ const aKPIAnnotations = kpiConverterContext.getAnnotationsByTerm("UI", UIAnnotationTerms.KPI) as KPI[];
332
333
  const targetKPI = aKPIAnnotations.find((kpi) => {
333
334
  return kpi.qualifier === kpiConfig.qualifier;
334
335
  });
@@ -352,7 +353,7 @@ function createKPIDefinition(kpiName: string, kpiConfig: KPIConfiguration, conve
352
353
  const aSPVAnnotations = kpiConverterContext.getAnnotationsByTerm(
353
354
  "UI",
354
355
  UIAnnotationTerms.SelectionPresentationVariant
355
- ) as AnnotationTerm<SelectionPresentationVariantType>[];
356
+ ) as SelectionPresentationVariant[];
356
357
  const targetSPV = aSPVAnnotations.find((spv) => {
357
358
  return spv.qualifier === kpiConfig.qualifier;
358
359
  });