@sapui5/sap.fe.macros 1.130.5 → 1.130.6
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.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/MultiValueField.js +3 -3
- package/src/sap/fe/macros/MultiValueField.tsx +3 -2
- package/src/sap/fe/macros/RichTextEditor.js +11 -3
- package/src/sap/fe/macros/RichTextEditor.tsx +13 -2
- package/src/sap/fe/macros/coreUI/ParameterDialog.js +18 -8
- package/src/sap/fe/macros/coreUI/ParameterDialog.tsx +13 -3
- package/src/sap/fe/macros/field/FieldHelper.js +29 -4
- package/src/sap/fe/macros/field/FieldHelper.ts +41 -7
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +11 -9
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +30 -10
- package/src/sap/fe/macros/library.js +1 -1
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2024 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/helpers/BindingHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyFormatters", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/field/FieldHelper", "sap/fe/macros/field/FieldTemplating", "sap/fe/macros/internal/valuehelp/ValueHelpTemplating", "sap/ui/core/CustomData", "sap/ui/mdc/MultiValueField", "sap/ui/mdc/field/MultiValueFieldItem", "sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/controls/FormElementWrapper", "sap/fe/core/formatters/CollaborationFormatter", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/templating/PropertyHelper", "sap/fe/macros/multivaluefield/FormatOptions", "sap/m/Avatar", "sap/m/HBox", "sap/ui/base/Event", "sap/ui/core/Element", "./ValueHelp", "
|
|
5
|
+
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/helpers/BindingHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyFormatters", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/field/FieldHelper", "sap/fe/macros/field/FieldTemplating", "sap/fe/macros/internal/valuehelp/ValueHelpTemplating", "sap/ui/core/CustomData", "sap/ui/mdc/MultiValueField", "sap/ui/mdc/field/MultiValueFieldItem", "sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/controls/FormElementWrapper", "sap/fe/core/formatters/CollaborationFormatter", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/templating/PropertyHelper", "sap/fe/macros/field/FieldRuntime", "sap/fe/macros/multivaluefield/FormatOptions", "sap/fe/macros/multivaluefield/MultiValueFieldRuntime", "sap/m/Avatar", "sap/m/HBox", "sap/ui/base/Event", "sap/ui/core/Element", "./ValueHelp", "sap/fe/base/jsx-runtime/jsx"], function (BindingToolkit, ClassSupport, BindingHelper, ID, TypeGuards, DataModelPathHelper, PropertyFormatters, UIFormatters, FieldHelper, FieldTemplating, ValueHelpTemplating, CustomData, MultiValueField, MultiValueFieldItem, BuildingBlockBase, CollaborationCommon, FormElementWrapper, CollaborationFormatters, ModelHelper, PropertyHelper, FieldRuntime, FormatOptions, MultiValueFieldRuntime, Avatar, HBox, UI5Event, Element, ValueHelp, _jsx) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11;
|
|
@@ -474,7 +474,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
474
474
|
ariaLabelledBy: this.ariaLabelledBy ? this.ariaLabelledBy : [],
|
|
475
475
|
showEmptyIndicator: (_this$formatOptions2 = this.formatOptions) === null || _this$formatOptions2 === void 0 ? void 0 : _this$formatOptions2.showEmptyIndicator,
|
|
476
476
|
label: label,
|
|
477
|
-
change:
|
|
477
|
+
change: MultiValueFieldRuntime.handleChange.bind(MultiValueFieldRuntime, controller),
|
|
478
478
|
fieldGroupIds: this.fieldGroupIds,
|
|
479
479
|
validateFieldGroup: FieldRuntime.onValidateFieldGroup,
|
|
480
480
|
children: {
|
|
@@ -683,4 +683,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
683
683
|
_exports = MultiValueFieldBlock;
|
|
684
684
|
return _exports;
|
|
685
685
|
}, false);
|
|
686
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNdWx0aVZhbHVlRmllbGRCbG9jayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsImFzc29jaWF0aW9uIiwiX2RlYzUiLCJfZGVjNiIsInJlcXVpcmVkIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJGb3JtYXRPcHRpb25zIiwiX2RlYzExIiwiX2RlYzEyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrQmFzZSIsIl9pbmhlcml0c0xvb3NlIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJfb3ZlcnJpZGVWYWx1ZSIsImNvbGxlY3Rpb25CaW5kaW5nRGlzcGxheSIsImNvbGxlY3Rpb25CaW5kaW5nRWRpdCIsIml0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIiwidGV4dEV4cHJlc3Npb24iLCJrZXkiLCJpdGVtcyIsIl9jb21tb25UYXJnZXRPYmplY3RQciIsIm1vZGVsIiwibW9kZWxOYW1lIiwicGF0aCIsImNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwiY29tbW9uUHJvcGVydHlQYXRoIiwibmFtZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwiX2NvbW1vblRhcmdldE9iamVjdFByMiIsIl9jb21tb25UYXJnZXRPYmplY3RQcjMiLCJkZXNjcmlwdGlvbiIsIl9nZXRNdWx0aUlucHV0U2V0dGluZ3MiLCJwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgiLCJmb3JtYXRPcHRpb25zIiwiX3Byb3BlcnR5RGVmaW5pdGlvbiRhIiwiY29sbGVjdGlvblBhdGgiLCJfZ2V0UGF0aFN0cnVjdHVyZSIsInRlbXBsYXRlU2hhcmVhYmxlIiwidXNlUGFyZW50QmluZGluZ0NhY2hlIiwicGFyYW1ldGVycyIsIiQkb3duUmVxdWVzdCIsInByb3BlcnR5UGF0aE9yUHJvcGVydHkiLCJwcm9wZXJ0eURlZmluaXRpb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0IiwiY29tbW9uVGV4dCIsInJlbGF0aXZlTG9jYXRpb24iLCJnZXRSZWxhdGl2ZVBhdGhzIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiZ2V0VmFsdWVCaW5kaW5nIiwiZGlzcGxheU9ubHkiLCJsZW5ndGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwiX2RhdGFNb2RlbE9iamVjdFBhdGgkIiwiX2RhdGFNb2RlbE9iamVjdFBhdGgkMiIsImZpcnN0Q29sbGVjdGlvblBhdGgiLCJjdXJyZW50RW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYXZpZ2F0ZWRQYXRocyIsImNvbnRleHROYXZzRm9ySXRlbSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibmF2UHJvcCIsInVuZGVmaW5lZCIsInNvbWUiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInB1c2giLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiaGFzT3duUHJvcGVydHkiLCJpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5Iiwiam9pbiIsIk9iamVjdCIsImFzc2lnbiIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwiYXBwQ29tcG9uZW50Iiwic2lkZUVmZmVjdFNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJmaWVsZEdyb3VwSWRzIiwiZGF0YU1vZGVsUGF0aCIsInRhcmdldEVudGl0eVR5cGUiLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsImNvbGxhYm9yYXRpb25GaWVsZEdyb3VwIiwiQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXgiLCJkYXRhU291cmNlUGF0aCIsInJlc3VsdCIsImluaXRpYWxpemUiLCJtZXRhQ29udGV4dFBhdGgiLCJfb3duZXIkcHJlcHJvY2Vzc29yQ28iLCJfbWV0YVBhdGhPYmplY3QkYW5ub3QiLCJfdGhpcyRmb3JtYXRPcHRpb25zIiwib3duZXIiLCJfZ2V0T3duZXIiLCJjb250ZXh0UGF0aCIsInByZXByb2Nlc3NvckNvbnRleHQiLCJmdWxsQ29udGV4dFBhdGgiLCJvZGF0YU1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsIm1ldGFDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRQYXRoIiwibWV0YVBhdGhPYmplY3QiLCJnZXRUYXJnZXQiLCJpc1Byb3BlcnR5IiwiRGF0YUZpZWxkRGVmYXVsdCIsImVuaGFuY2VkTWV0YVBhdGgiLCJkYXRhRmllbGREYXRhTW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJjb252ZXJ0ZWREYXRhRmllbGQiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsIlZhbHVlIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImluc2VydGFibGUiLCJpc1BhdGhJbnNlcnRhYmxlIiwiZGVsZXRlTmF2aWdhdGlvblJlc3RyaWN0aW9uIiwiaXNQYXRoRGVsZXRhYmxlIiwiaWdub3JlVGFyZ2V0Q29sbGVjdGlvbiIsImF1dGhvcml6ZVVucmVzb2x2YWJsZSIsImRlbGV0ZVBhdGgiLCJkZWxldGFibGUiLCJpZkVsc2UiLCJfdHlwZSIsIm9yIiwibm90IiwiaXNDb25zdGFudCIsImNvbnN0YW50IiwicmVhZE9ubHkiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcyIsImVkaXRNb2RlIiwiYW5kIiwiZGlzcGxheU1vZGUiLCJnZXREaXNwbGF5TW9kZSIsImxvY2FsRGF0YU1vZGVsUGF0aCIsIml0ZW0iLCJjb2xsZWN0aW9uIiwiZ2V0QXBwQ29tcG9uZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJNb2RlbEhlbHBlciIsIlVJRm9ybWF0dGVycyIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMiLCJoYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHkiLCJjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJnZXRQb3NzaWJsZVZhbHVlSGVscCIsImlkIiwiaGFzVmFsdWVIZWxwIiwiX2pzeCIsIlZhbHVlSGVscCIsImlkUHJlZml4IiwidmhJZFByZWZpeCIsIm1ldGFQYXRoIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsInVzZU11bHRpVmFsdWVGaWVsZCIsImdldE1ldGFQYXRoT2JqZWN0IiwiX3RoaXMkX2dldE93bmVyIiwiX3RoaXMkX2dldE93bmVyMiIsIl90aGlzJGZvcm1hdE9wdGlvbnMyIiwiSUQiLCJnZW5lcmF0ZSIsImdldElkIiwiY3JlYXRlSWQiLCJjb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJ2aWV3IiwiZ2V0VmlldyIsImNvbnRleHQiLCJnZXRDb250ZXh0UGF0aCIsInZhbHVlSGVscFByb3BlcnR5IiwiRmllbGRIZWxwZXIiLCJ2YWx1ZUhlbHBQcm9wZXJ0eUNvbnRleHQiLCJpdGVtc0FnZ3JlZ2F0aW9uIiwibGFiZWwiLCJjb21wdXRlTGFiZWxUZXh0IiwidmhDb250cm9sIiwidmFsdWVIZWxwIiwiZ2V0Q29udGVudCIsIlZhbHVlSGVscFRlbXBsYXRpbmciLCJnZW5lcmF0ZUlEIiwiUHJvcGVydHlGb3JtYXR0ZXJzIiwiZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJtdWx0aVZhbHVlRmllbGQiLCJNdWx0aVZhbHVlRmllbGQiLCJkZWxlZ2F0ZSIsImRpc3BsYXkiLCJ3aWR0aCIsImFyaWFMYWJlbGxlZEJ5Iiwic2hvd0VtcHR5SW5kaWNhdG9yIiwiY2hhbmdlIiwiRmllbGRSdW50aW1lIiwiaGFuZGxlQ2hhbmdlIiwiYmluZCIsInZhbGlkYXRlRmllbGRHcm91cCIsIm9uVmFsaWRhdGVGaWVsZEdyb3VwIiwiY2hpbGRyZW4iLCJNdWx0aVZhbHVlRmllbGRJdGVtIiwiZGVwZW5kZW50cyIsImZvcm13cmFwcGVyIiwiYXZhdGFyIiwiQXZhdGFyIiwiaW5pdGlhbHMiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsInNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIiLCJGb3JtRWxlbWVudFdyYXBwZXIiLCJIQm94IiwiYWxpZ25JdGVtcyIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmZvY3VzaW4iLCJldnQiLCJfY29udHJvbGxlciRjb2xsYWJvcmEiLCJjdXJyZW50TXVsdGlWYWx1ZUZpZWxkIiwic3JjQ29udHJvbCIsImdldFBhcmVudCIsImNvbGxhYm9yYXRpdmVEcmFmdCIsImhhbmRsZUNvbnRlbnRGb2N1c0luIiwiZ2V0U291cmNlIiwidmFsdWVIZWxwQ29udHJvbCIsImdldERvbVJlZiIsImF0dGFjaEV2ZW50T25jZSIsImZvY3VzIiwib25mb2N1c291dCIsIl9jdXJyZW50TXVsdGlWYWx1ZUZpZSIsImlzQSIsIl9jdXJyZW50TXVsdGlWYWx1ZUZpZTIiLCJldmVudCIsIlVJNUV2ZW50IiwiZ2V0RmllbGRHcm91cElkcyIsImhhbmRsZUNvbnRlbnRGb2N1c091dCIsIkVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImdldFZhbHVlSGVscCIsImF0dGFjaE9wZW5lZCIsImdldENvbnRyb2wiLCJhZGRDdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsInZhbHVlIiwic2V0UmVhZE9ubHkiLCJzZXRQcm9wZXJ0eSIsInVwZGF0ZUVkaXRNb2RlIiwic2V0X2lzSW5FZGl0TW9kZSIsImluRWRpdE1vZGUiLCJnZXRNdWx0aVZhbHVlRmllbGQiLCJnZXRJdGVtcyIsIm11bHRpdmFsdWVGaWVsZCIsInNldEVkaXRNb2RlIiwib25CZWZvcmVSZW5kZXJpbmciLCJhQXJpYUxhYmVsbGVkQnkiLCJnZXRBcmlhTGFiZWxsZWRCeSIsInNJZCIsImFBcmlhTGFiZWxsZWRCeXMiLCJpbmNsdWRlcyIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiQnVpbGRpbmdCbG9ja0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk11bHRpVmFsdWVGaWVsZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCB0eXBlIHsgRGF0YUZpZWxkLCBEYXRhRmllbGRUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpZkVsc2UsIGlzQ29uc3RhbnQsIG5vdCwgb3IgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFnZ3JlZ2F0aW9uLFxuXHRhc3NvY2lhdGlvbixcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGltcGxlbWVudEludGVyZmFjZSxcblx0cHJvcGVydHksXG5cdHR5cGUgRW5oYW5jZVdpdGhVSTUsXG5cdHR5cGUgUHJvcGVydGllc09mXG59IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCAqIGFzIElEIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQge1xuXHRpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5LFxuXHRpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eSxcblx0aXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRSZWxhdGl2ZVBhdGhzLFxuXHRnZXRUYXJnZXRPYmplY3RQYXRoLFxuXHRpc1BhdGhEZWxldGFibGUsXG5cdGlzUGF0aEluc2VydGFibGVcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0ICogYXMgUHJvcGVydHlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXNwbGF5TW9kZSwgTWV0YU1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGdldERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdldFZhbHVlQmluZGluZywgZ2V0VmlzaWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCAqIGFzIFZhbHVlSGVscFRlbXBsYXRpbmcgZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlSGVscFRlbXBsYXRpbmdcIjtcbmltcG9ydCB0eXBlIFRva2VuaXplciBmcm9tIFwic2FwL20vVG9rZW5pemVyXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGQgZnJvbSBcInNhcC91aS9tZGMvTXVsdGlWYWx1ZUZpZWxkXCI7XG5pbXBvcnQgdHlwZSBGaWVsZEVkaXRNb2RlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL0ZpZWxkRWRpdE1vZGVcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGRJdGVtIGZyb20gXCJzYXAvdWkvbWRjL2ZpZWxkL011bHRpVmFsdWVGaWVsZEl0ZW1cIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrQmFzZVwiO1xuaW1wb3J0IHsgQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgRm9ybUVsZW1lbnRXcmFwcGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9Gb3JtRWxlbWVudFdyYXBwZXJcIjtcbmltcG9ydCAqIGFzIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NvbGxhYm9yYXRpb25Gb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIE1ldGFQYXRoIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFQYXRoXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGhhc1ZhbHVlSGVscCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRm9ybWF0T3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tdWx0aXZhbHVlZmllbGQvRm9ybWF0T3B0aW9uc1wiO1xuaW1wb3J0IEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgTWRjVmFsdWVIZWxwLCBWYWx1ZUhlbHAkT3BlbmVkRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCB0eXBlIHsgTWV0YU1vZGVsVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbmltcG9ydCBWYWx1ZUhlbHAgZnJvbSBcIi4vVmFsdWVIZWxwXCI7XG5pbXBvcnQgRmllbGRSdW50aW1lIGZyb20gXCIuL2ZpZWxkL0ZpZWxkUnVudGltZVwiO1xuXG50eXBlIE11bHRpSW5wdXRTZXR0aW5ncyA9IHtcblx0ZGVzY3JpcHRpb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGNvbGxlY3Rpb25CaW5kaW5nRGlzcGxheTogUHJvcGVydHlCaW5kaW5nSW5mbztcblx0Y29sbGVjdGlvbkJpbmRpbmdFZGl0OiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXHRrZXk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGRpc3BsYXlPbmx5PzogYm9vbGVhbjtcbn07XG5cbnR5cGUgTXVsdGlWYWx1ZUZpZWxkUGF0aFN0cnVjdHVyZSA9IHtcblx0Y29sbGVjdGlvblBhdGg6IHN0cmluZztcblx0aXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+O1xufTtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBNdWx0aVZhbHVlRmllbGQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVGhlIE11bHRpVmFsdWVGaWVsZCBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IGVpdGhlciBhIERhdGFGaWVsZCBvciBQcm9wZXJ0eSBkaXJlY3RseS4gSXQgaGFzIHRvIHBvaW50IHRvIGEgY29sbGVjdGlvbiBwcm9wZXJ0eS5cbiAqIDxicj5cbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvOk11bHRpVmFsdWVGaWVsZFxuICogaWQ9XCJTb21lVW5pcXVlSWRlbnRpZmllclwiXG4gKiBjb250ZXh0UGF0aD1cIntlbnRpdHlTZXQmZ3Q7fVwiXG4gKiBtZXRhUGF0aD1cIntkYXRhRmllbGQmZ3Q7fVwiXG4gKiAvJmd0O1xuICogPC9wcmU+XG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5NdWx0aVZhbHVlRmllbGRcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjExOC4wXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5NdWx0aVZhbHVlRmllbGRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE11bHRpVmFsdWVGaWVsZEJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja0Jhc2U8Q29udHJvbD4ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogVGhlICdpZCcgcHJvcGVydHlcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgaWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSBmaWVsZCAtIG9ubHkgaWYgbm8gaWQgaXMgcHJvdmlkZWRcblx0ICovXG5cdEBhc3NvY2lhdGlvbih7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRpZFByZWZpeD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJlZml4IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAgdXNlZCBmb3IgdGhlIGZpZWxkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dmhJZFByZWZpeCE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgTWV0YWRhdGEgcGF0aCB0byB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBUaGUgbWV0YVBhdGggc2hvdWxkIHBvaW50IHRvIGEgUHJvcGVydHkgb3IgRGF0YUZpZWxkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0cHVibGljIG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgcmVhZE9ubHkgZmxhZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgcmVxdWlyZWQ6IGZhbHNlIH0pXG5cdHB1YmxpYyByZWFkT25seT86IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogVGhlIGNvbnRleHQgcGF0aCBwcm92aWRlZCBmb3IgdGhlIE11bHRpVmFsdWVGaWVsZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSBhZGRlZCB0byBiZSBhYmxlIHRvIGFkZCBkYXRhIC8gaXRlbXMgdG8gdGhlIG11bHRpIHZhbHVlIGZpZWxkIHZpYSBhIGRpZmZlcmVudCBtb2RlbFxuXHQgKiBAZXhwZXJpbWVudGFsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhbnlcIixcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBpdGVtcz86IFByb3BlcnR5QmluZGluZ0luZm87XG5cblx0LyoqXG5cdCAqIFRoZSBvYmplY3Qgd2l0aCB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG5cdCAqXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MubXVsdGl2YWx1ZWZpZWxkLkZvcm1hdE9wdGlvbnNcIiwgbXVsdGlwbGU6IGZhbHNlLCBkZWZhdWx0Q2xhc3M6IEZvcm1hdE9wdGlvbnMgfSlcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnM7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0X2lzSW5FZGl0TW9kZTogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uID0gZmFsc2U7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dXNlUGFyZW50QmluZGluZ0NhY2hlID0gZmFsc2U7XG5cblx0Ly8gQ29tcHV0ZWQgcHJvcGVydGllc1xuXG5cdHByaXZhdGUgaXRlbSE6IE11bHRpSW5wdXRTZXR0aW5ncztcblxuXHQvKipcblx0ICogUG9pbnRlZCBhdCBkYXRhRmllbGQsIGNhbiBiZSBEYXRhRmllbGREZWZhdWx0IGZyb20gYSBwcm9wZXJ0eS5cblx0ICovXG5cdHByaXZhdGUgY29udmVydGVkRGF0YUZpZWxkITogRGF0YUZpZWxkO1xuXG5cdC8qKlxuXHQgKiBEYXRhTW9kZWxQYXRoIGZvciB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBkaXNwbGF5ZWQuXG5cdCAqL1xuXHRwcml2YXRlIGRhdGFNb2RlbFBhdGghOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PjtcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gYmUgZGlzcGxheWVkXG5cdCAqL1xuXHRwcml2YXRlIHByb3BlcnR5ITogUHJvcGVydHk7XG5cblx0LyoqXG5cdCAqIEVkaXQgTW9kZSBvZiB0aGUgZmllbGQuXG5cdCAqIElmIHRoZSBlZGl0TW9kZSBpcyB1bmRlZmluZWQgdGhlbiB3ZSBjb21wdXRlIGl0IGJhc2VkIG9uIHRoZSBtZXRhZGF0YVxuXHQgKiBPdGhlcndpc2Ugd2UgdXNlIHRoZSB2YWx1ZSBwcm92aWRlZCBoZXJlLlxuXHQgKi9cblx0cHJpdmF0ZSBlZGl0TW9kZSE6IEZpZWxkRWRpdE1vZGUgfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogVGhlIGRpc3BsYXkgbW9kZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvbiBmaWVsZFxuXHQgKi9cblx0cHJpdmF0ZSBkaXNwbGF5TW9kZSE6IERpc3BsYXlNb2RlO1xuXG5cdC8qKlxuXHQgKiBUaGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gdGhhdCBpcyBjYWxjdWxhdGVkIGludGVybmFsbHlcblx0ICovXG5cdHByaXZhdGUgY29sbGVjdGlvbiE6IFByb3BlcnR5QmluZGluZ0luZm87XG5cblx0cHJpdmF0ZSB2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGZpZWxkR3JvdXBJZHM/OiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBlbmhhbmNlZE1ldGFQYXRoITogQ29udGV4dDtcblxuXHRwcml2YXRlIGVuYWJsZUV4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgY29sbGFib3JhdGlvbkV4cHJlc3Npb24hOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uITogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uITogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uRW5hYmxlZCE6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBkYXRhU291cmNlUGF0aCE6IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogc3RyaW5nIHwgKCRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8TXVsdGlWYWx1ZUZpZWxkQmxvY2s+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGlmICh0eXBlb2YgcHJvcHMgIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdC8vIHR5cGUgb2YgcHJvcHMgY2FuIGJlIGEgc3RyaW5nIGlmIHdlIGFyZSBjbG9uaW5nIHRoZSBNdWx0aVZhbHVlRmllbGQgaW5zaWRlIGFuIGFnZ3JlZ2F0aW9uXG5cdFx0XHQvLyBpbiB0aGF0IGNhc2UgX2lzSW5FZGl0TW9kZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXB1dGVkIG9uIHRoZSBvbmUgd2UgY2xvbmVcblx0XHRcdHByb3BzLl9pc0luRWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihVSS5Jc0VkaXRhYmxlKTtcblx0XHR9XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogSW4gY2FzZSBhbiBleHRlcm5hbCB2YWx1ZSBpcyBzZXQgKGUuZy4gZm9yIHByb3ZpZGluZyBkYXRhIGluIGEganNvbiBtb2RlbCkgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYmluZGluZyBzdHJpbmdzIGZvciB0aGUgaXRlbS5cblx0ICogQHBhcmFtIGNvbGxlY3Rpb25CaW5kaW5nRGlzcGxheVxuXHQgKiBAcGFyYW0gY29sbGVjdGlvbkJpbmRpbmdFZGl0XG5cdCAqIEBwYXJhbSBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQgKiBAcGFyYW0gdGV4dEV4cHJlc3Npb25cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBNdWx0aUlucHV0U2V0dGluZ3Ncblx0ICovXG5cdHByaXZhdGUgX292ZXJyaWRlVmFsdWUoXG5cdFx0Y29sbGVjdGlvbkJpbmRpbmdEaXNwbGF5OiBQcm9wZXJ0eUJpbmRpbmdJbmZvLFxuXHRcdGNvbGxlY3Rpb25CaW5kaW5nRWRpdDogUHJvcGVydHlCaW5kaW5nSW5mbyAmIHsgcGFyYW1ldGVycz86IG9iamVjdCB9LFxuXHRcdGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5UGF0aCB8IFByb3BlcnR5Pixcblx0XHR0ZXh0RXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sXG5cdFx0a2V5OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvblxuXHQpOiBNdWx0aUlucHV0U2V0dGluZ3Mge1xuXHRcdGlmICh0aGlzLml0ZW1zKSB7XG5cdFx0XHRjb25zdCBtb2RlbCA9IHRoaXMuaXRlbXMubW9kZWwgPz8gdGhpcy5pdGVtcy5tb2RlbE5hbWU7XG5cdFx0XHRjb2xsZWN0aW9uQmluZGluZ0Rpc3BsYXkgPSB7IHBhdGg6IGAke21vZGVsfT4ke3RoaXMuaXRlbXMucGF0aH1gIH07XG5cdFx0XHRjb2xsZWN0aW9uQmluZGluZ0VkaXQgPSB7IHBhdGg6IGAke21vZGVsfT4ke3RoaXMuaXRlbXMucGF0aH1gIH07XG5cdFx0XHRjb25zdCBjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eSA9IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0XHRcdGNvbnN0IGNvbW1vblByb3BlcnR5UGF0aCA9IGB7JHttb2RlbH0+JHtjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5uYW1lfX1gO1xuXG5cdFx0XHQvLyBUZXh0IGFycmFuZ2VtZW50IHVzZSBjYXNlXG5cdFx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPihjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQpKSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gYHske21vZGVsfT4ke2NvbW1vblRhcmdldE9iamVjdFByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dD8ucGF0aH19YDtcblx0XHRcdFx0Ly8gbm9uIHRleHQgYXJyYW5nZW1lbnQgdXNlIGNhc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdFx0fVxuXHRcdFx0a2V5ID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGVzY3JpcHRpb246IHRleHRFeHByZXNzaW9uLFxuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmdEaXNwbGF5OiBjb2xsZWN0aW9uQmluZGluZ0Rpc3BsYXksXG5cdFx0XHRjb2xsZWN0aW9uQmluZGluZ0VkaXQ6IGNvbGxlY3Rpb25CaW5kaW5nRWRpdCxcblx0XHRcdGtleToga2V5XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3Qgc2V0dGluZ3MgZm9yIHRoZSBtdWx0aSBpbnB1dC5cblx0ICogQHBhcmFtIHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgY29ycmVzcG9uZGluZyBEYXRhTW9kZWxPYmplY3RQYXRoLlxuXHQgKiBAcGFyYW0gZm9ybWF0T3B0aW9ucyBUaGUgZm9ybWF0IG9wdGlvbnMgdG8gY2FsY3VsYXRlIHRoZSByZXN1bHRcblx0ICogQHJldHVybnMgTXVsdGlJbnB1dFNldHRpbmdzXG5cdCAqL1xuXHRwcml2YXRlIF9nZXRNdWx0aUlucHV0U2V0dGluZ3MoXG5cdFx0cHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pixcblx0XHRmb3JtYXRPcHRpb25zOiBGb3JtYXRPcHRpb25zIHwgdW5kZWZpbmVkXG5cdCk6IE11bHRpSW5wdXRTZXR0aW5ncyB7XG5cdFx0Y29uc3QgeyBjb2xsZWN0aW9uUGF0aCwgaXRlbURhdGFNb2RlbE9iamVjdFBhdGggfSA9IE11bHRpVmFsdWVGaWVsZEJsb2NrLl9nZXRQYXRoU3RydWN0dXJlKHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdFx0Y29uc3QgY29sbGVjdGlvbkJpbmRpbmdEaXNwbGF5ID0geyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH07XG5cdFx0Y29uc3QgY29sbGVjdGlvbkJpbmRpbmdFZGl0ID0gdGhpcy51c2VQYXJlbnRCaW5kaW5nQ2FjaGVcblx0XHRcdD8geyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH1cblx0XHRcdDogeyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgcGFyYW1ldGVyczogeyAkJG93blJlcXVlc3Q6IHRydWUgfSwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH07XG5cblx0XHRjb25zdCBwcm9wZXJ0eVBhdGhPclByb3BlcnR5ID0gcHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eTtcblx0XHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb24gPSBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoT3JQcm9wZXJ0eSlcblx0XHRcdD8gcHJvcGVydHlQYXRoT3JQcm9wZXJ0eS4kdGFyZ2V0XG5cdFx0XHQ6IHByb3BlcnR5UGF0aE9yUHJvcGVydHk7XG5cdFx0Y29uc3QgY29tbW9uVGV4dCA9IHByb3BlcnR5RGVmaW5pdGlvbj8uYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0O1xuXHRcdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cblx0XHRjb25zdCB0ZXh0RXhwcmVzc2lvbiA9IGNvbW1vblRleHRcblx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pKVxuXHRcdFx0OiBnZXRWYWx1ZUJpbmRpbmcoaXRlbURhdGFNb2RlbE9iamVjdFBhdGgsIGZvcm1hdE9wdGlvbnMgPz8ge30sIHRydWUpO1xuXG5cdFx0Y29uc3Qga2V5ID0gZ2V0VmFsdWVCaW5kaW5nKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLCBmb3JtYXRPcHRpb25zID8/IHt9LCB0cnVlKTtcblx0XHRsZXQgZGlzcGxheU9ubHkgPSBmYWxzZTtcblx0XHRpZiAoZ2V0UmVsYXRpdmVQYXRocyhpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCkubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gaWYgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHZhbHVlIGNvbnRhaW5zIGEgbmF2aWdhdGlvbiwgY3JlYXRlIHdpbGwgbm90IGJlIHBvc3NpYmxlIGluIHRoZSBkZWxlZ2F0ZSwgc28gd2UgZm9yY2UgdGhlIGRpc3BsYXkgTW9kZVxuXHRcdFx0ZGlzcGxheU9ubHkgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGlzcGxheU9ubHksXG5cdFx0XHQuLi50aGlzLl9vdmVycmlkZVZhbHVlKGNvbGxlY3Rpb25CaW5kaW5nRGlzcGxheSwgY29sbGVjdGlvbkJpbmRpbmdFZGl0LCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCwgdGV4dEV4cHJlc3Npb24sIGtleSlcblx0XHR9O1xuXHR9XG5cblx0Ly8gUHJvY2VzcyB0aGUgZGF0YU1vZGVsUGF0aCB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgcmVsYXRpdmUgRGF0YU1vZGVsUGF0aCBmb3IgdGhlIGl0ZW0uXG5cdHByaXZhdGUgc3RhdGljIF9nZXRQYXRoU3RydWN0dXJlKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogTXVsdGlWYWx1ZUZpZWxkUGF0aFN0cnVjdHVyZSB7XG5cdFx0bGV0IGZpcnN0Q29sbGVjdGlvblBhdGggPSBcIlwiO1xuXHRcdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8udGFyZ2V0RW50aXR5U2V0XG5cdFx0XHQ/IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLnRhcmdldEVudGl0eVNldFxuXHRcdFx0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRcdGNvbnN0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IGNvbnRleHROYXZzRm9ySXRlbSA9IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcyB8fCBbXTtcblx0XHRmb3IgKGNvbnN0IG5hdlByb3Agb2YgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCFkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcy5zb21lKFxuXHRcdFx0XHRcdChjb250ZXh0TmF2UHJvcCkgPT4gY29udGV4dE5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lID09PSBuYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gaW4gY2FzZSBvZiByZWxhdGl2ZSBlbnRpdHlTZXRQYXRoIHdlIGRvbid0IGNvbnNpZGVyIG5hdmlnYXRpb25QYXRoIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGNvbnRleHRcblx0XHRcdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdFx0XHRjb250ZXh0TmF2c0Zvckl0ZW0ucHVzaChuYXZQcm9wKTtcblx0XHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZQcm9wLm5hbWUpKSB7XG5cdFx0XHRcdFx0aWYgKGlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCkpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRmaXJzdENvbGxlY3Rpb25QYXRoID0gYCR7bmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIil9YDtcblx0XHRjb25zdCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gPSBPYmplY3QuYXNzaWduKHt9LCBkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRpZiAoaXRlbURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uKSB7XG5cdFx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb250ZXh0TmF2c0Zvckl0ZW07IC8vIHRoaXMgY2hhbmdlcyB0aGUgY3JlYXRpb24gb2YgdGhlIHZhbHVlSGVscCBJRCAuLi5cblx0XHR9XG5cblx0XHRyZXR1cm4geyBjb2xsZWN0aW9uUGF0aDogZmlyc3RDb2xsZWN0aW9uUGF0aCwgaXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH07XG5cdH1cblxuXHQvKipcblx0ICogQ2FsY3VsYXRlIHRoZSBmaWVsZEdyb3VwSWRzIGZvciB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmb3IgdGhlIGZpZWxkR3JvdXBJZHNcblx0ICovXG5cdHByaXZhdGUgY29tcHV0ZUZpZWxkR3JvdXBJZHMoYXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIWFwcENvbXBvbmVudCkge1xuXHRcdFx0Ly9mb3IgVmFsdWVIZWxwIC8gTWFzcyBlZGl0IFRlbXBsYXRpbmcgdGhlIGFwcENvbXBvbmVudCBpcyBub3QgcGFzc2VkIHRvIHRoZSB0ZW1wbGF0aW5nXG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0Y29uc3QgZmllbGRHcm91cElkcyA9IHNpZGVFZmZlY3RTZXJ2aWNlLmNvbXB1dGVGaWVsZEdyb3VwSWRzKFxuXHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0KHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdCk7XG5cdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25GaWVsZEdyb3VwID0gYCR7Q29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXh9JHt0aGlzLmRhdGFTb3VyY2VQYXRofWA7XG5cdFx0XHRmaWVsZEdyb3VwSWRzLnB1c2goY29sbGFib3JhdGlvbkZpZWxkR3JvdXApO1xuXHRcdH1cblx0XHR0aGlzLmZpZWxkR3JvdXBJZHMgPSBmaWVsZEdyb3VwSWRzLmxlbmd0aCA/IGZpZWxkR3JvdXBJZHMuam9pbihcIixcIikgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZmllbGRHcm91cElkcy5qb2luKFwiLFwiKTtcblx0XHRyZXR1cm4gcmVzdWx0ID09PSBcIlwiID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuXHR9XG5cblx0aW5pdGlhbGl6ZShtZXRhQ29udGV4dFBhdGg6IE1ldGFQYXRoPHVua25vd24+KTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXG5cdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblxuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBtZXRhUGF0aE9iamVjdCA9IG1ldGFDb250ZXh0UGF0aD8uZ2V0VGFyZ2V0KCk7XG5cblx0XHQvLyBJZiB0aGUgdGFyZ2V0IGlzIGEgcHJvcGVydHkgd2l0aCBhIERhdGFGaWVsZERlZmF1bHQsIHVzZSB0aGlzIGFzIGRhdGEgZmllbGRcblx0XHRpZiAoaXNQcm9wZXJ0eShtZXRhUGF0aE9iamVjdCkgJiYgbWV0YVBhdGhPYmplY3QuYW5ub3RhdGlvbnMuVUk/LkRhdGFGaWVsZERlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5lbmhhbmNlZE1ldGFQYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGBAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWAsIG1ldGFDb250ZXh0KSBhcyBDb250ZXh0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVuaGFuY2VkTWV0YVBhdGggPSBtZXRhQ29udGV4dCBhcyBDb250ZXh0O1xuXHRcdH1cblx0XHRjb25zdCBkYXRhRmllbGREYXRhTW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLmVuaGFuY2VkTWV0YVBhdGguZ2V0UGF0aCgpLCB0aGlzLmNvbnRleHRQYXRoKSE7XG5cblx0XHR0aGlzLmNvbnZlcnRlZERhdGFGaWVsZCA9IGRhdGFGaWVsZERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIERhdGFGaWVsZDtcblxuXHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbFBhdGgsXG5cdFx0XHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pLnBhdGhcblx0XHQpO1xuXHRcdHRoaXMuZGF0YVNvdXJjZVBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0dGhpcy5wcm9wZXJ0eSA9IHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cblx0XHRsZXQgaW5zZXJ0YWJsZSA9IGlzUGF0aEluc2VydGFibGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRjb25zdCBkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24gPSBpc1BhdGhEZWxldGFibGUodGhpcy5kYXRhTW9kZWxQYXRoLCB7XG5cdFx0XHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uOiB0cnVlLFxuXHRcdFx0YXV0aG9yaXplVW5yZXNvbHZhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdFx0Y29uc3QgZGVsZXRlUGF0aCA9IGlzUGF0aERlbGV0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Ly8gZGVsZXRhYmxlOlxuXHRcdC8vXHRcdGlmIHJlc3RyaWN0aW9ucyBjb21lIGZyb20gTmF2aWdhdGlvbiB3ZSBhcHBseSBpdFxuXHRcdC8vXHRcdG90aGVyd2lzZSB3ZSBhcHBseSByZXN0cmljdGlvbnMgZGVmaW5lZCBvbiB0YXJnZXQgY29sbGVjdGlvbiBvbmx5IGlmIGl0J3MgYSBjb25zdGFudFxuXHRcdC8vICAgICAgb3RoZXJ3aXNlIGl0J3MgdHJ1ZSFcblx0XHRsZXQgZGVsZXRhYmxlID0gaWZFbHNlKFxuXHRcdFx0ZGVsZXRlTmF2aWdhdGlvblJlc3RyaWN0aW9uLl90eXBlID09PSBcIlVucmVzb2x2YWJsZVwiLFxuXHRcdFx0b3Iobm90KGlzQ29uc3RhbnQoZGVsZXRlUGF0aCkpLCBkZWxldGVQYXRoKSxcblx0XHRcdGRlbGV0ZVBhdGhcblx0XHQpO1xuXG5cdFx0aWYgKHRoaXMuaXRlbXMpIHtcblx0XHRcdGluc2VydGFibGUgPSBkZWxldGFibGUgPSBjb25zdGFudCghdGhpcy5yZWFkT25seSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmlzaWJsZSA9IGdldFZpc2libGVFeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zKTtcblx0XHR9XG5cblx0XHR0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdHRoaXMuY29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzKCk7XG5cdFx0aWYgKHRoaXMuZm9ybWF0T3B0aW9ucz8uZGlzcGxheU9ubHkgPT09IHRydWUgfHwgdGhpcy5yZWFkT25seSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRGlzcGxheVwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlLCBVSS5Jc0VkaXRhYmxlKSxcblx0XHRcdFx0XHRpZkVsc2UodGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiwgY29uc3RhbnQoXCJSZWFkT25seVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJEaXNwbGF5XCIpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kaXNwbGF5TW9kZSA9IGdldERpc3BsYXlNb2RlKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cblx0XHRjb25zdCBsb2NhbERhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4oXG5cdFx0XHR0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoKHRoaXMuZW5oYW5jZWRNZXRhUGF0aC5nZXRQYXRoKCksIHRoaXMuY29udGV4dFBhdGgpISxcblx0XHRcdCh0aGlzLmNvbnZlcnRlZERhdGFGaWVsZC5WYWx1ZSBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPikucGF0aFxuXHRcdCk7XG5cblx0XHR0aGlzLml0ZW0gPSB0aGlzLl9nZXRNdWx0aUlucHV0U2V0dGluZ3MobG9jYWxEYXRhTW9kZWxQYXRoLCB0aGlzLmZvcm1hdE9wdGlvbnMpOyAvLyB0aGlzIGZ1bmN0aW9uIHJld3JpdGVzIGRhdGFNb2RlbFBhdGgsIHRoZXJlZm9yZSwgZm9yIG5vdyBhIGNsZWFuIG9iamVjdCBpcyBwYXNzZWRcblx0XHRpZiAodGhpcy5pdGVtLmRpc3BsYXlPbmx5KSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0fVxuXHRcdHRoaXMuY29sbGVjdGlvbiA9IHRoaXMuZWRpdE1vZGUgPT09IFwiRGlzcGxheVwiID8gdGhpcy5pdGVtLmNvbGxlY3Rpb25CaW5kaW5nRGlzcGxheSA6IHRoaXMuaXRlbS5jb2xsZWN0aW9uQmluZGluZ0VkaXQ7XG5cblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdHRoaXMuZmllbGRHcm91cElkcyA9IHRoaXMuY29tcHV0ZUZpZWxkR3JvdXBJZHMoYXBwQ29tcG9uZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGlzIHN1cHBvcnRlZC5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpcyBzdXBwb3J0ZWQuXG5cdCAqL1xuXHRpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0cmV0dXJuIE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG9kYXRhTWV0YU1vZGVsISk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBoZWxwZXIgY29tcHV0ZXMgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUgY29sbGFib3JhdGlvbiBhdmF0YXIuXG5cdCAqL1xuXHRjb21wdXRlQ29sbGFib3JhdGlvblByb3BlcnRpZXMoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKSAmJiB0aGlzLmVkaXRNb2RlICE9PSBcIkRpc3BsYXlcIikge1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCA9IHRydWU7XG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKFxuXHRcdFx0XHR0aGlzLmRhdGFNb2RlbFBhdGgsXG5cdFx0XHRcdENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmhhc0NvbGxhYm9yYXRpb25BY3Rpdml0eVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMpXG5cdFx0XHQpO1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IpXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgY29ycmVzcG9uZGluZyBWYWx1ZUhlbHAgZmllbGQgaW4gY2FzZSBpdMK0c1xuXHQgKiBkZWZpbmVkIGZvciB0aGUgc3BlY2lmaWMgY29udHJvbC5cblx0ICogQHJldHVybnMgVGhlIHBvc3NpYmxlIFZhbHVlSGVscCBjb250cm9sLlxuXHQgKi9cblx0Z2V0UG9zc2libGVWYWx1ZUhlbHAoKTogVmFsdWVIZWxwIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB0YXJnZXRPYmplY3QgPSB0aGlzLmRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRcdGlmICh0aGlzLmlkICYmIGlzUHJvcGVydHkodGFyZ2V0T2JqZWN0KSAmJiBoYXNWYWx1ZUhlbHAodGFyZ2V0T2JqZWN0KSkge1xuXHRcdFx0Ly8gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyBvbmUgaGFzIGEgdmFsdWUgaGVscCBhbm5vdGF0aW9uIGluY2x1ZGVkLCBhZGQgdGhlIGRlcGVuZGVudFxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFZhbHVlSGVscFxuXHRcdFx0XHRcdGlkUHJlZml4PXt0aGlzLnZoSWRQcmVmaXh9XG5cdFx0XHRcdFx0bWV0YVBhdGg9e2dldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgodGhpcy5kYXRhTW9kZWxQYXRoKX1cblx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5jb250ZXh0UGF0aH1cblx0XHRcdFx0XHR1c2VNdWx0aVZhbHVlRmllbGQ9e3RydWV9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBUaGUgY29udGVudCBvZiB0aGUgYnVpbGRpbmcgYmxvY2suXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IENvbnRyb2wgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFDb250ZXh0UGF0aCA9IHRoaXMuZ2V0TWV0YVBhdGhPYmplY3QodGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0aWYgKG1ldGFDb250ZXh0UGF0aCkge1xuXHRcdFx0dGhpcy5pbml0aWFsaXplKG1ldGFDb250ZXh0UGF0aCk7XG5cblx0XHRcdC8vIEJ1aWxkaW5nQmxvY2sgd2l0aCBzZXQgSUQgc2NlbmFyaW9cblx0XHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHRcdHRoaXMudmhJZFByZWZpeCA9IElELmdlbmVyYXRlKFt0aGlzLmdldElkKCksIHRoaXMudmhJZFByZWZpeCA/PyBcIkZpZWxkVmFsdWVIZWxwXCJdKTsgLy8gVXNlIGdldElkIHRvIHJldHJpZXZlIElELCBub3QgdGhpcy5pZFxuXHRcdFx0fSBlbHNlIGlmICghdGhpcy52aElkUHJlZml4KSB7XG5cdFx0XHRcdC8vIE1heWJlIG5vdCBlbnRlcmVkXG5cdFx0XHRcdHRoaXMudmhJZFByZWZpeCA9IHRoaXMuY3JlYXRlSWQoXCJGaWVsZFZhbHVlSGVscFwiKSE7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHRcdGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmdldFZpZXcoKTtcblx0XHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0UGF0aCgpKTtcblx0XHRcdGNvbnN0IGNvbnRleHQgPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YUNvbnRleHRQYXRoLmdldENvbnRleHRQYXRoKCkpO1xuXHRcdFx0aWYgKCFtZXRhQ29udGV4dCB8fCAhY29udGV4dCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vY3JlYXRlIGEgbmV3IGJpbmRpbmcgY29udGV4dCBmb3IgdGhlIHZhbHVlIGhlbHBcblx0XHRcdGNvbnN0IHZhbHVlSGVscFByb3BlcnR5ID0gRmllbGRIZWxwZXIudmFsdWVIZWxwUHJvcGVydHkobWV0YUNvbnRleHQpO1xuXHRcdFx0Y29uc3QgdmFsdWVIZWxwUHJvcGVydHlDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KHZhbHVlSGVscFByb3BlcnR5LCBtZXRhQ29udGV4dCk7XG5cblx0XHRcdGNvbnN0IGl0ZW1zQWdncmVnYXRpb24gPSB0aGlzLmNvbGxlY3Rpb247XG5cblx0XHRcdC8vY29tcHV0ZSB0aGUgY29ycmVjdCBsYWJlbFxuXHRcdFx0Y29uc3QgbGFiZWwgPSBGaWVsZEhlbHBlci5jb21wdXRlTGFiZWxUZXh0KHRoaXMuY29udmVydGVkRGF0YUZpZWxkLlZhbHVlIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkVHlwZXM+LCB7XG5cdFx0XHRcdGNvbnRleHQ6IG1ldGFDb250ZXh0XG5cdFx0XHR9KSBhcyBzdHJpbmc7XG5cblx0XHRcdGNvbnN0IHZoQ29udHJvbCA9IHRoaXMuZ2V0UG9zc2libGVWYWx1ZUhlbHAoKTtcblx0XHRcdGxldCB2YWx1ZUhlbHA6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdGlmICh2aENvbnRyb2wgJiYgdmhDb250cm9sLmdldENvbnRlbnQoKSkge1xuXHRcdFx0XHR2YWx1ZUhlbHAgPSB2aENvbnRyb2wuZ2V0Q29udGVudCgpIS5nZXRJZCgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9jYWxjdWxhdGUgdmFsdWVIZWxwXG5cdFx0XHRcdHZhbHVlSGVscCA9IFZhbHVlSGVscFRlbXBsYXRpbmcuZ2VuZXJhdGVJRChcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0dGhpcy52aElkUHJlZml4LFxuXHRcdFx0XHRcdFByb3BlcnR5Rm9ybWF0dGVycy5nZXRSZWxhdGl2ZVByb3BlcnR5UGF0aCh2YWx1ZUhlbHBQcm9wZXJ0eUNvbnRleHQgYXMgdW5rbm93biBhcyBNZXRhTW9kZWxDb250ZXh0LCB7XG5cdFx0XHRcdFx0XHRjb250ZXh0OiBjb250ZXh0XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0aGlzLmRhdGFNb2RlbFBhdGgpID8/IFwiXCJcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgbXVsdGlWYWx1ZUZpZWxkID0gKFxuXHRcdFx0XHQ8TXVsdGlWYWx1ZUZpZWxkXG5cdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJfbXZmXCIpfVxuXHRcdFx0XHRcdGRlbGVnYXRlPXt7IG5hbWU6IFwic2FwL2ZlL21hY3Jvcy9tdWx0aXZhbHVlZmllbGQvTXVsdGlWYWx1ZUZpZWxkRGVsZWdhdGVcIiB9fVxuXHRcdFx0XHRcdGl0ZW1zPXtpdGVtc0FnZ3JlZ2F0aW9ufVxuXHRcdFx0XHRcdGRpc3BsYXk9e3RoaXMuZGlzcGxheU1vZGV9XG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRlZGl0TW9kZT17dGhpcy5lZGl0TW9kZX1cblx0XHRcdFx0XHR2YWx1ZUhlbHA9e3ZhbHVlSGVscH1cblx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeSA/IHRoaXMuYXJpYUxhYmVsbGVkQnkgOiBbXX1cblx0XHRcdFx0XHRzaG93RW1wdHlJbmRpY2F0b3I9e3RoaXMuZm9ybWF0T3B0aW9ucz8uc2hvd0VtcHR5SW5kaWNhdG9yfVxuXHRcdFx0XHRcdGxhYmVsPXtsYWJlbH1cblx0XHRcdFx0XHRjaGFuZ2U9eyhGaWVsZFJ1bnRpbWUuaGFuZGxlQ2hhbmdlIGFzIHVua25vd24gYXMgRnVuY3Rpb24pLmJpbmQoRmllbGRSdW50aW1lLCBjb250cm9sbGVyKX1cblx0XHRcdFx0XHRmaWVsZEdyb3VwSWRzPXt0aGlzLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtGaWVsZFJ1bnRpbWUub25WYWxpZGF0ZUZpZWxkR3JvdXB9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0aXRlbXM6IDxNdWx0aVZhbHVlRmllbGRJdGVtIGtleT17dGhpcy5pdGVtLmtleX0gZGVzY3JpcHRpb249e3RoaXMuaXRlbS5kZXNjcmlwdGlvbn0gLz4sXG5cdFx0XHRcdFx0XHRkZXBlbmRlbnRzOiB2aENvbnRyb2xcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L011bHRpVmFsdWVGaWVsZD5cblx0XHRcdCk7XG5cblx0XHRcdGxldCBmb3Jtd3JhcHBlciA9IG51bGw7XG5cdFx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0XHRjb25zdCBhdmF0YXIgPSAoXG5cdFx0XHRcdFx0PEF2YXRhclxuXHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdGluaXRpYWxzPXt0aGlzLmNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb259XG5cdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdFx0XHRjdXN0b21EaXNwbGF5U2l6ZT1cIjEuNXJlbVwiXG5cdFx0XHRcdFx0XHRjdXN0b21Gb250U2l6ZT1cIjAuOHJlbVwiXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e3RoaXMuY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdEZpZWxkUnVudGltZS5zaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyKGF2YXRhciwgdmlldyk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGZvcm13cmFwcGVyID0gKFxuXHRcdFx0XHRcdDxGb3JtRWxlbWVudFdyYXBwZXI+XG5cdFx0XHRcdFx0XHQ8SEJveCB3aWR0aD1cIjEwMCVcIiBhbGlnbkl0ZW1zPVwiRW5kXCI+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0aXRlbXM6IFttdWx0aVZhbHVlRmllbGQsIGF2YXRhcl1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHQ8L0Zvcm1FbGVtZW50V3JhcHBlcj5cblx0XHRcdFx0KTtcblxuXHRcdFx0XHRtdWx0aVZhbHVlRmllbGQ/LmFkZEV2ZW50RGVsZWdhdGUoXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b25mb2N1c2luOiAoZXZ0OiBqUXVlcnkuRXZlbnQgJiB7IHNyY0NvbnRyb2w6IENvbnRyb2wgfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gZXZ0LnNyY0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdD8uaGFuZGxlQ29udGVudEZvY3VzSW4oe1xuXHRcdFx0XHRcdFx0XHRcdGdldFNvdXJjZTogKCkgPT4gY3VycmVudE11bHRpVmFsdWVGaWVsZFxuXHRcdFx0XHRcdFx0XHR9IGFzIHVua25vd24gYXMgVUk1RXZlbnQ8eyByZWxhdGVkVGFyZ2V0OiBOb2RlIH0+KTtcblxuXHRcdFx0XHRcdFx0XHRpZiAodmFsdWVIZWxwQ29udHJvbD8uZ2V0RG9tUmVmKCkpIHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZUhlbHBDb250cm9sLmF0dGFjaEV2ZW50T25jZShcImNsb3NlZFwiLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJyZW50TXVsdGlWYWx1ZUZpZWxkPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b25mb2N1c291dDogKGV2dDogalF1ZXJ5LkV2ZW50ICYgeyBzcmNDb250cm9sOiBDb250cm9sIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0bGV0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuc3JjQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJyZW50TXVsdGlWYWx1ZUZpZWxkPy5pc0E8VG9rZW5pemVyPihcInNhcC5tLlRva2VuaXplclwiKSkge1xuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkLmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Y29uc3QgZXZlbnQgPSBuZXcgVUk1RXZlbnQoXCJcIiwgY3VycmVudE11bHRpVmFsdWVGaWVsZCwge1xuXHRcdFx0XHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM6IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQuZ2V0RmllbGRHcm91cElkcygpXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNPdXQoZXZlbnQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdGNvbnN0IHZhbHVlSGVscENvbnRyb2wgPSBFbGVtZW50LmdldEVsZW1lbnRCeUlkKG11bHRpVmFsdWVGaWVsZC5nZXRWYWx1ZUhlbHAoKSkgYXMgTWRjVmFsdWVIZWxwO1xuXG5cdFx0XHRcdHZhbHVlSGVscENvbnRyb2w/LmF0dGFjaE9wZW5lZCgoZXZ0OiBWYWx1ZUhlbHAkT3BlbmVkRXZlbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gZXZ0LmdldFNvdXJjZSgpLmdldENvbnRyb2woKTtcblx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNJbih7XG5cdFx0XHRcdFx0XHRnZXRTb3VyY2U6ICgpID0+IGN1cnJlbnRNdWx0aVZhbHVlRmllbGRcblx0XHRcdFx0XHR9IGFzIHVua25vd24gYXMgVUk1RXZlbnQ8eyByZWxhdGVkVGFyZ2V0OiBOb2RlIH0+KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRtdWx0aVZhbHVlRmllbGQuYWRkQ3VzdG9tRGF0YShuZXcgQ3VzdG9tRGF0YSh7IGtleTogXCJmb3J3YXJkZWRJdGVtc0JpbmRpbmdcIiwgdmFsdWU6IHRoaXMuaXRlbXMgfSkpO1xuXHRcdFx0cmV0dXJuIHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgPyBmb3Jtd3JhcHBlciA6IG11bHRpVmFsdWVGaWVsZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0dGVyIGZvciB0aGUgcmVhZE9ubHkgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSByZWFkT25seVxuXHQgKi9cblx0c2V0UmVhZE9ubHkocmVhZE9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRzdXBlci5zZXRQcm9wZXJ0eShcInJlYWRPbmx5XCIsIHJlYWRPbmx5KTtcblx0XHR0aGlzLnVwZGF0ZUVkaXRNb2RlKCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0dGVyIGZvciB0aGUgX2lzSW5FZGl0TW9kZSBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIGluRWRpdE1vZGVcblx0ICovXG5cdHNldF9pc0luRWRpdE1vZGUoaW5FZGl0TW9kZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHN1cGVyLnNldFByb3BlcnR5KFwiX2lzSW5FZGl0TW9kZVwiLCBpbkVkaXRNb2RlKTtcblx0XHR0aGlzLnVwZGF0ZUVkaXRNb2RlKCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICogQHJldHVybnMgVGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICovXG5cdGdldE11bHRpVmFsdWVGaWVsZCgpOiBNdWx0aVZhbHVlRmllbGQge1xuXHRcdGlmICh0aGlzLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKCkpIHtcblx0XHRcdHJldHVybiAoKHRoaXMuY29udGVudCBhcyBGb3JtRWxlbWVudFdyYXBwZXIpLmNvbnRlbnQgYXMgSEJveCkuZ2V0SXRlbXMoKVswXSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQgYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgdGhlIGVkaXQgbW9kZSBiYXNlZCBvbiB0aGUgcmVhZE9ubHkgYW5kIF9pc0luRWRpdE1vZGUgcHJvcGVydGllcy5cblx0ICovXG5cdHVwZGF0ZUVkaXRNb2RlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG11bHRpdmFsdWVGaWVsZCA9IHRoaXMuZ2V0TXVsdGlWYWx1ZUZpZWxkKCk7XG5cdFx0aWYgKHRoaXMucmVhZE9ubHkgPT09IHRydWUpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHRcdG11bHRpdmFsdWVGaWVsZC5zZXRFZGl0TW9kZShcIkRpc3BsYXlcIik7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnJlYWRPbmx5ID09PSBmYWxzZSAmJiB0aGlzLml0ZW1zKSB7XG5cdFx0XHQvL3JlYWRPbmx5IGZhbHNlIGNhbiBvbmx5IGhhdmUgaW1wYWN0IGlmIGl0ZW1zIGFyZSBwcm92aWRlZFxuXHRcdFx0aWYgKHRoaXMuX2lzSW5FZGl0TW9kZSkge1xuXHRcdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJFZGl0YWJsZVwiO1xuXHRcdFx0XHRtdWx0aXZhbHVlRmllbGQuc2V0RWRpdE1vZGUoXCJFZGl0YWJsZVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHRcdFx0bXVsdGl2YWx1ZUZpZWxkLnNldEVkaXRNb2RlKFwiRGlzcGxheVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gaWYgcmVhZE9ubHkgaXMgbm90IGV4cGxpY2l0bHkgc2V0IHdlIGtlZXAgdGVoIHN0YW5kYXJkIGJlaGF2aW9yXG5cdH1cblxuXHQvKipcblx0ICogT24gQmVmb3JlIHJlbmRlcmluZyBmcm93YXJkIHRoZSBhcmlhTGFiZWxsZWRCeSB0byB0aGUgbWRjIE11bHRpVmFsdWVGaWVsZC5cblx0ICovXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdGNvbnN0IG11bHRpVmFsdWVGaWVsZCA9IHRoaXMuZ2V0TXVsdGlWYWx1ZUZpZWxkKCk7XG5cdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnkgPSAodGhpcyBhcyB1bmtub3duIGFzIEVuaGFuY2VXaXRoVUk1PE11bHRpVmFsdWVGaWVsZEJsb2NrPikuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcblxuXHRcdFx0Zm9yIChjb25zdCBzSWQgb2YgYUFyaWFMYWJlbGxlZEJ5KSB7XG5cdFx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeXMgPSBtdWx0aVZhbHVlRmllbGQuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcblx0XHRcdFx0aWYgKCFhQXJpYUxhYmVsbGVkQnlzLmluY2x1ZGVzKHNJZCkpIHtcblx0XHRcdFx0XHRtdWx0aVZhbHVlRmllbGQuYWRkQXJpYUxhYmVsbGVkQnkoc0lkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBakJBLElBb0JxQkEsb0JBQW9CLElBQUFDLElBQUEsR0FEeENDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxFQUFBQyxLQUFBLEdBRTlDQyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxFQUFBQyxLQUFBLEdBTTlDQyxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VB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
|
|
686
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNdWx0aVZhbHVlRmllbGRCbG9jayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsImFzc29jaWF0aW9uIiwiX2RlYzUiLCJfZGVjNiIsInJlcXVpcmVkIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJGb3JtYXRPcHRpb25zIiwiX2RlYzExIiwiX2RlYzEyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrQmFzZSIsIl9pbmhlcml0c0xvb3NlIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJfb3ZlcnJpZGVWYWx1ZSIsImNvbGxlY3Rpb25CaW5kaW5nRGlzcGxheSIsImNvbGxlY3Rpb25CaW5kaW5nRWRpdCIsIml0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIiwidGV4dEV4cHJlc3Npb24iLCJrZXkiLCJpdGVtcyIsIl9jb21tb25UYXJnZXRPYmplY3RQciIsIm1vZGVsIiwibW9kZWxOYW1lIiwicGF0aCIsImNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwiY29tbW9uUHJvcGVydHlQYXRoIiwibmFtZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwiX2NvbW1vblRhcmdldE9iamVjdFByMiIsIl9jb21tb25UYXJnZXRPYmplY3RQcjMiLCJkZXNjcmlwdGlvbiIsIl9nZXRNdWx0aUlucHV0U2V0dGluZ3MiLCJwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgiLCJmb3JtYXRPcHRpb25zIiwiX3Byb3BlcnR5RGVmaW5pdGlvbiRhIiwiY29sbGVjdGlvblBhdGgiLCJfZ2V0UGF0aFN0cnVjdHVyZSIsInRlbXBsYXRlU2hhcmVhYmxlIiwidXNlUGFyZW50QmluZGluZ0NhY2hlIiwicGFyYW1ldGVycyIsIiQkb3duUmVxdWVzdCIsInByb3BlcnR5UGF0aE9yUHJvcGVydHkiLCJwcm9wZXJ0eURlZmluaXRpb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0IiwiY29tbW9uVGV4dCIsInJlbGF0aXZlTG9jYXRpb24iLCJnZXRSZWxhdGl2ZVBhdGhzIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiZ2V0VmFsdWVCaW5kaW5nIiwiZGlzcGxheU9ubHkiLCJsZW5ndGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwiX2RhdGFNb2RlbE9iamVjdFBhdGgkIiwiX2RhdGFNb2RlbE9iamVjdFBhdGgkMiIsImZpcnN0Q29sbGVjdGlvblBhdGgiLCJjdXJyZW50RW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYXZpZ2F0ZWRQYXRocyIsImNvbnRleHROYXZzRm9ySXRlbSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibmF2UHJvcCIsInVuZGVmaW5lZCIsInNvbWUiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInB1c2giLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiaGFzT3duUHJvcGVydHkiLCJpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5Iiwiam9pbiIsIk9iamVjdCIsImFzc2lnbiIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwiYXBwQ29tcG9uZW50Iiwic2lkZUVmZmVjdFNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJmaWVsZEdyb3VwSWRzIiwiZGF0YU1vZGVsUGF0aCIsInRhcmdldEVudGl0eVR5cGUiLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsImNvbGxhYm9yYXRpb25GaWVsZEdyb3VwIiwiQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXgiLCJkYXRhU291cmNlUGF0aCIsInJlc3VsdCIsImluaXRpYWxpemUiLCJtZXRhQ29udGV4dFBhdGgiLCJfb3duZXIkcHJlcHJvY2Vzc29yQ28iLCJfbWV0YVBhdGhPYmplY3QkYW5ub3QiLCJfdGhpcyRmb3JtYXRPcHRpb25zIiwib3duZXIiLCJfZ2V0T3duZXIiLCJjb250ZXh0UGF0aCIsInByZXByb2Nlc3NvckNvbnRleHQiLCJmdWxsQ29udGV4dFBhdGgiLCJvZGF0YU1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsIm1ldGFDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRQYXRoIiwibWV0YVBhdGhPYmplY3QiLCJnZXRUYXJnZXQiLCJpc1Byb3BlcnR5IiwiRGF0YUZpZWxkRGVmYXVsdCIsImVuaGFuY2VkTWV0YVBhdGgiLCJkYXRhRmllbGREYXRhTW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJjb252ZXJ0ZWREYXRhRmllbGQiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsIlZhbHVlIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImluc2VydGFibGUiLCJpc1BhdGhJbnNlcnRhYmxlIiwiZGVsZXRlTmF2aWdhdGlvblJlc3RyaWN0aW9uIiwiaXNQYXRoRGVsZXRhYmxlIiwiaWdub3JlVGFyZ2V0Q29sbGVjdGlvbiIsImF1dGhvcml6ZVVucmVzb2x2YWJsZSIsImRlbGV0ZVBhdGgiLCJkZWxldGFibGUiLCJpZkVsc2UiLCJfdHlwZSIsIm9yIiwibm90IiwiaXNDb25zdGFudCIsImNvbnN0YW50IiwicmVhZE9ubHkiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcyIsImVkaXRNb2RlIiwiYW5kIiwiZGlzcGxheU1vZGUiLCJnZXREaXNwbGF5TW9kZSIsImxvY2FsRGF0YU1vZGVsUGF0aCIsIml0ZW0iLCJjb2xsZWN0aW9uIiwiZ2V0QXBwQ29tcG9uZW50Iiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJNb2RlbEhlbHBlciIsIlVJRm9ybWF0dGVycyIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMiLCJoYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHkiLCJjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJnZXRQb3NzaWJsZVZhbHVlSGVscCIsImlkIiwiaGFzVmFsdWVIZWxwIiwiX2pzeCIsIlZhbHVlSGVscCIsImlkUHJlZml4IiwidmhJZFByZWZpeCIsIm1ldGFQYXRoIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsInVzZU11bHRpVmFsdWVGaWVsZCIsImdldE1ldGFQYXRoT2JqZWN0IiwiX3RoaXMkX2dldE93bmVyIiwiX3RoaXMkX2dldE93bmVyMiIsIl90aGlzJGZvcm1hdE9wdGlvbnMyIiwiSUQiLCJnZW5lcmF0ZSIsImdldElkIiwiY3JlYXRlSWQiLCJjb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJ2aWV3IiwiZ2V0VmlldyIsImNvbnRleHQiLCJnZXRDb250ZXh0UGF0aCIsInZhbHVlSGVscFByb3BlcnR5IiwiRmllbGRIZWxwZXIiLCJ2YWx1ZUhlbHBQcm9wZXJ0eUNvbnRleHQiLCJpdGVtc0FnZ3JlZ2F0aW9uIiwibGFiZWwiLCJjb21wdXRlTGFiZWxUZXh0IiwidmhDb250cm9sIiwidmFsdWVIZWxwIiwiZ2V0Q29udGVudCIsIlZhbHVlSGVscFRlbXBsYXRpbmciLCJnZW5lcmF0ZUlEIiwiUHJvcGVydHlGb3JtYXR0ZXJzIiwiZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJtdWx0aVZhbHVlRmllbGQiLCJNdWx0aVZhbHVlRmllbGQiLCJkZWxlZ2F0ZSIsImRpc3BsYXkiLCJ3aWR0aCIsImFyaWFMYWJlbGxlZEJ5Iiwic2hvd0VtcHR5SW5kaWNhdG9yIiwiY2hhbmdlIiwiTXVsdGlWYWx1ZUZpZWxkUnVudGltZSIsImhhbmRsZUNoYW5nZSIsImJpbmQiLCJ2YWxpZGF0ZUZpZWxkR3JvdXAiLCJGaWVsZFJ1bnRpbWUiLCJvblZhbGlkYXRlRmllbGRHcm91cCIsImNoaWxkcmVuIiwiTXVsdGlWYWx1ZUZpZWxkSXRlbSIsImRlcGVuZGVudHMiLCJmb3Jtd3JhcHBlciIsImF2YXRhciIsIkF2YXRhciIsImluaXRpYWxzIiwiZGlzcGxheVNpemUiLCJjdXN0b21EaXNwbGF5U2l6ZSIsImN1c3RvbUZvbnRTaXplIiwiYmFja2dyb3VuZENvbG9yIiwicHJlc3MiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiRm9ybUVsZW1lbnRXcmFwcGVyIiwiSEJveCIsImFsaWduSXRlbXMiLCJhZGRFdmVudERlbGVnYXRlIiwib25mb2N1c2luIiwiZXZ0IiwiX2NvbnRyb2xsZXIkY29sbGFib3JhIiwiY3VycmVudE11bHRpVmFsdWVGaWVsZCIsInNyY0NvbnRyb2wiLCJnZXRQYXJlbnQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJoYW5kbGVDb250ZW50Rm9jdXNJbiIsImdldFNvdXJjZSIsInZhbHVlSGVscENvbnRyb2wiLCJnZXREb21SZWYiLCJhdHRhY2hFdmVudE9uY2UiLCJmb2N1cyIsIm9uZm9jdXNvdXQiLCJfY3VycmVudE11bHRpVmFsdWVGaWUiLCJpc0EiLCJfY3VycmVudE11bHRpVmFsdWVGaWUyIiwiZXZlbnQiLCJVSTVFdmVudCIsImdldEZpZWxkR3JvdXBJZHMiLCJoYW5kbGVDb250ZW50Rm9jdXNPdXQiLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRWYWx1ZUhlbHAiLCJhdHRhY2hPcGVuZWQiLCJnZXRDb250cm9sIiwiYWRkQ3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJ2YWx1ZSIsInNldFJlYWRPbmx5Iiwic2V0UHJvcGVydHkiLCJ1cGRhdGVFZGl0TW9kZSIsInNldF9pc0luRWRpdE1vZGUiLCJpbkVkaXRNb2RlIiwiZ2V0TXVsdGlWYWx1ZUZpZWxkIiwiZ2V0SXRlbXMiLCJtdWx0aXZhbHVlRmllbGQiLCJzZXRFZGl0TW9kZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiYUFyaWFMYWJlbGxlZEJ5IiwiZ2V0QXJpYUxhYmVsbGVkQnkiLCJzSWQiLCJhQXJpYUxhYmVsbGVkQnlzIiwiaW5jbHVkZXMiLCJhZGRBcmlhTGFiZWxsZWRCeSIsIkJ1aWxkaW5nQmxvY2tCYXNlIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNdWx0aVZhbHVlRmllbGQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFGaWVsZCwgRGF0YUZpZWxkVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYW5kLCBjb21waWxlRXhwcmVzc2lvbiwgY29uc3RhbnQsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCBpc0NvbnN0YW50LCBub3QsIG9yIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhZ2dyZWdhdGlvbixcblx0YXNzb2NpYXRpb24sXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRpbXBsZW1lbnRJbnRlcmZhY2UsXG5cdHByb3BlcnR5LFxuXHR0eXBlIEVuaGFuY2VXaXRoVUk1LFxuXHR0eXBlIFByb3BlcnRpZXNPZlxufSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBJRCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHtcblx0aXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eSxcblx0aXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGlzUHJvcGVydHksXG5cdGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQge1xuXHRlbmhhbmNlRGF0YU1vZGVsUGF0aCxcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0aXNQYXRoRGVsZXRhYmxlLFxuXHRpc1BhdGhJbnNlcnRhYmxlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCAqIGFzIFByb3BlcnR5Rm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRGlzcGxheU1vZGUsIE1ldGFNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBnZXREaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRWYWx1ZUJpbmRpbmcsIGdldFZpc2libGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgKiBhcyBWYWx1ZUhlbHBUZW1wbGF0aW5nIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUhlbHBUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSBUb2tlbml6ZXIgZnJvbSBcInNhcC9tL1Rva2VuaXplclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL011bHRpVmFsdWVGaWVsZFwiO1xuaW1wb3J0IHR5cGUgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkSXRlbSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9NdWx0aVZhbHVlRmllbGRJdGVtXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuXG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB7IENvbGxhYm9yYXRpb25GaWVsZEdyb3VwUHJlZml4IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IEZvcm1FbGVtZW50V3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRm9ybUVsZW1lbnRXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9Db2xsYWJvcmF0aW9uRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBoYXNWYWx1ZUhlbHAgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IEZpZWxkUnVudGltZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFJ1bnRpbWVcIjtcbmltcG9ydCBGb3JtYXRPcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9Gb3JtYXRPcHRpb25zXCI7XG5pbXBvcnQgTXVsdGlWYWx1ZUZpZWxkUnVudGltZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tdWx0aXZhbHVlZmllbGQvTXVsdGlWYWx1ZUZpZWxkUnVudGltZVwiO1xuaW1wb3J0IEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgTWRjVmFsdWVIZWxwLCBWYWx1ZUhlbHAkT3BlbmVkRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCB0eXBlIHsgTWV0YU1vZGVsVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbmltcG9ydCBWYWx1ZUhlbHAgZnJvbSBcIi4vVmFsdWVIZWxwXCI7XG5cbnR5cGUgTXVsdGlJbnB1dFNldHRpbmdzID0ge1xuXHRkZXNjcmlwdGlvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0Y29sbGVjdGlvbkJpbmRpbmdEaXNwbGF5OiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXHRjb2xsZWN0aW9uQmluZGluZ0VkaXQ6IFByb3BlcnR5QmluZGluZ0luZm87XG5cdGtleTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZGlzcGxheU9ubHk/OiBib29sZWFuO1xufTtcblxudHlwZSBNdWx0aVZhbHVlRmllbGRQYXRoU3RydWN0dXJlID0ge1xuXHRjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuXHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIE11bHRpVmFsdWVGaWVsZCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBUaGUgTXVsdGlWYWx1ZUZpZWxkIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgZWl0aGVyIGEgRGF0YUZpZWxkIG9yIFByb3BlcnR5IGRpcmVjdGx5LiBJdCBoYXMgdG8gcG9pbnQgdG8gYSBjb2xsZWN0aW9uIHByb3BlcnR5LlxuICogPGJyPlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm86TXVsdGlWYWx1ZUZpZWxkXG4gKiBpZD1cIlNvbWVVbmlxdWVJZGVudGlmaWVyXCJcbiAqIGNvbnRleHRQYXRoPVwie2VudGl0eVNldCZndDt9XCJcbiAqIG1ldGFQYXRoPVwie2RhdGFGaWVsZCZndDt9XCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuMTE4LjBcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlWYWx1ZUZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrQmFzZTxDb250cm9sPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JRm9ybUNvbnRlbnRcIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JRm9ybUNvbnRlbnQgPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBUaGUgJ2lkJyBwcm9wZXJ0eVxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJlZml4IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIGZpZWxkIC0gb25seSBpZiBubyBpZCBpcyBwcm92aWRlZFxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdGlkUHJlZml4Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcmVmaXggYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgdmFsdWUgaGVscCB1c2VkIGZvciB0aGUgZmllbGRcblx0ICovXG5cdEBhc3NvY2lhdGlvbih7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHR2aElkUHJlZml4ITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSByZWxhdGl2ZSBNZXRhZGF0YSBwYXRoIHRvIHRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqIFRoZSBtZXRhUGF0aCBzaG91bGQgcG9pbnQgdG8gYSBQcm9wZXJ0eSBvciBEYXRhRmllbGQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoZSByZWFkT25seSBmbGFnXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCByZXF1aXJlZDogZmFsc2UgfSlcblx0cHVibGljIHJlYWRPbmx5PzogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBUaGUgY29udGV4dCBwYXRoIHByb3ZpZGVkIGZvciB0aGUgTXVsdGlWYWx1ZUZpZWxkXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgY29udGV4dFBhdGg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IGFkZGVkIHRvIGJlIGFibGUgdG8gYWRkIGRhdGEgLyBpdGVtcyB0byB0aGUgbXVsdGkgdmFsdWUgZmllbGQgdmlhIGEgZGlmZmVyZW50IG1vZGVsXG5cdCAqIEBleHBlcmltZW50YWxcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImFueVwiLFxuXHRcdGlzQmluZGluZ0luZm86IHRydWVcblx0fSlcblx0cHVibGljIGl0ZW1zPzogUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHQvKipcblx0ICogVGhlIG9iamVjdCB3aXRoIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcblx0ICpcblx0ICovXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5tdWx0aXZhbHVlZmllbGQuRm9ybWF0T3B0aW9uc1wiLCBtdWx0aXBsZTogZmFsc2UsIGRlZmF1bHRDbGFzczogRm9ybWF0T3B0aW9ucyB9KVxuXHRmb3JtYXRPcHRpb25zPzogRm9ybWF0T3B0aW9ucztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRfaXNJbkVkaXRNb2RlOiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VQYXJlbnRCaW5kaW5nQ2FjaGUgPSBmYWxzZTtcblxuXHQvLyBDb21wdXRlZCBwcm9wZXJ0aWVzXG5cblx0cHJpdmF0ZSBpdGVtITogTXVsdGlJbnB1dFNldHRpbmdzO1xuXG5cdC8qKlxuXHQgKiBQb2ludGVkIGF0IGRhdGFGaWVsZCwgY2FuIGJlIERhdGFGaWVsZERlZmF1bHQgZnJvbSBhIHByb3BlcnR5LlxuXHQgKi9cblx0cHJpdmF0ZSBjb252ZXJ0ZWREYXRhRmllbGQhOiBEYXRhRmllbGQ7XG5cblx0LyoqXG5cdCAqIERhdGFNb2RlbFBhdGggZm9yIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGRpc3BsYXllZC5cblx0ICovXG5cdHByaXZhdGUgZGF0YU1vZGVsUGF0aCE6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+O1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdHByaXZhdGUgcHJvcGVydHkhOiBQcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRWRpdCBNb2RlIG9mIHRoZSBmaWVsZC5cblx0ICogSWYgdGhlIGVkaXRNb2RlIGlzIHVuZGVmaW5lZCB0aGVuIHdlIGNvbXB1dGUgaXQgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG5cdCAqIE90aGVyd2lzZSB3ZSB1c2UgdGhlIHZhbHVlIHByb3ZpZGVkIGhlcmUuXG5cdCAqL1xuXHRwcml2YXRlIGVkaXRNb2RlITogRmllbGRFZGl0TW9kZSB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBUaGUgZGlzcGxheSBtb2RlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uIGZpZWxkXG5cdCAqL1xuXHRwcml2YXRlIGRpc3BsYXlNb2RlITogRGlzcGxheU1vZGU7XG5cblx0LyoqXG5cdCAqIFRoZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB0aGF0IGlzIGNhbGN1bGF0ZWQgaW50ZXJuYWxseVxuXHQgKi9cblx0cHJpdmF0ZSBjb2xsZWN0aW9uITogUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHRwcml2YXRlIHZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgZmllbGRHcm91cElkcz86IHN0cmluZztcblxuXHRwcml2YXRlIGVuaGFuY2VkTWV0YVBhdGghOiBDb250ZXh0O1xuXG5cdHByaXZhdGUgZW5hYmxlRXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25FbmFibGVkITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGRhdGFTb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBzdHJpbmcgfCAoJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNdWx0aVZhbHVlRmllbGRCbG9jaz4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0aWYgKHR5cGVvZiBwcm9wcyAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0Ly8gdHlwZSBvZiBwcm9wcyBjYW4gYmUgYSBzdHJpbmcgaWYgd2UgYXJlIGNsb25pbmcgdGhlIE11bHRpVmFsdWVGaWVsZCBpbnNpZGUgYW4gYWdncmVnYXRpb25cblx0XHRcdC8vIGluIHRoYXQgY2FzZSBfaXNJbkVkaXRNb2RlIGhhcyBhbHJlYWR5IGJlZW4gY29tcHV0ZWQgb24gdGhlIG9uZSB3ZSBjbG9uZVxuXHRcdFx0cHJvcHMuX2lzSW5FZGl0TW9kZSA9IGNvbXBpbGVFeHByZXNzaW9uKFVJLklzRWRpdGFibGUpO1xuXHRcdH1cblx0XHRzdXBlcihwcm9wcywgb3RoZXJzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbiBjYXNlIGFuIGV4dGVybmFsIHZhbHVlIGlzIHNldCAoZS5nLiBmb3IgcHJvdmlkaW5nIGRhdGEgaW4gYSBqc29uIG1vZGVsKSB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBiaW5kaW5nIHN0cmluZ3MgZm9yIHRoZSBpdGVtLlxuXHQgKiBAcGFyYW0gY29sbGVjdGlvbkJpbmRpbmdEaXNwbGF5XG5cdCAqIEBwYXJhbSBjb2xsZWN0aW9uQmluZGluZ0VkaXRcblx0ICogQHBhcmFtIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoXG5cdCAqIEBwYXJhbSB0ZXh0RXhwcmVzc2lvblxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIE11bHRpSW5wdXRTZXR0aW5nc1xuXHQgKi9cblx0cHJpdmF0ZSBfb3ZlcnJpZGVWYWx1ZShcblx0XHRjb2xsZWN0aW9uQmluZGluZ0Rpc3BsYXk6IFByb3BlcnR5QmluZGluZ0luZm8sXG5cdFx0Y29sbGVjdGlvbkJpbmRpbmdFZGl0OiBQcm9wZXJ0eUJpbmRpbmdJbmZvICYgeyBwYXJhbWV0ZXJzPzogb2JqZWN0IH0sXG5cdFx0aXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHlQYXRoIHwgUHJvcGVydHk+LFxuXHRcdHRleHRFeHByZXNzaW9uOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0XHRrZXk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG5cdCk6IE11bHRpSW5wdXRTZXR0aW5ncyB7XG5cdFx0aWYgKHRoaXMuaXRlbXMpIHtcblx0XHRcdGNvbnN0IG1vZGVsID0gdGhpcy5pdGVtcy5tb2RlbCA/PyB0aGlzLml0ZW1zLm1vZGVsTmFtZTtcblx0XHRcdGNvbGxlY3Rpb25CaW5kaW5nRGlzcGxheSA9IHsgcGF0aDogYCR7bW9kZWx9PiR7dGhpcy5pdGVtcy5wYXRofWAgfTtcblx0XHRcdGNvbGxlY3Rpb25CaW5kaW5nRWRpdCA9IHsgcGF0aDogYCR7bW9kZWx9PiR7dGhpcy5pdGVtcy5wYXRofWAgfTtcblx0XHRcdGNvbnN0IGNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5ID0gaXRlbURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXHRcdFx0Y29uc3QgY29tbW9uUHJvcGVydHlQYXRoID0gYHske21vZGVsfT4ke2NvbW1vblRhcmdldE9iamVjdFByb3BlcnR5Lm5hbWV9fWA7XG5cblx0XHRcdC8vIFRleHQgYXJyYW5nZW1lbnQgdXNlIGNhc2Vcblx0XHRcdGlmIChpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KGNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dCkpIHtcblx0XHRcdFx0dGV4dEV4cHJlc3Npb24gPSBgeyR7bW9kZWx9PiR7Y29tbW9uVGFyZ2V0T2JqZWN0UHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0Py5wYXRofX1gO1xuXHRcdFx0XHQvLyBub24gdGV4dCBhcnJhbmdlbWVudCB1c2UgY2FzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGV4dEV4cHJlc3Npb24gPSBjb21tb25Qcm9wZXJ0eVBhdGg7XG5cdFx0XHR9XG5cdFx0XHRrZXkgPSBjb21tb25Qcm9wZXJ0eVBhdGg7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRkZXNjcmlwdGlvbjogdGV4dEV4cHJlc3Npb24sXG5cdFx0XHRjb2xsZWN0aW9uQmluZGluZ0Rpc3BsYXk6IGNvbGxlY3Rpb25CaW5kaW5nRGlzcGxheSxcblx0XHRcdGNvbGxlY3Rpb25CaW5kaW5nRWRpdDogY29sbGVjdGlvbkJpbmRpbmdFZGl0LFxuXHRcdFx0a2V5OiBrZXlcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgY29ycmVjdCBzZXR0aW5ncyBmb3IgdGhlIG11bHRpIGlucHV0LlxuXHQgKiBAcGFyYW0gcHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBjb3JyZXNwb25kaW5nIERhdGFNb2RlbE9iamVjdFBhdGguXG5cdCAqIEBwYXJhbSBmb3JtYXRPcHRpb25zIFRoZSBmb3JtYXQgb3B0aW9ucyB0byBjYWxjdWxhdGUgdGhlIHJlc3VsdFxuXHQgKiBAcmV0dXJucyBNdWx0aUlucHV0U2V0dGluZ3Ncblx0ICovXG5cdHByaXZhdGUgX2dldE11bHRpSW5wdXRTZXR0aW5ncyhcblx0XHRwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+LFxuXHRcdGZvcm1hdE9wdGlvbnM6IEZvcm1hdE9wdGlvbnMgfCB1bmRlZmluZWRcblx0KTogTXVsdGlJbnB1dFNldHRpbmdzIHtcblx0XHRjb25zdCB7IGNvbGxlY3Rpb25QYXRoLCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCB9ID0gTXVsdGlWYWx1ZUZpZWxkQmxvY2suX2dldFBhdGhTdHJ1Y3R1cmUocHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRjb25zdCBjb2xsZWN0aW9uQmluZGluZ0Rpc3BsYXkgPSB7IHBhdGg6IGNvbGxlY3Rpb25QYXRoLCB0ZW1wbGF0ZVNoYXJlYWJsZTogZmFsc2UgfTtcblx0XHRjb25zdCBjb2xsZWN0aW9uQmluZGluZ0VkaXQgPSB0aGlzLnVzZVBhcmVudEJpbmRpbmdDYWNoZVxuXHRcdFx0PyB7IHBhdGg6IGNvbGxlY3Rpb25QYXRoLCB0ZW1wbGF0ZVNoYXJlYWJsZTogZmFsc2UgfVxuXHRcdFx0OiB7IHBhdGg6IGNvbGxlY3Rpb25QYXRoLCBwYXJhbWV0ZXJzOiB7ICQkb3duUmVxdWVzdDogdHJ1ZSB9LCB0ZW1wbGF0ZVNoYXJlYWJsZTogZmFsc2UgfTtcblxuXHRcdGNvbnN0IHByb3BlcnR5UGF0aE9yUHJvcGVydHkgPSBwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5UGF0aCB8IFByb3BlcnR5O1xuXHRcdGNvbnN0IHByb3BlcnR5RGVmaW5pdGlvbiA9IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGhPclByb3BlcnR5KVxuXHRcdFx0PyBwcm9wZXJ0eVBhdGhPclByb3BlcnR5LiR0YXJnZXRcblx0XHRcdDogcHJvcGVydHlQYXRoT3JQcm9wZXJ0eTtcblx0XHRjb25zdCBjb21tb25UZXh0ID0gcHJvcGVydHlEZWZpbml0aW9uPy5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQ7XG5cdFx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMocHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKTtcblxuXHRcdGNvbnN0IHRleHRFeHByZXNzaW9uID0gY29tbW9uVGV4dFxuXHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikpXG5cdFx0XHQ6IGdldFZhbHVlQmluZGluZyhpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCwgZm9ybWF0T3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG5cblx0XHRjb25zdCBrZXkgPSBnZXRWYWx1ZUJpbmRpbmcoaXRlbURhdGFNb2RlbE9iamVjdFBhdGgsIGZvcm1hdE9wdGlvbnMgPz8ge30sIHRydWUpO1xuXHRcdGxldCBkaXNwbGF5T25seSA9IGZhbHNlO1xuXHRcdGlmIChnZXRSZWxhdGl2ZVBhdGhzKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoKS5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyBpZiB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgdmFsdWUgY29udGFpbnMgYSBuYXZpZ2F0aW9uLCBjcmVhdGUgd2lsbCBub3QgYmUgcG9zc2libGUgaW4gdGhlIGRlbGVnYXRlLCBzbyB3ZSBmb3JjZSB0aGUgZGlzcGxheSBNb2RlXG5cdFx0XHRkaXNwbGF5T25seSA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRkaXNwbGF5T25seSxcblx0XHRcdC4uLnRoaXMuX292ZXJyaWRlVmFsdWUoY29sbGVjdGlvbkJpbmRpbmdEaXNwbGF5LCBjb2xsZWN0aW9uQmluZGluZ0VkaXQsIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLCB0ZXh0RXhwcmVzc2lvbiwga2V5KVxuXHRcdH07XG5cdH1cblxuXHQvLyBQcm9jZXNzIHRoZSBkYXRhTW9kZWxQYXRoIHRvIGZpbmQgdGhlIGNvbGxlY3Rpb24gYW5kIHRoZSByZWxhdGl2ZSBEYXRhTW9kZWxQYXRoIGZvciB0aGUgaXRlbS5cblx0cHJpdmF0ZSBzdGF0aWMgX2dldFBhdGhTdHJ1Y3R1cmUoZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4pOiBNdWx0aVZhbHVlRmllbGRQYXRoU3RydWN0dXJlIHtcblx0XHRsZXQgZmlyc3RDb2xsZWN0aW9uUGF0aCA9IFwiXCI7XG5cdFx0Y29uc3QgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy50YXJnZXRFbnRpdHlTZXRcblx0XHRcdD8gZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24udGFyZ2V0RW50aXR5U2V0XG5cdFx0XHQ6IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdFx0Y29uc3QgbmF2aWdhdGVkUGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgY29udGV4dE5hdnNGb3JJdGVtID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzIHx8IFtdO1xuXHRcdGZvciAoY29uc3QgbmF2UHJvcCBvZiBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uID09PSB1bmRlZmluZWQgfHxcblx0XHRcdFx0IWRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNvbWUoXG5cdFx0XHRcdFx0KGNvbnRleHROYXZQcm9wKSA9PiBjb250ZXh0TmF2UHJvcC5mdWxseVF1YWxpZmllZE5hbWUgPT09IG5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHQvLyBpbiBjYXNlIG9mIHJlbGF0aXZlIGVudGl0eVNldFBhdGggd2UgZG9uJ3QgY29uc2lkZXIgbmF2aWdhdGlvblBhdGggdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGUgY29udGV4dFxuXHRcdFx0XHRuYXZpZ2F0ZWRQYXRocy5wdXNoKG5hdlByb3AubmFtZSk7XG5cdFx0XHRcdGNvbnRleHROYXZzRm9ySXRlbS5wdXNoKG5hdlByb3ApO1xuXHRcdFx0XHRpZiAoY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KG5hdlByb3AubmFtZSkpIHtcblx0XHRcdFx0XHRpZiAoaXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eShuYXZQcm9wKSkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZpcnN0Q29sbGVjdGlvblBhdGggPSBgJHtuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKX1gO1xuXHRcdGNvbnN0IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PiA9IE9iamVjdC5hc3NpZ24oe30sIGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdGlmIChpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24pIHtcblx0XHRcdGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcyA9IGNvbnRleHROYXZzRm9ySXRlbTsgLy8gdGhpcyBjaGFuZ2VzIHRoZSBjcmVhdGlvbiBvZiB0aGUgdmFsdWVIZWxwIElEIC4uLlxuXHRcdH1cblxuXHRcdHJldHVybiB7IGNvbGxlY3Rpb25QYXRoOiBmaXJzdENvbGxlY3Rpb25QYXRoLCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogaXRlbURhdGFNb2RlbE9iamVjdFBhdGggfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxjdWxhdGUgdGhlIGZpZWxkR3JvdXBJZHMgZm9yIHRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqIEBwYXJhbSBhcHBDb21wb25lbnRcblx0ICogQHJldHVybnMgVGhlIHZhbHVlIGZvciB0aGUgZmllbGRHcm91cElkc1xuXHQgKi9cblx0cHJpdmF0ZSBjb21wdXRlRmllbGRHcm91cElkcyhhcHBDb21wb25lbnQ/OiBBcHBDb21wb25lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGlmICghYXBwQ29tcG9uZW50KSB7XG5cdFx0XHQvL2ZvciBWYWx1ZUhlbHAgLyBNYXNzIGVkaXQgVGVtcGxhdGluZyB0aGUgYXBwQ29tcG9uZW50IGlzIG5vdCBwYXNzZWQgdG8gdGhlIHRlbXBsYXRpbmdcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0XHRjb25zdCBzaWRlRWZmZWN0U2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTtcblx0XHRjb25zdCBmaWVsZEdyb3VwSWRzID0gc2lkZUVmZmVjdFNlcnZpY2UuY29tcHV0ZUZpZWxkR3JvdXBJZHMoXG5cdFx0XHR0aGlzLmRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHQodGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eSkuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0KTtcblx0XHRpZiAodGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbkZpZWxkR3JvdXAgPSBgJHtDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeH0ke3RoaXMuZGF0YVNvdXJjZVBhdGh9YDtcblx0XHRcdGZpZWxkR3JvdXBJZHMucHVzaChjb2xsYWJvcmF0aW9uRmllbGRHcm91cCk7XG5cdFx0fVxuXHRcdHRoaXMuZmllbGRHcm91cElkcyA9IGZpZWxkR3JvdXBJZHMubGVuZ3RoID8gZmllbGRHcm91cElkcy5qb2luKFwiLFwiKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCByZXN1bHQgPSBmaWVsZEdyb3VwSWRzLmpvaW4oXCIsXCIpO1xuXHRcdHJldHVybiByZXN1bHQgPT09IFwiXCIgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG5cdH1cblxuXHRpbml0aWFsaXplKG1ldGFDb250ZXh0UGF0aDogTWV0YVBhdGg8dW5rbm93bj4pOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cblx0XHR0aGlzLmNvbnRleHRQYXRoID0gdGhpcy5jb250ZXh0UGF0aCA/PyBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXG5cdFx0Y29uc3QgbWV0YUNvbnRleHQgPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YUNvbnRleHRQYXRoLmdldFBhdGgoKSkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuXHRcdGNvbnN0IG1ldGFQYXRoT2JqZWN0ID0gbWV0YUNvbnRleHRQYXRoPy5nZXRUYXJnZXQoKTtcblxuXHRcdC8vIElmIHRoZSB0YXJnZXQgaXMgYSBwcm9wZXJ0eSB3aXRoIGEgRGF0YUZpZWxkRGVmYXVsdCwgdXNlIHRoaXMgYXMgZGF0YSBmaWVsZFxuXHRcdGlmIChpc1Byb3BlcnR5KG1ldGFQYXRoT2JqZWN0KSAmJiBtZXRhUGF0aE9iamVjdC5hbm5vdGF0aW9ucy5VST8uRGF0YUZpZWxkRGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLmVuaGFuY2VkTWV0YVBhdGggPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQoYEAke1VJQW5ub3RhdGlvblRlcm1zLkRhdGFGaWVsZERlZmF1bHR9YCwgbWV0YUNvbnRleHQpIGFzIENvbnRleHQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZW5oYW5jZWRNZXRhUGF0aCA9IG1ldGFDb250ZXh0IGFzIENvbnRleHQ7XG5cdFx0fVxuXHRcdGNvbnN0IGRhdGFGaWVsZERhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoKHRoaXMuZW5oYW5jZWRNZXRhUGF0aC5nZXRQYXRoKCksIHRoaXMuY29udGV4dFBhdGgpITtcblxuXHRcdHRoaXMuY29udmVydGVkRGF0YUZpZWxkID0gZGF0YUZpZWxkRGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgRGF0YUZpZWxkO1xuXG5cdFx0dGhpcy5kYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KFxuXHRcdFx0ZGF0YUZpZWxkRGF0YU1vZGVsUGF0aCxcblx0XHRcdCh0aGlzLmNvbnZlcnRlZERhdGFGaWVsZC5WYWx1ZSBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPikucGF0aFxuXHRcdCk7XG5cdFx0dGhpcy5kYXRhU291cmNlUGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHR0aGlzLnByb3BlcnR5ID0gdGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblxuXHRcdGxldCBpbnNlcnRhYmxlID0gaXNQYXRoSW5zZXJ0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXHRcdGNvbnN0IGRlbGV0ZU5hdmlnYXRpb25SZXN0cmljdGlvbiA9IGlzUGF0aERlbGV0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgsIHtcblx0XHRcdGlnbm9yZVRhcmdldENvbGxlY3Rpb246IHRydWUsXG5cdFx0XHRhdXRob3JpemVVbnJlc29sdmFibGU6IHRydWVcblx0XHR9KTtcblx0XHRjb25zdCBkZWxldGVQYXRoID0gaXNQYXRoRGVsZXRhYmxlKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cblx0XHQvLyBkZWxldGFibGU6XG5cdFx0Ly9cdFx0aWYgcmVzdHJpY3Rpb25zIGNvbWUgZnJvbSBOYXZpZ2F0aW9uIHdlIGFwcGx5IGl0XG5cdFx0Ly9cdFx0b3RoZXJ3aXNlIHdlIGFwcGx5IHJlc3RyaWN0aW9ucyBkZWZpbmVkIG9uIHRhcmdldCBjb2xsZWN0aW9uIG9ubHkgaWYgaXQncyBhIGNvbnN0YW50XG5cdFx0Ly8gICAgICBvdGhlcndpc2UgaXQncyB0cnVlIVxuXHRcdGxldCBkZWxldGFibGUgPSBpZkVsc2UoXG5cdFx0XHRkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24uX3R5cGUgPT09IFwiVW5yZXNvbHZhYmxlXCIsXG5cdFx0XHRvcihub3QoaXNDb25zdGFudChkZWxldGVQYXRoKSksIGRlbGV0ZVBhdGgpLFxuXHRcdFx0ZGVsZXRlUGF0aFxuXHRcdCk7XG5cblx0XHRpZiAodGhpcy5pdGVtcykge1xuXHRcdFx0aW5zZXJ0YWJsZSA9IGRlbGV0YWJsZSA9IGNvbnN0YW50KCF0aGlzLnJlYWRPbmx5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy52aXNpYmxlID0gZ2V0VmlzaWJsZUV4cHJlc3Npb24odGhpcy5kYXRhTW9kZWxQYXRoLCB0aGlzLmZvcm1hdE9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24gPSBjb25zdGFudChmYWxzZSk7XG5cdFx0dGhpcy5jb21wdXRlQ29sbGFib3JhdGlvblByb3BlcnRpZXMoKTtcblx0XHRpZiAodGhpcy5mb3JtYXRPcHRpb25zPy5kaXNwbGF5T25seSA9PT0gdHJ1ZSB8fCB0aGlzLnJlYWRPbmx5ID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdGFuZChpbnNlcnRhYmxlLCBkZWxldGFibGUsIFVJLklzRWRpdGFibGUpLFxuXHRcdFx0XHRcdGlmRWxzZSh0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBjb25zdGFudChcIlJlYWRPbmx5XCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSxcblx0XHRcdFx0XHRjb25zdGFudChcIkRpc3BsYXlcIilcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLmRpc3BsYXlNb2RlID0gZ2V0RGlzcGxheU1vZGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblxuXHRcdGNvbnN0IGxvY2FsRGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgodGhpcy5lbmhhbmNlZE1ldGFQYXRoLmdldFBhdGgoKSwgdGhpcy5jb250ZXh0UGF0aCkhLFxuXHRcdFx0KHRoaXMuY29udmVydGVkRGF0YUZpZWxkLlZhbHVlIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KS5wYXRoXG5cdFx0KTtcblxuXHRcdHRoaXMuaXRlbSA9IHRoaXMuX2dldE11bHRpSW5wdXRTZXR0aW5ncyhsb2NhbERhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucyk7IC8vIHRoaXMgZnVuY3Rpb24gcmV3cml0ZXMgZGF0YU1vZGVsUGF0aCwgdGhlcmVmb3JlLCBmb3Igbm93IGEgY2xlYW4gb2JqZWN0IGlzIHBhc3NlZFxuXHRcdGlmICh0aGlzLml0ZW0uZGlzcGxheU9ubHkpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHR9XG5cdFx0dGhpcy5jb2xsZWN0aW9uID0gdGhpcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIgPyB0aGlzLml0ZW0uY29sbGVjdGlvbkJpbmRpbmdEaXNwbGF5IDogdGhpcy5pdGVtLmNvbGxlY3Rpb25CaW5kaW5nRWRpdDtcblxuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0dGhpcy5maWVsZEdyb3VwSWRzID0gdGhpcy5jb21wdXRlRmllbGRHcm91cElkcyhhcHBDb21wb25lbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgaXMgc3VwcG9ydGVkLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGlzIHN1cHBvcnRlZC5cblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRyZXR1cm4gTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQob2RhdGFNZXRhTW9kZWwhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGhlbHBlciBjb21wdXRlcyB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBuZWVkZWQgZm9yIHRoZSBjb2xsYWJvcmF0aW9uIGF2YXRhci5cblx0ICovXG5cdGNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCgpICYmIHRoaXMuZWRpdE1vZGUgIT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkID0gdHJ1ZTtcblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24oXG5cdFx0XHRcdHRoaXMuZGF0YU1vZGVsUGF0aCxcblx0XHRcdFx0Q29sbGFib3JhdGlvbkZvcm1hdHRlcnMuaGFzQ29sbGFib3JhdGlvbkFjdGl2aXR5XG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0Z2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24odGhpcy5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlJbml0aWFscylcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0Z2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24odGhpcy5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlDb2xvcilcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBjb3JyZXNwb25kaW5nIFZhbHVlSGVscCBmaWVsZCBpbiBjYXNlIGl0wrRzXG5cdCAqIGRlZmluZWQgZm9yIHRoZSBzcGVjaWZpYyBjb250cm9sLlxuXHQgKiBAcmV0dXJucyBUaGUgcG9zc2libGUgVmFsdWVIZWxwIGNvbnRyb2wuXG5cdCAqL1xuXHRnZXRQb3NzaWJsZVZhbHVlSGVscCgpOiBWYWx1ZUhlbHAgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHRhcmdldE9iamVjdCA9IHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0aWYgKHRoaXMuaWQgJiYgaXNQcm9wZXJ0eSh0YXJnZXRPYmplY3QpICYmIGhhc1ZhbHVlSGVscCh0YXJnZXRPYmplY3QpKSB7XG5cdFx0XHQvLyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGlzIG9uZSBoYXMgYSB2YWx1ZSBoZWxwIGFubm90YXRpb24gaW5jbHVkZWQsIGFkZCB0aGUgZGVwZW5kZW50XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8VmFsdWVIZWxwXG5cdFx0XHRcdFx0aWRQcmVmaXg9e3RoaXMudmhJZFByZWZpeH1cblx0XHRcdFx0XHRtZXRhUGF0aD17Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0aGlzLmRhdGFNb2RlbFBhdGgpfVxuXHRcdFx0XHRcdGNvbnRleHRQYXRoPXt0aGlzLmNvbnRleHRQYXRofVxuXHRcdFx0XHRcdHVzZU11bHRpVmFsdWVGaWVsZD17dHJ1ZX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZW50IG9mIHRoZSBidWlsZGluZyBibG9jay5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHRQYXRoID0gdGhpcy5nZXRNZXRhUGF0aE9iamVjdCh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRpZiAobWV0YUNvbnRleHRQYXRoKSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUobWV0YUNvbnRleHRQYXRoKTtcblxuXHRcdFx0Ly8gQnVpbGRpbmdCbG9jayB3aXRoIHNldCBJRCBzY2VuYXJpb1xuXHRcdFx0aWYgKHRoaXMuaWQpIHtcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gSUQuZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgdGhpcy52aElkUHJlZml4ID8/IFwiRmllbGRWYWx1ZUhlbHBcIl0pOyAvLyBVc2UgZ2V0SWQgdG8gcmV0cmlldmUgSUQsIG5vdCB0aGlzLmlkXG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLnZoSWRQcmVmaXgpIHtcblx0XHRcdFx0Ly8gTWF5YmUgbm90IGVudGVyZWRcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gdGhpcy5jcmVhdGVJZChcIkZpZWxkVmFsdWVIZWxwXCIpITtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgY29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0Q29udGV4dFBhdGgoKSk7XG5cdFx0XHRpZiAoIW1ldGFDb250ZXh0IHx8ICFjb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly9jcmVhdGUgYSBuZXcgYmluZGluZyBjb250ZXh0IGZvciB0aGUgdmFsdWUgaGVscFxuXHRcdFx0Y29uc3QgdmFsdWVIZWxwUHJvcGVydHkgPSBGaWVsZEhlbHBlci52YWx1ZUhlbHBQcm9wZXJ0eShtZXRhQ29udGV4dCk7XG5cdFx0XHRjb25zdCB2YWx1ZUhlbHBQcm9wZXJ0eUNvbnRleHQgPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQodmFsdWVIZWxwUHJvcGVydHksIG1ldGFDb250ZXh0KTtcblxuXHRcdFx0Y29uc3QgaXRlbXNBZ2dyZWdhdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcblxuXHRcdFx0Ly9jb21wdXRlIHRoZSBjb3JyZWN0IGxhYmVsXG5cdFx0XHRjb25zdCBsYWJlbCA9IEZpZWxkSGVscGVyLmNvbXB1dGVMYWJlbFRleHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgTWV0YU1vZGVsVHlwZTxEYXRhRmllbGRUeXBlcz4sIHtcblx0XHRcdFx0Y29udGV4dDogbWV0YUNvbnRleHRcblx0XHRcdH0pIGFzIHN0cmluZztcblxuXHRcdFx0Y29uc3QgdmhDb250cm9sID0gdGhpcy5nZXRQb3NzaWJsZVZhbHVlSGVscCgpO1xuXHRcdFx0bGV0IHZhbHVlSGVscDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKHZoQ29udHJvbCAmJiB2aENvbnRyb2wuZ2V0Q29udGVudCgpKSB7XG5cdFx0XHRcdHZhbHVlSGVscCA9IHZoQ29udHJvbC5nZXRDb250ZW50KCkhLmdldElkKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvL2NhbGN1bGF0ZSB2YWx1ZUhlbHBcblx0XHRcdFx0dmFsdWVIZWxwID0gVmFsdWVIZWxwVGVtcGxhdGluZy5nZW5lcmF0ZUlEKFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHR0aGlzLnZoSWRQcmVmaXgsXG5cdFx0XHRcdFx0UHJvcGVydHlGb3JtYXR0ZXJzLmdldFJlbGF0aXZlUHJvcGVydHlQYXRoKHZhbHVlSGVscFByb3BlcnR5Q29udGV4dCBhcyB1bmtub3duIGFzIE1ldGFNb2RlbENvbnRleHQsIHtcblx0XHRcdFx0XHRcdGNvbnRleHQ6IGNvbnRleHRcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHRoaXMuZGF0YU1vZGVsUGF0aCkgPz8gXCJcIlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSAoXG5cdFx0XHRcdDxNdWx0aVZhbHVlRmllbGRcblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIl9tdmZcIil9XG5cdFx0XHRcdFx0ZGVsZWdhdGU9e3sgbmFtZTogXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGREZWxlZ2F0ZVwiIH19XG5cdFx0XHRcdFx0aXRlbXM9e2l0ZW1zQWdncmVnYXRpb259XG5cdFx0XHRcdFx0ZGlzcGxheT17dGhpcy5kaXNwbGF5TW9kZX1cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGVkaXRNb2RlPXt0aGlzLmVkaXRNb2RlfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17dmFsdWVIZWxwfVxuXHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IFtdfVxuXHRcdFx0XHRcdHNob3dFbXB0eUluZGljYXRvcj17dGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3J9XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdGNoYW5nZT17KE11bHRpVmFsdWVGaWVsZFJ1bnRpbWUuaGFuZGxlQ2hhbmdlIGFzIHVua25vd24gYXMgRnVuY3Rpb24pLmJpbmQoTXVsdGlWYWx1ZUZpZWxkUnVudGltZSwgY29udHJvbGxlcil9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17dGhpcy5maWVsZEdyb3VwSWRzfVxuXHRcdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17RmllbGRSdW50aW1lLm9uVmFsaWRhdGVGaWVsZEdyb3VwfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGl0ZW1zOiA8TXVsdGlWYWx1ZUZpZWxkSXRlbSBrZXk9e3RoaXMuaXRlbS5rZXl9IGRlc2NyaXB0aW9uPXt0aGlzLml0ZW0uZGVzY3JpcHRpb259IC8+LFxuXHRcdFx0XHRcdFx0ZGVwZW5kZW50czogdmhDb250cm9sXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9NdWx0aVZhbHVlRmllbGQ+XG5cdFx0XHQpO1xuXG5cdFx0XHRsZXQgZm9ybXdyYXBwZXIgPSBudWxsO1xuXHRcdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdFx0Y29uc3QgYXZhdGFyID0gKFxuXHRcdFx0XHRcdDxBdmF0YXJcblx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb259XG5cdFx0XHRcdFx0XHRpbml0aWFscz17dGhpcy5jb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9ufVxuXHRcdFx0XHRcdFx0ZGlzcGxheVNpemU9XCJDdXN0b21cIlxuXHRcdFx0XHRcdFx0Y3VzdG9tRGlzcGxheVNpemU9XCIxLjVyZW1cIlxuXHRcdFx0XHRcdFx0Y3VzdG9tRm9udFNpemU9XCIwLjhyZW1cIlxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yPXt0aGlzLmNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb259XG5cdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRGaWVsZFJ1bnRpbWUuc2hvd0NvbGxhYm9yYXRpb25FZGl0VXNlcihhdmF0YXIsIHZpZXcpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRmb3Jtd3JhcHBlciA9IChcblx0XHRcdFx0XHQ8Rm9ybUVsZW1lbnRXcmFwcGVyPlxuXHRcdFx0XHRcdFx0PEhCb3ggd2lkdGg9XCIxMDAlXCIgYWxpZ25JdGVtcz1cIkVuZFwiPlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBbbXVsdGlWYWx1ZUZpZWxkLCBhdmF0YXJdXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0PC9Gb3JtRWxlbWVudFdyYXBwZXI+XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bXVsdGlWYWx1ZUZpZWxkPy5hZGRFdmVudERlbGVnYXRlKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9uZm9jdXNpbjogKGV2dDogalF1ZXJ5LkV2ZW50ICYgeyBzcmNDb250cm9sOiBDb250cm9sIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGV2dC5zcmNDb250cm9sLmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQ/LmhhbmRsZUNvbnRlbnRGb2N1c0luKHtcblx0XHRcdFx0XHRcdFx0XHRnZXRTb3VyY2U6ICgpID0+IGN1cnJlbnRNdWx0aVZhbHVlRmllbGRcblx0XHRcdFx0XHRcdFx0fSBhcyB1bmtub3duIGFzIFVJNUV2ZW50PHsgcmVsYXRlZFRhcmdldDogTm9kZSB9Pik7XG5cblx0XHRcdFx0XHRcdFx0aWYgKHZhbHVlSGVscENvbnRyb2w/LmdldERvbVJlZigpKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWVIZWxwQ29udHJvbC5hdHRhY2hFdmVudE9uY2UoXCJjbG9zZWRcIiwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudE11bHRpVmFsdWVGaWVsZD8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uZm9jdXNvdXQ6IChldnQ6IGpRdWVyeS5FdmVudCAmIHsgc3JjQ29udHJvbDogQ29udHJvbCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGxldCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gZXZ0LnNyY0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdFx0XHRcdFx0XHRpZiAoY3VycmVudE11bHRpVmFsdWVGaWVsZD8uaXNBPFRva2VuaXplcj4oXCJzYXAubS5Ub2tlbml6ZXJcIikpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gY3VycmVudE11bHRpVmFsdWVGaWVsZC5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCkgYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGV2ZW50ID0gbmV3IFVJNUV2ZW50KFwiXCIsIGN1cnJlbnRNdWx0aVZhbHVlRmllbGQsIHtcblx0XHRcdFx0XHRcdFx0XHRmaWVsZEdyb3VwSWRzOiBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkLmdldEZpZWxkR3JvdXBJZHMoKVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuaGFuZGxlQ29udGVudEZvY3VzT3V0KGV2ZW50KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zdCB2YWx1ZUhlbHBDb250cm9sID0gRWxlbWVudC5nZXRFbGVtZW50QnlJZChtdWx0aVZhbHVlRmllbGQuZ2V0VmFsdWVIZWxwKCkpIGFzIE1kY1ZhbHVlSGVscDtcblxuXHRcdFx0XHR2YWx1ZUhlbHBDb250cm9sPy5hdHRhY2hPcGVuZWQoKGV2dDogVmFsdWVIZWxwJE9wZW5lZEV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGV2dC5nZXRTb3VyY2UoKS5nZXRDb250cm9sKCk7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuaGFuZGxlQ29udGVudEZvY3VzSW4oe1xuXHRcdFx0XHRcdFx0Z2V0U291cmNlOiAoKSA9PiBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkXG5cdFx0XHRcdFx0fSBhcyB1bmtub3duIGFzIFVJNUV2ZW50PHsgcmVsYXRlZFRhcmdldDogTm9kZSB9Pik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0bXVsdGlWYWx1ZUZpZWxkLmFkZEN1c3RvbURhdGEobmV3IEN1c3RvbURhdGEoeyBrZXk6IFwiZm9yd2FyZGVkSXRlbXNCaW5kaW5nXCIsIHZhbHVlOiB0aGlzLml0ZW1zIH0pKTtcblx0XHRcdHJldHVybiB0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkID8gZm9ybXdyYXBwZXIgOiBtdWx0aVZhbHVlRmllbGQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHRlciBmb3IgdGhlIHJlYWRPbmx5IHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gcmVhZE9ubHlcblx0ICovXG5cdHNldFJlYWRPbmx5KHJlYWRPbmx5OiBib29sZWFuKTogdm9pZCB7XG5cdFx0c3VwZXIuc2V0UHJvcGVydHkoXCJyZWFkT25seVwiLCByZWFkT25seSk7XG5cdFx0dGhpcy51cGRhdGVFZGl0TW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHRlciBmb3IgdGhlIF9pc0luRWRpdE1vZGUgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSBpbkVkaXRNb2RlXG5cdCAqL1xuXHRzZXRfaXNJbkVkaXRNb2RlKGluRWRpdE1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRzdXBlci5zZXRQcm9wZXJ0eShcIl9pc0luRWRpdE1vZGVcIiwgaW5FZGl0TW9kZSk7XG5cdFx0dGhpcy51cGRhdGVFZGl0TW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqL1xuXHRnZXRNdWx0aVZhbHVlRmllbGQoKTogTXVsdGlWYWx1ZUZpZWxkIHtcblx0XHRpZiAodGhpcy5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCgpKSB7XG5cdFx0XHRyZXR1cm4gKCh0aGlzLmNvbnRlbnQgYXMgRm9ybUVsZW1lbnRXcmFwcGVyKS5jb250ZW50IGFzIEhCb3gpLmdldEl0ZW1zKClbMF0gYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50IGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSBlZGl0IG1vZGUgYmFzZWQgb24gdGhlIHJlYWRPbmx5IGFuZCBfaXNJbkVkaXRNb2RlIHByb3BlcnRpZXMuXG5cdCAqL1xuXHR1cGRhdGVFZGl0TW9kZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBtdWx0aXZhbHVlRmllbGQgPSB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpO1xuXHRcdGlmICh0aGlzLnJlYWRPbmx5ID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0XHRtdWx0aXZhbHVlRmllbGQuc2V0RWRpdE1vZGUoXCJEaXNwbGF5XCIpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5yZWFkT25seSA9PT0gZmFsc2UgJiYgdGhpcy5pdGVtcykge1xuXHRcdFx0Ly9yZWFkT25seSBmYWxzZSBjYW4gb25seSBoYXZlIGltcGFjdCBpZiBpdGVtcyBhcmUgcHJvdmlkZWRcblx0XHRcdGlmICh0aGlzLl9pc0luRWRpdE1vZGUpIHtcblx0XHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRWRpdGFibGVcIjtcblx0XHRcdFx0bXVsdGl2YWx1ZUZpZWxkLnNldEVkaXRNb2RlKFwiRWRpdGFibGVcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0XHRcdG11bHRpdmFsdWVGaWVsZC5zZXRFZGl0TW9kZShcIkRpc3BsYXlcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGlmIHJlYWRPbmx5IGlzIG5vdCBleHBsaWNpdGx5IHNldCB3ZSBrZWVwIHRlaCBzdGFuZGFyZCBiZWhhdmlvclxuXHR9XG5cblx0LyoqXG5cdCAqIE9uIEJlZm9yZSByZW5kZXJpbmcgZnJvd2FyZCB0aGUgYXJpYUxhYmVsbGVkQnkgdG8gdGhlIG1kYyBNdWx0aVZhbHVlRmllbGQuXG5cdCAqL1xuXHRvbkJlZm9yZVJlbmRlcmluZygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jb250ZW50KSB7XG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpO1xuXHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5ID0gKHRoaXMgYXMgdW5rbm93biBhcyBFbmhhbmNlV2l0aFVJNTxNdWx0aVZhbHVlRmllbGRCbG9jaz4pLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cblx0XHRcdGZvciAoY29uc3Qgc0lkIG9mIGFBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnlzID0gbXVsdGlWYWx1ZUZpZWxkLmdldEFyaWFMYWJlbGxlZEJ5KCk7XG5cdFx0XHRcdGlmICghYUFyaWFMYWJlbGxlZEJ5cy5pbmNsdWRlcyhzSWQpKSB7XG5cdFx0XHRcdFx0bXVsdGlWYWx1ZUZpZWxkLmFkZEFyaWFMYWJlbGxlZEJ5KHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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
|
|
@@ -55,7 +55,9 @@ import type MetaPath from "sap/fe/core/helpers/MetaPath";
|
|
|
55
55
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
56
56
|
import { hasValueHelp } from "sap/fe/core/templating/PropertyHelper";
|
|
57
57
|
import * as UIFormatters from "sap/fe/core/templating/UIFormatters";
|
|
58
|
+
import FieldRuntime from "sap/fe/macros/field/FieldRuntime";
|
|
58
59
|
import FormatOptions from "sap/fe/macros/multivaluefield/FormatOptions";
|
|
60
|
+
import MultiValueFieldRuntime from "sap/fe/macros/multivaluefield/MultiValueFieldRuntime";
|
|
59
61
|
import Avatar from "sap/m/Avatar";
|
|
60
62
|
import HBox from "sap/m/HBox";
|
|
61
63
|
import UI5Event from "sap/ui/base/Event";
|
|
@@ -64,7 +66,6 @@ import Element from "sap/ui/core/Element";
|
|
|
64
66
|
import type { default as MdcValueHelp, ValueHelp$OpenedEvent } from "sap/ui/mdc/ValueHelp";
|
|
65
67
|
import type { MetaModelType } from "../../../../../../types/metamodel_types";
|
|
66
68
|
import ValueHelp from "./ValueHelp";
|
|
67
|
-
import FieldRuntime from "./field/FieldRuntime";
|
|
68
69
|
|
|
69
70
|
type MultiInputSettings = {
|
|
70
71
|
description: BindingToolkitExpression<string> | CompiledBindingToolkitExpression;
|
|
@@ -582,7 +583,7 @@ export default class MultiValueFieldBlock extends BuildingBlockBase<Control> {
|
|
|
582
583
|
ariaLabelledBy={this.ariaLabelledBy ? this.ariaLabelledBy : []}
|
|
583
584
|
showEmptyIndicator={this.formatOptions?.showEmptyIndicator}
|
|
584
585
|
label={label}
|
|
585
|
-
change={(
|
|
586
|
+
change={(MultiValueFieldRuntime.handleChange as unknown as Function).bind(MultiValueFieldRuntime, controller)}
|
|
586
587
|
fieldGroupIds={this.fieldGroupIds}
|
|
587
588
|
validateFieldGroup={FieldRuntime.onValidateFieldGroup}
|
|
588
589
|
>
|
|
@@ -171,6 +171,14 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
171
171
|
}
|
|
172
172
|
_exports = RichTextEditorBlock;
|
|
173
173
|
var _proto = RichTextEditorBlock.prototype;
|
|
174
|
+
_proto.createContentDebounced = function createContentDebounced() {
|
|
175
|
+
if (this._contentTimer) {
|
|
176
|
+
clearTimeout(this._contentTimer);
|
|
177
|
+
}
|
|
178
|
+
this._contentTimer = setTimeout(() => {
|
|
179
|
+
this.content = this.createContent();
|
|
180
|
+
}, 200);
|
|
181
|
+
};
|
|
174
182
|
_proto.exit = function exit() {
|
|
175
183
|
var _this$_displayContent, _this$_editContent;
|
|
176
184
|
(_this$_displayContent = this._displayContent) === null || _this$_displayContent === void 0 ? void 0 : _this$_displayContent.destroy();
|
|
@@ -190,11 +198,11 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
190
198
|
*/;
|
|
191
199
|
_proto.set_isInEditMode = function set_isInEditMode(inEditMode) {
|
|
192
200
|
_BuildingBlockBase.prototype.setProperty.call(this, "_isInEditMode", inEditMode);
|
|
193
|
-
this.
|
|
201
|
+
this.createContentDebounced();
|
|
194
202
|
};
|
|
195
203
|
_proto.setReadOnly = function setReadOnly(readOnly) {
|
|
196
204
|
_BuildingBlockBase.prototype.setProperty.call(this, "readOnly", readOnly);
|
|
197
|
-
this.
|
|
205
|
+
this.createContentDebounced();
|
|
198
206
|
};
|
|
199
207
|
/**
|
|
200
208
|
* Buttons groups need to be added when the RTE is ready, otherwise some of them are not available.
|
|
@@ -280,4 +288,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
280
288
|
_exports = RichTextEditorBlock;
|
|
281
289
|
return _exports;
|
|
282
290
|
}, false);
|
|
283
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSaWNoVGV4dEVkaXRvckJsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJyZXF1aXJlZCIsIl9kZWMzIiwiaXNCaW5kaW5nSW5mbyIsIl9kZWM0IiwiX2RlYzUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiZGVmYXVsdENsYXNzIiwiQnV0dG9uR3JvdXAiLCJfZGVjNiIsIlBsdWdpbkRlZmluaXRpb24iLCJfZGVjNyIsIl9kZWM4IiwiYmluZGFibGUiLCJfZGVjOSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJfaW5oZXJpdHNMb29zZSIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsImdldFBsdWdpbnMiLCJfdGhpcyRwbHVnaW5zIiwicGx1Z2luc0FycmF5IiwiZXhjbHVkZURlZmF1bHRQbHVnaW5zIiwibWFwIiwibmFtZSIsInBsdWdpbnMiLCJsZW5ndGgiLCJwbHVnaW4iLCJwdXNoIiwiZ2V0QnV0dG9uR3JvdXBzIiwiYnV0dG9uR3JvdXBzIiwiYnV0dG9uR3JvdXAiLCJfYnV0dG9uR3JvdXAkYnV0dG9ucyIsInZpc2libGUiLCJwcmlvcml0eSIsInJvdyIsImN1c3RvbVRvb2xiYXJQcmlvcml0eSIsImJ1dHRvbnMiLCJzcGxpdCIsImdldEVkaXRDb250ZW50IiwiX2VkaXRDb250ZW50IiwiZGVzdHJveSIsIl9qc3giLCJSaWNoVGV4dEVkaXRvciIsImlkIiwiY3JlYXRlSWQiLCJ2YWx1ZSIsImN1c3RvbVRvb2xiYXIiLCJlZGl0YWJsZSIsImVkaXRvclR5cGUiLCJzaG93R3JvdXBGb250U3R5bGUiLCJzaG93R3JvdXBUZXh0QWxpZ24iLCJzaG93R3JvdXBTdHJ1Y3R1cmUiLCJzaG93R3JvdXBGb250Iiwic2hvd0dyb3VwQ2xpcGJvYXJkIiwic2hvd0dyb3VwSW5zZXJ0Iiwic2hvd0dyb3VwTGluayIsInNob3dHcm91cFVuZG8iLCJzYW5pdGl6ZVZhbHVlIiwid3JhcHBpbmciLCJ3aWR0aCIsInVuZGVmaW5lZCIsImF0dGFjaFJlYWR5IiwiYWRkQnV0dG9uR3JvdXBzIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJfZXhwb3J0cyIsIl9wcm90byIsInByb3RvdHlwZSIsImV4aXQiLCJfdGhpcyRfZGlzcGxheUNvbnRlbnQiLCJfdGhpcyRfZWRpdENvbnRlbnQiLCJfZGlzcGxheUNvbnRlbnQiLCJzZXRfaXNJbkVkaXRNb2RlIiwiaW5FZGl0TW9kZSIsInNldFByb3BlcnR5Iiwic2V0UmVhZE9ubHkiLCJyZWFkT25seSIsIl90aGlzJF9lZGl0Q29udGVudDMiLCJsYXRlQnV0dG9uR3JvdXBzIiwicmV2ZXJzZSIsImxhdGVCdXR0b25Hcm91cCIsIl90aGlzJF9lZGl0Q29udGVudDIiLCJhZGRCdXR0b25Hcm91cCIsImRldGFjaFJlYWR5IiwiZ2V0RGlzcGxheUNvbnRlbnQiLCJGb3JtYXR0ZWRUZXh0IiwiaHRtbFRleHQiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUmljaFRleHRFZGl0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tCYXNlXCI7XG5pbXBvcnQgeyBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCBCdXR0b25Hcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9yaWNodGV4dGVkaXRvci9CdXR0b25Hcm91cFwiO1xuaW1wb3J0IFBsdWdpbkRlZmluaXRpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvcmljaHRleHRlZGl0b3IvUGx1Z2luXCI7XG5pbXBvcnQgRm9ybWF0dGVkVGV4dCBmcm9tIFwic2FwL20vRm9ybWF0dGVkVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IFJpY2hUZXh0RWRpdG9yIGZyb20gXCJzYXAvdWkvcmljaHRleHRlZGl0b3IvUmljaFRleHRFZGl0b3JcIjtcblxudHlwZSBQbHVnaW5EZWZpbml0aW9uRGF0YSA9IHtcblx0bmFtZTogc3RyaW5nO1xufTtcbnR5cGUgQnV0dG9uR3JvdXBEYXRhID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHZpc2libGU6IGJvb2xlYW47XG5cdHByaW9yaXR5PzogbnVtYmVyO1xuXHRyb3c/OiBudW1iZXI7XG5cdGN1c3RvbVRvb2xiYXJQcmlvcml0eT86IG51bWJlcjtcblx0YnV0dG9uczogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHRoYXQgZXhwb3NlcyB0aGUgUmljaFRleHRFZGl0b3IgVUk1IGNvbnRyb2wuXG4gKlxuICogSXQncyB1c2VkIHRvIGVudGVyIGZvcm1hdHRlZCB0ZXh0LCBhbmQgdXNlcyB0aGUgdGhpcmQtcGFydHkgY29tcG9uZW50IGNhbGxlZCBUaW55TUNFLlxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuMTE3LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5SaWNoVGV4dEVkaXRvclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmljaFRleHRFZGl0b3JCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPENvbnRyb2w+IHtcblx0LyoqXG5cdCAqIElEIG9mIHRoZSBlZGl0b3Jcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdGlkITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgdmFsdWUgY29udGFpbmVkIGluIHRoZSBlZGl0b3IuIFlvdSBjYW4gdXNlIHRoaXMgYXR0cmlidXRlIHRvIHNldCBhIGRlZmF1bHQgdmFsdWUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYW55XCIsIGlzQmluZGluZ0luZm86IHRydWUgfSlcblx0dmFsdWU/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXG5cdC8qKlxuXHQgKiBVc2UgdGhlIHJlYWRPbmx5IGF0dHJpYnV0ZSB0byBvdmVycmlkZSB0aGUgZWRpdCBmbG93IG9mIHRoZSBwYWdlLlxuXHQgKiBCeSBzZXR0aW5nICdyZWFkT25seScgdG8gdHJ1ZSwgYSBGb3JtYXR0ZWRUZXh0IHdpbGwgYmUgZGlzcGxheWVkIGluc3RlYWQgb2YgdGhlIGVkaXRvci5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVhZE9ubHk6IFByb3BlcnR5QmluZGluZ0luZm8gPSBmYWxzZTtcblxuXHQvKipcblx0ICogV2l0aCB0aGUgJ2J1dHRvbkdyb3VwcycgYXR0cmlidXRlIHlvdSBjYW4gY3VzdG9taXplIHRoZSBidXR0b25zIHRoYXQgYXJlIGRpc3BsYXllZCBvbiB0aGUgdG9vbGJhciBvZiB0aGUgZWRpdG9yLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MucmljaHRleHRlZGl0b3IuQnV0dG9uR3JvdXBcIiwgbXVsdGlwbGU6IHRydWUsIGRlZmF1bHRDbGFzczogQnV0dG9uR3JvdXAgfSlcblx0YnV0dG9uR3JvdXBzOiBCdXR0b25Hcm91cFtdID0gW107XG5cblx0LyoqXG5cdCAqIFdpdGggdGhlICdwbHVnaW5zJyBhdHRyaWJ1dGUgeW91IGNhbiBjdXN0b21pemUgdGhlIHBsdWdpbnMgdGhhdCB3aWxsIGJlIGxvYWRlZCBieSB0aGUgZWRpdG9yLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MucmljaHRleHRlZGl0b3IuUGx1Z2luXCIsIG11bHRpcGxlOiB0cnVlLCBkZWZhdWx0Q2xhc3M6IFBsdWdpbkRlZmluaXRpb24gfSlcblx0cGx1Z2lucz86IFBsdWdpbkRlZmluaXRpb25bXTtcblxuXHQvKipcblx0ICogV2l0aCB0aGUgJ2V4Y2x1ZGVEZWZhdWx0UGx1Z2lucycgeW91IGNhbiBhc2sgdG8gcmVtb3ZlIHRoZSBwbHVnaW5zIHRoYXQgd2lsbCBiZSBhZGRlZCBieSBkZWZhdWx0XG5cdCAqIFRoZSBkZWZhdWx0IHBsdWdpbnMgYXJlIFwiZW1vdGljb25zXCIgXCJkaXJlY3Rpb25hbGl0eVwiIFwiaW1hZ2VcIiBcInRhYmxlXCIgXCJsaW5rXCIgXCJwb3dlcnBhc3RlXCIuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGV4Y2x1ZGVEZWZhdWx0UGx1Z2lucyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBVc2UgdGhlICdyZXF1aXJlZCcgYXR0cmlidXRlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlZGl0b3IgaXMgZmlsbGVkIHdpdGggc29tZSB0ZXh0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFueVwiLCBiaW5kYWJsZTogZmFsc2UgfSlcblx0cmVxdWlyZWQ6IFByb3BlcnR5QmluZGluZ0luZm8gPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRfaXNJbkVkaXRNb2RlOiBQcm9wZXJ0eUJpbmRpbmdJbmZvID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBfZGlzcGxheUNvbnRlbnQ/OiBGb3JtYXR0ZWRUZXh0O1xuXG5cdHByaXZhdGUgX2VkaXRDb250ZW50PzogUmljaFRleHRFZGl0b3I7XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxSaWNoVGV4dEVkaXRvckJsb2NrPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHByb3BlcnRpZXMuX2lzSW5FZGl0TW9kZSA9IGNvbXBpbGVFeHByZXNzaW9uKFVJLklzRWRpdGFibGUpO1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHRleGl0KCk6IHZvaWQge1xuXHRcdHRoaXMuX2Rpc3BsYXlDb250ZW50Py5kZXN0cm95KCk7XG5cdFx0dGhpcy5fZWRpdENvbnRlbnQ/LmRlc3Ryb3koKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdGhhdCByZXR1cm5zIHRoZSBidXR0b24gY3VzdG9taXphdGlvbnMgZm9yIHRoZSBlZGl0b3IgdG9vbGJhci5cblx0ICogQmVjYXVzZSBhbGwgdmFsdWVzIGNvbWUgYXMgc3RyaW5ncyBmcm9tIFhNTCwgc29tZSBwYXJzaW5nIG5lZWRzIHRvIGJlIGRvbmUgdG8gZ2V0IGF0dHJpYnV0ZXMgd2l0aCB0aGUgY29ycmVjdCB0eXBlLlxuXHQgKiBAcmV0dXJucyBUaGUgYnV0dG9uIGdyb3Vwcy5cblx0ICovXG5cdGdldFBsdWdpbnMgPSAoKTogeyBwbHVnaW5zPzogUGx1Z2luRGVmaW5pdGlvbkRhdGFbXSB9ID0+IHtcblx0XHRsZXQgcGx1Z2luc0FycmF5OiBQbHVnaW5EZWZpbml0aW9uRGF0YVtdIHwgdW5kZWZpbmVkO1xuXHRcdGlmICh0aGlzLmV4Y2x1ZGVEZWZhdWx0UGx1Z2lucykge1xuXHRcdFx0cGx1Z2luc0FycmF5ID0gW107XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBsdWdpbnNBcnJheSA9IFtcImVtb3RpY29uc1wiLCBcImRpcmVjdGlvbmFsaXR5XCIsIFwiaW1hZ2VcIiwgXCJ0YWJsZVwiLCBcImxpbmtcIiwgXCJwb3dlcnBhc3RlXCJdLm1hcCgobmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdHJldHVybiB7IG5hbWU6IG5hbWUgfTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAodGhpcy5wbHVnaW5zPy5sZW5ndGgpIHtcblx0XHRcdGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykge1xuXHRcdFx0XHRwbHVnaW5zQXJyYXkucHVzaChwbHVnaW4pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4geyBwbHVnaW5zOiBwbHVnaW5zQXJyYXkgfTtcblx0fTtcblxuXHQvKipcblx0ICogTWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgYnV0dG9uIGN1c3RvbWl6YXRpb25zIGZvciB0aGUgZWRpdG9yIHRvb2xiYXIuXG5cdCAqIEJlY2F1c2UgYWxsIHZhbHVlcyBjb21lIGFzIHN0cmluZ3MgZnJvbSBYTUwsIHNvbWUgcGFyc2luZyBuZWVkcyB0byBiZSBkb25lIHRvIGdldCBhdHRyaWJ1dGVzIHdpdGggdGhlIGNvcnJlY3QgdHlwZS5cblx0ICogQHJldHVybnMgVGhlIGJ1dHRvbiBncm91cHMuXG5cdCAqL1xuXHRnZXRCdXR0b25Hcm91cHMgPSAoKTogQnV0dG9uR3JvdXBEYXRhW10gPT4ge1xuXHRcdGlmICh0aGlzLmJ1dHRvbkdyb3VwcyAmJiB0aGlzLmJ1dHRvbkdyb3Vwcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5idXR0b25Hcm91cHMubWFwKChidXR0b25Hcm91cDogQnV0dG9uR3JvdXApID0+ICh7XG5cdFx0XHRcdG5hbWU6IGJ1dHRvbkdyb3VwLm5hbWUgPz8gXCJcIixcblx0XHRcdFx0dmlzaWJsZTogYnV0dG9uR3JvdXAudmlzaWJsZSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHRcdHByaW9yaXR5OiBidXR0b25Hcm91cC5wcmlvcml0eSxcblx0XHRcdFx0cm93OiBidXR0b25Hcm91cC5yb3csXG5cdFx0XHRcdGN1c3RvbVRvb2xiYXJQcmlvcml0eTogYnV0dG9uR3JvdXAuY3VzdG9tVG9vbGJhclByaW9yaXR5LFxuXHRcdFx0XHRidXR0b25zOiBidXR0b25Hcm91cC5idXR0b25zPy5zcGxpdChcIixcIikgfHwgW11cblx0XHRcdH0pKTtcblx0XHR9XG5cdFx0cmV0dXJuIFtdO1xuXHR9O1xuXG5cdHNldF9pc0luRWRpdE1vZGUoaW5FZGl0TW9kZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHN1cGVyLnNldFByb3BlcnR5KFwiX2lzSW5FZGl0TW9kZVwiLCBpbkVkaXRNb2RlKTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0fVxuXG5cdHNldFJlYWRPbmx5KHJlYWRPbmx5OiBib29sZWFuKTogdm9pZCB7XG5cdFx0c3VwZXIuc2V0UHJvcGVydHkoXCJyZWFkT25seVwiLCByZWFkT25seSk7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdH1cblxuXHRnZXRFZGl0Q29udGVudCA9ICgpOiBSaWNoVGV4dEVkaXRvciA9PiB7XG5cdFx0aWYgKHRoaXMuX2VkaXRDb250ZW50KSB7XG5cdFx0XHQvLyBJdCdzIGJldHRlciB0byBkZXN0cm95IHRoZSByaWNoIHRleHQgZWRpdG9yIGFzIGluIHNvbWUgY2FzZSB3aXRoIHNsb3cgbWFjaGluZSBzd2l0Y2hpbmcgYmV0d2VlbiBlZGl0IGFuZCBkaXNwbGF5IG1heSBicmVhayBpdFxuXHRcdFx0dGhpcy5fZWRpdENvbnRlbnQuZGVzdHJveSgpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2VkaXRDb250ZW50ID0gKFxuXHRcdFx0PFJpY2hUZXh0RWRpdG9yXG5cdFx0XHRcdGlkPXt0aGlzLmNyZWF0ZUlkKFwiX3J0ZVwiKX1cblx0XHRcdFx0dmFsdWU9e3RoaXMudmFsdWV9XG5cdFx0XHRcdHZpc2libGU9e3RydWV9XG5cdFx0XHRcdGN1c3RvbVRvb2xiYXI9e3RydWV9XG5cdFx0XHRcdGVkaXRhYmxlPXt0cnVlfVxuXHRcdFx0XHRlZGl0b3JUeXBlPVwiVGlueU1DRTZcIlxuXHRcdFx0XHRzaG93R3JvdXBGb250U3R5bGU9e3RydWV9XG5cdFx0XHRcdHNob3dHcm91cFRleHRBbGlnbj17dHJ1ZX1cblx0XHRcdFx0c2hvd0dyb3VwU3RydWN0dXJlPXt0cnVlfVxuXHRcdFx0XHRzaG93R3JvdXBGb250PXtmYWxzZX1cblx0XHRcdFx0c2hvd0dyb3VwQ2xpcGJvYXJkPXt0cnVlfVxuXHRcdFx0XHRzaG93R3JvdXBJbnNlcnQ9e2ZhbHNlfVxuXHRcdFx0XHRzaG93R3JvdXBMaW5rPXtmYWxzZX1cblx0XHRcdFx0c2hvd0dyb3VwVW5kbz17ZmFsc2V9XG5cdFx0XHRcdHNhbml0aXplVmFsdWU9e3RydWV9XG5cdFx0XHRcdHdyYXBwaW5nPXt0cnVlfVxuXHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdHJlcXVpcmVkPXt0aGlzLnJlcXVpcmVkfVxuXHRcdFx0XHR7Li4udGhpcy5nZXRQbHVnaW5zKCl9XG5cdFx0XHRcdGJ1dHRvbkdyb3Vwcz17dGhpcy5idXR0b25Hcm91cHMubGVuZ3RoID4gMCA/IFtdIDogdW5kZWZpbmVkfVxuXHRcdFx0Lz5cblx0XHQpIGFzIFJpY2hUZXh0RWRpdG9yO1xuXG5cdFx0dGhpcy5fZWRpdENvbnRlbnQuYXR0YWNoUmVhZHkodGhpcy5hZGRCdXR0b25Hcm91cHMsIHRoaXMpO1xuXHRcdHJldHVybiB0aGlzLl9lZGl0Q29udGVudDtcblx0fTtcblxuXHQvKipcblx0ICogQnV0dG9ucyBncm91cHMgbmVlZCB0byBiZSBhZGRlZCB3aGVuIHRoZSBSVEUgaXMgcmVhZHksIG90aGVyd2lzZSBzb21lIG9mIHRoZW0gYXJlIG5vdCBhdmFpbGFibGUuXG5cdCAqL1xuXHRhZGRCdXR0b25Hcm91cHMoKTogdm9pZCB7XG5cdFx0Y29uc3QgbGF0ZUJ1dHRvbkdyb3VwcyA9IHRoaXMuZ2V0QnV0dG9uR3JvdXBzKCkucmV2ZXJzZSgpO1xuXHRcdC8vIFRoZXkgYWxzbyBzb21laG93IG5lZWQgdG8gYmUgYWRkZWQgaW4gcmV2ZXJzZSBiZWNhdXNlIHRoZXkgYWxzbyBnZXQgYWRkZWQgaW4gdGhlIGZpcnN0IHBsYWNlIDpEXG5cdFx0Zm9yIChjb25zdCBsYXRlQnV0dG9uR3JvdXAgb2YgbGF0ZUJ1dHRvbkdyb3Vwcykge1xuXHRcdFx0dGhpcy5fZWRpdENvbnRlbnQ/LmFkZEJ1dHRvbkdyb3VwKGxhdGVCdXR0b25Hcm91cCk7XG5cdFx0fVxuXHRcdHRoaXMuX2VkaXRDb250ZW50Py5kZXRhY2hSZWFkeSh0aGlzLmFkZEJ1dHRvbkdyb3VwcywgdGhpcyk7XG5cdH1cblxuXHRnZXREaXNwbGF5Q29udGVudCgpOiBGb3JtYXR0ZWRUZXh0IHtcblx0XHRpZiAodGhpcy5fZGlzcGxheUNvbnRlbnQpIHtcblx0XHRcdHRoaXMuX2Rpc3BsYXlDb250ZW50LmRlc3Ryb3koKTtcblx0XHR9XG5cdFx0dGhpcy5fZGlzcGxheUNvbnRlbnQgPSAoPEZvcm1hdHRlZFRleHQgaHRtbFRleHQ9e3RoaXMudmFsdWV9IC8+KSBhcyBGb3JtYXR0ZWRUZXh0O1xuXHRcdHJldHVybiB0aGlzLl9kaXNwbGF5Q29udGVudDtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogUmljaFRleHRFZGl0b3IgfCBGb3JtYXR0ZWRUZXh0IHtcblx0XHRpZiAodGhpcy5faXNJbkVkaXRNb2RlICYmICF0aGlzLnJlYWRPbmx5KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRFZGl0Q29udGVudCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXREaXNwbGF5Q29udGVudCgpO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQVdBO0VBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFxQkEsbUJBQW1CLElBQUFDLElBQUEsR0FEdkNDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFBQyxLQUFBLEdBSzdDQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FPNUNILFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsS0FBSztJQUFFRyxhQUFhLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQVE5Q0wsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBTzdCQyxXQUFXLENBQUM7SUFBRU4sSUFBSSxFQUFFLDBDQUEwQztJQUFFTyxRQUFRLEVBQUUsSUFBSTtJQUFFQyxZQUFZLEVBQUVDO0VBQVksQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FPNUdKLFdBQVcsQ0FBQztJQUFFTixJQUFJLEVBQUUscUNBQXFDO0lBQUVPLFFBQVEsRUFBRSxJQUFJO0lBQUVDLFlBQVksRUFBRUc7RUFBaUIsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FRNUdiLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQWEsS0FBQSxHQU83QmQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxLQUFLO0lBQUVjLFFBQVEsRUFBRTtFQUFNLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzFDaEIsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBSixJQUFBLENBQUFvQixNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGtCQUFBO0lBQUFDLGNBQUEsQ0FBQXhCLG1CQUFBLEVBQUF1QixrQkFBQTtJQWxEOUI7QUFDRDtBQUNBOztJQUlDO0FBQ0Q7QUFDQTtBQUNBOztJQUlDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0lBSUM7QUFDRDtBQUNBO0FBQ0E7O0lBSUM7QUFDRDtBQUNBO0FBQ0E7O0lBSUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7SUFJQztBQUNEO0FBQ0E7QUFDQTs7SUFXQyxTQUFBdkIsb0JBQVl5QixVQUFnRSxFQUFFQyxNQUF5QixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN4R0YsVUFBVSxDQUFDRyxhQUFhLEdBQUdDLGlCQUFpQixDQUFDQyxFQUFFLENBQUNDLFVBQVUsQ0FBQztNQUMzREosS0FBQSxHQUFBSixrQkFBQSxDQUFBUyxJQUFBLE9BQU1QLFVBQVUsRUFBRUMsTUFBTSxDQUFDO01BQUNPLDBCQUFBLENBQUFOLEtBQUEsUUFBQU8sV0FBQSxFQUFBQyxzQkFBQSxDQUFBUixLQUFBO01BQUFNLDBCQUFBLENBQUFOLEtBQUEsV0FBQVMsWUFBQSxFQUFBRCxzQkFBQSxDQUFBUixLQUFBO01BQUFNLDBCQUFBLENBQUFOLEtBQUEsY0FBQVUsWUFBQSxFQUFBRixzQkFBQSxDQUFBUixLQUFBO01BQUFNLDBCQUFBLENBQUFOLEtBQUEsa0JBQUFXLFlBQUEsRUFBQUgsc0JBQUEsQ0FBQVIsS0FBQTtNQUFBTSwwQkFBQSxDQUFBTixLQUFBLGFBQUFZLFlBQUEsRUFBQUosc0JBQUEsQ0FBQVIsS0FBQTtNQUFBTSwwQkFBQSxDQUFBTixLQUFBLDJCQUFBYSxZQUFBLEVBQUFMLHNCQUFBLENBQUFSLEtBQUE7TUFBQU0sMEJBQUEsQ0FBQU4sS0FBQSxjQUFBYyxZQUFBLEVBQUFOLHNCQUFBLENBQUFSLEtBQUE7TUFBQU0sMEJBQUEsQ0FBQU4sS0FBQSxtQkFBQWUsWUFBQSxFQUFBUCxzQkFBQSxDQUFBUixLQUFBO01BQUFBLEtBQUEsQ0FjM0JnQixVQUFVLEdBQUcsTUFBNEM7UUFBQSxJQUFBQyxhQUFBO1FBQ3hELElBQUlDLFlBQWdEO1FBQ3BELElBQUlsQixLQUFBLENBQUttQixxQkFBcUIsRUFBRTtVQUMvQkQsWUFBWSxHQUFHLEVBQUU7UUFDbEIsQ0FBQyxNQUFNO1VBQ05BLFlBQVksR0FBRyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQ0UsR0FBRyxDQUFFQyxJQUFZLElBQUs7WUFDNUcsT0FBTztjQUFFQSxJQUFJLEVBQUVBO1lBQUssQ0FBQztVQUN0QixDQUFDLENBQUM7UUFDSDtRQUNBLEtBQUFKLGFBQUEsR0FBSWpCLEtBQUEsQ0FBS3NCLE9BQU8sY0FBQUwsYUFBQSxlQUFaQSxhQUFBLENBQWNNLE1BQU0sRUFBRTtVQUN6QixLQUFLLE1BQU1DLE1BQU0sSUFBSXhCLEtBQUEsQ0FBS3NCLE9BQU8sRUFBRTtZQUNsQ0osWUFBWSxDQUFDTyxJQUFJLENBQUNELE1BQU0sQ0FBQztVQUMxQjtRQUNEO1FBQ0EsT0FBTztVQUFFRixPQUFPLEVBQUVKO1FBQWEsQ0FBQztNQUNqQyxDQUFDO01BQUFsQixLQUFBLENBT0QwQixlQUFlLEdBQUcsTUFBeUI7UUFDMUMsSUFBSTFCLEtBQUEsQ0FBSzJCLFlBQVksSUFBSTNCLEtBQUEsQ0FBSzJCLFlBQVksQ0FBQ0osTUFBTSxHQUFHLENBQUMsRUFBRTtVQUN0RCxPQUFPdkIsS0FBQSxDQUFLMkIsWUFBWSxDQUFDUCxHQUFHLENBQUVRLFdBQXdCO1lBQUEsSUFBQUMsb0JBQUE7WUFBQSxPQUFNO2NBQzNEUixJQUFJLEVBQUVPLFdBQVcsQ0FBQ1AsSUFBSSxJQUFJLEVBQUU7Y0FDNUJTLE9BQU8sRUFBRUYsV0FBVyxDQUFDRSxPQUFPLEtBQUssTUFBTTtjQUN2Q0MsUUFBUSxFQUFFSCxXQUFXLENBQUNHLFFBQVE7Y0FDOUJDLEdBQUcsRUFBRUosV0FBVyxDQUFDSSxHQUFHO2NBQ3BCQyxxQkFBcUIsRUFBRUwsV0FBVyxDQUFDSyxxQkFBcUI7Y0FDeERDLE9BQU8sRUFBRSxFQUFBTCxvQkFBQSxHQUFBRCxXQUFXLENBQUNNLE9BQU8sY0FBQUwsb0JBQUEsdUJBQW5CQSxvQkFBQSxDQUFxQk0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFJO1lBQzdDLENBQUM7VUFBQSxDQUFDLENBQUM7UUFDSjtRQUNBLE9BQU8sRUFBRTtNQUNWLENBQUM7TUFBQW5DLEtBQUEsQ0FZRG9DLGNBQWMsR0FBRyxNQUFzQjtRQUN0QyxJQUFJcEMsS0FBQSxDQUFLcUMsWUFBWSxFQUFFO1VBQ3RCO1VBQ0FyQyxLQUFBLENBQUtxQyxZQUFZLENBQUNDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCO1FBRUF0QyxLQUFBLENBQUtxQyxZQUFZLEdBQ2hCRSxJQUFBLENBQUNDLGNBQWM7VUFDZEMsRUFBRSxFQUFFekMsS0FBQSxDQUFLMEMsUUFBUSxDQUFDLE1BQU0sQ0FBRTtVQUMxQkMsS0FBSyxFQUFFM0MsS0FBQSxDQUFLMkMsS0FBTTtVQUNsQmIsT0FBTyxFQUFFLElBQUs7VUFDZGMsYUFBYSxFQUFFLElBQUs7VUFDcEJDLFFBQVEsRUFBRSxJQUFLO1VBQ2ZDLFVBQVUsRUFBQyxVQUFVO1VBQ3JCQyxrQkFBa0IsRUFBRSxJQUFLO1VBQ3pCQyxrQkFBa0IsRUFBRSxJQUFLO1VBQ3pCQyxrQkFBa0IsRUFBRSxJQUFLO1VBQ3pCQyxhQUFhLEVBQUUsS0FBTTtVQUNyQkMsa0JBQWtCLEVBQUUsSUFBSztVQUN6QkMsZUFBZSxFQUFFLEtBQU07VUFDdkJDLGFBQWEsRUFBRSxLQUFNO1VBQ3JCQyxhQUFhLEVBQUUsS0FBTTtVQUNyQkMsYUFBYSxFQUFFLElBQUs7VUFDcEJDLFFBQVEsRUFBRSxJQUFLO1VBQ2ZDLEtBQUssRUFBRSxNQUFPO1VBQ2Q5RSxRQUFRLEVBQUVxQixLQUFBLENBQUtyQixRQUFTO1VBQUEsR0FDcEJxQixLQUFBLENBQUtnQixVQUFVLENBQUMsQ0FBQztVQUNyQlcsWUFBWSxFQUFFM0IsS0FBQSxDQUFLMkIsWUFBWSxDQUFDSixNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBR21DO1FBQVUsQ0FDNUQsQ0FDaUI7UUFFbkIxRCxLQUFBLENBQUtxQyxZQUFZLENBQUNzQixXQUFXLENBQUMzRCxLQUFBLENBQUs0RCxlQUFlLEVBQUFwRCxzQkFBQSxDQUFBUixLQUFBLENBQU0sQ0FBQztRQUN6RCxPQUFPQSxLQUFBLENBQUtxQyxZQUFZO01BQ3pCLENBQUM7TUE1RkFyQyxLQUFBLENBQUs2RCxPQUFPLEdBQUc3RCxLQUFBLENBQUs4RCxhQUFhLENBQUMsQ0FBQztNQUFDLE9BQUE5RCxLQUFBO0lBQ3JDO0lBQUMrRCxRQUFBLEdBQUExRixtQkFBQTtJQUFBLElBQUEyRixNQUFBLEdBQUEzRixtQkFBQSxDQUFBNEYsU0FBQTtJQUFBRCxNQUFBLENBRURFLElBQUksR0FBSixTQUFBQSxLQUFBLEVBQWE7TUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxrQkFBQTtNQUNaLENBQUFELHFCQUFBLE9BQUksQ0FBQ0UsZUFBZSxjQUFBRixxQkFBQSx1QkFBcEJBLHFCQUFBLENBQXNCN0IsT0FBTyxDQUFDLENBQUM7TUFDL0IsQ0FBQThCLGtCQUFBLE9BQUksQ0FBQy9CLFlBQVksY0FBQStCLGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUI5QixPQUFPLENBQUMsQ0FBQztJQUM3Qjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBOztJQWtCQztBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQTBCLE1BQUEsQ0FtQkFNLGdCQUFnQixHQUFoQixTQUFBQSxpQkFBaUJDLFVBQW1CLEVBQVE7TUFDM0MzRSxrQkFBQSxDQUFBcUUsU0FBQSxDQUFNTyxXQUFXLENBQUFuRSxJQUFBLE9BQUMsZUFBZSxFQUFFa0UsVUFBVTtNQUM3QyxJQUFJLENBQUNWLE9BQU8sR0FBRyxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFBQUUsTUFBQSxDQUVEUyxXQUFXLEdBQVgsU0FBQUEsWUFBWUMsUUFBaUIsRUFBUTtNQUNwQzlFLGtCQUFBLENBQUFxRSxTQUFBLENBQU1PLFdBQVcsQ0FBQW5FLElBQUEsT0FBQyxVQUFVLEVBQUVxRSxRQUFRO01BQ3RDLElBQUksQ0FBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQXFDRDtBQUNEO0FBQ0E7SUFGQ0UsTUFBQSxDQUdBSixlQUFlLEdBQWYsU0FBQUEsZ0JBQUEsRUFBd0I7TUFBQSxJQUFBZSxtQkFBQTtNQUN2QixNQUFNQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUNsRCxlQUFlLENBQUMsQ0FBQyxDQUFDbUQsT0FBTyxDQUFDLENBQUM7TUFDekQ7TUFDQSxLQUFLLE1BQU1DLGVBQWUsSUFBSUYsZ0JBQWdCLEVBQUU7UUFBQSxJQUFBRyxtQkFBQTtRQUMvQyxDQUFBQSxtQkFBQSxPQUFJLENBQUMxQyxZQUFZLGNBQUEwQyxtQkFBQSx1QkFBakJBLG1CQUFBLENBQW1CQyxjQUFjLENBQUNGLGVBQWUsQ0FBQztNQUNuRDtNQUNBLENBQUFILG1CQUFBLE9BQUksQ0FBQ3RDLFlBQVksY0FBQXNDLG1CQUFBLHVCQUFqQkEsbUJBQUEsQ0FBbUJNLFdBQVcsQ0FBQyxJQUFJLENBQUNyQixlQUFlLEVBQUUsSUFBSSxDQUFDO0lBQzNELENBQUM7SUFBQUksTUFBQSxDQUVEa0IsaUJBQWlCLEdBQWpCLFNBQUFBLGtCQUFBLEVBQW1DO01BQ2xDLElBQUksSUFBSSxDQUFDYixlQUFlLEVBQUU7UUFDekIsSUFBSSxDQUFDQSxlQUFlLENBQUMvQixPQUFPLENBQUMsQ0FBQztNQUMvQjtNQUNBLElBQUksQ0FBQytCLGVBQWUsR0FBSTlCLElBQUEsQ0FBQzRDLGFBQWE7UUFBQ0MsUUFBUSxFQUFFLElBQUksQ0FBQ3pDO01BQU0sQ0FBRSxDQUFtQjtNQUNqRixPQUFPLElBQUksQ0FBQzBCLGVBQWU7SUFDNUIsQ0FBQztJQUFBTCxNQUFBLENBRURGLGFBQWEsR0FBYixTQUFBQSxjQUFBLEVBQWdEO01BQy9DLElBQUksSUFBSSxDQUFDN0QsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDeUUsUUFBUSxFQUFFO1FBQ3pDLE9BQU8sSUFBSSxDQUFDdEMsY0FBYyxDQUFDLENBQUM7TUFDN0IsQ0FBQyxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUM4QyxpQkFBaUIsQ0FBQyxDQUFDO01BQ2hDO0lBQ0QsQ0FBQztJQUFBLE9BQUE3RyxtQkFBQTtFQUFBLEVBckwrQ2dILGlCQUFpQixJQUFBOUUsV0FBQSxHQUFBK0UseUJBQUEsQ0FBQTNGLE9BQUEsQ0FBQXNFLFNBQUEsU0FBQXpGLEtBQUE7SUFBQStHLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBakYsWUFBQSxHQUFBNkUseUJBQUEsQ0FBQTNGLE9BQUEsQ0FBQXNFLFNBQUEsWUFBQXJGLEtBQUE7SUFBQTJHLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBaEYsWUFBQSxHQUFBNEUseUJBQUEsQ0FBQTNGLE9BQUEsQ0FBQXNFLFNBQUEsZUFBQW5GLEtBQUE7SUFBQXlHLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9Bb0JqQyxLQUFLO0lBQUE7RUFBQSxJQUFBL0UsWUFBQSxHQUFBMkUseUJBQUEsQ0FBQTNGLE9BQUEsQ0FBQXNFLFNBQUEsbUJBQUFsRixLQUFBO0lBQUF3RyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQU9QLEVBQUU7SUFBQTtFQUFBLElBQUE5RSxZQUFBLEdBQUEwRSx5QkFBQSxDQUFBM0YsT0FBQSxDQUFBc0UsU0FBQSxjQUFBN0UsS0FBQTtJQUFBbUcsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE3RSxZQUFBLEdBQUF5RSx5QkFBQSxDQUFBM0YsT0FBQSxDQUFBc0UsU0FBQSw0QkFBQTNFLEtBQUE7SUFBQWlHLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BZVIsS0FBSztJQUFBO0VBQUEsSUFBQTVFLFlBQUEsR0FBQXdFLHlCQUFBLENBQUEzRixPQUFBLENBQUFzRSxTQUFBLGVBQUExRSxLQUFBO0lBQUFnRyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQU9HLEtBQUs7SUFBQTtFQUFBLElBQUEzRSxZQUFBLEdBQUF1RSx5QkFBQSxDQUFBM0YsT0FBQSxDQUFBc0UsU0FBQSxvQkFBQXhFLEtBQUE7SUFBQThGLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BR0EsS0FBSztJQUFBO0VBQUEsS0FBQS9GLE9BQUEsTUFBQUQsTUFBQTtFQUFBcUUsUUFBQSxHQUFBMUYsbUJBQUE7RUFBQSxPQUFBMEYsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
291
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSaWNoVGV4dEVkaXRvckJsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJyZXF1aXJlZCIsIl9kZWMzIiwiaXNCaW5kaW5nSW5mbyIsIl9kZWM0IiwiX2RlYzUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiZGVmYXVsdENsYXNzIiwiQnV0dG9uR3JvdXAiLCJfZGVjNiIsIlBsdWdpbkRlZmluaXRpb24iLCJfZGVjNyIsIl9kZWM4IiwiYmluZGFibGUiLCJfZGVjOSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJfaW5oZXJpdHNMb29zZSIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsImdldFBsdWdpbnMiLCJfdGhpcyRwbHVnaW5zIiwicGx1Z2luc0FycmF5IiwiZXhjbHVkZURlZmF1bHRQbHVnaW5zIiwibWFwIiwibmFtZSIsInBsdWdpbnMiLCJsZW5ndGgiLCJwbHVnaW4iLCJwdXNoIiwiZ2V0QnV0dG9uR3JvdXBzIiwiYnV0dG9uR3JvdXBzIiwiYnV0dG9uR3JvdXAiLCJfYnV0dG9uR3JvdXAkYnV0dG9ucyIsInZpc2libGUiLCJwcmlvcml0eSIsInJvdyIsImN1c3RvbVRvb2xiYXJQcmlvcml0eSIsImJ1dHRvbnMiLCJzcGxpdCIsImdldEVkaXRDb250ZW50IiwiX2VkaXRDb250ZW50IiwiZGVzdHJveSIsIl9qc3giLCJSaWNoVGV4dEVkaXRvciIsImlkIiwiY3JlYXRlSWQiLCJ2YWx1ZSIsImN1c3RvbVRvb2xiYXIiLCJlZGl0YWJsZSIsImVkaXRvclR5cGUiLCJzaG93R3JvdXBGb250U3R5bGUiLCJzaG93R3JvdXBUZXh0QWxpZ24iLCJzaG93R3JvdXBTdHJ1Y3R1cmUiLCJzaG93R3JvdXBGb250Iiwic2hvd0dyb3VwQ2xpcGJvYXJkIiwic2hvd0dyb3VwSW5zZXJ0Iiwic2hvd0dyb3VwTGluayIsInNob3dHcm91cFVuZG8iLCJzYW5pdGl6ZVZhbHVlIiwid3JhcHBpbmciLCJ3aWR0aCIsInVuZGVmaW5lZCIsImF0dGFjaFJlYWR5IiwiYWRkQnV0dG9uR3JvdXBzIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJfZXhwb3J0cyIsIl9wcm90byIsInByb3RvdHlwZSIsImNyZWF0ZUNvbnRlbnREZWJvdW5jZWQiLCJfY29udGVudFRpbWVyIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImV4aXQiLCJfdGhpcyRfZGlzcGxheUNvbnRlbnQiLCJfdGhpcyRfZWRpdENvbnRlbnQiLCJfZGlzcGxheUNvbnRlbnQiLCJzZXRfaXNJbkVkaXRNb2RlIiwiaW5FZGl0TW9kZSIsInNldFByb3BlcnR5Iiwic2V0UmVhZE9ubHkiLCJyZWFkT25seSIsIl90aGlzJF9lZGl0Q29udGVudDMiLCJsYXRlQnV0dG9uR3JvdXBzIiwicmV2ZXJzZSIsImxhdGVCdXR0b25Hcm91cCIsIl90aGlzJF9lZGl0Q29udGVudDIiLCJhZGRCdXR0b25Hcm91cCIsImRldGFjaFJlYWR5IiwiZ2V0RGlzcGxheUNvbnRlbnQiLCJGb3JtYXR0ZWRUZXh0IiwiaHRtbFRleHQiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUmljaFRleHRFZGl0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tCYXNlXCI7XG5pbXBvcnQgeyBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCBCdXR0b25Hcm91cCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9yaWNodGV4dGVkaXRvci9CdXR0b25Hcm91cFwiO1xuaW1wb3J0IFBsdWdpbkRlZmluaXRpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvcmljaHRleHRlZGl0b3IvUGx1Z2luXCI7XG5pbXBvcnQgRm9ybWF0dGVkVGV4dCBmcm9tIFwic2FwL20vRm9ybWF0dGVkVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IFJpY2hUZXh0RWRpdG9yIGZyb20gXCJzYXAvdWkvcmljaHRleHRlZGl0b3IvUmljaFRleHRFZGl0b3JcIjtcblxudHlwZSBQbHVnaW5EZWZpbml0aW9uRGF0YSA9IHtcblx0bmFtZTogc3RyaW5nO1xufTtcbnR5cGUgQnV0dG9uR3JvdXBEYXRhID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHZpc2libGU6IGJvb2xlYW47XG5cdHByaW9yaXR5PzogbnVtYmVyO1xuXHRyb3c/OiBudW1iZXI7XG5cdGN1c3RvbVRvb2xiYXJQcmlvcml0eT86IG51bWJlcjtcblx0YnV0dG9uczogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHRoYXQgZXhwb3NlcyB0aGUgUmljaFRleHRFZGl0b3IgVUk1IGNvbnRyb2wuXG4gKlxuICogSXQncyB1c2VkIHRvIGVudGVyIGZvcm1hdHRlZCB0ZXh0LCBhbmQgdXNlcyB0aGUgdGhpcmQtcGFydHkgY29tcG9uZW50IGNhbGxlZCBUaW55TUNFLlxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuMTE3LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5SaWNoVGV4dEVkaXRvclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmljaFRleHRFZGl0b3JCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPENvbnRyb2w+IHtcblx0LyoqXG5cdCAqIElEIG9mIHRoZSBlZGl0b3Jcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdGlkITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgdmFsdWUgY29udGFpbmVkIGluIHRoZSBlZGl0b3IuIFlvdSBjYW4gdXNlIHRoaXMgYXR0cmlidXRlIHRvIHNldCBhIGRlZmF1bHQgdmFsdWUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYW55XCIsIGlzQmluZGluZ0luZm86IHRydWUgfSlcblx0dmFsdWU/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXG5cdC8qKlxuXHQgKiBVc2UgdGhlIHJlYWRPbmx5IGF0dHJpYnV0ZSB0byBvdmVycmlkZSB0aGUgZWRpdCBmbG93IG9mIHRoZSBwYWdlLlxuXHQgKiBCeSBzZXR0aW5nICdyZWFkT25seScgdG8gdHJ1ZSwgYSBGb3JtYXR0ZWRUZXh0IHdpbGwgYmUgZGlzcGxheWVkIGluc3RlYWQgb2YgdGhlIGVkaXRvci5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVhZE9ubHk6IFByb3BlcnR5QmluZGluZ0luZm8gPSBmYWxzZTtcblxuXHQvKipcblx0ICogV2l0aCB0aGUgJ2J1dHRvbkdyb3VwcycgYXR0cmlidXRlIHlvdSBjYW4gY3VzdG9taXplIHRoZSBidXR0b25zIHRoYXQgYXJlIGRpc3BsYXllZCBvbiB0aGUgdG9vbGJhciBvZiB0aGUgZWRpdG9yLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MucmljaHRleHRlZGl0b3IuQnV0dG9uR3JvdXBcIiwgbXVsdGlwbGU6IHRydWUsIGRlZmF1bHRDbGFzczogQnV0dG9uR3JvdXAgfSlcblx0YnV0dG9uR3JvdXBzOiBCdXR0b25Hcm91cFtdID0gW107XG5cblx0LyoqXG5cdCAqIFdpdGggdGhlICdwbHVnaW5zJyBhdHRyaWJ1dGUgeW91IGNhbiBjdXN0b21pemUgdGhlIHBsdWdpbnMgdGhhdCB3aWxsIGJlIGxvYWRlZCBieSB0aGUgZWRpdG9yLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MucmljaHRleHRlZGl0b3IuUGx1Z2luXCIsIG11bHRpcGxlOiB0cnVlLCBkZWZhdWx0Q2xhc3M6IFBsdWdpbkRlZmluaXRpb24gfSlcblx0cGx1Z2lucz86IFBsdWdpbkRlZmluaXRpb25bXTtcblxuXHQvKipcblx0ICogV2l0aCB0aGUgJ2V4Y2x1ZGVEZWZhdWx0UGx1Z2lucycgeW91IGNhbiBhc2sgdG8gcmVtb3ZlIHRoZSBwbHVnaW5zIHRoYXQgd2lsbCBiZSBhZGRlZCBieSBkZWZhdWx0XG5cdCAqIFRoZSBkZWZhdWx0IHBsdWdpbnMgYXJlIFwiZW1vdGljb25zXCIgXCJkaXJlY3Rpb25hbGl0eVwiIFwiaW1hZ2VcIiBcInRhYmxlXCIgXCJsaW5rXCIgXCJwb3dlcnBhc3RlXCIuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGV4Y2x1ZGVEZWZhdWx0UGx1Z2lucyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBVc2UgdGhlICdyZXF1aXJlZCcgYXR0cmlidXRlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlZGl0b3IgaXMgZmlsbGVkIHdpdGggc29tZSB0ZXh0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFueVwiLCBiaW5kYWJsZTogZmFsc2UgfSlcblx0cmVxdWlyZWQ6IFByb3BlcnR5QmluZGluZ0luZm8gPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRfaXNJbkVkaXRNb2RlOiBQcm9wZXJ0eUJpbmRpbmdJbmZvID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBfZGlzcGxheUNvbnRlbnQ/OiBGb3JtYXR0ZWRUZXh0O1xuXG5cdHByaXZhdGUgX2VkaXRDb250ZW50PzogUmljaFRleHRFZGl0b3I7XG5cblx0cHJpdmF0ZSBfY29udGVudFRpbWVyPzogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8UmljaFRleHRFZGl0b3JCbG9jaz4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRwcm9wZXJ0aWVzLl9pc0luRWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihVSS5Jc0VkaXRhYmxlKTtcblx0XHRzdXBlcihwcm9wZXJ0aWVzLCBvdGhlcnMpO1xuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudERlYm91bmNlZCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5fY29udGVudFRpbWVyKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5fY29udGVudFRpbWVyKTtcblx0XHR9XG5cdFx0dGhpcy5fY29udGVudFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9LCAyMDApIGFzIHVua25vd24gYXMgbnVtYmVyO1xuXHR9XG5cblx0ZXhpdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9kaXNwbGF5Q29udGVudD8uZGVzdHJveSgpO1xuXHRcdHRoaXMuX2VkaXRDb250ZW50Py5kZXN0cm95KCk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgYnV0dG9uIGN1c3RvbWl6YXRpb25zIGZvciB0aGUgZWRpdG9yIHRvb2xiYXIuXG5cdCAqIEJlY2F1c2UgYWxsIHZhbHVlcyBjb21lIGFzIHN0cmluZ3MgZnJvbSBYTUwsIHNvbWUgcGFyc2luZyBuZWVkcyB0byBiZSBkb25lIHRvIGdldCBhdHRyaWJ1dGVzIHdpdGggdGhlIGNvcnJlY3QgdHlwZS5cblx0ICogQHJldHVybnMgVGhlIGJ1dHRvbiBncm91cHMuXG5cdCAqL1xuXHRnZXRQbHVnaW5zID0gKCk6IHsgcGx1Z2lucz86IFBsdWdpbkRlZmluaXRpb25EYXRhW10gfSA9PiB7XG5cdFx0bGV0IHBsdWdpbnNBcnJheTogUGx1Z2luRGVmaW5pdGlvbkRhdGFbXSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5leGNsdWRlRGVmYXVsdFBsdWdpbnMpIHtcblx0XHRcdHBsdWdpbnNBcnJheSA9IFtdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwbHVnaW5zQXJyYXkgPSBbXCJlbW90aWNvbnNcIiwgXCJkaXJlY3Rpb25hbGl0eVwiLCBcImltYWdlXCIsIFwidGFibGVcIiwgXCJsaW5rXCIsIFwicG93ZXJwYXN0ZVwiXS5tYXAoKG5hbWU6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRyZXR1cm4geyBuYW1lOiBuYW1lIH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMucGx1Z2lucz8ubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLnBsdWdpbnMpIHtcblx0XHRcdFx0cGx1Z2luc0FycmF5LnB1c2gocGx1Z2luKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHsgcGx1Z2luczogcGx1Z2luc0FycmF5IH07XG5cdH07XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0aGF0IHJldHVybnMgdGhlIGJ1dHRvbiBjdXN0b21pemF0aW9ucyBmb3IgdGhlIGVkaXRvciB0b29sYmFyLlxuXHQgKiBCZWNhdXNlIGFsbCB2YWx1ZXMgY29tZSBhcyBzdHJpbmdzIGZyb20gWE1MLCBzb21lIHBhcnNpbmcgbmVlZHMgdG8gYmUgZG9uZSB0byBnZXQgYXR0cmlidXRlcyB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuXG5cdCAqIEByZXR1cm5zIFRoZSBidXR0b24gZ3JvdXBzLlxuXHQgKi9cblx0Z2V0QnV0dG9uR3JvdXBzID0gKCk6IEJ1dHRvbkdyb3VwRGF0YVtdID0+IHtcblx0XHRpZiAodGhpcy5idXR0b25Hcm91cHMgJiYgdGhpcy5idXR0b25Hcm91cHMubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYnV0dG9uR3JvdXBzLm1hcCgoYnV0dG9uR3JvdXA6IEJ1dHRvbkdyb3VwKSA9PiAoe1xuXHRcdFx0XHRuYW1lOiBidXR0b25Hcm91cC5uYW1lID8/IFwiXCIsXG5cdFx0XHRcdHZpc2libGU6IGJ1dHRvbkdyb3VwLnZpc2libGUgPT09IFwidHJ1ZVwiLFxuXHRcdFx0XHRwcmlvcml0eTogYnV0dG9uR3JvdXAucHJpb3JpdHksXG5cdFx0XHRcdHJvdzogYnV0dG9uR3JvdXAucm93LFxuXHRcdFx0XHRjdXN0b21Ub29sYmFyUHJpb3JpdHk6IGJ1dHRvbkdyb3VwLmN1c3RvbVRvb2xiYXJQcmlvcml0eSxcblx0XHRcdFx0YnV0dG9uczogYnV0dG9uR3JvdXAuYnV0dG9ucz8uc3BsaXQoXCIsXCIpIHx8IFtdXG5cdFx0XHR9KSk7XG5cdFx0fVxuXHRcdHJldHVybiBbXTtcblx0fTtcblxuXHRzZXRfaXNJbkVkaXRNb2RlKGluRWRpdE1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRzdXBlci5zZXRQcm9wZXJ0eShcIl9pc0luRWRpdE1vZGVcIiwgaW5FZGl0TW9kZSk7XG5cdFx0dGhpcy5jcmVhdGVDb250ZW50RGVib3VuY2VkKCk7XG5cdH1cblxuXHRzZXRSZWFkT25seShyZWFkT25seTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHN1cGVyLnNldFByb3BlcnR5KFwicmVhZE9ubHlcIiwgcmVhZE9ubHkpO1xuXHRcdHRoaXMuY3JlYXRlQ29udGVudERlYm91bmNlZCgpO1xuXHR9XG5cblx0Z2V0RWRpdENvbnRlbnQgPSAoKTogUmljaFRleHRFZGl0b3IgPT4ge1xuXHRcdGlmICh0aGlzLl9lZGl0Q29udGVudCkge1xuXHRcdFx0Ly8gSXQncyBiZXR0ZXIgdG8gZGVzdHJveSB0aGUgcmljaCB0ZXh0IGVkaXRvciBhcyBpbiBzb21lIGNhc2Ugd2l0aCBzbG93IG1hY2hpbmUgc3dpdGNoaW5nIGJldHdlZW4gZWRpdCBhbmQgZGlzcGxheSBtYXkgYnJlYWsgaXRcblx0XHRcdHRoaXMuX2VkaXRDb250ZW50LmRlc3Ryb3koKTtcblx0XHR9XG5cblx0XHR0aGlzLl9lZGl0Q29udGVudCA9IChcblx0XHRcdDxSaWNoVGV4dEVkaXRvclxuXHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIl9ydGVcIil9XG5cdFx0XHRcdHZhbHVlPXt0aGlzLnZhbHVlfVxuXHRcdFx0XHR2aXNpYmxlPXt0cnVlfVxuXHRcdFx0XHRjdXN0b21Ub29sYmFyPXt0cnVlfVxuXHRcdFx0XHRlZGl0YWJsZT17dHJ1ZX1cblx0XHRcdFx0ZWRpdG9yVHlwZT1cIlRpbnlNQ0U2XCJcblx0XHRcdFx0c2hvd0dyb3VwRm9udFN0eWxlPXt0cnVlfVxuXHRcdFx0XHRzaG93R3JvdXBUZXh0QWxpZ249e3RydWV9XG5cdFx0XHRcdHNob3dHcm91cFN0cnVjdHVyZT17dHJ1ZX1cblx0XHRcdFx0c2hvd0dyb3VwRm9udD17ZmFsc2V9XG5cdFx0XHRcdHNob3dHcm91cENsaXBib2FyZD17dHJ1ZX1cblx0XHRcdFx0c2hvd0dyb3VwSW5zZXJ0PXtmYWxzZX1cblx0XHRcdFx0c2hvd0dyb3VwTGluaz17ZmFsc2V9XG5cdFx0XHRcdHNob3dHcm91cFVuZG89e2ZhbHNlfVxuXHRcdFx0XHRzYW5pdGl6ZVZhbHVlPXt0cnVlfVxuXHRcdFx0XHR3cmFwcGluZz17dHJ1ZX1cblx0XHRcdFx0d2lkdGg9e1wiMTAwJVwifVxuXHRcdFx0XHRyZXF1aXJlZD17dGhpcy5yZXF1aXJlZH1cblx0XHRcdFx0ey4uLnRoaXMuZ2V0UGx1Z2lucygpfVxuXHRcdFx0XHRidXR0b25Hcm91cHM9e3RoaXMuYnV0dG9uR3JvdXBzLmxlbmd0aCA+IDAgPyBbXSA6IHVuZGVmaW5lZH1cblx0XHRcdC8+XG5cdFx0KSBhcyBSaWNoVGV4dEVkaXRvcjtcblxuXHRcdHRoaXMuX2VkaXRDb250ZW50LmF0dGFjaFJlYWR5KHRoaXMuYWRkQnV0dG9uR3JvdXBzLCB0aGlzKTtcblx0XHRyZXR1cm4gdGhpcy5fZWRpdENvbnRlbnQ7XG5cdH07XG5cblx0LyoqXG5cdCAqIEJ1dHRvbnMgZ3JvdXBzIG5lZWQgdG8gYmUgYWRkZWQgd2hlbiB0aGUgUlRFIGlzIHJlYWR5LCBvdGhlcndpc2Ugc29tZSBvZiB0aGVtIGFyZSBub3QgYXZhaWxhYmxlLlxuXHQgKi9cblx0YWRkQnV0dG9uR3JvdXBzKCk6IHZvaWQge1xuXHRcdGNvbnN0IGxhdGVCdXR0b25Hcm91cHMgPSB0aGlzLmdldEJ1dHRvbkdyb3VwcygpLnJldmVyc2UoKTtcblx0XHQvLyBUaGV5IGFsc28gc29tZWhvdyBuZWVkIHRvIGJlIGFkZGVkIGluIHJldmVyc2UgYmVjYXVzZSB0aGV5IGFsc28gZ2V0IGFkZGVkIGluIHRoZSBmaXJzdCBwbGFjZSA6RFxuXHRcdGZvciAoY29uc3QgbGF0ZUJ1dHRvbkdyb3VwIG9mIGxhdGVCdXR0b25Hcm91cHMpIHtcblx0XHRcdHRoaXMuX2VkaXRDb250ZW50Py5hZGRCdXR0b25Hcm91cChsYXRlQnV0dG9uR3JvdXApO1xuXHRcdH1cblx0XHR0aGlzLl9lZGl0Q29udGVudD8uZGV0YWNoUmVhZHkodGhpcy5hZGRCdXR0b25Hcm91cHMsIHRoaXMpO1xuXHR9XG5cblx0Z2V0RGlzcGxheUNvbnRlbnQoKTogRm9ybWF0dGVkVGV4dCB7XG5cdFx0aWYgKHRoaXMuX2Rpc3BsYXlDb250ZW50KSB7XG5cdFx0XHR0aGlzLl9kaXNwbGF5Q29udGVudC5kZXN0cm95KCk7XG5cdFx0fVxuXHRcdHRoaXMuX2Rpc3BsYXlDb250ZW50ID0gKDxGb3JtYXR0ZWRUZXh0IGh0bWxUZXh0PXt0aGlzLnZhbHVlfSAvPikgYXMgRm9ybWF0dGVkVGV4dDtcblx0XHRyZXR1cm4gdGhpcy5fZGlzcGxheUNvbnRlbnQ7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IFJpY2hUZXh0RWRpdG9yIHwgRm9ybWF0dGVkVGV4dCB7XG5cdFx0aWYgKHRoaXMuX2lzSW5FZGl0TW9kZSAmJiAhdGhpcy5yZWFkT25seSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0RWRpdENvbnRlbnQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0RGlzcGxheUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFXQTtFQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTkEsSUFRcUJBLG1CQUFtQixJQUFBQyxJQUFBLEdBRHZDQyxjQUFjLENBQUMsOEJBQThCLENBQUMsRUFBQUMsS0FBQSxHQUs3Q0MsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVDLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTzVDSCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFF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LE9BQUEsQ0FBQXNFLFNBQUEsU0FBQXpGLEtBQUE7SUFBQW1ILFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBckYsWUFBQSxHQUFBaUYseUJBQUEsQ0FBQS9GLE9BQUEsQ0FBQXNFLFNBQUEsWUFBQXJGLEtBQUE7SUFBQStHLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBcEYsWUFBQSxHQUFBZ0YseUJBQUEsQ0FBQS9GLE9BQUEsQ0FBQXNFLFNBQUEsZUFBQW5GLEtBQUE7SUFBQTZHLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9Bb0JqQyxLQUFLO0lBQUE7RUFBQSxJQUFBbkYsWUFBQSxHQUFBK0UseUJBQUEsQ0FBQS9GLE9BQUEsQ0FBQXNFLFNBQUEsbUJBQUFsRixLQUFBO0lBQUE0RyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQU9QLEVBQUU7SUFBQTtFQUFBLElBQUFsRixZQUFBLEdBQUE4RSx5QkFBQSxDQUFBL0YsT0FBQSxDQUFBc0UsU0FBQSxjQUFBN0UsS0FBQTtJQUFBdUcsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFqRixZQUFBLEdBQUE2RSx5QkFBQSxDQUFBL0YsT0FBQSxDQUFBc0UsU0FBQSw0QkFBQTNFLEtBQUE7SUFBQXFHLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BZVIsS0FBSztJQUFBO0VBQUEsSUFBQWhGLFlBQUEsR0FBQTRFLHlCQUFBLENBQUEvRixPQUFBLENBQUFzRSxTQUFBLGVBQUExRSxLQUFBO0lBQUFvRyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQU9HLEtBQUs7SUFBQTtFQUFBLElBQUEvRSxZQUFBLEdBQUEyRSx5QkFBQSxDQUFBL0YsT0FBQSxDQUFBc0UsU0FBQSxvQkFBQXhFLEtBQUE7SUFBQWtHLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BR0EsS0FBSztJQUFBO0VBQUEsS0FBQW5HLE9BQUEsTUFBQUQsTUFBQTtFQUFBcUUsUUFBQSxHQUFBMUYsbUJBQUE7RUFBQSxPQUFBMEYsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -90,12 +90,23 @@ export default class RichTextEditorBlock extends BuildingBlockBase<Control> {
|
|
|
90
90
|
|
|
91
91
|
private _editContent?: RichTextEditor;
|
|
92
92
|
|
|
93
|
+
private _contentTimer?: number;
|
|
94
|
+
|
|
93
95
|
constructor(properties: $ControlSettings & PropertiesOf<RichTextEditorBlock>, others?: $ControlSettings) {
|
|
94
96
|
properties._isInEditMode = compileExpression(UI.IsEditable);
|
|
95
97
|
super(properties, others);
|
|
96
98
|
this.content = this.createContent();
|
|
97
99
|
}
|
|
98
100
|
|
|
101
|
+
createContentDebounced(): void {
|
|
102
|
+
if (this._contentTimer) {
|
|
103
|
+
clearTimeout(this._contentTimer);
|
|
104
|
+
}
|
|
105
|
+
this._contentTimer = setTimeout(() => {
|
|
106
|
+
this.content = this.createContent();
|
|
107
|
+
}, 200) as unknown as number;
|
|
108
|
+
}
|
|
109
|
+
|
|
99
110
|
exit(): void {
|
|
100
111
|
this._displayContent?.destroy();
|
|
101
112
|
this._editContent?.destroy();
|
|
@@ -144,12 +155,12 @@ export default class RichTextEditorBlock extends BuildingBlockBase<Control> {
|
|
|
144
155
|
|
|
145
156
|
set_isInEditMode(inEditMode: boolean): void {
|
|
146
157
|
super.setProperty("_isInEditMode", inEditMode);
|
|
147
|
-
this.
|
|
158
|
+
this.createContentDebounced();
|
|
148
159
|
}
|
|
149
160
|
|
|
150
161
|
setReadOnly(readOnly: boolean): void {
|
|
151
162
|
super.setProperty("readOnly", readOnly);
|
|
152
|
-
this.
|
|
163
|
+
this.createContentDebounced();
|
|
153
164
|
}
|
|
154
165
|
|
|
155
166
|
getEditContent = (): RichTextEditor => {
|