@sapui5/sap.fe.base 1.143.0 → 1.145.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.
@@ -6,6 +6,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3;
9
+ var STATE_MODEL_NAME = ClassSupport.STATE_MODEL_NAME;
9
10
  var defineUI5Class = ClassSupport.defineUI5Class;
10
11
  var defineState = ClassSupport.defineState;
11
12
  var association = ClassSupport.association;
@@ -15,11 +16,13 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
15
16
  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
16
17
  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
17
18
  function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
19
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
20
  /**
19
21
  * Base class for building blocks.
20
- * This contains the low level functionality of having a content aggregation and handling the rendering of the content without an actual DOM element.
21
- * The building block also defines a state object that can be used to store the state of the building block.
22
- * Accessibility and classes information are forwarded to the content control.
22
+ * This contains the low-level functionality of having a content aggregation and handling the rendering of the content without an actual DOM element.<br/>
23
+ * The building block also defines a state object that can be used to store the state of the building block.<br/>
24
+ * Accessibility and classes information are forwarded to the content control.<br/>
25
+ * This class is not meant to be used directly, it's there for internal use only (and documentation)
23
26
  * @public
24
27
  */
25
28
  let BuildingBlockBase = (_dec = defineUI5Class("sap.fe.base.BuildingBlockBase"), _dec2 = aggregation({
@@ -41,25 +44,43 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
41
44
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
42
45
  // @ts-ignore
43
46
  _this = _Control.call(this, settings, others, scope) || this;
47
+ /**
48
+ * Optional content of generic type T.
49
+ *
50
+ * This property holds the main data or payload for the containing object.
51
+ * When undefined, it indicates that no content has been set or is available.
52
+ * The specific type and structure of the content depends on the generic type parameter T.
53
+ * @public
54
+ */
44
55
  _initializerDefineProperty(_this, "content", _descriptor, _this);
45
56
  /**
46
57
  * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
58
+ * @public
47
59
  */
48
60
  _initializerDefineProperty(_this, "ariaLabelledBy", _descriptor2, _this);
61
+ /**
62
+ * The current state value of the component.
63
+ *
64
+ * This property holds the state data managed by the component, with the type
65
+ * determined by the generic parameter K.
66
+ * @public
67
+ */
49
68
  _initializerDefineProperty(_this, "state", _descriptor3, _this);
50
69
  _this._oldDomRef = null;
51
70
  return _this;
52
71
  }
53
72
  _inheritsLoose(BuildingBlockBase, _Control);
73
+ var _proto = BuildingBlockBase.prototype;
74
+ _proto.getPlaceholder = function getPlaceholder(_rm) {};
54
75
  BuildingBlockBase.render = function render(oRm, oControl) {
55
76
  if (!oControl.content || oControl.getVisible() === false) {
56
77
  // If there is no content, we render an invisible renderer to avoid the control being
57
78
  InvisibleRenderer.render(oRm, oControl);
58
79
  } else {
80
+ oControl.getPlaceholder?.(oRm);
59
81
  oRm.renderControl(oControl.content);
60
82
  }
61
83
  };
62
- var _proto = BuildingBlockBase.prototype;
63
84
  _proto.setBindingContext = function setBindingContext(context, model) {
64
85
  _Control.prototype.setBindingContext.call(this, context, model);
65
86
  if (model === undefined && context) {
@@ -165,10 +186,35 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
165
186
  * Shorthand for the BindingToolkit.bindState function with the current state object.
166
187
  * @param path A property in the state object
167
188
  * @returns The binding toolkit expression for the state
189
+ * @public
190
+ * @ui5-experimental-since 1.145.0
168
191
  */;
169
192
  _proto.bindState = function bindState(path) {
170
193
  return BindingToolkit.bindState(this.state, path);
171
- };
194
+ }
195
+
196
+ /**
197
+ * Synchronizes a state property with another building block's state property.
198
+ * @param propName Name of the property in the current state object
199
+ * @param source The source building block
200
+ * @param property The property in the source building block's state object
201
+ */;
202
+ _proto.syncStateProperty = function syncStateProperty(propName, source, property) {
203
+ this.state[propName] = source.state[property];
204
+ const propBinding = source.getModel(STATE_MODEL_NAME)?.bindProperty("/" + property);
205
+ propBinding?.attachChange(() => {
206
+ this.state[propName] = source.state[property];
207
+ });
208
+ }
209
+
210
+ /**
211
+ * Framework hook for state change handling.
212
+ * Subclasses can override this method to react to state changes.
213
+ * @param _changedProps List of changed property names
214
+ * @public
215
+ * @ui5-experimental-since 1.145.0
216
+ */;
217
+ _proto.onStateChange = async function onStateChange(_changedProps) {};
172
218
  return BuildingBlockBase;
173
219
  }(Control), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "content", [_dec2], {
174
220
  configurable: true,
@@ -188,4 +234,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
188
234
  }), _class2)) || _class);
189
235
  return BuildingBlockBase;
