@sapui5/sap.fe.macros 1.141.2 → 1.143.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 +47 -36
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
- 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/ConditionalSwitch.js +1 -2
- package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
- package/src/sap/fe/macros/Field.js +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +8 -6
- package/src/sap/fe/macros/MacroAPI.js +4 -3
- package/src/sap/fe/macros/MacroAPI.ts +3 -3
- package/src/sap/fe/macros/MessageButton.js +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- package/src/sap/fe/macros/MicroChart.js +12 -7
- package/src/sap/fe/macros/MicroChart.tsx +9 -3
- 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/Share.js +7 -7
- package/src/sap/fe/macros/Share.tsx +9 -6
- package/src/sap/fe/macros/Status.js +39 -11
- package/src/sap/fe/macros/Status.tsx +25 -5
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +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 +29 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
- 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/BuildingBlockObjectProperty.js +7 -7
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
- package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
- 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/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
- 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 +3 -3
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
- 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 +4 -4
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
- 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 +44 -9
- package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
- 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 +130 -40
- package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
- 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 +15 -9
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
- 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 +110 -63
- package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
- 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/internal/valuehelp/ValueListHelper.js +2 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +13 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +21 -5
- package/src/sap/fe/macros/table/Action.ts +14 -4
- 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/Column.js +3 -2
- package/src/sap/fe/macros/table/Column.ts +1 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
- 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 +74 -30
- package/src/sap/fe/macros/table/Table.block.tsx +77 -14
- package/src/sap/fe/macros/table/TableAPI.js +175 -132
- package/src/sap/fe/macros/table/TableAPI.ts +67 -30
- package/src/sap/fe/macros/table/TableDefinition.js +20 -3
- package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -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 +25 -13
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
- 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/Utils.js +9 -3
- package/src/sap/fe/macros/table/Utils.ts +14 -8
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
- 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/ContextMenuHandler.js +2 -3
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
- 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
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
} from "sap/fe/core/templating/CriticalityFormatters";
|
|
37
37
|
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
38
38
|
import { enhanceDataModelPath, getContextRelativeTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
39
|
-
import { hasValidAnalyticalCurrencyOrUnit } from "sap/fe/core/templating/UIFormatters";
|
|
39
|
+
import { getTooltipValue, hasValidAnalyticalCurrencyOrUnit } from "sap/fe/core/templating/UIFormatters";
|
|
40
40
|
import FieldHelper from "sap/fe/macros/field/FieldHelper";
|
|
41
41
|
import * as FieldTemplating from "sap/fe/macros/field/FieldTemplating";
|
|
42
42
|
import type { FieldBlockProperties } from "sap/fe/macros/internal/field/FieldStructureHelper";
|
|
@@ -848,7 +848,9 @@ const DisplayStyle = {
|
|
|
848
848
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
849
849
|
renderWhitespace="true"
|
|
850
850
|
>
|
|
851
|
-
{
|
|
851
|
+
{{
|
|
852
|
+
customData: [customdata]
|
|
853
|
+
}}
|
|
852
854
|
</Text>
|
|
853
855
|
);
|
|
854
856
|
}
|
|
@@ -956,10 +958,7 @@ const DisplayStyle = {
|
|
|
956
958
|
const state = buildExpressionForCriticalityColor(convertedDataField);
|
|
957
959
|
|
|
958
960
|
// Extract tooltip from QuickInfo annotation - check DataField first, then property
|
|
959
|
-
const
|
|
960
|
-
dataModelObjectPath.targetObject?.annotations?.Common?.QuickInfo ||
|
|
961
|
-
enhancedValueDataModelPath.targetObject?.annotations?.Common?.QuickInfo;
|
|
962
|
-
const tooltipExpression = tooltipAnnotation ? compileExpression(getExpressionFromAnnotation(tooltipAnnotation)) : undefined;
|
|
961
|
+
const toolTipValue = getTooltipValue(dataModelObjectPath, enhancedValueDataModelPath);
|
|
963
962
|
|
|
964
963
|
const linkUrl = (field.convertedMetaPath as DataFieldWithUrl).Url
|
|
965
964
|
? compileExpression(
|
|
@@ -980,7 +979,7 @@ const DisplayStyle = {
|
|
|
980
979
|
state={state}
|
|
981
980
|
visible={field.displayVisible}
|
|
982
981
|
text={field.text}
|
|
983
|
-
tooltip={
|
|
982
|
+
tooltip={toolTipValue}
|
|
984
983
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
985
984
|
class="sapMTextRenderWhitespaceWrap"
|
|
986
985
|
/>
|
|
@@ -1013,7 +1012,7 @@ const DisplayStyle = {
|
|
|
1013
1012
|
icon={criticalityIcon}
|
|
1014
1013
|
state={state}
|
|
1015
1014
|
text={field.text}
|
|
1016
|
-
tooltip={
|
|
1015
|
+
tooltip={toolTipValue}
|
|
1017
1016
|
visible={field.displayVisible}
|
|
1018
1017
|
emptyIndicatorMode={field.emptyIndicatorMode}
|
|
1019
1018
|
{...requiredHelper}
|
|
@@ -2,14 +2,14 @@
|
|
|
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/fe/base/BindingToolkit", "sap/fe/
|
|
5
|
+
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyHelper", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/controls/CollaborationHBox", "sap/fe/macros/controls/RadioButtons", "sap/fe/macros/field/FieldTemplating", "sap/m/CheckBox", "sap/m/DatePicker", "sap/m/DateTimePicker", "sap/m/FlexItemData", "sap/m/Input", "sap/m/MaskInput", "sap/m/MaskInputRule", "sap/m/RatingIndicator", "sap/m/TextArea", "sap/m/TimePicker", "sap/ui/core/CustomData", "sap/ui/mdc/Field", "sap/ui/mdc/enums/FieldEditMode", "../../CollaborativeDraftHandler", "../../field/FieldHelper", "../../field/TextAreaEx", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (BindingToolkit, MetaModelConverter, DataModelPathHelper, PropertyHelper, UIFormatter, CollaborationHBox, RadioButtons, FieldTemplating, CheckBox, DatePicker, DateTimePicker, FlexItemData, Input, MaskInput, MaskInputRule, RatingIndicator, TextArea, TimePicker, CustomData, Field, FieldEditMode, CollaborativeDraftHandler, FieldHelper, TextAreaEx, _jsx, _jsxs) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var getTextAlignment = FieldTemplating.getTextAlignment;
|
|
9
9
|
var getMultipleLinesForDataField = FieldTemplating.getMultipleLinesForDataField;
|
|
10
10
|
var hasValueHelpWithFixedValues = PropertyHelper.hasValueHelpWithFixedValues;
|
|
11
|
+
var getContextRelativeTargetObjectPath = DataModelPathHelper.getContextRelativeTargetObjectPath;
|
|
11
12
|
var pathInModel = BindingToolkit.pathInModel;
|
|
12
|
-
var compileExpression = BindingToolkit.compileExpression;
|
|
13
13
|
const EditStyle = {
|
|
14
14
|
/**
|
|
15
15
|
* An internal helper to retrieve the reused layout data.
|
|
@@ -31,23 +31,10 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
31
31
|
* @returns An XML-based string with the definition of the avatar
|
|
32
32
|
*/
|
|
33
33
|
getCollaborationAvatar(field) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"core:require": "{FieldRuntimeHelper: 'sap/fe/macros/field/FieldRuntimeHelper'}",
|
|
39
|
-
visible: collaborationHasActivityExpression,
|
|
40
|
-
initials: collaborationInitialsExpression,
|
|
41
|
-
displaySize: "Custom",
|
|
42
|
-
customDisplaySize: "1.5rem",
|
|
43
|
-
customFontSize: "0.8rem",
|
|
44
|
-
backgroundColor: collaborationColorExpression,
|
|
45
|
-
press: field.eventHandlers.showCollaborationEditUser,
|
|
46
|
-
children: {
|
|
47
|
-
dependents: _jsx(EventDelegateHook, {
|
|
48
|
-
stopTapPropagation: true
|
|
49
|
-
})
|
|
50
|
-
}
|
|
34
|
+
return _jsx(CollaborativeDraftHandler, {
|
|
35
|
+
metaPath: getContextRelativeTargetObjectPath(field.dataModelPath),
|
|
36
|
+
contextPath: field.contextPath.getPath(),
|
|
37
|
+
showAvatar: true
|
|
51
38
|
});
|
|
52
39
|
},
|
|
53
40
|
/**
|
|
@@ -130,6 +117,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
130
117
|
value: field.valueBindingExpression,
|
|
131
118
|
placeholder: field.editStylePlaceholder,
|
|
132
119
|
width: "100%",
|
|
120
|
+
fieldWidth: "70%",
|
|
133
121
|
editable: field.editableExpression,
|
|
134
122
|
description: field.staticDescription,
|
|
135
123
|
enabled: field.enabledExpression,
|
|
@@ -208,6 +196,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
208
196
|
fixedValuesPath: fixedValuesPath,
|
|
209
197
|
fieldGroupIds: field.fieldGroupIds,
|
|
210
198
|
value: field.valueBindingExpression,
|
|
199
|
+
editableExpression: field.editableExpression,
|
|
211
200
|
enabledExpression: field.enabledExpression,
|
|
212
201
|
radioButtonTextProperty: valueListDescriptionPath,
|
|
213
202
|
radioButtonKeyProperty: valueListKeyPath,
|
|
@@ -493,4 +482,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/EventDelegateHook", "s
|
|
|
493
482
|
};
|
|
494
483
|
return EditStyle;
|
|
495
484
|
}, false);
|
|
496
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFZGl0U3R5bGUiLCJnZXRMYXlvdXREYXRhIiwiZmllbGQiLCJsYXlvdXREYXRhIiwiY29sbGFib3JhdGlvbkVuYWJsZWQiLCJfanN4IiwiRmxleEl0ZW1EYXRhIiwiZ3Jvd0ZhY3RvciIsImdldENvbGxhYm9yYXRpb25BdmF0YXIiLCJjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24iLCJVSUZvcm1hdHRlciIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsUGF0aCIsIkNvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJBdmF0YXIiLCJ2aXNpYmxlIiwiaW5pdGlhbHMiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsImV2ZW50SGFuZGxlcnMiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiY2hpbGRyZW4iLCJkZXBlbmRlbnRzIiwiRXZlbnREZWxlZ2F0ZUhvb2siLCJzdG9wVGFwUHJvcGFnYXRpb24iLCJnZXREYXRlVGltZVBpY2tlckdlbmVyaWMiLCJ0eXBlIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0ZXh0QWxpZ24iLCJnZXRUZXh0QWxpZ25tZW50IiwiZm9ybWF0T3B0aW9ucyIsImVkaXRNb2RlQXNPYmplY3QiLCJkYXRlVGltZVBpY2tlclByb3BlcnRpZXMiLCJpZCIsImVkaXRTdHlsZUlkIiwid2lkdGgiLCJlZGl0YWJsZSIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImVuYWJsZWQiLCJlbmFibGVkRXhwcmVzc2lvbiIsInJlcXVpcmVkIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiYXJpYUxhYmVsbGVkQnkiLCJ2YWx1ZSIsInZhbHVlQmluZGluZ0V4cHJlc3Npb24iLCJmaWVsZEdyb3VwSWRzIiwic2hvd1RpbWV6b25lIiwibWluRGF0ZSIsIm1pbkRhdGVFeHByZXNzaW9uIiwidW5kZWZpbmVkIiwibWF4RGF0ZSIsIm1heERhdGVFeHByZXNzaW9uIiwiY2hhbmdlIiwibGl2ZUNoYW5nZSIsInZhbHVlRm9ybWF0IiwidmFsaWRhdGVGaWVsZEdyb3VwIiwiZ2V0RGF0ZVRpbWVQaWNrZXIiLCJkYXRlVGltZVBpY2tlclR5cGUiLCJkYXRlVGltZVBpY2tlciIsIkRhdGVQaWNrZXIiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsImRhdGFTb3VyY2VQYXRoIiwiRGF0ZVRpbWVQaWNrZXIiLCJUaW1lUGlja2VyIiwiZ2V0SW5wdXRUZW1wbGF0ZSIsIklucHV0IiwicGxhY2Vob2xkZXIiLCJlZGl0U3R5bGVQbGFjZWhvbGRlciIsImRlc2NyaXB0aW9uIiwic3RhdGljRGVzY3JpcHRpb24iLCJlZGl0U3R5bGUiLCJtYXhMZW5ndGgiLCJ0ZXh0TWF4TGVuZ3RoIiwic2hvd0FzUmFkaW9CdXR0b24iLCJyYWRpb0J1dHRvbkNvbmZpZ3VyZWQiLCJwcm9wZXJ0eSIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5IiwidmFsdWVPZiIsImZpZWxkRWRpdFN0eWxlIiwidmFsdWVMaXN0UGFyYW1ldGVySW5PdXQiLCJWYWx1ZUxpc3QiLCJQYXJhbWV0ZXJzIiwiZmluZCIsInZhbHVlTGlzdFBhcmFtZXRlciIsIiRUeXBlIiwiTG9jYWxEYXRhUHJvcGVydHkiLCJuYW1lIiwiVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzIiwiZ2V0UmFkaW9CdXR0b25UZW1wbGF0ZSIsImZvckJvb2xlYW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmaXhlZFZhbHVlc1BhdGgiLCJDb2xsZWN0aW9uUGF0aCIsInZhbHVlTGlzdEtleVBhdGgiLCJwYXRoSW5Nb2RlbCIsIlZhbHVlTGlzdFByb3BlcnR5IiwidmFsdWVMaXN0RGVzY3JpcHRpb25QYXRoIiwidmFsdWVIZWxwS2V5VGV4dEFubm90YXRpb25QYXRoIiwidGFyZ2V0RW50aXR5VHlwZSIsInJlc29sdmVQYXRoIiwiZW50aXR5VHlwZSIsImtleXMiLCJUZXh0IiwicGF0aCIsInBvc3NpYmxlVmFsdWVzIiwia2V5IiwidGV4dCIsImdldFRyYW5zbGF0ZWRUZXh0IiwiUmFkaW9CdXR0b25zIiwicmFkaW9CdXR0b25UZXh0UHJvcGVydHkiLCJyYWRpb0J1dHRvbktleVByb3BlcnR5IiwiaG9yaXpvbnRhbExheW91dCIsInJhZGlvQnV0dG9uc0hvcml6b250YWxMYXlvdXQiLCJnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZSIsImRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgiLCJkZWxlZ2F0ZSIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUZpZWxkQmFzZURlbGVnYXRlIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImRpc3BsYXkiLCJnZXRGaWVsZERpc3BsYXkiLCJkaXNwbGF5TW9kZSIsImhhc011bHRpbGluZUFubm90YXRpb24iLCJVSSIsIk11bHRpTGluZVRleHQiLCJtdWx0aXBsZUxpbmVzIiwiZ2V0TXVsdGlwbGVMaW5lc0ZvckRhdGFGaWVsZCIsImxhYmVsIiwiY29tcHV0ZUxhYmVsVGV4dCIsImNvbnRleHQiLCJvcHRpb25hbENvbnRlbnRFZGl0IiwiVGV4dEFyZWEiLCJyb3dzIiwidGV4dExpbmVzRWRpdCIsImdyb3dpbmciLCJ0ZXh0TWF4TGluZXMiLCJncm93aW5nTWF4TGluZXMiLCJvcHRpb25hbExheW91dERhdGEiLCJGaWVsZCIsInZhbHVlU3RhdGUiLCJlZGl0TW9kZSIsImNvbXB1dGVkRWRpdE1vZGUiLCJhZGRpdGlvbmFsVmFsdWUiLCJ0ZXh0QmluZGluZ0V4cHJlc3Npb24iLCJ2YWx1ZUhlbHAiLCJ2YWx1ZUhlbHBJZCIsImNvbnRlbnRFZGl0IiwiZ2V0Q2hlY2tCb3hUZW1wbGF0ZSIsImlzQ2hlY2tCb3hHcm91cEl0ZW0iLCJpc0ZpZWxkR3JvdXBJdGVtIiwiQ2hlY2tCb3giLCJzZWxlY3RlZCIsIndyYXBwaW5nIiwic2VsZWN0IiwiZ2V0VGV4dEFyZWFUZW1wbGF0ZSIsInNob3dFeGNlZWRlZFRleHQiLCJUZXh0QXJlYUV4IiwiY29scyIsImdldFJhdGluZ0luZGljYXRvclRlbXBsYXRlIiwidG9vbHRpcCIsInJhdGluZ0luZGljYXRvclRvb2x0aXAiLCJSYXRpbmdJbmRpY2F0b3IiLCJtYXhWYWx1ZSIsInJhdGluZ0luZGljYXRvclRhcmdldFZhbHVlIiwiaWNvblNpemUiLCJjbGFzcyIsImdldFRlbXBsYXRlV2l0aFdyYXBwZXIiLCJGaWVsZEVkaXRNb2RlIiwiRGlzcGxheSIsIl9qc3hzIiwiQ29sbGFib3JhdGlvbkhCb3giLCJhbGlnbkl0ZW1zIiwiZ2V0VGVtcGxhdGUiLCJnZXRJbnB1dE1hc2tUZW1wbGF0ZSIsIm9wdGlvbmFsTWFza0lucHV0UnVsZXMiLCJtYXNrIiwibWFza1J1bGUiLCJydWxlIiwicHVzaCIsIk1hc2tJbnB1dFJ1bGUiLCJtYXNrRm9ybWF0U3ltYm9sIiwic3ltYm9sIiwicmVnZXgiLCJNYXNrSW5wdXQiLCJwbGFjZWhvbGRlclN5bWJvbCIsInJ1bGVzIiwiaW5uZXJGaWVsZENvbnRlbnQiLCJ1c2VSYWRpb0J1dHRvbnNGb3JCb29sZWFuIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFZGl0U3R5bGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRXZlbnREZWxlZ2F0ZUhvb2sgZnJvbSBcInNhcC9mZS9iYXNlL0V2ZW50RGVsZWdhdGVIb29rXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgKiBhcyBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9Db2xsYWJvcmF0aW9uRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgQ29sbGFib3JhdGlvbkhCb3ggZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvQ29sbGFib3JhdGlvbkhCb3hcIjtcbmltcG9ydCBSYWRpb0J1dHRvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvUmFkaW9CdXR0b25zXCI7XG5pbXBvcnQgeyBnZXRNdWx0aXBsZUxpbmVzRm9yRGF0YUZpZWxkLCBnZXRUZXh0QWxpZ25tZW50IH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvZmllbGQvRmllbGRTdHJ1Y3R1cmVIZWxwZXJcIjtcbmltcG9ydCBBdmF0YXIgZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IHR5cGUgeyBDaGVja0JveCRTZWxlY3RFdmVudCB9IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IENoZWNrQm94IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSBcInNhcC9tL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBEYXRlVGltZVBpY2tlciBmcm9tIFwic2FwL20vRGF0ZVRpbWVQaWNrZXJcIjtcbmltcG9ydCBGbGV4SXRlbURhdGEgZnJvbSBcInNhcC9tL0ZsZXhJdGVtRGF0YVwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgdHlwZSB7IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vTWFza0lucHV0XCI7XG5pbXBvcnQgTWFza0lucHV0IGZyb20gXCJzYXAvbS9NYXNrSW5wdXRcIjtcbmltcG9ydCBNYXNrSW5wdXRSdWxlIGZyb20gXCJzYXAvbS9NYXNrSW5wdXRSdWxlXCI7XG5pbXBvcnQgdHlwZSB7IFJhdGluZ0luZGljYXRvciRDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvbS9SYXRpbmdJbmRpY2F0b3JcIjtcbmltcG9ydCBSYXRpbmdJbmRpY2F0b3IgZnJvbSBcInNhcC9tL1JhdGluZ0luZGljYXRvclwiO1xuaW1wb3J0IFRleHRBcmVhIGZyb20gXCJzYXAvbS9UZXh0QXJlYVwiO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSBcInNhcC9tL1RpbWVQaWNrZXJcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIENvbnRyb2wsIENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQsIGRlZmF1bHQgYXMgQ29udHJvbDEgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIHsgRmllbGQkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IEZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcIi4uLy4uL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgVGV4dEFyZWFFeCBmcm9tIFwiLi4vLi4vZmllbGQvVGV4dEFyZWFFeFwiO1xuXG5jb25zdCBFZGl0U3R5bGUgPSB7XG5cdC8qKlxuXHQgKiBBbiBpbnRlcm5hbCBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIHJldXNlZCBsYXlvdXQgZGF0YS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldExheW91dERhdGEoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRsZXQgbGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRsYXlvdXREYXRhID0gPEZsZXhJdGVtRGF0YSBncm93RmFjdG9yPVwiOVwiIC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gbGF5b3V0RGF0YTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBhdmF0YXIgY29udHJvbCBuZXh0IGEgZmllbGQgbG9ja2VkLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYXZhdGFyXG5cdCAqL1xuXHRnZXRDb2xsYWJvcmF0aW9uQXZhdGFyKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvbkhhc0FjdGl2aXR5RXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGZpZWxkLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uKTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRVSUZvcm1hdHRlci5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihmaWVsZC5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlJbml0aWFscylcblx0XHQpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFVJRm9ybWF0dGVyLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKGZpZWxkLmRhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yKVxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PEF2YXRhclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGRSdW50aW1lSGVscGVyOiAnc2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFJ1bnRpbWVIZWxwZXInfVwiXG5cdFx0XHRcdHZpc2libGU9e2NvbGxhYm9yYXRpb25IYXNBY3Rpdml0eUV4cHJlc3Npb259XG5cdFx0XHRcdGluaXRpYWxzPXtjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9ufVxuXHRcdFx0XHRkaXNwbGF5U2l6ZT1cIkN1c3RvbVwiXG5cdFx0XHRcdGN1c3RvbURpc3BsYXlTaXplPVwiMS41cmVtXCJcblx0XHRcdFx0Y3VzdG9tRm9udFNpemU9XCIwLjhyZW1cIlxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9e2NvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHByZXNzPXtmaWVsZC5ldmVudEhhbmRsZXJzLnNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIgYXMgdW5rbm93biBhcyAoKG9FdmVudDogRXZlbnQpID0+IHZvaWQpIHwgdW5kZWZpbmVkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGRlcGVuZGVudHM6IDxFdmVudERlbGVnYXRlSG9vayBzdG9wVGFwUHJvcGFnYXRpb249e3RydWV9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0F2YXRhcj5cblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSB0ZW1wbGF0ZSBmb3Igb25lIG9mIHRoZSBwaWNrZXJzIHJlZmVyZW5jZSBpbiB0aGUgdHlwZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcGFyYW0gdHlwZSBSZWZlcmVuY2UgdG8gb25lIG9mIHRoZSBlZGl0IHN0eWxlIHBpY2tlciB0eXBlc1xuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMsIHR5cGU6IFwiRGF0ZVBpY2tlclwiIHwgXCJEYXRlVGltZVBpY2tlclwiIHwgXCJUaW1lUGlja2VyXCIpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXG5cdFx0Y29uc3QgZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzID0ge1xuXHRcdFx0XCJjb3JlOnJlcXVpcmVcIjogXCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIixcblx0XHRcdGlkOiBmaWVsZC5lZGl0U3R5bGVJZCxcblx0XHRcdHdpZHRoOiBcIjEwMCVcIixcblx0XHRcdGVkaXRhYmxlOiBmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb24sXG5cdFx0XHRlbmFibGVkOiBmaWVsZC5lbmFibGVkRXhwcmVzc2lvbixcblx0XHRcdHJlcXVpcmVkOiBmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb24sXG5cdFx0XHR0ZXh0QWxpZ246IHRleHRBbGlnbixcblx0XHRcdGFyaWFMYWJlbGxlZEJ5OiBmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+LFxuXHRcdFx0dmFsdWU6IGZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb24sXG5cdFx0XHRmaWVsZEdyb3VwSWRzOiBmaWVsZC5maWVsZEdyb3VwSWRzLFxuXHRcdFx0c2hvd1RpbWV6b25lOiBmaWVsZC5zaG93VGltZXpvbmUsXG5cdFx0XHRtaW5EYXRlOiB0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCIgfHwgdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBmaWVsZC5taW5EYXRlRXhwcmVzc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdG1heERhdGU6IHR5cGUgPT09IFwiRGF0ZVRpbWVQaWNrZXJcIiB8fCB0eXBlID09PSBcIkRhdGVQaWNrZXJcIiA/IGZpZWxkLm1heERhdGVFeHByZXNzaW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0Y2hhbmdlOlxuXHRcdFx0XHR0eXBlID09PSBcIkRhdGVUaW1lUGlja2VyXCJcblx0XHRcdFx0XHQ/ICgoZmllbGQuY2hhbmdlIHx8IGZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlKSBhcyB1bmtub3duIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZClcblx0XHRcdFx0XHQ6IChmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZSBhcyB1bmtub3duIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZCksXG5cdFx0XHRsaXZlQ2hhbmdlOiBmaWVsZC5ldmVudEhhbmRsZXJzLmxpdmVDaGFuZ2UsXG5cdFx0XHR2YWx1ZUZvcm1hdDogdHlwZSA9PT0gXCJEYXRlUGlja2VyXCIgPyBcIm1lZGl1bVwiIDogdW5kZWZpbmVkLFxuXHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwOiBmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkXG5cdFx0fTtcblxuXHRcdGZ1bmN0aW9uIGdldERhdGVUaW1lUGlja2VyKGRhdGVUaW1lUGlja2VyVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRcdGxldCBkYXRlVGltZVBpY2tlcjtcblx0XHRcdHN3aXRjaCAoZGF0ZVRpbWVQaWNrZXJUeXBlKSB7XG5cdFx0XHRcdGNhc2UgXCJEYXRlUGlja2VyXCI6XG5cdFx0XHRcdFx0ZGF0ZVRpbWVQaWNrZXIgPSAoXG5cdFx0XHRcdFx0XHQ8RGF0ZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvRGF0ZVBpY2tlcj5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFwiRGF0ZVRpbWVQaWNrZXJcIjpcblx0XHRcdFx0XHRkYXRlVGltZVBpY2tlciA9IChcblx0XHRcdFx0XHRcdDxEYXRlVGltZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvRGF0ZVRpbWVQaWNrZXI+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIlRpbWVQaWNrZXJcIjpcblx0XHRcdFx0XHRkYXRlVGltZVBpY2tlciA9IChcblx0XHRcdFx0XHRcdDxUaW1lUGlja2VyIHsuLi5kYXRlVGltZVBpY2tlclByb3BlcnRpZXN9PlxuXHRcdFx0XHRcdFx0XHR7eyBjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPiB9fVxuXHRcdFx0XHRcdFx0PC9UaW1lUGlja2VyPlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZGF0ZVRpbWVQaWNrZXI7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGdldERhdGVUaW1lUGlja2VyKHR5cGUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIElucHV0IHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0SW5wdXRUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0ZWRpdGFibGU9e2ZpZWxkLmVkaXRhYmxlRXhwcmVzc2lvbn1cblx0XHRcdFx0ZGVzY3JpcHRpb249e2ZpZWxkLnN0YXRpY0Rlc2NyaXB0aW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHR5cGU9e2ZpZWxkLmVkaXRTdHlsZSA9PT0gXCJNYXNrZWRcIiA/IFwiUGFzc3dvcmRcIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogRWRpdFN0eWxlLmdldExheW91dERhdGEoZmllbGQpLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0lucHV0PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgaWYgYSBmaWVsZCBzaGFsbCBiZSB0ZW1wbGF0ZWQgYXMgYSByYWRpbyBidXR0b24gZ3JvdXAuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgVGhlIGV2YWx1YXRpb24gcmVzdWx0XG5cdCAqL1xuXHRzaG93QXNSYWRpb0J1dHRvbihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBib29sZWFuIHtcblx0XHQvLyBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byByZW5kZXIgdGhlIGZpZWxkIGFzIGEgcmFkaW8gYnV0dG9uIGdyb3VwXG5cdFx0Ly8gVE9ETzogUmVtb3ZlIHRoZSBuZXh0IHR3byBsaW5lcyBvbmNlIFVYIHVwZGF0ZWQgdGhlIHZvY2FidWxhcnkgbW9kdWxlIGluY2x1ZGluZyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBhbm5vdGF0aW9uXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCByYWRpb0J1dHRvbkNvbmZpZ3VyZWQ6IGJvb2xlYW4gPVxuXHRcdFx0ZmllbGQucHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzICYmXG5cdFx0XHRoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMoZmllbGQucHJvcGVydHkpID09PSB0cnVlICYmXG5cdFx0XHQoKGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5ICYmXG5cdFx0XHRcdGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5LnZhbHVlT2YoKSA9PT1cblx0XHRcdFx0XHR0cnVlKSB8fFxuXHRcdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmZpZWxkRWRpdFN0eWxlID09PSBcIlJhZGlvQnV0dG9uc1wiKTtcblxuXHRcdC8vIEV4Y2x1ZGUgbm90IHN1cHBvcnRlZCBjYXNlc1xuXHRcdC8vIC0gVmFsdWVMaXN0UGFyYW1hdGVySW5PdXQgLyAuLi5PdXQgbXVzdCBub3QgYmUgZW1wdHlcblx0XHQvLyAtIFZhbHVlTGlzdFJlbGV2YW50UXVhbGlmaWVycyBhbm5vdGF0aW9uIG11c3Qgbm90IGJlIHVzZWRcblx0XHQvLyBGdXJ0aGVyIGNhc2VzIG1heSBub3QgbWFrZSBzZW5zZSB3aXRoIHJhZGlvIGJ1dHRvbnMgYnV0IHdlIGRvIG5vdCBleHBsaWNpdGx5IGV4Y2x1ZGUgdGhlbSBidXQgbWVudGlvbiB0aGlzIGluIGRvY3VtZW50YXRpb24uXG5cdFx0Ly8gQ2hlY2sgZG9jdW1lbnRhdGlvbiwgZGlzY3VzcyBhbmQgZGVjaWRlIGJlZm9yZSBhZGRpbmcgZnVydGhlciByZXN0cmljdGlvbnMgaGVyZS5cblx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCA9IGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LlBhcmFtZXRlcnMuZmluZChcblx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIpID0+XG5cdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkudmFsdWUgPT09IGZpZWxkLnByb3BlcnR5Lm5hbWVcblx0XHQpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRyYWRpb0J1dHRvbkNvbmZpZ3VyZWQgJiZcblx0XHRcdHZhbHVlTGlzdFBhcmFtZXRlckluT3V0ICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdCFmaWVsZC5wcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RSZWxldmFudFF1YWxpZmllcnNcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIFJhZGlvQnV0dG9uIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBmb3JCb29sZWFuXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgcmFkaW8gYnV0dG9uIGRlZmluaXRpb25cblx0ICovXG5cdGdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzLCBmb3JCb29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGZpeGVkVmFsdWVzUGF0aCA9IFwiL1wiICsgZmllbGQucHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdD8uQ29sbGVjdGlvblBhdGg7XG5cblx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCA9IGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LlBhcmFtZXRlcnMuZmluZChcblx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIpID0+XG5cdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkudmFsdWUgPT09IGZpZWxkLnByb3BlcnR5Lm5hbWVcblx0XHQpO1xuXG5cdFx0Ly8gd2Uga25vdyB0aGF0IGEgdmFsdWVMaXN0UHJvcGVydHkgZXhpc3RzIGJlY2F1c2Ugd2UgY2hlY2sgdGhpcyBhbHJlYWR5IGluIHNob3dBc1JhZGlvQnV0dG9uXG5cdFx0Y29uc3QgdmFsdWVMaXN0S2V5UGF0aCA9IHBhdGhJbk1vZGVsKHZhbHVlTGlzdFBhcmFtZXRlckluT3V0Py5WYWx1ZUxpc3RQcm9wZXJ0eSBhcyBzdHJpbmcpID8/IHBhdGhJbk1vZGVsKFwiXCIpO1xuXG5cdFx0bGV0IHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aDtcblx0XHRjb25zdCB2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGggPVxuXHRcdFx0ZmllbGQuZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKGZpeGVkVmFsdWVzUGF0aCk/LmVudGl0eVR5cGUua2V5c1swXS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0Py5wYXRoO1xuXHRcdGlmICh2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHBhdGhJbk1vZGVsKHZhbHVlSGVscEtleVRleHRBbm5vdGF0aW9uUGF0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHZhbHVlTGlzdEtleVBhdGg7XG5cdFx0fVxuXG5cdFx0bGV0IHBvc3NpYmxlVmFsdWVzOiB7IGtleTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw7IHRleHQ6IHN0cmluZyB9W10gfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGZvckJvb2xlYW4pIHtcblx0XHRcdHBvc3NpYmxlVmFsdWVzID0gW1xuXHRcdFx0XHR7IGtleTogdHJ1ZSwgdGV4dDogZmllbGQuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1JBRElPQlVUVE9OU19CT09MRUFOX1lFU1wiKSB9LFxuXHRcdFx0XHR7IGtleTogZmFsc2UsIHRleHQ6IGZpZWxkLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9SQURJT0JVVFRPTlNfQk9PTEVBTl9OT1wiKSB9XG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8UmFkaW9CdXR0b25zXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0cG9zc2libGVWYWx1ZXM9e3Bvc3NpYmxlVmFsdWVzfVxuXHRcdFx0XHRyZXF1aXJlZEV4cHJlc3Npb249e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0XHRmaXhlZFZhbHVlc1BhdGg9e2ZpeGVkVmFsdWVzUGF0aCBhcyB1bmtub3duIGFzIGB7JHtzdHJpbmd9fWB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkRXhwcmVzc2lvbj17ZmllbGQuZW5hYmxlZEV4cHJlc3Npb259XG5cdFx0XHRcdHJhZGlvQnV0dG9uVGV4dFByb3BlcnR5PXt2YWx1ZUxpc3REZXNjcmlwdGlvblBhdGh9XG5cdFx0XHRcdHJhZGlvQnV0dG9uS2V5UHJvcGVydHk9e3ZhbHVlTGlzdEtleVBhdGh9XG5cdFx0XHRcdGhvcml6b250YWxMYXlvdXQ9e2ZpZWxkLmZvcm1hdE9wdGlvbnMucmFkaW9CdXR0b25zSG9yaXpvbnRhbExheW91dH1cblx0XHRcdC8+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dFdpdGhWYWx1ZUhlbHAgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihcblx0XHRcdGZpZWxkLm1ldGFQYXRoLFxuXHRcdFx0ZmllbGQuY29udGV4dFBhdGhcblx0XHQpO1xuXG5cdFx0Y29uc3QgZGVsZWdhdGUgPSBGaWVsZEhlbHBlci5jb21wdXRlRmllbGRCYXNlRGVsZWdhdGUoXG5cdFx0XHRcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRCYXNlRGVsZWdhdGVcIixcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMucmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCBhcyBib29sZWFuXG5cdFx0KTtcblx0XHRjb25zdCBkaXNwbGF5ID0gVUlGb3JtYXR0ZXIuZ2V0RmllbGREaXNwbGF5KFxuXHRcdFx0ZmllbGQucHJvcGVydHksXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmRpc3BsYXlNb2RlIGFzIHN0cmluZyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXHRcdGNvbnN0IGhhc011bHRpbGluZUFubm90YXRpb24gPSAhIWZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQ7XG5cdFx0Y29uc3QgbXVsdGlwbGVMaW5lcyA9IGdldE11bHRpcGxlTGluZXNGb3JEYXRhRmllbGQoZmllbGQsIGhhc011bHRpbGluZUFubm90YXRpb24pO1xuXG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0XHRcdHRydWVcblx0XHQpO1xuXHRcdGNvbnN0IGxhYmVsID0gRmllbGRIZWxwZXIuY29tcHV0ZUxhYmVsVGV4dChmaWVsZCBhcyB1bmtub3duIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkVHlwZXM+LCB7XG5cdFx0XHRjb250ZXh0OiBmaWVsZC5tZXRhUGF0aFxuXHRcdH0pO1xuXG5cdFx0bGV0IG9wdGlvbmFsQ29udGVudEVkaXQgPSBcIlwiO1xuXHRcdGlmIChmaWVsZC5wcm9wZXJ0eS50eXBlID09PSBcIkVkbS5TdHJpbmdcIiAmJiBoYXNNdWx0aWxpbmVBbm5vdGF0aW9uKSB7XG5cdFx0XHRvcHRpb25hbENvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHQ8VGV4dEFyZWFcblx0XHRcdFx0XHR2YWx1ZT17ZmllbGQudmFsdWVCaW5kaW5nRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdHJvd3M9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dExpbmVzRWRpdH1cblx0XHRcdFx0XHRncm93aW5nPXsoZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgYXMgdW5rbm93biBhcyBudW1iZXIpID4gMCA/IHRydWUgOiB1bmRlZmluZWR9XG5cdFx0XHRcdFx0Z3Jvd2luZ01heExpbmVzPXtmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMaW5lc31cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgdW5rbm93biBhcyAob0V2ZW50OiBJbnB1dEJhc2UkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bGV0IG9wdGlvbmFsTGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID09PSB0cnVlKSB7XG5cdFx0XHRvcHRpb25hbExheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuc2hvd0FzUmFkaW9CdXR0b24oZmllbGQpICE9PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8RmllbGRcblx0XHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRcdGRlbGVnYXRlPXtkZWxlZ2F0ZX1cblx0XHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9e2ZpZWxkLmVkaXRTdHlsZVBsYWNlaG9sZGVyfVxuXHRcdFx0XHRcdHZhbHVlU3RhdGU9e2ZpZWxkLnZhbHVlU3RhdGV9XG5cdFx0XHRcdFx0ZWRpdE1vZGU9e2ZpZWxkLmVkaXRNb2RlID8/IGZpZWxkLmNvbXB1dGVkRWRpdE1vZGV9XG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGFkZGl0aW9uYWxWYWx1ZT17ZmllbGQudGV4dEJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRcdGRpc3BsYXk9e2Rpc3BsYXl9XG5cdFx0XHRcdFx0bXVsdGlwbGVMaW5lcz17bXVsdGlwbGVMaW5lcyA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBtdWx0aXBsZUxpbmVzfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17ZmllbGQudmFsdWVIZWxwSWR9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0XHR0ZXh0QWxpZ249e3RleHRBbGlnbn1cblx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17ZmllbGQuYXJpYUxhYmVsbGVkQnkgYXMgdW5rbm93biBhcyBBcnJheTxDb250cm9sMSB8IHN0cmluZz59XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50RWRpdDogb3B0aW9uYWxDb250ZW50RWRpdCxcblx0XHRcdFx0XHRcdGxheW91dERhdGE6IG9wdGlvbmFsTGF5b3V0RGF0YSxcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9GaWVsZD5cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBDaGVja0JveCB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldENoZWNrQm94VGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBpc0NoZWNrQm94R3JvdXBJdGVtID0gZmllbGQuZm9ybWF0T3B0aW9ucy5pc0ZpZWxkR3JvdXBJdGVtID09PSB0cnVlO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8Q2hlY2tCb3hcblx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZpZWxkOiAnc2FwL2ZlL21hY3Jvcy9GaWVsZCd9XCJcblx0XHRcdFx0aWQ9e2ZpZWxkLmVkaXRTdHlsZUlkfVxuXHRcdFx0XHRyZXF1aXJlZD17aXNDaGVja0JveEdyb3VwSXRlbSA/IGZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0c2VsZWN0ZWQ9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGVuYWJsZWQ9e2ZpZWxkLmVuYWJsZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRmaWVsZEdyb3VwSWRzPXtmaWVsZC5maWVsZEdyb3VwSWRzfVxuXHRcdFx0XHR0ZXh0PXtpc0NoZWNrQm94R3JvdXBJdGVtID8gZmllbGQubGFiZWwgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHdyYXBwaW5nPXtpc0NoZWNrQm94R3JvdXBJdGVtID8gdHJ1ZSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdHNlbGVjdD17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogQ2hlY2tCb3gkU2VsZWN0RXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdDwvQ2hlY2tCb3g+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBUZXh0QXJlYSB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRleHRBcmVhVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBncm93aW5nID0gZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMgPyB0cnVlIDogZmFsc2U7XG5cblx0XHRjb25zdCBzaG93RXhjZWVkZWRUZXh0ID0gISFmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMZW5ndGg7XG5cblx0XHQvL3VuZm9ydHVuYXRlbHkgdGhpcyBvbmUgaXMgYSBcImRpZmZlcmVudFwiIGxheW91dERhdGEgdGhhbiB0aGUgb3RoZXJzLCB0aGVyZWZvcmUgdGhlIHJldXNlIGZ1bmN0aW9uIGZyb20gYWJvdmUgY2Fubm90IGJlIHVzZWQgZm9yIHRoZSB0ZXh0QXJlYSB0ZW1wbGF0ZVxuXHRcdGxldCBsYXlvdXREYXRhID0gXCJcIjtcblx0XHRpZiAoZmllbGQuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGxheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxUZXh0QXJlYUV4XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cm93cz17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TGluZXNFZGl0fVxuXHRcdFx0XHRncm93aW5nPXtncm93aW5nfVxuXHRcdFx0XHRncm93aW5nTWF4TGluZXM9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzfVxuXHRcdFx0XHRjb2xzPXszMDB9IC8vQXMgdGhlIGRlZmF1bHQgaXMgMjAsIHRoZSBcImNvbHNcIiBwcm9wZXJ0eSBpcyBjb25maWd1cmVkIHdpdGggYSB2YWx1ZSBvZiAzMDAgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIHRleHRhcmVhIHdpbGwgb2NjdXB5IGFsbCB0aGUgYXZhaWxhYmxlIHNwYWNlLlxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRlZGl0YWJsZT17ZmllbGQuZWRpdGFibGVFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1heExlbmd0aD17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RofVxuXHRcdFx0XHRzaG93RXhjZWVkZWRUZXh0PXtzaG93RXhjZWVkZWRUZXh0fVxuXHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlIGFzIChvRXZlbnQ6IElucHV0QmFzZSRDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogbGF5b3V0RGF0YSxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UZXh0QXJlYUV4PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgUmF0aW5nSW5kaWNhdG9yIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGU6IChmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IHRvb2x0aXAgPSBmaWVsZC5yYXRpbmdJbmRpY2F0b3JUb29sdGlwIHx8IFwie3NhcC5mZS5pMThuPlRfQ09NTU9OX1JBVElOR19JTkRJQ0FUT1JfVElUTEVfTEFCRUx9XCI7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJhdGluZ0luZGljYXRvclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdG1heFZhbHVlPXtmaWVsZC5yYXRpbmdJbmRpY2F0b3JUYXJnZXRWYWx1ZX1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3Rvb2x0aXB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdGljb25TaXplPVwiMS4zNzVyZW1cIlxuXHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiXG5cdFx0XHRcdGVkaXRhYmxlPVwidHJ1ZVwiXG5cdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2UgYXMgKG9FdmVudDogUmF0aW5nSW5kaWNhdG9yJENoYW5nZUV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGxheW91dERhdGE6IEVkaXRTdHlsZS5nZXRMYXlvdXREYXRhKGZpZWxkKVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9SYXRpbmdJbmRpY2F0b3I+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogSGVscHMgdG8gY2FsY3VsYXRlIHRoZSBjb250ZW50IGVkaXQgZnVuY3Rpb25hbGl0eSAvIHRlbXBsYXRpbmcuXG5cdCAqIEluY2x1ZGluZyBhIHdyYXBwZXIgYW4gaGJveCBpbiBjYXNlIG9mIGNvbGxhYm9yYXRpb24gbW9kZSBmaW5hbGx5XG5cdCAqIGl0IGNhbGxzIGludGVybmFsbHkgRWRpdFN0eWxlLmdldFRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0VGVtcGxhdGVXaXRoV3JhcHBlcihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGxldCBjb250ZW50RWRpdDtcblxuXHRcdGlmICgoZmllbGQuZWRpdE1vZGUgPz8gZmllbGQuY29tcHV0ZWRFZGl0TW9kZSkgIT09IEZpZWxkRWRpdE1vZGUuRGlzcGxheSAmJiAhIWZpZWxkLmVkaXRTdHlsZSkge1xuXHRcdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkID8/IGZhbHNlKSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gKFxuXHRcdFx0XHRcdDxDb2xsYWJvcmF0aW9uSEJveCB3aWR0aD1cIjEwMCVcIiBhbGlnbkl0ZW1zPVwiRW5kXCI+XG5cdFx0XHRcdFx0XHR7RWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKX1cblx0XHRcdFx0XHRcdHtFZGl0U3R5bGUuZ2V0Q29sbGFib3JhdGlvbkF2YXRhcihmaWVsZCl9XG5cdFx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uSEJveD5cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnRlbnRFZGl0ID0gRWRpdFN0eWxlLmdldFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udGVudEVkaXQgfHwgXCJcIjtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dE1hc2sgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG9wdGlvbmFsTWFza0lucHV0UnVsZXMgPSBbXTtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oZmllbGQubWV0YVBhdGgsIGZpZWxkLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCB0ZXh0QWxpZ24gPSBnZXRUZXh0QWxpZ25tZW50KFxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdGZpZWxkLmZvcm1hdE9wdGlvbnMsXG5cdFx0XHRmaWVsZC5lZGl0TW9kZUFzT2JqZWN0IGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0KTtcblx0XHRpZiAoZmllbGQubWFzaz8ubWFza1J1bGUpIHtcblx0XHRcdGZvciAoY29uc3QgcnVsZSBvZiBmaWVsZC5tYXNrLm1hc2tSdWxlKSB7XG5cdFx0XHRcdG9wdGlvbmFsTWFza0lucHV0UnVsZXMucHVzaCg8TWFza0lucHV0UnVsZSBtYXNrRm9ybWF0U3ltYm9sPXtydWxlLnN5bWJvbH0gcmVnZXg9e3J1bGUucmVnZXh9IC8+KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1hc2tJbnB1dFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17ZmllbGQuZWRpdFN0eWxlUGxhY2Vob2xkZXJ9XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRtYXNrPXtmaWVsZC5tYXNrPy5tYXNrfVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdHBsYWNlaG9sZGVyU3ltYm9sPXtmaWVsZC5tYXNrPy5wbGFjZWhvbGRlclN5bWJvbH1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlIGFzIChvRXZlbnQ6IE1hc2tJbnB1dCRMaXZlQ2hhbmdlRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17ZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRydWxlczogb3B0aW9uYWxNYXNrSW5wdXRSdWxlcyxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9NYXNrSW5wdXQ+XG5cdFx0KTtcblx0fSxcblxuXHQvKipcblx0ICogRW50cnkgcG9pbnQgZm9yIGZ1cnRoZXIgdGVtcGxhdGluZyBwcm9jZXNzaW5ncy5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldFRlbXBsYXRlOiAoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0XHRsZXQgaW5uZXJGaWVsZENvbnRlbnQ7XG5cdFx0c3dpdGNoIChmaWVsZC5lZGl0U3R5bGUpIHtcblx0XHRcdGNhc2UgXCJDaGVja0JveFwiOlxuXHRcdFx0XHRpZiAoZmllbGQuZm9ybWF0T3B0aW9ucy51c2VSYWRpb0J1dHRvbnNGb3JCb29sZWFuKSB7XG5cdFx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0UmFkaW9CdXR0b25UZW1wbGF0ZShmaWVsZCwgdHJ1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0Q2hlY2tCb3hUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGF0ZVBpY2tlclwiOlxuXHRcdFx0Y2FzZSBcIkRhdGVUaW1lUGlja2VyXCI6XG5cdFx0XHRjYXNlIFwiVGltZVBpY2tlclwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldERhdGVUaW1lUGlja2VyR2VuZXJpYyhmaWVsZCwgZmllbGQuZWRpdFN0eWxlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiSW5wdXRcIjoge1xuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiTWFza2VkXCI6IHtcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0SW5wdXRUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIklucHV0V2l0aFZhbHVlSGVscFwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldElucHV0V2l0aFZhbHVlSGVscFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiUmF0aW5nSW5kaWNhdG9yXCI6XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldFJhdGluZ0luZGljYXRvclRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVGV4dEFyZWFcIjpcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0VGV4dEFyZWFUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIklucHV0TWFza1wiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dE1hc2tUZW1wbGF0ZShmaWVsZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHR9XG5cblx0XHRyZXR1cm4gaW5uZXJGaWVsZENvbnRlbnQ7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRTdHlsZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBcUNBLE1BQU1BLFNBQVMsR0FBRztJQUNqQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLGFBQWFBLENBQUNDLEtBQTJCLEVBQVU7TUFDbEQsSUFBSUMsVUFBVSxHQUFHLEVBQUU7TUFDbkIsSUFBSUQsS0FBSyxDQUFDRSxvQkFBb0IsRUFBRTtRQUMvQkQsVUFBVSxHQUFHRSxJQUFBLENBQUNDLFlBQVk7VUFBQ0MsVUFBVSxFQUFDO1FBQUcsQ0FBRSxDQUFDO01BQzdDO01BQ0EsT0FBT0osVUFBVTtJQUNsQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDSyxzQkFBc0JBLENBQUNOLEtBQTJCLEVBQVU7TUFDM0QsTUFBTU8sa0NBQWtDLEdBQUdDLGlCQUFpQixDQUFDUixLQUFLLENBQUNTLHVCQUF1QixDQUFDO01BQzNGLE1BQU1DLCtCQUErQixHQUFHRixpQkFBaUIsQ0FDeERHLFdBQVcsQ0FBQ0MsMEJBQTBCLENBQUNaLEtBQUssQ0FBQ2EsYUFBYSxFQUFFQyx1QkFBdUIsQ0FBQ0MsZ0NBQWdDLENBQ3JILENBQUM7TUFDRCxNQUFNQyw0QkFBNEIsR0FBR1IsaUJBQWlCLENBQ3JERyxXQUFXLENBQUNDLDBCQUEwQixDQUFDWixLQUFLLENBQUNhLGFBQWEsRUFBRUMsdUJBQXVCLENBQUNHLDZCQUE2QixDQUNsSCxDQUFDO01BRUQsT0FDQ2QsSUFBQSxDQUFDZSxNQUFNO1FBQ04sZ0JBQWEsZ0VBQWdFO1FBQzdFQyxPQUFPLEVBQUVaLGtDQUFtQztRQUM1Q2EsUUFBUSxFQUFFViwrQkFBZ0M7UUFDMUNXLFdBQVcsRUFBQyxRQUFRO1FBQ3BCQyxpQkFBaUIsRUFBQyxRQUFRO1FBQzFCQyxjQUFjLEVBQUMsUUFBUTtRQUN2QkMsZUFBZSxFQUFFUiw0QkFBNkI7UUFDOUNTLEtBQUssRUFBRXpCLEtBQUssQ0FBQzBCLGFBQWEsQ0FBQ0MseUJBQThFO1FBQUFDLFFBQUEsRUFFeEc7VUFDQUMsVUFBVSxFQUFFMUIsSUFBQSxDQUFDMkIsaUJBQWlCO1lBQUNDLGtCQUFrQixFQUFFO1VBQUssQ0FBRTtRQUMzRDtNQUFDLENBQ00sQ0FBQztJQUVYLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0Msd0JBQXdCQSxDQUFDaEMsS0FBMkIsRUFBRWlDLElBQW9ELEVBQVU7TUFDbkgsTUFBTUMsbUJBQW1CLEdBQUdDLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FBaUJwQyxLQUFLLENBQUNxQyxRQUFRLEVBQUVyQyxLQUFLLENBQUNzQyxXQUFXLENBQUM7TUFDN0gsTUFBTUMsU0FBUyxHQUFHQyxnQkFBZ0IsQ0FDakNOLG1CQUFtQixFQUNuQmxDLEtBQUssQ0FBQ3lDLGFBQWEsRUFDbkJ6QyxLQUFLLENBQUMwQyxnQkFDUCxDQUFDO01BRUQsTUFBTUMsd0JBQXdCLEdBQUc7UUFDaEMsY0FBYyxFQUFFLGdDQUFnQztRQUNoREMsRUFBRSxFQUFFNUMsS0FBSyxDQUFDNkMsV0FBVztRQUNyQkMsS0FBSyxFQUFFLE1BQU07UUFDYkMsUUFBUSxFQUFFL0MsS0FBSyxDQUFDZ0Qsa0JBQWtCO1FBQ2xDQyxPQUFPLEVBQUVqRCxLQUFLLENBQUNrRCxpQkFBaUI7UUFDaENDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ29ELGtCQUFrQjtRQUNsQ2IsU0FBUyxFQUFFQSxTQUFTO1FBQ3BCYyxjQUFjLEVBQUVyRCxLQUFLLENBQUNxRCxjQUFvRDtRQUMxRUMsS0FBSyxFQUFFdEQsS0FBSyxDQUFDdUQsc0JBQXNCO1FBQ25DQyxhQUFhLEVBQUV4RCxLQUFLLENBQUN3RCxhQUFhO1FBQ2xDQyxZQUFZLEVBQUV6RCxLQUFLLENBQUN5RCxZQUFZO1FBQ2hDQyxPQUFPLEVBQUV6QixJQUFJLEtBQUssZ0JBQWdCLElBQUlBLElBQUksS0FBSyxZQUFZLEdBQUdqQyxLQUFLLENBQUMyRCxpQkFBaUIsR0FBR0MsU0FBUztRQUNqR0MsT0FBTyxFQUFFNUIsSUFBSSxLQUFLLGdCQUFnQixJQUFJQSxJQUFJLEtBQUssWUFBWSxHQUFHakMsS0FBSyxDQUFDOEQsaUJBQWlCLEdBQUdGLFNBQVM7UUFDakdHLE1BQU0sRUFDTDlCLElBQUksS0FBSyxnQkFBZ0IsR0FDcEJqQyxLQUFLLENBQUMrRCxNQUFNLElBQUkvRCxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUFNLEdBQzNDL0QsS0FBSyxDQUFDMEIsYUFBYSxDQUFDcUMsTUFBNkQ7UUFDdEZDLFVBQVUsRUFBRWhFLEtBQUssQ0FBQzBCLGFBQWEsQ0FBQ3NDLFVBQVU7UUFDMUNDLFdBQVcsRUFBRWhDLElBQUksS0FBSyxZQUFZLEdBQUcsUUFBUSxHQUFHMkIsU0FBUztRQUN6RE0sa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QztNQUN6QyxDQUFDO01BRUQsU0FBU0MsaUJBQWlCQSxDQUFDQyxrQkFBMEIsRUFBVTtRQUM5RCxJQUFJQyxjQUFjO1FBQ2xCLFFBQVFELGtCQUFrQjtVQUN6QixLQUFLLFlBQVk7WUFDaEJDLGNBQWMsR0FDYmxFLElBQUEsQ0FBQ21FLFVBQVU7Y0FBQSxHQUFLM0Isd0JBQXdCO2NBQUFmLFFBQUEsRUFDdEM7Z0JBQUUyQyxVQUFVLEVBQUVwRSxJQUFBLENBQUNxRSxVQUFVO2tCQUFrQmxCLEtBQUssRUFBRXRELEtBQUssQ0FBQ3lFO2dCQUFlLEdBQXpDLFlBQTJDO2NBQUU7WUFBQyxDQUNsRSxDQUNaO1lBQ0Q7VUFDRCxLQUFLLGdCQUFnQjtZQUNwQkosY0FBYyxHQUNibEUsSUFBQSxDQUFDdUUsY0FBYztjQUFBLEdBQUsvQix3QkFBd0I7Y0FBQWYsUUFBQSxFQUMxQztnQkFBRTJDLFVBQVUsRUFBRXBFLElBQUEsQ0FBQ3FFLFVBQVU7a0JBQWtCbEIsS0FBSyxFQUFFdEQsS0FBSyxDQUFDeUU7Z0JBQWUsR0FBekMsWUFBMkM7Y0FBRTtZQUFDLENBQzlELENBQ2hCO1lBQ0Q7VUFDRCxLQUFLLFlBQVk7WUFDaEJKLGNBQWMsR0FDYmxFLElBQUEsQ0FBQ3dFLFVBQVU7Y0FBQSxHQUFLaEMsd0JBQXdCO2NBQUFmLFFBQUEsRUFDdEM7Z0JBQUUyQyxVQUFVLEVBQUVwRSxJQUFBLENBQUNxRSxVQUFVO2tCQUFrQmxCLEtBQUssRUFBRXRELEtBQUssQ0FBQ3lFO2dCQUFlLEdBQXpDLFlBQTJDO2NBQUU7WUFBQyxDQUNsRSxDQUNaO1lBQ0Q7UUFDRjtRQUNBLE9BQU9KLGNBQWM7TUFDdEI7TUFFQSxPQUFPRixpQkFBaUIsQ0FBQ2xDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDMkMsZ0JBQWdCQSxDQUFDNUUsS0FBMkIsRUFBVTtNQUNyRCxNQUFNa0MsbUJBQW1CLEdBQUdDLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FBaUJwQyxLQUFLLENBQUNxQyxRQUFRLEVBQUVyQyxLQUFLLENBQUNzQyxXQUFXLENBQUM7TUFFN0gsTUFBTUMsU0FBUyxHQUFHQyxnQkFBZ0IsQ0FDakNOLG1CQUFtQixFQUNuQmxDLEtBQUssQ0FBQ3lDLGFBQWEsRUFDbkJ6QyxLQUFLLENBQUMwQyxnQkFDUCxDQUFDO01BRUQsT0FDQ3ZDLElBQUEsQ0FBQzBFLEtBQUs7UUFDTCxnQkFBYSxnQ0FBZ0M7UUFDN0NqQyxFQUFFLEVBQUU1QyxLQUFLLENBQUM2QyxXQUFZO1FBQ3RCUyxLQUFLLEVBQUV0RCxLQUFLLENBQUN1RCxzQkFBdUI7UUFDcEN1QixXQUFXLEVBQUU5RSxLQUFLLENBQUMrRSxvQkFBcUI7UUFDeENqQyxLQUFLLEVBQUMsTUFBTTtRQUNaQyxRQUFRLEVBQUUvQyxLQUFLLENBQUNnRCxrQkFBbUI7UUFDbkNnQyxXQUFXLEVBQUVoRixLQUFLLENBQUNpRixpQkFBa0I7UUFDckNoQyxPQUFPLEVBQUVqRCxLQUFLLENBQUNrRCxpQkFBa0I7UUFDakNDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ29ELGtCQUFtQjtRQUNuQ0ksYUFBYSxFQUFFeEQsS0FBSyxDQUFDd0QsYUFBYztRQUNuQ2pCLFNBQVMsRUFBRUEsU0FBVTtRQUNyQk4sSUFBSSxFQUFFakMsS0FBSyxDQUFDa0YsU0FBUyxLQUFLLFFBQVEsR0FBRyxVQUFVLEdBQUd0QixTQUFVO1FBQzVEUCxjQUFjLEVBQUVyRCxLQUFLLENBQUNxRCxjQUFxRDtRQUMzRThCLFNBQVMsRUFBRW5GLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQzJDLGFBQWM7UUFDN0NyQixNQUFNLEVBQUUvRCxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUFrRDtRQUM5RUMsVUFBVSxFQUFFaEUsS0FBSyxDQUFDMEIsYUFBYSxDQUFDc0MsVUFBVztRQUMzQ0Usa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QyxrQkFBd0U7UUFBQXRDLFFBQUEsRUFFL0c7VUFDQTNCLFVBQVUsRUFBRUgsU0FBUyxDQUFDQyxhQUFhLENBQUNDLEtBQUssQ0FBQztVQUMxQ3VFLFVBQVUsRUFBRXBFLElBQUEsQ0FBQ3FFLFVBQVU7WUFBa0JsQixLQUFLLEVBQUV0RCxLQUFLLENBQUN5RTtVQUFlLEdBQXpDLFlBQTJDO1FBQ3hFO01BQUMsQ0FDSyxDQUFDO0lBRVYsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ1ksaUJBQWlCQSxDQUFDckYsS0FBMkIsRUFBVztNQUN2RDtNQUNBO01BQ0E7TUFDQTtNQUNBLE1BQU1zRixxQkFBOEIsR0FDbkN0RixLQUFLLENBQUN1RixRQUFRLENBQUNDLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyx3QkFBd0IsSUFDNURDLDJCQUEyQixDQUFDM0YsS0FBSyxDQUFDdUYsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUNsRHZGLEtBQUssQ0FBQ3VGLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDQyxNQUFNLENBQUNDLHdCQUF3QixDQUFDRixXQUFXLEVBQUVDLE1BQU0sRUFBRUcsOEJBQThCLElBQy9HNUYsS0FBSyxDQUFDdUYsUUFBUSxDQUFDQyxXQUFXLENBQUNDLE1BQU0sQ0FBQ0Msd0JBQXdCLENBQUNGLFdBQVcsRUFBRUMsTUFBTSxFQUFFRyw4QkFBOEIsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsS0FDdkgsSUFBSSxJQUNMN0YsS0FBSyxDQUFDeUMsYUFBYSxDQUFDcUQsY0FBYyxLQUFLLGNBQWMsQ0FBQzs7TUFFeEQ7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBLE1BQU1DLHVCQUF1QixHQUFHL0YsS0FBSyxDQUFDdUYsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRU8sU0FBUyxFQUFFQyxVQUFVLENBQUNDLElBQUksQ0FDN0ZDLGtCQUFrQixJQUNsQixDQUFDQSxrQkFBa0IsQ0FBQ0MsS0FBSyxLQUFLLHdEQUF3RCxJQUNyRkQsa0JBQWtCLENBQUNDLEtBQUssS0FBSyxzREFBc0QsS0FDcEZELGtCQUFrQixDQUFDRSxpQkFBaUIsQ0FBQy9DLEtBQUssS0FBS3RELEtBQUssQ0FBQ3VGLFFBQVEsQ0FBQ2UsSUFDaEUsQ0FBQztNQUNELE9BQ0NoQixxQkFBcUIsSUFDckJTLHVCQUF1QixLQUFLbkMsU0FBUyxJQUNyQyxDQUFDNUQsS0FBSyxDQUFDdUYsUUFBUSxDQUFDQyxXQUFXLEVBQUVDLE1BQU0sRUFBRWMsMkJBQTJCO0lBRWxFLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0Msc0JBQXNCQSxDQUFDeEcsS0FBMkIsRUFBOEI7TUFBQSxJQUE1QnlHLFVBQVUsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTlDLFNBQUEsR0FBQThDLFNBQUEsTUFBRyxLQUFLO01BQ3JFLE1BQU1FLGVBQWUsR0FBRyxHQUFHLEdBQUc1RyxLQUFLLENBQUN1RixRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFTyxTQUFTLEVBQUVhLGNBQWM7TUFFNUYsTUFBTWQsdUJBQXVCLEdBQUcvRixLQUFLLENBQUN1RixRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFTyxTQUFTLEVBQUVDLFVBQVUsQ0FBQ0MsSUFBSSxDQUM3RkMsa0JBQWtCLElBQ2xCLENBQUNBLGtCQUFrQixDQUFDQyxLQUFLLEtBQUssd0RBQXdELElBQ3JGRCxrQkFBa0IsQ0FBQ0MsS0FBSyxLQUFLLHNEQUFzRCxLQUNwRkQsa0JBQWtCLENBQUNFLGlCQUFpQixDQUFDL0MsS0FBSyxLQUFLdEQsS0FBSyxDQUFDdUYsUUFBUSxDQUFDZSxJQUNoRSxDQUFDOztNQUVEO01BQ0EsTUFBTVEsZ0JBQWdCLEdBQUdDLFdBQVcsQ0FBQ2hCLHVCQUF1QixFQUFFaUIsaUJBQTJCLENBQUMsSUFBSUQsV0FBVyxDQUFDLEVBQUUsQ0FBQztNQUU3RyxJQUFJRSx3QkFBd0I7TUFDNUIsTUFBTUMsOEJBQThCLEdBQ25DbEgsS0FBSyxDQUFDYSxhQUFhLENBQUNzRyxnQkFBZ0IsQ0FBQ0MsV0FBVyxDQUFDUixlQUFlLENBQUMsRUFBRVMsVUFBVSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM5QixXQUFXLEVBQUVDLE1BQU0sRUFBRThCLElBQUksRUFBRUMsSUFBSTtNQUN0SCxJQUFJTiw4QkFBOEIsRUFBRTtRQUNuQ0Qsd0JBQXdCLEdBQUdGLFdBQVcsQ0FBQ0csOEJBQThCLENBQUM7TUFDdkUsQ0FBQyxNQUFNO1FBQ05ELHdCQUF3QixHQUFHSCxnQkFBZ0I7TUFDNUM7TUFFQSxJQUFJVyxjQUFxRjtNQUN6RixJQUFJaEIsVUFBVSxFQUFFO1FBQ2ZnQixjQUFjLEdBQUcsQ0FDaEI7VUFBRUMsR0FBRyxFQUFFLElBQUk7VUFBRUMsSUFBSSxFQUFFM0gsS0FBSyxDQUFDNEgsaUJBQWlCLENBQUMsNEJBQTRCO1FBQUUsQ0FBQyxFQUMxRTtVQUFFRixHQUFHLEVBQUUsS0FBSztVQUFFQyxJQUFJLEVBQUUzSCxLQUFLLENBQUM0SCxpQkFBaUIsQ0FBQywyQkFBMkI7UUFBRSxDQUFDLENBQzFFO01BQ0Y7TUFFQSxPQUNDekgsSUFBQSxDQUFDMEgsWUFBWTtRQUNaakYsRUFBRSxFQUFFNUMsS0FBSyxDQUFDNkMsV0FBWTtRQUN0QjRFLGNBQWMsRUFBRUEsY0FBZTtRQUMvQnJFLGtCQUFrQixFQUFFcEQsS0FBSyxDQUFDb0Qsa0JBQW1CO1FBQzdDYyxrQkFBa0IsRUFBRWxFLEtBQUssQ0FBQzBCLGFBQWEsQ0FBQ3dDLGtCQUF3RTtRQUNoSDBDLGVBQWUsRUFBRUEsZUFBNEM7UUFDN0RwRCxhQUFhLEVBQUV4RCxLQUFLLENBQUN3RCxhQUFjO1FBQ25DRixLQUFLLEVBQUV0RCxLQUFLLENBQUN1RCxzQkFBdUI7UUFDcENMLGlCQUFpQixFQUFFbEQsS0FBSyxDQUFDa0QsaUJBQWtCO1FBQzNDNEUsdUJBQXVCLEVBQUViLHdCQUF5QjtRQUNsRGMsc0JBQXNCLEVBQUVqQixnQkFBaUI7UUFDekNrQixnQkFBZ0IsRUFBRWhJLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQ3dGO01BQTZCLENBQ25FLENBQUM7SUFFSixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDQyw2QkFBNkJBLENBQUNsSSxLQUEyQixFQUFVO01BQ2xFLE1BQU1tSSw0QkFBNEIsR0FBR2hHLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FDbEZwQyxLQUFLLENBQUNxQyxRQUFRLEVBQ2RyQyxLQUFLLENBQUNzQyxXQUNQLENBQUM7TUFFRCxNQUFNOEYsUUFBUSxHQUFHQyxXQUFXLENBQUNDLHdCQUF3QixDQUNwRCx1Q0FBdUMsRUFDdkN0SSxLQUFLLENBQUN5QyxhQUFhLENBQUM4Rix5QkFDckIsQ0FBQztNQUNELE1BQU1DLE9BQU8sR0FBRzdILFdBQVcsQ0FBQzhILGVBQWUsQ0FDMUN6SSxLQUFLLENBQUN1RixRQUFRLEVBQ2R2RixLQUFLLENBQUN5QyxhQUFhLENBQUNpRyxXQUFXLEVBQy9CMUksS0FBSyxDQUFDMEMsZ0JBQ1AsQ0FBQztNQUNELE1BQU1pRyxzQkFBc0IsR0FBRyxDQUFDLENBQUMzSSxLQUFLLENBQUN1RixRQUFRLEVBQUVDLFdBQVcsRUFBRW9ELEVBQUUsRUFBRUMsYUFBYTtNQUMvRSxNQUFNQyxhQUFhLEdBQUdDLDRCQUE0QixDQUFDL0ksS0FBSyxFQUFFMkksc0JBQXNCLENBQUM7TUFFakYsTUFBTXBHLFNBQVMsR0FBR0MsZ0JBQWdCLENBQ2pDMkYsNEJBQTRCLEVBQzVCbkksS0FBSyxDQUFDeUMsYUFBYSxFQUNuQnpDLEtBQUssQ0FBQzBDLGdCQUFnQixFQUN0QixJQUNELENBQUM7TUFDRCxNQUFNc0csS0FBSyxHQUFHWCxXQUFXLENBQUNZLGdCQUFnQixDQUFDakosS0FBSyxFQUE4QztRQUM3RmtKLE9BQU8sRUFBRWxKLEtBQUssQ0FBQ3FDO01BQ2hCLENBQUMsQ0FBQztNQUVGLElBQUk4RyxtQkFBbUIsR0FBRyxFQUFFO01BQzVCLElBQUluSixLQUFLLENBQUN1RixRQUFRLENBQUN0RCxJQUFJLEtBQUssWUFBWSxJQUFJMEcsc0JBQXNCLEVBQUU7UUFDbkVRLG1CQUFtQixHQUNsQmhKLElBQUEsQ0FBQ2lKLFFBQVE7VUFDUjlGLEtBQUssRUFBRXRELEtBQUssQ0FBQ3VELHNCQUF1QjtVQUNwQ0osUUFBUSxFQUFFbkQsS0FBSyxDQUFDb0Qsa0JBQW1CO1VBQ25DaUcsSUFBSSxFQUFFckosS0FBSyxDQUFDeUMsYUFBYSxDQUFDNkcsYUFBYztVQUN4Q0MsT0FBTyxFQUFHdkosS0FBSyxDQUFDeUMsYUFBYSxDQUFDK0csWUFBWSxHQUF5QixDQUFDLEdBQUcsSUFBSSxHQUFHNUYsU0FBVTtVQUN4RjZGLGVBQWUsRUFBRXpKLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQytHLFlBQWE7VUFDbEQxRyxLQUFLLEVBQUMsTUFBTTtVQUNaaUIsTUFBTSxFQUFFL0QsS0FBSyxDQUFDMEIsYUFBYSxDQUFDcUMsTUFBNkQ7VUFDekZQLGFBQWEsRUFBRXhELEtBQUssQ0FBQ3dEO1FBQWMsQ0FDbkMsQ0FDRDtNQUNGO01BRUEsSUFBSWtHLGtCQUFrQixHQUFHLEVBQUU7TUFDM0IsSUFBSTFKLEtBQUssQ0FBQ0Usb0JBQW9CLEtBQUssSUFBSSxFQUFFO1FBQ3hDd0osa0JBQWtCLEdBQUd2SixJQUFBLENBQUNDLFlBQVk7VUFBQ0MsVUFBVSxFQUFDO1FBQUcsQ0FBRSxDQUFDO01BQ3JEO01BRUEsSUFBSSxJQUFJLENBQUNnRixpQkFBaUIsQ0FBQ3JGLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtRQUMzQyxPQUNDRyxJQUFBLENBQUN3SixLQUFLO1VBQ0wsZ0JBQWEsZ0NBQWdDO1VBQzdDdkIsUUFBUSxFQUFFQSxRQUFTO1VBQ25CeEYsRUFBRSxFQUFFNUMsS0FBSyxDQUFDNkMsV0FBWTtVQUN0QlMsS0FBSyxFQUFFdEQsS0FBSyxDQUFDdUQsc0JBQXVCO1VBQ3BDdUIsV0FBVyxFQUFFOUUsS0FBSyxDQUFDK0Usb0JBQXFCO1VBQ3hDNkUsVUFBVSxFQUFFNUosS0FBSyxDQUFDNEosVUFBVztVQUM3QkMsUUFBUSxFQUFFN0osS0FBSyxDQUFDNkosUUFBUSxJQUFJN0osS0FBSyxDQUFDOEosZ0JBQWlCO1VBQ25EaEgsS0FBSyxFQUFDLE1BQU07VUFDWkssUUFBUSxFQUFFbkQsS0FBSyxDQUFDb0Qsa0JBQW1CO1VBQ25DMkcsZUFBZSxFQUFFL0osS0FBSyxDQUFDZ0sscUJBQXNCO1VBQzdDeEIsT0FBTyxFQUFFQSxPQUFRO1VBQ2pCTSxhQUFhLEVBQUVBLGFBQWEsS0FBSyxLQUFLLEdBQUdsRixTQUFTLEdBQUdrRixhQUFjO1VBQ25FbUIsU0FBUyxFQUFFakssS0FBSyxDQUFDa0ssV0FBWTtVQUM3QjFHLGFBQWEsRUFBRXhELEtBQUssQ0FBQ3dELGFBQWM7VUFDbkNqQixTQUFTLEVBQUVBLFNBQVU7VUFDckJjLGNBQWMsRUFBRXJELEtBQUssQ0FBQ3FELGNBQXNEO1VBQzVFMkYsS0FBSyxFQUFFQSxLQUFNO1VBQ2JqRixNQUFNLEVBQUUvRCxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUE4QztVQUMxRUMsVUFBVSxFQUFFaEUsS0FBSyxDQUFDMEIsYUFBYSxDQUFDc0MsVUFBVztVQUMzQ0Usa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QyxrQkFBd0U7VUFBQXRDLFFBQUEsRUFFL0c7WUFDQXVJLFdBQVcsRUFBRWhCLG1CQUFtQjtZQUNoQ2xKLFVBQVUsRUFBRXlKLGtCQUFrQjtZQUM5Qm5GLFVBQVUsRUFBRXBFLElBQUEsQ0FBQ3FFLFVBQVU7Y0FBa0JsQixLQUFLLEVBQUV0RCxLQUFLLENBQUN5RTtZQUFlLEdBQXpDLFlBQTJDO1VBQ3hFO1FBQUMsQ0FDSyxDQUFDO01BRVYsQ0FBQyxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMrQixzQkFBc0IsQ0FBQ3hHLEtBQUssQ0FBQztNQUMxQztJQUNELENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NvSyxtQkFBbUJBLENBQUNwSyxLQUEyQixFQUFVO01BQ3hELE1BQU1xSyxtQkFBbUIsR0FBR3JLLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQzZILGdCQUFnQixLQUFLLElBQUk7TUFDekUsT0FDQ25LLElBQUEsQ0FBQ29LLFFBQVE7UUFDUixnQkFBYSxnQ0FBZ0M7UUFDN0MzSCxFQUFFLEVBQUU1QyxLQUFLLENBQUM2QyxXQUFZO1FBQ3RCTSxRQUFRLEVBQUVrSCxtQkFBbUIsR0FBR3JLLEtBQUssQ0FBQ29ELGtCQUFrQixHQUFHUSxTQUFVO1FBQ3JFNEcsUUFBUSxFQUFFeEssS0FBSyxDQUFDdUQsc0JBQXVCO1FBQ3ZDUixRQUFRLEVBQUUvQyxLQUFLLENBQUNnRCxrQkFBbUI7UUFDbkNDLE9BQU8sRUFBRWpELEtBQUssQ0FBQ2tELGlCQUFrQjtRQUNqQ00sYUFBYSxFQUFFeEQsS0FBSyxDQUFDd0QsYUFBYztRQUNuQ21FLElBQUksRUFBRTBDLG1CQUFtQixHQUFHckssS0FBSyxDQUFDZ0osS0FBSyxHQUFHcEYsU0FBVTtRQUNwRDZHLFFBQVEsRUFBRUosbUJBQW1CLEdBQUcsSUFBSSxHQUFHekcsU0FBVTtRQUNqRFAsY0FBYyxFQUFFckQsS0FBSyxDQUFDcUQsY0FBcUQ7UUFDM0VxSCxNQUFNLEVBQUUxSyxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUFpRDtRQUM3RUcsa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QyxrQkFBd0U7UUFBQXRDLFFBQUEsRUFFL0c7VUFBRTJDLFVBQVUsRUFBRXBFLElBQUEsQ0FBQ3FFLFVBQVU7WUFBa0JsQixLQUFLLEVBQUV0RCxLQUFLLENBQUN5RTtVQUFlLEdBQXpDLFlBQTJDO1FBQUU7TUFBQyxDQUNwRSxDQUFDO0lBRWIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ2tHLG1CQUFtQkEsQ0FBQzNLLEtBQTJCLEVBQVU7TUFDeEQsTUFBTXVKLE9BQU8sR0FBR3ZKLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQytHLFlBQVksR0FBRyxJQUFJLEdBQUcsS0FBSztNQUUvRCxNQUFNb0IsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDNUssS0FBSyxDQUFDeUMsYUFBYSxDQUFDMkMsYUFBYTs7TUFFNUQ7TUFDQSxJQUFJbkYsVUFBVSxHQUFHLEVBQUU7TUFDbkIsSUFBSUQsS0FBSyxDQUFDRSxvQkFBb0IsRUFBRTtRQUMvQkQsVUFBVSxHQUFHRSxJQUFBLENBQUNDLFlBQVk7VUFBQ0MsVUFBVSxFQUFDO1FBQUcsQ0FBRSxDQUFDO01BQzdDO01BRUEsT0FDQ0YsSUFBQSxDQUFDMEssVUFBVTtRQUNWLGdCQUFhLGdDQUFnQztRQUM3Q2pJLEVBQUUsRUFBRTVDLEtBQUssQ0FBQzZDLFdBQVk7UUFDdEJTLEtBQUssRUFBRXRELEtBQUssQ0FBQ3VELHNCQUF1QjtRQUNwQ3VCLFdBQVcsRUFBRTlFLEtBQUssQ0FBQytFLG9CQUFxQjtRQUN4QzVCLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ29ELGtCQUFtQjtRQUNuQ2lHLElBQUksRUFBRXJKLEtBQUssQ0FBQ3lDLGFBQWEsQ0FBQzZHLGFBQWM7UUFDeENDLE9BQU8sRUFBRUEsT0FBUTtRQUNqQkUsZUFBZSxFQUFFekosS0FBSyxDQUFDeUMsYUFBYSxDQUFDK0csWUFBYTtRQUNsRHNCLElBQUksRUFBRSxHQUFJLENBQUM7UUFBQTtRQUNYaEksS0FBSyxFQUFDLE1BQU07UUFDWkMsUUFBUSxFQUFFL0MsS0FBSyxDQUFDZ0Qsa0JBQW1CO1FBQ25DQyxPQUFPLEVBQUVqRCxLQUFLLENBQUNrRCxpQkFBa0I7UUFDakNNLGFBQWEsRUFBRXhELEtBQUssQ0FBQ3dELGFBQWM7UUFDbkNILGNBQWMsRUFBRXJELEtBQUssQ0FBQ3FELGNBQXFEO1FBQzNFOEIsU0FBUyxFQUFFbkYsS0FBSyxDQUFDeUMsYUFBYSxDQUFDMkMsYUFBYztRQUM3Q3dGLGdCQUFnQixFQUFFQSxnQkFBaUI7UUFDbkM3RyxNQUFNLEVBQUUvRCxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUFrRDtRQUM5RUMsVUFBVSxFQUFFaEUsS0FBSyxDQUFDMEIsYUFBYSxDQUFDc0MsVUFBVztRQUMzQ0Usa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QyxrQkFBd0U7UUFBQXRDLFFBQUEsRUFFL0c7VUFDQTNCLFVBQVUsRUFBRUEsVUFBVTtVQUN0QnNFLFVBQVUsRUFBRXBFLElBQUEsQ0FBQ3FFLFVBQVU7WUFBa0JsQixLQUFLLEVBQUV0RCxLQUFLLENBQUN5RTtVQUFlLEdBQXpDLFlBQTJDO1FBQ3hFO01BQUMsQ0FDVSxDQUFDO0lBRWYsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ3NHLDBCQUEwQixFQUFHL0ssS0FBMkIsSUFBYTtNQUNwRSxNQUFNZ0wsT0FBTyxHQUFHaEwsS0FBSyxDQUFDaUwsc0JBQXNCLElBQUkscURBQXFEO01BRXJHLE9BQ0M5SyxJQUFBLENBQUMrSyxlQUFlO1FBQ2YsZ0JBQWEsZ0NBQWdDO1FBQzdDdEksRUFBRSxFQUFFNUMsS0FBSyxDQUFDNkMsV0FBWTtRQUN0QnNJLFFBQVEsRUFBRW5MLEtBQUssQ0FBQ29MLDBCQUEyQjtRQUMzQzlILEtBQUssRUFBRXRELEtBQUssQ0FBQ3VELHNCQUF1QjtRQUNwQ3lILE9BQU8sRUFBRUEsT0FBUTtRQUNqQnhILGFBQWEsRUFBRXhELEtBQUssQ0FBQ3dELGFBQWM7UUFDbkM2SCxRQUFRLEVBQUMsVUFBVTtRQUNuQkMsS0FBSyxFQUFDLDBCQUEwQjtRQUNoQ3ZJLFFBQVEsRUFBQyxNQUFNO1FBQ2ZnQixNQUFNLEVBQUUvRCxLQUFLLENBQUMwQixhQUFhLENBQUNxQyxNQUF3RDtRQUFBbkMsUUFBQSxFQUVuRjtVQUNBM0IsVUFBVSxFQUFFSCxTQUFTLENBQUNDLGFBQWEsQ0FBQ0MsS0FBSztRQUMxQztNQUFDLENBQ2UsQ0FBQztJQUVwQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ3VMLHNCQUFzQkEsQ0FBQ3ZMLEtBQTJCLEVBQVU7TUFDM0QsSUFBSW1LLFdBQVc7TUFFZixJQUFJLENBQUNuSyxLQUFLLENBQUM2SixRQUFRLElBQUk3SixLQUFLLENBQUM4SixnQkFBZ0IsTUFBTTBCLGFBQWEsQ0FBQ0MsT0FBTyxJQUFJLENBQUMsQ0FBQ3pMLEtBQUssQ0FBQ2tGLFNBQVMsRUFBRTtRQUM5RixJQUFJbEYsS0FBSyxDQUFDRSxvQkFBb0IsSUFBSSxLQUFLLEVBQUU7VUFDeENpSyxXQUFXLEdBQ1Z1QixLQUFBLENBQUNDLGlCQUFpQjtZQUFDN0ksS0FBSyxFQUFDLE1BQU07WUFBQzhJLFVBQVUsRUFBQyxLQUFLO1lBQUFoSyxRQUFBLEdBQzlDOUIsU0FBUyxDQUFDK0wsV0FBVyxDQUFDN0wsS0FBSyxDQUFDLEVBQzVCRixTQUFTLENBQUNRLHNCQUFzQixDQUFDTixLQUFLLENBQUM7VUFBQSxDQUN0QixDQUNuQjtRQUNGLENBQUMsTUFBTTtVQUNObUssV0FBVyxHQUFHckssU0FBUyxDQUFDK0wsV0FBVyxDQUFDN0wsS0FBSyxDQUFDO1FBQzNDO01BQ0Q7TUFFQSxPQUFPbUssV0FBVyxJQUFJLEVBQUU7SUFDekIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQzJCLG9CQUFvQkEsQ0FBQzlMLEtBQTJCLEVBQVU7TUFDekQsTUFBTStMLHNCQUFzQixHQUFHLEVBQUU7TUFDakMsTUFBTTdKLG1CQUFtQixHQUFHQyxrQkFBa0IsQ0FBQ0MsMkJBQTJCLENBQWlCcEMsS0FBSyxDQUFDcUMsUUFBUSxFQUFFckMsS0FBSyxDQUFDc0MsV0FBVyxDQUFDO01BQzdILE1BQU1DLFNBQVMsR0FBR0MsZ0JBQWdCLENBQ2pDTixtQkFBbUIsRUFDbkJsQyxLQUFLLENBQUN5QyxhQUFhLEVBQ25CekMsS0FBSyxDQUFDMEMsZ0JBQ1AsQ0FBQztNQUNELElBQUkxQyxLQUFLLENBQUNnTSxJQUFJLEVBQUVDLFFBQVEsRUFBRTtRQUN6QixLQUFLLE1BQU1DLElBQUksSUFBSWxNLEtBQUssQ0FBQ2dNLElBQUksQ0FBQ0MsUUFBUSxFQUFFO1VBQ3ZDRixzQkFBc0IsQ0FBQ0ksSUFBSSxDQUFDaE0sSUFBQSxDQUFDaU0sYUFBYTtZQUFDQyxnQkFBZ0IsRUFBRUgsSUFBSSxDQUFDSSxNQUFPO1lBQUNDLEtBQUssRUFBRUwsSUFBSSxDQUFDSztVQUFNLENBQUUsQ0FBQyxDQUFDO1FBQ2pHO01BQ0Q7TUFFQSxPQUNDcE0sSUFBQSxDQUFDcU0sU0FBUztRQUNULGdCQUFhLGdDQUFnQztRQUM3QzVKLEVBQUUsRUFBRTVDLEtBQUssQ0FBQzZDLFdBQVk7UUFDdEJTLEtBQUssRUFBRXRELEtBQUssQ0FBQ3VELHNCQUF1QjtRQUNwQ3VCLFdBQVcsRUFBRTlFLEtBQUssQ0FBQytFLG9CQUFxQjtRQUN4Q2pDLEtBQUssRUFBQyxNQUFNO1FBQ1pDLFFBQVEsRUFBRS9DLEtBQUssQ0FBQ2dELGtCQUFtQjtRQUNuQ0ssY0FBYyxFQUFFckQsS0FBSyxDQUFDcUQsY0FBcUQ7UUFDM0UySSxJQUFJLEVBQUVoTSxLQUFLLENBQUNnTSxJQUFJLEVBQUVBLElBQUs7UUFDdkIvSSxPQUFPLEVBQUVqRCxLQUFLLENBQUNrRCxpQkFBa0I7UUFDakNDLFFBQVEsRUFBRW5ELEtBQUssQ0FBQ29ELGtCQUFtQjtRQUNuQ0ksYUFBYSxFQUFFeEQsS0FBSyxDQUFDd0QsYUFBYztRQUNuQ2pCLFNBQVMsRUFBRUEsU0FBVTtRQUNyQmtLLGlCQUFpQixFQUFFek0sS0FBSyxDQUFDZ00sSUFBSSxFQUFFUyxpQkFBa0I7UUFDakR6SSxVQUFVLEVBQUVoRSxLQUFLLENBQUMwQixhQUFhLENBQUNzQyxVQUEwRDtRQUMxRkUsa0JBQWtCLEVBQUVsRSxLQUFLLENBQUMwQixhQUFhLENBQUN3QyxrQkFBd0U7UUFBQXRDLFFBQUEsRUFFL0c7VUFDQThLLEtBQUssRUFBRVgsc0JBQXNCO1VBQzdCeEgsVUFBVSxFQUFFcEUsSUFBQSxDQUFDcUUsVUFBVTtZQUFrQmxCLEtBQUssRUFBRXRELEtBQUssQ0FBQ3lFO1VBQWUsR0FBekMsWUFBMkM7UUFDeEU7TUFBQyxDQUNTLENBQUM7SUFFZCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDb0gsV0FBVyxFQUFHN0wsS0FBMkIsSUFBeUI7TUFDakUsSUFBSTJNLGlCQUFpQjtNQUNyQixRQUFRM00sS0FBSyxDQUFDa0YsU0FBUztRQUN0QixLQUFLLFVBQVU7VUFDZCxJQUFJbEYsS0FBSyxDQUFDeUMsYUFBYSxDQUFDbUsseUJBQXlCLEVBQUU7WUFDbERELGlCQUFpQixHQUFHN00sU0FBUyxDQUFDMEcsc0JBQXNCLENBQUN4RyxLQUFLLEVBQUUsSUFBSSxDQUFDO1VBQ2xFLENBQUMsTUFBTTtZQUNOMk0saUJBQWlCLEdBQUc3TSxTQUFTLENBQUNzSyxtQkFBbUIsQ0FBQ3BLLEtBQUssQ0FBQztVQUN6RDtVQUNBO1FBQ0QsS0FBSyxZQUFZO1FBQ2pCLEtBQUssZ0JBQWdCO1FBQ3JCLEtBQUssWUFBWTtVQUFFO1lBQ2xCMk0saUJBQWlCLEdBQUc3TSxTQUFTLENBQUNrQyx3QkFBd0IsQ0FBQ2hDLEtBQUssRUFBRUEsS0FBSyxDQUFDa0YsU0FBUyxDQUFDO1lBQzlFO1VBQ0Q7UUFDQSxLQUFLLE9BQU87VUFBRTtZQUNieUgsaUJBQWlCLEdBQUc3TSxTQUFTLENBQUM4RSxnQkFBZ0IsQ0FBQzVFLEtBQUssQ0FBQztZQUNyRDtVQUNEO1FBQ0EsS0FBSyxRQUFRO1VBQUU7WUFDZDJNLGlCQUFpQixHQUFHN00sU0FBUyxDQUFDOEUsZ0JBQWdCLENBQUM1RSxLQUFLLENBQUM7WUFDckQ7VUFDRDtRQUNBLEtBQUssb0JBQW9CO1VBQUU7WUFDMUIyTSxpQkFBaUIsR0FBRzdNLFNBQVMsQ0FBQ29JLDZCQUE2QixDQUFDbEksS0FBSyxDQUFDO1lBQ2xFO1VBQ0Q7UUFDQSxLQUFLLGlCQUFpQjtVQUNyQjJNLGlCQUFpQixHQUFHN00sU0FBUyxDQUFDaUwsMEJBQTBCLENBQUMvSyxLQUFLLENBQUM7VUFDL0Q7UUFDRCxLQUFLLFVBQVU7VUFDZDJNLGlCQUFpQixHQUFHN00sU0FBUyxDQUFDNkssbUJBQW1CLENBQUMzSyxLQUFLLENBQUM7VUFDeEQ7UUFDRCxLQUFLLFdBQVc7VUFDZjJNLGlCQUFpQixHQUFHN00sU0FBUyxDQUFDZ00sb0JBQW9CLENBQUM5TCxLQUFLLENBQUM7VUFDekQ7UUFDRDtNQUNEO01BRUEsT0FBTzJNLGlCQUFpQjtJQUN6QjtFQUNELENBQUM7RUFBQyxPQUVhN00sU0FBUztBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
485
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFZGl0U3R5bGUiLCJnZXRMYXlvdXREYXRhIiwiZmllbGQiLCJsYXlvdXREYXRhIiwiY29sbGFib3JhdGlvbkVuYWJsZWQiLCJfanN4IiwiRmxleEl0ZW1EYXRhIiwiZ3Jvd0ZhY3RvciIsImdldENvbGxhYm9yYXRpb25BdmF0YXIiLCJDb2xsYWJvcmF0aXZlRHJhZnRIYW5kbGVyIiwibWV0YVBhdGgiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZGF0YU1vZGVsUGF0aCIsImNvbnRleHRQYXRoIiwiZ2V0UGF0aCIsInNob3dBdmF0YXIiLCJnZXREYXRlVGltZVBpY2tlckdlbmVyaWMiLCJ0eXBlIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsInRleHRBbGlnbiIsImdldFRleHRBbGlnbm1lbnQiLCJmb3JtYXRPcHRpb25zIiwiZWRpdE1vZGVBc09iamVjdCIsImRhdGVUaW1lUGlja2VyUHJvcGVydGllcyIsImlkIiwiZWRpdFN0eWxlSWQiLCJ3aWR0aCIsImVkaXRhYmxlIiwiZWRpdGFibGVFeHByZXNzaW9uIiwiZW5hYmxlZCIsImVuYWJsZWRFeHByZXNzaW9uIiwicmVxdWlyZWQiLCJyZXF1aXJlZEV4cHJlc3Npb24iLCJhcmlhTGFiZWxsZWRCeSIsInZhbHVlIiwidmFsdWVCaW5kaW5nRXhwcmVzc2lvbiIsImZpZWxkR3JvdXBJZHMiLCJzaG93VGltZXpvbmUiLCJtaW5EYXRlIiwibWluRGF0ZUV4cHJlc3Npb24iLCJ1bmRlZmluZWQiLCJtYXhEYXRlIiwibWF4RGF0ZUV4cHJlc3Npb24iLCJjaGFuZ2UiLCJldmVudEhhbmRsZXJzIiwibGl2ZUNoYW5nZSIsInZhbHVlRm9ybWF0IiwidmFsaWRhdGVGaWVsZEdyb3VwIiwiZ2V0RGF0ZVRpbWVQaWNrZXIiLCJkYXRlVGltZVBpY2tlclR5cGUiLCJkYXRlVGltZVBpY2tlciIsIkRhdGVQaWNrZXIiLCJjaGlsZHJlbiIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiZGF0YVNvdXJjZVBhdGgiLCJEYXRlVGltZVBpY2tlciIsIlRpbWVQaWNrZXIiLCJnZXRJbnB1dFRlbXBsYXRlIiwiSW5wdXQiLCJwbGFjZWhvbGRlciIsImVkaXRTdHlsZVBsYWNlaG9sZGVyIiwiZmllbGRXaWR0aCIsImRlc2NyaXB0aW9uIiwic3RhdGljRGVzY3JpcHRpb24iLCJlZGl0U3R5bGUiLCJtYXhMZW5ndGgiLCJ0ZXh0TWF4TGVuZ3RoIiwic2hvd0FzUmFkaW9CdXR0b24iLCJyYWRpb0J1dHRvbkNvbmZpZ3VyZWQiLCJwcm9wZXJ0eSIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5IiwidmFsdWVPZiIsImZpZWxkRWRpdFN0eWxlIiwidmFsdWVMaXN0UGFyYW1ldGVySW5PdXQiLCJWYWx1ZUxpc3QiLCJQYXJhbWV0ZXJzIiwiZmluZCIsInZhbHVlTGlzdFBhcmFtZXRlciIsIiRUeXBlIiwiTG9jYWxEYXRhUHJvcGVydHkiLCJuYW1lIiwiVmFsdWVMaXN0UmVsZXZhbnRRdWFsaWZpZXJzIiwiZ2V0UmFkaW9CdXR0b25UZW1wbGF0ZSIsImZvckJvb2xlYW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmaXhlZFZhbHVlc1BhdGgiLCJDb2xsZWN0aW9uUGF0aCIsInZhbHVlTGlzdEtleVBhdGgiLCJwYXRoSW5Nb2RlbCIsIlZhbHVlTGlzdFByb3BlcnR5IiwidmFsdWVMaXN0RGVzY3JpcHRpb25QYXRoIiwidmFsdWVIZWxwS2V5VGV4dEFubm90YXRpb25QYXRoIiwidGFyZ2V0RW50aXR5VHlwZSIsInJlc29sdmVQYXRoIiwiZW50aXR5VHlwZSIsImtleXMiLCJUZXh0IiwicGF0aCIsInBvc3NpYmxlVmFsdWVzIiwia2V5IiwidGV4dCIsImdldFRyYW5zbGF0ZWRUZXh0IiwiUmFkaW9CdXR0b25zIiwicmFkaW9CdXR0b25UZXh0UHJvcGVydHkiLCJyYWRpb0J1dHRvbktleVByb3BlcnR5IiwiaG9yaXpvbnRhbExheW91dCIsInJhZGlvQnV0dG9uc0hvcml6b250YWxMYXlvdXQiLCJnZXRJbnB1dFdpdGhWYWx1ZUhlbHBUZW1wbGF0ZSIsImRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgiLCJkZWxlZ2F0ZSIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUZpZWxkQmFzZURlbGVnYXRlIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsImRpc3BsYXkiLCJVSUZvcm1hdHRlciIsImdldEZpZWxkRGlzcGxheSIsImRpc3BsYXlNb2RlIiwiaGFzTXVsdGlsaW5lQW5ub3RhdGlvbiIsIlVJIiwiTXVsdGlMaW5lVGV4dCIsIm11bHRpcGxlTGluZXMiLCJnZXRNdWx0aXBsZUxpbmVzRm9yRGF0YUZpZWxkIiwibGFiZWwiLCJjb21wdXRlTGFiZWxUZXh0IiwiY29udGV4dCIsIm9wdGlvbmFsQ29udGVudEVkaXQiLCJUZXh0QXJlYSIsInJvd3MiLCJ0ZXh0TGluZXNFZGl0IiwiZ3Jvd2luZyIsInRleHRNYXhMaW5lcyIsImdyb3dpbmdNYXhMaW5lcyIsIm9wdGlvbmFsTGF5b3V0RGF0YSIsIkZpZWxkIiwidmFsdWVTdGF0ZSIsImVkaXRNb2RlIiwiY29tcHV0ZWRFZGl0TW9kZSIsImFkZGl0aW9uYWxWYWx1ZSIsInRleHRCaW5kaW5nRXhwcmVzc2lvbiIsInZhbHVlSGVscCIsInZhbHVlSGVscElkIiwiY29udGVudEVkaXQiLCJnZXRDaGVja0JveFRlbXBsYXRlIiwiaXNDaGVja0JveEdyb3VwSXRlbSIsImlzRmllbGRHcm91cEl0ZW0iLCJDaGVja0JveCIsInNlbGVjdGVkIiwid3JhcHBpbmciLCJzZWxlY3QiLCJnZXRUZXh0QXJlYVRlbXBsYXRlIiwic2hvd0V4Y2VlZGVkVGV4dCIsIlRleHRBcmVhRXgiLCJjb2xzIiwiZ2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGUiLCJ0b29sdGlwIiwicmF0aW5nSW5kaWNhdG9yVG9vbHRpcCIsIlJhdGluZ0luZGljYXRvciIsIm1heFZhbHVlIiwicmF0aW5nSW5kaWNhdG9yVGFyZ2V0VmFsdWUiLCJpY29uU2l6ZSIsImNsYXNzIiwiZ2V0VGVtcGxhdGVXaXRoV3JhcHBlciIsIkZpZWxkRWRpdE1vZGUiLCJEaXNwbGF5IiwiX2pzeHMiLCJDb2xsYWJvcmF0aW9uSEJveCIsImFsaWduSXRlbXMiLCJnZXRUZW1wbGF0ZSIsImdldElucHV0TWFza1RlbXBsYXRlIiwib3B0aW9uYWxNYXNrSW5wdXRSdWxlcyIsIm1hc2siLCJtYXNrUnVsZSIsInJ1bGUiLCJwdXNoIiwiTWFza0lucHV0UnVsZSIsIm1hc2tGb3JtYXRTeW1ib2wiLCJzeW1ib2wiLCJyZWdleCIsIk1hc2tJbnB1dCIsInBsYWNlaG9sZGVyU3ltYm9sIiwicnVsZXMiLCJpbm5lckZpZWxkQ29udGVudCIsInVzZVJhZGlvQnV0dG9uc0ZvckJvb2xlYW4iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVkaXRTdHlsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEYXRhRmllbGRUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGhhc1ZhbHVlSGVscFdpdGhGaXhlZFZhbHVlcyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uSEJveCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9Db2xsYWJvcmF0aW9uSEJveFwiO1xuaW1wb3J0IFJhZGlvQnV0dG9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9SYWRpb0J1dHRvbnNcIjtcbmltcG9ydCB7IGdldE11bHRpcGxlTGluZXNGb3JEYXRhRmllbGQsIGdldFRleHRBbGlnbm1lbnQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCB0eXBlIHsgRmllbGRCbG9ja1Byb3BlcnRpZXMgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9maWVsZC9GaWVsZFN0cnVjdHVyZUhlbHBlclwiO1xuaW1wb3J0IENoZWNrQm94IGZyb20gXCJzYXAvbS9DaGVja0JveFwiO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSBcInNhcC9tL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBEYXRlVGltZVBpY2tlciBmcm9tIFwic2FwL20vRGF0ZVRpbWVQaWNrZXJcIjtcbmltcG9ydCBGbGV4SXRlbURhdGEgZnJvbSBcInNhcC9tL0ZsZXhJdGVtRGF0YVwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IHR5cGUgeyBNYXNrSW5wdXQkTGl2ZUNoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9tL01hc2tJbnB1dFwiO1xuaW1wb3J0IE1hc2tJbnB1dCBmcm9tIFwic2FwL20vTWFza0lucHV0XCI7XG5pbXBvcnQgTWFza0lucHV0UnVsZSBmcm9tIFwic2FwL20vTWFza0lucHV0UnVsZVwiO1xuaW1wb3J0IFJhdGluZ0luZGljYXRvciBmcm9tIFwic2FwL20vUmF0aW5nSW5kaWNhdG9yXCI7XG5pbXBvcnQgVGV4dEFyZWEgZnJvbSBcInNhcC9tL1RleHRBcmVhXCI7XG5pbXBvcnQgVGltZVBpY2tlciBmcm9tIFwic2FwL20vVGltZVBpY2tlclwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIENvbnRyb2wsIENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQsIGRlZmF1bHQgYXMgQ29udHJvbDEgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IEZpZWxkRWRpdE1vZGUgZnJvbSBcInNhcC91aS9tZGMvZW51bXMvRmllbGRFZGl0TW9kZVwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IENvbGxhYm9yYXRpdmVEcmFmdEhhbmRsZXIgZnJvbSBcIi4uLy4uL0NvbGxhYm9yYXRpdmVEcmFmdEhhbmRsZXJcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwiLi4vLi4vZmllbGQvRmllbGRIZWxwZXJcIjtcbmltcG9ydCBUZXh0QXJlYUV4IGZyb20gXCIuLi8uLi9maWVsZC9UZXh0QXJlYUV4XCI7XG5cbmNvbnN0IEVkaXRTdHlsZSA9IHtcblx0LyoqXG5cdCAqIEFuIGludGVybmFsIGhlbHBlciB0byByZXRyaWV2ZSB0aGUgcmV1c2VkIGxheW91dCBkYXRhLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0TGF5b3V0RGF0YShmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcge1xuXHRcdGxldCBsYXlvdXREYXRhID0gXCJcIjtcblx0XHRpZiAoZmllbGQuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGxheW91dERhdGEgPSA8RmxleEl0ZW1EYXRhIGdyb3dGYWN0b3I9XCI5XCIgLz47XG5cdFx0fVxuXHRcdHJldHVybiBsYXlvdXREYXRhO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIGF2YXRhciBjb250cm9sIG5leHQgYSBmaWVsZCBsb2NrZWQuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBhdmF0YXJcblx0ICovXG5cdGdldENvbGxhYm9yYXRpb25BdmF0YXIoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PENvbGxhYm9yYXRpdmVEcmFmdEhhbmRsZXJcblx0XHRcdFx0bWV0YVBhdGg9e2dldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZmllbGQuZGF0YU1vZGVsUGF0aCl9XG5cdFx0XHRcdGNvbnRleHRQYXRoPXtmaWVsZC5jb250ZXh0UGF0aC5nZXRQYXRoKCl9XG5cdFx0XHRcdHNob3dBdmF0YXI9e3RydWV9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIHRlbXBsYXRlIGZvciBvbmUgb2YgdGhlIHBpY2tlcnMgcmVmZXJlbmNlIGluIHRoZSB0eXBlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEBwYXJhbSB0eXBlIFJlZmVyZW5jZSB0byBvbmUgb2YgdGhlIGVkaXQgc3R5bGUgcGlja2VyIHR5cGVzXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0RGF0ZVRpbWVQaWNrZXJHZW5lcmljKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcywgdHlwZTogXCJEYXRlUGlja2VyXCIgfCBcIkRhdGVUaW1lUGlja2VyXCIgfCBcIlRpbWVQaWNrZXJcIik6IHN0cmluZyB7XG5cdFx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0UGF0aCA9IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RGF0YUZpZWxkVHlwZXM+KGZpZWxkLm1ldGFQYXRoLCBmaWVsZC5jb250ZXh0UGF0aCk7XG5cdFx0Y29uc3QgdGV4dEFsaWduID0gZ2V0VGV4dEFsaWdubWVudChcblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLFxuXHRcdFx0ZmllbGQuZWRpdE1vZGVBc09iamVjdCBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCk7XG5cblx0XHRjb25zdCBkYXRlVGltZVBpY2tlclByb3BlcnRpZXMgPSB7XG5cdFx0XHRcImNvcmU6cmVxdWlyZVwiOiBcIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiLFxuXHRcdFx0aWQ6IGZpZWxkLmVkaXRTdHlsZUlkLFxuXHRcdFx0d2lkdGg6IFwiMTAwJVwiLFxuXHRcdFx0ZWRpdGFibGU6IGZpZWxkLmVkaXRhYmxlRXhwcmVzc2lvbixcblx0XHRcdGVuYWJsZWQ6IGZpZWxkLmVuYWJsZWRFeHByZXNzaW9uLFxuXHRcdFx0cmVxdWlyZWQ6IGZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbixcblx0XHRcdHRleHRBbGlnbjogdGV4dEFsaWduLFxuXHRcdFx0YXJpYUxhYmVsbGVkQnk6IGZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz4sXG5cdFx0XHR2YWx1ZTogZmllbGQudmFsdWVCaW5kaW5nRXhwcmVzc2lvbixcblx0XHRcdGZpZWxkR3JvdXBJZHM6IGZpZWxkLmZpZWxkR3JvdXBJZHMsXG5cdFx0XHRzaG93VGltZXpvbmU6IGZpZWxkLnNob3dUaW1lem9uZSxcblx0XHRcdG1pbkRhdGU6IHR5cGUgPT09IFwiRGF0ZVRpbWVQaWNrZXJcIiB8fCB0eXBlID09PSBcIkRhdGVQaWNrZXJcIiA/IGZpZWxkLm1pbkRhdGVFeHByZXNzaW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0bWF4RGF0ZTogdHlwZSA9PT0gXCJEYXRlVGltZVBpY2tlclwiIHx8IHR5cGUgPT09IFwiRGF0ZVBpY2tlclwiID8gZmllbGQubWF4RGF0ZUV4cHJlc3Npb24gOiB1bmRlZmluZWQsXG5cdFx0XHRjaGFuZ2U6IHR5cGUgPT09IFwiRGF0ZVRpbWVQaWNrZXJcIiA/IGZpZWxkLmNoYW5nZSB8fCBmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZSA6IGZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlLFxuXHRcdFx0bGl2ZUNoYW5nZTogZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlLFxuXHRcdFx0dmFsdWVGb3JtYXQ6IHR5cGUgPT09IFwiRGF0ZVBpY2tlclwiID8gXCJtZWRpdW1cIiA6IHVuZGVmaW5lZCxcblx0XHRcdHZhbGlkYXRlRmllbGRHcm91cDogZmllbGQuZXZlbnRIYW5kbGVycy52YWxpZGF0ZUZpZWxkR3JvdXAgYXMgKG9FdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCkgPT4gdm9pZFxuXHRcdH07XG5cblx0XHRmdW5jdGlvbiBnZXREYXRlVGltZVBpY2tlcihkYXRlVGltZVBpY2tlclR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0XHRsZXQgZGF0ZVRpbWVQaWNrZXI7XG5cdFx0XHRzd2l0Y2ggKGRhdGVUaW1lUGlja2VyVHlwZSkge1xuXHRcdFx0XHRjYXNlIFwiRGF0ZVBpY2tlclwiOlxuXHRcdFx0XHRcdGRhdGVUaW1lUGlja2VyID0gKFxuXHRcdFx0XHRcdFx0PERhdGVQaWNrZXIgey4uLmRhdGVUaW1lUGlja2VyUHJvcGVydGllc30+XG5cdFx0XHRcdFx0XHRcdHt7IGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+IH19XG5cdFx0XHRcdFx0XHQ8L0RhdGVQaWNrZXI+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBcIkRhdGVUaW1lUGlja2VyXCI6XG5cdFx0XHRcdFx0ZGF0ZVRpbWVQaWNrZXIgPSAoXG5cdFx0XHRcdFx0XHQ8RGF0ZVRpbWVQaWNrZXIgey4uLmRhdGVUaW1lUGlja2VyUHJvcGVydGllc30+XG5cdFx0XHRcdFx0XHRcdHt7IGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+IH19XG5cdFx0XHRcdFx0XHQ8L0RhdGVUaW1lUGlja2VyPlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJUaW1lUGlja2VyXCI6XG5cdFx0XHRcdFx0ZGF0ZVRpbWVQaWNrZXIgPSAoXG5cdFx0XHRcdFx0XHQ8VGltZVBpY2tlciB7Li4uZGF0ZVRpbWVQaWNrZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0XHRcdFx0e3sgY3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwic291cmNlUGF0aFwiIHZhbHVlPXtmaWVsZC5kYXRhU291cmNlUGF0aH0gLz4gfX1cblx0XHRcdFx0XHRcdDwvVGltZVBpY2tlcj5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGRhdGVUaW1lUGlja2VyO1xuXHRcdH1cblxuXHRcdHJldHVybiBnZXREYXRlVGltZVBpY2tlcih0eXBlKTtcblx0fSxcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBJbnB1dCB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldElucHV0VGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oZmllbGQubWV0YVBhdGgsIGZpZWxkLmNvbnRleHRQYXRoKTtcblxuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxJbnB1dFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17ZmllbGQuZWRpdFN0eWxlUGxhY2Vob2xkZXJ9XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdGZpZWxkV2lkdGg9e1wiNzAlXCJ9XG5cdFx0XHRcdGVkaXRhYmxlPXtmaWVsZC5lZGl0YWJsZUV4cHJlc3Npb259XG5cdFx0XHRcdGRlc2NyaXB0aW9uPXtmaWVsZC5zdGF0aWNEZXNjcmlwdGlvbn1cblx0XHRcdFx0ZW5hYmxlZD17ZmllbGQuZW5hYmxlZEV4cHJlc3Npb259XG5cdFx0XHRcdHJlcXVpcmVkPXtmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb259XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdHRleHRBbGlnbj17dGV4dEFsaWdufVxuXHRcdFx0XHR0eXBlPXtmaWVsZC5lZGl0U3R5bGUgPT09IFwiTWFza2VkXCIgPyBcIlBhc3N3b3JkXCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRtYXhMZW5ndGg9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExlbmd0aH1cblx0XHRcdFx0Y2hhbmdlPXtmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZX1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogRWRpdFN0eWxlLmdldExheW91dERhdGEoZmllbGQpLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L0lucHV0PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgaWYgYSBmaWVsZCBzaGFsbCBiZSB0ZW1wbGF0ZWQgYXMgYSByYWRpbyBidXR0b24gZ3JvdXAuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgVGhlIGV2YWx1YXRpb24gcmVzdWx0XG5cdCAqL1xuXHRzaG93QXNSYWRpb0J1dHRvbihmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBib29sZWFuIHtcblx0XHQvLyBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byByZW5kZXIgdGhlIGZpZWxkIGFzIGEgcmFkaW8gYnV0dG9uIGdyb3VwXG5cdFx0Ly8gVE9ETzogUmVtb3ZlIHRoZSBuZXh0IHR3byBsaW5lcyBvbmNlIFVYIHVwZGF0ZWQgdGhlIHZvY2FidWxhcnkgbW9kdWxlIGluY2x1ZGluZyB0aGUgbmV3IGV4cGVyaW1lbnRhbCBhbm5vdGF0aW9uXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCByYWRpb0J1dHRvbkNvbmZpZ3VyZWQ6IGJvb2xlYW4gPVxuXHRcdFx0ZmllbGQucHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzICYmXG5cdFx0XHRoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMoZmllbGQucHJvcGVydHkpID09PSB0cnVlICYmXG5cdFx0XHQoKGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5ICYmXG5cdFx0XHRcdGZpZWxkLnByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0U2hvd1ZhbHVlc0ltbWVkaWF0ZWx5LnZhbHVlT2YoKSA9PT1cblx0XHRcdFx0XHR0cnVlKSB8fFxuXHRcdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLmZpZWxkRWRpdFN0eWxlID09PSBcIlJhZGlvQnV0dG9uc1wiKTtcblxuXHRcdC8vIEV4Y2x1ZGUgbm90IHN1cHBvcnRlZCBjYXNlc1xuXHRcdC8vIC0gVmFsdWVMaXN0UGFyYW1hdGVySW5PdXQgLyAuLi5PdXQgbXVzdCBub3QgYmUgZW1wdHlcblx0XHQvLyAtIFZhbHVlTGlzdFJlbGV2YW50UXVhbGlmaWVycyBhbm5vdGF0aW9uIG11c3Qgbm90IGJlIHVzZWRcblx0XHQvLyBGdXJ0aGVyIGNhc2VzIG1heSBub3QgbWFrZSBzZW5zZSB3aXRoIHJhZGlvIGJ1dHRvbnMgYnV0IHdlIGRvIG5vdCBleHBsaWNpdGx5IGV4Y2x1ZGUgdGhlbSBidXQgbWVudGlvbiB0aGlzIGluIGRvY3VtZW50YXRpb24uXG5cdFx0Ly8gQ2hlY2sgZG9jdW1lbnRhdGlvbiwgZGlzY3VzcyBhbmQgZGVjaWRlIGJlZm9yZSBhZGRpbmcgZnVydGhlciByZXN0cmljdGlvbnMgaGVyZS5cblx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCA9IGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LlBhcmFtZXRlcnMuZmluZChcblx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIpID0+XG5cdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkudmFsdWUgPT09IGZpZWxkLnByb3BlcnR5Lm5hbWVcblx0XHQpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRyYWRpb0J1dHRvbkNvbmZpZ3VyZWQgJiZcblx0XHRcdHZhbHVlTGlzdFBhcmFtZXRlckluT3V0ICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdCFmaWVsZC5wcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RSZWxldmFudFF1YWxpZmllcnNcblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIFJhZGlvQnV0dG9uIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBmb3JCb29sZWFuXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgcmFkaW8gYnV0dG9uIGRlZmluaXRpb25cblx0ICovXG5cdGdldFJhZGlvQnV0dG9uVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzLCBmb3JCb29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGZpeGVkVmFsdWVzUGF0aCA9IFwiL1wiICsgZmllbGQucHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdD8uQ29sbGVjdGlvblBhdGg7XG5cblx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCA9IGZpZWxkLnByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3Q/LlBhcmFtZXRlcnMuZmluZChcblx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIpID0+XG5cdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHR2YWx1ZUxpc3RQYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkudmFsdWUgPT09IGZpZWxkLnByb3BlcnR5Lm5hbWVcblx0XHQpO1xuXG5cdFx0Ly8gd2Uga25vdyB0aGF0IGEgdmFsdWVMaXN0UHJvcGVydHkgZXhpc3RzIGJlY2F1c2Ugd2UgY2hlY2sgdGhpcyBhbHJlYWR5IGluIHNob3dBc1JhZGlvQnV0dG9uXG5cdFx0Y29uc3QgdmFsdWVMaXN0S2V5UGF0aCA9IHBhdGhJbk1vZGVsKHZhbHVlTGlzdFBhcmFtZXRlckluT3V0Py5WYWx1ZUxpc3RQcm9wZXJ0eSBhcyBzdHJpbmcpID8/IHBhdGhJbk1vZGVsKFwiXCIpO1xuXG5cdFx0bGV0IHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aDtcblx0XHRjb25zdCB2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGggPVxuXHRcdFx0ZmllbGQuZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKGZpeGVkVmFsdWVzUGF0aCk/LmVudGl0eVR5cGUua2V5c1swXS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0Py5wYXRoO1xuXHRcdGlmICh2YWx1ZUhlbHBLZXlUZXh0QW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHBhdGhJbk1vZGVsKHZhbHVlSGVscEtleVRleHRBbm5vdGF0aW9uUGF0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbHVlTGlzdERlc2NyaXB0aW9uUGF0aCA9IHZhbHVlTGlzdEtleVBhdGg7XG5cdFx0fVxuXG5cdFx0bGV0IHBvc3NpYmxlVmFsdWVzOiB7IGtleTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw7IHRleHQ6IHN0cmluZyB9W10gfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGZvckJvb2xlYW4pIHtcblx0XHRcdHBvc3NpYmxlVmFsdWVzID0gW1xuXHRcdFx0XHR7IGtleTogdHJ1ZSwgdGV4dDogZmllbGQuZ2V0VHJhbnNsYXRlZFRleHQoXCJUX1JBRElPQlVUVE9OU19CT09MRUFOX1lFU1wiKSB9LFxuXHRcdFx0XHR7IGtleTogZmFsc2UsIHRleHQ6IGZpZWxkLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9SQURJT0JVVFRPTlNfQk9PTEVBTl9OT1wiKSB9XG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8UmFkaW9CdXR0b25zXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0cG9zc2libGVWYWx1ZXM9e3Bvc3NpYmxlVmFsdWVzfVxuXHRcdFx0XHRyZXF1aXJlZEV4cHJlc3Npb249e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0XHRmaXhlZFZhbHVlc1BhdGg9e2ZpeGVkVmFsdWVzUGF0aCBhcyB1bmtub3duIGFzIGB7JHtzdHJpbmd9fWB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRlZGl0YWJsZUV4cHJlc3Npb249e2ZpZWxkLmVkaXRhYmxlRXhwcmVzc2lvbn1cblx0XHRcdFx0ZW5hYmxlZEV4cHJlc3Npb249e2ZpZWxkLmVuYWJsZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRyYWRpb0J1dHRvblRleHRQcm9wZXJ0eT17dmFsdWVMaXN0RGVzY3JpcHRpb25QYXRofVxuXHRcdFx0XHRyYWRpb0J1dHRvbktleVByb3BlcnR5PXt2YWx1ZUxpc3RLZXlQYXRofVxuXHRcdFx0XHRob3Jpem9udGFsTGF5b3V0PXtmaWVsZC5mb3JtYXRPcHRpb25zLnJhZGlvQnV0dG9uc0hvcml6b250YWxMYXlvdXR9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgSW5wdXRXaXRoVmFsdWVIZWxwIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0SW5wdXRXaXRoVmFsdWVIZWxwVGVtcGxhdGUoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0XHRjb25zdCBkYXRhRmllbGREYXRhTW9kZWxPYmplY3RQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxEYXRhRmllbGRUeXBlcz4oXG5cdFx0XHRmaWVsZC5tZXRhUGF0aCxcblx0XHRcdGZpZWxkLmNvbnRleHRQYXRoXG5cdFx0KTtcblxuXHRcdGNvbnN0IGRlbGVnYXRlID0gRmllbGRIZWxwZXIuY29tcHV0ZUZpZWxkQmFzZURlbGVnYXRlKFxuXHRcdFx0XCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkQmFzZURlbGVnYXRlXCIsXG5cdFx0XHRmaWVsZC5mb3JtYXRPcHRpb25zLnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QgYXMgYm9vbGVhblxuXHRcdCk7XG5cdFx0Y29uc3QgZGlzcGxheSA9IFVJRm9ybWF0dGVyLmdldEZpZWxkRGlzcGxheShcblx0XHRcdGZpZWxkLnByb3BlcnR5LFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSBhcyBzdHJpbmcsXG5cdFx0XHRmaWVsZC5lZGl0TW9kZUFzT2JqZWN0IGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+XG5cdFx0KTtcblx0XHRjb25zdCBoYXNNdWx0aWxpbmVBbm5vdGF0aW9uID0gISFmaWVsZC5wcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LlVJPy5NdWx0aUxpbmVUZXh0O1xuXHRcdGNvbnN0IG11bHRpcGxlTGluZXMgPSBnZXRNdWx0aXBsZUxpbmVzRm9yRGF0YUZpZWxkKGZpZWxkLCBoYXNNdWx0aWxpbmVBbm5vdGF0aW9uKTtcblxuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhRmllbGREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0XHRjb25zdCBsYWJlbCA9IEZpZWxkSGVscGVyLmNvbXB1dGVMYWJlbFRleHQoZmllbGQgYXMgdW5rbm93biBhcyBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZFR5cGVzPiwge1xuXHRcdFx0Y29udGV4dDogZmllbGQubWV0YVBhdGhcblx0XHR9KTtcblxuXHRcdGxldCBvcHRpb25hbENvbnRlbnRFZGl0ID0gXCJcIjtcblx0XHRpZiAoZmllbGQucHJvcGVydHkudHlwZSA9PT0gXCJFZG0uU3RyaW5nXCIgJiYgaGFzTXVsdGlsaW5lQW5ub3RhdGlvbikge1xuXHRcdFx0b3B0aW9uYWxDb250ZW50RWRpdCA9IChcblx0XHRcdFx0PFRleHRBcmVhXG5cdFx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRyb3dzPXtmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRMaW5lc0VkaXR9XG5cdFx0XHRcdFx0Z3Jvd2luZz17KGZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzIGFzIHVua25vd24gYXMgbnVtYmVyKSA+IDAgPyB0cnVlIDogdW5kZWZpbmVkfVxuXHRcdFx0XHRcdGdyb3dpbmdNYXhMaW5lcz17ZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXN9XG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlfVxuXHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGxldCBvcHRpb25hbExheW91dERhdGEgPSBcIlwiO1xuXHRcdGlmIChmaWVsZC5jb2xsYWJvcmF0aW9uRW5hYmxlZCA9PT0gdHJ1ZSkge1xuXHRcdFx0b3B0aW9uYWxMYXlvdXREYXRhID0gPEZsZXhJdGVtRGF0YSBncm93RmFjdG9yPVwiOVwiIC8+O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNob3dBc1JhZGlvQnV0dG9uKGZpZWxkKSAhPT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PEZpZWxkXG5cdFx0XHRcdFx0Y29yZTpyZXF1aXJlPVwie0ZpZWxkOiAnc2FwL2ZlL21hY3Jvcy9GaWVsZCd9XCJcblx0XHRcdFx0XHRkZWxlZ2F0ZT17ZGVsZWdhdGV9XG5cdFx0XHRcdFx0aWQ9e2ZpZWxkLmVkaXRTdHlsZUlkfVxuXHRcdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0XHR2YWx1ZVN0YXRlPXtmaWVsZC52YWx1ZVN0YXRlfVxuXHRcdFx0XHRcdGVkaXRNb2RlPXtmaWVsZC5lZGl0TW9kZSA/PyBmaWVsZC5jb21wdXRlZEVkaXRNb2RlfVxuXHRcdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRhZGRpdGlvbmFsVmFsdWU9e2ZpZWxkLnRleHRCaW5kaW5nRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRkaXNwbGF5PXtkaXNwbGF5fVxuXHRcdFx0XHRcdG11bHRpcGxlTGluZXM9e211bHRpcGxlTGluZXMgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogbXVsdGlwbGVMaW5lc31cblx0XHRcdFx0XHR2YWx1ZUhlbHA9e2ZpZWxkLnZhbHVlSGVscElkfVxuXHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdFx0dGV4dEFsaWduPXt0ZXh0QWxpZ259XG5cdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbDEgfCBzdHJpbmc+fVxuXHRcdFx0XHRcdGxhYmVsPXtsYWJlbH1cblx0XHRcdFx0XHRjaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlfVxuXHRcdFx0XHRcdGxpdmVDaGFuZ2U9e2ZpZWxkLmV2ZW50SGFuZGxlcnMubGl2ZUNoYW5nZX1cblx0XHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudEVkaXQ6IG9wdGlvbmFsQ29udGVudEVkaXQsXG5cdFx0XHRcdFx0XHRsYXlvdXREYXRhOiBvcHRpb25hbExheW91dERhdGEsXG5cdFx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvRmllbGQ+XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRSYWRpb0J1dHRvblRlbXBsYXRlKGZpZWxkKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgQ2hlY2tCb3ggdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRDaGVja0JveFRlbXBsYXRlKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaXNDaGVja0JveEdyb3VwSXRlbSA9IGZpZWxkLmZvcm1hdE9wdGlvbnMuaXNGaWVsZEdyb3VwSXRlbSA9PT0gdHJ1ZTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PENoZWNrQm94XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0cmVxdWlyZWQ9e2lzQ2hlY2tCb3hHcm91cEl0ZW0gPyBmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb24gOiB1bmRlZmluZWR9XG5cdFx0XHRcdHNlbGVjdGVkPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRlZGl0YWJsZT17ZmllbGQuZWRpdGFibGVFeHByZXNzaW9ufVxuXHRcdFx0XHRlbmFibGVkPXtmaWVsZC5lbmFibGVkRXhwcmVzc2lvbn1cblx0XHRcdFx0ZmllbGRHcm91cElkcz17ZmllbGQuZmllbGRHcm91cElkc31cblx0XHRcdFx0dGV4dD17aXNDaGVja0JveEdyb3VwSXRlbSA/IGZpZWxkLmxhYmVsIDogdW5kZWZpbmVkfVxuXHRcdFx0XHR3cmFwcGluZz17aXNDaGVja0JveEdyb3VwSXRlbSA/IHRydWUgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRzZWxlY3Q9e2ZpZWxkLmV2ZW50SGFuZGxlcnMuY2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7IGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+IH19XG5cdFx0XHQ8L0NoZWNrQm94PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgVGV4dEFyZWEgdGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRUZXh0QXJlYVRlbXBsYXRlKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgZ3Jvd2luZyA9IGZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzID8gdHJ1ZSA6IGZhbHNlO1xuXG5cdFx0Y29uc3Qgc2hvd0V4Y2VlZGVkVGV4dCA9ICEhZmllbGQuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGVuZ3RoO1xuXG5cdFx0Ly91bmZvcnR1bmF0ZWx5IHRoaXMgb25lIGlzIGEgXCJkaWZmZXJlbnRcIiBsYXlvdXREYXRhIHRoYW4gdGhlIG90aGVycywgdGhlcmVmb3JlIHRoZSByZXVzZSBmdW5jdGlvbiBmcm9tIGFib3ZlIGNhbm5vdCBiZSB1c2VkIGZvciB0aGUgdGV4dEFyZWEgdGVtcGxhdGVcblx0XHRsZXQgbGF5b3V0RGF0YSA9IFwiXCI7XG5cdFx0aWYgKGZpZWxkLmNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRsYXlvdXREYXRhID0gPEZsZXhJdGVtRGF0YSBncm93RmFjdG9yPVwiOVwiIC8+O1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VGV4dEFyZWFFeFxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdHZhbHVlPXtmaWVsZC52YWx1ZUJpbmRpbmdFeHByZXNzaW9ufVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17ZmllbGQuZWRpdFN0eWxlUGxhY2Vob2xkZXJ9XG5cdFx0XHRcdHJlcXVpcmVkPXtmaWVsZC5yZXF1aXJlZEV4cHJlc3Npb259XG5cdFx0XHRcdHJvd3M9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dExpbmVzRWRpdH1cblx0XHRcdFx0Z3Jvd2luZz17Z3Jvd2luZ31cblx0XHRcdFx0Z3Jvd2luZ01heExpbmVzPXtmaWVsZC5mb3JtYXRPcHRpb25zLnRleHRNYXhMaW5lc31cblx0XHRcdFx0Y29scz17MzAwfSAvL0FzIHRoZSBkZWZhdWx0IGlzIDIwLCB0aGUgXCJjb2xzXCIgcHJvcGVydHkgaXMgY29uZmlndXJlZCB3aXRoIGEgdmFsdWUgb2YgMzAwIHRvIGd1YXJhbnRlZSB0aGF0IHRoZSB0ZXh0YXJlYSB3aWxsIG9jY3VweSBhbGwgdGhlIGF2YWlsYWJsZSBzcGFjZS5cblx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0ZWRpdGFibGU9e2ZpZWxkLmVkaXRhYmxlRXhwcmVzc2lvbn1cblx0XHRcdFx0ZW5hYmxlZD17ZmllbGQuZW5hYmxlZEV4cHJlc3Npb259XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtmaWVsZC5hcmlhTGFiZWxsZWRCeSBhcyB1bmtub3duIGFzIEFycmF5PENvbnRyb2wgfCBzdHJpbmc+fVxuXHRcdFx0XHRtYXhMZW5ndGg9e2ZpZWxkLmZvcm1hdE9wdGlvbnMudGV4dE1heExlbmd0aH1cblx0XHRcdFx0c2hvd0V4Y2VlZGVkVGV4dD17c2hvd0V4Y2VlZGVkVGV4dH1cblx0XHRcdFx0Y2hhbmdlPXtmaWVsZC5ldmVudEhhbmRsZXJzLmNoYW5nZX1cblx0XHRcdFx0bGl2ZUNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5saXZlQ2hhbmdlfVxuXHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e2ZpZWxkLmV2ZW50SGFuZGxlcnMudmFsaWRhdGVGaWVsZEdyb3VwIGFzIChvRXZlbnQ6IENvbnRyb2wkVmFsaWRhdGVGaWVsZEdyb3VwRXZlbnQpID0+IHZvaWR9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogbGF5b3V0RGF0YSxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiA8Q3VzdG9tRGF0YSBrZXk9XCJzb3VyY2VQYXRoXCIgdmFsdWU9e2ZpZWxkLmRhdGFTb3VyY2VQYXRofSAvPlxuXHRcdFx0XHR9fVxuXHRcdFx0PC9UZXh0QXJlYUV4PlxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgUmF0aW5nSW5kaWNhdG9yIHRlbXBsYXRlLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGU6IChmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IHRvb2x0aXAgPSBmaWVsZC5yYXRpbmdJbmRpY2F0b3JUb29sdGlwIHx8IFwie3NhcC5mZS5pMThuPlRfQ09NTU9OX1JBVElOR19JTkRJQ0FUT1JfVElUTEVfTEFCRUx9XCI7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJhdGluZ0luZGljYXRvclxuXHRcdFx0XHRjb3JlOnJlcXVpcmU9XCJ7RmllbGQ6ICdzYXAvZmUvbWFjcm9zL0ZpZWxkJ31cIlxuXHRcdFx0XHRpZD17ZmllbGQuZWRpdFN0eWxlSWR9XG5cdFx0XHRcdG1heFZhbHVlPXtmaWVsZC5yYXRpbmdJbmRpY2F0b3JUYXJnZXRWYWx1ZX1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3Rvb2x0aXB9XG5cdFx0XHRcdGZpZWxkR3JvdXBJZHM9e2ZpZWxkLmZpZWxkR3JvdXBJZHN9XG5cdFx0XHRcdGljb25TaXplPVwiMS4zNzVyZW1cIlxuXHRcdFx0XHRjbGFzcz1cInNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiXG5cdFx0XHRcdGVkaXRhYmxlPVwidHJ1ZVwiXG5cdFx0XHRcdGNoYW5nZT17ZmllbGQuZXZlbnRIYW5kbGVycy5jaGFuZ2V9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogRWRpdFN0eWxlLmdldExheW91dERhdGEoZmllbGQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1JhdGluZ0luZGljYXRvcj5cblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBIZWxwcyB0byBjYWxjdWxhdGUgdGhlIGNvbnRlbnQgZWRpdCBmdW5jdGlvbmFsaXR5IC8gdGVtcGxhdGluZy5cblx0ICogSW5jbHVkaW5nIGEgd3JhcHBlciBhbiBoYm94IGluIGNhc2Ugb2YgY29sbGFib3JhdGlvbiBtb2RlIGZpbmFsbHlcblx0ICogaXQgY2FsbHMgaW50ZXJuYWxseSBFZGl0U3R5bGUuZ2V0VGVtcGxhdGUuXG5cdCAqIEBwYXJhbSBmaWVsZCBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZmllbGQgaW5zdGFuY2Vcblx0ICogQHJldHVybnMgQW4gWE1MLWJhc2VkIHN0cmluZyB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmaWVsZCBjb250cm9sXG5cdCAqL1xuXHRnZXRUZW1wbGF0ZVdpdGhXcmFwcGVyKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0bGV0IGNvbnRlbnRFZGl0O1xuXG5cdFx0aWYgKChmaWVsZC5lZGl0TW9kZSA/PyBmaWVsZC5jb21wdXRlZEVkaXRNb2RlKSAhPT0gRmllbGRFZGl0TW9kZS5EaXNwbGF5ICYmICEhZmllbGQuZWRpdFN0eWxlKSB7XG5cdFx0XHRpZiAoZmllbGQuY29sbGFib3JhdGlvbkVuYWJsZWQgPz8gZmFsc2UpIHtcblx0XHRcdFx0Y29udGVudEVkaXQgPSAoXG5cdFx0XHRcdFx0PENvbGxhYm9yYXRpb25IQm94IHdpZHRoPVwiMTAwJVwiIGFsaWduSXRlbXM9XCJFbmRcIj5cblx0XHRcdFx0XHRcdHtFZGl0U3R5bGUuZ2V0VGVtcGxhdGUoZmllbGQpfVxuXHRcdFx0XHRcdFx0e0VkaXRTdHlsZS5nZXRDb2xsYWJvcmF0aW9uQXZhdGFyKGZpZWxkKX1cblx0XHRcdFx0XHQ8L0NvbGxhYm9yYXRpb25IQm94PlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29udGVudEVkaXQgPSBFZGl0U3R5bGUuZ2V0VGVtcGxhdGUoZmllbGQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250ZW50RWRpdCB8fCBcIlwiO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgdGhlIElucHV0TWFzayB0ZW1wbGF0ZS5cblx0ICogQHBhcmFtIGZpZWxkIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBmaWVsZCBpbnN0YW5jZVxuXHQgKiBAcmV0dXJucyBBbiBYTUwtYmFzZWQgc3RyaW5nIHdpdGggdGhlIGRlZmluaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRyb2xcblx0ICovXG5cdGdldElucHV0TWFza1RlbXBsYXRlKGZpZWxkOiBGaWVsZEJsb2NrUHJvcGVydGllcyk6IHN0cmluZyB7XG5cdFx0Y29uc3Qgb3B0aW9uYWxNYXNrSW5wdXRSdWxlcyA9IFtdO1xuXHRcdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPERhdGFGaWVsZFR5cGVzPihmaWVsZC5tZXRhUGF0aCwgZmllbGQuY29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IHRleHRBbGlnbiA9IGdldFRleHRBbGlnbm1lbnQoXG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0ZmllbGQuZm9ybWF0T3B0aW9ucyxcblx0XHRcdGZpZWxkLmVkaXRNb2RlQXNPYmplY3QgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHQpO1xuXHRcdGlmIChmaWVsZC5tYXNrPy5tYXNrUnVsZSkge1xuXHRcdFx0Zm9yIChjb25zdCBydWxlIG9mIGZpZWxkLm1hc2subWFza1J1bGUpIHtcblx0XHRcdFx0b3B0aW9uYWxNYXNrSW5wdXRSdWxlcy5wdXNoKDxNYXNrSW5wdXRSdWxlIG1hc2tGb3JtYXRTeW1ib2w9e3J1bGUuc3ltYm9sfSByZWdleD17cnVsZS5yZWdleH0gLz4pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8TWFza0lucHV0XG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGaWVsZDogJ3NhcC9mZS9tYWNyb3MvRmllbGQnfVwiXG5cdFx0XHRcdGlkPXtmaWVsZC5lZGl0U3R5bGVJZH1cblx0XHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlQmluZGluZ0V4cHJlc3Npb259XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtmaWVsZC5lZGl0U3R5bGVQbGFjZWhvbGRlcn1cblx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0ZWRpdGFibGU9e2ZpZWxkLmVkaXRhYmxlRXhwcmVzc2lvbn1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e2ZpZWxkLmFyaWFMYWJlbGxlZEJ5IGFzIHVua25vd24gYXMgQXJyYXk8Q29udHJvbCB8IHN0cmluZz59XG5cdFx0XHRcdG1hc2s9e2ZpZWxkLm1hc2s/Lm1hc2t9XG5cdFx0XHRcdGVuYWJsZWQ9e2ZpZWxkLmVuYWJsZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRyZXF1aXJlZD17ZmllbGQucmVxdWlyZWRFeHByZXNzaW9ufVxuXHRcdFx0XHRmaWVsZEdyb3VwSWRzPXtmaWVsZC5maWVsZEdyb3VwSWRzfVxuXHRcdFx0XHR0ZXh0QWxpZ249e3RleHRBbGlnbn1cblx0XHRcdFx0cGxhY2Vob2xkZXJTeW1ib2w9e2ZpZWxkLm1hc2s/LnBsYWNlaG9sZGVyU3ltYm9sfVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXtmaWVsZC5ldmVudEhhbmRsZXJzLmxpdmVDaGFuZ2UgYXMgKG9FdmVudDogTWFza0lucHV0JExpdmVDaGFuZ2VFdmVudCkgPT4gdm9pZH1cblx0XHRcdFx0dmFsaWRhdGVGaWVsZEdyb3VwPXtmaWVsZC5ldmVudEhhbmRsZXJzLnZhbGlkYXRlRmllbGRHcm91cCBhcyAob0V2ZW50OiBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50KSA9PiB2b2lkfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdHJ1bGVzOiBvcHRpb25hbE1hc2tJbnB1dFJ1bGVzLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cInNvdXJjZVBhdGhcIiB2YWx1ZT17ZmllbGQuZGF0YVNvdXJjZVBhdGh9IC8+XG5cdFx0XHRcdH19XG5cdFx0XHQ8L01hc2tJbnB1dD5cblx0XHQpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBFbnRyeSBwb2ludCBmb3IgZnVydGhlciB0ZW1wbGF0aW5nIHByb2Nlc3NpbmdzLlxuXHQgKiBAcGFyYW0gZmllbGQgUmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGZpZWxkIGluc3RhbmNlXG5cdCAqIEByZXR1cm5zIEFuIFhNTC1iYXNlZCBzdHJpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZmllbGQgY29udHJvbFxuXHQgKi9cblx0Z2V0VGVtcGxhdGU6IChmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRcdGxldCBpbm5lckZpZWxkQ29udGVudDtcblx0XHRzd2l0Y2ggKGZpZWxkLmVkaXRTdHlsZSkge1xuXHRcdFx0Y2FzZSBcIkNoZWNrQm94XCI6XG5cdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRPcHRpb25zLnVzZVJhZGlvQnV0dG9uc0ZvckJvb2xlYW4pIHtcblx0XHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRSYWRpb0J1dHRvblRlbXBsYXRlKGZpZWxkLCB0cnVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRDaGVja0JveFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJEYXRlUGlja2VyXCI6XG5cdFx0XHRjYXNlIFwiRGF0ZVRpbWVQaWNrZXJcIjpcblx0XHRcdGNhc2UgXCJUaW1lUGlja2VyXCI6IHtcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0RGF0ZVRpbWVQaWNrZXJHZW5lcmljKGZpZWxkLCBmaWVsZC5lZGl0U3R5bGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJJbnB1dFwiOiB7XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldElucHV0VGVtcGxhdGUoZmllbGQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJNYXNrZWRcIjoge1xuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRJbnB1dFRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiSW5wdXRXaXRoVmFsdWVIZWxwXCI6IHtcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0SW5wdXRXaXRoVmFsdWVIZWxwVGVtcGxhdGUoZmllbGQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJSYXRpbmdJbmRpY2F0b3JcIjpcblx0XHRcdFx0aW5uZXJGaWVsZENvbnRlbnQgPSBFZGl0U3R5bGUuZ2V0UmF0aW5nSW5kaWNhdG9yVGVtcGxhdGUoZmllbGQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJUZXh0QXJlYVwiOlxuXHRcdFx0XHRpbm5lckZpZWxkQ29udGVudCA9IEVkaXRTdHlsZS5nZXRUZXh0QXJlYVRlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiSW5wdXRNYXNrXCI6XG5cdFx0XHRcdGlubmVyRmllbGRDb250ZW50ID0gRWRpdFN0eWxlLmdldElucHV0TWFza1RlbXBsYXRlKGZpZWxkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdH1cblxuXHRcdHJldHVybiBpbm5lckZpZWxkQ29udGVudDtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRWRpdFN0eWxlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUErQkEsTUFBTUEsU0FBUyxHQUFHO0lBQ2pCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsYUFBYUEsQ0FBQ0MsS0FBMkIsRUFBVTtNQUNsRCxJQUFJQyxVQUFVLEdBQUcsRUFBRTtNQUNuQixJQUFJRCxLQUFLLENBQUNFLG9CQUFvQixFQUFFO1FBQy9CRCxVQUFVLEdBQUdFLElBQUEsQ0FBQ0MsWUFBWTtVQUFDQyxVQUFVLEVBQUM7UUFBRyxDQUFFLENBQUM7TUFDN0M7TUFDQSxPQUFPSixVQUFVO0lBQ2xCLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NLLHNCQUFzQkEsQ0FBQ04sS0FBMkIsRUFBVTtNQUMzRCxPQUNDRyxJQUFBLENBQUNJLHlCQUF5QjtRQUN6QkMsUUFBUSxFQUFFQyxrQ0FBa0MsQ0FBQ1QsS0FBSyxDQUFDVSxhQUFhLENBQUU7UUFDbEVDLFdBQVcsRUFBRVgsS0FBSyxDQUFDVyxXQUFXLENBQUNDLE9BQU8sQ0FBQyxDQUFFO1FBQ3pDQyxVQUFVLEVBQUU7TUFBSyxDQUNqQixDQUFDO0lBRUosQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyx3QkFBd0JBLENBQUNkLEtBQTJCLEVBQUVlLElBQW9ELEVBQVU7TUFDbkgsTUFBTUMsbUJBQW1CLEdBQUdDLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FBaUJsQixLQUFLLENBQUNRLFFBQVEsRUFBRVIsS0FBSyxDQUFDVyxXQUFXLENBQUM7TUFDN0gsTUFBTVEsU0FBUyxHQUFHQyxnQkFBZ0IsQ0FDakNKLG1CQUFtQixFQUNuQmhCLEtBQUssQ0FBQ3FCLGFBQWEsRUFDbkJyQixLQUFLLENBQUNzQixnQkFDUCxDQUFDO01BRUQsTUFBTUMsd0JBQXdCLEdBQUc7UUFDaEMsY0FBYyxFQUFFLGdDQUFnQztRQUNoREMsRUFBRSxFQUFFeEIsS0FBSyxDQUFDeUIsV0FBVztRQUNyQkMsS0FBSyxFQUFFLE1BQU07UUFDYkMsUUFBUSxFQUFFM0IsS0FBSyxDQUFDNEIsa0JBQWtCO1FBQ2xDQyxPQUFPLEVBQUU3QixLQUFLLENBQUM4QixpQkFBaUI7UUFDaENDLFFBQVEsRUFBRS9CLEtBQUssQ0FBQ2dDLGtCQUFrQjtRQUNsQ2IsU0FBUyxFQUFFQSxTQUFTO1FBQ3BCYyxjQUFjLEVBQUVqQyxLQUFLLENBQUNpQyxjQUFvRDtRQUMxRUMsS0FBSyxFQUFFbEMsS0FBSyxDQUFDbUMsc0JBQXNCO1FBQ25DQyxhQUFhLEVBQUVwQyxLQUFLLENBQUNvQyxhQUFhO1FBQ2xDQyxZQUFZLEVBQUVyQyxLQUFLLENBQUNxQyxZQUFZO1FBQ2hDQyxPQUFPLEVBQUV2QixJQUFJLEtBQUssZ0JBQWdCLElBQUlBLElBQUksS0FBSyxZQUFZLEdBQUdmLEtBQUssQ0FBQ3VDLGlCQUFpQixHQUFHQyxTQUFTO1FBQ2pHQyxPQUFPLEVBQUUxQixJQUFJLEtBQUssZ0JBQWdCLElBQUlBLElBQUksS0FBSyxZQUFZLEdBQUdmLEtBQUssQ0FBQzBDLGlCQUFpQixHQUFHRixTQUFTO1FBQ2pHRyxNQUFNLEVBQUU1QixJQUFJLEtBQUssZ0JBQWdCLEdBQUdmLEtBQUssQ0FBQzJDLE1BQU0sSUFBSTNDLEtBQUssQ0FBQzRDLGFBQWEsQ0FBQ0QsTUFBTSxHQUFHM0MsS0FBSyxDQUFDNEMsYUFBYSxDQUFDRCxNQUFNO1FBQzNHRSxVQUFVLEVBQUU3QyxLQUFLLENBQUM0QyxhQUFhLENBQUNDLFVBQVU7UUFDMUNDLFdBQVcsRUFBRS9CLElBQUksS0FBSyxZQUFZLEdBQUcsUUFBUSxHQUFHeUIsU0FBUztRQUN6RE8sa0JBQWtCLEVBQUUvQyxLQUFLLENBQUM0QyxhQUFhLENBQUNHO01BQ3pDLENBQUM7TUFFRCxTQUFTQyxpQkFBaUJBLENBQUNDLGtCQUEwQixFQUFVO1FBQzlELElBQUlDLGNBQWM7UUFDbEIsUUFBUUQsa0JBQWtCO1VBQ3pCLEtBQUssWUFBWTtZQUNoQkMsY0FBYyxHQUNiL0MsSUFBQSxDQUFDZ0QsVUFBVTtjQUFBLEdBQUs1Qix3QkFBd0I7Y0FBQTZCLFFBQUEsRUFDdEM7Z0JBQUVDLFVBQVUsRUFBRWxELElBQUEsQ0FBQ21ELFVBQVU7a0JBQWtCcEIsS0FBSyxFQUFFbEMsS0FBSyxDQUFDdUQ7Z0JBQWUsR0FBekMsWUFBMkM7Y0FBRTtZQUFDLENBQ2xFLENBQ1o7WUFDRDtVQUNELEtBQUssZ0JBQWdCO1lBQ3BCTCxjQUFjLEdBQ2IvQyxJQUFBLENBQUNxRCxjQUFjO2NBQUEsR0FBS2pDLHdCQUF3QjtjQUFBNkIsUUFBQSxFQUMxQztnQkFBRUMsVUFBVSxFQUFFbEQsSUFBQSxDQUFDbUQsVUFBVTtrQkFBa0JwQixLQUFLLEVBQUVsQyxLQUFLLENBQUN1RDtnQkFBZSxHQUF6QyxZQUEyQztjQUFFO1lBQUMsQ0FDOUQsQ0FDaEI7WUFDRDtVQUNELEtBQUssWUFBWTtZQUNoQkwsY0FBYyxHQUNiL0MsSUFBQSxDQUFDc0QsVUFBVTtjQUFBLEdBQUtsQyx3QkFBd0I7Y0FBQTZCLFFBQUEsRUFDdEM7Z0JBQUVDLFVBQVUsRUFBRWxELElBQUEsQ0FBQ21ELFVBQVU7a0JBQWtCcEIsS0FBSyxFQUFFbEMsS0FBSyxDQUFDdUQ7Z0JBQWUsR0FBekMsWUFBMkM7Y0FBRTtZQUFDLENBQ2xFLENBQ1o7WUFDRDtRQUNGO1FBQ0EsT0FBT0wsY0FBYztNQUN0QjtNQUVBLE9BQU9GLGlCQUFpQixDQUFDakMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0MyQyxnQkFBZ0JBLENBQUMxRCxLQUEyQixFQUFVO01BQ3JELE1BQU1nQixtQkFBbUIsR0FBR0Msa0JBQWtCLENBQUNDLDJCQUEyQixDQUFpQmxCLEtBQUssQ0FBQ1EsUUFBUSxFQUFFUixLQUFLLENBQUNXLFdBQVcsQ0FBQztNQUU3SCxNQUFNUSxTQUFTLEdBQUdDLGdCQUFnQixDQUNqQ0osbUJBQW1CLEVBQ25CaEIsS0FBSyxDQUFDcUIsYUFBYSxFQUNuQnJCLEtBQUssQ0FBQ3NCLGdCQUNQLENBQUM7TUFFRCxPQUNDbkIsSUFBQSxDQUFDd0QsS0FBSztRQUNMLGdCQUFhLGdDQUFnQztRQUM3Q25DLEVBQUUsRUFBRXhCLEtBQUssQ0FBQ3lCLFdBQVk7UUFDdEJTLEtBQUssRUFBRWxDLEtBQUssQ0FBQ21DLHNCQUF1QjtRQUNwQ3lCLFdBQVcsRUFBRTVELEtBQUssQ0FBQzZELG9CQUFxQjtRQUN4Q25DLEtBQUssRUFBQyxNQUFNO1FBQ1pvQyxVQUFVLEVBQUUsS0FBTTtRQUNsQm5DLFFBQVEsRUFBRTNCLEtBQUssQ0FBQzRCLGtCQUFtQjtRQUNuQ21DLFdBQVcsRUFBRS9ELEtBQUssQ0FBQ2dFLGlCQUFrQjtRQUNyQ25DLE9BQU8sRUFBRTdCLEtBQUssQ0FBQzhCLGlCQUFrQjtRQUNqQ0MsUUFBUSxFQUFFL0IsS0FBSyxDQUFDZ0Msa0JBQW1CO1FBQ25DSSxhQUFhLEVBQUVwQyxLQUFLLENBQUNvQyxhQUFjO1FBQ25DakIsU0FBUyxFQUFFQSxTQUFVO1FBQ3JCSixJQUFJLEVBQUVmLEtBQUssQ0FBQ2lFLFNBQVMsS0FBSyxRQUFRLEdBQUcsVUFBVSxHQUFHekIsU0FBVTtRQUM1RFAsY0FBYyxFQUFFakMsS0FBSyxDQUFDaUMsY0FBcUQ7UUFDM0VpQyxTQUFTLEVBQUVsRSxLQUFLLENBQUNxQixhQUFhLENBQUM4QyxhQUFjO1FBQzdDeEIsTUFBTSxFQUFFM0MsS0FBSyxDQUFDNEMsYUFBYSxDQUFDRCxNQUFPO1FBQ25DRSxVQUFVLEVBQUU3QyxLQUFLLENBQUM0QyxhQUFhLENBQUNDLFVBQVc7UUFDM0NFLGtCQUFrQixFQUFFL0MsS0FBSyxDQUFDNEMsYUFBYSxDQUFDRyxrQkFBd0U7UUFBQUssUUFBQSxFQUUvRztVQUNBbkQsVUFBVSxFQUFFSCxTQUFTLENBQUNDLGFBQWEsQ0FBQ0MsS0FBSyxDQUFDO1VBQzFDcUQsVUFBVSxFQUFFbEQsSUFBQSxDQUFDbUQsVUFBVTtZQUFrQnBCLEtBQUssRUFBRWxDLEtBQUssQ0FBQ3VEO1VBQWUsR0FBekMsWUFBMkM7UUFDeEU7TUFBQyxDQUNLLENBQUM7SUFFVixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDYSxpQkFBaUJBLENBQUNwRSxLQUEyQixFQUFXO01BQ3ZEO01BQ0E7TUFDQTtNQUNBO01BQ0EsTUFBTXFFLHFCQUE4QixHQUNuQ3JFLEtBQUssQ0FBQ3NFLFFBQVEsQ0FBQ0MsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLHdCQUF3QixJQUM1REMsMkJBQTJCLENBQUMxRSxLQUFLLENBQUNzRSxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQ2xEdEUsS0FBSyxDQUFDc0UsUUFBUSxDQUFDQyxXQUFXLENBQUNDLE1BQU0sQ0FBQ0Msd0JBQXdCLENBQUNGLFdBQVcsRUFBRUMsTUFBTSxFQUFFRyw4QkFBOEIsSUFDL0czRSxLQUFLLENBQUNzRSxRQUFRLENBQUNDLFdBQVcsQ0FBQ0MsTUFBTSxDQUFDQyx3QkFBd0IsQ0FBQ0YsV0FBVyxFQUFFQyxNQUFNLEVBQUVHLDhCQUE4QixDQUFDQyxPQUFPLENBQUMsQ0FBQyxLQUN2SCxJQUFJLElBQ0w1RSxLQUFLLENBQUNxQixhQUFhLENBQUN3RCxjQUFjLEtBQUssY0FBYyxDQUFDOztNQUV4RDtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsTUFBTUMsdUJBQXVCLEdBQUc5RSxLQUFLLENBQUNzRSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFTyxTQUFTLEVBQUVDLFVBQVUsQ0FBQ0MsSUFBSSxDQUM3RkMsa0JBQWtCLElBQ2xCLENBQUNBLGtCQUFrQixDQUFDQyxLQUFLLEtBQUssd0RBQXdELElBQ3JGRCxrQkFBa0IsQ0FBQ0MsS0FBSyxLQUFLLHNEQUFzRCxLQUNwRkQsa0JBQWtCLENBQUNFLGlCQUFpQixDQUFDbEQsS0FBSyxLQUFLbEMsS0FBSyxDQUFDc0UsUUFBUSxDQUFDZSxJQUNoRSxDQUFDO01BQ0QsT0FDQ2hCLHFCQUFxQixJQUNyQlMsdUJBQXVCLEtBQUt0QyxTQUFTLElBQ3JDLENBQUN4QyxLQUFLLENBQUNzRSxRQUFRLENBQUNDLFdBQVcsRUFBRUMsTUFBTSxFQUFFYywyQkFBMkI7SUFFbEUsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxzQkFBc0JBLENBQUN2RixLQUEyQixFQUE4QjtNQUFBLElBQTVCd0YsVUFBVSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBakQsU0FBQSxHQUFBaUQsU0FBQSxNQUFHLEtBQUs7TUFDckUsTUFBTUUsZUFBZSxHQUFHLEdBQUcsR0FBRzNGLEtBQUssQ0FBQ3NFLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVPLFNBQVMsRUFBRWEsY0FBYztNQUU1RixNQUFNZCx1QkFBdUIsR0FBRzlFLEtBQUssQ0FBQ3NFLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVPLFNBQVMsRUFBRUMsVUFBVSxDQUFDQyxJQUFJLENBQzdGQyxrQkFBa0IsSUFDbEIsQ0FBQ0Esa0JBQWtCLENBQUNDLEtBQUssS0FBSyx3REFBd0QsSUFDckZELGtCQUFrQixDQUFDQyxLQUFLLEtBQUssc0RBQXNELEtBQ3BGRCxrQkFBa0IsQ0FBQ0UsaUJBQWlCLENBQUNsRCxLQUFLLEtBQUtsQyxLQUFLLENBQUNzRSxRQUFRLENBQUNlLElBQ2hFLENBQUM7O01BRUQ7TUFDQSxNQUFNUSxnQkFBZ0IsR0FBR0MsV0FBVyxDQUFDaEIsdUJBQXVCLEVBQUVpQixpQkFBMkIsQ0FBQyxJQUFJRCxXQUFXLENBQUMsRUFBRSxDQUFDO01BRTdHLElBQUlFLHdCQUF3QjtNQUM1QixNQUFNQyw4QkFBOEIsR0FDbkNqRyxLQUFLLENBQUNVLGFBQWEsQ0FBQ3dGLGdCQUFnQixDQUFDQyxXQUFXLENBQUNSLGVBQWUsQ0FBQyxFQUFFUyxVQUFVLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzlCLFdBQVcsRUFBRUMsTUFBTSxFQUFFOEIsSUFBSSxFQUFFQyxJQUFJO01BQ3RILElBQUlOLDhCQUE4QixFQUFFO1FBQ25DRCx3QkFBd0IsR0FBR0YsV0FBVyxDQUFDRyw4QkFBOEIsQ0FBQztNQUN2RSxDQUFDLE1BQU07UUFDTkQsd0JBQXdCLEdBQUdILGdCQUFnQjtNQUM1QztNQUVBLElBQUlXLGNBQXFGO01BQ3pGLElBQUloQixVQUFVLEVBQUU7UUFDZmdCLGNBQWMsR0FBRyxDQUNoQjtVQUFFQyxHQUFHLEVBQUUsSUFBSTtVQUFFQyxJQUFJLEVBQUUxRyxLQUFLLENBQUMyRyxpQkFBaUIsQ0FBQyw0QkFBNEI7UUFBRSxDQUFDLEVBQzFFO1VBQUVGLEdBQUcsRUFBRSxLQUFLO1VBQUVDLElBQUksRUFBRTFHLEtBQUssQ0FBQzJHLGlCQUFpQixDQUFDLDJCQUEyQjtRQUFFLENBQUMsQ0FDMUU7TUFDRjtNQUVBLE9BQ0N4RyxJQUFBLENBQUN5RyxZQUFZO1FBQ1pwRixFQUFFLEVBQUV4QixLQUFLLENBQUN5QixXQUFZO1FBQ3RCK0UsY0FBYyxFQUFFQSxjQUFlO1FBQy9CeEUsa0JBQWtCLEVBQUVoQyxLQUFLLENBQUNnQyxrQkFBbUI7UUFDN0NlLGtCQUFrQixFQUFFL0MsS0FBSyxDQUFDNEMsYUFBYSxDQUFDRyxrQkFBd0U7UUFDaEg0QyxlQUFlLEVBQUVBLGVBQTRDO1FBQzdEdkQsYUFBYSxFQUFFcEMsS0FBSyxDQUFDb0MsYUFBYztRQUNuQ0YsS0FBSyxFQUFFbEMsS0FBSyxDQUFDbUMsc0JBQXVCO1FBQ3BDUCxrQkFBa0IsRUFBRTVCLEtBQUssQ0FBQzRCLGtCQUFtQjtRQUM3Q0UsaUJBQWlCLEVBQUU5QixLQUFLLENBQUM4QixpQkFBa0I7UUFDM0MrRSx1QkFBdUIsRUFBRWIsd0JBQXlCO1FBQ2xEYyxzQkFBc0IsRUFBRWpCLGdCQUFpQjtRQUN6Q2tCLGdCQUFnQixFQUFFL0csS0FBSyxDQUFDcUIsYUFBYSxDQUFDMkY7TUFBNkIsQ0FDbkUsQ0FBQztJQUVKLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLDZCQUE2QkEsQ0FBQ2pILEtBQTJCLEVBQVU7TUFDbEUsTUFBTWtILDRCQUE0QixHQUFHakcsa0JBQWtCLENBQUNDLDJCQUEyQixDQUNsRmxCLEtBQUssQ0FBQ1EsUUFBUSxFQUNkUixLQUFLLENBQUNXLFdBQ1AsQ0FBQztNQUVELE1BQU13RyxRQUFRLEdBQUdDLFdBQVcsQ0FBQ0Msd0JBQXdCLENBQ3BELHVDQUF1QyxFQUN2Q3JILEtBQUssQ0FBQ3FCLGFBQWEsQ0FBQ2lHLHlCQUNyQixDQUFDO01BQ0QsTUFBTUMsT0FBTyxHQUFHQyxXQUFXLENBQUNDLGVBQWUsQ0FDMUN6SCxLQUFLLENBQUNzRSxRQUFRLEVBQ2R0RSxLQUFLLENBQUNxQixhQUFhLENBQUNxRyxXQUFXLEVBQy9CMUgsS0FBSyxDQUFDc0IsZ0JBQ1AsQ0FBQztNQUNELE1BQU1xRyxzQkFBc0IsR0FBRyxDQUFDLENBQUMzSCxLQUFLLENBQUNzRSxRQUFRLEVBQUVDLFdBQVcsRUFBRXFELEVBQUUsRUFBRUMsYUFBYTtNQUMvRSxNQUFNQyxhQUFhLEdBQUdDLDRCQUE0QixDQUFDL0gsS0FBSyxFQUFFMkgsc0JBQXNCLENBQUM7TUFFakYsTUFBTXhHLFNBQVMsR0FBR0MsZ0JBQWdCLENBQ2pDOEYsNEJBQTRCLEVBQzVCbEgsS0FBSyxDQUFDcUIsYUFBYSxFQUNuQnJCLEtBQUssQ0FBQ3NCLGdCQUFnQixFQUN0QixJQUNELENBQUM7TUFDRCxNQUFNMEcsS0FBSyxHQUFHWixXQUFXLENBQUNhLGdCQUFnQixDQUFDakksS0FBSyxFQUE4QztRQUM3RmtJLE9BQU8sRUFBRWxJLEtBQUssQ0FBQ1E7TUFDaEIsQ0FBQyxDQUFDO01BRUYsSUFBSTJILG1CQUFtQixHQUFHLEVBQUU7TUFDNUIsSUFBSW5JLEtBQUssQ0FBQ3NFLFFBQVEsQ0FBQ3ZELElBQUksS0FBSyxZQUFZLElBQUk0RyxzQkFBc0IsRUFBRTtRQUNuRVEsbUJBQW1CLEdBQ2xCaEksSUFBQSxDQUFDaUksUUFBUTtVQUNSbEcsS0FBSyxFQUFFbEMsS0FBSyxDQUFDbUMsc0JBQXVCO1VBQ3BDSixRQUFRLEVBQUUvQixLQUFLLENBQUNnQyxrQkFBbUI7VUFDbkNxRyxJQUFJLEVBQUVySSxLQUFLLENBQUNxQixhQUFhLENBQUNpSCxhQUFjO1VBQ3hDQyxPQUFPLEVBQUd2SSxLQUFLLENBQUNxQixhQUFhLENBQUNtSCxZQUFZLEdBQXlCLENBQUMsR0FBRyxJQUFJLEdBQUdoRyxTQUFVO1VBQ3hGaUcsZUFBZSxFQUFFekksS0FBSyxDQUFDcUIsYUFBYSxDQUFDbUgsWUFBYTtVQUNsRDlHLEtBQUssRUFBQyxNQUFNO1VBQ1ppQixNQUFNLEVBQUUzQyxLQUFLLENBQUM0QyxhQUFhLENBQUNELE1BQU87VUFDbkNQLGFBQWEsRUFBRXBDLEtBQUssQ0FBQ29DO1FBQWMsQ0FDbkMsQ0FDRDtNQUNGO01BRUEsSUFBSXNHLGtCQUFrQixHQUFHLEVBQUU7TUFDM0IsSUFBSTFJLEtBQUssQ0FBQ0Usb0JBQW9CLEtBQUssSUFBSSxFQUFFO1FBQ3hDd0ksa0JBQWtCLEdBQUd2SSxJQUFBLENBQUNDLFlBQVk7VUFBQ0MsVUFBVSxFQUFDO1FBQUcsQ0FBRSxDQUFDO01BQ3JEO01BRUEsSUFBSSxJQUFJLENBQUMrRCxpQkFBaUIsQ0FBQ3BFLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtRQUMzQyxPQUNDRyxJQUFBLENBQUN3SSxLQUFLO1VBQ0wsZ0JBQWEsZ0NBQWdDO1VBQzdDeEIsUUFBUSxFQUFFQSxRQUFTO1VBQ25CM0YsRUFBRSxFQUFFeEIsS0FBSyxDQUFDeUIsV0FBWTtVQUN0QlMsS0FBSyxFQUFFbEMsS0FBSyxDQUFDbUMsc0JBQXVCO1VBQ3BDeUIsV0FBVyxFQUFFNUQsS0FBSyxDQUFDNkQsb0JBQXFCO1VBQ3hDK0UsVUFBVSxFQUFFNUksS0FBSyxDQUFDNEksVUFBVztVQUM3QkMsUUFBUSxFQUFFN0ksS0FBSyxDQUFDNkksUUFBUSxJQUFJN0ksS0FBSyxDQUFDOEksZ0JBQWlCO1VBQ25EcEgsS0FBSyxFQUFDLE1BQU07VUFDWkssUUFBUSxFQUFFL0IsS0FBSyxDQUFDZ0Msa0JBQW1CO1VBQ25DK0csZUFBZSxFQUFFL0ksS0FBSyxDQUFDZ0oscUJBQXNCO1VBQzdDekIsT0FBTyxFQUFFQSxPQUFRO1VBQ2pCTyxhQUFhLEVBQUVBLGFBQWEsS0FBSyxLQUFLLEdBQUd0RixTQUFTLEdBQUdzRixhQUFjO1VBQ25FbUIsU0FBUyxFQUFFakosS0FBSyxDQUFDa0osV0FBWTtVQUM3QjlHLGFBQWEsRUFBRXBDLEtBQUssQ0FBQ29DLGFBQWM7VUFDbkNqQixTQUFTLEVBQUVBLFNBQVU7VUFDckJjLGNBQWMsRUFBRWpDLEtBQUssQ0FBQ2lDLGNBQXNEO1VBQzVFK0YsS0FBSyxFQUFFQSxLQUFNO1VBQ2JyRixNQUFNLEVBQUUzQyxLQUFLLENBQUM0QyxhQUFhLENBQUNELE1BQU87VUFDbkNFLFVBQVUsRUFBRTdDLEtBQUssQ0FBQzRDLGFBQWEsQ0FBQ0MsVUFBVztVQUMzQ0Usa0JBQWtCLEVBQUUvQyxLQUFLLENBQUM0QyxhQUFhLENBQUNHLGtCQUF3RTtVQUFBSyxRQUFBLEVBRS9HO1lBQ0ErRixXQUFXLEVBQUVoQixtQkFBbUI7WUFDaENsSSxVQUFVLEVBQUV5SSxrQkFBa0I7WUFDOUJyRixVQUFVLEVBQUVsRCxJQUFBLENBQUNtRCxVQUFVO2NBQWtCcEIsS0FBSyxFQUFFbEMsS0FBSyxDQUFDdUQ7WUFBZSxHQUF6QyxZQUEyQztVQUN4RTtRQUFDLENBQ0ssQ0FBQztNQUVWLENBQUMsTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDZ0Msc0JBQXNCLENBQUN2RixLQUFLLENBQUM7TUFDMUM7SUFDRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDb0osbUJBQW1CQSxDQUFDcEosS0FBMkIsRUFBVTtNQUN4RCxNQUFNcUosbUJBQW1CLEdBQUdySixLQUFLLENBQUNxQixhQUFhLENBQUNpSSxnQkFBZ0IsS0FBSyxJQUFJO01BQ3pFLE9BQ0NuSixJQUFBLENBQUNvSixRQUFRO1FBQ1IsZ0JBQWEsZ0NBQWdDO1FBQzdDL0gsRUFBRSxFQUFFeEIsS0FBSyxDQUFDeUIsV0FBWTtRQUN0Qk0sUUFBUSxFQUFFc0gsbUJBQW1CLEdBQUdySixLQUFLLENBQUNnQyxrQkFBa0IsR0FBR1EsU0FBVTtRQUNyRWdILFFBQVEsRUFBRXhKLEtBQUssQ0FBQ21DLHNCQUF1QjtRQUN2Q1IsUUFBUSxFQUFFM0IsS0FBSyxDQUFDNEIsa0JBQW1CO1FBQ25DQyxPQUFPLEVBQUU3QixLQUFLLENBQUM4QixpQkFBa0I7UUFDakNNLGFBQWEsRUFBRXBDLEtBQUssQ0FBQ29DLGFBQWM7UUFDbkNzRSxJQUFJLEVBQUUyQyxtQkFBbUIsR0FBR3JKLEtBQUssQ0FBQ2dJLEtBQUssR0FBR3hGLFNBQVU7UUFDcERpSCxRQUFRLEVBQUVKLG1CQUFtQixHQUFHLElBQUksR0FBRzdHLFNBQVU7UUFDakRQLGNBQWMsRUFBRWpDLEtBQUssQ0FBQ2lDLGNBQXFEO1FBQzNFeUgsTUFBTSxFQUFFMUosS0FBSyxDQUFDNEMsYUFBYSxDQUFDRCxNQUFPO1FBQ25DSSxrQkFBa0IsRUFBRS9DLEtBQUssQ0FBQzRDLGFBQWEsQ0FBQ0csa0JBQXdFO1FBQUFLLFFBQUEsRUFFL0c7VUFBRUMsVUFBVSxFQUFFbEQsSUFBQSxDQUFDbUQsVUFBVTtZQUFrQnBCLEtBQUssRUFBRWxDLEtBQUssQ0FBQ3VEO1VBQWUsR0FBekMsWUFBMkM7UUFBRTtNQUFDLENBQ3BFLENBQUM7SUFFYixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDb0csbUJBQW1CQSxDQUFDM0osS0FBMkIsRUFBVTtNQUN4RCxNQUFNdUksT0FBTyxHQUFHdkksS0FBSyxDQUFDcUIsYUFBYSxDQUFDbUgsWUFBWSxHQUFHLElBQUksR0FBRyxLQUFLO01BRS9ELE1BQU1vQixnQkFBZ0IsR0FBRyxDQUFDLENBQUM1SixLQUFLLENBQUNxQixhQUFhLENBQUM4QyxhQUFhOztNQUU1RDtNQUNBLElBQUlsRSxVQUFVLEdBQUcsRUFBRTtNQUNuQixJQUFJRCxLQUFLLENBQUNFLG9CQUFvQixFQUFFO1FBQy9CRCxVQUFVLEdBQUdFLElBQUEsQ0FBQ0MsWUFBWTtVQUFDQyxVQUFVLEVBQUM7UUFBRyxDQUFFLENBQUM7TUFDN0M7TUFFQSxPQUNDRixJQUFBLENBQUMwSixVQUFVO1FBQ1YsZ0JBQWEsZ0NBQWdDO1FBQzdDckksRUFBRSxFQUFFeEIsS0FBSyxDQUFDeUIsV0FBWTtRQUN0QlMsS0FBSyxFQUFFbEMsS0FBSyxDQUFDbUMsc0JBQXVCO1FBQ3BDeUIsV0FBVyxFQUFFNUQsS0FBSyxDQUFDNkQsb0JBQXFCO1FBQ3hDOUIsUUFBUSxFQUFFL0IsS0FBSyxDQUFDZ0Msa0JBQW1CO1FBQ25DcUcsSUFBSSxFQUFFckksS0FBSyxDQUFDcUIsYUFBYSxDQUFDaUgsYUFBYztRQUN4Q0MsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCRSxlQUFlLEVBQUV6SSxLQUFLLENBQUNxQixhQUFhLENBQUNtSCxZQUFhO1FBQ2xEc0IsSUFBSSxFQUFFLEdBQUksQ0FBQztRQUFBO1FBQ1hwSSxLQUFLLEVBQUMsTUFBTTtRQUNaQyxRQUFRLEVBQUUzQixLQUFLLENBQUM0QixrQkFBbUI7UUFDbkNDLE9BQU8sRUFBRTdCLEtBQUssQ0FBQzhCLGlCQUFrQjtRQUNqQ00sYUFBYSxFQUFFcEMsS0FBSyxDQUFDb0MsYUFBYztRQUNuQ0gsY0FBYyxFQUFFakMsS0FBSyxDQUFDaUMsY0FBcUQ7UUFDM0VpQyxTQUFTLEVBQUVsRSxLQUFLLENBQUNxQixhQUFhLENBQUM4QyxhQUFjO1FBQzdDeUYsZ0JBQWdCLEVBQUVBLGdCQUFpQjtRQUNuQ2pILE1BQU0sRUFBRTNDLEtBQUssQ0FBQzRDLGFBQWEsQ0FBQ0QsTUFBTztRQUNuQ0UsVUFBVSxFQUFFN0MsS0FBSyxDQUFDNEMsYUFBYSxDQUFDQyxVQUFXO1FBQzNDRSxrQkFBa0IsRUFBRS9DLEtBQUssQ0FBQzRDLGFBQWEsQ0FBQ0csa0JBQXdFO1FBQUFLLFFBQUEsRUFFL0c7VUFDQW5ELFVBQVUsRUFBRUEsVUFBVTtVQUN0Qm9ELFVBQVUsRUFBRWxELElBQUEsQ0FBQ21ELFVBQVU7WUFBa0JwQixLQUFLLEVBQUVsQyxLQUFLLENBQUN1RDtVQUFlLEdBQXpDLFlBQTJDO1FBQ3hFO01BQUMsQ0FDVSxDQUFDO0lBRWYsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ3dHLDBCQUEwQixFQUFHL0osS0FBMkIsSUFBYTtNQUNwRSxNQUFNZ0ssT0FBTyxHQUFHaEssS0FBSyxDQUFDaUssc0JBQXNCLElBQUkscURBQXFEO01BRXJHLE9BQ0M5SixJQUFBLENBQUMrSixlQUFlO1FBQ2YsZ0JBQWEsZ0NBQWdDO1FBQzdDMUksRUFBRSxFQUFFeEIsS0FBSyxDQUFDeUIsV0FBWTtRQUN0QjBJLFFBQVEsRUFBRW5LLEtBQUssQ0FBQ29LLDBCQUEyQjtRQUMzQ2xJLEtBQUssRUFBRWxDLEtBQUssQ0FBQ21DLHNCQUF1QjtRQUNwQzZILE9BQU8sRUFBRUEsT0FBUTtRQUNqQjVILGFBQWEsRUFBRXBDLEtBQUssQ0FBQ29DLGFBQWM7UUFDbkNpSSxRQUFRLEVBQUMsVUFBVTtRQUNuQkMsS0FBSyxFQUFDLDBCQUEwQjtRQUNoQzNJLFFBQVEsRUFBQyxNQUFNO1FBQ2ZnQixNQUFNLEVBQUUzQyxLQUFLLENBQUM0QyxhQUFhLENBQUNELE1BQU87UUFBQVMsUUFBQSxFQUVsQztVQUNBbkQsVUFBVSxFQUFFSCxTQUFTLENBQUNDLGFBQWEsQ0FBQ0MsS0FBSztRQUMxQztNQUFDLENBQ2UsQ0FBQztJQUVwQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ3VLLHNCQUFzQkEsQ0FBQ3ZLLEtBQTJCLEVBQVU7TUFDM0QsSUFBSW1KLFdBQVc7TUFFZixJQUFJLENBQUNuSixLQUFLLENBQUM2SSxRQUFRLElBQUk3SSxLQUFLLENBQUM4SSxnQkFBZ0IsTUFBTTBCLGFBQWEsQ0FBQ0MsT0FBTyxJQUFJLENBQUMsQ0FBQ3pLLEtBQUssQ0FBQ2lFLFNBQVMsRUFBRTtRQUM5RixJQUFJakUsS0FBSyxDQUFDRSxvQkFBb0IsSUFBSSxLQUFLLEVBQUU7VUFDeENpSixXQUFXLEdBQ1Z1QixLQUFBLENBQUNDLGlCQUFpQjtZQUFDakosS0FBSyxFQUFDLE1BQU07WUFBQ2tKLFVBQVUsRUFBQyxLQUFLO1lBQUF4SCxRQUFBLEdBQzlDdEQsU0FBUyxDQUFDK0ssV0FBVyxDQUFDN0ssS0FBSyxDQUFDLEVBQzVCRixTQUFTLENBQUNRLHNCQUFzQixDQUFDTixLQUFLLENBQUM7VUFBQSxDQUN0QixDQUNuQjtRQUNGLENBQUMsTUFBTTtVQUNObUosV0FBVyxHQUFHckosU0FBUyxDQUFDK0ssV0FBVyxDQUFDN0ssS0FBSyxDQUFDO1FBQzNDO01BQ0Q7TUFFQSxPQUFPbUosV0FBVyxJQUFJLEVBQUU7SUFDekIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQzJCLG9CQUFvQkEsQ0FBQzlLLEtBQTJCLEVBQVU7TUFDekQsTUFBTStLLHNCQUFzQixHQUFHLEVBQUU7TUFDakMsTUFBTS9KLG1CQUFtQixHQUFHQyxrQkFBa0IsQ0FBQ0MsMkJBQTJCLENBQWlCbEIsS0FBSyxDQUFDUSxRQUFRLEVBQUVSLEtBQUssQ0FBQ1csV0FBVyxDQUFDO01BQzdILE1BQU1RLFNBQVMsR0FBR0MsZ0JBQWdCLENBQ2pDSixtQkFBbUIsRUFDbkJoQixLQUFLLENBQUNxQixhQUFhLEVBQ25CckIsS0FBSyxDQUFDc0IsZ0JBQ1AsQ0FBQztNQUNELElBQUl0QixLQUFLLENBQUNnTCxJQUFJLEVBQUVDLFFBQVEsRUFBRTtRQUN6QixLQUFLLE1BQU1DLElBQUksSUFBSWxMLEtBQUssQ0FBQ2dMLElBQUksQ0FBQ0MsUUFBUSxFQUFFO1VBQ3ZDRixzQkFBc0IsQ0FBQ0ksSUFBSSxDQUFDaEwsSUFBQSxDQUFDaUwsYUFBYTtZQUFDQyxnQkFBZ0IsRUFBRUgsSUFBSSxDQUFDSSxNQUFPO1lBQUNDLEtBQUssRUFBRUwsSUFBSSxDQUFDSztVQUFNLENBQUUsQ0FBQyxDQUFDO1FBQ2pHO01BQ0Q7TUFFQSxPQUNDcEwsSUFBQSxDQUFDcUwsU0FBUztRQUNULGdCQUFhLGdDQUFnQztRQUM3Q2hLLEVBQUUsRUFBRXhCLEtBQUssQ0FBQ3lCLFdBQVk7UUFDdEJTLEtBQUssRUFBRWxDLEtBQUssQ0FBQ21DLHNCQUF1QjtRQUNwQ3lCLFdBQVcsRUFBRTVELEtBQUssQ0FBQzZELG9CQUFxQjtRQUN4Q25DLEtBQUssRUFBQyxNQUFNO1FBQ1pDLFFBQVEsRUFBRTNCLEtBQUssQ0FBQzRCLGtCQUFtQjtRQUNuQ0ssY0FBYyxFQUFFakMsS0FBSyxDQUFDaUMsY0FBcUQ7UUFDM0UrSSxJQUFJLEVBQUVoTCxLQUFLLENBQUNnTCxJQUFJLEVBQUVBLElBQUs7UUFDdkJuSixPQUFPLEVBQUU3QixLQUFLLENBQUM4QixpQkFBa0I7UUFDakNDLFFBQVEsRUFBRS9CLEtBQUssQ0FBQ2dDLGtCQUFtQjtRQUNuQ0ksYUFBYSxFQUFFcEMsS0FBSyxDQUFDb0MsYUFBYztRQUNuQ2pCLFNBQVMsRUFBRUEsU0FBVTtRQUNyQnNLLGlCQUFpQixFQUFFekwsS0FBSyxDQUFDZ0wsSUFBSSxFQUFFUyxpQkFBa0I7UUFDakQ1SSxVQUFVLEVBQUU3QyxLQUFLLENBQUM0QyxhQUFhLENBQUNDLFVBQTBEO1FBQzFGRSxrQkFBa0IsRUFBRS9DLEtBQUssQ0FBQzRDLGFBQWEsQ0FBQ0csa0JBQXdFO1FBQUFLLFFBQUEsRUFFL0c7VUFDQXNJLEtBQUssRUFBRVgsc0JBQXNCO1VBQzdCMUgsVUFBVSxFQUFFbEQsSUFBQSxDQUFDbUQsVUFBVTtZQUFrQnBCLEtBQUssRUFBRWxDLEtBQUssQ0FBQ3VEO1VBQWUsR0FBekMsWUFBMkM7UUFDeEU7TUFBQyxDQUNTLENBQUM7SUFFZCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDc0gsV0FBVyxFQUFHN0ssS0FBMkIsSUFBeUI7TUFDakUsSUFBSTJMLGlCQUFpQjtNQUNyQixRQUFRM0wsS0FBSyxDQUFDaUUsU0FBUztRQUN0QixLQUFLLFVBQVU7VUFDZCxJQUFJakUsS0FBSyxDQUFDcUIsYUFBYSxDQUFDdUsseUJBQXlCLEVBQUU7WUFDbERELGlCQUFpQixHQUFHN0wsU0FBUyxDQUFDeUYsc0JBQXNCLENBQUN2RixLQUFLLEVBQUUsSUFBSSxDQUFDO1VBQ2xFLENBQUMsTUFBTTtZQUNOMkwsaUJBQWlCLEdBQUc3TCxTQUFTLENBQUNzSixtQkFBbUIsQ0FBQ3BKLEtBQUssQ0FBQztVQUN6RDtVQUNBO1FBQ0QsS0FBSyxZQUFZO1FBQ2pCLEtBQUssZ0JBQWdCO1FBQ3JCLEtBQUssWUFBWTtVQUFFO1lBQ2xCMkwsaUJBQWlCLEdBQUc3TCxTQUFTLENBQUNnQix3QkFBd0IsQ0FBQ2QsS0FBSyxFQUFFQSxLQUFLLENBQUNpRSxTQUFTLENBQUM7WUFDOUU7VUFDRDtRQUNBLEtBQUssT0FBTztVQUFFO1lBQ2IwSCxpQkFBaUIsR0FBRzdMLFNBQVMsQ0FBQzRELGdCQUFnQixDQUFDMUQsS0FBSyxDQUFDO1lBQ3JEO1VBQ0Q7UUFDQSxLQUFLLFFBQVE7VUFBRTtZQUNkMkwsaUJBQWlCLEdBQUc3TCxTQUFTLENBQUM0RCxnQkFBZ0IsQ0FBQzFELEtBQUssQ0FBQztZQUNyRDtVQUNEO1FBQ0EsS0FBSyxvQkFBb0I7VUFBRTtZQUMxQjJMLGlCQUFpQixHQUFHN0wsU0FBUyxDQUFDbUgsNkJBQTZCLENBQUNqSCxLQUFLLENBQUM7WUFDbEU7VUFDRDtRQUNBLEtBQUssaUJBQWlCO1VBQ3JCMkwsaUJBQWlCLEdBQUc3TCxTQUFTLENBQUNpSywwQkFBMEIsQ0FBQy9KLEtBQUssQ0FBQztVQUMvRDtRQUNELEtBQUssVUFBVTtVQUNkMkwsaUJBQWlCLEdBQUc3TCxTQUFTLENBQUM2SixtQkFBbUIsQ0FBQzNKLEtBQUssQ0FBQztVQUN4RDtRQUNELEtBQUssV0FBVztVQUNmMkwsaUJBQWlCLEdBQUc3TCxTQUFTLENBQUNnTCxvQkFBb0IsQ0FBQzlLLEtBQUssQ0FBQztVQUN6RDtRQUNEO01BQ0Q7TUFFQSxPQUFPMkwsaUJBQWlCO0lBQ3pCO0VBQ0QsQ0FBQztFQUFDLE9BRWE3TCxTQUFTO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,37 +1,31 @@
|
|
|
1
1
|
import type { DataFieldTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
2
2
|
import type { BindingToolkitExpression } from "sap/fe/base/BindingToolkit";
|
|
3
|
-
import {
|
|
4
|
-
import EventDelegateHook from "sap/fe/base/EventDelegateHook";
|
|
3
|
+
import { pathInModel } from "sap/fe/base/BindingToolkit";
|
|
5
4
|
import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
|
|
6
|
-
import
|
|
5
|
+
import { getContextRelativeTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
7
6
|
import { hasValueHelpWithFixedValues } from "sap/fe/core/templating/PropertyHelper";
|
|
8
7
|
import * as UIFormatter from "sap/fe/core/templating/UIFormatters";
|
|
9
8
|
import CollaborationHBox from "sap/fe/macros/controls/CollaborationHBox";
|
|
10
9
|
import RadioButtons from "sap/fe/macros/controls/RadioButtons";
|
|
11
10
|
import { getMultipleLinesForDataField, getTextAlignment } from "sap/fe/macros/field/FieldTemplating";
|
|
12
11
|
import type { FieldBlockProperties } from "sap/fe/macros/internal/field/FieldStructureHelper";
|
|
13
|
-
import Avatar from "sap/m/Avatar";
|
|
14
|
-
import type { CheckBox$SelectEvent } from "sap/m/CheckBox";
|
|
15
12
|
import CheckBox from "sap/m/CheckBox";
|
|
16
13
|
import DatePicker from "sap/m/DatePicker";
|
|
17
14
|
import DateTimePicker from "sap/m/DateTimePicker";
|
|
18
15
|
import FlexItemData from "sap/m/FlexItemData";
|
|
19
16
|
import Input from "sap/m/Input";
|
|
20
|
-
import type { InputBase$ChangeEvent } from "sap/m/InputBase";
|
|
21
17
|
import type { MaskInput$LiveChangeEvent } from "sap/m/MaskInput";
|
|
22
18
|
import MaskInput from "sap/m/MaskInput";
|
|
23
19
|
import MaskInputRule from "sap/m/MaskInputRule";
|
|
24
|
-
import type { RatingIndicator$ChangeEvent } from "sap/m/RatingIndicator";
|
|
25
20
|
import RatingIndicator from "sap/m/RatingIndicator";
|
|
26
21
|
import TextArea from "sap/m/TextArea";
|
|
27
22
|
import TimePicker from "sap/m/TimePicker";
|
|
28
|
-
import type Event from "sap/ui/base/Event";
|
|
29
23
|
import type { default as Control, Control$ValidateFieldGroupEvent, default as Control1 } from "sap/ui/core/Control";
|
|
30
24
|
import CustomData from "sap/ui/core/CustomData";
|
|
31
|
-
import type { Field$ChangeEvent } from "sap/ui/mdc/Field";
|
|
32
25
|
import Field from "sap/ui/mdc/Field";
|
|
33
26
|
import FieldEditMode from "sap/ui/mdc/enums/FieldEditMode";
|
|
34
27
|
import type { MetaModelType } from "../../../../../../../../types/metamodel_types";
|
|
28
|
+
import CollaborativeDraftHandler from "../../CollaborativeDraftHandler";
|
|
35
29
|
import FieldHelper from "../../field/FieldHelper";
|
|
36
30
|
import TextAreaEx from "../../field/TextAreaEx";
|
|
37
31
|
|
|
@@ -55,29 +49,12 @@ const EditStyle = {
|
|
|
55
49
|
* @returns An XML-based string with the definition of the avatar
|
|
56
50
|
*/
|
|
57
51
|
getCollaborationAvatar(field: FieldBlockProperties): string {
|
|
58
|
-
const collaborationHasActivityExpression = compileExpression(field.collaborationExpression);
|
|
59
|
-
const collaborationInitialsExpression = compileExpression(
|
|
60
|
-
UIFormatter.getCollaborationExpression(field.dataModelPath, CollaborationFormatters.getCollaborationActivityInitials)
|
|
61
|
-
);
|
|
62
|
-
const collaborationColorExpression = compileExpression(
|
|
63
|
-
UIFormatter.getCollaborationExpression(field.dataModelPath, CollaborationFormatters.getCollaborationActivityColor)
|
|
64
|
-
);
|
|
65
|
-
|
|
66
52
|
return (
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
customDisplaySize="1.5rem"
|
|
73
|
-
customFontSize="0.8rem"
|
|
74
|
-
backgroundColor={collaborationColorExpression}
|
|
75
|
-
press={field.eventHandlers.showCollaborationEditUser as unknown as ((oEvent: Event) => void) | undefined}
|
|
76
|
-
>
|
|
77
|
-
{{
|
|
78
|
-
dependents: <EventDelegateHook stopTapPropagation={true} />
|
|
79
|
-
}}
|
|
80
|
-
</Avatar>
|
|
53
|
+
<CollaborativeDraftHandler
|
|
54
|
+
metaPath={getContextRelativeTargetObjectPath(field.dataModelPath)}
|
|
55
|
+
contextPath={field.contextPath.getPath()}
|
|
56
|
+
showAvatar={true}
|
|
57
|
+
/>
|
|
81
58
|
);
|
|
82
59
|
},
|
|
83
60
|
|
|
@@ -109,10 +86,7 @@ const EditStyle = {
|
|
|
109
86
|
showTimezone: field.showTimezone,
|
|
110
87
|
minDate: type === "DateTimePicker" || type === "DatePicker" ? field.minDateExpression : undefined,
|
|
111
88
|
maxDate: type === "DateTimePicker" || type === "DatePicker" ? field.maxDateExpression : undefined,
|
|
112
|
-
change:
|
|
113
|
-
type === "DateTimePicker"
|
|
114
|
-
? ((field.change || field.eventHandlers.change) as unknown as (oEvent: InputBase$ChangeEvent) => void)
|
|
115
|
-
: (field.eventHandlers.change as unknown as (oEvent: InputBase$ChangeEvent) => void),
|
|
89
|
+
change: type === "DateTimePicker" ? field.change || field.eventHandlers.change : field.eventHandlers.change,
|
|
116
90
|
liveChange: field.eventHandlers.liveChange,
|
|
117
91
|
valueFormat: type === "DatePicker" ? "medium" : undefined,
|
|
118
92
|
validateFieldGroup: field.eventHandlers.validateFieldGroup as (oEvent: Control$ValidateFieldGroupEvent) => void
|
|
@@ -170,6 +144,7 @@ const EditStyle = {
|
|
|
170
144
|
value={field.valueBindingExpression}
|
|
171
145
|
placeholder={field.editStylePlaceholder}
|
|
172
146
|
width="100%"
|
|
147
|
+
fieldWidth={"70%"}
|
|
173
148
|
editable={field.editableExpression}
|
|
174
149
|
description={field.staticDescription}
|
|
175
150
|
enabled={field.enabledExpression}
|
|
@@ -179,7 +154,7 @@ const EditStyle = {
|
|
|
179
154
|
type={field.editStyle === "Masked" ? "Password" : undefined}
|
|
180
155
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
181
156
|
maxLength={field.formatOptions.textMaxLength}
|
|
182
|
-
change={field.eventHandlers.change
|
|
157
|
+
change={field.eventHandlers.change}
|
|
183
158
|
liveChange={field.eventHandlers.liveChange}
|
|
184
159
|
validateFieldGroup={field.eventHandlers.validateFieldGroup as (oEvent: Control$ValidateFieldGroupEvent) => void}
|
|
185
160
|
>
|
|
@@ -272,6 +247,7 @@ const EditStyle = {
|
|
|
272
247
|
fixedValuesPath={fixedValuesPath as unknown as `{${string}}`}
|
|
273
248
|
fieldGroupIds={field.fieldGroupIds}
|
|
274
249
|
value={field.valueBindingExpression}
|
|
250
|
+
editableExpression={field.editableExpression}
|
|
275
251
|
enabledExpression={field.enabledExpression}
|
|
276
252
|
radioButtonTextProperty={valueListDescriptionPath}
|
|
277
253
|
radioButtonKeyProperty={valueListKeyPath}
|
|
@@ -323,7 +299,7 @@ const EditStyle = {
|
|
|
323
299
|
growing={(field.formatOptions.textMaxLines as unknown as number) > 0 ? true : undefined}
|
|
324
300
|
growingMaxLines={field.formatOptions.textMaxLines}
|
|
325
301
|
width="100%"
|
|
326
|
-
change={field.eventHandlers.change
|
|
302
|
+
change={field.eventHandlers.change}
|
|
327
303
|
fieldGroupIds={field.fieldGroupIds}
|
|
328
304
|
/>
|
|
329
305
|
);
|
|
@@ -354,7 +330,7 @@ const EditStyle = {
|
|
|
354
330
|
textAlign={textAlign}
|
|
355
331
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control1 | string>}
|
|
356
332
|
label={label}
|
|
357
|
-
change={field.eventHandlers.change
|
|
333
|
+
change={field.eventHandlers.change}
|
|
358
334
|
liveChange={field.eventHandlers.liveChange}
|
|
359
335
|
validateFieldGroup={field.eventHandlers.validateFieldGroup as (oEvent: Control$ValidateFieldGroupEvent) => void}
|
|
360
336
|
>
|
|
@@ -389,7 +365,7 @@ const EditStyle = {
|
|
|
389
365
|
text={isCheckBoxGroupItem ? field.label : undefined}
|
|
390
366
|
wrapping={isCheckBoxGroupItem ? true : undefined}
|
|
391
367
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
392
|
-
select={field.eventHandlers.change
|
|
368
|
+
select={field.eventHandlers.change}
|
|
393
369
|
validateFieldGroup={field.eventHandlers.validateFieldGroup as (oEvent: Control$ValidateFieldGroupEvent) => void}
|
|
394
370
|
>
|
|
395
371
|
{{ customData: <CustomData key="sourcePath" value={field.dataSourcePath} /> }}
|
|
@@ -431,7 +407,7 @@ const EditStyle = {
|
|
|
431
407
|
ariaLabelledBy={field.ariaLabelledBy as unknown as Array<Control | string>}
|
|
432
408
|
maxLength={field.formatOptions.textMaxLength}
|
|
433
409
|
showExceededText={showExceededText}
|
|
434
|
-
change={field.eventHandlers.change
|
|
410
|
+
change={field.eventHandlers.change}
|
|
435
411
|
liveChange={field.eventHandlers.liveChange}
|
|
436
412
|
validateFieldGroup={field.eventHandlers.validateFieldGroup as (oEvent: Control$ValidateFieldGroupEvent) => void}
|
|
437
413
|
>
|
|
@@ -462,7 +438,7 @@ const EditStyle = {
|
|
|
462
438
|
iconSize="1.375rem"
|
|
463
439
|
class="sapUiTinyMarginTopBottom"
|
|
464
440
|
editable="true"
|
|
465
|
-
change={field.eventHandlers.change
|
|
441
|
+
change={field.eventHandlers.change}
|
|
466
442
|
>
|
|
467
443
|
{{
|
|
468
444
|
layoutData: EditStyle.getLayoutData(field)
|
|
@@ -54,7 +54,7 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper", "sap/fe/macros/field/FieldF
|
|
|
54
54
|
} else {
|
|
55
55
|
id = undefined;
|
|
56
56
|
}
|
|
57
|
-
if (field.change === null || field.change === "null") {
|
|
57
|
+
if (field.change === null || field.change?.toString() === "null") {
|
|
58
58
|
field.change = undefined;
|
|
59
59
|
}
|
|
60
60
|
return createField(field, id);
|
|
@@ -62,4 +62,4 @@ sap.ui.define(["sap/fe/core/helpers/StableIdHelper", "sap/fe/macros/field/FieldF
|
|
|
62
62
|
_exports.getTemplateWithField = getTemplateWithField;
|
|
63
63
|
return _exports;
|
|
64
64
|
}, false);
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVGaWVsZCIsImZpZWxkIiwiaWQiLCJfanN4IiwiRmllbGQiLCJjaGFuZ2UiLCJsaXZlQ2hhbmdlIiwib25MaXZlQ2hhbmdlIiwiZm9jdXNpbiIsIl9mbGV4SWQiLCJpZFByZWZpeCIsInZoSWRQcmVmaXgiLCJjb250ZXh0UGF0aCIsImdldFBhdGgiLCJtZXRhUGF0aCIsIm1ldGFNb2RlbCIsIm5hdmlnYXRlQWZ0ZXJBY3Rpb24iLCJlZGl0TW9kZSIsImNvbXB1dGVkRWRpdE1vZGUiLCJ3cmFwIiwiY2xhc3MiLCJhcmlhTGFiZWxsZWRCeSIsInRleHRBbGlnbiIsInNlbWFudGljT2JqZWN0Iiwic2hvd0Vycm9yT2JqZWN0U3RhdHVzIiwicmVhZE9ubHkiLCJ2YWx1ZSIsImRlc2NyaXB0aW9uIiwicmVxdWlyZWQiLCJyZXF1aXJlZEV4cHJlc3Npb24iLCJlZGl0YWJsZSIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImNvbGxhYm9yYXRpb25FbmFibGVkIiwidmlzaWJsZSIsIm1haW5Qcm9wZXJ0eVJlbGF0aXZlUGF0aCIsImN1c3RvbVZhbHVlQmluZGluZyIsInNsaWNlIiwidW5kZWZpbmVkIiwiY2hpbGRyZW4iLCJmb3JtYXRPcHRpb25zIiwiRmllbGRGb3JtYXRPcHRpb25zIiwic2VyaWFsaXplIiwiZ2V0VGVtcGxhdGVXaXRoRmllbGQiLCJfYXBpSWQiLCJnZW5lcmF0ZSIsInRvU3RyaW5nIiwiX2V4cG9ydHMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpZWxkQmxvY2tTdHJ1Y3R1cmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBGaWVsZEZvcm1hdE9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRGb3JtYXRPcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwiLi4vLi4vRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgRmllbGRCbG9ja1Byb3BlcnRpZXMgfSBmcm9tIFwiLi9GaWVsZFN0cnVjdHVyZUhlbHBlclwiO1xuXG5mdW5jdGlvbiBjcmVhdGVGaWVsZChmaWVsZDogRmllbGRCbG9ja1Byb3BlcnRpZXMsIGlkPzogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIChcblx0XHQ8RmllbGRcblx0XHRcdGNvcmU6cmVxdWlyZT1cIntUYWJsZUFQSTogJ3NhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUEknfVwiXG5cdFx0XHRjaGFuZ2U9e2ZpZWxkLmNoYW5nZSBhcyB1bmtub3duIGFzIEV2ZW50SGFuZGxlcn1cblx0XHRcdGxpdmVDaGFuZ2U9e2ZpZWxkLm9uTGl2ZUNoYW5nZSBhcyB1bmtub3duIGFzIEV2ZW50SGFuZGxlcn1cblx0XHRcdGZvY3VzaW49e1wiLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNJblwiIGFzIHVua25vd24gYXMgRXZlbnRIYW5kbGVyfVxuXHRcdFx0aWQ9e2lkIHx8IGZpZWxkLmlkfVxuXHRcdFx0X2ZsZXhJZD17ZmllbGQuX2ZsZXhJZH1cblx0XHRcdGlkUHJlZml4PXtmaWVsZC5pZFByZWZpeH1cblx0XHRcdHZoSWRQcmVmaXg9e2ZpZWxkLnZoSWRQcmVmaXh9XG5cdFx0XHRjb250ZXh0UGF0aD17ZmllbGQuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdG1ldGFQYXRoPXtmaWVsZC5tZXRhUGF0aC5nZXRQYXRoKCl9XG5cdFx0XHRtZXRhTW9kZWw9e2ZpZWxkLm1ldGFNb2RlbH1cblx0XHRcdG5hdmlnYXRlQWZ0ZXJBY3Rpb249e2ZpZWxkLm5hdmlnYXRlQWZ0ZXJBY3Rpb259XG5cdFx0XHRlZGl0TW9kZT17ZmllbGQuZWRpdE1vZGUgPz8gZmllbGQuY29tcHV0ZWRFZGl0TW9kZX1cblx0XHRcdHdyYXA9e2ZpZWxkLndyYXB9XG5cdFx0XHRjbGFzcz17ZmllbGQuY2xhc3N9XG5cdFx0XHRhcmlhTGFiZWxsZWRCeT17ZmllbGQuYXJpYUxhYmVsbGVkQnl9XG5cdFx0XHR0ZXh0QWxpZ249e2ZpZWxkLnRleHRBbGlnbn1cblx0XHRcdHNlbWFudGljT2JqZWN0PXtmaWVsZC5zZW1hbnRpY09iamVjdH1cblx0XHRcdHNob3dFcnJvck9iamVjdFN0YXR1cz17ZmllbGQuc2hvd0Vycm9yT2JqZWN0U3RhdHVzfVxuXHRcdFx0cmVhZE9ubHk9e2ZpZWxkLnJlYWRPbmx5fVxuXHRcdFx0dmFsdWU9e2ZpZWxkLnZhbHVlfVxuXHRcdFx0ZGVzY3JpcHRpb249e2ZpZWxkLmRlc2NyaXB0aW9ufVxuXHRcdFx0cmVxdWlyZWQ9e2ZpZWxkLnJlcXVpcmVkRXhwcmVzc2lvbiBhcyB1bmtub3duIGFzIGJvb2xlYW4gfCB1bmRlZmluZWR9XG5cdFx0XHRlZGl0YWJsZT17ZmllbGQuZWRpdGFibGVFeHByZXNzaW9uIGFzIHVua25vd24gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZH1cblx0XHRcdGNvbGxhYm9yYXRpb25FbmFibGVkPXtmaWVsZC5jb2xsYWJvcmF0aW9uRW5hYmxlZH1cblx0XHRcdHZpc2libGU9e2ZpZWxkLnZpc2libGUgYXMgdW5rbm93biBhcyBib29sZWFuIHwgdW5kZWZpbmVkfVxuXHRcdFx0bWFpblByb3BlcnR5UmVsYXRpdmVQYXRoPXtmaWVsZC5tYWluUHJvcGVydHlSZWxhdGl2ZVBhdGh9XG5cdFx0XHRjdXN0b21WYWx1ZUJpbmRpbmc9e2ZpZWxkLnZhbHVlPy5zbGljZSgwLCAxKSA9PT0gXCJ7XCIgPyBmaWVsZC52YWx1ZSA6IHVuZGVmaW5lZH0gLy8gd2UgZG9uJ3QgbmVlZCB0aGUgY3VzdG9tVmFsdWVCaW5kaW5nIHNldCBpZiBmaWVsZC52YWx1ZSBpcyBub3QgYSBiaW5kaW5nIGFzIHRoaXMgaXMgb25seSB1c2VkIHRvIGVuYWJsZSBiaW5kaW5nIHJlZnJlc2hlc1xuXHRcdD5cblx0XHRcdHt7IGZvcm1hdE9wdGlvbnM6IG5ldyBGaWVsZEZvcm1hdE9wdGlvbnMoZmllbGQuZm9ybWF0T3B0aW9ucykuc2VyaWFsaXplKCkgfX1cblx0XHQ8L0ZpZWxkPlxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcGxhdGVXaXRoRmllbGQoZmllbGQ6IEZpZWxkQmxvY2tQcm9wZXJ0aWVzKTogc3RyaW5nIHtcblx0bGV0IGlkO1xuXG5cdGlmIChmaWVsZC5fYXBpSWQpIHtcblx0XHRpZCA9IGZpZWxkLl9hcGlJZDtcblx0fSBlbHNlIGlmIChmaWVsZC5pZFByZWZpeCkge1xuXHRcdGlkID0gZ2VuZXJhdGUoW2ZpZWxkLmlkUHJlZml4LCBcIkZpZWxkXCJdKTtcblx0fSBlbHNlIGlmIChmaWVsZC5pZCkge1xuXHRcdGlkID0gZmllbGQuaWQ7XG5cdH0gZWxzZSB7XG5cdFx0aWQgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRpZiAoZmllbGQuY2hhbmdlID09PSBudWxsIHx8IGZpZWxkLmNoYW5nZT8udG9TdHJpbmcoKSA9PT0gXCJudWxsXCIpIHtcblx0XHRmaWVsZC5jaGFuZ2UgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRyZXR1cm4gY3JlYXRlRmllbGQoZmllbGQsIGlkKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBTUEsU0FBU0EsV0FBV0EsQ0FBQ0MsS0FBMkIsRUFBRUMsRUFBVyxFQUFVO0lBQ3RFLE9BQ0NDLElBQUEsQ0FBQ0MsS0FBSztNQUNMLGdCQUFhLDRDQUE0QztNQUN6REMsTUFBTSxFQUFFSixLQUFLLENBQUNJLE1BQWtDO01BQ2hEQyxVQUFVLEVBQUVMLEtBQUssQ0FBQ00sWUFBd0M7TUFDMURDLE9BQU8sRUFBRSwwQ0FBc0U7TUFDL0VOLEVBQUUsRUFBRUEsRUFBRSxJQUFJRCxLQUFLLENBQUNDLEVBQUc7TUFDbkJPLE9BQU8sRUFBRVIsS0FBSyxDQUFDUSxPQUFRO01BQ3ZCQyxRQUFRLEVBQUVULEtBQUssQ0FBQ1MsUUFBUztNQUN6QkMsVUFBVSxFQUFFVixLQUFLLENBQUNVLFVBQVc7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
|
|
@@ -54,7 +54,7 @@ export function getTemplateWithField(field: FieldBlockProperties): string {
|
|
|
54
54
|
id = undefined;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
if (field.change === null || field.change === "null") {
|
|
57
|
+
if (field.change === null || field.change?.toString() === "null") {
|
|
58
58
|
field.change = undefined;
|
|
59
59
|
}
|
|
60
60
|
|