@sapui5/sap.fe.base 1.142.2 → 1.144.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.
@@ -2311,8 +2311,8 @@ export type ComplexTypeConstraintOptions = {
2311
2311
  * @param formatOptions Initial formatOptions
2312
2312
  * @returns The modified formatOptions
2313
2313
  */
2314
- function _getComplexTypeFormatOptionsFromFirstParam<T, U extends Fn<T>>(
2315
- param: Parameters<U>,
2314
+ function _getComplexTypeFormatOptionsFromFirstParam(
2315
+ param: PathInModelExpression<PrimitiveType>,
2316
2316
  formatOptions: undefined | ComplexTypeFormatOptions
2317
2317
  ): ComplexTypeFormatOptions | undefined {
2318
2318
  // if showMeasure is set to false we want to not parse as string to see the 0
@@ -51,15 +51,17 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
51
51
  return _this;
52
52
  }
53
53
  _inheritsLoose(BuildingBlockBase, _Control);
54
+ var _proto = BuildingBlockBase.prototype;
55
+ _proto.getPlaceholder = function getPlaceholder(_rm) {};
54
56
  BuildingBlockBase.render = function render(oRm, oControl) {
55
57
  if (!oControl.content || oControl.getVisible() === false) {
56
58
  // If there is no content, we render an invisible renderer to avoid the control being
57
59
  InvisibleRenderer.render(oRm, oControl);
58
60
  } else {
61
+ oControl.getPlaceholder?.(oRm);
59
62
  oRm.renderControl(oControl.content);
60
63
  }
61
64
  };
62
- var _proto = BuildingBlockBase.prototype;
63
65
  _proto.setBindingContext = function setBindingContext(context, model) {
64
66
  _Control.prototype.setBindingContext.call(this, context, model);
65
67
  if (model === undefined && context) {
@@ -188,4 +190,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/ui
188
190
  }), _class2)) || _class);
189
191
  return BuildingBlockBase;
190
192
  }, false);
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwic2luZ3VsYXJOYW1lIiwiX2RlYzQiLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInNldHRpbmdzIiwib3RoZXJzIiwic2NvcGUiLCJfdGhpcyIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfb2xkRG9tUmVmIiwiX2luaGVyaXRzTG9vc2UiLCJyZW5kZXIiLCJvUm0iLCJvQ29udHJvbCIsImNvbnRlbnQiLCJnZXRWaXNpYmxlIiwiSW52aXNpYmxlUmVuZGVyZXIiLCJyZW5kZXJDb250cm9sIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0QmluZGluZ0NvbnRleHQiLCJjb250ZXh0IiwibW9kZWwiLCJ1bmRlZmluZWQiLCJpbnZhbGlkYXRlIiwiYmluZFByb3BlcnR5IiwibmFtZSIsImJpbmRpbmdJbmZvIiwicHJvcGVydHlNZXRhZGF0YSIsImdldE1ldGFkYXRhIiwiZ2V0UHJvcGVydHkiLCJiaW5kYWJsZSIsImdyb3VwIiwib25BZnRlclJlbmRlcmluZyIsImV2ZW50IiwiZG9tUmVmIiwiZ2V0RG9tUmVmIiwiV2Vha1JlZiIsInN1ZmZpeCIsIm9Db250ZW50IiwiZGVyZWYiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0Rm9jdXNEb21SZWYiLCJlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIiwiX29FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJnZXRQYXJlbnQiLCJnZXRBY2Nlc3NpYmlsaXR5SW5mbyIsImFjY2Vzc2liaWxpdHlJbmZvIiwiaXNBIiwiZ2V0SWRGb3JMYWJlbCIsImFkZFN0eWxlQ2xhc3MiLCJzdHlsZUNsYXNzIiwicmVtb3ZlU3R5bGVDbGFzcyIsImJpbmRTdGF0ZSIsInBhdGgiLCJCaW5kaW5nVG9vbGtpdCIsInN0YXRlIiwiQ29udHJvbCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9ja0Jhc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25zdGFudEV4cHJlc3Npb24sIFBhdGhJbk1vZGVsRXhwcmVzc2lvbiwgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0ICogYXMgQmluZGluZ1Rvb2xraXQgZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiwgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lU3RhdGUsIGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgSW52aXNpYmxlUmVuZGVyZXIgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVJlbmRlcmVyXCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IEFjY2Vzc2liaWxpdHlJbmZvIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5cbmludGVyZmFjZSBCdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudCA9IENvbnRyb2wsIEsgZXh0ZW5kcyBvYmplY3QgPSB7fT4ge1xuXHQvLyBGb3JjZSBhIHN0YXRlIHVwZGF0ZVxuXHRfdXBkYXRlU3RhdGUoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBidWlsZGluZyBibG9ja3MuXG4gKiBUaGlzIGNvbnRhaW5zIHRoZSBsb3cgbGV2ZWwgZnVuY3Rpb25hbGl0eSBvZiBoYXZpbmcgYSBjb250ZW50IGFnZ3JlZ2F0aW9uIGFuZCBoYW5kbGluZyB0aGUgcmVuZGVyaW5nIG9mIHRoZSBjb250ZW50IHdpdGhvdXQgYW4gYWN0dWFsIERPTSBlbGVtZW50LlxuICogVGhlIGJ1aWxkaW5nIGJsb2NrIGFsc28gZGVmaW5lcyBhIHN0YXRlIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIHRoZSBzdGF0ZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2suXG4gKiBBY2Nlc3NpYmlsaXR5IGFuZCBjbGFzc2VzIGluZm9ybWF0aW9uIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmJhc2UuQnVpbGRpbmdCbG9ja0Jhc2VcIilcbmNsYXNzIEJ1aWxkaW5nQmxvY2tCYXNlPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkVsZW1lbnRcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudD86IFQ7XG5cblx0LyoqXG5cdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUsIHNpbmd1bGFyTmFtZTogXCJhcmlhTGFiZWxsZWRCeVwiIH0pXG5cdGFyaWFMYWJlbGxlZEJ5ITogc3RyaW5nW107XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlITogU3RhdGVPZjxLPjtcblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIG90aGVycz86IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIHNjb3BlPzogb2JqZWN0KSB7XG5cdFx0aWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0b3RoZXJzID8/PSB7fTtcblx0XHRcdG90aGVycy5pZCA9IHNldHRpbmdzO1xuXHRcdH1cblx0XHQvLyBTY29wZSBpcyBkZWZpbmVkIGFuZCBpcyB0aGVyZSwgYnV0IHNvbWVob3cgZG9lc24ndCBhcHBlYXIgb24gYWxsIHRoZSBjaGlsZHJlbiBvZiBNYW5hZ2VkT2JqZWN0XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRzdXBlcihzZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZywgb3RoZXJzLCBzY29wZSk7XG5cdH1cblxuXHRwcml2YXRlIF9vbGREb21SZWY6IFdlYWtSZWY8RWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuXHRzdGF0aWMgcmVuZGVyPFQgZXh0ZW5kcyBDb250cm9sPihvUm06IFJlbmRlck1hbmFnZXIsIG9Db250cm9sOiBCdWlsZGluZ0Jsb2NrQmFzZTxUPik6IHZvaWQge1xuXHRcdGlmICghb0NvbnRyb2wuY29udGVudCB8fCBvQ29udHJvbC5nZXRWaXNpYmxlKCkgPT09IGZhbHNlKSB7XG5cdFx0XHQvLyBJZiB0aGVyZSBpcyBubyBjb250ZW50LCB3ZSByZW5kZXIgYW4gaW52aXNpYmxlIHJlbmRlcmVyIHRvIGF2b2lkIHRoZSBjb250cm9sIGJlaW5nXG5cdFx0XHRJbnZpc2libGVSZW5kZXJlci5yZW5kZXIob1JtLCBvQ29udHJvbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHRcdH1cblx0fVxuXG5cdHNldEJpbmRpbmdDb250ZXh0KGNvbnRleHQ6IENvbnRleHQsIG1vZGVsPzogc3RyaW5nKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0QmluZGluZ0NvbnRleHQoY29udGV4dCwgbW9kZWwpO1xuXHRcdGlmIChtb2RlbCA9PT0gdW5kZWZpbmVkICYmIGNvbnRleHQpIHtcblx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBPdmVycmlkZSB0aGUgYmluZFByb3BlcnR5IHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVyZSB0aGUgcHJvcGVydHkgaXMgYSBiaW5kaW5nIGluZm8uXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBiaW5kaW5nSW5mbyBUaGUgYmluZGluZyBpbmZvXG5cdCAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgZm9yIGNoYWluaW5nXG5cdCAqL1xuXHRvdmVycmlkZSBiaW5kUHJvcGVydHkobmFtZTogc3RyaW5nLCBiaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHRoaXMge1xuXHRcdGNvbnN0IHByb3BlcnR5TWV0YWRhdGEgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydHkobmFtZSk7XG5cdFx0aWYgKHByb3BlcnR5TWV0YWRhdGE/LmJpbmRhYmxlID09PSBmYWxzZSAmJiBwcm9wZXJ0eU1ldGFkYXRhLmdyb3VwID09PSBcIkRhdGFcIikge1xuXHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW25hbWVdID0gYmluZGluZ0luZm87XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmJpbmRQcm9wZXJ0eShuYW1lLCBiaW5kaW5nSW5mbyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Ly9zZXQgdGhlIG9sZCBkb20gcmVmXG5cdG92ZXJyaWRlIG9uQWZ0ZXJSZW5kZXJpbmcoZXZlbnQ6IEpRdWVyeS5FdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGRvbVJlZiA9IHRoaXMuZ2V0RG9tUmVmKCk7XG5cdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbmV3IFdlYWtSZWYoZG9tUmVmKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbnVsbDtcblx0XHR9XG5cdFx0c3VwZXIub25BZnRlclJlbmRlcmluZyhldmVudCk7XG5cdH1cblxuXHRvdmVycmlkZSBnZXREb21SZWYoc3VmZml4Pzogc3RyaW5nKTogRWxlbWVudCB8IG51bGwge1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdGxldCBkb21SZWY6IEVsZW1lbnQgfCBudWxsID0gb0NvbnRlbnQ/LmdldERvbVJlZihzdWZmaXgpID8/IHN1cGVyLmdldERvbVJlZihzdWZmaXgpO1xuXHRcdGlmICghZG9tUmVmICYmICFzdWZmaXgpIHtcblx0XHRcdGRvbVJlZiA9IHRoaXMuX29sZERvbVJlZj8uZGVyZWYoKSA/PyBudWxsO1xuXHRcdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0XHRyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZG9tUmVmLmlkKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGRvbVJlZjtcblx0fVxuXG5cdG92ZXJyaWRlIGdldEZvY3VzRG9tUmVmKCk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRyZXR1cm4gb0NvbnRlbnQgPyBvQ29udGVudC5nZXRGb2N1c0RvbVJlZigpIDogc3VwZXIuZ2V0Rm9jdXNEb21SZWYoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGFza3MgdXAgdGhlIGNvbnRyb2wgdHJlZSB0byBlbmhhbmNlIHRoZSBhY2Nlc3NpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gX29FbGVtZW50IFRoZSBlbGVtZW50IHRvIGVuaGFuY2Vcblx0ICogQHBhcmFtIG1BcmlhUHJvcHMgVGhlIGN1cnJlbnQgYXJpYSBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIFRoZSBlbmhhbmNlZCBhcmlhIHByb3BlcnRpZXNcblx0ICovXG5cdG92ZXJyaWRlIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0Ly8gZm9yd2FyZCAgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSBjYWxsIHRvIHRoZSBwYXJlbnRcblx0XHRcdChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU6IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50LCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIChpZiBhdmFpbGFibGUgb24gdGhlIGNvbmNyZXRlIGNvbnRyb2wpIHByb3ZpZGVzIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgc3RhdGUgb2YgdGhlIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIFRoZSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29udHJvbC5cblx0ICovXG5cdG92ZXJyaWRlIGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IEFjY2Vzc2liaWxpdHlJbmZvIHtcblx0XHRsZXQgYWNjZXNzaWJpbGl0eUluZm8gPSB7fTtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8Q29udHJvbD4oXCJzYXAudWkuY29yZS5Db250cm9sXCIpICYmIHRoaXMuY29udGVudC5nZXRBY2Nlc3NpYmlsaXR5SW5mbykge1xuXHRcdFx0YWNjZXNzaWJpbGl0eUluZm8gPSB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjY2Vzc2liaWxpdHlJbmZvO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0b3ZlcnJpZGUgZ2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0SWRGb3JMYWJlbCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdG92ZXJyaWRlIGFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzczogc3RyaW5nKTogdGhpcyB7XG5cdFx0KHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIENvbnRyb2wpPy5hZGRTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHN1cGVyLmFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRvdmVycmlkZSByZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IHN0cmluZyk6IHRoaXMge1xuXHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBDb250cm9sKT8ucmVtb3ZlU3R5bGVDbGFzcyhzdHlsZUNsYXNzKTtcblx0XHRzdXBlci5yZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3J0aGFuZCBmb3IgdGhlIEJpbmRpbmdUb29sa2l0LmJpbmRTdGF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGggQSBwcm9wZXJ0eSBpbiB0aGUgc3RhdGUgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3IgdGhlIHN0YXRlXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYmluZFN0YXRlPFNUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4ocGF0aDoga2V5b2YgSyk6IFBhdGhJbk1vZGVsRXhwcmVzc2lvbjxTVD4gfCBDb25zdGFudEV4cHJlc3Npb248U1Q+IHtcblx0XHRyZXR1cm4gQmluZGluZ1Rvb2xraXQuYmluZFN0YXRlKHRoaXMuc3RhdGUgYXMgSywgcGF0aCk7XG5cdH1cbn1cblxuZXhwb3J0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QUN0QyxPQUFPLEVBQUVxQyxHQUFHLENBQVUscUJBQXFCLENBQUMsRUFBRTtRQUN0RCxPQUFPLElBQUksQ0FBQ3JDLE9BQU8sQ0FBQ3NDLGFBQWEsQ0FBQyxDQUFDO01BQ3BDO01BQ0EsT0FBTyxFQUFFO0lBQ1YsQ0FBQztJQUFBbEMsTUFBQSxDQUVRbUMsYUFBYSxHQUF0QixTQUFTQSxhQUFhQSxDQUFDQyxVQUFrQixFQUFRO01BQy9DLElBQUksQ0FBQ3hDLE9BQU8sRUFBeUJ1QyxhQUFhLENBQUNDLFVBQVUsQ0FBQztNQUMvRHhELFFBQUEsQ0FBQXFCLFNBQUEsQ0FBTWtDLGFBQWEsQ0FBQWpELElBQUEsT0FBQ2tELFVBQVU7TUFDOUIsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUFBcEMsTUFBQSxDQUVRcUMsZ0JBQWdCLEdBQXpCLFNBQVNBLGdCQUFnQkEsQ0FBQ0QsVUFBa0IsRUFBUTtNQUNsRCxJQUFJLENBQUN4QyxPQUFPLEVBQXlCeUMsZ0JBQWdCLENBQUNELFVBQVUsQ0FBQztNQUNsRXhELFFBQUEsQ0FBQXFCLFNBQUEsQ0FBTW9DLGdCQUFnQixDQUFBbkQsSUFBQSxPQUFDa0QsVUFBVTtNQUNqQyxPQUFPLElBQUk7SUFDWjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQXBDLE1BQUEsQ0FLVXNDLFNBQVMsR0FBbkIsU0FBVUEsU0FBU0EsQ0FBMkJDLElBQWEsRUFBc0Q7TUFDaEgsT0FBT0MsY0FBYyxDQUFDRixTQUFTLENBQUMsSUFBSSxDQUFDRyxLQUFLLEVBQU9GLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBQUEsT0FBQTFFLGlCQUFBO0VBQUEsRUFwSnFGNkUsT0FBTyxHQUFBdEQsV0FBQSxHQUFBdUQseUJBQUEsQ0FBQWhFLE9BQUEsQ0FBQXNCLFNBQUEsY0FBQWpDLEtBQUE7SUFBQTRFLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBMUQsWUFBQSxHQUFBc0QseUJBQUEsQ0FBQWhFLE9BQUEsQ0FBQXNCLFNBQUEscUJBQUE1QixLQUFBO0lBQUF1RSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXpELFlBQUEsR0FBQXFELHlCQUFBLENBQUFoRSxPQUFBLENBQUFzQixTQUFBLFlBQUF6QixLQUFBO0lBQUFvRSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBFLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BdUovRWIsaUJBQWlCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
193
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiYWdncmVnYXRpb24iLCJ0eXBlIiwibXVsdGlwbGUiLCJpc0RlZmF1bHQiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwic2luZ3VsYXJOYW1lIiwiX2RlYzQiLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInNldHRpbmdzIiwib3RoZXJzIiwic2NvcGUiLCJfdGhpcyIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfb2xkRG9tUmVmIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRQbGFjZWhvbGRlciIsIl9ybSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwiY29udGVudCIsImdldFZpc2libGUiLCJJbnZpc2libGVSZW5kZXJlciIsInJlbmRlckNvbnRyb2wiLCJzZXRCaW5kaW5nQ29udGV4dCIsImNvbnRleHQiLCJtb2RlbCIsInVuZGVmaW5lZCIsImludmFsaWRhdGUiLCJiaW5kUHJvcGVydHkiLCJuYW1lIiwiYmluZGluZ0luZm8iLCJwcm9wZXJ0eU1ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0eSIsImJpbmRhYmxlIiwiZ3JvdXAiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZXZlbnQiLCJkb21SZWYiLCJnZXREb21SZWYiLCJXZWFrUmVmIiwic3VmZml4Iiwib0NvbnRlbnQiLCJkZXJlZiIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRGb2N1c0RvbVJlZiIsImVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUiLCJfb0VsZW1lbnQiLCJtQXJpYVByb3BzIiwib1BhcmVudCIsImdldFBhcmVudCIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwiYWNjZXNzaWJpbGl0eUluZm8iLCJpc0EiLCJnZXRJZEZvckxhYmVsIiwiYWRkU3R5bGVDbGFzcyIsInN0eWxlQ2xhc3MiLCJyZW1vdmVTdHlsZUNsYXNzIiwiYmluZFN0YXRlIiwicGF0aCIsIkJpbmRpbmdUb29sa2l0Iiwic3RhdGUiLCJDb250cm9sIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnN0YW50RXhwcmVzc2lvbiwgUGF0aEluTW9kZWxFeHByZXNzaW9uLCBQcmltaXRpdmVUeXBlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgKiBhcyBCaW5kaW5nVG9vbGtpdCBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mLCBTdGF0ZU9mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVTdGF0ZSwgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBJbnZpc2libGVSZW5kZXJlciBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlUmVuZGVyZXJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgQWNjZXNzaWJpbGl0eUluZm8gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuaW50ZXJmYWNlIEJ1aWxkaW5nQmxvY2tCYXNlPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiB7XG5cdC8vIEZvcmNlIGEgc3RhdGUgdXBkYXRlXG5cdF91cGRhdGVTdGF0ZSgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGJ1aWxkaW5nIGJsb2Nrcy5cbiAqIFRoaXMgY29udGFpbnMgdGhlIGxvdyBsZXZlbCBmdW5jdGlvbmFsaXR5IG9mIGhhdmluZyBhIGNvbnRlbnQgYWdncmVnYXRpb24gYW5kIGhhbmRsaW5nIHRoZSByZW5kZXJpbmcgb2YgdGhlIGNvbnRlbnQgd2l0aG91dCBhbiBhY3R1YWwgRE9NIGVsZW1lbnQuXG4gKiBUaGUgYnVpbGRpbmcgYmxvY2sgYWxzbyBkZWZpbmVzIGEgc3RhdGUgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgdGhlIHN0YXRlIG9mIHRoZSBidWlsZGluZyBibG9jay5cbiAqIEFjY2Vzc2liaWxpdHkgYW5kIGNsYXNzZXMgaW5mb3JtYXRpb24gYXJlIGZvcndhcmRlZCB0byB0aGUgY29udGVudCBjb250cm9sLlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuYmFzZS5CdWlsZGluZ0Jsb2NrQmFzZVwiKVxuY2xhc3MgQnVpbGRpbmdCbG9ja0Jhc2U8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sLCBLIGV4dGVuZHMgb2JqZWN0ID0ge30+IGV4dGVuZHMgQ29udHJvbCB7XG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuRWxlbWVudFwiLCBtdWx0aXBsZTogZmFsc2UsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRjb250ZW50PzogVDtcblxuXHQvKipcblx0ICogQXNzb2NpYXRpb24gdG8gY29udHJvbHMgLyBJRHMgdGhhdCBsYWJlbCB0aGlzIGNvbnRyb2wgKHNlZSBXQUktQVJJQSBhdHRyaWJ1dGUgYXJpYS1sYWJlbGxlZGJ5KS5cblx0ICovXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSwgc2luZ3VsYXJOYW1lOiBcImFyaWFMYWJlbGxlZEJ5XCIgfSlcblx0YXJpYUxhYmVsbGVkQnkhOiBzdHJpbmdbXTtcblxuXHRAZGVmaW5lU3RhdGUoKVxuXHRwcm90ZWN0ZWQgc3RhdGUhOiBTdGF0ZU9mPEs+O1xuXG5cdGdldFBsYWNlaG9sZGVyKF9ybTogUmVuZGVyTWFuYWdlcik6IHZvaWQge31cblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIG90aGVycz86IFByb3BlcnRpZXNPZjxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4sIHNjb3BlPzogb2JqZWN0KSB7XG5cdFx0aWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0b3RoZXJzID8/PSB7fTtcblx0XHRcdG90aGVycy5pZCA9IHNldHRpbmdzO1xuXHRcdH1cblx0XHQvLyBTY29wZSBpcyBkZWZpbmVkIGFuZCBpcyB0aGVyZSwgYnV0IHNvbWVob3cgZG9lc24ndCBhcHBlYXIgb24gYWxsIHRoZSBjaGlsZHJlbiBvZiBNYW5hZ2VkT2JqZWN0XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRzdXBlcihzZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZywgb3RoZXJzLCBzY29wZSk7XG5cdH1cblxuXHRwcml2YXRlIF9vbGREb21SZWY6IFdlYWtSZWY8RWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuXHRzdGF0aWMgcmVuZGVyPFQgZXh0ZW5kcyBDb250cm9sPihvUm06IFJlbmRlck1hbmFnZXIsIG9Db250cm9sOiBCdWlsZGluZ0Jsb2NrQmFzZTxUPik6IHZvaWQge1xuXHRcdGlmICghb0NvbnRyb2wuY29udGVudCB8fCBvQ29udHJvbC5nZXRWaXNpYmxlKCkgPT09IGZhbHNlKSB7XG5cdFx0XHQvLyBJZiB0aGVyZSBpcyBubyBjb250ZW50LCB3ZSByZW5kZXIgYW4gaW52aXNpYmxlIHJlbmRlcmVyIHRvIGF2b2lkIHRoZSBjb250cm9sIGJlaW5nXG5cdFx0XHRJbnZpc2libGVSZW5kZXJlci5yZW5kZXIob1JtLCBvQ29udHJvbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Db250cm9sLmdldFBsYWNlaG9sZGVyPy4ob1JtKTtcblx0XHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHRcdH1cblx0fVxuXG5cdHNldEJpbmRpbmdDb250ZXh0KGNvbnRleHQ6IENvbnRleHQsIG1vZGVsPzogc3RyaW5nKTogdGhpcyB7XG5cdFx0c3VwZXIuc2V0QmluZGluZ0NvbnRleHQoY29udGV4dCwgbW9kZWwpO1xuXHRcdGlmIChtb2RlbCA9PT0gdW5kZWZpbmVkICYmIGNvbnRleHQpIHtcblx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBPdmVycmlkZSB0aGUgYmluZFByb3BlcnR5IHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVyZSB0aGUgcHJvcGVydHkgaXMgYSBiaW5kaW5nIGluZm8uXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRlIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBiaW5kaW5nSW5mbyBUaGUgYmluZGluZyBpbmZvXG5cdCAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2sgZm9yIGNoYWluaW5nXG5cdCAqL1xuXHRvdmVycmlkZSBiaW5kUHJvcGVydHkobmFtZTogc3RyaW5nLCBiaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHRoaXMge1xuXHRcdGNvbnN0IHByb3BlcnR5TWV0YWRhdGEgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydHkobmFtZSk7XG5cdFx0aWYgKHByb3BlcnR5TWV0YWRhdGE/LmJpbmRhYmxlID09PSBmYWxzZSAmJiBwcm9wZXJ0eU1ldGFkYXRhLmdyb3VwID09PSBcIkRhdGFcIikge1xuXHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW25hbWVdID0gYmluZGluZ0luZm87XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmJpbmRQcm9wZXJ0eShuYW1lLCBiaW5kaW5nSW5mbyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Ly9zZXQgdGhlIG9sZCBkb20gcmVmXG5cdG92ZXJyaWRlIG9uQWZ0ZXJSZW5kZXJpbmcoZXZlbnQ6IEpRdWVyeS5FdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGRvbVJlZiA9IHRoaXMuZ2V0RG9tUmVmKCk7XG5cdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbmV3IFdlYWtSZWYoZG9tUmVmKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbnVsbDtcblx0XHR9XG5cdFx0c3VwZXIub25BZnRlclJlbmRlcmluZyhldmVudCk7XG5cdH1cblxuXHRvdmVycmlkZSBnZXREb21SZWYoc3VmZml4Pzogc3RyaW5nKTogRWxlbWVudCB8IG51bGwge1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdGxldCBkb21SZWY6IEVsZW1lbnQgfCBudWxsID0gb0NvbnRlbnQ/LmdldERvbVJlZihzdWZmaXgpID8/IHN1cGVyLmdldERvbVJlZihzdWZmaXgpO1xuXHRcdGlmICghZG9tUmVmICYmICFzdWZmaXgpIHtcblx0XHRcdGRvbVJlZiA9IHRoaXMuX29sZERvbVJlZj8uZGVyZWYoKSA/PyBudWxsO1xuXHRcdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0XHRyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZG9tUmVmLmlkKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGRvbVJlZjtcblx0fVxuXG5cdG92ZXJyaWRlIGdldEZvY3VzRG9tUmVmKCk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRyZXR1cm4gb0NvbnRlbnQgPyBvQ29udGVudC5nZXRGb2N1c0RvbVJlZigpIDogc3VwZXIuZ2V0Rm9jdXNEb21SZWYoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGFza3MgdXAgdGhlIGNvbnRyb2wgdHJlZSB0byBlbmhhbmNlIHRoZSBhY2Nlc3NpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gX29FbGVtZW50IFRoZSBlbGVtZW50IHRvIGVuaGFuY2Vcblx0ICogQHBhcmFtIG1BcmlhUHJvcHMgVGhlIGN1cnJlbnQgYXJpYSBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIFRoZSBlbmhhbmNlZCBhcmlhIHByb3BlcnRpZXNcblx0ICovXG5cdG92ZXJyaWRlIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0Ly8gZm9yd2FyZCAgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSBjYWxsIHRvIHRoZSBwYXJlbnRcblx0XHRcdChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU6IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUoX29FbGVtZW50LCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIChpZiBhdmFpbGFibGUgb24gdGhlIGNvbmNyZXRlIGNvbnRyb2wpIHByb3ZpZGVzIHRoZSBjdXJyZW50IGFjY2Vzc2liaWxpdHkgc3RhdGUgb2YgdGhlIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zIFRoZSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29udHJvbC5cblx0ICovXG5cdG92ZXJyaWRlIGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IEFjY2Vzc2liaWxpdHlJbmZvIHtcblx0XHRsZXQgYWNjZXNzaWJpbGl0eUluZm8gPSB7fTtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8Q29udHJvbD4oXCJzYXAudWkuY29yZS5Db250cm9sXCIpICYmIHRoaXMuY29udGVudC5nZXRBY2Nlc3NpYmlsaXR5SW5mbykge1xuXHRcdFx0YWNjZXNzaWJpbGl0eUluZm8gPSB0aGlzLmNvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjY2Vzc2liaWxpdHlJbmZvO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0b3ZlcnJpZGUgZ2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxDb250cm9sPihcInNhcC51aS5jb3JlLkNvbnRyb2xcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0SWRGb3JMYWJlbCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdG92ZXJyaWRlIGFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzczogc3RyaW5nKTogdGhpcyB7XG5cdFx0KHRoaXMuY29udGVudCBhcyB1bmtub3duIGFzIENvbnRyb2wpPy5hZGRTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHN1cGVyLmFkZFN0eWxlQ2xhc3Moc3R5bGVDbGFzcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRvdmVycmlkZSByZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3M6IHN0cmluZyk6IHRoaXMge1xuXHRcdCh0aGlzLmNvbnRlbnQgYXMgdW5rbm93biBhcyBDb250cm9sKT8ucmVtb3ZlU3R5bGVDbGFzcyhzdHlsZUNsYXNzKTtcblx0XHRzdXBlci5yZW1vdmVTdHlsZUNsYXNzKHN0eWxlQ2xhc3MpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3J0aGFuZCBmb3IgdGhlIEJpbmRpbmdUb29sa2l0LmJpbmRTdGF0ZSBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9iamVjdC5cblx0ICogQHBhcmFtIHBhdGggQSBwcm9wZXJ0eSBpbiB0aGUgc3RhdGUgb2JqZWN0XG5cdCAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIHRvb2xraXQgZXhwcmVzc2lvbiBmb3IgdGhlIHN0YXRlXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYmluZFN0YXRlPFNUIGV4dGVuZHMgUHJpbWl0aXZlVHlwZT4ocGF0aDoga2V5b2YgSyk6IFBhdGhJbk1vZGVsRXhwcmVzc2lvbjxTVD4gfCBDb25zdGFudEV4cHJlc3Npb248U1Q+IHtcblx0XHRyZXR1cm4gQmluZGluZ1Rvb2xraXQuYmluZFN0YXRlKHRoaXMuc3RhdGUgYXMgSywgcGF0aCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQnVpbGRpbmdCbG9ja0Jhc2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTkEsSUFRTUEsaUJBQWlCLElBQUFDLElBQUEsR0FEdEJDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxFQUFBQyxLQUFBLEdBRTlDQyxXQUFXLENBQUM7SUFBRUMsSUFBSSxFQUFFLHFCQUFxQjtJQUFFQyxRQUFRLEVBQUUsS0FBSztJQUFFQyxTQUFTLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU05RUMsV0FBVyxDQUFDO0lBQUVKLElBQUksRUFBRSxxQkFBcUI7SUFBRUMsUUFBUSxFQUFFLElBQUk7SUFBRUksWUFBWSxFQUFFO0VBQWlCLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzVGQyxXQUFXLENBQUMsQ0FBQyxFQUFBWCxJQUFBLENBQUFZLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsUUFBQTtJQUtkLFNBQUFmLGtCQUFZZ0IsUUFBc0QsRUFBRUMsTUFBMkMsRUFBRUMsS0FBYyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUNoSSxJQUFJLE9BQU9ILFFBQVEsS0FBSyxRQUFRLEVBQUU7UUFDakNDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDYkEsTUFBTSxDQUFDRyxFQUFFLEdBQUdKLFFBQVE7TUFDckI7TUFDQTtNQUNBO01BQ0E7TUFDQUcsS0FBQSxHQUFBSixRQUFBLENBQUFNLElBQUEsT0FBTUwsUUFBUSxFQUF1QkMsTUFBTSxFQUFFQyxLQUFLLENBQUM7TUFBQ0ksMEJBQUEsQ0FBQUgsS0FBQSxhQUFBSSxXQUFBLEVBQUFKLEtBQUE7TUFuQnJEO0FBQ0Q7QUFDQTtNQUZDRywwQkFBQSxDQUFBSCxLQUFBLG9CQUFB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
@@ -37,6 +37,8 @@ class BuildingBlockBase<T extends UI5Element = Control, K extends object = {}> e
37
37
  @defineState()
