@sapui5/sap.fe.macros 1.140.0 → 1.141.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Chart.js +53 -2
  4. package/src/sap/fe/macros/Chart.tsx +55 -0
  5. package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
  6. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
  7. package/src/sap/fe/macros/CommonHelper.js +59 -15
  8. package/src/sap/fe/macros/CommonHelper.ts +65 -14
  9. package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
  10. package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
  11. package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
  12. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
  13. package/src/sap/fe/macros/Field.js +14 -10
  14. package/src/sap/fe/macros/Field.ts +15 -12
  15. package/src/sap/fe/macros/MacroAPI.js +9 -4
  16. package/src/sap/fe/macros/MacroAPI.ts +9 -4
  17. package/src/sap/fe/macros/MultiValueField.js +10 -5
  18. package/src/sap/fe/macros/MultiValueField.tsx +7 -1
  19. package/src/sap/fe/macros/Page.js +5 -7
  20. package/src/sap/fe/macros/Page.tsx +4 -6
  21. package/src/sap/fe/macros/Paginator.js +9 -4
  22. package/src/sap/fe/macros/Paginator.tsx +12 -3
  23. package/src/sap/fe/macros/RichTextEditor.js +3 -2
  24. package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
  25. package/src/sap/fe/macros/Status.js +38 -13
  26. package/src/sap/fe/macros/Status.tsx +26 -6
  27. package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
  28. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
  29. package/src/sap/fe/macros/ai/EasyFilterBar.js +195 -55
  30. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +234 -57
  31. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
  32. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
  33. package/src/sap/fe/macros/chart/Chart.js +2 -2
  34. package/src/sap/fe/macros/chart/Chart.tsx +1 -1
  35. package/src/sap/fe/macros/chart/MdcChartTemplate.js +4 -2
  36. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +4 -1
  37. package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
  38. package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
  39. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  40. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  41. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +2 -2
  42. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +1 -1
  43. package/src/sap/fe/macros/controls/FilterBar.js +14 -5
  44. package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
  45. package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
  46. package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
  47. package/src/sap/fe/macros/controls/Section.js +4 -3
  48. package/src/sap/fe/macros/controls/Section.ts +3 -2
  49. package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
  50. package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
  51. package/src/sap/fe/macros/field/Field.js +2 -2
  52. package/src/sap/fe/macros/field/Field.tsx +1 -1
  53. package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
  54. package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
  55. package/src/sap/fe/macros/field/FieldHelper.js +2 -2
  56. package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
  57. package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
  58. package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
  59. package/src/sap/fe/macros/filter/FilterUtils.js +232 -2
  60. package/src/sap/fe/macros/filter/FilterUtils.ts +290 -4
  61. package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
  62. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
  63. package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
  64. package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
  65. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
  66. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
  67. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
  68. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  69. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
  70. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
  71. package/src/sap/fe/macros/form/Form.block.js +7 -8
  72. package/src/sap/fe/macros/form/Form.block.ts +4 -6
  73. package/src/sap/fe/macros/form/FormContainer.block.js +555 -4
  74. package/src/sap/fe/macros/form/FormContainer.block.ts +665 -6
  75. package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
  76. package/src/sap/fe/macros/form/FormDelegate.js +6 -9
  77. package/src/sap/fe/macros/form/FormDelegate.ts +5 -8
  78. package/src/sap/fe/macros/internal/DataPoint.js +3 -2
  79. package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
  80. package/src/sap/fe/macros/internal/FilterField.block.js +16 -8
  81. package/src/sap/fe/macros/internal/FilterField.block.ts +11 -7
  82. package/src/sap/fe/macros/internal/field/DisplayStyle.js +7 -1
  83. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +8 -0
  84. package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
  85. package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
  86. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
  87. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +4 -1
  88. package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
  89. package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
  90. package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
  91. package/src/sap/fe/macros/library.js +1 -1
  92. package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
  93. package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
  94. package/src/sap/fe/macros/messagebundle.properties +20 -2
  95. package/src/sap/fe/macros/messagebundle_ar.properties +1 -1
  96. package/src/sap/fe/macros/messagebundle_bg.properties +1 -1
  97. package/src/sap/fe/macros/messagebundle_ca.properties +1 -1
  98. package/src/sap/fe/macros/messagebundle_cnr.properties +1 -1
  99. package/src/sap/fe/macros/messagebundle_cs.properties +1 -1
  100. package/src/sap/fe/macros/messagebundle_cy.properties +1 -1
  101. package/src/sap/fe/macros/messagebundle_da.properties +1 -1
  102. package/src/sap/fe/macros/messagebundle_de.properties +4 -4
  103. package/src/sap/fe/macros/messagebundle_el.properties +1 -1
  104. package/src/sap/fe/macros/messagebundle_en.properties +1 -1
  105. package/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
  106. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
  107. package/src/sap/fe/macros/messagebundle_es.properties +2 -2
  108. package/src/sap/fe/macros/messagebundle_es_MX.properties +1 -1
  109. package/src/sap/fe/macros/messagebundle_et.properties +1 -1
  110. package/src/sap/fe/macros/messagebundle_fi.properties +1 -1
  111. package/src/sap/fe/macros/messagebundle_fr.properties +1 -1
  112. package/src/sap/fe/macros/messagebundle_fr_CA.properties +1 -1
  113. package/src/sap/fe/macros/messagebundle_hi.properties +1 -1
  114. package/src/sap/fe/macros/messagebundle_hr.properties +1 -1
  115. package/src/sap/fe/macros/messagebundle_hu.properties +1 -1
  116. package/src/sap/fe/macros/messagebundle_id.properties +5 -5
  117. package/src/sap/fe/macros/messagebundle_it.properties +1 -1
  118. package/src/sap/fe/macros/messagebundle_iw.properties +1 -1
  119. package/src/sap/fe/macros/messagebundle_ja.properties +5 -5
  120. package/src/sap/fe/macros/messagebundle_kk.properties +1 -1
  121. package/src/sap/fe/macros/messagebundle_ko.properties +2 -2
  122. package/src/sap/fe/macros/messagebundle_lt.properties +2 -2
  123. package/src/sap/fe/macros/messagebundle_lv.properties +1 -1
  124. package/src/sap/fe/macros/messagebundle_mk.properties +2 -2
  125. package/src/sap/fe/macros/messagebundle_ms.properties +1 -1
  126. package/src/sap/fe/macros/messagebundle_nl.properties +1 -1
  127. package/src/sap/fe/macros/messagebundle_no.properties +1 -1
  128. package/src/sap/fe/macros/messagebundle_pl.properties +1 -1
  129. package/src/sap/fe/macros/messagebundle_pt.properties +1 -1
  130. package/src/sap/fe/macros/messagebundle_pt_PT.properties +1 -1
  131. package/src/sap/fe/macros/messagebundle_ro.properties +1 -1
  132. package/src/sap/fe/macros/messagebundle_ru.properties +1 -1
  133. package/src/sap/fe/macros/messagebundle_sh.properties +1 -1
  134. package/src/sap/fe/macros/messagebundle_sk.properties +1 -1
  135. package/src/sap/fe/macros/messagebundle_sl.properties +1 -1
  136. package/src/sap/fe/macros/messagebundle_sr.properties +1 -1
  137. package/src/sap/fe/macros/messagebundle_sv.properties +1 -1
  138. package/src/sap/fe/macros/messagebundle_th.properties +1 -1
  139. package/src/sap/fe/macros/messagebundle_tr.properties +1 -1
  140. package/src/sap/fe/macros/messagebundle_uk.properties +1 -1
  141. package/src/sap/fe/macros/messagebundle_vi.properties +2 -2
  142. package/src/sap/fe/macros/messagebundle_zh_CN.properties +1 -1
  143. package/src/sap/fe/macros/messagebundle_zh_TW.properties +1 -1
  144. package/src/sap/fe/macros/messages/MessageButton.js +1 -1
  145. package/src/sap/fe/macros/messages/MessageButton.ts +2 -2
  146. package/src/sap/fe/macros/messages/MessagePopover.js +3 -1
  147. package/src/sap/fe/macros/messages/MessagePopover.ts +2 -0
  148. package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
  149. package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
  150. package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -2
  151. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -1
  152. package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
  153. package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
  154. package/src/sap/fe/macros/table/BasicSearch.js +1 -1
  155. package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
  156. package/src/sap/fe/macros/table/Column.js +14 -2
  157. package/src/sap/fe/macros/table/Column.ts +7 -0
  158. package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
  159. package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
  160. package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
  161. package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
  162. package/src/sap/fe/macros/table/MdcTableTemplate.js +5 -5
  163. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +15 -9
  164. package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
  165. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
  166. package/src/sap/fe/macros/table/Table.block.js +188 -147
  167. package/src/sap/fe/macros/table/Table.block.tsx +41 -11
  168. package/src/sap/fe/macros/table/Table.js +16 -10
  169. package/src/sap/fe/macros/table/Table.tsx +16 -10
  170. package/src/sap/fe/macros/table/TableAPI.js +224 -184
  171. package/src/sap/fe/macros/table/TableAPI.ts +63 -19
  172. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
  173. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
  174. package/src/sap/fe/macros/table/TableHelper.js +2 -2
  175. package/src/sap/fe/macros/table/TableHelper.ts +1 -1
  176. package/src/sap/fe/macros/table/TreeTable.js +16 -10
  177. package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
  178. package/src/sap/fe/macros/table/Utils.js +3 -2
  179. package/src/sap/fe/macros/table/Utils.ts +7 -2
  180. package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -33
  181. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -32
  182. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  183. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  184. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
  185. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
  186. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
  187. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
  188. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
  189. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
  190. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
  191. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
  192. package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
  193. package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
  194. package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
  195. package/src/sap/fe/macros/table/mixin/TableSharing.ts +4 -3
  196. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +27 -10
  197. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +31 -13
  198. package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -3
  199. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -1
@@ -73,9 +73,9 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/helpers/BindingHelper"
73
73
  },
74
74
  /**
75
75
  * Return UI Control (LineItem/Chart) Operation Available Map.
76
- * @param aCollection Array of records
77
- * @param sControl Control name (lineItem / chart)
78
- * @param oContext Converter context
76
+ * @param collection Array of records
77
+ * @param control Control name (lineItem / chart)
78
+ * @param context Converter context
79
79
  * @returns The record containing all action names and their corresponding Core.OperationAvailable property paths
80
80
  */
81
81
  getOperationAvailableMap(collection, control, context) {
@@ -92,7 +92,12 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/helpers/BindingHelper"
92
92
  }
93
93
  }
94
94
  } else if (record.$Type === "com.sap.vocabularies.UI.v1.DataFieldForActionGroup") {
95
- operationAvailableMap = this.getOperationAvailableMap(record.Actions, control, context);
95
+ // Merge recursive results with current operationAvailableMap
96
+ const recursiveMap = this.getOperationAvailableMap(record.Actions, control, context);
97
+ operationAvailableMap = {
98
+ ...operationAvailableMap,
99
+ ...recursiveMap
100
+ };
96
101
  }
97
102
  });
98
103
  }
@@ -157,8 +162,34 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/helpers/BindingHelper"
157
162
  oMap[sKey] = oValue;
158
163
  }
159
164
  return oMap;
165
+ },
166
+ /**
167
+ * Ensures primary actions never overflow by setting priority to NeverOverflow.
168
+ * Primary action = emphasized OR has criticality defined.
169
+ * @param actions Array of actions to process
170
+ * @returns Processed actions with primary action overflow protection
171
+ */
172
+ ensurePrimaryActionNeverOverflows(actions) {
173
+ return actions.map(action => action.priority === "NeverOverflow" || !this.isPrimaryAction(action) ? action : {
174
+ ...action,
175
+ priority: "NeverOverflow"
176
+ });
177
+ },
178
+ /**
179
+ * Determines if an action is a primary action.
180
+ * Primary action = emphasized OR has criticality defined.
181
+ * @param action Action to check
182
+ * @returns True if action is primary
183
+ */
184
+ isPrimaryAction(action) {
185
+ // Check if action is emphasized
186
+ const isEmphasized = action.emphasized === true || action.type === "Emphasized";
187
+
188
+ // Check if action has criticality defined
189
+ const hasCriticality = action.criticality !== undefined && action.criticality !== null;
190
+ return isEmphasized || hasCriticality;
160
191
  }
161
192
  };
162
193
  return ActionHelper;
163
194
  }, false);
