@sapui5/sap.fe.macros 1.141.2 → 1.142.1
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 +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- 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 +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- 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/Page.js +8 -4
- package/src/sap/fe/macros/Page.tsx +13 -4
- package/src/sap/fe/macros/RichTextEditor.js +14 -17
- package/src/sap/fe/macros/RichTextEditor.tsx +12 -16
- 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/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -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/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +37 -2
- package/src/sap/fe/macros/chart/Action.ts +21 -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 +19 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +36 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +59 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +81 -31
- 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 +50 -2
- 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/controls/TextLink.js +15 -1
- package/src/sap/fe/macros/controls/TextLink.tsx +19 -0
- 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 +46 -13
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +51 -10
- 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 +6 -35
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +35 -60
- package/src/sap/fe/macros/field/FieldTemplating.js +10 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +12 -5
- 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 +13 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +29 -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 +104 -72
- package/src/sap/fe/macros/form/FormContainer.block.ts +114 -72
- 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 +18 -24
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +24 -44
- 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 +44 -12
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +42 -11
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +54 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +59 -0
- 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 +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- 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 +13 -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/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +4 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +5 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -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 +21 -6
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +19 -4
- package/src/sap/fe/macros/table/MdcTableTemplate.js +113 -15
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +162 -14
- 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 +72 -29
- package/src/sap/fe/macros/table/Table.block.tsx +71 -15
- package/src/sap/fe/macros/table/TableAPI.js +213 -154
- package/src/sap/fe/macros/table/TableAPI.ts +116 -60
- 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 +8 -5
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +14 -12
- 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 +69 -28
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +111 -122
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- 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/table/mixin/TableHierarchy.js +6 -6
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +5 -5
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +5 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +7 -4
- 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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/TemplateModel", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/Common/filter/FilterRestrictions", "sap/fe/core/converters/controls/ListReport/FilterBar", "sap/fe/core/helpers/MetaModelFunction", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/macros/CommonHelper", "sap/fe/macros/field/FieldHelper", "sap/fe/macros/filter/FilterFieldHelper", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/filterBar/DraftEditState", "sap/fe/macros/filterBar/FilterHelper", "sap/fe/macros/fpm/CustomFragment.block", "sap/fe/macros/internal/FilterField.block", "sap/m/Select", "sap/ui/core/CustomData", "sap/ui/core/ListItem", "sap/ui/core/fieldhelp/FieldHelpCustomData", "sap/ui/mdc/FilterField", "sap/ui/mdc/p13n/PersistenceProvider", "../ValueHelp", "../controls/CustomFilterFieldContentWrapper", "../controls/FilterBar", "../table/SlotColumn", "./FilterBarAPI", "sap/fe/base/jsx-runtime/jsx"], function (Log, jsx, TemplateModel, BuildingBlockSupport, BuildingBlockTemplateProcessor, BuildingBlockTemplatingBase, MetaModelConverter, DataVisualization, FilterRestrictions, FilterBar, MetaModelFunction, ModelHelper, StableIdHelper, CommonHelper, FieldHelper, FilterFieldHelper, FilterUtils, DraftEditState, FilterHelper, CustomFragmentBlock, InternalFilterField, Select, CustomData, ListItem, FieldHelpCustomData, MDCFilterField, PersistenceProvider, ValueHelp, CustomFilterFieldContentWrapper, FEFilterBar, SlotColumn, FilterBarAPI, _jsx) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31;
|
|
@@ -482,7 +482,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/Commo
|
|
|
482
482
|
const annotationPath = propInfo.annotationPath;
|
|
483
483
|
const propertyLocationPath = CommonHelper.getLocationForPropertyPath(model, annotationPath);
|
|
484
484
|
const propertyPath = annotationPath.replace(`${propertyLocationPath}/`, "");
|
|
485
|
-
|
|
485
|
+
const dataModel = MetaModelConverter.getInvolvedDataModelObjects(model.getContext(propertyLocationPath));
|
|
486
|
+
propInfo.required = FilterRestrictions.getFilterRestrictionsByDataModel(dataModel)?.RequiredProperties?.includes(propertyPath);
|
|
486
487
|
}
|
|
487
488
|
});
|
|
488
489
|
this.propertyInfo = JSON.stringify(aFetchedProperties).replace(/\{/g, "\\{").replace(/\}/g, "\\}");
|
|
@@ -528,6 +529,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/Commo
|
|
|
528
529
|
}
|
|
529
530
|
// after removing the unwanted properties PropertyInfo is added to the control, and we also save the full version as custom data for FE internal use
|
|
530
531
|
const _propertyInfoControl = FilterUtils.formatPropertyInfo(this.propertyInfo);
|
|
532
|
+
const hasOverride = this.checkIfResourceKeyExists("M_FILTERBAR_ADAPT_FILTERS_NON_ZERO");
|
|
533
|
+
let adaptFiltersNonZeroText;
|
|
534
|
+
let adaptFiltersText;
|
|
535
|
+
if (hasOverride) {
|
|
536
|
+
adaptFiltersNonZeroText = this.getTranslatedText("M_FILTERBAR_ADAPT_FILTERS_NON_ZERO").replaceAll("{", "\\{");
|
|
537
|
+
adaptFiltersText = this.getTranslatedText("M_FILTERBAR_ADAPT_FILTERS");
|
|
538
|
+
}
|
|
531
539
|
return _jsx(FilterBarAPI, {
|
|
532
540
|
id: this._apiId,
|
|
533
541
|
metaPath: this.metaPath.getPath(),
|
|
@@ -539,6 +547,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/Commo
|
|
|
539
547
|
children: {
|
|
540
548
|
content: _jsx(FEFilterBar, {
|
|
541
549
|
"core:require": "{API: 'sap/fe/macros/filterBar/FilterBarAPI'}",
|
|
550
|
+
adaptFiltersText: adaptFiltersText,
|
|
551
|
+
adaptFiltersTextNonZero: adaptFiltersNonZeroText,
|
|
542
552
|
id: this._contentId,
|
|
543
553
|
liveMode: this.liveMode,
|
|
544
554
|
delegate: filterDelegate,
|
|
@@ -767,4 +777,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/Commo
|
|
|
767
777
|
_exports = FilterBarBlock;
|
|
768
778
|
return _exports;
|
|
769
779
|
}, false);
|
|
770
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMiLCJjaGlsZEZpbHRlckZpZWxkIiwiYWdncmVnYXRpb25PYmplY3QiLCJzbG90TmFtZSIsImtleSIsInJlcGxhY2UiLCJwcm9wZXJ0eSIsImdldEF0dHJpYnV0ZSIsImxhYmVsIiwicmVxdWlyZWQiLCJ0ZW1wbGF0ZSIsIkZpbHRlckJhckJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidHlwZSIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJibG9ja0V2ZW50IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImhhc1ZpcnR1YWxOb2RlIiwicHJvY2Vzc0FnZ3JlZ2F0aW9ucyIsIl9kZWMzMiIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbmZpZ3VyYXRpb24iLCJtU2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfZGVzY3JpcHRvcjMwIiwic2hvd0RyYWZ0RWRpdFN0YXRlIiwiX2Rlc2NyaXB0b3IzMSIsImNoZWNrSWZFZGl0aW5nRmlsdGVySXNEaXNhYmxlZCIsInRhcmdldEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwic29tZSIsInIiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJ2YWx1ZSIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlcmFibGUiLCJjaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJpc0RyYWZ0Q29sbGFib3JhdGl2ZSIsImdldEVudGl0eVR5cGVQYXRoIiwibWV0YVBhdGhQYXJ0cyIsImVuZHNXaXRoIiwiZ2V0U2VhcmNoIiwiaGlkZUJhc2ljU2VhcmNoIiwiX2pzeCIsIk1EQ0ZpbHRlckZpZWxkIiwiaWQiLCJnZW5lcmF0ZSIsInBsYWNlaG9sZGVyIiwicHJvcGVydHlLZXkiLCJjb25kaXRpb25zIiwiZGF0YVR5cGUiLCJtYXhDb25kaXRpb25zIiwiZGF0YVR5cGVDb25zdHJhaW50cyIsInByb2Nlc3NTZWxlY3Rpb25GaWVsZHMiLCJkcmFmdEVkaXRTdGF0ZSIsImRyYWZ0U3RhdGVzIiwiRHJhZnRFZGl0U3RhdGUiLCJnZXRFZGl0U3RhdGVzIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJvcGVyYXRvcnMiLCJkaXNwbGF5IiwiY2hpbGRyZW4iLCJjb250ZW50RWRpdCIsIlNlbGVjdCIsIndpZHRoIiwiZm9yY2VTZWxlY3Rpb24iLCJzZWxlY3RlZEtleSIsIml0ZW1zIiwibWFwIiwic3RhdGUiLCJMaXN0SXRlbSIsInRleHQiLCJfdmFsdWVIZWxwcyIsIl9maWx0ZXJGaWVsZHMiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VsZWN0aW9uRmllbGRzIiwiZ2V0T2JqZWN0IiwiZm9yRWFjaCIsInNlbGVjdGlvbkZpZWxkIiwiYXZhaWxhYmlsaXR5Iiwic2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzIiwiYW5ub3RhdGlvblBhdGgiLCJwcm9wZXJ0eUNvbnRleHQiLCJtZXRhUGF0aCIsImdldE1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJwcm9wZXJ0eU9iamVjdCIsImZpbHRlckNvbnRlbnQiLCJTbG90Q29sdW1uIiwidGVtcGxhdGVJZCIsIkN1c3RvbUZyYWdtZW50QmxvY2siLCJmcmFnbWVudE5hbWUiLCJjb250ZXh0UGF0aCIsIm1heENvbmRpdGlvblZhbHVlIiwiY29udGV4dCIsImRlbGVnYXRlIiwiY29uZGl0aW9uUGF0aCIsIkZpZWxkSGVscGVyIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJzZXR0aW5ncyIsImdldFBhdGgiLCJjb25zdHJhaW50cyIsImRhdGFUeXBlRm9ybWF0T3B0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJ2YWx1ZUhlbHAiLCJjb250ZW50IiwiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImJpbmRpbmciLCJGaWx0ZXJVdGlscyIsImNvbmRpdGlvblRvTW9kZWxQYXRoIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJGaWVsZEhlbHBDdXN0b21EYXRhIiwiZG9jdW1lbnRSZWZUZXh0IiwidmYiLCJ2aXN1YWxGaWx0ZXIiLCJpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZCIsInN1c3BlbmRTZWxlY3Rpb24iLCJJbnRlcm5hbEZpbHRlckZpZWxkIiwiaWRQcmVmaXgiLCJDb21tb25IZWxwZXIiLCJnZXROYXZpZ2F0aW9uUGF0aCIsInZoSWRQcmVmaXgiLCJfZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZCIsIl9pbnRlcm5hbENvbnRleHRQYXRoIiwic3RyaW5naWZ5Q3VzdG9tRGF0YSIsInN0b3JlT2JqZWN0VmFsdWUiLCJlZGl0TW9kZSIsIlZhbHVlSGVscCIsImNvbmRpdGlvbk1vZGVsIiwiZmlsdGVyRmllbGRWYWx1ZUhlbHAiLCJMb2ciLCJlcnJvciIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzTWV0YVBhdGgiLCJlbnRpdHlUeXBlUGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwicGFyZW50Q29udGV4dFBhdGgiLCJmdWxsQ29udGV4dFBhdGgiLCJzT2JqZWN0UGF0aCIsInN0YXJ0c1dpdGgiLCJfYW5ub3RhdGlvblBhdGgiLCJvRXh0cmFQYXJhbXMiLCJmaWx0ZXJGaWVsZHMiLCJvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJwcm9wZXJ0eUluZm8iLCJnZXRTZWxlY3Rpb25GaWVsZHMiLCJzUHJvcGVydHlJbmZvIiwiQ29tbW9uIiwiRHJhZnRSb290IiwiZGlzYWJsZURyYWZ0RWRpdFN0YXRlRmlsdGVyIiwib1NlbGVjdGlvbkZpZWxkcyIsIlRlbXBsYXRlTW9kZWwiLCJ2aWV3RGF0YSIsIm1vZGVscyIsImdldERhdGEiLCJvRW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJvRW50aXR5U2V0Q29udGV4dCIsImdldENvbnRleHQiLCJvRmlsdGVyQ29uZGl0aW9ucyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJzZWxlY3Rpb25WYXJpYW50IiwiZmlsdGVyQ29uZGl0aW9ucyIsIl9wcm9jZXNzUHJvcGVydHlJbmZvcyIsIl9hcHBseUlkVG9Db250ZW50IiwiX2FwaUlkIiwiX2NvbnRlbnRJZCIsImdldENvbnRlbnRJZCIsIm9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24iLCJnZXRTZWFyY2hSZXN0cmljdGlvbnMiLCJCb29sZWFuIiwiU2VhcmNoYWJsZSIsImpzeCIsInJlbmRlckFzWE1MIiwiZGVzaWdudGltZSIsImdldERlc2lnbnRpbWUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwibW9kZWwiLCJhUGFyYW1ldGVyRmllbGRzIiwic0ZldGNoZWRQcm9wZXJ0aWVzIiwiYUZldGNoZWRQcm9wZXJ0aWVzIiwiSlNPTiIsInBhcnNlIiwiZWRpdFN0YXRlTGFiZWwiLCJwcm9wSW5mbyIsImlzUGFyYW1ldGVyIiwicGF0aCIsImluY2x1ZGVzIiwicHJvcGVydHlMb2NhdGlvblBhdGgiLCJnZXRMb2NhdGlvbkZvclByb3BlcnR5UGF0aCIsInByb3BlcnR5UGF0aCIsIkNvbW1vblV0aWxzIiwiZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwic3RyaW5naWZ5IiwiX3BhcmFtZXRlcnMiLCJnZXRQZXJzaXN0ZW5jZVByb3ZpZGVyIiwiZmlsdGVyQmFySWQiLCJpZ25vcmVQZXJzb25hbGl6YXRpb25DaGFuZ2VzIiwiUGVyc2lzdGVuY2VQcm92aWRlciIsImZvciIsIm1vZGUiLCJmaWx0ZXJCYXJDb250ZXh0UGF0aCIsImFubm9QYXRoIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJnZXRUZW1wbGF0ZSIsImludGVybmFsQ29udGV4dFBhdGgiLCJmaWx0ZXJEZWxlZ2F0ZSIsImZpbHRlckJhckRlbGVnYXRlIiwiX3Byb3BlcnR5SW5mb0NvbnRyb2wiLCJmb3JtYXRQcm9wZXJ0eUluZm8iLCJGaWx0ZXJCYXJBUEkiLCJzZWFyY2giLCJmaWx0ZXJDaGFuZ2VkIiwiYWZ0ZXJDbGVhciIsImludGVybmFsU2VhcmNoIiwiaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkIiwiRkVGaWx0ZXJCYXIiLCJsaXZlTW9kZSIsInZhcmlhbnRCYWNrcmVmZXJlbmNlIiwic2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsInNob3dDbGVhckJ1dHRvbiIsInAxM25Nb2RlIiwiZmlsdGVyc0NoYW5nZWQiLCJzaG93TWVzc2FnZXMiLCJ0b2dnbGVDb250cm9sIiwidG9nZ2xlQ29udHJvbElkIiwiaW5pdGlhbExheW91dCIsInZpc2libGUiLCJkZXBlbmRlbnRzIiwiYmFzaWNTZWFyY2hGaWVsZCIsImZpbHRlckl0ZW1zIiwiQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWx0ZXJCYXIuYmxvY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgVGVtcGxhdGVNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVNb2RlbFwiO1xuaW1wb3J0IHtcblx0YmxvY2tBZ2dyZWdhdGlvbixcblx0YmxvY2tBdHRyaWJ1dGUsXG5cdGJsb2NrRXZlbnQsXG5cdGRlZmluZUJ1aWxkaW5nQmxvY2tcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IHsgc3RvcmVPYmplY3RWYWx1ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2VcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0U2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJGaWVsZCBhcyBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCwgTWFuaWZlc3RGaWx0ZXJGaWVsZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyQmFyXCI7XG5pbXBvcnQgeyBnZXRTZWxlY3Rpb25GaWVsZHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9MaXN0UmVwb3J0L0ZpbHRlckJhclwiO1xuaW1wb3J0IHsgZ2V0U2VhcmNoUmVzdHJpY3Rpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YU1vZGVsRnVuY3Rpb25cIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHsgbWF4Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJGaWVsZEhlbHBlclwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IERyYWZ0RWRpdFN0YXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9EcmFmdEVkaXRTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyRmllbGQgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckZpZWxkXCI7XG5pbXBvcnQgeyBnZXRGaWx0ZXJDb25kaXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IEN1c3RvbUZyYWdtZW50QmxvY2sgZnJvbSBcInNhcC9mZS9tYWNyb3MvZnBtL0N1c3RvbUZyYWdtZW50LmJsb2NrXCI7XG5pbXBvcnQgSW50ZXJuYWxGaWx0ZXJGaWVsZCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9GaWx0ZXJGaWVsZC5ibG9ja1wiO1xuaW1wb3J0IFNlbGVjdCBmcm9tIFwic2FwL20vU2VsZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IExpc3RJdGVtIGZyb20gXCJzYXAvdWkvY29yZS9MaXN0SXRlbVwiO1xuaW1wb3J0IEZpZWxkSGVscEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL2ZpZWxkaGVscC9GaWVsZEhlbHBDdXN0b21EYXRhXCI7XG5pbXBvcnQgdHlwZSB7IElDb250ZXh0IH0gZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgTURDRmlsdGVyRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJCYXJCYXNlJEZpbHRlcnNDaGFuZ2VkRXZlbnQsIEZpbHRlckJhckJhc2UkU2VhcmNoRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9maWx0ZXJiYXIvRmlsdGVyQmFyQmFzZVwiO1xuaW1wb3J0IFBlcnNpc3RlbmNlUHJvdmlkZXIgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9QZXJzaXN0ZW5jZVByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCIuLi9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBWYWx1ZUhlbHAgZnJvbSBcIi4uL1ZhbHVlSGVscFwiO1xuaW1wb3J0IEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXIgZnJvbSBcIi4uL2NvbnRyb2xzL0N1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJcIjtcbmltcG9ydCBGRUZpbHRlckJhciBmcm9tIFwiLi4vY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgU2xvdENvbHVtbiBmcm9tIFwiLi4vdGFibGUvU2xvdENvbHVtblwiO1xuaW1wb3J0IEZpbHRlckJhckFQSSBmcm9tIFwiLi9GaWx0ZXJCYXJBUElcIjtcblxuY29uc3Qgc2V0Q3VzdG9tRmlsdGVyRmllbGRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNoaWxkRmlsdGVyRmllbGQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uT2JqZWN0OiBGaWx0ZXJGaWVsZCk6IEZpbHRlckZpZWxkIHtcblx0YWdncmVnYXRpb25PYmplY3Quc2xvdE5hbWUgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWdncmVnYXRpb25PYmplY3QucHJvcGVydHkgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcInByb3BlcnR5XCIpITtcblx0YWdncmVnYXRpb25PYmplY3QubGFiZWwgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcImxhYmVsXCIpITtcblx0YWdncmVnYXRpb25PYmplY3QucmVxdWlyZWQgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcInJlcXVpcmVkXCIpID09PSBcInRydWVcIjtcblx0YWdncmVnYXRpb25PYmplY3QudGVtcGxhdGUgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcInRlbXBsYXRlXCIpIGFzIHVua25vd24gYXMgQ29udHJvbDsgLy8gQnV0IGl0J3MgYSBzdHJpbmc7XG5cdHJldHVybiBhZ2dyZWdhdGlvbk9iamVjdDtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRmlsdGVyQmFyIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkZpbHRlckJhclxuICogaWQ9XCJTb21lSURcIlxuICogc2hvd0FkYXB0RmlsdGVyc0J1dHRvbj1cInRydWVcIlxuICogcDEzbk1vZGU9W1wiSXRlbVwiLFwiVmFsdWVcIl1cbiAqIGxpc3RCaW5kaW5nTmFtZXMgPSBcInNhcC5mZS50YWJsZUJpbmRpbmdcIlxuICogbGl2ZU1vZGU9XCJ0cnVlXCJcbiAqIHNlYXJjaD1cIi5oYW5kbGVycy5vblNlYXJjaFwiXG4gKiBmaWx0ZXJDaGFuZ2VkPVwiLmhhbmRsZXJzLm9uRmlsdGVyc0NoYW5nZWRcIlxuICogLyZndDtcbiAqIDwvcHJlPlxuICpcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIEZpbHRlckJhciBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiBAc2luY2UgMS45NC4wXG4gKi9cbkBkZWZpbmVCdWlsZGluZ0Jsb2NrKHtcblx0bmFtZTogXCJGaWx0ZXJCYXJcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiXVxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckJhckJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRpZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHZpc2libGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIHNlbGVjdGlvbkZpZWxkcyB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiXG5cdH0pXG5cdHNlbGVjdGlvbkZpZWxkcz86IENvbnZlcnRlZEZpbHRlckZpZWxkW10gfCBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZmlsdGVyQmFyRGVsZWdhdGU/OiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0bWV0YVBhdGg/OiBDb250ZXh0O1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGlzcGxheXMgcG9zc2libGUgZXJyb3JzIGR1cmluZyB0aGUgc2VhcmNoIGluIGEgbWVzc2FnZSBib3hcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0c2hvd01lc3NhZ2VzID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIElEIG9mIHRoZSBhc3NpZ25lZCB2YXJpYW50IG1hbmFnZW1lbnRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHR2YXJpYW50QmFja3JlZmVyZW5jZT86IHN0cmluZztcblxuXHQvKipcblx0ICogRG9uJ3Qgc2hvdyB0aGUgYmFzaWMgc2VhcmNoIGZpZWxkXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGhpZGVCYXNpY1NlYXJjaD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEVuYWJsZXMgdGhlIGZhbGxiYWNrIHRvIHNob3cgYWxsIGZpZWxkcyBvZiB0aGUgRW50aXR5VHlwZSBhcyBmaWx0ZXIgZmllbGRzIGlmIGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkcyBhcmUgbm90IHByZXNlbnRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0ZW5hYmxlRmFsbGJhY2sgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSGFuZGxlcyB2aXNpYmlsaXR5IG9mIHRoZSAnQWRhcHQgRmlsdGVycycgYnV0dG9uIG9uIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c2hvd0FkYXB0RmlsdGVyc0J1dHRvbiA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgcGVyc29uYWxpemF0aW9uIG9wdGlvbnMgZm9yIHRoZSBmaWx0ZXIgYmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1tdXCJcblx0fSlcblx0cDEzbk1vZGUgPSBcIkl0ZW0sVmFsdWVcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHJvcGVydHlJbmZvPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIFNlbWF0aWMgRGF0ZSBSYW5nZSBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgYmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHR1c2VTZW1hbnRpY0RhdGVSYW5nZSA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIG9wdGlvbiBmb3IgdGhlIGZpbHRlciBiYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nW11cIlxuXHR9KVxuXHRuYXZpZ2F0aW9uUHJvcGVydGllcz86IHN0cmluZ1tdO1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQsIHRoZSBzZWFyY2ggaXMgYXV0b21hdGljYWxseSB0cmlnZ2VyZWQgd2hlbiBhIGZpbHRlciB2YWx1ZSBpcyBjaGFuZ2VkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRsaXZlTW9kZSA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBGaWx0ZXIgY29uZGl0aW9ucyB0byBiZSBhcHBsaWVkIHRvIHRoZSBmaWx0ZXIgYmFyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IGZhbHNlXG5cdH0pXG5cdGZpbHRlckNvbmRpdGlvbnM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIElmIHNldCB0byA8Y29kZT50cnVlPC9jb2RlPiwgYWxsIHNlYXJjaCByZXF1ZXN0cyBhcmUgaWdub3JlZC4gT25jZSBpdCBoYXMgYmVlbiBzZXQgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+LFxuXHQgKiBhIHNlYXJjaCBpcyB0cmlnZ2VyZWQgaW1tZWRpYXRlbHkgaWYgb25lIG9yIG1vcmUgc2VhcmNoIHJlcXVlc3RzIGhhdmUgYmVlbiB0cmlnZ2VyZWQgaW4gdGhlIG1lYW50aW1lXG5cdCAqIGJ1dCB3ZXJlIGlnbm9yZWQgYmFzZWQgb24gdGhlIHNldHRpbmcuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHN1c3BlbmRTZWxlY3Rpb24gPSBmYWxzZTtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGlzRHJhZnRDb2xsYWJvcmF0aXZlID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIElkIG9mIGNvbnRyb2wgdGhhdCB3aWxsIGFsbG93IGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBub3JtYWwgYW5kIHZpc3VhbCBmaWx0ZXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHR0b2dnbGVDb250cm9sSWQ/OiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdGluaXRpYWxMYXlvdXQgPSBcImNvbXBhY3RcIjtcblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgJ0NsZWFyJyBidXR0b24gb24gdGhlIEZpbHRlckJhci5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0c2hvd0NsZWFyQnV0dG9uID0gZmFsc2U7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRfYXBwbHlJZFRvQ29udGVudCA9IGZhbHNlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0ZGlzYWJsZURyYWZ0RWRpdFN0YXRlRmlsdGVyID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRlbXBvcmFyeSB3b3JrYXJvdW5kIG9ubHlcblx0ICogcGF0aCB0byBjb250ZXh0UGF0aCB0byBiZSB1c2VkIGJ5IGNoaWxkIGZpbHRlcmZpZWxkc1xuXHQgKi9cblx0X2ludGVybmFsQ29udGV4dFBhdGghOiBDb250ZXh0O1xuXG5cdF9wYXJhbWV0ZXJzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2Fubm90YXRpb25QYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIHNlYXJjaCBldmVudCBvZiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHNlYXJjaD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgZmlsdGVyQ2hhbmdlIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0ZmlsdGVyQ2hhbmdlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgZmlsdGVyQ2hhbmdlZCBldmVudCBvZiB0aGUgRmlsdGVyQmFyLiBFeHBvc2VzIHBhcmFtZXRlcnMgZnJvbSB0aGUgTURDIGZpbHRlciBiYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0aW50ZXJuYWxGaWx0ZXJDaGFuZ2VkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBzZWFyY2ggZXZlbnQgb2YgdGhlIEZpbHRlckJhci4gRXhwb3NlcyBwYXJhbWV0ZXJlcyBmcm9tIHRoZSBNREMgZmlsdGVyIGJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRpbnRlcm5hbFNlYXJjaD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgYWZ0ZXJDbGVhciBldmVudCBvZiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGFmdGVyQ2xlYXI/OiBzdHJpbmc7XG5cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyRmllbGRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXNcblx0fSlcblx0ZmlsdGVyRmllbGRzPzogRmlsdGVyRmllbGQ7XG5cblx0X2FwaUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF92YWx1ZUhlbHBzOiBBcnJheTxzdHJpbmc+IHwgXCJcIiB8IHVuZGVmaW5lZDtcblxuXHRfZmlsdGVyRmllbGRzOiBBcnJheTxzdHJpbmc+IHwgXCJcIiB8IHVuZGVmaW5lZDtcblxuXHRzaG93RHJhZnRFZGl0U3RhdGUgPSBmYWxzZTtcblxuXHRkZXNpZ250aW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGlzIG1vZGUgbXVzdCBiZSB1c2VkIHdoZW4gaXQgaXMgY2VydGFpbiB0aGF0IGEgY29udHJvbCBtdXN0IG5vdCBwZXJzaXN0IGl0wrRzIHBlcnNvbmFsaXphdGlvbiBzdGF0ZSB1cG9uIGluaXRpYWxpemF0aW9uLlxuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjEzNi4wXG5cdCAqIEBzaW5jZSAxLjEzNi4wXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlnbm9yZVBlcnNvbmFsaXphdGlvbkNoYW5nZXMgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPEZpbHRlckJhckJsb2NrPiwgY29uZmlndXJhdGlvbjogdW5rbm93biwgbVNldHRpbmdzOiBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbmZpZ3VyYXRpb24sIG1TZXR0aW5ncyk7XG5cdFx0aWYgKCF0aGlzLm1ldGFQYXRoKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJDb250ZXh0IFBhdGggbm90IGF2YWlsYWJsZSBmb3IgRmlsdGVyQmFyIE1hY3JvLlwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc01ldGFQYXRoID0gdGhpcy5tZXRhUGF0aC5nZXRQYXRoKCk7XG5cdFx0bGV0IGVudGl0eVR5cGVQYXRoID0gXCJcIjtcblx0XHRjb25zdCBtZXRhUGF0aFBhcnRzID0gc01ldGFQYXRoPy5zcGxpdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCIpIHx8IFtdOyAvLyBbMF06IGVudGl0eVR5cGVQYXRoLCBbMV06IFNGIFF1YWxpZmllci5cblx0XHRpZiAobWV0YVBhdGhQYXJ0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRlbnRpdHlUeXBlUGF0aCA9IHRoaXMuZ2V0RW50aXR5VHlwZVBhdGgobWV0YVBhdGhQYXJ0cyk7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChlbnRpdHlUeXBlUGF0aCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IHRoaXMuY29udGV4dFBhdGg/LmdldE1vZGVsKCk7XG5cdFx0dGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCA9IG9NZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGVudGl0eVR5cGVQYXRoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoOiBzdHJpbmcgPSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIiArICgobWV0YVBhdGhQYXJ0cy5sZW5ndGggJiYgbWV0YVBhdGhQYXJ0c1sxXSkgfHwgXCJcIik7XG5cdFx0Y29uc3QgcGFyZW50Q29udGV4dFBhdGggPSBtU2V0dGluZ3M/LmZ1bGxDb250ZXh0UGF0aCBhcyBzdHJpbmc7XG5cdFx0bGV0IHNPYmplY3RQYXRoID0gYW5ub3RhdGlvblBhdGg7XG5cdFx0aWYgKHBhcmVudENvbnRleHRQYXRoICE9PSBcIlwiICYmIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGguZ2V0UGF0aCgpPy5zdGFydHNXaXRoKHBhcmVudENvbnRleHRQYXRoKSkge1xuXHRcdFx0c09iamVjdFBhdGggPSBzTWV0YVBhdGgucmVwbGFjZShwYXJlbnRDb250ZXh0UGF0aCwgXCJcIik7XG5cdFx0fVxuXHRcdHRoaXMuX2Fubm90YXRpb25QYXRoID0gYW5ub3RhdGlvblBhdGg7XG5cdFx0Y29uc3Qgb0V4dHJhUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB7IGZpbHRlckZpZWxkcz86IEZpbHRlckZpZWxkIH0+ID0ge307XG5cdFx0aWYgKHRoaXMuZmlsdGVyRmllbGRzKSB7XG5cdFx0XHRvRXh0cmFQYXJhbXNbc09iamVjdFBhdGhdID0ge1xuXHRcdFx0XHRmaWx0ZXJGaWVsZHM6IHRoaXMuZmlsdGVyRmllbGRzXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGNvbnN0IG9WaXN1YWxpemF0aW9uT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh0aGlzLl9pbnRlcm5hbENvbnRleHRQYXRoKTtcblx0XHRjb25zdCBvQ29udmVydGVyQ29udGV4dCA9IHRoaXMuZ2V0Q29udmVydGVyQ29udGV4dChvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgsIHVuZGVmaW5lZCwgbVNldHRpbmdzLCBvRXh0cmFQYXJhbXMpO1xuXHRcdGlmICghdGhpcy5wcm9wZXJ0eUluZm8pIHtcblx0XHRcdHRoaXMucHJvcGVydHlJbmZvID0gZ2V0U2VsZWN0aW9uRmllbGRzKG9Db252ZXJ0ZXJDb250ZXh0LCBbXSwgYW5ub3RhdGlvblBhdGgpLnNQcm9wZXJ0eUluZm87XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGFyZ2V0RW50aXR5U2V0ID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQ7XG5cdFx0aWYgKHRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290ICYmICF0aGlzLmRpc2FibGVEcmFmdEVkaXRTdGF0ZUZpbHRlcikge1xuXHRcdFx0dGhpcy5zaG93RHJhZnRFZGl0U3RhdGUgPSB0cnVlO1xuXHRcdFx0dGhpcy5jaGVja0lmRWRpdGluZ0ZpbHRlcklzRGlzYWJsZWQodGFyZ2V0RW50aXR5U2V0KTtcblx0XHRcdHRoaXMuY2hlY2tJZkNvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKTtcblx0XHR9XG5cblx0XHQvL0ZpbHRlciBGaWVsZHMgYW5kIHZhbHVlcyB0byB0aGUgZmllbGQgYXJlIGZpbGxlZCBiYXNlZCBvbiB0aGUgc2VsZWN0aW9uRmllbGRzIGFuZCB0aGlzIHdvdWxkIGJlIGVtcHR5IGluIGNhc2Ugb2YgbWFjcm8gb3V0c2lkZSB0aGUgRkUgdGVtcGxhdGVcblx0XHRpZiAoIXRoaXMuc2VsZWN0aW9uRmllbGRzKSB7XG5cdFx0XHRjb25zdCBvU2VsZWN0aW9uRmllbGRzID0gZ2V0U2VsZWN0aW9uRmllbGRzKG9Db252ZXJ0ZXJDb250ZXh0LCBbXSwgYW5ub3RhdGlvblBhdGgpLnNlbGVjdGlvbkZpZWxkcztcblx0XHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzID0gbmV3IFRlbXBsYXRlTW9kZWwob1NlbGVjdGlvbkZpZWxkcywgb01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCkuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpO1xuXHRcdFx0Y29uc3Qgdmlld0RhdGEgPSBtU2V0dGluZ3M/Lm1vZGVscz8udmlld0RhdGE/LmdldERhdGEoKTtcblx0XHRcdGNvbnN0IG9FbnRpdHlUeXBlID0gb0NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLFxuXHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudCA9IGdldFNlbGVjdGlvblZhcmlhbnQob0VudGl0eVR5cGUsIG9Db252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0b0VudGl0eVNldENvbnRleHQgPSAob01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCkuZ2V0Q29udGV4dChzRW50aXR5U2V0UGF0aCkgYXMgT0RhdGFWNENvbnRleHQsXG5cdFx0XHRcdG9GaWx0ZXJDb25kaXRpb25zID0gZ2V0RmlsdGVyQ29uZGl0aW9ucyhcblx0XHRcdFx0XHRvRW50aXR5U2V0Q29udGV4dCBhcyB1bmtub3duIGFzIElDb250ZXh0LCAvLyBXcm9uZyBidXQgc29tZWhvdyB3b3JrcyA/LFxuXHRcdFx0XHRcdHsgc2VsZWN0aW9uVmFyaWFudDogb1NlbGVjdGlvblZhcmlhbnQgfSxcblx0XHRcdFx0XHRvRW50aXR5U2V0Q29udGV4dC5nZXRPYmplY3QoKSxcblx0XHRcdFx0XHR2aWV3RGF0YSxcblx0XHRcdFx0XHR0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZVxuXHRcdFx0XHQpO1xuXHRcdFx0dGhpcy5maWx0ZXJDb25kaXRpb25zID0gb0ZpbHRlckNvbmRpdGlvbnM7XG5cdFx0fVxuXHRcdHRoaXMuX3Byb2Nlc3NQcm9wZXJ0eUluZm9zKHRoaXMucHJvcGVydHlJbmZvLCBvTWV0YU1vZGVsKTtcblxuXHRcdGlmICh0aGlzLl9hcHBseUlkVG9Db250ZW50KSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuaWQgKyBcIjo6RmlsdGVyQmFyXCI7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSB0aGlzLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuaWQ7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSB0aGlzLmdldENvbnRlbnRJZCh0aGlzLmlkICsgXCJcIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaGlkZUJhc2ljU2VhcmNoICE9PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uID0gZ2V0U2VhcmNoUmVzdHJpY3Rpb25zKHNFbnRpdHlTZXRQYXRoLCBvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKTtcblx0XHRcdHRoaXMuaGlkZUJhc2ljU2VhcmNoID0gQm9vbGVhbihvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uICYmICFvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uLlNlYXJjaGFibGUpO1xuXHRcdH1cblx0XHRqc3gucmVuZGVyQXNYTUwoKCkgPT4gdGhpcy5wcm9jZXNzU2VsZWN0aW9uRmllbGRzKCkpO1xuXG5cdFx0dGhpcy5kZXNpZ250aW1lID0gdGhpcy5nZXREZXNpZ250aW1lKCk7XG5cdH1cblxuXHRfcHJvY2Vzc1Byb3BlcnR5SW5mb3MocHJvcGVydHlJbmZvOiBzdHJpbmcsIG1vZGVsOiBPRGF0YU1ldGFNb2RlbCk6IHZvaWQge1xuXHRcdGNvbnN0IGFQYXJhbWV0ZXJGaWVsZHM6IHN0cmluZ1tdID0gW107XG5cdFx0aWYgKHByb3BlcnR5SW5mbykge1xuXHRcdFx0Y29uc3Qgc0ZldGNoZWRQcm9wZXJ0aWVzID0gcHJvcGVydHlJbmZvLnJlcGxhY2UoL1xcXFx7L2csIFwie1wiKS5yZXBsYWNlKC9cXFxcfS9nLCBcIn1cIik7XG5cdFx0XHRjb25zdCBhRmV0Y2hlZFByb3BlcnRpZXMgPSBKU09OLnBhcnNlKHNGZXRjaGVkUHJvcGVydGllcyk7XG5cdFx0XHRjb25zdCBlZGl0U3RhdGVMYWJlbCA9IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJGSUxURVJCQVJfRURJVElOR19TVEFUVVNcIik7XG5cdFx0XHRhRmV0Y2hlZFByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAocHJvcEluZm86IFByb3BlcnR5SW5mbykge1xuXHRcdFx0XHRwcm9wSW5mby5rZXkgPSBwcm9wSW5mby5uYW1lO1xuXHRcdFx0XHRpZiAocHJvcEluZm8uaXNQYXJhbWV0ZXIpIHtcblx0XHRcdFx0XHRhUGFyYW1ldGVyRmllbGRzLnB1c2gocHJvcEluZm8ubmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHByb3BJbmZvLnBhdGggPT09IFwiJGVkaXRTdGF0ZVwiKSB7XG5cdFx0XHRcdFx0cHJvcEluZm8ubGFiZWwgPSBlZGl0U3RhdGVMYWJlbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocHJvcEluZm8ua2V5Py5pbmNsdWRlcyhcIi9cIikpIHtcblx0XHRcdFx0XHQvL1RPIERPOiBOZWVkIHRvIHBsYWNlIHRoaXMgbG9naWMgaW4gY29tbW9uIHBsYWNlIHdoZW4gd2UgY292ZXIgZmlsdGVyUmV0cmljdGlvbnMgd2l0aCB0aGlzIEJMSSBGSU9SSVRFQ0hQMS0yNTA4MFxuXHRcdFx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gKHByb3BJbmZvIGFzIENvbnZlcnRlZEZpbHRlckZpZWxkKS5hbm5vdGF0aW9uUGF0aDtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eUxvY2F0aW9uUGF0aCA9IENvbW1vbkhlbHBlci5nZXRMb2NhdGlvbkZvclByb3BlcnR5UGF0aChtb2RlbCwgYW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IGFubm90YXRpb25QYXRoLnJlcGxhY2UoYCR7cHJvcGVydHlMb2NhdGlvblBhdGh9L2AsIFwiXCIpO1xuXHRcdFx0XHRcdHByb3BJbmZvLnJlcXVpcmVkID0gQ29tbW9uVXRpbHMuZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoKHByb3BlcnR5TG9jYXRpb25QYXRoLCBtb2RlbCk/LlJlcXVpcmVkUHJvcGVydGllcz8uaW5jbHVkZXMoXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGhcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5wcm9wZXJ0eUluZm8gPSBKU09OLnN0cmluZ2lmeShhRmV0Y2hlZFByb3BlcnRpZXMpLnJlcGxhY2UoL1xcey9nLCBcIlxcXFx7XCIpLnJlcGxhY2UoL1xcfS9nLCBcIlxcXFx9XCIpO1xuXHRcdH1cblx0XHR0aGlzLl9wYXJhbWV0ZXJzID0gSlNPTi5zdHJpbmdpZnkoYVBhcmFtZXRlckZpZWxkcyk7XG5cdH1cblxuXHRjaGVja0lmRWRpdGluZ0ZpbHRlcklzRGlzYWJsZWQgPSAodGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQpOiB2b2lkID0+IHtcblx0XHRpZiAoXG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM/LnNvbWUoXG5cdFx0XHRcdChyKSA9PiByLk5hdmlnYXRpb25Qcm9wZXJ0eT8udmFsdWUgPT09IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFcIiAmJiByLkZpbHRlclJlc3RyaWN0aW9ucz8uRmlsdGVyYWJsZSA9PT0gZmFsc2Vcblx0XHRcdCkgPT09IHRydWVcblx0XHQpIHtcblx0XHRcdHRoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlID0gZmFsc2U7XG5cdFx0fVxuXHR9O1xuXG5cdGNoZWNrSWZDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQgPSAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwgfCB1bmRlZmluZWQpOiB2b2lkID0+IHtcblx0XHRpZiAoTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCkpIHtcblx0XHRcdHRoaXMuaXNEcmFmdENvbGxhYm9yYXRpdmUgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHRnZXRFbnRpdHlUeXBlUGF0aCA9IChtZXRhUGF0aFBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyA9PiB7XG5cdFx0cmV0dXJuIG1ldGFQYXRoUGFydHNbMF0uZW5kc1dpdGgoXCIvXCIpID8gbWV0YVBhdGhQYXJ0c1swXSA6IG1ldGFQYXRoUGFydHNbMF0gKyBcIi9cIjtcblx0fTtcblxuXHRnZXRTZWFyY2ggPSAoKTogc3RyaW5nID0+IHtcblx0XHRpZiAoIXRoaXMuaGlkZUJhc2ljU2VhcmNoKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TURDRmlsdGVyRmllbGRcblx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiQmFzaWNTZWFyY2hGaWVsZFwiXSl9XG5cdFx0XHRcdFx0bGFiZWw9e1wiXCJ9XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJ7c2FwLmZlLmkxOG4+TV9GSUxURVJCQVJfU0VBUkNIfVwiXG5cdFx0XHRcdFx0cHJvcGVydHlLZXk9XCIkc2VhcmNoXCJcblx0XHRcdFx0XHRjb25kaXRpb25zPVwieyRmaWx0ZXJzPi9jb25kaXRpb25zLyRzZWFyY2h9XCJcblx0XHRcdFx0XHRkYXRhVHlwZT1cInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiXG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9ucz1cIjFcIlxuXHRcdFx0XHRcdGRhdGFUeXBlQ29uc3RyYWludHM9XCJ7J21heExlbmd0aCc6MTAwMH1cIlxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH07XG5cblx0cHJvY2Vzc1NlbGVjdGlvbkZpZWxkcyA9ICgpOiB2b2lkID0+IHtcblx0XHRsZXQgZHJhZnRFZGl0U3RhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZSkge1xuXHRcdFx0Y29uc3QgZHJhZnRTdGF0ZXMgPSBEcmFmdEVkaXRTdGF0ZS5nZXRFZGl0U3RhdGVzKHRoaXMuaXNEcmFmdENvbGxhYm9yYXRpdmUpO1xuXHRcdFx0Y29uc3QgbGFiZWwgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiRklMVEVSQkFSX0VESVRJTkdfU1RBVFVTXCIpO1xuXHRcdFx0ZHJhZnRFZGl0U3RhdGUgPSAoXG5cdFx0XHRcdDxNRENGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGxhYmVsPXtsYWJlbH1cblx0XHRcdFx0XHRjb25kaXRpb25zPVwieyRmaWx0ZXJzPi9jb25kaXRpb25zLyRlZGl0U3RhdGV9XCJcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zPVwiMVwiXG5cdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkXCIsIFwiRHJhZnRFZGl0aW5nU3RhdHVzXCJdKX1cblx0XHRcdFx0XHRvcGVyYXRvcnM9XCJFUVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGU9XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcIlxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PVwiJGVkaXRTdGF0ZVwiXG5cdFx0XHRcdFx0ZGlzcGxheT1cIkRlc2NyaXB0aW9uXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50RWRpdDogKFxuXHRcdFx0XHRcdFx0XHQ8U2VsZWN0XG5cdFx0XHRcdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkXCIsIFwiRHJhZnRFZGl0aW5nU3RhdHVzU2VsZWN0XCJdKX1cblx0XHRcdFx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdFx0XHRcdGZvcmNlU2VsZWN0aW9uPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk9XCJ7cGF0aDogJyRmaWVsZD4vY29uZGl0aW9ucycsIHR5cGU6ICdzYXAudWkubWRjLmZpZWxkLkNvbmRpdGlvbnNUeXBlJ31cIlxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0e3sgaXRlbXM6IGRyYWZ0U3RhdGVzLm1hcCgoc3RhdGUpID0+IDxMaXN0SXRlbSBrZXk9e3N0YXRlLmlkfSB0ZXh0PXtzdGF0ZS5kaXNwbGF5fSAvPikgfX1cblx0XHRcdFx0XHRcdFx0PC9TZWxlY3Q+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9NRENGaWx0ZXJGaWVsZD5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHRoaXMuX3ZhbHVlSGVscHMgPSBbXTtcblx0XHR0aGlzLl9maWx0ZXJGaWVsZHMgPSBbXTtcblx0XHR0aGlzLl9maWx0ZXJGaWVsZHM/LnB1c2goZHJhZnRFZGl0U3RhdGUpO1xuXHRcdGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGlvbkZpZWxkcykpIHtcblx0XHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzID0gdGhpcy5zZWxlY3Rpb25GaWVsZHMhLmdldE9iamVjdCgpIGFzIENvbnZlcnRlZEZpbHRlckZpZWxkW107XG5cdFx0fVxuXHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzPy5mb3JFYWNoKChzZWxlY3Rpb25GaWVsZDogQ29udmVydGVkRmlsdGVyRmllbGQpID0+IHtcblx0XHRcdGlmIChzZWxlY3Rpb25GaWVsZC5hdmFpbGFiaWxpdHkgPT09IFwiRGVmYXVsdFwiKSB7XG5cdFx0XHRcdHRoaXMuc2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyhzZWxlY3Rpb25GaWVsZCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5fZmlsdGVyRmllbGRzID0gdGhpcy5fZmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fZmlsdGVyRmllbGRzIDogXCJcIjtcblx0XHR0aGlzLl92YWx1ZUhlbHBzID0gdGhpcy5fdmFsdWVIZWxwcz8ubGVuZ3RoID4gMCA/IHRoaXMuX3ZhbHVlSGVscHMgOiBcIlwiO1xuXHR9O1xuXG5cdGdldFBlcnNpc3RlbmNlUHJvdmlkZXIoZmlsdGVyQmFySWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuaWdub3JlUGVyc29uYWxpemF0aW9uQ2hhbmdlcykge1xuXHRcdFx0cmV0dXJuIDxQZXJzaXN0ZW5jZVByb3ZpZGVyIGlkPXtnZW5lcmF0ZShbZmlsdGVyQmFySWQsIFwiUGVyc2lzdGVuY2VQcm92aWRlclwiXSl9IGZvcj17ZmlsdGVyQmFySWR9IG1vZGU9e1wiVHJhbnNpZW50XCJ9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0c2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyA9IChzZWxlY3Rpb25GaWVsZDogQ29udmVydGVkRmlsdGVyRmllbGQpOiB2b2lkID0+IHtcblx0XHRpZiAoc2VsZWN0aW9uRmllbGQudGVtcGxhdGUgPT09IHVuZGVmaW5lZCAmJiBzZWxlY3Rpb25GaWVsZC50eXBlICE9PSBcIlNsb3RcIikge1xuXHRcdFx0dGhpcy5wdXNoRmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyhzZWxlY3Rpb25GaWVsZCk7XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2ZpbHRlckZpZWxkcykpIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUNvbnRleHQgPSB0aGlzLm1ldGFQYXRoIS5nZXRNb2RlbCgpLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHByb3BlcnR5KTtcblx0XHRcdGNvbnN0IHByb3BlcnR5T2JqZWN0ID0gcHJvcGVydHlDb250ZXh0Py5nZXRPYmplY3QoKTtcblx0XHRcdGxldCBmaWx0ZXJDb250ZW50O1xuXHRcdFx0aWYgKHNlbGVjdGlvbkZpZWxkLnR5cGUgPT09IFwiU2xvdFwiKSB7XG5cdFx0XHRcdGZpbHRlckNvbnRlbnQgPSAoXG5cdFx0XHRcdFx0PFNsb3RDb2x1bW4gdGVtcGxhdGVJZD17c2VsZWN0aW9uRmllbGQudGVtcGxhdGV9PlxuXHRcdFx0XHRcdFx0PHNsb3QgbmFtZT17KHNlbGVjdGlvbkZpZWxkIGFzIE1hbmlmZXN0RmlsdGVyRmllbGQpLnNsb3ROYW1lIX0gLz5cblx0XHRcdFx0XHQ8L1Nsb3RDb2x1bW4+XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2UgaWYgKHNlbGVjdGlvbkZpZWxkLnRlbXBsYXRlKSB7XG5cdFx0XHRcdGZpbHRlckNvbnRlbnQgPSAoXG5cdFx0XHRcdFx0PEN1c3RvbUZyYWdtZW50QmxvY2tcblx0XHRcdFx0XHRcdGZyYWdtZW50TmFtZT17c2VsZWN0aW9uRmllbGQudGVtcGxhdGV9XG5cdFx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiQ3VzdG9tRmlsdGVyRmllbGRcIiwgc2VsZWN0aW9uRmllbGQua2V5XSl9XG5cdFx0XHRcdFx0XHRjb250ZXh0UGF0aD17XCJ7Y29udGV4dFBhdGg+fVwiIGFzIHVua25vd24gYXMgQ29udGV4dH1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bGV0IG1heENvbmRpdGlvblZhbHVlID0gLTE7XG5cdFx0XHRpZiAocHJvcGVydHlDb250ZXh0KSB7XG5cdFx0XHRcdG1heENvbmRpdGlvblZhbHVlID0gbWF4Q29uZGl0aW9ucyhzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aCwgeyBjb250ZXh0OiBwcm9wZXJ0eUNvbnRleHQgfSkgPz8gLTE7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9maWx0ZXJGaWVsZHM/LnB1c2goXG5cdFx0XHRcdDxNRENGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJDdXN0b21GaWx0ZXJGaWVsZFwiLCBzZWxlY3Rpb25GaWVsZC5rZXldKX1cblx0XHRcdFx0XHRkZWxlZ2F0ZT17eyBuYW1lOiBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRCYXNlRGVsZWdhdGVcIiB9fVxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PXtzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRofVxuXHRcdFx0XHRcdGxhYmVsPXtzZWxlY3Rpb25GaWVsZC5sYWJlbH1cblx0XHRcdFx0XHRkYXRhVHlwZT17c2VsZWN0aW9uRmllbGQuZGF0YVR5cGV9XG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9ucz17bWF4Q29uZGl0aW9uVmFsdWV9XG5cdFx0XHRcdFx0Y29uZGl0aW9ucz17YHskZmlsdGVycz4vY29uZGl0aW9ucy8ke3NlbGVjdGlvbkZpZWxkLmNvbmRpdGlvblBhdGh9fWB9XG5cdFx0XHRcdFx0b3BlcmF0b3JzPXtGaWVsZEhlbHBlci5vcGVyYXRvcnMoXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eU9iamVjdCxcblx0XHRcdFx0XHRcdHRoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2UsXG5cdFx0XHRcdFx0XHRzZWxlY3Rpb25GaWVsZC5zZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcdHRoaXMuY29udGV4dFBhdGghLmdldFBhdGgoKVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0ZGF0YVR5cGVDb25zdHJhaW50cz17KHNlbGVjdGlvbkZpZWxkIGFzIHVua25vd24gYXMgeyBjb25zdHJhaW50czogdW5rbm93biB9KS5jb25zdHJhaW50c31cblx0XHRcdFx0XHRkYXRhVHlwZUZvcm1hdE9wdGlvbnM9eyhzZWxlY3Rpb25GaWVsZCBhcyB1bmtub3duIGFzIHsgZm9ybWF0T3B0aW9uczogdW5rbm93biB9KS5mb3JtYXRPcHRpb25zfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17XCJ1bmRlZmluZWRcIn1cblx0XHRcdFx0XHRyZXF1aXJlZD17c2VsZWN0aW9uRmllbGQucmVxdWlyZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclxuXHRcdFx0XHRcdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntoYW5kbGVyOiAnc2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHMnfVwiXG5cdFx0XHRcdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJcIiwgc2VsZWN0aW9uRmllbGQua2V5XSl9XG5cdFx0XHRcdFx0XHRcdFx0YmluZGluZz17YHtmaWx0ZXJWYWx1ZXM+LyR7RmlsdGVyVXRpbHMuY29uZGl0aW9uVG9Nb2RlbFBhdGgoc2VsZWN0aW9uRmllbGQuY29uZGl0aW9uUGF0aCl9fWB9XG5cdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9ucz17XCJ7cGF0aDogJyRmaWVsZD4vY29uZGl0aW9ucyd9XCIgYXMgdW5rbm93biBhcyBDb25kaXRpb25PYmplY3RbXX1cblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdHt7IGNvbnRlbnQ6IGZpbHRlckNvbnRlbnQgfX1cblx0XHRcdFx0XHRcdFx0PC9DdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyPlxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IFtcblx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImlzU2xvdFwifSB2YWx1ZT17c2VsZWN0aW9uRmllbGQudHlwZSA9PT0gXCJTbG90XCJ9IC8+LFxuXHRcdFx0XHRcdFx0XHQ8RmllbGRIZWxwQ3VzdG9tRGF0YVxuXHRcdFx0XHRcdFx0XHRcdGtleT17XCJzYXAtdWktRG9jdW1lbnRhdGlvblJlZlwifVxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtge3BhcnRzOiBbe3ZhbHVlOiAnYXNBcnJheSd9LCB7dmFsdWU6ICcke3NlbGVjdGlvbkZpZWxkLmRvY3VtZW50UmVmVGV4dH0nfV0sIGZvcm1hdHRlcjogJy5fZm9ybWF0dGVycy5TdGFuZGFyZEZvcm1hdHRlcid9YH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L01EQ0ZpbHRlckZpZWxkPlxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cblx0X2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQ6IENvbnZlcnRlZEZpbHRlckZpZWxkLCBmaWx0ZXJCYXJDb250ZXh0UGF0aDogQ29udGV4dCk6IHN0cmluZyB7XG5cdFx0bGV0IGNvbnRleHRQYXRoOiBzdHJpbmcgPSBmaWx0ZXJCYXJDb250ZXh0UGF0aD8uZ2V0UGF0aCgpO1xuXHRcdGlmIChzZWxlY3Rpb25GaWVsZC5pc1BhcmFtZXRlcikge1xuXHRcdFx0Ly8gRXhhbXBsZTpcblx0XHRcdC8vIEZpbHRlckJhckNvbnRleHRQYXRoOiAvQ3VzdG9tZXIvU2V0XG5cdFx0XHQvLyBQYXJhbWV0ZXJQcm9wZXJ0eVBhdGg6IC9DdXN0b21lci9QX0NDXG5cdFx0XHQvLyBDb250ZXh0UGF0aEZvckZpbHRlckZpZWxkOiAvQ3VzdG9tZXJcblx0XHRcdGNvbnN0IGFubm9QYXRoID0gc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRjb250ZXh0UGF0aCA9IGFubm9QYXRoLnN1YnN0cmluZygwLCBhbm5vUGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoO1xuXHR9XG5cblx0cHVzaEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMgPSAoc2VsZWN0aW9uRmllbGQ6IENvbnZlcnRlZEZpbHRlckZpZWxkKTogdm9pZCA9PiB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fZmlsdGVyRmllbGRzKSkge1xuXHRcdFx0Y29uc3QgdmYgPSB7IC4uLnNlbGVjdGlvbkZpZWxkLnZpc3VhbEZpbHRlciwgLi4ueyBpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZDogIXRoaXMuc3VzcGVuZFNlbGVjdGlvbiB9IH07XG5cdFx0XHR0aGlzLl9maWx0ZXJGaWVsZHM/LnB1c2goXG5cdFx0XHRcdDxJbnRlcm5hbEZpbHRlckZpZWxkXG5cdFx0XHRcdFx0aWRQcmVmaXg9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkXCIsIENvbW1vbkhlbHBlci5nZXROYXZpZ2F0aW9uUGF0aChzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aCldKX1cblx0XHRcdFx0XHR2aElkUHJlZml4PXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFZhbHVlSGVscFwiXSl9XG5cdFx0XHRcdFx0cHJvcGVydHk9e3NlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRoIGFzIHVua25vd24gYXMgQ29udGV4dH1cblx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5fZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZCwgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCkgYXMgdW5rbm93biBhcyBDb250ZXh0fVxuXHRcdFx0XHRcdHVzZVNlbWFudGljRGF0ZVJhbmdlPXt0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlfVxuXHRcdFx0XHRcdGxhYmVsPXtzZWxlY3Rpb25GaWVsZC5sYWJlbH1cblx0XHRcdFx0XHRzZXR0aW5ncz17Q29tbW9uSGVscGVyLnN0cmluZ2lmeUN1c3RvbURhdGEoc2VsZWN0aW9uRmllbGQuc2V0dGluZ3MpfVxuXHRcdFx0XHRcdHZpc3VhbEZpbHRlcj17c2VsZWN0aW9uRmllbGQudmlzdWFsRmlsdGVyICE9PSB1bmRlZmluZWQgPyAoc3RvcmVPYmplY3RWYWx1ZSh2ZikgYXMgdW5rbm93biBhcyBDb250ZXh0KSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0XHRlZGl0TW9kZT17YHtpbnRlcm5hbD4vJHt0aGlzLmlkfS9maWx0ZXJGaWVsZHMvJHtzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRofS9lZGl0TW9kZX1gfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fdmFsdWVIZWxwcykpIHtcblx0XHRcdHRoaXMuX3ZhbHVlSGVscHM/LnB1c2goXG5cdFx0XHRcdDxWYWx1ZUhlbHBcblx0XHRcdFx0XHRpZFByZWZpeD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRWYWx1ZUhlbHBcIl0pfVxuXHRcdFx0XHRcdGNvbmRpdGlvbk1vZGVsPVwiJGZpbHRlcnNcIlxuXHRcdFx0XHRcdG1ldGFQYXRoPXtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aH1cblx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5fZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZCwgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCl9XG5cdFx0XHRcdFx0ZmlsdGVyRmllbGRWYWx1ZUhlbHA9e3RydWV9XG5cdFx0XHRcdFx0dXNlU2VtYW50aWNEYXRlUmFuZ2U9e3RoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2V9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB0aGUgZGVzaWduIHRpbWUgZm9yIHRoZSBNREMgRmlsdGVyQmFyLlxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gZHQ6ZGVzaWdudGltZVxuXHQgKi9cblx0Z2V0RGVzaWdudGltZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL2Rlc2lnbnRpbWUvRmlsdGVyQmFyLmRlc2lnbnRpbWVcIjtcblx0fVxuXG5cdGdldFRlbXBsYXRlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaW50ZXJuYWxDb250ZXh0UGF0aCA9IHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGg/LmdldFBhdGgoKTtcblx0XHRsZXQgZmlsdGVyRGVsZWdhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLmZpbHRlckJhckRlbGVnYXRlKSB7XG5cdFx0XHRmaWx0ZXJEZWxlZ2F0ZSA9IHRoaXMuZmlsdGVyQmFyRGVsZWdhdGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZpbHRlckRlbGVnYXRlID0gXCJ7bmFtZTonc2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyRGVsZWdhdGUnLCBwYXlsb2FkOiB7ZW50aXR5VHlwZVBhdGg6ICdcIiArIGludGVybmFsQ29udGV4dFBhdGggKyBcIid9fVwiO1xuXHRcdH1cblx0XHQvLyBhZnRlciByZW1vdmluZyB0aGUgdW53YW50ZWQgcHJvcGVydGllcyBQcm9wZXJ0eUluZm8gaXMgYWRkZWQgdG8gdGhlIGNvbnRyb2wsIGFuZCB3ZSBhbHNvIHNhdmUgdGhlIGZ1bGwgdmVyc2lvbiBhcyBjdXN0b20gZGF0YSBmb3IgRkUgaW50ZXJuYWwgdXNlXG5cdFx0Y29uc3QgX3Byb3BlcnR5SW5mb0NvbnRyb2wgPSBGaWx0ZXJVdGlscy5mb3JtYXRQcm9wZXJ0eUluZm8odGhpcy5wcm9wZXJ0eUluZm8gYXMgc3RyaW5nKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEZpbHRlckJhckFQSVxuXHRcdFx0XHRpZD17dGhpcy5fYXBpSWR9XG5cdFx0XHRcdG1ldGFQYXRoPXt0aGlzLm1ldGFQYXRoIS5nZXRQYXRoKCl9XG5cdFx0XHRcdHNlYXJjaD17dGhpcy5zZWFyY2h9XG5cdFx0XHRcdGZpbHRlckNoYW5nZWQ9e3RoaXMuZmlsdGVyQ2hhbmdlZH1cblx0XHRcdFx0YWZ0ZXJDbGVhcj17dGhpcy5hZnRlckNsZWFyfVxuXHRcdFx0XHRpbnRlcm5hbFNlYXJjaD17dGhpcy5pbnRlcm5hbFNlYXJjaH1cblx0XHRcdFx0aW50ZXJuYWxGaWx0ZXJDaGFuZ2VkPXt0aGlzLmludGVybmFsRmlsdGVyQ2hhbmdlZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8RkVGaWx0ZXJCYXJcblx0XHRcdFx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0FQSTogJ3NhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSSd9XCJcblx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuX2NvbnRlbnRJZH1cblx0XHRcdFx0XHRcdFx0bGl2ZU1vZGU9e3RoaXMubGl2ZU1vZGV9XG5cdFx0XHRcdFx0XHRcdGRlbGVnYXRlPXtmaWx0ZXJEZWxlZ2F0ZX1cblx0XHRcdFx0XHRcdFx0dmFyaWFudEJhY2tyZWZlcmVuY2U9e3RoaXMubGl2ZU1vZGUgPyB1bmRlZmluZWQgOiB0aGlzLnZhcmlhbnRCYWNrcmVmZXJlbmNlfVxuXHRcdFx0XHRcdFx0XHRzaG93QWRhcHRGaWx0ZXJzQnV0dG9uPXt0aGlzLnNob3dBZGFwdEZpbHRlcnNCdXR0b259XG5cdFx0XHRcdFx0XHRcdHNob3dDbGVhckJ1dHRvbj17dGhpcy5zaG93Q2xlYXJCdXR0b259XG5cdFx0XHRcdFx0XHRcdHAxM25Nb2RlPXt0aGlzLnAxM25Nb2RlfVxuXHRcdFx0XHRcdFx0XHRzZWFyY2g9e1wiQVBJLmhhbmRsZVNlYXJjaCgkZXZlbnQpXCIgYXMgdW5rbm93biBhcyAoZTogRmlsdGVyQmFyQmFzZSRTZWFyY2hFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0XHRcdFx0ZmlsdGVyc0NoYW5nZWQ9e1wiQVBJLmhhbmRsZUZpbHRlckNoYW5nZWQoJGV2ZW50KVwiIGFzIHVua25vd24gYXMgKGU6IEZpbHRlckJhckJhc2UkRmlsdGVyc0NoYW5nZWRFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0XHRcdFx0ZmlsdGVyQ29uZGl0aW9ucz17dGhpcy5maWx0ZXJDb25kaXRpb25zfVxuXHRcdFx0XHRcdFx0XHRzdXNwZW5kU2VsZWN0aW9uPXt0aGlzLnN1c3BlbmRTZWxlY3Rpb259XG5cdFx0XHRcdFx0XHRcdHNob3dNZXNzYWdlcz17dGhpcy5zaG93TWVzc2FnZXN9XG5cdFx0XHRcdFx0XHRcdHRvZ2dsZUNvbnRyb2w9e3RoaXMudG9nZ2xlQ29udHJvbElkfVxuXHRcdFx0XHRcdFx0XHRpbml0aWFsTGF5b3V0PXt0aGlzLmluaXRpYWxMYXlvdXR9XG5cdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMudmlzaWJsZX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZURyYWZ0RWRpdFN0YXRlRmlsdGVyPXt0aGlzLmRpc2FibGVEcmFmdEVkaXRTdGF0ZUZpbHRlcn1cblx0XHRcdFx0XHRcdFx0ZHQ6ZGVzaWdudGltZT17dGhpcy5kZXNpZ250aW1lfVxuXHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhOmVudGl0eVR5cGU9e2ludGVybmFsQ29udGV4dFBhdGh9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YTogW1xuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImxvY2FsSWRcIn0gdmFsdWU9e3RoaXMuaWR9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImhpZGVCYXNpY1NlYXJjaFwifSB2YWx1ZT17dGhpcy5oaWRlQmFzaWNTZWFyY2h9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcInNob3dEcmFmdEVkaXRTdGF0ZVwifSB2YWx1ZT17dGhpcy5zaG93RHJhZnRFZGl0U3RhdGV9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcInVzZVNlbWFudGljRGF0ZVJhbmdlXCJ9IHZhbHVlPXt0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJwYXJhbWV0ZXJzXCJ9IHZhbHVlPXt0aGlzLl9wYXJhbWV0ZXJzfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJmZUZpbHRlckluZm9cIn0gdmFsdWU9e3RoaXMucHJvcGVydHlJbmZvfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJhbm5vdGF0aW9uUGF0aFwifSB2YWx1ZT17dGhpcy5fYW5ub3RhdGlvblBhdGh9IC8+XG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbnRzOiBbdGhpcy5fdmFsdWVIZWxwcywgdGhpcy5nZXRQZXJzaXN0ZW5jZVByb3ZpZGVyKHRoaXMuX2NvbnRlbnRJZCBhcyBzdHJpbmcpXSxcblx0XHRcdFx0XHRcdFx0XHRiYXNpY1NlYXJjaEZpZWxkOiB0aGlzLmdldFNlYXJjaCgpLFxuXHRcdFx0XHRcdFx0XHRcdGZpbHRlckl0ZW1zOiB0aGlzLl9maWx0ZXJGaWVsZHNcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvRkVGaWx0ZXJCYXI+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9GaWx0ZXJCYXJBUEk+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtREEsTUFBTUEsOEJBQThCLEdBQUcsU0FBQUEsQ0FBVUMsZ0JBQXlCLEVBQUVDLGlCQUE4QixFQUFlO0lB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
|
|
780
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMiLCJjaGlsZEZpbHRlckZpZWxkIiwiYWdncmVnYXRpb25PYmplY3QiLCJzbG90TmFtZSIsImtleSIsInJlcGxhY2UiLCJwcm9wZXJ0eSIsImdldEF0dHJpYnV0ZSIsImxhYmVsIiwicmVxdWlyZWQiLCJ0ZW1wbGF0ZSIsIkZpbHRlckJhckJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidHlwZSIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJibG9ja0V2ZW50IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImhhc1ZpcnR1YWxOb2RlIiwicHJvY2Vzc0FnZ3JlZ2F0aW9ucyIsIl9kZWMzMiIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbmZpZ3VyYXRpb24iLCJtU2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfZGVzY3JpcHRvcjMwIiwic2hvd0RyYWZ0RWRpdFN0YXRlIiwiX2Rlc2NyaXB0b3IzMSIsImNoZWNrSWZFZGl0aW5nRmlsdGVySXNEaXNhYmxlZCIsInRhcmdldEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwic29tZSIsInIiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJ2YWx1ZSIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlcmFibGUiLCJjaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJpc0RyYWZ0Q29sbGFib3JhdGl2ZSIsImdldEVudGl0eVR5cGVQYXRoIiwibWV0YVBhdGhQYXJ0cyIsImVuZHNXaXRoIiwiZ2V0U2VhcmNoIiwiaGlkZUJhc2ljU2VhcmNoIiwiX2pzeCIsIk1EQ0ZpbHRlckZpZWxkIiwiaWQiLCJnZW5lcmF0ZSIsInBsYWNlaG9sZGVyIiwicHJvcGVydHlLZXkiLCJjb25kaXRpb25zIiwiZGF0YVR5cGUiLCJtYXhDb25kaXRpb25zIiwiZGF0YVR5cGVDb25zdHJhaW50cyIsInByb2Nlc3NTZWxlY3Rpb25GaWVsZHMiLCJkcmFmdEVkaXRTdGF0ZSIsImRyYWZ0U3RhdGVzIiwiRHJhZnRFZGl0U3RhdGUiLCJnZXRFZGl0U3RhdGVzIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJvcGVyYXRvcnMiLCJkaXNwbGF5IiwiY2hpbGRyZW4iLCJjb250ZW50RWRpdCIsIlNlbGVjdCIsIndpZHRoIiwiZm9yY2VTZWxlY3Rpb24iLCJzZWxlY3RlZEtleSIsIml0ZW1zIiwibWFwIiwic3RhdGUiLCJMaXN0SXRlbSIsInRleHQiLCJfdmFsdWVIZWxwcyIsIl9maWx0ZXJGaWVsZHMiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VsZWN0aW9uRmllbGRzIiwiZ2V0T2JqZWN0IiwiZm9yRWFjaCIsInNlbGVjdGlvbkZpZWxkIiwiYXZhaWxhYmlsaXR5Iiwic2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzIiwiYW5ub3RhdGlvblBhdGgiLCJwcm9wZXJ0eUNvbnRleHQiLCJtZXRhUGF0aCIsImdldE1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJwcm9wZXJ0eU9iamVjdCIsImZpbHRlckNvbnRlbnQiLCJTbG90Q29sdW1uIiwidGVtcGxhdGVJZCIsIkN1c3RvbUZyYWdtZW50QmxvY2siLCJmcmFnbWVudE5hbWUiLCJjb250ZXh0UGF0aCIsIm1heENvbmRpdGlvblZhbHVlIiwiY29udGV4dCIsImRlbGVnYXRlIiwiY29uZGl0aW9uUGF0aCIsIkZpZWxkSGVscGVyIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJzZXR0aW5ncyIsImdldFBhdGgiLCJjb25zdHJhaW50cyIsImRhdGFUeXBlRm9ybWF0T3B0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJ2YWx1ZUhlbHAiLCJjb250ZW50IiwiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImJpbmRpbmciLCJGaWx0ZXJVdGlscyIsImNvbmRpdGlvblRvTW9kZWxQYXRoIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJGaWVsZEhlbHBDdXN0b21EYXRhIiwiZG9jdW1lbnRSZWZUZXh0IiwidmYiLCJ2aXN1YWxGaWx0ZXIiLCJpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZCIsInN1c3BlbmRTZWxlY3Rpb24iLCJJbnRlcm5hbEZpbHRlckZpZWxkIiwiaWRQcmVmaXgiLCJDb21tb25IZWxwZXIiLCJnZXROYXZpZ2F0aW9uUGF0aCIsInZoSWRQcmVmaXgiLCJfZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZCIsIl9pbnRlcm5hbENvbnRleHRQYXRoIiwic3RyaW5naWZ5Q3VzdG9tRGF0YSIsInN0b3JlT2JqZWN0VmFsdWUiLCJlZGl0TW9kZSIsIlZhbHVlSGVscCIsImNvbmRpdGlvbk1vZGVsIiwiZmlsdGVyRmllbGRWYWx1ZUhlbHAiLCJMb2ciLCJlcnJvciIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzTWV0YVBhdGgiLCJlbnRpdHlUeXBlUGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwicGFyZW50Q29udGV4dFBhdGgiLCJmdWxsQ29udGV4dFBhdGgiLCJzT2JqZWN0UGF0aCIsInN0YXJ0c1dpdGgiLCJfYW5ub3RhdGlvblBhdGgiLCJvRXh0cmFQYXJhbXMiLCJmaWx0ZXJGaWVsZHMiLCJvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJwcm9wZXJ0eUluZm8iLCJnZXRTZWxlY3Rpb25GaWVsZHMiLCJzUHJvcGVydHlJbmZvIiwiQ29tbW9uIiwiRHJhZnRSb290IiwiZGlzYWJsZURyYWZ0RWRpdFN0YXRlRmlsdGVyIiwib1NlbGVjdGlvbkZpZWxkcyIsIlRlbXBsYXRlTW9kZWwiLCJ2aWV3RGF0YSIsIm1vZGVscyIsImdldERhdGEiLCJvRW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJvRW50aXR5U2V0Q29udGV4dCIsImdldENvbnRleHQiLCJvRmlsdGVyQ29uZGl0aW9ucyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJzZWxlY3Rpb25WYXJpYW50IiwiZmlsdGVyQ29uZGl0aW9ucyIsIl9wcm9jZXNzUHJvcGVydHlJbmZvcyIsIl9hcHBseUlkVG9Db250ZW50IiwiX2FwaUlkIiwiX2NvbnRlbnRJZCIsImdldENvbnRlbnRJZCIsIm9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24iLCJnZXRTZWFyY2hSZXN0cmljdGlvbnMiLCJCb29sZWFuIiwiU2VhcmNoYWJsZSIsImpzeCIsInJlbmRlckFzWE1MIiwiZGVzaWdudGltZSIsImdldERlc2lnbnRpbWUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwibW9kZWwiLCJhUGFyYW1ldGVyRmllbGRzIiwic0ZldGNoZWRQcm9wZXJ0aWVzIiwiYUZldGNoZWRQcm9wZXJ0aWVzIiwiSlNPTiIsInBhcnNlIiwiZWRpdFN0YXRlTGFiZWwiLCJwcm9wSW5mbyIsImlzUGFyYW1ldGVyIiwicGF0aCIsImluY2x1ZGVzIiwicHJvcGVydHlMb2NhdGlvblBhdGgiLCJnZXRMb2NhdGlvbkZvclByb3BlcnR5UGF0aCIsInByb3BlcnR5UGF0aCIsImRhdGFNb2RlbCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEZpbHRlclJlc3RyaWN0aW9uc0J5RGF0YU1vZGVsIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwic3RyaW5naWZ5IiwiX3BhcmFtZXRlcnMiLCJnZXRQZXJzaXN0ZW5jZVByb3ZpZGVyIiwiZmlsdGVyQmFySWQiLCJpZ25vcmVQZXJzb25hbGl6YXRpb25DaGFuZ2VzIiwiUGVyc2lzdGVuY2VQcm92aWRlciIsImZvciIsIm1vZGUiLCJmaWx0ZXJCYXJDb250ZXh0UGF0aCIsImFubm9QYXRoIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJnZXRUZW1wbGF0ZSIsImludGVybmFsQ29udGV4dFBhdGgiLCJmaWx0ZXJEZWxlZ2F0ZSIsImZpbHRlckJhckRlbGVnYXRlIiwiX3Byb3BlcnR5SW5mb0NvbnRyb2wiLCJmb3JtYXRQcm9wZXJ0eUluZm8iLCJoYXNPdmVycmlkZSIsImNoZWNrSWZSZXNvdXJjZUtleUV4aXN0cyIsImFkYXB0RmlsdGVyc05vblplcm9UZXh0IiwiYWRhcHRGaWx0ZXJzVGV4dCIsInJlcGxhY2VBbGwiLCJGaWx0ZXJCYXJBUEkiLCJzZWFyY2giLCJmaWx0ZXJDaGFuZ2VkIiwiYWZ0ZXJDbGVhciIsImludGVybmFsU2VhcmNoIiwiaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkIiwiRkVGaWx0ZXJCYXIiLCJhZGFwdEZpbHRlcnNUZXh0Tm9uWmVybyIsImxpdmVNb2RlIiwidmFyaWFudEJhY2tyZWZlcmVuY2UiLCJzaG93QWRhcHRGaWx0ZXJzQnV0dG9uIiwic2hvd0NsZWFyQnV0dG9uIiwicDEzbk1vZGUiLCJmaWx0ZXJzQ2hhbmdlZCIsInNob3dNZXNzYWdlcyIsInRvZ2dsZUNvbnRyb2wiLCJ0b2dnbGVDb250cm9sSWQiLCJpbml0aWFsTGF5b3V0IiwidmlzaWJsZSIsImRlcGVuZGVudHMiLCJiYXNpY1NlYXJjaEZpZWxkIiwiZmlsdGVySXRlbXMiLCJCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckJhci5ibG9jay50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQganN4IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBUZW1wbGF0ZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZU1vZGVsXCI7XG5pbXBvcnQge1xuXHRibG9ja0FnZ3JlZ2F0aW9uLFxuXHRibG9ja0F0dHJpYnV0ZSxcblx0YmxvY2tFdmVudCxcblx0ZGVmaW5lQnVpbGRpbmdCbG9ja1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBzdG9yZU9iamVjdFZhbHVlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZVwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRTZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgRmlsdGVyUmVzdHJpY3Rpb25zIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9maWx0ZXIvRmlsdGVyUmVzdHJpY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckZpZWxkIGFzIENvbnZlcnRlZEZpbHRlckZpZWxkLCBNYW5pZmVzdEZpbHRlckZpZWxkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvTGlzdFJlcG9ydC9GaWx0ZXJCYXJcIjtcbmltcG9ydCB7IGdldFNlbGVjdGlvbkZpZWxkcyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyQmFyXCI7XG5pbXBvcnQgeyBnZXRTZWFyY2hSZXN0cmljdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhTW9kZWxGdW5jdGlvblwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyBtYXhDb25kaXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlckZpZWxkSGVscGVyXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgRHJhZnRFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RyYWZ0RWRpdFN0YXRlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJGaWVsZCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB7IGdldEZpbHRlckNvbmRpdGlvbnMgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgQ3VzdG9tRnJhZ21lbnRCbG9jayBmcm9tIFwic2FwL2ZlL21hY3Jvcy9mcG0vQ3VzdG9tRnJhZ21lbnQuYmxvY2tcIjtcbmltcG9ydCBJbnRlcm5hbEZpbHRlckZpZWxkIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL0ZpbHRlckZpZWxkLmJsb2NrXCI7XG5pbXBvcnQgU2VsZWN0IGZyb20gXCJzYXAvbS9TZWxlY3RcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBMaXN0SXRlbSBmcm9tIFwic2FwL3VpL2NvcmUvTGlzdEl0ZW1cIjtcbmltcG9ydCBGaWVsZEhlbHBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9maWVsZGhlbHAvRmllbGRIZWxwQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgeyBJQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1hNTFByZXByb2Nlc3NvclwiO1xuaW1wb3J0IE1EQ0ZpbHRlckZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbk9iamVjdCB9IGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0RmlsdGVyQmFyQmFzZSRGaWx0ZXJzQ2hhbmdlZEV2ZW50LFxuXHRGaWx0ZXJCYXJCYXNlJEZpbHRlcnNDaGFuZ2VkRXZlbnRQYXJhbWV0ZXJzLFxuXHRGaWx0ZXJCYXJCYXNlJFNlYXJjaEV2ZW50XG59IGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9GaWx0ZXJCYXJCYXNlXCI7XG5pbXBvcnQgUGVyc2lzdGVuY2VQcm92aWRlciBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1BlcnNpc3RlbmNlUHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YVY0Q29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi4vRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgVmFsdWVIZWxwIGZyb20gXCIuLi9WYWx1ZUhlbHBcIjtcbmltcG9ydCBDdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyIGZyb20gXCIuLi9jb250cm9scy9DdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyXCI7XG5pbXBvcnQgRkVGaWx0ZXJCYXIgZnJvbSBcIi4uL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IFNsb3RDb2x1bW4gZnJvbSBcIi4uL3RhYmxlL1Nsb3RDb2x1bW5cIjtcbmltcG9ydCBGaWx0ZXJCYXJBUEkgZnJvbSBcIi4vRmlsdGVyQmFyQVBJXCI7XG5cbmNvbnN0IHNldEN1c3RvbUZpbHRlckZpZWxkUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjaGlsZEZpbHRlckZpZWxkOiBFbGVtZW50LCBhZ2dyZWdhdGlvbk9iamVjdDogRmlsdGVyRmllbGQpOiBGaWx0ZXJGaWVsZCB7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LnNsb3ROYW1lID0gYWdncmVnYXRpb25PYmplY3Qua2V5O1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIik7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LnByb3BlcnR5ID0gY2hpbGRGaWx0ZXJGaWVsZC5nZXRBdHRyaWJ1dGUoXCJwcm9wZXJ0eVwiKSE7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmxhYmVsID0gY2hpbGRGaWx0ZXJGaWVsZC5nZXRBdHRyaWJ1dGUoXCJsYWJlbFwiKSE7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LnJlcXVpcmVkID0gY2hpbGRGaWx0ZXJGaWVsZC5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA9PT0gXCJ0cnVlXCI7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LnRlbXBsYXRlID0gY2hpbGRGaWx0ZXJGaWVsZC5nZXRBdHRyaWJ1dGUoXCJ0ZW1wbGF0ZVwiKSBhcyB1bmtub3duIGFzIENvbnRyb2w7IC8vIEJ1dCBpdCdzIGEgc3RyaW5nO1xuXHRyZXR1cm4gYWdncmVnYXRpb25PYmplY3Q7XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIEZpbHRlckJhciBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpGaWx0ZXJCYXJcbiAqIGlkPVwiU29tZUlEXCJcbiAqIHNob3dBZGFwdEZpbHRlcnNCdXR0b249XCJ0cnVlXCJcbiAqIHAxM25Nb2RlPVtcIkl0ZW1cIixcIlZhbHVlXCJdXG4gKiBsaXN0QmluZGluZ05hbWVzID0gXCJzYXAuZmUudGFibGVCaW5kaW5nXCJcbiAqIGxpdmVNb2RlPVwidHJ1ZVwiXG4gKiBzZWFyY2g9XCIuaGFuZGxlcnMub25TZWFyY2hcIlxuICogZmlsdGVyQ2hhbmdlZD1cIi5oYW5kbGVycy5vbkZpbHRlcnNDaGFuZ2VkXCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWx0ZXJCYXIgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogQHNpbmNlIDEuOTQuMFxuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiRmlsdGVyQmFyXCIsXG5cdG5hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zLmludGVybmFsXCIsXG5cdHB1YmxpY05hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zXCIsXG5cdHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWx0ZXJCYXJCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSB7XG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0aWQ/OiBzdHJpbmc7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHR2aXNpYmxlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBzZWxlY3Rpb25GaWVsZHMgdG8gYmUgZGlzcGxheWVkXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIlxuXHR9KVxuXHRzZWxlY3Rpb25GaWVsZHM/OiBDb252ZXJ0ZWRGaWx0ZXJGaWVsZFtdIHwgQ29udGV4dDtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhckRlbGVnYXRlPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdG1ldGFQYXRoPzogQ29udGV4dDtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRjb250ZXh0UGF0aD86IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIERpc3BsYXlzIHBvc3NpYmxlIGVycm9ycyBkdXJpbmcgdGhlIHNlYXJjaCBpbiBhIG1lc3NhZ2UgYm94XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHNob3dNZXNzYWdlcyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgYXNzaWduZWQgdmFyaWFudCBtYW5hZ2VtZW50XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dmFyaWFudEJhY2tyZWZlcmVuY2U/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERvbid0IHNob3cgdGhlIGJhc2ljIHNlYXJjaCBmaWVsZFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRoaWRlQmFzaWNTZWFyY2g/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBFbmFibGVzIHRoZSBmYWxsYmFjayB0byBzaG93IGFsbCBmaWVsZHMgb2YgdGhlIEVudGl0eVR5cGUgYXMgZmlsdGVyIGZpZWxkcyBpZiBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHMgYXJlIG5vdCBwcmVzZW50XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGVuYWJsZUZhbGxiYWNrID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdmlzaWJpbGl0eSBvZiB0aGUgJ0FkYXB0IEZpbHRlcnMnIGJ1dHRvbiBvbiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHNob3dBZGFwdEZpbHRlcnNCdXR0b24gPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIHBlcnNvbmFsaXphdGlvbiBvcHRpb25zIGZvciB0aGUgZmlsdGVyIGJhci5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdbXVwiXG5cdH0pXG5cdHAxM25Nb2RlID0gXCJJdGVtLFZhbHVlXCI7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHByb3BlcnR5SW5mbz86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBTZW1hdGljIERhdGUgUmFuZ2Ugb3B0aW9uIGZvciB0aGUgZmlsdGVyIGJhci5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0dXNlU2VtYW50aWNEYXRlUmFuZ2UgPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIG5hdmlnYXRpb24gcHJvcGVydGllcyBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgYmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1tdXCJcblx0fSlcblx0bmF2aWdhdGlvblByb3BlcnRpZXM/OiBzdHJpbmdbXTtcblxuXHQvKipcblx0ICogSWYgc2V0LCB0aGUgc2VhcmNoIGlzIGF1dG9tYXRpY2FsbHkgdHJpZ2dlcmVkIHdoZW4gYSBmaWx0ZXIgdmFsdWUgaXMgY2hhbmdlZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0bGl2ZU1vZGUgPSBmYWxzZTtcblxuXHQvKipcblx0ICogRmlsdGVyIGNvbmRpdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZmlsdGVyIGJhclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiBmYWxzZVxuXHR9KVxuXHRmaWx0ZXJDb25kaXRpb25zPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQgdG8gPGNvZGU+dHJ1ZTwvY29kZT4sIGFsbCBzZWFyY2ggcmVxdWVzdHMgYXJlIGlnbm9yZWQuIE9uY2UgaXQgaGFzIGJlZW4gc2V0IHRvIDxjb2RlPmZhbHNlPC9jb2RlPixcblx0ICogYSBzZWFyY2ggaXMgdHJpZ2dlcmVkIGltbWVkaWF0ZWx5IGlmIG9uZSBvciBtb3JlIHNlYXJjaCByZXF1ZXN0cyBoYXZlIGJlZW4gdHJpZ2dlcmVkIGluIHRoZSBtZWFudGltZVxuXHQgKiBidXQgd2VyZSBpZ25vcmVkIGJhc2VkIG9uIHRoZSBzZXR0aW5nLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRzdXNwZW5kU2VsZWN0aW9uID0gZmFsc2U7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRpc0RyYWZ0Q29sbGFib3JhdGl2ZSA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBJZCBvZiBjb250cm9sIHRoYXQgd2lsbCBhbGxvdyBmb3Igc3dpdGNoaW5nIGJldHdlZW4gbm9ybWFsIGFuZCB2aXN1YWwgZmlsdGVyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dG9nZ2xlQ29udHJvbElkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRpbml0aWFsTGF5b3V0ID0gXCJjb21wYWN0XCI7XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlICdDbGVhcicgYnV0dG9uIG9uIHRoZSBGaWx0ZXJCYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHNob3dDbGVhckJ1dHRvbiA9IGZhbHNlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0X2FwcGx5SWRUb0NvbnRlbnQgPSBmYWxzZTtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGRpc2FibGVEcmFmdEVkaXRTdGF0ZUZpbHRlciA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBUZW1wb3Jhcnkgd29ya2Fyb3VuZCBvbmx5XG5cdCAqIHBhdGggdG8gY29udGV4dFBhdGggdG8gYmUgdXNlZCBieSBjaGlsZCBmaWx0ZXJmaWVsZHNcblx0ICovXG5cdF9pbnRlcm5hbENvbnRleHRQYXRoITogQ29udGV4dDtcblxuXHRfcGFyYW1ldGVyczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF9hbm5vdGF0aW9uUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBzZWFyY2ggZXZlbnQgb2YgdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzZWFyY2g/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8e30sIEZpbHRlckJhckFQST4+O1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBmaWx0ZXJDaGFuZ2UgZXZlbnQgb2YgdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRmaWx0ZXJDaGFuZ2VkPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PEZpbHRlckJhckJhc2UkRmlsdGVyc0NoYW5nZWRFdmVudFBhcmFtZXRlcnMsIEZpbHRlckJhckFQST4+O1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBmaWx0ZXJDaGFuZ2VkIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXIuIEV4cG9zZXMgcGFyYW1ldGVycyBmcm9tIHRoZSBNREMgZmlsdGVyIGJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRpbnRlcm5hbEZpbHRlckNoYW5nZWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIHNlYXJjaCBldmVudCBvZiB0aGUgRmlsdGVyQmFyLiBFeHBvc2VzIHBhcmFtZXRlcmVzIGZyb20gdGhlIE1EQyBmaWx0ZXIgYmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGludGVybmFsU2VhcmNoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBhZnRlckNsZWFyIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0YWZ0ZXJDbGVhcj86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7fSwgRmlsdGVyQmFyQVBJPj47XG5cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyRmllbGRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXNcblx0fSlcblx0ZmlsdGVyRmllbGRzPzogRmlsdGVyRmllbGQ7XG5cblx0X2FwaUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF92YWx1ZUhlbHBzOiBBcnJheTxzdHJpbmc+IHwgXCJcIiB8IHVuZGVmaW5lZDtcblxuXHRfZmlsdGVyRmllbGRzOiBBcnJheTxzdHJpbmc+IHwgXCJcIiB8IHVuZGVmaW5lZDtcblxuXHRzaG93RHJhZnRFZGl0U3RhdGUgPSBmYWxzZTtcblxuXHRkZXNpZ250aW1lPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGlzIG1vZGUgbXVzdCBiZSB1c2VkIHdoZW4gaXQgaXMgY2VydGFpbiB0aGF0IGEgY29udHJvbCBtdXN0IG5vdCBwZXJzaXN0IGl0wrRzIHBlcnNvbmFsaXphdGlvbiBzdGF0ZSB1cG9uIGluaXRpYWxpemF0aW9uLlxuXHQgKiBAdWk1LWV4cGVyaW1lbnRhbC1zaW5jZSAxLjEzNi4wXG5cdCAqIEBzaW5jZSAxLjEzNi4wXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlnbm9yZVBlcnNvbmFsaXphdGlvbkNoYW5nZXMgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPEZpbHRlckJhckJsb2NrPiwgY29uZmlndXJhdGlvbjogdW5rbm93biwgbVNldHRpbmdzOiBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbmZpZ3VyYXRpb24sIG1TZXR0aW5ncyk7XG5cdFx0aWYgKCF0aGlzLm1ldGFQYXRoKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJDb250ZXh0IFBhdGggbm90IGF2YWlsYWJsZSBmb3IgRmlsdGVyQmFyIE1hY3JvLlwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc01ldGFQYXRoID0gdGhpcy5tZXRhUGF0aC5nZXRQYXRoKCk7XG5cdFx0bGV0IGVudGl0eVR5cGVQYXRoID0gXCJcIjtcblx0XHRjb25zdCBtZXRhUGF0aFBhcnRzID0gc01ldGFQYXRoPy5zcGxpdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCIpIHx8IFtdOyAvLyBbMF06IGVudGl0eVR5cGVQYXRoLCBbMV06IFNGIFF1YWxpZmllci5cblx0XHRpZiAobWV0YVBhdGhQYXJ0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRlbnRpdHlUeXBlUGF0aCA9IHRoaXMuZ2V0RW50aXR5VHlwZVBhdGgobWV0YVBhdGhQYXJ0cyk7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChlbnRpdHlUeXBlUGF0aCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IHRoaXMuY29udGV4dFBhdGg/LmdldE1vZGVsKCk7XG5cdFx0dGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCA9IG9NZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGVudGl0eVR5cGVQYXRoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoOiBzdHJpbmcgPSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIiArICgobWV0YVBhdGhQYXJ0cy5sZW5ndGggJiYgbWV0YVBhdGhQYXJ0c1sxXSkgfHwgXCJcIik7XG5cdFx0Y29uc3QgcGFyZW50Q29udGV4dFBhdGggPSBtU2V0dGluZ3M/LmZ1bGxDb250ZXh0UGF0aCBhcyBzdHJpbmc7XG5cdFx0bGV0IHNPYmplY3RQYXRoID0gYW5ub3RhdGlvblBhdGg7XG5cdFx0aWYgKHBhcmVudENvbnRleHRQYXRoICE9PSBcIlwiICYmIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGguZ2V0UGF0aCgpPy5zdGFydHNXaXRoKHBhcmVudENvbnRleHRQYXRoKSkge1xuXHRcdFx0c09iamVjdFBhdGggPSBzTWV0YVBhdGgucmVwbGFjZShwYXJlbnRDb250ZXh0UGF0aCwgXCJcIik7XG5cdFx0fVxuXHRcdHRoaXMuX2Fubm90YXRpb25QYXRoID0gYW5ub3RhdGlvblBhdGg7XG5cdFx0Y29uc3Qgb0V4dHJhUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB7IGZpbHRlckZpZWxkcz86IEZpbHRlckZpZWxkIH0+ID0ge307XG5cdFx0aWYgKHRoaXMuZmlsdGVyRmllbGRzKSB7XG5cdFx0XHRvRXh0cmFQYXJhbXNbc09iamVjdFBhdGhdID0ge1xuXHRcdFx0XHRmaWx0ZXJGaWVsZHM6IHRoaXMuZmlsdGVyRmllbGRzXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGNvbnN0IG9WaXN1YWxpemF0aW9uT2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh0aGlzLl9pbnRlcm5hbENvbnRleHRQYXRoKTtcblx0XHRjb25zdCBvQ29udmVydGVyQ29udGV4dCA9IHRoaXMuZ2V0Q29udmVydGVyQ29udGV4dChvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgsIHVuZGVmaW5lZCwgbVNldHRpbmdzLCBvRXh0cmFQYXJhbXMpO1xuXHRcdGlmICghdGhpcy5wcm9wZXJ0eUluZm8pIHtcblx0XHRcdHRoaXMucHJvcGVydHlJbmZvID0gZ2V0U2VsZWN0aW9uRmllbGRzKG9Db252ZXJ0ZXJDb250ZXh0LCBbXSwgYW5ub3RhdGlvblBhdGgpLnNQcm9wZXJ0eUluZm87XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGFyZ2V0RW50aXR5U2V0ID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQ7XG5cdFx0aWYgKHRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290ICYmICF0aGlzLmRpc2FibGVEcmFmdEVkaXRTdGF0ZUZpbHRlcikge1xuXHRcdFx0dGhpcy5zaG93RHJhZnRFZGl0U3RhdGUgPSB0cnVlO1xuXHRcdFx0dGhpcy5jaGVja0lmRWRpdGluZ0ZpbHRlcklzRGlzYWJsZWQodGFyZ2V0RW50aXR5U2V0KTtcblx0XHRcdHRoaXMuY2hlY2tJZkNvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKTtcblx0XHR9XG5cblx0XHQvL0ZpbHRlciBGaWVsZHMgYW5kIHZhbHVlcyB0byB0aGUgZmllbGQgYXJlIGZpbGxlZCBiYXNlZCBvbiB0aGUgc2VsZWN0aW9uRmllbGRzIGFuZCB0aGlzIHdvdWxkIGJlIGVtcHR5IGluIGNhc2Ugb2YgbWFjcm8gb3V0c2lkZSB0aGUgRkUgdGVtcGxhdGVcblx0XHRpZiAoIXRoaXMuc2VsZWN0aW9uRmllbGRzKSB7XG5cdFx0XHRjb25zdCBvU2VsZWN0aW9uRmllbGRzID0gZ2V0U2VsZWN0aW9uRmllbGRzKG9Db252ZXJ0ZXJDb250ZXh0LCBbXSwgYW5ub3RhdGlvblBhdGgpLnNlbGVjdGlvbkZpZWxkcztcblx0XHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzID0gbmV3IFRlbXBsYXRlTW9kZWwob1NlbGVjdGlvbkZpZWxkcywgb01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCkuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpO1xuXHRcdFx0Y29uc3Qgdmlld0RhdGEgPSBtU2V0dGluZ3M/Lm1vZGVscz8udmlld0RhdGE/LmdldERhdGEoKTtcblx0XHRcdGNvbnN0IG9FbnRpdHlUeXBlID0gb0NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLFxuXHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudCA9IGdldFNlbGVjdGlvblZhcmlhbnQob0VudGl0eVR5cGUsIG9Db252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0b0VudGl0eVNldENvbnRleHQgPSAob01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCkuZ2V0Q29udGV4dChzRW50aXR5U2V0UGF0aCkgYXMgT0RhdGFWNENvbnRleHQsXG5cdFx0XHRcdG9GaWx0ZXJDb25kaXRpb25zID0gZ2V0RmlsdGVyQ29uZGl0aW9ucyhcblx0XHRcdFx0XHRvRW50aXR5U2V0Q29udGV4dCBhcyB1bmtub3duIGFzIElDb250ZXh0LCAvLyBXcm9uZyBidXQgc29tZWhvdyB3b3JrcyA/LFxuXHRcdFx0XHRcdHsgc2VsZWN0aW9uVmFyaWFudDogb1NlbGVjdGlvblZhcmlhbnQgfSxcblx0XHRcdFx0XHRvRW50aXR5U2V0Q29udGV4dC5nZXRPYmplY3QoKSxcblx0XHRcdFx0XHR2aWV3RGF0YSxcblx0XHRcdFx0XHR0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZVxuXHRcdFx0XHQpO1xuXHRcdFx0dGhpcy5maWx0ZXJDb25kaXRpb25zID0gb0ZpbHRlckNvbmRpdGlvbnM7XG5cdFx0fVxuXHRcdHRoaXMuX3Byb2Nlc3NQcm9wZXJ0eUluZm9zKHRoaXMucHJvcGVydHlJbmZvLCBvTWV0YU1vZGVsKTtcblxuXHRcdGlmICh0aGlzLl9hcHBseUlkVG9Db250ZW50KSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuaWQgKyBcIjo6RmlsdGVyQmFyXCI7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSB0aGlzLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuaWQ7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSB0aGlzLmdldENvbnRlbnRJZCh0aGlzLmlkICsgXCJcIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaGlkZUJhc2ljU2VhcmNoICE9PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uID0gZ2V0U2VhcmNoUmVzdHJpY3Rpb25zKHNFbnRpdHlTZXRQYXRoLCBvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKTtcblx0XHRcdHRoaXMuaGlkZUJhc2ljU2VhcmNoID0gQm9vbGVhbihvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uICYmICFvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uLlNlYXJjaGFibGUpO1xuXHRcdH1cblx0XHRqc3gucmVuZGVyQXNYTUwoKCkgPT4gdGhpcy5wcm9jZXNzU2VsZWN0aW9uRmllbGRzKCkpO1xuXG5cdFx0dGhpcy5kZXNpZ250aW1lID0gdGhpcy5nZXREZXNpZ250aW1lKCk7XG5cdH1cblxuXHRfcHJvY2Vzc1Byb3BlcnR5SW5mb3MocHJvcGVydHlJbmZvOiBzdHJpbmcsIG1vZGVsOiBPRGF0YU1ldGFNb2RlbCk6IHZvaWQge1xuXHRcdGNvbnN0IGFQYXJhbWV0ZXJGaWVsZHM6IHN0cmluZ1tdID0gW107XG5cdFx0aWYgKHByb3BlcnR5SW5mbykge1xuXHRcdFx0Y29uc3Qgc0ZldGNoZWRQcm9wZXJ0aWVzID0gcHJvcGVydHlJbmZvLnJlcGxhY2UoL1xcXFx7L2csIFwie1wiKS5yZXBsYWNlKC9cXFxcfS9nLCBcIn1cIik7XG5cdFx0XHRjb25zdCBhRmV0Y2hlZFByb3BlcnRpZXMgPSBKU09OLnBhcnNlKHNGZXRjaGVkUHJvcGVydGllcyk7XG5cdFx0XHRjb25zdCBlZGl0U3RhdGVMYWJlbCA9IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJGSUxURVJCQVJfRURJVElOR19TVEFUVVNcIik7XG5cdFx0XHRhRmV0Y2hlZFByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAocHJvcEluZm86IFByb3BlcnR5SW5mbykge1xuXHRcdFx0XHRwcm9wSW5mby5rZXkgPSBwcm9wSW5mby5uYW1lO1xuXHRcdFx0XHRpZiAocHJvcEluZm8uaXNQYXJhbWV0ZXIpIHtcblx0XHRcdFx0XHRhUGFyYW1ldGVyRmllbGRzLnB1c2gocHJvcEluZm8ubmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHByb3BJbmZvLnBhdGggPT09IFwiJGVkaXRTdGF0ZVwiKSB7XG5cdFx0XHRcdFx0cHJvcEluZm8ubGFiZWwgPSBlZGl0U3RhdGVMYWJlbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocHJvcEluZm8ua2V5Py5pbmNsdWRlcyhcIi9cIikpIHtcblx0XHRcdFx0XHQvL1RPIERPOiBOZWVkIHRvIHBsYWNlIHRoaXMgbG9naWMgaW4gY29tbW9uIHBsYWNlIHdoZW4gd2UgY292ZXIgZmlsdGVyUmV0cmljdGlvbnMgd2l0aCB0aGlzIEJMSSBGSU9SSVRFQ0hQMS0yNTA4MFxuXHRcdFx0XHRcdGNvbnN0IGFubm90YXRpb25QYXRoID0gKHByb3BJbmZvIGFzIENvbnZlcnRlZEZpbHRlckZpZWxkKS5hbm5vdGF0aW9uUGF0aDtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eUxvY2F0aW9uUGF0aCA9IENvbW1vbkhlbHBlci5nZXRMb2NhdGlvbkZvclByb3BlcnR5UGF0aChtb2RlbCwgYW5ub3RhdGlvblBhdGgpO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IGFubm90YXRpb25QYXRoLnJlcGxhY2UoYCR7cHJvcGVydHlMb2NhdGlvblBhdGh9L2AsIFwiXCIpO1xuXHRcdFx0XHRcdGNvbnN0IGRhdGFNb2RlbCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobW9kZWwuZ2V0Q29udGV4dChwcm9wZXJ0eUxvY2F0aW9uUGF0aCkpO1xuXG5cdFx0XHRcdFx0cHJvcEluZm8ucmVxdWlyZWQgPSBGaWx0ZXJSZXN0cmljdGlvbnMuZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlEYXRhTW9kZWwoXG5cdFx0XHRcdFx0XHRkYXRhTW9kZWwgYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG5cdFx0XHRcdFx0KT8uUmVxdWlyZWRQcm9wZXJ0aWVzPy5pbmNsdWRlcyhwcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5wcm9wZXJ0eUluZm8gPSBKU09OLnN0cmluZ2lmeShhRmV0Y2hlZFByb3BlcnRpZXMpLnJlcGxhY2UoL1xcey9nLCBcIlxcXFx7XCIpLnJlcGxhY2UoL1xcfS9nLCBcIlxcXFx9XCIpO1xuXHRcdH1cblx0XHR0aGlzLl9wYXJhbWV0ZXJzID0gSlNPTi5zdHJpbmdpZnkoYVBhcmFtZXRlckZpZWxkcyk7XG5cdH1cblxuXHRjaGVja0lmRWRpdGluZ0ZpbHRlcklzRGlzYWJsZWQgPSAodGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQpOiB2b2lkID0+IHtcblx0XHRpZiAoXG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM/LnNvbWUoXG5cdFx0XHRcdChyKSA9PiByLk5hdmlnYXRpb25Qcm9wZXJ0eT8udmFsdWUgPT09IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGFcIiAmJiByLkZpbHRlclJlc3RyaWN0aW9ucz8uRmlsdGVyYWJsZSA9PT0gZmFsc2Vcblx0XHRcdCkgPT09IHRydWVcblx0XHQpIHtcblx0XHRcdHRoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlID0gZmFsc2U7XG5cdFx0fVxuXHR9O1xuXG5cdGNoZWNrSWZDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQgPSAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwgfCB1bmRlZmluZWQpOiB2b2lkID0+IHtcblx0XHRpZiAoTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCkpIHtcblx0XHRcdHRoaXMuaXNEcmFmdENvbGxhYm9yYXRpdmUgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHRnZXRFbnRpdHlUeXBlUGF0aCA9IChtZXRhUGF0aFBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyA9PiB7XG5cdFx0cmV0dXJuIG1ldGFQYXRoUGFydHNbMF0uZW5kc1dpdGgoXCIvXCIpID8gbWV0YVBhdGhQYXJ0c1swXSA6IG1ldGFQYXRoUGFydHNbMF0gKyBcIi9cIjtcblx0fTtcblxuXHRnZXRTZWFyY2ggPSAoKTogc3RyaW5nID0+IHtcblx0XHRpZiAoIXRoaXMuaGlkZUJhc2ljU2VhcmNoKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TURDRmlsdGVyRmllbGRcblx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiQmFzaWNTZWFyY2hGaWVsZFwiXSl9XG5cdFx0XHRcdFx0bGFiZWw9e1wiXCJ9XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJ7c2FwLmZlLmkxOG4+TV9GSUxURVJCQVJfU0VBUkNIfVwiXG5cdFx0XHRcdFx0cHJvcGVydHlLZXk9XCIkc2VhcmNoXCJcblx0XHRcdFx0XHRjb25kaXRpb25zPVwieyRmaWx0ZXJzPi9jb25kaXRpb25zLyRzZWFyY2h9XCJcblx0XHRcdFx0XHRkYXRhVHlwZT1cInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiXG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9ucz1cIjFcIlxuXHRcdFx0XHRcdGRhdGFUeXBlQ29uc3RyYWludHM9XCJ7J21heExlbmd0aCc6MTAwMH1cIlxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH07XG5cblx0cHJvY2Vzc1NlbGVjdGlvbkZpZWxkcyA9ICgpOiB2b2lkID0+IHtcblx0XHRsZXQgZHJhZnRFZGl0U3RhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZSkge1xuXHRcdFx0Y29uc3QgZHJhZnRTdGF0ZXMgPSBEcmFmdEVkaXRTdGF0ZS5nZXRFZGl0U3RhdGVzKHRoaXMuaXNEcmFmdENvbGxhYm9yYXRpdmUpO1xuXHRcdFx0Y29uc3QgbGFiZWwgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiRklMVEVSQkFSX0VESVRJTkdfU1RBVFVTXCIpO1xuXHRcdFx0ZHJhZnRFZGl0U3RhdGUgPSAoXG5cdFx0XHRcdDxNRENGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGxhYmVsPXtsYWJlbH1cblx0XHRcdFx0XHRjb25kaXRpb25zPVwieyRmaWx0ZXJzPi9jb25kaXRpb25zLyRlZGl0U3RhdGV9XCJcblx0XHRcdFx0XHRtYXhDb25kaXRpb25zPVwiMVwiXG5cdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkXCIsIFwiRHJhZnRFZGl0aW5nU3RhdHVzXCJdKX1cblx0XHRcdFx0XHRvcGVyYXRvcnM9XCJFUVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGU9XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcIlxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PVwiJGVkaXRTdGF0ZVwiXG5cdFx0XHRcdFx0ZGlzcGxheT1cIkRlc2NyaXB0aW9uXCJcblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50RWRpdDogKFxuXHRcdFx0XHRcdFx0XHQ8U2VsZWN0XG5cdFx0XHRcdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkXCIsIFwiRHJhZnRFZGl0aW5nU3RhdHVzU2VsZWN0XCJdKX1cblx0XHRcdFx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdFx0XHRcdGZvcmNlU2VsZWN0aW9uPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk9XCJ7cGF0aDogJyRmaWVsZD4vY29uZGl0aW9ucycsIHR5cGU6ICdzYXAudWkubWRjLmZpZWxkLkNvbmRpdGlvbnNUeXBlJ31cIlxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0e3sgaXRlbXM6IGRyYWZ0U3RhdGVzLm1hcCgoc3RhdGUpID0+IDxMaXN0SXRlbSBrZXk9e3N0YXRlLmlkfSB0ZXh0PXtzdGF0ZS5kaXNwbGF5fSAvPikgfX1cblx0XHRcdFx0XHRcdFx0PC9TZWxlY3Q+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9NRENGaWx0ZXJGaWVsZD5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHRoaXMuX3ZhbHVlSGVscHMgPSBbXTtcblx0XHR0aGlzLl9maWx0ZXJGaWVsZHMgPSBbXTtcblx0XHR0aGlzLl9maWx0ZXJGaWVsZHM/LnB1c2goZHJhZnRFZGl0U3RhdGUpO1xuXHRcdGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGlvbkZpZWxkcykpIHtcblx0XHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzID0gdGhpcy5zZWxlY3Rpb25GaWVsZHMhLmdldE9iamVjdCgpIGFzIENvbnZlcnRlZEZpbHRlckZpZWxkW107XG5cdFx0fVxuXHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzPy5mb3JFYWNoKChzZWxlY3Rpb25GaWVsZDogQ29udmVydGVkRmlsdGVyRmllbGQpID0+IHtcblx0XHRcdGlmIChzZWxlY3Rpb25GaWVsZC5hdmFpbGFiaWxpdHkgPT09IFwiRGVmYXVsdFwiKSB7XG5cdFx0XHRcdHRoaXMuc2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyhzZWxlY3Rpb25GaWVsZCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5fZmlsdGVyRmllbGRzID0gdGhpcy5fZmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fZmlsdGVyRmllbGRzIDogXCJcIjtcblx0XHR0aGlzLl92YWx1ZUhlbHBzID0gdGhpcy5fdmFsdWVIZWxwcz8ubGVuZ3RoID4gMCA/IHRoaXMuX3ZhbHVlSGVscHMgOiBcIlwiO1xuXHR9O1xuXG5cdGdldFBlcnNpc3RlbmNlUHJvdmlkZXIoZmlsdGVyQmFySWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuaWdub3JlUGVyc29uYWxpemF0aW9uQ2hhbmdlcykge1xuXHRcdFx0cmV0dXJuIDxQZXJzaXN0ZW5jZVByb3ZpZGVyIGlkPXtnZW5lcmF0ZShbZmlsdGVyQmFySWQsIFwiUGVyc2lzdGVuY2VQcm92aWRlclwiXSl9IGZvcj17ZmlsdGVyQmFySWR9IG1vZGU9e1wiVHJhbnNpZW50XCJ9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0c2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyA9IChzZWxlY3Rpb25GaWVsZDogQ29udmVydGVkRmlsdGVyRmllbGQpOiB2b2lkID0+IHtcblx0XHRpZiAoc2VsZWN0aW9uRmllbGQudGVtcGxhdGUgPT09IHVuZGVmaW5lZCAmJiBzZWxlY3Rpb25GaWVsZC50eXBlICE9PSBcIlNsb3RcIikge1xuXHRcdFx0dGhpcy5wdXNoRmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyhzZWxlY3Rpb25GaWVsZCk7XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2ZpbHRlckZpZWxkcykpIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUNvbnRleHQgPSB0aGlzLm1ldGFQYXRoIS5nZXRNb2RlbCgpLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHByb3BlcnR5KTtcblx0XHRcdGNvbnN0IHByb3BlcnR5T2JqZWN0ID0gcHJvcGVydHlDb250ZXh0Py5nZXRPYmplY3QoKTtcblx0XHRcdGxldCBmaWx0ZXJDb250ZW50O1xuXHRcdFx0aWYgKHNlbGVjdGlvbkZpZWxkLnR5cGUgPT09IFwiU2xvdFwiKSB7XG5cdFx0XHRcdGZpbHRlckNvbnRlbnQgPSAoXG5cdFx0XHRcdFx0PFNsb3RDb2x1bW4gdGVtcGxhdGVJZD17c2VsZWN0aW9uRmllbGQudGVtcGxhdGV9PlxuXHRcdFx0XHRcdFx0PHNsb3QgbmFtZT17KHNlbGVjdGlvbkZpZWxkIGFzIE1hbmlmZXN0RmlsdGVyRmllbGQpLnNsb3ROYW1lIX0gLz5cblx0XHRcdFx0XHQ8L1Nsb3RDb2x1bW4+XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2UgaWYgKHNlbGVjdGlvbkZpZWxkLnRlbXBsYXRlKSB7XG5cdFx0XHRcdGZpbHRlckNvbnRlbnQgPSAoXG5cdFx0XHRcdFx0PEN1c3RvbUZyYWdtZW50QmxvY2tcblx0XHRcdFx0XHRcdGZyYWdtZW50TmFtZT17c2VsZWN0aW9uRmllbGQudGVtcGxhdGV9XG5cdFx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiQ3VzdG9tRmlsdGVyRmllbGRcIiwgc2VsZWN0aW9uRmllbGQua2V5XSl9XG5cdFx0XHRcdFx0XHRjb250ZXh0UGF0aD17XCJ7Y29udGV4dFBhdGg+fVwiIGFzIHVua25vd24gYXMgQ29udGV4dH1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bGV0IG1heENvbmRpdGlvblZhbHVlID0gLTE7XG5cdFx0XHRpZiAocHJvcGVydHlDb250ZXh0KSB7XG5cdFx0XHRcdG1heENvbmRpdGlvblZhbHVlID0gbWF4Q29uZGl0aW9ucyhzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aCwgeyBjb250ZXh0OiBwcm9wZXJ0eUNvbnRleHQgfSkgPz8gLTE7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9maWx0ZXJGaWVsZHM/LnB1c2goXG5cdFx0XHRcdDxNRENGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJDdXN0b21GaWx0ZXJGaWVsZFwiLCBzZWxlY3Rpb25GaWVsZC5rZXldKX1cblx0XHRcdFx0XHRkZWxlZ2F0ZT17eyBuYW1lOiBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRCYXNlRGVsZWdhdGVcIiB9fVxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PXtzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRofVxuXHRcdFx0XHRcdGxhYmVsPXtzZWxlY3Rpb25GaWVsZC5sYWJlbH1cblx0XHRcdFx0XHRkYXRhVHlwZT17c2VsZWN0aW9uRmllbGQuZGF0YVR5cGV9XG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9ucz17bWF4Q29uZGl0aW9uVmFsdWV9XG5cdFx0XHRcdFx0Y29uZGl0aW9ucz17YHskZmlsdGVycz4vY29uZGl0aW9ucy8ke3NlbGVjdGlvbkZpZWxkLmNvbmRpdGlvblBhdGh9fWB9XG5cdFx0XHRcdFx0b3BlcmF0b3JzPXtGaWVsZEhlbHBlci5vcGVyYXRvcnMoXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eU9iamVjdCxcblx0XHRcdFx0XHRcdHRoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2UsXG5cdFx0XHRcdFx0XHRzZWxlY3Rpb25GaWVsZC5zZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcdHRoaXMuY29udGV4dFBhdGghLmdldFBhdGgoKVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0ZGF0YVR5cGVDb25zdHJhaW50cz17KHNlbGVjdGlvbkZpZWxkIGFzIHVua25vd24gYXMgeyBjb25zdHJhaW50czogdW5rbm93biB9KS5jb25zdHJhaW50c31cblx0XHRcdFx0XHRkYXRhVHlwZUZvcm1hdE9wdGlvbnM9eyhzZWxlY3Rpb25GaWVsZCBhcyB1bmtub3duIGFzIHsgZm9ybWF0T3B0aW9uczogdW5rbm93biB9KS5mb3JtYXRPcHRpb25zfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17XCJ1bmRlZmluZWRcIn1cblx0XHRcdFx0XHRyZXF1aXJlZD17c2VsZWN0aW9uRmllbGQucmVxdWlyZWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclxuXHRcdFx0XHRcdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntoYW5kbGVyOiAnc2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHMnfVwiXG5cdFx0XHRcdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJcIiwgc2VsZWN0aW9uRmllbGQua2V5XSl9XG5cdFx0XHRcdFx0XHRcdFx0YmluZGluZz17YHtmaWx0ZXJWYWx1ZXM+LyR7RmlsdGVyVXRpbHMuY29uZGl0aW9uVG9Nb2RlbFBhdGgoc2VsZWN0aW9uRmllbGQuY29uZGl0aW9uUGF0aCl9fWB9XG5cdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9ucz17XCJ7cGF0aDogJyRmaWVsZD4vY29uZGl0aW9ucyd9XCIgYXMgdW5rbm93biBhcyBDb25kaXRpb25PYmplY3RbXX1cblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdHt7IGNvbnRlbnQ6IGZpbHRlckNvbnRlbnQgfX1cblx0XHRcdFx0XHRcdFx0PC9DdXN0b21GaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyPlxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IFtcblx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PXtcImlzU2xvdFwifSB2YWx1ZT17c2VsZWN0aW9uRmllbGQudHlwZSA9PT0gXCJTbG90XCJ9IC8+LFxuXHRcdFx0XHRcdFx0XHQ8RmllbGRIZWxwQ3VzdG9tRGF0YVxuXHRcdFx0XHRcdFx0XHRcdGtleT17XCJzYXAtdWktRG9jdW1lbnRhdGlvblJlZlwifVxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtge3BhcnRzOiBbe3ZhbHVlOiAnYXNBcnJheSd9LCB7dmFsdWU6ICcke3NlbGVjdGlvbkZpZWxkLmRvY3VtZW50UmVmVGV4dH0nfV0sIGZvcm1hdHRlcjogJy5fZm9ybWF0dGVycy5TdGFuZGFyZEZvcm1hdHRlcid9YH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L01EQ0ZpbHRlckZpZWxkPlxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cblx0X2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQ6IENvbnZlcnRlZEZpbHRlckZpZWxkLCBmaWx0ZXJCYXJDb250ZXh0UGF0aDogQ29udGV4dCk6IHN0cmluZyB7XG5cdFx0bGV0IGNvbnRleHRQYXRoOiBzdHJpbmcgPSBmaWx0ZXJCYXJDb250ZXh0UGF0aD8uZ2V0UGF0aCgpO1xuXHRcdGlmIChzZWxlY3Rpb25GaWVsZC5pc1BhcmFtZXRlcikge1xuXHRcdFx0Ly8gRXhhbXBsZTpcblx0XHRcdC8vIEZpbHRlckJhckNvbnRleHRQYXRoOiAvQ3VzdG9tZXIvU2V0XG5cdFx0XHQvLyBQYXJhbWV0ZXJQcm9wZXJ0eVBhdGg6IC9DdXN0b21lci9QX0NDXG5cdFx0XHQvLyBDb250ZXh0UGF0aEZvckZpbHRlckZpZWxkOiAvQ3VzdG9tZXJcblx0XHRcdGNvbnN0IGFubm9QYXRoID0gc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRjb250ZXh0UGF0aCA9IGFubm9QYXRoLnN1YnN0cmluZygwLCBhbm5vUGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoO1xuXHR9XG5cblx0cHVzaEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMgPSAoc2VsZWN0aW9uRmllbGQ6IENvbnZlcnRlZEZpbHRlckZpZWxkKTogdm9pZCA9PiB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fZmlsdGVyRmllbGRzKSkge1xuXHRcdFx0Y29uc3QgdmYgPSB7IC4uLnNlbGVjdGlvbkZpZWxkLnZpc3VhbEZpbHRlciwgLi4ueyBpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZDogIXRoaXMuc3VzcGVuZFNlbGVjdGlvbiB9IH07XG5cdFx0XHR0aGlzLl9maWx0ZXJGaWVsZHM/LnB1c2goXG5cdFx0XHRcdDxJbnRlcm5hbEZpbHRlckZpZWxkXG5cdFx0XHRcdFx0aWRQcmVmaXg9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkXCIsIENvbW1vbkhlbHBlci5nZXROYXZpZ2F0aW9uUGF0aChzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aCldKX1cblx0XHRcdFx0XHR2aElkUHJlZml4PXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFZhbHVlSGVscFwiXSl9XG5cdFx0XHRcdFx0cHJvcGVydHk9e3NlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRoIGFzIHVua25vd24gYXMgQ29udGV4dH1cblx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5fZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZCwgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCkgYXMgdW5rbm93biBhcyBDb250ZXh0fVxuXHRcdFx0XHRcdHVzZVNlbWFudGljRGF0ZVJhbmdlPXt0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlfVxuXHRcdFx0XHRcdGxhYmVsPXtzZWxlY3Rpb25GaWVsZC5sYWJlbH1cblx0XHRcdFx0XHRzZXR0aW5ncz17Q29tbW9uSGVscGVyLnN0cmluZ2lmeUN1c3RvbURhdGEoc2VsZWN0aW9uRmllbGQuc2V0dGluZ3MpfVxuXHRcdFx0XHRcdHZpc3VhbEZpbHRlcj17c2VsZWN0aW9uRmllbGQudmlzdWFsRmlsdGVyICE9PSB1bmRlZmluZWQgPyAoc3RvcmVPYmplY3RWYWx1ZSh2ZikgYXMgdW5rbm93biBhcyBDb250ZXh0KSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0XHRlZGl0TW9kZT17YHtpbnRlcm5hbD4vJHt0aGlzLmlkfS9maWx0ZXJGaWVsZHMvJHtzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRofS9lZGl0TW9kZX1gfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fdmFsdWVIZWxwcykpIHtcblx0XHRcdHRoaXMuX3ZhbHVlSGVscHM/LnB1c2goXG5cdFx0XHRcdDxWYWx1ZUhlbHBcblx0XHRcdFx0XHRpZFByZWZpeD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRWYWx1ZUhlbHBcIl0pfVxuXHRcdFx0XHRcdGNvbmRpdGlvbk1vZGVsPVwiJGZpbHRlcnNcIlxuXHRcdFx0XHRcdG1ldGFQYXRoPXtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aH1cblx0XHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5fZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZCwgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCl9XG5cdFx0XHRcdFx0ZmlsdGVyRmllbGRWYWx1ZUhlbHA9e3RydWV9XG5cdFx0XHRcdFx0dXNlU2VtYW50aWNEYXRlUmFuZ2U9e3RoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2V9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB0aGUgZGVzaWduIHRpbWUgZm9yIHRoZSBNREMgRmlsdGVyQmFyLlxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gZHQ6ZGVzaWdudGltZVxuXHQgKi9cblx0Z2V0RGVzaWdudGltZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL2Rlc2lnbnRpbWUvRmlsdGVyQmFyLmRlc2lnbnRpbWVcIjtcblx0fVxuXG5cdGdldFRlbXBsYXRlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaW50ZXJuYWxDb250ZXh0UGF0aCA9IHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGg/LmdldFBhdGgoKTtcblx0XHRsZXQgZmlsdGVyRGVsZWdhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLmZpbHRlckJhckRlbGVnYXRlKSB7XG5cdFx0XHRmaWx0ZXJEZWxlZ2F0ZSA9IHRoaXMuZmlsdGVyQmFyRGVsZWdhdGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZpbHRlckRlbGVnYXRlID0gXCJ7bmFtZTonc2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyRGVsZWdhdGUnLCBwYXlsb2FkOiB7ZW50aXR5VHlwZVBhdGg6ICdcIiArIGludGVybmFsQ29udGV4dFBhdGggKyBcIid9fVwiO1xuXHRcdH1cblx0XHQvLyBhZnRlciByZW1vdmluZyB0aGUgdW53YW50ZWQgcHJvcGVydGllcyBQcm9wZXJ0eUluZm8gaXMgYWRkZWQgdG8gdGhlIGNvbnRyb2wsIGFuZCB3ZSBhbHNvIHNhdmUgdGhlIGZ1bGwgdmVyc2lvbiBhcyBjdXN0b20gZGF0YSBmb3IgRkUgaW50ZXJuYWwgdXNlXG5cdFx0Y29uc3QgX3Byb3BlcnR5SW5mb0NvbnRyb2wgPSBGaWx0ZXJVdGlscy5mb3JtYXRQcm9wZXJ0eUluZm8odGhpcy5wcm9wZXJ0eUluZm8gYXMgc3RyaW5nKTtcblxuXHRcdGNvbnN0IGhhc092ZXJyaWRlID0gdGhpcy5jaGVja0lmUmVzb3VyY2VLZXlFeGlzdHMoXCJNX0ZJTFRFUkJBUl9BREFQVF9GSUxURVJTX05PTl9aRVJPXCIpO1xuXHRcdGxldCBhZGFwdEZpbHRlcnNOb25aZXJvVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGxldCBhZGFwdEZpbHRlcnNUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGhhc092ZXJyaWRlKSB7XG5cdFx0XHRhZGFwdEZpbHRlcnNOb25aZXJvVGV4dCA9IHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJNX0ZJTFRFUkJBUl9BREFQVF9GSUxURVJTX05PTl9aRVJPXCIpLnJlcGxhY2VBbGwoXCJ7XCIsIFwiXFxcXHtcIik7XG5cdFx0XHRhZGFwdEZpbHRlcnNUZXh0ID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIk1fRklMVEVSQkFSX0FEQVBUX0ZJTFRFUlNcIik7XG5cdFx0fVxuXHRcdHJldHVybiAoXG5cdFx0XHQ8RmlsdGVyQmFyQVBJXG5cdFx0XHRcdGlkPXt0aGlzLl9hcGlJZH1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGghLmdldFBhdGgoKX1cblx0XHRcdFx0c2VhcmNoPXt0aGlzLnNlYXJjaH1cblx0XHRcdFx0ZmlsdGVyQ2hhbmdlZD17dGhpcy5maWx0ZXJDaGFuZ2VkfVxuXHRcdFx0XHRhZnRlckNsZWFyPXt0aGlzLmFmdGVyQ2xlYXJ9XG5cdFx0XHRcdGludGVybmFsU2VhcmNoPXt0aGlzLmludGVybmFsU2VhcmNofVxuXHRcdFx0XHRpbnRlcm5hbEZpbHRlckNoYW5nZWQ9e3RoaXMuaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxGRUZpbHRlckJhclxuXHRcdFx0XHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7QVBJOiAnc2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJJ31cIlxuXHRcdFx0XHRcdFx0XHRhZGFwdEZpbHRlcnNUZXh0PXthZGFwdEZpbHRlcnNUZXh0fVxuXHRcdFx0XHRcdFx0XHRhZGFwdEZpbHRlcnNUZXh0Tm9uWmVybz17YWRhcHRGaWx0ZXJzTm9uWmVyb1RleHR9XG5cdFx0XHRcdFx0XHRcdGlkPXt0aGlzLl9jb250ZW50SWR9XG5cdFx0XHRcdFx0XHRcdGxpdmVNb2RlPXt0aGlzLmxpdmVNb2RlfVxuXHRcdFx0XHRcdFx0XHRkZWxlZ2F0ZT17ZmlsdGVyRGVsZWdhdGV9XG5cdFx0XHRcdFx0XHRcdHZhcmlhbnRCYWNrcmVmZXJlbmNlPXt0aGlzLmxpdmVNb2RlID8gdW5kZWZpbmVkIDogdGhpcy52YXJpYW50QmFja3JlZmVyZW5jZX1cblx0XHRcdFx0XHRcdFx0c2hvd0FkYXB0RmlsdGVyc0J1dHRvbj17dGhpcy5zaG93QWRhcHRGaWx0ZXJzQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRzaG93Q2xlYXJCdXR0b249e3RoaXMuc2hvd0NsZWFyQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRwMTNuTW9kZT17dGhpcy5wMTNuTW9kZX1cblx0XHRcdFx0XHRcdFx0c2VhcmNoPXtcIkFQSS5oYW5kbGVTZWFyY2goJGV2ZW50KVwiIGFzIHVua25vd24gYXMgKGU6IEZpbHRlckJhckJhc2UkU2VhcmNoRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0XHRcdGZpbHRlcnNDaGFuZ2VkPXtcIkFQSS5oYW5kbGVGaWx0ZXJDaGFuZ2VkKCRldmVudClcIiBhcyB1bmtub3duIGFzIChlOiBGaWx0ZXJCYXJCYXNlJEZpbHRlcnNDaGFuZ2VkRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0XHRcdGZpbHRlckNvbmRpdGlvbnM9e3RoaXMuZmlsdGVyQ29uZGl0aW9uc31cblx0XHRcdFx0XHRcdFx0c3VzcGVuZFNlbGVjdGlvbj17dGhpcy5zdXNwZW5kU2VsZWN0aW9ufVxuXHRcdFx0XHRcdFx0XHRzaG93TWVzc2FnZXM9e3RoaXMuc2hvd01lc3NhZ2VzfVxuXHRcdFx0XHRcdFx0XHR0b2dnbGVDb250cm9sPXt0aGlzLnRvZ2dsZUNvbnRyb2xJZH1cblx0XHRcdFx0XHRcdFx0aW5pdGlhbExheW91dD17dGhpcy5pbml0aWFsTGF5b3V0fVxuXHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnZpc2libGV9XG5cdFx0XHRcdFx0XHRcdGRpc2FibGVEcmFmdEVkaXRTdGF0ZUZpbHRlcj17dGhpcy5kaXNhYmxlRHJhZnRFZGl0U3RhdGVGaWx0ZXJ9XG5cdFx0XHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9e3RoaXMuZGVzaWdudGltZX1cblx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YTplbnRpdHlUeXBlPXtpbnRlcm5hbENvbnRleHRQYXRofVxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IFtcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJsb2NhbElkXCJ9IHZhbHVlPXt0aGlzLmlkfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJoaWRlQmFzaWNTZWFyY2hcIn0gdmFsdWU9e3RoaXMuaGlkZUJhc2ljU2VhcmNofSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJzaG93RHJhZnRFZGl0U3RhdGVcIn0gdmFsdWU9e3RoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJ1c2VTZW1hbnRpY0RhdGVSYW5nZVwifSB2YWx1ZT17dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZX0gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wicGFyYW1ldGVyc1wifSB2YWx1ZT17dGhpcy5fcGFyYW1ldGVyc30gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiZmVGaWx0ZXJJbmZvXCJ9IHZhbHVlPXt0aGlzLnByb3BlcnR5SW5mb30gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiYW5ub3RhdGlvblBhdGhcIn0gdmFsdWU9e3RoaXMuX2Fubm90YXRpb25QYXRofSAvPlxuXHRcdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogW3RoaXMuX3ZhbHVlSGVscHMsIHRoaXMuZ2V0UGVyc2lzdGVuY2VQcm92aWRlcih0aGlzLl9jb250ZW50SWQgYXMgc3RyaW5nKV0sXG5cdFx0XHRcdFx0XHRcdFx0YmFzaWNTZWFyY2hGaWVsZDogdGhpcy5nZXRTZWFyY2goKSxcblx0XHRcdFx0XHRcdFx0XHRmaWx0ZXJJdGVtczogdGhpcy5fZmlsdGVyRmllbGRzXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0ZFRmlsdGVyQmFyPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvRmlsdGVyQmFyQVBJPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNERBLE1BQU1BLDhCQUE4QixHQUFHLFNBQUFBLENBQVVDLGdCQUF5QixFQUFFQyxpQkFBOEIsRUFBZTtJQUN4SEEsaUJBQWlCLENBQUNDLFFBQVEsR0FBR0QsaUJBQWlCLENBQUNFLEdBQUc7SUFDbERGLGlCQUFpQixDQUFDRSxHQUFHLEdBQUdGLGlCQUFpQixDQUFDRSxHQUFHLENBQUNDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO0lBQ3ZFSCxpQkFBaUIsQ0FBQ0ksUUFBUSxHQUFHTCxnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDLFVBQVUsQ0FBRTtJQUN2RUwsaUJBQWlCLENBQUNNLEtBQUssR0FBR1AsZ0JBQWdCLENBQUNNLFlBQVksQ0FBQyxPQUFPLENBQUU7SUFDakVMLGlCQUFpQixDQUFDTyxRQUFRLEdBQUdSLGdCQUFnQixDQUFDTSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssTUFBTTtJQUNqRkwsaUJBQWlCLENBQUNRLFFBQVEsR0FBR1QsZ0JBQWdCLENBQUNNLFlBQVksQ0FBQyxVQUFVLENBQXVCLENBQUMsQ0FBQztJQUM5RixPQUFPTCxpQkFBaUI7RUFDekIsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBbkJBLElBMEJxQlMsY0FBYyxJQUFBQyxJQUFBLEdBTmxDQyxtQkFBbUIsQ0FBQztJQUNwQkMsSUFBSSxFQUFFLFdBQVc7SUFDakJDLFNBQVMsRUFBRSx3QkFBd0I7SUFDbkNDLGVBQWUsRUFBRSxlQUFlO0lBQ2hDQyxXQUFXLEVBQUUsQ0FBQyxzQ0FBc0M7RUFDckQsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FLQUMsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxRQUFRO0lBQ2RDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR0RILGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsU0FBUztJQUNmQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQU1ESixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FHREwsY0FBYyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBR2xDTixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QkMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHRFAsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxzQkFBc0I7SUFDNUJDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBTSxLQUFBLEdBTURSLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsU0FBUztJQUNmQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQU8sS0FBQSxHQU1EVCxjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFTLE1BQUEsR0FNRFYsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBVSxNQUFBLEdBTURYLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQVcsTUFBQSxHQU1EWixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFZLE1BQUEsR0FNRGIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBYSxNQUFBLEdBR0RkLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWMsTUFBQSxHQU1EZixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFlLE1BQUEsR0FNRGhCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWdCLE1BQUEsR0FNRGpCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsU0FBUztJQUNmQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQWdCLE1BQUEsR0FNRGxCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsUUFBUTtJQUNkWCxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQTZCLE1BQUEsR0FRRG5CLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQW1CLE1BQUEsR0FHRHBCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQW9CLE1BQUEsR0FNRHJCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXFCLE1BQUEsR0FHRHRCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXNCLE1BQUEsR0FNRHZCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsU0FBUztJQUNmQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQXNCLE1BQUEsR0FHRHhCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXdCLE1BQUEsR0FHRHpCLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQXlCLE1BQUEsR0FnQkRDLFVBQVUsQ0FBQyxDQUFDLEVBQUFDLE1BQUEsR0FNWkQsVUFBVSxDQUFDLENBQUMsRUFBQUUsTUFBQSxHQU1aRixVQUFVLENBQUMsQ0FBQyxFQUFBRyxNQUFBLEdBTVpILFVBQVUsQ0FBQyxDQUFDLEVBQUFJLE1BQUEsR0FNWkosVUFBVSxDQUFDLENBQUMsRUFBQUssTUFBQSxHQUdaQyxnQkFBZ0IsQ0FBQztJQUNqQmhDLElBQUksRUFBRSxxQ0FBcUM7SUFDM0NDLFFBQVEsRUFBRSxJQUFJO0lBQ2RnQyxjQUFjLEVBQUUsSUFBSTtJQUNwQkMsbUJBQW1CLEVBQUV0RDtFQUN0QixDQUFDLENBQUMsRUFBQXVELE1BQUEsR0FvQkRwQyxjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFLFNBQVM7SUFDZkMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFULElBQUEsQ0FBQTRDLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMscUJBQUE7SUFHRixTQUFBL0MsZUFBWWdELEtBQW1DLEVBQUVDLGFBQXNCLEVBQUVDLFNBQW9DLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQzlHQSxLQUFBLEdBQUFKLHFCQUFBLENBQUFLLElBQUEsT0FBTUosS0FBSyxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsQ0FBQztNQXJQdkM7QUFDRDtBQUNBO01BRkNHLDBCQUFBLENBQUFGLEtBQUEsUUFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsYUFBQUksWUFBQSxFQUFBSixLQUFBO01BZUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEscUJBQUFLLFlBQUEsRUFBQUwsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLHVCQUFBTSxZQUFBLEVBQUFOLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxjQUFBTyxZQUFBLEVBQUFQLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxpQkFBQVEsWUFBQSxFQUFBUixLQUFBO01BdUJBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBUyxZQUFBLEVBQUFULEtBQUE7TUFTQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSwwQkFBQVUsWUFBQSxFQUFBVixLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEscUJBQUFXLFlBQUEsRUFBQVgsS0FBQTtNQVFBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLG9CQUFBWSxhQUFBLEVBQUFaLEtBQUE7TUFRQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSw0QkFBQWEsYUFBQSxFQUFBYixLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsY0FBQWMsYUFBQSxFQUFBZCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFlLGFBQUEsRUFBQWYsS0FBQTtNQWFBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLDBCQUFBZ0IsYUFBQSxFQUFBaEIsS0FBQTtNQVFBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLDBCQUFBaUIsYUFBQSxFQUFBakIsS0FBQTtNQVFBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFrQixhQUFBLEVBQUFsQixLQUFBO01BU0E7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsc0JBQUFtQixhQUFBLEVBQUFuQixLQUFBO01BU0E7QUFDRDtBQUNBO0FBQ0E7QUFDQTtNQUpDRSwwQkFBQSxDQUFBRixLQUFBLHNCQUFBb0IsYUFBQSxFQUFBcEIsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLDBCQUFBcUIsYUFBQSxFQUFBckIsS0FBQTtNQWVBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLHFCQUFBc0IsYUFBQSxFQUFBdEIsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLG1CQUFBdUIsYUFBQSxFQUFBdkIsS0FBQTtNQWFBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLHFCQUFBd0IsYUFBQSxFQUFBeEIsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLHVCQUFBeUIsYUFBQSxFQUFBekIsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGlDQUFBMEIsYUFBQSxFQUFBMUIsS0FBQTtNQTZCQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxZQUFBMkIsYUFBQSxFQUFBM0IsS0FBQTtNQU1BO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLG1CQUFBNEIsYUFBQSxFQUFBNUIsS0FBQTtNQU1BO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLDJCQUFBNkIsYUFBQSxFQUFBN0IsS0FBQTtNQU1BO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLG9CQUFBOEIsYUFBQSxFQUFBOUIsS0FBQTtNQU1BO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLGdCQUFBK0IsYUFBQSxFQUFBL0IsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBZ0MsYUFBQSxFQUFBaEMsS0FBQTtNQUFBQSxLQUFBLENBc0JBaUMsa0JBQWtCLEdBQUcsS0FBSztNQUkxQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO01BSkMvQiwwQkFBQSxDQUFBRixLQUFBLGtDQUFBa0MsYUFBQSxFQUFBbEMsS0FBQTtNQUFBQSxLQUFBLENBeUhBbUMsOEJBQThCLEdBQUlDLGVBQTBCLElBQVc7UUFDdEUsSUFDQ0EsZUFBZSxDQUFDQyxXQUFXLEVBQUVDLFlBQVksRUFBRUMsc0JBQXNCLEVBQUVDLG9CQUFvQixFQUFFQyxJQUFJLENBQzNGQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0Msa0JBQWtCLEVBQUVDLEtBQUssS0FBSyx5QkFBeUIsSUFBSUYsQ0FBQyxDQUFDRyxrQkFBa0IsRUFBRUMsVUFBVSxLQUFLLEtBQzFHLENBQUMsS0FBSyxJQUFJLEVBQ1Q7VUFDRDlDLEtBQUEsQ0FBS2lDLGtCQUFrQixHQUFHLEtBQUs7UUFDaEM7TUFDRCxDQUFDO01BQUFqQyxLQUFBLENBRUQrQyxrQ0FBa0MsR0FBSUMsVUFBc0MsSUFBVztRQUN0RixJQUFJQyxXQUFXLENBQUNDLDZCQUE2QixDQUFDRixVQUFVLENBQUMsRUFBRTtVQUMxRGhELEtBQUEsQ0FBS21ELG9CQUFvQixHQUFHLElBQUk7UUFDakM7TUFDRCxDQUFDO01BQUFuRCxLQUFBLENBRURvRCxpQkFBaUIsR0FBSUMsYUFBdUIsSUFBYTtRQUN4RCxPQUFPQSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBR0QsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHQSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztNQUNsRixDQUFDO01BQUFyRCxLQUFBLENBRUR1RCxTQUFTLEdBQUcsTUFBYztRQUN6QixJQUFJLENBQUN2RCxLQUFBLENBQUt3RCxlQUFlLEVBQUU7VUFDMUIsT0FDQ0MsSUFBQSxDQUFDQyxjQUFjO1lBQ2RDLEVBQUUsRUFBRUMsUUFBUSxDQUFDLENBQUM1RCxLQUFBLENBQUsyRCxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBRTtZQUM1Q2pILEtBQUssRUFBRSxFQUFHO1lBQ1ZtSCxXQUFXLEVBQUMsa0NBQWtDO1lBQzlDQyxXQUFXLEVBQUMsU0FBUztZQUNyQkMsVUFBVSxFQUFDLGdDQUFnQztZQUMzQ0MsUUFBUSxFQUFDLGdDQUFnQztZQUN6Q0MsYUFBYSxFQUFDLEdBQUc7WUFDakJDLG1CQUFtQixFQUFDO1VBQW9CLENBQ3hDLENBQUM7UUFFSjtRQUNBLE9BQU8sRUFBRTtNQUNWLENBQUM7TUFBQWxFLEtBQUEsQ0FFRG1FLHNCQUFzQixHQUFHLE1BQVk7UUFDcEMsSUFBSUMsY0FBYyxHQUFHLEVBQUU7UUFDdkIsSUFBSXBFLEtBQUEsQ0FBS2lDLGtCQUFrQixFQUFFO1VBQzVCLE1BQU1vQyxXQUFXLEdBQUdDLGNBQWMsQ0FBQ0MsYUFBYSxDQUFDdkUsS0FBQSxDQUFLbUQsb0JBQW9CLENBQUM7VUFDM0UsTUFBTXpHLEtBQUssR0FBR3NELEtBQUEsQ0FBS3dFLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDO1VBQ2hFSixjQUFjLEdBQ2JYLElBQUEsQ0FBQ0MsY0FBYztZQUNkaEgsS0FBSyxFQUFFQSxLQUFNO1lBQ2JxSCxVQUFVLEVBQUMsbUNBQW1DO1lBQzlDRSxhQUFhLEVBQUMsR0FBRztZQUNqQk4sRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLENBQUMsQ0FBRTtZQUM3RGMsU0FBUyxFQUFDLElBQUk7WUFDZFQsUUFBUSxFQUFDLGdDQUFnQztZQUN6Q0YsV0FBVyxFQUFDLFlBQVk7WUFDeEJZLE9BQU8sRUFBQyxhQUFhO1lBQUFDLFFBQUEsRUFFcEI7Y0FDQUMsV0FBVyxFQUNWbkIsSUFBQSxDQUFDb0IsTUFBTTtnQkFDTmxCLEVBQUUsRUFBRUMsUUFBUSxDQUFDLENBQUM1RCxLQUFBLENBQUsyRCxFQUFFLEVBQUUsYUFBYSxFQUFFLDBCQUEwQixDQUFDLENBQUU7Z0JBQ25FbUIsS0FBSyxFQUFDLE1BQU07Z0JBQ1pDLGNBQWMsRUFBQyxNQUFNO2dCQUNyQkMsV0FBVyxFQUFDLHVFQUF1RTtnQkFBQUwsUUFBQSxFQUVsRjtrQkFBRU0sS0FBSyxFQUFFWixXQUFXLENBQUNhLEdBQUcsQ0FBRUMsS0FBSyxJQUFLMUIsSUFBQSxDQUFDMkIsUUFBUTtvQkFBZ0JDLElBQUksRUFBRUYsS0FBSyxDQUFDVDtrQkFBUSxHQUE5QlMsS0FBSyxDQUFDeEIsRUFBMEIsQ0FBQztnQkFBRTtjQUFDLENBQ2pGO1lBRVY7VUFBQyxDQUNjLENBQ2hCO1FBQ0Y7UUFDQTNELEtBQUEsQ0FBS3NGLFdBQVcsR0FBRyxFQUFFO1FBQ3JCdEYsS0FBQSxDQUFLdUYsYUFBYSxHQUFHLEVBQUU7UUFDdkJ2RixLQUFBLENBQUt1RixhQUFhLEVBQUVDLElBQUksQ0FBQ3BCLGNBQWMsQ0FBQztRQUN4QyxJQUFJLENBQUNxQixLQUFLLENBQUNDLE9BQU8sQ0FBQzFGLEtBQUEsQ0FBSzJGLGVBQWUsQ0FBQyxFQUFFO1VBQ3pDM0YsS0FBQSxDQUFLMkYsZUFBZSxHQUFHM0YsS0FBQSxDQUFLMkYsZUFBZSxDQUFFQyxTQUFTLENBQUMsQ0FBMkI7UUFDbkY7UUFDQTVGLEtBQUEsQ0FBSzJGLGVBQWUsRUFBRUUsT0FBTyxDQUFFQyxjQUFvQyxJQUFLO1VBQ3ZFLElBQUlBLGNBQWMsQ0FBQ0MsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUM5Qy9GLEtBQUEsQ0FBS2dHLDRCQUE0QixDQUFDRixjQUFjLENBQUM7VUFDbEQ7UUFDRCxDQUFDLENBQUM7UUFDRjlGLEtBQUEsQ0FBS3VGLGFBQWEsR0FBR3ZGLEtBQUEsQ0FBS3VGLGFBQWEsRUFBRVUsTUFBTSxHQUFHLENBQUMsR0FBR2pHLEtBQUEsQ0FBS3VGLGFBQWEsR0FBRyxFQUFFO1FBQzdFdkYsS0FBQSxDQUFLc0YsV0FBVyxHQUFHdEYsS0FBQSxDQUFLc0YsV0FBVyxFQUFFVyxNQUFNLEdBQUcsQ0FBQyxHQUFHakcsS0FBQSxDQUFLc0YsV0FBVyxHQUFHLEVBQUU7TUFDeEUsQ0FBQztNQUFBdEYsS0FBQSxDQVNEZ0csNEJBQTRCLEdBQUlGLGNBQW9DLElBQVc7UUFDOUUsSUFBSUEsY0FBYyxDQUFDbEosUUFBUSxLQUFLc0osU0FBUyxJQUFJSixjQUFjLENBQUN4SSxJQUFJLEtBQUssTUFBTSxFQUFFO1VBQzVFMEMsS0FBQSxDQUFLbUcsNkJBQTZCLENBQUNMLGNBQWMsQ0FBQztRQUNuRCxDQUFDLE1BQU0sSUFBSUwsS0FBSyxDQUFDQyxPQUFPLENBQUMxRixLQUFBLENBQUt1RixhQUFhLENBQUMsRUFBRTtVQUM3QyxNQUFNL0ksUUFBUSxHQUFHc0osY0FBYyxDQUFDTSxjQUFjO1VBQzlDLE1BQU1DLGVBQWUsR0FBR3JHLEtBQUEsQ0FBS3NHLFFBQVEsQ0FBRUMsUUFBUSxDQUFDLENBQUMsQ0FBQ0Msb0JBQW9CLENBQUNoSyxRQUFRLENBQUM7VUFDaEYsTUFBTWlLLGNBQWMsR0FBR0osZUFBZSxFQUFFVCxTQUFTLENBQUMsQ0FBQztVQUNuRCxJQUFJYyxhQUFhO1VBQ2pCLElBQUlaLGNBQWMsQ0FBQ3hJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDbkNvSixhQUFhLEdBQ1pqRCxJQUFBLENBQUNrRCxVQUFVO2NBQUNDLFVBQVUsRUFBRWQsY0FBYyxDQUFDbEosUUFBUztjQUFBK0gsUUFBQSxFQUMvQ2xCLElBQUE7Z0JBQU16RyxJQUFJLEVBQUc4SSxjQUFjLENBQXlCeko7Y0FBVSxDQUFFO1lBQUMsQ0FDdEQsQ0FDWjtVQUNGLENBQUMsTUFBTSxJQUFJeUosY0FBYyxDQUFDbEosUUFBUSxFQUFFO1lBQ25DOEosYUFBYSxHQUNaakQsSUFBQSxDQUFDb0QsbUJBQW1CO2NBQ25CQyxZQUFZLEVBQUVoQixjQUFjLENBQUNsSixRQUFTO2NBQ3RDK0csRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxtQkFBbUIsRUFBRW1DLGNBQWMsQ0FBQ3hKLEdBQUcsQ0FBQyxDQUFFO2NBQ2pFeUssV0FBVyxFQUFFO1lBQXVDLENBQ3BELENBQ0Q7VUFDRjtVQUNBLElBQUlDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztVQUMxQixJQUFJWCxlQUFlLEVBQUU7WUFDcEJXLGlCQUFpQixHQUFHL0MsYUFBYSxDQUFDNkIsY0FBYyxDQUFDTSxjQUFjLEVBQUU7Y0FBRWEsT0FBTyxFQUFFWjtZQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7VUFDckc7VUFDQXJHLEtBQUEsQ0FBS3VGLGFBQWEsRUFBRUMsSUFBSSxDQUN2Qi9CLElBQUEsQ0FBQ0MsY0FBYztZQUNkQyxFQUFFLEVBQUVDLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLG1CQUFtQixFQUFFbUMsY0FBYyxDQUFDeEosR0FBRyxDQUFDLENBQUU7WUFDakU0SyxRQUFRLEVBQUU7Y0FBRWxLLElBQUksRUFBRTtZQUF3QyxDQUFFO1lBQzVEOEcsV0FBVyxFQUFFZ0MsY0FBYyxDQUFDcUIsYUFBYztZQUMxQ3pLLEtBQUssRUFBRW9KLGNBQWMsQ0FBQ3BKLEtBQU07WUFDNUJzSCxRQUFRLEVBQUU4QixjQUFjLENBQUM5QixRQUFTO1lBQ2xDQyxhQUFhLEVBQUUrQyxpQkFBa0I7WUFDakNqRCxVQUFVLEVBQUUseUJBQXlCK0IsY0FBYyxDQUFDcUIsYUFBYSxHQUFJO1lBQ3JFMUMsU0FBUyxFQUFFMkMsV0FBVyxDQUFDM0MsU0FBUyxDQUMvQjRCLGVBQWUsRUFDZkksY0FBYyxFQUNkekcsS0FBQSxDQUFLcUgsb0JBQW9CLEVBQ3pCdkIsY0FBYyxDQUFDd0IsUUFBUSxFQUN2QnRILEtBQUEsQ0FBSytHLFdBQVcsQ0FBRVEsT0FBTyxDQUFDLENBQzNCLENBQUU7WUFDRnJELG1CQUFtQixFQUFHNEIsY0FBYyxDQUF5QzBCLFdBQVk7WUFDekZDLHFCQUFxQixFQUFHM0IsY0FBYyxDQUEyQzRCLGFBQWM7WUFDL0ZDLFNBQVMsRUFBRSxXQUFZO1lBQ3ZCaEwsUUFBUSxFQUFFbUosY0FBYyxDQUFDbkosUUFBUztZQUFBZ0ksUUFBQSxFQUVqQztjQUNBaUQsT0FBTyxFQUNObkUsSUFBQSxDQUFDb0UsK0JBQStCO2dCQUMvQixnQkFBYSwrQ0FBK0M7Z0JBQzVEbEUsRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSwyQkFBMkIsRUFBRW1DLGNBQWMsQ0FBQ3hKLEdBQUcsQ0FBQyxDQUFFO2dCQUN6RXdMLE9BQU8sRUFBRSxrQkFBa0JDLFdBQVcsQ0FBQ0Msb0JBQW9CLENBQUNsQyxjQUFjLENBQUNxQixhQUFhLENBQUMsR0FBSTtnQkFDN0ZwRCxVQUFVLEVBQUUsOEJBQStEO2dCQUFBWSxRQUFBLEVBRTFFO2tCQUFFaUQsT0FBTyxFQUFFbEI7Z0JBQWM7Y0FBQyxDQUNLLENBQ2pDO2NBQ0R1QixVQUFVLEVBQUUsQ0FDWHhFLElBQUEsQ0FBQ3lFLFVBQVU7Z0JBQWdCdEYsS0FBSyxFQUFFa0QsY0FBYyxDQUFDeEksSUFBSSxLQUFLO2NBQU8sR0FBaEQsUUFBa0QsQ0FBQyxFQUNwRW1HLElBQUEsQ0FBQzBFLG1CQUFtQjtnQkFFbkJ2RixLQUFLLEVBQUUseUNBQXlDa0QsY0FBYyxDQUFDc0MsZUFBZTtjQUFvRCxHQUQ3SCx5QkFFTCxDQUFDO1lBRUo7VUFBQyxDQUNjLENBQ2pCLENBQUM7UUFDRjtNQUNELENBQUM7TUFBQXBJLEtBQUEsQ0FlRG1HLDZCQUE2QixHQUFJTCxjQUFvQyxJQUFXO1FBQy9FLElBQUlMLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMUYsS0FBQSxDQUFLdUYsYUFBYSxDQUFDLEVBQUU7VUFDdEMsTUFBTThDLEVBQUUsR0FBRztZQUFFLEdBQUd2QyxjQUFjLENBQUN3QyxZQUFZO1lBQUUsR0FBRztjQUFFQywwQkFBMEIsRUFBRSxDQUFDdkksS0FBQSxDQUFLd0k7WUFBaUI7VUFBRSxDQUFDO1VBQ3hHeEksS0FBQSxDQUFLdUYsYUFBYSxFQUFFQyxJQUFJLENBQ3ZCL0IsSUFBQSxDQUFDZ0YsbUJBQW1CO1lBQ25CQyxRQUFRLEVBQUU5RSxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxhQUFhLEVBQUVnRixZQUFZLENBQUNDLGlCQUFpQixDQUFDOUMsY0FBYyxDQUFDTSxjQUFjLENBQUMsQ0FBQyxDQUFFO1lBQzVHeUMsVUFBVSxFQUFFakYsUUFBUSxDQUFDLENBQUM1RCxLQUFBLENBQUsyRCxFQUFFLEVBQUUsc0JBQXNCLENBQUMsQ0FBRTtZQUN4RG5ILFFBQVEsRUFBRXNKLGNBQWMsQ0FBQ00sY0FBcUM7WUFDOURXLFdBQVcsRUFBRS9HLEtBQUEsQ0FBSzhJLDZCQUE2QixDQUFDaEQsY0FBYyxFQUFFOUYsS0FBQSxDQUFLK0ksb0JBQW9CLENBQXdCO1lBQ2pIMUIsb0JBQW9CLEVBQUVySCxLQUFBLENBQUtxSCxvQkFBcUI7WUFDaEQzSyxLQUFLLEVBQUVvSixjQUFjLENBQUNwSixLQUFNO1lBQzVCNEssUUFBUSxFQUFFcUIsWUFBWSxDQUFDSyxtQkFBbUIsQ0FBQ2xELGNBQWMsQ0FBQ3dCLFFBQVEsQ0FBRTtZQUNwRWdCLFlBQVksRUFBRXhDLGNBQWMsQ0FBQ3dDLFlBQVksS0FBS3BDLFNBQVMsR0FBSStDLGdCQUFnQixDQUFDWixFQUFFLENBQUMsR0FBMEJuQyxTQUFVO1lBQ25IZ0QsUUFBUSxFQUFFLGNBQWNsSixLQUFBLENBQUsyRCxFQUFFLGlCQUFpQm1DLGNBQWMsQ0FBQ3FCLGFBQWE7VUFBYSxDQUN6RixDQUNGLENBQUM7UUFDRjtRQUNBLElBQUkxQixLQUFLLENBQUNDLE9BQU8sQ0FBQzFGLEtBQUEsQ0FBS3NGLFdBQVcsQ0FBQyxFQUFFO1VBQ3BDdEYsS0FBQSxDQUFLc0YsV0FBVyxFQUFFRSxJQUFJLENBQ3JCL0IsSUFBQSxDQUFDMEYsU0FBUztZQUNUVCxRQUFRLEVBQUU5RSxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFFO1lBQ3REeUYsY0FBYyxFQUFDLFVBQVU7WUFDekI5QyxRQUFRLEVBQUVSLGNBQWMsQ0FBQ00sY0FBZTtZQUN4Q1csV0FBVyxFQUFFL0csS0FBQSxDQUFLOEksNkJBQTZCLENBQUNoRCxjQUFjLEVBQUU5RixLQUFBLENBQUsrSSxvQkFBb0IsQ0FBRTtZQUMzRk0sb0JBQW9CLEVBQUUsSUFBSztZQUMzQmhDLG9CQUFvQixFQUFFckgsS0FBQSxDQUFLcUg7VUFBcUIsQ0FDaEQsQ0FDRixDQUFDO1FBQ0Y7TUFDRCxDQUFDO01BelRBLElBQUksQ0FBQ3JILEtBQUEsQ0FBS3NHLFFBQVEsRUFBRTtRQUNuQmdELEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLGlEQUFpRCxDQUFDO1FBQzVELE9BQUFDLHNCQUFBLENBQUF4SixLQUFBO01BQ0Q7TUFDQSxNQUFNeUosU0FBUyxHQUFHekosS0FBQSxDQUFLc0csUUFBUSxDQUFDaUIsT0FBTyxDQUFDLENBQUM7TUFDekMsSUFBSW1DLGNBQWMsR0FBRyxFQUFFO01BQ3ZCLE1BQU1yRyxjQUFhLEdBQUdvRyxTQUFTLEVBQUVFLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO01BQzlGLElBQUl0RyxjQUFhLENBQUM0QyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzdCeUQsY0FBYyxHQUFHMUosS0FBQSxDQUFLb0QsaUJBQWlCLENBQUNDLGNBQWEsQ0FBQztNQUN2RDtNQUNBLE1BQU11RyxjQUFjLEdBQUczRyxXQUFXLENBQUM0RyxnQkFBZ0IsQ0FBQ0gsY0FBYyxDQUFDO01BQ25FLE1BQU0xRyxXQUFVLEdBQUdoRCxLQUFBLENBQUsrRyxXQUFXLEVBQUVSLFFBQVEsQ0FBQyxDQUFDO01BQy9DdkcsS0FBQSxDQUFLK0ksb0JBQW9CLEdBQUcvRixXQUFVLEVBQUV3RCxvQkFBb0IsQ0FBQ2tELGNBQWMsQ0FBWTtNQUN2RixNQUFNdEQsY0FBc0IsR0FBRyw2Q0FBNkMsSUFBSy9DLGNBQWEsQ0FBQzRDLE1BQU0sSUFBSTVDLGNBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSyxFQUFFLENBQUM7TUFDakksTUFBTXlHLGlCQUFpQixHQUFHL0osU0FBUyxFQUFFZ0ssZUFBeUI7TUFDOUQsSUFBSUMsV0FBVyxHQUFHNUQsY0FBYztNQUNoQyxJQUFJMEQsaUJBQWlCLEtBQUssRUFBRSxJQUFJOUosS0FBQSxDQUFLK0ksb0JBQW9CLENBQUN4QixPQUFPLENBQUMsQ0FBQyxFQUFFMEMsVUFBVSxDQUFDSCxpQkFBaUIsQ0FBQyxFQUFFO1FBQ25HRSxXQUFXLEdBQUdQLFNBQVMsQ0FBQ2xOLE9BQU8sQ0FBQ3VOLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztNQUN2RDtNQUNBOUosS0FBQSxDQUFLa0ssZUFBZSxHQUFHOUQsY0FBYztNQUNyQyxNQUFNK0QsWUFBNEQsR0FBRyxDQUFDLENBQUM7TUFDdkUsSUFBSW5LLEtBQUEsQ0FBS29LLFlBQVksRUFBRTtRQUN0QkQsWUFBWSxDQUFDSCxXQUFXLENBQUMsR0FBRztVQUMzQkksWUFBWSxFQUFFcEssS0FBQSxDQUFLb0s7UUFDcEIsQ0FBQztNQUNGO01BRUEsTUFBTUMsd0JBQXdCLEdBQUdDLDJCQUEyQixDQUFDdEssS0FBQSxDQUFLK0ksb0JBQW9CLENBQUM7TUFDdkYsTUFBTXdCLGlCQUFpQixHQUFHdkssS0FBQSxDQUFLd0ssbUJBQW1CLENBQUNILHdCQUF3QixFQUFFbkUsU0FBUyxFQUFFbkcsU0FBUyxFQUFFb0ssWUFBWSxDQUFDO01BQ2hILElBQUksQ0FBQ25LLEtBQUEsQ0FBS3lLLFlBQVksRUFBRTtRQUN2QnpLLEtBQUEsQ0FBS3lLLFlBQVksR0FBR0Msa0JBQWtCLENBQUNILGlCQUFpQixFQUFFLEVBQUUsRUFBRW5FLGNBQWMsQ0FBQyxDQUFDdUUsYUFBYTtNQUM1RjtNQUVBLE1BQU12SSxnQkFBZSxHQUFHa0ksMkJBQTJCLENBQUN0SyxLQUFBLENBQUtzRyxRQUFRLEVBQUV0RyxLQUFBLENBQUsrRyxXQUFXLENBQUMsQ0FBQzNFLGVBQTRCO01BQ2pILElBQUlBLGdCQUFlLEVBQUVDLFdBQVcsRUFBRXVJLE1BQU0sRUFBRUMsU0FBUyxJQUFJLENBQUM3SyxLQUFBLENBQUs4SywyQkFBMkIsRUFBRTtRQUN6RjlLLEtBQUEsQ0FBS2lDLGtCQUFrQixHQUFHLElBQUk7UUFDOUJqQyxLQUFBLENBQUttQyw4QkFBOEIsQ0FBQ0MsZ0JBQWUsQ0FBQztRQUNwRHBDLEtBQUEsQ0FBSytDLGtDQUFrQyxDQUFDQyxXQUE0QixDQUFDO01BQ3RFOztNQUVBO01BQ0EsSUFBSSxDQUFDaEQsS0FBQSxDQUFLMkYsZUFBZSxFQUFFO1FBQzFCLE1BQU1vRixnQkFBZ0IsR0FBR0wsa0JBQWtCLENBQUNILGlCQUFpQixFQUFFLEVBQUUsRUFBRW5FLGNBQWMsQ0FBQyxDQUFDVCxlQUFlO1FBQ2xHM0YsS0FBQSxDQUFLMkYsZUFBZSxHQUFHLElBQUlxRixhQUFhLENBQUNELGdCQUFnQixFQUFFL0gsV0FBNEIsQ0FBQyxDQUFDd0Qsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1FBQ2xILE1BQU15RSxRQUFRLEdBQUdsTCxTQUFTLEVBQUVtTCxNQUFNLEVBQUVELFFBQVEsRUFBRUUsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTUMsV0FBVyxHQUFHYixpQkFBaUIsQ0FBQ2MsYUFBYSxDQUFDLENBQUM7VUFDcERDLGlCQUFpQixHQUFHQyxtQkFBbUIsQ0FBQ0gsV0FBVyxFQUFFYixpQkFBaUIsQ0FBQztVQUN2RWlCLGlCQUFpQixHQUFJeEksV0FBVSxDQUFvQnlJLFVBQVUsQ0FBQzdCLGNBQWMsQ0FBbUI7VUFDL0Y4QixpQkFBaUIsR0FBR0MsbUJBQW1CLENBQ3RDSCxpQkFBaUI7VUFBeUI7VUFDMUM7WUFBRUksZ0JBQWdCLEVBQUVOO1VBQWtCLENBQUMsRUFDdkNFLGlCQUFpQixDQUFDNUYsU0FBUyxDQUFDLENBQUMsRUFDN0JxRixRQUFRLEVBQ1JqTCxLQUFBLENBQUtpQyxrQkFDTixDQUFDO1FBQ0ZqQyxLQUFBLENBQUs2TCxnQkFBZ0IsR0FBR0gsaUJBQWlCO01BQzFDO01BQ0ExTCxLQUFBLENBQUs4TCxxQkFBcUIsQ0FBQzlMLEtBQUEsQ0FBS3lLLFlBQVksRUFBRXpILFdBQVUsQ0FBQztNQUV6RCxJQUFJaEQsS0FBQSxDQUFLK0wsaUJBQWlCLEVBQUU7UUFDM0IvTCxLQUFBLENBQUtnTSxNQUFNLEdBQUdoTSxLQUFBLENBQUsyRCxFQUFFLEdBQUcsYUFBYTtRQUNyQzNELEtBQUEsQ0FBS2lNLFVBQVUsR0FBR2pNLEtBQUEsQ0FBSzJELEVBQUU7TUFDMUIsQ0FBQyxNQUFNO1FBQ04zRCxLQUFBLENBQUtnTSxNQUFNLEdBQUdoTSxLQUFBLENBQUsyRCxFQUFFO1FBQ3JCM0QsS0FBQSxDQUFLaU0sVUFBVSxHQUFHak0sS0FBQSxDQUFLa00sWUFBWSxDQUFDbE0sS0FBQSxDQUFLMkQsRUFBRSxHQUFHLEVBQUUsQ0FBQztNQUNsRDtNQUVBLElBQUkzRCxLQUFBLENBQUt3RCxlQUFlLEtBQUssSUFBSSxFQUFFO1FBQ2xDLE1BQU0ySSw0QkFBNEIsR0FBR0MscUJBQXFCLENBQUN4QyxjQUFjLEVBQUU1RyxXQUE0QixDQUFDO1FBQ3hHaEQsS0FBQSxDQUFLd0QsZUFBZSxHQUFHNkksT0FBTyxDQUFDRiw0QkFBNEIsSUFBSSxDQUFDQSw0QkFBNEIsQ0FBQ0csVUFBVSxDQUFDO01BQ3pHO01BQ0FDLEdBQUcsQ0FBQ0MsV0FBVyxDQUFDLE1BQU14TSxLQUFBLENBQUttRSxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7TUFFcERuRSxLQUFBLENBQUt5TSxVQUFVLEdBQUd6TSxLQUFBLENBQUswTSxhQUFhLENBQUMsQ0FBQztNQUFDLE9BQUExTSxLQUFBO0lBQ3hDO0lBQUMyTSxRQUFBLEdBQUE5UCxjQUFBO0lBQUErUCxjQUFBLENBQUEvUCxjQUFBLEVBQUErQyxxQkFBQTtJQUFBLElBQUFpTixNQUFBLEdBQUFoUSxjQUFBLENBQUFpUSxTQUFBO0lBQUFELE1BQUEsQ0FFRGYscUJBQXFCLEdBQXJCLFNBQUFBLHFCQUFxQkEsQ0FBQ3JCLFlBQW9CLEVBQUVzQyxLQUFxQixFQUFRO01BQ3hFLE1BQU1DLGdCQUEwQixHQUFHLEVBQUU7TUFDckMsSUFBSXZDLFlBQVksRUFBRTtRQUNqQixNQUFNd0Msa0JBQWtCLEdBQUd4QyxZQUFZLENBQUNsTyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDQSxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUNqRixNQUFNMlEsa0JBQWtCLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxrQkFBa0IsQ0FBQztRQUN6RCxNQUFNSSxjQUFjLEdBQUcsSUFBSSxDQUFDN0ksaUJBQWlCLENBQUMsMEJBQTBCLENBQUM7UUFDekUwSSxrQkFBa0IsQ0FBQ3JILE9BQU8sQ0FBQyxVQUFVeUgsUUFBc0IsRUFBRTtVQUM1REEsUUFBUSxDQUFDaFIsR0FBRyxHQUFHZ1IsUUFBUSxDQUFDdFEsSUFBSTtVQUM1QixJQUFJc1EsUUFBUSxDQUFDQyxXQUFXLEVBQUU7WUFDekJQLGdCQUFnQixDQUFDeEgsSUFBSSxDQUFDOEgsUUFBUSxDQUFDdFEsSUFBSSxDQUFDO1VBQ3JDO1VBQ0EsSUFBSXNRLFFBQVEsQ0FBQ0UsSUFBSSxLQUFLLFlBQVksRUFBRTtZQUNuQ0YsUUFBUSxDQUFDNVEsS0FBSyxHQUFHMlEsY0FBYztVQUNoQztVQUNBLElBQUlDLFFBQVEsQ0FBQ2hSLEdBQUcsRUFBRW1SLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQztZQUNBLE1BQU1ySCxjQUFjLEdBQUlrSCxRQUFRLENBQTBCbEgsY0FBYztZQUN4RSxNQUFNc0gsb0JBQW9CLEdBQUcvRSxZQUFZLENBQUNnRiwwQkFBMEIsQ0FBQ1osS0FBSyxFQUFFM0csY0FBYyxDQUFDO1lBQzNGLE1BQU13SCxZQUFZLEdBQUd4SCxjQUFjLENBQUM3SixPQUFPLENBQUMsR0FBR21SLG9CQUFvQixHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzNFLE1BQU1HLFNBQVMsR0FBR0Msa0JBQWtCLENBQUN4RCwyQkFBMkIsQ0FBQ3lDLEtBQUssQ0FBQ3RCLFVBQVUsQ0FBQ2lDLG9CQUFvQixDQUFDLENBQUM7WUFFeEdKLFFBQVEsQ0FBQzNRLFFBQVEsR0FBR2tHLGtCQUFrQixDQUFDa0wsZ0NBQWdDLENBQ3RFRixTQUNELENBQUMsRUFBRUcsa0JBQWtCLEVBQUVQLFFBQVEsQ0FBQ0csWUFBWSxDQUFDO1VBQzlDO1FBQ0QsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDbkQsWUFBWSxHQUFHMEMsSUFBSSxDQUFDYyxTQUFTLENBQUNmLGtCQUFrQixDQUFDLENBQUMzUSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDQSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztNQUNuRztNQUNBLElBQUksQ0FBQzJSLFdBQVcsR0FBR2YsSUFBSSxDQUFDYyxTQUFTLENBQUNqQixnQkFBZ0IsQ0FBQztJQUNwRCxDQUFDO0lBQUFILE1BQUEsQ0FzRkRzQixzQkFBc0IsR0FBdEIsU0FBQUEsc0JBQXNCQSxDQUFDQyxXQUFtQixFQUFzQjtNQUMvRCxJQUFJLElBQUksQ0FBQ0MsNEJBQTRCLEVBQUU7UUFDdEMsT0FBTzVLLElBQUEsQ0FBQzZLLG1CQUFtQjtVQUFDM0ssRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQ3dLLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFFO1VBQUNHLEdBQUcsRUFBRUgsV0FBWTtVQUFDSSxJQUFJLEVBQUU7UUFBWSxDQUFFLENBQUM7TUFDeEg7TUFDQSxPQUFPdEksU0FBUztJQUNqQixDQUFDO0lBQUEyRyxNQUFBLENBMEVEL0QsNkJBQTZCLEdBQTdCLFNBQUFBLDZCQUE2QkEsQ0FBQ2hELGNBQW9DLEVBQUUySSxvQkFBNkIsRUFBVTtNQUMxRyxJQUFJMUgsV0FBbUIsR0FBRzBILG9CQUFvQixFQUFFbEgsT0FBTyxDQUFDLENBQUM7TUFDekQsSUFBSXpCLGNBQWMsQ0FBQ3lILFdBQVcsRUFBRTtRQUMvQjtRQUNBO1FBQ0E7UUFDQTtRQUNBLE1BQU1tQixRQUFRLEdBQUc1SSxjQUFjLENBQUNNLGNBQWM7UUFDOUNXLFdBQVcsR0FBRzJILFFBQVEsQ0FBQ0MsU0FBUyxDQUFDLENBQUMsRUFBRUQsUUFBUSxDQUFDRSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQ25FO01BQ0EsT0FBTzdILFdBQVc7SUFDbkIsQ0FBQztJQWlDRDtBQUNEO0FBQ0E7QUFDQTtJQUhDOEYsTUFBQSxDQUlBSCxhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQSxFQUF1QjtNQUNuQyxPQUFPLHlEQUF5RDtJQUNqRSxDQUFDO0lBQUFHLE1BQUEsQ0FFRGdDLFdBQVcsR0FBWCxTQUFBQSxXQUFXQSxDQUFBLEVBQVc7TUFDckIsTUFBTUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDL0Ysb0JBQW9CLEVBQUV4QixPQUFPLENBQUMsQ0FBQztNQUNoRSxJQUFJd0gsY0FBYyxHQUFHLEVBQUU7TUFDdkIsSUFBSSxJQUFJLENBQUNDLGlCQUFpQixFQUFFO1FBQzNCRCxjQUFjLEdBQUcsSUFBSSxDQUFDQyxpQkFBaUI7TUFDeEMsQ0FBQyxNQUFNO1FBQ05ELGNBQWMsR0FBRyxnRkFBZ0YsR0FBR0QsbUJBQW1CLEdBQUcsS0FBSztNQUNoSTtNQUNBO01BQ0EsTUFBTUcsb0JBQW9CLEdBQUdsSCxXQUFXLENBQUNtSCxrQkFBa0IsQ0FBQyxJQUFJLENBQUN6RSxZQUFzQixDQUFDO01BRXhGLE1BQU0wRSxXQUFXLEdBQUcsSUFBSSxDQUFDQyx3QkFBd0IsQ0FBQyxvQ0FBb0MsQ0FBQztNQUN2RixJQUFJQyx1QkFBMkM7TUFDL0MsSUFBSUMsZ0JBQW9DO01BQ3hDLElBQUlILFdBQVcsRUFBRTtRQUNoQkUsdUJBQXVCLEdBQUcsSUFBSSxDQUFDN0ssaUJBQWlCLENBQUMsb0NBQW9DLENBQUMsQ0FBQytLLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQzdHRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUM5SyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQztNQUN2RTtNQUNBLE9BQ0NmLElBQUEsQ0FBQytMLFlBQVk7UUFDWjdMLEVBQUUsRUFBRSxJQUFJLENBQUNxSSxNQUFPO1FBQ2hCMUYsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUSxDQUFFaUIsT0FBTyxDQUFDLENBQUU7UUFDbkNrSSxNQUFNLEVBQUUsSUFBSSxDQUFDQSxNQUFPO1FBQ3BCQyxhQUFhLEVBQUUsSUFBSSxDQUFDQSxhQUFjO1FBQ2xDQyxVQUFVLEVBQUUsSUFBSSxDQUFDQSxVQUFXO1FBQzVCQyxjQUFjLEVBQUUsSUFBSSxDQUFDQSxjQUFlO1FBQ3BDQyxxQkFBcUIsRUFBRSxJQUFJLENBQUNBLHFCQUFzQjtRQUFBbEwsUUFBQSxFQUVqRDtVQUNBaUQsT0FBTyxFQUNObkUsSUFBQSxDQUFDcU0sV0FBVztZQUNYLGdCQUFhLCtDQUErQztZQUM1RFIsZ0JBQWdCLEVBQUVBLGdCQUFpQjtZQUNuQ1MsdUJBQXVCLEVBQUVWLHVCQUF3QjtZQUNqRDFMLEVBQUUsRUFBRSxJQUFJLENBQUNzSSxVQUFXO1lBQ3BCK0QsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUztZQUN4QjlJLFFBQVEsRUFBRTZILGNBQWU7WUFDekJrQixvQkFBb0IsRUFBRSxJQUFJLENBQUNELFFBQVEsR0FBRzlKLFNBQVMsR0FBRyxJQUFJLENBQUMrSixvQkFBcUI7WUFDNUVDLHNCQUFzQixFQUFFLElBQUksQ0FBQ0Esc0JBQXVCO1lBQ3BEQyxlQUFlLEVBQUUsSUFBSSxDQUFDQSxlQUFnQjtZQUN0Q0MsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUztZQUN4QlgsTUFBTSxFQUFFLDBCQUFnRjtZQUN4RlksY0FBYyxFQUFFLGlDQUErRjtZQUMvR3hFLGdCQUFnQixFQUFFLElBQUksQ0FBQ0EsZ0JBQWlCO1lBQ3hDckQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDQSxnQkFBaUI7WUFDeEM4SCxZQUFZLEVBQUUsSUFBSSxDQUFDQSxZQUFhO1lBQ2hDQyxhQUFhLEVBQUUsSUFBSSxDQUFDQyxlQUFnQjtZQUNwQ0MsYUFBYSxFQUFFLElBQUksQ0FBQ0EsYUFBYztZQUNsQ0MsT0FBTyxFQUFFLElBQUksQ0FBQ0EsT0FBUTtZQUN0QjVGLDJCQUEyQixFQUFFLElBQUksQ0FBQ0EsMkJBQTRCO1lBQzlELGlCQUFlLElBQUksQ0FBQzJCLFVBQVc7WUFDL0IseUJBQXVCcUMsbUJBQW9CO1lBQUFuSyxRQUFBLEVBRTFDO2NBQ0FzRCxVQUFVLEVBQUUsQ0FDWHhFLElBQUEsQ0FBQ3lFLFVBQVU7Z0JBQWlCdEYsS0FBSyxFQUFFLElBQUksQ0FBQ2U7Y0FBRyxHQUExQixTQUE0QixDQUFDLEVBQzlDRixJQUFBLENBQUN5RSxVQUFVO2dCQUF5QnRGLEtBQUssRUFBRSxJQUFJLENBQUNZO2NBQWdCLEdBQS9DLGlCQUFpRCxDQUFDLEVBQ25FQyxJQUFBLENBQUN5RSxVQUFVO2dCQUE0QnRGLEtBQUssRUFBRSxJQUFJLENBQUNYO2NBQW1CLEdBQXJELG9CQUF1RCxDQUFDLEVBQ3pFd0IsSUFBQSxDQUFDeUUsVUFBVTtnQkFBOEJ0RixLQUFLLEVBQUUsSUFBSSxDQUFDeUU7Y0FBcUIsR0FBekQsc0JBQTJELENBQUMsRUFDN0U1RCxJQUFBLENBQUN5RSxVQUFVO2dCQUFvQnRGLEtBQUssRUFBRSxJQUFJLENBQUNzTDtjQUFZLEdBQXRDLFlBQXdDLENBQUMsRUFDMUR6SyxJQUFBLENBQUN5RSxVQUFVO2dCQUFzQnRGLEtBQUssRUFBRSxJQUFJLENBQUM2SDtjQUFhLEdBQXpDLGNBQTJDLENBQUMsRUFDN0RoSCxJQUFBLENBQUN5RSxVQUFVO2dCQUF3QnRGLEtBQUssRUFBRSxJQUFJLENBQUNzSDtjQUFnQixHQUE5QyxnQkFBZ0QsQ0FBQyxDQUNsRTtjQUNEeUcsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDckwsV0FBVyxFQUFFLElBQUksQ0FBQzZJLHNCQUFzQixDQUFDLElBQUksQ0FBQ2xDLFVBQW9CLENBQUMsQ0FBQztjQUN0RjJFLGdCQUFnQixFQUFFLElBQUksQ0FBQ3JOLFNBQVMsQ0FBQyxDQUFDO2NBQ2xDc04sV0FBVyxFQUFFLElBQUksQ0FBQ3RMO1lBQ25CO1VBQUMsQ0FDVztRQUVmO01BQUMsQ0FDWSxDQUFDO0lBRWpCLENBQUM7SUFBQSxPQUFBMUksY0FBQTtFQUFBLEVBbG9CMENpVSwyQkFBMkIsR0FBQTNRLFdBQUEsR0FBQTRRLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLFNBQUExUCxLQUFBO0lBQUE0VCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9RLFlBQUEsR0FBQTJRLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLGNBQUF0UCxLQUFBO0lBQUF3VCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTlRLFlBQUEsR0FBQTBRLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLHNCQUFBclAsS0FBQTtJQUFBdVQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE3USxZQUFBLEdBQUF5USx5QkFBQSxDQUFBcFIsT0FBQSxDQUFBbU4sU0FBQSx3QkFBQXBQLEtBQUE7SUFBQXNULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBNVEsWUFBQSxHQUFBd1EseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsZUFBQW5QLEtBQUE7SUFBQXFULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBM1EsWUFBQSxHQUFBdVEseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsa0JBQUFsUCxLQUFBO0lBQUFvVCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTFRLFlBQUEsR0FBQXNRLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLG1CQUFBalAsS0FBQTtJQUFBbVQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0E4Q3ZELEtBQUs7SUFBQTtFQUFBLElBQUF6USxZQUFBLEdBQUFxUSx5QkFBQSxDQUFBcFIsT0FBQSxDQUFBbU4sU0FBQSwyQkFBQWhQLEtBQUE7SUFBQWtULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBeFEsWUFBQSxHQUFBb1EseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsc0JBQUEvTyxNQUFBO0lBQUFpVCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXZRLGFBQUEsR0FBQW1RLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLHFCQUFBOU8sTUFBQTtJQUFBZ1QsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0F3QkgsS0FBSztJQUFBO0VBQUEsSUFBQXRRLGFBQUEsR0FBQWtRLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLDZCQUFBN08sTUFBQTtJQUFBK1MsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FRRyxJQUFJO0lBQUE7RUFBQSxJQUFBclEsYUFBQSxHQUFBaVEseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsZUFBQTVPLE1BQUE7SUFBQThTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BUWxCLFlBQVk7SUFBQTtFQUFBLElBQUFwUSxhQUFBLEdBQUFnUSx5QkFBQSxDQUFBcFIsT0FBQSxDQUFBbU4sU0FBQSxtQkFBQTNPLE1BQUE7SUFBQTZTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBblEsYUFBQSxHQUFBK1AseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsMkJBQUExTyxNQUFBO0lBQUE0UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQWFBLElBQUk7SUFBQTtFQUFBLElBQUFsUSxhQUFBLEdBQUE4UCx5QkFBQSxDQUFBcFIsT0FBQSxDQUFBbU4sU0FBQSwyQkFBQXpPLE1BQUE7SUFBQTJTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBalEsYUFBQSxHQUFBNlAseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsZUFBQXhPLE1BQUE7SUFBQTBTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BaUJoQixLQUFLO0lBQUE7RUFBQSxJQUFBaFEsYUFBQSxHQUFBNFAseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsdUJBQUF2TyxNQUFBO0lBQUF5UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9QLGFBQUEsR0FBQTJQLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLHVCQUFBdE8sTUFBQTtJQUFBd1MsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FtQkcsS0FBSztJQUFBO0VBQUEsSUFBQTlQLGFBQUEsR0FBQTBQLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLDJCQUFBck8sTUFBQTtJQUFBdVMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FLRCxLQUFLO0lBQUE7RUFBQSxJQUFBN1AsYUFBQSxHQUFBeVAseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsc0JBQUFwTyxNQUFBO0lBQUFzUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVQLGFBQUEsR0FBQXdQLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLG9CQUFBbk8sTUFBQTtJQUFBcVMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FhWixTQUFTO0lBQUE7RUFBQSxJQUFBM1AsYUFBQSxHQUFBdVAseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsc0JBQUFsTyxNQUFBO0lBQUFvUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQVNQLEtBQUs7SUFBQTtFQUFBLElBQUExUCxhQUFBLEdBQUFzUCx5QkFBQSxDQUFBcFIsT0FBQSxDQUFBbU4sU0FBQSx3QkFBQWpPLE1BQUE7SUFBQW1TLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BS0gsS0FBSztJQUFBO0VBQUEsSUFBQXpQLGFBQUEsR0FBQXFQLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLGtDQUFBaE8sTUFBQTtJQUFBa1MsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FLSyxLQUFLO0lBQUE7RUFBQSxJQUFBeFAsYUFBQSxHQUFBb1AseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsYUFBQS9OLE1BQUE7SUFBQWlTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdlAsYUFBQSxHQUFBbVAseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsb0JBQUE3TixNQUFBO0lBQUErUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXRQLGFBQUEsR0FBQWtQLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLDRCQUFBNU4sTUFBQTtJQUFBOFIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFyUCxhQUFBLEdBQUFpUCx5QkFBQSxDQUFBcFIsT0FBQSxDQUFBbU4sU0FBQSxxQkFBQTNOLE1BQUE7SUFBQTZSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBcFAsYUFBQSxHQUFBZ1AseUJBQUEsQ0FBQXBSLE9BQUEsQ0FBQW1OLFNBQUEsaUJBQUExTixNQUFBO0lBQUE0UixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQW5QLGFBQUEsR0FBQStPLHlCQUFBLENBQUFwUixPQUFBLENBQUFtTixTQUFBLG1CQUFBek4sTUFBQTtJQUFBMlIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFqUCxhQUFBLEdBQUE2Tyx5QkFBQSxDQUFBcFIsT0FBQSxDQUFBbU4sU0FBQSxtQ0FBQXJOLE1BQUE7SUFBQXVSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BdUVKLEtBQUs7SUFBQTtFQUFBLElBQUF4UixPQUFBLE1BQUFELE1BQUE7RUFBQWlOLFFBQUEsR0FBQTlQLGNBQUE7RUFBQSxPQUFBOFAsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -2,7 +2,6 @@ import type { EntitySet } from "@sap-ux/vocabularies-types";
|
|
|
2
2
|
import Log from "sap/base/Log";
|
|
3
3
|
import type { PropertiesOf } from "sap/fe/base/ClassSupport";
|
|
4
4
|
import jsx from "sap/fe/base/jsx-runtime/jsx";
|
|
5
|
-
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
6
5
|
import TemplateModel from "sap/fe/core/TemplateModel";
|
|
7
6
|
import {
|
|
8
7
|
blockAggregation,
|
|
@@ -13,13 +12,17 @@ import {
|
|
|
13
12
|
import type { TemplateProcessorSettings } from "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor";
|
|
14
13
|
import { storeObjectValue } from "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor";
|
|
15
14
|
import BuildingBlockTemplatingBase from "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase";
|
|
15
|
+
import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
|
|
16
16
|
import { getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
|
|
17
|
+
import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
|
|
17
18
|
import { getSelectionVariant } from "sap/fe/core/converters/controls/Common/DataVisualization";
|
|
19
|
+
import FilterRestrictions from "sap/fe/core/converters/controls/Common/filter/FilterRestrictions";
|
|
18
20
|
import type { FilterField as ConvertedFilterField, ManifestFilterField } from "sap/fe/core/converters/controls/ListReport/FilterBar";
|
|
19
21
|
import { getSelectionFields } from "sap/fe/core/converters/controls/ListReport/FilterBar";
|
|
20
22
|
import { getSearchRestrictions } from "sap/fe/core/helpers/MetaModelFunction";
|
|
21
23
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
22
24
|
import { generate } from "sap/fe/core/helpers/StableIdHelper";
|
|
25
|
+
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
23
26
|
import CommonHelper from "sap/fe/macros/CommonHelper";
|
|
24
27
|
import FieldHelper from "sap/fe/macros/field/FieldHelper";
|
|
25
28
|
import { maxConditions } from "sap/fe/macros/filter/FilterFieldHelper";
|
|
@@ -30,6 +33,7 @@ import { getFilterConditions } from "sap/fe/macros/filterBar/FilterHelper";
|
|
|
30
33
|
import CustomFragmentBlock from "sap/fe/macros/fpm/CustomFragment.block";
|
|
31
34
|
import InternalFilterField from "sap/fe/macros/internal/FilterField.block";
|
|
32
35
|
import Select from "sap/m/Select";
|
|
36
|
+
import type UI5Event from "sap/ui/base/Event";
|
|
33
37
|
import type Control from "sap/ui/core/Control";
|
|
34
38
|
import CustomData from "sap/ui/core/CustomData";
|
|
35
39
|
import ListItem from "sap/ui/core/ListItem";
|
|
@@ -37,11 +41,16 @@ import FieldHelpCustomData from "sap/ui/core/fieldhelp/FieldHelpCustomData";
|
|
|
37
41
|
import type { IContext } from "sap/ui/core/util/XMLPreprocessor";
|
|
38
42
|
import MDCFilterField from "sap/ui/mdc/FilterField";
|
|
39
43
|
import type { ConditionObject } from "sap/ui/mdc/condition/Condition";
|
|
40
|
-
import type {
|
|
44
|
+
import type {
|
|
45
|
+
FilterBarBase$FiltersChangedEvent,
|
|
46
|
+
FilterBarBase$FiltersChangedEventParameters,
|
|
47
|
+
FilterBarBase$SearchEvent
|
|
48
|
+
} from "sap/ui/mdc/filterbar/FilterBarBase";
|
|
41
49
|
import PersistenceProvider from "sap/ui/mdc/p13n/PersistenceProvider";
|
|
42
50
|
import type Context from "sap/ui/model/Context";
|
|
43
51
|
import type ODataV4Context from "sap/ui/model/odata/v4/Context";
|
|
44
52
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
53
|
+
import type { EventHandler } from "types/extension_types";
|
|
45
54
|
import type { PropertyInfo } from "../DelegateUtil";
|
|
46
55
|
import ValueHelp from "../ValueHelp";
|
|
47
56
|
import CustomFilterFieldContentWrapper from "../controls/CustomFilterFieldContentWrapper";
|
|
@@ -273,13 +282,13 @@ export default class FilterBarBlock extends BuildingBlockTemplatingBase {
|
|
|
273
282
|
* Event handler to react to the search event of the FilterBar
|
|
274
283
|
*/
|
|
275
284
|
@blockEvent()
|
|
276
|
-
search?:
|
|
285
|
+
search?: EventHandler<UI5Event<{}, FilterBarAPI>>;
|
|
277
286
|
|
|
278
287
|
/**
|
|
279
288
|
* Event handler to react to the filterChange event of the FilterBar
|
|
280
289
|
*/
|
|
281
290
|
@blockEvent()
|
|
282
|
-
filterChanged?:
|
|
291
|
+
filterChanged?: EventHandler<UI5Event<FilterBarBase$FiltersChangedEventParameters, FilterBarAPI>>;
|
|
283
292
|
|
|
284
293
|
/**
|
|
285
294
|
* Event handler to react to the filterChanged event of the FilterBar. Exposes parameters from the MDC filter bar
|
|
@@ -297,7 +306,7 @@ export default class FilterBarBlock extends BuildingBlockTemplatingBase {
|
|
|
297
306
|
* Event handler to react to the afterClear event of the FilterBar
|
|
298
307
|
*/
|
|
299
308
|
@blockEvent()
|
|
300
|
-
afterClear?:
|
|
309
|
+
afterClear?: EventHandler<UI5Event<{}, FilterBarAPI>>;
|
|
301
310
|
|
|
302
311
|
@blockAggregation({
|
|
303
312
|
type: "sap.fe.macros.filterBar.FilterField",
|
|
@@ -427,9 +436,11 @@ export default class FilterBarBlock extends BuildingBlockTemplatingBase {
|
|
|
427
436
|
const annotationPath = (propInfo as ConvertedFilterField).annotationPath;
|
|
428
437
|
const propertyLocationPath = CommonHelper.getLocationForPropertyPath(model, annotationPath);
|
|
429
438
|
const propertyPath = annotationPath.replace(`${propertyLocationPath}/`, "");
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
439
|
+
const dataModel = MetaModelConverter.getInvolvedDataModelObjects(model.getContext(propertyLocationPath));
|
|
440
|
+
|
|
441
|
+
propInfo.required = FilterRestrictions.getFilterRestrictionsByDataModel(
|
|
442
|
+
dataModel as DataModelObjectPath<PageContextPathTarget>
|
|
443
|
+
)?.RequiredProperties?.includes(propertyPath);
|
|
433
444
|
}
|
|
434
445
|
});
|
|
435
446
|
|
|
@@ -663,6 +674,14 @@ export default class FilterBarBlock extends BuildingBlockTemplatingBase {
|
|
|
663
674
|
}
|
|
664
675
|
// after removing the unwanted properties PropertyInfo is added to the control, and we also save the full version as custom data for FE internal use
|
|
665
676
|
const _propertyInfoControl = FilterUtils.formatPropertyInfo(this.propertyInfo as string);
|
|
677
|
+
|
|
678
|
+
const hasOverride = this.checkIfResourceKeyExists("M_FILTERBAR_ADAPT_FILTERS_NON_ZERO");
|
|
679
|
+
let adaptFiltersNonZeroText: string | undefined;
|
|
680
|
+
let adaptFiltersText: string | undefined;
|
|
681
|
+
if (hasOverride) {
|
|
682
|
+
adaptFiltersNonZeroText = this.getTranslatedText("M_FILTERBAR_ADAPT_FILTERS_NON_ZERO").replaceAll("{", "\\{");
|
|
683
|
+
adaptFiltersText = this.getTranslatedText("M_FILTERBAR_ADAPT_FILTERS");
|
|
684
|
+
}
|
|
666
685
|
return (
|
|
667
686
|
<FilterBarAPI
|
|
668
687
|
id={this._apiId}
|
|
@@ -677,6 +696,8 @@ export default class FilterBarBlock extends BuildingBlockTemplatingBase {
|
|
|
677
696
|
content: (
|
|
678
697
|
<FEFilterBar
|
|
679
698
|
core:require="{API: 'sap/fe/macros/filterBar/FilterBarAPI'}"
|
|
699
|
+
adaptFiltersText={adaptFiltersText}
|
|
700
|
+
adaptFiltersTextNonZero={adaptFiltersNonZeroText}
|
|
680
701
|
id={this._contentId}
|
|
681
702
|
liveMode={this.liveMode}
|
|
682
703
|
delegate={filterDelegate}
|