38
38
  protected state!: StateOf<K>;
39
39
 
40
+ getPlaceholder(_rm: RenderManager): void {}
41
+
40
42
  constructor(settings?: string | PropertiesOf<BuildingBlockBase<T>>, others?: PropertiesOf<BuildingBlockBase<T>>, scope?: object) {
41
43
  if (typeof settings === "string") {
42
44
  others ??= {};
@@ -55,6 +57,7 @@ class BuildingBlockBase<T extends UI5Element = Control, K extends object = {}> e
55
57
  // If there is no content, we render an invisible renderer to avoid the control being
56
58
  InvisibleRenderer.render(oRm, oControl);
57
59
  } else {
60
+ oControl.getPlaceholder?.(oRm);
58
61
  oRm.renderControl(oControl.content);
59
62
  }
60
63
  }
@@ -229,14 +229,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/m/Text", "sap/
229
229
  refDef.setCurrent(targetControlInstance);
230
230
  }
231
231
  const customSettings = targetControlInstance.data("sap-ui-custom-settings") ?? {};
232
- if (flDelegate) {
233
- customSettings["sap.ui.fl"] ??= {};
234
- customSettings["sap.ui.fl"].delegate = flDelegate;
235
- }
236
232
  if (dtDesigntime) {
237
233
  customSettings["sap.ui.dt"] ??= {};
238
234
  customSettings["sap.ui.dt"].designtime = dtDesigntime;
239
235
  }
236
+ if (flDelegate) {
237
+ customSettings["sap.ui.fl"] ??= {};
238
+ customSettings["sap.ui.fl"].delegate = flDelegate;
239
+ }
240
240
  if (Object.keys(customSettings).length > 0) {
241
241
  targetControlInstance.data("sap-ui-custom-settings", customSettings);
242
242
  }
@@ -282,4 +282,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/m/Text", "sap/
282
282
  };
283
283
  return jsxControl;
284
284
  }, false);
