@sapui5/sap.fe.core 1.102.0 → 1.103.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 +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +62 -26
- package/src/sap/fe/core/AppComponent.ts +56 -40
- package/src/sap/fe/core/AppStateHandler.js +10 -10
- package/src/sap/fe/core/AppStateHandler.ts +9 -9
- package/src/sap/fe/core/BaseController.js +11 -9
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +236 -109
- package/src/sap/fe/core/CommonUtils.ts +252 -136
- package/src/sap/fe/core/ExtensionAPI.js +24 -27
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +4 -4
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +6 -6
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +8 -8
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +11 -10
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
- package/src/sap/fe/core/controllerextensions/EditFlow.js +129 -118
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +154 -141
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +31 -26
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +34 -35
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +70 -70
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +77 -77
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +84 -78
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +105 -101
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +8 -8
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +19 -26
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +29 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
- package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +22 -22
- package/src/sap/fe/core/controllerextensions/Share.ts +30 -29
- package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +65 -62
- package/src/sap/fe/core/controllerextensions/ViewState.ts +68 -63
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -6
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +12 -17
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +184 -137
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +253 -206
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +113 -121
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +148 -158
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +198 -148
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +223 -159
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -44
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +90 -60
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +52 -55
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +55 -58
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +11 -25
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +2 -2
- package/src/sap/fe/core/controls/FileWrapper.ts +11 -11
- package/src/sap/fe/core/controls/FilterBar.js +6 -2
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +47 -47
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +52 -52
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
- package/src/sap/fe/core/converters/ConverterContext.js +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +14 -14
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +50 -32
- package/src/sap/fe/core/converters/MetaModelConverter.ts +145 -127
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +54 -34
- package/src/sap/fe/core/converters/annotations/DataField.ts +97 -75
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
- package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
- package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -26
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
- package/src/sap/fe/core/converters/controls/Common/Form.js +25 -27
- package/src/sap/fe/core/converters/controls/Common/Form.ts +37 -45
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
- package/src/sap/fe/core/converters/controls/Common/Table.js +174 -183
- package/src/sap/fe/core/converters/controls/Common/Table.ts +237 -250
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +64 -57
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +73 -72
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +98 -96
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +10 -13
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
- package/src/sap/fe/core/converters/helpers/ID.js +46 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
- package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +365 -264
- package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
- package/src/sap/fe/core/helpers/ClassSupport.ts +14 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/MassEditHelper.js +281 -254
- package/src/sap/fe/core/helpers/MassEditHelper.ts +337 -289
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
- package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
- package/src/sap/fe/core/library.js +42 -3
- package/src/sap/fe/core/library.ts +38 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +49 -35
- package/src/sap/fe/core/messagebundle_ar.properties +13 -5
- package/src/sap/fe/core/messagebundle_bg.properties +13 -5
- package/src/sap/fe/core/messagebundle_ca.properties +13 -5
- package/src/sap/fe/core/messagebundle_cs.properties +13 -5
- package/src/sap/fe/core/messagebundle_cy.properties +14 -6
- package/src/sap/fe/core/messagebundle_da.properties +13 -5
- package/src/sap/fe/core/messagebundle_de.properties +15 -7
- package/src/sap/fe/core/messagebundle_el.properties +14 -6
- package/src/sap/fe/core/messagebundle_en.properties +9 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +11 -3
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -1
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -1
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -85
- package/src/sap/fe/core/messagebundle_es.properties +13 -5
- package/src/sap/fe/core/messagebundle_es_MX.properties +13 -5
- package/src/sap/fe/core/messagebundle_et.properties +13 -5
- package/src/sap/fe/core/messagebundle_fi.properties +14 -6
- package/src/sap/fe/core/messagebundle_fr.properties +14 -6
- package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -6
- package/src/sap/fe/core/messagebundle_hi.properties +14 -6
- package/src/sap/fe/core/messagebundle_hr.properties +14 -6
- package/src/sap/fe/core/messagebundle_hu.properties +13 -5
- package/src/sap/fe/core/messagebundle_id.properties +13 -5
- package/src/sap/fe/core/messagebundle_it.properties +33 -25
- package/src/sap/fe/core/messagebundle_iw.properties +13 -5
- package/src/sap/fe/core/messagebundle_ja.properties +14 -6
- package/src/sap/fe/core/messagebundle_kk.properties +13 -5
- package/src/sap/fe/core/messagebundle_ko.properties +13 -5
- package/src/sap/fe/core/messagebundle_lt.properties +13 -5
- package/src/sap/fe/core/messagebundle_lv.properties +14 -6
- package/src/sap/fe/core/messagebundle_ms.properties +13 -5
- package/src/sap/fe/core/messagebundle_nl.properties +13 -5
- package/src/sap/fe/core/messagebundle_no.properties +13 -5
- package/src/sap/fe/core/messagebundle_pl.properties +13 -5
- package/src/sap/fe/core/messagebundle_pt.properties +13 -5
- package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -6
- package/src/sap/fe/core/messagebundle_ro.properties +13 -5
- package/src/sap/fe/core/messagebundle_ru.properties +13 -5
- package/src/sap/fe/core/messagebundle_sh.properties +13 -5
- package/src/sap/fe/core/messagebundle_sk.properties +13 -5
- package/src/sap/fe/core/messagebundle_sl.properties +17 -9
- package/src/sap/fe/core/messagebundle_sv.properties +14 -6
- package/src/sap/fe/core/messagebundle_th.properties +13 -5
- package/src/sap/fe/core/messagebundle_tr.properties +13 -5
- package/src/sap/fe/core/messagebundle_uk.properties +13 -5
- package/src/sap/fe/core/messagebundle_vi.properties +13 -5
- package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -6
- package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -5
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +53 -44
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +54 -46
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +72 -76
- package/src/sap/fe/core/services/ShellServicesFactory.ts +76 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +20 -15
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +26 -21
- package/src/sap/fe/core/support/CommonHelper.js +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +10 -9
- package/src/sap/fe/core/templating/FilterHelper.ts +13 -13
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
- package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
- package/src/sap/fe/core/templating/UIFormatters.js +148 -93
- package/src/sap/fe/core/templating/UIFormatters.ts +196 -124
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import * as CorePasteHelper from "sap/ui/core/util/PasteHelper";
|
|
2
|
-
import MessageBox from "sap/m/MessageBox";
|
|
3
1
|
import Log from "sap/base/Log";
|
|
4
|
-
import PageController from "sap/fe/core/PageController";
|
|
2
|
+
import type PageController from "sap/fe/core/PageController";
|
|
3
|
+
import MessageBox from "sap/m/MessageBox";
|
|
5
4
|
import Core from "sap/ui/core/Core";
|
|
6
|
-
import
|
|
5
|
+
import * as CorePasteHelper from "sap/ui/core/util/PasteHelper";
|
|
6
|
+
import type { CoreEx } from "types/extension_types";
|
|
7
7
|
|
|
8
8
|
export type customValidationMessage = {
|
|
9
9
|
messageText?: string;
|
|
10
10
|
messageTarget?: string;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
const getInfoForEntityProperty = function(propertyPath: any, rowBindingPath: any, metaContext: any, metaModel: any): any {
|
|
13
|
+
const getInfoForEntityProperty = function (propertyPath: any, rowBindingPath: any, metaContext: any, metaModel: any): any {
|
|
14
14
|
const property = metaContext.getProperty(propertyPath),
|
|
15
15
|
formatOptions = { parseKeepsEmptyString: true },
|
|
16
16
|
type = metaModel.getUI5Type(`${rowBindingPath}/${propertyPath}`, formatOptions),
|
|
17
|
-
isIgnored = !property || metaContext.getProperty(propertyPath
|
|
17
|
+
isIgnored = !property || metaContext.getProperty(`${propertyPath}@Org.OData.Core.V1.Computed`);
|
|
18
18
|
return {
|
|
19
19
|
property: propertyPath,
|
|
20
20
|
ignore: isIgnored,
|
|
@@ -22,7 +22,7 @@ const getInfoForEntityProperty = function(propertyPath: any, rowBindingPath: any
|
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
const displayErrorMessages = function(errorMessages: string[]): void {
|
|
25
|
+
const displayErrorMessages = function (errorMessages: string[]): void {
|
|
26
26
|
const messageDetails = [...errorMessages];
|
|
27
27
|
const resourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core"),
|
|
28
28
|
errorCorrectionMessage = resourceBundle.getText("C_PASTE_HELPER_SAPFE_PASTE_ERROR_CORRECTION_MESSAGE"),
|
|
@@ -45,7 +45,7 @@ const displayErrorMessages = function(errorMessages: string[]): void {
|
|
|
45
45
|
|
|
46
46
|
const PasteHelper = {
|
|
47
47
|
displayErrorMessages: displayErrorMessages,
|
|
48
|
-
formatCustomMessage: function(validationMessages: customValidationMessage[], iRowNumber: number): string {
|
|
48
|
+
formatCustomMessage: function (validationMessages: customValidationMessage[], iRowNumber: number): string {
|
|
49
49
|
let errorMessage = "";
|
|
50
50
|
const numberMessages = validationMessages.length;
|
|
51
51
|
const resourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core"),
|
|
@@ -60,7 +60,7 @@ const PasteHelper = {
|
|
|
60
60
|
}
|
|
61
61
|
return errorMessage;
|
|
62
62
|
},
|
|
63
|
-
getColumnInfo: function(table: any): Promise<any[]> {
|
|
63
|
+
getColumnInfo: function (table: any): Promise<any[]> {
|
|
64
64
|
const model = table.getRowBinding().getModel(),
|
|
65
65
|
metaModel = model.getMetaModel(),
|
|
66
66
|
rowBindingPath = model.resolve(table.getRowBinding().getPath(), table.getRowBinding().getContext()),
|
|
@@ -110,15 +110,10 @@ const PasteHelper = {
|
|
|
110
110
|
});
|
|
111
111
|
},
|
|
112
112
|
getInfoForEntityProperty: getInfoForEntityProperty,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
* @param rawData
|
|
116
|
-
* @param table
|
|
117
|
-
* @returns {Promise<any>}
|
|
118
|
-
*/
|
|
119
|
-
parsePastedData: function(rawData: any, table: any): Promise<any[]> {
|
|
113
|
+
|
|
114
|
+
parsePastedData: function (rawData: any, table: any): Promise<any[]> {
|
|
120
115
|
return this.getColumnInfo(table)
|
|
121
|
-
.then(function(pasteInfos: any[]) {
|
|
116
|
+
.then(function (pasteInfos: any[]) {
|
|
122
117
|
// Check if we have data for at least the first editable column
|
|
123
118
|
const pastedColumnCount = rawData.length ? rawData[0].length : 0;
|
|
124
119
|
let firstEditableColumnIndex = -1;
|
|
@@ -133,7 +128,7 @@ const PasteHelper = {
|
|
|
133
128
|
})
|
|
134
129
|
.then((parseResult: any) => {
|
|
135
130
|
if (parseResult.errors) {
|
|
136
|
-
const errorMessages = parseResult.errors.map(function(oElement: any) {
|
|
131
|
+
const errorMessages = parseResult.errors.map(function (oElement: any) {
|
|
137
132
|
return oElement.message;
|
|
138
133
|
});
|
|
139
134
|
this.displayErrorMessages(errorMessages);
|
|
@@ -143,15 +138,15 @@ const PasteHelper = {
|
|
|
143
138
|
}
|
|
144
139
|
});
|
|
145
140
|
},
|
|
146
|
-
pasteData: function(rawData: any, table: any, controller: PageController): Promise<any> {
|
|
141
|
+
pasteData: function (rawData: any, table: any, controller: PageController): Promise<any> {
|
|
147
142
|
const oInternalEditFlow = (controller as any)._editFlow;
|
|
148
143
|
const tableDefinition = table.getParent().getTableDefinition();
|
|
149
144
|
let aData: any[] = [];
|
|
150
145
|
return this.parsePastedData(rawData, table)
|
|
151
|
-
.then(aParsedData => {
|
|
146
|
+
.then((aParsedData) => {
|
|
152
147
|
aData = aParsedData || [];
|
|
153
148
|
return Promise.all(
|
|
154
|
-
aData.map(mData =>
|
|
149
|
+
aData.map((mData) =>
|
|
155
150
|
oInternalEditFlow.getTransactionHelper().validateDocument(
|
|
156
151
|
table.getBindingContext(),
|
|
157
152
|
{
|
|
@@ -163,8 +158,8 @@ const PasteHelper = {
|
|
|
163
158
|
)
|
|
164
159
|
);
|
|
165
160
|
})
|
|
166
|
-
.then(aValidationMessages => {
|
|
167
|
-
const aErrorMessages = aValidationMessages.reduce(function(aMessages, aCustomMessages, index) {
|
|
161
|
+
.then((aValidationMessages) => {
|
|
162
|
+
const aErrorMessages = aValidationMessages.reduce(function (aMessages, aCustomMessages, index) {
|
|
168
163
|
if (aCustomMessages.length > 0) {
|
|
169
164
|
aMessages.push({ messages: aCustomMessages, row: index + 1 });
|
|
170
165
|
}
|
|
@@ -177,7 +172,7 @@ const PasteHelper = {
|
|
|
177
172
|
}
|
|
178
173
|
return aData;
|
|
179
174
|
})
|
|
180
|
-
.then(aValidatedData => {
|
|
175
|
+
.then((aValidatedData) => {
|
|
181
176
|
return aValidatedData.length > 0
|
|
182
177
|
? oInternalEditFlow.createMultipleDocuments(
|
|
183
178
|
table.getRowBinding(),
|
|
@@ -188,7 +183,7 @@ const PasteHelper = {
|
|
|
188
183
|
)
|
|
189
184
|
: undefined;
|
|
190
185
|
})
|
|
191
|
-
.catch(oError => {
|
|
186
|
+
.catch((oError) => {
|
|
192
187
|
Log.error("Error while pasting data", oError);
|
|
193
188
|
});
|
|
194
189
|
}
|
|
@@ -346,4 +346,4 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/mdc/condition/FilterOperatorUtil", "s
|
|
|
346
346
|
};
|
|
347
347
|
return SemanticDateOperators;
|
|
348
348
|
}, false);
|
|
349
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiYWRkT3BlcmF0b3IiLCJnZXRTdXBwb3J0ZWRPcGVyYXRpb25zIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRpb25zIiwiYU9wZXJhdGlvbnMiLCJuIiwicHVzaCIsIm1hcCIsImtleSIsImhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJvQ29uZGl0aW9ucyIsImFTZW1hbnRpY0RhdGVPcHMiLCJhRmlsdGVyQ29uZHRpb24iLCJvU2VtYW50aWNPcGVyYXRvciIsImZpbmQiLCJvQ29uZGl0aW9uIiwib3BlcmF0b3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFLQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLElBQWpCLEVBQXVCLFdBQXZCLENBQTdCO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsY0FBOUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1DLHlCQUF5QixHQUFHLGtCQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLG1CQUFuQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLGVBQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxh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VSxDQUFDQyxRQUFwQyxJQUFnRCxDQUFDLENBQXhEO0FBQ0EsU0FGeUIsQ0FBMUI7O0FBR0EsWUFBSUgsaUJBQUosRUFBdUI7QUFDdEIsaUJBQU8sS0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0E7QUEzQzRCLEdBQTlCO1NBOENlckIscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3JVdGlsIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9GaWx0ZXJPcGVyYXRvclV0aWxcIjtcbmltcG9ydCBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBNb2RlbE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5pbXBvcnQgeyBDb3JlRXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbmNvbnN0IGFTdXBwb3J0ZWRPcGVyYXRpb25zID0gW1wiREFURVwiLCBcIkZST01cIiwgXCJUT1wiLCBcIkRBVEVSQU5HRVwiXTtcbmNvbnN0IERZTkFNSUNfREFURV9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFXCI7XG5jb25zdCBGSVhFRF9EQVRFX0NBVEVHT1JZID0gXCJGSVhFRC5EQVRFXCI7XG5jb25zdCBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEUuSU5UXCI7XG5jb25zdCBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFUkFOR0VcIjtcbmNvbnN0IERZTkFNSUNfTU9OVEhfQ0FURUdPUlkgPSBcIkRZTkFNSUMuTU9OVEhcIjtcbmNvbnN0IEZJWEVEX1dFRUtfQ0FURUdPUlkgPSBcIkZJWEVELldFRUtcIjtcbmNvbnN0IEZJWEVEX01PTlRIX0NBVEVHT1JZID0gXCJGSVhFRC5NT05USFwiO1xuY29uc3QgRklYRURfUVVBUlRFUl9DQVRFR09SWSA9IFwiRklYRUQuUVVBUlRFUlwiO1xuY29uc3QgRklYRURfWUVBUl9DQVRFR09SWSA9IFwiRklYRUQuWUVBUlwiO1xuY29uc3QgRFlOQU1JQ19XRUVLX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5XRUVLLklOVFwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuTU9OVEguSU5UXCI7XG5jb25zdCBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLlFVQVJURVIuSU5UXCI7XG5jb25zdCBEWU5BTUlDX1lFQVJfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLllFQVIuSU5UXCI7XG5jb25zdCBtU2VtYW50aWNEYXRlT3BlcmF0aW9uczogYW55ID0ge1xuXHRcIkRBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiRlJPTVwiOiB7XG5cdFx0XCJrZXlcIjogXCJGUk9NXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJUT1wiOiB7XG5cdFx0XCJrZXlcIjogXCJUT1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiREFURVJBTkdFXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVSQU5HRVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUllcblx0fSxcblx0XCJTUEVDSUZJQ01PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIlNQRUNJRklDTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJUT0RBWVwiOiB7XG5cdFx0XCJrZXlcIjogXCJUT0RBWVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZRlJPTVRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZRlJPTVRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiWUVTVEVSREFZXCI6IHtcblx0XHRcImtleVwiOiBcIllFU1RFUkRBWVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPTU9SUk9XXCI6IHtcblx0XHRcImtleVwiOiBcIlRPTU9SUk9XXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVERBWVNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVERBWVNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNXRUVLXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNXRUVLXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9XRUVLX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFdFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFdFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1NcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFdFRUtTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFdFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFdFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1NcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFdFRUtTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU01PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVE1PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVE1PTlRIU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVE1PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVE1PTlRIU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTUVVBUlRFUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTUVVBUlRFUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RRVUFSVEVSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRRVUFSVEVSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIxXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIxXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjJcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSM1wiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSM1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVI0XCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVI0XCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1lFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUWUVBUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUWUVBUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRUFSVE9EQVRFXCI6IHtcblx0XHRcImtleVwiOiBcIllFQVJUT0RBVEVcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFVE9ZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVUT1lFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fVxufTtcblxuZnVuY3Rpb24gX2dldERhdGVSYW5nZU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZTogYW55KSB7XG5cdGNvbnN0IHNEYXRlUmFuZ2UgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVfUkFOR0VcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVJBTkdFXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuQlQsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoW14hXS4qKSBcXFxcLSAoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSAtIHsxfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGYsIChPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGVSYW5nZSxcblx0XHR0b2tlblRleHQ6IHNEYXRlUmFuZ2UsXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCIsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uKGFWYWx1ZXM6IGFueSwgb1R5cGU6IGFueSkge1xuXHRcdFx0aWYgKGFWYWx1ZXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJEYXRlIFJhbmdlIG11c3QgaGF2ZSB0d28gdmFsdWVzXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzBdKTtcblx0XHRcdFx0Y29uc3QgdG9EYXRlID0gbmV3IERhdGUoYVZhbHVlc1sxXSk7XG5cdFx0XHRcdGlmIChmcm9tRGF0ZS5nZXRUaW1lKCkgPiB0b0RhdGUuZ2V0VGltZSgpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRnJvbSBEYXRlIFNob3VsZCBCZSBMZXNzIFRoYW4gVG8gRGF0ZVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0T3BlcmF0b3IucHJvdG90eXBlLnZhbGlkYXRlLmFwcGx5KHRoaXMsIFthVmFsdWVzLCBvVHlwZV0pO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGUgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkVRLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGUsXG5cdFx0dG9rZW5UZXh0OiBzRGF0ZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRnJvbSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfRlJPTVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJGUk9NXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuR0UsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRnJvbSxcblx0XHR0b2tlblRleHQ6IHNGcm9tLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0VG9PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzVG8gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1RPXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIlRPXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuTEUsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzVG8sXG5cdFx0dG9rZW5UZXh0OiBzVG8sXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbjogYW55LCBhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0aWYgKCFhT3BlcmF0b3JDb25maWd1cmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbiA9IEFycmF5LmlzQXJyYXkoYU9wZXJhdG9yQ29uZmlndXJhdGlvbikgPyBhT3BlcmF0b3JDb25maWd1cmF0aW9uIDogW2FPcGVyYXRvckNvbmZpZ3VyYXRpb25dO1xuXHRsZXQgYlJlc3VsdDtcblxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uLnNvbWUoZnVuY3Rpb24ob09wZXJhdG9yQ29uZmlndXJhdGlvbjogYW55KSB7XG5cdFx0bGV0IGo7XG5cdFx0aWYgKCFvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGgpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBzVmFsdWUgPSBvT3BlcmF0aW9uW29PcGVyYXRvckNvbmZpZ3VyYXRpb24ucGF0aF07XG5cdFx0Y29uc3QgYkV4Y2x1ZGUgPSBvT3BlcmF0b3JDb25maWd1cmF0aW9uLmV4Y2x1ZGUgfHwgZmFsc2U7XG5cdFx0bGV0IGFPcGVyYXRvclZhbHVlcztcblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmNvbnRhaW5zICYmIHNWYWx1ZSkge1xuXHRcdFx0YU9wZXJhdG9yVmFsdWVzID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucy5zcGxpdChcIixcIik7XG5cdFx0XHRiUmVzdWx0ID0gYkV4Y2x1ZGU7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgYU9wZXJhdG9yVmFsdWVzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIWJFeGNsdWRlICYmIHNWYWx1ZS5pbmRleE9mKGFPcGVyYXRvclZhbHVlc1tqXSkgPiAtMSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzICYmIHNWYWx1ZSkge1xuXHRcdFx0YU9wZXJhdG9yVmFsdWVzID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5lcXVhbHMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlID09PSBhT3BlcmF0b3JWYWx1ZXNbal0pIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIWJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IHRydWU7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0pO1xuXHRyZXR1cm4gYlJlc3VsdDtcbn1cbmNvbnN0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyA9IHtcblx0Ly8gRXh0ZW5kaW5nIG9wZXJhdG9ycyBmb3IgU2VtYXRpYyBEYXRlIENvbnRyb2xcblx0YWRkU2VtYW50aWNEYXRlT3BlcmF0b3JzOiBmdW5jdGlvbigpIHtcblx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRcdEZpbHRlck9wZXJhdG9yVXRpbC5hZGRPcGVyYXRvcihfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXRGcm9tT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXRUb09wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZSkpO1xuXHR9LFxuXHRnZXRTdXBwb3J0ZWRPcGVyYXRpb25zOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gYVN1cHBvcnRlZE9wZXJhdGlvbnM7XG5cdH0sXG5cdGdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhtU2VtYW50aWNEYXRlT3BlcmF0aW9ucyk7XG5cdH0sXG5cdC8vIFRPRE86IFdvdWxkIG5lZWQgdG8gY2hlY2sgd2l0aCBNREMgZm9yIHJlbW92ZU9wZXJhdG9yIG1ldGhvZFxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5cdHJlbW92ZVNlbWFudGljRGF0ZU9wZXJhdG9yczogZnVuY3Rpb24oKSB7fSxcblx0Ly8gVG8gZmlsdGVyIG9wZXJhdG9ycyBiYXNlZCBvbiBtYW5pZmVzdCBhT3BlcmF0b3JDb25maWd1cmF0aW9uIHNldHRpbmdzXG5cdGdldEZpbHRlck9wZXJhdGlvbnM6IGZ1bmN0aW9uKGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGNvbnN0IGFPcGVyYXRpb25zID0gW107XG5cdFx0Zm9yIChjb25zdCBuIGluIG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBvT3BlcmF0aW9uID0gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnNbbl07XG5cdFx0XHRpZiAoX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uLCBhT3BlcmF0b3JDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRhT3BlcmF0aW9ucy5wdXNoKG9PcGVyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYU9wZXJhdGlvbnMubWFwKGZ1bmN0aW9uKG9PcGVyYXRpb246IGFueSkge1xuXHRcdFx0cmV0dXJuIG9PcGVyYXRpb24ua2V5O1xuXHRcdH0pO1xuXHR9LFxuXHRoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBmdW5jdGlvbihvQ29uZGl0aW9uczogYW55KSB7XG5cdFx0Y29uc3QgYVNlbWFudGljRGF0ZU9wcyA9IHRoaXMuZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucygpO1xuXHRcdGZvciAoY29uc3QgbiBpbiBvQ29uZGl0aW9ucykge1xuXHRcdFx0Y29uc3QgYUZpbHRlckNvbmR0aW9uID0gb0NvbmRpdGlvbnNbbl07XG5cdFx0XHRjb25zdCBvU2VtYW50aWNPcGVyYXRvciA9IGFGaWx0ZXJDb25kdGlvbi5maW5kKGZ1bmN0aW9uKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYVNlbWFudGljRGF0ZU9wcy5pbmRleE9mKG9Db25kaXRpb24ub3BlcmF0b3IpID4gLTE7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvU2VtYW50aWNPcGVyYXRvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG4iXX0=
|
|
349
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiYWRkT3BlcmF0b3IiLCJnZXRTdXBwb3J0ZWRPcGVyYXRpb25zIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRpb25zIiwiYU9wZXJhdGlvbnMiLCJuIiwicHVzaCIsIm1hcCIsImtleSIsImhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJvQ29uZGl0aW9ucyIsImFTZW1hbnRpY0RhdGVPcHMiLCJhRmlsdGVyQ29uZHRpb24iLCJvU2VtYW50aWNPcGVyYXRvciIsImZpbmQiLCJvQ29uZGl0aW9uIiwib3BlcmF0b3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFLQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLElBQWpCLEVBQXVCLFdBQXZCLENBQTdCO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsY0FBOUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1DLHlCQUF5QixHQUFHLGtCQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLG1CQUFuQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLGVBQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxh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VSxDQUFDQyxRQUFwQyxJQUFnRCxDQUFDLENBQXhEO0FBQ0EsU0FGeUIsQ0FBMUI7O0FBR0EsWUFBSUgsaUJBQUosRUFBdUI7QUFDdEIsaUJBQU8sS0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0E7QUEzQzRCLEdBQTlCO1NBOENlckIscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3JVdGlsIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9GaWx0ZXJPcGVyYXRvclV0aWxcIjtcbmltcG9ydCBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBNb2RlbE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IENvcmVFeCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuY29uc3QgYVN1cHBvcnRlZE9wZXJhdGlvbnMgPSBbXCJEQVRFXCIsIFwiRlJPTVwiLCBcIlRPXCIsIFwiREFURVJBTkdFXCJdO1xuY29uc3QgRFlOQU1JQ19EQVRFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVcIjtcbmNvbnN0IEZJWEVEX0RBVEVfQ0FURUdPUlkgPSBcIkZJWEVELkRBVEVcIjtcbmNvbnN0IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuREFURS5JTlRcIjtcbmNvbnN0IERZTkFNSUNfREFURVJBTkdFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVSQU5HRVwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USFwiO1xuY29uc3QgRklYRURfV0VFS19DQVRFR09SWSA9IFwiRklYRUQuV0VFS1wiO1xuY29uc3QgRklYRURfTU9OVEhfQ0FURUdPUlkgPSBcIkZJWEVELk1PTlRIXCI7XG5jb25zdCBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZID0gXCJGSVhFRC5RVUFSVEVSXCI7XG5jb25zdCBGSVhFRF9ZRUFSX0NBVEVHT1JZID0gXCJGSVhFRC5ZRUFSXCI7XG5jb25zdCBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLldFRUsuSU5UXCI7XG5jb25zdCBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USC5JTlRcIjtcbmNvbnN0IERZTkFNSUNfUVVBUlRFUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuUVVBUlRFUi5JTlRcIjtcbmNvbnN0IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuWUVBUi5JTlRcIjtcbmNvbnN0IG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBhbnkgPSB7XG5cdFwiREFURVwiOiB7XG5cdFx0XCJrZXlcIjogXCJEQVRFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJGUk9NXCI6IHtcblx0XHRcImtleVwiOiBcIkZST01cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFUkFOR0VcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVJBTkdFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWVxuXHR9LFxuXHRcIlNQRUNJRklDTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiU1BFQ0lGSUNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9EQVlGUk9NVE9cIjoge1xuXHRcdFwia2V5XCI6IFwiVE9EQVlGUk9NVE9cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRVNURVJEQVlcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVTVEVSREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9NT1JST1dcIjoge1xuXHRcdFwia2V5XCI6IFwiVE9NT1JST1dcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFREQVlTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFREQVlTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1dFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1dFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU01PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJORVhUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjFcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjFcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSMlwiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSMlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIzXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIzXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjRcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjRcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJUSElTWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIllFQVJUT0RBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVBUlRPREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkRBVEVUT1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVRPWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9XG59O1xuXG5mdW5jdGlvbiBfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGVSYW5nZSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfREFURV9SQU5HRVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJEQVRFUkFOR0VcIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5CVCxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKChbXiFdLiopIFxcXFwtICguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9IC0gezF9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZiwgKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRGF0ZVJhbmdlLFxuXHRcdHRva2VuVGV4dDogc0RhdGVSYW5nZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIixcblx0XHR2YWxpZGF0ZTogZnVuY3Rpb24gKGFWYWx1ZXM6IGFueSwgb1R5cGU6IGFueSkge1xuXHRcdFx0aWYgKGFWYWx1ZXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJEYXRlIFJhbmdlIG11c3QgaGF2ZSB0d28gdmFsdWVzXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzBdKTtcblx0XHRcdFx0Y29uc3QgdG9EYXRlID0gbmV3IERhdGUoYVZhbHVlc1sxXSk7XG5cdFx0XHRcdGlmIChmcm9tRGF0ZS5nZXRUaW1lKCkgPiB0b0RhdGUuZ2V0VGltZSgpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRnJvbSBEYXRlIFNob3VsZCBCZSBMZXNzIFRoYW4gVG8gRGF0ZVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0T3BlcmF0b3IucHJvdG90eXBlLnZhbGlkYXRlLmFwcGx5KHRoaXMsIFthVmFsdWVzLCBvVHlwZV0pO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGUgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkVRLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGUsXG5cdFx0dG9rZW5UZXh0OiBzRGF0ZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRnJvbSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfRlJPTVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJGUk9NXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuR0UsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRnJvbSxcblx0XHR0b2tlblRleHQ6IHNGcm9tLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0VG9PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzVG8gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1RPXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIlRPXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuTEUsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzVG8sXG5cdFx0dG9rZW5UZXh0OiBzVG8sXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbjogYW55LCBhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0aWYgKCFhT3BlcmF0b3JDb25maWd1cmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbiA9IEFycmF5LmlzQXJyYXkoYU9wZXJhdG9yQ29uZmlndXJhdGlvbikgPyBhT3BlcmF0b3JDb25maWd1cmF0aW9uIDogW2FPcGVyYXRvckNvbmZpZ3VyYXRpb25dO1xuXHRsZXQgYlJlc3VsdDtcblxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uLnNvbWUoZnVuY3Rpb24gKG9PcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGxldCBqO1xuXHRcdGlmICghb09wZXJhdG9yQ29uZmlndXJhdGlvbi5wYXRoKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc1ZhbHVlID0gb09wZXJhdGlvbltvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGhdO1xuXHRcdGNvbnN0IGJFeGNsdWRlID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5leGNsdWRlIHx8IGZhbHNlO1xuXHRcdGxldCBhT3BlcmF0b3JWYWx1ZXM7XG5cblx0XHRpZiAob09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uY29udGFpbnMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlLmluZGV4T2YoYU9wZXJhdG9yVmFsdWVzW2pdKSA+IC0xKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmVxdWFscyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzLnNwbGl0KFwiLFwiKTtcblx0XHRcdGJSZXN1bHQgPSBiRXhjbHVkZTtcblx0XHRcdGZvciAoaiA9IDA7IGogPCBhT3BlcmF0b3JWYWx1ZXMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0aWYgKGJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUgPT09IGFPcGVyYXRvclZhbHVlc1tqXSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KTtcblx0cmV0dXJuIGJSZXN1bHQ7XG59XG5jb25zdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSB7XG5cdC8vIEV4dGVuZGluZyBvcGVyYXRvcnMgZm9yIFNlbWF0aWMgRGF0ZSBDb250cm9sXG5cdGFkZFNlbWFudGljRGF0ZU9wZXJhdG9yczogZnVuY3Rpb24gKCkge1xuXHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlUmFuZ2VPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldERhdGVPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldFRvT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdH0sXG5cdGdldFN1cHBvcnRlZE9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gYVN1cHBvcnRlZE9wZXJhdGlvbnM7XG5cdH0sXG5cdGdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMobVNlbWFudGljRGF0ZU9wZXJhdGlvbnMpO1xuXHR9LFxuXHQvLyBUT0RPOiBXb3VsZCBuZWVkIHRvIGNoZWNrIHdpdGggTURDIGZvciByZW1vdmVPcGVyYXRvciBtZXRob2Rcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuXHRyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uICgpIHt9LFxuXHQvLyBUbyBmaWx0ZXIgb3BlcmF0b3JzIGJhc2VkIG9uIG1hbmlmZXN0IGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gc2V0dGluZ3Ncblx0Z2V0RmlsdGVyT3BlcmF0aW9uczogZnVuY3Rpb24gKGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGNvbnN0IGFPcGVyYXRpb25zID0gW107XG5cdFx0Zm9yIChjb25zdCBuIGluIG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBvT3BlcmF0aW9uID0gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnNbbl07XG5cdFx0XHRpZiAoX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uLCBhT3BlcmF0b3JDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRhT3BlcmF0aW9ucy5wdXNoKG9PcGVyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYU9wZXJhdGlvbnMubWFwKGZ1bmN0aW9uIChvT3BlcmF0aW9uOiBhbnkpIHtcblx0XHRcdHJldHVybiBvT3BlcmF0aW9uLmtleTtcblx0XHR9KTtcblx0fSxcblx0aGFzU2VtYW50aWNEYXRlT3BlcmF0aW9uczogZnVuY3Rpb24gKG9Db25kaXRpb25zOiBhbnkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNEYXRlT3BzID0gdGhpcy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBuIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRjb25zdCBhRmlsdGVyQ29uZHRpb24gPSBvQ29uZGl0aW9uc1tuXTtcblx0XHRcdGNvbnN0IG9TZW1hbnRpY09wZXJhdG9yID0gYUZpbHRlckNvbmR0aW9uLmZpbmQoZnVuY3Rpb24gKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYVNlbWFudGljRGF0ZU9wcy5pbmRleE9mKG9Db25kaXRpb24ub3BlcmF0b3IpID4gLTE7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvU2VtYW50aWNPcGVyYXRvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG4iXX0=
|
|
@@ -3,7 +3,7 @@ import FilterOperatorUtil from "sap/ui/mdc/condition/FilterOperatorUtil";
|
|
|
3
3
|
import Operator from "sap/ui/mdc/condition/Operator";
|
|
4
4
|
import ModelOperator from "sap/ui/model/FilterOperator";
|
|
5
5
|
import ValidateException from "sap/ui/model/ValidateException";
|
|
6
|
-
import { CoreEx } from "types/extension_types";
|
|
6
|
+
import type { CoreEx } from "types/extension_types";
|
|
7
7
|
|
|
8
8
|
const aSupportedOperations = ["DATE", "FROM", "TO", "DATERANGE"];
|
|
9
9
|
const DYNAMIC_DATE_CATEGORY = "DYNAMIC.DATE";
|
|
@@ -181,7 +181,7 @@ function _getDateRangeOperator(oResourceBundle: any) {
|
|
|
181
181
|
longText: sDateRange,
|
|
182
182
|
tokenText: sDateRange,
|
|
183
183
|
additionalInfo: "",
|
|
184
|
-
validate: function(aValues: any, oType: any) {
|
|
184
|
+
validate: function (aValues: any, oType: any) {
|
|
185
185
|
if (aValues.length < 2) {
|
|
186
186
|
throw new ValidateException("Date Range must have two values");
|
|
187
187
|
} else {
|
|
@@ -245,7 +245,7 @@ function _filterOperation(oOperation: any, aOperatorConfiguration: any) {
|
|
|
245
245
|
aOperatorConfiguration = Array.isArray(aOperatorConfiguration) ? aOperatorConfiguration : [aOperatorConfiguration];
|
|
246
246
|
let bResult;
|
|
247
247
|
|
|
248
|
-
aOperatorConfiguration.some(function(oOperatorConfiguration: any) {
|
|
248
|
+
aOperatorConfiguration.some(function (oOperatorConfiguration: any) {
|
|
249
249
|
let j;
|
|
250
250
|
if (!oOperatorConfiguration.path) {
|
|
251
251
|
return false;
|
|
@@ -289,24 +289,24 @@ function _filterOperation(oOperation: any, aOperatorConfiguration: any) {
|
|
|
289
289
|
}
|
|
290
290
|
const SemanticDateOperators = {
|
|
291
291
|
// Extending operators for Sematic Date Control
|
|
292
|
-
addSemanticDateOperators: function() {
|
|
292
|
+
addSemanticDateOperators: function () {
|
|
293
293
|
const oResourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
294
294
|
FilterOperatorUtil.addOperator(_getDateRangeOperator(oResourceBundle));
|
|
295
295
|
FilterOperatorUtil.addOperator(_getDateOperator(oResourceBundle));
|
|
296
296
|
FilterOperatorUtil.addOperator(_getFromOperator(oResourceBundle));
|
|
297
297
|
FilterOperatorUtil.addOperator(_getToOperator(oResourceBundle));
|
|
298
298
|
},
|
|
299
|
-
getSupportedOperations: function() {
|
|
299
|
+
getSupportedOperations: function () {
|
|
300
300
|
return aSupportedOperations;
|
|
301
301
|
},
|
|
302
|
-
getSemanticDateOperations: function() {
|
|
302
|
+
getSemanticDateOperations: function () {
|
|
303
303
|
return Object.keys(mSemanticDateOperations);
|
|
304
304
|
},
|
|
305
305
|
// TODO: Would need to check with MDC for removeOperator method
|
|
306
306
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
307
|
-
removeSemanticDateOperators: function() {},
|
|
307
|
+
removeSemanticDateOperators: function () {},
|
|
308
308
|
// To filter operators based on manifest aOperatorConfiguration settings
|
|
309
|
-
getFilterOperations: function(aOperatorConfiguration: any) {
|
|
309
|
+
getFilterOperations: function (aOperatorConfiguration: any) {
|
|
310
310
|
const aOperations = [];
|
|
311
311
|
for (const n in mSemanticDateOperations) {
|
|
312
312
|
const oOperation = mSemanticDateOperations[n];
|
|
@@ -314,15 +314,15 @@ const SemanticDateOperators = {
|
|
|
314
314
|
aOperations.push(oOperation);
|
|
315
315
|
}
|
|
316
316
|
}
|
|
317
|
-
return aOperations.map(function(oOperation: any) {
|
|
317
|
+
return aOperations.map(function (oOperation: any) {
|
|
318
318
|
return oOperation.key;
|
|
319
319
|
});
|
|
320
320
|
},
|
|
321
|
-
hasSemanticDateOperations: function(oConditions: any) {
|
|
321
|
+
hasSemanticDateOperations: function (oConditions: any) {
|
|
322
322
|
const aSemanticDateOps = this.getSemanticDateOperations();
|
|
323
323
|
for (const n in oConditions) {
|
|
324
324
|
const aFilterCondtion = oConditions[n];
|
|
325
|
-
const oSemanticOperator = aFilterCondtion.find(function(oCondition: any) {
|
|
325
|
+
const oSemanticOperator = aFilterCondtion.find(function (oCondition: any) {
|
|
326
326
|
return aSemanticDateOps.indexOf(oCondition.operator) > -1;
|
|
327
327
|
});
|
|
328
328
|
if (oSemanticOperator) {
|
|
@@ -32,7 +32,7 @@ sap.ui.define(["sap/base/Log"], function (Log) {
|
|
|
32
32
|
|
|
33
33
|
if (this._isPathForSemantic(sTechnicalPath) && oSemanticObjectInformation.semanticKeys) {
|
|
34
34
|
var aSemanticKeys = oSemanticObjectInformation.semanticKeys,
|
|
35
|
-
oEntityType = oMetaModel.getObject("/"
|
|
35
|
+
oEntityType = oMetaModel.getObject("/".concat(oMetaModel.getObject("/".concat(sEntitySetName)).$Type));
|
|
36
36
|
|
|
37
37
|
try {
|
|
38
38
|
var sSemanticKeysPart = aSemanticKeys.map(function (oSemanticKey) {
|
|
@@ -40,7 +40,7 @@ sap.ui.define(["sap/base/Log"], function (Log) {
|
|
|
40
40
|
var sKeyValue = oContext.getProperty(sPropertyPath);
|
|
41
41
|
|
|
42
42
|
if (sKeyValue === undefined || sKeyValue === null) {
|
|
43
|
-
throw new Error("Couldn't resolve semantic key value for "
|
|
43
|
+
throw new Error("Couldn't resolve semantic key value for ".concat(sPropertyPath));
|
|
44
44
|
} else {
|
|
45
45
|
if (oEntityType[sPropertyPath].$Type === "Edm.String") {
|
|
46
46
|
sKeyValue = "'".concat(encodeURIComponent(sKeyValue), "'");
|
|
@@ -73,4 +73,4 @@ sap.ui.define(["sap/base/Log"], function (Log) {
|
|
|
73
73
|
};
|
|
74
74
|
return SemanticKeyHelper;
|
|
75
75
|
}, false);
|
|
76
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljS2V5SGVscGVyLnRzIl0sIm5hbWVzIjpbIlNlbWFudGljS2V5SGVscGVyIiwiZ2V0U2VtYW50aWNLZXlzIiwib01ldGFNb2RlbCIsInNFbnRpdHlTZXROYW1lIiwiZ2V0T2JqZWN0IiwiZ2V0U2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbiIsIm9TZW1hbnRpY09iamVjdCIsImFTZW1hbnRpY0tleXMiLCJzZW1hbnRpY09iamVjdCIsInNlbWFudGljS2V5cyIsImdldFNlbWFudGljUGF0aCIsIm9Db250ZXh0IiwiYlN0cmljdCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZ2V0TWV0YUNvbnRleHQiLCJnZXRQYXRoIiwib1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24iLCJzVGVjaG5pY2FsUGF0aCIsInNTZW1hbnRpY1BhdGgiLCJpc0EiLCJpc1JlbGF0aXZlIiwiZ2V0SGVhZGVyQ29udGV4dCIsIl9pc1BhdGhGb3JTZW1hbnRpYyIsIm9FbnRpdHlUeXBlIiwiJFR5cGUiLCJzU2VtYW50aWNLZXlzUGFydCIsIm1hcCIsIm9TZW1hbnRpY0tleSIsInNQcm9wZXJ0eVBhdGgiLCIkUHJvcGVydHlQYXRoIiwic0tleVZhbHVlIiwiZ2V0UHJvcGVydHkiLCJ1bmRlZmluZWQiLCJFcnJvciIsImVuY29kZVVSSUNvbXBvbmVudCIsImxlbmd0aCIsImpvaW4iLCJlIiwiTG9nIiwiaW5mbyIsInNQYXRoIiwidGVzdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUNBLE1BQU1BLGlCQUFpQixHQUFHO0FBQ3pCQyxJQUFBQSxlQUFlLEVBQUUsVUFBVUMsVUFBVixFQUFzQ0MsY0FBdEMsRUFBOEQ7QUFDOUUsYUFBT0QsVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixrREFBUDtBQUNBLEtBSHdCO0FBSXpCRSxJQUFBQSw0QkFBNEIsRUFBRSxVQUFVSCxVQUFWLEVBQXNDQyxjQUF0QyxFQUE4RDtBQUMzRixVQUFNRyxlQUFlLEdBQUdK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S0FBOUIsQ0FBUDtBQUNBO0FBbEV3QixHQUExQjtTQXFFZXpDLGlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuY29uc3QgU2VtYW50aWNLZXlIZWxwZXIgPSB7XG5cdGdldFNlbWFudGljS2V5czogZnVuY3Rpb24gKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY0tleWApO1xuXHR9LFxuXHRnZXRTZW1hbnRpY09iamVjdEluZm9ybWF0aW9uOiBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIHNFbnRpdHlTZXROYW1lOiBzdHJpbmcpIHtcblx0XHRjb25zdCBvU2VtYW50aWNPYmplY3QgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0VudGl0eVNldE5hbWV9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VtYW50aWNPYmplY3RgKTtcblx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gdGhpcy5nZXRTZW1hbnRpY0tleXMob01ldGFNb2RlbCwgc0VudGl0eVNldE5hbWUpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW1hbnRpY09iamVjdDogb1NlbWFudGljT2JqZWN0LFxuXHRcdFx0c2VtYW50aWNLZXlzOiBhU2VtYW50aWNLZXlzXG5cdFx0fTtcblx0fSxcblx0Z2V0U2VtYW50aWNQYXRoOiBmdW5jdGlvbiAob0NvbnRleHQ6IGFueSwgYlN0cmljdDogYm9vbGVhbiA9IGZhbHNlKSB7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRzRW50aXR5U2V0TmFtZSA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQob0NvbnRleHQuZ2V0UGF0aCgpKS5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSxcblx0XHRcdG9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uID0gdGhpcy5nZXRTZW1hbnRpY09iamVjdEluZm9ybWF0aW9uKG9NZXRhTW9kZWwsIHNFbnRpdHlTZXROYW1lKTtcblx0XHRsZXQgc1RlY2huaWNhbFBhdGgsIHNTZW1hbnRpY1BhdGg7XG5cblx0XHRpZiAob0NvbnRleHQuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikgJiYgb0NvbnRleHQuaXNSZWxhdGl2ZSgpKSB7XG5cdFx0XHRzVGVjaG5pY2FsUGF0aCA9IG9Db250ZXh0LmdldEhlYWRlckNvbnRleHQoKS5nZXRQYXRoKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNUZWNobmljYWxQYXRoID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9pc1BhdGhGb3JTZW1hbnRpYyhzVGVjaG5pY2FsUGF0aCkgJiYgb1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24uc2VtYW50aWNLZXlzKSB7XG5cdFx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gb1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24uc2VtYW50aWNLZXlzLFxuXHRcdFx0XHRvRW50aXR5VHlwZSA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0VudGl0eVNldE5hbWV9YCkuJFR5cGV9YCk7XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHNTZW1hbnRpY0tleXNQYXJ0ID0gYVNlbWFudGljS2V5c1xuXHRcdFx0XHRcdC5tYXAoZnVuY3Rpb24gKG9TZW1hbnRpY0tleTogYW55KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzUHJvcGVydHlQYXRoID0gb1NlbWFudGljS2V5LiRQcm9wZXJ0eVBhdGg7XG5cdFx0XHRcdFx0XHRsZXQgc0tleVZhbHVlID0gb0NvbnRleHQuZ2V0UHJvcGVydHkoc1Byb3BlcnR5UGF0aCk7XG5cblx0XHRcdFx0XHRcdGlmIChzS2V5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBzS2V5VmFsdWUgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCByZXNvbHZlIHNlbWFudGljIGtleSB2YWx1ZSBmb3IgJHtzUHJvcGVydHlQYXRofWApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKG9FbnRpdHlUeXBlW3NQcm9wZXJ0eVBhdGhdLiRUeXBlID09PSBcIkVkbS5TdHJpbmdcIikge1xuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAnJHtlbmNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlKX0nYDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYVNlbWFudGljS2V5cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gU2V2ZXJhbCBzZW1hbnRpYyBrZXlzIC0tPiBwYXRoIHNob3VsZCBiZSBlbnRpdHlTZXQoa2V5MT12YWx1ZTEsIGtleTI9dmFsdWUyLCAuLi4pXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtlZXAgZW50aXR5U2V0KGtleVZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAke3NQcm9wZXJ0eVBhdGh9PSR7c0tleVZhbHVlfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNLZXlWYWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5qb2luKFwiLFwiKTtcblxuXHRcdFx0XHRzU2VtYW50aWNQYXRoID0gYC8ke3NFbnRpdHlTZXROYW1lfSgke3NTZW1hbnRpY0tleXNQYXJ0fSlgO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRMb2cuaW5mbyhlIGFzIGFueSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGJTdHJpY3QgPyBzU2VtYW50aWNQYXRoIDogc1NlbWFudGljUGF0aCB8fCBzVGVjaG5pY2FsUGF0aDtcblx0fSxcblxuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblx0Ly8gSU5URVJOQUwgTUVUSE9EU1xuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXHRfaXNQYXRoRm9yU2VtYW50aWM6IGZ1bmN0aW9uIChzUGF0aDogYW55KSB7XG5cdFx0Ly8gT25seSBwYXRoIG9uIHJvb3Qgb2JqZWN0cyBhbGxvdyBzZW1hbnRpYyBrZXlzLCBpLmUuIHNQYXRoID0geHh4KHl5eSlcblx0XHRyZXR1cm4gL15bXlxcKFxcKV0rXFwoW15cXChcXCldK1xcKSQvLnRlc3Qoc1BhdGgpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0tleUhlbHBlcjtcbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import Log from "sap/base/Log";
|
|
2
|
-
import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
2
|
+
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
3
3
|
|
|
4
4
|
const SemanticKeyHelper = {
|
|
5
|
-
getSemanticKeys: function(oMetaModel: ODataMetaModel, sEntitySetName: string) {
|
|
5
|
+
getSemanticKeys: function (oMetaModel: ODataMetaModel, sEntitySetName: string) {
|
|
6
6
|
return oMetaModel.getObject(`/${sEntitySetName}/@com.sap.vocabularies.Common.v1.SemanticKey`);
|
|
7
7
|
},
|
|
8
|
-
getSemanticObjectInformation: function(oMetaModel: ODataMetaModel, sEntitySetName: string) {
|
|
8
|
+
getSemanticObjectInformation: function (oMetaModel: ODataMetaModel, sEntitySetName: string) {
|
|
9
9
|
const oSemanticObject = oMetaModel.getObject(`/${sEntitySetName}/@com.sap.vocabularies.Common.v1.SemanticObject`);
|
|
10
10
|
const aSemanticKeys = this.getSemanticKeys(oMetaModel, sEntitySetName);
|
|
11
11
|
return {
|
|
@@ -13,7 +13,7 @@ const SemanticKeyHelper = {
|
|
|
13
13
|
semanticKeys: aSemanticKeys
|
|
14
14
|
};
|
|
15
15
|
},
|
|
16
|
-
getSemanticPath: function(oContext: any, bStrict: boolean = false) {
|
|
16
|
+
getSemanticPath: function (oContext: any, bStrict: boolean = false) {
|
|
17
17
|
const oMetaModel = oContext.getModel().getMetaModel(),
|
|
18
18
|
sEntitySetName = oMetaModel.getMetaContext(oContext.getPath()).getObject("@sapui.name"),
|
|
19
19
|
oSemanticObjectInformation = this.getSemanticObjectInformation(oMetaModel, sEntitySetName);
|
|
@@ -27,16 +27,16 @@ const SemanticKeyHelper = {
|
|
|
27
27
|
|
|
28
28
|
if (this._isPathForSemantic(sTechnicalPath) && oSemanticObjectInformation.semanticKeys) {
|
|
29
29
|
const aSemanticKeys = oSemanticObjectInformation.semanticKeys,
|
|
30
|
-
oEntityType = oMetaModel.getObject(
|
|
30
|
+
oEntityType = oMetaModel.getObject(`/${oMetaModel.getObject(`/${sEntitySetName}`).$Type}`);
|
|
31
31
|
|
|
32
32
|
try {
|
|
33
33
|
const sSemanticKeysPart = aSemanticKeys
|
|
34
|
-
.map(function(oSemanticKey: any) {
|
|
34
|
+
.map(function (oSemanticKey: any) {
|
|
35
35
|
const sPropertyPath = oSemanticKey.$PropertyPath;
|
|
36
36
|
let sKeyValue = oContext.getProperty(sPropertyPath);
|
|
37
37
|
|
|
38
38
|
if (sKeyValue === undefined || sKeyValue === null) {
|
|
39
|
-
throw new Error(
|
|
39
|
+
throw new Error(`Couldn't resolve semantic key value for ${sPropertyPath}`);
|
|
40
40
|
} else {
|
|
41
41
|
if (oEntityType[sPropertyPath].$Type === "Edm.String") {
|
|
42
42
|
sKeyValue = `'${encodeURIComponent(sKeyValue)}'`;
|
|
@@ -64,7 +64,7 @@ const SemanticKeyHelper = {
|
|
|
64
64
|
// INTERNAL METHODS
|
|
65
65
|
// ==============================
|
|
66
66
|
|
|
67
|
-
_isPathForSemantic: function(sPath: any) {
|
|
67
|
+
_isPathForSemantic: function (sPath: any) {
|
|
68
68
|
// Only path on root objects allow semantic keys, i.e. sPath = xxx(yyy)
|
|
69
69
|
return /^[^\(\)]+\([^\(\)]+\)$/.test(sPath);
|
|
70
70
|
}
|
|
@@ -14,8 +14,8 @@ sap.ui.define([], function () {
|
|
|
14
14
|
/**
|
|
15
15
|
* Copy for the Core.isValid function to be independent.
|
|
16
16
|
*
|
|
17
|
-
* @param
|
|
18
|
-
* @returns
|
|
17
|
+
* @param vValue String to validate
|
|
18
|
+
* @returns Whether the value is valid or not
|
|
19
19
|
*/
|
|
20
20
|
function isValid(vValue) {
|
|
21
21
|
return /^([A-Za-z_][-A-Za-z0-9_.:]*)$/.test(vValue);
|
|
@@ -24,7 +24,7 @@ sap.ui.define([], function () {
|
|
|
24
24
|
function replaceSpecialChars(sId) {
|
|
25
25
|
if (sId.indexOf(" ") >= 0) {
|
|
26
26
|
// Log.error(sId + " - Spaces are not allowed in ID parts.");
|
|
27
|
-
throw sId
|
|
27
|
+
throw "".concat(sId, " - Spaces are not allowed in ID parts.");
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
sId = sId.replace(/^\/|^@|^#|^\*/, "") // remove special characters from the beginning of the string
|
|
@@ -102,8 +102,8 @@ sap.ui.define([], function () {
|
|
|
102
102
|
*
|
|
103
103
|
* Currently supported metadata context is Collection/Reference facet identified by 'Facet' key.
|
|
104
104
|
*
|
|
105
|
-
* @param
|
|
106
|
-
* @returns
|
|
105
|
+
* @param aStableIdParts Array of strings and objects
|
|
106
|
+
* @returns Stable Id constructed from the provided parameters
|
|
107
107
|
*/
|
|
108
108
|
|
|
109
109
|
|
|
@@ -173,9 +173,9 @@ sap.ui.define([], function () {
|
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
if (typeof oDataField.Action == "string") {
|
|
176
|
-
sIdPart += "::"
|
|
176
|
+
sIdPart += "::".concat(oDataField.Action);
|
|
177
177
|
} else if (oDataField.Action && oDataField.Action.$Path) {
|
|
178
|
-
sIdPart += "::"
|
|
178
|
+
sIdPart += "::".concat(oDataField.Action.$Path);
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
if (oDataField["RequiresContext"] && oDataField["RequiresContext"] == true) {
|
|
@@ -207,7 +207,7 @@ sap.ui.define([], function () {
|
|
|
207
207
|
sIdPart = "DataFieldWithAction::";
|
|
208
208
|
|
|
209
209
|
if (oDataField.Value) {
|
|
210
|
-
sIdPart += getStableIdPartFromValue(oDataField.Value)
|
|
210
|
+
sIdPart += "".concat(getStableIdPartFromValue(oDataField.Value), "::");
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
sIdPart += oDataField.Action;
|
|
@@ -218,7 +218,7 @@ sap.ui.define([], function () {
|
|
|
218
218
|
return prepareId(sIdPart);
|
|
219
219
|
} else if (oDataField.$Type && oDataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation") {
|
|
220
220
|
sIdPart = "DataFieldWithIntentBasedNavigation::";
|
|
221
|
-
sIdPart += getStableIdPartFromValue(oDataField.Value)
|
|
221
|
+
sIdPart += "".concat(getStableIdPartFromValue(oDataField.Value), "::");
|
|
222
222
|
sIdPart += getStableIdPartFromSemanticObjectAndAction(oDataField);
|
|
223
223
|
return prepareId(sIdPart);
|
|
224
224
|
} else if (oDataField.$Type && oDataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath") {
|
|
@@ -226,7 +226,7 @@ sap.ui.define([], function () {
|
|
|
226
226
|
sIdPart += getStableIdPartFromValue(oDataField.Value);
|
|
227
227
|
|
|
228
228
|
if (oDataField.Target && oDataField.Target["$NavigationPropertyPath"]) {
|
|
229
|
-
sIdPart += "::"
|
|
229
|
+
sIdPart += "::".concat(oDataField.Target["$NavigationPropertyPath"]);
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
return prepareId(sIdPart);
|
|
@@ -253,11 +253,11 @@ sap.ui.define([], function () {
|
|
|
253
253
|
return sId;
|
|
254
254
|
} else {
|
|
255
255
|
// Log.error(sId + " - Stable Id could not be generated due to insufficient information.");
|
|
256
|
-
throw sId
|
|
256
|
+
throw "".concat(sId, " - Stable Id could not be generated due to insufficient information.");
|
|
257
257
|
}
|
|
258
258
|
};
|
|
259
259
|
|
|
260
260
|
_exports.prepareId = prepareId;
|
|
261
261
|
return _exports;
|
|
262
262
|
}, false);
|
|
263
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YWJsZUlkSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzVmFsaWQiLCJ2VmFsdWUiLCJ0ZXN0IiwicmVwbGFjZVNwZWNpYWxDaGFycyIsInNJZCIsImluZGV4T2YiLCJyZXBsYWNlIiwic2xpY2UiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlIiwib1ZhbHVlIiwiJFBhdGgiLCJwYXRoIiwiJEFwcGx5IiwiJEZ1bmN0aW9uIiwic1BhdGhDb25jYXQiLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJhU3RhYmxlSWRQYXJ0cyIsInNTdGFibGVJZCIsInZFbGVtZW50Iiwic0ZhY2V0SWQiLCJGYWNldCIsIiRUeXBlIiwiSUQiLCJUYXJnZXQiLCIkQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsIkxhYmVsIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInByZXBhcmVJZCIsImdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbiIsIm9EYXRhRmllbGQiLCJzSWRQYXJ0IiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJtUGFyYW1ldGVyIiwiVmFsdWUiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwidG9TdHJpbmciLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFTQSxPQUFULENBQWlCQyxNQUFqQixFQUFpQztBQUNoQyxXQUFPLGdDQUFnQ0MsSUFBaEMsQ0FBcUNELE1BQXJDLENBQVA7QUFDQTs7QUFFTSxXQUFTRSxtQkFBVCxDQUE2QkMsR0FBN0IsRUFBMEM7QUFDaEQsUUFBSUEsR0FBRyxDQUFDQyxPQUFKLENBQVksR0FBWixLQUFvQixDQUF4QixFQUEyQjtBQUMxQjtBQUNBLFlBQU1ELEdBQUcsR0FBRyx3Q0FBWjtBQUNBOztBQUNEQSxJQUFBQSxHQUFHLEdBQUdB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QSxRQUFJSixPQUFPLENBQUNJLEdBQUQsQ0FBWCxFQUFrQjtBQUNqQixhQUFPQSxHQUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ047QUFDQSxZQUFNQSxHQUFHLEdBQUcsc0VBQVo7QUFDQTtBQUNELEdBUk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG4vKipcbiAqIFN0YWJsZSBJZCBoZWxwZXJcbiAqL1xuXG4vKipcbiAqIENvcHkgZm9yIHRoZSBDb3JlLmlzVmFsaWQgZnVuY3Rpb24gdG8gYmUgaW5kZXBlbmRlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZWYWx1ZSBTdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSB2YWx1ZSBpcyB2YWxpZCBvciBub3RcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZCh2VmFsdWU6IHN0cmluZykge1xuXHRyZXR1cm4gL14oW0EtWmEtel9dWy1BLVphLXowLTlfLjpdKikkLy50ZXN0KHZWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlU3BlY2lhbENoYXJzKHNJZDogc3RyaW5nKSB7XG5cdGlmIChzSWQuaW5kZXhPZihcIiBcIikgPj0gMCkge1xuXHRcdC8vIExvZy5lcnJvcihzSWQgKyBcIiAtIFNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gSUQgcGFydHMuXCIpO1xuXHRcdHRocm93IHNJZCArIFwiIC0gU3BhY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBJRCBwYXJ0cy5cIjtcblx0fVxuXHRzSWQgPSBzSWRcblx0XHQucmVwbGFjZSgvXlxcL3xeQHxeI3xeXFwqLywgXCJcIikgLy8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZ1xuXHRcdC5yZXBsYWNlKC9cXC8kfEAkfCMkfFxcKiQvLCBcIlwiKSAvLyByZW1vdmUgc3BlY2lhbCBjaGFyYWN0ZXJzIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nXG5cdFx0LnJlcGxhY2UoL1xcL3xAfFxcKHxcXCl8I3xcXCovZywgXCI6OlwiKTsgLy8gcmVwbGFjZSBzcGVjaWFsIGNoYXJhY3RlcnMgd2l0aCA6OlxuXG5cdC8vIFJlcGxhY2UgZG91YmxlIG9jY3VycmVuY2VzIG9mIHRoZSBzZXBhcmF0b3Igd2l0aCBhIHNpbmdsZSBzZXBhcmF0b3Jcblx0d2hpbGUgKHNJZC5pbmRleE9mKFwiOjo6OlwiKSA+IC0xKSB7XG5cdFx0c0lkID0gc0lkLnJlcGxhY2UoXCI6Ojo6XCIsIFwiOjpcIik7XG5cdH1cblxuXHQvLyBJZiB0aGVyZSBpcyBhIDo6IGF0IHRoZSBlbmQgb2YgdGhlIElEIHJlbW92ZSBpdFxuXHRpZiAoc0lkLnNsaWNlKC0yKSA9PSBcIjo6XCIpIHtcblx0XHRzSWQgPSBzSWQuc2xpY2UoMCwgLTIpO1xuXHR9XG5cblx0cmV0dXJuIHNJZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTmFtZXNwYWNlcyhzSWQ6IHN0cmluZykge1xuXHRzSWQgPSBzSWQucmVwbGFjZShcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlwiLCBcIlwiKTtcblx0c0lkID0gc0lkLnJlcGxhY2UoXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLlwiLCBcIlwiKTtcblx0cmV0dXJuIHNJZDtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9WYWx1ZTogYW55KSB7XG5cdGlmICgob1ZhbHVlICYmIG9WYWx1ZS4kUGF0aCkgfHwgb1ZhbHVlLnBhdGgpIHtcblx0XHRyZXR1cm4gb1ZhbHVlLiRQYXRoIHx8IG9WYWx1ZS5wYXRoO1xuXHR9XG5cblx0aWYgKG9WYWx1ZSAmJiBvVmFsdWUuJEFwcGx5ICYmIG9WYWx1ZS4kRnVuY3Rpb24gPT09IFwib2RhdGEuY29uY2F0XCIpIHtcblx0XHRsZXQgc1BhdGhDb25jYXQgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb1ZhbHVlLiRBcHBseS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKG9WYWx1ZS4kQXBwbHlbaV0uJFBhdGgpIHtcblx0XHRcdFx0aWYgKHNQYXRoQ29uY2F0KSB7XG5cdFx0XHRcdFx0c1BhdGhDb25jYXQgKz0gXCI6OlwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNQYXRoQ29uY2F0ICs9IG9WYWx1ZS4kQXBwbHlbaV0uJFBhdGg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzUGF0aENvbmNhdDtcblx0fVxuXG5cdGlmIChvVmFsdWUpIHtcblx0XHRyZXR1cm4gcmVwbGFjZVNwZWNpYWxDaGFycyhvVmFsdWUucmVwbGFjZSgvIC9nLCBcIl9cIikpO1xuXHR9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIFN0YWJsZSBJZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVyc1xuICpcbiAqIHBhcmFtZXRlcnMgYXJlIGNvbWJpbmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUgcHJvdmlkZWQgYW5kIGFyZSBzZXBhcmF0ZWQgYnkgJzo6J1xuICogc3BlY2lhbCBjaGFyYWN0ZXJzIChALCAvLCAjKSBhcmUgcmVwbGFjZWQgYnkgJzo6JyBpZiB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBTdGFibGUgSWQgYW5kIHJlbW92ZWQgYWxsIHRvZ2V0aGVyIGlmIHRoZSBhcmUgcGFydCBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZFxuICogRXhhbXBsZTpcbiAqIC8vIEdldCBDb25zdGFudCBTdGFibGUgSWRcbiAqIGdlbmVyYXRlKFsnU3RhYmxlJywgJ0lkJ10pIHdvdWxkIHJlc3VsdCBpbiAnU3RhYmxlOjpJZCcgYXMgdGhlIFN0YWJsZSBJZFxuICpcbiAqIC8vIEdldCBQYXJhbWVydGVyaXplZCBTdGFibGUgSWQgZnJvbSBhIENvbGxlY3Rpb24gRmFjZXRcbiAqIHZhciBvUGFyYW1ldGVyID0ge1xuICogXHRcdEZhY2V0OiB7XG4gKiBcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIixcbiAqIFx0XHRcdExhYmVsOiBcIkdlbmVyYWwgSW5mbyBGYWNldCBMYWJlbFwiLFxuICogXHRcdFx0SUQ6ICdHZW5lcmFsSW5mb3JtYXRpb24nXG4gKiBcdFx0fVxuICogfTtcbiAqIGdlbmVyYXRlKFsnc2VjdGlvbicsIG9QYXJhbWV0ZXJdKSB3b3VsZCByZXN1bHQgaW4gJ3NlY3Rpb246OkdlbmVyYWxJbmZvcm1hdGlvbicgYXMgdGhlIFN0YWJsZSBJZFxuICpcbiAqIG9QYXJhbWV0ZXIgaXMgYW5kIG9iamVjdCBvZiBNZXRhZGF0YSBjb250ZXh0cyBhdmFpbGFibGUgd2hpbGUgdGVtcGxhdGluZyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgU3RhYmxlIElEcy5cbiAqIG9QYXJhbWV0ZXIgb2JqZWN0IGtleXMgZGVmaW5lIHRoZSB0eXBlIG9mIG1ldGFkYXRhIGNvbnRleHQuXG4gKiBGb3IgZXhhbXBsZSwgdGhlIGtleSAnRmFjZXQnaW4gdGhlIGFib3ZlIGV4YW1wbGUgdGVsbHMgdGhlIFN0YWJsZSBJZCBIZWxwZXIgdGhhdCB0aGUgY29udGV4dCBpcyBhIEZhY2V0IChjb3VsZCBiZSByZWZlcmVuY2Ugb3IgY29sbGVjdGlvbiBmYWNldClcbiAqXG4gKiBDdXJyZW50bHkgc3VwcG9ydGVkIG1ldGFkYXRhIGNvbnRleHQgaXMgQ29sbGVjdGlvbi9SZWZlcmVuY2UgZmFjZXQgaWRlbnRpZmllZCBieSAnRmFjZXQnIGtleS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PChzdHJpbmd8b2JqZWN0KT59IGFTdGFibGVJZFBhcnRzIEFycmF5IG9mIHN0cmluZ3MgYW5kIG9iamVjdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0YWJsZSBJZCBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZSA9IGZ1bmN0aW9uIChhU3RhYmxlSWRQYXJ0czogQXJyYXk8c3RyaW5nIHwgb2JqZWN0Pikge1xuXHRsZXQgc1N0YWJsZUlkID0gXCJcIixcblx0XHR2RWxlbWVudDogYW55LFxuXHRcdHNGYWNldElkO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVN0YWJsZUlkUGFydHMubGVuZ3RoOyBpKyspIHtcblx0XHR2RWxlbWVudCA9IGFTdGFibGVJZFBhcnRzW2ldO1xuXHRcdGlmICghdkVsZW1lbnQpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRzU3RhYmxlSWQgKz0gc1N0YWJsZUlkICE9PSBcIlwiID8gXCI6OlwiIDogXCJcIjtcblx0XHRpZiAodkVsZW1lbnRbXCJGYWNldFwiXSAmJiB2RWxlbWVudFtcIkZhY2V0XCJdW1wiJFR5cGVcIl0gJiYgdkVsZW1lbnRbXCJGYWNldFwiXVtcIiRUeXBlXCJdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIpIHtcblx0XHRcdHNTdGFibGVJZCArPSB2RWxlbWVudFtcIkZhY2V0XCJdW1wiSURcIl07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmICh2RWxlbWVudCkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gdkVsZW1lbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIGhhbmRsZSBwYXJhbWV0ZXJzXG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnQuRmFjZXQpIHtcblx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudC5GYWNldC4kVHlwZSAmJiB2RWxlbWVudC5GYWNldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGggfHwgdkVsZW1lbnQuRmFjZXQuVGFyZ2V0LnZhbHVlOyAvLyBDb21wbGlhbnQgd2l0aCBDb252ZXJ0ZXJzXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBUeXBlXCIpIHtcblx0XHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXQuTGFiZWwpIHtcblx0XHRcdFx0XHRcdHNGYWNldElkID0gdkVsZW1lbnQuRmFjZXQuTGFiZWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzRmFjZXRJZCkge1xuXHRcdFx0XHRcdHNTdGFibGVJZCArPSBzRmFjZXRJZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHZFbGVtZW50ICYmIHZFbGVtZW50W1wiJFR5cGVcIl0gJiYgdkVsZW1lbnRbXCIkVHlwZVwiXS5pbmRleE9mKFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIpID4gLTEpIHtcblx0XHRcdFx0c1N0YWJsZUlkICs9IGdldFN0YWJsZUlkUGFydEZyb21EYXRhRmllbGQodkVsZW1lbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRzU3RhYmxlSWQgPSBwcmVwYXJlSWQoc1N0YWJsZUlkKTtcblx0cmV0dXJuIHNTdGFibGVJZDtcbn07XG5leHBvcnQgY29uc3QgZ2V0U3RhYmxlSWRQYXJ0RnJvbVNlbWFudGljT2JqZWN0QW5kQWN0aW9uID0gZnVuY3Rpb24gKG9EYXRhRmllbGQ6IGFueSk6IHN0cmluZyB7XG5cdGxldCBzSWRQYXJ0ID0gXCJcIjtcblx0aWYgKHR5cGVvZiBvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0ID09IFwic3RyaW5nXCIpIHtcblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3Q7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdC4kUGF0aCkge1xuXHRcdHNJZFBhcnQgKz0gb0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdC4kUGF0aDtcblx0fVxuXHRpZiAodHlwZW9mIG9EYXRhRmllbGQuQWN0aW9uID09IFwic3RyaW5nXCIpIHtcblx0XHRzSWRQYXJ0ICs9IFwiOjpcIiArIG9EYXRhRmllbGQuQWN0aW9uO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuQWN0aW9uICYmIG9EYXRhRmllbGQuQWN0aW9uLiRQYXRoKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6XCIgKyBvRGF0YUZpZWxkLkFjdGlvbi4kUGF0aDtcblx0fVxuXHRpZiAob0RhdGFGaWVsZFtcIlJlcXVpcmVzQ29udGV4dFwiXSAmJiBvRGF0YUZpZWxkW1wiUmVxdWlyZXNDb250ZXh0XCJdID09IHRydWUpIHtcblx0XHRzSWRQYXJ0ICs9IFwiOjpSZXF1aXJlc0NvbnRleHRcIjtcblx0fVxuXHRyZXR1cm4gc0lkUGFydDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdGFibGVJZFBhcnRGcm9tRGF0YUZpZWxkID0gZnVuY3Rpb24gKG9EYXRhRmllbGQ6IGFueSwgbVBhcmFtZXRlcjogeyBjb250ZXh0PzogQ29udGV4dCB9ID0ge30pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRsZXQgc0lkUGFydCA9IFwiXCI7XG5cblx0aWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckFjdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLkFjdGlvbjtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHNJZFBhcnQ7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFubm90YXRpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckFubm90YXRpb246OlwiO1xuXHRcdHNJZFBhcnQgKz0gcHJlcGFyZUlkKG9EYXRhRmllbGQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aCB8fCBvRGF0YUZpZWxkLlRhcmdldC52YWx1ZSk7XG5cdFx0cmV0dXJuIHNJZFBhcnQ7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhBY3Rpb246OlwiO1xuXHRcdGlmIChvRGF0YUZpZWxkLlZhbHVlKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKSArIFwiOjpcIjtcblx0XHR9XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLkFjdGlvbjtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZDo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSkgKyBcIjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldCAmJiBvRGF0YUZpZWxkLlRhcmdldFtcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCJdKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IFwiOjpcIiArIG9EYXRhRmllbGQuVGFyZ2V0W1wiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIl07XG5cdFx0fVxuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhVcmxcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhVcmw6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAobVBhcmFtZXRlciAmJiBtUGFyYW1ldGVyLmNvbnRleHQgJiYgbVBhcmFtZXRlci5jb250ZXh0LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpKSB7XG5cdFx0Ly8gdGhlIGNvbnRleHQgaXMgbm90IHJlZmVycmluZyB0byBkYSBkYXRhIGZpZWxkIGJ1dCBkaXJlY3RseSB0byBhIHByb3BlcnR5LCByZXR1cm4gdGhlIHByb3BlcnR5IG5hbWVcblx0XHRyZXR1cm4gcHJlcGFyZUlkKG1QYXJhbWV0ZXIuY29udGV4dC5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKS50b1N0cmluZygpKTtcblx0fSBlbHNlIHtcblx0XHQvLyBJbiBjYXNlIG9mIGEgc3RyaW5nIG9yIHVua25vd24gcHJvcGVydHlcblx0XHQvLyBMb2cuZXJyb3IoXCJTdGFibGUgSUQgSGVscGVyOiBVbmFibGUgdG8gY3JlYXRlIGEgc3RhYmxlIElELiBQbGVhc2UgY2hlY2sgdGhlIGFubm90YXRpb25zLlwiKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVJZCA9IGZ1bmN0aW9uIChzSWQ6IHN0cmluZykge1xuXHRzSWQgPSByZXBsYWNlU3BlY2lhbENoYXJzKHJlbW92ZU5hbWVzcGFjZXMoc0lkKSk7XG5cdGlmIChpc1ZhbGlkKHNJZCkpIHtcblx0XHRyZXR1cm4gc0lkO1xuXHR9IGVsc2Uge1xuXHRcdC8vIExvZy5lcnJvcihzSWQgKyBcIiAtIFN0YWJsZSBJZCBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkIGR1ZSB0byBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24uXCIpO1xuXHRcdHRocm93IHNJZCArIFwiIC0gU3RhYmxlIElkIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgZHVlIHRvIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi5cIjtcblx0fVxufTtcbiJdfQ==
|
|
263
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YWJsZUlkSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzVmFsaWQiLCJ2VmFsdWUiLCJ0ZXN0IiwicmVwbGFjZVNwZWNpYWxDaGFycyIsInNJZCIsImluZGV4T2YiLCJyZXBsYWNlIiwic2xpY2UiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlIiwib1ZhbHVlIiwiJFBhdGgiLCJwYXRoIiwiJEFwcGx5IiwiJEZ1bmN0aW9uIiwic1BhdGhDb25jYXQiLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJhU3RhYmxlSWRQYXJ0cyIsInNTdGFibGVJZCIsInZFbGVtZW50Iiwic0ZhY2V0SWQiLCJGYWNldCIsIiRUeXBlIiwiSUQiLCJUYXJnZXQiLCIkQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsIkxhYmVsIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInByZXBhcmVJZCIsImdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbiIsIm9EYXRhRmllbGQiLCJzSWRQYXJ0IiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJtUGFyYW1ldGVyIiwiVmFsdWUiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwidG9TdHJpbmciLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFTQSxPQUFULENBQWlCQyxNQUFqQixFQUFpQztBQUNoQyxXQUFPLGdDQUFnQ0MsSUFBaEMsQ0FBcUNELE1BQXJDLENBQVA7QUFDQTs7QUFFTSxXQUFTRSxtQkFBVCxDQUE2QkMsR0FBN0IsRUFBMEM7QUFDaEQsUUFBSUEsR0FBRyxDQUFDQyxPQUFKLENBQVksR0FBWixLQUFvQixDQUF4QixFQUEyQjtBQUMxQjtBQUNBLHNCQUFTRCxHQUFUO0FBQ0E7O0FBQ0RBLElBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUNQRSxPQURJLENBQ0ksZUFESixFQUNxQixFQURyQixFQUN5QjtBQUR6QixLQUVKQSxPQUZJLENBRUksZUFGSixFQUVxQixFQUZyQixFQUV5QjtBQUZ6QixLQUdKQSxPQUhJLENBR0ksa0JBSEosRUFHd0IsSUFIeEIsQ0FBTixDQUxnRCxDQVFYO0FBRXJDOztBQUNBLFdBQU9GLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLE1BQVosSUFBc0IsQ0FBQyxDQUE5QixFQUFpQztBQUNoQ0QsTUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUNFLE9BQUosQ0FBWSxNQUFaLEVBQW9CLElBQXBCLENBQU47QUFDQSxLQWIrQyxDQWVoRDs7O0FBQ0EsUUFBSUYsR0FBRyxDQUFDRyxLQUFKLENBQVUsQ0FBQyxDQUFYLEtBQWlCLElBQXJCLEVBQTJCO0FBQzFCSCxNQUFBQSxHQUFHLEdBQUdBLEdBQUcsQ0FBQ0csS0FBSixDQUFVLENBQVYsRUFBYSxDQUFDLENBQWQsQ0FBTjtBQUNBOztBQUVELFdBQU9ILEdBQVA7QUFDQTs7OztBQUVELFdBQVNJLGdCQUFULENBQTBCSixHQUExQixFQUF1QztBQUN0Q0EsSUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUNFLE9BQUosQ0FBWSw2QkFBWixFQUEyQyxFQUEzQyxDQUFOO0FBQ0FGLElBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDRSxPQUFKLENBQVksd0NBQVosRUFBc0QsRUFBdEQsQ0FBTjtBQUNBLFdBQU9GLEdBQVA7QUFDQTs7QUFFRCxXQUFTSyx3QkFBVCxDQUFrQ0MsTUFBbEMsRUFBK0M7QUFDOUMsUUFBS0EsTUFBTSxJQUFJQSxNQUFNLENBQUNDLEtBQWxCLElBQTRCRCxNQUFNLENBQUNFLElBQXZDLEVBQTZDO0FBQzVDLGFBQU9GLE1BQU0sQ0FBQ0MsS0FBUCxJQUFnQkQsTUFBTSxDQUFDRSxJQUE5QjtBQUNBOztBQUVELFFBQUlGLE1BQU0sSUFBSUEsTUFBTSxDQUFDRyxNQUFqQixJQUEyQkgsTUFBTSxDQUFDSSxTQUFQLEtBQXFCLGNBQXBELEVBQW9FO0FBQ25FLFVBQUlDLFdBQVcsR0FBRyxFQUFsQjs7QUFDQSxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdOLE1BQU0sQ0FBQ0csTUFBUCxDQUFjSSxNQUFsQyxFQUEwQ0QsQ0FBQyxFQUEzQyxFQUErQztBQUM5QyxZQUFJTixNQUFNLENBQUNHLE1BQVAsQ0FBY0csQ0FBZCxFQUFpQkwsS0FBckIsRUFBNEI7QUFDM0IsY0FBSUksV0FBSixFQUFpQjtBQUNoQkEsWUFBQUEsV0FBVyxJQUFJLElBQWY7QUFDQTs7QUFDREEsVUFBQUEsV0FBVyxJQUFJTCxNQUFNLENBQUNHLE1BQVAsQ0FBY0csQ0FBZCxFQUFpQkwsS0FBaEM7QUFDQTtBQUNEOztBQUNELGFBQU9JLFdBQVA7QUFDQTs7QUFFRCxRQUFJTCxNQUFKLEVBQVk7QUFDWCxhQUFPUCxtQkFBbUIsQ0FBQ08sTUFBTSxDQUFDSixPQUFQLENBQWUsSUFBZixFQUFxQixHQUFyQixDQUFELENBQTFCO0FBQ0E7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxNQUFNWSxRQUFRLEdBQUcsVUFBVUMsY0FBVixFQUFrRDtBQUN6RSxRQUFJQyxTQUFTLEdBQUcsRUFBaEI7QUFBQSxRQUNDQyxRQUREO0FBQUEsUUFFQ0MsUUFGRDs7QUFJQSxTQUFLLElBQUlOLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdHLGNBQWMsQ0FBQ0YsTUFBbkMsRUFBMkNELENBQUMsRUFBNUMsRUFBZ0Q7QUFDL0NLLE1BQUFBLFFBQVEsR0FBR0YsY0FBYyxDQUFDSCxDQUFELENBQXpCOztBQUNBLFVBQUksQ0FBQ0ssUUFBTCxFQUFlO0FBQ2Q7QUFDQTs7QUFDREQsTUFBQUEsU0FBUyxJQUFJQSxTQUFTLEtBQUssRUFBZCxHQUFtQixJQUFuQixHQUEwQixFQUF2Qzs7QUFDQSxVQUFJQyxRQUFRLENBQUMsT0FBRCxDQUFSLElBQXFCQSxRQUFRLENBQUMsT0FBRCxDQUFSLENBQWtCLE9BQWxCLENBQXJCLElBQW1EQSxRQUFRLENBQUMsT0FBRCxDQUFSLENBQWtCLE9BQWxCLEtBQThCLDRDQUFyRixFQUFtSTtBQUNsSUQsUUFBQUEsU0FBUyxJQUFJQyxRQUFRLENBQUMsT0FBRCxDQUFSLENBQWtCLElBQWxCLENBQWI7QUFDQSxPQUZELE1BRU8sSUFBSSxPQUFPQSxRQUFQLEtBQW9CLFFBQXhCLEVBQWtDO0FBQ3hDLFlBQUlBLFFBQUosRUFBYztBQUNiRCxVQUFBQSxTQUFTLElBQUlDLFFBQWI7QUFDQTtBQUNELE9BSk0sTUFJQSxJQUFJLE9BQU9BLFFBQVAsS0FBb0IsUUFBeEIsRUFBa0M7QUFDeEM7QUFDQSxZQUFJQSxRQUFRLElBQUlBLFFBQVEsQ0FBQ0UsS0FBekIsRUFBZ0M7QUFDL0IsY0FBSUYsUUFBUSxDQUFDRSxLQUFULENBQWVDLEtBQWYsSUFBd0JILFFBQVEsQ0FBQ0UsS0FBVCxDQUFlQyxLQUFmLEtBQXlCLDRDQUFyRCxFQUFtRztBQUNsRyxnQkFBSUgsUUFBUSxDQUFDRSxLQUFULENBQWVFLEVBQW5CLEVBQXVCO0FBQ3RCSCxjQUFBQSxRQUFRLEdBQUdELFFBQVEsQ0FBQ0UsS0FBVCxDQUFlRSxFQUExQjtBQUNBO0FBQ0QsV0FKRCxNQUlPLElBQUlKLFFBQVEsQ0FBQ0UsS0FBVCxDQUFlQyxLQUFmLElBQXdCSCxRQUFRLENBQUNFLEtBQVQsQ0FBZUMsS0FBZixLQUF5QiwyQ0FBckQsRUFBa0c7QUFDeEcsZ0JBQUlILFFBQVEsQ0FBQ0UsS0FBVCxDQUFlRSxFQUFuQixFQUF1QjtBQUN0QkgsY0FBQUEsUUFBUSxHQUFHRCxRQUFRLENBQUNFLEtBQVQsQ0FBZUUsRUFBMUI7QUFDQSxhQUZELE1BRU87QUFDTkgsY0FBQUEsUUFBUSxHQUFHRCxRQUFRLENBQUNFLEtBQVQsQ0FBZUcsTUFBZixDQUFzQkMsZUFBdEIsSUFBeUNOLFFBQVEsQ0FBQ0UsS0FBVCxDQUFlRyxNQUFmLENBQXNCRSxLQUExRSxDQURNLENBQzJFO0FBQ2pGO0FBQ0QsV0FOTSxNQU1BLElBQUlQLFFBQVEsQ0FBQ0UsS0FBVCxDQUFlQyxLQUFmLElBQXdCSCxRQUFRLENBQUNFLEtBQVQsQ0FBZUMsS0FBZixLQUF5QiwyQ0FBckQsRUFBa0c7QUFDeEcsZ0JBQUlILFFBQVEsQ0FBQ0UsS0FBVCxDQUFlTSxLQUFuQixFQUEwQjtBQUN6QlAsY0FBQUEsUUFBUSxHQUFHRCxRQUFRLENBQUNFLEtBQVQsQ0FBZU0sS0FBMUI7QUFDQTtBQUNEOztBQUNELGNBQUlQLFFBQUosRUFBYztBQUNiRixZQUFBQSxTQUFTLElBQUlFLFFBQWI7QUFDQTtBQUNEOztBQUNELFlBQUlELFFBQVEsSUFBSUEsUUFBUSxDQUFDLE9BQUQsQ0FBcEIsSUFBaUNBLFFBQVEsQ0FBQyxPQUFELENBQVIsQ0FBa0JoQixPQUFsQixDQUEwQixzQ0FBMUIsSUFBb0UsQ0FBQyxDQUExRyxFQUE2RztBQUM1R2UsVUFBQUEsU0FBUyxJQUFJVSw0QkFBNEIsQ0FBQ1QsUUFBRCxDQUF6QztBQUNBO0FBQ0Q7QUFDRDs7QUFDREQsSUFBQUEsU0FBUyxHQUFHVyxTQUFTLENBQUNYLFNBQUQsQ0FBckI7QUFDQSxXQUFPQSxTQUFQO0FBQ0EsR0E5Q007Ozs7QUErQ0EsTUFBTVksMENBQTBDLEdBQUcsVUFBVUMsVUFBVixFQUFtQztBQUM1RixRQUFJQyxPQUFPLEdBQUcsRUFBZDs7QUFDQSxRQUFJLE9BQU9ELFVBQVUsQ0FBQ0UsY0FBbEIsSUFBb0MsUUFBeEMsRUFBa0Q7QUFDakRELE1BQUFBLE9BQU8sSUFBSUQsVUFBVSxDQUFDRSxjQUF0QjtBQUNBLEtBRkQsTUFFTyxJQUFJRixVQUFVLENBQUNFLGNBQVgsQ0FBMEJ4QixLQUE5QixFQUFxQztBQUMzQ3VCLE1BQUFBLE9BQU8sSUFBSUQsVUFBVSxDQUFDRSxjQUFYLENBQTBCeEIsS0FBckM7QUFDQTs7QUFDRCxRQUFJLE9BQU9zQixVQUFVLENBQUNHLE1BQWxCLElBQTRCLFFBQWhDLEVBQTBDO0FBQ3pDRixNQUFBQSxPQUFPLGdCQUFTRCxVQUFVLENBQUNHLE1BQXBCLENBQVA7QUFDQSxLQUZELE1BRU8sSUFBSUgsVUFBVSxDQUFDRyxNQUFYLElBQXFCSCxVQUFVLENBQUNHLE1BQVgsQ0FBa0J6QixLQUEzQyxFQUFrRDtBQUN4RHVCLE1BQUFBLE9BQU8sZ0JBQVNELFVBQVUsQ0FBQ0csTUFBWCxDQUFrQnpCLEtBQTNCLENBQVA7QUFDQTs7QUFDRCxRQUFJc0IsVUFBVSxDQUFDLGlCQUFELENBQVYsSUFBaUNBLFVBQVUsQ0FBQyxpQkFBRCxDQUFWLElBQWlDLElBQXRFLEVBQTRFO0FBQzNFQyxNQUFBQSxPQUFPLElBQUksbUJBQVg7QUFDQTs7QUFDRCxXQUFPQSxPQUFQO0FBQ0EsR0FoQk07Ozs7QUFrQkEsTUFBTUosNEJBQTRCLEdBQUcsVUFBVUcsVUFBVixFQUF1RjtBQUFBLFFBQTVESSxVQUE0RCx1RUFBeEIsRUFBd0I7QUFDbEksUUFBSUgsT0FBTyxHQUFHLEVBQWQ7O0FBRUEsUUFBSUQsVUFBVSxDQUFDVCxLQUFYLElBQW9CUyxVQUFVLENBQUNULEtBQVgsS0FBcUIsK0NBQTdDLEVBQThGO0FBQzdGVSxNQUFBQSxPQUFPLEdBQUcsc0JBQVY7QUFDQUEsTUFBQUEsT0FBTyxJQUFJRCxVQUFVLENBQUNHLE1BQXRCO0FBQ0EsYUFBT0wsU0FBUyxDQUFDRyxPQUFELENBQWhCO0FBQ0EsS0FKRCxNQUlPLElBQUlELFVBQVUsQ0FBQ1QsS0FBWCxJQUFvQlMsVUFBVSxDQUFDVCxLQUFYLEtBQXFCLDhEQUE3QyxFQUE2RztBQUNuSFUsTUFBQUEsT0FBTyxHQUFHLHFDQUFWO0FBQ0FBLE1BQUFBLE9BQU8sSUFBSUYsMENBQTBDLENBQUNDLFVBQUQsQ0FBckQ7QUFDQSxhQUFPQyxPQUFQO0FBQ0EsS0FKTSxNQUlBLElBQUlELFVBQVUsQ0FBQ1QsS0FBWCxJQUFvQlMsVUFBVSxDQUFDVCxLQUFYLEtBQXFCLG1EQUE3QyxFQUFrRztBQUN4R1UsTUFBQUEsT0FBTyxHQUFHLDBCQUFWO0FBQ0FBLE1BQUFBLE9BQU8sSUFBSUgsU0FBUyxDQUFDRSxVQUFVLENBQUNQLE1BQVgsQ0FBa0JDLGVBQWxCLElBQXFDTSxVQUFVLENBQUNQLE1BQVgsQ0FBa0JFLEtBQXhELENBQXBCO0FBQ0EsYUFBT00sT0FBUDtBQUNBLEtBSk0sTUFJQSxJQUFJRCxVQUFVLENBQUNULEtBQVgsSUFBb0JTLFVBQVUsQ0FBQ1QsS0FBWCxLQUFxQixnREFBN0MsRUFBK0Y7QUFDckdVLE1BQUFBLE9BQU8sR0FBRyx1QkFBVjs7QUFDQSxVQUFJRCxVQUFVLENBQUNLLEtBQWYsRUFBc0I7QUFDckJKLFFBQUFBLE9BQU8sY0FBT3pCLHdCQUF3QixDQUFDd0IsVUFBVSxDQUFDSyxLQUFaLENBQS9CLE9BQVA7QUFDQTs7QUFDREosTUFBQUEsT0FBTyxJQUFJRCxVQUFVLENBQUNHLE1BQXRCO0FBQ0EsYUFBT0wsU0FBUyxDQUFDRyxPQUFELENBQWhCO0FBQ0EsS0FQTSxNQU9BLElBQUlELFVBQVUsQ0FBQ1QsS0FBWCxJQUFvQlMsVUFBVSxDQUFDVCxLQUFYLEtBQXFCLHNDQUE3QyxFQUFxRjtBQUMzRlUsTUFBQUEsT0FBTyxHQUFHLGFBQVY7QUFDQUEsTUFBQUEsT0FBTyxJQUFJekIsd0JBQXdCLENBQUN3QixVQUFVLENBQUNLLEtBQVosQ0FBbkM7QUFDQSxhQUFPUCxTQUFTLENBQUNHLE9BQUQsQ0FBaEI7QUFDQSxLQUpNLE1BSUEsSUFBSUQsVUFBVSxDQUFDVCxLQUFYLElBQW9CUyxVQUFVLENBQUNULEtBQVgsS0FBcUIsK0RBQTdDLEVBQThHO0FBQ3BIVSxNQUFBQSxPQUFPLEdBQUcsc0NBQVY7QUFDQUEsTUFBQUEsT0FBTyxjQUFPekIsd0JBQXdCLENBQUN3QixVQUFVLENBQUNLLEtBQVosQ0FBL0IsT0FBUDtBQUNBSixNQUFBQSxPQUFPLElBQUlGLDBDQUEwQyxDQUFDQyxVQUFELENBQXJEO0FBQ0EsYUFBT0YsU0FBUyxDQUFDRyxPQUFELENBQWhCO0FBQ0EsS0FMTSxNQUtBLElBQUlELFVBQVUsQ0FBQ1QsS0FBWCxJQUFvQlMsVUFBVSxDQUFDVCxLQUFYLEtBQXFCLHdEQUE3QyxFQUF1RztBQUM3R1UsTUFBQUEsT0FBTyxHQUFHLCtCQUFWO0FBQ0FBLE1BQUFBLE9BQU8sSUFBSXpCLHdCQUF3QixDQUFDd0IsVUFBVSxDQUFDSyxLQUFaLENBQW5DOztBQUNBLFVBQUlMLFVBQVUsQ0FBQ1AsTUFBWCxJQUFxQk8sVUFBVSxDQUFDUCxNQUFYLENBQWtCLHlCQUFsQixDQUF6QixFQUF1RTtBQUN0RVEsUUFBQUEsT0FBTyxnQkFBU0QsVUFBVSxDQUFDUCxNQUFYLENBQWtCLHlCQUFsQixDQUFULENBQVA7QUFDQTs7QUFDRCxhQUFPSyxTQUFTLENBQUNHLE9BQUQsQ0FBaEI7QUFDQSxLQVBNLE1BT0EsSUFBSUQsVUFBVSxDQUFDVCxLQUFYLElBQW9CUyxVQUFVLENBQUNULEtBQVgsS0FBcUIsNkNBQTdDLEVBQTRGO0FBQ2xHVSxNQUFBQSxPQUFPLEdBQUcsb0JBQVY7QUFDQUEsTUFBQUEsT0FBTyxJQUFJekIsd0JBQXdCLENBQUN3QixVQUFVLENBQUNLLEtBQVosQ0FBbkM7QUFDQSxhQUFPUCxTQUFTLENBQUNHLE9BQUQsQ0FBaEI7QUFDQSxLQUpNLE1BSUEsSUFBSUcsVUFBVSxJQUFJQSxVQUFVLENBQUNFLE9BQXpCLElBQW9DRixVQUFVLENBQUNFLE9BQVgsQ0FBbUJDLFNBQW5CLENBQTZCLGFBQTdCLENBQXhDLEVBQXFGO0FBQzNGO0FBQ0EsYUFBT1QsU0FBUyxDQUFDTSxVQUFVLENBQUNFLE9BQVgsQ0FBbUJDLFNBQW5CLENBQTZCLGFBQTdCLEVBQTRDQyxRQUE1QyxFQUFELENBQWhCO0FBQ0EsS0FITSxNQUdBLENBQ047QUFDQTtBQUNBOztBQUNELFdBQU9DLFNBQVA7QUFDQSxHQWxETTs7OztBQW9EQSxNQUFNWCxTQUFTLEdBQUcsVUFBVTNCLEdBQVYsRUFBdUI7QUFDL0NBLElBQUFBLEdBQUcsR0FBR0QsbUJBQW1CLENBQUNLLGdCQUFnQixDQUFDSixHQUFELENBQWpCLENBQXpCOztBQUNBLFFBQUlKLE9BQU8sQ0FBQ0ksR0FBRCxDQUFYLEVBQWtCO0FBQ2pCLGFBQU9BLEdBQVA7QUFDQSxLQUZELE1BRU87QUFDTjtBQUNBLHNCQUFTQSxHQUFUO0FBQ0E7QUFDRCxHQVJNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG4vKipcbiAqIFN0YWJsZSBJZCBoZWxwZXJcbiAqL1xuXG4vKipcbiAqIENvcHkgZm9yIHRoZSBDb3JlLmlzVmFsaWQgZnVuY3Rpb24gdG8gYmUgaW5kZXBlbmRlbnQuXG4gKlxuICogQHBhcmFtIHZWYWx1ZSBTdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIHZhbGlkIG9yIG5vdFxuICovXG5mdW5jdGlvbiBpc1ZhbGlkKHZWYWx1ZTogc3RyaW5nKSB7XG5cdHJldHVybiAvXihbQS1aYS16X11bLUEtWmEtejAtOV8uOl0qKSQvLnRlc3QodlZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VTcGVjaWFsQ2hhcnMoc0lkOiBzdHJpbmcpIHtcblx0aWYgKHNJZC5pbmRleE9mKFwiIFwiKSA+PSAwKSB7XG5cdFx0Ly8gTG9nLmVycm9yKHNJZCArIFwiIC0gU3BhY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBJRCBwYXJ0cy5cIik7XG5cdFx0dGhyb3cgYCR7c0lkfSAtIFNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gSUQgcGFydHMuYDtcblx0fVxuXHRzSWQgPSBzSWRcblx0XHQucmVwbGFjZSgvXlxcL3xeQHxeI3xeXFwqLywgXCJcIikgLy8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZ1xuXHRcdC5yZXBsYWNlKC9cXC8kfEAkfCMkfFxcKiQvLCBcIlwiKSAvLyByZW1vdmUgc3BlY2lhbCBjaGFyYWN0ZXJzIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nXG5cdFx0LnJlcGxhY2UoL1xcL3xAfFxcKHxcXCl8I3xcXCovZywgXCI6OlwiKTsgLy8gcmVwbGFjZSBzcGVjaWFsIGNoYXJhY3RlcnMgd2l0aCA6OlxuXG5cdC8vIFJlcGxhY2UgZG91YmxlIG9jY3VycmVuY2VzIG9mIHRoZSBzZXBhcmF0b3Igd2l0aCBhIHNpbmdsZSBzZXBhcmF0b3Jcblx0d2hpbGUgKHNJZC5pbmRleE9mKFwiOjo6OlwiKSA+IC0xKSB7XG5cdFx0c0lkID0gc0lkLnJlcGxhY2UoXCI6Ojo6XCIsIFwiOjpcIik7XG5cdH1cblxuXHQvLyBJZiB0aGVyZSBpcyBhIDo6IGF0IHRoZSBlbmQgb2YgdGhlIElEIHJlbW92ZSBpdFxuXHRpZiAoc0lkLnNsaWNlKC0yKSA9PSBcIjo6XCIpIHtcblx0XHRzSWQgPSBzSWQuc2xpY2UoMCwgLTIpO1xuXHR9XG5cblx0cmV0dXJuIHNJZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTmFtZXNwYWNlcyhzSWQ6IHN0cmluZykge1xuXHRzSWQgPSBzSWQucmVwbGFjZShcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlwiLCBcIlwiKTtcblx0c0lkID0gc0lkLnJlcGxhY2UoXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLlwiLCBcIlwiKTtcblx0cmV0dXJuIHNJZDtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9WYWx1ZTogYW55KSB7XG5cdGlmICgob1ZhbHVlICYmIG9WYWx1ZS4kUGF0aCkgfHwgb1ZhbHVlLnBhdGgpIHtcblx0XHRyZXR1cm4gb1ZhbHVlLiRQYXRoIHx8IG9WYWx1ZS5wYXRoO1xuXHR9XG5cblx0aWYgKG9WYWx1ZSAmJiBvVmFsdWUuJEFwcGx5ICYmIG9WYWx1ZS4kRnVuY3Rpb24gPT09IFwib2RhdGEuY29uY2F0XCIpIHtcblx0XHRsZXQgc1BhdGhDb25jYXQgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb1ZhbHVlLiRBcHBseS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKG9WYWx1ZS4kQXBwbHlbaV0uJFBhdGgpIHtcblx0XHRcdFx0aWYgKHNQYXRoQ29uY2F0KSB7XG5cdFx0XHRcdFx0c1BhdGhDb25jYXQgKz0gXCI6OlwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNQYXRoQ29uY2F0ICs9IG9WYWx1ZS4kQXBwbHlbaV0uJFBhdGg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzUGF0aENvbmNhdDtcblx0fVxuXG5cdGlmIChvVmFsdWUpIHtcblx0XHRyZXR1cm4gcmVwbGFjZVNwZWNpYWxDaGFycyhvVmFsdWUucmVwbGFjZSgvIC9nLCBcIl9cIikpO1xuXHR9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIFN0YWJsZSBJZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVyc1xuICpcbiAqIHBhcmFtZXRlcnMgYXJlIGNvbWJpbmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUgcHJvdmlkZWQgYW5kIGFyZSBzZXBhcmF0ZWQgYnkgJzo6J1xuICogc3BlY2lhbCBjaGFyYWN0ZXJzIChALCAvLCAjKSBhcmUgcmVwbGFjZWQgYnkgJzo6JyBpZiB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBTdGFibGUgSWQgYW5kIHJlbW92ZWQgYWxsIHRvZ2V0aGVyIGlmIHRoZSBhcmUgcGFydCBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZFxuICogRXhhbXBsZTpcbiAqIC8vIEdldCBDb25zdGFudCBTdGFibGUgSWRcbiAqIGdlbmVyYXRlKFsnU3RhYmxlJywgJ0lkJ10pIHdvdWxkIHJlc3VsdCBpbiAnU3RhYmxlOjpJZCcgYXMgdGhlIFN0YWJsZSBJZFxuICpcbiAqIC8vIEdldCBQYXJhbWVydGVyaXplZCBTdGFibGUgSWQgZnJvbSBhIENvbGxlY3Rpb24gRmFjZXRcbiAqIHZhciBvUGFyYW1ldGVyID0ge1xuICogXHRcdEZhY2V0OiB7XG4gKiBcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIixcbiAqIFx0XHRcdExhYmVsOiBcIkdlbmVyYWwgSW5mbyBGYWNldCBMYWJlbFwiLFxuICogXHRcdFx0SUQ6ICdHZW5lcmFsSW5mb3JtYXRpb24nXG4gKiBcdFx0fVxuICogfTtcbiAqIGdlbmVyYXRlKFsnc2VjdGlvbicsIG9QYXJhbWV0ZXJdKSB3b3VsZCByZXN1bHQgaW4gJ3NlY3Rpb246OkdlbmVyYWxJbmZvcm1hdGlvbicgYXMgdGhlIFN0YWJsZSBJZFxuICpcbiAqIG9QYXJhbWV0ZXIgaXMgYW5kIG9iamVjdCBvZiBNZXRhZGF0YSBjb250ZXh0cyBhdmFpbGFibGUgd2hpbGUgdGVtcGxhdGluZyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgU3RhYmxlIElEcy5cbiAqIG9QYXJhbWV0ZXIgb2JqZWN0IGtleXMgZGVmaW5lIHRoZSB0eXBlIG9mIG1ldGFkYXRhIGNvbnRleHQuXG4gKiBGb3IgZXhhbXBsZSwgdGhlIGtleSAnRmFjZXQnaW4gdGhlIGFib3ZlIGV4YW1wbGUgdGVsbHMgdGhlIFN0YWJsZSBJZCBIZWxwZXIgdGhhdCB0aGUgY29udGV4dCBpcyBhIEZhY2V0IChjb3VsZCBiZSByZWZlcmVuY2Ugb3IgY29sbGVjdGlvbiBmYWNldClcbiAqXG4gKiBDdXJyZW50bHkgc3VwcG9ydGVkIG1ldGFkYXRhIGNvbnRleHQgaXMgQ29sbGVjdGlvbi9SZWZlcmVuY2UgZmFjZXQgaWRlbnRpZmllZCBieSAnRmFjZXQnIGtleS5cbiAqXG4gKiBAcGFyYW0gYVN0YWJsZUlkUGFydHMgQXJyYXkgb2Ygc3RyaW5ncyBhbmQgb2JqZWN0c1xuICogQHJldHVybnMgU3RhYmxlIElkIGNvbnN0cnVjdGVkIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlID0gZnVuY3Rpb24gKGFTdGFibGVJZFBhcnRzOiBBcnJheTxzdHJpbmcgfCBvYmplY3Q+KSB7XG5cdGxldCBzU3RhYmxlSWQgPSBcIlwiLFxuXHRcdHZFbGVtZW50OiBhbnksXG5cdFx0c0ZhY2V0SWQ7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhU3RhYmxlSWRQYXJ0cy5sZW5ndGg7IGkrKykge1xuXHRcdHZFbGVtZW50ID0gYVN0YWJsZUlkUGFydHNbaV07XG5cdFx0aWYgKCF2RWxlbWVudCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdHNTdGFibGVJZCArPSBzU3RhYmxlSWQgIT09IFwiXCIgPyBcIjo6XCIgOiBcIlwiO1xuXHRcdGlmICh2RWxlbWVudFtcIkZhY2V0XCJdICYmIHZFbGVtZW50W1wiRmFjZXRcIl1bXCIkVHlwZVwiXSAmJiB2RWxlbWVudFtcIkZhY2V0XCJdW1wiJFR5cGVcIl0gPT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIikge1xuXHRcdFx0c1N0YWJsZUlkICs9IHZFbGVtZW50W1wiRmFjZXRcIl1bXCJJRFwiXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiB2RWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0aWYgKHZFbGVtZW50KSB7XG5cdFx0XHRcdHNTdGFibGVJZCArPSB2RWxlbWVudDtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHR5cGVvZiB2RWxlbWVudCA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0Ly8gaGFuZGxlIHBhcmFtZXRlcnNcblx0XHRcdGlmICh2RWxlbWVudCAmJiB2RWxlbWVudC5GYWNldCkge1xuXHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXQuJFR5cGUgJiYgdkVsZW1lbnQuRmFjZXQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIpIHtcblx0XHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXQuSUQpIHtcblx0XHRcdFx0XHRcdHNGYWNldElkID0gdkVsZW1lbnQuRmFjZXQuSUQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlJlZmVyZW5jZUZhY2V0XCIpIHtcblx0XHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXQuSUQpIHtcblx0XHRcdFx0XHRcdHNGYWNldElkID0gdkVsZW1lbnQuRmFjZXQuSUQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNGYWNldElkID0gdkVsZW1lbnQuRmFjZXQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aCB8fCB2RWxlbWVudC5GYWNldC5UYXJnZXQudmFsdWU7IC8vIENvbXBsaWFudCB3aXRoIENvbnZlcnRlcnNcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAodkVsZW1lbnQuRmFjZXQuJFR5cGUgJiYgdkVsZW1lbnQuRmFjZXQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmllbGRHcm91cFR5cGVcIikge1xuXHRcdFx0XHRcdGlmICh2RWxlbWVudC5GYWNldC5MYWJlbCkge1xuXHRcdFx0XHRcdFx0c0ZhY2V0SWQgPSB2RWxlbWVudC5GYWNldC5MYWJlbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNGYWNldElkKSB7XG5cdFx0XHRcdFx0c1N0YWJsZUlkICs9IHNGYWNldElkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnRbXCIkVHlwZVwiXSAmJiB2RWxlbWVudFtcIiRUeXBlXCJdLmluZGV4T2YoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikgPiAtMSkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCh2RWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHNTdGFibGVJZCA9IHByZXBhcmVJZChzU3RhYmxlSWQpO1xuXHRyZXR1cm4gc1N0YWJsZUlkO1xufTtcbmV4cG9ydCBjb25zdCBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24gPSBmdW5jdGlvbiAob0RhdGFGaWVsZDogYW55KTogc3RyaW5nIHtcblx0bGV0IHNJZFBhcnQgPSBcIlwiO1xuXHRpZiAodHlwZW9mIG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QgPT0gXCJzdHJpbmdcIikge1xuXHRcdHNJZFBhcnQgKz0gb0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdDtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0LiRQYXRoKSB7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0LiRQYXRoO1xuXHR9XG5cdGlmICh0eXBlb2Ygb0RhdGFGaWVsZC5BY3Rpb24gPT0gXCJzdHJpbmdcIikge1xuXHRcdHNJZFBhcnQgKz0gYDo6JHtvRGF0YUZpZWxkLkFjdGlvbn1gO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuQWN0aW9uICYmIG9EYXRhRmllbGQuQWN0aW9uLiRQYXRoKSB7XG5cdFx0c0lkUGFydCArPSBgOjoke29EYXRhRmllbGQuQWN0aW9uLiRQYXRofWA7XG5cdH1cblx0aWYgKG9EYXRhRmllbGRbXCJSZXF1aXJlc0NvbnRleHRcIl0gJiYgb0RhdGFGaWVsZFtcIlJlcXVpcmVzQ29udGV4dFwiXSA9PSB0cnVlKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6UmVxdWlyZXNDb250ZXh0XCI7XG5cdH1cblx0cmV0dXJuIHNJZFBhcnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCA9IGZ1bmN0aW9uIChvRGF0YUZpZWxkOiBhbnksIG1QYXJhbWV0ZXI6IHsgY29udGV4dD86IENvbnRleHQgfSA9IHt9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0bGV0IHNJZFBhcnQgPSBcIlwiO1xuXG5cdGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRGb3JBY3Rpb246OlwiO1xuXHRcdHNJZFBhcnQgKz0gb0RhdGFGaWVsZC5BY3Rpb247XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVNlbWFudGljT2JqZWN0QW5kQWN0aW9uKG9EYXRhRmllbGQpO1xuXHRcdHJldHVybiBzSWRQYXJ0O1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRGb3JBbm5vdGF0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IHByZXBhcmVJZChvRGF0YUZpZWxkLlRhcmdldC4kQW5ub3RhdGlvblBhdGggfHwgb0RhdGFGaWVsZC5UYXJnZXQudmFsdWUpO1xuXHRcdHJldHVybiBzSWRQYXJ0O1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoQWN0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoQWN0aW9uOjpcIjtcblx0XHRpZiAob0RhdGFGaWVsZC5WYWx1ZSkge1xuXHRcdFx0c0lkUGFydCArPSBgJHtnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSl9OjpgO1xuXHRcdH1cblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuQWN0aW9uO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKTtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGAke2dldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKX06OmA7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldCAmJiBvRGF0YUZpZWxkLlRhcmdldFtcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCJdKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IGA6OiR7b0RhdGFGaWVsZC5UYXJnZXRbXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiXX1gO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoVXJsOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKTtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG1QYXJhbWV0ZXIgJiYgbVBhcmFtZXRlci5jb250ZXh0ICYmIG1QYXJhbWV0ZXIuY29udGV4dC5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSkge1xuXHRcdC8vIHRoZSBjb250ZXh0IGlzIG5vdCByZWZlcnJpbmcgdG8gZGEgZGF0YSBmaWVsZCBidXQgZGlyZWN0bHkgdG8gYSBwcm9wZXJ0eSwgcmV0dXJuIHRoZSBwcm9wZXJ0eSBuYW1lXG5cdFx0cmV0dXJuIHByZXBhcmVJZChtUGFyYW1ldGVyLmNvbnRleHQuZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIikudG9TdHJpbmcoKSk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gSW4gY2FzZSBvZiBhIHN0cmluZyBvciB1bmtub3duIHByb3BlcnR5XG5cdFx0Ly8gTG9nLmVycm9yKFwiU3RhYmxlIElEIEhlbHBlcjogVW5hYmxlIHRvIGNyZWF0ZSBhIHN0YWJsZSBJRC4gUGxlYXNlIGNoZWNrIHRoZSBhbm5vdGF0aW9ucy5cIik7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBwcmVwYXJlSWQgPSBmdW5jdGlvbiAoc0lkOiBzdHJpbmcpIHtcblx0c0lkID0gcmVwbGFjZVNwZWNpYWxDaGFycyhyZW1vdmVOYW1lc3BhY2VzKHNJZCkpO1xuXHRpZiAoaXNWYWxpZChzSWQpKSB7XG5cdFx0cmV0dXJuIHNJZDtcblx0fSBlbHNlIHtcblx0XHQvLyBMb2cuZXJyb3Ioc0lkICsgXCIgLSBTdGFibGUgSWQgY291bGQgbm90IGJlIGdlbmVyYXRlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLlwiKTtcblx0XHR0aHJvdyBgJHtzSWR9IC0gU3RhYmxlIElkIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgZHVlIHRvIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi5gO1xuXHR9XG59O1xuIl19
|