164
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25IZWxwZXIiLCJnZXRNdWx0aVNlbGVjdERpc2FibGVkQWN0aW9ucyIsImNvbGxlY3Rpb25zIiwibXVsdGlTZWxlY3REaXNhYmxlZEFjdGlvbnMiLCJhY3Rpb25zIiwiZmlsdGVyIiwiY29sbGVjdGlvbiIsIiRUeXBlIiwiYWN0aW9uIiwiYWN0aW9uVGFyZ2V0IiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInBhcmFtZXRlciIsInBhcmFtZXRlcnMiLCJpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiIsImFubm90YXRpb25zIiwiVUkiLCJIaWRkZW4iLCJDb21tb24iLCJGaWVsZENvbnRyb2wiLCJwdXNoIiwibmFtZSIsImdldFByZXNzRXZlbnREYXRhRmllbGRGb3JBY3Rpb25CdXR0b24iLCJzSWQiLCJvQWN0aW9uIiwib1BhcmFtcyIsInNPcGVyYXRpb25BdmFpbGFibGVNYXAiLCJzSW52b2NhdGlvbkdyb3VwaW5nIiwiSW52b2NhdGlvbkdyb3VwaW5nIiwiJEVudW1NZW1iZXIiLCJDb21tb25IZWxwZXIiLCJhZGRTaW5nbGVRdW90ZXMiLCJMYWJlbCIsImdlbmVyYXRlRnVuY3Rpb24iLCJBY3Rpb24iLCJvYmplY3RUb1N0cmluZyIsImdldE51bWJlck9mQ29udGV4dHNFeHByZXNzaW9uIiwidkFjdGlvbkVuYWJsZWQiLCJmb3JDb250ZXh0TWVudSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNOdW1iZXJPZlNlbGVjdGVkQ29udGV4dHMiLCJzZWxlY3RlZENvbnRleHQiLCJnZXRPcGVyYXRpb25BdmFpbGFibGVNYXAiLCJjb250cm9sIiwiY29udGV4dCIsIm9wZXJhdGlvbkF2YWlsYWJsZU1hcCIsImZvckVhY2giLCJyZWNvcmQiLCJhY3Rpb25OYW1lIiwiaW5jbHVkZXMiLCJEZXRlcm1pbmluZyIsIl9nZXRPcGVyYXRpb25BdmFpbGFibGVNYXBPZlRhYmxlIiwiX2dldE9wZXJhdGlvbkF2YWlsYWJsZU1hcE9mQ2hhcnQiLCJBY3Rpb25zIiwib0RhdGFGaWVsZEZvckFjdGlvbiIsInNBY3Rpb25OYW1lIiwib09wZXJhdGlvbkF2YWlsYWJsZU1hcCIsIm9Db252ZXJ0ZXJDb250ZXh0IiwiQ29yZSIsIk9wZXJhdGlvbkF2YWlsYWJsZSIsImJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRhcmdldEV4cHJlc3Npb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXRoIiwiYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciIsImdldENvbnZlcnRlZFR5cGVzIiwiaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24iLCJfYWRkVG9NYXAiLCJvQ29udGV4dCIsIm9SZXN1bHQiLCJnZXRBY3Rpb25QYXRoIiwic1Byb3BlcnR5Iiwic3Vic3RyaW5nIiwic0JpbmRpbmdQYXJhbWV0ZXIiLCJzS2V5Iiwib1ZhbHVlIiwib01hcCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQWN0aW9uSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgT3BlcmF0aW9uR3JvdXBpbmdUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMsIHR5cGUgRGF0YUZpZWxkRm9yQWN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0IHsgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgTWV0YU1vZGVsRW51bSwgTWV0YU1vZGVsVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcblxuY29uc3QgQWN0aW9uSGVscGVyID0ge1xuXHQvKipcblx0ICogUmV0dXJucyBhbiBhcnJheSBvZiBhY3Rpb25zIHRoYXQgYXJlIG5vdCBlbmFibGVkIHdpdGggYSBtdWx0aXBsZSBzZWxlY3Rpb24uXG5cdCAqIEBwYXJhbSBjb2xsZWN0aW9ucyBBcnJheSBvZiByZWNvcmRzXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFjdGlvbiBwYXRoc1xuXHQgKi9cblx0Z2V0TXVsdGlTZWxlY3REaXNhYmxlZEFjdGlvbnMoY29sbGVjdGlvbnM/OiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzW10pOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgbXVsdGlTZWxlY3REaXNhYmxlZEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgYWN0aW9ucyA9IChjb2xsZWN0aW9ucz8uZmlsdGVyKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb24pID8/XG5cdFx0XHRbXSkgYXMgRGF0YUZpZWxkRm9yQWN0aW9uW107XG5cdFx0Zm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuXHRcdFx0Y29uc3QgYWN0aW9uVGFyZ2V0ID0gYWN0aW9uPy5BY3Rpb25UYXJnZXQ7XG5cdFx0XHRpZiAoYWN0aW9uVGFyZ2V0Py5pc0JvdW5kID09PSB0cnVlKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGFjdGlvblRhcmdldC5wYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0aXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24ocGFyYW1ldGVyLmFubm90YXRpb25zLlVJPy5IaWRkZW4pIHx8XG5cdFx0XHRcdFx0XHRpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbihwYXJhbWV0ZXIuYW5ub3RhdGlvbnMuQ29tbW9uPy5GaWVsZENvbnRyb2wpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRtdWx0aVNlbGVjdERpc2FibGVkQWN0aW9ucy5wdXNoKGFjdGlvblRhcmdldC5uYW1lKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbXVsdGlTZWxlY3REaXNhYmxlZEFjdGlvbnM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBnZXQgdGhlIGV4cHJlc3Npb24gZm9yIHRoZSAncHJlc3MnIGV2ZW50IGZvciB0aGUgRGF0YUZpZWxkRm9yQWN0aW9uQnV0dG9uLlxuXHQgKiBAcGFyYW0gc0lkIENvbnRyb2wgSURcblx0ICogQHBhcmFtIG9BY3Rpb24gQWN0aW9uIG9iamVjdFxuXHQgKiBAcGFyYW0gb1BhcmFtcyBQYXJhbWV0ZXJzXG5cdCAqIEBwYXJhbSBvUGFyYW1zLmludm9jYXRpb25Hcm91cGluZyBJbnZvY2F0aW9uIGdyb3VwaW5nXG5cdCAqIEBwYXJhbSBvUGFyYW1zLmNvbnRyb2xJZCBDb250cm9sIElEXG5cdCAqIEBwYXJhbSBvUGFyYW1zLm9wZXJhdGlvbkF2YWlsYWJsZU1hcCBPcGVyYXRpb25BdmFpbGFibGVNYXBcblx0ICogQHBhcmFtIG9QYXJhbXMubW9kZWwgTW9kZWxcblx0ICogQHBhcmFtIG9QYXJhbXMubGFiZWwgTGFiZWxcblx0ICogQHBhcmFtIG9QYXJhbXMuY29udGV4dHMgQ29udGV4dHNcblx0ICogQHBhcmFtIHNPcGVyYXRpb25BdmFpbGFibGVNYXAgT3BlcmF0aW9uQXZhaWxhYmxlTWFwIGFzIHN0cmluZ2lmaWVkIEpTT04gb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb25cblx0ICovXG5cdGdldFByZXNzRXZlbnREYXRhRmllbGRGb3JBY3Rpb25CdXR0b24oXG5cdFx0c0lkOiBzdHJpbmcsXG5cdFx0b0FjdGlvbjogTWV0YU1vZGVsVHlwZTxEYXRhRmllbGRGb3JBY3Rpb24+ICYgeyBJbnZvY2F0aW9uR3JvdXBpbmc6IE1ldGFNb2RlbEVudW08T3BlcmF0aW9uR3JvdXBpbmdUeXBlPiB9LFxuXHRcdG9QYXJhbXM6IHtcblx0XHRcdGludm9jYXRpb25Hcm91cGluZz86IHN0cmluZztcblx0XHRcdGNvbnRyb2xJZD86IHN0cmluZztcblx0XHRcdG9wZXJhdGlvbkF2YWlsYWJsZU1hcD86IHN0cmluZztcblx0XHRcdG1vZGVsPzogc3RyaW5nO1xuXHRcdFx0bGFiZWw/OiBzdHJpbmc7XG5cdFx0XHRjb250ZXh0cz86IHN0cmluZztcblx0XHR9LFxuXHRcdHNPcGVyYXRpb25BdmFpbGFibGVNYXA6IHN0cmluZ1xuXHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHNJbnZvY2F0aW9uR3JvdXBpbmcgPVxuXHRcdFx0b0FjdGlvbi5JbnZvY2F0aW9uR3JvdXBpbmcgJiZcblx0XHRcdG9BY3Rpb24uSW52b2NhdGlvbkdyb3VwaW5nLiRFbnVtTWVtYmVyID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLk9wZXJhdGlvbkdyb3VwaW5nVHlwZS9DaGFuZ2VTZXRcIlxuXHRcdFx0XHQ/IFwiQ2hhbmdlU2V0XCJcblx0XHRcdFx0OiBcIklzb2xhdGVkXCI7XG5cdFx0b1BhcmFtcyA9IG9QYXJhbXMgfHwge307XG5cdFx0b1BhcmFtc1tcImludm9jYXRpb25Hcm91cGluZ1wiXSA9IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMoc0ludm9jYXRpb25Hcm91cGluZyk7XG5cdFx0b1BhcmFtc1tcImNvbnRyb2xJZFwiXSA9IENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMoc0lkKTtcblx0XHRvUGFyYW1zW1wib3BlcmF0aW9uQXZhaWxhYmxlTWFwXCJdID0gQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhzT3BlcmF0aW9uQXZhaWxhYmxlTWFwKTtcblx0XHRvUGFyYW1zW1wibW9kZWxcIl0gPSBcIiR7JHNvdXJjZT4vfS5nZXRNb2RlbCgpXCI7XG5cdFx0b1BhcmFtc1tcImxhYmVsXCJdID0gb0FjdGlvbi5MYWJlbCAmJiBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKG9BY3Rpb24uTGFiZWwsIHRydWUpO1xuXG5cdFx0cmV0dXJuIENvbW1vbkhlbHBlci5nZW5lcmF0ZUZ1bmN0aW9uKFxuXHRcdFx0XCIuZWRpdEZsb3cuaW52b2tlQWN0aW9uXCIsXG5cdFx0XHRDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKG9BY3Rpb24uQWN0aW9uISksXG5cdFx0XHRDb21tb25IZWxwZXIub2JqZWN0VG9TdHJpbmcob1BhcmFtcylcblx0XHQpO1xuXHR9LFxuXHQvKipcblx0ICogUmV0dXJuIE51bWJlciBvZiBjb250ZXh0cyBleHByZXNzaW9uLlxuXHQgKiBAcGFyYW0gdkFjdGlvbkVuYWJsZWQgU3RhdHVzIG9mIGFjdGlvbiAoc2luZ2xlIG9yIG11bHRpc2VsZWN0KVxuXHQgKiBAcGFyYW0gZm9yQ29udGV4dE1lbnUgSW5kaWNhdGVzIGlmIHRoZSBhY3Rpb24gYXBwZWFycyBpbiB0aGUgY29udGV4dCBtZW51LiBJZiBmYWxzZSwgdGhlIGFjdGlvbiBhcHBlYXJzIGluIHRoZSB0YWJsZSB0b29sYmFyXG5cdCAqIEByZXR1cm5zIE51bWJlciBvZiBjb250ZXh0cyBleHByZXNzaW9uXG5cdCAqL1xuXHRnZXROdW1iZXJPZkNvbnRleHRzRXhwcmVzc2lvbih2QWN0aW9uRW5hYmxlZDogc3RyaW5nLCBmb3JDb250ZXh0TWVudSA9IGZhbHNlKTogc3RyaW5nIHtcblx0XHRsZXQgc051bWJlck9mU2VsZWN0ZWRDb250ZXh0cztcblx0XHRjb25zdCBzZWxlY3RlZENvbnRleHQgPSAhZm9yQ29udGV4dE1lbnVcblx0XHRcdD8gXCIke2ludGVybmFsPm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c31cIlxuXHRcdFx0OiBcIiR7aW50ZXJuYWw+Y29udGV4dG1lbnUvbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzfVwiO1xuXHRcdGlmICh2QWN0aW9uRW5hYmxlZCA9PT0gXCJzaW5nbGVcIikge1xuXHRcdFx0c051bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9IHNlbGVjdGVkQ29udGV4dCArIFwiID09PSAxXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNOdW1iZXJPZlNlbGVjdGVkQ29udGV4dHMgPSBzZWxlY3RlZENvbnRleHQgKyBcIiA+IDBcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHNOdW1iZXJPZlNlbGVjdGVkQ29udGV4dHM7XG5cdH0sXG5cdC8qKlxuXHQgKiBSZXR1cm4gVUkgQ29udHJvbCAoTGluZUl0ZW0vQ2hhcnQpIE9wZXJhdGlvbiBBdmFpbGFibGUgTWFwLlxuXHQgKiBAcGFyYW0gYUNvbGxlY3Rpb24gQXJyYXkgb2YgcmVjb3Jkc1xuXHQgKiBAcGFyYW0gc0NvbnRyb2wgQ29udHJvbCBuYW1lIChsaW5lSXRlbSAvIGNoYXJ0KVxuXHQgKiBAcGFyYW0gb0NvbnRleHQgQ29udmVydGVyIGNvbnRleHRcblx0ICogQHJldHVybnMgVGhlIHJlY29yZCBjb250YWluaW5nIGFsbCBhY3Rpb24gbmFtZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgQ29yZS5PcGVyYXRpb25BdmFpbGFibGUgcHJvcGVydHkgcGF0aHNcblx0ICovXG5cdGdldE9wZXJhdGlvbkF2YWlsYWJsZU1hcChcblx0XHRjb2xsZWN0aW9uOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzW10gfCB1bmRlZmluZWQsXG5cdFx0Y29udHJvbDogc3RyaW5nLFxuXHRcdGNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8dW5rbm93bj4gfCBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2Vcblx0KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGxldCBvcGVyYXRpb25BdmFpbGFibGVNYXA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0aWYgKGNvbGxlY3Rpb24pIHtcblx0XHRcdGNvbGxlY3Rpb24uZm9yRWFjaCgocmVjb3JkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PiB7XG5cdFx0XHRcdGlmIChyZWNvcmQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbikge1xuXHRcdFx0XHRcdGNvbnN0IGFjdGlvbk5hbWUgPSByZWNvcmQuQWN0aW9uIGFzIHN0cmluZztcblx0XHRcdFx0XHRpZiAoIWFjdGlvbk5hbWU/LmluY2x1ZGVzKFwiL1wiKSAmJiAhcmVjb3JkLkRldGVybWluaW5nKSB7XG5cdFx0XHRcdFx0XHRpZiAoY29udHJvbCA9PT0gXCJ0YWJsZVwiKSB7XG5cdFx0XHRcdFx0XHRcdG9wZXJhdGlvbkF2YWlsYWJsZU1hcCA9IHRoaXMuX2dldE9wZXJhdGlvbkF2YWlsYWJsZU1hcE9mVGFibGUoXG5cdFx0XHRcdFx0XHRcdFx0cmVjb3JkLFxuXHRcdFx0XHRcdFx0XHRcdGFjdGlvbk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uQXZhaWxhYmxlTWFwLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRleHQgYXMgQ29udmVydGVyQ29udGV4dDx1bmtub3duPlxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChjb250cm9sID09PSBcImNoYXJ0XCIpIHtcblx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uQXZhaWxhYmxlTWFwID0gdGhpcy5fZ2V0T3BlcmF0aW9uQXZhaWxhYmxlTWFwT2ZDaGFydChcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb25OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhdGlvbkF2YWlsYWJsZU1hcCxcblx0XHRcdFx0XHRcdFx0XHRjb250ZXh0IGFzIENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChyZWNvcmQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbkdyb3VwKSB7XG5cdFx0XHRcdFx0b3BlcmF0aW9uQXZhaWxhYmxlTWFwID0gdGhpcy5nZXRPcGVyYXRpb25BdmFpbGFibGVNYXAocmVjb3JkLkFjdGlvbnMsIGNvbnRyb2wsIGNvbnRleHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIG9wZXJhdGlvbkF2YWlsYWJsZU1hcDtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJuIExpbmVJdGVtIEFjdGlvbiBPcGVyYXRpb24gQXZhaWxhYmxlIE1hcC5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIG9EYXRhRmllbGRGb3JBY3Rpb24gRGF0YSBmaWVsZCBmb3IgYWN0aW9uIG9iamVjdFxuXHQgKiBAcGFyYW0gc0FjdGlvbk5hbWUgQWN0aW9uIG5hbWVcblx0ICogQHBhcmFtIG9PcGVyYXRpb25BdmFpbGFibGVNYXAgT3BlcmF0aW9uIGF2YWlsYWJsZSBtYXAgb2JqZWN0XG5cdCAqIEBwYXJhbSBvQ29udmVydGVyQ29udGV4dCBDb252ZXJ0ZXIgY29udGV4dCBvYmplY3Rcblx0ICogQHJldHVybnMgVGhlIHJlY29yZCBjb250YWluaW5nIGFsbCBhY3Rpb24gbmFtZSBvZiBsaW5lIGl0ZW0gYW5kIHRoZSBjb3JyZXNwb25kaW5nIENvcmUuT3BlcmF0aW9uQXZhaWxhYmxlIHByb3BlcnR5IHBhdGhcblx0ICovXG5cdF9nZXRPcGVyYXRpb25BdmFpbGFibGVNYXBPZlRhYmxlKFxuXHRcdG9EYXRhRmllbGRGb3JBY3Rpb246IERhdGFGaWVsZEZvckFjdGlvbixcblx0XHRzQWN0aW9uTmFtZTogc3RyaW5nLFxuXHRcdG9PcGVyYXRpb25BdmFpbGFibGVNYXA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRcdG9Db252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PHVua25vd24+XG5cdCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0XHRjb25zdCBhY3Rpb25UYXJnZXQgPSBvRGF0YUZpZWxkRm9yQWN0aW9uLkFjdGlvblRhcmdldDtcblx0XHRpZiAoYWN0aW9uVGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlID09PSBudWxsKSB7XG5cdFx0XHQvLyBXZSBkaXNhYmxlZCBhY3Rpb24gYWR2ZXJ0aXNlbWVudCBidXQga2VwdCBpdCBpbiB0aGUgY29kZSBmb3IgdGhlIHRpbWUgYmVpbmdcblx0XHRcdC8vb09wZXJhdGlvbkF2YWlsYWJsZU1hcCA9IHRoaXMuX2FkZFRvTWFwKHNBY3Rpb25OYW1lLCBudWxsLCBvT3BlcmF0aW9uQXZhaWxhYmxlTWFwKTtcblx0XHR9IGVsc2UgaWYgKGFjdGlvblRhcmdldD8ucGFyYW1ldGVycz8ubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWUgPSBhY3Rpb25UYXJnZXQucGFyYW1ldGVyc1swXS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdHRhcmdldEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oXG5cdFx0XHRcdFx0YWN0aW9uVGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlLFxuXHRcdFx0XHRcdFtdLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHQocGF0aDogc3RyaW5nKSA9PiBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yKHBhdGgsIG9Db252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSlcblx0XHRcdFx0KTtcblx0XHRcdGlmIChpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbih0YXJnZXRFeHByZXNzaW9uKSkge1xuXHRcdFx0XHRvT3BlcmF0aW9uQXZhaWxhYmxlTWFwID0gdGhpcy5fYWRkVG9NYXAoc0FjdGlvbk5hbWUsIHRhcmdldEV4cHJlc3Npb24ucGF0aCwgb09wZXJhdGlvbkF2YWlsYWJsZU1hcCk7XG5cdFx0XHR9IGVsc2UgaWYgKGFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnM/LkNvcmU/Lk9wZXJhdGlvbkF2YWlsYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdG9PcGVyYXRpb25BdmFpbGFibGVNYXAgPSB0aGlzLl9hZGRUb01hcChzQWN0aW9uTmFtZSwgdGFyZ2V0RXhwcmVzc2lvbiwgb09wZXJhdGlvbkF2YWlsYWJsZU1hcCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvT3BlcmF0aW9uQXZhaWxhYmxlTWFwO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm4gTGluZUl0ZW0gQWN0aW9uIE9wZXJhdGlvbiBBdmFpbGFibGUgTWFwLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0gc0FjdGlvbk5hbWUgQWN0aW9uIG5hbWVcblx0ICogQHBhcmFtIG9PcGVyYXRpb25BdmFpbGFibGVNYXAgT3BlcmF0aW9uIGF2YWlsYWJsZSBtYXAgb2JqZWN0XG5cdCAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IG9iamVjdFxuXHQgKiBAcGFyYW0gb0NvbnRleHQuY29udGV4dCBDb250ZXh0IG9iamVjdFxuXHQgKiBAcmV0dXJucyBUaGUgcmVjb3JkIGNvbnRhaW5pbmcgYWxsIGFjdGlvbiBuYW1lIG9mIGNoYXJ0IGFuZCB0aGUgY29ycmVzcG9uZGluZyBDb3JlLk9wZXJhdGlvbkF2YWlsYWJsZSBwcm9wZXJ0eSBwYXRoXG5cdCAqL1xuXHRfZ2V0T3BlcmF0aW9uQXZhaWxhYmxlTWFwT2ZDaGFydChcblx0XHRzQWN0aW9uTmFtZTogc3RyaW5nLFxuXHRcdG9PcGVyYXRpb25BdmFpbGFibGVNYXA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRcdG9Db250ZXh0OiBDb21wdXRlZEFubm90YXRpb25JbnRlcmZhY2Vcblx0KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGxldCBvUmVzdWx0ID0gQ29tbW9uSGVscGVyLmdldEFjdGlvblBhdGgob0NvbnRleHQuY29udGV4dCwgZmFsc2UsIHNBY3Rpb25OYW1lLCB0cnVlKTtcblx0XHRpZiAob1Jlc3VsdCA9PT0gbnVsbCkge1xuXHRcdFx0b09wZXJhdGlvbkF2YWlsYWJsZU1hcCA9IHRoaXMuX2FkZFRvTWFwKHNBY3Rpb25OYW1lLCBudWxsLCBvT3BlcmF0aW9uQXZhaWxhYmxlTWFwKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1Jlc3VsdCA9IENvbW1vbkhlbHBlci5nZXRBY3Rpb25QYXRoKG9Db250ZXh0LmNvbnRleHQsIGZhbHNlLCBzQWN0aW9uTmFtZSkgYXMge1xuXHRcdFx0XHRzQ29udGV4dFBhdGg6IHN0cmluZztcblx0XHRcdFx0c1Byb3BlcnR5OiBzdHJpbmc7XG5cdFx0XHRcdHNCaW5kaW5nUGFyYW1ldGVyOiBzdHJpbmc7XG5cdFx0XHR9O1xuXHRcdFx0aWYgKG9SZXN1bHQuc1Byb3BlcnR5KSB7XG5cdFx0XHRcdG9PcGVyYXRpb25BdmFpbGFibGVNYXAgPSB0aGlzLl9hZGRUb01hcChcblx0XHRcdFx0XHRzQWN0aW9uTmFtZSxcblx0XHRcdFx0XHRvUmVzdWx0LnNQcm9wZXJ0eS5zdWJzdHJpbmcob1Jlc3VsdC5zQmluZGluZ1BhcmFtZXRlci5sZW5ndGggKyAxKSxcblx0XHRcdFx0XHRvT3BlcmF0aW9uQXZhaWxhYmxlTWFwXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvT3BlcmF0aW9uQXZhaWxhYmxlTWFwO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm4gTWFwLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0gc0tleSBLZXlcblx0ICogQHBhcmFtIG9WYWx1ZSBWYWx1ZVxuXHQgKiBAcGFyYW0gb01hcCBNYXAgb2JqZWN0XG5cdCAqIEByZXR1cm5zIE1hcCBvYmplY3Rcblx0ICovXG5cdF9hZGRUb01hcChzS2V5OiBzdHJpbmcsIG9WYWx1ZTogdW5rbm93biwgb01hcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0aWYgKHNLZXkgJiYgb01hcCkge1xuXHRcdFx0b01hcFtzS2V5XSA9IG9WYWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIG9NYXA7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFjdGlvbkhlbHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7RUFVQSxNQUFNQSxZQUFZLEdBQUc7SUFDcEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDQyw2QkFBNkJBLENBQUNDLFdBQXNDLEVBQVk7TUFDL0UsTUFBTUMsMEJBQW9DLEdBQUcsRUFBRTtNQUMvQyxNQUFNQyxPQUFPLEdBQUlGLFdBQVcsRUFBRUcsTUFBTSxDQUFFQyxVQUFVLElBQUtBLFVBQVUsQ0FBQ0MsS0FBSyxvREFBeUMsQ0FBQyxJQUM5RyxFQUEyQjtNQUM1QixLQUFLLE1BQU1DLE1BQU0sSUFBSUosT0FBTyxFQUFFO1FBQzdCLE1BQU1LLFlBQVksR0FBR0QsTUFBTSxFQUFFRSxZQUFZO1FBQ3pDLElBQUlELFlBQVksRUFBRUUsT0FBTyxLQUFLLElBQUksRUFBRTtVQUNuQyxLQUFLLE1BQU1DLFNBQVMsSUFBSUgsWUFBWSxDQUFDSSxVQUFVLEVBQUU7WUFDaEQsSUFDQ0MsMEJBQTBCLENBQUNGLFNBQVMsQ0FBQ0csV0FBVyxDQUFDQyxFQUFFLEVBQUVDLE1BQU0sQ0FBQyxJQUM1REgsMEJBQTBCLENBQUNGLFNBQVMsQ0FBQ0csV0FBVyxDQUFDRyxNQUFNLEVBQUVDLFlBQVksQ0FBQyxFQUNyRTtjQUNEaEIsMEJB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YixXQUFXLEVBQUVPLGdCQUFnQixDQUFDRSxJQUFJLEVBQUVSLHNCQUFzQixDQUFDO1FBQ3BHLENBQUMsTUFBTSxJQUFJakQsWUFBWSxFQUFFTSxXQUFXLEVBQUU2QyxJQUFJLEVBQUVDLGtCQUFrQixLQUFLcEIsU0FBUyxFQUFFO1VBQzdFaUIsc0JBQXNCLEdBQUcsSUFBSSxDQUFDWSxTQUFTLENBQUNiLFdBQVcsRUFBRU8sZ0JBQWdCLEVBQUVOLHNCQUFzQixDQUFDO1FBQy9GO01BQ0Q7TUFDQSxPQUFPQSxzQkFBc0I7SUFDOUIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDSixnQ0FBZ0NBLENBQy9CRyxXQUFtQixFQUNuQkMsc0JBQStDLEVBQy9DYSxRQUFxQyxFQUNYO01BQzFCLElBQUlDLE9BQU8sR0FBRzFDLFlBQVksQ0FBQzJDLGFBQWEsQ0FBQ0YsUUFBUSxDQUFDekIsT0FBTyxFQUFFLEtBQUssRUFBRVcsV0FBVyxFQUFFLElBQUksQ0FBQztNQUNwRixJQUFJZSxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ3JCZCxzQkFBc0IsR0FBRyxJQUFJLENBQUNZLFNBQVMsQ0FBQ2IsV0FBVyxFQUFFLElBQUksRUFBRUMsc0JBQXNCLENBQUM7TUFDbkYsQ0FBQyxNQUFNO1FBQ05jLE9BQU8sR0FBRzFDLFlBQVksQ0FBQzJDLGFBQWEsQ0FBQ0YsUUFBUSxDQUFDekIsT0FBTyxFQUFFLEtBQUssRUFBRVcsV0FBVyxDQUl4RTtRQUNELElBQUllLE9BQU8sQ0FBQ0UsU0FBUyxFQUFFO1VBQ3RCaEIsc0JBQXNCLEdBQUcsSUFBSSxDQUFDWSxTQUFTLENBQ3RDYixXQUFXLEVBQ1hlLE9BQU8sQ0FBQ0UsU0FBUyxDQUFDQyxTQUFTLENBQUNILE9BQU8sQ0FBQ0ksaUJBQWlCLENBQUNwQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQ2pFa0Isc0JBQ0QsQ0FBQztRQUNGO01BQ0Q7TUFDQSxPQUFPQSxzQkFBc0I7SUFDOUIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ1ksU0FBU0EsQ0FBQ08sSUFBWSxFQUFFQyxNQUFlLEVBQUVDLElBQTZCLEVBQTJCO01BQ2hHLElBQUlGLElBQUksSUFBSUUsSUFBSSxFQUFFO1FBQ2pCQSxJQUFJLENBQUNGLElBQUksQ0FBQyxHQUFHQyxNQUFNO01BQ3BCO01BQ0EsT0FBT0MsSUFBSTtJQUNaO0VBQ0QsQ0FBQztFQUFDLE9BRWEvRSxZQUFZO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
195
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25IZWxwZXIiLCJnZXRNdWx0aVNlbGVjdERpc2FibGVkQWN0aW9ucyIsImNvbGxlY3Rpb25zIiwibXVsdGlTZWxlY3REaXNhYmxlZEFjdGlvbnMiLCJhY3Rpb25zIiwiZmlsdGVyIiwiY29sbGVjdGlvbiIsIiRUeXBlIiwiYWN0aW9uIiwiYWN0aW9uVGFyZ2V0IiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInBhcmFtZXRlciIsInBhcmFtZXRlcnMiLCJpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiIsImFubm90YXRpb25zIiwiVUkiLCJIaWRkZW4iLCJDb21tb24iLCJGaWVsZENvbnRyb2wiLCJwdXNoIiwibmFtZSIsImdldFByZXNzRXZlbnREYXRhRmllbGRGb3JBY3Rpb25CdXR0b24iLCJzSWQiLCJvQWN0aW9uIiwib1BhcmFtcyIsInNPcGVyYXRpb25BdmFpbGFibGVNYXAiLCJzSW52b2NhdGlvbkdyb3VwaW5nIiwiSW52b2NhdGlvbkdyb3VwaW5nIiwiJEVudW1NZW1iZXIiLCJDb21tb25IZWxwZXIiLCJhZGRTaW5nbGVRdW90ZXMiLCJMYWJlbCIsImdlbmVyYXRlRnVuY3Rpb24iLCJBY3Rpb24iLCJvYmplY3RUb1N0cmluZyIsImdldE51bWJlck9mQ29udGV4dHNFeHByZXNzaW9uIiwidkFjdGlvbkVuYWJsZWQiLCJmb3JDb250ZXh0TWVudSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNOdW1iZXJPZlNlbGVjdGVkQ29udGV4dHMiLCJzZWxlY3RlZENvbnRleHQiLCJnZXRPcGVyYXRpb25BdmFpbGFibGVNYXAiLCJjb250cm9sIiwiY29udGV4dCIsIm9wZXJhdGlvbkF2YWlsYWJsZU1hcCIsImZvckVhY2giLCJyZWNvcmQiLCJhY3Rpb25OYW1lIiwiaW5jbHVkZXMiLCJEZXRlcm1pbmluZyIsIl9nZXRPcGVyYXRpb25BdmFpbGFibGVNYXBPZlRhYmxlIiwiX2dldE9wZXJhdGlvbkF2YWlsYWJsZU1hcE9mQ2hhcnQiLCJyZWN1cnNpdmVNYXAiLCJBY3Rpb25zIiwib0RhdGFGaWVsZEZvckFjdGlvbiIsInNBY3Rpb25OYW1lIiwib09wZXJhdGlvbkF2YWlsYWJsZU1hcCIsIm9Db252ZXJ0ZXJDb250ZXh0IiwiQ29yZSIsIk9wZXJhdGlvbkF2YWlsYWJsZSIsImJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInRhcmdldEV4cHJlc3Npb24iLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXRoIiwiYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciIsImdldENvbnZlcnRlZFR5cGVzIiwiaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24iLCJfYWRkVG9NYXAiLCJvQ29udGV4dCIsIm9SZXN1bHQiLCJnZXRBY3Rpb25QYXRoIiwic1Byb3BlcnR5Iiwic3Vic3RyaW5nIiwic0JpbmRpbmdQYXJhbWV0ZXIiLCJzS2V5Iiwib1ZhbHVlIiwib01hcCIsImVuc3VyZVByaW1hcnlBY3Rpb25OZXZlck92ZXJmbG93cyIsIm1hcCIsInByaW9yaXR5IiwiaXNQcmltYXJ5QWN0aW9uIiwiaXNFbXBoYXNpemVkIiwiZW1waGFzaXplZCIsInR5cGUiLCJoYXNDcml0aWNhbGl0eSIsImNyaXRpY2FsaXR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb25IZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBPcGVyYXRpb25Hcm91cGluZ1R5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcywgdHlwZSBEYXRhRmllbGRGb3JBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlzUGF0aEluTW9kZWxFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgeyBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxFbnVtLCBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuXG5jb25zdCBBY3Rpb25IZWxwZXIgPSB7XG5cdC8qKlxuXHQgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFjdGlvbnMgdGhhdCBhcmUgbm90IGVuYWJsZWQgd2l0aCBhIG11bHRpcGxlIHNlbGVjdGlvbi5cblx0ICogQHBhcmFtIGNvbGxlY3Rpb25zIEFycmF5IG9mIHJlY29yZHNcblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWN0aW9uIHBhdGhzXG5cdCAqL1xuXHRnZXRNdWx0aVNlbGVjdERpc2FibGVkQWN0aW9ucyhjb2xsZWN0aW9ucz86IERhdGFGaWVsZEFic3RyYWN0VHlwZXNbXSk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBtdWx0aVNlbGVjdERpc2FibGVkQWN0aW9uczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBhY3Rpb25zID0gKGNvbGxlY3Rpb25zPy5maWx0ZXIoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbikgPz9cblx0XHRcdFtdKSBhcyBEYXRhRmllbGRGb3JBY3Rpb25bXTtcblx0XHRmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG5cdFx0XHRjb25zdCBhY3Rpb25UYXJnZXQgPSBhY3Rpb24/LkFjdGlvblRhcmdldDtcblx0XHRcdGlmIChhY3Rpb25UYXJnZXQ/LmlzQm91bmQgPT09IHRydWUpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgYWN0aW9uVGFyZ2V0LnBhcmFtZXRlcnMpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbihwYXJhbWV0ZXIuYW5ub3RhdGlvbnMuVUk/LkhpZGRlbikgfHxcblx0XHRcdFx0XHRcdGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKHBhcmFtZXRlci5hbm5vdGF0aW9ucy5Db21tb24/LkZpZWxkQ29udHJvbClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG11bHRpU2VsZWN0RGlzYWJsZWRBY3Rpb25zLnB1c2goYWN0aW9uVGFyZ2V0Lm5hbWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtdWx0aVNlbGVjdERpc2FibGVkQWN0aW9ucztcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGdldCB0aGUgZXhwcmVzc2lvbiBmb3IgdGhlICdwcmVzcycgZXZlbnQgZm9yIHRoZSBEYXRhRmllbGRGb3JBY3Rpb25CdXR0b24uXG5cdCAqIEBwYXJhbSBzSWQgQ29udHJvbCBJRFxuXHQgKiBAcGFyYW0gb0FjdGlvbiBBY3Rpb24gb2JqZWN0XG5cdCAqIEBwYXJhbSBvUGFyYW1zIFBhcmFtZXRlcnNcblx0ICogQHBhcmFtIG9QYXJhbXMuaW52b2NhdGlvbkdyb3VwaW5nIEludm9jYXRpb24gZ3JvdXBpbmdcblx0ICogQHBhcmFtIG9QYXJhbXMuY29udHJvbElkIENvbnRyb2wgSURcblx0ICogQHBhcmFtIG9QYXJhbXMub3BlcmF0aW9uQXZhaWxhYmxlTWFwIE9wZXJhdGlvbkF2YWlsYWJsZU1hcFxuXHQgKiBAcGFyYW0gb1BhcmFtcy5tb2RlbCBNb2RlbFxuXHQgKiBAcGFyYW0gb1BhcmFtcy5sYWJlbCBMYWJlbFxuXHQgKiBAcGFyYW0gb1BhcmFtcy5jb250ZXh0cyBDb250ZXh0c1xuXHQgKiBAcGFyYW0gc09wZXJhdGlvbkF2YWlsYWJsZU1hcCBPcGVyYXRpb25BdmFpbGFibGVNYXAgYXMgc3RyaW5naWZpZWQgSlNPTiBvYmplY3Rcblx0ICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHQgKi9cblx0Z2V0UHJlc3NFdmVudERhdGFGaWVsZEZvckFjdGlvbkJ1dHRvbihcblx0XHRzSWQ6IHN0cmluZyxcblx0XHRvQWN0aW9uOiBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZEZvckFjdGlvbj4gJiB7IEludm9jYXRpb25Hcm91cGluZzogTWV0YU1vZGVsRW51bTxPcGVyYXRpb25Hcm91cGluZ1R5cGU+IH0sXG5cdFx0b1BhcmFtczoge1xuXHRcdFx0aW52b2NhdGlvbkdyb3VwaW5nPzogc3RyaW5nO1xuXHRcdFx0Y29udHJvbElkPzogc3RyaW5nO1xuXHRcdFx0b3BlcmF0aW9uQXZhaWxhYmxlTWFwPzogc3RyaW5nO1xuXHRcdFx0bW9kZWw/OiBzdHJpbmc7XG5cdFx0XHRsYWJlbD86IHN0cmluZztcblx0XHRcdGNvbnRleHRzPzogc3RyaW5nO1xuXHRcdH0sXG5cdFx0c09wZXJhdGlvbkF2YWlsYWJsZU1hcDogc3RyaW5nXG5cdCk6IHN0cmluZyB7XG5cdFx0Y29uc3Qgc0ludm9jYXRpb25Hcm91cGluZyA9XG5cdFx0XHRvQWN0aW9uLkludm9jYXRpb25Hcm91cGluZyAmJlxuXHRcdFx0b0FjdGlvbi5JbnZvY2F0aW9uR3JvdXBpbmcuJEVudW1NZW1iZXIgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuT3BlcmF0aW9uR3JvdXBpbmdUeXBlL0NoYW5nZVNldFwiXG5cdFx0XHRcdD8gXCJDaGFuZ2VTZXRcIlxuXHRcdFx0XHQ6IFwiSXNvbGF0ZWRcIjtcblx0XHRvUGFyYW1zID0gb1BhcmFtcyB8fCB7fTtcblx0XHRvUGFyYW1zW1wiaW52b2NhdGlvbkdyb3VwaW5nXCJdID0gQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhzSW52b2NhdGlvbkdyb3VwaW5nKTtcblx0XHRvUGFyYW1zW1wiY29udHJvbElkXCJdID0gQ29tbW9uSGVscGVyLmFkZFNpbmdsZVF1b3RlcyhzSWQpO1xuXHRcdG9QYXJhbXNbXCJvcGVyYXRpb25BdmFpbGFibGVNYXBcIl0gPSBDb21tb25IZWxwZXIuYWRkU2luZ2xlUXVvdGVzKHNPcGVyYXRpb25BdmFpbGFibGVNYXApO1xuXHRcdG9QYXJhbXNbXCJtb2RlbFwiXSA9IFwiJHskc291cmNlPi99LmdldE1vZGVsKClcIjtcblx0XHRvUGFyYW1zW1wibGFiZWxcIl0gPSBvQWN0aW9uLkxhYmVsICYmIENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMob0FjdGlvbi5MYWJlbCwgdHJ1ZSk7XG5cblx0XHRyZXR1cm4gQ29tbW9uSGVscGVyLmdlbmVyYXRlRnVuY3Rpb24oXG5cdFx0XHRcIi5lZGl0Rmxvdy5pbnZva2VBY3Rpb25cIixcblx0XHRcdENvbW1vbkhlbHBlci5hZGRTaW5nbGVRdW90ZXMob0FjdGlvbi5BY3Rpb24hKSxcblx0XHRcdENvbW1vbkhlbHBlci5vYmplY3RUb1N0cmluZyhvUGFyYW1zKVxuXHRcdCk7XG5cdH0sXG5cdC8qKlxuXHQgKiBSZXR1cm4gTnVtYmVyIG9mIGNvbnRleHRzIGV4cHJlc3Npb24uXG5cdCAqIEBwYXJhbSB2QWN0aW9uRW5hYmxlZCBTdGF0dXMgb2YgYWN0aW9uIChzaW5nbGUgb3IgbXVsdGlzZWxlY3QpXG5cdCAqIEBwYXJhbSBmb3JDb250ZXh0TWVudSBJbmRpY2F0ZXMgaWYgdGhlIGFjdGlvbiBhcHBlYXJzIGluIHRoZSBjb250ZXh0IG1lbnUuIElmIGZhbHNlLCB0aGUgYWN0aW9uIGFwcGVhcnMgaW4gdGhlIHRhYmxlIHRvb2xiYXJcblx0ICogQHJldHVybnMgTnVtYmVyIG9mIGNvbnRleHRzIGV4cHJlc3Npb25cblx0ICovXG5cdGdldE51bWJlck9mQ29udGV4dHNFeHByZXNzaW9uKHZBY3Rpb25FbmFibGVkOiBzdHJpbmcsIGZvckNvbnRleHRNZW51ID0gZmFsc2UpOiBzdHJpbmcge1xuXHRcdGxldCBzTnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzO1xuXHRcdGNvbnN0IHNlbGVjdGVkQ29udGV4dCA9ICFmb3JDb250ZXh0TWVudVxuXHRcdFx0PyBcIiR7aW50ZXJuYWw+bnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzfVwiXG5cdFx0XHQ6IFwiJHtpbnRlcm5hbD5jb250ZXh0bWVudS9udW1iZXJPZlNlbGVjdGVkQ29udGV4dHN9XCI7XG5cdFx0aWYgKHZBY3Rpb25FbmFibGVkID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHRzTnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzID0gc2VsZWN0ZWRDb250ZXh0ICsgXCIgPT09IDFcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c051bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9IHNlbGVjdGVkQ29udGV4dCArIFwiID4gMFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gc051bWJlck9mU2VsZWN0ZWRDb250ZXh0cztcblx0fSxcblx0LyoqXG5cdCAqIFJldHVybiBVSSBDb250cm9sIChMaW5lSXRlbS9DaGFydCkgT3BlcmF0aW9uIEF2YWlsYWJsZSBNYXAuXG5cdCAqIEBwYXJhbSBjb2xsZWN0aW9uIEFycmF5IG9mIHJlY29yZHNcblx0ICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBuYW1lIChsaW5lSXRlbSAvIGNoYXJ0KVxuXHQgKiBAcGFyYW0gY29udGV4dCBDb252ZXJ0ZXIgY29udGV4dFxuXHQgKiBAcmV0dXJucyBUaGUgcmVjb3JkIGNvbnRhaW5pbmcgYWxsIGFjdGlvbiBuYW1lcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBDb3JlLk9wZXJhdGlvbkF2YWlsYWJsZSBwcm9wZXJ0eSBwYXRoc1xuXHQgKi9cblx0Z2V0T3BlcmF0aW9uQXZhaWxhYmxlTWFwKFxuXHRcdGNvbGxlY3Rpb246IERhdGFGaWVsZEFic3RyYWN0VHlwZXNbXSB8IHVuZGVmaW5lZCxcblx0XHRjb250cm9sOiBzdHJpbmcsXG5cdFx0Y29udGV4dDogQ29udmVydGVyQ29udGV4dDx1bmtub3duPiB8IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuXHQpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0bGV0IG9wZXJhdGlvbkF2YWlsYWJsZU1hcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRpZiAoY29sbGVjdGlvbikge1xuXHRcdFx0Y29sbGVjdGlvbi5mb3JFYWNoKChyZWNvcmQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMpID0+IHtcblx0XHRcdFx0aWYgKHJlY29yZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uKSB7XG5cdFx0XHRcdFx0Y29uc3QgYWN0aW9uTmFtZSA9IHJlY29yZC5BY3Rpb24gYXMgc3RyaW5nO1xuXHRcdFx0XHRcdGlmICghYWN0aW9uTmFtZT8uaW5jbHVkZXMoXCIvXCIpICYmICFyZWNvcmQuRGV0ZXJtaW5pbmcpIHtcblx0XHRcdFx0XHRcdGlmIChjb250cm9sID09PSBcInRhYmxlXCIpIHtcblx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uQXZhaWxhYmxlTWFwID0gdGhpcy5fZ2V0T3BlcmF0aW9uQXZhaWxhYmxlTWFwT2ZUYWJsZShcblx0XHRcdFx0XHRcdFx0XHRyZWNvcmQsXG5cdFx0XHRcdFx0XHRcdFx0YWN0aW9uTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb25BdmFpbGFibGVNYXAsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGV4dCBhcyBDb252ZXJ0ZXJDb250ZXh0PHVua25vd24+XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wgPT09IFwiY2hhcnRcIikge1xuXHRcdFx0XHRcdFx0XHRvcGVyYXRpb25BdmFpbGFibGVNYXAgPSB0aGlzLl9nZXRPcGVyYXRpb25BdmFpbGFibGVNYXBPZkNoYXJ0KFxuXHRcdFx0XHRcdFx0XHRcdGFjdGlvbk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uQXZhaWxhYmxlTWFwLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRleHQgYXMgQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHJlY29yZC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uR3JvdXApIHtcblx0XHRcdFx0XHQvLyBNZXJnZSByZWN1cnNpdmUgcmVzdWx0cyB3aXRoIGN1cnJlbnQgb3BlcmF0aW9uQXZhaWxhYmxlTWFwXG5cdFx0XHRcdFx0Y29uc3QgcmVjdXJzaXZlTWFwOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHRoaXMuZ2V0T3BlcmF0aW9uQXZhaWxhYmxlTWFwKHJlY29yZC5BY3Rpb25zLCBjb250cm9sLCBjb250ZXh0KTtcblx0XHRcdFx0XHRvcGVyYXRpb25BdmFpbGFibGVNYXAgPSB7IC4uLm9wZXJhdGlvbkF2YWlsYWJsZU1hcCwgLi4ucmVjdXJzaXZlTWFwIH07XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gb3BlcmF0aW9uQXZhaWxhYmxlTWFwO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm4gTGluZUl0ZW0gQWN0aW9uIE9wZXJhdGlvbiBBdmFpbGFibGUgTWFwLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0gb0RhdGFGaWVsZEZvckFjdGlvbiBEYXRhIGZpZWxkIGZvciBhY3Rpb24gb2JqZWN0XG5cdCAqIEBwYXJhbSBzQWN0aW9uTmFtZSBBY3Rpb24gbmFtZVxuXHQgKiBAcGFyYW0gb09wZXJhdGlvbkF2YWlsYWJsZU1hcCBPcGVyYXRpb24gYXZhaWxhYmxlIG1hcCBvYmplY3Rcblx0ICogQHBhcmFtIG9Db252ZXJ0ZXJDb250ZXh0IENvbnZlcnRlciBjb250ZXh0IG9iamVjdFxuXHQgKiBAcmV0dXJucyBUaGUgcmVjb3JkIGNvbnRhaW5pbmcgYWxsIGFjdGlvbiBuYW1lIG9mIGxpbmUgaXRlbSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgQ29yZS5PcGVyYXRpb25BdmFpbGFibGUgcHJvcGVydHkgcGF0aFxuXHQgKi9cblx0X2dldE9wZXJhdGlvbkF2YWlsYWJsZU1hcE9mVGFibGUoXG5cdFx0b0RhdGFGaWVsZEZvckFjdGlvbjogRGF0YUZpZWxkRm9yQWN0aW9uLFxuXHRcdHNBY3Rpb25OYW1lOiBzdHJpbmcsXG5cdFx0b09wZXJhdGlvbkF2YWlsYWJsZU1hcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdFx0b0NvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8dW5rbm93bj5cblx0KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuXHRcdGNvbnN0IGFjdGlvblRhcmdldCA9IG9EYXRhRmllbGRGb3JBY3Rpb24uQWN0aW9uVGFyZ2V0O1xuXHRcdGlmIChhY3Rpb25UYXJnZXQ/LmFubm90YXRpb25zPy5Db3JlPy5PcGVyYXRpb25BdmFpbGFibGUgPT09IG51bGwpIHtcblx0XHRcdC8vIFdlIGRpc2FibGVkIGFjdGlvbiBhZHZlcnRpc2VtZW50IGJ1dCBrZXB0IGl0IGluIHRoZSBjb2RlIGZvciB0aGUgdGltZSBiZWluZ1xuXHRcdFx0Ly9vT3BlcmF0aW9uQXZhaWxhYmxlTWFwID0gdGhpcy5fYWRkVG9NYXAoc0FjdGlvbk5hbWUsIG51bGwsIG9PcGVyYXRpb25BdmFpbGFibGVNYXApO1xuXHRcdH0gZWxzZSBpZiAoYWN0aW9uVGFyZ2V0Py5wYXJhbWV0ZXJzPy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSA9IGFjdGlvblRhcmdldC5wYXJhbWV0ZXJzWzBdLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0dGFyZ2V0RXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0XHRhY3Rpb25UYXJnZXQ/LmFubm90YXRpb25zPy5Db3JlPy5PcGVyYXRpb25BdmFpbGFibGUsXG5cdFx0XHRcdFx0W10sXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdChwYXRoOiBzdHJpbmcpID0+IGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IocGF0aCwgb0NvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lKVxuXHRcdFx0XHQpO1xuXHRcdFx0aWYgKGlzUGF0aEluTW9kZWxFeHByZXNzaW9uKHRhcmdldEV4cHJlc3Npb24pKSB7XG5cdFx0XHRcdG9PcGVyYXRpb25BdmFpbGFibGVNYXAgPSB0aGlzLl9hZGRUb01hcChzQWN0aW9uTmFtZSwgdGFyZ2V0RXhwcmVzc2lvbi5wYXRoLCBvT3BlcmF0aW9uQXZhaWxhYmxlTWFwKTtcblx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uVGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0b09wZXJhdGlvbkF2YWlsYWJsZU1hcCA9IHRoaXMuX2FkZFRvTWFwKHNBY3Rpb25OYW1lLCB0YXJnZXRFeHByZXNzaW9uLCBvT3BlcmF0aW9uQXZhaWxhYmxlTWFwKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9PcGVyYXRpb25BdmFpbGFibGVNYXA7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybiBMaW5lSXRlbSBBY3Rpb24gT3BlcmF0aW9uIEF2YWlsYWJsZSBNYXAuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSBzQWN0aW9uTmFtZSBBY3Rpb24gbmFtZVxuXHQgKiBAcGFyYW0gb09wZXJhdGlvbkF2YWlsYWJsZU1hcCBPcGVyYXRpb24gYXZhaWxhYmxlIG1hcCBvYmplY3Rcblx0ICogQHBhcmFtIG9Db250ZXh0IENvbnRleHQgb2JqZWN0XG5cdCAqIEBwYXJhbSBvQ29udGV4dC5jb250ZXh0IENvbnRleHQgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSByZWNvcmQgY29udGFpbmluZyBhbGwgYWN0aW9uIG5hbWUgb2YgY2hhcnQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIENvcmUuT3BlcmF0aW9uQXZhaWxhYmxlIHByb3BlcnR5IHBhdGhcblx0ICovXG5cdF9nZXRPcGVyYXRpb25BdmFpbGFibGVNYXBPZkNoYXJ0KFxuXHRcdHNBY3Rpb25OYW1lOiBzdHJpbmcsXG5cdFx0b09wZXJhdGlvbkF2YWlsYWJsZU1hcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdFx0b0NvbnRleHQ6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuXHQpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0bGV0IG9SZXN1bHQgPSBDb21tb25IZWxwZXIuZ2V0QWN0aW9uUGF0aChvQ29udGV4dC5jb250ZXh0LCBmYWxzZSwgc0FjdGlvbk5hbWUsIHRydWUpO1xuXHRcdGlmIChvUmVzdWx0ID09PSBudWxsKSB7XG5cdFx0XHRvT3BlcmF0aW9uQXZhaWxhYmxlTWFwID0gdGhpcy5fYWRkVG9NYXAoc0FjdGlvbk5hbWUsIG51bGwsIG9PcGVyYXRpb25BdmFpbGFibGVNYXApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUmVzdWx0ID0gQ29tbW9uSGVscGVyLmdldEFjdGlvblBhdGgob0NvbnRleHQuY29udGV4dCwgZmFsc2UsIHNBY3Rpb25OYW1lKSBhcyB7XG5cdFx0XHRcdHNDb250ZXh0UGF0aDogc3RyaW5nO1xuXHRcdFx0XHRzUHJvcGVydHk6IHN0cmluZztcblx0XHRcdFx0c0JpbmRpbmdQYXJhbWV0ZXI6IHN0cmluZztcblx0XHRcdH07XG5cdFx0XHRpZiAob1Jlc3VsdC5zUHJvcGVydHkpIHtcblx0XHRcdFx0b09wZXJhdGlvbkF2YWlsYWJsZU1hcCA9IHRoaXMuX2FkZFRvTWFwKFxuXHRcdFx0XHRcdHNBY3Rpb25OYW1lLFxuXHRcdFx0XHRcdG9SZXN1bHQuc1Byb3BlcnR5LnN1YnN0cmluZyhvUmVzdWx0LnNCaW5kaW5nUGFyYW1ldGVyLmxlbmd0aCArIDEpLFxuXHRcdFx0XHRcdG9PcGVyYXRpb25BdmFpbGFibGVNYXBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9PcGVyYXRpb25BdmFpbGFibGVNYXA7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybiBNYXAuXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSBzS2V5IEtleVxuXHQgKiBAcGFyYW0gb1ZhbHVlIFZhbHVlXG5cdCAqIEBwYXJhbSBvTWFwIE1hcCBvYmplY3Rcblx0ICogQHJldHVybnMgTWFwIG9iamVjdFxuXHQgKi9cblx0X2FkZFRvTWFwKHNLZXk6IHN0cmluZywgb1ZhbHVlOiB1bmtub3duLCBvTWFwOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0XHRpZiAoc0tleSAmJiBvTWFwKSB7XG5cdFx0XHRvTWFwW3NLZXldID0gb1ZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gb01hcDtcblx0fSxcblxuXHQvKipcblx0ICogRW5zdXJlcyBwcmltYXJ5IGFjdGlvbnMgbmV2ZXIgb3ZlcmZsb3cgYnkgc2V0dGluZyBwcmlvcml0eSB0byBOZXZlck92ZXJmbG93LlxuXHQgKiBQcmltYXJ5IGFjdGlvbiA9IGVtcGhhc2l6ZWQgT1IgaGFzIGNyaXRpY2FsaXR5IGRlZmluZWQuXG5cdCAqIEBwYXJhbSBhY3Rpb25zIEFycmF5IG9mIGFjdGlvbnMgdG8gcHJvY2Vzc1xuXHQgKiBAcmV0dXJucyBQcm9jZXNzZWQgYWN0aW9ucyB3aXRoIHByaW1hcnkgYWN0aW9uIG92ZXJmbG93IHByb3RlY3Rpb25cblx0ICovXG5cdGVuc3VyZVByaW1hcnlBY3Rpb25OZXZlck92ZXJmbG93czxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KGFjdGlvbnM6IFRbXSk6IFRbXSB7XG5cdFx0cmV0dXJuIGFjdGlvbnMubWFwKChhY3Rpb24pID0+XG5cdFx0XHRhY3Rpb24ucHJpb3JpdHkgPT09IFwiTmV2ZXJPdmVyZmxvd1wiIHx8ICF0aGlzLmlzUHJpbWFyeUFjdGlvbihhY3Rpb24pID8gYWN0aW9uIDogeyAuLi5hY3Rpb24sIHByaW9yaXR5OiBcIk5ldmVyT3ZlcmZsb3dcIiB9XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyBpZiBhbiBhY3Rpb24gaXMgYSBwcmltYXJ5IGFjdGlvbi5cblx0ICogUHJpbWFyeSBhY3Rpb24gPSBlbXBoYXNpemVkIE9SIGhhcyBjcml0aWNhbGl0eSBkZWZpbmVkLlxuXHQgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB0byBjaGVja1xuXHQgKiBAcmV0dXJucyBUcnVlIGlmIGFjdGlvbiBpcyBwcmltYXJ5XG5cdCAqL1xuXHRpc1ByaW1hcnlBY3Rpb24oYWN0aW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IGJvb2xlYW4ge1xuXHRcdC8vIENoZWNrIGlmIGFjdGlvbiBpcyBlbXBoYXNpemVkXG5cdFx0Y29uc3QgaXNFbXBoYXNpemVkID0gYWN0aW9uLmVtcGhhc2l6ZWQgPT09IHRydWUgfHwgYWN0aW9uLnR5cGUgPT09IFwiRW1waGFzaXplZFwiO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgYWN0aW9uIGhhcyBjcml0aWNhbGl0eSBkZWZpbmVkXG5cdFx0Y29uc3QgaGFzQ3JpdGljYWxpdHkgPSBhY3Rpb24uY3JpdGljYWxpdHkgIT09IHVuZGVmaW5lZCAmJiBhY3Rpb24uY3JpdGljYWxpdHkgIT09IG51bGw7XG5cblx0XHRyZXR1cm4gaXNFbXBoYXNpemVkIHx8IGhhc0NyaXRpY2FsaXR5O1xuXHR9XG59O1xuXG5l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
@@ -100,9 +100,9 @@ const ActionHelper = {
100
100
  },