285
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGTF9ERUxFR0FURSIsIkNPUkVfUkVRVUlSRSIsIkRUX0RFU0lHTlRJTUUiLCJhZGRDaGlsZEFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25DaGlsZHJlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsImNoaWxkIiwidW5kZWZpbmVkIiwiaXNDaGlsZEFuRWxlbWVudCIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwic3ViQ2hpbGQiLCJPYmplY3QiLCJrZXlzIiwiY2hpbGRLZXkiLCJjaGlsZHJlbiIsImlzQSIsImlzQUNvbnRyb2wiLCJnZXRNZXRhZGF0YSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJtZXRhZGF0YSIsIm1TZXR0aW5ncyIsIm1ldGFkYXRhQWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSIsImdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJoYXNPd25Qcm9wZXJ0eSIsInJlc3VsdGluZ1BhcnNlIiwiQmluZGluZ0luZm8iLCJwYXJzZSIsInBhdGgiLCJtb2RlbCIsImZhY3RvcnkiLCJ0ZW1wbGF0ZSIsInByb2Nlc3NCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24iLCJzZXR0aW5ncyIsInNldHRpbmdzS2V5IiwiYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIiwiYWxsUHJvcGVydGllcyIsImlzQ29uc3RhbnQiLCJjb21waWxlQ29uc3RhbnQiLCJjYWxsIiwiaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24iLCJtb2RlbE5hbWUiLCJjb21waWxlRXhwcmVzc2lvbiIsInByb2Nlc3NTdHJpbmdQcm9wZXJ0eSIsInZhbHVlIiwiYWxsRXZlbnRzIiwic3RhcnRzV2l0aCIsIkxvZyIsImVycm9yIiwiZ2V0TmFtZSIsInByb3BlcnR5VHlwZSIsImdldFR5cGUiLCJEYXRhVHlwZSIsImluY2x1ZGVzIiwicGFyc2VWYWx1ZSIsInByb2Nlc3NPYmplY3RQcm9wZXJ0eSIsImxhdGVQcm9wZXJ0aWVzIiwidGhlbiIsIl9fYmluZGluZ0luZm8iLCJwcm9jZXNzUHJvcGVydGllcyIsImdldEFsbEV2ZW50cyIsImdldEFsbFByb3BlcnRpZXMiLCJpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiIsInByb2Nlc3NDb21tYW5kIiwiY29tbWFuZFByb3BlcnR5IiwiY29tbWFuZCIsImV2ZW50TmFtZSIsInNwbGl0IiwiZXZlbnQiLCJuYW1lIiwiRXZlbnRIYW5kbGVyUmVzb2x2ZXIiLCJyZXNvbHZlRXZlbnRIYW5kbGVyIiwianN4Q29udHJvbCIsIkNvbnRyb2xUeXBlIiwia2V5IiwiX2pzeENvbnRleHQiLCJfanN4Rm9ybWF0dGVyQ29udGV4dCIsInRhcmdldENvbnRyb2wiLCJpc0ZyYWdtZW50IiwiY2xhc3NEZWYiLCJjbGFzcyIsInJlZkRlZiIsInJlZiIsImJpbmRpbmdEZWYiLCJiaW5kaW5nIiwiZmxEZWxlZ2F0ZSIsImR0RGVzaWdudGltZSIsInRhcmdldENvbnRyb2xJbnN0YW5jZSIsImFkZFN0eWxlQ2xhc3MiLCJzZXRDdXJyZW50IiwiY3VzdG9tU2V0dGluZ3MiLCJkYXRhIiwiZGVsZWdhdGUiLCJkZXNpZ250aW1lIiwibGVuZ3RoIiwiYmluZGluZ0luZm8iLCJiaW5kRWxlbWVudCIsInBhcmFtZXRlcnMiLCJiaW5kaW5nRGVmS2V5IiwibGF0ZVByb3BlcnRpZXNLZXkiLCJzZXRQcm9wZXJ0eSIsImNhdGNoIiwiY29udHJvbFR5cGVGbiIsIlRleHQiLCJ0ZXh0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJqc3gtY29udHJvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRjb21waWxlQ29uc3RhbnQsXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0aXNDb25zdGFudCxcblx0aXNQYXRoSW5Nb2RlbEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdJbmZvSG9sZGVyLCBOb25BYnN0cmFjdENsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgSlNYQ29udGV4dCwgTm9uQ29udHJvbFByb3BlcnRpZXMsIFJlZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgQmluZGluZ0luZm8gZnJvbSBcInNhcC91aS9iYXNlL0JpbmRpbmdJbmZvXCI7XG5pbXBvcnQgRGF0YVR5cGUgZnJvbSBcInNhcC91aS9iYXNlL0RhdGFUeXBlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RNZXRhZGF0YVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBFbGVtZW50LCBkZWZhdWx0IGFzIFVJNUVsZW1lbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEV2ZW50SGFuZGxlclJlc29sdmVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvRXZlbnRIYW5kbGVyUmVzb2x2ZXJcIjtcblxuY29uc3QgRkxfREVMRUdBVEUgPSBcImZsOmRlbGVnYXRlXCI7XG5jb25zdCBDT1JFX1JFUVVJUkUgPSBcImNvcmU6cmVxdWlyZVwiO1xuY29uc3QgRFRfREVTSUdOVElNRSA9IFwiZHQ6ZGVzaWdudGltZVwiO1xuY29uc3QgYWRkQ2hpbGRBZ2dyZWdhdGlvbiA9IGZ1bmN0aW9uIChcblx0YWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgKHN0cmluZyB8IFVJNUVsZW1lbnQpW10+LFxuXHRhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyxcblx0Y2hpbGQ/OiBzdHJpbmcgfCBVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdXG4pOiB2b2lkIHtcblx0aWYgKGNoaWxkID09PSBudWxsIHx8IGNoaWxkID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGNoaWxkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmICghYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdID0gW107XG5cdH1cblx0aWYgKGlzQ2hpbGRBbkVsZW1lbnQoY2hpbGQpKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLnB1c2goY2hpbGQpO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG5cdFx0Y2hpbGQuZm9yRWFjaCgoc3ViQ2hpbGQpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgYWdncmVnYXRpb25OYW1lLCBzdWJDaGlsZCk7XG5cdFx0fSk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGNoaWxkID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZDtcblx0fSBlbHNlIHtcblx0XHRPYmplY3Qua2V5cyhjaGlsZCkuZm9yRWFjaCgoY2hpbGRLZXkpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgY2hpbGRLZXksIGNoaWxkW2NoaWxkS2V5XSk7XG5cdFx0fSk7XG5cdH1cbn07XG5jb25zdCBpc0NoaWxkQW5FbGVtZW50ID0gZnVuY3Rpb24gKGNoaWxkcmVuPzogdW5rbm93bik6IGNoaWxkcmVuIGlzIEVsZW1lbnQge1xuXHRyZXR1cm4gKGNoaWxkcmVuIGFzIEVsZW1lbnQpPy5pc0E/LihcInNhcC51aS5jb3JlLkVsZW1lbnRcIik7XG59O1xuY29uc3QgaXNBQ29udHJvbCA9IGZ1bmN0aW9uIChjaGlsZHJlbj86IHR5cGVvZiBDb250cm9sIHwgRnVuY3Rpb24pOiBjaGlsZHJlbiBpcyBOb25BYnN0cmFjdENsYXNzPENvbnRyb2w+IHtcblx0cmV0dXJuICEhKGNoaWxkcmVuIGFzIHR5cGVvZiBDb250cm9sKT8uZ2V0TWV0YWRhdGE7XG59O1xuXG5mdW5jdGlvbiBwcm9jZXNzQWdncmVnYXRpb25zKG1ldGFkYXRhOiBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEsIG1TZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0Y29uc3QgbWV0YWRhdGFBZ2dyZWdhdGlvbnMgPSBtZXRhZGF0YS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0Y29uc3QgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSA9IG1ldGFkYXRhLmdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUoKTtcblx0Y29uc3QgYWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgKHN0cmluZyB8IFVJNUVsZW1lbnQpW10+ID0ge307XG5cdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSwgbVNldHRpbmdzLmNoaWxkcmVuIGFzIHN0cmluZyB8IFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10pO1xuXHRkZWxldGUgbVNldHRpbmdzLmNoaWxkcmVuO1xuXHQvLyBmaW5kIG91dCB3aGljaCBhZ2dyZWdhdGlvbiBhcmUgYm91bmQgKGJvdGggaW4gY2hpbGRyZW4gYW5kIGRpcmVjdGx5IHVuZGVyIGl0KVxuXHRPYmplY3Qua2V5cyhtZXRhZGF0YUFnZ3JlZ2F0aW9ucykuZm9yRWFjaCgoYWdncmVnYXRpb25OYW1lKSA9PiB7XG5cdFx0aWYgKGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAobVNldHRpbmdzLmhhc093blByb3BlcnR5KGFnZ3JlZ2F0aW9uTmFtZSkpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBtU2V0dGluZ3NbYWdncmVnYXRpb25OYW1lXSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdGluZ1BhcnNlID0gQmluZGluZ0luZm8ucGFyc2UobVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0pO1xuXHRcdFx0XHRcdGlmIChyZXN1bHRpbmdQYXJzZSkge1xuXHRcdFx0XHRcdFx0bVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IHJlc3VsdGluZ1BhcnNlLnBhdGgsXG5cdFx0XHRcdFx0XHRcdG1vZGVsOiByZXN1bHRpbmdQYXJzZS5tb2RlbFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZW9mIGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0KG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHsgZmFjdG9yeTogRnVuY3Rpb24gfSkuZmFjdG9yeSA9IGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bXG5cdFx0XHRcdFx0XHRhZ2dyZWdhdGlvbk5hbWVcblx0XHRcdFx0XHRdIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0KG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHsgdGVtcGxhdGU6IHN0cmluZyB8IFVJNUVsZW1lbnQgfSkudGVtcGxhdGUgPSBhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV1bMF07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gcHJvcGVydHkgZm9yIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzXG4gKlxuICogSWYgdGhlIHByb3BlcnR5IGlzIGEgY29uc3RhbnQsIGl0IGNvbXBpbGVzIGl0IGFzIGEgY29uc3RhbnQuIElmIHRoZSBwcm9wZXJ0eSBpcyBhbiBhZ2dyZWdhdGlvbixcbiAqIGl0IGNvbXBpbGVzIHRoZSBleHByZXNzaW9uIGFzIGFuIG9iamVjdC4gT3RoZXJ3aXNlLCBpdCBjb21waWxlcyB0aGUgZXhwcmVzc2lvbiBub3JtYWxseS5cbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5nc0tleSBUaGUga2V5IG9mIHRoZSBzZXR0aW5nIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiBUaGUgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gdG8gcHJvY2Vzc1xuICogQHBhcmFtIGFsbFByb3BlcnRpZXMgQWxsIHByb3BlcnRpZXMgb2YgdGhlIGNvbnRyb2xcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbihcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzLFxuXHRiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPixcblx0YWxsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IHZvaWQge1xuXHRpZiAoaXNDb25zdGFudChiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24pKSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUNvbnN0YW50KGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgZmFsc2UsIHRydWUsIHRydWUpO1xuXHR9IGVsc2UgaWYgKCFPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChhbGxQcm9wZXJ0aWVzLCBzZXR0aW5nc0tleSkpIHtcblx0XHQvLyBBZ2dyZWdhdGlvbiBjYXNlIC0gd2UgbmVlZCB0byBjb21waWxlIHRoZSBleHByZXNzaW9uIGJ1dCBhcyBhbiBvYmplY3Rcblx0XHRpZiAoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24oYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uKSkge1xuXHRcdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0geyBwYXRoOiBiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ucGF0aCwgbW9kZWw6IGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbi5tb2RlbE5hbWUgfTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUV4cHJlc3Npb24oYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uKTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIHN0cmluZyBwcm9wZXJ0eSBmb3IgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnRpZXNcbiAqXG4gKiBJZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgYmluZGluZyBleHByZXNzaW9uIGFuZCBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LFxuICogaXQgcGFyc2VzIHRoZSB2YWx1ZSB0byBwcm92aWRlIHRoZSBleHBlY3RlZCBmb3JtYXQuIElmIHRoZSBwcm9wZXJ0eSBpcyBhbiBldmVudCBoYW5kbGVyLFxuICogaXQgbG9ncyBhbiBlcnJvci5cbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5nc0tleSBUaGUga2V5IG9mIHRoZSBzZXR0aW5nIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUgdG8gcHJvY2Vzc1xuICogQHBhcmFtIGFsbEV2ZW50cyBBbGwgZXZlbnRzIG9mIHRoZSBjb250cm9sXG4gKiBAcGFyYW0gYWxsUHJvcGVydGllcyBBbGwgcHJvcGVydGllcyBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIG1ldGFkYXRhIE1ldGFkYXRhIG9mIHRoZSBjb250cm9sXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NTdHJpbmdQcm9wZXJ0eShcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzLFxuXHR2YWx1ZTogc3RyaW5nLFxuXHRhbGxFdmVudHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRhbGxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0bWV0YWRhdGE6IE1hbmFnZWRPYmplY3RNZXRhZGF0YVxuKTogdm9pZCB7XG5cdGlmICghdmFsdWUuc3RhcnRzV2l0aChcIntcIikpIHtcblx0XHRpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoYWxsRXZlbnRzLCBzZXR0aW5nc0tleSkpIHtcblx0XHRcdExvZy5lcnJvcihgRXZlbnQgaGFuZGxlcnMgY2Fubm90IGJlIHNldCBhcyBzdHJpbmcgaW4gSlNYLCAke3NldHRpbmdzS2V5fSBpbiAke21ldGFkYXRhLmdldE5hbWUoKX1gKTtcblx0XHR9XG5cdFx0Y29uc3QgcHJvcGVydHlUeXBlID0gKGFsbFByb3BlcnRpZXNbc2V0dGluZ3NLZXldIGFzIHsgZ2V0VHlwZT86IEZ1bmN0aW9uIH0pPy5nZXRUeXBlPy4oKTtcblx0XHRpZiAocHJvcGVydHlUeXBlICYmIHByb3BlcnR5VHlwZSBpbnN0YW5jZW9mIERhdGFUeXBlICYmIFtcImJvb2xlYW5cIiwgXCJpbnRcIiwgXCJmbG9hdFwiXS5pbmNsdWRlcyhwcm9wZXJ0eVR5cGUuZ2V0TmFtZSgpKSkge1xuXHRcdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gcHJvcGVydHlUeXBlLnBhcnNlVmFsdWUodmFsdWUpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzZXR0aW5nc1tzZXR0aW5nc0tleV0gPSB2YWx1ZTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhbiBvYmplY3QgcHJvcGVydHkgZm9yIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzLlxuICpcbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHByb21pc2UsIGl0IGFkZHMgaXQgdG8gdGhlIGxhdGUgcHJvcGVydGllcyBtYXAuIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmcgaW5mbyBob2xkZXIsXG4gKiBpdCBzZXRzIHRoZSBiaW5kaW5nIGluZm8gdG8gdGhlIHNldHRpbmdzLlxuICogQHBhcmFtIHNldHRpbmdzIFRoZSBzZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIHNldHRpbmdzS2V5IFRoZSBrZXkgb2YgdGhlIHNldHRpbmcgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB2YWx1ZSB0byBwcm9jZXNzXG4gKiBAcGFyYW0gbGF0ZVByb3BlcnRpZXMgQSBtYXAgb2YgdGhlIGNvbnRyb2wncyBsYXRlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc09iamVjdFByb3BlcnR5KFxuXHRzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdHNldHRpbmdzS2V5OiBrZXlvZiB0eXBlb2Ygc2V0dGluZ3MsXG5cdHZhbHVlOiB1bmtub3duLFxuXHRsYXRlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj5cbik6IHZvaWQge1xuXHRpZiAoKHZhbHVlIGFzIFByb21pc2U8dW5rbm93bj4pLnRoZW4pIHtcblx0XHRsYXRlUHJvcGVydGllc1tzZXR0aW5nc0tleV0gPSB2YWx1ZSBhcyBQcm9taXNlPHVua25vd24+O1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tzZXR0aW5nc0tleV07XG5cdH0gZWxzZSBpZiAoKHZhbHVlIGFzIEJpbmRpbmdJbmZvSG9sZGVyPHVua25vd24+KS5fX2JpbmRpbmdJbmZvKSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gKHZhbHVlIGFzIEJpbmRpbmdJbmZvSG9sZGVyPHVua25vd24+KS5fX2JpbmRpbmdJbmZvO1xuXHR9XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIHRoZSBwcm9wZXJ0aWVzLlxuICpcbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmdUb29sa2l0IGV4cHJlc3Npb24gd2UgbmVlZCB0byBjb21waWxlIGl0LlxuICogRWxzZSBpZiB0aGUgcHJvcGVydHkgaXMgc2V0IGFzIHN0cmluZyAoY29tcGlsZWQgYmluZGluZyBleHByZXNzaW9uIHJldHVybnMgc3RyaW5nIGJ5IGRlZmF1bHQgZXZlbiBpZiBpdCdzIGEgYm9vbGVhbiwgaW50LCBldGMuKSBhbmQgaXQgZG9lc24ndCBtYXRjaCB3aXRoIGV4cGVjdGVkXG4gKiBmb3JtYXQgdGhlIHZhbHVlIGlzIHBhcnNlZCB0byBwcm92aWRlIGV4cGVjdGVkIGZvcm1hdC5cbiAqIEBwYXJhbSBtZXRhZGF0YSBNZXRhZGF0YSBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIHNldHRpbmdzIFNldHRpbmdzIG9mIHRoZSBjb250cm9sXG4gKiBAcmV0dXJucyBBIG1hcCBvZiBsYXRlIHByb3BlcnRpZXMgdGhhdCBuZWVkIHRvIGJlIGF3YWl0ZWQgYWZ0ZXIgdGhlIGNvbnRyb2wgaXMgY3JlYXRlZFxuICovXG5mdW5jdGlvbiBwcm9jZXNzUHJvcGVydGllcyhtZXRhZGF0YTogTWFuYWdlZE9iamVjdE1ldGFkYXRhLCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCBQcm9taXNlPHVua25vd24+PiB7XG5cdGxldCBzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzO1xuXHRjb25zdCBsYXRlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4gPSB7fTtcblx0Y29uc3QgYWxsRXZlbnRzID0gbWV0YWRhdGEuZ2V0QWxsRXZlbnRzKCk7XG5cdGNvbnN0IGFsbFByb3BlcnRpZXMgPSBtZXRhZGF0YS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cblx0Zm9yIChzZXR0aW5nc0tleSBpbiBzZXR0aW5ncykge1xuXHRcdGNvbnN0IHZhbHVlID0gc2V0dGluZ3Nbc2V0dGluZ3NLZXldO1xuXHRcdGlmIChpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbih2YWx1ZSkpIHtcblx0XHRcdHByb2Nlc3NCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24oc2V0dGluZ3MsIHNldHRpbmdzS2V5LCB2YWx1ZSwgYWxsUHJvcGVydGllcyk7XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdHByb2Nlc3NPYmplY3RQcm9wZXJ0eShzZXR0aW5ncywgc2V0dGluZ3NLZXksIHZhbHVlLCBsYXRlUHJvcGVydGllcyk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHByb2Nlc3NTdHJpbmdQcm9wZXJ0eShzZXR0aW5ncywgc2V0dGluZ3NLZXksIHZhbHVlLCBhbGxFdmVudHMsIGFsbFByb3BlcnRpZXMsIG1ldGFkYXRhKTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBzZXR0aW5nc1tzZXR0aW5nc0tleV07XG5cdFx0fVxuXHR9XG5cdHJldHVybiBsYXRlUHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIGNvbW1hbmQuXG4gKlxuICogUmVzb2x2ZXMgdGhlIGNvbW1hbmQgc2V0IG9uIHRoZSBjb250cm9sIHZpYSB0aGUgaW50cmluc2ljIGNsYXNzIGF0dHJpYnV0ZSBcImpzeDpjb21tYW5kXCIuXG4gKiBJZiBubyBjb21tYW5kIGhhcyBiZWVuIHNldCBvciB0aGUgdGFyZ2V0ZWQgZXZlbnQgZG9lc24ndCBleGlzdCwgbm8gY29uZmlndXJhdGlvbiBpcyBzZXQuXG4gKiBAcGFyYW0gbWV0YWRhdGEgTWV0YWRhdGEgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5ncyBTZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICovXG5mdW5jdGlvbiBwcm9jZXNzQ29tbWFuZChtZXRhZGF0YTogTWFuYWdlZE9iamVjdE1ldGFkYXRhLCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0Y29uc3QgY29tbWFuZFByb3BlcnR5ID0gc2V0dGluZ3NbXCJqc3g6Y29tbWFuZFwiXTtcblx0aWYgKGNvbW1hbmRQcm9wZXJ0eSkge1xuXHRcdGNvbnN0IFtjb21tYW5kLCBldmVudE5hbWVdID0gKGNvbW1hbmRQcm9wZXJ0eSBhcyBzdHJpbmcpLnNwbGl0KFwifFwiKTtcblx0XHRjb25zdCBldmVudCA9IG1ldGFkYXRhLmdldEFsbEV2ZW50cygpW2V2ZW50TmFtZV07XG5cdFx0aWYgKGV2ZW50ICYmIGNvbW1hbmQuc3RhcnRzV2l0aChcImNtZDpcIikpIHtcblx0XHRcdHNldHRpbmdzW2V2ZW50Lm5hbWVdID0gRXZlbnRIYW5kbGVyUmVzb2x2ZXIucmVzb2x2ZUV2ZW50SGFuZGxlcihjb21tYW5kKTtcblx0XHR9XG5cdH1cblx0ZGVsZXRlIHNldHRpbmdzW1wianN4OmNvbW1hbmRcIl07XG59XG5cbmNvbnN0IGpzeENvbnRyb2wgPSBmdW5jdGlvbiA8VCBleHRlbmRzIEVsZW1lbnQ+KFxuXHRDb250cm9sVHlwZTogTm9uQWJzdHJhY3RDbGFzczxDb250cm9sPiB8IEZ1bmN0aW9uLFxuXHRzZXR0aW5nczogTm9uQ29udHJvbFByb3BlcnRpZXM8VD4gJiB7XG5cdFx0a2V5OiBzdHJpbmc7XG5cdFx0Y2hpbGRyZW4/OiBFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8VD47XG5cdFx0cmVmPzogUmVmPFQ+O1xuXHRcdGJpbmRpbmc/OiBzdHJpbmc7XG5cdFx0Y2xhc3M/OiBzdHJpbmc7XG5cdFx0W0ZMX0RFTEVHQVRFXT86IHN0cmluZztcblx0XHRbRFRfREVTSUdOVElNRV0/OiBzdHJpbmc7XG5cdFx0W0NPUkVfUkVRVUlSRV0/OiBzdHJpbmc7XG5cdH0sXG5cdGtleTogc3RyaW5nLFxuXHRfanN4Q29udGV4dDogSlNYQ29udGV4dCxcblx0X2pzeEZvcm1hdHRlckNvbnRleHQ6IG9iamVjdFxuKTogQ29udHJvbCB8IENvbnRyb2xbXSB8IHVuZGVmaW5lZCB7XG5cdGxldCB0YXJnZXRDb250cm9sOiBDb250cm9sIHwgQ29udHJvbFtdIHwgdW5kZWZpbmVkO1xuXG5cdGlmICgoQ29udHJvbFR5cGUgYXMgeyBpc0ZyYWdtZW50PzogYm9vbGVhbiB9KT8uaXNGcmFnbWVudCkge1xuXHRcdHRhcmdldENvbnRyb2wgPSBzZXR0aW5ncy5jaGlsZHJlbiBhcyBDb250cm9sIHwgQ29udHJvbFtdO1xuXHR9IGVsc2UgaWYgKGlzQUNvbnRyb2woQ29udHJvbFR5cGUpKSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBDb250cm9sVHlwZS5nZXRNZXRhZGF0YSgpO1xuXHRcdGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0c2V0dGluZ3NbXCJrZXlcIl0gPSBrZXk7XG5cdFx0fVxuXHRcdGNvbnN0IGxhdGVQcm9wZXJ0aWVzID0gcHJvY2Vzc1Byb3BlcnRpZXMobWV0YWRhdGEsIHNldHRpbmdzKTtcblx0XHRwcm9jZXNzQ29tbWFuZChtZXRhZGF0YSwgc2V0dGluZ3MpO1xuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnMobWV0YWRhdGEsIHNldHRpbmdzKTtcblx0XHRjb25zdCBjbGFzc0RlZiA9IHNldHRpbmdzLmNsYXNzO1xuXHRcdGNvbnN0IHJlZkRlZiA9IHNldHRpbmdzLnJlZjtcblx0XHRjb25zdCBiaW5kaW5nRGVmID0gc2V0dGluZ3MuYmluZGluZztcblx0XHRjb25zdCBmbERlbGVnYXRlID0gc2V0dGluZ3NbRkxfREVMRUdBVEVdO1xuXHRcdGNvbnN0IGR0RGVzaWdudGltZSA9IHNldHRpbmdzW0RUX0RFU0lHTlRJTUVdO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncy5yZWY7XG5cdFx0ZGVsZXRlIHNldHRpbmdzLmNsYXNzO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncy5iaW5kaW5nO1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tGTF9ERUxFR0FURV07XG5cdFx0ZGVsZXRlIHNldHRpbmdzW0RUX0RFU0lHTlRJTUVdO1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tDT1JFX1JFUVVJUkVdOyAvLyBDb3JlIHJlcXVpcmUgaXMgbm90IHVzZWZ1bCBpbiBjb250cm9sIG1vZGVcblx0XHRjb25zdCB0YXJnZXRDb250cm9sSW5zdGFuY2UgPSBuZXcgQ29udHJvbFR5cGUoc2V0dGluZ3MgYXMgJENvbnRyb2xTZXR0aW5ncywgeyAuLi5fanN4Rm9ybWF0dGVyQ29udGV4dCB9KTtcblx0XHRpZiAoY2xhc3NEZWYpIHtcblx0XHRcdHRhcmdldENvbnRyb2xJbnN0YW5jZS5hZGRTdHlsZUNsYXNzKGNsYXNzRGVmKTtcblx0XHR9XG5cdFx0aWYgKHJlZkRlZikge1xuXHRcdFx0cmVmRGVmLnNldEN1cnJlbnQodGFyZ2V0Q29udHJvbEluc3RhbmNlIGFzIHVua25vd24gYXMgVCk7XG5cdFx0fVxuXHRcdGNvbnN0IGN1c3RvbVNldHRpbmdzID0gdGFyZ2V0Q29udHJvbEluc3RhbmNlLmRhdGEoXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIpID8/IHt9O1xuXHRcdGlmIChmbERlbGVnYXRlKSB7XG5cdFx0XHRjdXN0b21TZXR0aW5nc1tcInNhcC51aS5mbFwiXSA/Pz0ge307XG5cdFx0XHRjdXN0b21TZXR0aW5nc1tcInNhcC51aS5mbFwiXS5kZWxlZ2F0ZSA9IGZsRGVsZWdhdGU7XG5cdFx0fVxuXHRcdGlmIChkdERlc2lnbnRpbWUpIHtcblx0XHRcdGN1c3RvbVNldHRpbmdzW1wic2FwLnVpLmR0XCJdID8/PSB7fTtcblx0XHRcdGN1c3RvbVNldHRpbmdzW1wic2FwLnVpLmR0XCJdLmRlc2lnbnRpbWUgPSBkdERlc2lnbnRpbWU7XG5cdFx0fVxuXHRcdGlmIChPYmplY3Qua2V5cyhjdXN0b21TZXR0aW5ncykubGVuZ3RoID4gMCkge1xuXHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmRhdGEoXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIsIGN1c3RvbVNldHRpbmdzKTtcblx0XHR9XG5cblx0XHRpZiAoYmluZGluZ0RlZikge1xuXHRcdFx0aWYgKHR5cGVvZiBiaW5kaW5nRGVmID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGNvbnN0IGJpbmRpbmdJbmZvID0gQmluZGluZ0luZm8ucGFyc2UoYmluZGluZ0RlZik7XG5cdFx0XHRcdGlmIChiaW5kaW5nSW5mbykge1xuXHRcdFx0XHRcdHRhcmdldENvbnRyb2xJbnN0YW5jZS5iaW5kRWxlbWVudCh7XG5cdFx0XHRcdFx0XHRtb2RlbDogYmluZGluZ0luZm8ubW9kZWwgPz8gdW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0cGF0aDogYmluZGluZ0luZm8ucGF0aCxcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnM6IGJpbmRpbmdJbmZvLnBhcmFtZXRlcnMgPz8gdW5kZWZpbmVkXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmJpbmRFbGVtZW50KGJpbmRpbmdEZWYpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBXZSBjb25zaWRlciBpdCdzIGFuIG9iamVjdFxuXHRcdFx0XHRPYmplY3Qua2V5cyhiaW5kaW5nRGVmKS5mb3JFYWNoKChiaW5kaW5nRGVmS2V5KSA9PiB7XG5cdFx0XHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmJpbmRFbGVtZW50KHsgbW9kZWw6IGJpbmRpbmdEZWZLZXksIHBhdGg6IGJpbmRpbmdEZWZbYmluZGluZ0RlZktleV0gfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRmb3IgKGNvbnN0IGxhdGVQcm9wZXJ0aWVzS2V5IGluIGxhdGVQcm9wZXJ0aWVzKSB7XG5cdFx0XHRsYXRlUHJvcGVydGllc1tsYXRlUHJvcGVydGllc0tleV1cblx0XHRcdFx0LnRoZW4oKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRhcmdldENvbnRyb2xJbnN0YW5jZS5zZXRQcm9wZXJ0eShsYXRlUHJvcGVydGllc0tleSwgdmFsdWUpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBDb3VsZG4ndCBzZXQgcHJvcGVydHkgJHtsYXRlUHJvcGVydGllc0tleX0gb24gJHtDb250cm9sVHlwZS5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gLCBlcnJvciwgXCJqc3hDb250cm9sXCIpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0dGFyZ2V0Q29udHJvbCA9IHRhcmdldENvbnRyb2xJbnN0YW5jZTtcblx0fSBlbHNlIGlmICh0eXBlb2YgQ29udHJvbFR5cGUgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdGNvbnN0IGNvbnRyb2xUeXBlRm4gPSBDb250cm9sVHlwZTtcblx0XHR0YXJnZXRDb250cm9sID0gY29udHJvbFR5cGVGbihzZXR0aW5ncyBhcyAkQ29udHJvbFNldHRpbmdzKTtcblx0fSBlbHNlIHtcblx0XHR0YXJnZXRDb250cm9sID0gbmV3IFRleHQoeyB0ZXh0OiBcIk1pc3NpbmcgY29tcG9uZW50IFwiICsgKENvbnRyb2xUeXBlIGFzIHN0cmluZykgfSk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0Q29udHJvbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGpzeENvbnRyb2w7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztFQW9CQSxNQUFNQSxXQUFXLEdBQUcsYUFBYTtFQUNqQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztFQUNuQyxNQUFNQyxhQUFhLEdBQUcsZUFBZTtFQUNyQyxNQUFNQyxtQkFBbUIsR0FBRyxTQUFBQSxDQUMzQkMsbUJBQTRELEVBQzVEQyxlQUF1QixFQUN2QkMsS0FBMEMsRUFDbkM7SUFDUCxJQUFJQSxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUtDLFNBQVMsSUFBSSxPQUFPRCxLQUFLLEtBQUssUUFBUSxFQUFFO01BQ3ZFO0lBQ0Q7SUFDQSxJQUFJLENBQUNGLG1CQUFtQixDQUFDQyxlQUFlLENBQUMsRUFBRTtNQUMxQ0QsbUJBQW1CLENBQUNDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7SUFDMUM7SUFDQSxJQUFJRyxnQkFBZ0IsQ0FBQ0YsS0FBSyxDQUFDLEVBQUU7TUFDNUJGLG1CQUFtQixDQUFDQyxlQUFlLENBQUMsQ0FBQ0ksSUFBSSxDQUFDSCxLQUFLLENBQUM7SUFDakQsQ0FBQyxNQUFNLElBQUlJLEtBQUssQ0FBQ0MsT0FBTyxDQUFDTCxLQUFLLENBQUMsRUFBRTtNQUNoQ0EsS0FBSyxDQUFDTSxPQUFPLENBQUVDLFFBQVEsSUFBSztRQUMzQlYsbUJBQW1CLENBQUNDLG1CQUFtQixFQUFFQyxlQUFlLEVBQUVRLFFBQVEsQ0FBQztNQUNwRSxDQUFDLENBQUM7SUFDSCxDQUFDLE1BQU0sSUFBSSxPQUFPUCxLQUFLLEtBQUssVUFBVSxFQUFFO01BQ3ZDRixtQkFBbUIsQ0FBQ0MsZUFBZSxDQUFDLEdBQUdDLEtBQUs7SUFDN0MsQ0FBQyxNQUFNO01BQ05RLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDVCxLQUFLLENBQUMsQ0FBQ00sT0FBTyxDQUFFSSxRQUFRLElBQUs7UUFDeENiLG1CQUFtQixDQUFDQyxtQkFBbUIsRUFBRVksUUFBUSxFQUFFVixLQUFLLENBQUNVLFFBQVEsQ0FBQyxDQUFDO01BQ3BFLENBQUMsQ0FBQztJQUNIO0VBQ0QsQ0FBQztFQUNELE1BQU1SLGdCQUFnQixHQUFHLFNBQUFBLENBQVVTLFFBQWtCLEVBQXVCO0lBQzNFLE9BQVFBLFFBQVEsRUFBY0MsR0FBRyxHQUFHLHFCQUFxQixDQUFDO0VBQzNELENBQUM7RUFDRCxNQUFNQyxVQUFVLEdBQUcsU0FBQUEsQ0FBVUYsUUFBb0MsRUFBeUM7SUFDekcsT0FBTyxDQUFDLENBQUVBLFFBQVEsRUFBcUJHLFdBQVc7RUFDbkQsQ0FBQztFQUVELFNBQVNDLG1CQUFtQkEsQ0FBQ0MsUUFBK0IsRUFBRUMsU0FBa0MsRUFBUTtJQUN2RyxNQUFNQyxvQkFBb0IsR0FBR0YsUUFBUSxDQUFDRyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzFELE1BQU1DLHNCQUFzQixHQUFHSixRQUFRLENBQUNLLHlCQUF5QixDQUFDLENBQUM7SUFDbkUsTUFBTXZCLG1CQUE0RCxHQUFHLENBQUMsQ0FBQztJQUN2RUQsbUJBQW1CLENBQUNDLG1CQUFtQixFQUFFc0Isc0JBQXNCLEVBQUVILFNBQVMsQ0FBQ04sUUFBOEMsQ0FBQztJQUMxSCxPQUFPTSxTQUFTLENBQUNOLFFBQVE7SUFDekI7SUFDQUgsTUFBTSxDQUFDQyxJQUFJLENBQUNTLG9CQUFvQixDQUFDLENBQUNaLE9BQU8sQ0FBRVAsZUFBZSxJQUFLO01BQzlELElBQUlELG1CQUFtQixDQUFDQyxlQUFlLENBQUMsS0FBS0UsU0FBUyxFQUFFO1FBQ3ZELElBQUlnQixTQUFTLENBQUNLLGNBQWMsQ0FBQ3ZCLGVBQWUsQ0FBQyxFQUFFO1VBQzlDLElBQUksT0FBT2tCLFNBQVMsQ0FBQ2xCLGVBQWUsQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNuRCxNQUFNd0IsY0FBYyxHQUFHQyxXQUFXLENBQUNDLEtBQUssQ0FBQ1IsU0FBUyxDQUFDbEIsZUFBZSxDQUFDLENBQUM7WUFDcEUsSUFBSXdCLGNBQWMsRUFBRTtjQUNuQk4sU0FBUyxDQUFDbEIsZUFBZSxDQUFDLEdBQUc7Z0JBQzVCMkIsSUFBSSxFQUFFSCxjQUFjLENBQUNHLElBQUk7Z0JBQ3pCQyxLQUFLLEVBQUVKLGNBQWMsQ0FBQ0k7Y0FDdkIsQ0FBQztZQUNGLENBQUMsTUFBTTtjQUNOVixTQUFTLENBQUNsQixlQUFlLENBQUMsR0FBRztnQkFDNUIyQixJQUFJLEVBQUVULFNBQVMsQ0FBQ2xCLGVBQWU7Y0FDaEMsQ0FBQztZQUNGO1VBQ0Q7VUFDQSxJQUFJLE9BQU9ELG1CQUFtQixDQUFDQyxlQUFlLENBQUMsS0FBSyxVQUFVLEVBQUU7WUFDOURrQixTQUFTLENBQUNsQixlQUFlLENBQUMsQ0FBMkI2QixPQUFPLEdBQUc5QixtQkFBbUIsQ0FDbEZDLGVBQWUsQ0FDUTtVQUN6QixDQUFDLE1BQU07WUFDTGtCLFNBQVMsQ0FBQ2xCLGVBQWUsQ0FBQyxDQUF1QzhCLFFBQVEsR0FBRy9CLG1CQUFtQixDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDckg7UUFDRCxDQUFDLE1BQU07VUFDTmtCLFNBQVMsQ0FBQ2xCLGVBQWUsQ0FBQyxHQUFHRCxtQkFBbUIsQ0FBQ0MsZUFBZSxDQUFDO1FBQ2xFO01BQ0Q7SUFDRCxDQUFDLENBQUM7RUFDSDs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVMrQiwrQkFBK0JBLENBQ3ZDQyxRQUFpQyxFQUNqQ0MsV0FBa0MsRUFDbENDLHdCQUEyRCxFQUMzREMsYUFBc0MsRUFDL0I7SUFDUCxJQUFJQyxVQUFVLENBQUNGLHdCQUF3QixDQUFDLEVBQUU7TUFDekNGLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDLEdBQUdJLGVBQWUsQ0FBQ0gsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDckYsQ0FBQyxNQUFNLElBQUksQ0FBQ3pCLE1BQU0sQ0FBQ2MsY0FBYyxDQUFDZSxJQUFJLENBQUNILGFBQWEsRUFBRUYsV0FBVyxDQUFDLEVBQUU7TUFDbkU7TUFDQSxJQUFJTSx1QkFBdUIsQ0FBQ0wsd0JBQXdCLENBQUMsRUFBRTtRQUN0REYsUUFBUSxDQUFDQyxXQUFXLENBQUMsR0FBRztVQUFFTixJQUFJLEVBQUVPLHdCQUF3QixDQUFDUCxJQUFJO1VBQUVDLEtBQUssRUFBRU0sd0JBQXdCLENBQUNNO1FBQVUsQ0FBQztNQUMzRztJQUNELENBQUMsTUFBTTtNQUNOUixRQUFRLENBQUNDLFdBQVcsQ0FBQyxHQUFHUSxpQkFBaUIsQ0FBQ1Asd0JBQXdCLENBQUM7SUFDcEU7RUFDRDs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNRLHFCQUFxQkEsQ0FDN0JWLFFBQWlDLEVBQ2pDQyxXQUFrQyxFQUNsQ1UsS0FBYSxFQUNiQyxTQUFrQyxFQUNsQ1QsYUFBc0MsRUFDdENsQixRQUErQixFQUN4QjtJQUNQLElBQUksQ0FBQzBCLEtBQUssQ0FBQ0UsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO01BQzNCLElBQUlwQyxNQUFNLENBQUNjLGNBQWMsQ0FBQ2UsSUFBSSxDQUFDTSxTQUFTLEVBQUVYLFdBQVcsQ0FBQyxFQUFFO1FBQ3ZEYSxHQUFHLENBQUNDLEtBQUssQ0FBQyxrREFBa0RkLFdBQVcsT0FBT2hCLFFBQVEsQ0FBQytCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztNQUNwRztNQUNBLE1BQU1DLFlBQVksR0FBSWQsYUFBYSxDQUFDRixXQUFXLENBQUMsRUFBNkJpQixPQUFPLEdBQUcsQ0FBQztNQUN4RixJQUFJRCxZQUFZLElBQUlBLFlBQVksWUFBWUUsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQ0MsUUFBUSxDQUFDSCxZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNySGhCLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDLEdBQUdnQixZQUFZLENBQUNJLFVBQVUsQ0FBQ1YsS0FBSyxDQUFDO01BQ3ZEO0lBQ0QsQ0FBQyxNQUFNO01BQ05YLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDLEdBQUdVLEtBQUs7SUFDOUI7RUFDRDs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNXLHFCQUFxQkEsQ0FDN0J0QixRQUFpQyxFQUNqQ0MsV0FBa0MsRUFDbENVLEtBQWMsRUFDZFksY0FBZ0QsRUFDekM7SUFDUCxJQUFLWixLQUFLLENBQXNCYSxJQUFJLEVBQUU7TUFDckNELGNBQWMsQ0FBQ3RCLFdBQVcsQ0FBQyxHQUFHVSxLQUF5QjtNQUN2RCxPQUFPWCxRQUFRLENBQUNDLFdBQVcsQ0FBQztJQUM3QixDQUFDLE1BQU0sSUFBS1UsS0FBSyxDQUFnQ2MsYUFBYSxFQUFFO01BQy9EekIsUUFBUSxDQUFDQyxXQUFXLENBQUMsR0FBSVUsS0FBSyxDQUFnQ2MsYUFBYTtJQUM1RTtFQUNEOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0MsaUJBQWlCQSxDQUFDekMsUUFBK0IsRUFBRWUsUUFBaUMsRUFBb0M7SUFDaEksSUFBSUMsV0FBa0M7SUFDdEMsTUFBTXNCLGNBQWdELEdBQUcsQ0FBQyxDQUFDO0lBQzNELE1BQU1YLFNBQVMsR0FBRzNCLFFBQVEsQ0FBQzBDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLE1BQU14QixhQUFhLEdBQUdsQixRQUFRLENBQUMyQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWpELEtBQUszQixXQUFXLElBQUlELFFBQVEsRUFBRTtNQUM3QixNQUFNVyxLQUFLLEdBQUdYLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDO01BQ25DLElBQUk0QiwwQkFBMEIsQ0FBQ2xCLEtBQUssQ0FBQyxFQUFFO1FBQ3RDWiwrQkFBK0IsQ0FBQ0MsUUFBUSxFQUFFQyxXQUFXLEVBQUVVLEtBQUssRUFBRVIsYUFBYSxDQUFDO01BQzdFLENBQUMsTUFBTSxJQUFJUSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDdkRXLHFCQUFxQixDQUFDdEIsUUFBUSxFQUFFQyxXQUFXLEVBQUVVLEtBQUssRUFBRVksY0FBYyxDQUFDO01BQ3BFLENBQUMsTUFBTSxJQUFJLE9BQU9aLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDckNELHFCQUFxQixDQUFDVixRQUFRLEVBQUVDLFdBQVcsRUFBRVUsS0FBSyxFQUFFQyxTQUFTLEVBQUVULGFBQWEsRUFBRWxCLFFBQVEsQ0FBQztNQUN4RixDQUFDLE1BQU0sSUFBSTBCLEtBQUssS0FBS3pDLFNBQVMsRUFBRTtRQUMvQixPQUFPOEIsUUFBUSxDQUFDQyxXQUFXLENBQUM7TUFDN0I7SUFDRDtJQUNBLE9BQU9zQixjQUFjO0VBQ3RCOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTTyxjQUFjQSxDQUFDN0MsUUFBK0IsRUFBRWUsUUFBaUMsRUFBUTtJQUNqRyxNQUFNK0IsZUFBZSxHQUFHL0IsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUMvQyxJQUFJK0IsZUFBZSxFQUFFO01BQ3BCLE1BQU0sQ0FBQ0MsT0FBTyxFQUFFQyxTQUFTLENBQUMsR0FBSUYsZUFBZSxDQUFZRyxLQUFLLENBQUMsR0FBRyxDQUFDO01BQ25FLE1BQU1DLEtBQUssR0FBR2xELFFBQVEsQ0FBQzBDLFlBQVksQ0FBQyxDQUFDLENBQUNNLFNBQVMsQ0FBQztNQUNoRCxJQUFJRSxLQUFLLElBQUlILE9BQU8sQ0FBQ25CLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN4Q2IsUUFBUSxDQUFDbUMsS0FBSyxDQUFDQyxJQUFJLENBQUMsR0FBR0Msb0JBQW9CLENBQUNDLG1CQUFtQixDQUFDTixPQUFPLENBQUM7TUFDekU7SUFDRDtJQUNBLE9BQU9oQyxRQUFRLENBQUMsYUFBYSxDQUFDO0VBQy9CO0VBRUEsTUFBTXVDLFVBQVUsR0FBRyxTQUFBQSxDQUNsQkMsV0FBaUQsRUFDakR4QyxRQVNDLEVBQ0R5QyxHQUFXLEVBQ1hDLFdBQXVCLEVBQ3ZCQyxvQkFBNEIsRUFDTTtJQUNsQyxJQUFJQyxhQUE4QztJQUVsRCxJQUFLSixXQUFXLEVBQStCSyxVQUFVLEVBQUU7TUFDMURELGFBQWEsR0FBRzVDLFFBQVEsQ0FBQ3BCLFFBQStCO0lBQ3pELENBQUMsTUFBTSxJQUFJRSxVQUFVLENBQUMwRCxXQUFXLENBQUMsRUFBRTtNQUNuQyxNQUFNdkQsUUFBUSxHQUFHdUQsV0FBVyxDQUFDekQsV0FBVyxDQUFDLENBQUM7TUFDMUMsSUFBSTBELEdBQUcsS0FBS3ZFLFNBQVMsRUFBRTtRQUN0QjhCLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBR3lDLEdBQUc7TUFDdEI7TUFDQSxNQUFNbEIsY0FBYyxHQUFHRyxpQkFBaUIsQ0FBQ3pDLFFBQVEsRUFBRWUsUUFBUSxDQUFDO01BQzVEOEIsY0FBYyxDQUFDN0MsUUFBUSxFQUFFZSxRQUFRLENBQUM7TUFDbENoQixtQkFBbUIsQ0FBQ0MsUUFBUSxFQUFFZSxRQUFRLENBQUM7TUFDdkMsTUFBTThDLFFBQVEsR0FBRzlDLFFBQVEsQ0FBQytDLEtBQUs7TUFDL0IsTUFBTUMsTUFBTSxHQUFHaEQsUUFBUSxDQUFDaUQsR0FBRztNQUMzQixNQUFNQyxVQUFVLEdBQUdsRCxRQUFRLENBQUNtRCxPQUFPO01BQ25DLE1BQU1DLFVBQVUsR0FBR3BELFFBQVEsQ0FBQ3JDLFdBQVcsQ0FBQztNQUN4QyxNQUFNMEYsWUFBWSxHQUFHckQsUUFBUSxDQUFDbkMsYUFBYSxDQUFDO01BQzVDLE9BQU9tQyxRQUFRLENBQUNpRCxHQUFHO01BQ25CLE9BQU9qRCxRQUFRLENBQUMrQyxLQUFLO01BQ3JCLE9BQU8vQyxRQUFRLENBQUNtRCxPQUFPO01BQ3ZCLE9BQU9uRCxRQUFRLENBQUNyQyxXQUFXLENBQUM7TUFDNUIsT0FBT3FDLFFBQVEsQ0FBQ25DLGFBQWEsQ0FBQztNQUM5QixPQUFPbUMsUUFBUSxDQUFDcEMsWUFBWSxDQUFDLENBQUMsQ0FBQztNQUMvQixNQUFNMEYscUJBQXFCLEdBQUcsSUFBSWQsV0FBVyxDQUFDeEMsUUFBUSxFQUFzQjtRQUFFLEdBQUcyQztNQUFxQixDQUFDLENBQUM7TUFDeEcsSUFBSUcsUUFBUSxFQUFFO1FBQ2JRLHFCQUFxQixDQUFDQyxhQUFhLENBQUNULFFBQVEsQ0FBQztNQUM5QztNQUNBLElBQUlFLE1BQU0sRUFBRTtRQUNYQSxNQUFNLENBQUNRLFVBQVUsQ0FBQ0YscUJBQXFDLENBQUM7TUFDekQ7TUFDQSxNQUFNRyxjQUFjLEdBQUdILHFCQUFxQixDQUFDSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7TUFDakYsSUFBSU4sVUFBVSxFQUFFO1FBQ2ZLLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbENBLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQ0UsUUFBUSxHQUFHUCxVQUFVO01BQ2xEO01BQ0EsSUFBSUMsWUFBWSxFQUFFO1FBQ2pCSSxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDQSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUNHLFVBQVUsR0FBR1AsWUFBWTtNQUN0RDtNQUNBLElBQUk1RSxNQUFNLENBQUNDLElBQUksQ0FBQytFLGNBQWMsQ0FBQyxDQUFDSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzNDUCxxQkFBcUIsQ0FBQ0ksSUFBSSxDQUFDLHdCQUF3QixFQUFFRCxjQUFjLENBQUM7TUFDckU7TUFFQSxJQUFJUCxVQUFVLEVBQUU7UUFDZixJQUFJLE9BQU9BLFVBQVUsS0FBSyxRQUFRLEVBQUU7VUFDbkMsTUFBTVksV0FBVyxHQUFHckUsV0FBVyxDQUFDQyxLQUFLLENBQUN3RCxVQUFVLENBQUM7VUFDakQsSUFBSVksV0FBVyxFQUFFO1lBQ2hCUixxQkFBcUIsQ0FBQ1MsV0FBVyxDQUFDO2NBQ2pDbkUsS0FBSyxFQUFFa0UsV0FBVyxDQUFDbEUsS0FBSyxJQUFJMUIsU0FBUztjQUNyQ3lCLElBQUksRUFBRW1FLFdBQVcsQ0FBQ25FLElBQUk7Y0FDdEJxRSxVQUFVLEVBQUVGLFdBQVcsQ0FBQ0UsVUFBVSxJQUFJOUY7WUFDdkMsQ0FBQyxDQUFDO1VBQ0gsQ0FBQyxNQUFNO1lBQ05vRixxQkFBcUIsQ0FBQ1MsV0FBVyxDQUFDYixVQUFVLENBQUM7VUFDOUM7UUFDRCxDQUFDLE1BQU07VUFDTjtVQUNBekUsTUFBTSxDQUFDQyxJQUFJLENBQUN3RSxVQUFVLENBQUMsQ0FBQzNFLE9BQU8sQ0FBRTBGLGFBQWEsSUFBSztZQUNsRFgscUJBQXFCLENBQUNTLFdBQVcsQ0FBQztjQUFFbkUsS0FBSyxFQUFFcUUsYUFBYTtjQUFFdEUsSUFBSSxFQUFFdUQsVUFBVSxDQUFDZSxhQUFhO1lBQUUsQ0FBQyxDQUFDO1VBQzdGLENBQUMsQ0FBQztRQUNIO01BQ0Q7TUFDQSxLQUFLLE1BQU1DLGlCQUFpQixJQUFJM0MsY0FBYyxFQUFFO1FBQy9DQSxjQUFjLENBQUMyQyxpQkFBaUIsQ0FBQyxDQUMvQjFDLElBQUksQ0FBRWIsS0FBSyxJQUFLO1VBQ2hCLE9BQU8yQyxxQkFBcUIsQ0FBQ2EsV0FBVyxDQUFDRCxpQkFBaUIsRUFBRXZELEtBQUssQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FDRHlELEtBQUssQ0FBRXJELEtBQUssSUFBSztVQUNqQkQsR0FBRyxDQUFDQyxLQUFLLENBQUMseUJBQXlCbUQsaUJBQWlCLE9BQU8xQixXQUFXLENBQUN6RCxXQUFXLENBQUMsQ0FBQyxDQUFDaUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFRCxLQUFLLEVBQUUsWUFBWSxDQUFDO1FBQ3ZILENBQUMsQ0FBQztNQUNKO01BQ0E2QixhQUFhLEdBQUdVLHFCQUFxQjtJQUN0QyxDQUFDLE1BQU0sSUFBSSxPQUFPZCxXQUFXLEtBQUssVUFBVSxFQUFFO01BQzdDLE1BQU02QixhQUFhLEdBQUc3QixXQUFXO01BQ2pDSSxhQUFhLEdBQUd5QixhQUFhLENBQUNyRSxRQUE0QixDQUFDO0lBQzVELENBQUMsTUFBTTtNQUNONEMsYUFBYSxHQUFHLElBQUkwQixJQUFJLENBQUM7UUFBRUMsSUFBSSxFQUFFLG9CQUFvQixHQUFJL0I7TUFBdUIsQ0FBQyxDQUFDO0lBQ25GO0lBRUEsT0FBT0ksYUFBYTtFQUNyQixDQUFDO0VBQUMsT0FFYUwsVUFBVTtBQUFBIiwiaWdub3JlTGlzdCI6W119
285
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGTF9ERUxFR0FURSIsIkNPUkVfUkVRVUlSRSIsIkRUX0RFU0lHTlRJTUUiLCJhZGRDaGlsZEFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25DaGlsZHJlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsImNoaWxkIiwidW5kZWZpbmVkIiwiaXNDaGlsZEFuRWxlbWVudCIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwic3ViQ2hpbGQiLCJPYmplY3QiLCJrZXlzIiwiY2hpbGRLZXkiLCJjaGlsZHJlbiIsImlzQSIsImlzQUNvbnRyb2wiLCJnZXRNZXRhZGF0YSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJtZXRhZGF0YSIsIm1TZXR0aW5ncyIsIm1ldGFkYXRhQWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSIsImdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJoYXNPd25Qcm9wZXJ0eSIsInJlc3VsdGluZ1BhcnNlIiwiQmluZGluZ0luZm8iLCJwYXJzZSIsInBhdGgiLCJtb2RlbCIsImZhY3RvcnkiLCJ0ZW1wbGF0ZSIsInByb2Nlc3NCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24iLCJzZXR0aW5ncyIsInNldHRpbmdzS2V5IiwiYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIiwiYWxsUHJvcGVydGllcyIsImlzQ29uc3RhbnQiLCJjb21waWxlQ29uc3RhbnQiLCJjYWxsIiwiaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24iLCJtb2RlbE5hbWUiLCJjb21waWxlRXhwcmVzc2lvbiIsInByb2Nlc3NTdHJpbmdQcm9wZXJ0eSIsInZhbHVlIiwiYWxsRXZlbnRzIiwic3RhcnRzV2l0aCIsIkxvZyIsImVycm9yIiwiZ2V0TmFtZSIsInByb3BlcnR5VHlwZSIsImdldFR5cGUiLCJEYXRhVHlwZSIsImluY2x1ZGVzIiwicGFyc2VWYWx1ZSIsInByb2Nlc3NPYmplY3RQcm9wZXJ0eSIsImxhdGVQcm9wZXJ0aWVzIiwidGhlbiIsIl9fYmluZGluZ0luZm8iLCJwcm9jZXNzUHJvcGVydGllcyIsImdldEFsbEV2ZW50cyIsImdldEFsbFByb3BlcnRpZXMiLCJpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiIsInByb2Nlc3NDb21tYW5kIiwiY29tbWFuZFByb3BlcnR5IiwiY29tbWFuZCIsImV2ZW50TmFtZSIsInNwbGl0IiwiZXZlbnQiLCJuYW1lIiwiRXZlbnRIYW5kbGVyUmVzb2x2ZXIiLCJyZXNvbHZlRXZlbnRIYW5kbGVyIiwianN4Q29udHJvbCIsIkNvbnRyb2xUeXBlIiwia2V5IiwiX2pzeENvbnRleHQiLCJfanN4Rm9ybWF0dGVyQ29udGV4dCIsInRhcmdldENvbnRyb2wiLCJpc0ZyYWdtZW50IiwiY2xhc3NEZWYiLCJjbGFzcyIsInJlZkRlZiIsInJlZiIsImJpbmRpbmdEZWYiLCJiaW5kaW5nIiwiZmxEZWxlZ2F0ZSIsImR0RGVzaWdudGltZSIsInRhcmdldENvbnRyb2xJbnN0YW5jZSIsImFkZFN0eWxlQ2xhc3MiLCJzZXRDdXJyZW50IiwiY3VzdG9tU2V0dGluZ3MiLCJkYXRhIiwiZGVzaWdudGltZSIsImRlbGVnYXRlIiwibGVuZ3RoIiwiYmluZGluZ0luZm8iLCJiaW5kRWxlbWVudCIsInBhcmFtZXRlcnMiLCJiaW5kaW5nRGVmS2V5IiwibGF0ZVByb3BlcnRpZXNLZXkiLCJzZXRQcm9wZXJ0eSIsImNhdGNoIiwiY29udHJvbFR5cGVGbiIsIlRleHQiLCJ0ZXh0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJqc3gtY29udHJvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRjb21waWxlQ29uc3RhbnQsXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0aXNDb25zdGFudCxcblx0aXNQYXRoSW5Nb2RlbEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdJbmZvSG9sZGVyLCBOb25BYnN0cmFjdENsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgSlNYQ29udGV4dCwgTm9uQ29udHJvbFByb3BlcnRpZXMsIFJlZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgQmluZGluZ0luZm8gZnJvbSBcInNhcC91aS9iYXNlL0JpbmRpbmdJbmZvXCI7XG5pbXBvcnQgRGF0YVR5cGUgZnJvbSBcInNhcC91aS9iYXNlL0RhdGFUeXBlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RNZXRhZGF0YVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBFbGVtZW50LCBkZWZhdWx0IGFzIFVJNUVsZW1lbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEV2ZW50SGFuZGxlclJlc29sdmVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvRXZlbnRIYW5kbGVyUmVzb2x2ZXJcIjtcblxuY29uc3QgRkxfREVMRUdBVEUgPSBcImZsOmRlbGVnYXRlXCI7XG5jb25zdCBDT1JFX1JFUVVJUkUgPSBcImNvcmU6cmVxdWlyZVwiO1xuY29uc3QgRFRfREVTSUdOVElNRSA9IFwiZHQ6ZGVzaWdudGltZVwiO1xuY29uc3QgYWRkQ2hpbGRBZ2dyZWdhdGlvbiA9IGZ1bmN0aW9uIChcblx0YWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgKHN0cmluZyB8IFVJNUVsZW1lbnQpW10+LFxuXHRhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyxcblx0Y2hpbGQ/OiBzdHJpbmcgfCBVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdXG4pOiB2b2lkIHtcblx0aWYgKGNoaWxkID09PSBudWxsIHx8IGNoaWxkID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGNoaWxkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmICghYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdID0gW107XG5cdH1cblx0aWYgKGlzQ2hpbGRBbkVsZW1lbnQoY2hpbGQpKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLnB1c2goY2hpbGQpO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGQpKSB7XG5cdFx0Y2hpbGQuZm9yRWFjaCgoc3ViQ2hpbGQpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgYWdncmVnYXRpb25OYW1lLCBzdWJDaGlsZCk7XG5cdFx0fSk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGNoaWxkID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZDtcblx0fSBlbHNlIHtcblx0XHRPYmplY3Qua2V5cyhjaGlsZCkuZm9yRWFjaCgoY2hpbGRLZXkpID0+IHtcblx0XHRcdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgY2hpbGRLZXksIGNoaWxkW2NoaWxkS2V5XSk7XG5cdFx0fSk7XG5cdH1cbn07XG5jb25zdCBpc0NoaWxkQW5FbGVtZW50ID0gZnVuY3Rpb24gKGNoaWxkcmVuPzogdW5rbm93bik6IGNoaWxkcmVuIGlzIEVsZW1lbnQge1xuXHRyZXR1cm4gKGNoaWxkcmVuIGFzIEVsZW1lbnQpPy5pc0E/LihcInNhcC51aS5jb3JlLkVsZW1lbnRcIik7XG59O1xuY29uc3QgaXNBQ29udHJvbCA9IGZ1bmN0aW9uIChjaGlsZHJlbj86IHR5cGVvZiBDb250cm9sIHwgRnVuY3Rpb24pOiBjaGlsZHJlbiBpcyBOb25BYnN0cmFjdENsYXNzPENvbnRyb2w+IHtcblx0cmV0dXJuICEhKGNoaWxkcmVuIGFzIHR5cGVvZiBDb250cm9sKT8uZ2V0TWV0YWRhdGE7XG59O1xuXG5mdW5jdGlvbiBwcm9jZXNzQWdncmVnYXRpb25zKG1ldGFkYXRhOiBNYW5hZ2VkT2JqZWN0TWV0YWRhdGEsIG1TZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0Y29uc3QgbWV0YWRhdGFBZ2dyZWdhdGlvbnMgPSBtZXRhZGF0YS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0Y29uc3QgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSA9IG1ldGFkYXRhLmdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUoKTtcblx0Y29uc3QgYWdncmVnYXRpb25DaGlsZHJlbjogUmVjb3JkPHN0cmluZywgKHN0cmluZyB8IFVJNUVsZW1lbnQpW10+ID0ge307XG5cdGFkZENoaWxkQWdncmVnYXRpb24oYWdncmVnYXRpb25DaGlsZHJlbiwgZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSwgbVNldHRpbmdzLmNoaWxkcmVuIGFzIHN0cmluZyB8IFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10pO1xuXHRkZWxldGUgbVNldHRpbmdzLmNoaWxkcmVuO1xuXHQvLyBmaW5kIG91dCB3aGljaCBhZ2dyZWdhdGlvbiBhcmUgYm91bmQgKGJvdGggaW4gY2hpbGRyZW4gYW5kIGRpcmVjdGx5IHVuZGVyIGl0KVxuXHRPYmplY3Qua2V5cyhtZXRhZGF0YUFnZ3JlZ2F0aW9ucykuZm9yRWFjaCgoYWdncmVnYXRpb25OYW1lKSA9PiB7XG5cdFx0aWYgKGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAobVNldHRpbmdzLmhhc093blByb3BlcnR5KGFnZ3JlZ2F0aW9uTmFtZSkpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBtU2V0dGluZ3NbYWdncmVnYXRpb25OYW1lXSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3VsdGluZ1BhcnNlID0gQmluZGluZ0luZm8ucGFyc2UobVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0pO1xuXHRcdFx0XHRcdGlmIChyZXN1bHRpbmdQYXJzZSkge1xuXHRcdFx0XHRcdFx0bVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IHJlc3VsdGluZ1BhcnNlLnBhdGgsXG5cdFx0XHRcdFx0XHRcdG1vZGVsOiByZXN1bHRpbmdQYXJzZS5tb2RlbFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSB7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodHlwZW9mIGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdFx0KG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHsgZmFjdG9yeTogRnVuY3Rpb24gfSkuZmFjdG9yeSA9IGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bXG5cdFx0XHRcdFx0XHRhZ2dyZWdhdGlvbk5hbWVcblx0XHRcdFx0XHRdIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0KG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHsgdGVtcGxhdGU6IHN0cmluZyB8IFVJNUVsZW1lbnQgfSkudGVtcGxhdGUgPSBhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV1bMF07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gcHJvcGVydHkgZm9yIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzXG4gKlxuICogSWYgdGhlIHByb3BlcnR5IGlzIGEgY29uc3RhbnQsIGl0IGNvbXBpbGVzIGl0IGFzIGEgY29uc3RhbnQuIElmIHRoZSBwcm9wZXJ0eSBpcyBhbiBhZ2dyZWdhdGlvbixcbiAqIGl0IGNvbXBpbGVzIHRoZSBleHByZXNzaW9uIGFzIGFuIG9iamVjdC4gT3RoZXJ3aXNlLCBpdCBjb21waWxlcyB0aGUgZXhwcmVzc2lvbiBub3JtYWxseS5cbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5nc0tleSBUaGUga2V5IG9mIHRoZSBzZXR0aW5nIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiBUaGUgYmluZGluZyB0b29sa2l0IGV4cHJlc3Npb24gdG8gcHJvY2Vzc1xuICogQHBhcmFtIGFsbFByb3BlcnRpZXMgQWxsIHByb3BlcnRpZXMgb2YgdGhlIGNvbnRyb2xcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbihcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzLFxuXHRiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPixcblx0YWxsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbik6IHZvaWQge1xuXHRpZiAoaXNDb25zdGFudChiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24pKSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUNvbnN0YW50KGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgZmFsc2UsIHRydWUsIHRydWUpO1xuXHR9IGVsc2UgaWYgKCFPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChhbGxQcm9wZXJ0aWVzLCBzZXR0aW5nc0tleSkpIHtcblx0XHQvLyBBZ2dyZWdhdGlvbiBjYXNlIC0gd2UgbmVlZCB0byBjb21waWxlIHRoZSBleHByZXNzaW9uIGJ1dCBhcyBhbiBvYmplY3Rcblx0XHRpZiAoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24oYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uKSkge1xuXHRcdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0geyBwYXRoOiBiaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ucGF0aCwgbW9kZWw6IGJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbi5tb2RlbE5hbWUgfTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gY29tcGlsZUV4cHJlc3Npb24oYmluZGluZ1Rvb2xraXRFeHByZXNzaW9uKTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIHN0cmluZyBwcm9wZXJ0eSBmb3IgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnRpZXNcbiAqXG4gKiBJZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgYmluZGluZyBleHByZXNzaW9uIGFuZCBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LFxuICogaXQgcGFyc2VzIHRoZSB2YWx1ZSB0byBwcm92aWRlIHRoZSBleHBlY3RlZCBmb3JtYXQuIElmIHRoZSBwcm9wZXJ0eSBpcyBhbiBldmVudCBoYW5kbGVyLFxuICogaXQgbG9ncyBhbiBlcnJvci5cbiAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5nc0tleSBUaGUga2V5IG9mIHRoZSBzZXR0aW5nIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdmFsdWUgdG8gcHJvY2Vzc1xuICogQHBhcmFtIGFsbEV2ZW50cyBBbGwgZXZlbnRzIG9mIHRoZSBjb250cm9sXG4gKiBAcGFyYW0gYWxsUHJvcGVydGllcyBBbGwgcHJvcGVydGllcyBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIG1ldGFkYXRhIE1ldGFkYXRhIG9mIHRoZSBjb250cm9sXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NTdHJpbmdQcm9wZXJ0eShcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzLFxuXHR2YWx1ZTogc3RyaW5nLFxuXHRhbGxFdmVudHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRhbGxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0bWV0YWRhdGE6IE1hbmFnZWRPYmplY3RNZXRhZGF0YVxuKTogdm9pZCB7XG5cdGlmICghdmFsdWUuc3RhcnRzV2l0aChcIntcIikpIHtcblx0XHRpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoYWxsRXZlbnRzLCBzZXR0aW5nc0tleSkpIHtcblx0XHRcdExvZy5lcnJvcihgRXZlbnQgaGFuZGxlcnMgY2Fubm90IGJlIHNldCBhcyBzdHJpbmcgaW4gSlNYLCAke3NldHRpbmdzS2V5fSBpbiAke21ldGFkYXRhLmdldE5hbWUoKX1gKTtcblx0XHR9XG5cdFx0Y29uc3QgcHJvcGVydHlUeXBlID0gKGFsbFByb3BlcnRpZXNbc2V0dGluZ3NLZXldIGFzIHsgZ2V0VHlwZT86IEZ1bmN0aW9uIH0pPy5nZXRUeXBlPy4oKTtcblx0XHRpZiAocHJvcGVydHlUeXBlICYmIHByb3BlcnR5VHlwZSBpbnN0YW5jZW9mIERhdGFUeXBlICYmIFtcImJvb2xlYW5cIiwgXCJpbnRcIiwgXCJmbG9hdFwiXS5pbmNsdWRlcyhwcm9wZXJ0eVR5cGUuZ2V0TmFtZSgpKSkge1xuXHRcdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gcHJvcGVydHlUeXBlLnBhcnNlVmFsdWUodmFsdWUpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzZXR0aW5nc1tzZXR0aW5nc0tleV0gPSB2YWx1ZTtcblx0fVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhbiBvYmplY3QgcHJvcGVydHkgZm9yIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzLlxuICpcbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHByb21pc2UsIGl0IGFkZHMgaXQgdG8gdGhlIGxhdGUgcHJvcGVydGllcyBtYXAuIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmcgaW5mbyBob2xkZXIsXG4gKiBpdCBzZXRzIHRoZSBiaW5kaW5nIGluZm8gdG8gdGhlIHNldHRpbmdzLlxuICogQHBhcmFtIHNldHRpbmdzIFRoZSBzZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIHNldHRpbmdzS2V5IFRoZSBrZXkgb2YgdGhlIHNldHRpbmcgYmVpbmcgcHJvY2Vzc2VkXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB2YWx1ZSB0byBwcm9jZXNzXG4gKiBAcGFyYW0gbGF0ZVByb3BlcnRpZXMgQSBtYXAgb2YgdGhlIGNvbnRyb2wncyBsYXRlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc09iamVjdFByb3BlcnR5KFxuXHRzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdHNldHRpbmdzS2V5OiBrZXlvZiB0eXBlb2Ygc2V0dGluZ3MsXG5cdHZhbHVlOiB1bmtub3duLFxuXHRsYXRlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj5cbik6IHZvaWQge1xuXHRpZiAoKHZhbHVlIGFzIFByb21pc2U8dW5rbm93bj4pLnRoZW4pIHtcblx0XHRsYXRlUHJvcGVydGllc1tzZXR0aW5nc0tleV0gPSB2YWx1ZSBhcyBQcm9taXNlPHVua25vd24+O1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tzZXR0aW5nc0tleV07XG5cdH0gZWxzZSBpZiAoKHZhbHVlIGFzIEJpbmRpbmdJbmZvSG9sZGVyPHVua25vd24+KS5fX2JpbmRpbmdJbmZvKSB7XG5cdFx0c2V0dGluZ3Nbc2V0dGluZ3NLZXldID0gKHZhbHVlIGFzIEJpbmRpbmdJbmZvSG9sZGVyPHVua25vd24+KS5fX2JpbmRpbmdJbmZvO1xuXHR9XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIHRoZSBwcm9wZXJ0aWVzLlxuICpcbiAqIElmIHRoZSBwcm9wZXJ0eSBpcyBhIGJpbmRpbmdUb29sa2l0IGV4cHJlc3Npb24gd2UgbmVlZCB0byBjb21waWxlIGl0LlxuICogRWxzZSBpZiB0aGUgcHJvcGVydHkgaXMgc2V0IGFzIHN0cmluZyAoY29tcGlsZWQgYmluZGluZyBleHByZXNzaW9uIHJldHVybnMgc3RyaW5nIGJ5IGRlZmF1bHQgZXZlbiBpZiBpdCdzIGEgYm9vbGVhbiwgaW50LCBldGMuKSBhbmQgaXQgZG9lc24ndCBtYXRjaCB3aXRoIGV4cGVjdGVkXG4gKiBmb3JtYXQgdGhlIHZhbHVlIGlzIHBhcnNlZCB0byBwcm92aWRlIGV4cGVjdGVkIGZvcm1hdC5cbiAqIEBwYXJhbSBtZXRhZGF0YSBNZXRhZGF0YSBvZiB0aGUgY29udHJvbFxuICogQHBhcmFtIHNldHRpbmdzIFNldHRpbmdzIG9mIHRoZSBjb250cm9sXG4gKiBAcmV0dXJucyBBIG1hcCBvZiBsYXRlIHByb3BlcnRpZXMgdGhhdCBuZWVkIHRvIGJlIGF3YWl0ZWQgYWZ0ZXIgdGhlIGNvbnRyb2wgaXMgY3JlYXRlZFxuICovXG5mdW5jdGlvbiBwcm9jZXNzUHJvcGVydGllcyhtZXRhZGF0YTogTWFuYWdlZE9iamVjdE1ldGFkYXRhLCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCBQcm9taXNlPHVua25vd24+PiB7XG5cdGxldCBzZXR0aW5nc0tleToga2V5b2YgdHlwZW9mIHNldHRpbmdzO1xuXHRjb25zdCBsYXRlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4gPSB7fTtcblx0Y29uc3QgYWxsRXZlbnRzID0gbWV0YWRhdGEuZ2V0QWxsRXZlbnRzKCk7XG5cdGNvbnN0IGFsbFByb3BlcnRpZXMgPSBtZXRhZGF0YS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cblx0Zm9yIChzZXR0aW5nc0tleSBpbiBzZXR0aW5ncykge1xuXHRcdGNvbnN0IHZhbHVlID0gc2V0dGluZ3Nbc2V0dGluZ3NLZXldO1xuXHRcdGlmIChpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbih2YWx1ZSkpIHtcblx0XHRcdHByb2Nlc3NCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24oc2V0dGluZ3MsIHNldHRpbmdzS2V5LCB2YWx1ZSwgYWxsUHJvcGVydGllcyk7XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdHByb2Nlc3NPYmplY3RQcm9wZXJ0eShzZXR0aW5ncywgc2V0dGluZ3NLZXksIHZhbHVlLCBsYXRlUHJvcGVydGllcyk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHByb2Nlc3NTdHJpbmdQcm9wZXJ0eShzZXR0aW5ncywgc2V0dGluZ3NLZXksIHZhbHVlLCBhbGxFdmVudHMsIGFsbFByb3BlcnRpZXMsIG1ldGFkYXRhKTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBzZXR0aW5nc1tzZXR0aW5nc0tleV07XG5cdFx0fVxuXHR9XG5cdHJldHVybiBsYXRlUHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIGNvbW1hbmQuXG4gKlxuICogUmVzb2x2ZXMgdGhlIGNvbW1hbmQgc2V0IG9uIHRoZSBjb250cm9sIHZpYSB0aGUgaW50cmluc2ljIGNsYXNzIGF0dHJpYnV0ZSBcImpzeDpjb21tYW5kXCIuXG4gKiBJZiBubyBjb21tYW5kIGhhcyBiZWVuIHNldCBvciB0aGUgdGFyZ2V0ZWQgZXZlbnQgZG9lc24ndCBleGlzdCwgbm8gY29uZmlndXJhdGlvbiBpcyBzZXQuXG4gKiBAcGFyYW0gbWV0YWRhdGEgTWV0YWRhdGEgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBzZXR0aW5ncyBTZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICovXG5mdW5jdGlvbiBwcm9jZXNzQ29tbWFuZChtZXRhZGF0YTogTWFuYWdlZE9iamVjdE1ldGFkYXRhLCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0Y29uc3QgY29tbWFuZFByb3BlcnR5ID0gc2V0dGluZ3NbXCJqc3g6Y29tbWFuZFwiXTtcblx0aWYgKGNvbW1hbmRQcm9wZXJ0eSkge1xuXHRcdGNvbnN0IFtjb21tYW5kLCBldmVudE5hbWVdID0gKGNvbW1hbmRQcm9wZXJ0eSBhcyBzdHJpbmcpLnNwbGl0KFwifFwiKTtcblx0XHRjb25zdCBldmVudCA9IG1ldGFkYXRhLmdldEFsbEV2ZW50cygpW2V2ZW50TmFtZV07XG5cdFx0aWYgKGV2ZW50ICYmIGNvbW1hbmQuc3RhcnRzV2l0aChcImNtZDpcIikpIHtcblx0XHRcdHNldHRpbmdzW2V2ZW50Lm5hbWVdID0gRXZlbnRIYW5kbGVyUmVzb2x2ZXIucmVzb2x2ZUV2ZW50SGFuZGxlcihjb21tYW5kKTtcblx0XHR9XG5cdH1cblx0ZGVsZXRlIHNldHRpbmdzW1wianN4OmNvbW1hbmRcIl07XG59XG5cbmNvbnN0IGpzeENvbnRyb2wgPSBmdW5jdGlvbiA8VCBleHRlbmRzIEVsZW1lbnQ+KFxuXHRDb250cm9sVHlwZTogTm9uQWJzdHJhY3RDbGFzczxDb250cm9sPiB8IEZ1bmN0aW9uLFxuXHRzZXR0aW5nczogTm9uQ29udHJvbFByb3BlcnRpZXM8VD4gJiB7XG5cdFx0a2V5OiBzdHJpbmc7XG5cdFx0Y2hpbGRyZW4/OiBFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8VD47XG5cdFx0cmVmPzogUmVmPFQ+O1xuXHRcdGJpbmRpbmc/OiBzdHJpbmc7XG5cdFx0Y2xhc3M/OiBzdHJpbmc7XG5cdFx0W0ZMX0RFTEVHQVRFXT86IHN0cmluZztcblx0XHRbRFRfREVTSUdOVElNRV0/OiBzdHJpbmc7XG5cdFx0W0NPUkVfUkVRVUlSRV0/OiBzdHJpbmc7XG5cdH0sXG5cdGtleTogc3RyaW5nLFxuXHRfanN4Q29udGV4dDogSlNYQ29udGV4dCxcblx0X2pzeEZvcm1hdHRlckNvbnRleHQ6IG9iamVjdFxuKTogQ29udHJvbCB8IENvbnRyb2xbXSB8IHVuZGVmaW5lZCB7XG5cdGxldCB0YXJnZXRDb250cm9sOiBDb250cm9sIHwgQ29udHJvbFtdIHwgdW5kZWZpbmVkO1xuXG5cdGlmICgoQ29udHJvbFR5cGUgYXMgeyBpc0ZyYWdtZW50PzogYm9vbGVhbiB9KT8uaXNGcmFnbWVudCkge1xuXHRcdHRhcmdldENvbnRyb2wgPSBzZXR0aW5ncy5jaGlsZHJlbiBhcyBDb250cm9sIHwgQ29udHJvbFtdO1xuXHR9IGVsc2UgaWYgKGlzQUNvbnRyb2woQ29udHJvbFR5cGUpKSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBDb250cm9sVHlwZS5nZXRNZXRhZGF0YSgpO1xuXHRcdGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0c2V0dGluZ3NbXCJrZXlcIl0gPSBrZXk7XG5cdFx0fVxuXHRcdGNvbnN0IGxhdGVQcm9wZXJ0aWVzID0gcHJvY2Vzc1Byb3BlcnRpZXMobWV0YWRhdGEsIHNldHRpbmdzKTtcblx0XHRwcm9jZXNzQ29tbWFuZChtZXRhZGF0YSwgc2V0dGluZ3MpO1xuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnMobWV0YWRhdGEsIHNldHRpbmdzKTtcblx0XHRjb25zdCBjbGFzc0RlZiA9IHNldHRpbmdzLmNsYXNzO1xuXHRcdGNvbnN0IHJlZkRlZiA9IHNldHRpbmdzLnJlZjtcblx0XHRjb25zdCBiaW5kaW5nRGVmID0gc2V0dGluZ3MuYmluZGluZztcblx0XHRjb25zdCBmbERlbGVnYXRlID0gc2V0dGluZ3NbRkxfREVMRUdBVEVdO1xuXHRcdGNvbnN0IGR0RGVzaWdudGltZSA9IHNldHRpbmdzW0RUX0RFU0lHTlRJTUVdO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncy5yZWY7XG5cdFx0ZGVsZXRlIHNldHRpbmdzLmNsYXNzO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncy5iaW5kaW5nO1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tGTF9ERUxFR0FURV07XG5cdFx0ZGVsZXRlIHNldHRpbmdzW0RUX0RFU0lHTlRJTUVdO1xuXHRcdGRlbGV0ZSBzZXR0aW5nc1tDT1JFX1JFUVVJUkVdOyAvLyBDb3JlIHJlcXVpcmUgaXMgbm90IHVzZWZ1bCBpbiBjb250cm9sIG1vZGVcblx0XHRjb25zdCB0YXJnZXRDb250cm9sSW5zdGFuY2UgPSBuZXcgQ29udHJvbFR5cGUoc2V0dGluZ3MgYXMgJENvbnRyb2xTZXR0aW5ncywgeyAuLi5fanN4Rm9ybWF0dGVyQ29udGV4dCB9KTtcblx0XHRpZiAoY2xhc3NEZWYpIHtcblx0XHRcdHRhcmdldENvbnRyb2xJbnN0YW5jZS5hZGRTdHlsZUNsYXNzKGNsYXNzRGVmKTtcblx0XHR9XG5cdFx0aWYgKHJlZkRlZikge1xuXHRcdFx0cmVmRGVmLnNldEN1cnJlbnQodGFyZ2V0Q29udHJvbEluc3RhbmNlIGFzIHVua25vd24gYXMgVCk7XG5cdFx0fVxuXHRcdGNvbnN0IGN1c3RvbVNldHRpbmdzID0gdGFyZ2V0Q29udHJvbEluc3RhbmNlLmRhdGEoXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIpID8/IHt9O1xuXHRcdGlmIChkdERlc2lnbnRpbWUpIHtcblx0XHRcdGN1c3RvbVNldHRpbmdzW1wic2FwLnVpLmR0XCJdID8/PSB7fTtcblx0XHRcdGN1c3RvbVNldHRpbmdzW1wic2FwLnVpLmR0XCJdLmRlc2lnbnRpbWUgPSBkdERlc2lnbnRpbWU7XG5cdFx0fVxuXHRcdGlmIChmbERlbGVnYXRlKSB7XG5cdFx0XHRjdXN0b21TZXR0aW5nc1tcInNhcC51aS5mbFwiXSA/Pz0ge307XG5cdFx0XHRjdXN0b21TZXR0aW5nc1tcInNhcC51aS5mbFwiXS5kZWxlZ2F0ZSA9IGZsRGVsZWdhdGU7XG5cdFx0fVxuXG5cdFx0aWYgKE9iamVjdC5rZXlzKGN1c3RvbVNldHRpbmdzKS5sZW5ndGggPiAwKSB7XG5cdFx0XHR0YXJnZXRDb250cm9sSW5zdGFuY2UuZGF0YShcInNhcC11aS1jdXN0b20tc2V0dGluZ3NcIiwgY3VzdG9tU2V0dGluZ3MpO1xuXHRcdH1cblxuXHRcdGlmIChiaW5kaW5nRGVmKSB7XG5cdFx0XHRpZiAodHlwZW9mIGJpbmRpbmdEZWYgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0Y29uc3QgYmluZGluZ0luZm8gPSBCaW5kaW5nSW5mby5wYXJzZShiaW5kaW5nRGVmKTtcblx0XHRcdFx0aWYgKGJpbmRpbmdJbmZvKSB7XG5cdFx0XHRcdFx0dGFyZ2V0Q29udHJvbEluc3RhbmNlLmJpbmRFbGVtZW50KHtcblx0XHRcdFx0XHRcdG1vZGVsOiBiaW5kaW5nSW5mby5tb2RlbCA/PyB1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHRwYXRoOiBiaW5kaW5nSW5mby5wYXRoLFxuXHRcdFx0XHRcdFx0cGFyYW1ldGVyczogYmluZGluZ0luZm8ucGFyYW1ldGVycyA/PyB1bmRlZmluZWRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0YXJnZXRDb250cm9sSW5zdGFuY2UuYmluZEVsZW1lbnQoYmluZGluZ0RlZik7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFdlIGNvbnNpZGVyIGl0J3MgYW4gb2JqZWN0XG5cdFx0XHRcdE9iamVjdC5rZXlzKGJpbmRpbmdEZWYpLmZvckVhY2goKGJpbmRpbmdEZWZLZXkpID0+IHtcblx0XHRcdFx0XHR0YXJnZXRDb250cm9sSW5zdGFuY2UuYmluZEVsZW1lbnQoeyBtb2RlbDogYmluZGluZ0RlZktleSwgcGF0aDogYmluZGluZ0RlZltiaW5kaW5nRGVmS2V5XSB9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoY29uc3QgbGF0ZVByb3BlcnRpZXNLZXkgaW4gbGF0ZVByb3BlcnRpZXMpIHtcblx0XHRcdGxhdGVQcm9wZXJ0aWVzW2xhdGVQcm9wZXJ0aWVzS2V5XVxuXHRcdFx0XHQudGhlbigodmFsdWUpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGFyZ2V0Q29udHJvbEluc3RhbmNlLnNldFByb3BlcnR5KGxhdGVQcm9wZXJ0aWVzS2V5LCB2YWx1ZSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoYENvdWxkbid0IHNldCBwcm9wZXJ0eSAke2xhdGVQcm9wZXJ0aWVzS2V5fSBvbiAke0NvbnRyb2xUeXBlLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWAsIGVycm9yLCBcImpzeENvbnRyb2xcIik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0XHR0YXJnZXRDb250cm9sID0gdGFyZ2V0Q29udHJvbEluc3RhbmNlO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBDb250cm9sVHlwZSA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0Y29uc3QgY29udHJvbFR5cGVGbiA9IENvbnRyb2xUeXBlO1xuXHRcdHRhcmdldENvbnRyb2wgPSBjb250cm9sVHlwZUZuKHNldHRpbmdzIGFzICRDb250cm9sU2V0dGluZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdHRhcmdldENvbnRyb2wgPSBuZXcgVGV4dCh7IHRleHQ6IFwiTWlzc2luZyBjb21wb25lbnQgXCIgKyAoQ29udHJvbFR5cGUgYXMgc3RyaW5nKSB9KTtcblx0fVxuXG5cdHJldHVybiB0YXJnZXRD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
@@ -274,14 +274,15 @@ const jsxControl = function <T extends Element>(
274
274
  refDef.setCurrent(targetControlInstance as unknown as T);
275
275
  }
