@sapui5/sap.fe.macros 1.141.1 → 1.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/Field.js +30 -13
- package/src/sap/fe/macros/Field.ts +60 -30
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +6 -3
- package/src/sap/fe/macros/KPITag.js +1 -1
- package/src/sap/fe/macros/KPITag.tsx +3 -1
- package/src/sap/fe/macros/MacroAPI.js +3 -2
- package/src/sap/fe/macros/MacroAPI.ts +2 -2
- package/src/sap/fe/macros/MessageButton.js +3 -2
- package/src/sap/fe/macros/MessageButton.tsx +5 -2
- package/src/sap/fe/macros/MicroChart.js +10 -6
- package/src/sap/fe/macros/MicroChart.tsx +8 -2
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Status.js +35 -8
- package/src/sap/fe/macros/Status.tsx +23 -2
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
- package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
- package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/library.js +3 -3
- package/src/sap/fe/macros/library.ts +2 -0
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +15 -2
- package/src/sap/fe/macros/table/Action.ts +11 -1
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +70 -29
- package/src/sap/fe/macros/table/Table.block.tsx +65 -12
- package/src/sap/fe/macros/table/TableAPI.js +169 -131
- package/src/sap/fe/macros/table/TableAPI.ts +58 -28
- package/src/sap/fe/macros/table/TableDefinition.js +19 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +2 -2
- package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -259,4 +259,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ResourceModelHelper", "sap/u
|
|
|
259
259
|
_exports = TableExport;
|
|
260
260
|
return _exports;
|
|
261
261
|
}, false);
|
|
262
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZUV4cG9ydCIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0dXBNaXhpbiIsIl9iYXNlQ2xhc3MiLCJzZXRUYWJsZUJpbmRpbmdJbmZvIiwiYmluZGluZ0luZm8iLCJ0YWJsZUJpbmRpbmdJbmZvIiwic2V0RG93bmxvYWRVcmwiLCJkb3dubG9hZFVybCIsInVuZGVmaW5lZCIsImdldFRhYmxlRGVmaW5pdGlvbiIsImVuYWJsZUFuYWx5dGljcyIsInRhYmxlIiwiZ2V0Q29udGVudCIsInByb3BlcnR5SGVscGVyIiwiZ2V0UHJvcGVydHlIZWxwZXIiLCJjb2x1bW5zRXhwb3J0U2V0dGluZ3MiLCJtZGNDb2x1bW4iLCJnZXRDb2x1bW5zIiwiY29uY2F0IiwiZ2V0Q29sdW1uRXhwb3J0U2V0dGluZ3MiLCJiaW5kaW5nUGFyYW1ldGVycyIsImNvbGxlY3Rpb25LZXlzIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFyZ2V0RW50aXR5VHlwZSIsImtleXMiLCJtYXAiLCJrZXkiLCJuYW1lIiwic2VsZWN0UHJvcGVydGllcyIsImNvbHVtbiIsIkFycmF5IiwiaXNBcnJheSIsInByb3BlcnR5Iiwiam9pbiIsImZvckVhY2giLCJpbmNsdWRlcyIsInB1c2giLCJyZXF1ZXN0QXRMZWFzdFByb3BlcnRpZXMiLCJPYmplY3QiLCJyZXF1ZXN0QXRMZWFzdCIsInByb3AiLCJwYXJhbWV0ZXJzIiwiJHNlYXJjaCIsIiQkYWdncmVnYXRpb24iLCJ0YWJsZUJpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwiZG93bmxvYWRMaXN0QmluZGluZyIsImdldE1vZGVsIiwiYmluZExpc3QiLCJnZXRQYXRoIiwiZ2V0Q29udGV4dCIsInNvcnRlciIsImZpbHRlcnMiLCJyZXF1ZXN0RG93bmxvYWRVcmwiLCJkZXN0cm95IiwiZXJyb3IiLCJMb2ciLCJkZWJ1ZyIsIl9vbkJlZm9yZUV4cG9ydCIsImV4cG9ydEV2ZW50IiwiaXNTcGxpdE1vZGUiLCJnZXRQYXJhbWV0ZXIiLCJzcGxpdENlbGxzIiwiZ2V0U291cmNlIiwiZXhwb3J0U2V0dGluZ3MiLCJ0YWJsZURlZmluaXRpb24iLCJ1cGRhdGVFeHBvcnRTZXR0aW5ncyIsImNvbHVtbnMiLCJzZXRTdGF0aWNTaXplTGltaXQiLCJleHBvcnRDb2x1bW5zIiwid29ya2Jvb2siLCJpbmRleCIsImxlbmd0aCIsImV4cG9ydENvbHVtbiIsInJlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwibGFiZWwiLCJnZXRMb2NhbGl6ZWRUZXh0IiwidHJhbnNsYXRlQm9vbGVhblZhbHVlRm9yRXhwb3J0Iiwic2V0RXhwb3J0Q29uZmlnIiwiYWRkVGFyZ2V0VmFsdWVDb2x1bW4iLCJ2YWx1ZU1hcCIsIkpTT04iLCJwYXJzZSIsInRhYmxlQVBJRG93bmxvYWRVcmwiLCJnZXRQYXJlbnQiLCJkYXRhU291cmNlIiwiZGF0YVVybCIsInNldEZpbGVBbmRTaGVldE5hbWUiLCJjb250cm9sIiwiZXhwb3J0RmlsZU5hbWUiLCJmaWxlTmFtZSIsImV4cG9ydFNoZWV0TmFtZSIsImNvbnRleHQiLCJzaGVldE5hbWUiLCJ0eXBlIiwic2l6ZUxpbWl0IiwiZXhwb3J0UmVxdWVzdFNpemUiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiwiZ2V0VGV4dCIsInJlZmVyZW5jZWRDb2x1bW4iLCJmaW5kIiwicHJvcGVydHlJbmZvcyIsInJlbGF0aXZlUGF0aCIsInRvU3RyaW5nIiwiZXhwb3J0Q29uZmlnTGlzdCIsInRhcmdldFZhbHVlQ29sdW1uIiwiaXNQcm9wZXJ0eUZyb21FeHBvcnQiLCJjb2x1bW5XaXRoVGFyZ2V0VmFsdWVUb0JlQWRkZWQiLCJjb2x1bW5Ub0JlQWRkZWQiLCJ0ZW1wbGF0ZSIsImV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlIiwic3BsaWNlIiwiY29sdW1uRXhwb3J0IiwiY29sdW1uTmVlZHNUb0JlQWRkZWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlRXhwb3J0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB7IHR5cGUgSUludGVyZmFjZVdpdGhNaXhpbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IHR5cGUgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQge1xuXHR0eXBlIEFubm90YXRpb25UYWJsZUNvbHVtbixcblx0dHlwZSBDb2x1bW5FeHBvcnRTZXR0aW5ncyxcblx0dHlwZSBUYWJsZUNvbHVtblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vdGFibGUvQ29sdW1uc1wiO1xuaW1wb3J0IHsgZ2V0TG9jYWxpemVkVGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IHR5cGUgQ29sbGVjdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSB7IFRleHRBbGlnbiB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBNRENUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBUYWJsZSRCZWZvcmVFeHBvcnRFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHsgdHlwZSBJVGFibGVCbG9jayB9IGZyb20gXCIuLi9UYWJsZUFQSVwiO1xuXG50eXBlIEV4cG9ydENvbHVtbiA9IHtcblx0cHJvcGVydHk6IHN0cmluZyB8IHN0cmluZ1tdO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRjb2x1bW5JZD86IHN0cmluZztcblx0d2lkdGg/OiBudW1iZXI7XG5cdHRleHRBbGlnbj86IFRleHRBbGlnbjtcblx0ZGlzcGxheVVuaXQ/OiBib29sZWFuO1xuXHR0cnVlVmFsdWU/OiBzdHJpbmc7XG5cdGZhbHNlVmFsdWU/OiBzdHJpbmc7XG5cdHZhbHVlTWFwPzogc3RyaW5nO1xuXHR0ZW1wbGF0ZT86IHN0cmluZztcblx0dHlwZT86IHN0cmluZztcblx0ZGVsaW1pdGVyPzogYm9vbGVhbjtcblx0d3JhcD86IGJvb2xlYW47XG5cdHVuaXQ/OiBzdHJpbmc7XG5cdHNjYWxlPzogbnVtYmVyO1xufTtcblxudHlwZSBVc2VyRXhwb3J0U2V0dGluZ3MgPSB7XG5cdHNwbGl0Q2VsbHM/OiBib29sZWFuO1xufTtcblxuLy8gVGhlIHR5cGUgRXhwb3J0U2V0dGluZ3MgaXMgbm90IGV4cG9ydGVkIGZyb20gXCJzYXAvdWkvZXhwb3J0L2xpYnJhcnlcIiBzbyB3ZSBuZWVkIHRvIHJlZGVmaW5lIHRoZW0gaGVyZVxuZXhwb3J0IHR5cGUgRXhwb3J0U2V0dGluZ3MgPSB7XG5cdGZpbGVOYW1lPzogc3RyaW5nO1xuXHRkYXRhU291cmNlOiB7XG5cdFx0ZGF0YVVybDogc3RyaW5nO1xuXHRcdHNpemVMaW1pdD86IG51bWJlcjtcblx0fTtcblx0d29ya2Jvb2s6IHtcblx0XHRjb2x1bW5zOiBFeHBvcnRDb2x1bW5bXTtcblx0XHRjb250ZXh0PzogeyBzaGVldE5hbWU/OiBzdHJpbmcgfTtcblx0fTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhYmxlRXhwb3J0IGltcGxlbWVudHMgSUludGVyZmFjZVdpdGhNaXhpbiB7XG5cdGRvd25sb2FkVXJsPzogc3RyaW5nO1xuXG5cdHRhYmxlQmluZGluZ0luZm8/OiBDb2xsZWN0aW9uQmluZGluZ0luZm87XG5cblx0c2V0dXBNaXhpbihfYmFzZUNsYXNzOiBGdW5jdGlvbik6IHZvaWQge1xuXHRcdC8vIFRoaXMgbWV0aG9kIGlzIG5lZWRlZCB0byBpbXBsZW1lbnQgaW50ZXJmYWNlIElJbnRlcmZhY2VXaXRoTWl4aW5cblx0fVxuXG5cdC8qKlxuXHQgKiBTdG9yZXMgdGhlIGJpbmRpbmcgaW5mbyBmb3IgdGhlIHRhYmxlIHVzZWQgdG8gY3JlYXRlIHRoZSBsaXN0IGJpbmRpbmcuXG5cdCAqIEBwYXJhbSBiaW5kaW5nSW5mb1xuXHQgKi9cblx0c2V0VGFibGVCaW5kaW5nSW5mbyhiaW5kaW5nSW5mbzogQ29sbGVjdGlvbkJpbmRpbmdJbmZvKTogdm9pZCB7XG5cdFx0dGhpcy50YWJsZUJpbmRpbmdJbmZvID0gYmluZGluZ0luZm87XG5cdH1cblxuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgZG93bmxvYWQgVVJMIHRvIGJlIHVzZWQgYnkgdGhlIGV4cG9ydCBhbmQgc3RvcmUgaXQgaW4gdGhlIFRhYmxlQVBJLlxuXHQgKiBAcGFyYW0gdGhpc1xuXHQgKiBAcmV0dXJucyBQcm9taXNlIHdoZW4gZG93bmxvYWRVcmwgaXMgc2V0XG5cdCAqL1xuXHRhc3luYyBzZXREb3dubG9hZFVybCh0aGlzOiBJVGFibGVCbG9jayAmIFRhYmxlRXhwb3J0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly9lbXB0eSB0aGUgZG93bmxvYWRVcmwgdG8gcHJldmVudCBhbiBpbnZhbGlkIG9uZSB0byBiZSB1c2VkXG5cdFx0dGhpcy5kb3dubG9hZFVybCA9IHVuZGVmaW5lZDtcblxuXHRcdGlmICh0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmVuYWJsZUFuYWx5dGljcyA9PT0gdHJ1ZSkge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBhbiBhbmFseXRpY2FsIHRhYmxlLCAkc2VsZWN0IGlzIG5vdCBzdXBwb3J0ZWQsIHNvIHdlIGRvbid0IGNhbGN1bGF0ZSB0aGUgZG93bmxvYWQgVVJMICh3ZSB1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3VyKVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCBkb3dubG9hZFVybDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUhlbHBlciA9IHRhYmxlLmdldFByb3BlcnR5SGVscGVyKCk7XG5cdFx0XHRsZXQgY29sdW1uc0V4cG9ydFNldHRpbmdzOiBFeHBvcnRDb2x1bW5bXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBtZGNDb2x1bW4gb2YgdGFibGUuZ2V0Q29sdW1ucygpKSB7XG5cdFx0XHRcdGNvbHVtbnNFeHBvcnRTZXR0aW5ncyA9IGNvbHVtbnNFeHBvcnRTZXR0aW5ncy5jb25jYXQocHJvcGVydHlIZWxwZXIuZ2V0Q29sdW1uRXhwb3J0U2V0dGluZ3MobWRjQ29sdW1uKSk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXJzOiB7ICRzZWxlY3Q/OiBzdHJpbmc7ICRzZWFyY2g/OiBzdHJpbmc7ICQkYWdncmVnYXRpb24/OiBvYmplY3QgfSA9IHt9O1xuXHRcdFx0Ly8gd2UganVzdCB3YW50IHRvIHJlcXVlc3QgdGhlIHByb3BlcnRpZXMgbmVjZXNzYXJ5IGZvciB0aGUgZXhwb3J0XG5cdFx0XHRjb25zdCBjb2xsZWN0aW9uS2V5cyA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgodGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk/LnRhcmdldEVudGl0eVR5cGUua2V5cy5tYXAoXG5cdFx0XHRcdChrZXkpID0+IGtleS5uYW1lXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3Qgc2VsZWN0UHJvcGVydGllcyA9IGNvbHVtbnNFeHBvcnRTZXR0aW5ncy5tYXAoKGNvbHVtbjogRXhwb3J0Q29sdW1uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBBcnJheS5pc0FycmF5KGNvbHVtbi5wcm9wZXJ0eSkgPyBjb2x1bW4ucHJvcGVydHkuam9pbihcIixcIikgOiBjb2x1bW4ucHJvcGVydHk7XG5cdFx0XHR9KTtcblx0XHRcdGNvbGxlY3Rpb25LZXlzPy5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdFx0aWYgKCFzZWxlY3RQcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSkpIHtcblx0XHRcdFx0XHRzZWxlY3RQcm9wZXJ0aWVzLnB1c2goa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCByZXF1ZXN0QXRMZWFzdFByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyh0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLnJlcXVlc3RBdExlYXN0KTtcblx0XHRcdHJlcXVlc3RBdExlYXN0UHJvcGVydGllcz8uZm9yRWFjaCgocHJvcCkgPT4ge1xuXHRcdFx0XHRpZiAoIXNlbGVjdFByb3BlcnRpZXMuaW5jbHVkZXMocHJvcCkpIHtcblx0XHRcdFx0XHRzZWxlY3RQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0YmluZGluZ1BhcmFtZXRlcnNbXCIkc2VsZWN0XCJdID0gc2VsZWN0UHJvcGVydGllcy5qb2luKFwiLFwiKTtcblxuXHRcdFx0aWYgKHRoaXMudGFibGVCaW5kaW5nSW5mbz8ucGFyYW1ldGVycz8uJHNlYXJjaCkge1xuXHRcdFx0XHRiaW5kaW5nUGFyYW1ldGVycy4kc2VhcmNoID0gdGhpcy50YWJsZUJpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJHNlYXJjaDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMudGFibGVCaW5kaW5nSW5mbz8ucGFyYW1ldGVycz8uJCRhZ2dyZWdhdGlvbikge1xuXHRcdFx0XHRiaW5kaW5nUGFyYW1ldGVycy4kJGFnZ3JlZ2F0aW9uID0gdGhpcy50YWJsZUJpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJCRhZ2dyZWdhdGlvbjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgdGFibGVCaW5kaW5nID0gdGFibGUuZ2V0Um93QmluZGluZygpO1xuXHRcdFx0Ly8gd2UgY3JlYXRlIGEgbGlzdCBiaW5kaW5nIHRvIGNvbXB1dGUgdGhlIHJpZ2h0IHVybCBmb3IgdGhlIGV4cG9ydCBmcm9tIGl0cyBiaW5kaW5nIHBhcmFtZXRlcnNcblx0XHRcdGNvbnN0IGRvd25sb2FkTGlzdEJpbmRpbmcgPSAodGFibGVCaW5kaW5nLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbCkuYmluZExpc3QoXG5cdFx0XHRcdHRhYmxlQmluZGluZy5nZXRQYXRoKCksXG5cdFx0XHRcdHRhYmxlQmluZGluZy5nZXRDb250ZXh0KCksXG5cdFx0XHRcdHRoaXMudGFibGVCaW5kaW5nSW5mbz8uc29ydGVyLFxuXHRcdFx0XHR0aGlzLnRhYmxlQmluZGluZ0luZm8/LmZpbHRlcnMsXG5cdFx0XHRcdGJpbmRpbmdQYXJhbWV0ZXJzXG5cdFx0XHQpO1xuXHRcdFx0ZG93bmxvYWRVcmwgPSBhd2FpdCBkb3dubG9hZExpc3RCaW5kaW5nLnJlcXVlc3REb3dubG9hZFVybCgpO1xuXHRcdFx0ZG93bmxvYWRMaXN0QmluZGluZy5kZXN0cm95KCk7XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5kZWJ1ZyhcIkVycm9yIHdoaWxlIGNvbXB1dGluZyB0aGUgZG93bmxvYWQgVVJMIGZvciB0aGUgZXhwb3J0XCIsIGVycm9yIGFzIEVycm9yKTtcblx0XHR9XG5cdFx0aWYgKGRvd25sb2FkVXJsKSB7XG5cdFx0XHR0aGlzLmRvd25sb2FkVXJsID0gZG93bmxvYWRVcmw7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEludGVyY2VwdCB0aGUgZXhwb3J0IGJlZm9yZSBpdCdzIHRyaWdnZXJlZCB0byBjb3ZlciBzcGVjaWZpYyBjYXNlcyB0aGF0IGNvdWxkbid0IGJlIGFkZHJlc3NlZCBvbiB0aGUgcHJvcGVydHlJbmZvcyBmb3IgZWFjaCBjb2x1bW4uXG5cdCAqIGUuZy4gRml4ZWQgVGFyZ2V0IFZhbHVlIGZvciB0aGUgZGF0YXBvaW50cy5cblx0ICogQHBhcmFtIHRoaXNcblx0ICogQHBhcmFtIGV4cG9ydEV2ZW50XG5cdCAqL1xuXHRfb25CZWZvcmVFeHBvcnQodGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZUV4cG9ydCwgZXhwb3J0RXZlbnQ6IFRhYmxlJEJlZm9yZUV4cG9ydEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgaXNTcGxpdE1vZGUgPSAoZXhwb3J0RXZlbnQuZ2V0UGFyYW1ldGVyKFwidXNlckV4cG9ydFNldHRpbmdzXCIpIGFzIFVzZXJFeHBvcnRTZXR0aW5ncyk/LnNwbGl0Q2VsbHMgPT09IHRydWU7XG5cdFx0Y29uc3QgdGFibGUgPSBleHBvcnRFdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdGV4cG9ydFNldHRpbmdzID0gZXhwb3J0RXZlbnQuZ2V0UGFyYW1ldGVyKFwiZXhwb3J0U2V0dGluZ3NcIikgYXMgRXhwb3J0U2V0dGluZ3MsXG5cdFx0XHR0YWJsZURlZmluaXRpb24gPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpO1xuXG5cdFx0VGFibGVFeHBvcnQudXBkYXRlRXhwb3J0U2V0dGluZ3MoZXhwb3J0U2V0dGluZ3MsIHRhYmxlRGVmaW5pdGlvbiwgdGFibGUsIGlzU3BsaXRNb2RlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSB0YWJsZSBjb2x1bW5zIHRoYXQgY2FuIGJlIGV4cG9ydGVkLlxuXHQgKiBAcGFyYW0gZXhwb3J0U2V0dGluZ3MgVGhlIHRhYmxlIGV4cG9ydCBzZXR0aW5nc1xuXHQgKiBAcGFyYW0gdGFibGVEZWZpbml0aW9uIFRoZSB0YWJsZSBkZWZpbml0aW9uIGZyb20gdGhlIHRhYmxlIGNvbnZlcnRlclxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBpc1NwbGl0TW9kZSBEZWZpbmVzIGlmIHRoZSBleHBvcnQgaGFzIGJlZW4gbGF1bmNoZWQgdXNpbmcgc3BsaXQgbW9kZVxuXHQgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBjb2x1bW5zIHRvIGJlIGV4cG9ydGVkXG5cdCAqL1xuXHRzdGF0aWMgdXBkYXRlRXhwb3J0U2V0dGluZ3MoXG5cdFx0ZXhwb3J0U2V0dGluZ3M6IEV4cG9ydFNldHRpbmdzLFxuXHRcdHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uLFxuXHRcdHRhYmxlOiBNRENUYWJsZSxcblx0XHRpc1NwbGl0TW9kZTogYm9vbGVhblxuXHQpOiBFeHBvcnRTZXR0aW5ncyB7XG5cdFx0Y29uc3QgY29sdW1ucyA9IHRhYmxlRGVmaW5pdGlvbi5jb2x1bW5zO1xuXHRcdHRoaXMuc2V0U3RhdGljU2l6ZUxpbWl0KHRhYmxlRGVmaW5pdGlvbiwgZXhwb3J0U2V0dGluZ3MpO1xuXHRcdGNvbnN0IGV4cG9ydENvbHVtbnMgPSBleHBvcnRTZXR0aW5ncy53b3JrYm9vay5jb2x1bW5zO1xuXHRcdGZvciAobGV0IGluZGV4ID0gZXhwb3J0Q29sdW1ucy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG5cdFx0XHRjb25zdCBleHBvcnRDb2x1bW4gPSBleHBvcnRDb2x1bW5zW2luZGV4XTtcblx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhO1xuXHRcdFx0ZXhwb3J0Q29sdW1uLmxhYmVsID0gZ2V0TG9jYWxpemVkVGV4dChleHBvcnRDb2x1bW4ubGFiZWwsIHRhYmxlKTtcblx0XHRcdHRoaXMudHJhbnNsYXRlQm9vbGVhblZhbHVlRm9yRXhwb3J0KGV4cG9ydENvbHVtbiwgcmVzb3VyY2VCdW5kbGUpO1xuXHRcdFx0aWYgKGlzU3BsaXRNb2RlKSB7XG5cdFx0XHRcdHRoaXMuc2V0RXhwb3J0Q29uZmlnKGNvbHVtbnMsIGV4cG9ydENvbHVtbnMsIGluZGV4KTtcblx0XHRcdFx0dGhpcy5hZGRUYXJnZXRWYWx1ZUNvbHVtbihjb2x1bW5zLCBleHBvcnRDb2x1bW5zLCByZXNvdXJjZUJ1bmRsZSwgaW5kZXgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGV4cG9ydENvbHVtbi52YWx1ZU1hcCAmJiB0eXBlb2YgZXhwb3J0Q29sdW1uLnZhbHVlTWFwID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGV4cG9ydENvbHVtbi52YWx1ZU1hcCA9IEpTT04ucGFyc2UoZXhwb3J0Q29sdW1uLnZhbHVlTWFwKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgdGFibGVBUElEb3dubG9hZFVybCA9ICh0YWJsZS5nZXRQYXJlbnQoKSBhcyBJVGFibGVCbG9jayAmIFRhYmxlRXhwb3J0KS5kb3dubG9hZFVybDtcblx0XHRpZiAodGFibGVBUElEb3dubG9hZFVybCkge1xuXHRcdFx0ZXhwb3J0U2V0dGluZ3MuZGF0YVNvdXJjZS5kYXRhVXJsID0gdGFibGVBUElEb3dubG9hZFVybDtcblx0XHR9XG5cdFx0dGhpcy5zZXRGaWxlQW5kU2hlZXROYW1lKGV4cG9ydFNldHRpbmdzLCB0YWJsZURlZmluaXRpb24pO1xuXHRcdHJldHVybiBleHBvcnRTZXR0aW5ncztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBmaWxlIG5hbWUgYW5kIHNoZWV0IG5hbWUgZm9yIHRoZSBleHBvcnQgc2V0dGluZ3MuXG5cdCAqIEBwYXJhbSBleHBvcnRTZXR0aW5ncyBUaGUgdGFibGUgZXhwb3J0IHNldHRpbmdzXG5cdCAqIEBwYXJhbSB0YWJsZURlZmluaXRpb24gVGhlIHRhYmxlIGRlZmluaXRpb24gZnJvbSB0aGUgdGFibGUgY29udmVydGVyXG5cdCAqL1xuXHRzdGF0aWMgc2V0RmlsZUFuZFNoZWV0TmFtZShleHBvcnRTZXR0aW5nczogRXhwb3J0U2V0dGluZ3MsIHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uKTogdm9pZCB7XG5cdFx0aWYgKHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmV4cG9ydEZpbGVOYW1lKSB7XG5cdFx0XHRleHBvcnRTZXR0aW5ncy5maWxlTmFtZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmV4cG9ydEZpbGVOYW1lO1xuXHRcdH1cblx0XHRpZiAodGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZXhwb3J0U2hlZXROYW1lICYmIGV4cG9ydFNldHRpbmdzLndvcmtib29rLmNvbnRleHQpIHtcblx0XHRcdGV4cG9ydFNldHRpbmdzLndvcmtib29rLmNvbnRleHQuc2hlZXROYW1lID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZXhwb3J0U2hlZXROYW1lO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBzdGF0aWMgc2l6ZSBsaW1pdCBmb3IgdGhlIHRhYmxlIGV4cG9ydC5cblx0ICogQHBhcmFtIHRhYmxlRGVmaW5pdGlvbiBUaGUgdGFibGUgZGVmaW5pdGlvbiBmcm9tIHRoZSB0YWJsZSBjb252ZXJ0ZXJcblx0ICogQHBhcmFtIGV4cG9ydFNldHRpbmdzIFRoZSB0YWJsZSBleHBvcnQgc2V0dGluZ3Ncblx0ICovXG5cdHN0YXRpYyBzZXRTdGF0aWNTaXplTGltaXQodGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb24sIGV4cG9ydFNldHRpbmdzOiBFeHBvcnRTZXR0aW5ncyk6IHZvaWQge1xuXHRcdGlmIChcblx0XHRcdCF0YWJsZURlZmluaXRpb24uZW5hYmxlQW5hbHl0aWNzICYmXG5cdFx0XHQodGFibGVEZWZpbml0aW9uLmNvbnRyb2wudHlwZSA9PT0gXCJSZXNwb25zaXZlVGFibGVcIiB8fCB0YWJsZURlZmluaXRpb24uY29udHJvbC50eXBlID09PSBcIkdyaWRUYWJsZVwiKVxuXHRcdCkge1xuXHRcdFx0ZXhwb3J0U2V0dGluZ3MuZGF0YVNvdXJjZS5zaXplTGltaXQgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5leHBvcnRSZXF1ZXN0U2l6ZSA/PyAxMDAwO1xuXHRcdH0gZWxzZSBpZiAodGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZXhwb3J0UmVxdWVzdFNpemUpIHtcblx0XHRcdC8vIEluIGNhc2Ugb2YgYW5hbHl0aWNhbCBvciB0cmVlIHRhYmxlLCB0aGUgc2l6ZSBsaW1pdCBpcyBzZXQgdG8gdGhlIG9uZSBkZWZpbmVkIGluIHRoZSB0YWJsZSBkZWZpbml0aW9uXG5cdFx0XHRleHBvcnRTZXR0aW5ncy5kYXRhU291cmNlLnNpemVMaW1pdCA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmV4cG9ydFJlcXVlc3RTaXplO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB0cmFuc2xhdGVkIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgYSBjb2x1bW4gd2l0aCBhIEJvb2xlYW4gdmFsdWUuXG5cdCAqIEBwYXJhbSBleHBvcnRDb2x1bW4gVGhlIGNvbHVtbiB0byBiZSBleHBvcnRlZFxuXHQgKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgVGhlIHJlc291cmNlIGJ1bmRsZVxuXHQgKi9cblx0c3RhdGljIHRyYW5zbGF0ZUJvb2xlYW5WYWx1ZUZvckV4cG9ydChleHBvcnRDb2x1bW46IEV4cG9ydENvbHVtbiwgcmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlKTogdm9pZCB7XG5cdFx0aWYgKGV4cG9ydENvbHVtbi50eXBlID09PSBcIkJvb2xlYW5cIiAmJiAhKGV4cG9ydENvbHVtbi50cnVlVmFsdWUgfHwgZXhwb3J0Q29sdW1uLmZhbHNlVmFsdWUpKSB7XG5cdFx0XHRleHBvcnRDb2x1bW4uZmFsc2VWYWx1ZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJub1wiKTtcblx0XHRcdGV4cG9ydENvbHVtbi50cnVlVmFsdWUgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwieWVzXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBvcmlnaW5hdGluZyBleHBvcnQgY29uZmlnIG9mIGEgc2luZ2xlIHByb3BlcnR5IHJlZmVyZW5jZWQgb24gYSBmaWVsZCBncm91cCBvciBhIGN1c3RvbSBjb2x1bW4uXG5cdCAqIEBwYXJhbSBjb2x1bW5zIFRoZSBjb2x1bW5zIGZyb20gdGhlIHRhYmxlIGNvbnZlcnRlclxuXHQgKiBAcGFyYW0gZXhwb3J0Q29sdW1ucyBUaGUgbGlzdCBvZiBjb2x1bW5zIHRvIGJlIGV4cG9ydGVkXG5cdCAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB0byBiZSBleHBvcnRlZFxuXHQgKi9cblx0c3RhdGljIHNldEV4cG9ydENvbmZpZyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdLCBleHBvcnRDb2x1bW5zOiBFeHBvcnRDb2x1bW5bXSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0IHJlZmVyZW5jZWRDb2x1bW4gPSBjb2x1bW5zLmZpbmQoXG5cdFx0XHQoY29sdW1uKSA9PiAhY29sdW1uLnByb3BlcnR5SW5mb3MgJiYgKGNvbHVtbiBhcyBBbm5vdGF0aW9uVGFibGVDb2x1bW4pLnJlbGF0aXZlUGF0aCA9PT0gZXhwb3J0Q29sdW1uc1tpbmRleF0ucHJvcGVydHkudG9TdHJpbmcoKVxuXHRcdCk7XG5cdFx0aWYgKHJlZmVyZW5jZWRDb2x1bW4/LmV4cG9ydFNldHRpbmdzKSB7XG5cdFx0XHQvLyBBbGwgZXhwb3J0IHNldHRpbmdzIG9mIGEgY29sdW1uIHRvIGJlIGV4cG9ydGVkIGNhbid0IGJlIGFkZGVkIHRvIHRoZSBleHBvcnQgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0XHQvLyBiZWNhdXNlIGNvbHVtbiBjb3VsZCBoYXZlIHVuaXRzL3RpbWV6b25lcy9jdXJyZW5jaWVzIHRoYXQgYXJlbid0IHJlcXVpcmVkIG9uIGN1c3RvbSBjdXN0b21zIGJ1dCBvbmx5IG9uIGNvbHVtbnMgZnJvbSBhbm5vdGF0aW9uc1xuXHRcdFx0Y29uc3QgZXhwb3J0Q29uZmlnTGlzdDogQXJyYXk8a2V5b2YgQ29sdW1uRXhwb3J0U2V0dGluZ3M+ID0gW1wic2NhbGVcIiwgXCJkZWxpbWl0ZXJcIiwgXCJmb3JtYXRcIiwgXCJ1dGNcIiwgXCJ0eXBlXCIsIFwiaW5wdXRGb3JtYXRcIl07XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBleHBvcnRDb25maWdMaXN0KSB7XG5cdFx0XHRcdGlmIChyZWZlcmVuY2VkQ29sdW1uLmV4cG9ydFNldHRpbmdzW2tleV0pIHtcblx0XHRcdFx0XHRleHBvcnRDb2x1bW5zW2luZGV4XSA9IHsgLi4uZXhwb3J0Q29sdW1uc1tpbmRleF0sIC4uLnsgW2tleV06IHJlZmVyZW5jZWRDb2x1bW4uZXhwb3J0U2V0dGluZ3Nba2V5XSB9IH07XG5cdFx0XHRcdFx0aWYgKGV4cG9ydENvbHVtbnNbaW5kZXhdLnR5cGUgPT09IFwiQ3VycmVuY3lcIikge1xuXHRcdFx0XHRcdFx0ZXhwb3J0Q29sdW1uc1tpbmRleF0udHlwZSA9IFwiTnVtYmVyXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSB0YXJnZXQgdmFsdWUgY29sdW1uIHdoZW4gdGhlcmUgaXMgYSBkYXRhcG9pbnQgY29sdW1uLlxuXHQgKiBAcGFyYW0gY29sdW1ucyBUaGUgY29sdW1ucyBmcm9tIHRoZSB0YWJsZSBjb252ZXJ0ZXJcblx0ICogQHBhcmFtIGV4cG9ydENvbHVtbnMgVGhlIGxpc3Qgb2YgY29sdW1ucyB0byBiZSBleHBvcnRlZFxuXHQgKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgVGhlIHJlc291cmNlIGJ1bmRsZVxuXHQgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBjb2x1bW4gdG8gYmUgZXhwb3J0ZWRcblx0ICovXG5cdHN0YXRpYyBhZGRUYXJnZXRWYWx1ZUNvbHVtbihcblx0XHRjb2x1bW5zOiBUYWJsZUNvbHVtbltdLFxuXHRcdGV4cG9ydENvbHVtbnM6IEV4cG9ydENvbHVtbltdLFxuXHRcdHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSxcblx0XHRpbmRleDogbnVtYmVyXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhcmdldFZhbHVlQ29sdW1uID0gKGNvbHVtbnMgYXMgQW5ub3RhdGlvblRhYmxlQ29sdW1uW10pPy5maW5kKChjb2x1bW4pID0+IHtcblx0XHRcdGlmICghdGhpcy5pc1Byb3BlcnR5RnJvbUV4cG9ydChjb2x1bW4sIGV4cG9ydENvbHVtbnNbaW5kZXhdKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcy5jb2x1bW5XaXRoVGFyZ2V0VmFsdWVUb0JlQWRkZWQoY29sdW1uLCBleHBvcnRDb2x1bW5zW2luZGV4XSk7XG5cdFx0fSk7XG5cdFx0aWYgKHRhcmdldFZhbHVlQ29sdW1uKSB7XG5cdFx0XHRjb25zdCBjb2x1bW5Ub0JlQWRkZWQ6IEV4cG9ydENvbHVtbiA9IHtcblx0XHRcdFx0bGFiZWw6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUYXJnZXRWYWx1ZVwiKSxcblx0XHRcdFx0cHJvcGVydHk6IEFycmF5LmlzQXJyYXkoZXhwb3J0Q29sdW1uc1tpbmRleF0ucHJvcGVydHkpXG5cdFx0XHRcdFx0PyBleHBvcnRDb2x1bW5zW2luZGV4XS5wcm9wZXJ0eVxuXHRcdFx0XHRcdDogKFtleHBvcnRDb2x1bW5zW2luZGV4XS5wcm9wZXJ0eV0gYXMgc3RyaW5nW10pLFxuXHRcdFx0XHR0ZW1wbGF0ZTogdGFyZ2V0VmFsdWVDb2x1bW4uZXhwb3J0RGF0YVBvaW50VGFyZ2V0VmFsdWVcblx0XHRcdH07XG5cdFx0XHRleHBvcnRDb2x1bW5zLnNwbGljZShpbmRleCArIDEsIDAsIGNvbHVtblRvQmVBZGRlZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY29sdW1uJ3MgcHJvcGVydHkgY29ycmVzcG9uZHMgdG8gdGhlIGV4cG9ydENvbHVtbi5cblx0ICogQHBhcmFtIGNvbHVtbiBUaGUgY29sdW1uIGZyb20gdGhlIGFubm90YXRpb25zIGNvbHVtblxuXHQgKiBAcGFyYW0gZXhwb3J0Q29sdW1uIFRoZSBjb2x1bW4gdG8gYmUgZXhwb3J0ZWRcblx0ICogQHJldHVybnMgYHRydWVgIFdoZXRoZXIgdGhlIGNvbHVtbiBoYXMgdGhlIGV4cG9ydENvbHVtbiBwcm9wZXJ0eVxuXHQgKi9cblx0c3RhdGljIGlzUHJvcGVydHlGcm9tRXhwb3J0KGNvbHVtbjogQW5ub3RhdGlvblRhYmxlQ29sdW1uLCBleHBvcnRDb2x1bW46IEV4cG9ydENvbHVtbik6IGJvb2xlYW4ge1xuXHRcdGlmIChcblx0XHRcdGNvbHVtbi5yZWxhdGl2ZVBhdGggPT09IGV4cG9ydENvbHVtbi5wcm9wZXJ0eSB8fFxuXHRcdFx0ZXhwb3J0Q29sdW1uLnByb3BlcnR5LmluY2x1ZGVzKGNvbHVtbi5yZWxhdGl2ZVBhdGgpIHx8XG5cdFx0XHRleHBvcnRDb2x1bW4ucHJvcGVydHkuaW5jbHVkZXMoY29sdW1uLm5hbWUpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Ly8gSW4gY2FzZSBvZiBjb21wbGV4IHByb3BlcnRpZXNcblx0XHRpZiAoY29sdW1uLnByb3BlcnR5SW5mb3M/Lmxlbmd0aCA9PT0gMSAmJiBleHBvcnRDb2x1bW4ucHJvcGVydHlbMF0gPT09IGNvbHVtbi5wcm9wZXJ0eUluZm9zWzBdKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaWYgYSBjb2x1bW4gdGhhdCBpcyB0byBiZSBleHBvcnRlZCBhbmQgY29udGFpbnMgYSBEYXRhUG9pbnQgd2l0aCBhIGZpeGVkIHRhcmdldCB2YWx1ZSBuZWVkcyB0byBiZSBhZGRlZC5cblx0ICogQHBhcmFtIGNvbHVtbiBUaGUgY29sdW1uIGZyb20gdGhlIGFubm90YXRpb25zIGNvbHVtblxuXHQgKiBAcGFyYW0gY29sdW1uRXhwb3J0IFRoZSBjb2x1bW4gdG8gYmUgZXhwb3J0ZWRcblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSByZWZlcmVuY2VkIGNvbHVtbiBoYXMgZGVmaW5lZCBhIHRhcmdldFZhbHVlIGZvciB0aGUgZGF0YVBvaW50LCBmYWxzZSBlbHNlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRzdGF0aWMgY29sdW1uV2l0aFRhcmdldFZhbHVlVG9CZUFkZGVkKGNvbHVtbjogQW5ub3RhdGlvblRhYmxlQ29sdW1uLCBjb2x1bW5FeHBvcnQ6IEV4cG9ydENvbHVtbik6IGJvb2xlYW4ge1xuXHRcdGxldCBjb2x1bW5OZWVkc1RvQmVBZGRlZCA9IGZhbHNlO1xuXHRcdGlmIChjb2x1bW4uZXhwb3J0RGF0YVBvaW50VGFyZ2V0VmFsdWUgJiYgY29sdW1uLnByb3BlcnR5SW5mb3M/Lmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0Ly9BZGQgVGFyZ2V0VmFsdWUgY29sdW1uIHdoZW4gZXhwb3J0aW5nIG9uIHNwbGl0IG1vZGVcblx0XHRcdC8vIHBhcnQgb2YgYSBGaWVsZEdyb3VwIG9yIGZyb20gYSBsaW5lSXRlbSBvciBmcm9tIGEgY29sdW1uIG9uIHRoZSBlbnRpdHlTZXRcblx0XHRcdGRlbGV0ZSBjb2x1bW5FeHBvcnQudGVtcGxhdGU7XG5cdFx0XHRjb2x1bW5OZWVkc1RvQmVBZGRlZCA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBjb2x1bW5OZWVkc1RvQmVBZGRlZDtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUF3Q0E7RUFBQSxJQWFxQkEsV0FBVztJQUFBLFNBQUFBLFlBQUE7SUFBQUMsUUFBQSxHQUFBRCxXQUFBO0lBQUEsSUFBQUUsTUFBQSxHQUFBRixXQUFBLENBQUFHLFNBQUE7SUFBQUQsTUFBQSxDQUsvQkUsVUFBVSxHQUFWLFNBQUFBLFVBQVVBLENBQUNDLFVBQW9CLEVBQVE7TUFDdEM7SUFBQTs7SUFHRDtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFILE1BQUEsQ0FJQUksbUJBQW1CLEdBQW5CLFNBQUFBLG1CQUFtQkEsQ0FBQ0MsV0FBa0MsRUFBUTtNQUM3RCxJQUFJLENBQUNDLGdCQUFnQixHQUFHRCxXQUFXO0lBQ3BDOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBTCxNQUFBLENBS01PLGNBQWMsR0FBcEIsZUFBTUEsY0FBY0EsQ0FBQSxFQUFpRDtNQUNwRTtNQUNBLElBQUksQ0FBQ0MsV0FBVyxHQUFH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
|
|
262
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZUV4cG9ydCIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0dXBNaXhpbiIsIl9iYXNlQ2xhc3MiLCJzZXRUYWJsZUJpbmRpbmdJbmZvIiwiYmluZGluZ0luZm8iLCJ0YWJsZUJpbmRpbmdJbmZvIiwic2V0RG93bmxvYWRVcmwiLCJkb3dubG9hZFVybCIsInVuZGVmaW5lZCIsImdldFRhYmxlRGVmaW5pdGlvbiIsImVuYWJsZUFuYWx5dGljcyIsInRhYmxlIiwiZ2V0Q29udGVudCIsInByb3BlcnR5SGVscGVyIiwiZ2V0UHJvcGVydHlIZWxwZXIiLCJjb2x1bW5zRXhwb3J0U2V0dGluZ3MiLCJtZGNDb2x1bW4iLCJnZXRDb2x1bW5zIiwiY29uY2F0IiwiZ2V0Q29sdW1uRXhwb3J0U2V0dGluZ3MiLCJiaW5kaW5nUGFyYW1ldGVycyIsImNvbGxlY3Rpb25LZXlzIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFyZ2V0RW50aXR5VHlwZSIsImtleXMiLCJtYXAiLCJrZXkiLCJuYW1lIiwic2VsZWN0UHJvcGVydGllcyIsImNvbHVtbiIsIkFycmF5IiwiaXNBcnJheSIsInByb3BlcnR5Iiwiam9pbiIsImZvckVhY2giLCJpbmNsdWRlcyIsInB1c2giLCJyZXF1ZXN0QXRMZWFzdFByb3BlcnRpZXMiLCJPYmplY3QiLCJyZXF1ZXN0QXRMZWFzdCIsInByb3AiLCJwYXJhbWV0ZXJzIiwiJHNlYXJjaCIsIiQkYWdncmVnYXRpb24iLCJ0YWJsZUJpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwiZG93bmxvYWRMaXN0QmluZGluZyIsImdldE1vZGVsIiwiYmluZExpc3QiLCJnZXRQYXRoIiwiZ2V0Q29udGV4dCIsInNvcnRlciIsImZpbHRlcnMiLCJyZXF1ZXN0RG93bmxvYWRVcmwiLCJkZXN0cm95IiwiZXJyb3IiLCJMb2ciLCJkZWJ1ZyIsIl9vbkJlZm9yZUV4cG9ydCIsImV4cG9ydEV2ZW50IiwiaXNTcGxpdE1vZGUiLCJnZXRQYXJhbWV0ZXIiLCJzcGxpdENlbGxzIiwiZ2V0U291cmNlIiwiZXhwb3J0U2V0dGluZ3MiLCJ0YWJsZURlZmluaXRpb24iLCJ1cGRhdGVFeHBvcnRTZXR0aW5ncyIsImNvbHVtbnMiLCJzZXRTdGF0aWNTaXplTGltaXQiLCJleHBvcnRDb2x1bW5zIiwid29ya2Jvb2siLCJpbmRleCIsImxlbmd0aCIsImV4cG9ydENvbHVtbiIsInJlc291cmNlQnVuZGxlIiwiTGlicmFyeSIsImdldFJlc291cmNlQnVuZGxlRm9yIiwibGFiZWwiLCJnZXRMb2NhbGl6ZWRUZXh0IiwidHJhbnNsYXRlQm9vbGVhblZhbHVlRm9yRXhwb3J0Iiwic2V0RXhwb3J0Q29uZmlnIiwiYWRkVGFyZ2V0VmFsdWVDb2x1bW4iLCJ2YWx1ZU1hcCIsIkpTT04iLCJwYXJzZSIsInRhYmxlQVBJRG93bmxvYWRVcmwiLCJnZXRQYXJlbnQiLCJkYXRhU291cmNlIiwiZGF0YVVybCIsInNldEZpbGVBbmRTaGVldE5hbWUiLCJjb250cm9sIiwiZXhwb3J0RmlsZU5hbWUiLCJmaWxlTmFtZSIsImV4cG9ydFNoZWV0TmFtZSIsImNvbnRleHQiLCJzaGVldE5hbWUiLCJ0eXBlIiwic2l6ZUxpbWl0IiwiZXhwb3J0UmVxdWVzdFNpemUiLCJ0cnVlVmFsdWUiLCJmYWxzZVZhbHVlIiwiZ2V0VGV4dCIsInJlZmVyZW5jZWRDb2x1bW4iLCJmaW5kIiwicHJvcGVydHlJbmZvcyIsInJlbGF0aXZlUGF0aCIsInRvU3RyaW5nIiwiZXhwb3J0Q29uZmlnTGlzdCIsInRhcmdldFZhbHVlQ29sdW1uIiwiaXNQcm9wZXJ0eUZyb21FeHBvcnQiLCJjb2x1bW5XaXRoVGFyZ2V0VmFsdWVUb0JlQWRkZWQiLCJjb2x1bW5Ub0JlQWRkZWQiLCJ0ZW1wbGF0ZSIsImV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlIiwic3BsaWNlIiwiY29sdW1uRXhwb3J0IiwiY29sdW1uTmVlZHNUb0JlQWRkZWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlRXhwb3J0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB7IHR5cGUgSUludGVyZmFjZVdpdGhNaXhpbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IHR5cGUgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQge1xuXHR0eXBlIEFubm90YXRpb25UYWJsZUNvbHVtbixcblx0dHlwZSBDb2x1bW5FeHBvcnRTZXR0aW5ncyxcblx0dHlwZSBUYWJsZUNvbHVtblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vdGFibGUvQ29sdW1uc1wiO1xuaW1wb3J0IHsgZ2V0TG9jYWxpemVkVGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IHR5cGUgU2VyaWFsaXplZENvbGxlY3Rpb25CaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbGxlY3Rpb25CaW5kaW5nSW5mb1wiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBUZXh0QWxpZ24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTURDVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB7IHR5cGUgVGFibGUkQmVmb3JlRXhwb3J0RXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB7IHR5cGUgSVRhYmxlQmxvY2sgfSBmcm9tIFwiLi4vVGFibGVBUElcIjtcblxudHlwZSBFeHBvcnRDb2x1bW4gPSB7XG5cdHByb3BlcnR5OiBzdHJpbmcgfCBzdHJpbmdbXTtcblx0bGFiZWw6IHN0cmluZztcblx0Y29sdW1uSWQ/OiBzdHJpbmc7XG5cdHdpZHRoPzogbnVtYmVyO1xuXHR0ZXh0QWxpZ24/OiBUZXh0QWxpZ247XG5cdGRpc3BsYXlVbml0PzogYm9vbGVhbjtcblx0dHJ1ZVZhbHVlPzogc3RyaW5nO1xuXHRmYWxzZVZhbHVlPzogc3RyaW5nO1xuXHR2YWx1ZU1hcD86IHN0cmluZztcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdHR5cGU/OiBzdHJpbmc7XG5cdGRlbGltaXRlcj86IGJvb2xlYW47XG5cdHdyYXA/OiBib29sZWFuO1xuXHR1bml0Pzogc3RyaW5nO1xuXHRzY2FsZT86IG51bWJlcjtcbn07XG5cbnR5cGUgVXNlckV4cG9ydFNldHRpbmdzID0ge1xuXHRzcGxpdENlbGxzPzogYm9vbGVhbjtcbn07XG5cbi8vIFRoZSB0eXBlIEV4cG9ydFNldHRpbmdzIGlzIG5vdCBleHBvcnRlZCBmcm9tIFwic2FwL3VpL2V4cG9ydC9saWJyYXJ5XCIgc28gd2UgbmVlZCB0byByZWRlZmluZSB0aGVtIGhlcmVcbmV4cG9ydCB0eXBlIEV4cG9ydFNldHRpbmdzID0ge1xuXHRmaWxlTmFtZT86IHN0cmluZztcblx0ZGF0YVNvdXJjZToge1xuXHRcdGRhdGFVcmw6IHN0cmluZztcblx0XHRzaXplTGltaXQ/OiBudW1iZXI7XG5cdH07XG5cdHdvcmtib29rOiB7XG5cdFx0Y29sdW1uczogRXhwb3J0Q29sdW1uW107XG5cdFx0Y29udGV4dD86IHsgc2hlZXROYW1lPzogc3RyaW5nIH07XG5cdH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWJsZUV4cG9ydCBpbXBsZW1lbnRzIElJbnRlcmZhY2VXaXRoTWl4aW4ge1xuXHRkb3dubG9hZFVybD86IHN0cmluZztcblxuXHR0YWJsZUJpbmRpbmdJbmZvPzogU2VyaWFsaXplZENvbGxlY3Rpb25CaW5kaW5nSW5mbztcblxuXHRzZXR1cE1peGluKF9iYXNlQ2xhc3M6IEZ1bmN0aW9uKTogdm9pZCB7XG5cdFx0Ly8gVGhpcyBtZXRob2QgaXMgbmVlZGVkIHRvIGltcGxlbWVudCBpbnRlcmZhY2UgSUludGVyZmFjZVdpdGhNaXhpblxuXHR9XG5cblx0LyoqXG5cdCAqIFN0b3JlcyB0aGUgYmluZGluZyBpbmZvIGZvciB0aGUgdGFibGUgdXNlZCB0byBjcmVhdGUgdGhlIGxpc3QgYmluZGluZy5cblx0ICogQHBhcmFtIGJpbmRpbmdJbmZvXG5cdCAqL1xuXHRzZXRUYWJsZUJpbmRpbmdJbmZvKGJpbmRpbmdJbmZvOiBTZXJpYWxpemVkQ29sbGVjdGlvbkJpbmRpbmdJbmZvKTogdm9pZCB7XG5cdFx0dGhpcy50YWJsZUJpbmRpbmdJbmZvID0gYmluZGluZ0luZm87XG5cdH1cblxuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgZG93bmxvYWQgVVJMIHRvIGJlIHVzZWQgYnkgdGhlIGV4cG9ydCBhbmQgc3RvcmUgaXQgaW4gdGhlIFRhYmxlQVBJLlxuXHQgKiBAcGFyYW0gdGhpc1xuXHQgKiBAcmV0dXJucyBQcm9taXNlIHdoZW4gZG93bmxvYWRVcmwgaXMgc2V0XG5cdCAqL1xuXHRhc3luYyBzZXREb3dubG9hZFVybCh0aGlzOiBJVGFibGVCbG9jayAmIFRhYmxlRXhwb3J0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly9lbXB0eSB0aGUgZG93bmxvYWRVcmwgdG8gcHJldmVudCBhbiBpbnZhbGlkIG9uZSB0byBiZSB1c2VkXG5cdFx0dGhpcy5kb3dubG9hZFVybCA9IHVuZGVmaW5lZDtcblxuXHRcdGlmICh0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLmVuYWJsZUFuYWx5dGljcyA9PT0gdHJ1ZSkge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBhbiBhbmFseXRpY2FsIHRhYmxlLCAkc2VsZWN0IGlzIG5vdCBzdXBwb3J0ZWQsIHNvIHdlIGRvbid0IGNhbGN1bGF0ZSB0aGUgZG93bmxvYWQgVVJMICh3ZSB1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3VyKVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCBkb3dubG9hZFVybDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcblx0XHRjb25zdCB0YWJsZSA9IHRoaXMuZ2V0Q29udGVudCgpO1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUhlbHBlciA9IHRhYmxlLmdldFByb3BlcnR5SGVscGVyKCk7XG5cdFx0XHRsZXQgY29sdW1uc0V4cG9ydFNldHRpbmdzOiBFeHBvcnRDb2x1bW5bXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBtZGNDb2x1bW4gb2YgdGFibGUuZ2V0Q29sdW1ucygpKSB7XG5cdFx0XHRcdGNvbHVtbnNFeHBvcnRTZXR0aW5ncyA9IGNvbHVtbnNFeHBvcnRTZXR0aW5ncy5jb25jYXQocHJvcGVydHlIZWxwZXIuZ2V0Q29sdW1uRXhwb3J0U2V0dGluZ3MobWRjQ29sdW1uKSk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXJzOiB7ICRzZWxlY3Q/OiBzdHJpbmc7ICRzZWFyY2g/OiBzdHJpbmc7ICQkYWdncmVnYXRpb24/OiBvYmplY3QgfSA9IHt9O1xuXHRcdFx0Ly8gd2UganVzdCB3YW50IHRvIHJlcXVlc3QgdGhlIHByb3BlcnRpZXMgbmVjZXNzYXJ5IGZvciB0aGUgZXhwb3J0XG5cdFx0XHRjb25zdCBjb2xsZWN0aW9uS2V5cyA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgodGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk/LnRhcmdldEVudGl0eVR5cGUua2V5cy5tYXAoXG5cdFx0XHRcdChrZXkpID0+IGtleS5uYW1lXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3Qgc2VsZWN0UHJvcGVydGllcyA9IGNvbHVtbnNFeHBvcnRTZXR0aW5ncy5tYXAoKGNvbHVtbjogRXhwb3J0Q29sdW1uKSA9PiB7XG5cdFx0XHRcdHJldHVybiBBcnJheS5pc0FycmF5KGNvbHVtbi5wcm9wZXJ0eSkgPyBjb2x1bW4ucHJvcGVydHkuam9pbihcIixcIikgOiBjb2x1bW4ucHJvcGVydHk7XG5cdFx0XHR9KTtcblx0XHRcdGNvbGxlY3Rpb25LZXlzPy5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdFx0aWYgKCFzZWxlY3RQcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSkpIHtcblx0XHRcdFx0XHRzZWxlY3RQcm9wZXJ0aWVzLnB1c2goa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCByZXF1ZXN0QXRMZWFzdFByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyh0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpLnJlcXVlc3RBdExlYXN0KTtcblx0XHRcdHJlcXVlc3RBdExlYXN0UHJvcGVydGllcz8uZm9yRWFjaCgocHJvcCkgPT4ge1xuXHRcdFx0XHRpZiAoIXNlbGVjdFByb3BlcnRpZXMuaW5jbHVkZXMocHJvcCkpIHtcblx0XHRcdFx0XHRzZWxlY3RQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0YmluZGluZ1BhcmFtZXRlcnNbXCIkc2VsZWN0XCJdID0gc2VsZWN0UHJvcGVydGllcy5qb2luKFwiLFwiKTtcblxuXHRcdFx0aWYgKHRoaXMudGFibGVCaW5kaW5nSW5mbz8ucGFyYW1ldGVycz8uJHNlYXJjaCkge1xuXHRcdFx0XHRiaW5kaW5nUGFyYW1ldGVycy4kc2VhcmNoID0gdGhpcy50YWJsZUJpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJHNlYXJjaDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMudGFibGVCaW5kaW5nSW5mbz8ucGFyYW1ldGVycz8uJCRhZ2dyZWdhdGlvbikge1xuXHRcdFx0XHRiaW5kaW5nUGFyYW1ldGVycy4kJGFnZ3JlZ2F0aW9uID0gdGhpcy50YWJsZUJpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJCRhZ2dyZWdhdGlvbjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgdGFibGVCaW5kaW5nID0gdGFibGUuZ2V0Um93QmluZGluZygpO1xuXHRcdFx0Ly8gd2UgY3JlYXRlIGEgbGlzdCBiaW5kaW5nIHRvIGNvbXB1dGUgdGhlIHJpZ2h0IHVybCBmb3IgdGhlIGV4cG9ydCBmcm9tIGl0cyBiaW5kaW5nIHBhcmFtZXRlcnNcblx0XHRcdGNvbnN0IGRvd25sb2FkTGlzdEJpbmRpbmcgPSAodGFibGVCaW5kaW5nLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbCkuYmluZExpc3QoXG5cdFx0XHRcdHRhYmxlQmluZGluZy5nZXRQYXRoKCksXG5cdFx0XHRcdHRhYmxlQmluZGluZy5nZXRDb250ZXh0KCksXG5cdFx0XHRcdHRoaXMudGFibGVCaW5kaW5nSW5mbz8uc29ydGVyLFxuXHRcdFx0XHR0aGlzLnRhYmxlQmluZGluZ0luZm8/LmZpbHRlcnMsXG5cdFx0XHRcdGJpbmRpbmdQYXJhbWV0ZXJzXG5cdFx0XHQpO1xuXHRcdFx0ZG93bmxvYWRVcmwgPSBhd2FpdCBkb3dubG9hZExpc3RCaW5kaW5nLnJlcXVlc3REb3dubG9hZFVybCgpO1xuXHRcdFx0ZG93bmxvYWRMaXN0QmluZGluZy5kZXN0cm95KCk7XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5kZWJ1ZyhcIkVycm9yIHdoaWxlIGNvbXB1dGluZyB0aGUgZG93bmxvYWQgVVJMIGZvciB0aGUgZXhwb3J0XCIsIGVycm9yIGFzIEVycm9yKTtcblx0XHR9XG5cdFx0aWYgKGRvd25sb2FkVXJsKSB7XG5cdFx0XHR0aGlzLmRvd25sb2FkVXJsID0gZG93bmxvYWRVcmw7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEludGVyY2VwdCB0aGUgZXhwb3J0IGJlZm9yZSBpdCdzIHRyaWdnZXJlZCB0byBjb3ZlciBzcGVjaWZpYyBjYXNlcyB0aGF0IGNvdWxkbid0IGJlIGFkZHJlc3NlZCBvbiB0aGUgcHJvcGVydHlJbmZvcyBmb3IgZWFjaCBjb2x1bW4uXG5cdCAqIGUuZy4gRml4ZWQgVGFyZ2V0IFZhbHVlIGZvciB0aGUgZGF0YXBvaW50cy5cblx0ICogQHBhcmFtIHRoaXNcblx0ICogQHBhcmFtIGV4cG9ydEV2ZW50XG5cdCAqL1xuXHRfb25CZWZvcmVFeHBvcnQodGhpczogSVRhYmxlQmxvY2sgJiBUYWJsZUV4cG9ydCwgZXhwb3J0RXZlbnQ6IFRhYmxlJEJlZm9yZUV4cG9ydEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgaXNTcGxpdE1vZGUgPSAoZXhwb3J0RXZlbnQuZ2V0UGFyYW1ldGVyKFwidXNlckV4cG9ydFNldHRpbmdzXCIpIGFzIFVzZXJFeHBvcnRTZXR0aW5ncyk/LnNwbGl0Q2VsbHMgPT09IHRydWU7XG5cdFx0Y29uc3QgdGFibGUgPSBleHBvcnRFdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdGV4cG9ydFNldHRpbmdzID0gZXhwb3J0RXZlbnQuZ2V0UGFyYW1ldGVyKFwiZXhwb3J0U2V0dGluZ3NcIikgYXMgRXhwb3J0U2V0dGluZ3MsXG5cdFx0XHR0YWJsZURlZmluaXRpb24gPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpO1xuXG5cdFx0VGFibGVFeHBvcnQudXBkYXRlRXhwb3J0U2V0dGluZ3MoZXhwb3J0U2V0dGluZ3MsIHRhYmxlRGVmaW5pdGlvbiwgdGFibGUsIGlzU3BsaXRNb2RlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSB0YWJsZSBjb2x1bW5zIHRoYXQgY2FuIGJlIGV4cG9ydGVkLlxuXHQgKiBAcGFyYW0gZXhwb3J0U2V0dGluZ3MgVGhlIHRhYmxlIGV4cG9ydCBzZXR0aW5nc1xuXHQgKiBAcGFyYW0gdGFibGVEZWZpbml0aW9uIFRoZSB0YWJsZSBkZWZpbml0aW9uIGZyb20gdGhlIHRhYmxlIGNvbnZlcnRlclxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlXG5cdCAqIEBwYXJhbSBpc1NwbGl0TW9kZSBEZWZpbmVzIGlmIHRoZSBleHBvcnQgaGFzIGJlZW4gbGF1bmNoZWQgdXNpbmcgc3BsaXQgbW9kZVxuXHQgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBjb2x1bW5zIHRvIGJlIGV4cG9ydGVkXG5cdCAqL1xuXHRzdGF0aWMgdXBkYXRlRXhwb3J0U2V0dGluZ3MoXG5cdFx0ZXhwb3J0U2V0dGluZ3M6IEV4cG9ydFNldHRpbmdzLFxuXHRcdHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uLFxuXHRcdHRhYmxlOiBNRENUYWJsZSxcblx0XHRpc1NwbGl0TW9kZTogYm9vbGVhblxuXHQpOiBFeHBvcnRTZXR0aW5ncyB7XG5cdFx0Y29uc3QgY29sdW1ucyA9IHRhYmxlRGVmaW5pdGlvbi5jb2x1bW5zO1xuXHRcdHRoaXMuc2V0U3RhdGljU2l6ZUxpbWl0KHRhYmxlRGVmaW5pdGlvbiwgZXhwb3J0U2V0dGluZ3MpO1xuXHRcdGNvbnN0IGV4cG9ydENvbHVtbnMgPSBleHBvcnRTZXR0aW5ncy53b3JrYm9vay5jb2x1bW5zO1xuXHRcdGZvciAobGV0IGluZGV4ID0gZXhwb3J0Q29sdW1ucy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG5cdFx0XHRjb25zdCBleHBvcnRDb2x1bW4gPSBleHBvcnRDb2x1bW5zW2luZGV4XTtcblx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhO1xuXHRcdFx0ZXhwb3J0Q29sdW1uLmxhYmVsID0gZ2V0TG9jYWxpemVkVGV4dChleHBvcnRDb2x1bW4ubGFiZWwsIHRhYmxlKTtcblx0XHRcdHRoaXMudHJhbnNsYXRlQm9vbGVhblZhbHVlRm9yRXhwb3J0KGV4cG9ydENvbHVtbiwgcmVzb3VyY2VCdW5kbGUpO1xuXHRcdFx0aWYgKGlzU3BsaXRNb2RlKSB7XG5cdFx0XHRcdHRoaXMuc2V0RXhwb3J0Q29uZmlnKGNvbHVtbnMsIGV4cG9ydENvbHVtbnMsIGluZGV4KTtcblx0XHRcdFx0dGhpcy5hZGRUYXJnZXRWYWx1ZUNvbHVtbihjb2x1bW5zLCBleHBvcnRDb2x1bW5zLCByZXNvdXJjZUJ1bmRsZSwgaW5kZXgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGV4cG9ydENvbHVtbi52YWx1ZU1hcCAmJiB0eXBlb2YgZXhwb3J0Q29sdW1uLnZhbHVlTWFwID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGV4cG9ydENvbHVtbi52YWx1ZU1hcCA9IEpTT04ucGFyc2UoZXhwb3J0Q29sdW1uLnZhbHVlTWFwKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3QgdGFibGVBUElEb3dubG9hZFVybCA9ICh0YWJsZS5nZXRQYXJlbnQoKSBhcyBJVGFibGVCbG9jayAmIFRhYmxlRXhwb3J0KS5kb3dubG9hZFVybDtcblx0XHRpZiAodGFibGVBUElEb3dubG9hZFVybCkge1xuXHRcdFx0ZXhwb3J0U2V0dGluZ3MuZGF0YVNvdXJjZS5kYXRhVXJsID0gdGFibGVBUElEb3dubG9hZFVybDtcblx0XHR9XG5cdFx0dGhpcy5zZXRGaWxlQW5kU2hlZXROYW1lKGV4cG9ydFNldHRpbmdzLCB0YWJsZURlZmluaXRpb24pO1xuXHRcdHJldHVybiBleHBvcnRTZXR0aW5ncztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBmaWxlIG5hbWUgYW5kIHNoZWV0IG5hbWUgZm9yIHRoZSBleHBvcnQgc2V0dGluZ3MuXG5cdCAqIEBwYXJhbSBleHBvcnRTZXR0aW5ncyBUaGUgdGFibGUgZXhwb3J0IHNldHRpbmdzXG5cdCAqIEBwYXJhbSB0YWJsZURlZmluaXRpb24gVGhlIHRhYmxlIGRlZmluaXRpb24gZnJvbSB0aGUgdGFibGUgY29udmVydGVyXG5cdCAqL1xuXHRzdGF0aWMgc2V0RmlsZUFuZFNoZWV0TmFtZShleHBvcnRTZXR0aW5nczogRXhwb3J0U2V0dGluZ3MsIHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uKTogdm9pZCB7XG5cdFx0aWYgKHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmV4cG9ydEZpbGVOYW1lKSB7XG5cdFx0XHRleHBvcnRTZXR0aW5ncy5maWxlTmFtZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmV4cG9ydEZpbGVOYW1lO1xuXHRcdH1cblx0XHRpZiAodGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZXhwb3J0U2hlZXROYW1lICYmIGV4cG9ydFNldHRpbmdzLndvcmtib29rLmNvbnRleHQpIHtcblx0XHRcdGV4cG9ydFNldHRpbmdzLndvcmtib29rLmNvbnRleHQuc2hlZXROYW1lID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZXhwb3J0U2hlZXROYW1lO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBzdGF0aWMgc2l6ZSBsaW1pdCBmb3IgdGhlIHRhYmxlIGV4cG9ydC5cblx0ICogQHBhcmFtIHRhYmxlRGVmaW5pdGlvbiBUaGUgdGFibGUgZGVmaW5pdGlvbiBmcm9tIHRoZSB0YWJsZSBjb252ZXJ0ZXJcblx0ICogQHBhcmFtIGV4cG9ydFNldHRpbmdzIFRoZSB0YWJsZSBleHBvcnQgc2V0dGluZ3Ncblx0ICovXG5cdHN0YXRpYyBzZXRTdGF0aWNTaXplTGltaXQodGFibGVEZWZpbml0aW9uOiBUYWJsZVZpc3VhbGl6YXRpb24sIGV4cG9ydFNldHRpbmdzOiBFeHBvcnRTZXR0aW5ncyk6IHZvaWQge1xuXHRcdGlmIChcblx0XHRcdCF0YWJsZURlZmluaXRpb24uZW5hYmxlQW5hbHl0aWNzICYmXG5cdFx0XHQodGFibGVEZWZpbml0aW9uLmNvbnRyb2wudHlwZSA9PT0gXCJSZXNwb25zaXZlVGFibGVcIiB8fCB0YWJsZURlZmluaXRpb24uY29udHJvbC50eXBlID09PSBcIkdyaWRUYWJsZVwiKVxuXHRcdCkge1xuXHRcdFx0ZXhwb3J0U2V0dGluZ3MuZGF0YVNvdXJjZS5zaXplTGltaXQgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5leHBvcnRSZXF1ZXN0U2l6ZSA/PyAxMDAwO1xuXHRcdH0gZWxzZSBpZiAodGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZXhwb3J0UmVxdWVzdFNpemUpIHtcblx0XHRcdC8vIEluIGNhc2Ugb2YgYW5hbHl0aWNhbCBvciB0cmVlIHRhYmxlLCB0aGUgc2l6ZSBsaW1pdCBpcyBzZXQgdG8gdGhlIG9uZSBkZWZpbmVkIGluIHRoZSB0YWJsZSBkZWZpbml0aW9uXG5cdFx0XHRleHBvcnRTZXR0aW5ncy5kYXRhU291cmNlLnNpemVMaW1pdCA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmV4cG9ydFJlcXVlc3RTaXplO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB0cmFuc2xhdGVkIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgYSBjb2x1bW4gd2l0aCBhIEJvb2xlYW4gdmFsdWUuXG5cdCAqIEBwYXJhbSBleHBvcnRDb2x1bW4gVGhlIGNvbHVtbiB0byBiZSBleHBvcnRlZFxuXHQgKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgVGhlIHJlc291cmNlIGJ1bmRsZVxuXHQgKi9cblx0c3RhdGljIHRyYW5zbGF0ZUJvb2xlYW5WYWx1ZUZvckV4cG9ydChleHBvcnRDb2x1bW46IEV4cG9ydENvbHVtbiwgcmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlKTogdm9pZCB7XG5cdFx0aWYgKGV4cG9ydENvbHVtbi50eXBlID09PSBcIkJvb2xlYW5cIiAmJiAhKGV4cG9ydENvbHVtbi50cnVlVmFsdWUgfHwgZXhwb3J0Q29sdW1uLmZhbHNlVmFsdWUpKSB7XG5cdFx0XHRleHBvcnRDb2x1bW4uZmFsc2VWYWx1ZSA9IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJub1wiKTtcblx0XHRcdGV4cG9ydENvbHVtbi50cnVlVmFsdWUgPSByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwieWVzXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBvcmlnaW5hdGluZyBleHBvcnQgY29uZmlnIG9mIGEgc2luZ2xlIHByb3BlcnR5IHJlZmVyZW5jZWQgb24gYSBmaWVsZCBncm91cCBvciBhIGN1c3RvbSBjb2x1bW4uXG5cdCAqIEBwYXJhbSBjb2x1bW5zIFRoZSBjb2x1bW5zIGZyb20gdGhlIHRhYmxlIGNvbnZlcnRlclxuXHQgKiBAcGFyYW0gZXhwb3J0Q29sdW1ucyBUaGUgbGlzdCBvZiBjb2x1bW5zIHRvIGJlIGV4cG9ydGVkXG5cdCAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB0byBiZSBleHBvcnRlZFxuXHQgKi9cblx0c3RhdGljIHNldEV4cG9ydENvbmZpZyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdLCBleHBvcnRDb2x1bW5zOiBFeHBvcnRDb2x1bW5bXSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0IHJlZmVyZW5jZWRDb2x1bW4gPSBjb2x1bW5zLmZpbmQoXG5cdFx0XHQoY29sdW1uKSA9PiAhY29sdW1uLnByb3BlcnR5SW5mb3MgJiYgKGNvbHVtbiBhcyBBbm5vdGF0aW9uVGFibGVDb2x1bW4pLnJlbGF0aXZlUGF0aCA9PT0gZXhwb3J0Q29sdW1uc1tpbmRleF0ucHJvcGVydHkudG9TdHJpbmcoKVxuXHRcdCk7XG5cdFx0aWYgKHJlZmVyZW5jZWRDb2x1bW4/LmV4cG9ydFNldHRpbmdzKSB7XG5cdFx0XHQvLyBBbGwgZXhwb3J0IHNldHRpbmdzIG9mIGEgY29sdW1uIHRvIGJlIGV4cG9ydGVkIGNhbid0IGJlIGFkZGVkIHRvIHRoZSBleHBvcnQgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0XHQvLyBiZWNhdXNlIGNvbHVtbiBjb3VsZCBoYXZlIHVuaXRzL3RpbWV6b25lcy9jdXJyZW5jaWVzIHRoYXQgYXJlbid0IHJlcXVpcmVkIG9uIGN1c3RvbSBjdXN0b21zIGJ1dCBvbmx5IG9uIGNvbHVtbnMgZnJvbSBhbm5vdGF0aW9uc1xuXHRcdFx0Y29uc3QgZXhwb3J0Q29uZmlnTGlzdDogQXJyYXk8a2V5b2YgQ29sdW1uRXhwb3J0U2V0dGluZ3M+ID0gW1wic2NhbGVcIiwgXCJkZWxpbWl0ZXJcIiwgXCJmb3JtYXRcIiwgXCJ1dGNcIiwgXCJ0eXBlXCIsIFwiaW5wdXRGb3JtYXRcIl07XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBleHBvcnRDb25maWdMaXN0KSB7XG5cdFx0XHRcdGlmIChyZWZlcmVuY2VkQ29sdW1uLmV4cG9ydFNldHRpbmdzW2tleV0pIHtcblx0XHRcdFx0XHRleHBvcnRDb2x1bW5zW2luZGV4XSA9IHsgLi4uZXhwb3J0Q29sdW1uc1tpbmRleF0sIC4uLnsgW2tleV06IHJlZmVyZW5jZWRDb2x1bW4uZXhwb3J0U2V0dGluZ3Nba2V5XSB9IH07XG5cdFx0XHRcdFx0aWYgKGV4cG9ydENvbHVtbnNbaW5kZXhdLnR5cGUgPT09IFwiQ3VycmVuY3lcIikge1xuXHRcdFx0XHRcdFx0ZXhwb3J0Q29sdW1uc1tpbmRleF0udHlwZSA9IFwiTnVtYmVyXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSB0YXJnZXQgdmFsdWUgY29sdW1uIHdoZW4gdGhlcmUgaXMgYSBkYXRhcG9pbnQgY29sdW1uLlxuXHQgKiBAcGFyYW0gY29sdW1ucyBUaGUgY29sdW1ucyBmcm9tIHRoZSB0YWJsZSBjb252ZXJ0ZXJcblx0ICogQHBhcmFtIGV4cG9ydENvbHVtbnMgVGhlIGxpc3Qgb2YgY29sdW1ucyB0byBiZSBleHBvcnRlZFxuXHQgKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgVGhlIHJlc291cmNlIGJ1bmRsZVxuXHQgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBjb2x1bW4gdG8gYmUgZXhwb3J0ZWRcblx0ICovXG5cdHN0YXRpYyBhZGRUYXJnZXRWYWx1ZUNvbHVtbihcblx0XHRjb2x1bW5zOiBUYWJsZUNvbHVtbltdLFxuXHRcdGV4cG9ydENvbHVtbnM6IEV4cG9ydENvbHVtbltdLFxuXHRcdHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSxcblx0XHRpbmRleDogbnVtYmVyXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhcmdldFZhbHVlQ29sdW1uID0gKGNvbHVtbnMgYXMgQW5ub3RhdGlvblRhYmxlQ29sdW1uW10pPy5maW5kKChjb2x1bW4pID0+IHtcblx0XHRcdGlmICghdGhpcy5pc1Byb3BlcnR5RnJvbUV4cG9ydChjb2x1bW4sIGV4cG9ydENvbHVtbnNbaW5kZXhdKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcy5jb2x1bW5XaXRoVGFyZ2V0VmFsdWVUb0JlQWRkZWQoY29sdW1uLCBleHBvcnRDb2x1bW5zW2luZGV4XSk7XG5cdFx0fSk7XG5cdFx0aWYgKHRhcmdldFZhbHVlQ29sdW1uKSB7XG5cdFx0XHRjb25zdCBjb2x1bW5Ub0JlQWRkZWQ6IEV4cG9ydENvbHVtbiA9IHtcblx0XHRcdFx0bGFiZWw6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUYXJnZXRWYWx1ZVwiKSxcblx0XHRcdFx0cHJvcGVydHk6IEFycmF5LmlzQXJyYXkoZXhwb3J0Q29sdW1uc1tpbmRleF0ucHJvcGVydHkpXG5cdFx0XHRcdFx0PyBleHBvcnRDb2x1bW5zW2luZGV4XS5wcm9wZXJ0eVxuXHRcdFx0XHRcdDogKFtleHBvcnRDb2x1bW5zW2luZGV4XS5wcm9wZXJ0eV0gYXMgc3RyaW5nW10pLFxuXHRcdFx0XHR0ZW1wbGF0ZTogdGFyZ2V0VmFsdWVDb2x1bW4uZXhwb3J0RGF0YVBvaW50VGFyZ2V0VmFsdWVcblx0XHRcdH07XG5cdFx0XHRleHBvcnRDb2x1bW5zLnNwbGljZShpbmRleCArIDEsIDAsIGNvbHVtblRvQmVBZGRlZCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgY29sdW1uJ3MgcHJvcGVydHkgY29ycmVzcG9uZHMgdG8gdGhlIGV4cG9ydENvbHVtbi5cblx0ICogQHBhcmFtIGNvbHVtbiBUaGUgY29sdW1uIGZyb20gdGhlIGFubm90YXRpb25zIGNvbHVtblxuXHQgKiBAcGFyYW0gZXhwb3J0Q29sdW1uIFRoZSBjb2x1bW4gdG8gYmUgZXhwb3J0ZWRcblx0ICogQHJldHVybnMgYHRydWVgIFdoZXRoZXIgdGhlIGNvbHVtbiBoYXMgdGhlIGV4cG9ydENvbHVtbiBwcm9wZXJ0eVxuXHQgKi9cblx0c3RhdGljIGlzUHJvcGVydHlGcm9tRXhwb3J0KGNvbHVtbjogQW5ub3RhdGlvblRhYmxlQ29sdW1uLCBleHBvcnRDb2x1bW46IEV4cG9ydENvbHVtbik6IGJvb2xlYW4ge1xuXHRcdGlmIChcblx0XHRcdGNvbHVtbi5yZWxhdGl2ZVBhdGggPT09IGV4cG9ydENvbHVtbi5wcm9wZXJ0eSB8fFxuXHRcdFx0ZXhwb3J0Q29sdW1uLnByb3BlcnR5LmluY2x1ZGVzKGNvbHVtbi5yZWxhdGl2ZVBhdGgpIHx8XG5cdFx0XHRleHBvcnRDb2x1bW4ucHJvcGVydHkuaW5jbHVkZXMoY29sdW1uLm5hbWUpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Ly8gSW4gY2FzZSBvZiBjb21wbGV4IHByb3BlcnRpZXNcblx0XHRpZiAoY29sdW1uLnByb3BlcnR5SW5mb3M/Lmxlbmd0aCA9PT0gMSAmJiBleHBvcnRDb2x1bW4ucHJvcGVydHlbMF0gPT09IGNvbHVtbi5wcm9wZXJ0eUluZm9zWzBdKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaWYgYSBjb2x1bW4gdGhhdCBpcyB0byBiZSBleHBvcnRlZCBhbmQgY29udGFpbnMgYSBEYXRhUG9pbnQgd2l0aCBhIGZpeGVkIHRhcmdldCB2YWx1ZSBuZWVkcyB0byBiZSBhZGRlZC5cblx0ICogQHBhcmFtIGNvbHVtbiBUaGUgY29sdW1uIGZyb20gdGhlIGFubm90YXRpb25zIGNvbHVtblxuXHQgKiBAcGFyYW0gY29sdW1uRXhwb3J0IFRoZSBjb2x1bW4gdG8gYmUgZXhwb3J0ZWRcblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSByZWZlcmVuY2VkIGNvbHVtbiBoYXMgZGVmaW5lZCBhIHRhcmdldFZhbHVlIGZvciB0aGUgZGF0YVBvaW50LCBmYWxzZSBlbHNlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRzdGF0aWMgY29sdW1uV2l0aFRhcmdldFZhbHVlVG9CZUFkZGVkKGNvbHVtbjogQW5ub3RhdGlvblRhYmxlQ29sdW1uLCBjb2x1bW5FeHBvcnQ6IEV4cG9ydENvbHVtbik6IGJvb2xlYW4ge1xuXHRcdGxldCBjb2x1bW5OZWVkc1RvQmVBZGRlZCA9IGZhbHNlO1xuXHRcdGlmIChjb2x1bW4uZXhwb3J0RGF0YVBvaW50VGFyZ2V0VmFsdWUgJiYgY29sdW1uLnByb3BlcnR5SW5mb3M/Lmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0Ly9BZGQgVGFyZ2V0VmFsdWUgY29sdW1uIHdoZW4gZXhwb3J0aW5nIG9uIHNwbGl0IG1vZGVcblx0XHRcdC8vIHBhcnQgb2YgYSBGaWVsZEdyb3VwIG9yIGZyb20gYSBsaW5lSXRlbSBvciBmcm9tIGEgY29sdW1uIG9uIHRoZSBlbnRpdHlTZXRcblx0XHRcdGRlbGV0ZSBjb2x1bW5FeHBvcnQudGVtcGxhdGU7XG5cdFx0XHRjb2x1bW5OZWVkc1RvQmVBZGRlZCA9IHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBjb2x1bW5OZWVkc1RvQmVBZGRlZDtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUF3Q0E7RUFBQSxJQWFxQkEsV0FBVztJQUFBLFNBQUFBLFlBQUE7SUFBQUMsUUFBQSxHQUFBRCxXQUFBO0lBQUEsSUFBQUUsTUFBQSxHQUFBRixXQUFBLENBQUFHLFNBQUE7SUFBQUQsTUFBQSxDQUsvQkUsVUFBVSxHQUFWLFNBQUFBLFVBQVVBLENBQUNDLFVBQW9CLEVBQVE7TUFDdEM7SUFBQTs7SUFHRDtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFILE1BQUEsQ0FJQUksbUJBQW1CLEdBQW5CLFNBQUFBLG1CQUFtQkEsQ0FBQ0MsV0FBNEMsRUFBUTtNQUN2RSxJQUFJLENBQUNDLGdCQUFnQixHQUFHRCxXQUFXO0lBQ3BDOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBTCxNQUFBLENBS01PLGNBQWMsR0FBcEIsZUFBTUEsY0FBY0EsQ0FBQSxFQUFpRDtN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Q0UsS0FBSyxDQUFDLENBQUN2QyxRQUFRLENBQWM7VUFDaERnRixRQUFRLEVBQUVKLGlCQUFpQixDQUFDSztRQUM3QixDQUFDO1FBQ0Q1QyxhQUFhLENBQUM2QyxNQUFNLENBQUMzQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRXdDLGVBQWUsQ0FBQztNQUNwRDtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUFwSCxXQUFBLENBTU9rSCxvQkFBb0IsR0FBM0IsU0FBT0Esb0JBQW9CQSxDQUFDaEYsTUFBNkIsRUFBRTRDLFlBQTBCLEVBQVc7TUFDL0YsSUFDQzVDLE1BQU0sQ0FBQzRFLFlBQVksS0FBS2hDLFlBQVksQ0FBQ3pDLFFBQVEsSUFDN0N5QyxZQUFZLENBQUN6QyxRQUFRLENBQUNHLFFBQVEsQ0FBQ04sTUFBTSxDQUFDNEUsWUFBWSxDQUFDLElBQ25EaEMsWUFBWSxDQUFDekMsUUFBUSxDQUFDRyxRQUFRLENBQUNOLE1BQU0sQ0FBQ0YsSUFBSSxDQUFDLEVBQzFDO1FBQ0QsT0FBTyxJQUFJO01BQ1o7TUFDQTtNQUNBLElBQUlFLE1BQU0sQ0FBQzJFLGFBQWEsRUFBRWhDLE1BQU0sS0FBSyxDQUFDLElBQUlDLFlBQVksQ0FBQ3pDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBS0gsTUFBTSxDQUFDMkUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQy9GLE9BQU8sSUFBSTtNQUNaO01BQ0EsT0FBTyxLQUFLO0lBQ2I7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBN0csV0FBQSxDQU9PbUgsOEJBQThCLEdBQXJDLFNBQU9BLDhCQUE4QkEsQ0FBQ2pGLE1BQTZCLEVBQUVzRixZQUEwQixFQUFXO01BQ3pHLElBQUlDLG9CQUFvQixHQUFHLEtBQUs7TUFDaEMsSUFBSXZGLE1BQU0sQ0FBQ29GLDBCQUEwQixJQUFJcEYsTUFBTSxDQUFDMkUsYUFBYSxFQUFFaEMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUM1RTtRQUNBO1FBQ0EsT0FBTzJDLFlBQVksQ0FBQ0gsUUFBUTtRQUM1Qkksb0JBQW9CLEdBQUcsSUFBSTtNQUM1QjtNQUNBLE9BQU9BLG9CQUFvQjtJQUM1QixDQUFDO0lBQUEsT0FBQXpILFdBQUE7RUFBQTtFQUFBQyxRQUFBLEdBQUFELFdBQUE7RUFBQSxPQUFBQyxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
type TableColumn
|
|
9
9
|
} from "sap/fe/core/converters/controls/Common/table/Columns";
|
|
10
10
|
import { getLocalizedText } from "sap/fe/core/helpers/ResourceModelHelper";
|
|
11
|
-
import { type
|
|
11
|
+
import { type SerializedCollectionBindingInfo } from "sap/fe/macros/CollectionBindingInfo";
|
|
12
12
|
import Library from "sap/ui/core/Lib";
|
|
13
13
|
import type { TextAlign } from "sap/ui/core/library";
|
|
14
14
|
import type MDCTable from "sap/ui/mdc/Table";
|
|
@@ -54,7 +54,7 @@ export type ExportSettings = {
|
|
|
54
54
|
export default class TableExport implements IInterfaceWithMixin {
|
|
55
55
|
downloadUrl?: string;
|
|
56
56
|
|
|
57
|
-
tableBindingInfo?:
|
|
57
|
+
tableBindingInfo?: SerializedCollectionBindingInfo;
|
|
58
58
|
|
|
59
59
|
setupMixin(_baseClass: Function): void {
|
|
60
60
|
// This method is needed to implement interface IInterfaceWithMixin
|
|
@@ -64,7 +64,7 @@ export default class TableExport implements IInterfaceWithMixin {
|
|
|
64
64
|
* Stores the binding info for the table used to create the list binding.
|
|
65
65
|
* @param bindingInfo
|
|
66
66
|
*/
|
|
67
|
-
setTableBindingInfo(bindingInfo:
|
|
67
|
+
setTableBindingInfo(bindingInfo: SerializedCollectionBindingInfo): void {
|
|
68
68
|
this.tableBindingInfo = bindingInfo;
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -22,7 +22,7 @@ sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/f
|
|
|
22
22
|
const InteractiveChartHelper = {
|
|
23
23
|
getChartDisplayedValue: function (value, valueFormat, metaPath) {
|
|
24
24
|
const infoPath = generate([metaPath]);
|
|
25
|
-
return "{parts:[{path:'" + value + "',type:'sap.ui.model.odata.type.Decimal', constraints:{'nullable':false}}" + (valueFormat && valueFormat.ScaleFactor ? ",{value:'" + valueFormat.ScaleFactor.valueOf() + "'}" : ",{path:'internal>scalefactorNumber/" + infoPath + "'}") + (valueFormat && valueFormat.NumberOfFractionalDigits ? ",{value:'" + valueFormat.NumberOfFractionalDigits + "'}" : ",{value:'0'}") + ",{path:'internal>currency/" + infoPath + "'}" + ",{path:'" + value + "',type:'sap.ui.model.odata.type.String', constraints:{'nullable':false}}" + "], formatter:'
|
|
25
|
+
return "{parts:[{path:'" + value + "',type:'sap.ui.model.odata.type.Decimal', constraints:{'nullable':false}}" + (valueFormat && valueFormat.ScaleFactor ? ",{value:'" + valueFormat.ScaleFactor.valueOf() + "'}" : ",{path:'internal>scalefactorNumber/" + infoPath + "'}") + (valueFormat && valueFormat.NumberOfFractionalDigits ? ",{value:'" + valueFormat.NumberOfFractionalDigits + "'}" : ",{value:'0'}") + ",{path:'internal>currency/" + infoPath + "'}" + ",{path:'" + value + "',type:'sap.ui.model.odata.type.String', constraints:{'nullable':false}}" + "], formatter:'._formatters.VisualFilterRuntime.scaleVisualFilterValue'}"; //+ sType.split('#').length ? sType.split('#')[1] : 'Decimal' + "}";
|
|
26
26
|
},
|
|
27
27
|
getChartValue: function (value) {
|
|
28
28
|
return "{path:'" + value + "',type:'sap.ui.model.odata.type.Decimal', constraints:{'nullable':false}}";
|
|
@@ -402,7 +402,7 @@ sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/f
|
|
|
402
402
|
});
|
|
403
403
|
if (parts.length > 0) {
|
|
404
404
|
paths = parts.join();
|
|
405
|
-
return `{parts:[${paths}], formatter:'
|
|
405
|
+
return `{parts:[${paths}], formatter:'._formatters.VisualFilterRuntime.getFiltersFromConditions.bind($control)'}`;
|
|
406
406
|
} else {
|
|
407
407
|
return undefined;
|
|
408
408
|
}
|
|
@@ -412,7 +412,7 @@ sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/f
|
|
|
412
412
|
},
|
|
413
413
|
getfilterCountBinding: function (chartAnnotation) {
|
|
414
414
|
const dimension = chartAnnotation?.Dimensions[0]?.$target?.name;
|
|
415
|
-
return "{path:'$filters>/conditions/" + dimension + "', formatter:'
|
|
415
|
+
return "{path:'$filters>/conditions/" + dimension + "', formatter:'._formatters.VisualFilterRuntime.getFilterCounts.bind($control)'}";
|
|
416
416
|
},
|
|
417
417
|
getInteractiveChartProperties: function (visualFilter) {
|
|
418
418
|
const chartAnnotation = visualFilter.chartAnnotation;
|
|
@@ -451,4 +451,4 @@ sap.ui.define(["sap/base/util/JSTokenizer", "sap/fe/base/BindingToolkit", "sap/f
|
|
|
451
451
|
};
|
|
452
452
|
return InteractiveChartHelper;
|
|
453
453
|
}, false);
|
|
454
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyIiwiZ2V0Q2hhcnREaXNwbGF5ZWRWYWx1ZSIsInZhbHVlIiwidmFsdWVGb3JtYXQiLCJtZXRhUGF0aCIsImluZm9QYXRoIiwiZ2VuZXJhdGUiLCJTY2FsZUZhY3RvciIsInZhbHVlT2YiLCJOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJnZXRDaGFydFZhbHVlIiwiX2dldENvbGxlY3Rpb25OYW1lIiwiY29sbGVjdGlvbiIsImNvbnRleHRQYXRoIiwicGFyYW1ldGVycyIsImNvbGxlY3Rpb25PYmplY3QiLCJ0YXJnZXRPYmplY3QiLCJpc05hdmlnYXRpb25Qcm9wZXJ0eSIsIm5hbWUiLCJpc0VudGl0eVNldCIsIl9nZXRCaW5kaW5nUGF0aEZvclBhcmFtZXRlcnMiLCJmaWx0ZXJDb25kaXRpb25zIiwibWV0YU1vZGVsIiwiY29sbGVjdGlvbk5hbWUiLCJlbnRpdHlTZXRQYXRoIiwicGFyYW1zIiwiY29udmVydGVkRmlsdGVyQ29uZGl0aW9ucyIsIlZpc3VhbEZpbHRlclV0aWxzIiwiY29udmVydEZpbHRlckNvbmRpb25zIiwicGFyYW1ldGVyUHJvcGVydGllcyIsIkNvbW1vblV0aWxzIiwiZ2V0UGFyYW1ldGVySW5mbyIsImkiLCJwYXJhbWV0ZXIiLCJwcm9wZXJ0eSIsImVudGl0eVBhdGgiLCJzcGxpdCIsInByb3BlcnR5Q29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwidHlwZUNvbmZpZyIsIlR5cGVNYXAiLCJnZXRUeXBlQ29uZmlnIiwiJFR5cGUiLCJKU1Rva2VuaXplciIsInBhcnNlSlMiLCJmb3JtYXRPcHRpb25zIiwiY29udGV4dCIsImNvbnN0cmFpbnRzIiwiY29uZGl0aW9uIiwiY29uZGl0aW9uSW50ZXJuYWwiLCJ1bmRlZmluZWQiLCJpbnRlcm5hbFBhcmFtZXRlckNvbmRpdGlvbiIsIkNvbmRpdGlvbkNvbnZlcnRlciIsInRvVHlwZSIsImVkbVR5cGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJPRGF0YVV0aWxzIiwiZm9ybWF0TGl0ZXJhbCIsInZhbHVlcyIsInB1c2giLCJwYXJhbWV0ZXJFbnRpdHlTZXQiLCJzbGljZSIsImxhc3RJbmRleE9mIiwidGFyZ2V0TmF2aWdhdGlvbiIsInN1YnN0cmluZyIsInRvU3RyaW5nIiwiX2dldFVPTUFnZ3JlZ2F0aW9uRXhwcmVzc2lvbiIsImN1c3RvbUFnZ3JlZ2F0ZSIsIlVvTUhhc0N1c3RvbUFnZ3JlZ2F0ZSIsIlVPTSIsImFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25FeHByZXNzaW9uIiwiVU9NRXhwcmVzc2lvbiIsInBhdGgiLCJpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiIsInVuaXQiLCJBZ2dyZWdhdGFibGVQcm9wZXJ0eSIsIkFnZ3JlZ2F0aW9uTWV0aG9kIiwid2l0aCIsImdldEFnZ3JlZ2F0aW9uQmluZGluZyIsImNoYXJ0QW5ub3RhdGlvbnMiLCJ0ZXh0QXNzb2NpYXRpb24iLCJkaW1lbnNpb25UeXBlIiwic29ydE9yZGVyIiwic2VsZWN0aW9uVmFyaWFudCIsImZpbHRlckJhckVudGl0eVR5cGUiLCJkcmFmdFN1cHBvcnRlZCIsImNoYXJ0TWVhc3VyZSIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwiZW50aXR5VHlwZSIsImRpbWVuc2lvbiIsIkRpbWVuc2lvbnMiLCJmaWx0ZXJzIiwiZ2V0VW9NIiwiRmlsdGVyIiwib3BlcmF0b3IiLCJ2YWx1ZTEiLCJ2YWx1ZTIiLCJnZXRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50IiwiZ2V0Q3VzdG9tQ29uZGl0aW9ucyIsImJpbmQiLCJjb25kaXRpb25zIiwiZm9yRWFjaCIsImlzUGFyYW1ldGVyIiwibGVuZ3RoIiwiYmluZGluZ1BhdGgiLCJVT01BZ2dyZWdhdGlvbkV4cHJlc3Npb24iLCJ0ZXh0QXNzb2NpYXRpb25FeHByZXNzaW9uIiwiYWRkaXRpb25hbGx5IiwiZmluYWxwYXJhbWV0ZXJzIiwiZ2V0U29ydE9yZGVyIiwiJCRhZ2dyZWdhdGlvbiIsImFnZ3JlZ2F0ZSIsImdyb3VwIiwidGVtcGxhdGVTaGFyZWFibGUiLCJzdXNwZW5kZWQiLCJnZXRNYXhJdGVtcyIsIl9nZXRPcmRlckV4cHJlc3Npb25Gcm9tTWVhc3VyZSIsInNvcnRQcm9wZXJ0eU5hbWUiLCJEeW5hbWljUHJvcGVydHkiLCIkdGFyZ2V0IiwiTmFtZSIsIlByb3BlcnR5IiwiJG9yZGVyYnkiLCJEZXNjZW5kaW5nIiwiQ2hhcnRUeXBlIiwic3RhcnRJbmRleCIsImdldENvbG9yQmluZGluZyIsImRhdGFQb2ludCIsInZhbHVlQ3JpdGljYWxpdHkiLCJhbm5vdGF0aW9ucyIsIlVJIiwiVmFsdWVDcml0aWNhbGl0eSIsIkNyaXRpY2FsaXR5IiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQiLCJDcml0aWNhbGl0eUNhbGN1bGF0aW9uIiwib0RpcmVjdGlvbiIsIkltcHJvdmVtZW50RGlyZWN0aW9uIiwib0RhdGFQb2ludFZhbHVlIiwiVmFsdWUiLCJvRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSIsIkRldmlhdGlvblJhbmdlTG93VmFsdWUiLCJvVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSIsIlRvbGVyYW5jZVJhbmdlTG93VmFsdWUiLCJvQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUiLCJBY2NlcHRhbmNlUmFuZ2VMb3dWYWx1ZSIsIm9BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUiLCJBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUiLCJvVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUiLCJUb2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSIsIm9EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSIsIkRldmlhdGlvblJhbmdlSGlnaFZhbHVlIiwiQ29tbW9uSGVscGVyIiwiZ2V0Q3JpdGljYWxpdHlDYWxjdWxhdGlvbkJpbmRpbmciLCJnZXRWYWx1ZUNyaXRpY2FsaXR5IiwicmVzdWx0IiwidmFsdWVDcml0aWNhbGl0eVR5cGUiLCJfZ2V0Q3JpdGljYWxpdHlGcm9tRW51bSIsImpvaW4iLCJjcml0aWNhbGl0eSIsInZhbHVlQ29sb3IiLCJtTGlicmFyeSIsIlZhbHVlQ29sb3IiLCJpbmRpY2F0b3IiLCJFcnJvciIsIkdvb2QiLCJDcml0aWNhbCIsIk5ldXRyYWwiLCJnZXRTY2FsZVVvTVRpdGxlIiwiY2hhcnRBbm5vdGF0aW9uIiwic2VwZXJhdG9yIiwidG9vbFRpcCIsInNjYWxlRmFjdG9yIiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJEYXRhUG9pbnQiLCJWYWx1ZUZvcm1hdCIsImZpeGVkSW50ZWdlciIsIk51bWJlckZvcm1hdCIsImdldEludGVnZXJJbnN0YW5jZSIsInN0eWxlIiwic2hvd1NjYWxlIiwic2hvcnRSZWZOdW1iZXIiLCJzY2FsZSIsImdldFNjYWxlIiwiVU9NRXhwIiwicGF0aEluTW9kZWwiLCJjb25zdGFudCIsInNjYWxlRXhwIiwiY29tcGlsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJ2aXN1YWxGaWx0ZXJGb3JtYXR0ZXIiLCJmb3JtYXRTY2FsZUFuZFVPTSIsImdldE1lYXN1cmVEaW1lbnNpb25UaXRsZSIsIm1lYXN1cmVMYWJlbCIsIm1lYXN1cmVQYXRoIiwiTWVhc3VyZXMiLCJEeW5hbWljTWVhc3VyZXMiLCJkaW1lbnNpb25QYXRoIiwiZGltZW5zaW9uTGFiZWwiLCJDb21tb24iLCJMYWJlbCIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJnZXRUb29sVGlwIiwicmVuZGVyTGluZUNoYXJ0IiwiY2hhcnRUeXBlIiwibWVhc3VyZURpbWVuc2lvblRvb2xUaXAiLCJlc2NhcGVTaW5nbGVRdW90ZXMiLCJzY2FsZVVPTVRvb2x0aXAiLCJfZ2V0VU9NIiwiVU9NT2JqZWN0UGF0aCIsImN1c3RvbURhdGEiLCJhZ2dyZWdhdGFibGVQcm9wZXJ0eVBhdGgiLCJVT01PYmplY3QiLCIkUGF0aCIsImVudGl0eVByb3BlcnRpZXMiLCJpc1NpbmdsZXRvbiIsInRhcmdldFR5cGUiLCJwcm9wZXJ0eUFubm90YXRpb25zIiwiZmluZCIsIm1lYXN1cmUiLCJJU09DdXJyZW5jeSIsIlVuaXQiLCJnZXRTY2FsZUZhY3RvciIsImdldFVvTVZpc2libGl0eSIsInNob3dFcnJvciIsImdldEluUGFyYW1ldGVyRmlsdGVyc0JpbmRpbmciLCJpblBhcmFtZXRlcnMiLCJwYXJ0cyIsInBhdGhzIiwiaW5QYXJhbWV0ZXIiLCJsb2NhbERhdGFQcm9wZXJ0eSIsImdldGZpbHRlckNvdW50QmluZGluZyIsImdldEludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzIiwidmlzdWFsRmlsdGVyIiwiaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMiLCJpZCIsInNob3dFcnJvckV4cHJlc3Npb24iLCJlcnJvck1lc3NhZ2VFeHByZXNzaW9uIiwiZXJyb3JNZXNzYWdlVGl0bGVFeHByZXNzaW9uIiwiZGF0YVBvaW50QW5ub3RhdGlvbiIsImdldFBhcmFtZXRlcnMiLCJnZXRNZXRhTW9kZWwiLCJkaW1lbnNpb25UZXh0IiwiVGV4dCIsImFnZ3JlZ2F0aW9uQmluZGluZyIsInR5cGUiLCJhZ2dyZWdhdGVQcm9wZXJ0aWVzIiwic2NhbGVmYWN0b3IiLCJ1b20iLCJwYXJzZUN1c3RvbURhdGEiLCJpblBhcmFtZXRlckZpbHRlcnMiLCJzdHJpbmdpZmllZFBhcmFtZXRlcnMiLCJkaW1lbnNpb25Db250ZXh0IiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZGltZW5zaW9uT2JqZWN0IiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJnZXRQYXRoIiwiY2hhcnRMYWJlbCIsImdldFRleHRCaW5kaW5nIiwiZGlzcGxheWVkVmFsdWUiLCJjb2xvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZXJhY3RpdmVDaGFydEhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiwgUHJvcGVydHksIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlLCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQWdncmVnYXRlZFByb3BlcnR5LCBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BbmFseXRpY3NcIjtcbmltcG9ydCB0eXBlIHsgTGFiZWwsIFNvcnRPcmRlclR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHR5cGUge1xuXHRDaGFydCxcblx0RGF0YVBvaW50LFxuXHROdW1iZXJGb3JtYXQgYXMgTnVtYmVyRm9ybWF0VHlwZSxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0VmFsdWVDcml0aWNhbGl0eVR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IEpTVG9rZW5pemVyIGZyb20gXCJzYXAvYmFzZS91dGlsL0pTVG9rZW5pemVyXCI7XG5pbXBvcnQge1xuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Y29uc3RhbnQsXG5cdGZvcm1hdFJlc3VsdCxcblx0cGF0aEluTW9kZWwsXG5cdHR5cGUgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHR0eXBlIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBQYXJhbWV0ZXJUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvTGlzdFJlcG9ydC9WaXN1YWxGaWx0ZXJzXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBpc0VudGl0eVNldCwgaXNOYXZpZ2F0aW9uUHJvcGVydHksIGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBpc1NpbmdsZXRvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB7IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL2ZpbHRlcmJhci91dGlscy9WaXN1YWxGaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHsgY29uc3RyYWludHMsIGZvcm1hdE9wdGlvbnMgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyRmllbGRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyQ29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJIZWxwZXJcIjtcbmltcG9ydCB7IGdldEZpbHRlcnNDb25kaXRpb25zRnJvbVNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29sb3IgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IG1MaWJyYXJ5IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgTnVtYmVyRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvTnVtYmVyRm9ybWF0XCI7XG5pbXBvcnQgQ29uZGl0aW9uQ29udmVydGVyIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25Db252ZXJ0ZXJcIjtcbmltcG9ydCBUeXBlTWFwIGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL3Y0L1R5cGVNYXBcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBPRGF0YVV0aWxzIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0VGV4dEJpbmRpbmcgfSBmcm9tIFwiLi4vZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdmlzdWFsRmlsdGVyRm9ybWF0dGVyIGZyb20gXCIuLi9mb3JtYXR0ZXJzL1Zpc3VhbEZpbHRlckZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgVmlzdWFsRmlsdGVyIGZyb20gXCIuL1Zpc3VhbEZpbHRlclwiO1xuXG50eXBlIE1lYXN1cmVUeXBlID0ge1xuXHR2YWx1ZT86IHN0cmluZztcblx0SVNPQ3VycmVuY3k/OiBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPjtcblx0VW5pdD86IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+O1xufTtcbmV4cG9ydCB0eXBlIEludGVyYWN0aXZlQ2hhcnRUeXBlID0ge1xuXHRjaGFydExhYmVsPzogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0YWdncmVnYXRpb25CaW5kaW5nPzogYWdncmVnYXRpb25CaW5kaW5nO1xuXHRlcnJvck1lc3NhZ2VUaXRsZUV4cHJlc3Npb24/OiBzdHJpbmc7XG5cdGVycm9yTWVzc2FnZUV4cHJlc3Npb24/OiBzdHJpbmc7XG5cdHNob3dFcnJvckV4cHJlc3Npb24/OiBzdHJpbmc7XG5cdGluUGFyYW1ldGVycz86IFBhcmFtZXRlclR5cGVbXTtcblx0ZGlzcGxheWVkVmFsdWU/OiBzdHJpbmc7XG5cdG1lYXN1cmU/OiBzdHJpbmc7XG5cdHN0cmluZ2lmaWVkUGFyYW1ldGVycz86IHN0cmluZ1tdO1xuXHRpblBhcmFtZXRlckZpbHRlcnM/OiBzdHJpbmc7XG5cdGNvbG9yPzogc3RyaW5nO1xuXHR1b20/OiBzdHJpbmcgfCBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTx1bmtub3duPiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRzY2FsZWZhY3Rvcj86IG51bWJlciB8IG9iamVjdDtcblx0c2VsZWN0aW9uVmFyaWFudD86IFNlbGVjdGlvblZhcmlhbnQ7XG59O1xuXG50eXBlIGFnZ3JlZ2F0aW9uQmluZGluZyA9IHtcblx0cGF0aDogc3RyaW5nO1xuXHR0ZW1wbGF0ZVNoYXJlYWJsZTogYm9vbGVhbjtcblx0c3VzcGVuZGVkOiBib29sZWFuO1xuXHRmaWx0ZXJzOiBGaWx0ZXJbXTtcblx0cGFyYW1ldGVyczoge1xuXHRcdCQkYWdncmVnYXRpb246IHtcblx0XHRcdGFnZ3JlZ2F0ZTogeyBbeDogc3RyaW5nXToge30gfCB7IHVuaXQ6IHN0cmluZyB9IHwgeyBuYW1lOiBzdHJpbmc7IHdpdGg6IHN0cmluZyB9IHwgdW5kZWZpbmVkIH07XG5cdFx0XHRncm91cDogeyBbeDogc3RyaW5nXTogeyBhZGRpdGlvbmFsbHk6IHN0cmluZ1tdIH0gfCB7IGFkZGl0aW9uYWxseTogdW5kZWZpbmVkIH0gfTtcblx0XHR9O1xuXHRcdCRvcmRlcmJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdH07XG59O1xuXG5jb25zdCBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyID0ge1xuXHRnZXRDaGFydERpc3BsYXllZFZhbHVlOiBmdW5jdGlvbiAodmFsdWU6IHN0cmluZywgdmFsdWVGb3JtYXQ/OiBOdW1iZXJGb3JtYXRUeXBlLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaW5mb1BhdGggPSBnZW5lcmF0ZShbbWV0YVBhdGhdKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0XCJ7cGFydHM6W3twYXRoOidcIiArXG5cdFx0XHR2YWx1ZSArXG5cdFx0XHRcIicsdHlwZTonc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGVjaW1hbCcsIGNvbnN0cmFpbnRzOnsnbnVsbGFibGUnOmZhbHNlfX1cIiArXG5cdFx0XHQodmFsdWVGb3JtYXQgJiYgdmFsdWVGb3JtYXQuU2NhbGVGYWN0b3Jcblx0XHRcdFx0PyBcIix7dmFsdWU6J1wiICsgdmFsdWVGb3JtYXQuU2NhbGVGYWN0b3IudmFsdWVPZigpICsgXCInfVwiXG5cdFx0XHRcdDogXCIse3BhdGg6J2ludGVybmFsPnNjYWxlZmFjdG9yTnVtYmVyL1wiICsgaW5mb1BhdGggKyBcIid9XCIpICtcblx0XHRcdCh2YWx1ZUZvcm1hdCAmJiB2YWx1ZUZvcm1hdC5OdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHNcblx0XHRcdFx0PyBcIix7dmFsdWU6J1wiICsgdmFsdWVGb3JtYXQuTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzICsgXCInfVwiXG5cdFx0XHRcdDogXCIse3ZhbHVlOicwJ31cIikgK1xuXHRcdFx0XCIse3BhdGg6J2ludGVybmFsPmN1cnJlbmN5L1wiICtcblx0XHRcdGluZm9QYXRoICtcblx0XHRcdFwiJ31cIiArXG5cdFx0XHRcIix7cGF0aDonXCIgK1xuXHRcdFx0dmFsdWUgK1xuXHRcdFx0XCInLHR5cGU6J3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZycsIGNvbnN0cmFpbnRzOnsnbnVsbGFibGUnOmZhbHNlfX1cIiArXG5cdFx0XHRcIl0sIGZvcm1hdHRlcjonc2FwLmZlLm1hY3Jvcy52aXN1YWxmaWx0ZXJzLlZpc3VhbEZpbHRlclJ1bnRpbWUuc2NhbGVWaXN1YWxGaWx0ZXJWYWx1ZSd9XCJcblx0XHQpOyAvLysgc1R5cGUuc3BsaXQoJyMnKS5sZW5ndGggPyBzVHlwZS5zcGxpdCgnIycpWzFdIDogJ0RlY2ltYWwnICsgXCJ9XCI7XG5cdH0sXG5cdGdldENoYXJ0VmFsdWU6IGZ1bmN0aW9uICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gXCJ7cGF0aDonXCIgKyB2YWx1ZSArIFwiJyx0eXBlOidzYXAudWkubW9kZWwub2RhdGEudHlwZS5EZWNpbWFsJywgY29uc3RyYWludHM6eydudWxsYWJsZSc6ZmFsc2V9fVwiO1xuXHR9LFxuXHRfZ2V0Q29sbGVjdGlvbk5hbWU6IGZ1bmN0aW9uIChcblx0XHRjb2xsZWN0aW9uOiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4gfCB1bmRlZmluZWQsXG5cdFx0Y29udGV4dFBhdGg6IHN0cmluZyxcblx0XHRwYXJhbWV0ZXJzPzogQXJyYXk8c3RyaW5nPlxuXHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25PYmplY3QgPSBjb2xsZWN0aW9uPy50YXJnZXRPYmplY3Q7XG5cdFx0aWYgKGlzTmF2aWdhdGlvblByb3BlcnR5KGNvbGxlY3Rpb25PYmplY3QpKSB7XG5cdFx0XHRyZXR1cm4gcGFyYW1ldGVycyA/IGNvbnRleHRQYXRoIDogY29sbGVjdGlvbk9iamVjdC5uYW1lO1xuXHRcdH0gZWxzZSBpZiAoaXNFbnRpdHlTZXQoY29sbGVjdGlvbk9iamVjdCkpIHtcblx0XHRcdHJldHVybiBcIi9cIiArIGNvbGxlY3Rpb25PYmplY3QubmFtZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25PYmplY3QhLm5hbWU7XG5cdFx0fVxuXHR9LFxuXHRfZ2V0QmluZGluZ1BhdGhGb3JQYXJhbWV0ZXJzOiBmdW5jdGlvbiAoXG5cdFx0ZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPixcblx0XHRtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkLFxuXHRcdGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsXG5cdFx0cGFyYW1ldGVyczogQXJyYXk8c3RyaW5nPixcblx0XHRlbnRpdHlTZXRQYXRoOiBzdHJpbmdcblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBwYXJhbXMgPSBbXTtcblx0XHRjb25zdCBjb252ZXJ0ZWRGaWx0ZXJDb25kaXRpb25zID0gVmlzdWFsRmlsdGVyVXRpbHMuY29udmVydEZpbHRlckNvbmRpb25zKGZpbHRlckNvbmRpdGlvbnMpO1xuXHRcdGNvbnN0IHBhcmFtZXRlclByb3BlcnRpZXMgPSBDb21tb25VdGlscy5nZXRQYXJhbWV0ZXJJbmZvKFxuXHRcdFx0bWV0YU1vZGVsIGFzIHVua25vd24gYXMgT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRjb2xsZWN0aW9uTmFtZVxuXHRcdCkucGFyYW1ldGVyUHJvcGVydGllcztcblx0XHRpZiAocGFyYW1ldGVyUHJvcGVydGllcykge1xuXHRcdFx0Zm9yIChjb25zdCBpIGluIHBhcmFtZXRlcnMpIHtcblx0XHRcdFx0Y29uc3QgcGFyYW1ldGVyID0gcGFyYW1ldGVyc1tpXTtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSBwYXJhbWV0ZXJQcm9wZXJ0aWVzW3BhcmFtZXRlcl07XG5cdFx0XHRcdGNvbnN0IGVudGl0eVBhdGggPSBlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKVsxXTtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlDb250ZXh0ID0gbWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChgLyR7ZW50aXR5UGF0aH0vJHtwYXJhbWV0ZXJ9YCk7XG5cdFx0XHRcdGxldCB0eXBlQ29uZmlnO1xuXHRcdFx0XHRpZiAocHJvcGVydHlDb250ZXh0KSB7XG5cdFx0XHRcdFx0dHlwZUNvbmZpZyA9IFR5cGVNYXAuZ2V0VHlwZUNvbmZpZyhcblx0XHRcdFx0XHRcdHByb3BlcnR5LiRUeXBlLFxuXHRcdFx0XHRcdFx0SlNUb2tlbml6ZXIucGFyc2VKUyhmb3JtYXRPcHRpb25zKHByb3BlcnR5LCB7IGNvbnRleHQ6IHByb3BlcnR5Q29udGV4dCB9KSB8fCBcInt9XCIpLFxuXHRcdFx0XHRcdFx0SlNUb2tlbml6ZXIucGFyc2VKUyhjb25zdHJhaW50cyhwcm9wZXJ0eSwgeyBjb250ZXh0OiBwcm9wZXJ0eUNvbnRleHQgfSkgfHwgXCJ7fVwiKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgY29uZGl0aW9uID0gY29udmVydGVkRmlsdGVyQ29uZGl0aW9uc1twYXJhbWV0ZXJdO1xuXHRcdFx0XHRjb25zdCBjb25kaXRpb25JbnRlcm5hbCA9IGNvbmRpdGlvbiA/IGNvbmRpdGlvblswXSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKGNvbmRpdGlvbkludGVybmFsKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxQYXJhbWV0ZXJDb25kaXRpb24gPSBDb25kaXRpb25Db252ZXJ0ZXIudG9UeXBlKGNvbmRpdGlvbkludGVybmFsLCB0eXBlQ29uZmlnLCBUeXBlTWFwKTtcblx0XHRcdFx0XHRjb25zdCBlZG1UeXBlID0gcHJvcGVydHkuJFR5cGU7XG5cdFx0XHRcdFx0bGV0IHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KE9EYXRhVXRpbHMuZm9ybWF0TGl0ZXJhbChpbnRlcm5hbFBhcmFtZXRlckNvbmRpdGlvbi52YWx1ZXNbMF0sIGVkbVR5cGUpKTtcblx0XHRcdFx0XHRwYXJhbXMucHVzaChgJHtwYXJhbWV0ZXJ9PSR7dmFsdWV9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBwYXJhbWV0ZXJFbnRpdHlTZXQgPSBjb2xsZWN0aW9uTmFtZS5zbGljZSgwLCBjb2xsZWN0aW9uTmFtZS5sYXN0SW5kZXhPZihcIi9cIikpO1xuXHRcdGNvbnN0IHRhcmdldE5hdmlnYXRpb24gPSBjb2xsZWN0aW9uTmFtZS5zdWJzdHJpbmcoY29sbGVjdGlvbk5hbWUubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG5cdFx0Ly8gY3JlYXRlIHBhcmFtZXRlciBjb250ZXh0XG5cdFx0cmV0dXJuIGAke3BhcmFtZXRlckVudGl0eVNldH0oJHtwYXJhbXMudG9TdHJpbmcoKX0pLyR7dGFyZ2V0TmF2aWdhdGlvbn1gO1xuXHR9LFxuXHRfZ2V0VU9NQWdncmVnYXRpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoXG5cdFx0Y3VzdG9tQWdncmVnYXRlPzogYm9vbGVhbixcblx0XHRVb01IYXNDdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuLFxuXHRcdFVPTT86IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPHVua25vd24+IHwgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdFx0YWdncmVnYXRpb24/OiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlXG5cdCk6IHtcblx0XHRhZ2dyZWdhdGlvbkV4cHJlc3Npb246IHsgdW5pdDogc3RyaW5nIH0gfCB7fSB8IHsgbmFtZTogc3RyaW5nOyB3aXRoOiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcblx0XHRVT01FeHByZXNzaW9uOiB7IFt4OiBzdHJpbmddOiB7fSB9IHwgdW5kZWZpbmVkIHwgc3RyaW5nO1xuXHR9IHtcblx0XHRsZXQgYWdncmVnYXRpb25FeHByZXNzaW9uLCBVT01FeHByZXNzaW9uO1xuXHRcdGNvbnN0IHBhdGggPSBVT00gJiYgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oVU9NKSAmJiBVT00ucGF0aDtcblx0XHRpZiAoY3VzdG9tQWdncmVnYXRlKSB7XG5cdFx0XHQvL2N1c3RvbSBhZ2dyZWdhdGUgZm9yIGEgY3VycmVuY3kgb3IgdW5pdCBvZiBtZWFzdXJlIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBhZ2dyZWdhdGFibGUgcHJvcGVydHlcblx0XHRcdGlmIChVb01IYXNDdXN0b21BZ2dyZWdhdGUpIHtcblx0XHRcdFx0YWdncmVnYXRpb25FeHByZXNzaW9uID0gcGF0aCA/IHsgdW5pdDogcGF0aCB9IDoge307XG5cdFx0XHRcdFVPTUV4cHJlc3Npb24gPSB7fTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uRXhwcmVzc2lvbiA9IHt9O1xuXHRcdFx0XHRVT01FeHByZXNzaW9uID0gcGF0aCA/IHsgW3BhdGhdOiB7fSB9IDoge307XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdGFnZ3JlZ2F0aW9uICYmXG5cdFx0XHRhZ2dyZWdhdGlvbi5BZ2dyZWdhdGFibGVQcm9wZXJ0eSAmJlxuXHRcdFx0YWdncmVnYXRpb24uQWdncmVnYXRhYmxlUHJvcGVydHkudmFsdWUgJiZcblx0XHRcdGFnZ3JlZ2F0aW9uLkFnZ3JlZ2F0aW9uTWV0aG9kXG5cdFx0KSB7XG5cdFx0XHRhZ2dyZWdhdGlvbkV4cHJlc3Npb24gPSB7IG5hbWU6IGFnZ3JlZ2F0aW9uLkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlLCB3aXRoOiBhZ2dyZWdhdGlvbi5BZ2dyZWdhdGlvbk1ldGhvZCB9O1xuXHRcdFx0VU9NRXhwcmVzc2lvbiA9IHBhdGggPyB7IFtwYXRoXToge30gfSA6IHt9O1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHRhZ2dyZWdhdGlvbkV4cHJlc3Npb246IGFnZ3JlZ2F0aW9uRXhwcmVzc2lvbixcblx0XHRcdFVPTUV4cHJlc3Npb246IFVPTUV4cHJlc3Npb25cblx0XHR9O1xuXHR9LFxuXHRnZXRBZ2dyZWdhdGlvbkJpbmRpbmc6IGZ1bmN0aW9uIChcblx0XHRjaGFydEFubm90YXRpb25zOiBDaGFydCxcblx0XHRjb2xsZWN0aW9uOiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4gfCB1bmRlZmluZWQsXG5cdFx0Y29udGV4dFBhdGg6IHN0cmluZyxcblx0XHR0ZXh0QXNzb2NpYXRpb24/OiBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPixcblx0XHRkaW1lbnNpb25UeXBlPzogc3RyaW5nLFxuXHRcdHNvcnRPcmRlcj86IFNvcnRPcmRlclR5cGVbXSxcblx0XHRzZWxlY3Rpb25WYXJpYW50PzogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRjdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuLFxuXHRcdGFnZ3JlZ2F0aW9uPzogQWdncmVnYXRlZFByb3BlcnR5VHlwZSxcblx0XHRVb01IYXNDdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuLFxuXHRcdHBhcmFtZXRlcnM/OiBBcnJheTxzdHJpbmc+LFxuXHRcdGZpbHRlckJhckVudGl0eVR5cGU/OiBzdHJpbmcsXG5cdFx0ZHJhZnRTdXBwb3J0ZWQ/OiBib29sZWFuLFxuXHRcdGNoYXJ0TWVhc3VyZT86IHN0cmluZyxcblx0XHRtZXRhTW9kZWw/OiBPRGF0YU1ldGFNb2RlbFxuXHQpOiBhZ2dyZWdhdGlvbkJpbmRpbmcge1xuXHRcdGNvbnN0IHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gc2VsZWN0aW9uVmFyaWFudDtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gZmlsdGVyQmFyRW50aXR5VHlwZTtcblx0XHRjb25zdCBlbnRpdHlTZXRQYXRoID0gY29udGV4dFBhdGg7XG5cdFx0Y29uc3QgZGltZW5zaW9uID0gY2hhcnRBbm5vdGF0aW9ucy5EaW1lbnNpb25zWzBdLnZhbHVlO1xuXHRcdGNvbnN0IGZpbHRlcnM6IEZpbHRlcltdID0gW107XG5cdFx0bGV0IGZpbHRlckNvbmRpdGlvbnM7XG5cdFx0bGV0IGNvbGxlY3Rpb25OYW1lID0gdGhpcy5fZ2V0Q29sbGVjdGlvbk5hbWUoY29sbGVjdGlvbiwgY29udGV4dFBhdGgsIHBhcmFtZXRlcnMpO1xuXHRcdGNvbnN0IFVPTTogUHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8dW5rbm93bj4gfCBzdHJpbmcgfCB1bmRlZmluZWQgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0VW9NKFxuXHRcdFx0Y2hhcnRBbm5vdGF0aW9ucyxcblx0XHRcdGNvbGxlY3Rpb24sXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRjdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHRhZ2dyZWdhdGlvblxuXHRcdCk7XG5cdFx0aWYgKGRyYWZ0U3VwcG9ydGVkKSB7XG5cdFx0XHRmaWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7IG9wZXJhdG9yOiBcIkVRXCIsIHZhbHVlMTogXCJ0cnVlXCIsIHZhbHVlMjogbnVsbCwgcGF0aDogXCJJc0FjdGl2ZUVudGl0eVwiIH0pKTtcblx0XHR9XG5cdFx0aWYgKHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKSB7XG5cdFx0XHRmaWx0ZXJDb25kaXRpb25zID0gZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudChcblx0XHRcdFx0ZW50aXR5U2V0UGF0aCxcblx0XHRcdFx0bWV0YU1vZGVsIGFzIHVua25vd24gYXMgT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRcdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uLFxuXHRcdFx0XHRWaXN1YWxGaWx0ZXJVdGlscy5nZXRDdXN0b21Db25kaXRpb25zLmJpbmQoVmlzdWFsRmlsdGVyVXRpbHMpXG5cdFx0XHQpO1xuXHRcdFx0Zm9yIChjb25zdCBwYXRoIGluIGZpbHRlckNvbmRpdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgY29uZGl0aW9ucyA9IGZpbHRlckNvbmRpdGlvbnNbcGF0aF07XG5cdFx0XHRcdGNvbmRpdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoY29uZGl0aW9uOiBGaWx0ZXJDb25kaXRpb25zKSB7XG5cdFx0XHRcdFx0aWYgKCFjb25kaXRpb24uaXNQYXJhbWV0ZXIpIHtcblx0XHRcdFx0XHRcdGZpbHRlcnMucHVzaChcblx0XHRcdFx0XHRcdFx0bmV3IEZpbHRlcih7XG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IGNvbmRpdGlvbi5vcGVyYXRvciBhcyBGaWx0ZXJPcGVyYXRvcixcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTE6IGNvbmRpdGlvbi52YWx1ZTEsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWUyOiBjb25kaXRpb24udmFsdWUyLFxuXHRcdFx0XHRcdFx0XHRcdHBhdGg6IGNvbmRpdGlvbi5wYXRoXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChlbnRpdHlUeXBlICE9PSBgJHtjb2xsZWN0aW9uTmFtZX0vYCAmJiBwYXJhbWV0ZXJzICYmIHBhcmFtZXRlcnMubGVuZ3RoICYmIGZpbHRlckNvbmRpdGlvbnMpIHtcblx0XHRcdGNvbnN0IGJpbmRpbmdQYXRoID0gdGhpcy5fZ2V0QmluZGluZ1BhdGhGb3JQYXJhbWV0ZXJzKGZpbHRlckNvbmRpdGlvbnMsIG1ldGFNb2RlbCwgY29sbGVjdGlvbk5hbWUsIHBhcmFtZXRlcnMsIGVudGl0eVNldFBhdGgpO1xuXHRcdFx0Y29sbGVjdGlvbk5hbWUgPSBiaW5kaW5nUGF0aDtcblx0XHR9XG5cdFx0Y29uc3QgVU9NQWdncmVnYXRpb25FeHByZXNzaW9uID0gdGhpcy5fZ2V0VU9NQWdncmVnYXRpb25FeHByZXNzaW9uKGN1c3RvbUFnZ3JlZ2F0ZSwgVW9NSGFzQ3VzdG9tQWdncmVnYXRlLCBVT00sIGFnZ3JlZ2F0aW9uKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbkV4cHJlc3Npb24gPSBVT01BZ2dyZWdhdGlvbkV4cHJlc3Npb24uYWdncmVnYXRpb25FeHByZXNzaW9uO1xuXHRcdGNvbnN0IFVPTUV4cHJlc3Npb24gPSBVT01BZ2dyZWdhdGlvbkV4cHJlc3Npb24uVU9NRXhwcmVzc2lvbjtcblx0XHRjb25zdCB0ZXh0QXNzb2NpYXRpb25FeHByZXNzaW9uID0gdGV4dEFzc29jaWF0aW9uID8geyBhZGRpdGlvbmFsbHk6IFt0ZXh0QXNzb2NpYXRpb24ucGF0aF0gfSA6IHt9O1xuXHRcdGNvbnN0IGZpbmFscGFyYW1ldGVycyA9IHtcblx0XHRcdC4uLnRoaXMuZ2V0U29ydE9yZGVyKGNoYXJ0QW5ub3RhdGlvbnMsIGRpbWVuc2lvblR5cGUsIHNvcnRPcmRlciwgY2hhcnRNZWFzdXJlKSxcblx0XHRcdCQkYWdncmVnYXRpb246IHtcblx0XHRcdFx0YWdncmVnYXRlOiB7XG5cdFx0XHRcdFx0W2NoYXJ0TWVhc3VyZSBhcyBzdHJpbmddOiBhZ2dyZWdhdGlvbkV4cHJlc3Npb25cblx0XHRcdFx0fSxcblx0XHRcdFx0Z3JvdXA6IHtcblx0XHRcdFx0XHRbZGltZW5zaW9uXTogeyAuLi50ZXh0QXNzb2NpYXRpb25FeHByZXNzaW9uIH0sXG5cdFx0XHRcdFx0Li4uKFVPTUV4cHJlc3Npb24gYXMgb2JqZWN0KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cGF0aDogY29sbGVjdGlvbk5hbWUsXG5cdFx0XHR0ZW1wbGF0ZVNoYXJlYWJsZTogdHJ1ZSxcblx0XHRcdHN1c3BlbmRlZDogdHJ1ZSxcblx0XHRcdGZpbHRlcnM6IGZpbHRlcnMsXG5cdFx0XHRwYXJhbWV0ZXJzOiBmaW5hbHBhcmFtZXRlcnMsXG5cdFx0XHQuLi4oSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRNYXhJdGVtcyhjaGFydEFubm90YXRpb25zKSBhcyBvYmplY3QpXG5cdFx0fTtcblx0fSxcblxuXHRfZ2V0T3JkZXJFeHByZXNzaW9uRnJvbU1lYXN1cmU6IGZ1bmN0aW9uIChzb3J0T3JkZXI/OiBTb3J0T3JkZXJUeXBlW10sIGNoYXJ0TWVhc3VyZT86IHN0cmluZyk6IHsgJG9yZGVyYnk6IHN0cmluZyB9IHtcblx0XHRsZXQgc29ydFByb3BlcnR5TmFtZTtcblx0XHRpZiAoc29ydE9yZGVyICYmIHNvcnRPcmRlci5sZW5ndGgpIHtcblx0XHRcdGlmIChzb3J0T3JkZXJbMF0uRHluYW1pY1Byb3BlcnR5KSB7XG5cdFx0XHRcdHNvcnRQcm9wZXJ0eU5hbWUgPSAoc29ydE9yZGVyWzBdLkR5bmFtaWNQcm9wZXJ0eS4kdGFyZ2V0IGFzIEFnZ3JlZ2F0ZWRQcm9wZXJ0eSk/Lk5hbWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzb3J0UHJvcGVydHlOYW1lID0gc29ydE9yZGVyWzBdLlByb3BlcnR5Py52YWx1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChzb3J0UHJvcGVydHlOYW1lID09PSBjaGFydE1lYXN1cmUpIHtcblx0XHRcdFx0cmV0dXJuIHsgJG9yZGVyYnk6IGNoYXJ0TWVhc3VyZSArIChzb3J0T3JkZXJbMF0uRGVzY2VuZGluZyA/IFwiIGRlc2NcIiA6IFwiXCIpIH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4geyAkb3JkZXJieTogY2hhcnRNZWFzdXJlICsgXCIgZGVzY1wiIH07XG5cdFx0fVxuXHRcdHJldHVybiB7ICRvcmRlcmJ5OiBjaGFydE1lYXN1cmUgKyBcIiBkZXNjXCIgfTtcblx0fSxcblxuXHRnZXRTb3J0T3JkZXI6IGZ1bmN0aW9uIChcblx0XHRjaGFydEFubm90YXRpb25zOiBDaGFydCxcblx0XHRkaW1lbnNpb25UeXBlPzogc3RyaW5nLFxuXHRcdHNvcnRPcmRlcj86IFNvcnRPcmRlclR5cGVbXSxcblx0XHRjaGFydE1lYXN1cmU/OiBzdHJpbmdcblx0KTogeyAkb3JkZXJieTogc3RyaW5nIHwgdW5kZWZpbmVkIH0ge1xuXHRcdGlmIChjaGFydEFubm90YXRpb25zLkNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvRG9udXRcIiB8fCBjaGFydEFubm90YXRpb25zLkNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvQmFyXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLl9nZXRPcmRlckV4cHJlc3Npb25Gcm9tTWVhc3VyZShzb3J0T3JkZXIsIGNoYXJ0TWVhc3VyZSk7XG5cdFx0fSBlbHNlIGlmIChkaW1lbnNpb25UeXBlID09PSBcIkVkbS5EYXRlXCIgfHwgZGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uVGltZVwiIHx8IGRpbWVuc2lvblR5cGUgPT09IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIpIHtcblx0XHRcdHJldHVybiB7ICRvcmRlcmJ5OiBjaGFydEFubm90YXRpb25zLkRpbWVuc2lvbnNbMF0udmFsdWUgfTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0c29ydE9yZGVyICYmXG5cdFx0XHRzb3J0T3JkZXIubGVuZ3RoICYmXG5cdFx0XHQoc29ydE9yZGVyWzBdLlByb3BlcnR5Py4kdGFyZ2V0IGFzIHVua25vd24gYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pPy5wYXRoID09PSBjaGFydEFubm90YXRpb25zLkRpbWVuc2lvbnNbMF0udmFsdWVcblx0XHQpIHtcblx0XHRcdHJldHVybiB7ICRvcmRlcmJ5OiBzb3J0T3JkZXJbMF0uUHJvcGVydHk/LiR0YXJnZXQ/Lm5hbWUgKyAoc29ydE9yZGVyWzBdLkRlc2NlbmRpbmcgPyBcImRlc2MnXCIgOiBcIidcIikgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHsgJG9yZGVyYnk6IGNoYXJ0QW5ub3RhdGlvbnMuRGltZW5zaW9uc1swXS4kdGFyZ2V0Py5uYW1lIH07XG5cdFx0fVxuXHR9LFxuXG5cdGdldE1heEl0ZW1zOiBmdW5jdGlvbiAoY2hhcnRBbm5vdGF0aW9uczogQ2hhcnQpOiBzdHJpbmcgfCB7IHN0YXJ0SW5kZXg6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXIgfSB7XG5cdFx0aWYgKGNoYXJ0QW5ub3RhdGlvbnMuQ2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9CYXJcIikge1xuXHRcdFx0cmV0dXJuIHsgc3RhcnRJbmRleDogMCwgbGVuZ3RoOiAzIH07XG5cdFx0fSBlbHNlIGlmIChjaGFydEFubm90YXRpb25zLkNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiKSB7XG5cdFx0XHRyZXR1cm4geyBzdGFydEluZGV4OiAwLCBsZW5ndGg6IDYgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9LFxuXG5cdGdldENvbG9yQmluZGluZzogZnVuY3Rpb24gKGRhdGFQb2ludDogRGF0YVBvaW50LCBkaW1lbnNpb246IFByb3BlcnR5UGF0aCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdmFsdWVDcml0aWNhbGl0eSA9IGRpbWVuc2lvbj8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5WYWx1ZUNyaXRpY2FsaXR5O1xuXHRcdGlmIChkYXRhUG9pbnQ/LkNyaXRpY2FsaXR5KSB7XG5cdFx0XHRyZXR1cm4gYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQoZGF0YVBvaW50KTtcblx0XHR9IGVsc2UgaWYgKGRhdGFQb2ludD8uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbikge1xuXHRcdFx0Y29uc3Qgb0RpcmVjdGlvbiA9IGRhdGFQb2ludC5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkltcHJvdmVtZW50RGlyZWN0aW9uO1xuXHRcdFx0Y29uc3Qgb0RhdGFQb2ludFZhbHVlID0gZGF0YVBvaW50LlZhbHVlO1xuXHRcdFx0Y29uc3Qgb0RldmlhdGlvblJhbmdlTG93VmFsdWUgPSBkYXRhUG9pbnQuQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5EZXZpYXRpb25SYW5nZUxvd1ZhbHVlLnZhbHVlT2YoKTtcblx0XHRcdGNvbnN0IG9Ub2xlcmFuY2VSYW5nZUxvd1ZhbHVlID0gZGF0YVBvaW50LkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZS52YWx1ZU9mKCk7XG5cdFx0XHRjb25zdCBvQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUgPSBkYXRhUG9pbnQuQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5BY2NlcHRhbmNlUmFuZ2VMb3dWYWx1ZS52YWx1ZU9mKCk7XG5cdFx0XHRjb25zdCBvQWNjZXB0YW5jZVJhbmdlSGlnaFZhbHVlID0gZGF0YVBvaW50LkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlSGlnaFZhbHVlLnZhbHVlT2YoKTtcblx0XHRcdGNvbnN0IG9Ub2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSA9IGRhdGFQb2ludC5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlSGlnaFZhbHVlLnZhbHVlT2YoKTtcblx0XHRcdGNvbnN0IG9EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSA9IGRhdGFQb2ludC5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlSGlnaFZhbHVlLnZhbHVlT2YoKTtcblx0XHRcdHJldHVybiBDb21tb25IZWxwZXIuZ2V0Q3JpdGljYWxpdHlDYWxjdWxhdGlvbkJpbmRpbmcoXG5cdFx0XHRcdG9EaXJlY3Rpb24sXG5cdFx0XHRcdG9EYXRhUG9pbnRWYWx1ZSxcblx0XHRcdFx0b0RldmlhdGlvblJhbmdlTG93VmFsdWUsXG5cdFx0XHRcdG9Ub2xlcmFuY2VSYW5nZUxvd1ZhbHVlLFxuXHRcdFx0XHRvQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUsXG5cdFx0XHRcdG9BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUsXG5cdFx0XHRcdG9Ub2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSxcblx0XHRcdFx0b0RldmlhdGlvblJhbmdlSGlnaFZhbHVlXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSBpZiAodmFsdWVDcml0aWNhbGl0eSAmJiB2YWx1ZUNyaXRpY2FsaXR5Lmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0VmFsdWVDcml0aWNhbGl0eShkaW1lbnNpb24udmFsdWUsIHZhbHVlQ3JpdGljYWxpdHkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fSxcblx0Z2V0VmFsdWVDcml0aWNhbGl0eTogZnVuY3Rpb24gKGRpbWVuc2lvbjogc3RyaW5nLCB2YWx1ZUNyaXRpY2FsaXR5OiBBcnJheTxWYWx1ZUNyaXRpY2FsaXR5VHlwZT4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGxldCByZXN1bHQ7XG5cdFx0Y29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGlmICh2YWx1ZUNyaXRpY2FsaXR5ICYmIHZhbHVlQ3JpdGljYWxpdHkubGVuZ3RoID4gMCkge1xuXHRcdFx0dmFsdWVDcml0aWNhbGl0eS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZUNyaXRpY2FsaXR5VHlwZTogVmFsdWVDcml0aWNhbGl0eVR5cGUpIHtcblx0XHRcdFx0aWYgKHZhbHVlQ3JpdGljYWxpdHlUeXBlLlZhbHVlICYmIHZhbHVlQ3JpdGljYWxpdHlUeXBlLkNyaXRpY2FsaXR5KSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsdWUgPVxuXHRcdFx0XHRcdFx0XCIke1wiICtcblx0XHRcdFx0XHRcdGRpbWVuc2lvbiArXG5cdFx0XHRcdFx0XHRcIn0gPT09ICdcIiArXG5cdFx0XHRcdFx0XHR2YWx1ZUNyaXRpY2FsaXR5VHlwZS5WYWx1ZSArXG5cdFx0XHRcdFx0XHRcIicgPyAnXCIgK1xuXHRcdFx0XHRcdFx0SW50ZXJhY3RpdmVDaGFydEhlbHBlci5fZ2V0Q3JpdGljYWxpdHlGcm9tRW51bSh2YWx1ZUNyaXRpY2FsaXR5VHlwZS5Dcml0aWNhbGl0eSkgK1xuXHRcdFx0XHRcdFx0XCInXCI7XG5cdFx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJlc3VsdCA9IHZhbHVlcy5sZW5ndGggPiAwICYmIHZhbHVlcy5qb2luKFwiIDogXCIpICsgXCIgOiB1bmRlZmluZWRcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdCA/IFwiez0gXCIgKyByZXN1bHQgKyBcIiB9XCIgOiB1bmRlZmluZWQ7XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNyaXRpY2FsaXR5IGluZGljYXRvciBmcm9tIGFubm90YXRpb25zIGlmIGNyaXRpY2FsaXR5IGlzIEVudW1NZW1iZXIuXG5cdCAqIEBwYXJhbSBjcml0aWNhbGl0eSBDcml0aWNhbGl0eSBwcm92aWRlZCBpbiB0aGUgYW5ub3RhdGlvbnNcblx0ICogQHJldHVybnMgUmV0dXJuIHRoZSBpbmRpY2F0b3IgZm9yIGNyaXRpY2FsaXR5XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfZ2V0Q3JpdGljYWxpdHlGcm9tRW51bTogZnVuY3Rpb24gKGNyaXRpY2FsaXR5OiBzdHJpbmcpOiBWYWx1ZUNvbG9yIHtcblx0XHRjb25zdCB2YWx1ZUNvbG9yID0gbUxpYnJhcnkuVmFsdWVDb2xvcjtcblx0XHRsZXQgaW5kaWNhdG9yO1xuXHRcdGlmIChjcml0aWNhbGl0eSA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikge1xuXHRcdFx0aW5kaWNhdG9yID0gdmFsdWVDb2xvci5FcnJvcjtcblx0XHR9IGVsc2UgaWYgKGNyaXRpY2FsaXR5ID09PSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSB7XG5cdFx0XHRpbmRpY2F0b3IgPSB2YWx1ZUNvbG9yLkdvb2Q7XG5cdFx0fSBlbHNlIGlmIChjcml0aWNhbGl0eSA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikge1xuXHRcdFx0aW5kaWNhdG9yID0gdmFsdWVDb2xvci5Dcml0aWNhbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aW5kaWNhdG9yID0gdmFsdWVDb2xvci5OZXV0cmFsO1xuXHRcdH1cblx0XHRyZXR1cm4gaW5kaWNhdG9yO1xuXHR9LFxuXHRnZXRTY2FsZVVvTVRpdGxlOiBmdW5jdGlvbiAoXG5cdFx0Y2hhcnRBbm5vdGF0aW9uPzogQ2hhcnQsXG5cdFx0Y29sbGVjdGlvbj86IERhdGFNb2RlbE9iamVjdFBhdGg8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0XHRtZXRhUGF0aD86IHN0cmluZyxcblx0XHRjdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuLFxuXHRcdGFnZ3JlZ2F0aW9uPzogQWdncmVnYXRlZFByb3BlcnR5VHlwZSxcblx0XHRzZXBlcmF0b3I/OiBzdHJpbmcsXG5cdFx0dG9vbFRpcD86IGJvb2xlYW5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBzY2FsZUZhY3RvciA9IGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXNcblx0XHRcdD8gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVBdHRyaWJ1dGVzWzBdPy5EYXRhUG9pbnQ/LiR0YXJnZXQ/LlZhbHVlRm9ybWF0Py5TY2FsZUZhY3Rvcj8udmFsdWVPZigpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBpbmZvUGF0aCA9IGdlbmVyYXRlKFttZXRhUGF0aF0pO1xuXHRcdGNvbnN0IGZpeGVkSW50ZWdlciA9IE51bWJlckZvcm1hdC5nZXRJbnRlZ2VySW5zdGFuY2Uoe1xuXHRcdFx0c3R5bGU6IFwic2hvcnRcIixcblx0XHRcdHNob3dTY2FsZTogZmFsc2UsXG5cdFx0XHRzaG9ydFJlZk51bWJlcjogc2NhbGVGYWN0b3IgYXMgbnVtYmVyXG5cdFx0fSk7XG5cdFx0bGV0IHNjYWxlID0gZml4ZWRJbnRlZ2VyLmdldFNjYWxlKCk7XG5cdFx0bGV0IFVPTSA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0VW9NKGNoYXJ0QW5ub3RhdGlvbiwgY29sbGVjdGlvbiwgdW5kZWZpbmVkLCBjdXN0b21BZ2dyZWdhdGUsIGFnZ3JlZ2F0aW9uKTtcblx0XHRjb25zdCBVT01FeHAgPSBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KFVPTSlcblx0XHRcdD8gKHBhdGhJbk1vZGVsPHN0cmluZz4oXCJ1b20vXCIgKyBpbmZvUGF0aCwgXCJpbnRlcm5hbFwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPilcblx0XHRcdDogY29uc3RhbnQoVU9NIGFzIHN0cmluZyk7XG5cdFx0Y29uc3Qgc2NhbGVFeHAgPSBzY2FsZSA/IGNvbnN0YW50KHNjYWxlKSA6IChwYXRoSW5Nb2RlbChcInNjYWxlZmFjdG9yL1wiICsgaW5mb1BhdGgsIFwiaW50ZXJuYWxcIikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4pO1xuXHRcdGlmICghc2VwZXJhdG9yKSB7XG5cdFx0XHRzZXBlcmF0b3IgPSBcInxcIjtcblx0XHR9XG5cdFx0c2VwZXJhdG9yID0gXCIgXCIgKyBzZXBlcmF0b3IgKyBcIiBcIjtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZm9ybWF0UmVzdWx0KFtzZXBlcmF0b3IsIFVPTUV4cCwgc2NhbGVFeHBdLCB2aXN1YWxGaWx0ZXJGb3JtYXR0ZXIuZm9ybWF0U2NhbGVBbmRVT00pLCB0b29sVGlwKSA/PyBcIlwiO1xuXHR9LFxuXHRnZXRNZWFzdXJlRGltZW5zaW9uVGl0bGU6IGZ1bmN0aW9uIChjaGFydEFubm90YXRpb24/OiBDaGFydCwgY3VzdG9tQWdncmVnYXRlPzogYm9vbGVhbiwgYWdncmVnYXRpb24/OiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlKTogc3RyaW5nIHtcblx0XHRsZXQgbWVhc3VyZUxhYmVsO1xuXHRcdGxldCBtZWFzdXJlUGF0aDtcblx0XHRpZiAoY3VzdG9tQWdncmVnYXRlKSB7XG5cdFx0XHRtZWFzdXJlUGF0aCA9IGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZXNbMF0/LiR0YXJnZXQ/Lm5hbWU7XG5cdFx0fVxuXHRcdGlmIChjaGFydEFubm90YXRpb24/LkR5bmFtaWNNZWFzdXJlcyAmJiBjaGFydEFubm90YXRpb24uRHluYW1pY01lYXN1cmVzLmxlbmd0aCA+IDApIHtcblx0XHRcdG1lYXN1cmVQYXRoID0gKGNoYXJ0QW5ub3RhdGlvbi5EeW5hbWljTWVhc3VyZXNbMF0/LiR0YXJnZXQgYXMgQWdncmVnYXRlZFByb3BlcnR5VHlwZSk/LkFnZ3JlZ2F0YWJsZVByb3BlcnR5Py52YWx1ZTtcblx0XHR9IGVsc2UgaWYgKCFjdXN0b21BZ2dyZWdhdGUgJiYgY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlcyAmJiBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVzLmxlbmd0aCA+IDApIHtcblx0XHRcdG1lYXN1cmVQYXRoID0gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVzWzBdPy4kdGFyZ2V0Py5uYW1lO1xuXHRcdH1cblx0XHRjb25zdCBkaW1lbnNpb25QYXRoID0gY2hhcnRBbm5vdGF0aW9uPy5EaW1lbnNpb25zWzBdPy52YWx1ZSBhcyB1bmtub3duIGFzIExhYmVsO1xuXHRcdGxldCBkaW1lbnNpb25MYWJlbCA9IGNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWw7XG5cdFx0aWYgKCFjdXN0b21BZ2dyZWdhdGUgJiYgYWdncmVnYXRpb24pIHtcblx0XHRcdC8vIGNoZWNrIGlmIHRoZSBsYWJlbCBpcyBwYXJ0IG9mIGFnZ3JlZ2F0ZWQgcHJvcGVydGllcyAoVHJhbnNmb3JtYXRpb24gYWdncmVnYXRlcylcblx0XHRcdG1lYXN1cmVMYWJlbCA9IGFnZ3JlZ2F0aW9uLmFubm90YXRpb25zICYmIGFnZ3JlZ2F0aW9uLmFubm90YXRpb25zLkNvbW1vbiAmJiBhZ2dyZWdhdGlvbi5hbm5vdGF0aW9ucy5Db21tb24uTGFiZWw7XG5cdFx0XHRpZiAobWVhc3VyZUxhYmVsID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0bWVhc3VyZUxhYmVsID0gY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlcz8uWzBdPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bWVhc3VyZUxhYmVsID0gY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlcz8uWzBdPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbDtcblx0XHR9XG5cdFx0aWYgKG1lYXN1cmVMYWJlbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRtZWFzdXJlTGFiZWwgPSBtZWFzdXJlUGF0aDtcblx0XHR9XG5cdFx0aWYgKGRpbWVuc2lvbkxhYmVsID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRpbWVuc2lvbkxhYmVsID0gZGltZW5zaW9uUGF0aDtcblx0XHR9XG5cdFx0cmV0dXJuIExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiTV9JTlRFUkFDVElWRV9DSEFSVF9IRUxQRVJfVklTVUFMRklMVEVSX01FQVNVUkVfRElNRU5TSU9OX1RJVExFXCIsIFtcblx0XHRcdG1lYXN1cmVMYWJlbCxcblx0XHRcdGRpbWVuc2lvbkxhYmVsXG5cdFx0XSk7XG5cdH0sXG5cblx0Z2V0VG9vbFRpcDogZnVuY3Rpb24gKFxuXHRcdGNoYXJ0QW5ub3RhdGlvbj86IENoYXJ0LFxuXHRcdGNvbGxlY3Rpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdFx0bWV0YVBhdGg/OiBzdHJpbmcsXG5cdFx0Y3VzdG9tQWdncmVnYXRlPzogYm9vbGVhbixcblx0XHRhZ2dyZWdhdGlvbj86IEFnZ3JlZ2F0ZWRQcm9wZXJ0eVR5cGUsXG5cdFx0cmVuZGVyTGluZUNoYXJ0PzogYm9vbGVhbiB8IHN0cmluZ1xuXHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNoYXJ0VHlwZSA9IGNoYXJ0QW5ub3RhdGlvbiAmJiBjaGFydEFubm90YXRpb25bXCJDaGFydFR5cGVcIl07XG5cdFx0bGV0IG1lYXN1cmVEaW1lbnNpb25Ub29sVGlwID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRNZWFzdXJlRGltZW5zaW9uVGl0bGUoY2hhcnRBbm5vdGF0aW9uLCBjdXN0b21BZ2dyZWdhdGUsIGFnZ3JlZ2F0aW9uKTtcblx0XHRtZWFzdXJlRGltZW5zaW9uVG9vbFRpcCA9IENvbW1vbkhlbHBlci5lc2NhcGVTaW5nbGVRdW90ZXMobWVhc3VyZURpbWVuc2lvblRvb2xUaXApO1xuXHRcdGlmIChyZW5kZXJMaW5lQ2hhcnQgPT09IGZhbHNlICYmIGNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiKSB7XG5cdFx0XHRyZXR1cm4gYHs9ICcke21lYXN1cmVEaW1lbnNpb25Ub29sVGlwfSd9YDtcblx0XHR9XG5cblx0XHRjb25zdCBzZXBlcmF0b3IgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKT8uZ2V0VGV4dChcblx0XHRcdFwiTV9JTlRFUkFDVElWRV9DSEFSVF9IRUxQRVJfVklTVUFMRklMVEVSX1RPT0xUSVBfU0VQRVJBVE9SXCJcblx0XHQpO1xuXHRcdGNvbnN0IGluZm9QYXRoID0gZ2VuZXJhdGUoW21ldGFQYXRoXSk7XG5cdFx0Y29uc3Qgc2NhbGVVT01Ub29sdGlwID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRTY2FsZVVvTVRpdGxlKFxuXHRcdFx0Y2hhcnRBbm5vdGF0aW9uLFxuXHRcdFx0Y29sbGVjdGlvbixcblx0XHRcdGluZm9QYXRoLFxuXHRcdFx0Y3VzdG9tQWdncmVnYXRlLFxuXHRcdFx0YWdncmVnYXRpb24sXG5cdFx0XHRzZXBlcmF0b3IsXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0XHRyZXR1cm4gXCJ7PSAnXCIgKyBtZWFzdXJlRGltZW5zaW9uVG9vbFRpcCArIChzY2FsZVVPTVRvb2x0aXAgPyBcIicgKyBcIiArIHNjYWxlVU9NVG9vbHRpcCA6IFwiJ1wiKSArIFwifVwiO1xuXHR9LFxuXHRfZ2V0VU9NOiBmdW5jdGlvbiAoXG5cdFx0VU9NT2JqZWN0UGF0aD86IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPHVua25vd24+LFxuXHRcdFVPTT86IFwiSVNPQ3VycmVuY3lcIiB8IFwiVW5pdFwiLFxuXHRcdGNvbGxlY3Rpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdFx0Y3VzdG9tRGF0YT86IGJvb2xlYW4sXG5cdFx0YWdncmVnYXRhYmxlUHJvcGVydHlQYXRoPzogc3RyaW5nXG5cdCk6IHN0cmluZyB8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjx1bmtub3duPiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBVT01PYmplY3Q6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0Y29uc3QgY29sbGVjdGlvbk9iamVjdCA9IGNvbGxlY3Rpb24/LnRhcmdldE9iamVjdDtcblx0XHRpZiAoVU9NT2JqZWN0UGF0aCAmJiBVT00gJiYgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oVU9NT2JqZWN0UGF0aCkpIHtcblx0XHRcdC8vIGNoZWNrIGlmIHRoZSBVT00gaXMgcGFydCBvZiBNZWFzdXJlIGFubm90YXRpb25zKEN1c3RvbSBhZ2dyZWdhdGVzKVxuXHRcdFx0VU9NT2JqZWN0W1VPTV0gPSB7ICRQYXRoOiBVT01PYmplY3RQYXRoLnBhdGggfTtcblx0XHRcdHJldHVybiBjdXN0b21EYXRhICYmIFVPTU9iamVjdFBhdGgucGF0aCA/IFVPTU9iamVjdCA6IFVPTU9iamVjdFBhdGg7XG5cdFx0fSBlbHNlIGlmIChhZ2dyZWdhdGFibGVQcm9wZXJ0eVBhdGgpIHtcblx0XHRcdC8vIGNoZWNrIGlmIHRoZSBVT00gaXMgcGFydCBvZiBiYXNlIHByb3BlcnR5IGFubm90YXRpb25zKFRyYW5zZm9ybWF0aW9uIGFnZ3JlZ2F0ZXMpXG5cdFx0XHRjb25zdCBlbnRpdHlQcm9wZXJ0aWVzID1cblx0XHRcdFx0aXNFbnRpdHlTZXQoY29sbGVjdGlvbk9iamVjdCkgfHwgaXNTaW5nbGV0b24oY29sbGVjdGlvbk9iamVjdClcblx0XHRcdFx0XHQ/IGNvbGxlY3Rpb25PYmplY3QuZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzXG5cdFx0XHRcdFx0OiBjb2xsZWN0aW9uT2JqZWN0Py50YXJnZXRUeXBlPy5lbnRpdHlQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlBbm5vdGF0aW9ucyA9IGVudGl0eVByb3BlcnRpZXM/LmZpbmQoKHByb3BlcnR5OiBQcm9wZXJ0eSkgPT4gcHJvcGVydHkubmFtZSA9PSBhZ2dyZWdhdGFibGVQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0aWYgKHByb3BlcnR5QW5ub3RhdGlvbnM/LmFubm90YXRpb25zPy5NZWFzdXJlcyAmJiBVT00pIHtcblx0XHRcdFx0VU9NT2JqZWN0UGF0aCA9IHByb3BlcnR5QW5ub3RhdGlvbnM/LmFubm90YXRpb25zPy5NZWFzdXJlc1tVT01dIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjx1bmtub3duPjtcblx0XHRcdFx0VU9NT2JqZWN0W1VPTV0gPSB7ICRQYXRoOiBVT01PYmplY3RQYXRoPy5wYXRoIH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gVU9NT2JqZWN0UGF0aCAmJiBjdXN0b21EYXRhICYmIGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKFVPTU9iamVjdFBhdGgpICYmIFVPTU9iamVjdFBhdGgucGF0aFxuXHRcdFx0XHQ/IFVPTU9iamVjdFxuXHRcdFx0XHQ6IFVPTU9iamVjdFBhdGg7XG5cdFx0fVxuXHR9LFxuXHRnZXRVb006IGZ1bmN0aW9uIChcblx0XHRjaGFydEFubm90YXRpb24/OiBDaGFydCxcblx0XHRjb2xsZWN0aW9uPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRcdGN1c3RvbURhdGE/OiBib29sZWFuLFxuXHRcdGN1c3RvbUFnZ3JlZ2F0ZT86IGJvb2xlYW4sXG5cdFx0YWdncmVnYXRpb24/OiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlXG5cdCk6IHN0cmluZyB8IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPHVua25vd24+IHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQge1xuXHRcdGxldCBtZWFzdXJlOiBNZWFzdXJlVHlwZSA9IHt9O1xuXHRcdGlmIChjdXN0b21BZ2dyZWdhdGUpIHtcblx0XHRcdG1lYXN1cmUgPSBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVzWzBdIGFzIE1lYXN1cmVUeXBlO1xuXHRcdH1cblx0XHRpZiAoY2hhcnRBbm5vdGF0aW9uPy5EeW5hbWljTWVhc3VyZXMgJiYgY2hhcnRBbm5vdGF0aW9uLkR5bmFtaWNNZWFzdXJlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRtZWFzdXJlID0gKGNoYXJ0QW5ub3RhdGlvbi5EeW5hbWljTWVhc3VyZXNbMF0/LiR0YXJnZXQgYXMgQWdncmVnYXRlZFByb3BlcnR5VHlwZSk/LkFnZ3JlZ2F0YWJsZVByb3BlcnR5Py4kdGFyZ2V0Py5hbm5vdGF0aW9uc1xuXHRcdFx0XHQ/Lk1lYXN1cmVzIGFzIE1lYXN1cmVUeXBlO1xuXHRcdH0gZWxzZSBpZiAoIWN1c3RvbUFnZ3JlZ2F0ZSAmJiBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVzICYmIGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRtZWFzdXJlID0gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVzWzBdO1xuXHRcdH1cblx0XHRjb25zdCBJU09DdXJyZW5jeSA9IG1lYXN1cmU/LklTT0N1cnJlbmN5O1xuXHRcdGNvbnN0IHVuaXQgPSBtZWFzdXJlPy5Vbml0O1xuXHRcdGxldCBhZ2dyZWdhdGFibGVQcm9wZXJ0eVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIWN1c3RvbUFnZ3JlZ2F0ZSAmJiBhZ2dyZWdhdGlvbikge1xuXHRcdFx0YWdncmVnYXRhYmxlUHJvcGVydHlQYXRoID0gYWdncmVnYXRpb24uQWdncmVnYXRhYmxlUHJvcGVydHkgJiYgYWdncmVnYXRpb24uQWdncmVnYXRhYmxlUHJvcGVydHkudmFsdWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFnZ3JlZ2F0YWJsZVByb3BlcnR5UGF0aCA9IG1lYXN1cmU/LnZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5fZ2V0VU9NKElTT0N1cnJlbmN5LCBcIklTT0N1cnJlbmN5XCIsIGNvbGxlY3Rpb24sIGN1c3RvbURhdGEsIGFnZ3JlZ2F0YWJsZVByb3BlcnR5UGF0aCkgfHxcblx0XHRcdHRoaXMuX2dldFVPTSh1bml0LCBcIlVuaXRcIiwgY29sbGVjdGlvbiwgY3VzdG9tRGF0YSwgYWdncmVnYXRhYmxlUHJvcGVydHlQYXRoKVxuXHRcdCk7XG5cdH0sXG5cdGdldFNjYWxlRmFjdG9yOiBmdW5jdGlvbiAodmFsdWVGb3JtYXQ/OiBOdW1iZXJGb3JtYXRUeXBlKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodmFsdWVGb3JtYXQgJiYgdmFsdWVGb3JtYXQuU2NhbGVGYWN0b3IpIHtcblx0XHRcdHJldHVybiB2YWx1ZUZvcm1hdC5TY2FsZUZhY3Rvci52YWx1ZU9mKCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH0sXG5cdGdldFVvTVZpc2libGl0eTogZnVuY3Rpb24gKGNoYXJ0QW5ub3RhdGlvbj86IENoYXJ0LCBzaG93RXJyb3I/OiBib29sZWFuKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgY2hhcnRUeXBlID0gY2hhcnRBbm5vdGF0aW9uICYmIGNoYXJ0QW5ub3RhdGlvbltcIkNoYXJ0VHlwZVwiXTtcblx0XHRpZiAoc2hvd0Vycm9yKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIGlmICghKGNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvQmFyXCIgfHwgY2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCIpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fSxcblx0Z2V0SW5QYXJhbWV0ZXJGaWx0ZXJzQmluZGluZzogZnVuY3Rpb24gKGluUGFyYW1ldGVyczogQXJyYXk8UGFyYW1ldGVyVHlwZT4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGlmIChpblBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRsZXQgcGF0aHMgPSBcIlwiO1xuXHRcdFx0aW5QYXJhbWV0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGluUGFyYW1ldGVyOiBQYXJhbWV0ZXJUeXBlKSB7XG5cdFx0XHRcdGlmIChpblBhcmFtZXRlci5sb2NhbERhdGFQcm9wZXJ0eSkge1xuXHRcdFx0XHRcdHBhcnRzLnB1c2goYHtwYXRoOickZmlsdGVycz4vY29uZGl0aW9ucy8ke2luUGFyYW1ldGVyLmxvY2FsRGF0YVByb3BlcnR5fSd9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0aWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0cGF0aHMgPSBwYXJ0cy5qb2luKCk7XG5cdFx0XHRcdHJldHVybiBge3BhcnRzOlske3BhdGhzfV0sIGZvcm1hdHRlcjonc2FwLmZlLm1hY3Jvcy52aXN1YWxmaWx0ZXJzLlZpc3VhbEZpbHRlclJ1bnRpbWUuZ2V0RmlsdGVyc0Zyb21Db25kaXRpb25zJ31gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH0sXG5cblx0Z2V0ZmlsdGVyQ291bnRCaW5kaW5nOiBmdW5jdGlvbiAoY2hhcnRBbm5vdGF0aW9uPzogQ2hhcnQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRpbWVuc2lvbiA9IGNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8ubmFtZTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0XCJ7cGF0aDonJGZpbHRlcnM+L2NvbmRpdGlvbnMvXCIgKyBkaW1lbnNpb24gKyBcIicsIGZvcm1hdHRlcjonc2FwLmZlLm1hY3Jvcy52aXN1YWxmaWx0ZXJzLlZpc3VhbEZpbHRlclJ1bnRpbWUuZ2V0RmlsdGVyQ291bnRzJ31cIlxuXHRcdCk7XG5cdH0sXG5cblx0Z2V0SW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXM6IGZ1bmN0aW9uICh2aXN1YWxGaWx0ZXI6IFZpc3VhbEZpbHRlcik6IEludGVyYWN0aXZlQ2hhcnRUeXBlIHtcblx0XHRjb25zdCBjaGFydEFubm90YXRpb24gPSB2aXN1YWxGaWx0ZXIuY2hhcnRBbm5vdGF0aW9uO1xuXHRcdGNvbnN0IGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzOiBJbnRlcmFjdGl2ZUNoYXJ0VHlwZSA9IHt9O1xuXHRcdGlmICh2aXN1YWxGaWx0ZXIuY2hhcnRNZWFzdXJlICYmIGNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9ucyAmJiBjaGFydEFubm90YXRpb24uRGltZW5zaW9uc1swXSkge1xuXHRcdFx0Y29uc3QgaWQgPSBnZW5lcmF0ZShbdmlzdWFsRmlsdGVyLm1ldGFQYXRoXSk7XG5cdFx0XHRpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5zaG93RXJyb3JFeHByZXNzaW9uID0gXCJ7PSAke2ludGVybmFsPlwiICsgaWQgKyBcIi9zaG93RXJyb3J9fVwiO1xuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuZXJyb3JNZXNzYWdlRXhwcmVzc2lvbiA9IFwiez0gJHtpbnRlcm5hbD5cIiArIGlkICsgXCIvZXJyb3JNZXNzYWdlfX1cIjtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmVycm9yTWVzc2FnZVRpdGxlRXhwcmVzc2lvbiA9IFwiez0gJHtpbnRlcm5hbD5cIiArIGlkICsgXCIvZXJyb3JNZXNzYWdlVGl0bGV9fVwiO1xuXHRcdFx0bGV0IGRhdGFQb2ludEFubm90YXRpb247XG5cdFx0XHRpZiAoY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlQXR0cmlidXRlcyAmJiBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVBdHRyaWJ1dGVzWzBdKSB7XG5cdFx0XHRcdGRhdGFQb2ludEFubm90YXRpb24gPSBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVBdHRyaWJ1dGVzWzBdPy5EYXRhUG9pbnRcblx0XHRcdFx0XHQ/IGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXNbMF0uRGF0YVBvaW50LiR0YXJnZXRcblx0XHRcdFx0XHQ6IGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXNbMF07XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBkaW1lbnNpb24gPSBjaGFydEFubm90YXRpb24/LkRpbWVuc2lvbnNbMF07XG5cdFx0XHRjb25zdCBwYXJhbWV0ZXJzID0gQ29tbW9uSGVscGVyLmdldFBhcmFtZXRlcnModmlzdWFsRmlsdGVyLmNvbnRleHRQYXRoLCB2aXN1YWxGaWx0ZXIuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdFx0Y29uc3QgZGltZW5zaW9uVGV4dCA9IGRpbWVuc2lvbj8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCBhcyB1bmtub3duIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+O1xuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuYWdncmVnYXRpb25CaW5kaW5nID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRBZ2dyZWdhdGlvbkJpbmRpbmcoXG5cdFx0XHRcdGNoYXJ0QW5ub3RhdGlvbixcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmNvbGxlY3Rpb24sXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5jb250ZXh0UGF0aCxcblx0XHRcdFx0ZGltZW5zaW9uVGV4dCxcblx0XHRcdFx0ZGltZW5zaW9uLiR0YXJnZXQ/LnR5cGUsXG5cdFx0XHRcdHZpc3VhbEZpbHRlcj8uc29ydE9yZGVyLFxuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmFnZ3JlZ2F0ZVByb3BlcnRpZXMsXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5Vb01IYXNDdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5maWx0ZXJCYXJFbnRpdHlUeXBlLFxuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuZHJhZnRTdXBwb3J0ZWQsXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5jaGFydE1lYXN1cmUsXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5nZXRNZXRhTW9kZWwoKVxuXHRcdFx0KTtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLnNjYWxlZmFjdG9yID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRTY2FsZUZhY3RvcigoZGF0YVBvaW50QW5ub3RhdGlvbiBhcyBEYXRhUG9pbnQpPy5WYWx1ZUZvcm1hdCk7XG5cdFx0XHRpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy51b20gPSBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldFVvTShcblx0XHRcdFx0Y2hhcnRBbm5vdGF0aW9uLFxuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuY29sbGVjdGlvbixcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmFnZ3JlZ2F0ZVByb3BlcnRpZXNcblx0XHRcdCk7XG5cdFx0XHRpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5pblBhcmFtZXRlcnMgPSB2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzO1xuXHRcdFx0Y29uc3QgaW5QYXJhbWV0ZXJzID0gQ29tbW9uSGVscGVyLnBhcnNlQ3VzdG9tRGF0YSh2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzIGFzIHVua25vd24gYXMgc3RyaW5nKTtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmluUGFyYW1ldGVyRmlsdGVycyA9IHZpc3VhbEZpbHRlci5pblBhcmFtZXRlcnNcblx0XHRcdFx0PyBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldEluUGFyYW1ldGVyRmlsdGVyc0JpbmRpbmcoaW5QYXJhbWV0ZXJzIGFzIEFycmF5PFBhcmFtZXRlclR5cGU+KVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLnNlbGVjdGlvblZhcmlhbnQgPSB2aXN1YWxGaWx0ZXIuc2VsZWN0aW9uVmFyaWFudCA/IHZpc3VhbEZpbHRlci5zZWxlY3Rpb25WYXJpYW50IDogdW5kZWZpbmVkO1xuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuc3RyaW5naWZpZWRQYXJhbWV0ZXJzID0gcGFyYW1ldGVycztcblx0XHRcdGNvbnN0IGRpbWVuc2lvbkNvbnRleHQgPSB2aXN1YWxGaWx0ZXJcblx0XHRcdFx0LmdldE1ldGFNb2RlbCgpXG5cdFx0XHRcdD8uY3JlYXRlQmluZGluZ0NvbnRleHQodmlzdWFsRmlsdGVyLmNvbnRleHRQYXRoICsgXCIvQFwiICsgZGltZW5zaW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIkBcIilbMV0pO1xuXHRcdFx0aWYgKGRpbWVuc2lvbkNvbnRleHQpIHtcblx0XHRcdFx0Y29uc3QgZGltZW5zaW9uT2JqZWN0ID0gdmlzdWFsRmlsdGVyLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPFByb3BlcnR5Pihcblx0XHRcdFx0XHRkaW1lbnNpb25Db250ZXh0LmdldFBhdGgoKSxcblx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuY29udGV4dFBhdGhcblx0XHRcdFx0KTtcblx0XHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuY2hhcnRMYWJlbCA9IGdldFRleHRCaW5kaW5nKGRpbWVuc2lvbk9iamVjdCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Piwge30pO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMubWVhc3VyZSA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0Q2hhcnRWYWx1ZSh2aXN1YWxGaWx0ZXIuY2hhcnRNZWFzdXJlKTtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmRpc3BsYXllZFZhbHVlID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRDaGFydERpc3BsYXllZFZhbHVlKFxuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuY2hhcnRNZWFzdXJlLFxuXHRcdFx0XHQoZGF0YVBvaW50QW5ub3RhdGlvbiBhcyBEYXRhUG9pbnQpPy5WYWx1ZUZvcm1hdCxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLm1ldGFQYXRoXG5cdFx0XHQpO1xuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuY29sb3IgPSBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldENvbG9yQmluZGluZyhkYXRhUG9pbnRBbm5vdGF0aW9uIGFzIERhdGFQb2ludCwgZGltZW5zaW9uKTtcblx0XHR9XG5cdFx0cmV0dXJuIGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpRkEsTUFBTUEsc0JBQXNCLEdBQUc7SUFDOUJDLHNCQUFzQixFQUFFLFNBQUFBLENBQVVDLEtBQWEsRUFBRUMsV0FBOEIsRUFBRUMsUUFBaUIsRUFBVTtNQUMzRyxNQUFNQyxRQUFRLEdBQUdDLFFBQVEsQ0FBQyxDQUFDRixRQUFRLENBQUMsQ0FBQztNQUNyQyxPQUNDLGlCQUFpQixHQUNqQkYsS0FBSyxHQUNMLDJFQUEyRSxJQUMxRUMsV0FBVyxJQUFJQSxXQUFXLENBQUNJLFdBQVcsR0FDcEMsV0FBVyxHQUFHSixXQUFXLENBQUNJLFdBQVcsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQ3RELHFDQUFxQyxHQUFHSCxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQzFERixXQUFXLElBQUlBLFdBQVcsQ0FBQ00sd0JBQXdCLEdBQ2pELFdBQVcsR0FBR04sV0FBVyxDQUFDTSx3QkFBd0IsR0FBRyxJQUFJLEdBQ3pELGNBQWMsQ0FBQyxHQUNsQiw0QkFBNEIsR0FDNUJKLFFBQVEsR0FDUixJQUFJLEdBQ0osVUFBVSxHQUNWSCxLQUFLLEdBQ0wsMEVBQTBFLEdBQzFFLHdGQUF3RixDQUN2RixDQUFDO0lBQ0osQ0FBQztJQUNEUSxhQUFhLEVBQUUsU0FBQUEsQ0FBVVIsS0FBYSxFQUFVO01BQy9DLE9BQU8sU0FBUyxHQUFHQSxLQUFLLEdBQUcsMkVBQTJFO0lBQ3ZHLENBQUM7SUFDRFMsa0JBQWtCLEVBQUUsU0FBQUEsQ0FDbkJDLFVBQWtFLEVBQ2xFQyxXQUFtQixFQUNuQkMsVUFBMEIsRUFDakI7TUFDVCxNQUFNQyxnQkFBZ0IsR0FBR0gsVUFBVSxFQUFFSSxZQUFZO01BQ2pELElBQUlDLG9CQUFvQixDQUFDRixnQkFBZ0Is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Q0FBQztRQUNEWiwwQkFBMEIsQ0FBQ1IsWUFBWSxHQUFHTyxZQUFZLENBQUNQLFlBQVk7UUFDbkUsTUFBTUEsWUFBWSxHQUFHNUUsWUFBWSxDQUFDbUcsZUFBZSxDQUFDaEIsWUFBWSxDQUFDUCxZQUFpQyxDQUFDO1FBQ2pHUSwwQkFBMEIsQ0FBQ2dCLGtCQUFrQixHQUFHakIsWUFBWSxDQUFDUCxZQUFZLEdBQ3RFcE8sc0JBQXNCLENBQUNtTyw0QkFBNEIsQ0FBQ0MsWUFBb0MsQ0FBQyxHQUN6RmxMLFNBQVM7UUFDWjBMLDBCQUEwQixDQUFDeEosZ0JBQWdCLEdBQUd1SixZQUFZLENBQUN2SixnQkFBZ0IsR0FBR3VKLFlBQVksQ0FBQ3ZKLGdCQUFnQixHQUFHbEMsU0FBUztRQUN2SDBMLDBCQUEwQixDQUFDaUIscUJBQXFCLEdBQUcvTyxVQUFVO1FBQzdELE1BQU1nUCxnQkFBZ0IsR0FBR25CLFlBQVksQ0FDbkNRLFlBQVksQ0FBQyxDQUFDLEVBQ2I3TSxvQkFBb0IsQ0FBQ3FNLFlBQVksQ0FBQzlOLFdBQVcsR0FBRyxJQUFJLEdBQUc2RSxTQUFTLENBQUNxSyxrQkFBa0IsQ0FBQzNOLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxJQUFJME4sZ0JBQWdCLEVBQUU7VUFDckIsTUFBTUUsZUFBZSxHQUFHckIsWUFBWSxDQUFDc0IsNkJBQTZCLENBQ2pFSCxnQkFBZ0IsQ0FBQ0ksT0FBTyxDQUFDLENBQUMsRUFDMUJ2QixZQUFZLENBQUM5TixXQUNkLENBQUM7VUFDRCtOLDBCQUEwQixDQUFDdUIsVUFBVSxHQUFHQyxjQUFjLENBQUNKLGVBQWUsRUFBbUMsQ0FBQyxDQUFDLENBQUM7UUFDN0c7UUFDQXBCLDBCQUEwQixDQUFDZixPQUFPLEdBQUc3TixzQkFBc0IsQ0FBQ1UsYUFBYSxDQUFDaU8sWUFBWSxDQUFDcEosWUFBWSxDQUFDO1FBQ3BHcUosMEJBQTBCLENBQUN5QixjQUFjLEdBQUdyUSxzQkFBc0IsQ0FBQ0Msc0JBQXNCLENBQ3hGME8sWUFBWSxDQUFDcEosWUFBWSxFQUN4QjBKLG1CQUFtQixFQUFnQmxFLFdBQVcsRUFDL0M0RCxZQUFZLENBQUN2TyxRQUNkLENBQUM7UUFDRHdPLDBCQUEwQixDQUFDMEIsS0FBSyxHQUFHdFEsc0JBQXNCLENBQUMrSCxlQUFlLENBQUNrSCxtQkFBbUIsRUFBZXZKLFNBQVMsQ0FBQztNQUN2SDtNQUNBLE9BQU9rSiwwQkFBMEI7SUFDbEM7RUFDRCxDQUFDO0VBQUMsT0FFYTVPLHNCQUFzQjtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
454
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyIiwiZ2V0Q2hhcnREaXNwbGF5ZWRWYWx1ZSIsInZhbHVlIiwidmFsdWVGb3JtYXQiLCJtZXRhUGF0aCIsImluZm9QYXRoIiwiZ2VuZXJhdGUiLCJTY2FsZUZhY3RvciIsInZhbHVlT2YiLCJOdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJnZXRDaGFydFZhbHVlIiwiX2dldENvbGxlY3Rpb25OYW1lIiwiY29sbGVjdGlvbiIsImNvbnRleHRQYXRoIiwicGFyYW1ldGVycyIsImNvbGxlY3Rpb25PYmplY3QiLCJ0YXJnZXRPYmplY3QiLCJpc05hdmlnYXRpb25Qcm9wZXJ0eSIsIm5hbWUiLCJpc0VudGl0eVNldCIsIl9nZXRCaW5kaW5nUGF0aEZvclBhcmFtZXRlcnMiLCJmaWx0ZXJDb25kaXRpb25zIiwibWV0YU1vZGVsIiwiY29sbGVjdGlvbk5hbWUiLCJlbnRpdHlTZXRQYXRoIiwicGFyYW1zIiwiY29udmVydGVkRmlsdGVyQ29uZGl0aW9ucyIsIlZpc3VhbEZpbHRlclV0aWxzIiwiY29udmVydEZpbHRlckNvbmRpb25zIiwicGFyYW1ldGVyUHJvcGVydGllcyIsIkNvbW1vblV0aWxzIiwiZ2V0UGFyYW1ldGVySW5mbyIsImkiLCJwYXJhbWV0ZXIiLCJwcm9wZXJ0eSIsImVudGl0eVBhdGgiLCJzcGxpdCIsInByb3BlcnR5Q29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwidHlwZUNvbmZpZyIsIlR5cGVNYXAiLCJnZXRUeXBlQ29uZmlnIiwiJFR5cGUiLCJKU1Rva2VuaXplciIsInBhcnNlSlMiLCJmb3JtYXRPcHRpb25zIiwiY29udGV4dCIsImNvbnN0cmFpbnRzIiwiY29uZGl0aW9uIiwiY29uZGl0aW9uSW50ZXJuYWwiLCJ1bmRlZmluZWQiLCJpbnRlcm5hbFBhcmFtZXRlckNvbmRpdGlvbiIsIkNvbmRpdGlvbkNvbnZlcnRlciIsInRvVHlwZSIsImVkbVR5cGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJPRGF0YVV0aWxzIiwiZm9ybWF0TGl0ZXJhbCIsInZhbHVlcyIsInB1c2giLCJwYXJhbWV0ZXJFbnRpdHlTZXQiLCJzbGljZSIsImxhc3RJbmRleE9mIiwidGFyZ2V0TmF2aWdhdGlvbiIsInN1YnN0cmluZyIsInRvU3RyaW5nIiwiX2dldFVPTUFnZ3JlZ2F0aW9uRXhwcmVzc2lvbiIsImN1c3RvbUFnZ3JlZ2F0ZSIsIlVvTUhhc0N1c3RvbUFnZ3JlZ2F0ZSIsIlVPTSIsImFnZ3JlZ2F0aW9uIiwiYWdncmVnYXRpb25FeHByZXNzaW9uIiwiVU9NRXhwcmVzc2lvbiIsInBhdGgiLCJpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiIsInVuaXQiLCJBZ2dyZWdhdGFibGVQcm9wZXJ0eSIsIkFnZ3JlZ2F0aW9uTWV0aG9kIiwid2l0aCIsImdldEFnZ3JlZ2F0aW9uQmluZGluZyIsImNoYXJ0QW5ub3RhdGlvbnMiLCJ0ZXh0QXNzb2NpYXRpb24iLCJkaW1lbnNpb25UeXBlIiwic29ydE9yZGVyIiwic2VsZWN0aW9uVmFyaWFudCIsImZpbHRlckJhckVudGl0eVR5cGUiLCJkcmFmdFN1cHBvcnRlZCIsImNoYXJ0TWVhc3VyZSIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwiZW50aXR5VHlwZSIsImRpbWVuc2lvbiIsIkRpbWVuc2lvbnMiLCJmaWx0ZXJzIiwiZ2V0VW9NIiwiRmlsdGVyIiwib3BlcmF0b3IiLCJ2YWx1ZTEiLCJ2YWx1ZTIiLCJnZXRGaWx0ZXJzQ29uZGl0aW9uc0Zyb21TZWxlY3Rpb25WYXJpYW50IiwiZ2V0Q3VzdG9tQ29uZGl0aW9ucyIsImJpbmQiLCJjb25kaXRpb25zIiwiZm9yRWFjaCIsImlzUGFyYW1ldGVyIiwibGVuZ3RoIiwiYmluZGluZ1BhdGgiLCJVT01BZ2dyZWdhdGlvbkV4cHJlc3Npb24iLCJ0ZXh0QXNzb2NpYXRpb25FeHByZXNzaW9uIiwiYWRkaXRpb25hbGx5IiwiZmluYWxwYXJhbWV0ZXJzIiwiZ2V0U29ydE9yZGVyIiwiJCRhZ2dyZWdhdGlvbiIsImFnZ3JlZ2F0ZSIsImdyb3VwIiwidGVtcGxhdGVTaGFyZWFibGUiLCJzdXNwZW5kZWQiLCJnZXRNYXhJdGVtcyIsIl9nZXRPcmRlckV4cHJlc3Npb25Gcm9tTWVhc3VyZSIsInNvcnRQcm9wZXJ0eU5hbWUiLCJEeW5hbWljUHJvcGVydHkiLCIkdGFyZ2V0IiwiTmFtZSIsIlByb3BlcnR5IiwiJG9yZGVyYnkiLCJEZXNjZW5kaW5nIiwiQ2hhcnRUeXBlIiwic3RhcnRJbmRleCIsImdldENvbG9yQmluZGluZyIsImRhdGFQb2ludCIsInZhbHVlQ3JpdGljYWxpdHkiLCJhbm5vdGF0aW9ucyIsIlVJIiwiVmFsdWVDcml0aWNhbGl0eSIsIkNyaXRpY2FsaXR5IiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQiLCJDcml0aWNhbGl0eUNhbGN1bGF0aW9uIiwib0RpcmVjdGlvbiIsIkltcHJvdmVtZW50RGlyZWN0aW9uIiwib0RhdGFQb2ludFZhbHVlIiwiVmFsdWUiLCJvRGV2aWF0aW9uUmFuZ2VMb3dWYWx1ZSIsIkRldmlhdGlvblJhbmdlTG93VmFsdWUiLCJvVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZSIsIlRvbGVyYW5jZVJhbmdlTG93VmFsdWUiLCJvQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUiLCJBY2NlcHRhbmNlUmFuZ2VMb3dWYWx1ZSIsIm9BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUiLCJBY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUiLCJvVG9sZXJhbmNlUmFuZ2VIaWdoVmFsdWUiLCJUb2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSIsIm9EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSIsIkRldmlhdGlvblJhbmdlSGlnaFZhbHVlIiwiQ29tbW9uSGVscGVyIiwiZ2V0Q3JpdGljYWxpdHlDYWxjdWxhdGlvbkJpbmRpbmciLCJnZXRWYWx1ZUNyaXRpY2FsaXR5IiwicmVzdWx0IiwidmFsdWVDcml0aWNhbGl0eVR5cGUiLCJfZ2V0Q3JpdGljYWxpdHlGcm9tRW51bSIsImpvaW4iLCJjcml0aWNhbGl0eSIsInZhbHVlQ29sb3IiLCJtTGlicmFyeSIsIlZhbHVlQ29sb3IiLCJpbmRpY2F0b3IiLCJFcnJvciIsIkdvb2QiLCJDcml0aWNhbCIsIk5ldXRyYWwiLCJnZXRTY2FsZVVvTVRpdGxlIiwiY2hhcnRBbm5vdGF0aW9uIiwic2VwZXJhdG9yIiwidG9vbFRpcCIsInNjYWxlRmFjdG9yIiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJEYXRhUG9pbnQiLCJWYWx1ZUZvcm1hdCIsImZpeGVkSW50ZWdlciIsIk51bWJlckZvcm1hdCIsImdldEludGVnZXJJbnN0YW5jZSIsInN0eWxlIiwic2hvd1NjYWxlIiwic2hvcnRSZWZOdW1iZXIiLCJzY2FsZSIsImdldFNjYWxlIiwiVU9NRXhwIiwicGF0aEluTW9kZWwiLCJjb25zdGFudCIsInNjYWxlRXhwIiwiY29tcGlsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJ2aXN1YWxGaWx0ZXJGb3JtYXR0ZXIiLCJmb3JtYXRTY2FsZUFuZFVPTSIsImdldE1lYXN1cmVEaW1lbnNpb25UaXRsZSIsIm1lYXN1cmVMYWJlbCIsIm1lYXN1cmVQYXRoIiwiTWVhc3VyZXMiLCJEeW5hbWljTWVhc3VyZXMiLCJkaW1lbnNpb25QYXRoIiwiZGltZW5zaW9uTGFiZWwiLCJDb21tb24iLCJMYWJlbCIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJnZXRUb29sVGlwIiwicmVuZGVyTGluZUNoYXJ0IiwiY2hhcnRUeXBlIiwibWVhc3VyZURpbWVuc2lvblRvb2xUaXAiLCJlc2NhcGVTaW5nbGVRdW90ZXMiLCJzY2FsZVVPTVRvb2x0aXAiLCJfZ2V0VU9NIiwiVU9NT2JqZWN0UGF0aCIsImN1c3RvbURhdGEiLCJhZ2dyZWdhdGFibGVQcm9wZXJ0eVBhdGgiLCJVT01PYmplY3QiLCIkUGF0aCIsImVudGl0eVByb3BlcnRpZXMiLCJpc1NpbmdsZXRvbiIsInRhcmdldFR5cGUiLCJwcm9wZXJ0eUFubm90YXRpb25zIiwiZmluZCIsIm1lYXN1cmUiLCJJU09DdXJyZW5jeSIsIlVuaXQiLCJnZXRTY2FsZUZhY3RvciIsImdldFVvTVZpc2libGl0eSIsInNob3dFcnJvciIsImdldEluUGFyYW1ldGVyRmlsdGVyc0JpbmRpbmciLCJpblBhcmFtZXRlcnMiLCJwYXJ0cyIsInBhdGhzIiwiaW5QYXJhbWV0ZXIiLCJsb2NhbERhdGFQcm9wZXJ0eSIsImdldGZpbHRlckNvdW50QmluZGluZyIsImdldEludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzIiwidmlzdWFsRmlsdGVyIiwiaW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMiLCJpZCIsInNob3dFcnJvckV4cHJlc3Npb24iLCJlcnJvck1lc3NhZ2VFeHByZXNzaW9uIiwiZXJyb3JNZXNzYWdlVGl0bGVFeHByZXNzaW9uIiwiZGF0YVBvaW50QW5ub3RhdGlvbiIsImdldFBhcmFtZXRlcnMiLCJnZXRNZXRhTW9kZWwiLCJkaW1lbnNpb25UZXh0IiwiVGV4dCIsImFnZ3JlZ2F0aW9uQmluZGluZyIsInR5cGUiLCJhZ2dyZWdhdGVQcm9wZXJ0aWVzIiwic2NhbGVmYWN0b3IiLCJ1b20iLCJwYXJzZUN1c3RvbURhdGEiLCJpblBhcmFtZXRlckZpbHRlcnMiLCJzdHJpbmdpZmllZFBhcmFtZXRlcnMiLCJkaW1lbnNpb25Db250ZXh0IiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZGltZW5zaW9uT2JqZWN0IiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJnZXRQYXRoIiwiY2hhcnRMYWJlbCIsImdldFRleHRCaW5kaW5nIiwiZGlzcGxheWVkVmFsdWUiLCJjb2xvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZXJhY3RpdmVDaGFydEhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiwgUHJvcGVydHksIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlLCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQWdncmVnYXRlZFByb3BlcnR5LCBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BbmFseXRpY3NcIjtcbmltcG9ydCB0eXBlIHsgTGFiZWwsIFNvcnRPcmRlclR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHR5cGUge1xuXHRDaGFydCxcblx0RGF0YVBvaW50LFxuXHROdW1iZXJGb3JtYXQgYXMgTnVtYmVyRm9ybWF0VHlwZSxcblx0U2VsZWN0aW9uVmFyaWFudCxcblx0VmFsdWVDcml0aWNhbGl0eVR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IEpTVG9rZW5pemVyIGZyb20gXCJzYXAvYmFzZS91dGlsL0pTVG9rZW5pemVyXCI7XG5pbXBvcnQge1xuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Y29uc3RhbnQsXG5cdGZvcm1hdFJlc3VsdCxcblx0cGF0aEluTW9kZWwsXG5cdHR5cGUgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHR0eXBlIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBQYXJhbWV0ZXJUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvTGlzdFJlcG9ydC9WaXN1YWxGaWx0ZXJzXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBpc0VudGl0eVNldCwgaXNOYXZpZ2F0aW9uUHJvcGVydHksIGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBpc1NpbmdsZXRvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB7IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL2ZpbHRlcmJhci91dGlscy9WaXN1YWxGaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHsgY29uc3RyYWludHMsIGZvcm1hdE9wdGlvbnMgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyRmllbGRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyQ29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJIZWxwZXJcIjtcbmltcG9ydCB7IGdldEZpbHRlcnNDb25kaXRpb25zRnJvbVNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29sb3IgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IG1MaWJyYXJ5IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgTnVtYmVyRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvTnVtYmVyRm9ybWF0XCI7XG5pbXBvcnQgQ29uZGl0aW9uQ29udmVydGVyIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25Db252ZXJ0ZXJcIjtcbmltcG9ydCBUeXBlTWFwIGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL3Y0L1R5cGVNYXBcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBPRGF0YVV0aWxzIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0VGV4dEJpbmRpbmcgfSBmcm9tIFwiLi4vZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdmlzdWFsRmlsdGVyRm9ybWF0dGVyIGZyb20gXCIuLi9mb3JtYXR0ZXJzL1Zpc3VhbEZpbHRlckZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUgVmlzdWFsRmlsdGVyIGZyb20gXCIuL1Zpc3VhbEZpbHRlclwiO1xuXG50eXBlIE1lYXN1cmVUeXBlID0ge1xuXHR2YWx1ZT86IHN0cmluZztcblx0SVNPQ3VycmVuY3k/OiBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPjtcblx0VW5pdD86IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+O1xufTtcbmV4cG9ydCB0eXBlIEludGVyYWN0aXZlQ2hhcnRUeXBlID0ge1xuXHRjaGFydExhYmVsPzogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0YWdncmVnYXRpb25CaW5kaW5nPzogYWdncmVnYXRpb25CaW5kaW5nO1xuXHRlcnJvck1lc3NhZ2VUaXRsZUV4cHJlc3Npb24/OiBzdHJpbmc7XG5cdGVycm9yTWVzc2FnZUV4cHJlc3Npb24/OiBzdHJpbmc7XG5cdHNob3dFcnJvckV4cHJlc3Npb24/OiBzdHJpbmc7XG5cdGluUGFyYW1ldGVycz86IFBhcmFtZXRlclR5cGVbXTtcblx0ZGlzcGxheWVkVmFsdWU/OiBzdHJpbmc7XG5cdG1lYXN1cmU/OiBzdHJpbmc7XG5cdHN0cmluZ2lmaWVkUGFyYW1ldGVycz86IHN0cmluZ1tdO1xuXHRpblBhcmFtZXRlckZpbHRlcnM/OiBzdHJpbmc7XG5cdGNvbG9yPzogc3RyaW5nO1xuXHR1b20/OiBzdHJpbmcgfCBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTx1bmtub3duPiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRzY2FsZWZhY3Rvcj86IG51bWJlciB8IG9iamVjdDtcblx0c2VsZWN0aW9uVmFyaWFudD86IFNlbGVjdGlvblZhcmlhbnQ7XG59O1xuXG50eXBlIGFnZ3JlZ2F0aW9uQmluZGluZyA9IHtcblx0cGF0aDogc3RyaW5nO1xuXHR0ZW1wbGF0ZVNoYXJlYWJsZTogYm9vbGVhbjtcblx0c3VzcGVuZGVkOiBib29sZWFuO1xuXHRmaWx0ZXJzOiBGaWx0ZXJbXTtcblx0cGFyYW1ldGVyczoge1xuXHRcdCQkYWdncmVnYXRpb246IHtcblx0XHRcdGFnZ3JlZ2F0ZTogeyBbeDogc3RyaW5nXToge30gfCB7IHVuaXQ6IHN0cmluZyB9IHwgeyBuYW1lOiBzdHJpbmc7IHdpdGg6IHN0cmluZyB9IHwgdW5kZWZpbmVkIH07XG5cdFx0XHRncm91cDogeyBbeDogc3RyaW5nXTogeyBhZGRpdGlvbmFsbHk6IHN0cmluZ1tdIH0gfCB7IGFkZGl0aW9uYWxseTogdW5kZWZpbmVkIH0gfTtcblx0XHR9O1xuXHRcdCRvcmRlcmJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdH07XG59O1xuXG5jb25zdCBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyID0ge1xuXHRnZXRDaGFydERpc3BsYXllZFZhbHVlOiBmdW5jdGlvbiAodmFsdWU6IHN0cmluZywgdmFsdWVGb3JtYXQ/OiBOdW1iZXJGb3JtYXRUeXBlLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaW5mb1BhdGggPSBnZW5lcmF0ZShbbWV0YVBhdGhdKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0XCJ7cGFydHM6W3twYXRoOidcIiArXG5cdFx0XHR2YWx1ZSArXG5cdFx0XHRcIicsdHlwZTonc2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGVjaW1hbCcsIGNvbnN0cmFpbnRzOnsnbnVsbGFibGUnOmZhbHNlfX1cIiArXG5cdFx0XHQodmFsdWVGb3JtYXQgJiYgdmFsdWVGb3JtYXQuU2NhbGVGYWN0b3Jcblx0XHRcdFx0PyBcIix7dmFsdWU6J1wiICsgdmFsdWVGb3JtYXQuU2NhbGVGYWN0b3IudmFsdWVPZigpICsgXCInfVwiXG5cdFx0XHRcdDogXCIse3BhdGg6J2ludGVybmFsPnNjYWxlZmFjdG9yTnVtYmVyL1wiICsgaW5mb1BhdGggKyBcIid9XCIpICtcblx0XHRcdCh2YWx1ZUZvcm1hdCAmJiB2YWx1ZUZvcm1hdC5OdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHNcblx0XHRcdFx0PyBcIix7dmFsdWU6J1wiICsgdmFsdWVGb3JtYXQuTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzICsgXCInfVwiXG5cdFx0XHRcdDogXCIse3ZhbHVlOicwJ31cIikgK1xuXHRcdFx0XCIse3BhdGg6J2ludGVybmFsPmN1cnJlbmN5L1wiICtcblx0XHRcdGluZm9QYXRoICtcblx0XHRcdFwiJ31cIiArXG5cdFx0XHRcIix7cGF0aDonXCIgK1xuXHRcdFx0dmFsdWUgK1xuXHRcdFx0XCInLHR5cGU6J3NhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZycsIGNvbnN0cmFpbnRzOnsnbnVsbGFibGUnOmZhbHNlfX1cIiArXG5cdFx0XHRcIl0sIGZvcm1hdHRlcjonLl9mb3JtYXR0ZXJzLlZpc3VhbEZpbHRlclJ1bnRpbWUuc2NhbGVWaXN1YWxGaWx0ZXJWYWx1ZSd9XCJcblx0XHQpOyAvLysgc1R5cGUuc3BsaXQoJyMnKS5sZW5ndGggPyBzVHlwZS5zcGxpdCgnIycpWzFdIDogJ0RlY2ltYWwnICsgXCJ9XCI7XG5cdH0sXG5cdGdldENoYXJ0VmFsdWU6IGZ1bmN0aW9uICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gXCJ7cGF0aDonXCIgKyB2YWx1ZSArIFwiJyx0eXBlOidzYXAudWkubW9kZWwub2RhdGEudHlwZS5EZWNpbWFsJywgY29uc3RyYWludHM6eydudWxsYWJsZSc6ZmFsc2V9fVwiO1xuXHR9LFxuXHRfZ2V0Q29sbGVjdGlvbk5hbWU6IGZ1bmN0aW9uIChcblx0XHRjb2xsZWN0aW9uOiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4gfCB1bmRlZmluZWQsXG5cdFx0Y29udGV4dFBhdGg6IHN0cmluZyxcblx0XHRwYXJhbWV0ZXJzPzogQXJyYXk8c3RyaW5nPlxuXHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25PYmplY3QgPSBjb2xsZWN0aW9uPy50YXJnZXRPYmplY3Q7XG5cdFx0aWYgKGlzTmF2aWdhdGlvblByb3BlcnR5KGNvbGxlY3Rpb25PYmplY3QpKSB7XG5cdFx0XHRyZXR1cm4gcGFyYW1ldGVycyA/IGNvbnRleHRQYXRoIDogY29sbGVjdGlvbk9iamVjdC5uYW1lO1xuXHRcdH0gZWxzZSBpZiAoaXNFbnRpdHlTZXQoY29sbGVjdGlvbk9iamVjdCkpIHtcblx0XHRcdHJldHVybiBcIi9cIiArIGNvbGxlY3Rpb25PYmplY3QubmFtZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25PYmplY3QhLm5hbWU7XG5cdFx0fVxuXHR9LFxuXHRfZ2V0QmluZGluZ1BhdGhGb3JQYXJhbWV0ZXJzOiBmdW5jdGlvbiAoXG5cdFx0ZmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPixcblx0XHRtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkLFxuXHRcdGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsXG5cdFx0cGFyYW1ldGVyczogQXJyYXk8c3RyaW5nPixcblx0XHRlbnRpdHlTZXRQYXRoOiBzdHJpbmdcblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBwYXJhbXMgPSBbXTtcblx0XHRjb25zdCBjb252ZXJ0ZWRGaWx0ZXJDb25kaXRpb25zID0gVmlzdWFsRmlsdGVyVXRpbHMuY29udmVydEZpbHRlckNvbmRpb25zKGZpbHRlckNvbmRpdGlvbnMpO1xuXHRcdGNvbnN0IHBhcmFtZXRlclByb3BlcnRpZXMgPSBDb21tb25VdGlscy5nZXRQYXJhbWV0ZXJJbmZvKFxuXHRcdFx0bWV0YU1vZGVsIGFzIHVua25vd24gYXMgT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRjb2xsZWN0aW9uTmFtZVxuXHRcdCkucGFyYW1ldGVyUHJvcGVydGllcztcblx0XHRpZiAocGFyYW1ldGVyUHJvcGVydGllcykge1xuXHRcdFx0Zm9yIChjb25zdCBpIGluIHBhcmFtZXRlcnMpIHtcblx0XHRcdFx0Y29uc3QgcGFyYW1ldGVyID0gcGFyYW1ldGVyc1tpXTtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSBwYXJhbWV0ZXJQcm9wZXJ0aWVzW3BhcmFtZXRlcl07XG5cdFx0XHRcdGNvbnN0IGVudGl0eVBhdGggPSBlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKVsxXTtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlDb250ZXh0ID0gbWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChgLyR7ZW50aXR5UGF0aH0vJHtwYXJhbWV0ZXJ9YCk7XG5cdFx0XHRcdGxldCB0eXBlQ29uZmlnO1xuXHRcdFx0XHRpZiAocHJvcGVydHlDb250ZXh0KSB7XG5cdFx0XHRcdFx0dHlwZUNvbmZpZyA9IFR5cGVNYXAuZ2V0VHlwZUNvbmZpZyhcblx0XHRcdFx0XHRcdHByb3BlcnR5LiRUeXBlLFxuXHRcdFx0XHRcdFx0SlNUb2tlbml6ZXIucGFyc2VKUyhmb3JtYXRPcHRpb25zKHByb3BlcnR5LCB7IGNvbnRleHQ6IHByb3BlcnR5Q29udGV4dCB9KSB8fCBcInt9XCIpLFxuXHRcdFx0XHRcdFx0SlNUb2tlbml6ZXIucGFyc2VKUyhjb25zdHJhaW50cyhwcm9wZXJ0eSwgeyBjb250ZXh0OiBwcm9wZXJ0eUNvbnRleHQgfSkgfHwgXCJ7fVwiKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgY29uZGl0aW9uID0gY29udmVydGVkRmlsdGVyQ29uZGl0aW9uc1twYXJhbWV0ZXJdO1xuXHRcdFx0XHRjb25zdCBjb25kaXRpb25JbnRlcm5hbCA9IGNvbmRpdGlvbiA/IGNvbmRpdGlvblswXSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKGNvbmRpdGlvbkludGVybmFsKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWxQYXJhbWV0ZXJDb25kaXRpb24gPSBDb25kaXRpb25Db252ZXJ0ZXIudG9UeXBlKGNvbmRpdGlvbkludGVybmFsLCB0eXBlQ29uZmlnLCBUeXBlTWFwKTtcblx0XHRcdFx0XHRjb25zdCBlZG1UeXBlID0gcHJvcGVydHkuJFR5cGU7XG5cdFx0XHRcdFx0bGV0IHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KE9EYXRhVXRpbHMuZm9ybWF0TGl0ZXJhbChpbnRlcm5hbFBhcmFtZXRlckNvbmRpdGlvbi52YWx1ZXNbMF0sIGVkbVR5cGUpKTtcblx0XHRcdFx0XHRwYXJhbXMucHVzaChgJHtwYXJhbWV0ZXJ9PSR7dmFsdWV9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBwYXJhbWV0ZXJFbnRpdHlTZXQgPSBjb2xsZWN0aW9uTmFtZS5zbGljZSgwLCBjb2xsZWN0aW9uTmFtZS5sYXN0SW5kZXhPZihcIi9cIikpO1xuXHRcdGNvbnN0IHRhcmdldE5hdmlnYXRpb24gPSBjb2xsZWN0aW9uTmFtZS5zdWJzdHJpbmcoY29sbGVjdGlvbk5hbWUubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG5cdFx0Ly8gY3JlYXRlIHBhcmFtZXRlciBjb250ZXh0XG5cdFx0cmV0dXJuIGAke3BhcmFtZXRlckVudGl0eVNldH0oJHtwYXJhbXMudG9TdHJpbmcoKX0pLyR7dGFyZ2V0TmF2aWdhdGlvbn1gO1xuXHR9LFxuXHRfZ2V0VU9NQWdncmVnYXRpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoXG5cdFx0Y3VzdG9tQWdncmVnYXRlPzogYm9vbGVhbixcblx0XHRVb01IYXNDdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuLFxuXHRcdFVPTT86IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPHVua25vd24+IHwgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdFx0YWdncmVnYXRpb24/OiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlXG5cdCk6IHtcblx0XHRhZ2dyZWdhdGlvbkV4cHJlc3Npb246IHsgdW5pdDogc3RyaW5nIH0gfCB7fSB8IHsgbmFtZTogc3RyaW5nOyB3aXRoOiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcblx0XHRVT01FeHByZXNzaW9uOiB7IFt4OiBzdHJpbmddOiB7fSB9IHwgdW5kZWZpbmVkIHwgc3RyaW5nO1xuXHR9IHtcblx0XHRsZXQgYWdncmVnYXRpb25FeHByZXNzaW9uLCBVT01FeHByZXNzaW9uO1xuXHRcdGNvbnN0IHBhdGggPSBVT00gJiYgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oVU9NKSAmJiBVT00ucGF0aDtcblx0XHRpZiAoY3VzdG9tQWdncmVnYXRlKSB7XG5cdFx0XHQvL2N1c3RvbSBhZ2dyZWdhdGUgZm9yIGEgY3VycmVuY3kgb3IgdW5pdCBvZiBtZWFzdXJlIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBhZ2dyZWdhdGFibGUgcHJvcGVydHlcblx0XHRcdGlmIChVb01IYXNDdXN0b21BZ2dyZWdhdGUpIHtcblx0XHRcdFx0YWdncmVnYXRpb25FeHByZXNzaW9uID0gcGF0aCA/IHsgdW5pdDogcGF0aCB9IDoge307XG5cdFx0XHRcdFVPTUV4cHJlc3Npb24gPSB7fTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFnZ3JlZ2F0aW9uRXhwcmVzc2lvbiA9IHt9O1xuXHRcdFx0XHRVT01FeHByZXNzaW9uID0gcGF0aCA/IHsgW3BhdGhdOiB7fSB9IDoge307XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdGFnZ3JlZ2F0aW9uICYmXG5cdFx0XHRhZ2dyZWdhdGlvbi5BZ2dyZWdhdGFibGVQcm9wZXJ0eSAmJlxuXHRcdFx0YWdncmVnYXRpb24uQWdncmVnYXRhYmxlUHJvcGVydHkudmFsdWUgJiZcblx0XHRcdGFnZ3JlZ2F0aW9uLkFnZ3JlZ2F0aW9uTWV0aG9kXG5cdFx0KSB7XG5cdFx0XHRhZ2dyZWdhdGlvbkV4cHJlc3Npb24gPSB7IG5hbWU6IGFnZ3JlZ2F0aW9uLkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlLCB3aXRoOiBhZ2dyZWdhdGlvbi5BZ2dyZWdhdGlvbk1ldGhvZCB9O1xuXHRcdFx0VU9NRXhwcmVzc2lvbiA9IHBhdGggPyB7IFtwYXRoXToge30gfSA6IHt9O1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHRhZ2dyZWdhdGlvbkV4cHJlc3Npb246IGFnZ3JlZ2F0aW9uRXhwcmVzc2lvbixcblx0XHRcdFVPTUV4cHJlc3Npb246IFVPTUV4cHJlc3Npb25cblx0XHR9O1xuXHR9LFxuXHRnZXRBZ2dyZWdhdGlvbkJpbmRpbmc6IGZ1bmN0aW9uIChcblx0XHRjaGFydEFubm90YXRpb25zOiBDaGFydCxcblx0XHRjb2xsZWN0aW9uOiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4gfCB1bmRlZmluZWQsXG5cdFx0Y29udGV4dFBhdGg6IHN0cmluZyxcblx0XHR0ZXh0QXNzb2NpYXRpb24/OiBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPixcblx0XHRkaW1lbnNpb25UeXBlPzogc3RyaW5nLFxuXHRcdHNvcnRPcmRlcj86IFNvcnRPcmRlclR5cGVbXSxcblx0XHRzZWxlY3Rpb25WYXJpYW50PzogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRjdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuLFxuXHRcdGFnZ3JlZ2F0aW9uPzogQWdncmVnYXRlZFByb3BlcnR5VHlwZSxcblx0XHRVb01IYXNDdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuLFxuXHRcdHBhcmFtZXRlcnM/OiBBcnJheTxzdHJpbmc+LFxuXHRcdGZpbHRlckJhckVudGl0eVR5cGU/OiBzdHJpbmcsXG5cdFx0ZHJhZnRTdXBwb3J0ZWQ/OiBib29sZWFuLFxuXHRcdGNoYXJ0TWVhc3VyZT86IHN0cmluZyxcblx0XHRtZXRhTW9kZWw/OiBPRGF0YU1ldGFNb2RlbFxuXHQpOiBhZ2dyZWdhdGlvbkJpbmRpbmcge1xuXHRcdGNvbnN0IHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gc2VsZWN0aW9uVmFyaWFudDtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gZmlsdGVyQmFyRW50aXR5VHlwZTtcblx0XHRjb25zdCBlbnRpdHlTZXRQYXRoID0gY29udGV4dFBhdGg7XG5cdFx0Y29uc3QgZGltZW5zaW9uID0gY2hhcnRBbm5vdGF0aW9ucy5EaW1lbnNpb25zWzBdLnZhbHVlO1xuXHRcdGNvbnN0IGZpbHRlcnM6IEZpbHRlcltdID0gW107XG5cdFx0bGV0IGZpbHRlckNvbmRpdGlvbnM7XG5cdFx0bGV0IGNvbGxlY3Rpb25OYW1lID0gdGhpcy5fZ2V0Q29sbGVjdGlvbk5hbWUoY29sbGVjdGlvbiwgY29udGV4dFBhdGgsIHBhcmFtZXRlcnMpO1xuXHRcdGNvbnN0IFVPTTogUHJvcGVydHlBbm5vdGF0aW9uVmFsdWU8dW5rbm93bj4gfCBzdHJpbmcgfCB1bmRlZmluZWQgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0VW9NKFxuXHRcdFx0Y2hhcnRBbm5vdGF0aW9ucyxcblx0XHRcdGNvbGxlY3Rpb24sXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRjdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHRhZ2dyZWdhdGlvblxuXHRcdCk7XG5cdFx0aWYgKGRyYWZ0U3VwcG9ydGVkKSB7XG5cdFx0XHRmaWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7IG9wZXJhdG9yOiBcIkVRXCIsIHZhbHVlMTogXCJ0cnVlXCIsIHZhbHVlMjogbnVsbCwgcGF0aDogXCJJc0FjdGl2ZUVudGl0eVwiIH0pKTtcblx0XHR9XG5cdFx0aWYgKHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uKSB7XG5cdFx0XHRmaWx0ZXJDb25kaXRpb25zID0gZ2V0RmlsdGVyc0NvbmRpdGlvbnNGcm9tU2VsZWN0aW9uVmFyaWFudChcblx0XHRcdFx0ZW50aXR5U2V0UGF0aCxcblx0XHRcdFx0bWV0YU1vZGVsIGFzIHVua25vd24gYXMgT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRcdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uLFxuXHRcdFx0XHRWaXN1YWxGaWx0ZXJVdGlscy5nZXRDdXN0b21Db25kaXRpb25zLmJpbmQoVmlzdWFsRmlsdGVyVXRpbHMpXG5cdFx0XHQpO1xuXHRcdFx0Zm9yIChjb25zdCBwYXRoIGluIGZpbHRlckNvbmRpdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgY29uZGl0aW9ucyA9IGZpbHRlckNvbmRpdGlvbnNbcGF0aF07XG5cdFx0XHRcdGNvbmRpdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoY29uZGl0aW9uOiBGaWx0ZXJDb25kaXRpb25zKSB7XG5cdFx0XHRcdFx0aWYgKCFjb25kaXRpb24uaXNQYXJhbWV0ZXIpIHtcblx0XHRcdFx0XHRcdGZpbHRlcnMucHVzaChcblx0XHRcdFx0XHRcdFx0bmV3IEZpbHRlcih7XG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IGNvbmRpdGlvbi5vcGVyYXRvciBhcyBGaWx0ZXJPcGVyYXRvcixcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTE6IGNvbmRpdGlvbi52YWx1ZTEsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWUyOiBjb25kaXRpb24udmFsdWUyLFxuXHRcdFx0XHRcdFx0XHRcdHBhdGg6IGNvbmRpdGlvbi5wYXRoXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChlbnRpdHlUeXBlICE9PSBgJHtjb2xsZWN0aW9uTmFtZX0vYCAmJiBwYXJhbWV0ZXJzICYmIHBhcmFtZXRlcnMubGVuZ3RoICYmIGZpbHRlckNvbmRpdGlvbnMpIHtcblx0XHRcdGNvbnN0IGJpbmRpbmdQYXRoID0gdGhpcy5fZ2V0QmluZGluZ1BhdGhGb3JQYXJhbWV0ZXJzKGZpbHRlckNvbmRpdGlvbnMsIG1ldGFNb2RlbCwgY29sbGVjdGlvbk5hbWUsIHBhcmFtZXRlcnMsIGVudGl0eVNldFBhdGgpO1xuXHRcdFx0Y29sbGVjdGlvbk5hbWUgPSBiaW5kaW5nUGF0aDtcblx0XHR9XG5cdFx0Y29uc3QgVU9NQWdncmVnYXRpb25FeHByZXNzaW9uID0gdGhpcy5fZ2V0VU9NQWdncmVnYXRpb25FeHByZXNzaW9uKGN1c3RvbUFnZ3JlZ2F0ZSwgVW9NSGFzQ3VzdG9tQWdncmVnYXRlLCBVT00sIGFnZ3JlZ2F0aW9uKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbkV4cHJlc3Npb24gPSBVT01BZ2dyZWdhdGlvbkV4cHJlc3Npb24uYWdncmVnYXRpb25FeHByZXNzaW9uO1xuXHRcdGNvbnN0IFVPTUV4cHJlc3Npb24gPSBVT01BZ2dyZWdhdGlvbkV4cHJlc3Npb24uVU9NRXhwcmVzc2lvbjtcblx0XHRjb25zdCB0ZXh0QXNzb2NpYXRpb25FeHByZXNzaW9uID0gdGV4dEFzc29jaWF0aW9uID8geyBhZGRpdGlvbmFsbHk6IFt0ZXh0QXNzb2NpYXRpb24ucGF0aF0gfSA6IHt9O1xuXHRcdGNvbnN0IGZpbmFscGFyYW1ldGVycyA9IHtcblx0XHRcdC4uLnRoaXMuZ2V0U29ydE9yZGVyKGNoYXJ0QW5ub3RhdGlvbnMsIGRpbWVuc2lvblR5cGUsIHNvcnRPcmRlciwgY2hhcnRNZWFzdXJlKSxcblx0XHRcdCQkYWdncmVnYXRpb246IHtcblx0XHRcdFx0YWdncmVnYXRlOiB7XG5cdFx0XHRcdFx0W2NoYXJ0TWVhc3VyZSBhcyBzdHJpbmddOiBhZ2dyZWdhdGlvbkV4cHJlc3Npb25cblx0XHRcdFx0fSxcblx0XHRcdFx0Z3JvdXA6IHtcblx0XHRcdFx0XHRbZGltZW5zaW9uXTogeyAuLi50ZXh0QXNzb2NpYXRpb25FeHByZXNzaW9uIH0sXG5cdFx0XHRcdFx0Li4uKFVPTUV4cHJlc3Npb24gYXMgb2JqZWN0KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cGF0aDogY29sbGVjdGlvbk5hbWUsXG5cdFx0XHR0ZW1wbGF0ZVNoYXJlYWJsZTogdHJ1ZSxcblx0XHRcdHN1c3BlbmRlZDogdHJ1ZSxcblx0XHRcdGZpbHRlcnM6IGZpbHRlcnMsXG5cdFx0XHRwYXJhbWV0ZXJzOiBmaW5hbHBhcmFtZXRlcnMsXG5cdFx0XHQuLi4oSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRNYXhJdGVtcyhjaGFydEFubm90YXRpb25zKSBhcyBvYmplY3QpXG5cdFx0fTtcblx0fSxcblxuXHRfZ2V0T3JkZXJFeHByZXNzaW9uRnJvbU1lYXN1cmU6IGZ1bmN0aW9uIChzb3J0T3JkZXI/OiBTb3J0T3JkZXJUeXBlW10sIGNoYXJ0TWVhc3VyZT86IHN0cmluZyk6IHsgJG9yZGVyYnk6IHN0cmluZyB9IHtcblx0XHRsZXQgc29ydFByb3BlcnR5TmFtZTtcblx0XHRpZiAoc29ydE9yZGVyICYmIHNvcnRPcmRlci5sZW5ndGgpIHtcblx0XHRcdGlmIChzb3J0T3JkZXJbMF0uRHluYW1pY1Byb3BlcnR5KSB7XG5cdFx0XHRcdHNvcnRQcm9wZXJ0eU5hbWUgPSAoc29ydE9yZGVyWzBdLkR5bmFtaWNQcm9wZXJ0eS4kdGFyZ2V0IGFzIEFnZ3JlZ2F0ZWRQcm9wZXJ0eSk/Lk5hbWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzb3J0UHJvcGVydHlOYW1lID0gc29ydE9yZGVyWzBdLlByb3BlcnR5Py52YWx1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChzb3J0UHJvcGVydHlOYW1lID09PSBjaGFydE1lYXN1cmUpIHtcblx0XHRcdFx0cmV0dXJuIHsgJG9yZGVyYnk6IGNoYXJ0TWVhc3VyZSArIChzb3J0T3JkZXJbMF0uRGVzY2VuZGluZyA/IFwiIGRlc2NcIiA6IFwiXCIpIH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4geyAkb3JkZXJieTogY2hhcnRNZWFzdXJlICsgXCIgZGVzY1wiIH07XG5cdFx0fVxuXHRcdHJldHVybiB7ICRvcmRlcmJ5OiBjaGFydE1lYXN1cmUgKyBcIiBkZXNjXCIgfTtcblx0fSxcblxuXHRnZXRTb3J0T3JkZXI6IGZ1bmN0aW9uIChcblx0XHRjaGFydEFubm90YXRpb25zOiBDaGFydCxcblx0XHRkaW1lbnNpb25UeXBlPzogc3RyaW5nLFxuXHRcdHNvcnRPcmRlcj86IFNvcnRPcmRlclR5cGVbXSxcblx0XHRjaGFydE1lYXN1cmU/OiBzdHJpbmdcblx0KTogeyAkb3JkZXJieTogc3RyaW5nIHwgdW5kZWZpbmVkIH0ge1xuXHRcdGlmIChjaGFydEFubm90YXRpb25zLkNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvRG9udXRcIiB8fCBjaGFydEFubm90YXRpb25zLkNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvQmFyXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLl9nZXRPcmRlckV4cHJlc3Npb25Gcm9tTWVhc3VyZShzb3J0T3JkZXIsIGNoYXJ0TWVhc3VyZSk7XG5cdFx0fSBlbHNlIGlmIChkaW1lbnNpb25UeXBlID09PSBcIkVkbS5EYXRlXCIgfHwgZGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uVGltZVwiIHx8IGRpbWVuc2lvblR5cGUgPT09IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIpIHtcblx0XHRcdHJldHVybiB7ICRvcmRlcmJ5OiBjaGFydEFubm90YXRpb25zLkRpbWVuc2lvbnNbMF0udmFsdWUgfTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0c29ydE9yZGVyICYmXG5cdFx0XHRzb3J0T3JkZXIubGVuZ3RoICYmXG5cdFx0XHQoc29ydE9yZGVyWzBdLlByb3BlcnR5Py4kdGFyZ2V0IGFzIHVua25vd24gYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pPy5wYXRoID09PSBjaGFydEFubm90YXRpb25zLkRpbWVuc2lvbnNbMF0udmFsdWVcblx0XHQpIHtcblx0XHRcdHJldHVybiB7ICRvcmRlcmJ5OiBzb3J0T3JkZXJbMF0uUHJvcGVydHk/LiR0YXJnZXQ/Lm5hbWUgKyAoc29ydE9yZGVyWzBdLkRlc2NlbmRpbmcgPyBcImRlc2MnXCIgOiBcIidcIikgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHsgJG9yZGVyYnk6IGNoYXJ0QW5ub3RhdGlvbnMuRGltZW5zaW9uc1swXS4kdGFyZ2V0Py5uYW1lIH07XG5cdFx0fVxuXHR9LFxuXG5cdGdldE1heEl0ZW1zOiBmdW5jdGlvbiAoY2hhcnRBbm5vdGF0aW9uczogQ2hhcnQpOiBzdHJpbmcgfCB7IHN0YXJ0SW5kZXg6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXIgfSB7XG5cdFx0aWYgKGNoYXJ0QW5ub3RhdGlvbnMuQ2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9CYXJcIikge1xuXHRcdFx0cmV0dXJuIHsgc3RhcnRJbmRleDogMCwgbGVuZ3RoOiAzIH07XG5cdFx0fSBlbHNlIGlmIChjaGFydEFubm90YXRpb25zLkNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiKSB7XG5cdFx0XHRyZXR1cm4geyBzdGFydEluZGV4OiAwLCBsZW5ndGg6IDYgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHR9LFxuXG5cdGdldENvbG9yQmluZGluZzogZnVuY3Rpb24gKGRhdGFQb2ludDogRGF0YVBvaW50LCBkaW1lbnNpb246IFByb3BlcnR5UGF0aCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdmFsdWVDcml0aWNhbGl0eSA9IGRpbWVuc2lvbj8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5WYWx1ZUNyaXRpY2FsaXR5O1xuXHRcdGlmIChkYXRhUG9pbnQ/LkNyaXRpY2FsaXR5KSB7XG5cdFx0XHRyZXR1cm4gYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQoZGF0YVBvaW50KTtcblx0XHR9IGVsc2UgaWYgKGRhdGFQb2ludD8uQ3JpdGljYWxpdHlDYWxjdWxhdGlvbikge1xuXHRcdFx0Y29uc3Qgb0RpcmVjdGlvbiA9IGRhdGFQb2ludC5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkltcHJvdmVtZW50RGlyZWN0aW9uO1xuXHRcdFx0Y29uc3Qgb0RhdGFQb2ludFZhbHVlID0gZGF0YVBvaW50LlZhbHVlO1xuXHRcdFx0Y29uc3Qgb0RldmlhdGlvblJhbmdlTG93VmFsdWUgPSBkYXRhUG9pbnQuQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5EZXZpYXRpb25SYW5nZUxvd1ZhbHVlLnZhbHVlT2YoKTtcblx0XHRcdGNvbnN0IG9Ub2xlcmFuY2VSYW5nZUxvd1ZhbHVlID0gZGF0YVBvaW50LkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uVG9sZXJhbmNlUmFuZ2VMb3dWYWx1ZS52YWx1ZU9mKCk7XG5cdFx0XHRjb25zdCBvQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUgPSBkYXRhUG9pbnQuQ3JpdGljYWxpdHlDYWxjdWxhdGlvbi5BY2NlcHRhbmNlUmFuZ2VMb3dWYWx1ZS52YWx1ZU9mKCk7XG5cdFx0XHRjb25zdCBvQWNjZXB0YW5jZVJhbmdlSGlnaFZhbHVlID0gZGF0YVBvaW50LkNyaXRpY2FsaXR5Q2FsY3VsYXRpb24uQWNjZXB0YW5jZVJhbmdlSGlnaFZhbHVlLnZhbHVlT2YoKTtcblx0XHRcdGNvbnN0IG9Ub2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSA9IGRhdGFQb2ludC5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLlRvbGVyYW5jZVJhbmdlSGlnaFZhbHVlLnZhbHVlT2YoKTtcblx0XHRcdGNvbnN0IG9EZXZpYXRpb25SYW5nZUhpZ2hWYWx1ZSA9IGRhdGFQb2ludC5Dcml0aWNhbGl0eUNhbGN1bGF0aW9uLkRldmlhdGlvblJhbmdlSGlnaFZhbHVlLnZhbHVlT2YoKTtcblx0XHRcdHJldHVybiBDb21tb25IZWxwZXIuZ2V0Q3JpdGljYWxpdHlDYWxjdWxhdGlvbkJpbmRpbmcoXG5cdFx0XHRcdG9EaXJlY3Rpb24sXG5cdFx0XHRcdG9EYXRhUG9pbnRWYWx1ZSxcblx0XHRcdFx0b0RldmlhdGlvblJhbmdlTG93VmFsdWUsXG5cdFx0XHRcdG9Ub2xlcmFuY2VSYW5nZUxvd1ZhbHVlLFxuXHRcdFx0XHRvQWNjZXB0YW5jZVJhbmdlTG93VmFsdWUsXG5cdFx0XHRcdG9BY2NlcHRhbmNlUmFuZ2VIaWdoVmFsdWUsXG5cdFx0XHRcdG9Ub2xlcmFuY2VSYW5nZUhpZ2hWYWx1ZSxcblx0XHRcdFx0b0RldmlhdGlvblJhbmdlSGlnaFZhbHVlXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSBpZiAodmFsdWVDcml0aWNhbGl0eSAmJiB2YWx1ZUNyaXRpY2FsaXR5Lmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0VmFsdWVDcml0aWNhbGl0eShkaW1lbnNpb24udmFsdWUsIHZhbHVlQ3JpdGljYWxpdHkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fSxcblx0Z2V0VmFsdWVDcml0aWNhbGl0eTogZnVuY3Rpb24gKGRpbWVuc2lvbjogc3RyaW5nLCB2YWx1ZUNyaXRpY2FsaXR5OiBBcnJheTxWYWx1ZUNyaXRpY2FsaXR5VHlwZT4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGxldCByZXN1bHQ7XG5cdFx0Y29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGlmICh2YWx1ZUNyaXRpY2FsaXR5ICYmIHZhbHVlQ3JpdGljYWxpdHkubGVuZ3RoID4gMCkge1xuXHRcdFx0dmFsdWVDcml0aWNhbGl0eS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZUNyaXRpY2FsaXR5VHlwZTogVmFsdWVDcml0aWNhbGl0eVR5cGUpIHtcblx0XHRcdFx0aWYgKHZhbHVlQ3JpdGljYWxpdHlUeXBlLlZhbHVlICYmIHZhbHVlQ3JpdGljYWxpdHlUeXBlLkNyaXRpY2FsaXR5KSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsdWUgPVxuXHRcdFx0XHRcdFx0XCIke1wiICtcblx0XHRcdFx0XHRcdGRpbWVuc2lvbiArXG5cdFx0XHRcdFx0XHRcIn0gPT09ICdcIiArXG5cdFx0XHRcdFx0XHR2YWx1ZUNyaXRpY2FsaXR5VHlwZS5WYWx1ZSArXG5cdFx0XHRcdFx0XHRcIicgPyAnXCIgK1xuXHRcdFx0XHRcdFx0SW50ZXJhY3RpdmVDaGFydEhlbHBlci5fZ2V0Q3JpdGljYWxpdHlGcm9tRW51bSh2YWx1ZUNyaXRpY2FsaXR5VHlwZS5Dcml0aWNhbGl0eSkgK1xuXHRcdFx0XHRcdFx0XCInXCI7XG5cdFx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJlc3VsdCA9IHZhbHVlcy5sZW5ndGggPiAwICYmIHZhbHVlcy5qb2luKFwiIDogXCIpICsgXCIgOiB1bmRlZmluZWRcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdCA/IFwiez0gXCIgKyByZXN1bHQgKyBcIiB9XCIgOiB1bmRlZmluZWQ7XG5cdH0sXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNyaXRpY2FsaXR5IGluZGljYXRvciBmcm9tIGFubm90YXRpb25zIGlmIGNyaXRpY2FsaXR5IGlzIEVudW1NZW1iZXIuXG5cdCAqIEBwYXJhbSBjcml0aWNhbGl0eSBDcml0aWNhbGl0eSBwcm92aWRlZCBpbiB0aGUgYW5ub3RhdGlvbnNcblx0ICogQHJldHVybnMgUmV0dXJuIHRoZSBpbmRpY2F0b3IgZm9yIGNyaXRpY2FsaXR5XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRfZ2V0Q3JpdGljYWxpdHlGcm9tRW51bTogZnVuY3Rpb24gKGNyaXRpY2FsaXR5OiBzdHJpbmcpOiBWYWx1ZUNvbG9yIHtcblx0XHRjb25zdCB2YWx1ZUNvbG9yID0gbUxpYnJhcnkuVmFsdWVDb2xvcjtcblx0XHRsZXQgaW5kaWNhdG9yO1xuXHRcdGlmIChjcml0aWNhbGl0eSA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikge1xuXHRcdFx0aW5kaWNhdG9yID0gdmFsdWVDb2xvci5FcnJvcjtcblx0XHR9IGVsc2UgaWYgKGNyaXRpY2FsaXR5ID09PSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSB7XG5cdFx0XHRpbmRpY2F0b3IgPSB2YWx1ZUNvbG9yLkdvb2Q7XG5cdFx0fSBlbHNlIGlmIChjcml0aWNhbGl0eSA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikge1xuXHRcdFx0aW5kaWNhdG9yID0gdmFsdWVDb2xvci5Dcml0aWNhbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aW5kaWNhdG9yID0gdmFsdWVDb2xvci5OZXV0cmFsO1xuXHRcdH1cblx0XHRyZXR1cm4gaW5kaWNhdG9yO1xuXHR9LFxuXHRnZXRTY2FsZVVvTVRpdGxlOiBmdW5jdGlvbiAoXG5cdFx0Y2hhcnRBbm5vdGF0aW9uPzogQ2hhcnQsXG5cdFx0Y29sbGVjdGlvbj86IERhdGFNb2RlbE9iamVjdFBhdGg8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0XHRtZXRhUGF0aD86IHN0cmluZyxcblx0XHRjdXN0b21BZ2dyZWdhdGU/OiBib29sZWFuLFxuXHRcdGFnZ3JlZ2F0aW9uPzogQWdncmVnYXRlZFByb3BlcnR5VHlwZSxcblx0XHRzZXBlcmF0b3I/OiBzdHJpbmcsXG5cdFx0dG9vbFRpcD86IGJvb2xlYW5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBzY2FsZUZhY3RvciA9IGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXNcblx0XHRcdD8gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVBdHRyaWJ1dGVzWzBdPy5EYXRhUG9pbnQ/LiR0YXJnZXQ/LlZhbHVlRm9ybWF0Py5TY2FsZUZhY3Rvcj8udmFsdWVPZigpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBpbmZvUGF0aCA9IGdlbmVyYXRlKFttZXRhUGF0aF0pO1xuXHRcdGNvbnN0IGZpeGVkSW50ZWdlciA9IE51bWJlckZvcm1hdC5nZXRJbnRlZ2VySW5zdGFuY2Uoe1xuXHRcdFx0c3R5bGU6IFwic2hvcnRcIixcblx0XHRcdHNob3dTY2FsZTogZmFsc2UsXG5cdFx0XHRzaG9ydFJlZk51bWJlcjogc2NhbGVGYWN0b3IgYXMgbnVtYmVyXG5cdFx0fSk7XG5cdFx0bGV0IHNjYWxlID0gZml4ZWRJbnRlZ2VyLmdldFNjYWxlKCk7XG5cdFx0bGV0IFVPTSA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0VW9NKGNoYXJ0QW5ub3RhdGlvbiwgY29sbGVjdGlvbiwgdW5kZWZpbmVkLCBjdXN0b21BZ2dyZWdhdGUsIGFnZ3JlZ2F0aW9uKTtcblx0XHRjb25zdCBVT01FeHAgPSBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KFVPTSlcblx0XHRcdD8gKHBhdGhJbk1vZGVsPHN0cmluZz4oXCJ1b20vXCIgKyBpbmZvUGF0aCwgXCJpbnRlcm5hbFwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPilcblx0XHRcdDogY29uc3RhbnQoVU9NIGFzIHN0cmluZyk7XG5cdFx0Y29uc3Qgc2NhbGVFeHAgPSBzY2FsZSA/IGNvbnN0YW50KHNjYWxlKSA6IChwYXRoSW5Nb2RlbChcInNjYWxlZmFjdG9yL1wiICsgaW5mb1BhdGgsIFwiaW50ZXJuYWxcIikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4pO1xuXHRcdGlmICghc2VwZXJhdG9yKSB7XG5cdFx0XHRzZXBlcmF0b3IgPSBcInxcIjtcblx0XHR9XG5cdFx0c2VwZXJhdG9yID0gXCIgXCIgKyBzZXBlcmF0b3IgKyBcIiBcIjtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZm9ybWF0UmVzdWx0KFtzZXBlcmF0b3IsIFVPTUV4cCwgc2NhbGVFeHBdLCB2aXN1YWxGaWx0ZXJGb3JtYXR0ZXIuZm9ybWF0U2NhbGVBbmRVT00pLCB0b29sVGlwKSA/PyBcIlwiO1xuXHR9LFxuXHRnZXRNZWFzdXJlRGltZW5zaW9uVGl0bGU6IGZ1bmN0aW9uIChjaGFydEFubm90YXRpb24/OiBDaGFydCwgY3VzdG9tQWdncmVnYXRlPzogYm9vbGVhbiwgYWdncmVnYXRpb24/OiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlKTogc3RyaW5nIHtcblx0XHRsZXQgbWVhc3VyZUxhYmVsO1xuXHRcdGxldCBtZWFzdXJlUGF0aDtcblx0XHRpZiAoY3VzdG9tQWdncmVnYXRlKSB7XG5cdFx0XHRtZWFzdXJlUGF0aCA9IGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZXNbMF0/LiR0YXJnZXQ/Lm5hbWU7XG5cdFx0fVxuXHRcdGlmIChjaGFydEFubm90YXRpb24/LkR5bmFtaWNNZWFzdXJlcyAmJiBjaGFydEFubm90YXRpb24uRHluYW1pY01lYXN1cmVzLmxlbmd0aCA+IDApIHtcblx0XHRcdG1lYXN1cmVQYXRoID0gKGNoYXJ0QW5ub3RhdGlvbi5EeW5hbWljTWVhc3VyZXNbMF0/LiR0YXJnZXQgYXMgQWdncmVnYXRlZFByb3BlcnR5VHlwZSk/LkFnZ3JlZ2F0YWJsZVByb3BlcnR5Py52YWx1ZTtcblx0XHR9IGVsc2UgaWYgKCFjdXN0b21BZ2dyZWdhdGUgJiYgY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlcyAmJiBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVzLmxlbmd0aCA+IDApIHtcblx0XHRcdG1lYXN1cmVQYXRoID0gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVzWzBdPy4kdGFyZ2V0Py5uYW1lO1xuXHRcdH1cblx0XHRjb25zdCBkaW1lbnNpb25QYXRoID0gY2hhcnRBbm5vdGF0aW9uPy5EaW1lbnNpb25zWzBdPy52YWx1ZSBhcyB1bmtub3duIGFzIExhYmVsO1xuXHRcdGxldCBkaW1lbnNpb25MYWJlbCA9IGNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uTGFiZWw7XG5cdFx0aWYgKCFjdXN0b21BZ2dyZWdhdGUgJiYgYWdncmVnYXRpb24pIHtcblx0XHRcdC8vIGNoZWNrIGlmIHRoZSBsYWJlbCBpcyBwYXJ0IG9mIGFnZ3JlZ2F0ZWQgcHJvcGVydGllcyAoVHJhbnNmb3JtYXRpb24gYWdncmVnYXRlcylcblx0XHRcdG1lYXN1cmVMYWJlbCA9IGFnZ3JlZ2F0aW9uLmFubm90YXRpb25zICYmIGFnZ3JlZ2F0aW9uLmFubm90YXRpb25zLkNvbW1vbiAmJiBhZ2dyZWdhdGlvbi5hbm5vdGF0aW9ucy5Db21tb24uTGFiZWw7XG5cdFx0XHRpZiAobWVhc3VyZUxhYmVsID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0bWVhc3VyZUxhYmVsID0gY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlcz8uWzBdPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bWVhc3VyZUxhYmVsID0gY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlcz8uWzBdPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbDtcblx0XHR9XG5cdFx0aWYgKG1lYXN1cmVMYWJlbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRtZWFzdXJlTGFiZWwgPSBtZWFzdXJlUGF0aDtcblx0XHR9XG5cdFx0aWYgKGRpbWVuc2lvbkxhYmVsID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRpbWVuc2lvbkxhYmVsID0gZGltZW5zaW9uUGF0aDtcblx0XHR9XG5cdFx0cmV0dXJuIExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIS5nZXRUZXh0KFwiTV9JTlRFUkFDVElWRV9DSEFSVF9IRUxQRVJfVklTVUFMRklMVEVSX01FQVNVUkVfRElNRU5TSU9OX1RJVExFXCIsIFtcblx0XHRcdG1lYXN1cmVMYWJlbCxcblx0XHRcdGRpbWVuc2lvbkxhYmVsXG5cdFx0XSk7XG5cdH0sXG5cblx0Z2V0VG9vbFRpcDogZnVuY3Rpb24gKFxuXHRcdGNoYXJ0QW5ub3RhdGlvbj86IENoYXJ0LFxuXHRcdGNvbGxlY3Rpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdFx0bWV0YVBhdGg/OiBzdHJpbmcsXG5cdFx0Y3VzdG9tQWdncmVnYXRlPzogYm9vbGVhbixcblx0XHRhZ2dyZWdhdGlvbj86IEFnZ3JlZ2F0ZWRQcm9wZXJ0eVR5cGUsXG5cdFx0cmVuZGVyTGluZUNoYXJ0PzogYm9vbGVhbiB8IHN0cmluZ1xuXHQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGNoYXJ0VHlwZSA9IGNoYXJ0QW5ub3RhdGlvbiAmJiBjaGFydEFubm90YXRpb25bXCJDaGFydFR5cGVcIl07XG5cdFx0bGV0IG1lYXN1cmVEaW1lbnNpb25Ub29sVGlwID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRNZWFzdXJlRGltZW5zaW9uVGl0bGUoY2hhcnRBbm5vdGF0aW9uLCBjdXN0b21BZ2dyZWdhdGUsIGFnZ3JlZ2F0aW9uKTtcblx0XHRtZWFzdXJlRGltZW5zaW9uVG9vbFRpcCA9IENvbW1vbkhlbHBlci5lc2NhcGVTaW5nbGVRdW90ZXMobWVhc3VyZURpbWVuc2lvblRvb2xUaXApO1xuXHRcdGlmIChyZW5kZXJMaW5lQ2hhcnQgPT09IGZhbHNlICYmIGNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvTGluZVwiKSB7XG5cdFx0XHRyZXR1cm4gYHs9ICcke21lYXN1cmVEaW1lbnNpb25Ub29sVGlwfSd9YDtcblx0XHR9XG5cblx0XHRjb25zdCBzZXBlcmF0b3IgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKT8uZ2V0VGV4dChcblx0XHRcdFwiTV9JTlRFUkFDVElWRV9DSEFSVF9IRUxQRVJfVklTVUFMRklMVEVSX1RPT0xUSVBfU0VQRVJBVE9SXCJcblx0XHQpO1xuXHRcdGNvbnN0IGluZm9QYXRoID0gZ2VuZXJhdGUoW21ldGFQYXRoXSk7XG5cdFx0Y29uc3Qgc2NhbGVVT01Ub29sdGlwID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRTY2FsZVVvTVRpdGxlKFxuXHRcdFx0Y2hhcnRBbm5vdGF0aW9uLFxuXHRcdFx0Y29sbGVjdGlvbixcblx0XHRcdGluZm9QYXRoLFxuXHRcdFx0Y3VzdG9tQWdncmVnYXRlLFxuXHRcdFx0YWdncmVnYXRpb24sXG5cdFx0XHRzZXBlcmF0b3IsXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0XHRyZXR1cm4gXCJ7PSAnXCIgKyBtZWFzdXJlRGltZW5zaW9uVG9vbFRpcCArIChzY2FsZVVPTVRvb2x0aXAgPyBcIicgKyBcIiArIHNjYWxlVU9NVG9vbHRpcCA6IFwiJ1wiKSArIFwifVwiO1xuXHR9LFxuXHRfZ2V0VU9NOiBmdW5jdGlvbiAoXG5cdFx0VU9NT2JqZWN0UGF0aD86IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPHVua25vd24+LFxuXHRcdFVPTT86IFwiSVNPQ3VycmVuY3lcIiB8IFwiVW5pdFwiLFxuXHRcdGNvbGxlY3Rpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdFx0Y3VzdG9tRGF0YT86IGJvb2xlYW4sXG5cdFx0YWdncmVnYXRhYmxlUHJvcGVydHlQYXRoPzogc3RyaW5nXG5cdCk6IHN0cmluZyB8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjx1bmtub3duPiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBVT01PYmplY3Q6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0Y29uc3QgY29sbGVjdGlvbk9iamVjdCA9IGNvbGxlY3Rpb24/LnRhcmdldE9iamVjdDtcblx0XHRpZiAoVU9NT2JqZWN0UGF0aCAmJiBVT00gJiYgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24oVU9NT2JqZWN0UGF0aCkpIHtcblx0XHRcdC8vIGNoZWNrIGlmIHRoZSBVT00gaXMgcGFydCBvZiBNZWFzdXJlIGFubm90YXRpb25zKEN1c3RvbSBhZ2dyZWdhdGVzKVxuXHRcdFx0VU9NT2JqZWN0W1VPTV0gPSB7ICRQYXRoOiBVT01PYmplY3RQYXRoLnBhdGggfTtcblx0XHRcdHJldHVybiBjdXN0b21EYXRhICYmIFVPTU9iamVjdFBhdGgucGF0aCA/IFVPTU9iamVjdCA6IFVPTU9iamVjdFBhdGg7XG5cdFx0fSBlbHNlIGlmIChhZ2dyZWdhdGFibGVQcm9wZXJ0eVBhdGgpIHtcblx0XHRcdC8vIGNoZWNrIGlmIHRoZSBVT00gaXMgcGFydCBvZiBiYXNlIHByb3BlcnR5IGFubm90YXRpb25zKFRyYW5zZm9ybWF0aW9uIGFnZ3JlZ2F0ZXMpXG5cdFx0XHRjb25zdCBlbnRpdHlQcm9wZXJ0aWVzID1cblx0XHRcdFx0aXNFbnRpdHlTZXQoY29sbGVjdGlvbk9iamVjdCkgfHwgaXNTaW5nbGV0b24oY29sbGVjdGlvbk9iamVjdClcblx0XHRcdFx0XHQ/IGNvbGxlY3Rpb25PYmplY3QuZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzXG5cdFx0XHRcdFx0OiBjb2xsZWN0aW9uT2JqZWN0Py50YXJnZXRUeXBlPy5lbnRpdHlQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlBbm5vdGF0aW9ucyA9IGVudGl0eVByb3BlcnRpZXM/LmZpbmQoKHByb3BlcnR5OiBQcm9wZXJ0eSkgPT4gcHJvcGVydHkubmFtZSA9PSBhZ2dyZWdhdGFibGVQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0aWYgKHByb3BlcnR5QW5ub3RhdGlvbnM/LmFubm90YXRpb25zPy5NZWFzdXJlcyAmJiBVT00pIHtcblx0XHRcdFx0VU9NT2JqZWN0UGF0aCA9IHByb3BlcnR5QW5ub3RhdGlvbnM/LmFubm90YXRpb25zPy5NZWFzdXJlc1tVT01dIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjx1bmtub3duPjtcblx0XHRcdFx0VU9NT2JqZWN0W1VPTV0gPSB7ICRQYXRoOiBVT01PYmplY3RQYXRoPy5wYXRoIH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gVU9NT2JqZWN0UGF0aCAmJiBjdXN0b21EYXRhICYmIGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKFVPTU9iamVjdFBhdGgpICYmIFVPTU9iamVjdFBhdGgucGF0aFxuXHRcdFx0XHQ/IFVPTU9iamVjdFxuXHRcdFx0XHQ6IFVPTU9iamVjdFBhdGg7XG5cdFx0fVxuXHR9LFxuXHRnZXRVb006IGZ1bmN0aW9uIChcblx0XHRjaGFydEFubm90YXRpb24/OiBDaGFydCxcblx0XHRjb2xsZWN0aW9uPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRcdGN1c3RvbURhdGE/OiBib29sZWFuLFxuXHRcdGN1c3RvbUFnZ3JlZ2F0ZT86IGJvb2xlYW4sXG5cdFx0YWdncmVnYXRpb24/OiBBZ2dyZWdhdGVkUHJvcGVydHlUeXBlXG5cdCk6IHN0cmluZyB8IFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPHVua25vd24+IHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQge1xuXHRcdGxldCBtZWFzdXJlOiBNZWFzdXJlVHlwZSA9IHt9O1xuXHRcdGlmIChjdXN0b21BZ2dyZWdhdGUpIHtcblx0XHRcdG1lYXN1cmUgPSBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVzWzBdIGFzIE1lYXN1cmVUeXBlO1xuXHRcdH1cblx0XHRpZiAoY2hhcnRBbm5vdGF0aW9uPy5EeW5hbWljTWVhc3VyZXMgJiYgY2hhcnRBbm5vdGF0aW9uLkR5bmFtaWNNZWFzdXJlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRtZWFzdXJlID0gKGNoYXJ0QW5ub3RhdGlvbi5EeW5hbWljTWVhc3VyZXNbMF0/LiR0YXJnZXQgYXMgQWdncmVnYXRlZFByb3BlcnR5VHlwZSk/LkFnZ3JlZ2F0YWJsZVByb3BlcnR5Py4kdGFyZ2V0Py5hbm5vdGF0aW9uc1xuXHRcdFx0XHQ/Lk1lYXN1cmVzIGFzIE1lYXN1cmVUeXBlO1xuXHRcdH0gZWxzZSBpZiAoIWN1c3RvbUFnZ3JlZ2F0ZSAmJiBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVzICYmIGNoYXJ0QW5ub3RhdGlvbi5NZWFzdXJlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRtZWFzdXJlID0gY2hhcnRBbm5vdGF0aW9uLk1lYXN1cmVzWzBdO1xuXHRcdH1cblx0XHRjb25zdCBJU09DdXJyZW5jeSA9IG1lYXN1cmU/LklTT0N1cnJlbmN5O1xuXHRcdGNvbnN0IHVuaXQgPSBtZWFzdXJlPy5Vbml0O1xuXHRcdGxldCBhZ2dyZWdhdGFibGVQcm9wZXJ0eVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIWN1c3RvbUFnZ3JlZ2F0ZSAmJiBhZ2dyZWdhdGlvbikge1xuXHRcdFx0YWdncmVnYXRhYmxlUHJvcGVydHlQYXRoID0gYWdncmVnYXRpb24uQWdncmVnYXRhYmxlUHJvcGVydHkgJiYgYWdncmVnYXRpb24uQWdncmVnYXRhYmxlUHJvcGVydHkudmFsdWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFnZ3JlZ2F0YWJsZVByb3BlcnR5UGF0aCA9IG1lYXN1cmU/LnZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5fZ2V0VU9NKElTT0N1cnJlbmN5LCBcIklTT0N1cnJlbmN5XCIsIGNvbGxlY3Rpb24sIGN1c3RvbURhdGEsIGFnZ3JlZ2F0YWJsZVByb3BlcnR5UGF0aCkgfHxcblx0XHRcdHRoaXMuX2dldFVPTSh1bml0LCBcIlVuaXRcIiwgY29sbGVjdGlvbiwgY3VzdG9tRGF0YSwgYWdncmVnYXRhYmxlUHJvcGVydHlQYXRoKVxuXHRcdCk7XG5cdH0sXG5cdGdldFNjYWxlRmFjdG9yOiBmdW5jdGlvbiAodmFsdWVGb3JtYXQ/OiBOdW1iZXJGb3JtYXRUeXBlKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodmFsdWVGb3JtYXQgJiYgdmFsdWVGb3JtYXQuU2NhbGVGYWN0b3IpIHtcblx0XHRcdHJldHVybiB2YWx1ZUZvcm1hdC5TY2FsZUZhY3Rvci52YWx1ZU9mKCk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH0sXG5cdGdldFVvTVZpc2libGl0eTogZnVuY3Rpb24gKGNoYXJ0QW5ub3RhdGlvbj86IENoYXJ0LCBzaG93RXJyb3I/OiBib29sZWFuKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgY2hhcnRUeXBlID0gY2hhcnRBbm5vdGF0aW9uICYmIGNoYXJ0QW5ub3RhdGlvbltcIkNoYXJ0VHlwZVwiXTtcblx0XHRpZiAoc2hvd0Vycm9yKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIGlmICghKGNoYXJ0VHlwZSA9PT0gXCJVSS5DaGFydFR5cGUvQmFyXCIgfHwgY2hhcnRUeXBlID09PSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCIpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fSxcblx0Z2V0SW5QYXJhbWV0ZXJGaWx0ZXJzQmluZGluZzogZnVuY3Rpb24gKGluUGFyYW1ldGVyczogQXJyYXk8UGFyYW1ldGVyVHlwZT4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGlmIChpblBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRsZXQgcGF0aHMgPSBcIlwiO1xuXHRcdFx0aW5QYXJhbWV0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGluUGFyYW1ldGVyOiBQYXJhbWV0ZXJUeXBlKSB7XG5cdFx0XHRcdGlmIChpblBhcmFtZXRlci5sb2NhbERhdGFQcm9wZXJ0eSkge1xuXHRcdFx0XHRcdHBhcnRzLnB1c2goYHtwYXRoOickZmlsdGVycz4vY29uZGl0aW9ucy8ke2luUGFyYW1ldGVyLmxvY2FsRGF0YVByb3BlcnR5fSd9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0aWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0cGF0aHMgPSBwYXJ0cy5qb2luKCk7XG5cdFx0XHRcdHJldHVybiBge3BhcnRzOlske3BhdGhzfV0sIGZvcm1hdHRlcjonLl9mb3JtYXR0ZXJzLlZpc3VhbEZpbHRlclJ1bnRpbWUuZ2V0RmlsdGVyc0Zyb21Db25kaXRpb25zLmJpbmQoJGNvbnRyb2wpJ31gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH0sXG5cblx0Z2V0ZmlsdGVyQ291bnRCaW5kaW5nOiBmdW5jdGlvbiAoY2hhcnRBbm5vdGF0aW9uPzogQ2hhcnQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRpbWVuc2lvbiA9IGNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8ubmFtZTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0XCJ7cGF0aDonJGZpbHRlcnM+L2NvbmRpdGlvbnMvXCIgKyBkaW1lbnNpb24gKyBcIicsIGZvcm1hdHRlcjonLl9mb3JtYXR0ZXJzLlZpc3VhbEZpbHRlclJ1bnRpbWUuZ2V0RmlsdGVyQ291bnRzLmJpbmQoJGNvbnRyb2wpJ31cIlxuXHRcdCk7XG5cdH0sXG5cblx0Z2V0SW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXM6IGZ1bmN0aW9uICh2aXN1YWxGaWx0ZXI6IFZpc3VhbEZpbHRlcik6IEludGVyYWN0aXZlQ2hhcnRUeXBlIHtcblx0XHRjb25zdCBjaGFydEFubm90YXRpb24gPSB2aXN1YWxGaWx0ZXIuY2hhcnRBbm5vdGF0aW9uO1xuXHRcdGNvbnN0IGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzOiBJbnRlcmFjdGl2ZUNoYXJ0VHlwZSA9IHt9O1xuXHRcdGlmICh2aXN1YWxGaWx0ZXIuY2hhcnRNZWFzdXJlICYmIGNoYXJ0QW5ub3RhdGlvbj8uRGltZW5zaW9ucyAmJiBjaGFydEFubm90YXRpb24uRGltZW5zaW9uc1swXSkge1xuXHRcdFx0Y29uc3QgaWQgPSBnZW5lcmF0ZShbdmlzdWFsRmlsdGVyLm1ldGFQYXRoXSk7XG5cdFx0XHRpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5zaG93RXJyb3JFeHByZXNzaW9uID0gXCJ7PSAke2ludGVybmFsPlwiICsgaWQgKyBcIi9zaG93RXJyb3J9fVwiO1xuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuZXJyb3JNZXNzYWdlRXhwcmVzc2lvbiA9IFwiez0gJHtpbnRlcm5hbD5cIiArIGlkICsgXCIvZXJyb3JNZXNzYWdlfX1cIjtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmVycm9yTWVzc2FnZVRpdGxlRXhwcmVzc2lvbiA9IFwiez0gJHtpbnRlcm5hbD5cIiArIGlkICsgXCIvZXJyb3JNZXNzYWdlVGl0bGV9fVwiO1xuXHRcdFx0bGV0IGRhdGFQb2ludEFubm90YXRpb247XG5cdFx0XHRpZiAoY2hhcnRBbm5vdGF0aW9uPy5NZWFzdXJlQXR0cmlidXRlcyAmJiBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVBdHRyaWJ1dGVzWzBdKSB7XG5cdFx0XHRcdGRhdGFQb2ludEFubm90YXRpb24gPSBjaGFydEFubm90YXRpb24/Lk1lYXN1cmVBdHRyaWJ1dGVzWzBdPy5EYXRhUG9pbnRcblx0XHRcdFx0XHQ/IGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXNbMF0uRGF0YVBvaW50LiR0YXJnZXRcblx0XHRcdFx0XHQ6IGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXNbMF07XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBkaW1lbnNpb24gPSBjaGFydEFubm90YXRpb24/LkRpbWVuc2lvbnNbMF07XG5cdFx0XHRjb25zdCBwYXJhbWV0ZXJzID0gQ29tbW9uSGVscGVyLmdldFBhcmFtZXRlcnModmlzdWFsRmlsdGVyLmNvbnRleHRQYXRoLCB2aXN1YWxGaWx0ZXIuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdFx0Y29uc3QgZGltZW5zaW9uVGV4dCA9IGRpbWVuc2lvbj8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCBhcyB1bmtub3duIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+O1xuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuYWdncmVnYXRpb25CaW5kaW5nID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRBZ2dyZWdhdGlvbkJpbmRpbmcoXG5cdFx0XHRcdGNoYXJ0QW5ub3RhdGlvbixcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmNvbGxlY3Rpb24sXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5jb250ZXh0UGF0aCxcblx0XHRcdFx0ZGltZW5zaW9uVGV4dCxcblx0XHRcdFx0ZGltZW5zaW9uLiR0YXJnZXQ/LnR5cGUsXG5cdFx0XHRcdHZpc3VhbEZpbHRlcj8uc29ydE9yZGVyLFxuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmFnZ3JlZ2F0ZVByb3BlcnRpZXMsXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5Vb01IYXNDdXN0b21BZ2dyZWdhdGUsXG5cdFx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5maWx0ZXJCYXJFbnRpdHlUeXBlLFxuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuZHJhZnRTdXBwb3J0ZWQsXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5jaGFydE1lYXN1cmUsXG5cdFx0XHRcdHZpc3VhbEZpbHRlci5nZXRNZXRhTW9kZWwoKVxuXHRcdFx0KTtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLnNjYWxlZmFjdG9yID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRTY2FsZUZhY3RvcigoZGF0YVBvaW50QW5ub3RhdGlvbiBhcyBEYXRhUG9pbnQpPy5WYWx1ZUZvcm1hdCk7XG5cdFx0XHRpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy51b20gPSBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldFVvTShcblx0XHRcdFx0Y2hhcnRBbm5vdGF0aW9uLFxuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuY29sbGVjdGlvbixcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmFnZ3JlZ2F0ZVByb3BlcnRpZXNcblx0XHRcdCk7XG5cdFx0XHRpbnRlcmFjdGl2ZUNoYXJ0UHJvcGVydGllcy5pblBhcmFtZXRlcnMgPSB2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzO1xuXHRcdFx0Y29uc3QgaW5QYXJhbWV0ZXJzID0gQ29tbW9uSGVscGVyLnBhcnNlQ3VzdG9tRGF0YSh2aXN1YWxGaWx0ZXIuaW5QYXJhbWV0ZXJzIGFzIHVua25vd24gYXMgc3RyaW5nKTtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmluUGFyYW1ldGVyRmlsdGVycyA9IHZpc3VhbEZpbHRlci5pblBhcmFtZXRlcnNcblx0XHRcdFx0PyBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldEluUGFyYW1ldGVyRmlsdGVyc0JpbmRpbmcoaW5QYXJhbWV0ZXJzIGFzIEFycmF5PFBhcmFtZXRlclR5cGU+KVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLnNlbGVjdGlvblZhcmlhbnQgPSB2aXN1YWxGaWx0ZXIuc2VsZWN0aW9uVmFyaWFudCA/IHZpc3VhbEZpbHRlci5zZWxlY3Rpb25WYXJpYW50IDogdW5kZWZpbmVkO1xuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuc3RyaW5naWZpZWRQYXJhbWV0ZXJzID0gcGFyYW1ldGVycztcblx0XHRcdGNvbnN0IGRpbWVuc2lvbkNvbnRleHQgPSB2aXN1YWxGaWx0ZXJcblx0XHRcdFx0LmdldE1ldGFNb2RlbCgpXG5cdFx0XHRcdD8uY3JlYXRlQmluZGluZ0NvbnRleHQodmlzdWFsRmlsdGVyLmNvbnRleHRQYXRoICsgXCIvQFwiICsgZGltZW5zaW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIkBcIilbMV0pO1xuXHRcdFx0aWYgKGRpbWVuc2lvbkNvbnRleHQpIHtcblx0XHRcdFx0Y29uc3QgZGltZW5zaW9uT2JqZWN0ID0gdmlzdWFsRmlsdGVyLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPFByb3BlcnR5Pihcblx0XHRcdFx0XHRkaW1lbnNpb25Db250ZXh0LmdldFBhdGgoKSxcblx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuY29udGV4dFBhdGhcblx0XHRcdFx0KTtcblx0XHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuY2hhcnRMYWJlbCA9IGdldFRleHRCaW5kaW5nKGRpbWVuc2lvbk9iamVjdCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Piwge30pO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMubWVhc3VyZSA9IEludGVyYWN0aXZlQ2hhcnRIZWxwZXIuZ2V0Q2hhcnRWYWx1ZSh2aXN1YWxGaWx0ZXIuY2hhcnRNZWFzdXJlKTtcblx0XHRcdGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzLmRpc3BsYXllZFZhbHVlID0gSW50ZXJhY3RpdmVDaGFydEhlbHBlci5nZXRDaGFydERpc3BsYXllZFZhbHVlKFxuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuY2hhcnRNZWFzdXJlLFxuXHRcdFx0XHQoZGF0YVBvaW50QW5ub3RhdGlvbiBhcyBEYXRhUG9pbnQpPy5WYWx1ZUZvcm1hdCxcblx0XHRcdFx0dmlzdWFsRmlsdGVyLm1ldGFQYXRoXG5cdFx0XHQpO1xuXHRcdFx0aW50ZXJhY3RpdmVDaGFydFByb3BlcnRpZXMuY29sb3IgPSBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyLmdldENvbG9yQmluZGluZyhkYXRhUG9pbnRBbm5vdGF0aW9uIGFzIERhdGFQb2ludCwgZGltZW5zaW9uKTtcblx0XHR9XG5cdFx0cmV0dXJuIGludGVyYWN0aXZlQ2hhcnRQcm9wZXJ0aWVzO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdGl2ZUNoYXJ0SGVscGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpRkEsTUFBTUEsc0JBQXNCLEdBQUc7SUFDOUJDLHNCQUFzQixFQUFFLFNBQUFBLENBQVVDLEtBQWEsRUFBRUMsV0FBOEIsRUFBRUMsUUFBaUIsRUFBVTtNQUMzRyxNQUFNQyxRQUFRLEdBQUdDLFFBQVEsQ0FBQyxDQUFDRixRQUFRLENBQUMsQ0FBQztNQUNyQyxPQUNDLGlCQUFpQixHQUNqQkYsS0FBSyxHQUNMLDJFQUEyRSxJQUMxRUMsV0FBVyxJQUFJQSxXQUFXLENBQUNJLFdBQVcsR0FDcEMsV0FBVyxHQUFHSixXQUFXLENBQUNJLFdBQVcsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQ3RELHFDQUFxQyxHQUFHSCxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQzFERixXQUFXLElBQUlBLFdBQVcsQ0FBQ00sd0JBQXdCLEdBQ2pELFdBQVcsR0FBR04sV0FBVyxDQUFDTSx3QkFBd0IsR0FBRyxJQUFJLEdBQ3pELGNBQWMsQ0FBQyxHQUNsQiw0QkFBNEIsR0FDNUJKLFFBQVEsR0FDUixJQUFJLEdBQ0osVUFBVSxHQUNWSCxLQUFLLEdBQ0wsMEVBQTBFLEdBQzFFLHlFQUF5RSxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUNEUSxhQUFhLEVBQUUsU0FBQUEsQ0FBVVIsS0FBYSxFQUFVO01BQy9DLE9BQU8sU0FBUyxHQUFHQSxLQUFLLEdBQUcsMkVBQTJFO0lBQ3ZHLENBQUM7SUFDRFMsa0JBQWtCLEVBQUUsU0FBQUEsQ0FDbkJDLFVBQWtFLEVBQ2xFQyxXQUFtQixFQUNuQkMsVUFBMEIsRUFDakI7TUFDVCxNQUFNQyxnQkFBZ0IsR0FBR0gsVUFBVSxFQUFFSSxZQUFZO01BQ2pELElBQUlDLG9CQUFvQixDQUFDRixnQkFBZ0IsQ0FBQyxFQUFFO1FBQzND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MEIsQ0FBQ1IsWUFBWSxHQUFHTyxZQUFZLENBQUNQLFlBQVk7UUFDbkUsTUFBTUEsWUFBWSxHQUFHNUUsWUFBWSxDQUFDbUcsZUFBZSxDQUFDaEIsWUFBWSxDQUFDUCxZQUFpQyxDQUFDO1FBQ2pHUSwwQkFBMEIsQ0FBQ2dCLGtCQUFrQixHQUFHakIsWUFBWSxDQUFDUCxZQUFZLEdBQ3RFcE8sc0JBQXNCLENBQUNtTyw0QkFBNEIsQ0FBQ0MsWUFBb0MsQ0FBQyxHQUN6RmxMLFNBQVM7UUFDWjBMLDBCQUEwQixDQUFDeEosZ0JBQWdCLEdBQUd1SixZQUFZLENBQUN2SixnQkFBZ0IsR0FBR3VKLFlBQVksQ0FBQ3ZKLGdCQUFnQixHQUFHbEMsU0FBUztRQUN2SDBMLDBCQUEwQixDQUFDaUIscUJBQXFCLEdBQUcvTyxVQUFVO1FBQzdELE1BQU1nUCxnQkFBZ0IsR0FBR25CLFlBQVksQ0FDbkNRLFlBQVksQ0FBQyxDQUFDLEVBQ2I3TSxvQkFBb0IsQ0FBQ3FNLFlBQVksQ0FBQzlOLFdBQVcsR0FBRyxJQUFJLEdBQUc2RSxTQUFTLENBQUNxSyxrQkFBa0IsQ0FBQzNOLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxJQUFJME4sZ0JBQWdCLEVBQUU7VUFDckIsTUFBTUUsZUFBZSxHQUFHckIsWUFBWSxDQUFDc0IsNkJBQTZCLENBQ2pFSCxnQkFBZ0IsQ0FBQ0ksT0FBTyxDQUFDLENBQUMsRUFDMUJ2QixZQUFZLENBQUM5TixXQUNkLENBQUM7VUFDRCtOLDBCQUEwQixDQUFDdUIsVUFBVSxHQUFHQyxjQUFjLENBQUNKLGVBQWUsRUFBbUMsQ0FBQyxDQUFDLENBQUM7UUFDN0c7UUFDQXBCLDBCQUEwQixDQUFDZixPQUFPLEdBQUc3TixzQkFBc0IsQ0FBQ1UsYUFBYSxDQUFDaU8sWUFBWSxDQUFDcEosWUFBWSxDQUFDO1FBQ3BHcUosMEJBQTBCLENBQUN5QixjQUFjLEdBQUdyUSxzQkFBc0IsQ0FBQ0Msc0JBQXNCLENBQ3hGME8sWUFBWSxDQUFDcEosWUFBWSxFQUN4QjBKLG1CQUFtQixFQUFnQmxFLFdBQVcsRUFDL0M0RCxZQUFZLENBQUN2TyxRQUNkLENBQUM7UUFDRHdPLDBCQUEwQixDQUFDMEIsS0FBSyxHQUFHdFEsc0JBQXNCLENBQUMrSCxlQUFlLENBQUNrSCxtQkFBbUIsRUFBZXZKLFNBQVMsQ0FBQztNQUN2SDtNQUNBLE9BQU9rSiwwQkFBMEI7SUFDbEM7RUFDRCxDQUFDO0VBQUMsT0FFYTVPLHNCQUFzQjtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -98,7 +98,7 @@ const InteractiveChartHelper = {
|
|
|
98
98
|
",{path:'" +
|
|
99
99
|
value +
|
|
100
100
|
"',type:'sap.ui.model.odata.type.String', constraints:{'nullable':false}}" +
|
|
101
|
-
"], formatter:'
|
|
101
|
+
"], formatter:'._formatters.VisualFilterRuntime.scaleVisualFilterValue'}"
|
|
102
102
|
); //+ sType.split('#').length ? sType.split('#')[1] : 'Decimal' + "}";
|
|
103
103
|
},
|
|
104
104
|
getChartValue: function (value: string): string {
|
|
@@ -580,7 +580,7 @@ const InteractiveChartHelper = {
|
|
|
580
580
|
});
|
|
581
581
|
if (parts.length > 0) {
|
|
582
582
|
paths = parts.join();
|
|
583
|
-
return `{parts:[${paths}], formatter:'
|
|
583
|
+
return `{parts:[${paths}], formatter:'._formatters.VisualFilterRuntime.getFiltersFromConditions.bind($control)'}`;
|
|
584
584
|
} else {
|
|
585
585
|
return undefined;
|
|
586
586
|
}
|
|
@@ -592,7 +592,7 @@ const InteractiveChartHelper = {
|
|
|
592
592
|
getfilterCountBinding: function (chartAnnotation?: Chart): string {
|
|
593
593
|
const dimension = chartAnnotation?.Dimensions[0]?.$target?.name;
|
|
594
594
|
return (
|
|
595
|
-
"{path:'$filters>/conditions/" + dimension + "', formatter:'
|
|
595
|
+
"{path:'$filters>/conditions/" + dimension + "', formatter:'._formatters.VisualFilterRuntime.getFilterCounts.bind($control)'}"
|
|
596
596
|
);
|
|
597
597
|
},
|
|
598
598
|
|