@sapui5/sap.fe.core 1.95.0 → 1.96.4

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 (160) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +3 -3
  4. package/src/sap/fe/core/AppComponent.js +7 -43
  5. package/src/sap/fe/core/AppStateHandler.js +18 -4
  6. package/src/sap/fe/core/BaseController.js +1 -1
  7. package/src/sap/fe/core/BusyLocker.js +13 -1
  8. package/src/sap/fe/core/CommonUtils.js +136 -19
  9. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  10. package/src/sap/fe/core/PageController.js +1 -33
  11. package/src/sap/fe/core/RouterProxy.js +59 -69
  12. package/src/sap/fe/core/Synchronization.js +1 -1
  13. package/src/sap/fe/core/TemplateComponent.js +3 -3
  14. package/src/sap/fe/core/TemplateModel.js +1 -1
  15. package/src/sap/fe/core/TransactionHelper.js +87 -6
  16. package/src/sap/fe/core/actions/draft.js +1 -1
  17. package/src/sap/fe/core/actions/messageHandling.js +1 -1
  18. package/src/sap/fe/core/actions/nonDraft.js +1 -1
  19. package/src/sap/fe/core/actions/operations.js +22 -3
  20. package/src/sap/fe/core/actions/sticky.js +1 -1
  21. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +1 -1
  22. package/src/sap/fe/core/controllerextensions/EditFlow.js +74 -48
  23. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
  24. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +5 -4
  25. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +64 -28
  26. package/src/sap/fe/core/controllerextensions/InternalRouting.js +194 -223
  27. package/src/sap/fe/core/controllerextensions/KPIManagement.js +460 -207
  28. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +475 -213
  29. package/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
  30. package/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  31. package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -7
  32. package/src/sap/fe/core/controllerextensions/Paginator.js +4 -5
  33. package/src/sap/fe/core/controllerextensions/Placeholder.js +11 -17
  34. package/src/sap/fe/core/controllerextensions/Routing.js +1 -1
  35. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  36. package/src/sap/fe/core/controllerextensions/Share.js +20 -7
  37. package/src/sap/fe/core/controllerextensions/SideEffects.js +2 -3
  38. package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -12
  39. package/src/sap/fe/core/controllerextensions/ViewState.js +21 -3
  40. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +39 -34
  41. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
  42. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  43. package/src/sap/fe/core/controls/ConditionalWrapper.js +1 -1
  44. package/src/sap/fe/core/controls/CustomQuickViewPage.js +4 -1
  45. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
  46. package/src/sap/fe/core/controls/FieldWrapper.js +1 -1
  47. package/src/sap/fe/core/controls/FilterBar.js +1 -1
  48. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  49. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
  50. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +1 -1
  51. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
  52. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +1 -1
  53. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
  54. package/src/sap/fe/core/converters/MetaModelConverter.js +852 -881
  55. package/src/sap/fe/core/converters/MetaModelConverter.ts +761 -849
  56. package/src/sap/fe/core/converters/annotations/DataField.js +52 -2
  57. package/src/sap/fe/core/converters/annotations/DataField.ts +52 -2
  58. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -3
  59. package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -2
  60. package/src/sap/fe/core/converters/controls/Common/Form.js +16 -8
  61. package/src/sap/fe/core/converters/controls/Common/Form.ts +9 -3
  62. package/src/sap/fe/core/converters/controls/Common/KPI.js +271 -253
  63. package/src/sap/fe/core/converters/controls/Common/KPI.ts +287 -291
  64. package/src/sap/fe/core/converters/controls/Common/Table.js +196 -102
  65. package/src/sap/fe/core/converters/controls/Common/Table.ts +240 -109
  66. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +15 -7
  67. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +27 -6
  68. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  69. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +2 -2
  70. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  71. package/src/sap/fe/core/converters/helpers/ID.ts +2 -2
  72. package/src/sap/fe/core/converters/helpers/IssueManager.js +4 -5
  73. package/src/sap/fe/core/converters/helpers/IssueManager.ts +3 -4
  74. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +2 -2
  75. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +1 -1
  76. package/src/sap/fe/core/converters/templates/ListReportConverter.js +20 -1
  77. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +25 -1
  78. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +2 -5
  79. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +1 -2
  80. package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
  81. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  82. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  83. package/src/sap/fe/core/fpm/Component.js +2 -2
  84. package/src/sap/fe/core/helpers/BindingExpression.js +34 -2
  85. package/src/sap/fe/core/helpers/BindingExpression.ts +24 -1
  86. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  87. package/src/sap/fe/core/helpers/EditState.js +1 -1
  88. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -3
  89. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  90. package/src/sap/fe/core/helpers/ModelHelper.js +13 -1
  91. package/src/sap/fe/core/helpers/PasteHelper.js +7 -1
  92. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  93. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  94. package/src/sap/fe/core/helpers/StableIdHelper.js +2 -2
  95. package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
  96. package/src/sap/fe/core/library.js +2 -2
  97. package/src/sap/fe/core/library.support.js +1 -1
  98. package/src/sap/fe/core/messagebundle.properties +18 -3
  99. package/src/sap/fe/core/messagebundle_ar.properties +8 -3
  100. package/src/sap/fe/core/messagebundle_bg.properties +8 -3
  101. package/src/sap/fe/core/messagebundle_ca.properties +9 -4
  102. package/src/sap/fe/core/messagebundle_cs.properties +8 -3
  103. package/src/sap/fe/core/messagebundle_cy.properties +8 -3
  104. package/src/sap/fe/core/messagebundle_da.properties +8 -3
  105. package/src/sap/fe/core/messagebundle_de.properties +8 -3
  106. package/src/sap/fe/core/messagebundle_el.properties +8 -3
  107. package/src/sap/fe/core/messagebundle_en.properties +5 -0
  108. package/src/sap/fe/core/messagebundle_en_GB.properties +5 -0
  109. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +5 -0
  110. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -2
  111. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +12 -0
  112. package/src/sap/fe/core/messagebundle_es.properties +8 -3
  113. package/src/sap/fe/core/messagebundle_es_MX.properties +9 -4
  114. package/src/sap/fe/core/messagebundle_et.properties +8 -3
  115. package/src/sap/fe/core/messagebundle_fi.properties +8 -3
  116. package/src/sap/fe/core/messagebundle_fr.properties +8 -3
  117. package/src/sap/fe/core/messagebundle_fr_CA.properties +8 -3
  118. package/src/sap/fe/core/messagebundle_hi.properties +8 -3
  119. package/src/sap/fe/core/messagebundle_hr.properties +8 -3
  120. package/src/sap/fe/core/messagebundle_hu.properties +8 -3
  121. package/src/sap/fe/core/messagebundle_id.properties +7 -2
  122. package/src/sap/fe/core/messagebundle_it.properties +8 -3
  123. package/src/sap/fe/core/messagebundle_iw.properties +8 -3
  124. package/src/sap/fe/core/messagebundle_ja.properties +8 -3
  125. package/src/sap/fe/core/messagebundle_kk.properties +8 -3
  126. package/src/sap/fe/core/messagebundle_ko.properties +8 -3
  127. package/src/sap/fe/core/messagebundle_lt.properties +8 -3
  128. package/src/sap/fe/core/messagebundle_lv.properties +8 -3
  129. package/src/sap/fe/core/messagebundle_ms.properties +8 -3
  130. package/src/sap/fe/core/messagebundle_nl.properties +8 -3
  131. package/src/sap/fe/core/messagebundle_no.properties +8 -3
  132. package/src/sap/fe/core/messagebundle_pl.properties +8 -3
  133. package/src/sap/fe/core/messagebundle_pt.properties +8 -3
  134. package/src/sap/fe/core/messagebundle_pt_PT.properties +8 -3
  135. package/src/sap/fe/core/messagebundle_ro.properties +8 -3
  136. package/src/sap/fe/core/messagebundle_ru.properties +8 -3
  137. package/src/sap/fe/core/messagebundle_sh.properties +8 -3
  138. package/src/sap/fe/core/messagebundle_sk.properties +8 -3
  139. package/src/sap/fe/core/messagebundle_sl.properties +8 -3
  140. package/src/sap/fe/core/messagebundle_sv.properties +8 -3
  141. package/src/sap/fe/core/messagebundle_th.properties +8 -3
  142. package/src/sap/fe/core/messagebundle_tr.properties +8 -3
  143. package/src/sap/fe/core/messagebundle_uk.properties +8 -3
  144. package/src/sap/fe/core/messagebundle_vi.properties +8 -3
  145. package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -3
  146. package/src/sap/fe/core/messagebundle_zh_TW.properties +8 -3
  147. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  148. package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  149. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  150. package/src/sap/fe/core/services/RoutingServiceFactory.js +70 -33
  151. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +2 -2
  152. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
  153. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  154. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  155. package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -14
  156. package/src/sap/fe/core/templating/DataModelPathHelper.ts +3 -10
  157. package/src/sap/fe/core/templating/EntitySetHelper.js +13 -3
  158. package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -0
  159. package/src/sap/fe/core/templating/UIFormatters.js +39 -1
  160. package/src/sap/fe/core/templating/UIFormatters.ts +73 -1