276
276
  const customSettings = targetControlInstance.data("sap-ui-custom-settings") ?? {};
277
- if (flDelegate) {
278
- customSettings["sap.ui.fl"] ??= {};
279
- customSettings["sap.ui.fl"].delegate = flDelegate;
280
- }
281
277
  if (dtDesigntime) {
282
278
  customSettings["sap.ui.dt"] ??= {};
283
279
  customSettings["sap.ui.dt"].designtime = dtDesigntime;
284
280
  }
281
+ if (flDelegate) {
282
+ customSettings["sap.ui.fl"] ??= {};
283
+ customSettings["sap.ui.fl"].delegate = flDelegate;
284
+ }
285
+
285
286
  if (Object.keys(customSettings).length > 0) {
286
287
  targetControlInstance.data("sap-ui-custom-settings", customSettings);
287
288
  }
@@ -107,7 +107,9 @@ sap.ui.define(["sap/fe/base/BindingToolkit"], function (BindingToolkit) {
107
107
  } else if (isBindingToolkitExpression(propertyValue)) {
108
108
  propertiesString.push(`${propertyName}='${escapeXMLAttributeValue(compileExpression(propertyValue))}'`);
109
109
  } else if (Array.isArray(propertyValue)) {
110
- if (propertyValue.length === 1) {
110
+ if (propertyValue.length === 0) {
111
+ // Do nothing for empty array
112
+ } else if (propertyValue.length === 1) {
111
113
  const outValue = typeof propertyValue[0] === "string" ? propertyValue[0] : JSON.stringify(propertyValue[0]);
112
114
  propertiesString.push(`${propertyName}='${outValue}'`);
113
115
  } else {
@@ -287,4 +289,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit"], function (BindingToolkit) {
287
289
  };
288
290
  return jsxXml;
289
291
  }, false);
290
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiIsImV4cHJlc3Npb24iLCJfdHlwZSIsInVuZGVmaW5lZCIsIndyaXRlQ2hpbGRyZW4iLCJ2YWwiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwiZXNjYXBlWE1MQXR0cmlidXRlVmFsdWUiLCJ2YWx1ZSIsInJlcGxhY2UiLCJhZGRDaGlsZEFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25DaGlsZHJlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsImNoaWxkIiwidHJpbSIsImxlbmd0aCIsInB1c2giLCJmb3JFYWNoIiwic3ViQ2hpbGQiLCJjaGlsZEtleSIsIk9iamVjdCIsImtleXMiLCJpc0FDb250cm9sIiwiY2hpbGRyZW4iLCJnZXRNZXRhZGF0YSIsIkZMX0RFTEVHQVRFIiwiRFRfREVTSUdOVElNRSIsIkNPUkVfUkVRVUlSRSIsIkxPR19TT1VSQ0VQQVRIIiwiQ1VTVE9NX0VOVElUWVRZUEUiLCJwcm9jZXNzT2JqZWN0UHJvcGVydHlWYWx1ZSIsImNoaWxkcmVuT2JqZWN0IiwibmFtZXNwYWNlQWxpYXMiLCJwcm9wZXJ0eU5hbWUiLCJhZ2dyZWdhdGlvblByb3BlcnRpZXMiLCJzdWJQcm9wTmFtZSIsImNoaWxkVmFsdWUiLCJjaGlsZHJlbk9iamVjdEVsZW1lbnQiLCJ0b1N0cmluZyIsIm5hbWVzcGFjZWRQcm9wZXJ0eSIsInByb2Nlc3NQcm9wZXJ0aWVzIiwibVNldHRpbmdzIiwibWV0YWRhdGFQcm9wZXJ0aWVzIiwicHJvcGVydGllc1N0cmluZyIsImFnZ3JlZ2F0aW9uU3RyaW5nIiwiaXNDb250cm9sIiwiaGFzT3duUHJvcGVydHkiLCJwcm9wZXJ0eVZhbHVlIiwidHlwZSIsImdldFBhdGgiLCJjb21waWxlRXhwcmVzc2lvbiIsIm91dFZhbHVlIiwiSlNPTiIsInN0cmluZ2lmeSIsInNlcGFyYXRvciIsImVuZHNXaXRoIiwiZXZlcnkiLCJwcm9wQXNVSTVPYmplY3QiLCJ1aTVvYmplY3QiLCJwcm9wIiwicHJvY2Vzc0NvbW1hbmQiLCJzZXR0aW5ncyIsIm1ldGFkYXRhRXZlbnRzIiwiY29tbWFuZFByb3BlcnR5IiwiY29tbWFuZCIsImV2ZW50TmFtZSIsInNwbGl0IiwiZXZlbnQiLCJzdGFydHNXaXRoIiwibmFtZSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJtZXRhZGF0YUFnZ3JlZ2F0aW9ucyIsImRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJhZ2dyZWdhdGlvbkNoaWxkS2V5cyIsIndyaXRlT25seURlZmF1bHRBZ2dyZWdhdGlvbiIsImpzeFhtbCIsImtleSIsInhtbE5hbWVzcGFjZU1hcCIsIm92ZXJyaWRlTm9kZU5hbWUiLCJtZXRhZGF0YSIsImNvbnRyb2xOYW1lIiwiZ2V0QWxsUHJvcGVydGllcyIsImdldEFsbEV2ZW50cyIsImdldEFsbEFzc29jaWF0aW9ucyIsImdldE5hbWUiLCJnZXRBbGxBZ2dyZWdhdGlvbnMiLCJnZXREZWZhdWx0QWdncmVnYXRpb25OYW1lIiwicHJvcGVydGllcyIsImRlcGVuZGVudHMiLCJjdXN0b21EYXRhIiwiYWdncmVnYXRpb25zIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwibmFtZXNwYWNlIiwibmFtZXNTcGxpdCIsInNsaWNlIiwidGFnTmFtZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsianN4LXhtbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgQ29udHJvbFByb3BlcnRpZXMsIE5vbkNvbnRyb2xQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IHR5cGUgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuZnVuY3Rpb24gaXNCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24oXG5cdGV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPiB8IHVua25vd25cbik6IGV4cHJlc3Npb24gaXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHVua25vd24+IHtcblx0cmV0dXJuIChleHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPik/Ll90eXBlICE9PSB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IHdyaXRlQ2hpbGRyZW4gPSBmdW5jdGlvbiAodmFsOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcblx0XHRyZXR1cm4gdmFsLmpvaW4oXCJcIik7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufTtcblxuLyoqXG4gKiBTb21lIGNoYXJhY3RlcnMgbmVlZHMgdG8gYmUgZXNjYXBlZCB3aGVuIHVzZWQgYXMgWE1MIGF0dHJpYnV0ZSB2YWx1ZSwgb3RoZXJ3aXNlIHRoaXMgcmVzdWx0IGluIGluY29ycmVjdCBYTUwuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEByZXR1cm5zIFRoZSBlc2NhcGVkIHhtbCBhdHRyaWJ1dGVcbiAqL1xuZnVuY3Rpb24gZXNjYXBlWE1MQXR0cmlidXRlVmFsdWUodmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gdmFsdWU/LnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKS5yZXBsYWNlKC88L2csIFwiJmx0O1wiKS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKS5yZXBsYWNlKC8nL2csIFwiJmFwb3M7XCIpO1xufVxuXG5jb25zdCBhZGRDaGlsZEFnZ3JlZ2F0aW9uID0gZnVuY3Rpb24gKFxuXHRhZ2dyZWdhdGlvbkNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCAoQ29udHJvbCB8IHN0cmluZylbXT4sXG5cdGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLFxuXHRjaGlsZDogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKTogdm9pZCB7XG5cdGlmIChjaGlsZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmICghYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdID0gW107XG5cdH1cblx0aWYgKHR5cGVvZiBjaGlsZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdGlmIChjaGlsZC50cmltKCkubGVuZ3RoID4gMCkge1xuXHRcdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLnB1c2goY2hpbGQpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNoaWxkKSkge1xuXHRcdGNoaWxkLmZvckVhY2goKHN1YkNoaWxkKSA9PiB7XG5cdFx0XHRhZGRDaGlsZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4sIGFnZ3JlZ2F0aW9uTmFtZSwgc3ViQ2hpbGQpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdGZvciAoY29uc3QgY2hpbGRLZXkgb2YgT2JqZWN0LmtleXMoY2hpbGQpKSB7XG5cdFx0XHRhZGRDaGlsZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4sIGNoaWxkS2V5LCBjaGlsZFtjaGlsZEtleV0pO1xuXHRcdH1cblx0fVxufTtcblxuY29uc3QgaXNBQ29udHJvbCA9IGZ1bmN0aW9uIChjaGlsZHJlbj86IHR5cGVvZiBDb250cm9sIHwgRnVuY3Rpb24pOiBjaGlsZHJlbiBpcyB0eXBlb2YgQ29udHJvbCB7XG5cdHJldHVybiAhIShjaGlsZHJlbiBhcyB0eXBlb2YgQ29udHJvbCk/LmdldE1ldGFkYXRhO1xufTtcblxuY29uc3QgRkxfREVMRUdBVEUgPSBcImZsOmRlbGVnYXRlXCI7XG5jb25zdCBEVF9ERVNJR05USU1FID0gXCJkdDpkZXNpZ250aW1lXCI7XG5jb25zdCBDT1JFX1JFUVVJUkUgPSBcImNvcmU6cmVxdWlyZVwiO1xuY29uc3QgTE9HX1NPVVJDRVBBVEggPSBcImxvZzpzb3VyY2VQYXRoXCI7XG5jb25zdCBDVVNUT01fRU5USVRZVFlQRSA9IFwiY3VzdG9tRGF0YTplbnRpdHlUeXBlXCI7XG5cbmZ1bmN0aW9uIHByb2Nlc3NPYmplY3RQcm9wZXJ0eVZhbHVlKFxuXHRjaGlsZHJlbk9iamVjdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdG5hbWVzcGFjZUFsaWFzOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdHByb3BlcnR5TmFtZTogc3RyaW5nXG4pOiBzdHJpbmcge1xuXHQvLyBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBjaGlsZCBpc1xuXHRjb25zdCBhZ2dyZWdhdGlvblByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uQ2hpbGRyZW46IHN0cmluZ1tdID0gW107XG5cdE9iamVjdC5rZXlzKGNoaWxkcmVuT2JqZWN0KS5mb3JFYWNoKChzdWJQcm9wTmFtZSkgPT4ge1xuXHRcdGNvbnN0IGNoaWxkVmFsdWUgPSBjaGlsZHJlbk9iamVjdFtzdWJQcm9wTmFtZV07XG5cdFx0aWYgKGNoaWxkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKHR5cGVvZiBjaGlsZFZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGNoaWxkVmFsdWUpKSB7XG5cdFx0XHRcdFx0YWdncmVnYXRpb25DaGlsZHJlbi5wdXNoKGA8JHtzdWJQcm9wTmFtZX0+YCk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBjaGlsZHJlbk9iamVjdEVsZW1lbnQgb2YgY2hpbGRWYWx1ZSkge1xuXHRcdFx0XHRcdFx0YWdncmVnYXRpb25DaGlsZHJlbi5wdXNoKFxuXHRcdFx0XHRcdFx0XHRwcm9jZXNzT2JqZWN0UHJvcGVydHlWYWx1ZShjaGlsZHJlbk9iamVjdEVsZW1lbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG5hbWVzcGFjZUFsaWFzLCBzdWJQcm9wTmFtZSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGFnZ3JlZ2F0aW9uQ2hpbGRyZW4ucHVzaChgPC8ke3N1YlByb3BOYW1lfT5gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgYSB2YWx1ZSBpdCBuZWVkcyB0byBiZSBzZXJpYWxpemVkIGFzIGEgY2hpbGRyZW5cblx0XHRcdFx0XHQvLyA8bXlPYmplY3RQcm9wIHByb3AxPSd4eHgnLCBwcm9wMj0neHh0Jy8+XG5cdFx0XHRcdFx0YWdncmVnYXRpb25DaGlsZHJlbi5wdXNoKFxuXHRcdFx0XHRcdFx0cHJvY2Vzc09iamVjdFByb3BlcnR5VmFsdWUoY2hpbGRWYWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgbmFtZXNwYWNlQWxpYXMsIHN1YlByb3BOYW1lKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIE90aGVyd2lzZSBpdCdzIHBhcnQgb2YgdGhlIG1haW4gb2JqZWN0IGp1c3QgYXMgYW5vdGhlciBwcm9wZXJ0eVxuXHRcdFx0XHRhZ2dyZWdhdGlvblByb3BlcnRpZXMucHVzaChgJHtzdWJQcm9wTmFtZX09JyR7ZXNjYXBlWE1MQXR0cmlidXRlVmFsdWUoY2hpbGRWYWx1ZS50b1N0cmluZygpKX0nYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBuYW1lc3BhY2VkUHJvcGVydHkgPSBuYW1lc3BhY2VBbGlhcyA/IGAke25hbWVzcGFjZUFsaWFzfToke3Byb3BlcnR5TmFtZX1gIDogcHJvcGVydHlOYW1lO1xuXHRyZXR1cm4gYDwke25hbWVzcGFjZWRQcm9wZXJ0eX0gJHthZ2dyZWdhdGlvblByb3BlcnRpZXMuam9pbihcIiBcIil9PiR7YWdncmVnYXRpb25DaGlsZHJlbi5qb2luKFwiXFxuXCIpfTwvJHtuYW1lc3BhY2VkUHJvcGVydHl9PmA7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzPFQ+KFxuXHRtU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRtZXRhZGF0YVByb3BlcnRpZXM6IFJlY29yZDxcblx0XHRzdHJpbmcsXG5cdFx0e1xuXHRcdFx0bmFtZT86IHN0cmluZztcblx0XHRcdHR5cGU/OiBzdHJpbmc7XG5cdFx0fVxuXHQ+LFxuXHRuYW1lc3BhY2VBbGlhczogc3RyaW5nLFxuXHRwcm9wZXJ0aWVzU3RyaW5nOiBzdHJpbmdbXSxcblx0YWdncmVnYXRpb25TdHJpbmc6IHN0cmluZ1tdLFxuXHRpc0NvbnRyb2w6IGJvb2xlYW5cbik6IHZvaWQge1xuXHRPYmplY3Qua2V5cyhtZXRhZGF0YVByb3BlcnRpZXMpLmZvckVhY2goKHByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdGlmIChtU2V0dGluZ3MuaGFzT3duUHJvcGVydHkocHJvcGVydHlOYW1lKSAmJiBtU2V0dGluZ3NbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlID0gbVNldHRpbmdzW3Byb3BlcnR5TmFtZV07XG5cdFx0XHRpZiAocHJvcGVydHlOYW1lID09PSBDT1JFX1JFUVVJUkUpIHtcblx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGB4bWxuczpjb3JlPVwic2FwLnVpLmNvcmVcImApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHByb3BlcnR5TmFtZSA9PT0gRkxfREVMRUdBVEUpIHtcblx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGB4bWxuczpmbD1cInNhcC51aS5mbFwiYCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocHJvcGVydHlOYW1lID09PSBEVF9ERVNJR05USU1FKSB7XG5cdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgeG1sbnM6ZHQ9XCJzYXAudWkuZHRcImApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHByb3BlcnR5TmFtZSA9PT0gTE9HX1NPVVJDRVBBVEgpIHtcblx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGB4bWxuczpsb2c9XCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUuQ3VzdG9tRGF0YS8xXCJgKTtcblx0XHRcdH1cblx0XHRcdGlmIChwcm9wZXJ0eU5hbWUgPT09IENVU1RPTV9FTlRJVFlUWVBFKSB7XG5cdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgeG1sbnM6Y3VzdG9tRGF0YT1cImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcImApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHByb3BlcnR5VmFsdWUgJiYgdHlwZW9mIHByb3BlcnR5VmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0aWYgKG1ldGFkYXRhUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdLnR5cGUgPT09IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIikge1xuXHRcdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHtwcm9wZXJ0eU5hbWV9PSckeyhwcm9wZXJ0eVZhbHVlIGFzIENvbnRleHQpLmdldFBhdGgoKX0nYCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXNCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ocHJvcGVydHlWYWx1ZSkpIHtcblx0XHRcdFx0XHRwcm9wZXJ0aWVzU3RyaW5nLnB1c2goYCR7cHJvcGVydHlOYW1lfT0nJHtlc2NhcGVYTUxBdHRyaWJ1dGVWYWx1ZShjb21waWxlRXhwcmVzc2lvbihwcm9wZXJ0eVZhbHVlKSl9J2ApO1xuXHRcdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydHlWYWx1ZSkpIHtcblx0XHRcdFx0XHRpZiAocHJvcGVydHlWYWx1ZS5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRcdGNvbnN0IG91dFZhbHVlID0gdHlwZW9mIHByb3BlcnR5VmFsdWVbMF0gPT09IFwic3RyaW5nXCIgPyBwcm9wZXJ0eVZhbHVlWzBdIDogSlNPTi5zdHJpbmdpZnkocHJvcGVydHlWYWx1ZVswXSk7XG5cdFx0XHRcdFx0XHRwcm9wZXJ0aWVzU3RyaW5nLnB1c2goYCR7cHJvcGVydHlOYW1lfT0nJHtvdXRWYWx1ZX0nYCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNlcGFyYXRvciA9IG1ldGFkYXRhUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdLnR5cGU/LmVuZHNXaXRoKFwiW11cIikgPyBcIixcIiA6IFwiIFwiO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3V0VmFsdWUgPSBwcm9wZXJ0eVZhbHVlLmV2ZXJ5KCh2YWwpID0+IHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdFx0XHRcdD8gcHJvcGVydHlWYWx1ZS5qb2luKHNlcGFyYXRvcilcblx0XHRcdFx0XHRcdFx0OiBKU09OLnN0cmluZ2lmeShwcm9wZXJ0eVZhbHVlKTtcblx0XHRcdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHtwcm9wZXJ0eU5hbWV9PScke291dFZhbHVlfSdgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXNDb250cm9sKSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcEFzVUk1T2JqZWN0ID0geyB1aTVvYmplY3Q6IHRydWUsIC4uLnByb3BlcnR5VmFsdWUgfTtcblx0XHRcdFx0XHRwcm9wZXJ0aWVzU3RyaW5nLnB1c2goYCR7cHJvcGVydHlOYW1lfT0nJHtlc2NhcGVYTUxBdHRyaWJ1dGVWYWx1ZShKU09OLnN0cmluZ2lmeShwcm9wQXNVSTVPYmplY3QpKX0nYCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YWdncmVnYXRpb25TdHJpbmcucHVzaChwcm9jZXNzT2JqZWN0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eVZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHVuZGVmaW5lZCwgcHJvcGVydHlOYW1lKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAocHJvcGVydHlWYWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRjb25zdCBwcm9wID0gcHJvcGVydHlWYWx1ZSBhcyBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyO1xuXHRcdFx0XHRwcm9wZXJ0aWVzU3RyaW5nLnB1c2goYCR7cHJvcGVydHlOYW1lfT0nJHtlc2NhcGVYTUxBdHRyaWJ1dGVWYWx1ZShwcm9wLnRvU3RyaW5nKCkpfSdgKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0bVNldHRpbmdzLmNoaWxkcmVuPy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpICYmXG5cdFx0XHRPYmplY3Qua2V5cygobVNldHRpbmdzLmNoaWxkcmVuIGFzIENvbnRyb2xQcm9wZXJ0aWVzPFQ+KT8uW3Byb3BlcnR5TmFtZV0gPz8ge30pLmxlbmd0aCA+IDBcblx0XHQpIHtcblx0XHRcdC8vIE9iamVjdCAvIEFycmF5IHByb3BlcnRpZXMgYXJlIHBhcnQgb2YgdGhlIGBjaGlsZHJlbmAgYWdncmVnYXRpb24gYW5kIGFzIHN1Y2ggc3RpbGwgbmVlZCB0byBiZSBwcm9jZXNzZWQgYXMgcHJvcGVydGllc1xuXHRcdFx0Y29uc3QgY2hpbGRyZW5PYmplY3QgPSAobVNldHRpbmdzLmNoaWxkcmVuIGFzIENvbnRyb2xQcm9wZXJ0aWVzPFQ+KT8uW3Byb3BlcnR5TmFtZV0gYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+O1xuXHRcdFx0YWdncmVnYXRpb25TdHJpbmcucHVzaChwcm9jZXNzT2JqZWN0UHJvcGVydHlWYWx1ZShjaGlsZHJlbk9iamVjdCwgbmFtZXNwYWNlQWxpYXMsIHByb3BlcnR5TmFtZSkpO1xuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogUHJvY2Vzc2VzIHRoZSBjb21tYW5kLlxuICpcbiAqIFJlc29sdmVzIHRoZSBjb21tYW5kIHNldCBvbiB0aGUgY29udHJvbCB2aWEgdGhlIGludHJpbnNpYyBjbGFzcyBhdHRyaWJ1dGUgXCJqc3g6Y29tbWFuZFwiLlxuICogSWYgbm8gY29tbWFuZCBoYXMgYmVlbiBzZXQgb3IgdGhlIHRhcmdldGVkIGV2ZW50IGRvZXNuJ3QgZXhpc3QsIG5vIGNvbmZpZ3VyYXRpb24gaXMgc2V0LlxuICogQHBhcmFtIHNldHRpbmdzIE1ldGFkYXRhIG9mIHRoZSBjb250cm9sXG4gKiBAcGFyYW0gbWV0YWRhdGFFdmVudHMgU2V0dGluZ3Mgb2YgdGhlIGNvbnRyb2xcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0NvbW1hbmQoXG5cdHNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0bWV0YWRhdGFFdmVudHM6IFJlY29yZDxcblx0XHRzdHJpbmcsXG5cdFx0e1xuXHRcdFx0bmFtZTogc3RyaW5nO1xuXHRcdH1cblx0PlxuKTogdm9pZCB7XG5cdGNvbnN0IGNvbW1hbmRQcm9wZXJ0eSA9IHNldHRpbmdzW1wianN4OmNvbW1hbmRcIl07XG5cdGlmIChjb21tYW5kUHJvcGVydHkpIHtcblx0XHRjb25zdCBbY29tbWFuZCwgZXZlbnROYW1lXSA9IChjb21tYW5kUHJvcGVydHkgYXMgc3RyaW5nKS5zcGxpdChcInxcIik7XG5cdFx0Y29uc3QgZXZlbnQgPSBtZXRhZGF0YUV2ZW50c1tldmVudE5hbWVdO1xuXHRcdGlmIChldmVudCAmJiBjb21tYW5kLnN0YXJ0c1dpdGgoXCJjbWQ6XCIpKSB7XG5cdFx0XHRzZXR0aW5nc1tldmVudC5uYW1lXSA9IGNvbW1hbmQ7XG5cdFx0fVxuXHR9XG5cdGRlbGV0ZSBzZXR0aW5nc1tcImpzeDpjb21tYW5kXCJdO1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzQWdncmVnYXRpb25zKFxuXHRtU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRtZXRhZGF0YUFnZ3JlZ2F0aW9uczogUmVjb3JkPHN0cmluZywgb2JqZWN0Pixcblx0bmFtZXNwYWNlQWxpYXM6IHN0cmluZyxcblx0ZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRwcm9wZXJ0aWVzU3RyaW5nOiBzdHJpbmdbXSxcblx0YWdncmVnYXRpb25TdHJpbmc6IHN0cmluZ1tdXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4ge1xuXHRjb25zdCBhZ2dyZWdhdGlvbkNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcblx0YWRkQ2hpbGRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbkNoaWxkcmVuLCBkZWZhdWx0QWdncmVnYXRpb25OYW1lID8/IFwiY3VzdG9tRGF0YVwiLCBtU2V0dGluZ3MuY2hpbGRyZW4gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uQ2hpbGRLZXlzID0gT2JqZWN0LmtleXMoYWdncmVnYXRpb25DaGlsZHJlbik7XG5cdGxldCB3cml0ZU9ubHlEZWZhdWx0QWdncmVnYXRpb24gPSBmYWxzZTtcblx0aWYgKGFnZ3JlZ2F0aW9uQ2hpbGRLZXlzLmxlbmd0aCA9PT0gMSAmJiBhZ2dyZWdhdGlvbkNoaWxkS2V5c1swXSA9PT0gZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSkge1xuXHRcdHdyaXRlT25seURlZmF1bHRBZ2dyZWdhdGlvbiA9IHRydWU7XG5cdH1cblx0T2JqZWN0LmtleXMobWV0YWRhdGFBZ2dyZWdhdGlvbnMpLmZvckVhY2goKGFnZ3JlZ2F0aW9uTmFtZSkgPT4ge1xuXHRcdGlmIChhZ2dyZWdhdGlvbkNoaWxkcmVuLmhhc093blByb3BlcnR5KGFnZ3JlZ2F0aW9uTmFtZSkgJiYgYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLmxlbmd0aCA+IDApIHtcblx0XHRcdGlmIChhZ2dyZWdhdGlvbk5hbWUgPT09IGRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUgJiYgd3JpdGVPbmx5RGVmYXVsdEFnZ3JlZ2F0aW9uKSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uU3RyaW5nLnB1c2goYCR7d3JpdGVDaGlsZHJlbihhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0pfWApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YWdncmVnYXRpb25TdHJpbmcucHVzaChcblx0XHRcdFx0XHRgPCR7bmFtZXNwYWNlQWxpYXN9OiR7YWdncmVnYXRpb25OYW1lfT5cblx0XHRcdFx0XHRcdCR7d3JpdGVDaGlsZHJlbihhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0pfVxuXHRcdFx0XHRcdDwvJHtuYW1lc3BhY2VBbGlhc306JHthZ2dyZWdhdGlvbk5hbWV9PmBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG1TZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShhZ2dyZWdhdGlvbk5hbWUpICYmIG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2YgbVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGAke2FnZ3JlZ2F0aW9uTmFtZX09JyR7SlNPTi5zdHJpbmdpZnkobVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0pfSdgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEluIHNvbWUgY2FzZSB0aGUgYWdncmVnYXRpb24gZXhwZWN0IGEgc3RyaW5nIHZhbHVlIChsaWtlIGZvciB0aGUgdG9vbHRpcCksIGluIHRoaXMgY2FzZSB3ZSBzZXQgaXQgZGlyZWN0bHkgYXMgYSBwcm9wZXJ0eVxuXHRcdFx0XHRwcm9wZXJ0aWVzU3RyaW5nLnB1c2goYCR7YWdncmVnYXRpb25OYW1lfT0nJHtlc2NhcGVYTUxBdHRyaWJ1dGVWYWx1ZShtU2V0dGluZ3NbYWdncmVnYXRpb25OYW1lXSBhcyBzdHJpbmcpfSdgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYWdncmVnYXRpb25DaGlsZHJlbjtcbn1cblxuY29uc3QganN4WG1sID0gZnVuY3Rpb24gPFQ+KFxuXHR0eXBlOiB0eXBlb2YgQ29udHJvbCB8IHR5cGVvZiBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgfCBcInNsb3RcIixcblx0bVNldHRpbmdzOiBOb25Db250cm9sUHJvcGVydGllczxUPiAmIHsga2V5Pzogc3RyaW5nOyBjaGlsZHJlbj86IFVJNUVsZW1lbnQgfCBDb250cm9sUHJvcGVydGllczxUPjsgbmFtZT86IHN0cmluZyB9LFxuXHRrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0eG1sTmFtZXNwYWNlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuXHRvdmVycmlkZU5vZGVOYW1lPzogc3RyaW5nXG4pOiBzdHJpbmcge1xuXHRsZXQgbWV0YWRhdGE7XG5cdGxldCBtZXRhZGF0YVByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHsgbmFtZT86IHN0cmluZzsgdHlwZT86IHN0cmluZyB9Pjtcblx0bGV0IG1ldGFkYXRhRXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCB7IG5hbWU6IHN0cmluZyB9Pjtcblx0bGV0IGNvbnRyb2xOYW1lO1xuXHRsZXQgbWV0YWRhdGFBZ2dyZWdhdGlvbnM7XG5cdGxldCBkZWZhdWx0QWdncmVnYXRpb25OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGxldCBpc0NvbnRyb2wgPSBmYWxzZTtcblx0aWYgKHR5cGUgPT09IFwic2xvdFwiKSB7XG5cdFx0cmV0dXJuIGA8c2xvdCBuYW1lPVwiJHttU2V0dGluZ3MubmFtZX1cIi8+YDtcblx0fSBlbHNlIGlmIChpc0FDb250cm9sKHR5cGUpKSB7XG5cdFx0bWV0YWRhdGEgPSB0eXBlLmdldE1ldGFkYXRhKCk7XG5cdFx0bWV0YWRhdGFQcm9wZXJ0aWVzID0gbWV0YWRhdGEuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdG1ldGFkYXRhUHJvcGVydGllcyA9IHsgLi4ubWV0YWRhdGFQcm9wZXJ0aWVzLCAuLi5tZXRhZGF0YS5nZXRBbGxFdmVudHMoKSwgLi4ubWV0YWRhdGEuZ2V0QWxsQXNzb2NpYXRpb25zKCkgfTtcblx0XHRtZXRhZGF0YUV2ZW50cyA9IG1ldGFkYXRhLmdldEFsbEV2ZW50cygpO1xuXHRcdGNvbnRyb2xOYW1lID0gbWV0YWRhdGEuZ2V0TmFtZSgpO1xuXHRcdG1ldGFkYXRhQWdncmVnYXRpb25zID0gbWV0YWRhdGEuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0ZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSA9IG1ldGFkYXRhLmdldERlZmF1bHRBZ2dyZWdhdGlvbk5hbWUoKTtcblx0XHRpc0NvbnRyb2wgPSB0cnVlO1xuXHR9IGVsc2Uge1xuXHRcdG1ldGFkYXRhID0gdHlwZS5tZXRhZGF0YTtcblx0XHRtZXRhZGF0YVByb3BlcnRpZXMgPSB7IC4uLm1ldGFkYXRhLnByb3BlcnRpZXMgfTtcblx0XHRtZXRhZGF0YUFnZ3JlZ2F0aW9ucyA9IHsgLi4ueyBkZXBlbmRlbnRzOiB7fSwgY3VzdG9tRGF0YToge30gfSwgLi4ubWV0YWRhdGEuYWdncmVnYXRpb25zIH07XG5cdFx0bWV0YWRhdGFFdmVudHMgPSB7fTtcblx0XHRkZWZhdWx0QWdncmVnYXRpb25OYW1lID0gbWV0YWRhdGEuZGVmYXVsdEFnZ3JlZ2F0aW9uO1xuXHRcdGNvbnRyb2xOYW1lID0gbWV0YWRhdGEubmFtZXNwYWNlICsgXCIuXCIgKyBtZXRhZGF0YS5uYW1lO1xuXHR9XG5cdGNvbnN0IG5hbWVzU3BsaXQgPSBjb250cm9sTmFtZS5zcGxpdChcIi5cIik7XG5cdGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdG1TZXR0aW5nc1tcImtleVwiXSA9IGtleTtcblx0fVxuXG5cdG1ldGFkYXRhUHJvcGVydGllc1tcImNsYXNzXCJdID0geyBuYW1lOiBcImNsYXNzXCIgfTtcblx0bWV0YWRhdGFQcm9wZXJ0aWVzW1wiaWRcIl0gPSB7IG5hbWU6IFwiaWRcIiB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbXCJiaW5kaW5nXCJdID0geyBuYW1lOiBcImJpbmRpbmdcIiB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbRkxfREVMRUdBVEVdID0geyBuYW1lOiBGTF9ERUxFR0FURSB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbRFRfREVTSUdOVElNRV0gPSB7IG5hbWU6IERUX0RFU0lHTlRJTUUgfTtcblx0bWV0YWRhdGFQcm9wZXJ0aWVzW0NPUkVfUkVRVUlSRV0gPSB7IG5hbWU6IENPUkVfUkVRVUlSRSB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbTE9HX1NPVVJDRVBBVEhdID0geyBuYW1lOiBMT0dfU09VUkNFUEFUSCB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbQ1VTVE9NX0VOVElUWVRZUEVdID0geyBuYW1lOiBDVVNUT01fRU5USVRZVFlQRSB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbXCJ4bWxuczpmbFwiXSA9IHsgbmFtZTogRkxfREVMRUdBVEUgfTtcblx0bWV0YWRhdGFQcm9wZXJ0aWVzW1wieG1sbnM6ZHRcIl0gPSB7IG5hbWU6IERUX0RFU0lHTlRJTUUgfTtcblx0bWV0YWRhdGFQcm9wZXJ0aWVzW1wieG1sbnM6Y29yZVwiXSA9IHsgbmFtZTogQ09SRV9SRVFVSVJFIH07XG5cdG1ldGFkYXRhUHJvcGVydGllc1tcInhtbG5zOmxvZ1wiXSA9IHsgbmFtZTogTE9HX1NPVVJDRVBBVEggfTtcblx0aWYgKGNvbnRyb2xOYW1lID09PSBcInNhcC51aS5jb3JlLkZyYWdtZW50XCIpIHtcblx0XHRtZXRhZGF0YVByb3BlcnRpZXNbXCJmcmFnbWVudE5hbWVcIl0gPSB7IG5hbWU6IFwiZnJhZ21lbnROYW1lXCIgfTtcblx0fVxuXHRjb25zdCBuYW1lc3BhY2UgPSBuYW1lc1NwbGl0LnNsaWNlKDAsIC0xKTtcblx0Y29uc3QgbmFtZSA9IG5hbWVzU3BsaXRbbmFtZXNTcGxpdC5sZW5ndGggLSAxXTtcblx0bGV0IG5hbWVzcGFjZUFsaWFzID0gbmFtZXNwYWNlW25hbWVzcGFjZS5sZW5ndGggLSAxXTtcblx0aWYgKHhtbE5hbWVzcGFjZU1hcFtuYW1lc3BhY2Uuam9pbihcIi5cIildKSB7XG5cdFx0bmFtZXNwYWNlQWxpYXMgPSB4bWxOYW1lc3BhY2VNYXBbbmFtZXNwYWNlLmpvaW4oXCIuXCIpXTtcblx0fVxuXHRsZXQgdGFnTmFtZSA9IGAke25hbWVzcGFjZUFsaWFzfToke25hbWV9YDtcblx0Y29uc3QgcHJvcGVydGllc1N0cmluZzogc3RyaW5nW10gPSBbXTtcblx0Y29uc3QgYWdncmVnYXRpb25TdHJpbmc6IHN0cmluZ1tdID0gW107XG5cdHByb2Nlc3NDb21tYW5kKG1TZXR0aW5ncywgbWV0YWRhdGFFdmVudHMpO1xuXHRwcm9jZXNzUHJvcGVydGllcyhtU2V0dGluZ3MsIG1ldGFkYXRhUHJvcGVydGllcywgbmFtZXNwYWNlQWxpYXMsIHByb3BlcnRpZXNTdHJpbmcsIGFnZ3JlZ2F0aW9uU3RyaW5nLCBpc0NvbnRyb2wpO1xuXHRwcm9jZXNzQWdncmVnYXRpb25zKG1TZXR0aW5ncywgbWV0YWRhdGFBZ2dyZWdhdGlvbnMsIG5hbWVzcGFjZUFsaWFzLCBkZWZhdWx0QWdncmVnYXRpb25OYW1lLCBwcm9wZXJ0aWVzU3RyaW5nLCBhZ2dyZWdhdGlvblN0cmluZyk7XG5cdGlmIChvdmVycmlkZU5vZGVOYW1lKSB7XG5cdFx0dGFnTmFtZSA9IG92ZXJyaWRlTm9kZU5hbWU7XG5cdH1cblx0cmV0dXJuIGA8JHt0YWdOYW1lfSB4bWxuczoke25hbWVzcGFjZUFsaWFzfT1cIiR7bmFtZXNwYWNlLmpvaW4oXCIuXCIpfVwiICR7cHJvcGVydGllc1N0cmluZy5qb2luKFwiIFwiKX0+JHthZ2dyZWdhdGlvblN0cmluZy5qb2luKFxuXHRcdFwiXCJcblx0KX08LyR7dGFnTmFtZX0+YDtcbn07XG5leHBvcnQg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
292
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc0JpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiIsImV4cHJlc3Npb24iLCJfdHlwZSIsInVuZGVmaW5lZCIsIndyaXRlQ2hpbGRyZW4iLCJ2YWwiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwiZXNjYXBlWE1MQXR0cmlidXRlVmFsdWUiLCJ2YWx1ZSIsInJlcGxhY2UiLCJhZGRDaGlsZEFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25DaGlsZHJlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsImNoaWxkIiwidHJpbSIsImxlbmd0aCIsInB1c2giLCJmb3JFYWNoIiwic3ViQ2hpbGQiLCJjaGlsZEtleSIsIk9iamVjdCIsImtleXMiLCJpc0FDb250cm9sIiwiY2hpbGRyZW4iLCJnZXRNZXRhZGF0YSIsIkZMX0RFTEVHQVRFIiwiRFRfREVTSUdOVElNRSIsIkNPUkVfUkVRVUlSRSIsIkxPR19TT1VSQ0VQQVRIIiwiQ1VTVE9NX0VOVElUWVRZUEUiLCJwcm9jZXNzT2JqZWN0UHJvcGVydHlWYWx1ZSIsImNoaWxkcmVuT2JqZWN0IiwibmFtZXNwYWNlQWxpYXMiLCJwcm9wZXJ0eU5hbWUiLCJhZ2dyZWdhdGlvblByb3BlcnRpZXMiLCJzdWJQcm9wTmFtZSIsImNoaWxkVmFsdWUiLCJjaGlsZHJlbk9iamVjdEVsZW1lbnQiLCJ0b1N0cmluZyIsIm5hbWVzcGFjZWRQcm9wZXJ0eSIsInByb2Nlc3NQcm9wZXJ0aWVzIiwibVNldHRpbmdzIiwibWV0YWRhdGFQcm9wZXJ0aWVzIiwicHJvcGVydGllc1N0cmluZyIsImFnZ3JlZ2F0aW9uU3RyaW5nIiwiaXNDb250cm9sIiwiaGFzT3duUHJvcGVydHkiLCJwcm9wZXJ0eVZhbHVlIiwidHlwZSIsImdldFBhdGgiLCJjb21waWxlRXhwcmVzc2lvbiIsIm91dFZhbHVlIiwiSlNPTiIsInN0cmluZ2lmeSIsInNlcGFyYXRvciIsImVuZHNXaXRoIiwiZXZlcnkiLCJwcm9wQXNVSTVPYmplY3QiLCJ1aTVvYmplY3QiLCJwcm9wIiwicHJvY2Vzc0NvbW1hbmQiLCJzZXR0aW5ncyIsIm1ldGFkYXRhRXZlbnRzIiwiY29tbWFuZFByb3BlcnR5IiwiY29tbWFuZCIsImV2ZW50TmFtZSIsInNwbGl0IiwiZXZlbnQiLCJzdGFydHNXaXRoIiwibmFtZSIsInByb2Nlc3NBZ2dyZWdhdGlvbnMiLCJtZXRhZGF0YUFnZ3JlZ2F0aW9ucyIsImRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUiLCJhZ2dyZWdhdGlvbkNoaWxkS2V5cyIsIndyaXRlT25seURlZmF1bHRBZ2dyZWdhdGlvbiIsImpzeFhtbCIsImtleSIsInhtbE5hbWVzcGFjZU1hcCIsIm92ZXJyaWRlTm9kZU5hbWUiLCJtZXRhZGF0YSIsImNvbnRyb2xOYW1lIiwiZ2V0QWxsUHJvcGVydGllcyIsImdldEFsbEV2ZW50cyIsImdldEFsbEFzc29jaWF0aW9ucyIsImdldE5hbWUiLCJnZXRBbGxBZ2dyZWdhdGlvbnMiLCJnZXREZWZhdWx0QWdncmVnYXRpb25OYW1lIiwicHJvcGVydGllcyIsImRlcGVuZGVudHMiLCJjdXN0b21EYXRhIiwiYWdncmVnYXRpb25zIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwibmFtZXNwYWNlIiwibmFtZXNTcGxpdCIsInNsaWNlIiwidGFnTmFtZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsianN4LXhtbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgQ29udHJvbFByb3BlcnRpZXMsIE5vbkNvbnRyb2xQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IHR5cGUgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuZnVuY3Rpb24gaXNCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24oXG5cdGV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPiB8IHVua25vd25cbik6IGV4cHJlc3Npb24gaXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHVua25vd24+IHtcblx0cmV0dXJuIChleHByZXNzaW9uIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPik/Ll90eXBlICE9PSB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IHdyaXRlQ2hpbGRyZW4gPSBmdW5jdGlvbiAodmFsOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcblx0XHRyZXR1cm4gdmFsLmpvaW4oXCJcIik7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxufTtcblxuLyoqXG4gKiBTb21lIGNoYXJhY3RlcnMgbmVlZHMgdG8gYmUgZXNjYXBlZCB3aGVuIHVzZWQgYXMgWE1MIGF0dHJpYnV0ZSB2YWx1ZSwgb3RoZXJ3aXNlIHRoaXMgcmVzdWx0IGluIGluY29ycmVjdCBYTUwuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEByZXR1cm5zIFRoZSBlc2NhcGVkIHhtbCBhdHRyaWJ1dGVcbiAqL1xuZnVuY3Rpb24gZXNjYXBlWE1MQXR0cmlidXRlVmFsdWUodmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gdmFsdWU/LnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKS5yZXBsYWNlKC88L2csIFwiJmx0O1wiKS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKS5yZXBsYWNlKC8nL2csIFwiJmFwb3M7XCIpO1xufVxuXG5jb25zdCBhZGRDaGlsZEFnZ3JlZ2F0aW9uID0gZnVuY3Rpb24gKFxuXHRhZ2dyZWdhdGlvbkNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCAoQ29udHJvbCB8IHN0cmluZylbXT4sXG5cdGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLFxuXHRjaGlsZDogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKTogdm9pZCB7XG5cdGlmIChjaGlsZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGlmICghYWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdKSB7XG5cdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdID0gW107XG5cdH1cblx0aWYgKHR5cGVvZiBjaGlsZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdGlmIChjaGlsZC50cmltKCkubGVuZ3RoID4gMCkge1xuXHRcdFx0YWdncmVnYXRpb25DaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdLnB1c2goY2hpbGQpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNoaWxkKSkge1xuXHRcdGNoaWxkLmZvckVhY2goKHN1YkNoaWxkKSA9PiB7XG5cdFx0XHRhZGRDaGlsZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4sIGFnZ3JlZ2F0aW9uTmFtZSwgc3ViQ2hpbGQpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdGZvciAoY29uc3QgY2hpbGRLZXkgb2YgT2JqZWN0LmtleXMoY2hpbGQpKSB7XG5cdFx0XHRhZGRDaGlsZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4sIGNoaWxkS2V5LCBjaGlsZFtjaGlsZEtleV0pO1xuXHRcdH1cblx0fVxufTtcblxuY29uc3QgaXNBQ29udHJvbCA9IGZ1bmN0aW9uIChjaGlsZHJlbj86IHR5cGVvZiBDb250cm9sIHwgRnVuY3Rpb24pOiBjaGlsZHJlbiBpcyB0eXBlb2YgQ29udHJvbCB7XG5cdHJldHVybiAhIShjaGlsZHJlbiBhcyB0eXBlb2YgQ29udHJvbCk/LmdldE1ldGFkYXRhO1xufTtcblxuY29uc3QgRkxfREVMRUdBVEUgPSBcImZsOmRlbGVnYXRlXCI7XG5jb25zdCBEVF9ERVNJR05USU1FID0gXCJkdDpkZXNpZ250aW1lXCI7XG5jb25zdCBDT1JFX1JFUVVJUkUgPSBcImNvcmU6cmVxdWlyZVwiO1xuY29uc3QgTE9HX1NPVVJDRVBBVEggPSBcImxvZzpzb3VyY2VQYXRoXCI7XG5jb25zdCBDVVNUT01fRU5USVRZVFlQRSA9IFwiY3VzdG9tRGF0YTplbnRpdHlUeXBlXCI7XG5cbmZ1bmN0aW9uIHByb2Nlc3NPYmplY3RQcm9wZXJ0eVZhbHVlKFxuXHRjaGlsZHJlbk9iamVjdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdG5hbWVzcGFjZUFsaWFzOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdHByb3BlcnR5TmFtZTogc3RyaW5nXG4pOiBzdHJpbmcge1xuXHQvLyBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBjaGlsZCBpc1xuXHRjb25zdCBhZ2dyZWdhdGlvblByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uQ2hpbGRyZW46IHN0cmluZ1tdID0gW107XG5cdE9iamVjdC5rZXlzKGNoaWxkcmVuT2JqZWN0KS5mb3JFYWNoKChzdWJQcm9wTmFtZSkgPT4ge1xuXHRcdGNvbnN0IGNoaWxkVmFsdWUgPSBjaGlsZHJlbk9iamVjdFtzdWJQcm9wTmFtZV07XG5cdFx0aWYgKGNoaWxkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKHR5cGVvZiBjaGlsZFZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGNoaWxkVmFsdWUpKSB7XG5cdFx0XHRcdFx0YWdncmVnYXRpb25DaGlsZHJlbi5wdXNoKGA8JHtzdWJQcm9wTmFtZX0+YCk7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBjaGlsZHJlbk9iamVjdEVsZW1lbnQgb2YgY2hpbGRWYWx1ZSkge1xuXHRcdFx0XHRcdFx0YWdncmVnYXRpb25DaGlsZHJlbi5wdXNoKFxuXHRcdFx0XHRcdFx0XHRwcm9jZXNzT2JqZWN0UHJvcGVydHlWYWx1ZShjaGlsZHJlbk9iamVjdEVsZW1lbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG5hbWVzcGFjZUFsaWFzLCBzdWJQcm9wTmFtZSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGFnZ3JlZ2F0aW9uQ2hpbGRyZW4ucHVzaChgPC8ke3N1YlByb3BOYW1lfT5gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgYSB2YWx1ZSBpdCBuZWVkcyB0byBiZSBzZXJpYWxpemVkIGFzIGEgY2hpbGRyZW5cblx0XHRcdFx0XHQvLyA8bXlPYmplY3RQcm9wIHByb3AxPSd4eHgnLCBwcm9wMj0neHh0Jy8+XG5cdFx0XHRcdFx0YWdncmVnYXRpb25DaGlsZHJlbi5wdXNoKFxuXHRcdFx0XHRcdFx0cHJvY2Vzc09iamVjdFByb3BlcnR5VmFsdWUoY2hpbGRWYWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgbmFtZXNwYWNlQWxpYXMsIHN1YlByb3BOYW1lKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIE90aGVyd2lzZSBpdCdzIHBhcnQgb2YgdGhlIG1haW4gb2JqZWN0IGp1c3QgYXMgYW5vdGhlciBwcm9wZXJ0eVxuXHRcdFx0XHRhZ2dyZWdhdGlvblByb3BlcnRpZXMucHVzaChgJHtzdWJQcm9wTmFtZX09JyR7ZXNjYXBlWE1MQXR0cmlidXRlVmFsdWUoY2hpbGRWYWx1ZS50b1N0cmluZygpKX0nYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBuYW1lc3BhY2VkUHJvcGVydHkgPSBuYW1lc3BhY2VBbGlhcyA/IGAke25hbWVzcGFjZUFsaWFzfToke3Byb3BlcnR5TmFtZX1gIDogcHJvcGVydHlOYW1lO1xuXHRyZXR1cm4gYDwke25hbWVzcGFjZWRQcm9wZXJ0eX0gJHthZ2dyZWdhdGlvblByb3BlcnRpZXMuam9pbihcIiBcIil9PiR7YWdncmVnYXRpb25DaGlsZHJlbi5qb2luKFwiXFxuXCIpfTwvJHtuYW1lc3BhY2VkUHJvcGVydHl9PmA7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0aWVzPFQ+KFxuXHRtU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRtZXRhZGF0YVByb3BlcnRpZXM6IFJlY29yZDxcblx0XHRzdHJpbmcsXG5cdFx0e1xuXHRcdFx0bmFtZT86IHN0cmluZztcblx0XHRcdHR5cGU/OiBzdHJpbmc7XG5cdFx0fVxuXHQ+LFxuXHRuYW1lc3BhY2VBbGlhczogc3RyaW5nLFxuXHRwcm9wZXJ0aWVzU3RyaW5nOiBzdHJpbmdbXSxcblx0YWdncmVnYXRpb25TdHJpbmc6IHN0cmluZ1tdLFxuXHRpc0NvbnRyb2w6IGJvb2xlYW5cbik6IHZvaWQge1xuXHRPYmplY3Qua2V5cyhtZXRhZGF0YVByb3BlcnRpZXMpLmZvckVhY2goKHByb3BlcnR5TmFtZSkgPT4ge1xuXHRcdGlmIChtU2V0dGluZ3MuaGFzT3duUHJvcGVydHkocHJvcGVydHlOYW1lKSAmJiBtU2V0dGluZ3NbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlID0gbVNldHRpbmdzW3Byb3BlcnR5TmFtZV07XG5cdFx0XHRpZiAocHJvcGVydHlOYW1lID09PSBDT1JFX1JFUVVJUkUpIHtcblx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGB4bWxuczpjb3JlPVwic2FwLnVpLmNvcmVcImApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHByb3BlcnR5TmFtZSA9PT0gRkxfREVMRUdBVEUpIHtcblx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGB4bWxuczpmbD1cInNhcC51aS5mbFwiYCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocHJvcGVydHlOYW1lID09PSBEVF9ERVNJR05USU1FKSB7XG5cdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgeG1sbnM6ZHQ9XCJzYXAudWkuZHRcImApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHByb3BlcnR5TmFtZSA9PT0gTE9HX1NPVVJDRVBBVEgpIHtcblx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGB4bWxuczpsb2c9XCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUuQ3VzdG9tRGF0YS8xXCJgKTtcblx0XHRcdH1cblx0XHRcdGlmIChwcm9wZXJ0eU5hbWUgPT09IENVU1RPTV9FTlRJVFlUWVBFKSB7XG5cdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgeG1sbnM6Y3VzdG9tRGF0YT1cImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcImApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHByb3BlcnR5VmFsdWUgJiYgdHlwZW9mIHByb3BlcnR5VmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0aWYgKG1ldGFkYXRhUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdLnR5cGUgPT09IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIikge1xuXHRcdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHtwcm9wZXJ0eU5hbWV9PSckeyhwcm9wZXJ0eVZhbHVlIGFzIENvbnRleHQpLmdldFBhdGgoKX0nYCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaXNCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ocHJvcGVydHlWYWx1ZSkpIHtcblx0XHRcdFx0XHRwcm9wZXJ0aWVzU3RyaW5nLnB1c2goYCR7cHJvcGVydHlOYW1lfT0nJHtlc2NhcGVYTUxBdHRyaWJ1dGVWYWx1ZShjb21waWxlRXhwcmVzc2lvbihwcm9wZXJ0eVZhbHVlKSl9J2ApO1xuXHRcdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydHlWYWx1ZSkpIHtcblx0XHRcdFx0XHRpZiAocHJvcGVydHlWYWx1ZS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRcdC8vIERvIG5vdGhpbmcgZm9yIGVtcHR5IGFycmF5XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eVZhbHVlLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3V0VmFsdWUgPSB0eXBlb2YgcHJvcGVydHlWYWx1ZVswXSA9PT0gXCJzdHJpbmdcIiA/IHByb3BlcnR5VmFsdWVbMF0gOiBKU09OLnN0cmluZ2lmeShwcm9wZXJ0eVZhbHVlWzBdKTtcblx0XHRcdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHtwcm9wZXJ0eU5hbWV9PScke291dFZhbHVlfSdgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2VwYXJhdG9yID0gbWV0YWRhdGFQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0udHlwZT8uZW5kc1dpdGgoXCJbXVwiKSA/IFwiLFwiIDogXCIgXCI7XG5cdFx0XHRcdFx0XHRjb25zdCBvdXRWYWx1ZSA9IHByb3BlcnR5VmFsdWUuZXZlcnkoKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0XHRcdFx0PyBwcm9wZXJ0eVZhbHVlLmpvaW4oc2VwYXJhdG9yKVxuXHRcdFx0XHRcdFx0XHQ6IEpTT04uc3RyaW5naWZ5KHByb3BlcnR5VmFsdWUpO1xuXHRcdFx0XHRcdFx0cHJvcGVydGllc1N0cmluZy5wdXNoKGAke3Byb3BlcnR5TmFtZX09JyR7b3V0VmFsdWV9J2ApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChpc0NvbnRyb2wpIHtcblx0XHRcdFx0XHRjb25zdCBwcm9wQXNVSTVPYmplY3QgPSB7IHVpNW9iamVjdDogdHJ1ZSwgLi4ucHJvcGVydHlWYWx1ZSB9O1xuXHRcdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHtwcm9wZXJ0eU5hbWV9PScke2VzY2FwZVhNTEF0dHJpYnV0ZVZhbHVlKEpTT04uc3RyaW5naWZ5KHByb3BBc1VJNU9iamVjdCkpfSdgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhZ2dyZWdhdGlvblN0cmluZy5wdXNoKHByb2Nlc3NPYmplY3RQcm9wZXJ0eVZhbHVlKHByb3BlcnR5VmFsdWUgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgdW5kZWZpbmVkLCBwcm9wZXJ0eU5hbWUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eVZhbHVlICE9PSBudWxsKSB7XG5cdFx0XHRcdGNvbnN0IHByb3AgPSBwcm9wZXJ0eVZhbHVlIGFzIHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG5cdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHtwcm9wZXJ0eU5hbWV9PScke2VzY2FwZVhNTEF0dHJpYnV0ZVZhbHVlKHByb3AudG9TdHJpbmcoKSl9J2ApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRtU2V0dGluZ3MuY2hpbGRyZW4/Lmhhc093blByb3BlcnR5KHByb3BlcnR5TmFtZSkgJiZcblx0XHRcdE9iamVjdC5rZXlzKChtU2V0dGluZ3MuY2hpbGRyZW4gYXMgQ29udHJvbFByb3BlcnRpZXM8VD4pPy5bcHJvcGVydHlOYW1lXSA/PyB7fSkubGVuZ3RoID4gMFxuXHRcdCkge1xuXHRcdFx0Ly8gT2JqZWN0IC8gQXJyYXkgcHJvcGVydGllcyBhcmUgcGFydCBvZiB0aGUgYGNoaWxkcmVuYCBhZ2dyZWdhdGlvbiBhbmQgYXMgc3VjaCBzdGlsbCBuZWVkIHRvIGJlIHByb2Nlc3NlZCBhcyBwcm9wZXJ0aWVzXG5cdFx0XHRjb25zdCBjaGlsZHJlbk9iamVjdCA9IChtU2V0dGluZ3MuY2hpbGRyZW4gYXMgQ29udHJvbFByb3BlcnRpZXM8VD4pPy5bcHJvcGVydHlOYW1lXSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG5cdFx0XHRhZ2dyZWdhdGlvblN0cmluZy5wdXNoKHByb2Nlc3NPYmplY3RQcm9wZXJ0eVZhbHVlKGNoaWxkcmVuT2JqZWN0LCBuYW1lc3BhY2VBbGlhcywgcHJvcGVydHlOYW1lKSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIGNvbW1hbmQuXG4gKlxuICogUmVzb2x2ZXMgdGhlIGNvbW1hbmQgc2V0IG9uIHRoZSBjb250cm9sIHZpYSB0aGUgaW50cmluc2ljIGNsYXNzIGF0dHJpYnV0ZSBcImpzeDpjb21tYW5kXCIuXG4gKiBJZiBubyBjb21tYW5kIGhhcyBiZWVuIHNldCBvciB0aGUgdGFyZ2V0ZWQgZXZlbnQgZG9lc24ndCBleGlzdCwgbm8gY29uZmlndXJhdGlvbiBpcyBzZXQuXG4gKiBAcGFyYW0gc2V0dGluZ3MgTWV0YWRhdGEgb2YgdGhlIGNvbnRyb2xcbiAqIEBwYXJhbSBtZXRhZGF0YUV2ZW50cyBTZXR0aW5ncyBvZiB0aGUgY29udHJvbFxuICovXG5mdW5jdGlvbiBwcm9jZXNzQ29tbWFuZChcblx0c2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRtZXRhZGF0YUV2ZW50czogUmVjb3JkPFxuXHRcdHN0cmluZyxcblx0XHR7XG5cdFx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0fVxuXHQ+XG4pOiB2b2lkIHtcblx0Y29uc3QgY29tbWFuZFByb3BlcnR5ID0gc2V0dGluZ3NbXCJqc3g6Y29tbWFuZFwiXTtcblx0aWYgKGNvbW1hbmRQcm9wZXJ0eSkge1xuXHRcdGNvbnN0IFtjb21tYW5kLCBldmVudE5hbWVdID0gKGNvbW1hbmRQcm9wZXJ0eSBhcyBzdHJpbmcpLnNwbGl0KFwifFwiKTtcblx0XHRjb25zdCBldmVudCA9IG1ldGFkYXRhRXZlbnRzW2V2ZW50TmFtZV07XG5cdFx0aWYgKGV2ZW50ICYmIGNvbW1hbmQuc3RhcnRzV2l0aChcImNtZDpcIikpIHtcblx0XHRcdHNldHRpbmdzW2V2ZW50Lm5hbWVdID0gY29tbWFuZDtcblx0XHR9XG5cdH1cblx0ZGVsZXRlIHNldHRpbmdzW1wianN4OmNvbW1hbmRcIl07XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NBZ2dyZWdhdGlvbnMoXG5cdG1TZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdG1ldGFkYXRhQWdncmVnYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+LFxuXHRuYW1lc3BhY2VBbGlhczogc3RyaW5nLFxuXHRkZWZhdWx0QWdncmVnYXRpb25OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdHByb3BlcnRpZXNTdHJpbmc6IHN0cmluZ1tdLFxuXHRhZ2dyZWdhdGlvblN0cmluZzogc3RyaW5nW11cbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiB7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uQ2hpbGRyZW46IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXHRhZGRDaGlsZEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4sIGRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUgPz8gXCJjdXN0b21EYXRhXCIsIG1TZXR0aW5ncy5jaGlsZHJlbiBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblx0Y29uc3QgYWdncmVnYXRpb25DaGlsZEtleXMgPSBPYmplY3Qua2V5cyhhZ2dyZWdhdGlvbkNoaWxkcmVuKTtcblx0bGV0IHdyaXRlT25seURlZmF1bHRBZ2dyZWdhdGlvbiA9IGZhbHNlO1xuXHRpZiAoYWdncmVnYXRpb25DaGlsZEtleXMubGVuZ3RoID09PSAxICYmIGFnZ3JlZ2F0aW9uQ2hpbGRLZXlzWzBdID09PSBkZWZhdWx0QWdncmVnYXRpb25OYW1lKSB7XG5cdFx0d3JpdGVPbmx5RGVmYXVsdEFnZ3JlZ2F0aW9uID0gdHJ1ZTtcblx0fVxuXHRPYmplY3Qua2V5cyhtZXRhZGF0YUFnZ3JlZ2F0aW9ucykuZm9yRWFjaCgoYWdncmVnYXRpb25OYW1lKSA9PiB7XG5cdFx0aWYgKGFnZ3JlZ2F0aW9uQ2hpbGRyZW4uaGFzT3duUHJvcGVydHkoYWdncmVnYXRpb25OYW1lKSAmJiBhZ2dyZWdhdGlvbkNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0ubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKGFnZ3JlZ2F0aW9uTmFtZSA9PT0gZGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSAmJiB3cml0ZU9ubHlEZWZhdWx0QWdncmVnYXRpb24pIHtcblx0XHRcdFx0YWdncmVnYXRpb25TdHJpbmcucHVzaChgJHt3cml0ZUNoaWxkcmVuKGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSl9YCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhZ2dyZWdhdGlvblN0cmluZy5wdXNoKFxuXHRcdFx0XHRcdGA8JHtuYW1lc3BhY2VBbGlhc306JHthZ2dyZWdhdGlvbk5hbWV9PlxuXHRcdFx0XHRcdFx0JHt3cml0ZUNoaWxkcmVuKGFnZ3JlZ2F0aW9uQ2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSl9XG5cdFx0XHRcdFx0PC8ke25hbWVzcGFjZUFsaWFzfToke2FnZ3JlZ2F0aW9uTmFtZX0+YFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAobVNldHRpbmdzLmhhc093blByb3BlcnR5KGFnZ3JlZ2F0aW9uTmFtZSkgJiYgbVNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKHR5cGVvZiBtU2V0dGluZ3NbYWdncmVnYXRpb25OYW1lXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRwcm9wZXJ0aWVzU3RyaW5nLnB1c2goYCR7YWdncmVnYXRpb25OYW1lfT0nJHtKU09OLnN0cmluZ2lmeShtU2V0dGluZ3NbYWdncmVnYXRpb25OYW1lXSl9J2ApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSW4gc29tZSBjYXNlIHRoZSBhZ2dyZWdhdGlvbiBleHBlY3QgYSBzdHJpbmcgdmFsdWUgKGxpa2UgZm9yIHRoZSB0b29sdGlwKSwgaW4gdGhpcyBjYXNlIHdlIHNldCBpdCBkaXJlY3RseSBhcyBhIHByb3BlcnR5XG5cdFx0XHRcdHByb3BlcnRpZXNTdHJpbmcucHVzaChgJHthZ2dyZWdhdGlvbk5hbWV9PScke2VzY2FwZVhNTEF0dHJpYnV0ZVZhbHVlKG1TZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdIGFzIHN0cmluZyl9J2ApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cdHJldHVybiBhZ2dyZWdhdGlvbkNoaWxkcmVuO1xufVxuXG5jb25zdCBqc3hYbWwgPSBmdW5jdGlvbiA8VD4oXG5cdHR5cGU6IHR5cGVvZiBDb250cm9sIHwgdHlwZW9mIEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSB8IFwic2xvdFwiLFxuXHRtU2V0dGluZ3M6IE5vbkNvbnRyb2xQcm9wZXJ0aWVzPFQ+ICYgeyBrZXk/OiBzdHJpbmc7IGNoaWxkcmVuPzogVUk1RWxlbWVudCB8IENvbnRyb2xQcm9wZXJ0aWVzPFQ+OyBuYW1lPzogc3RyaW5nIH0sXG5cdGtleTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHR4bWxOYW1lc3BhY2VNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG5cdG92ZXJyaWRlTm9kZU5hbWU/OiBzdHJpbmdcbik6IHN0cmluZyB7XG5cdGxldCBtZXRhZGF0YTtcblx0bGV0IG1ldGFkYXRhUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgeyBuYW1lPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nIH0+O1xuXHRsZXQgbWV0YWRhdGFFdmVudHM6IFJlY29yZDxzdHJpbmcsIHsgbmFtZTogc3RyaW5nIH0+O1xuXHRsZXQgY29udHJvbE5hbWU7XG5cdGxldCBtZXRhZGF0YUFnZ3JlZ2F0aW9ucztcblx0bGV0IGRlZmF1bHRBZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0bGV0IGlzQ29udHJvbCA9IGZhbHNlO1xuXHRpZiAodHlwZSA9PT0gXCJzbG90XCIpIHtcblx0XHRyZXR1cm4gYDxzbG90IG5hbWU9XCIke21TZXR0aW5ncy5uYW1lfVwiLz5gO1xuXHR9IGVsc2UgaWYgKGlzQUNvbnRyb2wodHlwZSkpIHtcblx0XHRtZXRhZGF0YSA9IHR5cGUuZ2V0TWV0YWRhdGEoKTtcblx0XHRtZXRhZGF0YVByb3BlcnRpZXMgPSBtZXRhZGF0YS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cdFx0bWV0YWRhdGFQcm9wZXJ0aWVzID0geyAuLi5tZXRhZGF0YVByb3BlcnRpZXMsIC4uLm1ldGFkYXRhLmdldEFsbEV2ZW50cygpLCAuLi5tZXRhZGF0YS5nZXRBbGxBc3NvY2lhdGlvbnMoKSB9O1xuXHRcdG1ldGFkYXRhRXZlbnRzID0gbWV0YWRhdGEuZ2V0QWxsRXZlbnRzKCk7XG5cdFx0Y29udHJvbE5hbWUgPSBtZXRhZGF0YS5nZXROYW1lKCk7XG5cdFx0bWV0YWRhdGFBZ2dyZWdhdGlvbnMgPSBtZXRhZGF0YS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0XHRkZWZhdWx0QWdncmVnYXRpb25OYW1lID0gbWV0YWRhdGEuZ2V0RGVmYXVsdEFnZ3JlZ2F0aW9uTmFtZSgpO1xuXHRcdGlzQ29udHJvbCA9IHRydWU7XG5cdH0gZWxzZSB7XG5cdFx0bWV0YWRhdGEgPSB0eXBlLm1ldGFkYXRhO1xuXHRcdG1ldGFkYXRhUHJvcGVydGllcyA9IHsgLi4ubWV0YWRhdGEucHJvcGVydGllcyB9O1xuXHRcdG1ldGFkYXRhQWdncmVnYXRpb25zID0geyAuLi57IGRlcGVuZGVudHM6IHt9LCBjdXN0b21EYXRhOiB7fSB9LCAuLi5tZXRhZGF0YS5hZ2dyZWdhdGlvbnMgfTtcblx0XHRtZXRhZGF0YUV2ZW50cyA9IHt9O1xuXHRcdGRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUgPSBtZXRhZGF0YS5kZWZhdWx0QWdncmVnYXRpb247XG5cdFx0Y29udHJvbE5hbWUgPSBtZXRhZGF0YS5uYW1lc3BhY2UgKyBcIi5cIiArIG1ldGFkYXRhLm5hbWU7XG5cdH1cblx0Y29uc3QgbmFtZXNTcGxpdCA9IGNvbnRyb2xOYW1lLnNwbGl0KFwiLlwiKTtcblx0aWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0bVNldHRpbmdzW1wia2V5XCJdID0ga2V5O1xuXHR9XG5cblx0bWV0YWRhdGFQcm9wZXJ0aWVzW1wiY2xhc3NcIl0gPSB7IG5hbWU6IFwiY2xhc3NcIiB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbXCJpZFwiXSA9IHsgbmFtZTogXCJpZFwiIH07XG5cdG1ldGFkYXRhUHJvcGVydGllc1tcImJpbmRpbmdcIl0gPSB7IG5hbWU6IFwiYmluZGluZ1wiIH07XG5cdG1ldGFkYXRhUHJvcGVydGllc1tGTF9ERUxFR0FURV0gPSB7IG5hbWU6IEZMX0RFTEVHQVRFIH07XG5cdG1ldGFkYXRhUHJvcGVydGllc1tEVF9ERVNJR05USU1FXSA9IHsgbmFtZTogRFRfREVTSUdOVElNRSB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbQ09SRV9SRVFVSVJFXSA9IHsgbmFtZTogQ09SRV9SRVFVSVJFIH07XG5cdG1ldGFkYXRhUHJvcGVydGllc1tMT0dfU09VUkNFUEFUSF0gPSB7IG5hbWU6IExPR19TT1VSQ0VQQVRIIH07XG5cdG1ldGFkYXRhUHJvcGVydGllc1tDVVNUT01fRU5USVRZVFlQRV0gPSB7IG5hbWU6IENVU1RPTV9FTlRJVFlUWVBFIH07XG5cdG1ldGFkYXRhUHJvcGVydGllc1tcInhtbG5zOmZsXCJdID0geyBuYW1lOiBGTF9ERUxFR0FURSB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbXCJ4bWxuczpkdFwiXSA9IHsgbmFtZTogRFRfREVTSUdOVElNRSB9O1xuXHRtZXRhZGF0YVByb3BlcnRpZXNbXCJ4bWxuczpjb3JlXCJdID0geyBuYW1lOiBDT1JFX1JFUVVJUkUgfTtcblx0bWV0YWRhdGFQcm9wZXJ0aWVzW1wieG1sbnM6bG9nXCJdID0geyBuYW1lOiBMT0dfU09VUkNFUEFUSCB9O1xuXHRpZiAoY29udHJvbE5hbWUgPT09IFwic2FwLnVpLmNvcmUuRnJhZ21lbnRcIikge1xuXHRcdG1ldGFkYXRhUHJvcGVydGllc1tcImZyYWdtZW50TmFtZVwiXSA9IHsgbmFtZTogXCJmcmFnbWVudE5hbWVcIiB9O1xuXHR9XG5cdGNvbnN0IG5hbWVzcGFjZSA9IG5hbWVzU3BsaXQuc2xpY2UoMCwgLTEpO1xuXHRjb25zdCBuYW1lID0gbmFtZXNTcGxpdFtuYW1lc1NwbGl0Lmxlbmd0aCAtIDFdO1xuXHRsZXQgbmFtZXNwYWNlQWxpYXMgPSBuYW1lc3BhY2VbbmFtZXNwYWNlLmxlbmd0aCAtIDFdO1xuXHRpZiAoeG1sTmFtZXNwYWNlTWFwW25hbWVzcGFjZS5qb2luKFwiLlwiKV0pIHtcblx0XHRuYW1lc3BhY2VBbGlhcyA9IHhtbE5hbWVzcGFjZU1hcFtuYW1lc3BhY2Uuam9pbihcIi5cIildO1xuXHR9XG5cdGxldCB0YWdOYW1lID0gYCR7bmFtZXNwYWNlQWxpYXN9OiR7bmFtZX1gO1xuXHRjb25zdCBwcm9wZXJ0aWVzU3RyaW5nOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBhZ2dyZWdhdGlvblN0cmluZzogc3RyaW5nW10gPSBbXTtcblx0cHJvY2Vzc0NvbW1hbmQobVNldHRpbmdzLCBtZXRhZGF0YUV2ZW50cyk7XG5cdHByb2Nlc3NQcm9wZXJ0aWVzKG1TZXR0aW5ncywgbWV0YWRhdGFQcm9wZXJ0aWVzLCBuYW1lc3BhY2VBbGlhcywgcHJvcGVydGllc1N0cmluZywgYWdncmVnYXRpb25TdHJpbmcsIGlzQ29udHJvbCk7XG5cdHByb2Nlc3NBZ2dyZWdhdGlvbnMobVNldHRpbmdzLCBtZXRhZGF0YUFnZ3JlZ2F0aW9ucywgbmFtZXNwYWNlQWxpYXMsIGRlZmF1bHRBZ2dyZWdhdGlvbk5hbWUsIHByb3BlcnRpZXNTdHJpbmcsIGFnZ3JlZ2F0aW9uU3RyaW5nKTtcblx0aWYgKG92ZXJyaWRlTm9kZU5hbWUpIHtcblx0XHR0YWdOYW1lID0gb3ZlcnJpZGVOb2RlTmFtZTtcblx0fVxuXHRyZXR1cm4gYDwke3RhZ05hbWV9IHhtbG5zOiR7bmFtZXNwYWNlQWxpYXN9PVwiJHtuYW1lc3BhY2Uuam9pbihcIi5cIil9XCIgJHtwcm9wZXJ0aWVzU3RyaW5nLmpvaW4oXCIgXCIpfT4ke2FnZ3JlZ2F0aW9uU3RyaW5nLmpvaW4oXG5cdFx0XCJcIlxuXHQpfTwvJHt0YWdOYW1lfT5gO1xufTtcbmV4cG9ydCBkZWZhdWx0IGpzeFhtbDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7RUFRQSxTQUFTQSwwQkFBMEJBLENBQ2xDQyxVQUF1RCxFQUNMO0lBQ2xELE9BQVFBLFVBQVUsRUFBd0NDLEtBQUssS0FBS0MsU0FBUztFQUM5RTtFQUVBLE1BQU1DLGFBQWEsR0FBRyxTQUFBQSxDQUFVQyxHQUFzQixFQUFVO0lBQy9ELElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixHQUFHLENBQUMsRUFBRTtNQUN2QixPQUFPQSxHQUFHLENBQUNHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxNQUFNO01BQ04sT0FBT0gsR0FBRztJQUNYO0VBQ0QsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0ksdUJBQXVCQSxDQUFDQyxLQUFjLEVBQXNCO0lBQ3BFLE9BQU9BLEtBQUssRUFBRUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7RUFDM0c7RUFFQSxNQUFNQyxtQkFBbUIsR0FBRyxTQUFBQSxDQUMzQkMsbUJBQXlELEVBQ3pEQyxlQUF1QixFQUN2QkMsS0FBc0MsRUFDL0I7SUFDUCxJQUFJQSxLQUFLLEtBQUtaLFNBQVMsRUFBRTtNQUN4QjtJQUNEO0lBQ0EsSUFBSSxDQUFDVSxtQkFBbUIsQ0FBQ0MsZUFBZSxDQUFDLEVBQUU7TUFDMUNELG1CQUFtQixDQUFDQyxlQUFlLENBQUMsR0FBRyxFQUFFO0lBQzFDO0lBQ0EsSUFBSSxPQUFPQyxLQUFLLEtBQUssUUFBUSxFQUFFO01BQzlCLElBQUlBLEtBQUssQ0FBQ0MsSUFB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O01BQUUyQixJQUFJLEVBQUUxQztJQUFhLENBQUM7SUFDekRlLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxHQUFHO01BQUUyQixJQUFJLEVBQUV6QztJQUFlLENBQUM7SUFDMUQsSUFBSW9ELFdBQVcsS0FBSyxzQkFBc0IsRUFBRTtNQUMzQ3RDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxHQUFHO1FBQUUyQixJQUFJLEVBQUU7TUFBZSxDQUFDO0lBQzlEO0lBQ0EsTUFBTXVCLFNBQVMsR0FBR0MsVUFBVSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU16QixJQUFJLEdBQUd3QixVQUFVLENBQUNBLFVBQVUsQ0FBQzlFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDOUMsSUFBSWlCLGNBQWMsR0FBRzRELFNBQVMsQ0FBQ0EsU0FBUyxDQUFDN0UsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJOEQsZUFBZSxDQUFDZSxTQUFTLENBQUN0RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUN6QzBCLGNBQWMsR0FBRzZDLGVBQWUsQ0FBQ2UsU0FBUyxDQUFDdEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3REO0lBQ0EsSUFBSXlGLE9BQU8sR0FBRyxHQUFHL0QsY0FBYyxJQUFJcUMsSUFBSSxFQUFFO0lBQ3pDLE1BQU0xQixnQkFBMEIsR0FBRyxFQUFFO0lBQ3JDLE1BQU1DLGlCQUEyQixHQUFHLEVBQUU7SUFDdENnQixjQUFjLENBQUNuQixTQUFTLEVBQUVxQixjQUFjLENBQUM7SUFDekN0QixpQkFBaUIsQ0FBQ0MsU0FBUyxFQUFFQyxrQkFBa0IsRUFBRVYsY0FBYyxFQUFFVyxnQkFBZ0IsRUFBRUMsaUJBQWlCLEVBQUVDLFNBQVMsQ0FBQztJQUNoSHlCLG1CQUFtQixDQUFDN0IsU0FBUyxFQUFFOEIsb0JBQW9CLEVBQUV2QyxjQUFjLEVBQUV3QyxzQkFBc0IsRUFBRTdCLGdCQUFnQixFQUFFQyxpQkFBaUIsQ0FBQztJQUNqSSxJQUFJa0MsZ0JBQWdCLEVBQUU7TUFDckJpQixPQUFPLEdBQUdqQixnQkFBZ0I7SUFDM0I7SUFDQSxPQUFPLElBQUlpQixPQUFPLFVBQVUvRCxjQUFjLEtBQUs0RCxTQUFTLENBQUN0RixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUtxQyxnQkFBZ0IsQ0FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSXNDLGlCQUFpQixDQUFDdEMsSUFBSSxDQUMxSCxFQUNELENBQUMsS0FBS3lGLE9BQU8sR0FBRztFQUNqQixDQUFDO0VBQUMsT0FDYXBCLE1BQU07QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -141,7 +141,9 @@ function processProperties<T>(
141
141
  } else if (isBindingToolkitExpression(propertyValue)) {
142
142
  propertiesString.push(`${propertyName}='${escapeXMLAttributeValue(compileExpression(propertyValue))}'`);
143
143
  } else if (Array.isArray(propertyValue)) {
144
- if (propertyValue.length === 1) {
144
+ if (propertyValue.length === 0) {
145
+ // Do nothing for empty array
146
+ } else if (propertyValue.length === 1) {
145
147
  const outValue = typeof propertyValue[0] === "string" ? propertyValue[0] : JSON.stringify(propertyValue[0]);
146
148
  propertiesString.push(`${propertyName}='${outValue}'`);
147
149
  } else {
@@ -22,7 +22,7 @@ sap.ui.define(["sap/ui/core/Lib"], function (Library) {
22
22
  controls: [],
23
23
  elements: [],
24
24
  // eslint-disable-next-line no-template-curly-in-string
25
- version: "1.142.2",
25
+ version: "1.144.0",
26
26
  noLibraryCSS: true
27
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
28
  });