190
236
  }, false);
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwic2luZ3VsYXJOYW1lIiwiX2RlYzQiLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInNldHRpbmdzIiwib3RoZXJzIiwic2NvcGUiLCJfdGhpcyIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfb2xkRG9tUmVmIiwiX2luaGVyaXRzTG9vc2UiLCJyZW5kZXIiLCJvUm0iLCJvQ29udHJvbCIsImNvbnRlbnQiLCJnZXRWaXNpYmxlIiwiSW52aXNpYmxlUmVuZGVyZXIiLCJyZW5kZXJDb250cm9sIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0QmluZGluZ0NvbnRleHQiLCJjb250ZXh0IiwibW9kZWwiLCJ1bmRlZmluZWQiLCJpbnZhbGlkYXRlIiwiYmluZFByb3BlcnR5IiwibmFtZSIsImJpbmRpbmdJbmZvIiwicHJvcGVydHlNZXRhZGF0YSIsImdldE1ldGFkYXRhIiwiZ2V0UHJvcGVydHkiLCJiaW5kYWJsZSIsImdyb3VwIiwib25BZnRlclJlbmRlcmluZyIsImV2ZW50IiwiZG9tUmVmIiwiZ2V0RG9tUmVmIiwiV2Vha1JlZiIsInN1ZmZpeCIsIm9Db250ZW50IiwiZGVyZWYiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0Rm9jdXNEb21SZWYiLCJlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIiwiX29FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJnZXRQYXJlbnQiLCJnZXRBY2Nlc3NpYmlsaXR5SW5mbyIsImFjY2Vzc2liaWxpdHlJbmZvIiwiaXNBIiwiZ2V0SWRGb3JMYWJlbCIsImFkZFN0eWxlQ2xhc3MiLCJzdHlsZUNsYXNzIiwicmVtb3ZlU3R5bGVDbGFzcyIsImJpbmRTdGF0ZSIsInBhdGgiLCJCaW5kaW5nVG9vbGtpdCIsInN0YXRlIiwiQ29udHJvbCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9ja0Jhc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25zdGFudEV4cHJlc3Npb24sIFBhdGhJbk1vZGVsRXhwcmVzc2lvbiwgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0ICogYXMgQmluZGluZ1Rvb2xraXQgZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiwgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lU3RhdGUsIGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgSW52aXNpYmxlUmVuZGVyZXIgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVJlbmRlcmVyXCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IEFjY2Vzc2liaWxpdHlJbmZvIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5cbmludGVyZmFjZSBCdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudCA9IENvbnRyb2wsIEsgZXh0ZW5kcyBvYmplY3QgPSB7fT4ge1xuXHQvLyBGb3JjZSBhIHN0YXRlIHVwZGF0ZVxuXHRfdXBkYXRlU3RhdGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBidWlsZGluZyBibG9ja3MuXG4gKiBUaGlzIGNvbnRhaW5zIHRoZSBsb3cgbGV2ZWwgZnVuY3Rpb25hbGl0eSBvZiBoYXZpbmcgYSBjb250ZW50IGFnZ3JlZ2F0aW9uIGFuZCBoYW5kbGluZyB0aGUgcmVuZGVyaW5nIG9mIHRoZSBjb250ZW50IHdpdGhvdXQgYW4gYWN0dWFsIERPTSBlbGVtZW50LlxuICogVGhlIGJ1aWxkaW5nIGJsb2NrIGFsc28gZGVmaW5lcyBhIHN0YXRlIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIHRoZSBzdGF0ZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2suXG4gKiBBY2Nlc3NpYmlsaXR5IGFuZCBjbGFzc2VzIGluZm9ybWF0aW9uIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmJhc2UuQnVpbGRpbmdCbG9ja0Jhc2VcIilcbmNsYXNzIEJ1aWxkaW5nQmxvY2tCYXNlPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkVsZW1lbnRcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudD86IFQ7XG5cblx0LyoqXG5cdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUsIHNpbmd1bGFyTmFtZTogXCJhcmlhTGFiZWxsZWRCeVwiIH0pXG5cdGFyaWFMYWJlbGxlZEJ5ITogc3RyaW5nW107XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlITogU3RhdGVPZjxLPjtcblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIG90aGVycz86IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIHNjb3BlPzogb2JqZWN0KSB7XG5cdFx0aWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0b3RoZXJzID8/PSB7fTtcblx0XHRcdG90aGVycy5pZCA9IHNldHRpbmdzO1xuXHRcdH1cblx0XHQvLyBTY29wZSBpcyBkZWZpbmVkIGFuZCBpcyB0aGVyZSwgYnV0IHNvbWVob3cgZG9lc24ndCBhcHBlYXIgb24gYWxsIHRoZSBjaGlsZHJlbiBvZiBNYW5hZ2VkT2JqZWN0XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRzdXBlcihzZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZywgb3RoZXJzLCBzY29wZSk7XG5cdH1cblxuXHRwcml2YXRlIF9vbGREb21SZWY6IFdlYWtSZWY8RWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuXHRzdGF0aWMgcmVuZGVyPFQgZXh0ZW5kcyBDb250cm9sPihvUm06IFJlbmRlck1hbmFnZXIsIG9Db250cm9sOiBCdWlsZGluZ0Jsb2NrQmFzZTxUPik6IHZvaWQge1xuXHRcdGlmICghb0NvbnRyb2wuY29udGVudCB8fCBvQ29udHJvbC5nZXRWaXNpYmxlKCkgPT09IGZhbHNlKSB7XG5cdFx0XHQvLyBJZiB0aGVyZSBpcyBubyBjb250ZW50LCB3ZSByZW5kZXIgYW4gaW52aXNpYmxlIHJlbmRlcmVyIHRvIGF2b2lkIHRoZSBjb250cm9sIGJlaW5nXG5cdFx0XHRJbnZpc2libGVSZW5kZXJlci5yZW5kZXIob1JtLCBvQ29udHJvbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHRcdH1cblx0fVxuXG5cdHNldEJpbmRpbmdDb250ZXh0KGNvbnRleHQ6IENvbnRleHQsIG1vZGVsPzogc3RyaW5nKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0QmluZGluZ0NvbnRleHQoY29udGV4dCwgbW9kZWwpO1xuXHRcdGlmIChtb2RlbCA9PT0gdW5kZWZpbmVkICYmIGNvbnRleHQpIHtcblx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBPdmVycmlkZSB0aGUgYmluZFByb3BlcnR5IHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVyZSB0aGUgcHJvcGVydHkgaXMgYSBiaW5kaW5nIGluZm8uXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBiaW5kaW5nSW5mbyBUaGUgYmluZGluZyBpbmZvXG5cdCAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgZm9yIGNoYWluaW5nXG5cdCAqL1xuXHRvdmVycmlkZSBiaW5kUHJvcGVydHkobmFtZTogc3RyaW5nLCBiaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHRoaXMge1xuXHRcdGNvbnN0IHByb3BlcnR5TWV0YWRhdGEgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydHkobmFtZSk7XG5cdFx0aWYgKHByb3BlcnR5TWV0YWRhdGE/LmJpbmRhYmxlID09PSBmYWxzZSAmJiBwcm9wZXJ0eU1ldGFkYXRhLmdyb3VwID09PSBcIkRhdGFcIikge1xuXHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW25hbWVdID0gYmluZGluZ0luZm87XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmJpbmRQcm9wZXJ0eShuYW1lLCBiaW5kaW5nSW5mbyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Ly9zZXQgdGhlIG9sZCBkb20gcmVmXG5cdG92ZXJyaWRlIG9uQWZ0ZXJSZW5kZXJpbmcoZXZlbnQ6IEpRdWVyeS5FdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGRvbVJlZiA9IHRoaXMuZ2V0RG9tUmVmKCk7XG5cdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbmV3IFdlYWtSZWYoZG9tUmVmKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbnVsbDtcblx0XHR9XG5cdFx0c3VwZXIub25BZnRlclJlbmRlcmluZyhldmVudCk7XG5cdH1cblxuXHRvdmVycmlkZSBnZXREb21SZWYoc3VmZml4Pzogc3RyaW5nKTogRWxlbWVudCB8IG51bGwge1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdGxldCBkb21SZWY6IEVsZW1lbnQgfCBudWxsID0gb0NvbnRlbnQ/LmdldERvbVJlZihzdWZmaXgpID8/IHN1cGVyLmdldERvbVJlZihzdWZmaXgpO1xuXHRcdGlmICghZG9tUmVmICYmICFzdWZmaXgpIHtcblx0XHRcdGRvbVJlZiA9IHRoaXMuX29sZERvbVJlZj8uZGVyZWYoKSA/PyBudWxsO1xuXHRcdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0XHRyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZG9tUmVmLmlkKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGRvbVJlZjtcblx0fVxuXG5cdG92ZXJyaWRlIGdldEZvY3VzRG9tUmVmKCk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRyZXR1cm4gb0NvbnRlbnQgPyBvQ29udGVudC5nZXRGb2N1c0RvbVJlZigpIDogc3VwZXIuZ2V0Rm9jdXNEb21SZWYoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGFza3MgdXAgdGhlIGNvbnRyb2wgdHJlZSB0byBlbmhhbmNlIHRoZSBhY2Nlc3NpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gX29FbGVtZW50IFRoZSBlbGVtZW50IHRvIGVuaGFuY2Vcblx0ICogQHBhcmFtIG1BcmlhUHJvcHMgVGhlIGN1cnJlbnQgYXJpYSBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIFRoZSBlbmhhbmNlZCBhcmlhIHByb3BlcnRpZXNcblx0ICovXG5cdG92ZXJyaWRlIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0Ly8gZm9yd2FyZCAgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSBjYWxsIHRvIHRoZSBwYXJlbnRcblx0XHRcdChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU6IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50LCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIChpZiBhdmFpbGFibGUgb24gdGhlIGNvbmNyZXRlIGNvbnRyb2wpIHByb3ZpZGVzIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgc3RhdGUgb2YgdGhlIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIFRoZSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29udHJvbC5cblx0ICovXG5cdG92ZXJyaWRlIGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IEFjY2Vzc2liaWxpdHlJbmZvIHtcblx0XHRsZXQgYWNjZXNzaWJpbGl0eUluZm8gPSB7fTtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8Q29udHJvbD4oXCJzYXAudWkuY29yZS5Db250cm9sXCIpICYmIHRoaXMuY29udGVudC5nZXRBY2Nlc3NpYmlsaXR5SW5mbykge1xuXHRcdFx0YWNjZXNzaWJpbGl0eUluZm8gPSB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjY2Vzc2liaWxpdHlJbmZvO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0b3ZlcnJpZGUgZ2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0SWRGb3JMYWJlbCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdG92ZXJyaWRlIGFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzczogc3RyaW5nKTogdGhpcyB7XG5cdFx0KHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIENvbnRyb2wpPy5hZGRTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHN1cGVyLmFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRvdmVycmlkZSByZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IHN0cmluZyk6IHRoaXMge1xuXHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBDb250cm9sKT8ucmVtb3ZlU3R5bGVDbGFzcyhzdHlsZUNsYXNzKTtcblx0XHRzdXBlci5yZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3J0aGFuZCBmb3IgdGhlIEJpbmRpbmdUb29sa2l0LmJpbmRTdGF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGggQSBwcm9wZXJ0eSBpbiB0aGUgc3RhdGUgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3IgdGhlIHN0YXRlXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYmluZFN0YXRlPFNUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4ocGF0aDoga2V5b2YgSyk6IFBhdGhJbk1vZGVsRXhwcmVzc2lvbjxTVD4gfCBDb25zdGFudEV4cHJlc3Npb248U1Q+IHtcblx0XHRyZXR1cm4gQmluZGluZ1Rvb2xraXQuYmluZFN0YXRlKHRoaXMuc3RhdGUgYXMgSywgcGF0aCk7XG5cdH1cbn1cblxuZXhwb3J0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QUN0QyxPQUFPLEVBQUVxQyxHQUFHLENBQVUscUJBQXFCLENBQUMsRUFBRTtRQUN0RCxPQUFPLElBQUksQ0FBQ3JDLE9BQU8sQ0FBQ3NDLGFBQWEsQ0FBQyxDQUFDO01BQ3BDO01BQ0EsT0FBTyxFQUFFO0lBQ1YsQ0FBQztJQUFBbEMsTUFBQSxDQUVRbUMsYUFBYSxHQUF0QixTQUFTQSxhQUFhQSxDQUFDQyxVQUFrQixFQUFRO01BQy9DLElBQUksQ0FBQ3hDLE9BQU8sRUFBeUJ1QyxhQUFhLENBQUNDLFVBQVUsQ0FBQztNQUMvRHhELFFBQUEsQ0FBQXFCLFNBQUEsQ0FBTWtDLGFBQWEsQ0FBQWpELElBQUEsT0FBQ2tELFVBQVU7TUFDOUIsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUFBcEMsTUFBQSxDQUVRcUMsZ0JBQWdCLEdBQXpCLFNBQVNBLGdCQUFnQkEsQ0FBQ0QsVUFBa0IsRUFBUTtNQUNsRCxJQUFJLENBQUN4QyxPQUFPLEVBQXlCeUMsZ0JBQWdCLENBQUNELFVBQVUsQ0FBQztNQUNsRXhELFFBQUEsQ0FBQXFCLFNBQUEsQ0FBTW9DLGdCQUFnQixDQUFBbkQsSUFBQSxPQUFDa0QsVUFBVTtNQUNqQyxPQUFPLElBQUk7SUFDWjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQXBDLE1BQUEsQ0FLVXNDLFNBQVMsR0FBbkIsU0FBVUEsU0FBU0EsQ0FBMkJDLElBQWEsRUFBc0Q7TUFDaEgsT0FBT0MsY0FBYyxDQUFDRixTQUFTLENBQUMsSUFBSSxDQUFDRyxLQUFLLEVBQU9GLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBQUEsT0FBQTFFLGlCQUFBO0VBQUEsRUFwSnFGNkUsT0FBTyxHQUFBdEQsV0FBQSxHQUFBdUQseUJBQUEsQ0FBQWhFLE9BQUEsQ0FBQXNCLFNBQUEsY0FBQWpDLEtBQUE7SUFBQTRFLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBMUQsWUFBQSxHQUFBc0QseUJBQUEsQ0FBQWhFLE9BQUEsQ0FBQXNCLFNBQUEscUJBQUE1QixLQUFBO0lBQUF1RSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXpELFlBQUEsR0FBQXFELHlCQUFBLENBQUFoRSxPQUFBLENBQUFzQixTQUFBLFlBQUF6QixLQUFBO0lBQUFvRSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBFLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BdUovRWIsaUJBQWlCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwic2luZ3VsYXJOYW1lIiwiX2RlYzQiLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInNldHRpbmdzIiwib3RoZXJzIiwic2NvcGUiLCJfdGhpcyIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfb2xkRG9tUmVmIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRQbGFjZWhvbGRlciIsIl9ybSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwiY29udGVudCIsImdldFZpc2libGUiLCJJbnZpc2libGVSZW5kZXJlciIsInJlbmRlckNvbnRyb2wiLCJzZXRCaW5kaW5nQ29udGV4dCIsImNvbnRleHQiLCJtb2RlbCIsInVuZGVmaW5lZCIsImludmFsaWRhdGUiLCJiaW5kUHJvcGVydHkiLCJuYW1lIiwiYmluZGluZ0luZm8iLCJwcm9wZXJ0eU1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0eSIsImJpbmRhYmxlIiwiZ3JvdXAiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZXZlbnQiLCJkb21SZWYiLCJnZXREb21SZWYiLCJXZWFrUmVmIiwic3VmZml4Iiwib0NvbnRlbnQiLCJkZXJlZiIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRGb2N1c0RvbVJlZiIsImVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUiLCJfb0VsZW1lbnQiLCJtQXJpYVByb3BzIiwib1BhcmVudCIsImdldFBhcmVudCIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwiYWNjZXNzaWJpbGl0eUluZm8iLCJpc0EiLCJnZXRJZEZvckxhYmVsIiwiYWRkU3R5bGVDbGFzcyIsInN0eWxlQ2xhc3MiLCJyZW1vdmVTdHlsZUNsYXNzIiwiYmluZFN0YXRlIiwicGF0aCIsIkJpbmRpbmdUb29sa2l0Iiwic3RhdGUiLCJzeW5jU3RhdGVQcm9wZXJ0eSIsInByb3BOYW1lIiwic291cmNlIiwicHJvcGVydHkiLCJwcm9wQmluZGluZyIsImdldE1vZGVsIiwiU1RBVEVfTU9ERUxfTkFNRSIsImF0dGFjaENoYW5nZSIsIm9uU3RhdGVDaGFuZ2UiLCJfY2hhbmdlZFByb3BzIiwiQ29udHJvbCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9ja0Jhc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCAqIGFzIEJpbmRpbmdUb29sa2l0IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBHZW5lcmljU3RhdGUsIFByb3BlcnRpZXNPZiwgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lU3RhdGUsIGRlZmluZVVJNUNsYXNzLCBTVEFURV9NT0RFTF9OQU1FIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgSW52aXNpYmxlUmVuZGVyZXIgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVJlbmRlcmVyXCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IEFjY2Vzc2liaWxpdHlJbmZvIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmludGVyZmFjZSBCdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudCA9IENvbnRyb2wsIEsgZXh0ZW5kcyBvYmplY3QgPSB7fT4ge1xuXHQvLyBGb3JjZSBhIHN0YXRlIHVwZGF0ZVxuXHRfdXBkYXRlU3RhdGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBidWlsZGluZyBibG9ja3MuXG4gKiBUaGlzIGNvbnRhaW5zIHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25hbGl0eSBvZiBoYXZpbmcgYSBjb250ZW50IGFnZ3JlZ2F0aW9uIGFuZCBoYW5kbGluZyB0aGUgcmVuZGVyaW5nIG9mIHRoZSBjb250ZW50IHdpdGhvdXQgYW4gYWN0dWFsIERPTSBlbGVtZW50Ljxici8+XG4gKiBUaGUgYnVpbGRpbmcgYmxvY2sgYWxzbyBkZWZpbmVzIGEgc3RhdGUgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgdGhlIHN0YXRlIG9mIHRoZSBidWlsZGluZyBibG9jay48YnIvPlxuICogQWNjZXNzaWJpbGl0eSBhbmQgY2xhc3NlcyBpbmZvcm1hdGlvbiBhcmUgZm9yd2FyZGVkIHRvIHRoZSBjb250ZW50IGNvbnRyb2wuPGJyLz5cbiAqIFRoaXMgY2xhc3MgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgZGlyZWN0bHksIGl0J3MgdGhlcmUgZm9yIGludGVybmFsIHVzZSBvbmx5IChhbmQgZG9jdW1lbnRhdGlvbilcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmJhc2UuQnVpbGRpbmdCbG9ja0Jhc2VcIilcbmNsYXNzIEJ1aWxkaW5nQmxvY2tCYXNlPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIENvbnRyb2wge1xuXHQvKipcblx0ICogT3B0aW9uYWwgY29udGVudCBvZiBnZW5lcmljIHR5cGUgVC5cblx0ICpcblx0ICogVGhpcyBwcm9wZXJ0eSBob2xkcyB0aGUgbWFpbiBkYXRhIG9yIHBheWxvYWQgZm9yIHRoZSBjb250YWluaW5nIG9iamVjdC5cblx0ICogV2hlbiB1bmRlZmluZWQsIGl0IGluZGljYXRlcyB0aGF0IG5vIGNvbnRlbnQgaGFzIGJlZW4gc2V0IG9yIGlzIGF2YWlsYWJsZS5cblx0ICogVGhlIHNwZWNpZmljIHR5cGUgYW5kIHN0cnVjdHVyZSBvZiB0aGUgY29udGVudCBkZXBlbmRzIG9uIHRoZSBnZW5lcmljIHR5cGUgcGFyYW1ldGVyIFQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuRWxlbWVudFwiLCBtdWx0aXBsZTogZmFsc2UsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRjb250ZW50PzogVDtcblxuXHQvKipcblx0ICogQXNzb2NpYXRpb24gdG8gY29udHJvbHMgLyBJRHMgdGhhdCBsYWJlbCB0aGlzIGNvbnRyb2wgKHNlZSBXQUktQVJJQSBhdHRyaWJ1dGUgYXJpYS1sYWJlbGxlZGJ5KS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlLCBzaW5ndWxhck5hbWU6IFwiYXJpYUxhYmVsbGVkQnlcIiB9KVxuXHRhcmlhTGFiZWxsZWRCeSE6IHN0cmluZ1tdO1xuXG5cdC8qKlxuXHQgKiBUaGUgY3VycmVudCBzdGF0ZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuXHQgKlxuXHQgKiBUaGlzIHByb3BlcnR5IGhvbGRzIHRoZSBzdGF0ZSBkYXRhIG1hbmFnZWQgYnkgdGhlIGNvbXBvbmVudCwgd2l0aCB0aGUgdHlwZVxuXHQgKiBkZXRlcm1pbmVkIGJ5IHRoZSBnZW5lcmljIHBhcmFtZXRlciBLLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAZGVmaW5lU3RhdGUoKVxuXHRwcm90ZWN0ZWQgc3RhdGUhOiBTdGF0ZU9mPEs+O1xuXG5cdGdldFBsYWNlaG9sZGVyKF9ybTogUmVuZGVyTWFuYWdlcik6IHZvaWQge31cblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIG90aGVycz86IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIHNjb3BlPzogb2JqZWN0KSB7XG5cdFx0aWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0b3RoZXJzID8/PSB7fTtcblx0XHRcdG90aGVycy5pZCA9IHNldHRpbmdzO1xuXHRcdH1cblx0XHQvLyBTY29wZSBpcyBkZWZpbmVkIGFuZCBpcyB0aGVyZSwgYnV0IHNvbWVob3cgZG9lc24ndCBhcHBlYXIgb24gYWxsIHRoZSBjaGlsZHJlbiBvZiBNYW5hZ2VkT2JqZWN0XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRzdXBlcihzZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZywgb3RoZXJzLCBzY29wZSk7XG5cdH1cblxuXHRwcml2YXRlIF9vbGREb21SZWY6IFdlYWtSZWY8RWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuXHRzdGF0aWMgcmVuZGVyPFQgZXh0ZW5kcyBDb250cm9sPihvUm06IFJlbmRlck1hbmFnZXIsIG9Db250cm9sOiBCdWlsZGluZ0Jsb2NrQmFzZTxUPik6IHZvaWQge1xuXHRcdGlmICghb0NvbnRyb2wuY29udGVudCB8fCBvQ29udHJvbC5nZXRWaXNpYmxlKCkgPT09IGZhbHNlKSB7XG5cdFx0XHQvLyBJZiB0aGVyZSBpcyBubyBjb250ZW50LCB3ZSByZW5kZXIgYW4gaW52aXNpYmxlIHJlbmRlcmVyIHRvIGF2b2lkIHRoZSBjb250cm9sIGJlaW5nXG5cdFx0XHRJbnZpc2libGVSZW5kZXJlci5yZW5kZXIob1JtLCBvQ29udHJvbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Db250cm9sLmdldFBsYWNlaG9sZGVyPy4ob1JtKTtcblx0XHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHRcdH1cblx0fVxuXG5cdHNldEJpbmRpbmdDb250ZXh0KGNvbnRleHQ6IENvbnRleHQsIG1vZGVsPzogc3RyaW5nKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0QmluZGluZ0NvbnRleHQoY29udGV4dCwgbW9kZWwpO1xuXHRcdGlmIChtb2RlbCA9PT0gdW5kZWZpbmVkICYmIGNvbnRleHQpIHtcblx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBPdmVycmlkZSB0aGUgYmluZFByb3BlcnR5IHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVyZSB0aGUgcHJvcGVydHkgaXMgYSBiaW5kaW5nIGluZm8uXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBiaW5kaW5nSW5mbyBUaGUgYmluZGluZyBpbmZvXG5cdCAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgZm9yIGNoYWluaW5nXG5cdCAqL1xuXHRvdmVycmlkZSBiaW5kUHJvcGVydHkobmFtZTogc3RyaW5nLCBiaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHRoaXMge1xuXHRcdGNvbnN0IHByb3BlcnR5TWV0YWRhdGEgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydHkobmFtZSk7XG5cdFx0aWYgKHByb3BlcnR5TWV0YWRhdGE/LmJpbmRhYmxlID09PSBmYWxzZSAmJiBwcm9wZXJ0eU1ldGFkYXRhLmdyb3VwID09PSBcIkRhdGFcIikge1xuXHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW25hbWVdID0gYmluZGluZ0luZm87XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmJpbmRQcm9wZXJ0eShuYW1lLCBiaW5kaW5nSW5mbyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Ly9zZXQgdGhlIG9sZCBkb20gcmVmXG5cdG92ZXJyaWRlIG9uQWZ0ZXJSZW5kZXJpbmcoZXZlbnQ6IEpRdWVyeS5FdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGRvbVJlZiA9IHRoaXMuZ2V0RG9tUmVmKCk7XG5cdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbmV3IFdlYWtSZWYoZG9tUmVmKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbnVsbDtcblx0XHR9XG5cdFx0c3VwZXIub25BZnRlclJlbmRlcmluZyhldmVudCk7XG5cdH1cblxuXHRvdmVycmlkZSBnZXREb21SZWYoc3VmZml4Pzogc3RyaW5nKTogRWxlbWVudCB8IG51bGwge1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdGxldCBkb21SZWY6IEVsZW1lbnQgfCBudWxsID0gb0NvbnRlbnQ/LmdldERvbVJlZihzdWZmaXgpID8/IHN1cGVyLmdldERvbVJlZihzdWZmaXgpO1xuXHRcdGlmICghZG9tUmVmICYmICFzdWZmaXgpIHtcblx0XHRcdGRvbVJlZiA9IHRoaXMuX29sZERvbVJlZj8uZGVyZWYoKSA/PyBudWxsO1xuXHRcdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0XHRyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZG9tUmVmLmlkKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGRvbVJlZjtcblx0fVxuXG5cdG92ZXJyaWRlIGdldEZvY3VzRG9tUmVmKCk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRyZXR1cm4gb0NvbnRlbnQgPyBvQ29udGVudC5nZXRGb2N1c0RvbVJlZigpIDogc3VwZXIuZ2V0Rm9jdXNEb21SZWYoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGFza3MgdXAgdGhlIGNvbnRyb2wgdHJlZSB0byBlbmhhbmNlIHRoZSBhY2Nlc3NpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gX29FbGVtZW50IFRoZSBlbGVtZW50IHRvIGVuaGFuY2Vcblx0ICogQHBhcmFtIG1BcmlhUHJvcHMgVGhlIGN1cnJlbnQgYXJpYSBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIFRoZSBlbmhhbmNlZCBhcmlhIHByb3BlcnRpZXNcblx0ICovXG5cdG92ZXJyaWRlIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0Ly8gZm9yd2FyZCAgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSBjYWxsIHRvIHRoZSBwYXJlbnRcblx0XHRcdChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU6IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50LCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIChpZiBhdmFpbGFibGUgb24gdGhlIGNvbmNyZXRlIGNvbnRyb2wpIHByb3ZpZGVzIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgc3RhdGUgb2YgdGhlIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIFRoZSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29udHJvbC5cblx0ICovXG5cdG92ZXJyaWRlIGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IEFjY2Vzc2liaWxpdHlJbmZvIHtcblx0XHRsZXQgYWNjZXNzaWJpbGl0eUluZm8gPSB7fTtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8Q29udHJvbD4oXCJzYXAudWkuY29yZS5Db250cm9sXCIpICYmIHRoaXMuY29udGVudC5nZXRBY2Nlc3NpYmlsaXR5SW5mbykge1xuXHRcdFx0YWNjZXNzaWJpbGl0eUluZm8gPSB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjY2Vzc2liaWxpdHlJbmZvO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0b3ZlcnJpZGUgZ2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0SWRGb3JMYWJlbCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdG92ZXJyaWRlIGFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzczogc3RyaW5nKTogdGhpcyB7XG5cdFx0KHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIENvbnRyb2wpPy5hZGRTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHN1cGVyLmFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRvdmVycmlkZSByZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IHN0cmluZyk6IHRoaXMge1xuXHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBDb250cm9sKT8ucmVtb3ZlU3R5bGVDbGFzcyhzdHlsZUNsYXNzKTtcblx0XHRzdXBlci5yZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3J0aGFuZCBmb3IgdGhlIEJpbmRpbmdUb29sa2l0LmJpbmRTdGF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGggQSBwcm9wZXJ0eSBpbiB0aGUgc3RhdGUgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3IgdGhlIHN0YXRlXG5cdCAqIEBwdWJsaWNcblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xNDUuMFxuXHQgKi9cblx0cHVibGljIGJpbmRTdGF0ZTxTVCBleHRlbmRzIFByaW1pdGl2ZVR5cGU+KHBhdGg6IGtleW9mIEspOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248U1Q+IHtcblx0XHRyZXR1cm4gQmluZGluZ1Rvb2xraXQuYmluZFN0YXRlKHRoaXMuc3RhdGUgYXMgSywgcGF0aCk7XG5cdH1cblxuXHQvKipcblx0ICogU3luY2hyb25pemVzIGEgc3RhdGUgcHJvcGVydHkgd2l0aCBhbm90aGVyIGJ1aWxkaW5nIGJsb2NrJ3Mgc3RhdGUgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSBwcm9wTmFtZSBOYW1lIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgY3VycmVudCBzdGF0ZSBvYmplY3Rcblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgc291cmNlIGJ1aWxkaW5nIGJsb2NrXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgaW4gdGhlIHNvdXJjZSBidWlsZGluZyBibG9jaydzIHN0YXRlIG9iamVjdFxuXHQgKi9cblx0cHVibGljIHN5bmNTdGF0ZVByb3BlcnR5KHByb3BOYW1lOiBzdHJpbmcsIHNvdXJjZTogQnVpbGRpbmdCbG9ja0Jhc2UsIHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHQodGhpcy5zdGF0ZSBhcyBHZW5lcmljU3RhdGUpW3Byb3BOYW1lXSA9IChzb3VyY2Uuc3RhdGUgYXMgR2VuZXJpY1N0YXRlKVtwcm9wZXJ0eV07XG5cdFx0Y29uc3QgcHJvcEJpbmRpbmcgPSBzb3VyY2UuZ2V0TW9kZWwoU1RBVEVfTU9ERUxfTkFNRSk/LmJpbmRQcm9wZXJ0eShcIi9cIiArIHByb3BlcnR5KTtcblx0XHRwcm9wQmluZGluZz8uYXR0YWNoQ2hhbmdlKCgpOiB2b2lkID0+IHtcblx0XHRcdCh0aGlzLnN0YXRlIGFzIEdlbmVyaWNTdGF0ZSlbcHJvcE5hbWVdID0gKHNvdXJjZS5zdGF0ZSBhcyBHZW5lcmljU3RhdGUpW3Byb3BlcnR5XTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGcmFtZXdvcmsgaG9vayBmb3Igc3RhdGUgY2hhbmdlIGhhbmRsaW5nLlxuXHQgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byByZWFjdCB0byBzdGF0ZSBjaGFuZ2VzLlxuXHQgKiBAcGFyYW0gX2NoYW5nZWRQcm9wcyBMaXN0IG9mIGNoYW5nZWQgcHJvcGVydHkgbmFtZXNcblx0ICogQHB1YmxpY1xuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjE0NS4wXG5cdCAqL1xuXHRwcm90ZWN0ZWQgb25TdGF0ZUNoYW5nZShfY2hhbmdlZFByb3BzOiBzdHJpbmdbXSk6IHZvaWQ7XG5cblx0cHJvdGVjdGVkIGFzeW5jIG9uU3RhdGVDaGFuZ2UoX2NoYW5nZWRQcm9wczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHt9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1aWxkaW5nQmxvY2tCYXNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFhQTtFQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQSxJQVNNQSxpQkFBaUIsSUFBQUMsSUFBQSxHQUR0QkMsY0FBYyxDQUFDLCtCQUErQixDQUFDLEVBQUFDLEtBQUEsR0FVOUNDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUscUJBQXFCO0lBQUVDLFFBQVEsRUFBRSxLQUFLO0lBQUVDLFNBQVMsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTzlFQyxXQUFXLENBQUM7SUFBRUosSUFBSSxFQUFFLHFCQUFxQjtJQUFFQyxRQUFRLEVBQUUsSUFBSTtJQUFFSSxZQUFZLEVBQUU7RUFBaUIsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FVNUZDLFdBQVcsQ0FBQyxDQUFDLEVBQUFYLElBQUEsQ0FBQVksTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxRQUFBO0lBS2QsU0FBQWYsa0JBQVlnQixRQUFzRCxFQUFFQyxNQUEyQyxFQUFFQyxLQUFjLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ2hJLElBQUksT0FBT0gsUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUNqQ0MsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUNiQSxNQUFNLENBQUNHLEVBQUUsR0FBR0osUUFBUTtNQUNyQjtNQUNBO01BQ0E7TUFDQTtNQUNBRyxLQUFBLEdBQUFKLFFBQUEsQ0FBQU0sSUFBQSxPQUFNTCxRQUFRLEVBQXVCQyxNQUFNLEVBQUVDLEtBQUssQ0FBQztNQXRDcEQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQVBDSSwwQkFBQSxDQUFBSCxLQUFBLGFBQUFJLFdBQUEsRUFBQUosS0FBQTtNQVdBO0FBQ0Q7QUFDQTtBQUNBO01BSENHLDBCQUFBLENBQUFILEtBQUEsb0JBQUFLLFlBQUEsRUFBQUwsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO01BTkNHLDBCQUFBLENBQUFILEtBQUEsV0FBQU0sWUFBQSxFQUFBTixLQUFBO01BQUFBLEtBQUEsQ0F1QlFPLFVBQVUsR0FBNEIsSUFBSTtNQUFBLE9BQUFQLEtBQUE7SUFGbEQ7SUFBQ1EsY0FBQSxDQUFBM0IsaUJBQUEsRUFBQWUsUUFBQTtJQUFBLElBQUFhLE1BQUEsR0FBQTVCLGlCQUFBLENBQUE2QixTQUFBO0lBQUFELE1BQUEsQ0FYREUsY0FBYyxHQUFkLFNBQUFBLGNBQWNBLENBQUNDLEdBQWtCLEVBQVEsQ0FBQyxDQUFDO0lBQUEvQixpQkFBQSxDQWVwQ2dDLE1BQU0sR0FBYixTQUFPQSxNQUFNQSxDQUFvQkMsR0FBa0IsRUFBRUMsUUFBOEIsRUFBUTtNQUMxRixJQUFJLENBQUNBLFFBQVEsQ0FBQ0MsT0FBTyxJQUFJRCxRQUFRLENBQUNFLFVBQVUsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQ3pEO1FBQ0FDLGlCQUFpQixDQUFDTCxNQUFNLENBQUNDLEdBQUcsRUFBRUMsUUFBUSxDQUFDO01BQ3hDLENBQUMsTUFBTTtRQUNOQSxRQUFRLENBQUNKLGNBQWMsR0FBR0csR0FBRyxDQUFDO1FBQzlCQSxHQUFHLENBQUNLLGFBQWEsQ0FBQ0osUUFBUSxDQUFDQyxPQUFPLENBQUM7TUFDcEM7SUFDRCxDQUFDO0lBQUFQLE1BQUEsQ0FFRFcsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQ0MsT0FBZ0IsRUFBRUMsS0FBYyxFQUFRO01BQ3pEMUIsUUFBQSxDQUFBYyxTQUFBLENBQU1VLGlCQUFpQixDQUFBbEIsSUFBQSxPQUFDbUIsT0FBTyxFQUFFQyxLQUFLO01BQ3RDLElBQUlBLEtBQUssS0FBS0MsU0FBUyxJQUFJRixPQUFPLEVBQUU7UUFDbkMsSUFBSSxDQUFDRyxVQUFVLENBQUMsQ0FBQztNQUNsQjtNQUNBLE9BQU8sSUFBSTtJQUNaOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUFmLE1BQUEsQ0FNU2dCLFlBQVksR0FBckIsU0FBU0EsWUFBWUEsQ0FBQ0MsSUFBWSxFQUFFQyxXQUFnQyxFQUFRO01BQzNFLE1BQU1DLGdCQUFnQixHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDSixJQUFJLENBQUM7TUFDN0QsSUFBSUUsZ0JBQWdCLEVBQUVHLFFBQVEsS0FBSyxLQUFLLElBQUlILGdCQUFnQixDQUFDSSxLQUFLLEtBQUssTUFBTSxFQUFFO1FBQzdFLElBQUksQ0FBNkJOLElBQUksQ0FBQyxHQUFHQyxXQUFXO01BQ3RELENBQUMsTUFBTTtRQUNOL0IsUUFBQSxDQUFBYyxTQUFBLENBQU1lLFlBQVksQ0FBQXZCLElBQUEsT0FBQ3dCLElBQUksRUFBRUMsV0FBVztNQUNyQztNQUNBLE9BQU8sSUFBSTtJQUNaOztJQUVBO0lBQUE7SUFBQWxCLE1BQUEsQ0FDU3dCLGdCQUFnQixHQUF6QixTQUFTQSxnQkFBZ0JBLENBQUNDLEtBQW1CLEVBQVE7TUFDcEQsTUFBTUMsTUFBTSxHQUFHLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUM7TUFDL0IsSUFBSUQsTUFBTSxFQUFFO1FBQ1gsSUFBSSxDQUFDNUIsVUFBVSxHQUFHLElBQUk4QixPQUFPLENBQUNGLE1BQU0sQ0FBQztNQUN0QyxDQUFDLE1BQU07UUFDTixJQUFJLENBQUM1QixVQUFVLEdBQUcsSUFBSTtNQUN2QjtNQUNBWCxRQUFBLENBQUFjLFNBQUEsQ0FBTXVCLGdCQUFnQixDQUFBL0IsSUFBQSxPQUFDZ0MsS0FBSztJQUM3QixDQUFDO0lBQUF6QixNQUFBLENBRVEyQixTQUFTLEdBQWxCLFNBQVNBLFNBQVNBLENBQUNFLE1BQWUsRUFBa0I7TUFDbkQsTUFBTUMsUUFBUSxHQUFHLElBQUksQ0FBQ3ZCLE9BQU87TUFDN0IsSUFBSW1CLE1BQXNCLEdBQUdJLFFBQVEsRUFBRUgsU0FBUyxDQUFDRSxNQUFNLENBQUMsSUFBQTFDLFFBQUEsQ0FBQWMsU0FBQSxDQUFVMEIsU0FBUyxDQUFBbEMsSUFBQSxPQUFDb0MsTUFBTSxDQUFDO01BQ25GLElBQUksQ0FBQ0gsTUFBTSxJQUFJLENBQUNHLE1BQU0sRUFBRTtRQUN2QkgsTUFBTSxHQUFHLElBQUksQ0FBQzVCLFVBQVUsRUFBRWlDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSTtRQUN6QyxJQUFJTCxNQUFNLEVBQUU7VUFDWCxPQUFPTSxRQUFRLENBQUNDLGNBQWMsQ0FBQ1AsTUFBTSxDQUFDbEMsRUFBRSxDQUFDO1FBQzFDO01BQ0Q7TUFDQSxPQUFPa0MsTUFBTTtJQUNkLENBQUM7SUFBQTFCLE1BQUEsQ0FFUWtDLGNBQWMsR0FBdkIsU0FBU0EsY0FBY0EsQ0FBQSxFQUFtQjtNQUN6QyxNQUFNSixRQUFRLEdBQUcsSUFBSSxDQUFDdkIsT0FBTztNQUM3QixPQUFPdUIsUUFBUSxHQUFHQSxRQUFRLENBQUNJLGNBQWMsQ0FBQyxDQUFDLEdBQUEvQyxRQUFBLENBQUFjLFNBQUEsQ0FBU2lDLGNBQWMsQ0FBQXpDLElBQUEsTUFBRTtJQUNyRTs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBTyxNQUFBLENBTVNtQyx5QkFBeUIsR0FBbEMsU0FBU0EseUJBQXlCQSxDQUFDQyxTQUFpQixFQUFFQyxVQUFrQixFQUFVO01BQ2pGLE1BQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDO01BRWhDLElBQUlELE9BQU8sSUFBS0EsT0FBTyxDQUE4REgseUJBQXlCLEVBQUU7UUFDL0c7UUFDQ0csT0FBTyxDQUE2REgseUJBQXlCLENBQUNDLFNBQVMsRUFBRUMsVUFBVSxDQUFDO01BQ3RIO01BRUEsT0FBT0EsVUFBVTtJQUNsQjs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFyQyxNQUFBLENBSVN3QyxvQkFBb0IsR0FBN0IsU0FBU0Esb0JBQW9CQSxDQUFBLEVBQXNCO01BQ2xELElBQUlDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztNQUMxQixJQUFJLElBQUksQ0FBQ2xDLE9BQU8sRUFBRW1DLEdBQUcsQ0FBVSxxQkFBcUIsQ0FBQyxJQUFJLElBQUksQ0FBQ25DLE9BQU8sQ0FBQ2lDLG9CQUFvQixFQUFFO1FBQzNGQyxpQkFBaUIsR0FBRyxJQUFJLENBQUNsQyxPQUFPLENBQUNpQyxvQkFBb0IsQ0FBQyxDQUFDO01BQ3hEO01BQ0EsT0FBT0MsaUJBQWlCO0lBQ3pCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUF6QyxNQUFBLENBTVMyQyxhQUFhLEdBQXRCLFNBQVNBLGFBQWFBLENBQUEsRUFBVztNQUNoQyxJQUFJLElBQUksQ0FBQ3BDLE9BQU8sRUFBRW1DLEdBQUcsQ0FBVSxxQkFBcUIsQ0FBQyxFQUFFO1FBQ3RELE9BQU8sSUFBSSxDQUFDbkMsT0FBTyxDQUFDb0MsYUFBYSxDQUFDLENBQUM7TUFDcEM7TUFDQSxPQUFPLEVBQUU7SUFDVixDQUFDO0lBQUEzQyxNQUFBLENBRVE0QyxhQUFhLEdBQXRCLFNBQVNBLGFBQWFBLENBQUNDLFVBQWtCLEVBQVE7TUFDL0MsSUFBSSxDQUFDdEMsT0FBTyxFQUF5QnFDLGFBQWEsQ0FBQ0MsVUFBVSxDQUFDO01BQy9EMUQsUUFBQSxDQUFBYyxTQUFBLENBQU0yQyxhQUFhLENBQUFuRCxJQUFBLE9BQUNvRCxVQUFVO01BQzlCLE9BQU8sSUFBSTtJQUNaLENBQUM7SUFBQTdDLE1BQUEsQ0FFUThDLGdCQUFnQixHQUF6QixTQUFTQSxnQkFBZ0JBLENBQUNELFVBQWtCLEVBQVE7TUFDbEQsSUFBSSxDQUFDdEMsT0FBTyxFQUF5QnVDLGdCQUFnQixDQUFDRCxVQUFVLENBQUM7TUFDbEUxRCxRQUFBLENBQUFjLFNBQUEsQ0FBTTZDLGdCQUFnQixDQUFBckQsSUFBQSxPQUFDb0QsVUFBVTtNQUNqQyxPQUFPLElBQUk7SUFDWjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQU5DO0lBQUE3QyxNQUFBLENBT08rQyxTQUFTLEdBQWhCLFNBQU9BLFNBQVNBLENBQTJCQyxJQUFhLEVBQWdDO01BQ3ZGLE9BQU9DLGNBQWMsQ0FBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQ0csS0FBSyxFQUFPRixJQUFJLENBQUM7SUFDdkQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQWhELE1BQUEsQ0FNT21ELGlCQUFpQixHQUF4QixTQUFPQSxpQkFBaUJBLENBQUNDLFFBQWdCLEVBQUVDLE1BQXlCLEVBQUVDLFFBQWdCLEVBQVE7TUFDNUYsSUFBSSxDQUFDSixLQUFLLENBQWtCRSxRQUFRLENBQUMsR0FBSUMsTUFBTSxDQUFDSCxLQUFLLENBQWtCSSxRQUFRLENBQUM7TUFDakYsTUFBTUMsV0FBVyxHQUFHRixNQUFNLENBQUNHLFFBQVEsQ0FBQ0MsZ0JBQWdCLENBQUMsRUFBRXpDLFlBQVksQ0FBQyxHQUFHLEdBQUdzQyxRQUFRLENBQUM7TUFDbkZDLFdBQVcsRUFBRUcsWUFBWSxDQUFDLE1BQVk7UUFDcEMsSUFBSSxDQUFDUixLQUFLLENBQWtCRSxRQUFRLENBQUMsR0FBSUMsTUFBTSxDQUFDSCxLQUFLLENBQWtCSSxRQUFRLENBQUM7TUFDbEYsQ0FBQyxDQUFDO0lBQ0g7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBdEQsTUFBQSxDQVNnQjJELGFBQWEsR0FBN0IsZUFBZ0JBLGFBQWFBLENBQUNDLGFBQXVCLEVBQWlCLENBQUMsQ0FBQztJQUFBLE9BQUF4RixpQkFBQTtFQUFBLEVBbE1jeUYsT0FBTyxHQUFBbEUsV0FBQSxHQUFBbUUseUJBQUEsQ0FBQTVFLE9BQUEsQ0FBQWUsU0FBQSxjQUFBMUIsS0FBQTtJQUFBd0YsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF0RSxZQUFBLEdBQUFrRSx5QkFBQSxDQUFBNUUsT0FBQSxDQUFBZSxTQUFBLHFCQUFBckIsS0FBQTtJQUFBbUYsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFyRSxZQUFBLEdBQUFpRSx5QkFBQSxDQUFBNUUsT0FBQSxDQUFBZSxTQUFBLFlBQUFsQixLQUFBO0lBQUFnRixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWhGLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BcU0vRWIsaUJBQWlCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,7 +1,7 @@
1
- import type { ConstantExpression, PathInModelExpression, PrimitiveType } from "sap/fe/base/BindingToolkit";
1
+ import type { BindingToolkitExpression, PrimitiveType } from "sap/fe/base/BindingToolkit";
2
2
  import * as BindingToolkit from "sap/fe/base/BindingToolkit";
