@sapui5/sap.fe.base 1.150.0 → 1.152.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.
@@ -66,9 +66,7 @@ type BaseExpression<_T> = {
66
66
 
67
67
  /**
68
68
  * Collection of functions to support the manipulation of UI5 bindings
69
- * @public
70
69
  * @namespace
71
- * @ui5-experimental-since 1.145.0
72
70
  */
73
71
  export const bindingToolkitNamespace = "sap.fe.base.BindingToolkit";
74
72
 
@@ -217,8 +215,6 @@ function isActionParameter(serviceObject: unknown): serviceObject is ActionParam
217
215
 
218
216
  /**
219
217
  * A binding expression that evaluates to type T.
220
- * @public
221
- * @ui5-experimental-since 1.145.0
222
218
  */
223
219
  export type BindingToolkitExpression<T> =
224
220
  | UnresolvablePathExpression
@@ -837,15 +833,9 @@ export function getBindingPathExpressionFromPartnerNavigation(path: string, part
837
833
  return pathInModel(path);
838
834
  }
839
835
 
840
- if (path.indexOf("/") > 0) {
841
- // Check if the navigation property is correct:
842
- const splitPathForNavigationProperty = path.split("/");
843
- const navigationPath = splitPathForNavigationProperty[0];
844
- if (partnerPath && partnerPath === navigationPath) {
845
- return pathInModel(splitPathForNavigationProperty.slice(1).join("/"));
846
- } else {
847
- return unresolvableExpression;
848
- }
836
+ if (partnerPath && path.startsWith(partnerPath + "/")) {
837
+ // Remove the partner navigation path prefix
838
+ return pathInModel(path.substring(partnerPath.length + 1));
849
839
  } else {
850
840
  return unresolvableExpression;
851
841
  }
@@ -2981,6 +2971,42 @@ export function wrapBindingExpression(
2981
2971
  }
2982
2972
  }
2983
2973
 
2974
+ /**
2975
+ * Resolves a binding expression by substituting path values from preloaded data.
2976
+ * Uses transformRecursively to replace PathInModel expressions with constants where values are available.
2977
+ * Only resolves paths from the default (empty) model name.
2978
+ * @template T The target type
2979
+ * @param expression The binding toolkit expression to resolve
2980
+ * @param preloadedValues A flat object with property paths as keys and their values
2981
+ * @returns The resolved expression with PathInModel expressions replaced by constants where possible
2982
+ */
2983
+ export function resolveWithPreloadedValues<T extends PrimitiveType>(
2984
+ expression: ExpressionOrPrimitive<T>,
2985
+ preloadedValues: Record<string, unknown>
2986
+ ): BindingToolkitExpression<T> {
2987
+ const expr = wrapPrimitive(expression);
2988
+
2989
+ return transformRecursively(
2990
+ expr,
2991
+ "PathInModel",
2992
+ (pathExpression: PathInModelExpression<unknown>) => {
2993
+ // Only resolve paths from the default model (empty model name)
2994
+ if (pathExpression.modelName && pathExpression.modelName !== "") {
2995
+ return pathExpression;
2996
+ }
2997
+
2998
+ // Check if this path is in preloaded values
2999
+ if (preloadedValues.hasOwnProperty(pathExpression.path)) {
3000
+ return constant(preloadedValues[pathExpression.path] as T);
3001
+ }
3002
+
3003
+ // Path not in preloaded values, return as-is
3004
+ return pathExpression;
3005
+ },
3006
+ true
3007
+ ) as BindingToolkitExpression<T>;
3008
+ }
3009
+
2984
3010
  /**
2985
3011
  * Compile an expression into an expression binding.
2986
3012
  * @template T The target type
@@ -193,8 +193,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
193
193
  * Shorthand for the BindingToolkit.bindState function with the current state object.
194
194
  * @param path A property in the state object
195
195
  * @returns The binding toolkit expression for the state
196
- * @public
197
- * @ui5-experimental-since 1.145.0
198
196
  */;
199
197
  _proto.bindState = function bindState(path) {
200
198
  return BindingToolkit.bindState(this.state, path);
@@ -218,8 +216,6 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
218
216
  * Framework hook for state change handling.
219
217
  * Subclasses can override this method to react to state changes.
220
218
  * @param _changedProps List of changed property names
221
- * @public
222
- * @ui5-experimental-since 1.145.0
223
219
  */;
224
220
  _proto.onStateChange = async function onStateChange(_changedProps) {};
225
221
  return BuildingBlockBase;
@@ -241,4 +237,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
241
237
  }), _class2)) || _class);
242
238
  return BuildingBlockBase;
243
239
  }, false);