101
101
  /**
102
102
  * Return UI Control (LineItem/Chart) Operation Available Map.
103
- * @param aCollection Array of records
104
- * @param sControl Control name (lineItem / chart)
105
- * @param oContext Converter context
103
+ * @param collection Array of records
104
+ * @param control Control name (lineItem / chart)
105
+ * @param context Converter context
106
106
  * @returns The record containing all action names and their corresponding Core.OperationAvailable property paths
107
107
  */
108
108
  getOperationAvailableMap(
@@ -132,7 +132,9 @@ const ActionHelper = {
132
132
  }
133
133
  }
134
134
  } else if (record.$Type === UIAnnotationTypes.DataFieldForActionGroup) {
135
- operationAvailableMap = this.getOperationAvailableMap(record.Actions, control, context);
135
+ // Merge recursive results with current operationAvailableMap
136
+ const recursiveMap: Record<string, unknown> = this.getOperationAvailableMap(record.Actions, control, context);
137
+ operationAvailableMap = { ...operationAvailableMap, ...recursiveMap };
136
138
  }
137
139
  });
138
140
  }
@@ -222,6 +224,34 @@ const ActionHelper = {
222
224
  oMap[sKey] = oValue;
223
225
  }
224
226
  return oMap;
227
+ },
228
+
229
+ /**
230
+ * Ensures primary actions never overflow by setting priority to NeverOverflow.
231
+ * Primary action = emphasized OR has criticality defined.
232
+ * @param actions Array of actions to process
233
+ * @returns Processed actions with primary action overflow protection
234
+ */
235
+ ensurePrimaryActionNeverOverflows<T extends Record<string, unknown>>(actions: T[]): T[] {
236
+ return actions.map((action) =>
237
+ action.priority === "NeverOverflow" || !this.isPrimaryAction(action) ? action : { ...action, priority: "NeverOverflow" }
238
+ );
239
+ },
240
+
241
+ /**
242
+ * Determines if an action is a primary action.
243
+ * Primary action = emphasized OR has criticality defined.
244
+ * @param action Action to check
245
+ * @returns True if action is primary
246
+ */
247
+ isPrimaryAction(action: Record<string, unknown>): boolean {
248
+ // Check if action is emphasized
249
+ const isEmphasized = action.emphasized === true || action.type === "Emphasized";
250
+
251
+ // Check if action has criticality defined
252
+ const hasCriticality = action.criticality !== undefined && action.criticality !== null;
253
+
254
+ return isEmphasized || hasCriticality;
225
255
  }
