@sapui5/sap.fe.macros 1.141.1 → 1.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/Field.js +30 -13
- package/src/sap/fe/macros/Field.ts +60 -30
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +6 -3
- package/src/sap/fe/macros/KPITag.js +1 -1
- package/src/sap/fe/macros/KPITag.tsx +3 -1
- package/src/sap/fe/macros/MacroAPI.js +3 -2
- package/src/sap/fe/macros/MacroAPI.ts +2 -2
- package/src/sap/fe/macros/MessageButton.js +3 -2
- package/src/sap/fe/macros/MessageButton.tsx +5 -2
- package/src/sap/fe/macros/MicroChart.js +10 -6
- package/src/sap/fe/macros/MicroChart.tsx +8 -2
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Status.js +35 -8
- package/src/sap/fe/macros/Status.tsx +23 -2
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
- package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
- package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/library.js +3 -3
- package/src/sap/fe/macros/library.ts +2 -0
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +15 -2
- package/src/sap/fe/macros/table/Action.ts +11 -1
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +70 -29
- package/src/sap/fe/macros/table/Table.block.tsx +65 -12
- package/src/sap/fe/macros/table/TableAPI.js +169 -131
- package/src/sap/fe/macros/table/TableAPI.ts +58 -28
- package/src/sap/fe/macros/table/TableDefinition.js +19 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +2 -2
- package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -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, "\\}");
|
|
@@ -767,4 +768,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/jsx-runtime/jsx", "sap/fe/core/Commo
|
|
|
767
768
|
_exports = FilterBarBlock;
|
|
768
769
|
return _exports;
|
|
769
770
|
}, 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+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtREEsTUFBTUEsOEJBQThCLEdBQUcsU0FBQUEsQ0FBVUMsZ0JBQXlCLEVBQUVDLGlCQUE4QixFQUFlO0lBQ3hIQSxpQkFBaUIsQ0FBQ0MsUUFBUSxHQUFHRCxpQkFBaUIsQ0FBQ0UsR0FBRztJQUNsREYsaUJBQWlCLENBQUNFLEdBQUcsR0FBR0YsaUJBQWlCLENBQUNFLEdBQUcsQ0FBQ0MsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7SUFDdkVILGlCQUFpQixDQUFDSSxRQUFRLEdBQUdMLGdCQUFnQixDQUFDTSxZQUFZLENBQUMsVUFBVSxDQUFFO0lBQ3ZFTCxpQkFBaUIsQ0FBQ00sS0FBSyxHQUFHUCxnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDLE9BQU8sQ0FBRTtJQUNqRUwsaUJBQWlCLENBQUNPLFFBQVEsR0FBR1IsZ0JBQWdCLENBQUNNLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNO0lBQ2pGTCxpQkFBaUIsQ0FBQ1EsUUFBUSxHQUFHVCxnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDLFVBQVUsQ0FBdUIsQ0FBQyxDQUFDO0lBQzlGLE9BQU9MLGlCQUFpQjtFQUN6QixDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFuQkEsSUEwQnFCUyxjQUFjLElBQUFDLElBQUEsR0FObENDLG1CQUFtQixDQUFDO0lBQ3BCQyxJQUFJLEVBQUUsV0FBVztJQUNqQkMsU0FBUyxFQUFFLHdCQUF3QjtJQUNuQ0MsZUFBZSxFQUFFLGVBQWU7SUFDaENDLFdBQVcsRUFBRSxDQUFDLHNDQUFzQztFQUNyRCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUtBQyxjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFLFFBQVE7SUFDZEMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHREgsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBTURKLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUksS0FBQSxHQUdETCxjQUFjLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHbENOLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsc0JBQXNCO0lBQzVCQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUssS0FBQSxHQUdEUCxjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QkMsUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFNLEtBQUEsR0FNRFIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBTyxLQUFBLEdBTURULGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQVMsTUFBQSxHQU1EVixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFVLE1BQUEsR0FNRFgsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBVyxNQUFBLEdBTURaLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQVksTUFBQSxHQU1EYixjQUFjLENBQUM7SUFDZkMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFhLE1BQUEsR0FHRGQsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBYyxNQUFBLEdBTURmLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQWUsTUFBQSxHQU1EaEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBZ0IsTUFBQSxHQU1EakIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBZ0IsTUFBQSxHQU1EbEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxRQUFRO0lBQ2RYLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBNkIsTUFBQSxHQVFEbkIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBbUIsTUFBQSxHQUdEcEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBb0IsTUFBQSxHQU1EckIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBcUIsTUFBQSxHQUdEdEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBc0IsTUFBQSxHQU1EdkIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxFQUFBc0IsTUFBQSxHQUdEeEIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBd0IsTUFBQSxHQUdEekIsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBeUIsTUFBQSxHQWdCREMsVUFBVSxDQUFDLENBQUMsRUFBQUMsTUFBQSxHQU1aRCxVQUFVLENBQUMsQ0FBQyxFQUFBRSxNQUFBLEdBTVpGLFVBQVUsQ0FBQyxDQUFDLEVBQUFHLE1BQUEsR0FNWkgsVUFBVSxDQUFDLENBQUMsRUFBQUksTUFBQSxHQU1aSixVQUFVLENBQUMsQ0FBQyxFQUFBSyxNQUFBLEdBR1pDLGdCQUFnQixDQUFDO0lBQ2pCaEMsSUFBSSxFQUFFLHFDQUFxQztJQUMzQ0MsUUFBUSxFQUFFLElBQUk7SUFDZGdDLGNBQWMsRUFBRSxJQUFJO0lBQ3BCQyxtQkFBbUIsRUFBRXREO0VBQ3RCLENBQUMsQ0FBQyxFQUFBdUQsTUFBQSxHQW9CRHBDLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsU0FBUztJQUNmQyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQVQsSUFBQSxDQUFBNEMsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxxQkFBQTtJQUdGLFNBQUEvQyxlQUFZZ0QsS0FBbUMsRUFBRUMsYUFBc0IsRUFBRUMsU0FBb0MsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDOUdBLEtBQUEsR0FBQUoscUJBQUEsQ0FBQUssSUFBQSxPQUFNSixLQUFLLEVBQUVDLGFBQWEsRUFBRUMsU0FBUyxDQUFDO01BclB2QztBQUNEO0FBQ0E7TUFGQ0csMEJBQUEsQ0FBQUYsS0FBQSxRQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxhQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFlQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQUssWUFBQSxFQUFBTCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUFNLFlBQUEsRUFBQU4sS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFPLFlBQUEsRUFBQVAsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGlCQUFBUSxZQUFBLEVBQUFSLEtBQUE7TUF1QkE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFTLFlBQUEsRUFBQVQsS0FBQTtNQVNBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLDBCQUFBVSxZQUFBLEVBQUFWLEtBQUE7TUFRQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQVcsWUFBQSxFQUFBWCxLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsb0JBQUFZLGFBQUEsRUFBQVosS0FBQTtNQVFBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLDRCQUFBYSxhQUFBLEVBQUFiLEtBQUE7TUFRQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxjQUFBYyxhQUFBLEVBQUFkLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxrQkFBQWUsYUFBQSxFQUFBZixLQUFBO01BYUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUFnQixhQUFBLEVBQUFoQixLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUFpQixhQUFBLEVBQUFqQixLQUFBO01BUUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsY0FBQWtCLGFBQUEsRUFBQWxCLEtBQUE7TUFTQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxzQkFBQW1CLGFBQUEsRUFBQW5CLEtBQUE7TUFTQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO01BSkNFLDBCQUFBLENBQUFGLEtBQUEsc0JBQUFvQixhQUFBLEVBQUFwQixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsMEJBQUFxQixhQUFBLEVBQUFyQixLQUFBO01BZUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEscUJBQUFzQixhQUFBLEVBQUF0QixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsbUJBQUF1QixhQUFBLEVBQUF2QixLQUFBO01BYUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEscUJBQUF3QixhQUFBLEVBQUF4QixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUF5QixhQUFBLEVBQUF6QixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsaUNBQUEwQixhQUFBLEVBQUExQixLQUFBO01BNkJBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLFlBQUEyQixhQUFBLEVBQUEzQixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsbUJBQUE0QixhQUFBLEVBQUE1QixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsMkJBQUE2QixhQUFBLEVBQUE3QixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsb0JBQUE4QixhQUFBLEVBQUE5QixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsZ0JBQUErQixhQUFBLEVBQUEvQixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFnQyxhQUFBLEVBQUFoQyxLQUFBO01BQUFBLEtBQUEsQ0FzQkFpQyxrQkFBa0IsR0FBRyxLQUFLO01BSTFCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7TUFKQy9CLDBCQUFBLENBQUFGLEtBQUEsa0NBQUFrQyxhQUFBLEVBQUFsQyxLQUFBO01BQUFBLEtBQUEsQ0F1SEFtQyw4QkFBOEIsR0FBSUMsZUFBMEIsSUFBVztRQUN0RSxJQUNDQSxlQUFlLENBQUNDLFdBQVcsRUFBRUMsWUFBWSxFQUFFQyxzQkFBc0IsRUFBRUMsb0JBQW9CLEVBQUVDLElBQUksQ0FDM0ZDLENBQUMsSUFBS0EsQ0FBQyxDQUFDQyxrQkFBa0IsRUFBRUMsS0FBSyxLQUFLLHlCQUF5QixJQUFJRixDQUFDLENBQUNHLGtCQUFrQixFQUFFQyxVQUFVLEtBQUssS0FDMUcsQ0FBQyxLQUFLLElBQUksRUFDVDtVQUNEOUMsS0FBQSxDQUFLaUMsa0JBQWtCLEdBQUcsS0FBSztRQUNoQztNQUNELENBQUM7TUFBQWpDLEtBQUEsQ0FFRCtDLGtDQUFrQyxHQUFJQyxVQUFzQyxJQUFXO1FBQ3RGLElBQUlDLFdBQVcsQ0FBQ0MsNkJBQTZCLENBQUNGLFVBQVUsQ0FBQyxFQUFFO1VBQzFEaEQsS0FBQSxDQUFLbUQsb0JBQW9CLEdBQUcsSUFBSTtRQUNqQztNQUNELENBQUM7TUFBQW5ELEtBQUEsQ0FFRG9ELGlCQUFpQixHQUFJQyxhQUF1QixJQUFhO1FBQ3hELE9BQU9BLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHRCxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUdBLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHO01BQ2xGLENBQUM7TUFBQXJELEtBQUEsQ0FFRHVELFNBQVMsR0FBRyxNQUFjO1FBQ3pCLElBQUksQ0FBQ3ZELEtBQUEsQ0FBS3dELGVBQWUsRUFBRTtVQUMxQixPQUNDQyxJQUFBLENBQUNDLGNBQWM7WUFDZEMsRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFFO1lBQzVDakgsS0FBSyxFQUFFLEVBQUc7WUFDVm1ILFdBQVcsRUFBQyxrQ0FBa0M7WUFDOUNDLFdBQVcsRUFBQyxTQUFTO1lBQ3JCQyxVQUFVLEVBQUMsZ0NBQWdDO1lBQzNDQyxRQUFRLEVBQUMsZ0NBQWdDO1lBQ3pDQyxhQUFhLEVBQUMsR0FBRztZQUNqQkMsbUJBQW1CLEVBQUM7VUFBb0IsQ0FDeEMsQ0FBQztRQUVKO1FBQ0EsT0FBTyxFQUFFO01BQ1YsQ0FBQztNQUFBbEUsS0FBQSxDQUVEbUUsc0JBQXNCLEdBQUcsTUFBWTtRQUNwQyxJQUFJQyxjQUFjLEdBQUcsRUFBRTtRQUN2QixJQUFJcEUsS0FBQSxDQUFLaUMsa0JBQWtCLEVBQUU7VUFDNUIsTUFBTW9DLFdBQVcsR0FBR0MsY0FBYyxDQUFDQyxhQUFhLENBQUN2RSxLQUFBLENBQUttRCxvQkFBb0IsQ0FBQztVQUMzRSxNQUFNekcsS0FBSyxHQUFHc0QsS0FBQSxDQUFLd0UsaUJBQWlCLENBQUMsMEJBQTBCLENBQUM7VUFDaEVKLGNBQWMsR0FDYlgsSUFBQSxDQUFDQyxjQUFjO1lBQ2RoSCxLQUFLLEVBQUVBLEtBQU07WUFDYnFILFVBQVUsRUFBQyxtQ0FBbUM7WUFDOUNFLGFBQWEsRUFBQyxHQUFHO1lBQ2pCTixFQUFFLEVBQUVDLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFFO1lBQzdEYyxTQUFTLEVBQUMsSUFBSTtZQUNkVCxRQUFRLEVBQUMsZ0NBQWdDO1lBQ3pDRixXQUFXLEVBQUMsWUFBWTtZQUN4QlksT0FBTyxFQUFDLGFBQWE7WUFBQUMsUUFBQSxFQUVwQjtjQUNBQyxXQUFXLEVBQ1ZuQixJQUFBLENBQUNvQixNQUFNO2dCQUNObEIsRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxhQUFhLEVBQUUsMEJBQTBCLENBQUMsQ0FBRTtnQkFDbkVtQixLQUFLLEVBQUMsTUFBTTtnQkFDWkMsY0FBYyxFQUFDLE1BQU07Z0JBQ3JCQyxXQUFXLEVBQUMsdUVBQXVFO2dCQUFBTCxRQUFBLEVBRWxGO2tCQUFFTSxLQUFLLEVBQUVaLFdBQVcsQ0FBQ2EsR0FBRyxDQUFFQyxLQUFLLElBQUsxQixJQUFBLENBQUMyQixRQUFRO29CQUFnQkMsSUFBSSxFQUFFRixLQUFLLENBQUNUO2tCQUFRLEdBQTlCUyxLQUFLLENBQUN4QixFQUEwQixDQUFDO2dCQUFFO2NBQUMsQ0FDakY7WUFFVjtVQUFDLENBQ2MsQ0FDaEI7UUFDRjtRQUNBM0QsS0FBQSxDQUFLc0YsV0FBVyxHQUFHLEVBQUU7UUFDckJ0RixLQUFBLENBQUt1RixhQUFhLEdBQUcsRUFBRTtRQUN2QnZGLEtBQUEsQ0FBS3VGLGFBQWEsRUFBRUMsSUFBSSxDQUFDcEIsY0FBYyxDQUFDO1FBQ3hDLElBQUksQ0FBQ3FCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMUYsS0FBQSxDQUFLMkYsZUFBZSxDQUFDLEVBQUU7VUFDekMzRixLQUFBLENBQUsyRixlQUFlLEdBQUczRixLQUFBLENBQUsyRixlQUFlLENBQUVDLFNBQVMsQ0FBQyxDQUEyQjtRQUNuRjtRQUNBNUYsS0FBQSxDQUFLMkYsZUFBZSxFQUFFRSxPQUFPLENBQUVDLGNBQW9DLElBQUs7VUFDdkUsSUFBSUEsY0FBYyxDQUFDQyxZQUFZLEtBQUssU0FBUyxFQUFFO1lBQzlDL0YsS0FBQSxDQUFLZ0csNEJBQTRCLENBQUNGLGNBQWMsQ0FBQztVQUNsRDtRQUNELENBQUMsQ0FBQztRQUNGOUYsS0FBQSxDQUFLdUYsYUFBYSxHQUFHdkYsS0FBQSxDQUFLdUYsYUFBYSxFQUFFVSxNQUFNLEdBQUcsQ0FBQyxHQUFHakcsS0FBQSxDQUFLdUYsYUFBYSxHQUFHLEVBQUU7UUFDN0V2RixLQUFBLENBQUtzRixXQUFXLEdBQUd0RixLQUFBLENBQUtzRixXQUFXLEVBQUVXLE1BQU0sR0FBRyxDQUFDLEdBQUdqRyxLQUFBLENBQUtzRixXQUFXLEdBQUcsRUFBRTtNQUN4RSxDQUFDO01BQUF0RixLQUFBLENBU0RnRyw0QkFBNEIsR0FBSUYsY0FBb0MsSUFBVztRQUM5RSxJQUFJQSxjQUFjLENBQUNsSixRQUFRLEtBQUtzSixTQUFTLElBQUlKLGNBQWMsQ0FBQ3hJLElBQUksS0FBSyxNQUFNLEVBQUU7VUFDNUUwQyxLQUFBLENBQUttRyw2QkFBNkIsQ0FBQ0wsY0FBYyxDQUFDO1FBQ25ELENBQUMsTUFBTSxJQUFJTCxLQUFLLENBQUNDLE9BQU8sQ0FBQzFGLEtBQUEsQ0FBS3VGLGFBQWEsQ0FBQyxFQUFFO1VBQzdDLE1BQU0vSSxRQUFRLEdBQUdzSixjQUFjLENBQUNNLGNBQWM7VUFDOUMsTUFBTUMsZUFBZSxHQUFHckcsS0FBQSxDQUFLc0csUUFBUSxDQUFFQyxRQUFRLENBQUMsQ0FBQyxDQUFDQyxvQkFBb0IsQ0FBQ2hLLFFBQVEsQ0FBQztVQUNoRixNQUFNaUssY0FBYyxHQUFHSixlQUFlLEVBQUVULFNBQVMsQ0FBQyxDQUFDO1VBQ25ELElBQUljLGFBQWE7VUFDakIsSUFBSVosY0FBYyxDQUFDeEksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNuQ29KLGFBQWEsR0FDWmpELElBQUEsQ0FBQ2tELFVBQVU7Y0FBQ0MsVUFBVSxFQUFFZCxjQUFjLENBQUNsSixRQUFTO2NBQUErSCxRQUFBLEVBQy9DbEIsSUFBQTtnQkFBTXpHLElBQUksRUFBRzhJLGNBQWMsQ0FBeUJ6SjtjQUFVLENBQUU7WUFBQyxDQUN0RCxDQUNaO1VBQ0YsQ0FBQyxNQUFNLElBQUl5SixjQUFjLENBQUNsSixRQUFRLEVBQUU7WUFDbkM4SixhQUFhLEdBQ1pqRCxJQUFBLENBQUNvRCxtQkFBbUI7Y0FDbkJDLFlBQVksRUFBRWhCLGNBQWMsQ0FBQ2xKLFFBQVM7Y0FDdEMrRyxFQUFFLEVBQUVDLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLG1CQUFtQixFQUFFbUMsY0FBYyxDQUFDeEosR0FBRyxDQUFDLENBQUU7Y0FDakV5SyxXQUFXLEVBQUU7WUFBdUMsQ0FDcEQsQ0FDRDtVQUNGO1VBQ0EsSUFBSUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1VBQzFCLElBQUlYLGVBQWUsRUFBRTtZQUNwQlcsaUJBQWlCLEdBQUcvQyxhQUFhLENBQUM2QixjQUFjLENBQUNNLGNBQWMsRUFBRTtjQUFFYSxPQUFPLEVBQUVaO1lBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztVQUNyRztVQUNBckcsS0FBQSxDQUFLdUYsYUFBYSxFQUFFQyxJQUFJLENBQ3ZCL0IsSUFBQSxDQUFDQyxjQUFjO1lBQ2RDLEVBQUUsRUFBRUMsUUFBUSxDQUFDLENBQUM1RCxLQUFBLENBQUsyRCxFQUFFLEVBQUUsbUJBQW1CLEVBQUVtQyxjQUFjLENBQUN4SixHQUFHLENBQUMsQ0FBRTtZQUNqRTRLLFFBQVEsRUFBRTtjQUFFbEssSUFBSSxFQUFFO1lBQXdDLENBQUU7WUFDNUQ4RyxXQUFXLEVBQUVnQyxjQUFjLENBQUNxQixhQUFjO1lBQzFDekssS0FBSyxFQUFFb0osY0FBYyxDQUFDcEosS0FBTTtZQUM1QnNILFFBQVEsRUFBRThCLGNBQWMsQ0FBQzlCLFFBQVM7WUFDbENDLGFBQWEsRUFBRStDLGlCQUFrQjtZQUNqQ2pELFVBQVUsRUFBRSx5QkFBeUIrQixjQUFjLENBQUNxQixhQUFhLEdBQUk7WUFDckUxQyxTQUFTLEVBQUUyQyxXQUFXLENBQUMzQyxTQUFTLENBQy9CNEIsZUFBZSxFQUNmSSxjQUFjLEVBQ2R6RyxLQUFBLENBQUtxSCxvQkFBb0IsRUFDekJ2QixjQUFjLENBQUN3QixRQUFRLEVBQ3ZCdEgsS0FBQSxDQUFLK0csV0FBVyxDQUFFUSxPQUFPLENBQUMsQ0FDM0IsQ0FBRTtZQUNGckQsbUJBQW1CLEVBQUc0QixjQUFjLENBQXlDMEIsV0FBWTtZQUN6RkMscUJBQXFCLEVBQUczQixjQUFjLENBQTJDNEIsYUFBYztZQUMvRkMsU0FBUyxFQUFFLFdBQVk7WUFDdkJoTCxRQUFRLEVBQUVtSixjQUFjLENBQUNuSixRQUFTO1lBQUFnSSxRQUFBLEVBRWpDO2NBQ0FpRCxPQUFPLEVBQ05uRSxJQUFBLENBQUNvRSwrQkFBK0I7Z0JBQy9CLGdCQUFhLCtDQUErQztnQkFDNURsRSxFQUFFLEVBQUVDLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLDJCQUEyQixFQUFFbUMsY0FBYyxDQUFDeEosR0FBRyxDQUFDLENBQUU7Z0JBQ3pFd0wsT0FBTyxFQUFFLGtCQUFrQkMsV0FBVyxDQUFDQyxvQkFBb0IsQ0FBQ2xDLGNBQWMsQ0FBQ3FCLGFBQWEsQ0FBQyxHQUFJO2dCQUM3RnBELFVBQVUsRUFBRSw4QkFBK0Q7Z0JBQUFZLFFBQUEsRUFFMUU7a0JBQUVpRCxPQUFPLEVBQUVsQjtnQkFBYztjQUFDLENBQ0ssQ0FDakM7Y0FDRHVCLFVBQVUsRUFBRSxDQUNYeEUsSUFBQSxDQUFDeUUsVUFBVTtnQkFBZ0J0RixLQUFLLEVBQUVrRCxjQUFjLENBQUN4SSxJQUFJLEtBQUs7Y0FBTyxHQUFoRCxRQUFrRCxDQUFDLEVBQ3BFbUcsSUFBQSxDQUFDMEUsbUJBQW1CO2dCQUVuQnZGLEtBQUssRUFBRSx5Q0FBeUNrRCxjQUFjLENBQUNzQyxlQUFlO2NBQW9ELEdBRDdILHlCQUVMLENBQUM7WUFFSjtVQUFDLENBQ2MsQ0FDakIsQ0FBQztRQUNGO01BQ0QsQ0FBQztNQUFBcEksS0FBQSxDQWVEbUcsNkJBQTZCLEdBQUlMLGNBQW9DLElBQVc7UUFDL0UsSUFBSUwsS0FBSyxDQUFDQyxPQUFPLENBQUMxRixLQUFBLENBQUt1RixhQUFhLENBQUMsRUFBRTtVQUN0QyxNQUFNOEMsRUFBRSxHQUFHO1lBQUUsR0FBR3ZDLGNBQWMsQ0FBQ3dDLFlBQVk7WUFBRSxHQUFHO2NBQUVDLDBCQUEwQixFQUFFLENBQUN2SSxLQUFBLENBQUt3STtZQUFpQjtVQUFFLENBQUM7VUFDeEd4SSxLQUFBLENBQUt1RixhQUFhLEVBQUVDLElBQUksQ0FDdkIvQixJQUFBLENBQUNnRixtQkFBbUI7WUFDbkJDLFFBQVEsRUFBRTlFLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLGFBQWEsRUFBRWdGLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUM5QyxjQUFjLENBQUNNLGNBQWMsQ0FBQyxDQUFDLENBQUU7WUFDNUd5QyxVQUFVLEVBQUVqRixRQUFRLENBQUMsQ0FBQzVELEtBQUEsQ0FBSzJELEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFFO1lBQ3hEbkgsUUFBUSxFQUFFc0osY0FBYyxDQUFDTSxjQUFxQztZQUM5RFcsV0FBVyxFQUFFL0csS0FBQSxDQUFLOEksNkJBQTZCLENBQUNoRCxjQUFjLEVBQUU5RixLQUFBLENBQUsrSSxvQkFBb0IsQ0FBd0I7WUFDakgxQixvQkFBb0IsRUFBRXJILEtBQUEsQ0FBS3FILG9CQUFxQjtZQUNoRDNLLEtBQUssRUFBRW9KLGNBQWMsQ0FBQ3BKLEtBQU07WUFDNUI0SyxRQUFRLEVBQUVxQixZQUFZLENBQUNLLG1CQUFtQixDQUFDbEQsY0FBYyxDQUFDd0IsUUFBUSxDQUFFO1lBQ3BFZ0IsWUFBWSxFQUFFeEMsY0FBYyxDQUFDd0MsWUFBWSxLQUFLcEMsU0FBUyxHQUFJK0MsZ0JBQWdCLENBQUNaLEVBQUUsQ0FBQyxHQUEwQm5DLFNBQVU7WUFDbkhnRCxRQUFRLEVBQUUsY0FBY2xKLEtBQUEsQ0FBSzJELEVBQUUsaUJBQWlCbUMsY0FBYyxDQUFDcUIsYUFBYTtVQUFhLENBQ3pGLENBQ0YsQ0FBQztRQUNGO1FBQ0EsSUFBSTFCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMUYsS0FBQSxDQUFLc0YsV0FBVyxDQUFDLEVBQUU7VUFDcEN0RixLQUFBLENBQUtzRixXQUFXLEVBQUVFLElBQUksQ0FDckIvQixJQUFBLENBQUMwRixTQUFTO1lBQ1RULFFBQVEsRUFBRTlFLFFBQVEsQ0FBQyxDQUFDNUQsS0FBQSxDQUFLMkQsRUFBRSxFQUFFLHNCQUFzQixDQUFDLENBQUU7WUFDdER5RixjQUFjLEVBQUMsVUFBVTtZQUN6QjlDLFFBQVEsRUFBRVIsY0FBYyxDQUFDTSxjQUFlO1lBQ3hDVyxXQUFXLEVBQUUvRyxLQUFBLENBQUs4SSw2QkFBNkIsQ0FBQ2hELGNBQWMsRUFBRTlGLEtBQUEsQ0FBSytJLG9CQUFvQixDQUFFO1lBQzNGTSxvQkFBb0IsRUFBRSxJQUFLO1lBQzNCaEMsb0JBQW9CLEVBQUVySCxLQUFBLENBQUtxSDtVQUFxQixDQUNoRCxDQUNGLENBQUM7UUFDRjtNQUNELENBQUM7TUF2VEEsSUFBSSxDQUFDckgsS0FBQSxDQUFLc0csUUFBUSxFQUFFO1FBQ25CZ0QsR0FBRyxDQUFDQyxLQUFLLENBQUMsaURBQWlELENBQUM7UUFDNUQsT0FBQUMsc0JBQUEsQ0FBQXhKLEtBQUE7TUFDRDtNQUNBLE1BQU15SixTQUFTLEdBQUd6SixLQUFBLENBQUtzRyxRQUFRLENBQUNpQixPQUFPLENBQUMsQ0FBQztNQUN6QyxJQUFJbUMsY0FBYyxHQUFHLEVBQUU7TUFDdkIsTUFBTXJHLGNBQWEsR0FBR29HLFNBQVMsRUFBRUUsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7TUFDOUYsSUFBSXRHLGNBQWEsQ0FBQzRDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDN0J5RCxjQUFjLEdBQUcxSixLQUFBLENBQUtvRCxpQkFBaUIsQ0FBQ0MsY0FBYSxDQUFDO01BQ3ZEO01BQ0EsTUFBTXVHLGNBQWMsR0FBRzNHLFdBQVcsQ0FBQzRHLGdCQUFnQixDQUFDSCxjQUFjLENBQUM7TUFDbkUsTUFBTTFHLFdBQVUsR0FBR2hELEtBQUEsQ0FBSytHLFdBQVcsRUFBRVIsUUFBUSxDQUFDLENBQUM7TUFDL0N2RyxLQUFBLENBQUsrSSxvQkFBb0IsR0FBRy9GLFdBQVUsRUFBRXdELG9CQUFvQixDQUFDa0QsY0FBYyxDQUFZO01BQ3ZGLE1BQU10RCxjQUFzQixHQUFHLDZDQUE2QyxJQUFLL0MsY0FBYSxDQUFDNEMsTUFBTSxJQUFJNUMsY0FBYSxDQUFDLENBQUMsQ0FBQyxJQUFLLEVBQUUsQ0FBQztNQUNqSSxNQUFNeUcsaUJBQWlCLEdBQUcvSixTQUFTLEVBQUVnSyxlQUF5QjtNQUM5RCxJQUFJQyxXQUFXLEdBQUc1RCxjQUFjO01BQ2hDLElBQUkwRCxpQkFBaUIsS0FBSyxFQUFFLElBQUk5SixLQUFBLENBQUsrSSxvQkFBb0IsQ0FBQ3hCLE9BQU8sQ0FBQyxDQUFDLEVBQUUwQyxVQUFVLENBQUNILGlCQUFpQixDQUFDLEVBQUU7UUFDbkdFLFdBQVcsR0FBR1AsU0FBUyxDQUFDbE4sT0FBTyxDQUFDdU4saUJBQWlCLEVBQUUsRUFBRSxDQUFDO01BQ3ZEO01BQ0E5SixLQUFBLENBQUtrSyxlQUFlLEdBQUc5RCxjQUFjO01BQ3JDLE1BQU0rRCxZQUE0RCxHQUFHLENBQUMsQ0FBQztNQUN2RSxJQUFJbkssS0FBQSxDQUFLb0ssWUFBWSxFQUFFO1FBQ3RCRCxZQUFZLENBQUNILFdBQVcsQ0FBQyxHQUFHO1VBQzNCSSxZQUFZLEVBQUVwSyxLQUFBLENBQUtvSztRQUNwQixDQUFDO01BQ0Y7TUFFQSxNQUFNQyx3QkFBd0IsR0FBR0MsMkJBQTJCLENBQUN0SyxLQUFBLENBQUsrSSxvQkFBb0IsQ0FBQztNQUN2RixNQUFNd0IsaUJBQWlCLEdBQUd2SyxLQUFBLENBQUt3SyxtQkFBbUIsQ0FBQ0gsd0JBQXdCLEVBQUVuRSxTQUFTLEVBQUVuRyxTQUFTLEVBQUVvSyxZQUFZLENBQUM7TUFDaEgsSUFBSSxDQUFDbkssS0FBQSxDQUFLeUssWUFBWSxFQUFFO1FBQ3ZCekssS0FBQSxDQUFLeUssWUFBWSxHQUFHQyxrQkFBa0IsQ0FBQ0gsaUJBQWlCLEVBQUUsRUFBRSxFQUFFbkUsY0FBYyxDQUFDLENBQUN1RSxhQUFhO01BQzVGO01BRUEsTUFBTXZJLGdCQUFlLEdBQUdrSSwyQkFBMkIsQ0FBQ3RLLEtBQUEsQ0FBS3NHLFFBQVEsRUFBRXRHLEtBQUEsQ0FBSytHLFdBQVcsQ0FBQyxDQUFDM0UsZUFBNEI7TUFDakgsSUFBSUEsZ0JBQWUsRUFBRUMsV0FBVyxFQUFFdUksTUFBTSxFQUFFQyxTQUFTLElBQUksQ0FBQzdLLEtBQUEsQ0FBSzhLLDJCQUEyQixFQUFFO1FBQ3pGOUssS0FBQSxDQUFLaUMsa0JBQWtCLEdBQUcsSUFBSTtRQUM5QmpDLEtBQUEsQ0FBS21DLDhCQUE4QixDQUFDQyxnQkFBZSxDQUFDO1FBQ3BEcEMsS0FBQSxDQUFLK0Msa0NBQWtDLENBQUNDLFdBQTRCLENBQUM7TUFDdEU7O01BRUE7TUFDQSxJQUFJLENBQUNoRCxLQUFBLENBQUsyRixlQUFlLEVBQUU7UUFDMUIsTUFBTW9GLGdCQUFnQixHQUFHTCxrQkFBa0IsQ0FBQ0gsaUJBQWlCLEVBQUUsRUFBRSxFQUFFbkUsY0FBYyxDQUFDLENBQUNULGVBQWU7UUFDbEczRixLQUFBLENBQUsyRixlQUFlLEdBQUcsSUFBSXFGLGFBQWEsQ0FBQ0QsZ0JBQWdCLEVBQUUvSCxXQUE0QixDQUFDLENBQUN3RCxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7UUFDbEgsTUFBTXlFLFFBQVEsR0FBR2xMLFNBQVMsRUFBRW1MLE1BQU0sRUFBRUQsUUFBUSxFQUFFRSxPQUFPLENBQUMsQ0FBQztRQUN2RCxNQUFNQyxXQUFXLEdBQUdiLGlCQUFpQixDQUFDYyxhQUFhLENBQUMsQ0FBQztVQUNwREMsaUJBQWlCLEdBQUdDLG1CQUFtQixDQUFDSCxXQUFXLEVBQUViLGlCQUFpQixDQUFDO1VBQ3ZFaUIsaUJBQWlCLEdBQUl4SSxXQUFVLENBQW9CeUksVUFBVSxDQUFDN0IsY0FBYyxDQUFtQjtVQUMvRjhCLGlCQUFpQixHQUFHQyxtQkFBbUIsQ0FDdENILGlCQUFpQjtVQUF5QjtVQUMxQztZQUFFSSxnQkFBZ0IsRUFBRU47VUFBa0IsQ0FBQyxFQUN2Q0UsaUJBQWlCLENBQUM1RixTQUFTLENBQUMsQ0FBQyxFQUM3QnFGLFFBQVEsRUFDUmpMLEtBQUEsQ0FBS2lDLGtCQUNOLENBQUM7UUFDRmpDLEtBQUEsQ0FBSzZMLGdCQUFnQixHQUFHSCxpQkFBaUI7TUFDMUM7TUFDQTFMLEtBQUEsQ0FBSzhMLHFCQUFxQixDQUFDOUwsS0FBQSxDQUFLeUssWUFBWSxFQUFFekgsV0FBVSxDQUFDO01BRXpELElBQUloRCxLQUFBLENBQUsrTCxpQkFBaUIsRUFBRTtRQUMzQi9MLEtBQUEsQ0FBS2dNLE1BQU0sR0FBR2hNLEtBQUEsQ0FBSzJELEVBQUUsR0FBRyxhQUFhO1FBQ3JDM0QsS0FBQSxDQUFLaU0sVUFBVSxHQUFHak0sS0FBQSxDQUFLMkQsRUFBRTtNQUMxQixDQUFDLE1BQU07UUFDTjNELEtBQUEsQ0FBS2dNLE1BQU0sR0FBR2hNLEtBQUEsQ0FBSzJELEVBQUU7UUFDckIzRCxLQUFBLENBQUtpTSxVQUFVLEdBQUdqTSxLQUFBLENBQUtrTSxZQUFZLENBQUNsTSxLQUFBLENBQUsyRCxFQUFFLEdBQUcsRUFBRSxDQUFDO01BQ2xEO01BRUEsSUFBSTNELEtBQUEsQ0FBS3dELGVBQWUsS0FBSyxJQUFJLEVBQUU7UUFDbEMsTUFBTTJJLDRCQUE0QixHQUFHQyxxQkFBcUIsQ0FBQ3hDLGNBQWMsRUFBRTVHLFdBQTRCLENBQUM7UUFDeEdoRCxLQUFBLENBQUt3RCxlQUFlLEdBQUc2SSxPQUFPLENBQUNGLDRCQUE0QixJQUFJLENBQUNBLDRCQUE0QixDQUFDRyxVQUFVLENBQUM7TUFDekc7TUFDQUMsR0FBRyxDQUFDQyxXQUFXLENBQUMsTUFBTXhNLEtBQUEsQ0FBS21FLHNCQUFzQixDQUFDLENBQUMsQ0FBQztNQUVwRG5FLEtBQUEsQ0FBS3lNLFVBQVUsR0FBR3pNLEtBQUEsQ0FBSzBNLGFBQWEsQ0FBQyxDQUFDO01BQUMsT0FBQTFNLEtBQUE7SUFDeEM7SUFBQzJNLFFBQUEsR0FBQTlQLGNBQUE7SUFBQStQLGNBQUEsQ0FBQS9QLGNBQUEsRUFBQStDLHFCQUFBO0lBQUEsSUFBQWlOLE1BQUEsR0FBQWhRLGNBQUEsQ0FBQWlRLFNBQUE7SUFBQUQsTUFBQSxDQUVEZixxQkFBcUIsR0FBckIsU0FBQUEscUJBQXFCQSxDQUFDckIsWUFBb0IsRUFBRXNDLEtBQXFCLEVBQVE7TUFDeEUsTUFBTUMsZ0JBQTBCLEdBQUcsRUFBRTtNQUNyQyxJQUFJdkMsWUFBWSxFQUFFO1FBQ2pCLE1BQU13QyxrQkFBa0IsR0FBR3hDLFlBQVksQ0FBQ2xPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUNBLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQ2pGLE1BQU0yUSxrQkFBa0IsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNILGtCQUFrQixDQUFDO1FBQ3pELE1BQU1JLGNBQWMsR0FBRyxJQUFJLENBQUM3SSxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQztRQUN6RTBJLGtCQUFrQixDQUFDckgsT0FBTyxDQUFDLFVBQVV5SCxRQUFzQixFQUFFO1VBQzVEQSxRQUFRLENBQUNoUixHQUFHLEdBQUdnUixRQUFRLENBQUN0USxJQUFJO1VBQzVCLElBQUlzUSxRQUFRLENBQUNDLFdBQVcsRUFBRTtZQUN6QlAsZ0JBQWdCLENBQUN4SCxJQUFJLENBQUM4SCxRQUFRLENBQUN0USxJQUFJLENBQUM7VUFDckM7VUFDQSxJQUFJc1EsUUFBUSxDQUFDRSxJQUFJLEtBQUssWUFBWSxFQUFFO1lBQ25DRixRQUFRLENBQUM1USxLQUFLLEdBQUcyUSxjQUFjO1VBQ2hDO1VBQ0EsSUFBSUMsUUFBUSxDQUFDaFIsR0FBRyxFQUFFbVIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDO1lBQ0EsTUFBTXJILGNBQWMsR0FBSWtILFFBQVEsQ0FBMEJsSCxjQUFjO1lBQ3hFLE1BQU1zSCxvQkFBb0IsR0FBRy9FLFlBQVksQ0FBQ2dGLDBCQUEwQixDQUFDWixLQUFLLEVBQUUzRyxjQUFjLENBQUM7WUFDM0YsTUFBTXdILFlBQVksR0FBR3hILGNBQWMsQ0FBQzdKLE9BQU8sQ0FBQyxHQUFHbVIsb0JBQW9CLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDM0VKLFFBQVEsQ0FBQzNRLFFBQVEsR0FBR2tSLFdBQVcsQ0FBQ0MsMkJBQTJCLENBQUNKLG9CQUFvQixFQUFFWCxLQUFLLENBQUMsRUFBRWdCLGtCQUFrQixFQUFFTixRQUFRLENBQ3JIRyxZQUNELENBQUM7VUFDRjtRQUNELENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQ25ELFlBQVksR0FBRzBDLElBQUksQ0FBQ2EsU0FBUyxDQUFDZCxrQkFBa0IsQ0FBQyxDQUFDM1EsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7TUFDbkc7TUFDQSxJQUFJLENBQUMwUixXQUFXLEdBQUdkLElBQUksQ0FBQ2EsU0FBUyxDQUFDaEIsZ0JBQWdCLENBQUM7SUFDcEQsQ0FBQztJQUFBSCxNQUFBLENBc0ZEcUIsc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FBQ0MsV0FBbUIsRUFBc0I7TUFDL0QsSUFBSSxJQUFJLENBQUNDLDRCQUE0QixFQUFFO1FBQ3RDLE9BQU8zSyxJQUFBLENBQUM0SyxtQkFBbUI7VUFBQzFLLEVBQUUsRUFBRUMsUUFBUSxDQUFDLENBQUN1SyxXQUFXLEVBQUUscUJBQXFCLENBQUMsQ0FBRTtVQUFDRyxHQUFHLEVBQUVILFdBQVk7VUFBQ0ksSUFBSSxFQUFFO1FBQVksQ0FBRSxDQUFDO01BQ3hIO01BQ0EsT0FBT3JJLFNBQVM7SUFDakIsQ0FBQztJQUFBMkcsTUFBQSxDQTBFRC9ELDZCQUE2QixHQUE3QixTQUFBQSw2QkFBNkJBLENBQUNoRCxjQUFvQyxFQUFFMEksb0JBQTZCLEVBQVU7TUFDMUcsSUFBSXpILFdBQW1CLEdBQUd5SCxvQkFBb0IsRUFBRWpILE9BQU8sQ0FBQyxDQUFDO01BQ3pELElBQUl6QixjQUFjLENBQUN5SCxXQUFXLEVBQUU7UUFDL0I7UUFDQTtRQUNBO1FBQ0E7UUFDQSxNQUFNa0IsUUFBUSxHQUFHM0ksY0FBYyxDQUFDTSxjQUFjO1FBQzlDVyxXQUFXLEdBQUcwSCxRQUFRLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUVELFFBQVEsQ0FBQ0UsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUNuRTtNQUNBLE9BQU81SCxXQUFXO0lBQ25CLENBQUM7SUFpQ0Q7QUFDRDtBQUNBO0FBQ0E7SUFIQzhGLE1BQUEsQ0FJQUgsYUFBYSxHQUFiLFNBQUFBLGFBQWFBLENBQUEsRUFBdUI7TUFDbkMsT0FBTyx5REFBeUQ7SUFDakUsQ0FBQztJQUFBRyxNQUFBLENBRUQrQixXQUFXLEdBQVgsU0FBQUEsV0FBV0EsQ0FBQSxFQUFXO01BQ3JCLE1BQU1DLG1CQUFtQixHQUFHLElBQUksQ0FBQzlGLG9CQUFvQixFQUFFeEIsT0FBTyxDQUFDLENBQUM7TUFDaEUsSUFBSXVILGNBQWMsR0FBRyxFQUFFO01BQ3ZCLElBQUksSUFBSSxDQUFDQyxpQkFBaUIsRUFBRTtRQUMzQkQsY0FBYyxHQUFHLElBQUksQ0FBQ0MsaUJBQWlCO01BQ3hDLENBQUMsTUFBTTtRQUNORCxjQUFjLEdBQUcsZ0ZBQWdGLEdBQUdELG1CQUFtQixHQUFHLEtBQUs7TUFDaEk7TUFDQTtNQUNBLE1BQU1HLG9CQUFvQixHQUFHakgsV0FBVyxDQUFDa0gsa0JBQWtCLENBQUMsSUFBSSxDQUFDeEUsWUFBc0IsQ0FBQztNQUN4RixPQUNDaEgsSUFBQSxDQUFDeUwsWUFBWTtRQUNadkwsRUFBRSxFQUFFLElBQUksQ0FBQ3FJLE1BQU87UUFDaEIxRixRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRLENBQUVpQixPQUFPLENBQUMsQ0FBRTtRQUNuQzRILE1BQU0sRUFBRSxJQUFJLENBQUNBLE1BQU87UUFDcEJDLGFBQWEsRUFBRSxJQUFJLENBQUNBLGFBQWM7UUFDbENDLFVBQVUsRUFBRSxJQUFJLENBQUNBLFVBQVc7UUFDNUJDLGNBQWMsRUFBRSxJQUFJLENBQUNBLGNBQWU7UUFDcENDLHFCQUFxQixFQUFFLElBQUksQ0FBQ0EscUJBQXNCO1FBQUE1SyxRQUFBLEVBRWpEO1VBQ0FpRCxPQUFPLEVBQ05uRSxJQUFBLENBQUMrTCxXQUFXO1lBQ1gsZ0JBQWEsK0NBQStDO1lBQzVEN0wsRUFBRSxFQUFFLElBQUksQ0FBQ3NJLFVBQVc7WUFDcEJ3RCxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFTO1lBQ3hCdkksUUFBUSxFQUFFNEgsY0FBZTtZQUN6Qlksb0JBQW9CLEVBQUUsSUFBSSxDQUFDRCxRQUFRLEdBQUd2SixTQUFTLEdBQUcsSUFBSSxDQUFDd0osb0JBQXFCO1lBQzVFQyxzQkFBc0IsRUFBRSxJQUFJLENBQUNBLHNCQUF1QjtZQUNwREMsZUFBZSxFQUFFLElBQUksQ0FBQ0EsZUFBZ0I7WUFDdENDLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVM7WUFDeEJWLE1BQU0sRUFBRSwwQkFBZ0Y7WUFDeEZXLGNBQWMsRUFBRSxpQ0FBK0Y7WUFDL0dqRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUNBLGdCQUFpQjtZQUN4Q3JELGdCQUFnQixFQUFFLElBQUksQ0FBQ0EsZ0JBQWlCO1lBQ3hDdUgsWUFBWSxFQUFFLElBQUksQ0FBQ0EsWUFBYTtZQUNoQ0MsYUFBYSxFQUFFLElBQUksQ0FBQ0MsZUFBZ0I7WUFDcENDLGFBQWEsRUFBRSxJQUFJLENBQUNBLGFBQWM7WUFDbENDLE9BQU8sRUFBRSxJQUFJLENBQUNBLE9BQVE7WUFDdEJyRiwyQkFBMkIsRUFBRSxJQUFJLENBQUNBLDJCQUE0QjtZQUM5RCxpQkFBZSxJQUFJLENBQUMyQixVQUFXO1lBQy9CLHlCQUF1Qm9DLG1CQUFvQjtZQUFBbEssUUFBQSxFQUUxQztjQUNBc0QsVUFBVSxFQUFFLENBQ1h4RSxJQUFBLENBQUN5RSxVQUFVO2dCQUFpQnRGLEtBQUssRUFBRSxJQUFJLENBQUNlO2NBQUcsR0FBMUIsU0FBNEIsQ0FBQyxFQUM5Q0YsSUFBQSxDQUFDeUUsVUFBVTtnQkFBeUJ0RixLQUFLLEVBQUUsSUFBSSxDQUFDWTtjQUFnQixHQUEvQyxpQkFBaUQsQ0FBQyxFQUNuRUMsSUFBQSxDQUFDeUUsVUFBVTtnQkFBNEJ0RixLQUFLLEVBQUUsSUFBSSxDQUFDWDtjQUFtQixHQUFyRCxvQkFBdUQsQ0FBQyxFQUN6RXdCLElBQUEsQ0FBQ3lFLFVBQVU7Z0JBQThCdEYsS0FBSyxFQUFFLElBQUksQ0FBQ3lFO2NBQXFCLEdBQXpELHNCQUEyRCxDQUFDLEVBQzdFNUQsSUFBQSxDQUFDeUUsVUFBVTtnQkFBb0J0RixLQUFLLEVBQUUsSUFBSSxDQUFDcUw7Y0FBWSxHQUF0QyxZQUF3QyxDQUFDLEVBQzFEeEssSUFBQSxDQUFDeUUsVUFBVTtnQkFBc0J0RixLQUFLLEVBQUUsSUFBSSxDQUFDNkg7Y0FBYSxHQUF6QyxjQUEyQyxDQUFDLEVBQzdEaEgsSUFBQSxDQUFDeUUsVUFBVTtnQkFBd0J0RixLQUFLLEVBQUUsSUFBSSxDQUFDc0g7Y0FBZ0IsR0FBOUMsZ0JBQWdELENBQUMsQ0FDbEU7Y0FDRGtHLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQzlLLFdBQVcsRUFBRSxJQUFJLENBQUM0SSxzQkFBc0IsQ0FBQyxJQUFJLENBQUNqQyxVQUFvQixDQUFDLENBQUM7Y0FDdEZvRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUM5TSxTQUFTLENBQUMsQ0FBQztjQUNsQytNLFdBQVcsRUFBRSxJQUFJLENBQUMvSztZQUNuQjtVQUFDLENBQ1c7UUFFZjtNQUFDLENBQ1ksQ0FBQztJQUVqQixDQUFDO0lBQUEsT0FBQTFJLGNBQUE7RUFBQSxFQXRuQjBDMFQsMkJBQTJCLEdBQUFwUSxXQUFBLEdBQUFxUSx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSxTQUFBMVAsS0FBQTtJQUFBcVQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF4USxZQUFBLEdBQUFvUSx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSxjQUFBdFAsS0FBQTtJQUFBaVQsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF2USxZQUFBLEdBQUFtUSx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSxzQkFBQXJQLEtBQUE7SUFBQWdULFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdFEsWUFBQSxHQUFBa1EseUJBQUEsQ0FBQTdRLE9BQUEsQ0FBQW1OLFNBQUEsd0JBQUFwUCxLQUFBO0lBQUErUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXJRLFlBQUEsR0FBQWlRLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLGVBQUFuUCxLQUFBO0lBQUE4UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBRLFlBQUEsR0FBQWdRLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLGtCQUFBbFAsS0FBQTtJQUFBNlMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuUSxZQUFBLEdBQUErUCx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSxtQkFBQWpQLEtBQUE7SUFBQTRTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BOEN2RCxLQUFLO0lBQUE7RUFBQSxJQUFBbFEsWUFBQSxHQUFBOFAseUJBQUEsQ0FBQTdRLE9BQUEsQ0FBQW1OLFNBQUEsMkJBQUFoUCxLQUFBO0lBQUEyUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpRLFlBQUEsR0FBQTZQLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLHNCQUFBL08sTUFBQTtJQUFBMFMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFoUSxhQUFBLEdBQUE0UCx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSxxQkFBQTlPLE1BQUE7SUFBQXlTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9Bd0JILEtBQUs7SUFBQTtFQUFBLElBQUEvUCxhQUFBLEdBQUEyUCx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSw2QkFBQTdPLE1BQUE7SUFBQXdTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BUUcsSUFBSTtJQUFBO0VBQUEsSUFBQTlQLGFBQUEsR0FBQTBQLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLGVBQUE1TyxNQUFBO0lBQUF1UyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQVFsQixZQUFZO0lBQUE7RUFBQSxJQUFBN1AsYUFBQSxHQUFBeVAseUJBQUEsQ0FBQTdRLE9BQUEsQ0FBQW1OLFNBQUEsbUJBQUEzTyxNQUFBO0lBQUFzUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVQLGFBQUEsR0FBQXdQLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLDJCQUFBMU8sTUFBQTtJQUFBcVMsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FhQSxJQUFJO0lBQUE7RUFBQSxJQUFBM1AsYUFBQSxHQUFBdVAseUJBQUEsQ0FBQTdRLE9BQUEsQ0FBQW1OLFNBQUEsMkJBQUF6TyxNQUFBO0lBQUFvUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTFQLGFBQUEsR0FBQXNQLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLGVBQUF4TyxNQUFBO0lBQUFtUyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQWlCaEIsS0FBSztJQUFBO0VBQUEsSUFBQXpQLGFBQUEsR0FBQXFQLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLHVCQUFBdk8sTUFBQTtJQUFBa1MsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF4UCxhQUFBLEdBQUFvUCx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSx1QkFBQXRPLE1BQUE7SUFBQWlTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BbUJHLEtBQUs7SUFBQTtFQUFBLElBQUF2UCxhQUFBLEdBQUFtUCx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSwyQkFBQXJPLE1BQUE7SUFBQWdTLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BS0QsS0FBSztJQUFBO0VBQUEsSUFBQXRQLGFBQUEsR0FBQWtQLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLHNCQUFBcE8sTUFBQTtJQUFBK1IsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFyUCxhQUFBLEdBQUFpUCx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSxvQkFBQW5PLE1BQUE7SUFBQThSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BYVosU0FBUztJQUFBO0VBQUEsSUFBQXBQLGFBQUEsR0FBQWdQLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLHNCQUFBbE8sTUFBQTtJQUFBNlIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FTUCxLQUFLO0lBQUE7RUFBQSxJQUFBblAsYUFBQSxHQUFBK08seUJBQUEsQ0FBQTdRLE9BQUEsQ0FBQW1OLFNBQUEsd0JBQUFqTyxNQUFBO0lBQUE0UixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQUtILEtBQUs7SUFBQTtFQUFBLElBQUFsUCxhQUFBLEdBQUE4Tyx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSxrQ0FBQWhPLE1BQUE7SUFBQTJSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BS0ssS0FBSztJQUFBO0VBQUEsSUFBQWpQLGFBQUEsR0FBQTZPLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLGFBQUEvTixNQUFBO0lBQUEwUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWhQLGFBQUEsR0FBQTRPLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLG9CQUFBN04sTUFBQTtJQUFBd1IsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEvTyxhQUFBLEdBQUEyTyx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSw0QkFBQTVOLE1BQUE7SUFBQXVSLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBOU8sYUFBQSxHQUFBME8seUJBQUEsQ0FBQTdRLE9BQUEsQ0FBQW1OLFNBQUEscUJBQUEzTixNQUFBO0lBQUFzUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTdPLGFBQUEsR0FBQXlPLHlCQUFBLENBQUE3USxPQUFBLENBQUFtTixTQUFBLGlCQUFBMU4sTUFBQTtJQUFBcVIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE1TyxhQUFBLEdBQUF3Tyx5QkFBQSxDQUFBN1EsT0FBQSxDQUFBbU4sU0FBQSxtQkFBQXpOLE1BQUE7SUFBQW9SLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBMU8sYUFBQSxHQUFBc08seUJBQUEsQ0FBQTdRLE9BQUEsQ0FBQW1OLFNBQUEsbUNBQUFyTixNQUFBO0lBQUFnUixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQXVFSixLQUFLO0lBQUE7RUFBQSxJQUFBalIsT0FBQSxNQUFBRCxNQUFBO0VBQUFpTixRQUFBLEdBQUE5UCxjQUFBO0VBQUEsT0FBQThQLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
771
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMiLCJjaGlsZEZpbHRlckZpZWxkIiwiYWdncmVnYXRpb25PYmplY3QiLCJzbG90TmFtZSIsImtleSIsInJlcGxhY2UiLCJwcm9wZXJ0eSIsImdldEF0dHJpYnV0ZSIsImxhYmVsIiwicmVxdWlyZWQiLCJ0ZW1wbGF0ZSIsIkZpbHRlckJhckJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lIiwibmFtZXNwYWNlIiwicHVibGljTmFtZXNwYWNlIiwicmV0dXJuVHlwZXMiLCJfZGVjMiIsImJsb2NrQXR0cmlidXRlIiwidHlwZSIsImlzUHVibGljIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJfZGVjMjAiLCJfZGVjMjEiLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJibG9ja0V2ZW50IiwiX2RlYzI3IiwiX2RlYzI4IiwiX2RlYzI5IiwiX2RlYzMwIiwiX2RlYzMxIiwiYmxvY2tBZ2dyZWdhdGlvbiIsImhhc1ZpcnR1YWxOb2RlIiwicHJvY2Vzc0FnZ3JlZ2F0aW9ucyIsIl9kZWMzMiIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbmZpZ3VyYXRpb24iLCJtU2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfZGVzY3JpcHRvcjMwIiwic2hvd0RyYWZ0RWRpdFN0YXRlIiwiX2Rlc2NyaXB0b3IzMSIsImNoZWNrSWZFZGl0aW5nRmlsdGVySXNEaXNhYmxlZCIsInRhcmdldEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwic29tZSIsInIiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJ2YWx1ZSIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlcmFibGUiLCJjaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJpc0RyYWZ0Q29sbGFib3JhdGl2ZSIsImdldEVudGl0eVR5cGVQYXRoIiwibWV0YVBhdGhQYXJ0cyIsImVuZHNXaXRoIiwiZ2V0U2VhcmNoIiwiaGlkZUJhc2ljU2VhcmNoIiwiX2pzeCIsIk1EQ0ZpbHRlckZpZWxkIiwiaWQiLCJnZW5lcmF0ZSIsInBsYWNlaG9sZGVyIiwicHJvcGVydHlLZXkiLCJjb25kaXRpb25zIiwiZGF0YVR5cGUiLCJtYXhDb25kaXRpb25zIiwiZGF0YVR5cGVDb25zdHJhaW50cyIsInByb2Nlc3NTZWxlY3Rpb25GaWVsZHMiLCJkcmFmdEVkaXRTdGF0ZSIsImRyYWZ0U3RhdGVzIiwiRHJhZnRFZGl0U3RhdGUiLCJnZXRFZGl0U3RhdGVzIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJvcGVyYXRvcnMiLCJkaXNwbGF5IiwiY2hpbGRyZW4iLCJjb250ZW50RWRpdCIsIlNlbGVjdCIsIndpZHRoIiwiZm9yY2VTZWxlY3Rpb24iLCJzZWxlY3RlZEtleSIsIml0ZW1zIiwibWFwIiwic3RhdGUiLCJMaXN0SXRlbSIsInRleHQiLCJfdmFsdWVIZWxwcyIsIl9maWx0ZXJGaWVsZHMiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VsZWN0aW9uRmllbGRzIiwiZ2V0T2JqZWN0IiwiZm9yRWFjaCIsInNlbGVjdGlvbkZpZWxkIiwiYXZhaWxhYmlsaXR5Iiwic2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzIiwiYW5ub3RhdGlvblBhdGgiLCJwcm9wZXJ0eUNvbnRleHQiLCJtZXRhUGF0aCIsImdldE1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJwcm9wZXJ0eU9iamVjdCIsImZpbHRlckNvbnRlbnQiLCJTbG90Q29sdW1uIiwidGVtcGxhdGVJZCIsIkN1c3RvbUZyYWdtZW50QmxvY2siLCJmcmFnbWVudE5hbWUiLCJjb250ZXh0UGF0aCIsIm1heENvbmRpdGlvblZhbHVlIiwiY29udGV4dCIsImRlbGVnYXRlIiwiY29uZGl0aW9uUGF0aCIsIkZpZWxkSGVscGVyIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJzZXR0aW5ncyIsImdldFBhdGgiLCJjb25zdHJhaW50cyIsImRhdGFUeXBlRm9ybWF0T3B0aW9ucyIsImZvcm1hdE9wdGlvbnMiLCJ2YWx1ZUhlbHAiLCJjb250ZW50IiwiQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciIsImJpbmRpbmciLCJGaWx0ZXJVdGlscyIsImNvbmRpdGlvblRvTW9kZWxQYXRoIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJGaWVsZEhlbHBDdXN0b21EYXRhIiwiZG9jdW1lbnRSZWZUZXh0IiwidmYiLCJ2aXN1YWxGaWx0ZXIiLCJpbml0aWFsQ2hhcnRCaW5kaW5nRW5hYmxlZCIsInN1c3BlbmRTZWxlY3Rpb24iLCJJbnRlcm5hbEZpbHRlckZpZWxkIiwiaWRQcmVmaXgiLCJDb21tb25IZWxwZXIiLCJnZXROYXZpZ2F0aW9uUGF0aCIsInZoSWRQcmVmaXgiLCJfZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZCIsIl9pbnRlcm5hbENvbnRleHRQYXRoIiwic3RyaW5naWZ5Q3VzdG9tRGF0YSIsInN0b3JlT2JqZWN0VmFsdWUiLCJlZGl0TW9kZSIsIlZhbHVlSGVscCIsImNvbmRpdGlvbk1vZGVsIiwiZmlsdGVyRmllbGRWYWx1ZUhlbHAiLCJMb2ciLCJlcnJvciIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzTWV0YVBhdGgiLCJlbnRpdHlUeXBlUGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwicGFyZW50Q29udGV4dFBhdGgiLCJmdWxsQ29udGV4dFBhdGgiLCJzT2JqZWN0UGF0aCIsInN0YXJ0c1dpdGgiLCJfYW5ub3RhdGlvblBhdGgiLCJvRXh0cmFQYXJhbXMiLCJmaWx0ZXJGaWVsZHMiLCJvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJwcm9wZXJ0eUluZm8iLCJnZXRTZWxlY3Rpb25GaWVsZHMiLCJzUHJvcGVydHlJbmZvIiwiQ29tbW9uIiwiRHJhZnRSb290IiwiZGlzYWJsZURyYWZ0RWRpdFN0YXRlRmlsdGVyIiwib1NlbGVjdGlvbkZpZWxkcyIsIlRlbXBsYXRlTW9kZWwiLCJ2aWV3RGF0YSIsIm1vZGVscyIsImdldERhdGEiLCJvRW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJvRW50aXR5U2V0Q29udGV4dCIsImdldENvbnRleHQiLCJvRmlsdGVyQ29uZGl0aW9ucyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJzZWxlY3Rpb25WYXJpYW50IiwiZmlsdGVyQ29uZGl0aW9ucyIsIl9wcm9jZXNzUHJvcGVydHlJbmZvcyIsIl9hcHBseUlkVG9Db250ZW50IiwiX2FwaUlkIiwiX2NvbnRlbnRJZCIsImdldENvbnRlbnRJZCIsIm9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24iLCJnZXRTZWFyY2hSZXN0cmljdGlvbnMiLCJCb29sZWFuIiwiU2VhcmNoYWJsZSIsImpzeCIsInJlbmRlckFzWE1MIiwiZGVzaWdudGltZSIsImdldERlc2lnbnRpbWUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwibW9kZWwiLCJhUGFyYW1ldGVyRmllbGRzIiwic0ZldGNoZWRQcm9wZXJ0aWVzIiwiYUZldGNoZWRQcm9wZXJ0aWVzIiwiSlNPTiIsInBhcnNlIiwiZWRpdFN0YXRlTGFiZWwiLCJwcm9wSW5mbyIsImlzUGFyYW1ldGVyIiwicGF0aCIsImluY2x1ZGVzIiwicHJvcGVydHlMb2NhdGlvblBhdGgiLCJnZXRMb2NhdGlvbkZvclByb3BlcnR5UGF0aCIsInByb3BlcnR5UGF0aCIsImRhdGFNb2RlbCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEZpbHRlclJlc3RyaWN0aW9uc0J5RGF0YU1vZGVsIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwic3RyaW5naWZ5IiwiX3BhcmFtZXRlcnMiLCJnZXRQZXJzaXN0ZW5jZVByb3ZpZGVyIiwiZmlsdGVyQmFySWQiLCJpZ25vcmVQZXJzb25hbGl6YXRpb25DaGFuZ2VzIiwiUGVyc2lzdGVuY2VQcm92aWRlciIsImZvciIsIm1vZGUiLCJmaWx0ZXJCYXJDb250ZXh0UGF0aCIsImFubm9QYXRoIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJnZXRUZW1wbGF0ZSIsImludGVybmFsQ29udGV4dFBhdGgiLCJmaWx0ZXJEZWxlZ2F0ZSIsImZpbHRlckJhckRlbGVnYXRlIiwiX3Byb3BlcnR5SW5mb0NvbnRyb2wiLCJmb3JtYXRQcm9wZXJ0eUluZm8iLCJGaWx0ZXJCYXJBUEkiLCJzZWFyY2giLCJmaWx0ZXJDaGFuZ2VkIiwiYWZ0ZXJDbGVhciIsImludGVybmFsU2VhcmNoIiwiaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkIiwiRkVGaWx0ZXJCYXIiLCJsaXZlTW9kZSIsInZhcmlhbnRCYWNrcmVmZXJlbmNlIiwic2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsInNob3dDbGVhckJ1dHRvbiIsInAxM25Nb2RlIiwiZmlsdGVyc0NoYW5nZWQiLCJzaG93TWVzc2FnZXMiLCJ0b2dnbGVDb250cm9sIiwidG9nZ2xlQ29udHJvbElkIiwiaW5pdGlhbExheW91dCIsInZpc2libGUiLCJkZXBlbmRlbnRzIiwiYmFzaWNTZWFyY2hGaWVsZCIsImZpbHRlckl0ZW1zIiwiQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWx0ZXJCYXIuYmxvY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgVGVtcGxhdGVNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVNb2RlbFwiO1xuaW1wb3J0IHtcblx0YmxvY2tBZ2dyZWdhdGlvbixcblx0YmxvY2tBdHRyaWJ1dGUsXG5cdGJsb2NrRXZlbnQsXG5cdGRlZmluZUJ1aWxkaW5nQmxvY2tcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IHsgc3RvcmVPYmplY3RWYWx1ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2VcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0U2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IEZpbHRlclJlc3RyaWN0aW9ucyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vZmlsdGVyL0ZpbHRlclJlc3RyaWN0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJGaWVsZCBhcyBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCwgTWFuaWZlc3RGaWx0ZXJGaWVsZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyQmFyXCI7XG5pbXBvcnQgeyBnZXRTZWxlY3Rpb25GaWVsZHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9MaXN0UmVwb3J0L0ZpbHRlckJhclwiO1xuaW1wb3J0IHsgZ2V0U2VhcmNoUmVzdHJpY3Rpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YU1vZGVsRnVuY3Rpb25cIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHsgbWF4Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJGaWVsZEhlbHBlclwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IERyYWZ0RWRpdFN0YXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9EcmFmdEVkaXRTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyRmllbGQgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckZpZWxkXCI7XG5pbXBvcnQgeyBnZXRGaWx0ZXJDb25kaXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IEN1c3RvbUZyYWdtZW50QmxvY2sgZnJvbSBcInNhcC9mZS9tYWNyb3MvZnBtL0N1c3RvbUZyYWdtZW50LmJsb2NrXCI7XG5pbXBvcnQgSW50ZXJuYWxGaWx0ZXJGaWVsZCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9GaWx0ZXJGaWVsZC5ibG9ja1wiO1xuaW1wb3J0IFNlbGVjdCBmcm9tIFwic2FwL20vU2VsZWN0XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTGlzdEl0ZW0gZnJvbSBcInNhcC91aS9jb3JlL0xpc3RJdGVtXCI7XG5pbXBvcnQgRmllbGRIZWxwQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvZmllbGRoZWxwL0ZpZWxkSGVscEN1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIHsgSUNvbnRleHQgfSBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbmltcG9ydCBNRENGaWx0ZXJGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJGaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEZpbHRlckJhckJhc2UkRmlsdGVyc0NoYW5nZWRFdmVudCxcblx0RmlsdGVyQmFyQmFzZSRGaWx0ZXJzQ2hhbmdlZEV2ZW50UGFyYW1ldGVycyxcblx0RmlsdGVyQmFyQmFzZSRTZWFyY2hFdmVudFxufSBmcm9tIFwic2FwL3VpL21kYy9maWx0ZXJiYXIvRmlsdGVyQmFyQmFzZVwiO1xuaW1wb3J0IFBlcnNpc3RlbmNlUHJvdmlkZXIgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9QZXJzaXN0ZW5jZVByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcIi4uL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwiLi4vVmFsdWVIZWxwXCI7XG5pbXBvcnQgQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlciBmcm9tIFwiLi4vY29udHJvbHMvQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlclwiO1xuaW1wb3J0IEZFRmlsdGVyQmFyIGZyb20gXCIuLi9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCBTbG90Q29sdW1uIGZyb20gXCIuLi90YWJsZS9TbG90Q29sdW1uXCI7XG5pbXBvcnQgRmlsdGVyQmFyQVBJIGZyb20gXCIuL0ZpbHRlckJhckFQSVwiO1xuXG5jb25zdCBzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMgPSBmdW5jdGlvbiAoY2hpbGRGaWx0ZXJGaWVsZDogRWxlbWVudCwgYWdncmVnYXRpb25PYmplY3Q6IEZpbHRlckZpZWxkKTogRmlsdGVyRmllbGQge1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5zbG90TmFtZSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleTtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5LnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5wcm9wZXJ0eSA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwicHJvcGVydHlcIikhO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5sYWJlbCA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwibGFiZWxcIikhO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5yZXF1aXJlZCA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPT09IFwidHJ1ZVwiO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC50ZW1wbGF0ZSA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwidGVtcGxhdGVcIikgYXMgdW5rbm93biBhcyBDb250cm9sOyAvLyBCdXQgaXQncyBhIHN0cmluZztcblx0cmV0dXJuIGFnZ3JlZ2F0aW9uT2JqZWN0O1xufTtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWx0ZXJCYXIgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6RmlsdGVyQmFyXG4gKiBpZD1cIlNvbWVJRFwiXG4gKiBzaG93QWRhcHRGaWx0ZXJzQnV0dG9uPVwidHJ1ZVwiXG4gKiBwMTNuTW9kZT1bXCJJdGVtXCIsXCJWYWx1ZVwiXVxuICogbGlzdEJpbmRpbmdOYW1lcyA9IFwic2FwLmZlLnRhYmxlQmluZGluZ1wiXG4gKiBsaXZlTW9kZT1cInRydWVcIlxuICogc2VhcmNoPVwiLmhhbmRsZXJzLm9uU2VhcmNoXCJcbiAqIGZpbHRlckNoYW5nZWQ9XCIuaGFuZGxlcnMub25GaWx0ZXJzQ2hhbmdlZFwiXG4gKiAvJmd0O1xuICogPC9wcmU+XG4gKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRmlsdGVyQmFyIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIEBzaW5jZSAxLjk0LjBcbiAqL1xuQGRlZmluZUJ1aWxkaW5nQmxvY2soe1xuXHRuYW1lOiBcIkZpbHRlckJhclwiLFxuXHRuYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiLFxuXHRwdWJsaWNOYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvc1wiLFxuXHRyZXR1cm5UeXBlczogW1wic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsdGVyQmFyQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2Uge1xuXHQvKipcblx0ICogSUQgb2YgdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0dmlzaWJsZT86IHN0cmluZztcblxuXHQvKipcblx0ICogc2VsZWN0aW9uRmllbGRzIHRvIGJlIGRpc3BsYXllZFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCJcblx0fSlcblx0c2VsZWN0aW9uRmllbGRzPzogQ29udmVydGVkRmlsdGVyRmllbGRbXSB8IENvbnRleHQ7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWx0ZXJCYXJEZWxlZ2F0ZT86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aD86IENvbnRleHQ7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBwb3NzaWJsZSBlcnJvcnMgZHVyaW5nIHRoZSBzZWFyY2ggaW4gYSBtZXNzYWdlIGJveFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRzaG93TWVzc2FnZXMgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSUQgb2YgdGhlIGFzc2lnbmVkIHZhcmlhbnQgbWFuYWdlbWVudFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHZhcmlhbnRCYWNrcmVmZXJlbmNlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEb24ndCBzaG93IHRoZSBiYXNpYyBzZWFyY2ggZmllbGRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0aGlkZUJhc2ljU2VhcmNoPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRW5hYmxlcyB0aGUgZmFsbGJhY2sgdG8gc2hvdyBhbGwgZmllbGRzIG9mIHRoZSBFbnRpdHlUeXBlIGFzIGZpbHRlciBmaWVsZHMgaWYgY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzIGFyZSBub3QgcHJlc2VudFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRlbmFibGVGYWxsYmFjayA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHZpc2liaWxpdHkgb2YgdGhlICdBZGFwdCBGaWx0ZXJzJyBidXR0b24gb24gdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRzaG93QWRhcHRGaWx0ZXJzQnV0dG9uID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBwZXJzb25hbGl6YXRpb24gb3B0aW9ucyBmb3IgdGhlIGZpbHRlciBiYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nW11cIlxuXHR9KVxuXHRwMTNuTW9kZSA9IFwiSXRlbSxWYWx1ZVwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwcm9wZXJ0eUluZm8/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgU2VtYXRpYyBEYXRlIFJhbmdlIG9wdGlvbiBmb3IgdGhlIGZpbHRlciBiYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgb3B0aW9uIGZvciB0aGUgZmlsdGVyIGJhci5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdbXVwiXG5cdH0pXG5cdG5hdmlnYXRpb25Qcm9wZXJ0aWVzPzogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIElmIHNldCwgdGhlIHNlYXJjaCBpcyBhdXRvbWF0aWNhbGx5IHRyaWdnZXJlZCB3aGVuIGEgZmlsdGVyIHZhbHVlIGlzIGNoYW5nZWQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGxpdmVNb2RlID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEZpbHRlciBjb25kaXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGZpbHRlciBiYXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogZmFsc2Vcblx0fSlcblx0ZmlsdGVyQ29uZGl0aW9ucz86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogSWYgc2V0IHRvIDxjb2RlPnRydWU8L2NvZGU+LCBhbGwgc2VhcmNoIHJlcXVlc3RzIGFyZSBpZ25vcmVkLiBPbmNlIGl0IGhhcyBiZWVuIHNldCB0byA8Y29kZT5mYWxzZTwvY29kZT4sXG5cdCAqIGEgc2VhcmNoIGlzIHRyaWdnZXJlZCBpbW1lZGlhdGVseSBpZiBvbmUgb3IgbW9yZSBzZWFyY2ggcmVxdWVzdHMgaGF2ZSBiZWVuIHRyaWdnZXJlZCBpbiB0aGUgbWVhbnRpbWVcblx0ICogYnV0IHdlcmUgaWdub3JlZCBiYXNlZCBvbiB0aGUgc2V0dGluZy5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c3VzcGVuZFNlbGVjdGlvbiA9IGZhbHNlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0aXNEcmFmdENvbGxhYm9yYXRpdmUgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSWQgb2YgY29udHJvbCB0aGF0IHdpbGwgYWxsb3cgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIG5vcm1hbCBhbmQgdmlzdWFsIGZpbHRlclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHRvZ2dsZUNvbnRyb2xJZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0aW5pdGlhbExheW91dCA9IFwiY29tcGFjdFwiO1xuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSAnQ2xlYXInIGJ1dHRvbiBvbiB0aGUgRmlsdGVyQmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRzaG93Q2xlYXJCdXR0b24gPSBmYWxzZTtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdF9hcHBseUlkVG9Db250ZW50ID0gZmFsc2U7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRkaXNhYmxlRHJhZnRFZGl0U3RhdGVGaWx0ZXIgPSBmYWxzZTtcblxuXHQvKipcblx0ICogVGVtcG9yYXJ5IHdvcmthcm91bmQgb25seVxuXHQgKiBwYXRoIHRvIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgYnkgY2hpbGQgZmlsdGVyZmllbGRzXG5cdCAqL1xuXHRfaW50ZXJuYWxDb250ZXh0UGF0aCE6IENvbnRleHQ7XG5cblx0X3BhcmFtZXRlcnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRfYW5ub3RhdGlvblBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgc2VhcmNoIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0c2VhcmNoPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PHt9LCBGaWx0ZXJCYXJBUEk+PjtcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgZmlsdGVyQ2hhbmdlIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0ZmlsdGVyQ2hhbmdlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDxGaWx0ZXJCYXJCYXNlJEZpbHRlcnNDaGFuZ2VkRXZlbnRQYXJhbWV0ZXJzLCBGaWx0ZXJCYXJBUEk+PjtcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgZmlsdGVyQ2hhbmdlZCBldmVudCBvZiB0aGUgRmlsdGVyQmFyLiBFeHBvc2VzIHBhcmFtZXRlcnMgZnJvbSB0aGUgTURDIGZpbHRlciBiYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0aW50ZXJuYWxGaWx0ZXJDaGFuZ2VkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBzZWFyY2ggZXZlbnQgb2YgdGhlIEZpbHRlckJhci4gRXhwb3NlcyBwYXJhbWV0ZXJlcyBmcm9tIHRoZSBNREMgZmlsdGVyIGJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRpbnRlcm5hbFNlYXJjaD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgYWZ0ZXJDbGVhciBldmVudCBvZiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGFmdGVyQ2xlYXI/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8e30sIEZpbHRlckJhckFQST4+O1xuXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckZpZWxkXCIsXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0cHJvY2Vzc0FnZ3JlZ2F0aW9uczogc2V0Q3VzdG9tRmlsdGVyRmllbGRQcm9wZXJ0aWVzXG5cdH0pXG5cdGZpbHRlckZpZWxkcz86IEZpbHRlckZpZWxkO1xuXG5cdF9hcGlJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF9jb250ZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRfdmFsdWVIZWxwczogQXJyYXk8c3RyaW5nPiB8IFwiXCIgfCB1bmRlZmluZWQ7XG5cblx0X2ZpbHRlckZpZWxkczogQXJyYXk8c3RyaW5nPiB8IFwiXCIgfCB1bmRlZmluZWQ7XG5cblx0c2hvd0RyYWZ0RWRpdFN0YXRlID0gZmFsc2U7XG5cblx0ZGVzaWdudGltZT86IHN0cmluZztcblxuXHQvKipcblx0ICogVGhpcyBtb2RlIG11c3QgYmUgdXNlZCB3aGVuIGl0IGlzIGNlcnRhaW4gdGhhdCBhIGNvbnRyb2wgbXVzdCBub3QgcGVyc2lzdCBpdMK0cyBwZXJzb25hbGl6YXRpb24gc3RhdGUgdXBvbiBpbml0aWFsaXphdGlvbi5cblx0ICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xMzYuMFxuXHQgKiBAc2luY2UgMS4xMzYuMFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRpZ25vcmVQZXJzb25hbGl6YXRpb25DaGFuZ2VzID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXJCbG9jaz4sIGNvbmZpZ3VyYXRpb246IHVua25vd24sIG1TZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BzLCBjb25maWd1cmF0aW9uLCBtU2V0dGluZ3MpO1xuXHRcdGlmICghdGhpcy5tZXRhUGF0aCkge1xuXHRcdFx0TG9nLmVycm9yKFwiQ29udGV4dCBQYXRoIG5vdCBhdmFpbGFibGUgZm9yIEZpbHRlckJhciBNYWNyby5cIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHNNZXRhUGF0aCA9IHRoaXMubWV0YVBhdGguZ2V0UGF0aCgpO1xuXHRcdGxldCBlbnRpdHlUeXBlUGF0aCA9IFwiXCI7XG5cdFx0Y29uc3QgbWV0YVBhdGhQYXJ0cyA9IHNNZXRhUGF0aD8uc3BsaXQoXCIvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiKSB8fCBbXTsgLy8gWzBdOiBlbnRpdHlUeXBlUGF0aCwgWzFdOiBTRiBRdWFsaWZpZXIuXG5cdFx0aWYgKG1ldGFQYXRoUGFydHMubGVuZ3RoID4gMCkge1xuXHRcdFx0ZW50aXR5VHlwZVBhdGggPSB0aGlzLmdldEVudGl0eVR5cGVQYXRoKG1ldGFQYXRoUGFydHMpO1xuXHRcdH1cblx0XHRjb25zdCBzRW50aXR5U2V0UGF0aCA9IE1vZGVsSGVscGVyLmdldEVudGl0eVNldFBhdGgoZW50aXR5VHlwZVBhdGgpO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSB0aGlzLmNvbnRleHRQYXRoPy5nZXRNb2RlbCgpO1xuXHRcdHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGggPSBvTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChlbnRpdHlUeXBlUGF0aCkgYXMgQ29udGV4dDtcblx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aDogc3RyaW5nID0gXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCIgKyAoKG1ldGFQYXRoUGFydHMubGVuZ3RoICYmIG1ldGFQYXRoUGFydHNbMV0pIHx8IFwiXCIpO1xuXHRcdGNvbnN0IHBhcmVudENvbnRleHRQYXRoID0gbVNldHRpbmdzPy5mdWxsQ29udGV4dFBhdGggYXMgc3RyaW5nO1xuXHRcdGxldCBzT2JqZWN0UGF0aCA9IGFubm90YXRpb25QYXRoO1xuXHRcdGlmIChwYXJlbnRDb250ZXh0UGF0aCAhPT0gXCJcIiAmJiB0aGlzLl9pbnRlcm5hbENvbnRleHRQYXRoLmdldFBhdGgoKT8uc3RhcnRzV2l0aChwYXJlbnRDb250ZXh0UGF0aCkpIHtcblx0XHRcdHNPYmplY3RQYXRoID0gc01ldGFQYXRoLnJlcGxhY2UocGFyZW50Q29udGV4dFBhdGgsIFwiXCIpO1xuXHRcdH1cblx0XHR0aGlzLl9hbm5vdGF0aW9uUGF0aCA9IGFubm90YXRpb25QYXRoO1xuXHRcdGNvbnN0IG9FeHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgeyBmaWx0ZXJGaWVsZHM/OiBGaWx0ZXJGaWVsZCB9PiA9IHt9O1xuXHRcdGlmICh0aGlzLmZpbHRlckZpZWxkcykge1xuXHRcdFx0b0V4dHJhUGFyYW1zW3NPYmplY3RQYXRoXSA9IHtcblx0XHRcdFx0ZmlsdGVyRmllbGRzOiB0aGlzLmZpbHRlckZpZWxkc1xuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRjb25zdCBvVmlzdWFsaXphdGlvbk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHModGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCk7XG5cdFx0Y29uc3Qgb0NvbnZlcnRlckNvbnRleHQgPSB0aGlzLmdldENvbnZlcnRlckNvbnRleHQob1Zpc3VhbGl6YXRpb25PYmplY3RQYXRoLCB1bmRlZmluZWQsIG1TZXR0aW5ncywgb0V4dHJhUGFyYW1zKTtcblx0XHRpZiAoIXRoaXMucHJvcGVydHlJbmZvKSB7XG5cdFx0XHR0aGlzLnByb3BlcnR5SW5mbyA9IGdldFNlbGVjdGlvbkZpZWxkcyhvQ29udmVydGVyQ29udGV4dCwgW10sIGFubm90YXRpb25QYXRoKS5zUHJvcGVydHlJbmZvO1xuXHRcdH1cblxuXHRcdGNvbnN0IHRhcmdldEVudGl0eVNldCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKS50YXJnZXRFbnRpdHlTZXQgYXMgRW50aXR5U2V0O1xuXHRcdGlmICh0YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Um9vdCAmJiAhdGhpcy5kaXNhYmxlRHJhZnRFZGl0U3RhdGVGaWx0ZXIpIHtcblx0XHRcdHRoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlID0gdHJ1ZTtcblx0XHRcdHRoaXMuY2hlY2tJZkVkaXRpbmdGaWx0ZXJJc0Rpc2FibGVkKHRhcmdldEVudGl0eVNldCk7XG5cdFx0XHR0aGlzLmNoZWNrSWZDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdFx0fVxuXG5cdFx0Ly9GaWx0ZXIgRmllbGRzIGFuZCB2YWx1ZXMgdG8gdGhlIGZpZWxkIGFyZSBmaWxsZWQgYmFzZWQgb24gdGhlIHNlbGVjdGlvbkZpZWxkcyBhbmQgdGhpcyB3b3VsZCBiZSBlbXB0eSBpbiBjYXNlIG9mIG1hY3JvIG91dHNpZGUgdGhlIEZFIHRlbXBsYXRlXG5cdFx0aWYgKCF0aGlzLnNlbGVjdGlvbkZpZWxkcykge1xuXHRcdFx0Y29uc3Qgb1NlbGVjdGlvbkZpZWxkcyA9IGdldFNlbGVjdGlvbkZpZWxkcyhvQ29udmVydGVyQ29udGV4dCwgW10sIGFubm90YXRpb25QYXRoKS5zZWxlY3Rpb25GaWVsZHM7XG5cdFx0XHR0aGlzLnNlbGVjdGlvbkZpZWxkcyA9IG5ldyBUZW1wbGF0ZU1vZGVsKG9TZWxlY3Rpb25GaWVsZHMsIG9NZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWwpLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblx0XHRcdGNvbnN0IHZpZXdEYXRhID0gbVNldHRpbmdzPy5tb2RlbHM/LnZpZXdEYXRhPy5nZXREYXRhKCk7XG5cdFx0XHRjb25zdCBvRW50aXR5VHlwZSA9IG9Db252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSxcblx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQgPSBnZXRTZWxlY3Rpb25WYXJpYW50KG9FbnRpdHlUeXBlLCBvQ29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdG9FbnRpdHlTZXRDb250ZXh0ID0gKG9NZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWwpLmdldENvbnRleHQoc0VudGl0eVNldFBhdGgpIGFzIE9EYXRhVjRDb250ZXh0LFxuXHRcdFx0XHRvRmlsdGVyQ29uZGl0aW9ucyA9IGdldEZpbHRlckNvbmRpdGlvbnMoXG5cdFx0XHRcdFx0b0VudGl0eVNldENvbnRleHQgYXMgdW5rbm93biBhcyBJQ29udGV4dCwgLy8gV3JvbmcgYnV0IHNvbWVob3cgd29ya3MgPyxcblx0XHRcdFx0XHR7IHNlbGVjdGlvblZhcmlhbnQ6IG9TZWxlY3Rpb25WYXJpYW50IH0sXG5cdFx0XHRcdFx0b0VudGl0eVNldENvbnRleHQuZ2V0T2JqZWN0KCksXG5cdFx0XHRcdFx0dmlld0RhdGEsXG5cdFx0XHRcdFx0dGhpcy5zaG93RHJhZnRFZGl0U3RhdGVcblx0XHRcdFx0KTtcblx0XHRcdHRoaXMuZmlsdGVyQ29uZGl0aW9ucyA9IG9GaWx0ZXJDb25kaXRpb25zO1xuXHRcdH1cblx0XHR0aGlzLl9wcm9jZXNzUHJvcGVydHlJbmZvcyh0aGlzLnByb3BlcnR5SW5mbywgb01ldGFNb2RlbCk7XG5cblx0XHRpZiAodGhpcy5fYXBwbHlJZFRvQ29udGVudCkge1xuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkICsgXCI6OkZpbHRlckJhclwiO1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gdGhpcy5pZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gdGhpcy5nZXRDb250ZW50SWQodGhpcy5pZCArIFwiXCIpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmhpZGVCYXNpY1NlYXJjaCAhPT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3Qgb1NlYXJjaFJlc3RyaWN0aW9uQW5ub3RhdGlvbiA9IGdldFNlYXJjaFJlc3RyaWN0aW9ucyhzRW50aXR5U2V0UGF0aCwgb01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdFx0XHR0aGlzLmhpZGVCYXNpY1NlYXJjaCA9IEJvb2xlYW4ob1NlYXJjaFJlc3RyaWN0aW9uQW5ub3RhdGlvbiAmJiAhb1NlYXJjaFJlc3RyaWN0aW9uQW5ub3RhdGlvbi5TZWFyY2hhYmxlKTtcblx0XHR9XG5cdFx0anN4LnJlbmRlckFzWE1MKCgpID0+IHRoaXMucHJvY2Vzc1NlbGVjdGlvbkZpZWxkcygpKTtcblxuXHRcdHRoaXMuZGVzaWdudGltZSA9IHRoaXMuZ2V0RGVzaWdudGltZSgpO1xuXHR9XG5cblx0X3Byb2Nlc3NQcm9wZXJ0eUluZm9zKHByb3BlcnR5SW5mbzogc3RyaW5nLCBtb2RlbDogT0RhdGFNZXRhTW9kZWwpOiB2b2lkIHtcblx0XHRjb25zdCBhUGFyYW1ldGVyRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGlmIChwcm9wZXJ0eUluZm8pIHtcblx0XHRcdGNvbnN0IHNGZXRjaGVkUHJvcGVydGllcyA9IHByb3BlcnR5SW5mby5yZXBsYWNlKC9cXFxcey9nLCBcIntcIikucmVwbGFjZSgvXFxcXH0vZywgXCJ9XCIpO1xuXHRcdFx0Y29uc3QgYUZldGNoZWRQcm9wZXJ0aWVzID0gSlNPTi5wYXJzZShzRmV0Y2hlZFByb3BlcnRpZXMpO1xuXHRcdFx0Y29uc3QgZWRpdFN0YXRlTGFiZWwgPSB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiRklMVEVSQkFSX0VESVRJTkdfU1RBVFVTXCIpO1xuXHRcdFx0YUZldGNoZWRQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BJbmZvOiBQcm9wZXJ0eUluZm8pIHtcblx0XHRcdFx0cHJvcEluZm8ua2V5ID0gcHJvcEluZm8ubmFtZTtcblx0XHRcdFx0aWYgKHByb3BJbmZvLmlzUGFyYW1ldGVyKSB7XG5cdFx0XHRcdFx0YVBhcmFtZXRlckZpZWxkcy5wdXNoKHByb3BJbmZvLm5hbWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwcm9wSW5mby5wYXRoID09PSBcIiRlZGl0U3RhdGVcIikge1xuXHRcdFx0XHRcdHByb3BJbmZvLmxhYmVsID0gZWRpdFN0YXRlTGFiZWw7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHByb3BJbmZvLmtleT8uaW5jbHVkZXMoXCIvXCIpKSB7XG5cdFx0XHRcdFx0Ly9UTyBETzogTmVlZCB0byBwbGFjZSB0aGlzIGxvZ2ljIGluIGNvbW1vbiBwbGFjZSB3aGVuIHdlIGNvdmVyIGZpbHRlclJldHJpY3Rpb25zIHdpdGggdGhpcyBCTEkgRklPUklURUNIUDEtMjUwODBcblx0XHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aCA9IChwcm9wSW5mbyBhcyBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCkuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHlMb2NhdGlvblBhdGggPSBDb21tb25IZWxwZXIuZ2V0TG9jYXRpb25Gb3JQcm9wZXJ0eVBhdGgobW9kZWwsIGFubm90YXRpb25QYXRoKTtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eVBhdGggPSBhbm5vdGF0aW9uUGF0aC5yZXBsYWNlKGAke3Byb3BlcnR5TG9jYXRpb25QYXRofS9gLCBcIlwiKTtcblx0XHRcdFx0XHRjb25zdCBkYXRhTW9kZWwgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1vZGVsLmdldENvbnRleHQocHJvcGVydHlMb2NhdGlvblBhdGgpKTtcblxuXHRcdFx0XHRcdHByb3BJbmZvLnJlcXVpcmVkID0gRmlsdGVyUmVzdHJpY3Rpb25zLmdldEZpbHRlclJlc3RyaWN0aW9uc0J5RGF0YU1vZGVsKFxuXHRcdFx0XHRcdFx0ZGF0YU1vZGVsIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuXHRcdFx0XHRcdCk/LlJlcXVpcmVkUHJvcGVydGllcz8uaW5jbHVkZXMocHJvcGVydHlQYXRoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMucHJvcGVydHlJbmZvID0gSlNPTi5zdHJpbmdpZnkoYUZldGNoZWRQcm9wZXJ0aWVzKS5yZXBsYWNlKC9cXHsvZywgXCJcXFxce1wiKS5yZXBsYWNlKC9cXH0vZywgXCJcXFxcfVwiKTtcblx0XHR9XG5cdFx0dGhpcy5fcGFyYW1ldGVycyA9IEpTT04uc3RyaW5naWZ5KGFQYXJhbWV0ZXJGaWVsZHMpO1xuXHR9XG5cblx0Y2hlY2tJZkVkaXRpbmdGaWx0ZXJJc0Rpc2FibGVkID0gKHRhcmdldEVudGl0eVNldDogRW50aXR5U2V0KTogdm9pZCA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0dGFyZ2V0RW50aXR5U2V0LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzPy5zb21lKFxuXHRcdFx0XHQocikgPT4gci5OYXZpZ2F0aW9uUHJvcGVydHk/LnZhbHVlID09PSBcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhXCIgJiYgci5GaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlcmFibGUgPT09IGZhbHNlXG5cdFx0XHQpID09PSB0cnVlXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZSA9IGZhbHNlO1xuXHRcdH1cblx0fTtcblxuXHRjaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkID0gKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7XG5cdFx0aWYgKE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG9NZXRhTW9kZWwpKSB7XG5cdFx0XHR0aGlzLmlzRHJhZnRDb2xsYWJvcmF0aXZlID0gdHJ1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0RW50aXR5VHlwZVBhdGggPSAobWV0YVBhdGhQYXJ0czogc3RyaW5nW10pOiBzdHJpbmcgPT4ge1xuXHRcdHJldHVybiBtZXRhUGF0aFBhcnRzWzBdLmVuZHNXaXRoKFwiL1wiKSA/IG1ldGFQYXRoUGFydHNbMF0gOiBtZXRhUGF0aFBhcnRzWzBdICsgXCIvXCI7XG5cdH07XG5cblx0Z2V0U2VhcmNoID0gKCk6IHN0cmluZyA9PiB7XG5cdFx0aWYgKCF0aGlzLmhpZGVCYXNpY1NlYXJjaCkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PE1EQ0ZpbHRlckZpZWxkXG5cdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkJhc2ljU2VhcmNoRmllbGRcIl0pfVxuXHRcdFx0XHRcdGxhYmVsPXtcIlwifVxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwie3NhcC5mZS5pMThuPk1fRklMVEVSQkFSX1NFQVJDSH1cIlxuXHRcdFx0XHRcdHByb3BlcnR5S2V5PVwiJHNlYXJjaFwiXG5cdFx0XHRcdFx0Y29uZGl0aW9ucz1cInskZmlsdGVycz4vY29uZGl0aW9ucy8kc2VhcmNofVwiXG5cdFx0XHRcdFx0ZGF0YVR5cGU9XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcIlxuXHRcdFx0XHRcdG1heENvbmRpdGlvbnM9XCIxXCJcblx0XHRcdFx0XHRkYXRhVHlwZUNvbnN0cmFpbnRzPVwieydtYXhMZW5ndGgnOjEwMDB9XCJcblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBcIlwiO1xuXHR9O1xuXG5cdHByb2Nlc3NTZWxlY3Rpb25GaWVsZHMgPSAoKTogdm9pZCA9PiB7XG5cdFx0bGV0IGRyYWZ0RWRpdFN0YXRlID0gXCJcIjtcblx0XHRpZiAodGhpcy5zaG93RHJhZnRFZGl0U3RhdGUpIHtcblx0XHRcdGNvbnN0IGRyYWZ0U3RhdGVzID0gRHJhZnRFZGl0U3RhdGUuZ2V0RWRpdFN0YXRlcyh0aGlzLmlzRHJhZnRDb2xsYWJvcmF0aXZlKTtcblx0XHRcdGNvbnN0IGxhYmVsID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkZJTFRFUkJBUl9FRElUSU5HX1NUQVRVU1wiKTtcblx0XHRcdGRyYWZ0RWRpdFN0YXRlID0gKFxuXHRcdFx0XHQ8TURDRmlsdGVyRmllbGRcblx0XHRcdFx0XHRsYWJlbD17bGFiZWx9XG5cdFx0XHRcdFx0Y29uZGl0aW9ucz1cInskZmlsdGVycz4vY29uZGl0aW9ucy8kZWRpdFN0YXRlfVwiXG5cdFx0XHRcdFx0bWF4Q29uZGl0aW9ucz1cIjFcIlxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFwiLCBcIkRyYWZ0RWRpdGluZ1N0YXR1c1wiXSl9XG5cdFx0XHRcdFx0b3BlcmF0b3JzPVwiRVFcIlxuXHRcdFx0XHRcdGRhdGFUeXBlPVwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCJcblx0XHRcdFx0XHRwcm9wZXJ0eUtleT1cIiRlZGl0U3RhdGVcIlxuXHRcdFx0XHRcdGRpc3BsYXk9XCJEZXNjcmlwdGlvblwiXG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudEVkaXQ6IChcblx0XHRcdFx0XHRcdFx0PFNlbGVjdFxuXHRcdFx0XHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFwiLCBcIkRyYWZ0RWRpdGluZ1N0YXR1c1NlbGVjdFwiXSl9XG5cdFx0XHRcdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRcdFx0XHRmb3JjZVNlbGVjdGlvbj1cInRydWVcIlxuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkS2V5PVwie3BhdGg6ICckZmllbGQ+L2NvbmRpdGlvbnMnLCB0eXBlOiAnc2FwLnVpLm1kYy5maWVsZC5Db25kaXRpb25zVHlwZSd9XCJcblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdHt7IGl0ZW1zOiBkcmFmdFN0YXRlcy5tYXAoKHN0YXRlKSA9PiA8TGlzdEl0ZW0ga2V5PXtzdGF0ZS5pZH0gdGV4dD17c3RhdGUuZGlzcGxheX0gLz4pIH19XG5cdFx0XHRcdFx0XHRcdDwvU2VsZWN0PlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvTURDRmlsdGVyRmllbGQ+XG5cdFx0XHQpO1xuXHRcdH1cblx0XHR0aGlzLl92YWx1ZUhlbHBzID0gW107XG5cdFx0dGhpcy5fZmlsdGVyRmllbGRzID0gW107XG5cdFx0dGhpcy5fZmlsdGVyRmllbGRzPy5wdXNoKGRyYWZ0RWRpdFN0YXRlKTtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3Rpb25GaWVsZHMpKSB7XG5cdFx0XHR0aGlzLnNlbGVjdGlvbkZpZWxkcyA9IHRoaXMuc2VsZWN0aW9uRmllbGRzIS5nZXRPYmplY3QoKSBhcyBDb252ZXJ0ZWRGaWx0ZXJGaWVsZFtdO1xuXHRcdH1cblx0XHR0aGlzLnNlbGVjdGlvbkZpZWxkcz8uZm9yRWFjaCgoc2VsZWN0aW9uRmllbGQ6IENvbnZlcnRlZEZpbHRlckZpZWxkKSA9PiB7XG5cdFx0XHRpZiAoc2VsZWN0aW9uRmllbGQuYXZhaWxhYmlsaXR5ID09PSBcIkRlZmF1bHRcIikge1xuXHRcdFx0XHR0aGlzLnNldEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMoc2VsZWN0aW9uRmllbGQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuX2ZpbHRlckZpZWxkcyA9IHRoaXMuX2ZpbHRlckZpZWxkcz8ubGVuZ3RoID4gMCA/IHRoaXMuX2ZpbHRlckZpZWxkcyA6IFwiXCI7XG5cdFx0dGhpcy5fdmFsdWVIZWxwcyA9IHRoaXMuX3ZhbHVlSGVscHM/Lmxlbmd0aCA+IDAgPyB0aGlzLl92YWx1ZUhlbHBzIDogXCJcIjtcblx0fTtcblxuXHRnZXRQZXJzaXN0ZW5jZVByb3ZpZGVyKGZpbHRlckJhcklkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLmlnbm9yZVBlcnNvbmFsaXphdGlvbkNoYW5nZXMpIHtcblx0XHRcdHJldHVybiA8UGVyc2lzdGVuY2VQcm92aWRlciBpZD17Z2VuZXJhdGUoW2ZpbHRlckJhcklkLCBcIlBlcnNpc3RlbmNlUHJvdmlkZXJcIl0pfSBmb3I9e2ZpbHRlckJhcklkfSBtb2RlPXtcIlRyYW5zaWVudFwifSAvPjtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHNldEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMgPSAoc2VsZWN0aW9uRmllbGQ6IENvbnZlcnRlZEZpbHRlckZpZWxkKTogdm9pZCA9PiB7XG5cdFx0aWYgKHNlbGVjdGlvbkZpZWxkLnRlbXBsYXRlID09PSB1bmRlZmluZWQgJiYgc2VsZWN0aW9uRmllbGQudHlwZSAhPT0gXCJTbG90XCIpIHtcblx0XHRcdHRoaXMucHVzaEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMoc2VsZWN0aW9uRmllbGQpO1xuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9maWx0ZXJGaWVsZHMpKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHNlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRoO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlDb250ZXh0ID0gdGhpcy5tZXRhUGF0aCEuZ2V0TW9kZWwoKS5jcmVhdGVCaW5kaW5nQ29udGV4dChwcm9wZXJ0eSk7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eU9iamVjdCA9IHByb3BlcnR5Q29udGV4dD8uZ2V0T2JqZWN0KCk7XG5cdFx0XHRsZXQgZmlsdGVyQ29udGVudDtcblx0XHRcdGlmIChzZWxlY3Rpb25GaWVsZC50eXBlID09PSBcIlNsb3RcIikge1xuXHRcdFx0XHRmaWx0ZXJDb250ZW50ID0gKFxuXHRcdFx0XHRcdDxTbG90Q29sdW1uIHRlbXBsYXRlSWQ9e3NlbGVjdGlvbkZpZWxkLnRlbXBsYXRlfT5cblx0XHRcdFx0XHRcdDxzbG90IG5hbWU9eyhzZWxlY3Rpb25GaWVsZCBhcyBNYW5pZmVzdEZpbHRlckZpZWxkKS5zbG90TmFtZSF9IC8+XG5cdFx0XHRcdFx0PC9TbG90Q29sdW1uPlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmIChzZWxlY3Rpb25GaWVsZC50ZW1wbGF0ZSkge1xuXHRcdFx0XHRmaWx0ZXJDb250ZW50ID0gKFxuXHRcdFx0XHRcdDxDdXN0b21GcmFnbWVudEJsb2NrXG5cdFx0XHRcdFx0XHRmcmFnbWVudE5hbWU9e3NlbGVjdGlvbkZpZWxkLnRlbXBsYXRlfVxuXHRcdFx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkN1c3RvbUZpbHRlckZpZWxkXCIsIHNlbGVjdGlvbkZpZWxkLmtleV0pfVxuXHRcdFx0XHRcdFx0Y29udGV4dFBhdGg9e1wie2NvbnRleHRQYXRoPn1cIiBhcyB1bmtub3duIGFzIENvbnRleHR9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGxldCBtYXhDb25kaXRpb25WYWx1ZSA9IC0xO1xuXHRcdFx0aWYgKHByb3BlcnR5Q29udGV4dCkge1xuXHRcdFx0XHRtYXhDb25kaXRpb25WYWx1ZSA9IG1heENvbmRpdGlvbnMoc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGgsIHsgY29udGV4dDogcHJvcGVydHlDb250ZXh0IH0pID8/IC0xO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fZmlsdGVyRmllbGRzPy5wdXNoKFxuXHRcdFx0XHQ8TURDRmlsdGVyRmllbGRcblx0XHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiQ3VzdG9tRmlsdGVyRmllbGRcIiwgc2VsZWN0aW9uRmllbGQua2V5XSl9XG5cdFx0XHRcdFx0ZGVsZWdhdGU9e3sgbmFtZTogXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkQmFzZURlbGVnYXRlXCIgfX1cblx0XHRcdFx0XHRwcm9wZXJ0eUtleT17c2VsZWN0aW9uRmllbGQuY29uZGl0aW9uUGF0aH1cblx0XHRcdFx0XHRsYWJlbD17c2VsZWN0aW9uRmllbGQubGFiZWx9XG5cdFx0XHRcdFx0ZGF0YVR5cGU9e3NlbGVjdGlvbkZpZWxkLmRhdGFUeXBlfVxuXHRcdFx0XHRcdG1heENvbmRpdGlvbnM9e21heENvbmRpdGlvblZhbHVlfVxuXHRcdFx0XHRcdGNvbmRpdGlvbnM9e2B7JGZpbHRlcnM+L2NvbmRpdGlvbnMvJHtzZWxlY3Rpb25GaWVsZC5jb25kaXRpb25QYXRofX1gfVxuXHRcdFx0XHRcdG9wZXJhdG9ycz17RmllbGRIZWxwZXIub3BlcmF0b3JzKFxuXHRcdFx0XHRcdFx0cHJvcGVydHlDb250ZXh0LFxuXHRcdFx0XHRcdFx0cHJvcGVydHlPYmplY3QsXG5cdFx0XHRcdFx0XHR0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlLFxuXHRcdFx0XHRcdFx0c2VsZWN0aW9uRmllbGQuc2V0dGluZ3MgYXMgdW5rbm93biBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0XHR0aGlzLmNvbnRleHRQYXRoIS5nZXRQYXRoKClcblx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdGRhdGFUeXBlQ29uc3RyYWludHM9eyhzZWxlY3Rpb25GaWVsZCBhcyB1bmtub3duIGFzIHsgY29uc3RyYWludHM6IHVua25vd24gfSkuY29uc3RyYWludHN9XG5cdFx0XHRcdFx0ZGF0YVR5cGVGb3JtYXRPcHRpb25zPXsoc2VsZWN0aW9uRmllbGQgYXMgdW5rbm93biBhcyB7IGZvcm1hdE9wdGlvbnM6IHVua25vd24gfSkuZm9ybWF0T3B0aW9uc31cblx0XHRcdFx0XHR2YWx1ZUhlbHA9e1widW5kZWZpbmVkXCJ9XG5cdFx0XHRcdFx0cmVxdWlyZWQ9e3NlbGVjdGlvbkZpZWxkLnJlcXVpcmVkfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdFx0PEN1c3RvbUZpbHRlckZpZWxkQ29udGVudFdyYXBwZXJcblx0XHRcdFx0XHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7aGFuZGxlcjogJ3NhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzJ31cIlxuXHRcdFx0XHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZENvbnRlbnRXcmFwcGVyXCIsIHNlbGVjdGlvbkZpZWxkLmtleV0pfVxuXHRcdFx0XHRcdFx0XHRcdGJpbmRpbmc9e2B7ZmlsdGVyVmFsdWVzPi8ke0ZpbHRlclV0aWxzLmNvbmRpdGlvblRvTW9kZWxQYXRoKHNlbGVjdGlvbkZpZWxkLmNvbmRpdGlvblBhdGgpfX1gfVxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbnM9e1wie3BhdGg6ICckZmllbGQ+L2NvbmRpdGlvbnMnfVwiIGFzIHVua25vd24gYXMgQ29uZGl0aW9uT2JqZWN0W119XG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHR7eyBjb250ZW50OiBmaWx0ZXJDb250ZW50IH19XG5cdFx0XHRcdFx0XHRcdDwvQ3VzdG9tRmlsdGVyRmllbGRDb250ZW50V3JhcHBlcj5cblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRjdXN0b21EYXRhOiBbXG5cdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJpc1Nsb3RcIn0gdmFsdWU9e3NlbGVjdGlvbkZpZWxkLnR5cGUgPT09IFwiU2xvdFwifSAvPixcblx0XHRcdFx0XHRcdFx0PEZpZWxkSGVscEN1c3RvbURhdGFcblx0XHRcdFx0XHRcdFx0XHRrZXk9e1wic2FwLXVpLURvY3VtZW50YXRpb25SZWZcIn1cblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17YHtwYXJ0czogW3t2YWx1ZTogJ2FzQXJyYXknfSwge3ZhbHVlOiAnJHtzZWxlY3Rpb25GaWVsZC5kb2N1bWVudFJlZlRleHR9J31dLCBmb3JtYXR0ZXI6ICcuX2Zvcm1hdHRlcnMuU3RhbmRhcmRGb3JtYXR0ZXInfWB9XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9NRENGaWx0ZXJGaWVsZD5cblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXG5cdF9nZXRDb250ZXh0UGF0aEZvckZpbHRlckZpZWxkKHNlbGVjdGlvbkZpZWxkOiBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCwgZmlsdGVyQmFyQ29udGV4dFBhdGg6IENvbnRleHQpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZXh0UGF0aDogc3RyaW5nID0gZmlsdGVyQmFyQ29udGV4dFBhdGg/LmdldFBhdGgoKTtcblx0XHRpZiAoc2VsZWN0aW9uRmllbGQuaXNQYXJhbWV0ZXIpIHtcblx0XHRcdC8vIEV4YW1wbGU6XG5cdFx0XHQvLyBGaWx0ZXJCYXJDb250ZXh0UGF0aDogL0N1c3RvbWVyL1NldFxuXHRcdFx0Ly8gUGFyYW1ldGVyUHJvcGVydHlQYXRoOiAvQ3VzdG9tZXIvUF9DQ1xuXHRcdFx0Ly8gQ29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZDogL0N1c3RvbWVyXG5cdFx0XHRjb25zdCBhbm5vUGF0aCA9IHNlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRoO1xuXHRcdFx0Y29udGV4dFBhdGggPSBhbm5vUGF0aC5zdWJzdHJpbmcoMCwgYW5ub1BhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG5cdFx0fVxuXHRcdHJldHVybiBjb250ZXh0UGF0aDtcblx0fVxuXG5cdHB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzID0gKHNlbGVjdGlvbkZpZWxkOiBDb252ZXJ0ZWRGaWx0ZXJGaWVsZCk6IHZvaWQgPT4ge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2ZpbHRlckZpZWxkcykpIHtcblx0XHRcdGNvbnN0IHZmID0geyAuLi5zZWxlY3Rpb25GaWVsZC52aXN1YWxGaWx0ZXIsIC4uLnsgaW5pdGlhbENoYXJ0QmluZGluZ0VuYWJsZWQ6ICF0aGlzLnN1c3BlbmRTZWxlY3Rpb24gfSB9O1xuXHRcdFx0dGhpcy5fZmlsdGVyRmllbGRzPy5wdXNoKFxuXHRcdFx0XHQ8SW50ZXJuYWxGaWx0ZXJGaWVsZFxuXHRcdFx0XHRcdGlkUHJlZml4PXtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFwiLCBDb21tb25IZWxwZXIuZ2V0TmF2aWdhdGlvblBhdGgoc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGgpXSl9XG5cdFx0XHRcdFx0dmhJZFByZWZpeD17Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRWYWx1ZUhlbHBcIl0pfVxuXHRcdFx0XHRcdHByb3BlcnR5PXtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aCBhcyB1bmtub3duIGFzIENvbnRleHR9XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQsIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGgpIGFzIHVua25vd24gYXMgQ29udGV4dH1cblx0XHRcdFx0XHR1c2VTZW1hbnRpY0RhdGVSYW5nZT17dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZX1cblx0XHRcdFx0XHRsYWJlbD17c2VsZWN0aW9uRmllbGQubGFiZWx9XG5cdFx0XHRcdFx0c2V0dGluZ3M9e0NvbW1vbkhlbHBlci5zdHJpbmdpZnlDdXN0b21EYXRhKHNlbGVjdGlvbkZpZWxkLnNldHRpbmdzKX1cblx0XHRcdFx0XHR2aXN1YWxGaWx0ZXI9e3NlbGVjdGlvbkZpZWxkLnZpc3VhbEZpbHRlciAhPT0gdW5kZWZpbmVkID8gKHN0b3JlT2JqZWN0VmFsdWUodmYpIGFzIHVua25vd24gYXMgQ29udGV4dCkgOiB1bmRlZmluZWR9XG5cdFx0XHRcdFx0ZWRpdE1vZGU9e2B7aW50ZXJuYWw+LyR7dGhpcy5pZH0vZmlsdGVyRmllbGRzLyR7c2VsZWN0aW9uRmllbGQuY29uZGl0aW9uUGF0aH0vZWRpdE1vZGV9YH1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlSGVscHMpKSB7XG5cdFx0XHR0aGlzLl92YWx1ZUhlbHBzPy5wdXNoKFxuXHRcdFx0XHQ8VmFsdWVIZWxwXG5cdFx0XHRcdFx0aWRQcmVmaXg9e2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkVmFsdWVIZWxwXCJdKX1cblx0XHRcdFx0XHRjb25kaXRpb25Nb2RlbD1cIiRmaWx0ZXJzXCJcblx0XHRcdFx0XHRtZXRhUGF0aD17c2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGh9XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQsIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGgpfVxuXHRcdFx0XHRcdGZpbHRlckZpZWxkVmFsdWVIZWxwPXt0cnVlfVxuXHRcdFx0XHRcdHVzZVNlbWFudGljRGF0ZVJhbmdlPXt0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgdGhlIGRlc2lnbiB0aW1lIGZvciB0aGUgTURDIEZpbHRlckJhci5cblx0ICogQHJldHVybnMgVGhlIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGR0OmRlc2lnbnRpbWVcblx0ICovXG5cdGdldERlc2lnbnRpbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9kZXNpZ250aW1lL0ZpbHRlckJhci5kZXNpZ250aW1lXCI7XG5cdH1cblxuXHRnZXRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGludGVybmFsQ29udGV4dFBhdGggPSB0aGlzLl9pbnRlcm5hbENvbnRleHRQYXRoPy5nZXRQYXRoKCk7XG5cdFx0bGV0IGZpbHRlckRlbGVnYXRlID0gXCJcIjtcblx0XHRpZiAodGhpcy5maWx0ZXJCYXJEZWxlZ2F0ZSkge1xuXHRcdFx0ZmlsdGVyRGVsZWdhdGUgPSB0aGlzLmZpbHRlckJhckRlbGVnYXRlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmaWx0ZXJEZWxlZ2F0ZSA9IFwie25hbWU6J3NhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckRlbGVnYXRlJywgcGF5bG9hZDoge2VudGl0eVR5cGVQYXRoOiAnXCIgKyBpbnRlcm5hbENvbnRleHRQYXRoICsgXCInfX1cIjtcblx0XHR9XG5cdFx0Ly8gYWZ0ZXIgcmVtb3ZpbmcgdGhlIHVud2FudGVkIHByb3BlcnRpZXMgUHJvcGVydHlJbmZvIGlzIGFkZGVkIHRvIHRoZSBjb250cm9sLCBhbmQgd2UgYWxzbyBzYXZlIHRoZSBmdWxsIHZlcnNpb24gYXMgY3VzdG9tIGRhdGEgZm9yIEZFIGludGVybmFsIHVzZVxuXHRcdGNvbnN0IF9wcm9wZXJ0eUluZm9Db250cm9sID0gRmlsdGVyVXRpbHMuZm9ybWF0UHJvcGVydHlJbmZvKHRoaXMucHJvcGVydHlJbmZvIGFzIHN0cmluZyk7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxGaWx0ZXJCYXJBUElcblx0XHRcdFx0aWQ9e3RoaXMuX2FwaUlkfVxuXHRcdFx0XHRtZXRhUGF0aD17dGhpcy5tZXRhUGF0aCEuZ2V0UGF0aCgpfVxuXHRcdFx0XHRzZWFyY2g9e3RoaXMuc2VhcmNofVxuXHRcdFx0XHRmaWx0ZXJDaGFuZ2VkPXt0aGlzLmZpbHRlckNoYW5nZWR9XG5cdFx0XHRcdGFmdGVyQ2xlYXI9e3RoaXMuYWZ0ZXJDbGVhcn1cblx0XHRcdFx0aW50ZXJuYWxTZWFyY2g9e3RoaXMuaW50ZXJuYWxTZWFyY2h9XG5cdFx0XHRcdGludGVybmFsRmlsdGVyQ2hhbmdlZD17dGhpcy5pbnRlcm5hbEZpbHRlckNoYW5nZWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PEZFRmlsdGVyQmFyXG5cdFx0XHRcdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntBUEk6ICdzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUEknfVwiXG5cdFx0XHRcdFx0XHRcdGlkPXt0aGlzLl9jb250ZW50SWR9XG5cdFx0XHRcdFx0XHRcdGxpdmVNb2RlPXt0aGlzLmxpdmVNb2RlfVxuXHRcdFx0XHRcdFx0XHRkZWxlZ2F0ZT17ZmlsdGVyRGVsZWdhdGV9XG5cdFx0XHRcdFx0XHRcdHZhcmlhbnRCYWNrcmVmZXJlbmNlPXt0aGlzLmxpdmVNb2RlID8gdW5kZWZpbmVkIDogdGhpcy52YXJpYW50QmFja3JlZmVyZW5jZX1cblx0XHRcdFx0XHRcdFx0c2hvd0FkYXB0RmlsdGVyc0J1dHRvbj17dGhpcy5zaG93QWRhcHRGaWx0ZXJzQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRzaG93Q2xlYXJCdXR0b249e3RoaXMuc2hvd0NsZWFyQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRwMTNuTW9kZT17dGhpcy5wMTNuTW9kZX1cblx0XHRcdFx0XHRcdFx0c2VhcmNoPXtcIkFQSS5oYW5kbGVTZWFyY2goJGV2ZW50KVwiIGFzIHVua25vd24gYXMgKGU6IEZpbHRlckJhckJhc2UkU2VhcmNoRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0XHRcdGZpbHRlcnNDaGFuZ2VkPXtcIkFQSS5oYW5kbGVGaWx0ZXJDaGFuZ2VkKCRldmVudClcIiBhcyB1bmtub3duIGFzIChlOiBGaWx0ZXJCYXJCYXNlJEZpbHRlcnNDaGFuZ2VkRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0XHRcdGZpbHRlckNvbmRpdGlvbnM9e3RoaXMuZmlsdGVyQ29uZGl0aW9uc31cblx0XHRcdFx0XHRcdFx0c3VzcGVuZFNlbGVjdGlvbj17dGhpcy5zdXNwZW5kU2VsZWN0aW9ufVxuXHRcdFx0XHRcdFx0XHRzaG93TWVzc2FnZXM9e3RoaXMuc2hvd01lc3NhZ2VzfVxuXHRcdFx0XHRcdFx0XHR0b2dnbGVDb250cm9sPXt0aGlzLnRvZ2dsZUNvbnRyb2xJZH1cblx0XHRcdFx0XHRcdFx0aW5pdGlhbExheW91dD17dGhpcy5pbml0aWFsTGF5b3V0fVxuXHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnZpc2libGV9XG5cdFx0XHRcdFx0XHRcdGRpc2FibGVEcmFmdEVkaXRTdGF0ZUZpbHRlcj17dGhpcy5kaXNhYmxlRHJhZnRFZGl0U3RhdGVGaWx0ZXJ9XG5cdFx0XHRcdFx0XHRcdGR0OmRlc2lnbnRpbWU9e3RoaXMuZGVzaWdudGltZX1cblx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YTplbnRpdHlUeXBlPXtpbnRlcm5hbENvbnRleHRQYXRofVxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IFtcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJsb2NhbElkXCJ9IHZhbHVlPXt0aGlzLmlkfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJoaWRlQmFzaWNTZWFyY2hcIn0gdmFsdWU9e3RoaXMuaGlkZUJhc2ljU2VhcmNofSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJzaG93RHJhZnRFZGl0U3RhdGVcIn0gdmFsdWU9e3RoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT17XCJ1c2VTZW1hbnRpY0RhdGVSYW5nZVwifSB2YWx1ZT17dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZX0gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wicGFyYW1ldGVyc1wifSB2YWx1ZT17dGhpcy5fcGFyYW1ldGVyc30gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiZmVGaWx0ZXJJbmZvXCJ9IHZhbHVlPXt0aGlzLnByb3BlcnR5SW5mb30gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9e1wiYW5ub3RhdGlvblBhdGhcIn0gdmFsdWU9e3RoaXMuX2Fubm90YXRpb25QYXRofSAvPlxuXHRcdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogW3RoaXMuX3ZhbHVlSGVscHMsIHRoaXMuZ2V0UGVyc2lzdGVuY2VQcm92aWRlcih0aGlzLl9jb250ZW50SWQgYXMgc3RyaW5nKV0sXG5cdFx0XHRcdFx0XHRcdFx0YmFzaWNTZWFyY2hGaWVsZDogdGhpcy5nZXRTZWFyY2goKSxcblx0XHRcdFx0XHRcdFx0XHRmaWx0ZXJJdGVtczogdGhpcy5fZmlsdGVyRmllbGRzXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0ZFRmlsdGVyQmFyPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvRmlsdGVyQmFyQVBJPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNERBLE1BQU1BLDhCQUE4QixHQUFHLFNBQUFBLENBQVVDLGdCQUF5QixFQUFFQyxpQkFBOEIsRUFBZTtJQUN4SEEsaUJBQWlCLENBQUNDLFFBQVEsR0FBR0QsaUJBQWlCLENBQUNFLEdBQUc7SUFDbERGLGlCQUFpQixDQUFDRSxHQUFHLEdBQUdGLGlCQUFpQixDQUFDRSxHQUFH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
|
|
@@ -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
|
|