@@ -1013,6 +1013,9 @@ export function equal<T extends PrimitiveType>(
1013
1013
  // ((a === c) === true) => (a === c)
1014
1014
  if (leftExpression._type === "Comparison" && isConstant(rightExpression) && rightExpression.value === true) {
1015
1015
  return leftExpression;
1016
+ } else if (rightExpression._type === "Comparison" && isConstant(leftExpression) && leftExpression.value === true) {
1017
+ // (true === (a === c)) => (a === c)
1018
+ return rightExpression;
1016
1019
  } else if (leftExpression._type === "Comparison" && isConstant(rightExpression) && rightExpression.value === true) {
1017
1020
  // ((a === c) === false) => !(a === c)
1018
1021
  return not(leftExpression);
@@ -1513,6 +1516,9 @@ export function transformRecursively<T extends PrimitiveType | unknown>(
1513
1516
 
1514
1517
  export type BindingExpression<T> = T | string | undefined;
1515
1518
 
1519
+ const needParenthesis = function<T extends PrimitiveType>(expr: ExpressionOrPrimitive<T>): boolean {
1520
+ return !isConstant(expr) && !isBinding(expr) && isExpression(expr) && expr._type !== "IfElse" && expr._type !== "Function";
1521
+ };
1516
1522
  /**
1517
1523
  * Compile an expression into an expression binding.
1518
1524
  *
@@ -1624,7 +1630,24 @@ export function compileBinding<T extends PrimitiveType>(
1624
1630
  }
1625
1631
 
1626
1632
  case "Comparison":
1627
- const comparisonPart = `${compileBinding(expr.operand1, true)} ${expr.operator} ${compileBinding(expr.operand2, true)}`;
1633
+ const isOperand1Complex = needParenthesis(expr.operand1);
1634
+ const isOperand2Complex = needParenthesis(expr.operand2);
1635
+ let comparisonPart = "";
1636
+ if (isOperand1Complex) {
1637
+ comparisonPart += "(";
1638
+ }
1639
+ comparisonPart += `${compileBinding(expr.operand1, true)}`;
1640
+ if (isOperand1Complex) {
1641
+ comparisonPart += ")";
1642
+ }
1643
+ comparisonPart += ` ${expr.operator} `;
1644
+ if (isOperand2Complex) {
1645
+ comparisonPart += "(";
1646
+ }
1647
+ comparisonPart += `${compileBinding(expr.operand2, true)}`;
1648
+ if (isOperand2Complex) {
1649
+ comparisonPart += ")";
1650
+ }
1628
1651
  if (embeddedInBinding) {
1629
1652
  return comparisonPart;
1630
1653
  }
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
  sap.ui.define(["sap/ui/base/BindingParser"], function(BindingParser) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  sap.ui.define(["sap/base/Log"], function(Log) {
@@ -1,10 +1,9 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
  sap.ui.define(["sap/ui/core/format/DateFormat"], function(DateFormat) {
6
6
  "use strict";
7
-
8
7
  var ExcelFormatHelper = {
9
8
  /**
10
9
  * Method for converting JS Date format to Excel custom date format.
@@ -44,7 +43,6 @@ sap.ui.define(["sap/ui/core/format/DateFormat"], function(DateFormat) {
44
43
  if (sJSTimeFormat && sJSTimeFormat.includes("a")) {
45
44
  sJSTimeFormat = sJSTimeFormat.replace("a", "AM/PM");
46
45
  }
47
-
48
46
  return sJSTimeFormat;
49
47
  }
50
48
  };
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
  sap.ui.define(["sap/fe/core/CommonUtils", "sap/base/util/ObjectPath"], function(CommonUtils, ObjectPath) {
6
6
  "use strict";
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
  sap.ui.define([], function() {
6
6
  "use strict";
@@ -110,6 +110,18 @@ sap.ui.define([], function() {
110
110
  );
111
111
  },
112
112
 
113
+ /**
114
+ * Gets the path for the items property of MultiValueField parameters.
115
+ *
116
+ * @function
117
+ * @name getActionParameterItemsModelPath
118
+ * @param {object} oParameter Action Parameter
119
+ * @returns {string} Returns the complete model path for the items property of MultiValueField parameters
120
+ */
121
+ getActionParameterItemsModelPath: function(oParameter) {
122
+ return oParameter && oParameter.$Name ? "{path: 'mvfview>/" + oParameter.$Name + "'}" : undefined;
123
+ },
124
+
113
125
  filterOutNavPropBinding: function(sPathPart) {
114
126
  return sPathPart !== "" && sPathPart !== "$NavigationPropertyBinding";
115
127
  },
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox"], function(CorePasteHelper, MessageBox) {
@@ -74,6 +74,12 @@ sap.ui.define(["sap/ui/core/util/PasteHelper", "sap/m/MessageBox"], function(Cor
74
74
  };
75
75
 
76
76
  var oPasteHelper = {
77
+ /**
78
+ *
79
+ * @param aRawData
80
+ * @param oTable
81
+ * @returns {Promise<any>}
82
+ */
77
83
  parseDataForTablePaste: function(aRawData, oTable) {
78
84
  return _getColumnInfoForPaste(oTable).then(function(oPasteInfos) {
79
85
  // Check if we have data for at least the first editable column
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  sap.ui.define(
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
  sap.ui.define(["sap/base/Log"], function(Log) {
6
6
  "use strict";
@@ -9,7 +9,7 @@ sap.ui.define([], function () {
9
9
 
10
10
  /*!
11
11
  * SAPUI5
12
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
12
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
13
13
  */
14
14
 
15
15
  /**
@@ -265,4 +265,4 @@ sap.ui.define([], function () {
265
265
  _exports.prepareId = prepareId;
266
266
  return _exports;
267
267
  }, false);
268
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YWJsZUlkSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzVmFsaWQiLCJ2VmFsdWUiLCJ0ZXN0IiwicmVwbGFjZVNwZWNpYWxDaGFycyIsInNJZCIsImluZGV4T2YiLCJyZXBsYWNlIiwic2xpY2UiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlIiwib1ZhbHVlIiwiJFBhdGgiLCJwYXRoIiwiJEFwcGx5IiwiJEZ1bmN0aW9uIiwic1BhdGhDb25jYXQiLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJhU3RhYmxlSWRQYXJ0cyIsInNTdGFibGVJZCIsInZFbGVtZW50Iiwic0ZhY2V0SWQiLCJGYWNldCIsIiRUeXBlIiwiSUQiLCJUYXJnZXQiLCIkQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsIkZhY2V0U291cmNlIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInByZXBhcmVJZCIsImdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbiIsIm9EYXRhRmllbGQiLCJzSWRQYXJ0IiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJtUGFyYW1ldGVyIiwiVmFsdWUiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwidG9TdHJpbmciLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUZBO0FBQ0E7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBU0EsT0FBVCxDQUFpQkMsTUFBakIsRUFBaUM7QUFDaEMsV0FBTyxnQ0FBZ0NDLElBQWhDLENBQXFDRCxNQUFyQyxDQUFQO0FBQ0E7O0FBRU0sV0FBU0UsbUJBQVQsQ0FBNkJDLEdBQTdCLEVBQTBDO0FBQ2hELFFBQUlBLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLEdBQVosS0FBb0IsQ0FBeEIsRUFBMkI7QUFDMUI7QUFDQSxZQUFNRCxHQUFHLEdBQUcsd0NBQVo7QUFDQTs7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QUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ047QUFDQSxZQUFNQSxHQUFHLEdBQUcsc0VBQVo7QUFDQTtBQUNELEdBUk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogJHtjb3B5cmlnaHR9XG4gKi9cblxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvbW9kZWxcIjtcblxuLyoqXG4gKiBTdGFibGUgSWQgaGVscGVyXG4gKi9cblxuLyoqXG4gKiBDb3B5IGZvciB0aGUgQ29yZS5pc1ZhbGlkIGZ1bmN0aW9uIHRvIGJlIGluZGVwZW5kZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2VmFsdWUgU3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgdmFsdWUgaXMgdmFsaWQgb3Igbm90XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWQodlZhbHVlOiBzdHJpbmcpIHtcblx0cmV0dXJuIC9eKFtBLVphLXpfXVstQS1aYS16MC05Xy46XSopJC8udGVzdCh2VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxDaGFycyhzSWQ6IHN0cmluZykge1xuXHRpZiAoc0lkLmluZGV4T2YoXCIgXCIpID49IDApIHtcblx0XHQvLyBMb2cuZXJyb3Ioc0lkICsgXCIgLSBTcGFjZXMgYXJlIG5vdCBhbGxvd2VkIGluIElEIHBhcnRzLlwiKTtcblx0XHR0aHJvdyBzSWQgKyBcIiAtIFNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gSUQgcGFydHMuXCI7XG5cdH1cblx0c0lkID0gc0lkXG5cdFx0LnJlcGxhY2UoL15cXC98XkB8XiN8XlxcKi8sIFwiXCIpIC8vIHJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmdcblx0XHQucmVwbGFjZSgvXFwvJHxAJHwjJHxcXCokLywgXCJcIikgLy8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZ1xuXHRcdC5yZXBsYWNlKC9cXC98QHxcXCh8XFwpfCN8XFwqL2csIFwiOjpcIik7IC8vIHJlcGxhY2Ugc3BlY2lhbCBjaGFyYWN0ZXJzIHdpdGggOjpcblxuXHQvLyBSZXBsYWNlIGRvdWJsZSBvY2N1cnJlbmNlcyBvZiB0aGUgc2VwYXJhdG9yIHdpdGggYSBzaW5nbGUgc2VwYXJhdG9yXG5cdHdoaWxlIChzSWQuaW5kZXhPZihcIjo6OjpcIikgPiAtMSkge1xuXHRcdHNJZCA9IHNJZC5yZXBsYWNlKFwiOjo6OlwiLCBcIjo6XCIpO1xuXHR9XG5cblx0Ly8gSWYgdGhlcmUgaXMgYSA6OiBhdCB0aGUgZW5kIG9mIHRoZSBJRCByZW1vdmUgaXRcblx0aWYgKHNJZC5zbGljZSgtMikgPT0gXCI6OlwiKSB7XG5cdFx0c0lkID0gc0lkLnNsaWNlKDAsIC0yKTtcblx0fVxuXG5cdHJldHVybiBzSWQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5hbWVzcGFjZXMoc0lkOiBzdHJpbmcpIHtcblx0c0lkID0gc0lkLnJlcGxhY2UoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5cIiwgXCJcIik7XG5cdHNJZCA9IHNJZC5yZXBsYWNlKFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5cIiwgXCJcIik7XG5cdHJldHVybiBzSWQ7XG59XG5cbmZ1bmN0aW9uIGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvVmFsdWU6IGFueSkge1xuXHRpZiAoKG9WYWx1ZSAmJiBvVmFsdWUuJFBhdGgpIHx8IG9WYWx1ZS5wYXRoKSB7XG5cdFx0cmV0dXJuIG9WYWx1ZS4kUGF0aCB8fCBvVmFsdWUucGF0aDtcblx0fVxuXG5cdGlmIChvVmFsdWUgJiYgb1ZhbHVlLiRBcHBseSAmJiBvVmFsdWUuJEZ1bmN0aW9uID09PSBcIm9kYXRhLmNvbmNhdFwiKSB7XG5cdFx0bGV0IHNQYXRoQ29uY2F0ID0gXCJcIjtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9WYWx1ZS4kQXBwbHkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChvVmFsdWUuJEFwcGx5W2ldLiRQYXRoKSB7XG5cdFx0XHRcdGlmIChzUGF0aENvbmNhdCkge1xuXHRcdFx0XHRcdHNQYXRoQ29uY2F0ICs9IFwiOjpcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRzUGF0aENvbmNhdCArPSBvVmFsdWUuJEFwcGx5W2ldLiRQYXRoO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc1BhdGhDb25jYXQ7XG5cdH1cblxuXHRpZiAob1ZhbHVlKSB7XG5cdFx0cmV0dXJuIHJlcGxhY2VTcGVjaWFsQ2hhcnMob1ZhbHVlLnJlcGxhY2UoLyAvZywgXCJfXCIpKTtcblx0fVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBTdGFibGUgSWQgYmFzZWQgb24gdGhlIGdpdmVuIHBhcmFtZXRlcnNcbiAqXG4gKiBwYXJhbWV0ZXJzIGFyZSBjb21iaW5lZCBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHRoZXkgYXJlIHByb3ZpZGVkIGFuZCBhcmUgc2VwYXJhdGVkIGJ5ICc6OidcbiAqIHNwZWNpYWwgY2hhcmFjdGVycyAoQCwgLywgIykgYXJlIHJlcGxhY2VkIGJ5ICc6OicgaWYgdGhleSBhcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgU3RhYmxlIElkIGFuZCByZW1vdmVkIGFsbCB0b2dldGhlciBpZiB0aGUgYXJlIHBhcnQgYXQgdGhlIGJlZ2lubmluZyBvciBlbmRcbiAqIEV4YW1wbGU6XG4gKiAvLyBHZXQgQ29uc3RhbnQgU3RhYmxlIElkXG4gKiBnZW5lcmF0ZShbJ1N0YWJsZScsICdJZCddKSB3b3VsZCByZXN1bHQgaW4gJ1N0YWJsZTo6SWQnIGFzIHRoZSBTdGFibGUgSWRcbiAqXG4gKiAvLyBHZXQgUGFyYW1lcnRlcml6ZWQgU3RhYmxlIElkIGZyb20gYSBDb2xsZWN0aW9uIEZhY2V0XG4gKiB2YXIgb1BhcmFtZXRlciA9IHtcbiAqIFx0XHRGYWNldDoge1xuICogXHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIsXG4gKiBcdFx0XHRMYWJlbDogXCJHZW5lcmFsIEluZm8gRmFjZXQgTGFiZWxcIixcbiAqIFx0XHRcdElEOiAnR2VuZXJhbEluZm9ybWF0aW9uJ1xuICogXHRcdH1cbiAqIH07XG4gKiBnZW5lcmF0ZShbJ3NlY3Rpb24nLCBvUGFyYW1ldGVyXSkgd291bGQgcmVzdWx0IGluICdzZWN0aW9uOjpHZW5lcmFsSW5mb3JtYXRpb24nIGFzIHRoZSBTdGFibGUgSWRcbiAqXG4gKiBvUGFyYW1ldGVyIGlzIGFuZCBvYmplY3Qgb2YgTWV0YWRhdGEgY29udGV4dHMgYXZhaWxhYmxlIHdoaWxlIHRlbXBsYXRpbmcgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIFN0YWJsZSBJRHMuXG4gKiBvUGFyYW1ldGVyIG9iamVjdCBrZXlzIGRlZmluZSB0aGUgdHlwZSBvZiBtZXRhZGF0YSBjb250ZXh0LlxuICogRm9yIGV4YW1wbGUsIHRoZSBrZXkgJ0ZhY2V0J2luIHRoZSBhYm92ZSBleGFtcGxlIHRlbGxzIHRoZSBTdGFibGUgSWQgSGVscGVyIHRoYXQgdGhlIGNvbnRleHQgaXMgYSBGYWNldCAoY291bGQgYmUgcmVmZXJlbmNlIG9yIGNvbGxlY3Rpb24gZmFjZXQpXG4gKlxuICogQ3VycmVudGx5IHN1cHBvcnRlZCBtZXRhZGF0YSBjb250ZXh0IGlzIENvbGxlY3Rpb24vUmVmZXJlbmNlIGZhY2V0IGlkZW50aWZpZWQgYnkgJ0ZhY2V0JyBrZXkuXG4gKlxuICogQHBhcmFtIHtBcnJheTwoc3RyaW5nfG9iamVjdCk+fSBhU3RhYmxlSWRQYXJ0cyBBcnJheSBvZiBzdHJpbmdzIGFuZCBvYmplY3RzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdGFibGUgSWQgY29uc3RydWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGUgPSBmdW5jdGlvbihhU3RhYmxlSWRQYXJ0czogQXJyYXk8c3RyaW5nIHwgb2JqZWN0Pikge1xuXHRsZXQgc1N0YWJsZUlkID0gXCJcIixcblx0XHR2RWxlbWVudDogYW55LFxuXHRcdHNGYWNldElkO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVN0YWJsZUlkUGFydHMubGVuZ3RoOyBpKyspIHtcblx0XHR2RWxlbWVudCA9IGFTdGFibGVJZFBhcnRzW2ldO1xuXHRcdGlmICghdkVsZW1lbnQpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRzU3RhYmxlSWQgKz0gc1N0YWJsZUlkICE9PSBcIlwiID8gXCI6OlwiIDogXCJcIjtcblx0XHRpZiAodkVsZW1lbnRbXCJGYWNldFwiXSAmJiB2RWxlbWVudFtcIkZhY2V0XCJdW1wiJFR5cGVcIl0gJiYgdkVsZW1lbnRbXCJGYWNldFwiXVtcIiRUeXBlXCJdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIpIHtcblx0XHRcdHNTdGFibGVJZCArPSB2RWxlbWVudFtcIkZhY2V0XCJdW1wiSURcIl07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmICh2RWxlbWVudCkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gdkVsZW1lbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIGhhbmRsZSBwYXJhbWV0ZXJzXG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnQuRmFjZXQpIHtcblx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudC5GYWNldC4kVHlwZSAmJiB2RWxlbWVudC5GYWNldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGggfHwgdkVsZW1lbnQuRmFjZXQuVGFyZ2V0LnZhbHVlOyAvLyBDb21wbGlhbnQgd2l0aCBDb252ZXJ0ZXJzXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzRmFjZXRJZCkge1xuXHRcdFx0XHRcdHNTdGFibGVJZCArPSBzRmFjZXRJZDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudCAmJiB2RWxlbWVudC5GYWNldFNvdXJjZSkge1xuXHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXRTb3VyY2UgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCIpIHtcblx0XHRcdFx0XHRzU3RhYmxlSWQgKz0gXCJIZWFkZXJGYWNldFwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnRbXCIkVHlwZVwiXSAmJiB2RWxlbWVudFtcIiRUeXBlXCJdLmluZGV4T2YoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikgPiAtMSkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCh2RWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHNTdGFibGVJZCA9IHByZXBhcmVJZChzU3RhYmxlSWQpO1xuXHRyZXR1cm4gc1N0YWJsZUlkO1xufTtcbmV4cG9ydCBjb25zdCBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24gPSBmdW5jdGlvbihvRGF0YUZpZWxkOiBhbnkpOiBzdHJpbmcge1xuXHRsZXQgc0lkUGFydCA9IFwiXCI7XG5cdGlmICh0eXBlb2Ygb0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0O1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QuJFBhdGgpIHtcblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QuJFBhdGg7XG5cdH1cblx0aWYgKHR5cGVvZiBvRGF0YUZpZWxkLkFjdGlvbiA9PSBcInN0cmluZ1wiKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6XCIgKyBvRGF0YUZpZWxkLkFjdGlvbjtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLkFjdGlvbiAmJiBvRGF0YUZpZWxkLkFjdGlvbi4kUGF0aCkge1xuXHRcdHNJZFBhcnQgKz0gXCI6OlwiICsgb0RhdGFGaWVsZC5BY3Rpb24uJFBhdGg7XG5cdH1cblx0aWYgKG9EYXRhRmllbGRbXCJSZXF1aXJlc0NvbnRleHRcIl0gJiYgb0RhdGFGaWVsZFtcIlJlcXVpcmVzQ29udGV4dFwiXSA9PSB0cnVlKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6UmVxdWlyZXNDb250ZXh0XCI7XG5cdH1cblx0cmV0dXJuIHNJZFBhcnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCA9IGZ1bmN0aW9uKG9EYXRhRmllbGQ6IGFueSwgbVBhcmFtZXRlcjogeyBjb250ZXh0PzogQ29udGV4dCB9ID0ge30pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRsZXQgc0lkUGFydCA9IFwiXCI7XG5cblx0aWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckFjdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLkFjdGlvbjtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHNJZFBhcnQ7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFubm90YXRpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckFubm90YXRpb246OlwiO1xuXHRcdHNJZFBhcnQgKz0gcHJlcGFyZUlkKG9EYXRhRmllbGQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aCB8fCBvRGF0YUZpZWxkLlRhcmdldC52YWx1ZSk7XG5cdFx0cmV0dXJuIHNJZFBhcnQ7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhBY3Rpb246OlwiO1xuXHRcdGlmIChvRGF0YUZpZWxkLlZhbHVlKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKSArIFwiOjpcIjtcblx0XHR9XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLkFjdGlvbjtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZDo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSkgKyBcIjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldCAmJiBvRGF0YUZpZWxkLlRhcmdldFtcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCJdKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IFwiOjpcIiArIG9EYXRhRmllbGQuVGFyZ2V0W1wiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIl07XG5cdFx0fVxuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhVcmxcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhVcmw6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAobVBhcmFtZXRlciAmJiBtUGFyYW1ldGVyLmNvbnRleHQgJiYgbVBhcmFtZXRlci5jb250ZXh0LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpKSB7XG5cdFx0Ly8gdGhlIGNvbnRleHQgaXMgbm90IHJlZmVycmluZyB0byBkYSBkYXRhIGZpZWxkIGJ1dCBkaXJlY3RseSB0byBhIHByb3BlcnR5LCByZXR1cm4gdGhlIHByb3BlcnR5IG5hbWVcblx0XHRyZXR1cm4gcHJlcGFyZUlkKG1QYXJhbWV0ZXIuY29udGV4dC5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKS50b1N0cmluZygpKTtcblx0fSBlbHNlIHtcblx0XHQvLyBJbiBjYXNlIG9mIGEgc3RyaW5nIG9yIHVua25vd24gcHJvcGVydHlcblx0XHQvLyBMb2cuZXJyb3IoXCJTdGFibGUgSUQgSGVscGVyOiBVbmFibGUgdG8gY3JlYXRlIGEgc3RhYmxlIElELiBQbGVhc2UgY2hlY2sgdGhlIGFubm90YXRpb25zLlwiKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVJZCA9IGZ1bmN0aW9uKHNJZDogc3RyaW5nKSB7XG5cdHNJZCA9IHJlcGxhY2VTcGVjaWFsQ2hhcnMocmVtb3ZlTmFtZXNwYWNlcyhzSWQpKTtcblx0aWYgKGlzVmFsaWQoc0lkKSkge1xuXHRcdHJldHVybiBzSWQ7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gTG9nLmVycm9yKHNJZCArIFwiIC0gU3RhYmxlIElkIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgZHVlIHRvIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi5cIik7XG5cdFx0dGhyb3cgc0lkICsgXCIgLSBTdGFibGUgSWQgY291bGQgbm90IGJlIGdlbmVyYXRlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLlwiO1xuXHR9XG59O1xuIl19
268
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YWJsZUlkSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzVmFsaWQiLCJ2VmFsdWUiLCJ0ZXN0IiwicmVwbGFjZVNwZWNpYWxDaGFycyIsInNJZCIsImluZGV4T2YiLCJyZXBsYWNlIiwic2xpY2UiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlIiwib1ZhbHVlIiwiJFBhdGgiLCJwYXRoIiwiJEFwcGx5IiwiJEZ1bmN0aW9uIiwic1BhdGhDb25jYXQiLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJhU3RhYmxlSWRQYXJ0cyIsInNTdGFibGVJZCIsInZFbGVtZW50Iiwic0ZhY2V0SWQiLCJGYWNldCIsIiRUeXBlIiwiSUQiLCJUYXJnZXQiLCIkQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsIkZhY2V0U291cmNlIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInByZXBhcmVJZCIsImdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbiIsIm9EYXRhRmllbGQiLCJzSWRQYXJ0IiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJtUGFyYW1ldGVyIiwiVmFsdWUiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwidG9TdHJpbmciLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUZBO0FBQ0E7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBU0EsT0FBVCxDQUFpQkMsTUFBakIsRUFBaUM7QUFDaEMsV0FBTyxnQ0FBZ0NDLElBQWhDLENBQXFDRCxNQUFyQyxDQUFQO0FBQ0E7O0FBRU0sV0FBU0UsbUJBQVQsQ0FBNkJDLEdBQTdCLEVBQTBDO0FBQ2hELFFBQUlBLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLEdBQVosS0FBb0IsQ0FBeEIsRUFBMkI7QUFDMUI7QUFDQSxZQUFNRCxHQUFHLEdBQUcsd0NBQVo7QUFDQTs7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QUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ047QUFDQSxZQUFNQSxHQUFHLEdBQUcsc0VBQVo7QUFDQTtBQUNELEdBUk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogJHtjb3B5cmlnaHR9XG4gKi9cblxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvbW9kZWxcIjtcblxuLyoqXG4gKiBTdGFibGUgSWQgaGVscGVyXG4gKi9cblxuLyoqXG4gKiBDb3B5IGZvciB0aGUgQ29yZS5pc1ZhbGlkIGZ1bmN0aW9uIHRvIGJlIGluZGVwZW5kZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2VmFsdWUgU3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgdmFsdWUgaXMgdmFsaWQgb3Igbm90XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWQodlZhbHVlOiBzdHJpbmcpIHtcblx0cmV0dXJuIC9eKFtBLVphLXpfXVstQS1aYS16MC05Xy46XSopJC8udGVzdCh2VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxDaGFycyhzSWQ6IHN0cmluZykge1xuXHRpZiAoc0lkLmluZGV4T2YoXCIgXCIpID49IDApIHtcblx0XHQvLyBMb2cuZXJyb3Ioc0lkICsgXCIgLSBTcGFjZXMgYXJlIG5vdCBhbGxvd2VkIGluIElEIHBhcnRzLlwiKTtcblx0XHR0aHJvdyBzSWQgKyBcIiAtIFNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gSUQgcGFydHMuXCI7XG5cdH1cblx0c0lkID0gc0lkXG5cdFx0LnJlcGxhY2UoL15cXC98XkB8XiN8XlxcKi8sIFwiXCIpIC8vIHJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmdcblx0XHQucmVwbGFjZSgvXFwvJHxAJHwjJHxcXCokLywgXCJcIikgLy8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZ1xuXHRcdC5yZXBsYWNlKC9cXC98QHxcXCh8XFwpfCN8XFwqL2csIFwiOjpcIik7IC8vIHJlcGxhY2Ugc3BlY2lhbCBjaGFyYWN0ZXJzIHdpdGggOjpcblxuXHQvLyBSZXBsYWNlIGRvdWJsZSBvY2N1cnJlbmNlcyBvZiB0aGUgc2VwYXJhdG9yIHdpdGggYSBzaW5nbGUgc2VwYXJhdG9yXG5cdHdoaWxlIChzSWQuaW5kZXhPZihcIjo6OjpcIikgPiAtMSkge1xuXHRcdHNJZCA9IHNJZC5yZXBsYWNlKFwiOjo6OlwiLCBcIjo6XCIpO1xuXHR9XG5cblx0Ly8gSWYgdGhlcmUgaXMgYSA6OiBhdCB0aGUgZW5kIG9mIHRoZSBJRCByZW1vdmUgaXRcblx0aWYgKHNJZC5zbGljZSgtMikgPT0gXCI6OlwiKSB7XG5cdFx0c0lkID0gc0lkLnNsaWNlKDAsIC0yKTtcblx0fVxuXG5cdHJldHVybiBzSWQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5hbWVzcGFjZXMoc0lkOiBzdHJpbmcpIHtcblx0c0lkID0gc0lkLnJlcGxhY2UoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5cIiwgXCJcIik7XG5cdHNJZCA9IHNJZC5yZXBsYWNlKFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbXVuaWNhdGlvbi52MS5cIiwgXCJcIik7XG5cdHJldHVybiBzSWQ7XG59XG5cbmZ1bmN0aW9uIGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvVmFsdWU6IGFueSkge1xuXHRpZiAoKG9WYWx1ZSAmJiBvVmFsdWUuJFBhdGgpIHx8IG9WYWx1ZS5wYXRoKSB7XG5cdFx0cmV0dXJuIG9WYWx1ZS4kUGF0aCB8fCBvVmFsdWUucGF0aDtcblx0fVxuXG5cdGlmIChvVmFsdWUgJiYgb1ZhbHVlLiRBcHBseSAmJiBvVmFsdWUuJEZ1bmN0aW9uID09PSBcIm9kYXRhLmNvbmNhdFwiKSB7XG5cdFx0bGV0IHNQYXRoQ29uY2F0ID0gXCJcIjtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9WYWx1ZS4kQXBwbHkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChvVmFsdWUuJEFwcGx5W2ldLiRQYXRoKSB7XG5cdFx0XHRcdGlmIChzUGF0aENvbmNhdCkge1xuXHRcdFx0XHRcdHNQYXRoQ29uY2F0ICs9IFwiOjpcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRzUGF0aENvbmNhdCArPSBvVmFsdWUuJEFwcGx5W2ldLiRQYXRoO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc1BhdGhDb25jYXQ7XG5cdH1cblxuXHRpZiAob1ZhbHVlKSB7XG5cdFx0cmV0dXJuIHJlcGxhY2VTcGVjaWFsQ2hhcnMob1ZhbHVlLnJlcGxhY2UoLyAvZywgXCJfXCIpKTtcblx0fVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBTdGFibGUgSWQgYmFzZWQgb24gdGhlIGdpdmVuIHBhcmFtZXRlcnNcbiAqXG4gKiBwYXJhbWV0ZXJzIGFyZSBjb21iaW5lZCBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHRoZXkgYXJlIHByb3ZpZGVkIGFuZCBhcmUgc2VwYXJhdGVkIGJ5ICc6OidcbiAqIHNwZWNpYWwgY2hhcmFjdGVycyAoQCwgLywgIykgYXJlIHJlcGxhY2VkIGJ5ICc6OicgaWYgdGhleSBhcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgU3RhYmxlIElkIGFuZCByZW1vdmVkIGFsbCB0b2dldGhlciBpZiB0aGUgYXJlIHBhcnQgYXQgdGhlIGJlZ2lubmluZyBvciBlbmRcbiAqIEV4YW1wbGU6XG4gKiAvLyBHZXQgQ29uc3RhbnQgU3RhYmxlIElkXG4gKiBnZW5lcmF0ZShbJ1N0YWJsZScsICdJZCddKSB3b3VsZCByZXN1bHQgaW4gJ1N0YWJsZTo6SWQnIGFzIHRoZSBTdGFibGUgSWRcbiAqXG4gKiAvLyBHZXQgUGFyYW1lcnRlcml6ZWQgU3RhYmxlIElkIGZyb20gYSBDb2xsZWN0aW9uIEZhY2V0XG4gKiB2YXIgb1BhcmFtZXRlciA9IHtcbiAqIFx0XHRGYWNldDoge1xuICogXHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIsXG4gKiBcdFx0XHRMYWJlbDogXCJHZW5lcmFsIEluZm8gRmFjZXQgTGFiZWxcIixcbiAqIFx0XHRcdElEOiAnR2VuZXJhbEluZm9ybWF0aW9uJ1xuICogXHRcdH1cbiAqIH07XG4gKiBnZW5lcmF0ZShbJ3NlY3Rpb24nLCBvUGFyYW1ldGVyXSkgd291bGQgcmVzdWx0IGluICdzZWN0aW9uOjpHZW5lcmFsSW5mb3JtYXRpb24nIGFzIHRoZSBTdGFibGUgSWRcbiAqXG4gKiBvUGFyYW1ldGVyIGlzIGFuZCBvYmplY3Qgb2YgTWV0YWRhdGEgY29udGV4dHMgYXZhaWxhYmxlIHdoaWxlIHRlbXBsYXRpbmcgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIFN0YWJsZSBJRHMuXG4gKiBvUGFyYW1ldGVyIG9iamVjdCBrZXlzIGRlZmluZSB0aGUgdHlwZSBvZiBtZXRhZGF0YSBjb250ZXh0LlxuICogRm9yIGV4YW1wbGUsIHRoZSBrZXkgJ0ZhY2V0J2luIHRoZSBhYm92ZSBleGFtcGxlIHRlbGxzIHRoZSBTdGFibGUgSWQgSGVscGVyIHRoYXQgdGhlIGNvbnRleHQgaXMgYSBGYWNldCAoY291bGQgYmUgcmVmZXJlbmNlIG9yIGNvbGxlY3Rpb24gZmFjZXQpXG4gKlxuICogQ3VycmVudGx5IHN1cHBvcnRlZCBtZXRhZGF0YSBjb250ZXh0IGlzIENvbGxlY3Rpb24vUmVmZXJlbmNlIGZhY2V0IGlkZW50aWZpZWQgYnkgJ0ZhY2V0JyBrZXkuXG4gKlxuICogQHBhcmFtIHtBcnJheTwoc3RyaW5nfG9iamVjdCk+fSBhU3RhYmxlSWRQYXJ0cyBBcnJheSBvZiBzdHJpbmdzIGFuZCBvYmplY3RzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdGFibGUgSWQgY29uc3RydWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGUgPSBmdW5jdGlvbihhU3RhYmxlSWRQYXJ0czogQXJyYXk8c3RyaW5nIHwgb2JqZWN0Pikge1xuXHRsZXQgc1N0YWJsZUlkID0gXCJcIixcblx0XHR2RWxlbWVudDogYW55LFxuXHRcdHNGYWNldElkO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVN0YWJsZUlkUGFydHMubGVuZ3RoOyBpKyspIHtcblx0XHR2RWxlbWVudCA9IGFTdGFibGVJZFBhcnRzW2ldO1xuXHRcdGlmICghdkVsZW1lbnQpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRzU3RhYmxlSWQgKz0gc1N0YWJsZUlkICE9PSBcIlwiID8gXCI6OlwiIDogXCJcIjtcblx0XHRpZiAodkVsZW1lbnRbXCJGYWNldFwiXSAmJiB2RWxlbWVudFtcIkZhY2V0XCJdW1wiJFR5cGVcIl0gJiYgdkVsZW1lbnRbXCJGYWNldFwiXVtcIiRUeXBlXCJdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIpIHtcblx0XHRcdHNTdGFibGVJZCArPSB2RWxlbWVudFtcIkZhY2V0XCJdW1wiSURcIl07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmICh2RWxlbWVudCkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gdkVsZW1lbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIGhhbmRsZSBwYXJhbWV0ZXJzXG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnQuRmFjZXQpIHtcblx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudC5GYWNldC4kVHlwZSAmJiB2RWxlbWVudC5GYWNldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGggfHwgdkVsZW1lbnQuRmFjZXQuVGFyZ2V0LnZhbHVlOyAvLyBDb21wbGlhbnQgd2l0aCBDb252ZXJ0ZXJzXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzRmFjZXRJZCkge1xuXHRcdFx0XHRcdHNTdGFibGVJZCArPSBzRmFjZXRJZDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudCAmJiB2RWxlbWVudC5GYWNldFNvdXJjZSkge1xuXHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXRTb3VyY2UgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCIpIHtcblx0XHRcdFx0XHRzU3RhYmxlSWQgKz0gXCJIZWFkZXJGYWNldFwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnRbXCIkVHlwZVwiXSAmJiB2RWxlbWVudFtcIiRUeXBlXCJdLmluZGV4T2YoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikgPiAtMSkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCh2RWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHNTdGFibGVJZCA9IHByZXBhcmVJZChzU3RhYmxlSWQpO1xuXHRyZXR1cm4gc1N0YWJsZUlkO1xufTtcbmV4cG9ydCBjb25zdCBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24gPSBmdW5jdGlvbihvRGF0YUZpZWxkOiBhbnkpOiBzdHJpbmcge1xuXHRsZXQgc0lkUGFydCA9IFwiXCI7XG5cdGlmICh0eXBlb2Ygb0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0O1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QuJFBhdGgpIHtcblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QuJFBhdGg7XG5cdH1cblx0aWYgKHR5cGVvZiBvRGF0YUZpZWxkLkFjdGlvbiA9PSBcInN0cmluZ1wiKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6XCIgKyBvRGF0YUZpZWxkLkFjdGlvbjtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLkFjdGlvbiAmJiBvRGF0YUZpZWxkLkFjdGlvbi4kUGF0aCkge1xuXHRcdHNJZFBhcnQgKz0gXCI6OlwiICsgb0RhdGFGaWVsZC5BY3Rpb24uJFBhdGg7XG5cdH1cblx0aWYgKG9EYXRhRmllbGRbXCJSZXF1aXJlc0NvbnRleHRcIl0gJiYgb0RhdGFGaWVsZFtcIlJlcXVpcmVzQ29udGV4dFwiXSA9PSB0cnVlKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6UmVxdWlyZXNDb250ZXh0XCI7XG5cdH1cblx0cmV0dXJuIHNJZFBhcnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCA9IGZ1bmN0aW9uKG9EYXRhRmllbGQ6IGFueSwgbVBhcmFtZXRlcjogeyBjb250ZXh0PzogQ29udGV4dDxhbnk+IH0gPSB7fSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGxldCBzSWRQYXJ0ID0gXCJcIjtcblxuXHRpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkRm9yQWN0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuQWN0aW9uO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbihvRGF0YUZpZWxkKTtcblx0XHRyZXR1cm4gc0lkUGFydDtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQW5ub3RhdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBwcmVwYXJlSWQob0RhdGFGaWVsZC5UYXJnZXQuJEFubm90YXRpb25QYXRoIHx8IG9EYXRhRmllbGQuVGFyZ2V0LnZhbHVlKTtcblx0XHRyZXR1cm4gc0lkUGFydDtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEFjdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkV2l0aEFjdGlvbjo6XCI7XG5cdFx0aWYgKG9EYXRhRmllbGQuVmFsdWUpIHtcblx0XHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpICsgXCI6OlwiO1xuXHRcdH1cblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuQWN0aW9uO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKTtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKSArIFwiOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbihvRGF0YUZpZWxkKTtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSk7XG5cdFx0aWYgKG9EYXRhRmllbGQuVGFyZ2V0ICYmIG9EYXRhRmllbGQuVGFyZ2V0W1wiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIl0pIHtcblx0XHRcdHNJZFBhcnQgKz0gXCI6OlwiICsgb0RhdGFGaWVsZC5UYXJnZXRbXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiXTtcblx0XHR9XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aFVybFwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkV2l0aFVybDo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChtUGFyYW1ldGVyICYmIG1QYXJhbWV0ZXIuY29udGV4dCAmJiBtUGFyYW1ldGVyLmNvbnRleHQuZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIikpIHtcblx0XHQvLyB0aGUgY29udGV4dCBpcyBub3QgcmVmZXJyaW5nIHRvIGRhIGRhdGEgZmllbGQgYnV0IGRpcmVjdGx5IHRvIGEgcHJvcGVydHksIHJldHVybiB0aGUgcHJvcGVydHkgbmFtZVxuXHRcdHJldHVybiBwcmVwYXJlSWQobVBhcmFtZXRlci5jb250ZXh0LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLnRvU3RyaW5nKCkpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEluIGNhc2Ugb2YgYSBzdHJpbmcgb3IgdW5rbm93biBwcm9wZXJ0eVxuXHRcdC8vIExvZy5lcnJvcihcIlN0YWJsZSBJRCBIZWxwZXI6IFVuYWJsZSB0byBjcmVhdGUgYSBzdGFibGUgSUQuIFBsZWFzZSBjaGVjayB0aGUgYW5ub3RhdGlvbnMuXCIpO1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgcHJlcGFyZUlkID0gZnVuY3Rpb24oc0lkOiBzdHJpbmcpIHtcblx0c0lkID0gcmVwbGFjZVNwZWNpYWxDaGFycyhyZW1vdmVOYW1lc3BhY2VzKHNJZCkpO1xuXHRpZiAoaXNWYWxpZChzSWQpKSB7XG5cdFx0cmV0dXJuIHNJZDtcblx0fSBlbHNlIHtcblx0XHQvLyBMb2cuZXJyb3Ioc0lkICsgXCIgLSBTdGFibGUgSWQgY291bGQgbm90IGJlIGdlbmVyYXRlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLlwiKTtcblx0XHR0aHJvdyBzSWQgKyBcIiAtIFN0YWJsZSBJZCBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkIGR1ZSB0byBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24uXCI7XG5cdH1cbn07XG4iXX0=
@@ -163,7 +163,7 @@ export const getStableIdPartFromSemanticObjectAndAction = function(oDataField: a
163
163
  return sIdPart;
164
164
  };
165
165
 
166
- export const getStableIdPartFromDataField = function(oDataField: any, mParameter: { context?: Context } = {}): string | undefined {
166
+ export const getStableIdPartFromDataField = function(oDataField: any, mParameter: { context?: Context<any> } = {}): string | undefined {
167
167
  let sIdPart = "";
168
168
 
169
169
  if (oDataField.$Type && oDataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldForAction") {
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  /**
@@ -106,7 +106,7 @@ sap.ui.define(
106
106
  interfaces: [],
107
107
  controls: [],
108
108
  elements: [],
109
- version: "1.95.0",
109
+ version: "1.96.4",
110
110
  noLibraryCSS: true,
111
111
  extensions: {
112
112
  //Configuration used for rule loading of Support Assistant
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
  /**
6
6
  * Adds support rules of the sap.fe.core library to the support infrastructure.
@@ -134,9 +134,15 @@ T_MESSAGE_GROUP_TITLE_TABLE_DENOMINATOR=Table
134
134
  # XFLD,30: Text for prefix for the group name of the message from action in message-popover
135
135
  T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_LAST_ACTION=Last Action
136
136
 
137
+ # XFLD,30: Text to be displayed in the message subtitle of the message popover when an error occurs in the creation row
138
+ T_MESSAGE_ITEM_SUBTITLE_CREATION_ROW_INDICATOR=<New>
139
+
137
140
  # XFLD,30: Text to be displayed when the row/column indicator is not computed in the message subtitle in message-popover
138
141
  T_MESSAGE_ITEM_SUBTITLE_INDICATOR_UNKNOWN=Unknown
139
142
 
143
+ # XFLD,10: Text to be displayed if the column is not part of table settings
144
+ T_COLUMN_INDICATOR_IN_TABLE_DEFINITION=Hidden
145
+
140
146
  # XFLD,50: Text in the message subtitle in message-popover. Parameters: {0}= row indicator, {1}= column indicator.
141
147
  T_MESSAGE_ITEM_SUBTITLE=Row: {0}, Column: {1}
142
148
 
@@ -339,6 +345,9 @@ C_DRAFT_EDIT_STATE_DRAFT_LOCKED_FILTER=Locked by Another User
339
345
  # XTIT,50: Edit state, filter
340
346
  C_DRAFT_EDIT_STATE_DRAFT_UNSAVED_CHANGES_FILTER=Unsaved Changes by Another User
341
347
 
348
+ # XTIT,50: Edit state, filter
349
+ C_DRAFT_EDIT_STATE_DRAFT_ALL_HIDING_DRAFTS_FILTER=All (Hiding Drafts)
350
+
342
351
  # XBUT,15: Text for button Share
343
352
  T_COMMON_SAPFE_ACTION_SHARE=Share
344
353
 
@@ -421,11 +430,17 @@ C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(Multiple units/currencies)
421
430
 
422
431
  #------------KPI card templates-----------------------
423
432
 
424
- #XMSG: Name of the first side indicator in a KPI Card
433
+ #XMSG: Name of the first side indicator in a KPI card
425
434
  C_KPICARD_INDICATOR_TARGET=Target
426
435
 
427
- #XMSG: Name of the second side indicator in a KPI Card
436
+ #XMSG: Name of the second side indicator in a KPI card
428
437
  C_KPICARD_INDICATOR_DEVIATION=Deviation
429
438
 
430
439
  #XMSG: Filter description
431
- C_KPICARD_FILTERSTRING_NOT=not {0}
440
+ C_KPICARD_FILTERSTRING_NOT=not {0}
441
+
442
+ #XMSG: List of measures or dimensions
443
+ C_KPICARD_ITEMSLIST={0} and {1}
444
+
445
+ XMSG: Title of the chart in the KPI card : <measures> by <dimensions>
446
+ C_KPICARD_CHARTTITLE={0} by {1}
@@ -275,8 +275,13 @@ C_KPI_TOOLTIP_SUCCESS={0} {1}\n\u0627\u0644\u062D\u0627\u0644\u0629\: \u062C\u06
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(\u0648\u062D\u062F\u0627\u062A/\u0639\u0645\u0644\u0627\u062A \u0645\u062A\u0639\u062F\u062F\u0629)
276
276
 
277
277
 
278
- C_KPICARD_INDICATOR_TARGET=Target
278
+ C_KPICARD_INDICATOR_TARGET=\u0627\u0644\u0647\u062F\u0641
279
279
 
280
- C_KPICARD_INDICATOR_DEVIATION=Deviation
280
+ C_KPICARD_INDICATOR_DEVIATION=\u0627\u0644\u0627\u0646\u062D\u0631\u0627\u0641
281
281
 
282
- C_KPICARD_FILTERSTRING_NOT=not {0}
282
+ C_KPICARD_FILTERSTRING_NOT=\u0644\u064A\u0633 {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} \u0648{1}
285
+
286
+ XMSG=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0645\u062E\u0637\u0637 \u0641\u064A \u0628\u0637\u0627\u0642\u0629 \u0645\u0624\u0634\u0631 \u0627\u0644\u0623\u062F\u0627\u0621 \u0627\u0644\u0623\u0633\u0627\u0633\u064A\: <measures> \u062D\u0633\u0628 <dimensions>
287
+ C_KPICARD_CHARTTITLE={0} \u062D\u0633\u0628 {1}
@@ -275,8 +275,13 @@ C_KPI_TOOLTIP_SUCCESS={0} {1}\n\u0421\u0442\u0430\u0442\u0443\u0441\: \u0414\u04
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(\u041C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u043E \u0435\u0434\u0438\u043D\u0438\u0446\u0438/\u0432\u0430\u043B\u0443\u0442\u0438)
276
276
 
277
277
 
278
- C_KPICARD_INDICATOR_TARGET=Target
278
+ C_KPICARD_INDICATOR_TARGET=\u0426\u0435\u043B
279
279
 
280
- C_KPICARD_INDICATOR_DEVIATION=Deviation
280
+ C_KPICARD_INDICATOR_DEVIATION=\u041E\u0442\u043A\u043B\u043E\u043D\u0435\u043D\u0438\u0435
281
281
 
282
- C_KPICARD_FILTERSTRING_NOT=not {0}
282
+ C_KPICARD_FILTERSTRING_NOT=\u043D\u0435 {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} \u0438 {1}
285
+
286
+ XMSG=\u0417\u0430\u0433\u043B\u0430\u0432\u0438\u0435 \u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u0430\u0442\u0430 \u0432 KPI \u043A\u0430\u0440\u0442\u0430\u0442\u0430\: <measures> \u043F\u043E <dimensions>
287
+ C_KPICARD_CHARTTITLE={0} \u043F\u043E {1}
@@ -148,7 +148,7 @@ C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_GENERIC_DELETE=Voleu suprimir l'objecte
148
148
 
149
149
  C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_UNSAVED_CHANGES=Un altre usuari ha tractat aquest objecte sense desar les modif.\: \n{0} \n\nSuprimir de totes maneres?
150
150
 
151
- C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_UNSAVED_CHANGES_MULTIPLE_OBJECTS=Hi ha altres usuaris que han tractat els objectes seleccionats sense desar les modificacions. \n\nSuprimir de totes maneres?
151
+ C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_UNSAVED_CHANGES_MULTIPLE_OBJECTS=Hi ha altres usuaris que han tractat els obj.selecc.sense desar les modific. \n\nSuprimir igualment?
152
152
 
153
153
  C_TRANSACTION_HELPER_OBJECT_PAGE_CONFIRM_DELETE_WITH_OBJECTTITLE_PLURAL_NON_DELETABLE=Voleu suprimir tots els objectes suprimibles?
154
154
 
@@ -275,8 +275,13 @@ C_KPI_TOOLTIP_SUCCESS={0} {1}\nEstat\: Correcte
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(Diverses unitats/monedes)
276
276
 
277
277
 
278
- C_KPICARD_INDICATOR_TARGET=Target
278
+ C_KPICARD_INDICATOR_TARGET=Destinaci\u00F3
279
279
 
280
- C_KPICARD_INDICATOR_DEVIATION=Deviation
280
+ C_KPICARD_INDICATOR_DEVIATION=Desviaci\u00F3
281
281
 
282
- C_KPICARD_FILTERSTRING_NOT=not {0}
282
+ C_KPICARD_FILTERSTRING_NOT=no {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} i {1}
285
+
286
+ XMSG=T\u00EDtol del gr\u00E0fic a la targeta de KPI\: <mesures> per <dimensions>
287
+ C_KPICARD_CHARTTITLE={0} per {1}
@@ -275,8 +275,13 @@ C_KPI_TOOLTIP_SUCCESS={0} {1}\nStatus\: Dobr\u00E9
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(V\u00EDce jednotek/m\u011Bn)
276
276
 
277
277
 
278
- C_KPICARD_INDICATOR_TARGET=Target
278
+ C_KPICARD_INDICATOR_TARGET=C\u00EDl
279
279
 
280
- C_KPICARD_INDICATOR_DEVIATION=Deviation
280
+ C_KPICARD_INDICATOR_DEVIATION=Odchylka
281
281
 
282
- C_KPICARD_FILTERSTRING_NOT=not {0}
282
+ C_KPICARD_FILTERSTRING_NOT=ne {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} a {1}
285
+
286
+ XMSG=Titulek diagramu na kart\u011B KPI\: <ukazatele> podle <dimenze>
287
+ C_KPICARD_CHARTTITLE={0} podle {1}
@@ -275,8 +275,13 @@ C_KPI_TOOLTIP_SUCCESS={0} {1}\nStatws\: Da
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(Mwy nag un uned/arian cyfred)
276
276
 
277
277
 
278
- C_KPICARD_INDICATOR_TARGET=Target
278
+ C_KPICARD_INDICATOR_TARGET=Targed
279
279
 
280
- C_KPICARD_INDICATOR_DEVIATION=Deviation
280
+ C_KPICARD_INDICATOR_DEVIATION=Gwyriad
281
281
 
282
- C_KPICARD_FILTERSTRING_NOT=not {0}
282
+ C_KPICARD_FILTERSTRING_NOT=ddim {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} a {1}
285
+
286
+ XMSG=Teitl y siart yn y cerdyn kpi \: <measures> gan <dimensions>
287
+ C_KPICARD_CHARTTITLE={0} gan {1}
@@ -275,8 +275,13 @@ C_KPI_TOOLTIP_SUCCESS={0} {1}\nStatus\: God
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(Flere enheder/valutaer)
276
276
 
277
277
 
278
- C_KPICARD_INDICATOR_TARGET=Target
278
+ C_KPICARD_INDICATOR_TARGET=M\u00E5l
279
279
 
280
- C_KPICARD_INDICATOR_DEVIATION=Deviation
280
+ C_KPICARD_INDICATOR_DEVIATION=Afvigelse
281
281
 
282
- C_KPICARD_FILTERSTRING_NOT=not {0}
282
+ C_KPICARD_FILTERSTRING_NOT=ikke {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} og {1}
285
+
286
+ XMSG=Titel p\u00E5 diagram i KPI-kortet \: <m\u00E5ltal> efter <dimensioner>
287
+ C_KPICARD_CHARTTITLE={0} efter {1}
@@ -275,8 +275,13 @@ C_KPI_TOOLTIP_SUCCESS={0} {1}\nStatus\: Gut
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(Mehrere Einheiten/W\u00E4hrungen)
276
276
 
277
277
 
278
- C_KPICARD_INDICATOR_TARGET=Target
278
+ C_KPICARD_INDICATOR_TARGET=Ziel
279
279
 
280
- C_KPICARD_INDICATOR_DEVIATION=Deviation
280
+ C_KPICARD_INDICATOR_DEVIATION=Abweichung
281
281
 
282
- C_KPICARD_FILTERSTRING_NOT=not {0}
282
+ C_KPICARD_FILTERSTRING_NOT=nicht {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} und {1}
285
+
286
+ XMSG=Titel des Diagramms in der KPI-Karte\: <Kennzahlen> nach <Dimensionen>
287
+ C_KPICARD_CHARTTITLE={0} nach {1}
@@ -275,8 +275,13 @@ C_KPI_TOOLTIP_SUCCESS={0} {1}\n\u039A\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=(\u03A0\u03BF\u03BB\u03BB\u03AD\u03C2 \u03BC\u03BF\u03BD\u03AC\u03B4\u03B5\u03C2/\u03BD\u03BF\u03BC\u03AF\u03C3\u03BC\u03B1\u03C4\u03B1)
276
276
 
277
277
 
278
- C_KPICARD_INDICATOR_TARGET=Target
278
+ C_KPICARD_INDICATOR_TARGET=\u03A3\u03C4\u03CC\u03C7\u03BF\u03C2
279
279
 
280
- C_KPICARD_INDICATOR_DEVIATION=Deviation
280
+ C_KPICARD_INDICATOR_DEVIATION=\u0391\u03C0\u03CC\u03BA\u03BB\u03B9\u03C3\u03B7
281
281
 
282
- C_KPICARD_FILTERSTRING_NOT=not {0}
282
+ C_KPICARD_FILTERSTRING_NOT=\u03CC\u03C7\u03B9 {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} \u03BA\u03B1\u03B9 {1}
285
+
286
+ XMSG=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C3\u03C4\u03B7\u03BD \u03BA\u03AC\u03C1\u03C4\u03B1 \u039A\u03A1\u0399 \: <measures> by <dimensions>
287
+ C_KPICARD_CHARTTITLE={0} \u03B1\u03C0\u03CC {1}
@@ -280,3 +280,8 @@ C_KPICARD_INDICATOR_TARGET=Target
280
280
  C_KPICARD_INDICATOR_DEVIATION=Deviation
281
281
 
282
282
  C_KPICARD_FILTERSTRING_NOT=not {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} and {1}
285
+
286
+ XMSG=Title of the chart in the KPI card \: <measures> by <dimensions>
287
+ C_KPICARD_CHARTTITLE={0} by {1}
@@ -280,3 +280,8 @@ C_KPICARD_INDICATOR_TARGET=Target
280
280
  C_KPICARD_INDICATOR_DEVIATION=Deviation
281
281
 
282
282
  C_KPICARD_FILTERSTRING_NOT=not {0}
283
+
284
+ C_KPICARD_ITEMSLIST={0} and {1}
285
+
286
+ XMSG=Title of the chart in the KPI card \: <measures> by <dimensions>
287
+ C_KPICARD_CHARTTITLE={0} by {1}
@@ -280,3 +280,8 @@ C_KPICARD_INDICATOR_TARGET=[[[\u0162\u0105\u0157\u011F\u0113\u0163\u2219\u2219\u
280
280
  C_KPICARD_INDICATOR_DEVIATION=[[[\u010E\u0113\u028B\u012F\u0105\u0163\u012F\u014F\u014B\u2219\u2219\u2219\u2219\u2219]]]
281
281
 
282
282
  C_KPICARD_FILTERSTRING_NOT=[[[\u014B\u014F\u0163 {0}]]]
283
+
284
+ C_KPICARD_ITEMSLIST=[[[{0} \u0105\u014B\u018C {1}]]]
285
+
286
+ XMSG=[[[\u0162\u012F\u0163\u013A\u0113 \u014F\u0192 \u0163\u0125\u0113 \u010B\u0125\u0105\u0157\u0163 \u012F\u014B \u0163\u0125\u0113 \u0136\u01A4\u012C \u010B\u0105\u0157\u018C \: <\u0271\u0113\u0105\u015F\u0171\u0157\u0113\u015F> \u0183\u0177 <\u018C\u012F\u0271\u0113\u014B\u015F\u012F\u014F\u014B\u015F>\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219\u2219]]]
287
+ C_KPICARD_CHARTTITLE=[[[{0} \u0183\u0177 {1}]]]
@@ -68,6 +68,8 @@ C_OPERATIONS_ACTION_PARAMETER_REQUIRED=\u206A\u206A\u206A\u200C\u200B\u200B\u200
68
68
 
69
69
  C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200D\u200B\u200C\u200D\u200C\u200C\u200B\u200D\u200D\u200C\u200B\u200C\u200C\u200C\u200D\u200D\u200C\u200D\u200D\u200B\u200B\u200C\u200B\u200D\u200B\u200C\u200B\u206ACreate\u206A\u206A
70
70
 
71
+ C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE_BUTTON=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200C\u200C\u200D\u200D\u200C\u200B\u200D\u200C\u200C\u200D\u200C\u200D\u200B\u200D\u200C\u200B\u200B\u200B\u200B\u200C\u200D\u200D\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u206AContinue\u206A\u206A
72
+
71
73
  C_ACTION_PARTIAL_FRAGMENT_SAPFE_CONTINUE_ANYWAY=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200B\u200B\u200C\u200D\u200D\u200C\u200B\u200C\u200D\u200C\u200B\u200D\u200C\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u200D\u200D\u200D\u200C\u200C\u200D\u200B\u200D\u200B\u200D\u200D\u200B\u200D\u200D\u200B\u200D\u206AContinue Anyway\u206A\u206A
72
74
 
73
75
  C_ACTION_PARTIAL_FRAGMENT_SAPFE_BOUND_ACTION=\u206A\u206A\u206A\u200C\u200B\u200B\u200C\u200D\u200D\u200B\u200C\u200D\u200B\u200C\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u200D\u200C\u200B\u200C\u200B\u200D\u200B\u200C\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u200B\u206A\u200B\u200B\u200B{0}\u200C\u200C\u200C selected object will not be processed\u206A\u206A
@@ -82,12 +84,14 @@ T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_GENERAL=\u206A\u206A\u206A\u200D\u200D\u200
82
84
 
83
85
  T_MESSAGE_GROUP_TITLE_TABLE_DENOMINATOR=\u206A\u206A\u206A\u200D\u200C\u200D\u200C\u200C\u200D\u200B\u200C\u200C\u200B\u200C\u200B\u200C\u200B\u200C\u200C\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200C\u200B\u200D\u200C\u200B\u200D\u200C\u200C\u200D\u200C\u200D\u200B\u200B\u200B\u200B\u200B\u200D\u206ATable\u206A\u206A
84
86
 
85
- T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_LAST_ACTION=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200C\u200C\u200D\u200C\u200D\u200B\u200C\u200C\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200C\u200C\u200C\u200C\u200D\u200B\u200C\u200C\u200B\u200D\u200B\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200D\u200C\u200D\u206ALast Action\: \u206A\u206A
87
+ T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_LAST_ACTION=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200C\u200C\u200D\u200C\u200D\u200B\u200C\u200C\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200C\u200C\u200C\u200C\u200D\u200B\u200C\u200C\u200B\u200D\u200B\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200D\u200C\u200D\u206ALast Action\u206A\u206A
86
88
 
87
- T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_PATCH=\u206A\u206A\u206A\u200C\u200B\u200D\u200B\u200C\u200D\u200C\u200C\u200C\u200D\u200C\u200C\u200C\u200C\u200B\u200D\u200B\u200B\u200B\u200C\u200C\u200D\u200D\u200C\u200D\u200B\u200D\u200D\u200D\u200D\u200B\u200D\u200D\u200B\u200B\u200D\u200C\u200D\u200B\u206AChange\u206A\u206A
89
+ T_MESSAGE_ITEM_SUBTITLE_CREATION_ROW_INDICATOR=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200C\u200C\u200D\u200B\u200C\u200C\u200D\u200D\u200D\u200B\u200D\u200D\u200B\u200B\u200B\u200B\u200C\u200C\u200C\u200C\u200B\u200D\u200C\u200C\u200B\u200D\u200B\u200D\u200B\u200B\u200D\u200D\u200B\u200B\u200D\u200C\u200C\u206A<New>\u206A\u206A
88
90
 
89
91
  T_MESSAGE_ITEM_SUBTITLE_INDICATOR_UNKNOWN=\u206A\u206A\u206A\u200D\u200D\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200B\u200B\u200D\u200B\u200C\u200D\u200B\u200C\u200B\u200C\u200B\u200B\u200D\u200B\u200C\u200C\u200C\u200B\u200D\u200C\u200B\u200D\u200C\u200D\u200D\u200C\u200C\u200C\u200C\u200D\u206AUnknown\u206A\u206A
90
92
 
93
+ T_COLUMN_INDICATOR_IN_TABLE_DEFINITION=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200D\u200B\u200D\u200D\u200B\u200C\u200B\u200D\u200B\u200C\u200C\u200D\u200C\u200C\u200B\u200D\u200C\u200B\u200C\u200B\u200C\u200C\u200D\u200D\u200D\u200D\u200D\u200C\u200D\u200D\u200C\u200D\u200D\u200D\u200C\u206AHidden\u206A\u206A
94
+
91
95
  T_MESSAGE_ITEM_SUBTITLE=\u206A\u206A\u206A\u200D\u200D\u200C\u200D\u200B\u200D\u200B\u200B\u200D\u200B\u200B\u200B\u200D\u200B\u200B\u200B\u200B\u200B\u200C\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200D\u200D\u200D\u200D\u200D\u200B\u200D\u200C\u200D\u200D\u200C\u200D\u200C\u200D\u206ARow\: \u200B\u200B\u200B{0}\u200C\u200C\u200C, Column\: \u200B\u200B\u200B{1}\u200C\u200C\u200C\u206A\u206A
92
96
 
93
97
  C_COMMON_SAPFE_ERROR=\u206A\u206A\u206A\u200D\u200C\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200B\u200B\u200B\u200C\u200D\u200B\u200B\u200D\u200B\u200C\u200D\u200D\u200D\u200D\u200D\u200B\u200D\u200B\u200B\u200D\u200D\u200B\u200B\u200C\u200C\u200D\u200D\u200C\u200C\u206AError\u206A\u206A
@@ -221,6 +225,8 @@ C_DRAFT_EDIT_STATE_DRAFT_LOCKED_FILTER=\u206A\u206A\u206A\u200D\u200D\u200C\u200
221
225
 
222
226
  C_DRAFT_EDIT_STATE_DRAFT_UNSAVED_CHANGES_FILTER=\u206A\u206A\u206A\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200C\u200C\u200C\u200D\u200B\u200D\u200D\u200C\u200C\u200D\u200C\u200B\u200D\u200D\u200D\u200B\u200B\u200B\u200C\u200B\u200C\u200D\u200B\u200D\u200B\u200C\u200B\u206AUnsaved Changes by Another User\u206A\u206A
223
227
 
228
+ C_DRAFT_EDIT_STATE_DRAFT_ALL_HIDING_DRAFTS_FILTER=\u206A\u206A\u206A\u200C\u200D\u200D\u200D\u200D\u200C\u200C\u200B\u200B\u200C\u200B\u200C\u200D\u200B\u200C\u200D\u200B\u200D\u200C\u200B\u200B\u200B\u200B\u200C\u200B\u200B\u200C\u200D\u200D\u200B\u200B\u200C\u200C\u200B\u200B\u200B\u200C\u200C\u200C\u200B\u206AAll (Hiding Drafts)\u206A\u206A
229
+
224
230
  T_COMMON_SAPFE_ACTION_SHARE=\u206A\u206A\u206A\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200D\u200B\u200D\u200D\u200B\u200B\u200B\u200C\u200D\u200B\u200C\u200B\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200D\u200B\u200B\u200C\u200B\u200D\u200C\u200C\u200D\u206AShare\u206A\u206A
225
231
 
226
232
 
@@ -273,3 +279,15 @@ C_KPI_TOOLTIP_NONE=\u206A\u206A\u206A\u200C\u200B\u200D\u200B\u200B\u200C\u200D\
273
279
  C_KPI_TOOLTIP_SUCCESS=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200B\u200B\u200B\u200C\u200D\u200B\u200D\u200D\u200D\u200B\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200B\u200D\u200B\u200C\u200D\u200B\u200D\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u206A\u200B\u200B\u200B{0}\u200C\u200C\u200C \u200B\u200B\u200B{1}\u200C\u200C\u200C\nStatus\: Good\u206A\u206A
274
280
 
275
281
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=\u206A\u206A\u206A\u200D\u200B\u200C\u200B\u200C\u200C\u200C\u200C\u200B\u200B\u200D\u200D\u200B\u200D\u200D\u200D\u200D\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200B\u200B\u200B\u200C\u200C\u200D\u200D\u200D\u200B\u200B\u200C\u200D\u200B\u206A(Multiple units/currencies)\u206A\u206A
282
+
283
+
284
+ C_KPICARD_INDICATOR_TARGET=\u206A\u206A\u206A\u200C\u200D\u200C\u200C\u200B\u200C\u200C\u200D\u200D\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u200D\u200B\u200D\u200C\u200D\u200C\u200D\u200D\u200D\u200C\u200C\u200D\u200B\u200B\u200C\u200B\u200B\u200D\u200C\u200C\u200D\u200C\u206ATarget\u206A\u206A
285
+
286
+ C_KPICARD_INDICATOR_DEVIATION=\u206A\u206A\u206A\u200D\u200C\u200B\u200D\u200C\u200C\u200C\u200B\u200C\u200B\u200D\u200C\u200B\u200D\u200D\u200B\u200D\u200C\u200D\u200B\u200C\u200B\u200C\u200D\u200C\u200C\u200D\u200D\u200C\u200D\u200D\u200C\u200B\u200C\u200B\u200C\u200C\u200B\u200C\u206ADeviation\u206A\u206A
287
+
288
+ C_KPICARD_FILTERSTRING_NOT=\u206A\u206A\u206A\u200D\u200C\u200B\u200B\u200B\u200C\u200C\u200D\u200C\u200D\u200B\u200B\u200B\u200C\u200D\u200C\u200D\u200D\u200B\u200B\u200D\u200C\u200D\u200B\u200B\u200C\u200B\u200C\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u200B\u206Anot \u200B\u200B\u200B{0}\u200C\u200C\u200C\u206A\u206A
289
+
290
+ C_KPICARD_ITEMSLIST=\u206A\u206A\u206A\u200C\u200D\u200D\u200B\u200D\u200B\u200D\u200B\u200D\u200C\u200D\u200C\u200D\u200C\u200C\u200B\u200B\u200C\u200B\u200C\u200C\u200D\u200C\u200B\u200D\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200B\u200B\u200B\u200C\u200B\u200B\u200B\u200D\u206A\u200B\u200B\u200B{0}\u200C\u200C\u200C and \u200B\u200B\u200B{1}\u200C\u200C\u200C\u206A\u206A
291
+
292
+ XMSG=\u206A\u206A\u206A\u200C\u200C\u200C\u200B\u200B\u200D\u200D\u200B\u200D\u200B\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200B\u200B\u200B\u200C\u200D\u200B\u200D\u200B\u200C\u200D\u200D\u200B\u206ATitle of the chart in the KPI card \: <measures> by <dimensions>\u206A\u206A
293
+ C_KPICARD_CHARTTITLE=\u206A\u206A\u206A\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200B\u200C\u200D\u200D\u200B\u200D\u200C\u200B\u200D\u200B\u200B\u200B\u200D\u200B\u200B\u200B\u200C\u200B\u200B\u200C\u200B\u200B\u200B\u200B\u200D\u200D\u200C\u200C\u200D\u200B\u200B\u206A\u200B\u200B\u200B{0}\u200C\u200C\u200C by \u200B\u200B\u200B{1}\u200C\u200C\u200C\u206A\u206A
@@ -273,3 +273,15 @@ C_KPI_TOOLTIP_NONE=1a+ewpnfWzxmOKo3sGHqmA_{0} {1}\nStatus\: None
273
273
  C_KPI_TOOLTIP_SUCCESS=LFD/f7WLtwjW6qjiA9h6Lg_{0} {1}\nStatus\: Good
274
274
 
275
275
  C_KPI_TOOLTIP_AMOUNT_MULTIUNIT=u2sBBhHI1qKX6xi+nAYqMQ_(Multiple units/currencies)
276
+
277
+
278
+ C_KPICARD_INDICATOR_TARGET=gmBYPMStd4W+Pj/98KGAYg_Target
279
+
280
+ C_KPICARD_INDICATOR_DEVIATION=VMgqJlTpjZywYnMpirUqGg_Deviation
281
+
282
+ C_KPICARD_FILTERSTRING_NOT=rqQ/Wy6h/DpBrwdtRIohSQ_not {0}
283
+
284
+ C_KPICARD_ITEMSLIST=QTP2dtHYyIQ9JJoRGAbQAA_{0} and {1}
285
+
286
+ XMSG=r1XCvKHBVOkZgUvEE7+ZFA_Title of the chart in the KPI card \: <measures> by <dimensions>
287
+ C_KPICARD_CHARTTITLE=fxrKs5o/0vMNTnMw8H54Iw_{0} by {1}