226
256
  };
227
257
 
@@ -24,7 +24,7 @@ sap.ui.define(["sap/base/Log", "sap/f/library", "sap/fe/controls/library", "sap/
24
24
  controls: [],
25
25
  elements: [],
26
26
  // eslint-disable-next-line no-template-curly-in-string
27
- version: "1.140.0",
27
+ version: "1.141.0",
28
28
  noLibraryCSS: true,
29
29
  extensions: {
30
30
  flChangeHandlers: {
@@ -211,6 +211,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/isEmptyObject", "sap/fe/macros/fil
211
211
  case "LE":
212
212
  case "LT":
213
213
  case "GT":
214
+ case "GE":
214
215
  case "EQ":
215
216
  selectOptionState.Option = operator;
216
217
  break;
@@ -303,4 +304,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/isEmptyObject", "sap/fe/macros/fil
303
304
  };
304
305
  return stateFilterToSelectionVariant;
305
306
  }, false);
306
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImZpbHRlckNvbmRpdGlvbnMiLCJwcm9wZXJ0eUhlbHBlciIsInBhcmFtcyIsInNlbGVjdGlvblZhcmlhbnQiLCJTZWxlY3Rpb25WYXJpYW50IiwiaXNFbXB0eU9iamVjdCIsImZpbHRlcktleSIsImZpbHRlckZpZWxkQ29uZGl0aW9uIiwibGVuZ3RoIiwic2VsZWN0T3B0aW9ucyIsImdldFNlbGVjdGlvbk9wdGlvbnNGcm9tQ29uZGl0aW9uIiwic2FuaXRpemVkRmlsdGVyS2V5IiwicmVwbGFjZSIsImluY2x1ZGVzIiwibWFzc0FkZFNlbGVjdE9wdGlvbiIsImNvbXBhcmVTZWxlY3RPcHRpb25zIiwib3B0aW9uczEiLCJvcHRpb25zMiIsIk9wdGlvbiIsIlNpZ24iLCJMb3ciLCJIaWdoIiwibWVyZ2VTZWxlY3Rpb25WYXJpYW50cyIsInNlbGVjdGlvblZhcmlhbnQxIiwic2VsZWN0aW9uVmFyaWFudDIiLCJtZXJnZWRTViIsInRvSlNPTlN0cmluZyIsInByb3BlcnR5TmFtZXMiLCJnZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcyIsImFkZGVkUHJvcGVydGllcyIsInByb3BOYW1lIiwiY29udHJvbE9wdGlvbnMiLCJnZXRTZWxlY3RPcHRpb24iLCJtZXJnZWRPcHRpb25zIiwicHVzaCIsImNvbnRyb2xPcHRpb24iLCJzb21lIiwibWVyZ2VkT3B0aW9uIiwic3RhdGVGaWx0ZXJzIiwiY29uZGl0aW9uIiwic2VsZWN0T3B0aW9uIiwiZ2V0U2VsZWN0aW9uT3B0aW9uIiwic2VtYW50aWNEYXRlcyIsImZpbHRlck9wdGlvbiIsIm9wZXJhdG9yIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiZ2V0T3BlcmF0b3IiLCJ1bmRlZmluZWQiLCJSYW5nZU9wZXJhdG9yIiwiY3JlYXRlU2VtYW50aWNEYXRlc0Zyb21Db25kaXRpb25zIiwiZ2V0T3B0aW9uRm9yUHJvcGVydHlXaXRoUmFuZ2VPcGVyYXRvciIsInNlbWFudGljRGF0ZU9wc0V4dCIsIlNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJnZXRTZWxlY3Rpb25Gb3JtYXRGb3JOb25SYW5nZU9wZXJhdG9yIiwiU2VtYW50aWNEYXRlcyIsImxvd1ZhbHVlIiwiaGlnaFZhbHVlIiwidmFsdWVzIiwidG9TdHJpbmciLCJnZXRUeXBlSW5mb0ZvckZpbHRlclByb3BlcnR5IiwicHJvcGVydHlJbmZvIiwiZ2V0UHJvcGVydHkiLCJ0eXBlQ29uZmlnIiwibW9kZWxGaWx0ZXIiLCJnZXRNb2RlbEZpbHRlciIsInR5cGVJbnN0YW5jZSIsImJhc2VUeXBlIiwiZmlsdGVycyIsImdldEZpbHRlcnMiLCJleGNsdWRlIiwiVHlwZU1hcCIsImV4dGVybmFsaXplVmFsdWUiLCJnZXRWYWx1ZTEiLCJnZXRWYWx1ZTIiLCJzZWxlY3RPcHRpb25TdGF0ZSIsIkxvZyIsIndhcm5pbmciLCJoaWdoIiwibG93Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBpc0VtcHR5T2JqZWN0IGZyb20gXCJzYXAvYmFzZS91dGlsL2lzRW1wdHlPYmplY3RcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL1NlbWFudGljRGF0ZU9wZXJhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9Qcm9wZXJ0eUluZm9cIjtcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZW1hbnRpY0RhdGVDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBUeXBlQ29uZmlnIGZyb20gXCJzYXAvdWkvbWRjL1R5cGVDb25maWdcIjtcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yVXRpbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vRmlsdGVyT3BlcmF0b3JVdGlsXCI7XG5pbXBvcnQgdHlwZSBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBSYW5nZU9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9SYW5nZU9wZXJhdG9yXCI7XG5pbXBvcnQgVHlwZU1hcCBmcm9tIFwic2FwL3VpL21kYy9vZGF0YS92NC9UeXBlTWFwXCI7XG5pbXBvcnQgdHlwZSBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL3VpL21kYy91dGlsL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIFR5cGUgZnJvbSBcInNhcC91aS9tb2RlbC9UeXBlXCI7XG5cbmNvbnN0IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50ID0ge1xuXHQvKipcblx0ICogR2V0IHNlbGVjdGlvbiB2YXJpYW50IGJhc2VkIG9uIHRoZSBmaWx0ZXIgY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGZpbHRlckNvbmRpdGlvbnMgQ29uZmlndXJlIHRoZSBmaWx0ZXIgYmFyIGNvbnRyb2xcblx0ICogQHBhcmFtIHByb3BlcnR5SGVscGVyIFByb3BlcnR5SGVscGVyIG9mIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyBvZiBwYXJhbWV0cml6ZWQgc2VydmljZXNcblx0ICogQHJldHVybnMgVGhlIGZpbHRlciBjb25kaXRpb25zIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIHNlbGVjdGlvbiB2YXJpYW50IGFuZCByZXR1cm5lZFxuXHQgKi9cblx0Z2V0U2VsZWN0aW9uVmFyaWFudEZyb21Db25kaXRpb25zOiBmdW5jdGlvbiAoXG5cdFx0ZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgQ29uZGl0aW9uT2JqZWN0W10gfCB1bmRlZmluZWQ+LFxuXHRcdHByb3BlcnR5SGVscGVyOiBQcm9wZXJ0eUhlbHBlcixcblx0XHRwYXJhbXM/OiBzdHJpbmdbXVxuXHQpOiBTZWxlY3Rpb25WYXJpYW50IHtcblx0XHRjb25zdCBzZWxlY3Rpb25WYXJpYW50ID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoKTtcblx0XHRpZiAoIWlzRW1wdHlPYmplY3QoZmlsdGVyQ29uZGl0aW9ucykpIHtcblx0XHRcdGZvciAoY29uc3QgZmlsdGVyS2V5IGluIGZpbHRlckNvbmRpdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgZmlsdGVyRmllbGRDb25kaXRpb24gPSBmaWx0ZXJDb25kaXRpb25zW2ZpbHRlcktleV07XG5cdFx0XHRcdGlmIChmaWx0ZXJGaWVsZENvbmRpdGlvbj8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0T3B0aW9ucyA9IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdGlvbk9wdGlvbnNGcm9tQ29uZGl0aW9uKFxuXHRcdFx0XHRcdFx0ZmlsdGVyRmllbGRDb25kaXRpb24sXG5cdFx0XHRcdFx0XHRmaWx0ZXJLZXksXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUhlbHBlclxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKHNlbGVjdE9wdGlvbnMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzYW5pdGl6ZWRGaWx0ZXJLZXkgPSBmaWx0ZXJLZXkucmVwbGFjZSgvXFwqXFwvL2csIFwiLlwiKTtcblx0XHRcdFx0XHRcdC8vIGdldCBwYXJhbWV0ZXJzIGZyb20gZmlsdGVyIGJhclxuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcz8uaW5jbHVkZXMoZmlsdGVyS2V5KSkge1xuXHRcdFx0XHRcdFx0XHQvLyB0cnlpbmcgdG8gZ2VuZXJhdGUgcHJvcGVydGllcyBsaWtlICRQYXJhbWV0ZXIuQ29tcGFueUNvZGUgaWYgQ29tcGFueUNvZGUgaXMgYSBwYXJhbWV0ZXJcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKGAkUGFyYW1ldGVyLiR7c2FuaXRpemVkRmlsdGVyS2V5fWAsIHNlbGVjdE9wdGlvbnMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKHNhbml0aXplZEZpbHRlcktleSwgc2VsZWN0T3B0aW9ucyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzZWxlY3Rpb25WYXJpYW50O1xuXHR9LFxuXHQvKipcblx0ICogQ29tcGFyZSB0d28gU2VsZWN0T3B0aW9uIG9iamVjdHMgYW5kIGNoZWNrIGlmIHRoZXkgYXJlIGVxdWFsLlxuXHQgKiBAcGFyYW0gb3B0aW9uczEgVGhlIGZpcnN0IFNlbGVjdE9wdGlvbiBvYmplY3Rcblx0ICogQHBhcmFtIG9wdGlvbnMyIFRoZSBzZWNvbmQgU2VsZWN0T3B0aW9uIG9iamVjdFxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlXG5cdCAqL1xuXHRjb21wYXJlU2VsZWN0T3B0aW9uczogZnVuY3Rpb24gKG9wdGlvbnMxOiBTZWxlY3RPcHRpb24sIG9wdGlvbnMyOiBTZWxlY3RPcHRpb24pOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0b3B0aW9uczEuT3B0aW9uID09PSBvcHRpb25zMi5PcHRpb24gJiZcblx0XHRcdG9wdGlvbnMxLlNpZ24gPT09IG9wdGlvbnMyLlNpZ24gJiZcblx0XHRcdG9wdGlvbnMxLkxvdyA9PT0gb3B0aW9uczIuTG93ICYmXG5cdFx0XHRvcHRpb25zMS5IaWdoID09PSBvcHRpb25zMi5IaWdoXG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogTWVyZ2UgdHdvIHNlbGVjdGlvbiB2YXJpYW50cy5cblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQxIFRoZSBmaXJzdCBzZWxlY3Rpb25WYXJpYW50MSBvYmplY3Rcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQyIFRoZSBzZWNvbmQgc2VsZWN0aW9uVmFyaWFudCBvYmplY3Rcblx0ICogQHJldHVybnMgVGhlIG1lcmdlZCBzZWxlY3Rpb25WYXJpYW50XG5cdCAqL1xuXHRtZXJnZVNlbGVjdGlvblZhcmlhbnRzOiBmdW5jdGlvbiAoc2VsZWN0aW9uVmFyaWFudDE6IFNlbGVjdGlvblZhcmlhbnQsIHNlbGVjdGlvblZhcmlhbnQyOiBTZWxlY3Rpb25WYXJpYW50KTogU2VsZWN0aW9uVmFyaWFudCB7XG5cdFx0Ly8gQ3JlYXRlIGEgbmV3IFNlbGVjdGlvblZhcmlhbnQgZm9yIHRoZSBtZXJnZWQgcmVzdWx0LCBpbml0aWFsbHkgYSBjbG9uZSBvZiBTZWxlY3Rpb25WYXJpYW50MVxuXHRcdGNvbnN0IG1lcmdlZFNWID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoc2VsZWN0aW9uVmFyaWFudDEudG9KU09OU3RyaW5nKCkpO1xuXG5cdFx0Ly8gR2V0IHRoZSBwcm9wZXJ0eSBuYW1lcyBmcm9tIFNlbGVjdGlvblZhcmlhbnQyXG5cdFx0Y29uc3QgcHJvcGVydHlOYW1lcyA9IHNlbGVjdGlvblZhcmlhbnQyLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCk7XG5cblx0XHQvLyBLZWVwIHRyYWNrIG9mIGFkZGVkIHByb3BlcnRpZXNcblx0XHRjb25zdCBhZGRlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cblx0XHQvLyBMb29wIHRocm91Z2ggZWFjaCBwcm9wZXJ0eSBpbiBTZWxlY3Rpb25WYXJpYW50MlxuXHRcdGZvciAoY29uc3QgcHJvcE5hbWUgb2YgcHJvcGVydHlOYW1lcykge1xuXHRcdFx0Y29uc3QgY29udHJvbE9wdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50Mi5nZXRTZWxlY3RPcHRpb24ocHJvcE5hbWUpIHx8IFtdO1xuXHRcdFx0Y29uc3QgbWVyZ2VkT3B0aW9ucyA9IG1lcmdlZFNWLmdldFNlbGVjdE9wdGlvbihwcm9wTmFtZSkgfHwgW107XG5cblx0XHRcdC8vIENoZWNrIGlmIHRoZSBwcm9wZXJ0eSBhbHJlYWR5IGV4aXN0cyBpbiBTZWxlY3Rpb25WYXJpYW50MVxuXHRcdFx0aWYgKCFhZGRlZFByb3BlcnRpZXMuaW5jbHVkZXMocHJvcE5hbWUpKSB7XG5cdFx0XHRcdC8vIElmIG5vdCwgYWRkIHRoZSBlbnRpcmUgcHJvcGVydHkgZnJvbSBTZWxlY3Rpb25WYXJpYW50MlxuXHRcdFx0XHRtZXJnZWRTVi5tYXNzQWRkU2VsZWN0T3B0aW9uKHByb3BOYW1lLCBjb250cm9sT3B0aW9ucyk7XG5cdFx0XHRcdGFkZGVkUHJvcGVydGllcy5wdXNoKHByb3BOYW1lKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIElmIGl0IGV4aXN0cyBpbiBTZWxlY3Rpb25WYXJpYW50MSwgb25seSBhZGQgdGhlIG9wdGlvbnMgdGhhdCBhcmUgbm90IGFscmVhZHkgcHJlc2VudFxuXHRcdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2xPcHRpb24gb2YgY29udHJvbE9wdGlvbnMpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHQhbWVyZ2VkT3B0aW9ucy5zb21lKChtZXJnZWRPcHRpb24pID0+XG5cdFx0XHRcdFx0XHRcdHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50LmNvbXBhcmVTZWxlY3RPcHRpb25zKG1lcmdlZE9wdGlvbiwgY29udHJvbE9wdGlvbilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG1lcmdlZE9wdGlvbnMucHVzaChjb250cm9sT3B0aW9uKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0bWVyZ2VkU1YubWFzc0FkZFNlbGVjdE9wdGlvbihwcm9wTmFtZSwgbWVyZ2VkT3B0aW9ucyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1lcmdlZFNWO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gYWRkIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyB0byBzZWxlY3Rpb24gdmFyaWFudC5cblx0ICogQHBhcmFtIHN0YXRlRmlsdGVycyBSZXRyaWV2ZWQgZmlsdGVyIGNvbmRpdGlvbiBmb3IgYSBmaWx0ZXIgZmllbGQgZnJvbSBTdGF0ZVV0aWxzXG5cdCAqIEBwYXJhbSBmaWx0ZXJLZXkgTmFtZSBvZiB0aGUgZmlsdGVyIGtleVxuXHQgKiBAcGFyYW0gcHJvcGVydHlIZWxwZXIgUHJvcGVydHlIZWxwZXIgb2YgdGhlIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVGhlIHNlbGVjdGlvbiBvcHRpb24gYXJyYXkgZm9yIGEgcGFydGljdWxhciBmaWx0ZXIga2V5XG5cdCAqL1xuXHRnZXRTZWxlY3Rpb25PcHRpb25zRnJvbUNvbmRpdGlvbjogZnVuY3Rpb24gKFxuXHRcdHN0YXRlRmlsdGVyczogQ29uZGl0aW9uT2JqZWN0W10sXG5cdFx0ZmlsdGVyS2V5OiBzdHJpbmcsXG5cdFx0cHJvcGVydHlIZWxwZXI6IFByb3BlcnR5SGVscGVyXG5cdCk6IFNlbGVjdE9wdGlvbltdIHtcblx0XHRjb25zdCBzZWxlY3RPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHN0YXRlRmlsdGVycykge1xuXHRcdFx0Y29uc3Qgc2VsZWN0T3B0aW9uID0gc3RhdGVGaWx0ZXJUb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0aW9uT3B0aW9uKGNvbmRpdGlvbiwgZmlsdGVyS2V5LCBwcm9wZXJ0eUhlbHBlcik7XG5cdFx0XHRpZiAoc2VsZWN0T3B0aW9uKSB7XG5cdFx0XHRcdHNlbGVjdE9wdGlvbnMucHVzaChzZWxlY3RPcHRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2VsZWN0T3B0aW9ucztcblx0fSxcblx0LyoqXG5cdCAqIENhbGN1bGF0ZSB0aGUgZmlsdGVyIG9wdGlvbiBmb3IgZWFjaCB2YWx1ZS5cblx0ICogQHBhcmFtIGNvbmRpdGlvblxuXHQgKiBAcGFyYW0gZmlsdGVyS2V5IE5hbWUgb2YgdGhlIGZpbHRlciBrZXlcblx0ICogQHBhcmFtIHByb3BlcnR5SGVscGVyIFByb3BlcnR5SGVscGVyIG9mIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFRoZSBwcm9taXNlIG9mIHRoZSBTZWxlY3Qgb3B0aW9uXG5cdCAqL1xuXHRnZXRTZWxlY3Rpb25PcHRpb246IGZ1bmN0aW9uIChjb25kaXRpb246IENvbmRpdGlvbk9iamVjdCwgZmlsdGVyS2V5OiBzdHJpbmcsIHByb3BlcnR5SGVscGVyOiBQcm9wZXJ0eUhlbHBlcik6IFNlbGVjdE9wdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHNlbWFudGljRGF0ZXM6IFNlbWFudGljRGF0ZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQ7XG5cdFx0bGV0IGZpbHRlck9wdGlvbjogU2VsZWN0T3B0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IG9wZXJhdG9yID0gY29uZGl0aW9uLm9wZXJhdG9yICYmIGNvbmRpdGlvbi5vcGVyYXRvciAhPT0gXCJcIiA/IEZpbHRlck9wZXJhdG9yVXRpbC5nZXRPcGVyYXRvcihjb25kaXRpb24ub3BlcmF0b3IpIDogdW5kZWZpbmVkO1xuXHRcdGlmIChvcGVyYXRvciBpbnN0YW5jZW9mIFJhbmdlT3BlcmF0b3IpIHtcblx0XHRcdHNlbWFudGljRGF0ZXMgPSBzdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudC5jcmVhdGVTZW1hbnRpY0RhdGVzRnJvbUNvbmRpdGlvbnMoY29uZGl0aW9uKTtcblx0XHRcdGZpbHRlck9wdGlvbiA9IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50LmdldE9wdGlvbkZvclByb3BlcnR5V2l0aFJhbmdlT3BlcmF0b3IoXG5cdFx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0XHRjb25kaXRpb24sXG5cdFx0XHRcdGZpbHRlcktleSxcblx0XHRcdFx0cHJvcGVydHlIZWxwZXJcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHNlbWFudGljRGF0ZU9wc0V4dCA9IFNlbWFudGljRGF0ZU9wZXJhdG9ycy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk7XG5cdFx0XHRpZiAoc2VtYW50aWNEYXRlT3BzRXh0LmluY2x1ZGVzKGNvbmRpdGlvbi5vcGVyYXRvcikpIHtcblx0XHRcdFx0c2VtYW50aWNEYXRlcyA9IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50LmNyZWF0ZVNlbWFudGljRGF0ZXNGcm9tQ29uZGl0aW9ucyhjb25kaXRpb24pO1xuXHRcdFx0fVxuXHRcdFx0ZmlsdGVyT3B0aW9uID0gc3RhdGVGaWx0ZXJUb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0aW9uRm9ybWF0Rm9yTm9uUmFuZ2VPcGVyYXRvcihjb25kaXRpb24sIGZpbHRlcktleSk7XG5cdFx0fVxuXHRcdGlmIChmaWx0ZXJPcHRpb24/Lk9wdGlvbikge1xuXHRcdFx0ZmlsdGVyT3B0aW9uLlNlbWFudGljRGF0ZXMgPSBzZW1hbnRpY0RhdGVzID8gc2VtYW50aWNEYXRlcyA6IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0cmV0dXJuIGZpbHRlck9wdGlvbjtcblx0fSxcblx0LyoqXG5cdCAqIENhbGN1bGF0ZSB0aGUgZmlsdGVyIGNvbmRpdGlvbnMgZm9yIHRoZSBTZWxlY3Qgb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29uZGl0aW9uIENvbmRpdGlvbiBvYmplY3Rcblx0ICogQHBhcmFtIGZpbHRlcktleSBOYW1lIG9mIHRoZSBmaWx0ZXIga2V5XG5cdCAqIEByZXR1cm5zIFRoZSBTZWxlY3QgT3B0aW9uIG9iamVjdCBvciB1bmRlZmluZWRcblx0ICovXG5cdGdldFNlbGVjdGlvbkZvcm1hdEZvck5vblJhbmdlT3BlcmF0b3I6IGZ1bmN0aW9uIChjb25kaXRpb246IENvbmRpdGlvbk9iamVjdCwgZmlsdGVyS2V5OiBzdHJpbmcpOiBTZWxlY3RPcHRpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IFtsb3dWYWx1ZSwgaGlnaFZhbHVlXSA9IGNvbmRpdGlvbi52YWx1ZXMgYXMgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdO1xuXHRcdHJldHVybiBzdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb24oXG5cdFx0XHRjb25kaXRpb24ub3BlcmF0b3IsXG5cdFx0XHRsb3dWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGxvd1ZhbHVlICE9PSBudWxsID8gbG93VmFsdWUudG9TdHJpbmcoKSA6IFwiXCIsXG5cdFx0XHRoaWdoVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBoaWdoVmFsdWUgIT09IG51bGwgPyBoaWdoVmFsdWUudG9TdHJpbmcoKSA6IG51bGwsXG5cdFx0XHRmaWx0ZXJLZXlcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHR5cGUtc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqIEBwYXJhbSBmaWx0ZXJLZXkgTmFtZSBvZiB0aGUgZmlsdGVyIGtleVxuXHQgKiBAcGFyYW0gcHJvcGVydHlIZWxwZXIgUHJvcGVydHlIZWxwZXIgYW5kIGZpbHRlciBkZWxlZ2F0ZSBjb250cm9sbGVyIG9mIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVGhlIG9iamVjdCB3aXRoIHR5cGVDb25maWcgdmFsdWVcblx0ICovXG5cdGdldFR5cGVJbmZvRm9yRmlsdGVyUHJvcGVydHk6IGZ1bmN0aW9uIChmaWx0ZXJLZXk6IHN0cmluZywgcHJvcGVydHlIZWxwZXI6IFByb3BlcnR5SGVscGVyKTogVHlwZUNvbmZpZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gZm9yIGZldyBmaWx0ZXIgZmllbGRzIGtleXMgd2lsbCBub3QgYmUgcHJlc2VudCBoZW5jZSBza2lwIHRob3NlIHByb3BlcnRpZXNcblx0XHRjb25zdCBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUhlbHBlci5nZXRQcm9wZXJ0eShmaWx0ZXJLZXkpIGFzIHVua25vd24gYXMgUHJvcGVydHlJbmZvO1xuXHRcdC8vIFRoaXMgbmVlZHMgdG8gYmUgcmV2aWV3ZWQgYmVjYXVzZSB0aGUgZ2V0UHJvcGVydHkgZnVuY3Rpb24gZnJvbSB0aGUgUHJvcGVydHlIZWxwZXIgZG9lcyBub3QgcmV0dXJuIGEgdHlwZUNvbmZpZ1xuXHRcdGxldCB0eXBlQ29uZmlnOiBUeXBlQ29uZmlnIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChwcm9wZXJ0eUluZm8pIHtcblx0XHRcdHR5cGVDb25maWcgPSBwcm9wZXJ0eUluZm8udHlwZUNvbmZpZztcblx0XHR9XG5cdFx0cmV0dXJuIHR5cGVDb25maWc7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENhbGN1bGF0ZSB0aGUgb3B0aW9ucyBmb3IgZGF0ZSByYW5nZSB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBvcGVyYXRvciBPYmplY3QgZm9yIHRoZSBnaXZlbiBvcGVyYXRvciBuYW1lXG5cdCAqIEBwYXJhbSBjb25kaXRpb24gVGhlIFZhbHVlIG9iamVjdCB0aGF0IGlzIHByZXNlbnQgaW4gdGhlIHZhbHVlcyBvZiB0aGUgZmlsdGVyIGNvbmRpdGlvblxuXHQgKiBAcGFyYW0gZmlsdGVyS2V5IE5hbWUgb2YgdGhlIGZpbHRlciBrZXlcblx0ICogQHBhcmFtIHByb3BlcnR5SGVscGVyIFByb3BlcnR5SGVscGVyIG9mIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVGhlIHNlbGVjdGlvbk9wdGlvbiBmb3IgZmlsdGVyIGZpZWxkXG5cdCAqL1xuXHRnZXRPcHRpb25Gb3JQcm9wZXJ0eVdpdGhSYW5nZU9wZXJhdG9yOiBmdW5jdGlvbiAoXG5cdFx0b3BlcmF0b3I6IE9wZXJhdG9yLFxuXHRcdGNvbmRpdGlvbjogQ29uZGl0aW9uT2JqZWN0LFxuXHRcdGZpbHRlcktleTogc3RyaW5nLFxuXHRcdHByb3BlcnR5SGVscGVyOiBQcm9wZXJ0eUhlbHBlclxuXHQpOiBTZWxlY3RPcHRpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGZpbHRlck9wdGlvbjogU2VsZWN0T3B0aW9uID0ge1xuXHRcdFx0U2lnbjogXCJJXCIsXG5cdFx0XHRPcHRpb246IFwiXCIsXG5cdFx0XHRMb3c6IFwiXCIsXG5cdFx0XHRIaWdoOiBcIlwiXG5cdFx0fTtcblx0XHRjb25zdCB0eXBlQ29uZmlnID0gc3RhdGVGaWx0ZXJUb1NlbGVjdGlvblZhcmlhbnQuZ2V0VHlwZUluZm9Gb3JGaWx0ZXJQcm9wZXJ0eShmaWx0ZXJLZXksIHByb3BlcnR5SGVscGVyKTtcblxuXHRcdC8vIGhhbmRsaW5nIG9mIERhdGUgUmFuZ2VPcGVyYXRvcnNcblx0XHRjb25zdCBtb2RlbEZpbHRlciA9IG9wZXJhdG9yLmdldE1vZGVsRmlsdGVyKFxuXHRcdFx0Y29uZGl0aW9uLFxuXHRcdFx0ZmlsdGVyS2V5LFxuXHRcdFx0KHR5cGVDb25maWcgPyB0eXBlQ29uZmlnLnR5cGVJbnN0YW5jZSA6IHVuZGVmaW5lZCkgYXMgdW5rbm93biBhcyBUeXBlLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHR0eXBlQ29uZmlnID8gdHlwZUNvbmZpZy5iYXNlVHlwZSA6IHVuZGVmaW5lZFxuXHRcdCk7XG5cdFx0Y29uc3QgZmlsdGVyczogRmlsdGVyW10gfCB1bmRlZmluZWQgPSBtb2RlbEZpbHRlci5nZXRGaWx0ZXJzKCk7XG5cdFx0aWYgKGZpbHRlcnMgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0ZmlsdGVyT3B0aW9uLlNpZ24gPSBvcGVyYXRvci5leGNsdWRlID8gXCJFXCIgOiBcIklcIjtcblx0XHRcdC8vIEZJWE1FIFRob3NlIGFyZSBwcml2YXRlIG1ldGhvZHMgZnJvbSBNRENcblx0XHRcdGZpbHRlck9wdGlvbi5Mb3cgPSBUeXBlTWFwLmV4dGVybmFsaXplVmFsdWUobW9kZWxGaWx0ZXIuZ2V0VmFsdWUxKCksIHR5cGVDb25maWcgPyB0eXBlQ29uZmlnLnR5cGVJbnN0YW5jZSA6IFwic3RyaW5nXCIpO1xuXHRcdFx0ZmlsdGVyT3B0aW9uLkhpZ2ggPSBUeXBlTWFwLmV4dGVybmFsaXplVmFsdWUobW9kZWxGaWx0ZXIuZ2V0VmFsdWUyKCksIHR5cGVDb25maWcgPyB0eXBlQ29uZmlnLnR5cGVJbnN0YW5jZSA6IFwic3RyaW5nXCIpO1xuXHRcdFx0ZmlsdGVyT3B0aW9uLk9wdGlvbiA9IG1vZGVsRmlsdGVyLmdldE9wZXJhdG9yKCkgPz8gXCJcIjtcblx0XHR9XG5cdFx0cmV0dXJuIGZpbHRlck9wdGlvbi5PcHRpb24gIT0gXCJcIiA/IGZpbHRlck9wdGlvbiA6IHVuZGVmaW5lZDtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHNpZ24gYW5kIG9wdGlvbiBvZiBzZWxlY3Rpb24gb3B0aW9uLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wdGlvbiBvZiBzZWxlY3Rpb24gdmFyaWFudFxuXHQgKiBAcGFyYW0gbG93VmFsdWUgVGhlIHNpbmdsZSB2YWx1ZSBvciB0aGUgbG93ZXIgYm91bmRhcnkgb2YgdGhlIGludGVydmFsOyB0aGUgPGNvZGU+bnVsbDwvY29kZT4gdmFsdWUgaXMgbm90IGFsbG93ZWRcblx0ICogQHBhcmFtIGhpZ2hWYWx1ZSBUaGUgSGlnaCB2YWx1ZSBvZiB0aGUgcmFuZ2U7IGlmIHRoaXMgdmFsdWUgaXMgbm90IG5lY2Vzc2FyeSwgPGNvZGU+bnVsbDwvY29kZT4gaXMgdXNlZDwvbGk+XG5cdCAqIEBwYXJhbSBmaWx0ZXJLZXkgVGhlIG5hbWUgb2YgdGhlIGZpbHRlciBmaWVsZFxuXHQgKiBAcmV0dXJucyBUaGUgc2VsZWN0aW9uIHN0YXRlXG5cdCAqL1xuXHRnZXRTZWxlY3RPcHRpb246IGZ1bmN0aW9uIChvcGVyYXRvcjogc3RyaW5nLCBsb3dWYWx1ZTogc3RyaW5nLCBoaWdoVmFsdWU6IHN0cmluZyB8IG51bGwsIGZpbHRlcktleTogc3RyaW5nKTogU2VsZWN0T3B0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzZWxlY3RPcHRpb25TdGF0ZSA9IHtcblx0XHRcdE9wdGlvbjogXCJcIixcblx0XHRcdFNpZ246IFwiSVwiLFxuXHRcdFx0TG93OiBsb3dWYWx1ZSxcblx0XHRcdEhpZ2g6IGhpZ2hWYWx1ZVxuXHRcdH07XG5cdFx0c3dpdGNoIChvcGVyYXRvcikge1xuXHRcdFx0Y2FzZSBcIkNvbnRhaW5zXCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiA9IFwiQ1BcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuTG93ID0gYCoke3NlbGVjdE9wdGlvblN0YXRlLkxvd30qYDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiU3RhcnRzV2l0aFwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkNQXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLkxvdyArPSBcIipcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRW5kc1dpdGhcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJDUFwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5Mb3cgPSBgKiR7c2VsZWN0T3B0aW9uU3RhdGUuTG93fWA7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkJUXCI6XG5cdFx0XHRjYXNlIFwiTEVcIjpcblx0XHRcdGNhc2UgXCJMVFwiOlxuXHRcdFx0Y2FzZSBcIkdUXCI6XG5cdFx0XHRjYXNlIFwiRVFcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gb3BlcmF0b3I7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkRBVEVcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJFUVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJEQVRFUkFOR0VcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJCVFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJGUk9NXCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiA9IFwiR0VcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVE9cIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJMRVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJFRVFcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJFUVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJFbXB0eVwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkVRXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLkxvdyA9IFwiXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIk5FXCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLlNpZ24gPSBcIkVcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJFUVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOb3RDb250YWluc1wiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkNQXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLlNpZ24gPSBcIkVcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuTG93ID0gYCoke3NlbGVjdE9wdGlvblN0YXRlLkxvd30qYDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTk9UQlRcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJCVFwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5TaWduID0gXCJFXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIk5vdFN0YXJ0c1dpdGhcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJDUFwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5Mb3cgKz0gXCIqXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLlNpZ24gPSBcIkVcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTm90RW5kc1dpdGhcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJDUFwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5Mb3cgPSBgKiR7c2VsZWN0T3B0aW9uU3RhdGUuTG93fWA7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLlNpZ24gPSBcIkVcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTm90RW1wdHlcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJFUVwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5Mb3cgPSBcIlwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5TaWduID0gXCJFXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIk5PVExFXCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiA9IFwiTEVcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuU2lnbiA9IFwiRVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOT1RHRVwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkdFXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLlNpZ24gPSBcIkVcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTk9UTFRcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJMVFwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5TaWduID0gXCJFXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIk5PVEdUXCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiA9IFwiR1RcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuU2lnbiA9IFwiRVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdExvZy53YXJuaW5nKGAke29wZXJhdG9yfSBpcyBub3Qgc3VwcG9ydGVkLiAke2ZpbHRlcktleX0gY291bGQgbm90IGJlIGFkZGVkIHRvIHRoZSBTZWxlY3Rpb24gdmFyaWFudGApO1xuXHRcdH1cblxuXHRcdGlmIChzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gIT09IFwiQlRcIikge1xuXHRcdFx0Ly8gQ2xlYW51cCB0byBhdm9pZCBleGNlcHRpb25zXG5cdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5IaWdoID0gbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiAhPT0gXCJcIiA/IHNlbGVjdE9wdGlvblN0YXRlIDogdW5kZWZpbmVkO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgdGhlIHNlbWFudGljIGRhdGVzIGZyb20gZmlsdGVyIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBjb25kaXRpb24gRmlsdGVyIGZpZWxkIGNvbmRpdGlvblxuXHQgKiBAcmV0dXJucyBUaGUgU2VtYW50aWMgZGF0ZSBjb25kaXRpb25zXG5cdCAqL1xuXHRjcmVhdGVTZW1hbnRpY0RhdGVzRnJvbUNvbmRpdGlvbnM6IGZ1bmN0aW9uIChjb25kaXRpb246IENvbmRpdGlvbk9iamVjdCk6IFNlbWFudGljRGF0ZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQge1xuXHRcdGlmICghaXNFbXB0eU9iamVjdChjb25kaXRpb24pKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRoaWdoOiBjb25kaXRpb24udmFsdWVzWzBdICE9PSB1bmRlZmluZWQgJiYgY29uZGl0aW9uLnZhbHVlc1swXSAhPT0gbnVsbCA/IChjb25kaXRpb24udmFsdWVzWzBdIGFzIHN0cmluZykgOiBudWxsLFxuXHRcdFx0XHRsb3c6IGNvbmRpdGlvbi52YWx1ZXNbMV0gIT09IHVuZGVmaW5lZCAmJiBjb25kaXRpb24udmFsdWVzWzFdICE9PSBudWxsID8gKGNvbmRpdGlvbi52YWx1ZXNbMV0gYXMgc3RyaW5nKSA6IG51bGwsXG5cdFx0XHRcdG9wZXJhdG9yOiBjb25kaXRpb24ub3BlcmF0b3Jcblx0XHRcdH07XG5cdFx0fVxuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQWdCQSxNQUFNQSw2QkFBNkIsR0FBRztJQUNyQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxpQ0FBaUMsRUFBRSxTQUFBQSxDQUNsQ0MsZ0JBQStELEVBQy9EQyxjQUE4QixFQUM5QkMsTUFBaUIsRUFDRTtNQUNuQixNQUFNQyxnQkFBZ0IsR0FBRyxJQUFJQyxnQkFBZ0IsQ0FBQyxDQUFDO01BQy9DLElBQUksQ0FBQ0MsYUFBYSxDQUFDTCxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3JDLEtBQUssTUFBTU0sU0FBUyxJQUFJTixnQkFBZ0IsRUFBRTtVQUN6QyxNQUFNTyxvQkFBb0IsR0FBR1AsZ0JBQWdCLENBQUNNLFNBQVMsQ0FBQztVQUN4RCxJQUFJQyxvQkFBb0IsRUFBRUMsTUFBTSxFQUFFO1lBQ2pDLE1BQU1DLGFBQWEsR0FBR1gsNkJBQTZCLENBQUNZLGdDQUFnQyxDQUNuRkgsb0JBQW9CLEVBQ3BCRCxTQUFTLEVBQ1RMLGNBQ0QsQ0FBQztZQUNELElBQUlRLGFBQWEsQ0FBQ0QsTUFBTSxFQUFFO2NBQ3pCLE1BQU1HLGtCQUFrQixHQUFHTCxTQUFTLENBQUNNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO2NBQzFEO2NBQ0EsSUFBSVYsTUFBTSxFQUFFVyxRQUFRLENBQUNQLFNBQVMsQ0FBQyxFQUFFO2dCQUNoQztnQkFDQUgsZ0JBQWdCLENBQUNXLG1CQUFtQixDQUFDLGNBQWNILGtCQUFrQixFQUFFLEVB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
307
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImZpbHRlckNvbmRpdGlvbnMiLCJwcm9wZXJ0eUhlbHBlciIsInBhcmFtcyIsInNlbGVjdGlvblZhcmlhbnQiLCJTZWxlY3Rpb25WYXJpYW50IiwiaXNFbXB0eU9iamVjdCIsImZpbHRlcktleSIsImZpbHRlckZpZWxkQ29uZGl0aW9uIiwibGVuZ3RoIiwic2VsZWN0T3B0aW9ucyIsImdldFNlbGVjdGlvbk9wdGlvbnNGcm9tQ29uZGl0aW9uIiwic2FuaXRpemVkRmlsdGVyS2V5IiwicmVwbGFjZSIsImluY2x1ZGVzIiwibWFzc0FkZFNlbGVjdE9wdGlvbiIsImNvbXBhcmVTZWxlY3RPcHRpb25zIiwib3B0aW9uczEiLCJvcHRpb25zMiIsIk9wdGlvbiIsIlNpZ24iLCJMb3ciLCJIaWdoIiwibWVyZ2VTZWxlY3Rpb25WYXJpYW50cyIsInNlbGVjdGlvblZhcmlhbnQxIiwic2VsZWN0aW9uVmFyaWFudDIiLCJtZXJnZWRTViIsInRvSlNPTlN0cmluZyIsInByb3BlcnR5TmFtZXMiLCJnZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcyIsImFkZGVkUHJvcGVydGllcyIsInByb3BOYW1lIiwiY29udHJvbE9wdGlvbnMiLCJnZXRTZWxlY3RPcHRpb24iLCJtZXJnZWRPcHRpb25zIiwicHVzaCIsImNvbnRyb2xPcHRpb24iLCJzb21lIiwibWVyZ2VkT3B0aW9uIiwic3RhdGVGaWx0ZXJzIiwiY29uZGl0aW9uIiwic2VsZWN0T3B0aW9uIiwiZ2V0U2VsZWN0aW9uT3B0aW9uIiwic2VtYW50aWNEYXRlcyIsImZpbHRlck9wdGlvbiIsIm9wZXJhdG9yIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiZ2V0T3BlcmF0b3IiLCJ1bmRlZmluZWQiLCJSYW5nZU9wZXJhdG9yIiwiY3JlYXRlU2VtYW50aWNEYXRlc0Zyb21Db25kaXRpb25zIiwiZ2V0T3B0aW9uRm9yUHJvcGVydHlXaXRoUmFuZ2VPcGVyYXRvciIsInNlbWFudGljRGF0ZU9wc0V4dCIsIlNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJnZXRTZWxlY3Rpb25Gb3JtYXRGb3JOb25SYW5nZU9wZXJhdG9yIiwiU2VtYW50aWNEYXRlcyIsImxvd1ZhbHVlIiwiaGlnaFZhbHVlIiwidmFsdWVzIiwidG9TdHJpbmciLCJnZXRUeXBlSW5mb0ZvckZpbHRlclByb3BlcnR5IiwicHJvcGVydHlJbmZvIiwiZ2V0UHJvcGVydHkiLCJ0eXBlQ29uZmlnIiwibW9kZWxGaWx0ZXIiLCJnZXRNb2RlbEZpbHRlciIsInR5cGVJbnN0YW5jZSIsImJhc2VUeXBlIiwiZmlsdGVycyIsImdldEZpbHRlcnMiLCJleGNsdWRlIiwiVHlwZU1hcCIsImV4dGVybmFsaXplVmFsdWUiLCJnZXRWYWx1ZTEiLCJnZXRWYWx1ZTIiLCJzZWxlY3RPcHRpb25TdGF0ZSIsIkxvZyIsIndhcm5pbmciLCJoaWdoIiwibG93Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBpc0VtcHR5T2JqZWN0IGZyb20gXCJzYXAvYmFzZS91dGlsL2lzRW1wdHlPYmplY3RcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL1NlbWFudGljRGF0ZU9wZXJhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9Qcm9wZXJ0eUluZm9cIjtcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZW1hbnRpY0RhdGVDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBUeXBlQ29uZmlnIGZyb20gXCJzYXAvdWkvbWRjL1R5cGVDb25maWdcIjtcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yVXRpbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vRmlsdGVyT3BlcmF0b3JVdGlsXCI7XG5pbXBvcnQgdHlwZSBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBSYW5nZU9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9SYW5nZU9wZXJhdG9yXCI7XG5pbXBvcnQgVHlwZU1hcCBmcm9tIFwic2FwL3VpL21kYy9vZGF0YS92NC9UeXBlTWFwXCI7XG5pbXBvcnQgdHlwZSBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL3VpL21kYy91dGlsL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIFR5cGUgZnJvbSBcInNhcC91aS9tb2RlbC9UeXBlXCI7XG5cbmNvbnN0IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50ID0ge1xuXHQvKipcblx0ICogR2V0IHNlbGVjdGlvbiB2YXJpYW50IGJhc2VkIG9uIHRoZSBmaWx0ZXIgY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGZpbHRlckNvbmRpdGlvbnMgQ29uZmlndXJlIHRoZSBmaWx0ZXIgYmFyIGNvbnRyb2xcblx0ICogQHBhcmFtIHByb3BlcnR5SGVscGVyIFByb3BlcnR5SGVscGVyIG9mIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyBvZiBwYXJhbWV0cml6ZWQgc2VydmljZXNcblx0ICogQHJldHVybnMgVGhlIGZpbHRlciBjb25kaXRpb25zIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIHNlbGVjdGlvbiB2YXJpYW50IGFuZCByZXR1cm5lZFxuXHQgKi9cblx0Z2V0U2VsZWN0aW9uVmFyaWFudEZyb21Db25kaXRpb25zOiBmdW5jdGlvbiAoXG5cdFx0ZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgQ29uZGl0aW9uT2JqZWN0W10gfCB1bmRlZmluZWQ+LFxuXHRcdHByb3BlcnR5SGVscGVyOiBQcm9wZXJ0eUhlbHBlcixcblx0XHRwYXJhbXM/OiBzdHJpbmdbXVxuXHQpOiBTZWxlY3Rpb25WYXJpYW50IHtcblx0XHRjb25zdCBzZWxlY3Rpb25WYXJpYW50ID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoKTtcblx0XHRpZiAoIWlzRW1wdHlPYmplY3QoZmlsdGVyQ29uZGl0aW9ucykpIHtcblx0XHRcdGZvciAoY29uc3QgZmlsdGVyS2V5IGluIGZpbHRlckNvbmRpdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgZmlsdGVyRmllbGRDb25kaXRpb24gPSBmaWx0ZXJDb25kaXRpb25zW2ZpbHRlcktleV07XG5cdFx0XHRcdGlmIChmaWx0ZXJGaWVsZENvbmRpdGlvbj8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0T3B0aW9ucyA9IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdGlvbk9wdGlvbnNGcm9tQ29uZGl0aW9uKFxuXHRcdFx0XHRcdFx0ZmlsdGVyRmllbGRDb25kaXRpb24sXG5cdFx0XHRcdFx0XHRmaWx0ZXJLZXksXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUhlbHBlclxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKHNlbGVjdE9wdGlvbnMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzYW5pdGl6ZWRGaWx0ZXJLZXkgPSBmaWx0ZXJLZXkucmVwbGFjZSgvXFwqXFwvL2csIFwiLlwiKTtcblx0XHRcdFx0XHRcdC8vIGdldCBwYXJhbWV0ZXJzIGZyb20gZmlsdGVyIGJhclxuXHRcdFx0XHRcdFx0aWYgKHBhcmFtcz8uaW5jbHVkZXMoZmlsdGVyS2V5KSkge1xuXHRcdFx0XHRcdFx0XHQvLyB0cnlpbmcgdG8gZ2VuZXJhdGUgcHJvcGVydGllcyBsaWtlICRQYXJhbWV0ZXIuQ29tcGFueUNvZGUgaWYgQ29tcGFueUNvZGUgaXMgYSBwYXJhbWV0ZXJcblx0XHRcdFx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKGAkUGFyYW1ldGVyLiR7c2FuaXRpemVkRmlsdGVyS2V5fWAsIHNlbGVjdE9wdGlvbnMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKHNhbml0aXplZEZpbHRlcktleSwgc2VsZWN0T3B0aW9ucyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzZWxlY3Rpb25WYXJpYW50O1xuXHR9LFxuXHQvKipcblx0ICogQ29tcGFyZSB0d28gU2VsZWN0T3B0aW9uIG9iamVjdHMgYW5kIGNoZWNrIGlmIHRoZXkgYXJlIGVxdWFsLlxuXHQgKiBAcGFyYW0gb3B0aW9uczEgVGhlIGZpcnN0IFNlbGVjdE9wdGlvbiBvYmplY3Rcblx0ICogQHBhcmFtIG9wdGlvbnMyIFRoZSBzZWNvbmQgU2VsZWN0T3B0aW9uIG9iamVjdFxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlXG5cdCAqL1xuXHRjb21wYXJlU2VsZWN0T3B0aW9uczogZnVuY3Rpb24gKG9wdGlvbnMxOiBTZWxlY3RPcHRpb24sIG9wdGlvbnMyOiBTZWxlY3RPcHRpb24pOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0b3B0aW9uczEuT3B0aW9uID09PSBvcHRpb25zMi5PcHRpb24gJiZcblx0XHRcdG9wdGlvbnMxLlNpZ24gPT09IG9wdGlvbnMyLlNpZ24gJiZcblx0XHRcdG9wdGlvbnMxLkxvdyA9PT0gb3B0aW9uczIuTG93ICYmXG5cdFx0XHRvcHRpb25zMS5IaWdoID09PSBvcHRpb25zMi5IaWdoXG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogTWVyZ2UgdHdvIHNlbGVjdGlvbiB2YXJpYW50cy5cblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQxIFRoZSBmaXJzdCBzZWxlY3Rpb25WYXJpYW50MSBvYmplY3Rcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQyIFRoZSBzZWNvbmQgc2VsZWN0aW9uVmFyaWFudCBvYmplY3Rcblx0ICogQHJldHVybnMgVGhlIG1lcmdlZCBzZWxlY3Rpb25WYXJpYW50XG5cdCAqL1xuXHRtZXJnZVNlbGVjdGlvblZhcmlhbnRzOiBmdW5jdGlvbiAoc2VsZWN0aW9uVmFyaWFudDE6IFNlbGVjdGlvblZhcmlhbnQsIHNlbGVjdGlvblZhcmlhbnQyOiBTZWxlY3Rpb25WYXJpYW50KTogU2VsZWN0aW9uVmFyaWFudCB7XG5cdFx0Ly8gQ3JlYXRlIGEgbmV3IFNlbGVjdGlvblZhcmlhbnQgZm9yIHRoZSBtZXJnZWQgcmVzdWx0LCBpbml0aWFsbHkgYSBjbG9uZSBvZiBTZWxlY3Rpb25WYXJpYW50MVxuXHRcdGNvbnN0IG1lcmdlZFNWID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoc2VsZWN0aW9uVmFyaWFudDEudG9KU09OU3RyaW5nKCkpO1xuXG5cdFx0Ly8gR2V0IHRoZSBwcm9wZXJ0eSBuYW1lcyBmcm9tIFNlbGVjdGlvblZhcmlhbnQyXG5cdFx0Y29uc3QgcHJvcGVydHlOYW1lcyA9IHNlbGVjdGlvblZhcmlhbnQyLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCk7XG5cblx0XHQvLyBLZWVwIHRyYWNrIG9mIGFkZGVkIHByb3BlcnRpZXNcblx0XHRjb25zdCBhZGRlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cblx0XHQvLyBMb29wIHRocm91Z2ggZWFjaCBwcm9wZXJ0eSBpbiBTZWxlY3Rpb25WYXJpYW50MlxuXHRcdGZvciAoY29uc3QgcHJvcE5hbWUgb2YgcHJvcGVydHlOYW1lcykge1xuXHRcdFx0Y29uc3QgY29udHJvbE9wdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50Mi5nZXRTZWxlY3RPcHRpb24ocHJvcE5hbWUpIHx8IFtdO1xuXHRcdFx0Y29uc3QgbWVyZ2VkT3B0aW9ucyA9IG1lcmdlZFNWLmdldFNlbGVjdE9wdGlvbihwcm9wTmFtZSkgfHwgW107XG5cblx0XHRcdC8vIENoZWNrIGlmIHRoZSBwcm9wZXJ0eSBhbHJlYWR5IGV4aXN0cyBpbiBTZWxlY3Rpb25WYXJpYW50MVxuXHRcdFx0aWYgKCFhZGRlZFByb3BlcnRpZXMuaW5jbHVkZXMocHJvcE5hbWUpKSB7XG5cdFx0XHRcdC8vIElmIG5vdCwgYWRkIHRoZSBlbnRpcmUgcHJvcGVydHkgZnJvbSBTZWxlY3Rpb25WYXJpYW50MlxuXHRcdFx0XHRtZXJnZWRTVi5tYXNzQWRkU2VsZWN0T3B0aW9uKHByb3BOYW1lLCBjb250cm9sT3B0aW9ucyk7XG5cdFx0XHRcdGFkZGVkUHJvcGVydGllcy5wdXNoKHByb3BOYW1lKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIElmIGl0IGV4aXN0cyBpbiBTZWxlY3Rpb25WYXJpYW50MSwgb25seSBhZGQgdGhlIG9wdGlvbnMgdGhhdCBhcmUgbm90IGFscmVhZHkgcHJlc2VudFxuXHRcdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2xPcHRpb24gb2YgY29udHJvbE9wdGlvbnMpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHQhbWVyZ2VkT3B0aW9ucy5zb21lKChtZXJnZWRPcHRpb24pID0+XG5cdFx0XHRcdFx0XHRcdHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50LmNvbXBhcmVTZWxlY3RPcHRpb25zKG1lcmdlZE9wdGlvbiwgY29udHJvbE9wdGlvbilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG1lcmdlZE9wdGlvbnMucHVzaChjb250cm9sT3B0aW9uKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0bWVyZ2VkU1YubWFzc0FkZFNlbGVjdE9wdGlvbihwcm9wTmFtZSwgbWVyZ2VkT3B0aW9ucyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1lcmdlZFNWO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gYWRkIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyB0byBzZWxlY3Rpb24gdmFyaWFudC5cblx0ICogQHBhcmFtIHN0YXRlRmlsdGVycyBSZXRyaWV2ZWQgZmlsdGVyIGNvbmRpdGlvbiBmb3IgYSBmaWx0ZXIgZmllbGQgZnJvbSBTdGF0ZVV0aWxzXG5cdCAqIEBwYXJhbSBmaWx0ZXJLZXkgTmFtZSBvZiB0aGUgZmlsdGVyIGtleVxuXHQgKiBAcGFyYW0gcHJvcGVydHlIZWxwZXIgUHJvcGVydHlIZWxwZXIgb2YgdGhlIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVGhlIHNlbGVjdGlvbiBvcHRpb24gYXJyYXkgZm9yIGEgcGFydGljdWxhciBmaWx0ZXIga2V5XG5cdCAqL1xuXHRnZXRTZWxlY3Rpb25PcHRpb25zRnJvbUNvbmRpdGlvbjogZnVuY3Rpb24gKFxuXHRcdHN0YXRlRmlsdGVyczogQ29uZGl0aW9uT2JqZWN0W10sXG5cdFx0ZmlsdGVyS2V5OiBzdHJpbmcsXG5cdFx0cHJvcGVydHlIZWxwZXI6IFByb3BlcnR5SGVscGVyXG5cdCk6IFNlbGVjdE9wdGlvbltdIHtcblx0XHRjb25zdCBzZWxlY3RPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHN0YXRlRmlsdGVycykge1xuXHRcdFx0Y29uc3Qgc2VsZWN0T3B0aW9uID0gc3RhdGVGaWx0ZXJUb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0aW9uT3B0aW9uKGNvbmRpdGlvbiwgZmlsdGVyS2V5LCBwcm9wZXJ0eUhlbHBlcik7XG5cdFx0XHRpZiAoc2VsZWN0T3B0aW9uKSB7XG5cdFx0XHRcdHNlbGVjdE9wdGlvbnMucHVzaChzZWxlY3RPcHRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2VsZWN0T3B0aW9ucztcblx0fSxcblx0LyoqXG5cdCAqIENhbGN1bGF0ZSB0aGUgZmlsdGVyIG9wdGlvbiBmb3IgZWFjaCB2YWx1ZS5cblx0ICogQHBhcmFtIGNvbmRpdGlvblxuXHQgKiBAcGFyYW0gZmlsdGVyS2V5IE5hbWUgb2YgdGhlIGZpbHRlciBrZXlcblx0ICogQHBhcmFtIHByb3BlcnR5SGVscGVyIFByb3BlcnR5SGVscGVyIG9mIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFRoZSBwcm9taXNlIG9mIHRoZSBTZWxlY3Qgb3B0aW9uXG5cdCAqL1xuXHRnZXRTZWxlY3Rpb25PcHRpb246IGZ1bmN0aW9uIChjb25kaXRpb246IENvbmRpdGlvbk9iamVjdCwgZmlsdGVyS2V5OiBzdHJpbmcsIHByb3BlcnR5SGVscGVyOiBQcm9wZXJ0eUhlbHBlcik6IFNlbGVjdE9wdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHNlbWFudGljRGF0ZXM6IFNlbWFudGljRGF0ZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQ7XG5cdFx0bGV0IGZpbHRlck9wdGlvbjogU2VsZWN0T3B0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IG9wZXJhdG9yID0gY29uZGl0aW9uLm9wZXJhdG9yICYmIGNvbmRpdGlvbi5vcGVyYXRvciAhPT0gXCJcIiA/IEZpbHRlck9wZXJhdG9yVXRpbC5nZXRPcGVyYXRvcihjb25kaXRpb24ub3BlcmF0b3IpIDogdW5kZWZpbmVkO1xuXHRcdGlmIChvcGVyYXRvciBpbnN0YW5jZW9mIFJhbmdlT3BlcmF0b3IpIHtcblx0XHRcdHNlbWFudGljRGF0ZXMgPSBzdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudC5jcmVhdGVTZW1hbnRpY0RhdGVzRnJvbUNvbmRpdGlvbnMoY29uZGl0aW9uKTtcblx0XHRcdGZpbHRlck9wdGlvbiA9IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50LmdldE9wdGlvbkZvclByb3BlcnR5V2l0aFJhbmdlT3BlcmF0b3IoXG5cdFx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0XHRjb25kaXRpb24sXG5cdFx0XHRcdGZpbHRlcktleSxcblx0XHRcdFx0cHJvcGVydHlIZWxwZXJcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHNlbWFudGljRGF0ZU9wc0V4dCA9IFNlbWFudGljRGF0ZU9wZXJhdG9ycy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk7XG5cdFx0XHRpZiAoc2VtYW50aWNEYXRlT3BzRXh0LmluY2x1ZGVzKGNvbmRpdGlvbi5vcGVyYXRvcikpIHtcblx0XHRcdFx0c2VtYW50aWNEYXRlcyA9IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50LmNyZWF0ZVNlbWFudGljRGF0ZXNGcm9tQ29uZGl0aW9ucyhjb25kaXRpb24pO1xuXHRcdFx0fVxuXHRcdFx0ZmlsdGVyT3B0aW9uID0gc3RhdGVGaWx0ZXJUb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0aW9uRm9ybWF0Rm9yTm9uUmFuZ2VPcGVyYXRvcihjb25kaXRpb24sIGZpbHRlcktleSk7XG5cdFx0fVxuXHRcdGlmIChmaWx0ZXJPcHRpb24/Lk9wdGlvbikge1xuXHRcdFx0ZmlsdGVyT3B0aW9uLlNlbWFudGljRGF0ZXMgPSBzZW1hbnRpY0RhdGVzID8gc2VtYW50aWNEYXRlcyA6IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0cmV0dXJuIGZpbHRlck9wdGlvbjtcblx0fSxcblx0LyoqXG5cdCAqIENhbGN1bGF0ZSB0aGUgZmlsdGVyIGNvbmRpdGlvbnMgZm9yIHRoZSBTZWxlY3Qgb3B0aW9uLlxuXHQgKiBAcGFyYW0gY29uZGl0aW9uIENvbmRpdGlvbiBvYmplY3Rcblx0ICogQHBhcmFtIGZpbHRlcktleSBOYW1lIG9mIHRoZSBmaWx0ZXIga2V5XG5cdCAqIEByZXR1cm5zIFRoZSBTZWxlY3QgT3B0aW9uIG9iamVjdCBvciB1bmRlZmluZWRcblx0ICovXG5cdGdldFNlbGVjdGlvbkZvcm1hdEZvck5vblJhbmdlT3BlcmF0b3I6IGZ1bmN0aW9uIChjb25kaXRpb246IENvbmRpdGlvbk9iamVjdCwgZmlsdGVyS2V5OiBzdHJpbmcpOiBTZWxlY3RPcHRpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IFtsb3dWYWx1ZSwgaGlnaFZhbHVlXSA9IGNvbmRpdGlvbi52YWx1ZXMgYXMgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKVtdO1xuXHRcdHJldHVybiBzdGF0ZUZpbHRlclRvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb24oXG5cdFx0XHRjb25kaXRpb24ub3BlcmF0b3IsXG5cdFx0XHRsb3dWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGxvd1ZhbHVlICE9PSBudWxsID8gbG93VmFsdWUudG9TdHJpbmcoKSA6IFwiXCIsXG5cdFx0XHRoaWdoVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBoaWdoVmFsdWUgIT09IG51bGwgPyBoaWdoVmFsdWUudG9TdHJpbmcoKSA6IG51bGwsXG5cdFx0XHRmaWx0ZXJLZXlcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHR5cGUtc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqIEBwYXJhbSBmaWx0ZXJLZXkgTmFtZSBvZiB0aGUgZmlsdGVyIGtleVxuXHQgKiBAcGFyYW0gcHJvcGVydHlIZWxwZXIgUHJvcGVydHlIZWxwZXIgYW5kIGZpbHRlciBkZWxlZ2F0ZSBjb250cm9sbGVyIG9mIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVGhlIG9iamVjdCB3aXRoIHR5cGVDb25maWcgdmFsdWVcblx0ICovXG5cdGdldFR5cGVJbmZvRm9yRmlsdGVyUHJvcGVydHk6IGZ1bmN0aW9uIChmaWx0ZXJLZXk6IHN0cmluZywgcHJvcGVydHlIZWxwZXI6IFByb3BlcnR5SGVscGVyKTogVHlwZUNvbmZpZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gZm9yIGZldyBmaWx0ZXIgZmllbGRzIGtleXMgd2lsbCBub3QgYmUgcHJlc2VudCBoZW5jZSBza2lwIHRob3NlIHByb3BlcnRpZXNcblx0XHRjb25zdCBwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUhlbHBlci5nZXRQcm9wZXJ0eShmaWx0ZXJLZXkpIGFzIHVua25vd24gYXMgUHJvcGVydHlJbmZvO1xuXHRcdC8vIFRoaXMgbmVlZHMgdG8gYmUgcmV2aWV3ZWQgYmVjYXVzZSB0aGUgZ2V0UHJvcGVydHkgZnVuY3Rpb24gZnJvbSB0aGUgUHJvcGVydHlIZWxwZXIgZG9lcyBub3QgcmV0dXJuIGEgdHlwZUNvbmZpZ1xuXHRcdGxldCB0eXBlQ29uZmlnOiBUeXBlQ29uZmlnIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChwcm9wZXJ0eUluZm8pIHtcblx0XHRcdHR5cGVDb25maWcgPSBwcm9wZXJ0eUluZm8udHlwZUNvbmZpZztcblx0XHR9XG5cdFx0cmV0dXJuIHR5cGVDb25maWc7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENhbGN1bGF0ZSB0aGUgb3B0aW9ucyBmb3IgZGF0ZSByYW5nZSB2YWx1ZXMuXG5cdCAqIEBwYXJhbSBvcGVyYXRvciBPYmplY3QgZm9yIHRoZSBnaXZlbiBvcGVyYXRvciBuYW1lXG5cdCAqIEBwYXJhbSBjb25kaXRpb24gVGhlIFZhbHVlIG9iamVjdCB0aGF0IGlzIHByZXNlbnQgaW4gdGhlIHZhbHVlcyBvZiB0aGUgZmlsdGVyIGNvbmRpdGlvblxuXHQgKiBAcGFyYW0gZmlsdGVyS2V5IE5hbWUgb2YgdGhlIGZpbHRlciBrZXlcblx0ICogQHBhcmFtIHByb3BlcnR5SGVscGVyIFByb3BlcnR5SGVscGVyIG9mIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVGhlIHNlbGVjdGlvbk9wdGlvbiBmb3IgZmlsdGVyIGZpZWxkXG5cdCAqL1xuXHRnZXRPcHRpb25Gb3JQcm9wZXJ0eVdpdGhSYW5nZU9wZXJhdG9yOiBmdW5jdGlvbiAoXG5cdFx0b3BlcmF0b3I6IE9wZXJhdG9yLFxuXHRcdGNvbmRpdGlvbjogQ29uZGl0aW9uT2JqZWN0LFxuXHRcdGZpbHRlcktleTogc3RyaW5nLFxuXHRcdHByb3BlcnR5SGVscGVyOiBQcm9wZXJ0eUhlbHBlclxuXHQpOiBTZWxlY3RPcHRpb24gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGZpbHRlck9wdGlvbjogU2VsZWN0T3B0aW9uID0ge1xuXHRcdFx0U2lnbjogXCJJXCIsXG5cdFx0XHRPcHRpb246IFwiXCIsXG5cdFx0XHRMb3c6IFwiXCIsXG5cdFx0XHRIaWdoOiBcIlwiXG5cdFx0fTtcblx0XHRjb25zdCB0eXBlQ29uZmlnID0gc3RhdGVGaWx0ZXJUb1NlbGVjdGlvblZhcmlhbnQuZ2V0VHlwZUluZm9Gb3JGaWx0ZXJQcm9wZXJ0eShmaWx0ZXJLZXksIHByb3BlcnR5SGVscGVyKTtcblxuXHRcdC8vIGhhbmRsaW5nIG9mIERhdGUgUmFuZ2VPcGVyYXRvcnNcblx0XHRjb25zdCBtb2RlbEZpbHRlciA9IG9wZXJhdG9yLmdldE1vZGVsRmlsdGVyKFxuXHRcdFx0Y29uZGl0aW9uLFxuXHRcdFx0ZmlsdGVyS2V5LFxuXHRcdFx0KHR5cGVDb25maWcgPyB0eXBlQ29uZmlnLnR5cGVJbnN0YW5jZSA6IHVuZGVmaW5lZCkgYXMgdW5rbm93biBhcyBUeXBlLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHR0eXBlQ29uZmlnID8gdHlwZUNvbmZpZy5iYXNlVHlwZSA6IHVuZGVmaW5lZFxuXHRcdCk7XG5cdFx0Y29uc3QgZmlsdGVyczogRmlsdGVyW10gfCB1bmRlZmluZWQgPSBtb2RlbEZpbHRlci5nZXRGaWx0ZXJzKCk7XG5cdFx0aWYgKGZpbHRlcnMgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0ZmlsdGVyT3B0aW9uLlNpZ24gPSBvcGVyYXRvci5leGNsdWRlID8gXCJFXCIgOiBcIklcIjtcblx0XHRcdC8vIEZJWE1FIFRob3NlIGFyZSBwcml2YXRlIG1ldGhvZHMgZnJvbSBNRENcblx0XHRcdGZpbHRlck9wdGlvbi5Mb3cgPSBUeXBlTWFwLmV4dGVybmFsaXplVmFsdWUobW9kZWxGaWx0ZXIuZ2V0VmFsdWUxKCksIHR5cGVDb25maWcgPyB0eXBlQ29uZmlnLnR5cGVJbnN0YW5jZSA6IFwic3RyaW5nXCIpO1xuXHRcdFx0ZmlsdGVyT3B0aW9uLkhpZ2ggPSBUeXBlTWFwLmV4dGVybmFsaXplVmFsdWUobW9kZWxGaWx0ZXIuZ2V0VmFsdWUyKCksIHR5cGVDb25maWcgPyB0eXBlQ29uZmlnLnR5cGVJbnN0YW5jZSA6IFwic3RyaW5nXCIpO1xuXHRcdFx0ZmlsdGVyT3B0aW9uLk9wdGlvbiA9IG1vZGVsRmlsdGVyLmdldE9wZXJhdG9yKCkgPz8gXCJcIjtcblx0XHR9XG5cdFx0cmV0dXJuIGZpbHRlck9wdGlvbi5PcHRpb24gIT0gXCJcIiA/IGZpbHRlck9wdGlvbiA6IHVuZGVmaW5lZDtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHNpZ24gYW5kIG9wdGlvbiBvZiBzZWxlY3Rpb24gb3B0aW9uLlxuXHQgKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wdGlvbiBvZiBzZWxlY3Rpb24gdmFyaWFudFxuXHQgKiBAcGFyYW0gbG93VmFsdWUgVGhlIHNpbmdsZSB2YWx1ZSBvciB0aGUgbG93ZXIgYm91bmRhcnkgb2YgdGhlIGludGVydmFsOyB0aGUgPGNvZGU+bnVsbDwvY29kZT4gdmFsdWUgaXMgbm90IGFsbG93ZWRcblx0ICogQHBhcmFtIGhpZ2hWYWx1ZSBUaGUgSGlnaCB2YWx1ZSBvZiB0aGUgcmFuZ2U7IGlmIHRoaXMgdmFsdWUgaXMgbm90IG5lY2Vzc2FyeSwgPGNvZGU+bnVsbDwvY29kZT4gaXMgdXNlZDwvbGk+XG5cdCAqIEBwYXJhbSBmaWx0ZXJLZXkgVGhlIG5hbWUgb2YgdGhlIGZpbHRlciBmaWVsZFxuXHQgKiBAcmV0dXJucyBUaGUgc2VsZWN0aW9uIHN0YXRlXG5cdCAqL1xuXHRnZXRTZWxlY3RPcHRpb246IGZ1bmN0aW9uIChvcGVyYXRvcjogc3RyaW5nLCBsb3dWYWx1ZTogc3RyaW5nLCBoaWdoVmFsdWU6IHN0cmluZyB8IG51bGwsIGZpbHRlcktleTogc3RyaW5nKTogU2VsZWN0T3B0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzZWxlY3RPcHRpb25TdGF0ZSA9IHtcblx0XHRcdE9wdGlvbjogXCJcIixcblx0XHRcdFNpZ246IFwiSVwiLFxuXHRcdFx0TG93OiBsb3dWYWx1ZSxcblx0XHRcdEhpZ2g6IGhpZ2hWYWx1ZVxuXHRcdH07XG5cdFx0c3dpdGNoIChvcGVyYXRvcikge1xuXHRcdFx0Y2FzZSBcIkNvbnRhaW5zXCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiA9IFwiQ1BcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuTG93ID0gYCoke3NlbGVjdE9wdGlvblN0YXRlLkxvd30qYDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiU3RhcnRzV2l0aFwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkNQXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLkxvdyArPSBcIipcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRW5kc1dpdGhcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJDUFwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5Mb3cgPSBgKiR7c2VsZWN0T3B0aW9uU3RhdGUuTG93fWA7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkJUXCI6XG5cdFx0XHRjYXNlIFwiTEVcIjpcblx0XHRcdGNhc2UgXCJMVFwiOlxuXHRcdFx0Y2FzZSBcIkdUXCI6XG5cdFx0XHRjYXNlIFwiR0VcIjpcblx0XHRcdGNhc2UgXCJFUVwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBvcGVyYXRvcjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiREFURVwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkVRXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkRBVEVSQU5HRVwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkJUXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkZST01cIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJHRVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJUT1wiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkxFXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkVFUVwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkVRXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkVtcHR5XCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiA9IFwiRVFcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuTG93ID0gXCJcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTkVcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuU2lnbiA9IFwiRVwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkVRXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIk5vdENvbnRhaW5zXCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiA9IFwiQ1BcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuU2lnbiA9IFwiRVwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5Mb3cgPSBgKiR7c2VsZWN0T3B0aW9uU3RhdGUuTG93fSpgO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOT1RCVFwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkJUXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLlNpZ24gPSBcIkVcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTm90U3RhcnRzV2l0aFwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkNQXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLkxvdyArPSBcIipcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuU2lnbiA9IFwiRVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOb3RFbmRzV2l0aFwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkNQXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLkxvdyA9IGAqJHtzZWxlY3RPcHRpb25TdGF0ZS5Mb3d9YDtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuU2lnbiA9IFwiRVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOb3RFbXB0eVwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkVRXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLkxvdyA9IFwiXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLlNpZ24gPSBcIkVcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTk9UTEVcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJMRVwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5TaWduID0gXCJFXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIk5PVEdFXCI6XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiA9IFwiR0VcIjtcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuU2lnbiA9IFwiRVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJOT1RMVFwiOlxuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5PcHRpb24gPSBcIkxUXCI7XG5cdFx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLlNpZ24gPSBcIkVcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiTk9UR1RcIjpcblx0XHRcdFx0c2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uID0gXCJHVFwiO1xuXHRcdFx0XHRzZWxlY3RPcHRpb25TdGF0ZS5TaWduID0gXCJFXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0TG9nLndhcm5pbmcoYCR7b3BlcmF0b3J9IGlzIG5vdCBzdXBwb3J0ZWQuICR7ZmlsdGVyS2V5fSBjb3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIFNlbGVjdGlvbiB2YXJpYW50YCk7XG5cdFx0fVxuXG5cdFx0aWYgKHNlbGVjdE9wdGlvblN0YXRlLk9wdGlvbiAhPT0gXCJCVFwiKSB7XG5cdFx0XHQvLyBDbGVhbnVwIHRvIGF2b2lkIGV4Y2VwdGlvbnNcblx0XHRcdHNlbGVjdE9wdGlvblN0YXRlLkhpZ2ggPSBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gc2VsZWN0T3B0aW9uU3RhdGUuT3B0aW9uICE9PSBcIlwiID8gc2VsZWN0T3B0aW9uU3RhdGUgOiB1bmRlZmluZWQ7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENyZWF0ZSB0aGUgc2VtYW50aWMgZGF0ZXMgZnJvbSBmaWx0ZXIgY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGNvbmRpdGlvbiBGaWx0ZXIgZmllbGQgY29uZGl0aW9uXG5cdCAqIEByZXR1cm5zIFRoZSBTZW1hbnRpYyBkYXRlIGNvbmRpdGlvbnNcblx0ICovXG5cdGNyZWF0ZVNlbWFudGljRGF0ZXNGcm9tQ29uZGl0aW9uczogZnVuY3Rpb24gKGNvbmRpdGlvbjogQ29uZGl0aW9uT2JqZWN0KTogU2VtYW50aWNEYXRlQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKCFpc0VtcHR5T2JqZWN0KGNvbmRpdGlvbikpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGhpZ2g6IGNvbmRpdGlvbi52YWx1ZXNbMF0gIT09IHVuZGVmaW5lZCAmJiBjb25kaXRpb24udmFsdWVzWzBdICE9PSBudWxsID8gKGNvbmRpdGlvbi52YWx1ZXNbMF0gYXMgc3RyaW5nKSA6IG51bGwsXG5cdFx0XHRcdGxvdzogY29uZGl0aW9uLnZhbHVlc1sxXSAhPT0gdW5kZWZpbmVkICYmIGNvbmRpdGlvbi52YWx1ZXNbMV0gIT09IG51bGwgPyAoY29uZGl0aW9uLnZhbHVlc1sxXSBhcyBzdHJpbmcpIDogbnVsbCxcblx0XHRcdFx0b3BlcmF0b3I6IGNvbmRpdGlvbi5vcGVyYXRvclxuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBZ0JBLE1BQU1BLDZCQUE2QixHQUFHO0lBQ3JDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLGlDQUFpQyxFQUFFLFNBQUFBLENBQ2xDQyxnQkFBK0QsRUFDL0RDLGNBQThCLEVBQzlCQyxNQUFpQixFQUNFO01BQ25CLE1BQU1DLGdCQUFnQixHQUFHLElBQUlDLGdCQUFnQixDQUFDLENBQUM7TUFDL0MsSUFBSSxDQUFDQyxhQUFhLENBQUNMLGdCQUFnQixDQUFDLEVBQUU7UUFDckMsS0FBSyxNQUFNTSxTQUFTLElBQUlOLGdCQUFnQixFQUFFO1VBQ3pDLE1BQU1PLG9CQUFvQixHQUFHUCxnQkFBZ0IsQ0FBQ00sU0FBUyxDQUFDO1VBQ3hELElBQUlDLG9CQUFvQixFQUFFQyxNQUFNLEVBQUU7WUFDakMsTUFBTUMsYUFBYSxHQUFHWCw2QkFBNkIsQ0FBQ1ksZ0NBQWdDLENBQ25GSCxvQkFBb0IsRUFDcEJELFNBQVMsRUFDVEwsY0FDRCxDQUFDO1lBQ0QsSUFBSVEsYUFBYSxDQUFDRCxNQUFNLEVBQUU7Y0FDekIsTUFBTUcsa0JBQWtCLEdBQUdMLFNBQVMsQ0FBQ00sT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7Y0FDMUQ7Y0FDQSxJQUFJVixNQUFNLEVBQUVXLFFBQVEsQ0FBQ1AsU0FBUyxDQUFDLEVBQUU7Z0JBQ2hDO2dCQUNBSCxnQkFBZ0IsQ0FBQ1csbUJBQW1CLENBQUMs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
@@ -268,6 +268,7 @@ const stateFilterToSelectionVariant = {
268
268
  case "LE":
269
269
  case "LT":
270
270
  case "GT":
271
+ case "GE":
271
272
  case "EQ":
272
273
  selectOptionState.Option = operator;
273
274
  break;
@@ -75,7 +75,20 @@ M_COMMON_TABLE_FULLSCREEN_CLOSE=Close
75
75
  M_COMMON_TABLE_CONTEXT_MENU_OPEN_IN_NEW_TAB=Open in New Tab or Window
76
76
 
77
77
  # XMSG,150
78
- T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=You can only open up to {0} items at the same time.
78
+ T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=You''ve exceeded the number of objects that can be opened at the same time (maximum: {0}).
79
+
80
+ # XMSG,200: Confirmation dialog when multiple items are selected for navigation and some of them are not navigable
81
+ T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_SINGULAR=You can''t navigate to all the selected objects.\n\
82
+ Selected: {0}.\n\
83
+ Available: {1} (limit: {2}).\n\
84
+ Do you still want to open the available object?
85
+
86
+ # XMSG,200: Confirmation dialog when multiple items are selected for navigation and some of them are not navigable
87
+ T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_PLURAL=You can''t navigate to all the selected objects.\n\
88
+ Selected: {0}.\n\
89
+ Available: {1} (limit: {2}).\n\
90
+ Do you still want to open the available objects?
91
+
79
92
 
80
93
  # XBUT, 100: Context menu item for sharing table lineitem in SAP Collaboration Manager
81
94
  M_COMMON_TABLE_CONTEXT_MENU_SHARE_TO_COLLABORATION_MANAGER=Share to SAP Collaboration Manager
@@ -440,7 +453,7 @@ SUMMARIZE=Summarize
440
453
 
441
454
  # ------------------------ Error explanation --------------------
442
455
  # XBUT: Link for triggering the error explanation
443
- C_GENERATE_EXPLANATION=Explain Error
456
+ C_GENERATE_EXPLANATION=Explain
444
457
 
445
458
  # ------------------------ COLLABORATION MANAGER --------------------
446
459
  # XBUT,30: Text for send button to collaboration manager
@@ -845,3 +858,8 @@ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}: {1}
845
858
  T_APP_HOME=Home
846
859
 
847
860
  M_PASTABLE_CONTEXTS_NOT_AVAILABLE=The content isn't available for pasting anymore. Check if the original placement is expanded and visible.
861
+
862
+ # XFLD: Text for the Yes option in the RadioButtonGroup when editing a boolean field
863
+ T_RADIOBUTTONS_BOOLEAN_YES=Yes
864
+ # XFLD: Text for the No option in the RadioButtonGroup when editing a boolean field
865
+ T_RADIOBUTTONS_BOOLEAN_NO=No
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=\u0627\u0644\u0639\u0646\u0648\u0627\u0646
288
288
 
289
289
  SUMMARIZE=\u062A\u0644\u062E\u064A\u0635
290
290
 
291
- C_GENERATE_EXPLANATION=\u0625\u0646\u0634\u0627\u0621 \u062A\u0648\u0636\u064A\u062D
291
+ C_GENERATE_EXPLANATION=\u0634\u0631\u062D
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=\u0625\u0631\u0633\u0627\u0644
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=\u0410\u0434\u0440\u0435\u0441
288
288
 
289
289
  SUMMARIZE=\u041E\u0431\u043E\u0431\u0449\u0435\u043D\u0438\u0435
290
290
 
291
- C_GENERATE_EXPLANATION=\u0413\u0435\u043D\u0435\u0440\u0438\u0440\u0430\u043D\u0435 \u043D\u0430 \u043E\u0431\u044F\u0441\u043D\u0435\u043D\u0438\u0435
291
+ C_GENERATE_EXPLANATION=\u041E\u0431\u044F\u0441\u043D\u0435\u043D\u0438\u0435
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=\u0418\u0437\u043F\u0440\u0430\u0449\u0430\u043D\u0435
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Adre\u00E7a
288
288
 
289
289
  SUMMARIZE=Resumir
290
290
 
291
- C_GENERATE_EXPLANATION=Generar explicaci\u00F3
291
+ C_GENERATE_EXPLANATION=Explicar
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Enviar
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Adresa
288
288
 
289
289
  SUMMARIZE=Sa\u017Emi
290
290
 
291
- C_GENERATE_EXPLANATION=Generi\u0161i obja\u0161njenje
291
+ C_GENERATE_EXPLANATION=Objasni
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Po\u0161alji
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Adresa
288
288
 
289
289
  SUMMARIZE=Shrnout
290
290
 
291
- C_GENERATE_EXPLANATION=Generovat vysv\u011Btlen\u00ED
291
+ C_GENERATE_EXPLANATION=Vysv\u011Btlit
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Odeslat
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Cyfeiriad
288
288
 
289
289
  SUMMARIZE=Crynhoi
290
290
 
291
- C_GENERATE_EXPLANATION=Creu Esboniad
291
+ C_GENERATE_EXPLANATION=Egluro
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Anfon
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Adresse
288
288
 
289
289
  SUMMARIZE=Lav sammendrag
290
290
 
291
- C_GENERATE_EXPLANATION=Generer forklaring
291
+ C_GENERATE_EXPLANATION=Forklar
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Send
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Adresse
288
288
 
289
289
  SUMMARIZE=Zusammenfassen
290
290
 
291
- C_GENERATE_EXPLANATION=Erkl\u00E4rung generieren
291
+ C_GENERATE_EXPLANATION=Erkl\u00E4ren
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Senden
294
294
 
@@ -550,11 +550,11 @@ C_EASYEDIT_REMAINING_CHARACTERS={0} Zeichen verbleibend
550
550
 
551
551
  C_EASYEDIT_DIALOG_NO_ENTRIES_TITLE=Keine Felder ausgef\u00FCllt
552
552
 
553
- C_EASYEDIT_DIALOG_NO_ENTRIES_DESCRIPTION=We couldn\u2019t match your query to any of the existing fields.
553
+ C_EASYEDIT_DIALOG_NO_ENTRIES_DESCRIPTION=Ihre Anfrage konnte keinem der vorhandenen Felder zugeordnet werden.
554
554
 
555
555
  C_EASYEDIT_DIALOG_ERROR_TITLE=Felder konnten nicht ausgef\u00FCllt werden
556
556
 
557
- C_EASYEDIT_DIALOG_ERROR_DESCRIPTION=It looks like an error occurred. Try again and if that doesn\u2019t help, check with your administrator.
557
+ C_EASYEDIT_DIALOG_ERROR_DESCRIPTION=Leider ist ein Fehler aufgetreten. Versuchen Sie es bitte erneut. Wenn das nicht hilft, fragen Sie Ihren Administrator.
558
558
 
559
559
  C_EASYEDIT_DIALOG_WARNING_MSG=Die Felder konnten nicht ausgef\u00FCllt werden. Das kann daran liegen, dass die Felder schreibgesch\u00FCtzt sind, oder daran, dass Sie keine Berechtigung zum \u00C4ndern der Felder haben.
560
560
 
@@ -572,4 +572,4 @@ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}\: {1}
572
572
 