244
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwic2luZ3VsYXJOYW1lIiwiX2RlYzQiLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInNldHRpbmdzIiwib3RoZXJzIiwic2NvcGUiLCJfdGhpcyIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfb2xkRG9tUmVmIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRQbGFjZWhvbGRlciIsIl9ybSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwiY29udGVudCIsImdldFZpc2libGUiLCJJbnZpc2libGVSZW5kZXJlciIsInJlbmRlckNvbnRyb2wiLCJzZXRCaW5kaW5nQ29udGV4dCIsImNvbnRleHQiLCJtb2RlbCIsInVuZGVmaW5lZCIsImludmFsaWRhdGUiLCJiaW5kUHJvcGVydHkiLCJuYW1lIiwiYmluZGluZ0luZm8iLCJwcm9wZXJ0eU1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0eSIsImJpbmRhYmxlIiwiZ3JvdXAiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZXZlbnQiLCJkb21SZWYiLCJnZXREb21SZWYiLCJXZWFrUmVmIiwic3VmZml4Iiwib0NvbnRlbnQiLCJkZXJlZiIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRGb2N1c0RvbVJlZiIsImVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUiLCJfb0VsZW1lbnQiLCJtQXJpYVByb3BzIiwib1BhcmVudCIsImdldFBhcmVudCIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwiaXNBIiwiZ2V0SWRGb3JMYWJlbCIsImFkZFN0eWxlQ2xhc3MiLCJzdHlsZUNsYXNzIiwicmVtb3ZlU3R5bGVDbGFzcyIsImJpbmRTdGF0ZSIsInBhdGgiLCJCaW5kaW5nVG9vbGtpdCIsInN0YXRlIiwic3luY1N0YXRlUHJvcGVydHkiLCJwcm9wTmFtZSIsInNvdXJjZSIsInByb3BlcnR5IiwicHJvcEJpbmRpbmciLCJnZXRNb2RlbCIsIlNUQVRFX01PREVMX05BTUUiLCJhdHRhY2hDaGFuZ2UiLCJvblN0YXRlQ2hhbmdlIiwiX2NoYW5nZWRQcm9wcyIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tCYXNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBQcmltaXRpdmVUeXBlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgKiBhcyBCaW5kaW5nVG9vbGtpdCBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgR2VuZXJpY1N0YXRlLCBQcm9wZXJ0aWVzT2YsIFN0YXRlT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVN0YXRlLCBkZWZpbmVVSTVDbGFzcywgU1RBVEVfTU9ERUxfTkFNRSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEludmlzaWJsZVJlbmRlcmVyIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVSZW5kZXJlclwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NpYmlsaXR5SW5mbyB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9ja0Jhc2U8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sLCBLIGV4dGVuZHMgb2JqZWN0ID0ge30+IHtcblx0Ly8gRm9yY2UgYSBzdGF0ZSB1cGRhdGVcblx0X3VwZGF0ZVN0YXRlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYnVpbGRpbmcgYmxvY2tzLlxuICogVGhpcyBjb250YWlucyB0aGUgbG93LWxldmVsIGZ1bmN0aW9uYWxpdHkgb2YgaGF2aW5nIGEgY29udGVudCBhZ2dyZWdhdGlvbiBhbmQgaGFuZGxpbmcgdGhlIHJlbmRlcmluZyBvZiB0aGUgY29udGVudCB3aXRob3V0IGFuIGFjdHVhbCBET00gZWxlbWVudC48YnIvPlxuICogVGhlIGJ1aWxkaW5nIGJsb2NrIGFsc28gZGVmaW5lcyBhIHN0YXRlIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIHRoZSBzdGF0ZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2suPGJyLz5cbiAqIEFjY2Vzc2liaWxpdHkgYW5kIGNsYXNzZXMgaW5mb3JtYXRpb24gYXJlIGZvcndhcmRlZCB0byB0aGUgY29udGVudCBjb250cm9sLjxici8+XG4gKiBUaGlzIGNsYXNzIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5LCBpdCdzIHRoZXJlIGZvciBpbnRlcm5hbCB1c2Ugb25seSAoYW5kIGRvY3VtZW50YXRpb24pXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5iYXNlLkJ1aWxkaW5nQmxvY2tCYXNlXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudCA9IENvbnRyb2wsIEsgZXh0ZW5kcyBvYmplY3QgPSB7fT4gZXh0ZW5kcyBDb250cm9sIHtcblx0LyoqXG5cdCAqIE9wdGlvbmFsIGNvbnRlbnQgb2YgZ2VuZXJpYyB0eXBlIFQuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgaG9sZHMgdGhlIG1haW4gZGF0YSBvciBwYXlsb2FkIGZvciB0aGUgY29udGFpbmluZyBvYmplY3QuXG5cdCAqIFdoZW4gdW5kZWZpbmVkLCBpdCBpbmRpY2F0ZXMgdGhhdCBubyBjb250ZW50IGhhcyBiZWVuIHNldCBvciBpcyBhdmFpbGFibGUuXG5cdCAqIFRoZSBzcGVjaWZpYyB0eXBlIGFuZCBzdHJ1Y3R1cmUgb2YgdGhlIGNvbnRlbnQgZGVwZW5kcyBvbiB0aGUgZ2VuZXJpYyB0eXBlIHBhcmFtZXRlciBULlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkVsZW1lbnRcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudD86IFQ7XG5cblx0LyoqXG5cdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSwgc2luZ3VsYXJOYW1lOiBcImFyaWFMYWJlbGxlZEJ5XCIgfSlcblx0YXJpYUxhYmVsbGVkQnkhOiBzdHJpbmdbXTtcblxuXHQvKipcblx0ICogVGhlIGN1cnJlbnQgc3RhdGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBob2xkcyB0aGUgc3RhdGUgZGF0YSBtYW5hZ2VkIGJ5IHRoZSBjb21wb25lbnQsIHdpdGggdGhlIHR5cGVcblx0ICogZGV0ZXJtaW5lZCBieSB0aGUgZ2VuZXJpYyBwYXJhbWV0ZXIgSy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlITogU3RhdGVPZjxLPjtcblxuXHRnZXRQbGFjZWhvbGRlcihfcm06IFJlbmRlck1hbmFnZXIpOiB2b2lkIHt9XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBzY29wZT86IG9iamVjdCkge1xuXHRcdGlmICh0eXBlb2Ygc2V0dGluZ3MgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdG90aGVycyA/Pz0ge307XG5cdFx0XHRvdGhlcnMuaWQgPSBzZXR0aW5ncztcblx0XHR9XG5cdFx0Ly8gU2NvcGUgaXMgZGVmaW5lZCBhbmQgaXMgdGhlcmUsIGJ1dCBzb21laG93IGRvZXNuJ3QgYXBwZWFyIG9uIGFsbCB0aGUgY2hpbGRyZW4gb2YgTWFuYWdlZE9iamVjdFxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0c3VwZXIoc2V0dGluZ3MgYXMgdW5rbm93biBhcyBzdHJpbmcsIG90aGVycywgc2NvcGUpO1xuXHR9XG5cblx0cHJpdmF0ZSBfb2xkRG9tUmVmOiBXZWFrUmVmPEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XG5cblx0c3RhdGljIHJlbmRlcjxUIGV4dGVuZHMgQ29udHJvbD4ob1JtOiBSZW5kZXJNYW5hZ2VyLCBvQ29udHJvbDogQnVpbGRpbmdCbG9ja0Jhc2U8VD4pOiB2b2lkIHtcblx0XHRpZiAoIW9Db250cm9sLmNvbnRlbnQgfHwgb0NvbnRyb2wuZ2V0VmlzaWJsZSgpID09PSBmYWxzZSkge1xuXHRcdFx0Ly8gSWYgdGhlcmUgaXMgbm8gY29udGVudCwgd2UgcmVuZGVyIGFuIGludmlzaWJsZSByZW5kZXJlciB0byBhdm9pZCB0aGUgY29udHJvbCBiZWluZ1xuXHRcdFx0SW52aXNpYmxlUmVuZGVyZXIucmVuZGVyKG9SbSwgb0NvbnRyb2wpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvQ29udHJvbC5nZXRQbGFjZWhvbGRlcj8uKG9SbSk7XG5cdFx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50KTtcblx0XHR9XG5cdH1cblxuXHRzZXRCaW5kaW5nQ29udGV4dChjb250ZXh0OiBDb250ZXh0LCBtb2RlbD86IHN0cmluZyk6IHRoaXMge1xuXHRcdHN1cGVyLnNldEJpbmRpbmdDb250ZXh0KGNvbnRleHQsIG1vZGVsKTtcblx0XHRpZiAobW9kZWwgPT09IHVuZGVmaW5lZCAmJiBjb250ZXh0KSB7XG5cdFx0XHR0aGlzLmludmFsaWRhdGUoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogT3ZlcnJpZGUgdGhlIGJpbmRQcm9wZXJ0eSB0byBkZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIHByb3BlcnR5IGlzIGEgYmluZGluZyBpbmZvLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0ZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gYmluZGluZ0luZm8gVGhlIGJpbmRpbmcgaW5mb1xuXHQgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIGZvciBjaGFpbmluZ1xuXHQgKi9cblx0b3ZlcnJpZGUgYmluZFByb3BlcnR5KG5hbWU6IHN0cmluZywgYmluZGluZ0luZm86IFByb3BlcnR5QmluZGluZ0luZm8pOiB0aGlzIHtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFkYXRhID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnR5KG5hbWUpO1xuXHRcdGlmIChwcm9wZXJ0eU1ldGFkYXRhPy5iaW5kYWJsZSA9PT0gZmFsc2UgJiYgcHJvcGVydHlNZXRhZGF0YS5ncm91cCA9PT0gXCJEYXRhXCIpIHtcblx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtuYW1lXSA9IGJpbmRpbmdJbmZvO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5iaW5kUHJvcGVydHkobmFtZSwgYmluZGluZ0luZm8pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vc2V0IHRoZSBvbGQgZG9tIHJlZlxuXHRvdmVycmlkZSBvbkFmdGVyUmVuZGVyaW5nKGV2ZW50OiBKUXVlcnkuRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBkb21SZWYgPSB0aGlzLmdldERvbVJlZigpO1xuXHRcdGlmIChkb21SZWYpIHtcblx0XHRcdHRoaXMuX29sZERvbVJlZiA9IG5ldyBXZWFrUmVmKGRvbVJlZik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX29sZERvbVJlZiA9IG51bGw7XG5cdFx0fVxuXHRcdHN1cGVyLm9uQWZ0ZXJSZW5kZXJpbmcoZXZlbnQpO1xuXHR9XG5cblx0b3ZlcnJpZGUgZ2V0RG9tUmVmKHN1ZmZpeD86IHN0cmluZyk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRsZXQgZG9tUmVmOiBFbGVtZW50IHwgbnVsbCA9IG9Db250ZW50Py5nZXREb21SZWYoc3VmZml4KSA/PyBzdXBlci5nZXREb21SZWYoc3VmZml4KTtcblx0XHRpZiAoIWRvbVJlZiAmJiAhc3VmZml4KSB7XG5cdFx0XHRkb21SZWYgPSB0aGlzLl9vbGREb21SZWY/LmRlcmVmKCkgPz8gbnVsbDtcblx0XHRcdGlmIChkb21SZWYpIHtcblx0XHRcdFx0cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRvbVJlZi5pZCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBkb21SZWY7XG5cdH1cblxuXHRvdmVycmlkZSBnZXRGb2N1c0RvbVJlZigpOiBFbGVtZW50IHwgbnVsbCB7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0cmV0dXJuIG9Db250ZW50ID8gb0NvbnRlbnQuZ2V0Rm9jdXNEb21SZWYoKSA6IHN1cGVyLmdldEZvY3VzRG9tUmVmKCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBhc2tzIHVwIHRoZSBjb250cm9sIHRyZWUgdG8gZW5oYW5jZSB0aGUgYWNjZXNzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgY29udHJvbC5cblx0ICogQHBhcmFtIF9vRWxlbWVudCBUaGUgZWxlbWVudCB0byBlbmhhbmNlXG5cdCAqIEBwYXJhbSBtQXJpYVByb3BzIFRoZSBjdXJyZW50IGFyaWEgcHJvcGVydGllc1xuXHQgKiBAcmV0dXJucyBUaGUgZW5oYW5jZWQgYXJpYSBwcm9wZXJ0aWVzXG5cdCAqL1xuXHRvdmVycmlkZSBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKF9vRWxlbWVudDogb2JqZWN0LCBtQXJpYVByb3BzOiBvYmplY3QpOiBvYmplY3Qge1xuXHRcdGNvbnN0IG9QYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuXG5cdFx0aWYgKG9QYXJlbnQgJiYgKG9QYXJlbnQgYXMgTWFuYWdlZE9iamVjdCAmIHsgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZT86IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUpIHtcblx0XHRcdC8vIGZvcndhcmQgIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUgY2FsbCB0byB0aGUgcGFyZW50XG5cdFx0XHQob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlOiBGdW5jdGlvbiB9KS5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKF9vRWxlbWVudCwgbUFyaWFQcm9wcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1BcmlhUHJvcHM7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiAoaWYgYXZhaWxhYmxlIG9uIHRoZSBjb25jcmV0ZSBjb250cm9sKSBwcm92aWRlcyB0aGUgY3VycmVudCBhY2Nlc3NpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBXaGVuIHRoZSBjb250ZW50IGNvbnRyb2wgaXMgbm90IHZpc2libGUsIG51bGwgaXMgcmV0dXJuZWQgc28gdGhhdCBzYXAubS5UYWJsZSBjYW4gc2V0IGFyaWEtbGFiZWw9XCJcIlxuXHQgKiBvbiB0aGUgZ3JpZGNlbGwsIHByZXZlbnRpbmcgc2NyZWVuIHJlYWRlciB2aXJ0dWFsIGJ1ZmZlciBibGVlZC10aHJvdWdoIChBQ0MtMjY0LjEgLyBXQ0FHIDIuMSBMZXZlbCBBKS5cblx0ICogQHJldHVybnMgVGhlIGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gZm9yIHRoZSBjb250cm9sLCBvciBudWxsIChjYXN0KSB3aGVuIGNvbnRlbnQgaXMgbm90IHZpc2libGUuXG5cdCAqL1xuXHRvdmVycmlkZSBnZXRBY2Nlc3NpYmlsaXR5SW5mbygpOiBBY2Nlc3NpYmlsaXR5SW5mbyB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPENvbnRyb2w+KFwic2FwLnVpLmNvcmUuQ29udHJvbFwiKSAmJiB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8pIHtcblx0XHRcdGlmICghdGhpcy5jb250ZW50LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHQvLyBDb250ZW50IGlzIG5vdCB2aXNpYmxlOiByZXR1cm4gbnVsbCAoY2FzdCB0byBwcmVzZXJ2ZSB0aGUgdHlwZSBjb250cmFjdCkgc28gdGhhdFxuXHRcdFx0XHQvLyBzYXAubS5UYWJsZSByZWNlaXZlcyBhIGZhbHN5IHZhbHVlIGFuZCBzZXRzIGFyaWEtbGFiZWw9XCJcIiBvbiB0aGUgZ3JpZGNlbGwsXG5cdFx0XHRcdC8vIHByZXZlbnRpbmcgc2NyZWVuIHJlYWRlciB2aXJ0dWFsIGJ1ZmZlciBibGVlZC10aHJvdWdoIChBQ0MtMjY0LjEgLyBXQ0FHIDIuMSBMZXZlbCBBKS5cblx0XHRcdFx0cmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBBY2Nlc3NpYmlsaXR5SW5mbztcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKTtcblx0XHR9XG5cdFx0cmV0dXJuIHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0b3ZlcnJpZGUgZ2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0SWRGb3JMYWJlbCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdG92ZXJyaWRlIGFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzczogc3RyaW5nKTogdGhpcyB7XG5cdFx0KHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIENvbnRyb2wpPy5hZGRTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHN1cGVyLmFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRvdmVycmlkZSByZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IHN0cmluZyk6IHRoaXMge1xuXHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBDb250cm9sKT8ucmVtb3ZlU3R5bGVDbGFzcyhzdHlsZUNsYXNzKTtcblx0XHRzdXBlci5yZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3J0aGFuZCBmb3IgdGhlIEJpbmRpbmdUb29sa2l0LmJpbmRTdGF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGggQSBwcm9wZXJ0eSBpbiB0aGUgc3RhdGUgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3IgdGhlIHN0YXRlXG5cdCAqIEBwdWJsaWNcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xNDUuMFxuXHQgKi9cblx0cHVibGljIGJpbmRTdGF0ZTxTVCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KHBhdGg6IGtleW9mIEspOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248U1Q+IHtcblx0XHRyZXR1cm4gQmluZGluZ1Rvb2xraXQuYmluZFN0YXRlKHRoaXMuc3RhdGUgYXMgSywgcGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogU3luY2hyb25pemVzIGEgc3RhdGUgcHJvcGVydHkgd2l0aCBhbm90aGVyIGJ1aWxkaW5nIGJsb2NrJ3Mgc3RhdGUgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSBwcm9wTmFtZSBOYW1lIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgY3VycmVudCBzdGF0ZSBvYmplY3Rcblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIGJ1aWxkaW5nIGJsb2NrXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgaW4gdGhlIHNvdXJjZSBidWlsZGluZyBibG9jaydzIHN0YXRlIG9iamVjdFxuXHQgKi9cblx0cHVibGljIHN5bmNTdGF0ZVByb3BlcnR5KHByb3BOYW1lOiBzdHJpbmcsIHNvdXJjZTogQnVpbGRpbmdCbG9ja0Jhc2UsIHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHQodGhpcy5zdGF0ZSBhcyBHZW5lcmljU3RhdGUpW3Byb3BOYW1lXSA9IChzb3VyY2Uuc3RhdGUgYXMgR2VuZXJpY1N0YXRlKVtwcm9wZXJ0eV07XG5cdFx0Y29uc3QgcHJvcEJpbmRpbmcgPSBzb3VyY2UuZ2V0TW9kZWwoU1RBVEVfTU9ERUxfTkFNRSk/LmJpbmRQcm9wZXJ0eShcIi9cIiArIHByb3BlcnR5KTtcblx0XHRwcm9wQmluZGluZz8uYXR0YWNoQ2hhbmdlKCgpOiB2b2lkID0+IHtcblx0XHRcdCh0aGlzLnN0YXRlIGFzIEdlbmVyaWNTdGF0ZSlbcHJvcE5hbWVdID0gKHNvdXJjZS5zdGF0ZSBhcyBHZW5lcmljU3RhdGUpW3Byb3BlcnR5XTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGcmFtZXdvcmsgaG9vayBmb3Igc3RhdGUgY2hhbmdlIGhhbmRsaW5nLlxuXHQgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byByZWFjdCB0byBzdGF0ZSBjaGFuZ2VzLlxuXHQgKiBAcGFyYW0gX2NoYW5nZWRQcm9wcyBMaXN0IG9mIGNoYW5nZWQgcHJvcGVydHkgbmFtZXNcblx0ICogQHB1YmxpY1xuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjE0NS4wXG5cdCAqL1xuXHRwcm90ZWN0ZWQgb25TdGF0ZUNoYW5nZShfY2hhbmdlZFByb3BzOiBzdHJpbmdbXSk6IHZvaWQ7XG5cblx0cHJvdGVjdGVkIGFzeW5jIG9uU3RhdGVDaGFuZ2UoX2NoYW5nZWRQcm9wczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHt9XG59XG5cbmV4cG9ydCBkZWZhdWx0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
240
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwic2luZ3VsYXJOYW1lIiwiX2RlYzQiLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInNldHRpbmdzIiwib3RoZXJzIiwic2NvcGUiLCJfdGhpcyIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfb2xkRG9tUmVmIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRQbGFjZWhvbGRlciIsIl9ybSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwiY29udGVudCIsImdldFZpc2libGUiLCJJbnZpc2libGVSZW5kZXJlciIsInJlbmRlckNvbnRyb2wiLCJzZXRCaW5kaW5nQ29udGV4dCIsImNvbnRleHQiLCJtb2RlbCIsInVuZGVmaW5lZCIsImludmFsaWRhdGUiLCJiaW5kUHJvcGVydHkiLCJuYW1lIiwiYmluZGluZ0luZm8iLCJwcm9wZXJ0eU1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0eSIsImJpbmRhYmxlIiwiZ3JvdXAiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZXZlbnQiLCJkb21SZWYiLCJnZXREb21SZWYiLCJXZWFrUmVmIiwic3VmZml4Iiwib0NvbnRlbnQiLCJkZXJlZiIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRGb2N1c0RvbVJlZiIsImVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUiLCJfb0VsZW1lbnQiLCJtQXJpYVByb3BzIiwib1BhcmVudCIsImdldFBhcmVudCIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwiaXNBIiwiZ2V0SWRGb3JMYWJlbCIsImFkZFN0eWxlQ2xhc3MiLCJzdHlsZUNsYXNzIiwicmVtb3ZlU3R5bGVDbGFzcyIsImJpbmRTdGF0ZSIsInBhdGgiLCJCaW5kaW5nVG9vbGtpdCIsInN0YXRlIiwic3luY1N0YXRlUHJvcGVydHkiLCJwcm9wTmFtZSIsInNvdXJjZSIsInByb3BlcnR5IiwicHJvcEJpbmRpbmciLCJnZXRNb2RlbCIsIlNUQVRFX01PREVMX05BTUUiLCJhdHRhY2hDaGFuZ2UiLCJvblN0YXRlQ2hhbmdlIiwiX2NoYW5nZWRQcm9wcyIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tCYXNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBQcmltaXRpdmVUeXBlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgKiBhcyBCaW5kaW5nVG9vbGtpdCBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgR2VuZXJpY1N0YXRlLCBQcm9wZXJ0aWVzT2YsIFN0YXRlT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVN0YXRlLCBkZWZpbmVVSTVDbGFzcywgU1RBVEVfTU9ERUxfTkFNRSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEludmlzaWJsZVJlbmRlcmVyIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVSZW5kZXJlclwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NpYmlsaXR5SW5mbyB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9ja0Jhc2U8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sLCBLIGV4dGVuZHMgb2JqZWN0ID0ge30+IHtcblx0Ly8gRm9yY2UgYSBzdGF0ZSB1cGRhdGVcblx0X3VwZGF0ZVN0YXRlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYnVpbGRpbmcgYmxvY2tzLlxuICogVGhpcyBjb250YWlucyB0aGUgbG93LWxldmVsIGZ1bmN0aW9uYWxpdHkgb2YgaGF2aW5nIGEgY29udGVudCBhZ2dyZWdhdGlvbiBhbmQgaGFuZGxpbmcgdGhlIHJlbmRlcmluZyBvZiB0aGUgY29udGVudCB3aXRob3V0IGFuIGFjdHVhbCBET00gZWxlbWVudC48YnIvPlxuICogVGhlIGJ1aWxkaW5nIGJsb2NrIGFsc28gZGVmaW5lcyBhIHN0YXRlIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIHRoZSBzdGF0ZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2suPGJyLz5cbiAqIEFjY2Vzc2liaWxpdHkgYW5kIGNsYXNzZXMgaW5mb3JtYXRpb24gYXJlIGZvcndhcmRlZCB0byB0aGUgY29udGVudCBjb250cm9sLjxici8+XG4gKiBUaGlzIGNsYXNzIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5LCBpdCdzIHRoZXJlIGZvciBpbnRlcm5hbCB1c2Ugb25seSAoYW5kIGRvY3VtZW50YXRpb24pXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5iYXNlLkJ1aWxkaW5nQmxvY2tCYXNlXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudCA9IENvbnRyb2wsIEsgZXh0ZW5kcyBvYmplY3QgPSB7fT4gZXh0ZW5kcyBDb250cm9sIHtcblx0LyoqXG5cdCAqIE9wdGlvbmFsIGNvbnRlbnQgb2YgZ2VuZXJpYyB0eXBlIFQuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgaG9sZHMgdGhlIG1haW4gZGF0YSBvciBwYXlsb2FkIGZvciB0aGUgY29udGFpbmluZyBvYmplY3QuXG5cdCAqIFdoZW4gdW5kZWZpbmVkLCBpdCBpbmRpY2F0ZXMgdGhhdCBubyBjb250ZW50IGhhcyBiZWVuIHNldCBvciBpcyBhdmFpbGFibGUuXG5cdCAqIFRoZSBzcGVjaWZpYyB0eXBlIGFuZCBzdHJ1Y3R1cmUgb2YgdGhlIGNvbnRlbnQgZGVwZW5kcyBvbiB0aGUgZ2VuZXJpYyB0eXBlIHBhcmFtZXRlciBULlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkVsZW1lbnRcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudD86IFQ7XG5cblx0LyoqXG5cdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSwgc2luZ3VsYXJOYW1lOiBcImFyaWFMYWJlbGxlZEJ5XCIgfSlcblx0YXJpYUxhYmVsbGVkQnkhOiBzdHJpbmdbXTtcblxuXHQvKipcblx0ICogVGhlIGN1cnJlbnQgc3RhdGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBob2xkcyB0aGUgc3RhdGUgZGF0YSBtYW5hZ2VkIGJ5IHRoZSBjb21wb25lbnQsIHdpdGggdGhlIHR5cGVcblx0ICogZGV0ZXJtaW5lZCBieSB0aGUgZ2VuZXJpYyBwYXJhbWV0ZXIgSy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlITogU3RhdGVPZjxLPjtcblxuXHRnZXRQbGFjZWhvbGRlcihfcm06IFJlbmRlck1hbmFnZXIpOiB2b2lkIHt9XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBzY29wZT86IG9iamVjdCkge1xuXHRcdGlmICh0eXBlb2Ygc2V0dGluZ3MgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdG90aGVycyA/Pz0ge307XG5cdFx0XHRvdGhlcnMuaWQgPSBzZXR0aW5ncztcblx0XHR9XG5cdFx0Ly8gU2NvcGUgaXMgZGVmaW5lZCBhbmQgaXMgdGhlcmUsIGJ1dCBzb21laG93IGRvZXNuJ3QgYXBwZWFyIG9uIGFsbCB0aGUgY2hpbGRyZW4gb2YgTWFuYWdlZE9iamVjdFxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0c3VwZXIoc2V0dGluZ3MgYXMgdW5rbm93biBhcyBzdHJpbmcsIG90aGVycywgc2NvcGUpO1xuXHR9XG5cblx0cHJpdmF0ZSBfb2xkRG9tUmVmOiBXZWFrUmVmPEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XG5cblx0c3RhdGljIHJlbmRlcjxUIGV4dGVuZHMgQ29udHJvbD4ob1JtOiBSZW5kZXJNYW5hZ2VyLCBvQ29udHJvbDogQnVpbGRpbmdCbG9ja0Jhc2U8VD4pOiB2b2lkIHtcblx0XHRpZiAoIW9Db250cm9sLmNvbnRlbnQgfHwgb0NvbnRyb2wuZ2V0VmlzaWJsZSgpID09PSBmYWxzZSkge1xuXHRcdFx0Ly8gSWYgdGhlcmUgaXMgbm8gY29udGVudCwgd2UgcmVuZGVyIGFuIGludmlzaWJsZSByZW5kZXJlciB0byBhdm9pZCB0aGUgY29udHJvbCBiZWluZ1xuXHRcdFx0SW52aXNpYmxlUmVuZGVyZXIucmVuZGVyKG9SbSwgb0NvbnRyb2wpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvQ29udHJvbC5nZXRQbGFjZWhvbGRlcj8uKG9SbSk7XG5cdFx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50KTtcblx0XHR9XG5cdH1cblxuXHRzZXRCaW5kaW5nQ29udGV4dChjb250ZXh0OiBDb250ZXh0LCBtb2RlbD86IHN0cmluZyk6IHRoaXMge1xuXHRcdHN1cGVyLnNldEJpbmRpbmdDb250ZXh0KGNvbnRleHQsIG1vZGVsKTtcblx0XHRpZiAobW9kZWwgPT09IHVuZGVmaW5lZCAmJiBjb250ZXh0KSB7XG5cdFx0XHR0aGlzLmludmFsaWRhdGUoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogT3ZlcnJpZGUgdGhlIGJpbmRQcm9wZXJ0eSB0byBkZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIHByb3BlcnR5IGlzIGEgYmluZGluZyBpbmZvLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0ZSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gYmluZGluZ0luZm8gVGhlIGJpbmRpbmcgaW5mb1xuXHQgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIGZvciBjaGFpbmluZ1xuXHQgKi9cblx0b3ZlcnJpZGUgYmluZFByb3BlcnR5KG5hbWU6IHN0cmluZywgYmluZGluZ0luZm86IFByb3BlcnR5QmluZGluZ0luZm8pOiB0aGlzIHtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFkYXRhID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnR5KG5hbWUpO1xuXHRcdGlmIChwcm9wZXJ0eU1ldGFkYXRhPy5iaW5kYWJsZSA9PT0gZmFsc2UgJiYgcHJvcGVydHlNZXRhZGF0YS5ncm91cCA9PT0gXCJEYXRhXCIpIHtcblx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtuYW1lXSA9IGJpbmRpbmdJbmZvO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5iaW5kUHJvcGVydHkobmFtZSwgYmluZGluZ0luZm8pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vc2V0IHRoZSBvbGQgZG9tIHJlZlxuXHRvdmVycmlkZSBvbkFmdGVyUmVuZGVyaW5nKGV2ZW50OiBKUXVlcnkuRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBkb21SZWYgPSB0aGlzLmdldERvbVJlZigpO1xuXHRcdGlmIChkb21SZWYpIHtcblx0XHRcdHRoaXMuX29sZERvbVJlZiA9IG5ldyBXZWFrUmVmKGRvbVJlZik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX29sZERvbVJlZiA9IG51bGw7XG5cdFx0fVxuXHRcdHN1cGVyLm9uQWZ0ZXJSZW5kZXJpbmcoZXZlbnQpO1xuXHR9XG5cblx0b3ZlcnJpZGUgZ2V0RG9tUmVmKHN1ZmZpeD86IHN0cmluZyk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRsZXQgZG9tUmVmOiBFbGVtZW50IHwgbnVsbCA9IG9Db250ZW50Py5nZXREb21SZWYoc3VmZml4KSA/PyBzdXBlci5nZXREb21SZWYoc3VmZml4KTtcblx0XHRpZiAoIWRvbVJlZiAmJiAhc3VmZml4KSB7XG5cdFx0XHRkb21SZWYgPSB0aGlzLl9vbGREb21SZWY/LmRlcmVmKCkgPz8gbnVsbDtcblx0XHRcdGlmIChkb21SZWYpIHtcblx0XHRcdFx0cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRvbVJlZi5pZCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBkb21SZWY7XG5cdH1cblxuXHRvdmVycmlkZSBnZXRGb2N1c0RvbVJlZigpOiBFbGVtZW50IHwgbnVsbCB7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0cmV0dXJuIG9Db250ZW50ID8gb0NvbnRlbnQuZ2V0Rm9jdXNEb21SZWYoKSA6IHN1cGVyLmdldEZvY3VzRG9tUmVmKCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBhc2tzIHVwIHRoZSBjb250cm9sIHRyZWUgdG8gZW5oYW5jZSB0aGUgYWNjZXNzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgY29udHJvbC5cblx0ICogQHBhcmFtIF9vRWxlbWVudCBUaGUgZWxlbWVudCB0byBlbmhhbmNlXG5cdCAqIEBwYXJhbSBtQXJpYVByb3BzIFRoZSBjdXJyZW50IGFyaWEgcHJvcGVydGllc1xuXHQgKiBAcmV0dXJucyBUaGUgZW5oYW5jZWQgYXJpYSBwcm9wZXJ0aWVzXG5cdCAqL1xuXHRvdmVycmlkZSBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKF9vRWxlbWVudDogb2JqZWN0LCBtQXJpYVByb3BzOiBvYmplY3QpOiBvYmplY3Qge1xuXHRcdGNvbnN0IG9QYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuXG5cdFx0aWYgKG9QYXJlbnQgJiYgKG9QYXJlbnQgYXMgTWFuYWdlZE9iamVjdCAmIHsgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZT86IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUpIHtcblx0XHRcdC8vIGZvcndhcmQgIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUgY2FsbCB0byB0aGUgcGFyZW50XG5cdFx0XHQob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlOiBGdW5jdGlvbiB9KS5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKF9vRWxlbWVudCwgbUFyaWFQcm9wcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1BcmlhUHJvcHM7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiAoaWYgYXZhaWxhYmxlIG9uIHRoZSBjb25jcmV0ZSBjb250cm9sKSBwcm92aWRlcyB0aGUgY3VycmVudCBhY2Nlc3NpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBXaGVuIHRoZSBjb250ZW50IGNvbnRyb2wgaXMgbm90IHZpc2libGUsIG51bGwgaXMgcmV0dXJuZWQgc28gdGhhdCBzYXAubS5UYWJsZSBjYW4gc2V0IGFyaWEtbGFiZWw9XCJcIlxuXHQgKiBvbiB0aGUgZ3JpZGNlbGwsIHByZXZlbnRpbmcgc2NyZWVuIHJlYWRlciB2aXJ0dWFsIGJ1ZmZlciBibGVlZC10aHJvdWdoIChBQ0MtMjY0LjEgLyBXQ0FHIDIuMSBMZXZlbCBBKS5cblx0ICogQHJldHVybnMgVGhlIGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gZm9yIHRoZSBjb250cm9sLCBvciBudWxsIChjYXN0KSB3aGVuIGNvbnRlbnQgaXMgbm90IHZpc2libGUuXG5cdCAqL1xuXHRvdmVycmlkZSBnZXRBY2Nlc3NpYmlsaXR5SW5mbygpOiBBY2Nlc3NpYmlsaXR5SW5mbyB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPENvbnRyb2w+KFwic2FwLnVpLmNvcmUuQ29udHJvbFwiKSAmJiB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8pIHtcblx0XHRcdGlmICghdGhpcy5jb250ZW50LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHQvLyBDb250ZW50IGlzIG5vdCB2aXNpYmxlOiByZXR1cm4gbnVsbCAoY2FzdCB0byBwcmVzZXJ2ZSB0aGUgdHlwZSBjb250cmFjdCkgc28gdGhhdFxuXHRcdFx0XHQvLyBzYXAubS5UYWJsZSByZWNlaXZlcyBhIGZhbHN5IHZhbHVlIGFuZCBzZXRzIGFyaWEtbGFiZWw9XCJcIiBvbiB0aGUgZ3JpZGNlbGwsXG5cdFx0XHRcdC8vIHByZXZlbnRpbmcgc2NyZWVuIHJlYWRlciB2aXJ0dWFsIGJ1ZmZlciBibGVlZC10aHJvdWdoIChBQ0MtMjY0LjEgLyBXQ0FHIDIuMSBMZXZlbCBBKS5cblx0XHRcdFx0cmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBBY2Nlc3NpYmlsaXR5SW5mbztcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKTtcblx0XHR9XG5cdFx0cmV0dXJuIHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0b3ZlcnJpZGUgZ2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0SWRGb3JMYWJlbCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdG92ZXJyaWRlIGFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzczogc3RyaW5nKTogdGhpcyB7XG5cdFx0KHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIENvbnRyb2wpPy5hZGRTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHN1cGVyLmFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRvdmVycmlkZSByZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IHN0cmluZyk6IHRoaXMge1xuXHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBDb250cm9sKT8ucmVtb3ZlU3R5bGVDbGFzcyhzdHlsZUNsYXNzKTtcblx0XHRzdXBlci5yZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3J0aGFuZCBmb3IgdGhlIEJpbmRpbmdUb29sa2l0LmJpbmRTdGF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGggQSBwcm9wZXJ0eSBpbiB0aGUgc3RhdGUgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3IgdGhlIHN0YXRlXG5cdCAqL1xuXHRwdWJsaWMgYmluZFN0YXRlPFNUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4ocGF0aDoga2V5b2YgSyk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxTVD4ge1xuXHRcdHJldHVybiBCaW5kaW5nVG9vbGtpdC5iaW5kU3RhdGUodGhpcy5zdGF0ZSBhcyBLLCBwYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTeW5jaHJvbml6ZXMgYSBzdGF0ZSBwcm9wZXJ0eSB3aXRoIGFub3RoZXIgYnVpbGRpbmcgYmxvY2sncyBzdGF0ZSBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIHByb3BOYW1lIE5hbWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdFxuXHQgKiBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2UgYnVpbGRpbmcgYmxvY2tcblx0ICogQHBhcmFtIHByb3BlcnR5IFRoZSBwcm9wZXJ0eSBpbiB0aGUgc291cmNlIGJ1aWxkaW5nIGJsb2NrJ3Mgc3RhdGUgb2JqZWN0XG5cdCAqL1xuXHRwdWJsaWMgc3luY1N0YXRlUHJvcGVydHkocHJvcE5hbWU6IHN0cmluZywgc291cmNlOiBCdWlsZGluZ0Jsb2NrQmFzZSwgcHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuXHRcdCh0aGlzLnN0YXRlIGFzIEdlbmVyaWNTdGF0ZSlbcHJvcE5hbWVdID0gKHNvdXJjZS5zdGF0ZSBhcyBHZW5lcmljU3RhdGUpW3Byb3BlcnR5XTtcblx0XHRjb25zdCBwcm9wQmluZGluZyA9IHNvdXJjZS5nZXRNb2RlbChTVEFURV9NT0RFTF9OQU1FKT8uYmluZFByb3BlcnR5KFwiL1wiICsgcHJvcGVydHkpO1xuXHRcdHByb3BCaW5kaW5nPy5hdHRhY2hDaGFuZ2UoKCk6IHZvaWQgPT4ge1xuXHRcdFx0KHRoaXMuc3RhdGUgYXMgR2VuZXJpY1N0YXRlKVtwcm9wTmFtZV0gPSAoc291cmNlLnN0YXRlIGFzIEdlbmVyaWNTdGF0ZSlbcHJvcGVydHldO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZyYW1ld29yayBob29rIGZvciBzdGF0ZSBjaGFuZ2UgaGFuZGxpbmcuXG5cdCAqIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHJlYWN0IHRvIHN0YXRlIGNoYW5nZXMuXG5cdCAqIEBwYXJhbSBfY2hhbmdlZFByb3BzIExpc3Qgb2YgY2hhbmdlZCBwcm9wZXJ0eSBuYW1lc1xuXHQgKi9cblx0cHJvdGVjdGVkIG9uU3RhdGVDaGFuZ2UoX2NoYW5nZWRQcm9wczogc3RyaW5nW10pOiB2b2lkO1xuXG5cdHByb3RlY3RlZCBhc3luYyBvblN0YXRlQ2hhbmdlKF9jaGFuZ2VkUHJvcHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7fVxufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrQmFzZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBYUE7RUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEs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
@@ -197,8 +197,6 @@ class BuildingBlockBase<T extends UI5Element = Control, K extends object = {}> e
197
197
  * Shorthand for the BindingToolkit.bindState function with the current state object.
198
198
  * @param path A property in the state object
199
199
  * @returns The binding toolkit expression for the state
200
- * @public
201
- * @ui5-experimental-since 1.145.0
202
200
  */
203
201
  public bindState<ST extends PrimitiveType>(path: keyof K): BindingToolkitExpression<ST> {
204
202
  return BindingToolkit.bindState(this.state as K, path);
@@ -222,8 +220,6 @@ class BuildingBlockBase<T extends UI5Element = Control, K extends object = {}> e
222
220
  * Framework hook for state change handling.
223
221
  * Subclasses can override this method to react to state changes.
224
222
  * @param _changedProps List of changed property names
225
- * @public
226
- * @ui5-experimental-since 1.145.0
227
223
  */
228
224
  protected onStateChange(_changedProps: string[]): void;
229
225