3
- import type { PropertiesOf, StateOf } from "sap/fe/base/ClassSupport";
4
- import { aggregation, association, defineState, defineUI5Class } from "sap/fe/base/ClassSupport";
3
+ import type { GenericState, PropertiesOf, StateOf } from "sap/fe/base/ClassSupport";
4
+ import { aggregation, association, defineState, defineUI5Class, STATE_MODEL_NAME } from "sap/fe/base/ClassSupport";
5
5
  import type ManagedObject from "sap/ui/base/ManagedObject";
6
6
  import type { PropertyBindingInfo } from "sap/ui/base/ManagedObject";
7
7
  import Control from "sap/ui/core/Control";
@@ -11,6 +11,7 @@ import type RenderManager from "sap/ui/core/RenderManager";
11
11
  import type { AccessibilityInfo } from "sap/ui/core/library";
12
12
  import type Context from "sap/ui/model/Context";
13
13
 
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
15
  interface BuildingBlockBase<T extends UI5Element = Control, K extends object = {}> {
15
16
  // Force a state update
16
17
  _updateState(): Promise<void>;
@@ -18,25 +19,44 @@ interface BuildingBlockBase<T extends UI5Element = Control, K extends object = {
18
19
 
19
20
  /**
20
21
  * Base class for building blocks.
21
- * This contains the low level functionality of having a content aggregation and handling the rendering of the content without an actual DOM element.
22
- * The building block also defines a state object that can be used to store the state of the building block.
23
- * Accessibility and classes information are forwarded to the content control.
22
+ * This contains the low-level functionality of having a content aggregation and handling the rendering of the content without an actual DOM element.<br/>
23
+ * The building block also defines a state object that can be used to store the state of the building block.<br/>
24
+ * Accessibility and classes information are forwarded to the content control.<br/>
25
+ * This class is not meant to be used directly, it's there for internal use only (and documentation)
24
26
  * @public
25
27
  */
26
28
  @defineUI5Class("sap.fe.base.BuildingBlockBase")
27
29
  class BuildingBlockBase<T extends UI5Element = Control, K extends object = {}> extends Control {
30
+ /**
31
+ * Optional content of generic type T.
32
+ *
33
+ * This property holds the main data or payload for the containing object.
34
+ * When undefined, it indicates that no content has been set or is available.
35
+ * The specific type and structure of the content depends on the generic type parameter T.
36
+ * @public
37
+ */
28
38
  @aggregation({ type: "sap.ui.core.Element", multiple: false, isDefault: true })
29
39
  content?: T;
30
40
 
31
41
  /**
32
42
  * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
43
+ * @public
33
44
  */
34
45
  @association({ type: "sap.ui.core.Control", multiple: true, singularName: "ariaLabelledBy" })
35
46
  ariaLabelledBy!: string[];
36
47
 
48
+ /**
49
+ * The current state value of the component.
50
+ *
51
+ * This property holds the state data managed by the component, with the type
52
+ * determined by the generic parameter K.
53
+ * @public
54
+ */
37
55
  @defineState()
38
56
  protected state!: StateOf<K>;
39
57
 
58
+ getPlaceholder(_rm: RenderManager): void {}
59
+
40
60
  constructor(settings?: string | PropertiesOf<BuildingBlockBase<T>>, others?: PropertiesOf<BuildingBlockBase<T>>, scope?: object) {
41
61
  if (typeof settings === "string") {
42
62
  others ??= {};
@@ -55,6 +75,7 @@ class BuildingBlockBase<T extends UI5Element = Control, K extends object = {}> e
55
75
  // If there is no content, we render an invisible renderer to avoid the control being
56
76
  InvisibleRenderer.render(oRm, oControl);
57
77
  } else {
78
+ oControl.getPlaceholder?.(oRm);
58
79
  oRm.renderControl(oControl.content);
59
80
  }
60
81
  }
@@ -169,10 +190,37 @@ class BuildingBlockBase<T extends UI5Element = Control, K extends object = {}> e
169
190
  * Shorthand for the BindingToolkit.bindState function with the current state object.
170
191
  * @param path A property in the state object
171
192
  * @returns The binding toolkit expression for the state
193
+ * @public
194
+ * @ui5-experimental-since 1.145.0
172
195
  */
173
- protected bindState<ST extends PrimitiveType>(path: keyof K): PathInModelExpression<ST> | ConstantExpression<ST> {
196
+ public bindState<ST extends PrimitiveType>(path: keyof K): BindingToolkitExpression<ST> {
174
197
  return BindingToolkit.bindState(this.state as K, path);
175
198
  }
199
+
200
+ /**
201
+ * Synchronizes a state property with another building block's state property.
202
+ * @param propName Name of the property in the current state object
203
+ * @param source The source building block
204
+ * @param property The property in the source building block's state object
205
+ */
206
+ public syncStateProperty(propName: string, source: BuildingBlockBase, property: string): void {
207
+ (this.state as GenericState)[propName] = (source.state as GenericState)[property];
208
+ const propBinding = source.getModel(STATE_MODEL_NAME)?.bindProperty("/" + property);
209
+ propBinding?.attachChange((): void => {
210
+ (this.state as GenericState)[propName] = (source.state as GenericState)[property];
211
+ });
212
+ }
213
+
214
+ /**
215
+ * Framework hook for state change handling.
216
+ * Subclasses can override this method to react to state changes.
217
+ * @param _changedProps List of changed property names
218
+ * @public
219
+ * @ui5-experimental-since 1.145.0
220
+ */
221
+ protected onStateChange(_changedProps: string[]): void;
222
+
223
+ protected async onStateChange(_changedProps: string[]): Promise<void> {}
176
224
  }
177
225
 
178
226
  export default BuildingBlockBase;