573
573
  T_APP_HOME=Startseite
574
574
 
575
- M_PASTABLE_CONTEXTS_NOT_AVAILABLE=The content isn't available for pasting anymore. Check if the original placement is expanded and visible.
575
+ M_PASTABLE_CONTEXTS_NOT_AVAILABLE=Der Inhalt ist nicht mehr zum Einf\u00FCgen verf\u00FCgbar. Pr\u00FCfen Sie, ob er am ursp\u00FCnglichen Ort expandiert und sichtbar ist.
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=\u0394\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03
288
288
 
289
289
  SUMMARIZE=\u03A3\u03CD\u03BD\u03BF\u03C8\u03B7
290
290
 
291
- C_GENERATE_EXPLANATION=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u0395\u03C0\u03B5\u03BE\u03AE\u03B3\u03B7\u03C3\u03B7\u03C2
291
+ C_GENERATE_EXPLANATION=\u0395\u03C0\u03B5\u03BE\u03AE\u03B3\u03B7\u03C3\u03B7
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=\u0391\u03C0\u03BF\u03C3\u03C4\u03BF\u03BB\u03AE
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Address
288
288
 
289
289
  SUMMARIZE=Summarize
290
290
 
291
- C_GENERATE_EXPLANATION=Generate Explanation
291
+ C_GENERATE_EXPLANATION=Explain
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Send
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Address
288
288
 
289
289
  SUMMARIZE=Summarise
290
290
 
291
- C_GENERATE_EXPLANATION=Generate Explanation
291
+ C_GENERATE_EXPLANATION=Explain
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Send
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=\u206A\u206A\u206A\u200D\u200D\u200B\u200C\u200B\u20
288
288
 
289
289
  SUMMARIZE=\u206A\u206A\u206A\u200C\u200D\u200C\u200B\u200B\u200D\u200D\u200B\u200B\u200B\u200C\u200B\u200D\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u200D\u200B\u200C\u200D\u200D\u200C\u200C\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200B\u200B\u200B\u200C\u200C\u206ASummarize\u206A\u206A
290
290
 
291
- C_GENERATE_EXPLANATION=\u206A\u206A\u206A\u200C\u200B\u200D\u200B\u200C\u200B\u200B\u200B\u200D\u200D\u200B\u200B\u200B\u200C\u200B\u200D\u200C\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200B\u200D\u200D\u200C\u200B\u200C\u200B\u200B\u200C\u200B\u200D\u200C\u200C\u200C\u206AGenerate Explanation\u206A\u206A
291
+ C_GENERATE_EXPLANATION=\u206A\u206A\u206A\u200C\u200B\u200D\u200B\u200C\u200B\u200B\u200B\u200D\u200D\u200B\u200B\u200B\u200C\u200B\u200D\u200C\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200B\u200D\u200D\u200C\u200B\u200C\u200B\u200B\u200C\u200B\u200D\u200C\u200C\u200C\u206AExplain\u206A\u206A
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=\u206A\u206A\u206A\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200D\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200B\u200D\u200D\u200C\u200B\u200D\u200D\u200D\u200D\u200D\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u206ASend\u206A\u206A
294
294
 
@@ -37,7 +37,7 @@ T_COMMON_PROGRESS_INDICATOR_DISPLAY_VALUE_WITH_UOM={0} de {1} {2}
37
37
 
38
38
  M_COMMON_TABLE_CREATE=Crear
39
39
 
40
- M_COMMON_TABLE_DELETE=Eliminar
40
+ M_COMMON_TABLE_DELETE=Borrar
41
41
 
42
42
  M_COMMON_TABLE_MASSEDIT=Editar
43
43
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Direcci\u00F3n
288
288
 
289
289
  SUMMARIZE=Resumir
290
290
 
291
- C_GENERATE_EXPLANATION=Generar explicaci\u00F3n
291
+ C_GENERATE_EXPLANATION=Explicar
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Enviar
294
294
 
@@ -288,7 +288,7 @@ POPOVER_CONTACT_SECTION_ADR=Direcci\u00F3n
288
288
 
289
289
  SUMMARIZE=Resumir
290
290
 
291
- C_GENERATE_EXPLANATION=Generar explicaci\u00F3n
291
+ C_GENERATE_EXPLANATION=Explicar
292
292
 
293
293
  C_SEND_TO_COLLABORATION_MANAGER=Enviar
294
294