@sapui5/sap.fe.macros 1.141.0 → 1.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/Field.js +30 -13
- package/src/sap/fe/macros/Field.ts +60 -30
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +6 -3
- package/src/sap/fe/macros/KPITag.js +1 -1
- package/src/sap/fe/macros/KPITag.tsx +3 -1
- package/src/sap/fe/macros/MacroAPI.js +3 -2
- package/src/sap/fe/macros/MacroAPI.ts +2 -2
- package/src/sap/fe/macros/MessageButton.js +3 -2
- package/src/sap/fe/macros/MessageButton.tsx +5 -2
- package/src/sap/fe/macros/MicroChart.js +10 -6
- package/src/sap/fe/macros/MicroChart.tsx +8 -2
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Status.js +35 -8
- package/src/sap/fe/macros/Status.tsx +23 -2
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
- package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
- package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/library.js +3 -3
- package/src/sap/fe/macros/library.ts +2 -0
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +15 -2
- package/src/sap/fe/macros/table/Action.ts +11 -1
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +70 -29
- package/src/sap/fe/macros/table/Table.block.tsx +65 -12
- package/src/sap/fe/macros/table/TableAPI.js +169 -131
- package/src/sap/fe/macros/table/TableAPI.ts +58 -28
- package/src/sap/fe/macros/table/TableDefinition.js +19 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +2 -2
- package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -99,7 +99,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
99
99
|
* @returns Supported filter fields.
|
|
100
100
|
*/
|
|
101
101
|
async _getSupportedFilterFields(control) {
|
|
102
|
-
if (control.isA("sap.ui.mdc.
|
|
102
|
+
if (control.isA("sap.ui.mdc.Table")) {
|
|
103
|
+
return control.getParent().getEnhancedFetchedPropertyInfos();
|
|
104
|
+
} else if (control.isA("sap.ui.mdc.Filterbar")) {
|
|
103
105
|
await control.waitForInitialization();
|
|
104
106
|
return control.getControlDelegate().fetchFilterProperties(control);
|
|
105
107
|
} else if (control.isA("sap.fe.macros.controls.FilterBar")) {
|
|
@@ -110,7 +112,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
110
112
|
return control.getControlDelegate().fetchProperties(control);
|
|
111
113
|
},
|
|
112
114
|
/**
|
|
113
|
-
* Clears all input values of visible filter fields in the table, chart, or filter bar
|
|
115
|
+
* Clears all input values of visible filter fields in the table, chart, or filter bar.
|
|
114
116
|
* @param controlInstance This can be a filter bar, chart, or table.
|
|
115
117
|
*/
|
|
116
118
|
async clearFilterValues(controlInstance) {
|
|
@@ -183,9 +185,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
183
185
|
propertyInfos.forEach(propertyInfo => {
|
|
184
186
|
if (control.isA("sap.ui.mdc.Table")) {
|
|
185
187
|
propertyInfo["conditionPath"] = propertyInfo.name;
|
|
186
|
-
propertyInfo["annotationPath"] = propertyInfo.metadataPath ? propertyInfo.metadataPath : "";
|
|
187
188
|
propertyInfo["hasValueHelp"] = PropertyHelper.hasValueHelp(control.getPropertyHelper().getProperty(propertyInfo.name));
|
|
188
|
-
propertyInfo["dataType"] = propertyInfo?.typeConfig?.className;
|
|
189
189
|
} else if (control.isA("sap.ui.mdc.Chart")) {
|
|
190
190
|
if (propertyInfo.path) {
|
|
191
191
|
propertyInfo["name"] = propertyInfo.path;
|
|
@@ -203,11 +203,13 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
203
203
|
* @param controlInstance This could be a table, chart, or filter bar
|
|
204
204
|
* @param selectionVariant The selection variant to apply to the respective mdc controls
|
|
205
205
|
* @param prefillDescriptions Optional. If true, we will use the associated text property values (if they're available in the selectionVariant) to display the filter value descriptions, instead of loading them from the backend
|
|
206
|
+
* @param fromNavigationParameters Optional. If true, the selection variant is assumed to come from navigation parameters. In this case, if the selection variant contains select options for properties that are not present in the filter bar, these select options will be ignored and will not lead to clearing the filter bar.
|
|
206
207
|
* @returns A promise for asynchronous handling
|
|
207
208
|
* @public
|
|
208
209
|
*/
|
|
209
210
|
async setSelectionVariantToMdcControl(controlInstance, selectionVariant) {
|
|
210
211
|
let prefillDescriptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
212
|
+
let fromNavigationParameters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
211
213
|
try {
|
|
212
214
|
const state = await StateUtil.retrieveExternalState(controlInstance);
|
|
213
215
|
if (!state.filter) {
|
|
@@ -215,6 +217,14 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
215
217
|
return;
|
|
216
218
|
}
|
|
217
219
|
const conditions = await this.convertSelectionVariantToStateFilters(controlInstance, selectionVariant, prefillDescriptions, controlInstance?.getModel());
|
|
220
|
+
if (fromNavigationParameters && selectionVariant.getSelectOptionsPropertyNames().length > 0 && Object.keys(conditions).length === 0) {
|
|
221
|
+
// If the selection variant has select options but no conditions could be mapped to the filter bar, we return an empty array
|
|
222
|
+
// This is to avoid clearing the filter bar in this case
|
|
223
|
+
// This can happen if the selection variant has only parameters or select options for properties not present in the filter bar
|
|
224
|
+
// In this case, we assume that the selection variant is not meant to clear the filter bar
|
|
225
|
+
// and we do not apply it
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
218
228
|
|
|
219
229
|
// Clear filter of table before applying selection variant
|
|
220
230
|
await this.clearFilterValues(controlInstance?.getParent());
|
|
@@ -257,4 +267,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
|
|
|
257
267
|
};
|
|
258
268
|
return StateHelper;
|
|
259
269
|
}, false);
|
|
260
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0ZUhlbHBlciIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJjb250cm9sIiwiY29udHJvbFN0YXRlIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiY29udHJvbE9iamVjdCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCJnZXRQYXJlbnQiLCJpc0EiLCJnZXRQYXJhbWV0ZXJzIiwidW5kZWZpbmVkIiwic2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImdldFByb3BlcnR5SGVscGVyIiwiZXh0ZXJuYWxTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3RPcHRpb25zIiwiX2dldFNlbGVjdE9wdGlvbnMiLCJwcm9wZXJ0eSIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzcGxpdCIsImVycm9yIiwiaWQiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsIkxvZyIsImNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwibW9kZWwiLCJwcm9wZXJ0eUluZm9zIiwiX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsImxlbmd0aCIsImZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIiwiX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbiIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvcHlvZlByb3BlcnR5SW5mb3MiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ1cGRhdGVkUHJvcGVydHlJbmZvcyIsIl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTViIsImNvbmRpdGlvbnMiLCJzdlRvU3RhdGVGaWx0ZXJzIiwiZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWIiwiZ2V0TW9kZWwiLCJjb250ZXh0UGF0aCIsImRhdGEiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInZpZXdEYXRhSW5zdGFuY2UiLCJ2aWV3RGF0YSIsImdldERhdGEiLCJjb25maWciLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJmaWx0ZXJGaWVsZHMiLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJnZXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaEZpbHRlclByb3BlcnRpZXMiLCJhd2FpdENvbnRyb2xEZWxlZ2F0ZSIsImZldGNoUHJvcGVydGllcyIsImNsZWFyRmlsdGVyVmFsdWVzIiwiY29udHJvbEluc3RhbmNlIiwiX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMiLCJjb250ZW50IiwiZmlyZUV2ZW50Iiwib3B0aW9ucyIsInN0YXRlIiwiZWRpdFN0YXRlUGF0aCIsImN1cnJlbnRFZGl0U3RhdGVDb25kaXRpb24iLCJlZGl0U3RhdGVEZWZhdWx0VmFsdWUiLCJjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0Iiwic2hvdWxkQ2xlYXJFZGl0RmlsdGVyIiwiRHJhZnRFZGl0U3RhdGUiLCJBTEwiLCJkZWVwQ2xvbmUiLCJ2YWx1ZXMiLCJPYmplY3QiLCJrZXlzIiwiY2xlYXJFZGl0RmlsdGVyIiwiY29uZGl0aW9uUGF0aCIsImNvbmRpdGlvbiIsImZpbHRlcmVkIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiY2xlYW5VcEFsbEZpbHRlckZpZWxkc0luRXJyb3JTdGF0ZSIsImZvckVhY2giLCJwcm9wZXJ0eUluZm8iLCJuYW1lIiwibWV0YWRhdGFQYXRoIiwiUHJvcGVydHlIZWxwZXIiLCJoYXNWYWx1ZUhlbHAiLCJnZXRQcm9wZXJ0eSIsInR5cGVDb25maWciLCJjbGFzc05hbWUiLCJwYXRoIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJ0YXJnZXRPYmplY3QiLCJkYXRhVHlwZSIsInNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wiLCJhcmd1bWVudHMiLCJzdGF0ZVRvQXBwbHkiLCJnZXRTdGF0ZVRvQXBwbHkiLCJjb252ZXJ0Q29uZGl0aW9uc0ZvckNoYXJ0IiwiZGlmZlN0YXRlIiwiYXBwbHlTdGF0ZVJlc3VsdCIsImVyciIsImFzc2lnbiIsIml0ZW1zIiwicHJvcGVydHlPYmoiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN0YXRlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IERyYWZ0RWRpdFN0YXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9EcmFmdEVkaXRTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvUHJvcGVydHlJbmZvXCI7XG5pbXBvcnQgdHlwZSB7IENvbnZlcnNpb25JbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvbWRjL2FkYXB0ZXIvU2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzXCI7XG5pbXBvcnQgc3ZUb1N0YXRlRmlsdGVycyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZGMvYWRhcHRlci9TZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnNcIjtcbmltcG9ydCBTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9tYWNyb3MvbWRjL2FkYXB0ZXIvU3RhdGVGaWx0ZXJUb1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxTdGF0ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy92YWx1ZWhlbHAvVmFsdWVIZWxwRGVsZWdhdGVcIjtcbmltcG9ydCBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBDb3JlQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIHsgU3RhdGVUb0FwcGx5LCBGaWx0ZXIgYXMgU3RhdGVVdGlsRmlsdGVyIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDaGFydFR5cGUgZnJvbSBcIi4uLy4uL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBNYWNyb0FQSSBmcm9tIFwiLi4vLi4vTWFjcm9BUElcIjtcblxuLyoqXG4gKiBUaGlzIGlzIHRvIGV4dGVuZCBNREMgY29udHJvbCBBUElzIGZvciBmaWx0ZXIsIHRhYmxlLCBjaGFydCBidWlsZGluZyBibG9ja3MuXG4gKiBAcHVibGljXG4gKi9cblxuY29uc3QgU3RhdGVIZWxwZXIgPSB7XG5cdC8qKlxuXHQgKiBHZXRzIHNlbGVjdGlvbiB2YXJpYW50IGZyb20gdGhlIG1kYyBjb250cm9sLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGUgY29udHJvbCBmb3Igd2hpY2ggU2VsZWN0aW9uIFZhcmlhbnQgaXMgdG8gYmUgZmV0Y2hlZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2l0aCBhIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBnZXRTZWxlY3Rpb25WYXJpYW50KGNvbnRyb2w6IENvcmVDb250cm9sIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxTZWxlY3Rpb25WYXJpYW50PiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNvbnRyb2xTdGF0ZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbCBhcyBDb250cm9sKTtcblx0XHRcdGNvbnN0IGNvbnRyb2xPYmplY3QgPSBjb250cm9sU3RhdGUuZmlsdGVyIGFzIFN0YXRlVXRpbEZpbHRlcjtcblx0XHRcdGxldCBwYXJhbWV0ZXJzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IFtdO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRjb250cm9sPy5nZXRQYXJlbnQoKT8uaXNBKFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIpICYmXG5cdFx0XHRcdChjb250cm9sLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSSkuZ2V0UGFyYW1ldGVycyAhPT0gdW5kZWZpbmVkXG5cdFx0XHQpIHtcblx0XHRcdFx0cGFyYW1ldGVycyA9IChjb250cm9sLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSSkuZ2V0UGFyYW1ldGVycygpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc2VsZWN0aW9uVmFyaWFudCA9IFN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3Rpb25WYXJpYW50RnJvbUNvbmRpdGlvbnMoXG5cdFx0XHRcdGNvbnRyb2xPYmplY3QsXG5cdFx0XHRcdChjb250cm9sIGFzIENvbnRyb2wpLmdldFByb3BlcnR5SGVscGVyKCksXG5cdFx0XHRcdHBhcmFtZXRlcnNcblx0XHRcdCk7XG5cdFx0XHRpZiAoY29udHJvbD8uaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHRjb25zdCBleHRlcm5hbFNWID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoKTtcblx0XHRcdFx0Y29uc3Qgc2VsZWN0T3B0aW9ucyA9IHNlbGVjdGlvblZhcmlhbnQuX2dldFNlbGVjdE9wdGlvbnMoKTtcblx0XHRcdFx0Zm9yIChjb25zdCBwcm9wZXJ0eSBpbiBzZWxlY3RPcHRpb25zKSB7XG5cdFx0XHRcdFx0ZXh0ZXJuYWxTVi5tYXNzQWRkU2VsZWN0T3B0aW9uKHByb3BlcnR5LnNwbGl0KFwiX2ZlX2dyb3VwYWJsZV9cIilbMV0sIHNlbGVjdE9wdGlvbnNbcHJvcGVydHldKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZXh0ZXJuYWxTVjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBzZWxlY3Rpb25WYXJpYW50O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY29udHJvbD8uZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cdFx0XHRMb2cuZXJyb3IoYEJ1aWxkaW5nIEJsb2NrICgke2lkfSkgLSBnZXQgc2VsZWN0aW9uIHZhcmlhbnQgZmFpbGVkIDogJHttZXNzYWdlfWApO1xuXHRcdFx0dGhyb3cgRXJyb3IobWVzc2FnZSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0IHNlbGVjdGlvbiB2YXJpYW50IHRvIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgY2FuIGJlIGEgdGFibGUsIGNoYXJ0IG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IHRvIGFwcGx5IHRvIHRoZSB0YWJsZSBvciBjaGFydCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBJZiB0cnVlLCB3ZSB0cnkgdG8gZmluZCB0aGUgYXNzb2NpYXRlZCBUZXh0IHZhbHVlIGZvciBlYWNoIHByb3BlcnR5IGluIHRoZSBzZWxlY3Rpb25WYXJpYW50ICh0byBhdm9pZCBmZXRjaGluZyBpdCBmcm9tIHRoZSBzZXJ2ZXIpXG5cdCAqIEBwYXJhbSBtb2RlbCBUaGUgY29udHJvbCBtb2RlbFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmRpdGlvbnNcblx0ICovXG5cdGFzeW5jIGNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0Y29udHJvbDogQ29udHJvbCxcblx0XHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdHByZWZpbGxEZXNjcmlwdGlvbnM6IGJvb2xlYW4sXG5cdFx0bW9kZWw/OiBNb2RlbFxuXHQpOiBQcm9taXNlPFN0YXRlVXRpbEZpbHRlcj4ge1xuXHRcdC8vIE5vdGU6IFRoaXMgbWV0aG9kIGlzIHByaXZhdGUgYW5kIHJlc3RyaWN0ZWQgdG8gdXNhZ2UgYnkgc2FwLmZlKFZpZXdTdGF0ZSBjb250cm9sbGVyIGV4dGVuc2lvbikgZm9yIGZpbHRlciBiYXIvIGNoYXJ0IC8gdGFibGUgc3RhdGUgc2NlbmFyaW9zLlxuXHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSBhd2FpdCB0aGlzLl9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbCk7XG5cblx0XHRpZiAoIXByb3BlcnR5SW5mb3MubGVuZ3RoKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyB2YWxpZCBtZXRhZGF0YSBwcm9wZXJ0aWVzIHByZXNlbnQgZm9yIGZpbHRlciBiYXJcIik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb24gPSB0aGlzLl9nZXRDb250cm9sSW5mb0ZvckNvbnZlcnNpb24oY29udHJvbCk7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gbW9kZWw/LmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGNvbnN0IGNvcHlvZlByb3BlcnR5SW5mb3MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByb3BlcnR5SW5mb3MpKTtcblx0XHRjb25zdCB1cGRhdGVkUHJvcGVydHlJbmZvcyA9IHRoaXMuX3VwZGF0ZVByb3BlcnR5SW5mb1RvU3VwcG9ydFNWKGNvbnRyb2wsIGNvcHlvZlByb3BlcnR5SW5mb3MpO1xuXHRcdGNvbnN0IGNvbmRpdGlvbnM6IFN0YXRlVXRpbEZpbHRlciA9IHN2VG9TdGF0ZUZpbHRlcnMuZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWKFxuXHRcdFx0c2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdGZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uLFxuXHRcdFx0dXBkYXRlZFByb3BlcnR5SW5mb3MgPz8gY29weW9mUHJvcGVydHlJbmZvcyxcblx0XHRcdHByZWZpbGxEZXNjcmlwdGlvbnMsXG5cdFx0XHRtZXRhTW9kZWxcblx0XHQpO1xuXG5cdFx0cmV0dXJuIGNvbmRpdGlvbnM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZmlsdGVyIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgdGhlIGNvbnZlcnNpb24gb2Ygc2VsZWN0aW9uIHZhcmlhbnQgdG8gY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjYW4gYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlcmJhclxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCBpbmZvcm1hdGlvbiAobWV0YU1vZGVsLCBjb250ZXh0UGF0aCwgdXNlIG9mIHNlbWFudGljIGRhdGUgcmFuZ2UsIGFsbCBmaWx0ZXIgZmllbGRzIGNvbmZpZylcblx0ICovXG5cdF9nZXRDb250cm9sSW5mb0ZvckNvbnZlcnNpb24oY29udHJvbDogQ29udHJvbCk6IENvbnZlcnNpb25JbmZvIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBjb250cm9sLmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsLFxuXHRcdFx0Y29udGV4dFBhdGggPSBjb250cm9sLmRhdGEoXCJlbnRpdHlUeXBlXCIpIGFzIHN0cmluZztcblx0XHRpZiAoY29udHJvbC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0Y29uc3QgdXNlU2VtYW50aWNEYXRlUmFuZ2U6IGJvb2xlYW4gPVxuXHRcdFx0XHRcdGNvbnRyb2wuZGF0YShcInVzZVNlbWFudGljRGF0ZVJhbmdlXCIpID09PSBcInRydWVcIiB8fCBjb250cm9sLmRhdGEoXCJ1c2VTZW1hbnRpY0RhdGVSYW5nZVwiKSA9PT0gdHJ1ZSxcblx0XHRcdFx0dmlld0RhdGFJbnN0YW5jZSA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJ2aWV3RGF0YVwiKSBhcyBKU09OTW9kZWwsXG5cdFx0XHRcdHZpZXdEYXRhID0gdmlld0RhdGFJbnN0YW5jZS5nZXREYXRhKCkgYXMgVmlld0RhdGEsXG5cdFx0XHRcdGNvbmZpZyA9IHZpZXdEYXRhPy5jb250cm9sQ29uZmlndXJhdGlvbixcblx0XHRcdFx0c2VsZWN0aW9uRmllbGRzQ29uZmlncyA9IGNvbmZpZz8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiXSxcblx0XHRcdFx0ZmlsdGVyRmllbGRzQ29uZmlnID0gc2VsZWN0aW9uRmllbGRzQ29uZmlncz8uZmlsdGVyRmllbGRzO1xuXHRcdFx0cmV0dXJuIHsgbWV0YU1vZGVsLCBjb250ZXh0UGF0aCwgdXNlU2VtYW50aWNEYXRlUmFuZ2UsIGZpbHRlckZpZWxkc0NvbmZpZywgc2VsZWN0aW9uRmllbGRzQ29uZmlncyB9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4geyBtZXRhTW9kZWwsIGNvbnRleHRQYXRoIH07XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgc3VwcG9ydGVkIGZpbHRlciBmaWVsZCBwcm9wZXJ0aWVzIGZyb20gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBjYW4gYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgU3VwcG9ydGVkIGZpbHRlciBmaWVsZHMuXG5cdCAqL1xuXHRhc3luYyBfZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGNvbnRyb2w6IENvbnRyb2wpOiBQcm9taXNlPENvbnRyb2xQcm9wZXJ0eUluZm9bXT4ge1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyYmFyXCIpKSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLndhaXRGb3JJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSBpZiAoKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBUYWJsZSB8IENoYXJ0KS5hd2FpdENvbnRyb2xEZWxlZ2F0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gKGNvbnRyb2wgYXMgVGFibGUgfCBDaGFydCB8IEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci4uXG5cdCAqIEBwYXJhbSBjb250cm9sSW5zdGFuY2UgVGhpcyBjYW4gYmUgYSBmaWx0ZXIgYmFyLCBjaGFydCwgb3IgdGFibGUuXG5cdCAqL1xuXHRhc3luYyBjbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U6IE1hY3JvQVBJKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy5fY2xlYXJGaWx0ZXJWYWx1ZXNXaXRoT3B0aW9ucyhjb250cm9sSW5zdGFuY2UuY29udGVudCBhcyBDb250cm9sKTtcblx0XHQvLyBBbGxvdyBhcHAgZGV2ZWxvcGVycyB0byB1cGRhdGUgZmlsdGVycyBhZnRlciBjbGVhcmluZ1xuXHRcdGNvbnRyb2xJbnN0YW5jZS5maXJlRXZlbnQoXCJhZnRlckNsZWFyXCIpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjYW4gYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZmlsdGVyaW5nIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBvcHRpb25zLmNsZWFyRWRpdEZpbHRlciBXaGV0aGVyIHRvIGNsZWFyIHRoZSBlZGl0IGZpbHRlciBvciByZXRhaW4gdGhlIGRlZmF1bHQgdmFsdWUgJ0FsbCdcblx0ICovXG5cdGFzeW5jIF9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGNvbnRyb2w6IENvbnRyb2wsIG9wdGlvbnM/OiB7IGNsZWFyRWRpdEZpbHRlcjogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbCk7XG5cdFx0bGV0IGVkaXRTdGF0ZVBhdGggPSBcIlwiLFxuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbixcblx0XHRcdGVkaXRTdGF0ZURlZmF1bHRWYWx1ZSxcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG5cdFx0XHRzaG91bGRDbGVhckVkaXRGaWx0ZXI6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cdFx0aWYgKGNvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0ZWRpdFN0YXRlUGF0aCA9IFwiJGVkaXRTdGF0ZVwiO1xuXHRcdFx0ZWRpdFN0YXRlRGVmYXVsdFZhbHVlID0gRHJhZnRFZGl0U3RhdGUuQUxMLmlkO1xuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbiA9IGRlZXBDbG9uZShzdGF0ZS5maWx0ZXJbZWRpdFN0YXRlUGF0aF0/LlswXSk7XG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0ID0gY3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbj8udmFsdWVzWzBdID09PSBlZGl0U3RhdGVEZWZhdWx0VmFsdWU7XG5cdFx0XHRzaG91bGRDbGVhckVkaXRGaWx0ZXIgPSBvcHRpb25zICYmIE9iamVjdC5rZXlzKG9wdGlvbnMpLmxlbmd0aCA+IDAgJiYgb3B0aW9ucy5jbGVhckVkaXRGaWx0ZXI7XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYXIgYWxsIGNvbmRpdGlvbnNcblx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvblBhdGggb2YgT2JqZWN0LmtleXMoc3RhdGUuZmlsdGVyKSkge1xuXHRcdFx0aWYgKCFzaG91bGRDbGVhckVkaXRGaWx0ZXIgJiYgY29uZGl0aW9uUGF0aCA9PT0gZWRpdFN0YXRlUGF0aCAmJiBjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0KSB7XG5cdFx0XHRcdC8vIERvIG5vdCBjbGVhciBlZGl0IHN0YXRlIGNvbmRpdGlvbiBpZiBpdCBpcyBhbHJlYWR5IFwiQUxMXCJcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzdGF0ZS5maWx0ZXJbY29uZGl0aW9uUGF0aF0pIHtcblx0XHRcdFx0Y29uZGl0aW9uLmZpbHRlcmVkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbCwgeyBmaWx0ZXI6IHN0YXRlLmZpbHRlciB9KTtcblxuXHRcdGlmIChjb250cm9sLmlzQTxGaWx0ZXJCYXI+KFwic2FwLnVpLm1kYy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdC8vIFNldCBlZGl0IHN0YXRlIHRvICdBTEwnIGlmIGl0IHdhc24ndCBiZWZvcmVcblx0XHRcdGlmICghc2hvdWxkQ2xlYXJFZGl0RmlsdGVyICYmIGN1cnJlbnRFZGl0U3RhdGVDb25kaXRpb24gJiYgIWN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQpIHtcblx0XHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbi52YWx1ZXMgPSBbZWRpdFN0YXRlRGVmYXVsdFZhbHVlXTtcblx0XHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjb250cm9sLCB7IGZpbHRlcjogeyBbZWRpdFN0YXRlUGF0aF06IFtjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uXSB9IH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NsZWFyIGZpbHRlciBmaWVsZHMgaW4gZXJyb3Igc3RhdGVcblx0XHRcdGNvbnRyb2wuY2xlYW5VcEFsbEZpbHRlckZpZWxkc0luRXJyb3JTdGF0ZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHJldHVybnMgdGhlIGNvcHkgb2YgcHJvcGVydHlJbmZvIGJ5IGFkZGluZyBuZWNlc3NhcnkgZmllbGRzIHNvIHRoYXQgc2VsZWN0aW9uIHZhcmlhbnQgY2FuIGJlIHNldCB0byBhIGNvbnRyb2wgbGlrZSB0YWJsZSBhbmQgY2hhcnQuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHByb3BlcnR5SW5mb3MgQXJyYXkgb2YgUHJvcGVydHlJbmZvIG9mIHRoZSBjb250cm9sXG5cdCAqIEByZXR1cm5zIFRoZSBkZWVwIGNsb25lIG9mIHByb3BlcnR5SW5mb3Mgd2l0aCBzb21lIGFkZGl0aW9uYWwgZmllbGRzXG5cdCAqL1xuXHRfdXBkYXRlUHJvcGVydHlJbmZvVG9TdXBwb3J0U1YoY29udHJvbDogQ29udHJvbCwgcHJvcGVydHlJbmZvczogQ29udHJvbFByb3BlcnR5SW5mb1tdKTogQ29udHJvbFByb3BlcnR5SW5mb1tdIHtcblx0XHRpZiAoY29udHJvbC5pc0EoXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdFx0fVxuXHRcdHByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHlJbmZvOiBDb250cm9sUHJvcGVydHlJbmZvKSA9PiB7XG5cdFx0XHRpZiAoKGNvbnRyb2wgYXMgQ29udHJvbCkuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLm5hbWU7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImFubm90YXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLm1ldGFkYXRhUGF0aCA/IHByb3BlcnR5SW5mby5tZXRhZGF0YVBhdGggOiBcIlwiO1xuXHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJoYXNWYWx1ZUhlbHBcIl0gPSBQcm9wZXJ0eUhlbHBlci5oYXNWYWx1ZUhlbHAoXG5cdFx0XHRcdFx0KGNvbnRyb2wgYXMgVGFibGUpLmdldFByb3BlcnR5SGVscGVyKCkuZ2V0UHJvcGVydHkocHJvcGVydHlJbmZvLm5hbWUpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImRhdGFUeXBlXCJdID0gcHJvcGVydHlJbmZvPy50eXBlQ29uZmlnPy5jbGFzc05hbWUgYXMgc3RyaW5nO1xuXHRcdFx0fSBlbHNlIGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eUluZm8ucGF0aCkge1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcIm5hbWVcIl0gPSBwcm9wZXJ0eUluZm8ucGF0aDtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLnBhdGg7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSAoKGNvbnRyb2wgYXMgQ2hhcnQpLmdldFBhcmVudCgpIGFzIENoYXJ0VHlwZSk/LmdldFByb3BlcnR5RGF0YU1vZGVsKHByb3BlcnR5SW5mby5wYXRoKT8udGFyZ2V0T2JqZWN0O1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImhhc1ZhbHVlSGVscFwiXSA9IHByb3BlcnR5ID8gUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKHByb3BlcnR5KSA6IGZhbHNlO1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImRhdGFUeXBlXCJdID0gKHByb3BlcnR5SW5mbz8udHlwZUNvbmZpZz8uY2xhc3NOYW1lIGFzIHN0cmluZykgfHwgcHJvcGVydHlJbmZvLmRhdGFUeXBlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgc2VsZWN0aW9uIHZhcmlhbnQgdG8gdGhlIHRhYmxlLiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgdGhlIGV4aXN0aW5nIGZpbHRlcnMgYW5kIHRoZW4gYXBwbHkgdGhlIFNlbGVjdGlvblZhcmlhbnQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gY29udHJvbEluc3RhbmNlIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IHRvIGFwcGx5IHRvIHRoZSByZXNwZWN0aXZlIG1kYyBjb250cm9sc1xuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBPcHRpb25hbC4gSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgdGhlIGFzc29jaWF0ZWQgdGV4dCBwcm9wZXJ0eSB2YWx1ZXMgKGlmIHRoZXkncmUgYXZhaWxhYmxlIGluIHRoZSBzZWxlY3Rpb25WYXJpYW50KSB0byBkaXNwbGF5IHRoZSBmaWx0ZXIgdmFsdWUgZGVzY3JpcHRpb25zLCBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlbSBmcm9tIHRoZSBiYWNrZW5kXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2woXG5cdFx0Y29udHJvbEluc3RhbmNlOiBDb3JlQ29udHJvbCB8IHVuZGVmaW5lZCxcblx0XHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZVxuXHQpOiBQcm9taXNlPHsgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZTsgYXBwbHlTdGF0ZVJlc3VsdDogdW5rbm93biB9IHwgdW5kZWZpbmVkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0aWYgKCFzdGF0ZS5maWx0ZXIpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBGRSA6IHNldFNlbGVjdGlvblZhcmlhbnQgQVBJIGNhbm5vdCBiZSBhcHBsaWVkIG9uIDogJHtjb250cm9sSW5zdGFuY2U/LmdldElkKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbmRpdGlvbnM6IFN0YXRlVXRpbEZpbHRlciA9IGF3YWl0IHRoaXMuY29udmVydFNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycyhcblx0XHRcdFx0Y29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsXG5cdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByZWZpbGxEZXNjcmlwdGlvbnMsXG5cdFx0XHRcdGNvbnRyb2xJbnN0YW5jZT8uZ2V0TW9kZWwoKVxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gQ2xlYXIgZmlsdGVyIG9mIHRhYmxlIGJlZm9yZSBhcHBseWluZyBzZWxlY3Rpb24gdmFyaWFudFxuXHRcdFx0YXdhaXQgdGhpcy5jbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U/LmdldFBhcmVudCgpIGFzIE1hY3JvQVBJKTtcblxuXHRcdFx0Ly8gU3RhdGUgdG8gYXBwbHlcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSBhd2FpdCB0aGlzLl9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0Y29uc3Qgc3RhdGVUb0FwcGx5ID0gc3ZUb1N0YXRlRmlsdGVycy5nZXRTdGF0ZVRvQXBwbHkocHJvcGVydHlJbmZvcywgY29uZGl0aW9ucyk7XG5cdFx0XHRpZiAoY29udHJvbEluc3RhbmNlPy5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuY29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5kaWZmU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlLCBzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0Y29uc3QgYXBwbHlTdGF0ZVJlc3VsdCA9IGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlVG9BcHBseSk7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRkaWZmU3RhdGUsXG5cdFx0XHRcdGFwcGx5U3RhdGVSZXN1bHRcblx0XHRcdH07XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY29udHJvbEluc3RhbmNlPy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBCdWlsZGluZ0Jsb2NrICgke2lkfSkgLSBzZXQgc2VsZWN0aW9uIHZhcmlhbnQgZmFpbGVkICA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fSxcblx0LyoqXG5cdCAqIENvbnZlcnQgdGhlIGNoYXJ0IHByb3BlcnRpZXMgdG8gaW50ZXJuYWwgcHJvcGVydGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBzdGF0ZVRvQXBwbHkgVGhpcyBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGZpbHRlciBhbmQgY29uZGl0aW9uc1xuXHQgKi9cblx0Y29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHk6IFN0YXRlVG9BcHBseSk6IHZvaWQge1xuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBmaWx0ZXIgb2JqZWN0IGZyb20gXCJTYWxlc09kZXJcIiB0byBpbnRlcm5hbCBmb3JtYXQgXCJfZmVfZ3JvdXBhYmxlX1NhbGVzT3JkZXJcIlxuXHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc3RhdGVUb0FwcGx5LmZpbHRlcikge1xuXHRcdFx0ZGVsZXRlIE9iamVjdC5hc3NpZ24oc3RhdGVUb0FwcGx5LmZpbHRlciwgeyBbXCJfZmVfZ3JvdXBhYmxlX1wiICsgcHJvcGVydHldOiBzdGF0ZVRvQXBwbHkuZmlsdGVyW3Byb3BlcnR5XSB9KVtwcm9wZXJ0eV07XG5cdFx0fVxuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBpdGVtcyBhcnJheSBmcm9tIFwiU2FsZXNPZGVyXCIgdG8gaW50ZXJuYWwgZm9ybWF0IFwiX2ZlX2dyb3VwYWJsZV9TYWxlc09yZGVyXCJcblx0XHRzdGF0ZVRvQXBwbHkuaXRlbXMuZm9yRWFjaCgocHJvcGVydHlPYmo6IHsgbmFtZTogc3RyaW5nIH0pID0+IHtcblx0XHRcdHByb3BlcnR5T2JqLm5hbWUgPSBcIl9mZV9ncm91cGFibGVfXCIgKyBwcm9wZXJ0eU9iai5uYW1lO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb250cm9sUHJvcGVydHlJbmZvID0gUHJvcGVydHlJbmZvICYge1xuXHRjb25kaXRpb25QYXRoOiBzdHJpbmc7XG5cdGRhdGFUeXBlOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdGlzUGFyYW1ldGVyPzogYm9vbGVhbjtcblx0aGlkZGVuRmlsdGVyPzogYm9vbGVhbjtcblx0aGFzVmFsdWVIZWxwPzogYm9vbGVhbjtcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxu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
|
|
270
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0ZUhlbHBlciIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJjb250cm9sIiwiY29udHJvbFN0YXRlIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiY29udHJvbE9iamVjdCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCJnZXRQYXJlbnQiLCJpc0EiLCJnZXRQYXJhbWV0ZXJzIiwidW5kZWZpbmVkIiwic2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImdldFByb3BlcnR5SGVscGVyIiwiZXh0ZXJuYWxTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3RPcHRpb25zIiwiX2dldFNlbGVjdE9wdGlvbnMiLCJwcm9wZXJ0eSIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzcGxpdCIsImVycm9yIiwiaWQiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsIkxvZyIsImNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwibW9kZWwiLCJwcm9wZXJ0eUluZm9zIiwiX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsImxlbmd0aCIsImZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIiwiX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbiIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvcHlvZlByb3BlcnR5SW5mb3MiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ1cGRhdGVkUHJvcGVydHlJbmZvcyIsIl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTViIsImNvbmRpdGlvbnMiLCJzdlRvU3RhdGVGaWx0ZXJzIiwiZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWIiwiZ2V0TW9kZWwiLCJjb250ZXh0UGF0aCIsImRhdGEiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInZpZXdEYXRhSW5zdGFuY2UiLCJ2aWV3RGF0YSIsImdldERhdGEiLCJjb25maWciLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJmaWx0ZXJGaWVsZHMiLCJnZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZ2V0Q29udHJvbERlbGVnYXRlIiwiZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzIiwiYXdhaXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaFByb3BlcnRpZXMiLCJjbGVhckZpbHRlclZhbHVlcyIsImNvbnRyb2xJbnN0YW5jZSIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY29udGVudCIsImZpcmVFdmVudCIsIm9wdGlvbnMiLCJzdGF0ZSIsImVkaXRTdGF0ZVBhdGgiLCJjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uIiwiZWRpdFN0YXRlRGVmYXVsdFZhbHVlIiwiY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCIsInNob3VsZENsZWFyRWRpdEZpbHRlciIsIkRyYWZ0RWRpdFN0YXRlIiwiQUxMIiwiZGVlcENsb25lIiwidmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImNsZWFyRWRpdEZpbHRlciIsImNvbmRpdGlvblBhdGgiLCJjb25kaXRpb24iLCJmaWx0ZXJlZCIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImNsZWFuVXBBbGxGaWx0ZXJGaWVsZHNJbkVycm9yU3RhdGUiLCJmb3JFYWNoIiwicHJvcGVydHlJbmZvIiwibmFtZSIsIlByb3BlcnR5SGVscGVyIiwiaGFzVmFsdWVIZWxwIiwiZ2V0UHJvcGVydHkiLCJwYXRoIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJ0YXJnZXRPYmplY3QiLCJ0eXBlQ29uZmlnIiwiY2xhc3NOYW1lIiwiZGF0YVR5cGUiLCJzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sIiwiYXJndW1lbnRzIiwiZnJvbU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJzdGF0ZVRvQXBwbHkiLCJnZXRTdGF0ZVRvQXBwbHkiLCJjb252ZXJ0Q29uZGl0aW9uc0ZvckNoYXJ0IiwiZGlmZlN0YXRlIiwiYXBwbHlTdGF0ZVJlc3VsdCIsImVyciIsImFzc2lnbiIsIml0ZW1zIiwicHJvcGVydHlPYmoiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN0YXRlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCBEcmFmdEVkaXRTdGF0ZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRHJhZnRFZGl0U3RhdGVcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL1Byb3BlcnR5SW5mb1wiO1xuaW1wb3J0IHR5cGUgeyBDb252ZXJzaW9uSW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1NlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVyc1wiO1xuaW1wb3J0IHN2VG9TdGF0ZUZpbHRlcnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvbWRjL2FkYXB0ZXIvU2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzXCI7XG5pbXBvcnQgU3RhdGVGaWx0ZXJzVG9TZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1N0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsU3RhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdmFsdWVoZWxwL1ZhbHVlSGVscERlbGVnYXRlXCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgQ29yZUNvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFN0YXRlVG9BcHBseSwgRmlsdGVyIGFzIFN0YXRlVXRpbEZpbHRlciB9IGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgU3RhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRUeXBlIGZyb20gXCIuLi8uLi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcIi4uLy4uL01hY3JvQVBJXCI7XG5cbi8qKlxuICogVGhpcyBpcyB0byBleHRlbmQgTURDIGNvbnRyb2wgQVBJcyBmb3IgZmlsdGVyLCB0YWJsZSwgY2hhcnQgYnVpbGRpbmcgYmxvY2tzLlxuICogQHB1YmxpY1xuICovXG5cbmNvbnN0IFN0YXRlSGVscGVyID0ge1xuXHQvKipcblx0ICogR2V0cyBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSBtZGMgY29udHJvbC5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhlIGNvbnRyb2wgZm9yIHdoaWNoIFNlbGVjdGlvbiBWYXJpYW50IGlzIHRvIGJlIGZldGNoZWRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGggYSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0U2VsZWN0aW9uVmFyaWFudChjb250cm9sOiBDb3JlQ29udHJvbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8U2VsZWN0aW9uVmFyaWFudD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb250cm9sU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKGNvbnRyb2wgYXMgQ29udHJvbCk7XG5cdFx0XHRjb25zdCBjb250cm9sT2JqZWN0ID0gY29udHJvbFN0YXRlLmZpbHRlciBhcyBTdGF0ZVV0aWxGaWx0ZXI7XG5cdFx0XHRsZXQgcGFyYW1ldGVyczogc3RyaW5nW10gfCB1bmRlZmluZWQgPSBbXTtcblx0XHRcdGlmIChcblx0XHRcdFx0Y29udHJvbD8uZ2V0UGFyZW50KCk/LmlzQShcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiKSAmJlxuXHRcdFx0XHQoY29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEkpLmdldFBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZFxuXHRcdFx0KSB7XG5cdFx0XHRcdHBhcmFtZXRlcnMgPSAoY29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEkpLmdldFBhcmFtZXRlcnMoKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHNlbGVjdGlvblZhcmlhbnQgPSBTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0aW9uVmFyaWFudEZyb21Db25kaXRpb25zKFxuXHRcdFx0XHRjb250cm9sT2JqZWN0LFxuXHRcdFx0XHQoY29udHJvbCBhcyBDb250cm9sKS5nZXRQcm9wZXJ0eUhlbHBlcigpLFxuXHRcdFx0XHRwYXJhbWV0ZXJzXG5cdFx0XHQpO1xuXHRcdFx0aWYgKGNvbnRyb2w/LmlzQShcInNhcC51aS5tZGMuQ2hhcnRcIikpIHtcblx0XHRcdFx0Y29uc3QgZXh0ZXJuYWxTViA9IG5ldyBTZWxlY3Rpb25WYXJpYW50KCk7XG5cdFx0XHRcdGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50Ll9nZXRTZWxlY3RPcHRpb25zKCk7XG5cdFx0XHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc2VsZWN0T3B0aW9ucykge1xuXHRcdFx0XHRcdGV4dGVybmFsU1YubWFzc0FkZFNlbGVjdE9wdGlvbihwcm9wZXJ0eS5zcGxpdChcIl9mZV9ncm91cGFibGVfXCIpWzFdLCBzZWxlY3RPcHRpb25zW3Byb3BlcnR5XSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGV4dGVybmFsU1Y7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gc2VsZWN0aW9uVmFyaWFudDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNvbnRyb2w/LmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gZ2V0IHNlbGVjdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQ29udmVydCBzZWxlY3Rpb24gdmFyaWFudCB0byBjb25kaXRpb25zLlxuXHQgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGNhbiBiZSBhIHRhYmxlLCBjaGFydCBvciBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSBzZWxlY3Rpb24gdmFyaWFudCB0byBhcHBseSB0byB0aGUgdGFibGUgb3IgY2hhcnQgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgSWYgdHJ1ZSwgd2UgdHJ5IHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQgVGV4dCB2YWx1ZSBmb3IgZWFjaCBwcm9wZXJ0eSBpbiB0aGUgc2VsZWN0aW9uVmFyaWFudCAodG8gYXZvaWQgZmV0Y2hpbmcgaXQgZnJvbSB0aGUgc2VydmVyKVxuXHQgKiBAcGFyYW0gbW9kZWwgVGhlIGNvbnRyb2wgbW9kZWxcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0byBjb25kaXRpb25zXG5cdCAqL1xuXHRhc3luYyBjb252ZXJ0U2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzKFxuXHRcdGNvbnRyb2w6IENvbnRyb2wsXG5cdFx0c2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRwcmVmaWxsRGVzY3JpcHRpb25zOiBib29sZWFuLFxuXHRcdG1vZGVsPzogTW9kZWxcblx0KTogUHJvbWlzZTxTdGF0ZVV0aWxGaWx0ZXI+IHtcblx0XHQvLyBOb3RlOiBUaGlzIG1ldGhvZCBpcyBwcml2YXRlIGFuZCByZXN0cmljdGVkIHRvIHVzYWdlIGJ5IHNhcC5mZShWaWV3U3RhdGUgY29udHJvbGxlciBleHRlbnNpb24pIGZvciBmaWx0ZXIgYmFyLyBjaGFydCAvIHRhYmxlIHN0YXRlIHNjZW5hcmlvcy5cblx0XHRjb25zdCBwcm9wZXJ0eUluZm9zID0gYXdhaXQgdGhpcy5fZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGNvbnRyb2wpO1xuXG5cdFx0aWYgKCFwcm9wZXJ0eUluZm9zLmxlbmd0aCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiTm8gdmFsaWQgbWV0YWRhdGEgcHJvcGVydGllcyBwcmVzZW50IGZvciBmaWx0ZXIgYmFyXCIpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uID0gdGhpcy5fZ2V0Q29udHJvbEluZm9Gb3JDb252ZXJzaW9uKGNvbnRyb2wpO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IG1vZGVsPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRjb25zdCBjb3B5b2ZQcm9wZXJ0eUluZm9zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9wZXJ0eUluZm9zKSk7XG5cdFx0Y29uc3QgdXBkYXRlZFByb3BlcnR5SW5mb3MgPSB0aGlzLl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTVihjb250cm9sLCBjb3B5b2ZQcm9wZXJ0eUluZm9zKTtcblx0XHRjb25zdCBjb25kaXRpb25zOiBTdGF0ZVV0aWxGaWx0ZXIgPSBzdlRvU3RhdGVGaWx0ZXJzLmdldFN0YXRlRmlsdGVyc0Zyb21TVihcblx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbixcblx0XHRcdHVwZGF0ZWRQcm9wZXJ0eUluZm9zID8/IGNvcHlvZlByb3BlcnR5SW5mb3MsXG5cdFx0XHRwcmVmaWxsRGVzY3JpcHRpb25zLFxuXHRcdFx0bWV0YU1vZGVsXG5cdFx0KTtcblxuXHRcdHJldHVybiBjb25kaXRpb25zO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpbHRlciBpbmZvcm1hdGlvbiBuZWVkZWQgZm9yIHRoZSBjb252ZXJzaW9uIG9mIHNlbGVjdGlvbiB2YXJpYW50IHRvIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoaXMgY2FuIGJlIGEgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXJiYXJcblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgaW5mb3JtYXRpb24gKG1ldGFNb2RlbCwgY29udGV4dFBhdGgsIHVzZSBvZiBzZW1hbnRpYyBkYXRlIHJhbmdlLCBhbGwgZmlsdGVyIGZpZWxkcyBjb25maWcpXG5cdCAqL1xuXHRfZ2V0Q29udHJvbEluZm9Gb3JDb252ZXJzaW9uKGNvbnRyb2w6IENvbnRyb2wpOiBDb252ZXJzaW9uSW5mbyB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gY29udHJvbC5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdGNvbnRleHRQYXRoID0gY29udHJvbC5kYXRhKFwiZW50aXR5VHlwZVwiKSBhcyBzdHJpbmc7XG5cdFx0aWYgKGNvbnRyb2wuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdGNvbnN0IHVzZVNlbWFudGljRGF0ZVJhbmdlOiBib29sZWFuID1cblx0XHRcdFx0XHRjb250cm9sLmRhdGEoXCJ1c2VTZW1hbnRpY0RhdGVSYW5nZVwiKSA9PT0gXCJ0cnVlXCIgfHwgY29udHJvbC5kYXRhKFwidXNlU2VtYW50aWNEYXRlUmFuZ2VcIikgPT09IHRydWUsXG5cdFx0XHRcdHZpZXdEYXRhSW5zdGFuY2UgPSBjb250cm9sLmdldE1vZGVsKFwidmlld0RhdGFcIikgYXMgSlNPTk1vZGVsLFxuXHRcdFx0XHR2aWV3RGF0YSA9IHZpZXdEYXRhSW5zdGFuY2UuZ2V0RGF0YSgpIGFzIFZpZXdEYXRhLFxuXHRcdFx0XHRjb25maWcgPSB2aWV3RGF0YT8uY29udHJvbENvbmZpZ3VyYXRpb24sXG5cdFx0XHRcdHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MgPSBjb25maWc/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIl0sXG5cdFx0XHRcdGZpbHRlckZpZWxkc0NvbmZpZyA9IHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3M/LmZpbHRlckZpZWxkcztcblx0XHRcdHJldHVybiB7IG1ldGFNb2RlbCwgY29udGV4dFBhdGgsIHVzZVNlbWFudGljRGF0ZVJhbmdlLCBmaWx0ZXJGaWVsZHNDb25maWcsIHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHsgbWV0YU1vZGVsLCBjb250ZXh0UGF0aCB9O1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2V0IHN1cHBvcnRlZCBmaWx0ZXIgZmllbGQgcHJvcGVydGllcyBmcm9tIHRoZSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXIuXG5cdCAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgY2FuIGJlIGEgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFN1cHBvcnRlZCBmaWx0ZXIgZmllbGRzLlxuXHQgKi9cblx0YXN5bmMgX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyhjb250cm9sOiBDb250cm9sKTogUHJvbWlzZTxDb250cm9sUHJvcGVydHlJbmZvW10+IHtcblx0XHRpZiAoKGNvbnRyb2wgYXMgVGFibGUpLmlzQShcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdHJldHVybiAoKGNvbnRyb2wgYXMgVGFibGUpLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5nZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zKCkgYXMgdW5rbm93biBhcyBDb250cm9sUHJvcGVydHlJbmZvW107XG5cdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyYmFyXCIpKSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLndhaXRGb3JJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSBpZiAoKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBUYWJsZSB8IENoYXJ0KS5hd2FpdENvbnRyb2xEZWxlZ2F0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gKGNvbnRyb2wgYXMgVGFibGUgfCBDaGFydCB8IEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2xJbnN0YW5jZSBUaGlzIGNhbiBiZSBhIGZpbHRlciBiYXIsIGNoYXJ0LCBvciB0YWJsZS5cblx0ICovXG5cdGFzeW5jIGNsZWFyRmlsdGVyVmFsdWVzKGNvbnRyb2xJbnN0YW5jZTogTWFjcm9BUEkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGNvbnRyb2xJbnN0YW5jZS5jb250ZW50IGFzIENvbnRyb2wpO1xuXHRcdC8vIEFsbG93IGFwcCBkZXZlbG9wZXJzIHRvIHVwZGF0ZSBmaWx0ZXJzIGFmdGVyIGNsZWFyaW5nXG5cdFx0Y29udHJvbEluc3RhbmNlLmZpcmVFdmVudChcImFmdGVyQ2xlYXJcIik7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENsZWFycyBhbGwgaW5wdXQgdmFsdWVzIG9mIHZpc2libGUgZmlsdGVyIGZpZWxkcyBpbiB0aGUgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGlzIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBmaWx0ZXJpbmcgdGhlIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG9wdGlvbnMuY2xlYXJFZGl0RmlsdGVyIFdoZXRoZXIgdG8gY2xlYXIgdGhlIGVkaXQgZmlsdGVyIG9yIHJldGFpbiB0aGUgZGVmYXVsdCB2YWx1ZSAnQWxsJ1xuXHQgKi9cblx0YXN5bmMgX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMoY29udHJvbDogQ29udHJvbCwgb3B0aW9ucz86IHsgY2xlYXJFZGl0RmlsdGVyOiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc3RhdGU6IEV4dGVybmFsU3RhdGVUeXBlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShjb250cm9sKTtcblx0XHRsZXQgZWRpdFN0YXRlUGF0aCA9IFwiXCIsXG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uLFxuXHRcdFx0ZWRpdFN0YXRlRGVmYXVsdFZhbHVlLFxuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRcdHNob3VsZENsZWFyRWRpdEZpbHRlcjogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblx0XHRpZiAoY29udHJvbC5pc0E8RmlsdGVyQmFyPihcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRlZGl0U3RhdGVQYXRoID0gXCIkZWRpdFN0YXRlXCI7XG5cdFx0XHRlZGl0U3RhdGVEZWZhdWx0VmFsdWUgPSBEcmFmdEVkaXRTdGF0ZS5BTEwuaWQ7XG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uID0gZGVlcENsb25lKHN0YXRlLmZpbHRlcltlZGl0U3RhdGVQYXRoXT8uWzBdKTtcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQgPSBjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uPy52YWx1ZXNbMF0gPT09IGVkaXRTdGF0ZURlZmF1bHRWYWx1ZTtcblx0XHRcdHNob3VsZENsZWFyRWRpdEZpbHRlciA9IG9wdGlvbnMgJiYgT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID4gMCAmJiBvcHRpb25zLmNsZWFyRWRpdEZpbHRlcjtcblx0XHR9XG5cblx0XHQvLyBDbGVhciBhbGwgY29uZGl0aW9uc1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uUGF0aCBvZiBPYmplY3Qua2V5cyhzdGF0ZS5maWx0ZXIpKSB7XG5cdFx0XHRpZiAoIXNob3VsZENsZWFyRWRpdEZpbHRlciAmJiBjb25kaXRpb25QYXRoID09PSBlZGl0U3RhdGVQYXRoICYmIGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQpIHtcblx0XHRcdFx0Ly8gRG8gbm90IGNsZWFyIGVkaXQgc3RhdGUgY29uZGl0aW9uIGlmIGl0IGlzIGFscmVhZHkgXCJBTExcIlxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHN0YXRlLmZpbHRlcltjb25kaXRpb25QYXRoXSkge1xuXHRcdFx0XHRjb25kaXRpb24uZmlsdGVyZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjb250cm9sLCB7IGZpbHRlcjogc3RhdGUuZmlsdGVyIH0pO1xuXG5cdFx0aWYgKGNvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0Ly8gU2V0IGVkaXQgc3RhdGUgdG8gJ0FMTCcgaWYgaXQgd2Fzbid0IGJlZm9yZVxuXHRcdFx0aWYgKCFzaG91bGRDbGVhckVkaXRGaWx0ZXIgJiYgY3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbiAmJiAhY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCkge1xuXHRcdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uLnZhbHVlcyA9IFtlZGl0U3RhdGVEZWZhdWx0VmFsdWVdO1xuXHRcdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNvbnRyb2wsIHsgZmlsdGVyOiB7IFtlZGl0U3RhdGVQYXRoXTogW2N1cnJlbnRFZGl0U3RhdGVDb25kaXRpb25dIH0gfSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vY2xlYXIgZmlsdGVyIGZpZWxkcyBpbiBlcnJvciBzdGF0ZVxuXHRcdFx0Y29udHJvbC5jbGVhblVwQWxsRmlsdGVyRmllbGRzSW5FcnJvclN0YXRlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgcmV0dXJucyB0aGUgY29weSBvZiBwcm9wZXJ0eUluZm8gYnkgYWRkaW5nIG5lY2Vzc2FyeSBmaWVsZHMgc28gdGhhdCBzZWxlY3Rpb24gdmFyaWFudCBjYW4gYmUgc2V0IHRvIGEgY29udHJvbCBsaWtlIHRhYmxlIGFuZCBjaGFydC5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjb3VsZCBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gcHJvcGVydHlJbmZvcyBBcnJheSBvZiBQcm9wZXJ0eUluZm8gb2YgdGhlIGNvbnRyb2xcblx0ICogQHJldHVybnMgVGhlIGRlZXAgY2xvbmUgb2YgcHJvcGVydHlJbmZvcyB3aXRoIHNvbWUgYWRkaXRpb25hbCBmaWVsZHNcblx0ICovXG5cdF91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTVihjb250cm9sOiBDb250cm9sLCBwcm9wZXJ0eUluZm9zOiBDb250cm9sUHJvcGVydHlJbmZvW10pOiBDb250cm9sUHJvcGVydHlJbmZvW10ge1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0XHR9XG5cdFx0cHJvcGVydHlJbmZvcy5mb3JFYWNoKChwcm9wZXJ0eUluZm86IENvbnRyb2xQcm9wZXJ0eUluZm8pID0+IHtcblx0XHRcdGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImNvbmRpdGlvblBhdGhcIl0gPSBwcm9wZXJ0eUluZm8ubmFtZTtcblx0XHRcdFx0cHJvcGVydHlJbmZvW1wiaGFzVmFsdWVIZWxwXCJdID0gUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKFxuXHRcdFx0XHRcdChjb250cm9sIGFzIFRhYmxlKS5nZXRQcm9wZXJ0eUhlbHBlcigpLmdldFByb3BlcnR5KHByb3BlcnR5SW5mby5uYW1lKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eUluZm8ucGF0aCkge1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcIm5hbWVcIl0gPSBwcm9wZXJ0eUluZm8ucGF0aDtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLnBhdGg7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSAoKGNvbnRyb2wgYXMgQ2hhcnQpLmdldFBhcmVudCgpIGFzIENoYXJ0VHlwZSk/LmdldFByb3BlcnR5RGF0YU1vZGVsKHByb3BlcnR5SW5mby5wYXRoKT8udGFyZ2V0T2JqZWN0O1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImhhc1ZhbHVlSGVscFwiXSA9IHByb3BlcnR5ID8gUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKHByb3BlcnR5KSA6IGZhbHNlO1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImRhdGFUeXBlXCJdID0gKHByb3BlcnR5SW5mbz8udHlwZUNvbmZpZz8uY2xhc3NOYW1lIGFzIHN0cmluZykgfHwgcHJvcGVydHlJbmZvLmRhdGFUeXBlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgc2VsZWN0aW9uIHZhcmlhbnQgdG8gdGhlIHRhYmxlLiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgdGhlIGV4aXN0aW5nIGZpbHRlcnMgYW5kIHRoZW4gYXBwbHkgdGhlIFNlbGVjdGlvblZhcmlhbnQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gY29udHJvbEluc3RhbmNlIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IHRvIGFwcGx5IHRvIHRoZSByZXNwZWN0aXZlIG1kYyBjb250cm9sc1xuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBPcHRpb25hbC4gSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgdGhlIGFzc29jaWF0ZWQgdGV4dCBwcm9wZXJ0eSB2YWx1ZXMgKGlmIHRoZXkncmUgYXZhaWxhYmxlIGluIHRoZSBzZWxlY3Rpb25WYXJpYW50KSB0byBkaXNwbGF5IHRoZSBmaWx0ZXIgdmFsdWUgZGVzY3JpcHRpb25zLCBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlbSBmcm9tIHRoZSBiYWNrZW5kXG5cdCAqIEBwYXJhbSBmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgT3B0aW9uYWwuIElmIHRydWUsIHRoZSBzZWxlY3Rpb24gdmFyaWFudCBpcyBhc3N1bWVkIHRvIGNvbWUgZnJvbSBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMuIEluIHRoaXMgY2FzZSwgaWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGNvbnRhaW5zIHNlbGVjdCBvcHRpb25zIGZvciBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIHRoZSBmaWx0ZXIgYmFyLCB0aGVzZSBzZWxlY3Qgb3B0aW9ucyB3aWxsIGJlIGlnbm9yZWQgYW5kIHdpbGwgbm90IGxlYWQgdG8gY2xlYXJpbmcgdGhlIGZpbHRlciBiYXIuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2woXG5cdFx0Y29udHJvbEluc3RhbmNlOiBDb3JlQ29udHJvbCB8IHVuZGVmaW5lZCxcblx0XHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZSxcblx0XHRmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgPSBmYWxzZVxuXHQpOiBQcm9taXNlPHsgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZTsgYXBwbHlTdGF0ZVJlc3VsdDogdW5rbm93biB9IHwgdW5kZWZpbmVkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0aWYgKCFzdGF0ZS5maWx0ZXIpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBGRSA6IHNldFNlbGVjdGlvblZhcmlhbnQgQVBJIGNhbm5vdCBiZSBhcHBsaWVkIG9uIDogJHtjb250cm9sSW5zdGFuY2U/LmdldElkKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbmRpdGlvbnM6IFN0YXRlVXRpbEZpbHRlciA9IGF3YWl0IHRoaXMuY29udmVydFNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycyhcblx0XHRcdFx0Y29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsXG5cdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByZWZpbGxEZXNjcmlwdGlvbnMsXG5cdFx0XHRcdGNvbnRyb2xJbnN0YW5jZT8uZ2V0TW9kZWwoKVxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgJiZcblx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcygpLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0T2JqZWN0LmtleXMoY29uZGl0aW9ucykubGVuZ3RoID09PSAwXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gSWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGhhcyBzZWxlY3Qgb3B0aW9ucyBidXQgbm8gY29uZGl0aW9ucyBjb3VsZCBiZSBtYXBwZWQgdG8gdGhlIGZpbHRlciBiYXIsIHdlIHJldHVybiBhbiBlbXB0eSBhcnJheVxuXHRcdFx0XHQvLyBUaGlzIGlzIHRvIGF2b2lkIGNsZWFyaW5nIHRoZSBmaWx0ZXIgYmFyIGluIHRoaXMgY2FzZVxuXHRcdFx0XHQvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGhhcyBvbmx5IHBhcmFtZXRlcnMgb3Igc2VsZWN0IG9wdGlvbnMgZm9yIHByb3BlcnRpZXMgbm90IHByZXNlbnQgaW4gdGhlIGZpbHRlciBiYXJcblx0XHRcdFx0Ly8gSW4gdGhpcyBjYXNlLCB3ZSBhc3N1bWUgdGhhdCB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgaXMgbm90IG1lYW50IHRvIGNsZWFyIHRoZSBmaWx0ZXIgYmFyXG5cdFx0XHRcdC8vIGFuZCB3ZSBkbyBub3QgYXBwbHkgaXRcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgZmlsdGVyIG9mIHRhYmxlIGJlZm9yZSBhcHBseWluZyBzZWxlY3Rpb24gdmFyaWFudFxuXHRcdFx0YXdhaXQgdGhpcy5jbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U/LmdldFBhcmVudCgpIGFzIE1hY3JvQVBJKTtcblxuXHRcdFx0Ly8gU3RhdGUgdG8gYXBwbHlcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSBhd2FpdCB0aGlzLl9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0Y29uc3Qgc3RhdGVUb0FwcGx5ID0gc3ZUb1N0YXRlRmlsdGVycy5nZXRTdGF0ZVRvQXBwbHkocHJvcGVydHlJbmZvcywgY29uZGl0aW9ucyk7XG5cdFx0XHRpZiAoY29udHJvbEluc3RhbmNlPy5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuY29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5kaWZmU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlLCBzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0Y29uc3QgYXBwbHlTdGF0ZVJlc3VsdCA9IGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlVG9BcHBseSk7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRkaWZmU3RhdGUsXG5cdFx0XHRcdGFwcGx5U3RhdGVSZXN1bHRcblx0XHRcdH07XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY29udHJvbEluc3RhbmNlPy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBCdWlsZGluZ0Jsb2NrICgke2lkfSkgLSBzZXQgc2VsZWN0aW9uIHZhcmlhbnQgZmFpbGVkICA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fSxcblx0LyoqXG5cdCAqIENvbnZlcnQgdGhlIGNoYXJ0IHByb3BlcnRpZXMgdG8gaW50ZXJuYWwgcHJvcGVydGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBzdGF0ZVRvQXBwbHkgVGhpcyBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGZpbHRlciBhbmQgY29uZGl0aW9uc1xuXHQgKi9cblx0Y29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHk6IFN0YXRlVG9BcHBseSk6IHZvaWQge1xuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBmaWx0ZXIgb2JqZWN0IGZyb20gXCJTYWxlc09kZXJcIiB0byBpbnRlcm5hbCBmb3JtYXQgXCJfZmVfZ3JvdXBhYmxlX1NhbGVzT3JkZXJcIlxuXHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc3RhdGVUb0FwcGx5LmZpbHRlcikge1xuXHRcdFx0ZGVsZXRlIE9iamVjdC5hc3NpZ24oc3RhdGVUb0FwcGx5LmZpbHRlciwgeyBbXCJfZmVfZ3JvdXBhYmxlX1wiICsgcHJvcGVydHldOiBzdGF0ZVRvQXBwbHkuZmlsdGVyW3Byb3BlcnR5XSB9KVtwcm9wZXJ0eV07XG5cdFx0fVxuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBpdGVtcyBhcnJheSBmcm9tIFwiU2FsZXNPZGVyXCIgdG8gaW50ZXJuYWwgZm9ybWF0IFwiX2ZlX2dyb3VwYWJsZV9TYWxlc09yZGVyXCJcblx0XHRzdGF0ZVRvQXBwbHkuaXRlbXMuZm9yRWFjaCgocHJvcGVydHlPYmo6IHsgbmFtZTogc3RyaW5nIH0pID0+IHtcblx0XHRcdHByb3BlcnR5T2JqLm5hbWUgPSBcIl9mZV9ncm91cGFibGVfXCIgKyBwcm9wZXJ0eU9iai5uYW1lO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb250cm9sUHJvcGVydHlJbmZvID0gUHJvcGVydHlJbmZvICYge1xuXHRjb25kaXRpb25QYXRoOiBzdHJpbmc7XG5cdGRhdGFUeXBlOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdGlzUGFyYW1ldGVyPzogYm9vbGVhbjtcblx0aGlkZGVuRmlsdGVyPzogYm9vbGVhbjtcblx0aGFzVmFsdWVIZWxwPzogYm9vbGVhbjtcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVIZWxwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUEwQkE7QUFDQTtBQUNBO0FBQ0E7O0VBRUEsTUFBTUEsV0FBVyxHQUFHO0lBQ25CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDLE1BQU1DLG1CQUFtQkEsQ0FBQ0MsT0FBZ0MsRUFBNkI7TUFDdEYsSUFBSTtRQUNILE1BQU1DLFlBQVksR0FBRyxNQUFNQyxTQUFTLENBQUNDLHFCQUFxQixDQUFDSCxPQUFrQixDQUFDO1FBQzlFLE1BQU1JLGFBQWEsR0FBR0gsWUFBWSxDQUFDSSxNQUF5QjtRQUM1RCxJQUFJQyxVQUFnQyxHQUFHLEVBQUU7UUFDekMsSUFDQ04sT0FBTyxFQUFFTyxTQUFTLENBQUMsQ0FBQyxFQUFFQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsSUFDaEVSLE9BQU8sQ0FBQ08sU0FBUyxDQUFDLENBQUMsQ0FBa0JFLGFBQWEsS0FBS0MsU0FBUyxFQUNoRTtVQUNESixVQUFVLEdBQUlOLE9BQU8sQ0FBQ08sU0FBUyxDQUFDLENBQUMsQ0FBa0JFLGFBQWEsQ0FBQyxDQUFDO1FBQ25FO1FBQ0EsTUFBTUUsZ0JBQWdCLEdBQUdDLDhCQUE4QixDQUFDQyxpQ0FBaUMsQ0FDeEZULGFBQWEsRUFDWkosT0FBTyxDQUFhYyxpQkFBaUIsQ0FBQyxDQUFDLEVBQ3hDUixVQUNELENBQUM7UUFDRCxJQUFJTixPQUFPLEVBQUVRLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1VBQ3JDLE1BQU1PLFVBQVUsR0FBRyxJQUFJQyxnQkFBZ0IsQ0FBQyxDQUFDO1VBQ3pDLE1BQU1DLGFBQWEsR0FBR04sZ0JBQWdCLENBQUNPLGlCQUFpQixDQUFDLENBQUM7VUFDMUQsS0FBSyxNQUFNQyxRQUFRLElBQUlGLGFBQWEsRUFBRTtZQUNyQ0YsVUFBVSxDQUFDSyxtQkFBbUIsQ0FBQ0QsUUFBUSxDQUFDRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUosYUFBYSxDQUFDRSxRQUFRLENBQUMsQ0FBQztVQUM3RjtVQUNBLE9BQU9KLFVBQVU7UUFDbEIsQ0FBQyxNQUFNO1VBQ04sT0FBT0osZ0JBQWdCO1FBQ3hCO01BQ0QsQ0FBQyxDQUFDLE9BQU9XLEtBQWMsRUFBRTtRQUN4QixNQUFNQyxFQUFzQixHQUFHdkIsT0FBTyxFQUFFd0IsS0FBSyxDQUFDLENBQUM7UUFDL0MsTUFBTUMsT0FBTyxHQUFHSCxLQUFLLFlBQVlJLEtBQUssR0FBR0osS0FBSyxDQUFDRyxPQUFPLEdBQUdFLE1BQU0sQ0FBQ0wsS0FBSyxDQUFDO1FBQ3RFTSxHQUFHLENBQUNOLEtBQUssQ0FBQyxtQkFBbUJDLEVBQUUsc0NBQXNDRSxPQUFPLEVBQUUsQ0FBQztRQUMvRSxNQUFNQyxLQUFLLENBQUNELE9BQU8sQ0FBQztNQUNyQjtJQUNELENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0MsTUFBTUkscUNBQXFDQSxDQUMxQzdCLE9BQWdCLEVBQ2hCVyxnQkFBa0MsRUFDbENtQixtQkFBNEIsRUFDNUJDLEtBQWEsRUFDYztNQUMzQjtNQUNBLE1BQU1DLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQ0MseUJBQXlCLENBQUNqQyxPQUFPLENBQUM7TUFFbkUsSUFBSSxDQUFDZ0MsYUFBYSxDQUFDRSxNQUFNLEVBQUU7UUFDMUIsTUFBTSxJQUFJUixLQUFLLENBQUMscURBQXFELENBQUM7TUFDdkU7TUFFQSxNQUFNUywwQkFBMEIsR0FBRyxJQUFJLENBQUNDLDRCQUE0QixDQUFDcEMsT0FBTyxDQUFDO01BQzdFLE1BQU1xQyxTQUFTLEdBQUdOLEtBQUssRUFBRU8sWUFBWSxDQUFDLENBQW1CO01BQ3pELE1BQU1DLG1CQUFtQixHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDRSxTQUFTLENBQUNWLGFBQWEsQ0FBQyxDQUFDO01BQ3JFLE1BQU1XLG9CQUFvQixHQUFHLElBQUksQ0FBQ0MsOEJBQThCLENBQUM1QyxPQUFPLEVBQUV1QyxtQkFBbUIsQ0FBQztNQUM5RixNQUFNTSxVQUEyQixHQUFHQyxnQkFBZ0IsQ0FBQ0MscUJBQXFCLENBQ3pFcEMsZ0JBQWdCLEVBQ2hCd0IsMEJBQTBCLEVBQzFCUSxvQkFBb0IsSUFBSUosbUJBQW1CLEVBQzNDVCxtQkFBbUIsRUFDbkJPLFNBQ0QsQ0FBQztNQUVELE9BQU9RLFVBQVU7SUFDbEIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ1QsNEJBQTRCQSxDQUFDcEMsT0FBZ0IsRUFBa0I7TUFDOUQsTUFBTXFDLFNBQVMsR0FBR3JDLE9BQU8sQ0FBQ2dELFFBQVEsQ0FBQyxDQUFDLEVBQUVWLFlBQVksQ0FBQyxDQUFtQjtRQUNyRVcsV0FBVyxHQUFHakQsT0FBTyxDQUFDa0QsSUFBSSxDQUFDLFlBQVksQ0FBVztNQUNuRCxJQUFJbEQsT0FBTyxDQUFDUSxHQUFHLENBQUMsa0NBQWtDLENBQUMsRUFBRTtRQUNwRCxNQUFNMkMsb0JBQTZCLEdBQ2pDbkQsT0FBTyxDQUFDa0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssTUFBTSxJQUFJbEQsT0FBTyxDQUFDa0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssSUFBSTtVQUNqR0UsZ0JBQWdCLEdBQUdwRCxPQUFPLENBQUNnRCxRQUFRLENBQUMsVUFBVSxDQUFjO1VBQzVESyxRQUFRLEdBQUdELGdCQUFnQixDQUFDRSxPQUFPLENBQUMsQ0FBYTtVQUNqREMsTUFBTSxHQUFHRixRQUFRLEVBQUVHLG9CQUFvQjtVQUN2Q0Msc0JBQXNCLEdBQUdGLE1BQU0sR0FBRyw2Q0FBNkMsQ0FBQztVQUNoRkcsa0JBQWtCLEdBQUdELHNCQUFzQixFQUFFRSxZQUFZO1FBQzFELE9BQU87VUFBRXRCLFNBQVM7VUFBRVksV0FBVztVQUFFRSxvQkFBb0I7VUFBRU8sa0JBQWtCO1VBQUVEO1FBQXVCLENBQUM7TUFDcEcsQ0FBQyxNQUFNO1FBQ04sT0FBTztVQUFFcEIsU0FBUztVQUFFWTtRQUFZLENBQUM7TUFDbEM7SUFDRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDLE1BQU1oQix5QkFBeUJBLENBQUNqQyxPQUFnQixFQUFrQztNQUNqRixJQUFLQSxPQUFPLENBQVdRLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1FBQy9DLE9BQVNSLE9BQU8sQ0FBV08sU0FBUyxDQUFDLENBQUMsQ0FBY3FELCtCQUErQixDQUFDLENBQUM7TUFDdEYsQ0FBQyxNQUFNLElBQUk1RCxPQUFPLENBQUNRLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1FBQy9DLE1BQU9SLE9BQU8sQ0FBZTZELHFCQUFxQixDQUFDLENBQUM7UUFDcEQsT0FBUTdELE9BQU8sQ0FBZThELGtCQUFrQixDQUFDLENBQUMsQ0FBQ0MscUJBQXFCLENBQUMvRCxPQUFPLENBQUM7TUFDbEYsQ0FBQyxNQUFNLElBQUtBLE9BQU8sQ0FBZVEsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLEVBQUU7UUFDMUUsT0FBUVIsT0FBTyxDQUFlOEQsa0JBQWtCLENBQUMsQ0FBQyxDQUFDQyxxQkFBcUIsQ0FBQy9ELE9BQU8sQ0FBQztNQUNsRixDQUFDLE1BQU07UUFDTixNQUFPQSxPQUFPLENBQW1CZ0Usb0JBQW9CLENBQUMsQ0FBQztNQUN4RDtNQUNBLE9BQVFoRSxPQUFPLENBQStCOEQsa0JBQWtCLENBQUMsQ0FBQyxDQUFDRyxlQUFlLENBQUNqRSxPQUFPLENBQUM7SUFDNUYsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0lBQ0MsTUFBTWtFLGlCQUFpQkEsQ0FBQ0MsZUFBeUIsRUFBaUI7TUFDakUsTUFBTSxJQUFJLENBQUNDLDZCQUE2QixDQUFDRCxlQUFlLENBQUNFLE9BQWtCLENBQUM7TUFDNUU7TUFDQUYsZUFBZSxDQUFDRyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3hDLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQyxNQUFNRiw2QkFBNkJBLENBQUNwRSxPQUFnQixFQUFFdUUsT0FBc0MsRUFBaUI7TUFDNUcsSUFBSSxDQUFDdkUsT0FBTyxFQUFFO1FBQ2I7TUFDRDtNQUNBLE1BQU13RSxLQUF3QixHQUFHLE1BQU10RSxTQUFTLENBQUNDLHFCQUFxQixDQUFDSCxPQUFPLENBQUM7TUFDL0UsSUFBSXlFLGFBQWEsR0FBRyxFQUFFO1FBQ3JCQyx5QkFBeUI7UUFDekJDLHFCQUFxQjtRQUNyQkMseUJBQThDO1FBQzlDQyxxQkFBMEM7TUFDM0MsSUFBSTdFLE9BQU8sQ0FBQ1EsR0FBRyxDQUFZLHNCQUFzQixDQUFDLEVBQUU7UUFDbkRpRSxhQUFhLEdBQUcsWUFBWTtRQUM1QkUscUJBQXFCLEdBQUdHLGNBQWMsQ0FBQ0MsR0FBRyxDQUFDeEQsRUFBRTtRQUM3Q21ELHlCQUF5QixHQUFHTSxTQUFTLENBQUNSLEtBQUssQ0FBQ25FLE1BQU0sQ0FBQ29FLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFRyx5QkFBeUIsR0FBR0YseUJBQXlCLEVBQUVPLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBS04scUJBQXFCO1FBQzFGRSxxQkFBcUIsR0FBR04sT0FBTyxJQUFJVyxNQUFNLENBQUNDLElBQUksQ0FBQ1osT0FBTyxDQUFDLENBQUNyQyxNQUFNLEdBQUcsQ0FBQyxJQUFJcUMsT0FBTyxDQUFDYSxlQUFlO01BQzlGOztNQUVBO01BQ0EsS0FBSyxNQUFNQyxhQUFhLElBQUlILE1BQU0sQ0FBQ0MsSUFBSSxDQUFDWCxLQUFLLENBQUNuRSxNQUFNLENBQUMsRUFBRTtRQUN0RCxJQUFJLENBQUN3RSxxQkFBcUIsSUFBSVEsYUFBYSxLQUFLWixhQUFhLElBQUlHLHlCQUF5QixFQUFFO1VBQzNGO1VBQ0E7UUFDRDtRQUNBLEtBQUssTUFBTVUsU0FBUyxJQUFJZCxLQUFLLENBQUNuRSxNQUFNLENBQUNnRixhQUFhLENBQUMsRUFBRTtVQUNwREMsU0FBUyxDQUFDQyxRQUFRLEdBQUcsS0FBSztRQUMzQjtNQUNEO01BQ0EsTUFBTXJGLFNBQVMsQ0FBQ3NGLGtCQUFrQixDQUFDeEYsT0FBTyxFQUFFO1FBQUVLLE1BQU0sRUFBRW1FLEtBQUssQ0FBQ25FO01BQU8sQ0FBQyxDQUFDO01BRXJFLElBQUlMLE9BQU8sQ0FBQ1EsR0FBRyxDQUFZLHNCQUFzQixDQUFDLEVBQUU7UUFDbkQ7UUFDQSxJQUFJLENBQUNxRSxxQkFBcUIsSUFBSUgseUJBQXlCLElBQUksQ0FBQ0UseUJBQXlCLEVBQUU7VUFDdEZGLHlCQUF5QixDQUFDTyxNQUFNLEdBQUcsQ0FBQ04scUJBQXFCLENBQUM7VUFDMUQsTUFBTXpFLFNBQVMsQ0FBQ3NGLGtCQUFrQixDQUFDeEYsT0FBTyxFQUFFO1lBQUVLLE1BQU0sRUFBRTtjQUFFLENBQUNvRSxhQUFhLEdBQUcsQ0FBQ0MseUJBQXlCO1lBQUU7VUFBRSxDQUFDLENBQUM7UUFDMUc7O1FBRUE7UUFDQTFFLE9BQU8sQ0FBQ3lGLGtDQUFrQyxDQUFDLENBQUM7TUFDN0M7SUFDRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0M3Qyw4QkFBOEJBLENBQUM1QyxPQUFnQixFQUFFZ0MsYUFBb0MsRUFBeUI7TUFDN0csSUFBSWhDLE9BQU8sQ0FBQ1EsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7UUFDeEMsT0FBT3dCLGFBQWE7TUFDckI7TUFDQUEsYUFBYSxDQUFDMEQsT0FBTyxDQUFFQyxZQUFpQyxJQUFLO1FBQzVELElBQUszRixPQUFPLENBQWFRLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1VBQ2pEbUYsWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHQSxZQUFZLENBQUNDLElBQUk7VUFDakRELFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBR0UsY0FBYyxDQUFDQyxZQUFZLENBQ3hEOUYsT0FBTyxDQUFXYyxpQkFBaUIsQ0FBQyxDQUFDLENBQUNpRixXQUFXLENBQUNKLFlBQVksQ0FBQ0MsSUFBSSxDQUNyRSxDQUFDO1FBQ0YsQ0FBQyxNQUFNLElBQUs1RixPQUFPLENBQWFRLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1VBQ3hELElBQUltRixZQUFZLENBQUNLLElBQUksRUFBRTtZQUN0QkwsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHQSxZQUFZLENBQUNLLElBQUk7WUFDeENMLFlBQVksQ0FBQyxlQUFlLENBQUMsR0FBR0EsWUFBWSxDQUFDSyxJQUFJO1lBQ2pELE1BQU03RSxRQUFRLEdBQUtuQixPQUFPLENBQVdPLFNBQVMsQ0FBQyxDQUFDLEVBQWdCMEYsb0JBQW9CLENBQUNOLFlBQVksQ0FBQ0ssSUFBSSxDQUFDLEVBQUVFLFlBQVk7WUFDckhQLFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBR3hFLFFBQVEsR0FBRzBFLGNBQWMsQ0FBQ0MsWUFBWSxDQUFDM0UsUUFBUSxDQUFDLEdBQUcsS0FBSztZQUN2RndFLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBSUEsWUFBWSxFQUFFUSxVQUFVLEVBQUVDLFNBQVMsSUFBZVQsWUFBWSxDQUFDVSxRQUFRO1VBQ3BHO1FBQ0Q7TUFDRCxDQUFDLENBQUM7TUFDRixPQUFPckUsYUFBYTtJQUNyQixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0MsTUFBTXNFLCtCQUErQkEsQ0FDcENuQyxlQUF3QyxFQUN4Q3hELGdCQUFrQyxFQUdpRDtNQUFBLElBRm5GbUIsbUJBQW1CLEdBQUF5RSxTQUFBLENBQUFyRSxNQUFBLFFBQUFxRSxTQUFBLFFBQUE3RixTQUFBLEdBQUE2RixTQUFBLE1BQUcsS0FBSztNQUFBLElBQzNCQyx3QkFBd0IsR0FBQUQsU0FBQSxDQUFBckUsTUFBQSxRQUFBcUUsU0FBQSxRQUFBN0YsU0FBQSxHQUFBNkYsU0FBQSxNQUFHLEtBQUs7TUFFaEMsSUFBSTtRQUNILE1BQU0vQixLQUF3QixHQUFHLE1BQU10RSxTQUFTLENBQUNDLHFCQUFxQixDQUFDZ0UsZUFBMEIsQ0FBQztRQUNsRyxJQUFJLENBQUNLLEtBQUssQ0FBQ25FLE1BQU0sRUFBRTtVQUNsQnVCLEdBQUcsQ0FBQ04sS0FBSyxDQUFDLHVEQUF1RDZDLGVBQWUsRUFBRTNDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztVQUM1RjtRQUNEO1FBQ0EsTUFBTXFCLFVBQTJCLEdBQUcsTUFBTSxJQUFJLENBQUNoQixxQ0FBcUMsQ0FDbkZzQyxlQUFlLEVBQ2Z4RCxnQkFBZ0IsRUFDaEJtQixtQkFBbUIsRUFDbkJxQyxlQUFlLEVBQUVuQixRQUFRLENBQUMsQ0FDM0IsQ0FBQztRQUVELElBQ0N3RCx3QkFBd0IsSUFDeEI3RixnQkFBZ0IsQ0FBQzhGLDZCQUE2QixDQUFDLENBQUMsQ0FBQ3ZFLE1BQU0sR0FBRyxDQUFDLElBQzNEZ0QsTUFBTSxDQUFDQyxJQUFJLENBQUN0QyxVQUFVLENBQUMsQ0FBQ1gsTUFBTSxLQUFLLENBQUMsRUFDbkM7VUFDRDtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0EsT0FBT3hCLFNBQVM7UUFDakI7O1FBRUE7UUFDQSxNQUFNLElBQUksQ0FBQ3dELGlCQUFpQixDQUFDQyxlQUFlLEVBQUU1RCxTQUFTLENBQUMsQ0FBYSxDQUFDOztRQUV0RTtRQUNBLE1BQU15QixhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUNDLHlCQUF5QixDQUFDa0MsZUFBMEIsQ0FBQztRQUN0RixNQUFNdUMsWUFBWSxHQUFHNUQsZ0JBQWdCLENBQUM2RCxlQUFlLENBQUMzRSxhQUFhLEVBQUVhLFVBQVUsQ0FBQztRQUNoRixJQUFJc0IsZUFBZSxFQUFFM0QsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7VUFDN0MsSUFBSSxDQUFDb0cseUJBQXlCLENBQUNGLFlBQVksQ0FBQztRQUM3QztRQUNBLE1BQU1HLFNBQTRCLEdBQUcsTUFBTTNHLFNBQVMsQ0FBQzJHLFNBQVMsQ0FBQzFDLGVBQWUsRUFBYUssS0FBSyxFQUFFa0MsWUFBWSxDQUFDO1FBQy9HLE1BQU1JLGdCQUFnQixHQUFHLE1BQU01RyxTQUFTLENBQUNzRixrQkFBa0IsQ0FBQ3JCLGVBQWUsRUFBYXVDLFlBQVksQ0FBQztRQUNyRyxPQUFPO1VBQ05HLFNBQVM7VUFDVEM7UUFDRCxDQUFDO01BQ0YsQ0FBQyxDQUFDLE9BQU9DLEdBQVksRUFBRTtRQUN0QixNQUFNeEYsRUFBc0IsR0FBRzRDLGVBQWUsRUFBRTNDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELE1BQU1DLE9BQU8sR0FBR3NGLEdBQUcsWUFBWXJGLEtBQUssR0FBR3FGLEdBQUcsQ0FBQ3RGLE9BQU8sR0FBR0UsTUFBTSxDQUFDb0YsR0FBRyxDQUFDO1FBQ2hFbkYsR0FBRyxDQUFDTixLQUFLLENBQUMsdUJBQXVCQyxFQUFFLHVDQUF1Q0UsT0FBTyxFQUFFLENBQUM7UUFDcEYsTUFBTUMsS0FBSyxDQUFDRCxPQUFPLENBQUM7TUFDckI7SUFDRCxDQUFDO0lBQ0Q7QUFDRDtBQUNBO0FBQ0E7SUFDQ21GLHlCQUF5QkEsQ0FBQ0YsWUFBMEIsRUFBUTtNQUMzRDtNQUNBLEtBQUssTUFBTXZGLFFBQVEsSUFBSXVGLFlBQVksQ0FBQ3JHLE1BQU0sRUFBRTtRQUMzQyxPQUFPNkUsTUFBTSxDQUFDOEIsTUFBTSxDQUFDTixZQUFZLENBQUNyRyxNQUFNLEVBQUU7VUFBRSxDQUFDLGdCQUFnQixHQUFHYyxRQUFRLEdBQUd1RixZQUFZLENBQUNyRyxNQUFNLENBQUNjLFFBQVE7UUFBRSxDQUFDLENBQUMsQ0FBQ0EsUUFBUSxDQUFDO01BQ3RIO01BQ0E7TUFDQXVGLFlBQVksQ0FBQ08sS0FBSyxDQUFDdkIsT0FBTyxDQUFFd0IsV0FBNkIsSUFBSztRQUM3REEsV0FBVyxDQUFDdEIsSUFBSSxHQUFHLGdCQUFnQixHQUFHc0IsV0FBVyxDQUFDdEIsSUFBSTtNQUN2RCxDQUFDLENBQUM7SUFDSDtFQUNELENBQUM7RUFBQyxPQWFhOUYsV0FBVztBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -2,6 +2,7 @@ import Log from "sap/base/Log";
|
|
|
2
2
|
import deepClone from "sap/base/util/deepClone";
|
|
3
3
|
import type { ViewData } from "sap/fe/core/services/TemplatedViewServiceFactory";
|
|
4
4
|
import * as PropertyHelper from "sap/fe/core/templating/PropertyHelper";
|
|
5
|
+
import type TableAPI from "sap/fe/macros/Table";
|
|
5
6
|
import DraftEditState from "sap/fe/macros/filterBar/DraftEditState";
|
|
6
7
|
import type FilterBarAPI from "sap/fe/macros/filterBar/FilterBarAPI";
|
|
7
8
|
import type { PropertyInfo } from "sap/fe/macros/internal/PropertyInfo";
|
|
@@ -133,7 +134,9 @@ const StateHelper = {
|
|
|
133
134
|
* @returns Supported filter fields.
|
|
134
135
|
*/
|
|
135
136
|
async _getSupportedFilterFields(control: Control): Promise<ControlPropertyInfo[]> {
|
|
136
|
-
if (control.isA("sap.ui.mdc.
|
|
137
|
+
if ((control as Table).isA("sap.ui.mdc.Table")) {
|
|
138
|
+
return ((control as Table).getParent() as TableAPI).getEnhancedFetchedPropertyInfos() as unknown as ControlPropertyInfo[];
|
|
139
|
+
} else if (control.isA("sap.ui.mdc.Filterbar")) {
|
|
137
140
|
await (control as FilterBar).waitForInitialization();
|
|
138
141
|
return (control as FilterBar).getControlDelegate().fetchFilterProperties(control);
|
|
139
142
|
} else if ((control as FilterBar).isA("sap.fe.macros.controls.FilterBar")) {
|
|
@@ -145,7 +148,7 @@ const StateHelper = {
|
|
|
145
148
|
},
|
|
146
149
|
|
|
147
150
|
/**
|
|
148
|
-
* Clears all input values of visible filter fields in the table, chart, or filter bar
|
|
151
|
+
* Clears all input values of visible filter fields in the table, chart, or filter bar.
|
|
149
152
|
* @param controlInstance This can be a filter bar, chart, or table.
|
|
150
153
|
*/
|
|
151
154
|
async clearFilterValues(controlInstance: MacroAPI): Promise<void> {
|
|
@@ -215,11 +218,9 @@ const StateHelper = {
|
|
|
215
218
|
propertyInfos.forEach((propertyInfo: ControlPropertyInfo) => {
|
|
216
219
|
if ((control as Control).isA("sap.ui.mdc.Table")) {
|
|
217
220
|
propertyInfo["conditionPath"] = propertyInfo.name;
|
|
218
|
-
propertyInfo["annotationPath"] = propertyInfo.metadataPath ? propertyInfo.metadataPath : "";
|
|
219
221
|
propertyInfo["hasValueHelp"] = PropertyHelper.hasValueHelp(
|
|
220
222
|
(control as Table).getPropertyHelper().getProperty(propertyInfo.name)
|
|
221
223
|
);
|
|
222
|
-
propertyInfo["dataType"] = propertyInfo?.typeConfig?.className as string;
|
|
223
224
|
} else if ((control as Control).isA("sap.ui.mdc.Chart")) {
|
|
224
225
|
if (propertyInfo.path) {
|
|
225
226
|
propertyInfo["name"] = propertyInfo.path;
|
|
@@ -238,13 +239,15 @@ const StateHelper = {
|
|
|
238
239
|
* @param controlInstance This could be a table, chart, or filter bar
|
|
239
240
|
* @param selectionVariant The selection variant to apply to the respective mdc controls
|
|
240
241
|
* @param prefillDescriptions Optional. If true, we will use the associated text property values (if they're available in the selectionVariant) to display the filter value descriptions, instead of loading them from the backend
|
|
242
|
+
* @param fromNavigationParameters Optional. If true, the selection variant is assumed to come from navigation parameters. In this case, if the selection variant contains select options for properties that are not present in the filter bar, these select options will be ignored and will not lead to clearing the filter bar.
|
|
241
243
|
* @returns A promise for asynchronous handling
|
|
242
244
|
* @public
|
|
243
245
|
*/
|
|
244
246
|
async setSelectionVariantToMdcControl(
|
|
245
247
|
controlInstance: CoreControl | undefined,
|
|
246
248
|
selectionVariant: SelectionVariant,
|
|
247
|
-
prefillDescriptions = false
|
|
249
|
+
prefillDescriptions = false,
|
|
250
|
+
fromNavigationParameters = false
|
|
248
251
|
): Promise<{ diffState: ExternalStateType; applyStateResult: unknown } | undefined> {
|
|
249
252
|
try {
|
|
250
253
|
const state: ExternalStateType = await StateUtil.retrieveExternalState(controlInstance as Control);
|
|
@@ -259,6 +262,19 @@ const StateHelper = {
|
|
|
259
262
|
controlInstance?.getModel()
|
|
260
263
|
);
|
|
261
264
|
|
|
265
|
+
if (
|
|
266
|
+
fromNavigationParameters &&
|
|
267
|
+
selectionVariant.getSelectOptionsPropertyNames().length > 0 &&
|
|
268
|
+
Object.keys(conditions).length === 0
|
|
269
|
+
) {
|
|
270
|
+
// If the selection variant has select options but no conditions could be mapped to the filter bar, we return an empty array
|
|
271
|
+
// This is to avoid clearing the filter bar in this case
|
|
272
|
+
// This can happen if the selection variant has only parameters or select options for properties not present in the filter bar
|
|
273
|
+
// In this case, we assume that the selection variant is not meant to clear the filter bar
|
|
274
|
+
// and we do not apply it
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
|
|
262
278
|
// Clear filter of table before applying selection variant
|
|
263
279
|
await this.clearFilterValues(controlInstance?.getParent() as MacroAPI);
|
|
264
280
|
|
|
@@ -203,7 +203,7 @@ C_OBJECT_PAGE_MASS_EDIT_SUCCESS_TOAST=Your changes have been saved.
|
|
|
203
203
|
C_MASS_EDIT_CHANGES_WITH_ERROR={0} of {1} objects updated.
|
|
204
204
|
|
|
205
205
|
# YMSG,100: Used in the Toast message box for mass edit with no change
|
|
206
|
-
C_MASS_EDIT_NO_CHANGE=You haven'
|
|
206
|
+
C_MASS_EDIT_NO_CHANGE=You haven't made any changes.
|
|
207
207
|
|
|
208
208
|
# XTIT,50: Title of the mass edit design dialog
|
|
209
209
|
C_MASS_EDIT_DESIGN_DIALOG_TITLE=View Settings
|
|
@@ -211,6 +211,8 @@ C_MASS_EDIT_DESIGN_DIALOG_TITLE=View Settings
|
|
|
211
211
|
# XBUT,30: Text for the mass edit configuration.
|
|
212
212
|
C_MASS_EDIT_DESIGN_CONFIGURATION=Configuration
|
|
213
213
|
|
|
214
|
+
# XTIT: The tooltip for the Close button of the DraftIndicator popup
|
|
215
|
+
C_DRAFTINDICATOR_CLOSE_BUTTON=Close
|
|
214
216
|
|
|
215
217
|
# ------------Keyboard shortcut tooltips-----------------
|
|
216
218
|
|
|
@@ -227,10 +229,10 @@ M_KEYBOARD_SHORTCUT_DELETE_ROW_WIN=CTRL+D
|
|
|
227
229
|
M_KEYBOARD_SHORTCUT_DELETE_ROW_MAC=CMD+D
|
|
228
230
|
|
|
229
231
|
# XMSG,100: No Data Text when filters applied for the charts in multiview mode
|
|
230
|
-
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Try
|
|
232
|
+
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Try changing the view or filter criteria.
|
|
231
233
|
|
|
232
234
|
# XMSG,100: IllustratedMessage description when no filters are applied for the table and charts in the Object Page
|
|
233
|
-
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=When there are, you'll
|
|
235
|
+
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=When there are, you'll see them here.
|
|
234
236
|
|
|
235
237
|
# XMSG,100: Text when annotation not found
|
|
236
238
|
M_CHART_NO_ANNOTATION_SET_TEXT=No Chart annotation found
|
|
@@ -428,7 +430,7 @@ M_CARD_FAILURE_TABLE_REASON_UNSUPPORTED_COLUMNS=At least one text-based column w
|
|
|
428
430
|
M_CARD_CREATION_FAILURE_CHART_REASON_DATE_RANGE_FILTERS=Card creation isn't possible. Please retry after ensuring no relative date filters (like "Yesterday") are used.
|
|
429
431
|
|
|
430
432
|
# XMSG,300: Error message to indicate to end user that row level navigation would be disabled for apps where external navigation is configured
|
|
431
|
-
M_ROW_LEVEL_NAVIGATION_DISABLED_MSG_REASON_EXTERNAL_NAVIGATION_CONFIGURED=Direct navigation to the object details isn'
|
|
433
|
+
M_ROW_LEVEL_NAVIGATION_DISABLED_MSG_REASON_EXTERNAL_NAVIGATION_CONFIGURED=Direct navigation to the object details isn't possible from this insights card.
|
|
432
434
|
|
|
433
435
|
# ----------------Contact quick view --------------------------------
|
|
434
436
|
|
|
@@ -472,7 +474,7 @@ M_PASTE=Paste
|
|
|
472
474
|
|
|
473
475
|
M_TABLEDROP_FAILED=You can''t move this node.\n\
|
|
474
476
|
{0}
|
|
475
|
-
M_TABLE_DROP_NOT_ALLOWED=You can'
|
|
477
|
+
M_TABLE_DROP_NOT_ALLOWED=You can't move this node here.
|
|
476
478
|
|
|
477
479
|
# ------------Collapse and Expand texts for the TreeTable context menu------------
|
|
478
480
|
M_TABLE_CONTEXTMENU_COLLAPSE=Collapse entire node
|
|
@@ -49,7 +49,12 @@ M_COMMON_TABLE_FULLSCREEN_CLOSE=\u0625\u063A\u0644\u0627\u0642
|
|
|
49
49
|
|
|
50
50
|
M_COMMON_TABLE_CONTEXT_MENU_OPEN_IN_NEW_TAB=\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u0623\u0648 \u0646\u0627\u0641\u0630\u0629 \u062C\u062F\u064A\u062F\u0629
|
|
51
51
|
|
|
52
|
-
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=\
|
|
52
|
+
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=\u0644\u0642\u062F \u062A\u062C\u0627\u0648\u0632\u062A \u0639\u062F\u062F \u0627\u0644\u0643\u0627\u0626\u0646\u0627\u062A \u0627\u0644\u062A\u064A \u064A\u0645\u0643\u0646 \u0641\u062A\u062D\u0647\u0627 \u0641\u064A \u0627\u0644\u0648\u0642\u062A \u0646\u0641\u0633\u0647 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649\: {0}).
|
|
53
|
+
|
|
54
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_SINGULAR=\u0644\u0627 \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u062C\u0645\u064A\u0639 \u0627\u0644\u0643\u0627\u0626\u0646\u0627\u062A \u0627\u0644\u0645\u062D\u062F\u062F\u0629.\n\u0627\u0644\u0645\u062D\u062F\u062F\: {0}.\n\u0627\u0644\u0645\u062A\u0648\u0641\u0631\: {1} (\u0627\u0644\u062D\u062F\: {2}).\n\u0647\u0644 \u0645\u0627 \u0632\u0644\u062A \u062A\u0631\u064A\u062F \u0641\u062A\u062D \u0627\u0644\u0643\u0627\u0626\u0646 \u0627\u0644\u0645\u062A\u0648\u0641\u0631\u061F
|
|
55
|
+
|
|
56
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_PLURAL=\u0644\u0627 \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u062C\u0645\u064A\u0639 \u0627\u0644\u0643\u0627\u0626\u0646\u0627\u062A \u0627\u0644\u0645\u062D\u062F\u062F\u0629.\n\u0627\u0644\u0645\u062D\u062F\u062F\: {0}.\n\u0627\u0644\u0645\u062A\u0648\u0641\u0631\: {1} (\u0627\u0644\u062D\u062F\: {2}).\n\u0647\u0644 \u0645\u0627 \u0632\u0644\u062A \u062A\u0631\u064A\u062F \u0641\u062A\u062D \u0627\u0644\u0643\u0627\u0626\u0646\u0627\u062A \u0627\u0644\u0645\u062A\u0648\u0641\u0631\u0629\u061F
|
|
57
|
+
|
|
53
58
|
|
|
54
59
|
M_COMMON_TABLE_CONTEXT_MENU_SHARE_TO_COLLABORATION_MANAGER=\u0645\u0634\u0627\u0631\u0643\u0629 \u0645\u0639 SAP Collaboration Manager
|
|
55
60
|
|
|
@@ -131,6 +136,7 @@ C_MASS_EDIT_DESIGN_DIALOG_TITLE=\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u062
|
|
|
131
136
|
|
|
132
137
|
C_MASS_EDIT_DESIGN_CONFIGURATION=\u0627\u0644\u062A\u0643\u0648\u064A\u0646
|
|
133
138
|
|
|
139
|
+
C_DRAFTINDICATOR_CLOSE_BUTTON=\u0625\u063A\u0644\u0627\u0642
|
|
134
140
|
|
|
135
141
|
|
|
136
142
|
M_KEYBOARD_SHORTCUT_CREATE_WIN=CTRL+Enter
|
|
@@ -141,9 +147,9 @@ M_KEYBOARD_SHORTCUT_DELETE_ROW_WIN=CTRL+D
|
|
|
141
147
|
|
|
142
148
|
M_KEYBOARD_SHORTCUT_DELETE_ROW_MAC=CMD+D
|
|
143
149
|
|
|
144
|
-
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=\u062D\u0627\u0648\u0644 \u062A\
|
|
150
|
+
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=\u062D\u0627\u0648\u0644 \u062A\u063A\u064A\u064A\u0631 \u0645\u0639\u0627\u064A\u064A\u0631 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0623\u0648 \u0627\u0644\u0639\u0631\u0636.
|
|
145
151
|
|
|
146
|
-
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=\
|
|
152
|
+
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=\u0628\u0645\u062C\u0631\u062F \u0623\u0646 \u062A\u062A\u0648\u0641\u0631\u060C \u0633\u062A\u0638\u0647\u0631 \u0647\u0646\u0627.
|
|
147
153
|
|
|
148
154
|
M_CHART_NO_ANNOTATION_SET_TEXT=\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u062A\u0639\u0644\u064A\u0642 \u062A\u0648\u0636\u064A\u062D\u064A \u0644\u0644\u0645\u062E\u0637\u0637
|
|
149
155
|
|
|
@@ -573,3 +579,6 @@ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}\: {1}
|
|
|
573
579
|
T_APP_HOME=\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629
|
|
574
580
|
|
|
575
581
|
M_PASTABLE_CONTEXTS_NOT_AVAILABLE=\u0627\u0644\u0645\u062D\u062A\u0648\u0649 \u063A\u064A\u0631 \u0645\u062A\u0648\u0641\u0631 \u0644\u0644\u0635\u0642 \u0628\u0639\u062F. \u062A\u062D\u0642\u0642 \u0645\u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0623\u0635\u0644\u064A \u0645\u0648\u0633\u0639\u064B\u0627 \u0648\u0645\u0631\u0626\u064A\u064B\u0627.
|
|
582
|
+
|
|
583
|
+
T_RADIOBUTTONS_BOOLEAN_YES=\u0646\u0639\u0645
|
|
584
|
+
T_RADIOBUTTONS_BOOLEAN_NO=\u0644\u0627
|
|
@@ -49,7 +49,12 @@ M_COMMON_TABLE_FULLSCREEN_CLOSE=\u0417\u0430\u0442\u0432\u0430\u0440\u044F\u043D
|
|
|
49
49
|
|
|
50
50
|
M_COMMON_TABLE_CONTEXT_MENU_OPEN_IN_NEW_TAB=\u041E\u0442\u0432\u0430\u0440\u044F\u043D\u0435 \u0432 \u043D\u043E\u0432 \u0442\u0430\u0431 \u0438\u043B\u0438 \u043F\u0440\u043E\u0437\u043E\u0440\u0435\u0446
|
|
51
51
|
|
|
52
|
-
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=\
|
|
52
|
+
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=\u041D\u0430\u0434\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u0431\u0440\u043E\u044F \u043E\u0431\u0435\u043A\u0442\u0438, \u043A\u043E\u0438\u0442\u043E \u043C\u043E\u0436\u0435 \u0434\u0430 \u0431\u044A\u0434\u0430\u0442 \u043E\u0442\u0432\u043E\u0440\u0435\u043D\u0438 \u0435\u0434\u043D\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E (\u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C\: {0}).
|
|
53
|
+
|
|
54
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_SINGULAR=\u041D\u0435 \u043C\u043E\u0436\u0435 \u0434\u0430 \u043D\u0430\u0432\u0438\u0433\u0438\u0440\u0430\u0442\u0435 \u043C\u0435\u0436\u0434\u0443 \u0432\u0441\u0438\u0447\u043A\u0438 \u0438\u0437\u0431\u0440\u0430\u043D\u0438 \u043E\u0431\u0435\u043A\u0442\u0438.\n\u0418\u0437\u0431\u0440\u0430\u043D\u0438\: {0}.\n\u041D\u0430\u043B\u0438\u0447\u043D\u0438\: {1} (\u043B\u0438\u043C\u0438\u0442\: {2}).\n\u0412\u0441\u0435 \u043E\u0449\u0435 \u043B\u0438 \u0438\u0441\u043A\u0430\u0442\u0435 \u0434\u0430 \u043E\u0442\u0432\u043E\u0440\u0438\u0442\u0435 \u043D\u0430\u043B\u0438\u0447\u043D\u0438\u044F \u043E\u0431\u0435\u043A\u0442?
|
|
55
|
+
|
|
56
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_PLURAL=\u041D\u0435 \u043C\u043E\u0436\u0435 \u0434\u0430 \u043D\u0430\u0432\u0438\u0433\u0438\u0440\u0430\u0442\u0435 \u043C\u0435\u0436\u0434\u0443 \u0432\u0441\u0438\u0447\u043A\u0438 \u0438\u0437\u0431\u0440\u0430\u043D\u0438 \u043E\u0431\u0435\u043A\u0442\u0438.\n\u0418\u0437\u0431\u0440\u0430\u043D\u0438\: {0}.\n\u041D\u0430\u043B\u0438\u0447\u043D\u0438\: {1} (\u043B\u0438\u043C\u0438\u0442\: {2}).\n\u0412\u0441\u0435 \u043E\u0449\u0435 \u043B\u0438 \u0438\u0441\u043A\u0430\u0442\u0435 \u0434\u0430 \u043E\u0442\u0432\u043E\u0440\u0438\u0442\u0435 \u043D\u0430\u043B\u0438\u0447\u043D\u0438\u0442\u0435 \u043E\u0431\u0435\u043A\u0442\u0438?
|
|
57
|
+
|
|
53
58
|
|
|
54
59
|
M_COMMON_TABLE_CONTEXT_MENU_SHARE_TO_COLLABORATION_MANAGER=\u0421\u043F\u043E\u0434\u0435\u043B\u044F\u043D\u0435 \u0432 SAP Collaboration Manager
|
|
55
60
|
|
|
@@ -131,6 +136,7 @@ C_MASS_EDIT_DESIGN_DIALOG_TITLE=\u041F\u0440\u0435\u0433\u043B\u0435\u0434 \u043
|
|
|
131
136
|
|
|
132
137
|
C_MASS_EDIT_DESIGN_CONFIGURATION=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
|
|
133
138
|
|
|
139
|
+
C_DRAFTINDICATOR_CLOSE_BUTTON=\u0417\u0430\u0442\u0432\u0430\u0440\u044F\u043D\u0435
|
|
134
140
|
|
|
135
141
|
|
|
136
142
|
M_KEYBOARD_SHORTCUT_CREATE_WIN=CTRL+Enter
|
|
@@ -141,9 +147,9 @@ M_KEYBOARD_SHORTCUT_DELETE_ROW_WIN=CTRL+D
|
|
|
141
147
|
|
|
142
148
|
M_KEYBOARD_SHORTCUT_DELETE_ROW_MAC=CMD+D
|
|
143
149
|
|
|
144
|
-
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=\u041E\u043F\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u0430 \
|
|
150
|
+
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=\u041E\u043F\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u0430 \u043F\u0440\u043E\u043C\u0435\u043D\u0438\u0442\u0435 \u0438\u0437\u0433\u043B\u0435\u0434\u0430 \u0438\u043B\u0438 \u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0438\u0442\u0435 \u0437\u0430 \u0444\u0438\u043B\u0442\u0440\u0438\u0440\u0430\u043D\u0435.
|
|
145
151
|
|
|
146
|
-
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=\u041A\u043E\u0433\u0430\u0442\u043E \u0438\u043C\u0430, \u0449\u0435 \u0433\u0438 \
|
|
152
|
+
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=\u041A\u043E\u0433\u0430\u0442\u043E \u0438\u043C\u0430, \u0449\u0435 \u0433\u0438 \u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u0443\u043A.
|
|
147
153
|
|
|
148
154
|
M_CHART_NO_ANNOTATION_SET_TEXT=\u041D\u044F\u043C\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0430 \u0430\u043D\u043E\u0442\u0430\u0446\u0438\u044F \u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u0430
|
|
149
155
|
|
|
@@ -302,7 +308,7 @@ M_CUTCOPY_READY=\u0420\u0435\u0434\u044A\u0442 \u0435 \u0433\u043E\u0442\u043E\u
|
|
|
302
308
|
M_PASTE=\u041F\u043E\u0441\u0442\u0430\u0432\u044F\u043D\u0435
|
|
303
309
|
|
|
304
310
|
M_TABLEDROP_FAILED=\u041D\u0435 \u043C\u043E\u0436\u0435\u0442\u0435 \u0434\u0430 \u043F\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0442\u043E\u0437\u0438 \u0432\u044A\u0437\u0435\u043B. {0}
|
|
305
|
-
M_TABLE_DROP_NOT_ALLOWED=\u041D\u0435 \u043C\u043E\u0436\u0435 \u0434\u0430 \u043F\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0442\u043E\u0437\u0438 \u0432\u044A\u0437\u0435\u043B \u0442\u0443\u043A.
|
|
311
|
+
M_TABLE_DROP_NOT_ALLOWED=\u041D\u0435 \u043C\u043E\u0436\u0435\u0442\u0435 \u0434\u0430 \u043F\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0442\u043E\u0437\u0438 \u0432\u044A\u0437\u0435\u043B \u0442\u0443\u043A.
|
|
306
312
|
|
|
307
313
|
M_TABLE_CONTEXTMENU_COLLAPSE=\u0421\u0432\u0438\u0432\u0430\u043D\u0435 \u043D\u0430 \u0446\u0435\u043B\u0438\u044F \u0432\u044A\u0437\u0435\u043B
|
|
308
314
|
M_TABLE_CONTEXTMENU_EXPAND=\u0420\u0430\u0437\u0433\u044A\u0432\u0430\u043D\u0435 \u043D\u0430 \u0446\u0435\u043B\u0438\u044F \u0432\u044A\u0437\u0435\u043B
|
|
@@ -573,3 +579,6 @@ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}\: {1}
|
|
|
573
579
|
T_APP_HOME=Home
|
|
574
580
|
|
|
575
581
|
M_PASTABLE_CONTEXTS_NOT_AVAILABLE=\u0421\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435\u0442\u043E \u0432\u0435\u0447\u0435 \u043D\u0435 \u0435 \u043D\u0430\u043B\u0438\u0447\u043D\u043E \u0437\u0430 \u0432\u043C\u044A\u043A\u0432\u0430\u043D\u0435. \u041F\u0440\u043E\u0432\u0435\u0440\u0435\u0442\u0435 \u0434\u0430\u043B\u0438 \u043E\u0440\u0438\u0433\u0438\u043D\u0430\u043B\u043D\u043E\u0442\u043E \u043F\u043E\u0441\u0442\u0430\u0432\u044F\u043D\u0435 \u0435 \u0440\u0430\u0437\u0433\u044A\u0440\u043D\u0430\u0442\u043E \u0438 \u0432\u0438\u0434\u0438\u043C\u043E.
|
|
582
|
+
|
|
583
|
+
T_RADIOBUTTONS_BOOLEAN_YES=\u0414\u0430
|
|
584
|
+
T_RADIOBUTTONS_BOOLEAN_NO=\u041D\u0435
|
|
@@ -49,7 +49,12 @@ M_COMMON_TABLE_FULLSCREEN_CLOSE=Tancar
|
|
|
49
49
|
|
|
50
50
|
M_COMMON_TABLE_CONTEXT_MENU_OPEN_IN_NEW_TAB=Obrir en una pestanya o finestra nova
|
|
51
51
|
|
|
52
|
-
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=
|
|
52
|
+
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=Heu superat el nombre d''objectes que es poden obrir alhora (m\u00E0xim\: {0}).
|
|
53
|
+
|
|
54
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_SINGULAR=No podeu acceiir a tots els objectes seleccionats.\nSeleccionats\: {0}.\nDisponibles\: {1} (l\u00EDmit\: {2}).\nVoleu obrir de totes maneres l''objecte disponible?
|
|
55
|
+
|
|
56
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_PLURAL=No podeu acceiir a tots els objectes seleccionats.\nSeleccionats\: {0}.\nDisponibles\: {1} (l\u00EDmit\: {2}).\nVoleu obrir de totes maneres els objectes disponibles?
|
|
57
|
+
|
|
53
58
|
|
|
54
59
|
M_COMMON_TABLE_CONTEXT_MENU_SHARE_TO_COLLABORATION_MANAGER=Compartir a SAP Collaboration Manager
|
|
55
60
|
|
|
@@ -131,6 +136,7 @@ C_MASS_EDIT_DESIGN_DIALOG_TITLE=Configuraci\u00F3 de vista
|
|
|
131
136
|
|
|
132
137
|
C_MASS_EDIT_DESIGN_CONFIGURATION=Configuraci\u00F3
|
|
133
138
|
|
|
139
|
+
C_DRAFTINDICATOR_CLOSE_BUTTON=Tancar
|
|
134
140
|
|
|
135
141
|
|
|
136
142
|
M_KEYBOARD_SHORTCUT_CREATE_WIN=CTRL+Retorn
|
|
@@ -141,9 +147,9 @@ M_KEYBOARD_SHORTCUT_DELETE_ROW_WIN=CTRL+D
|
|
|
141
147
|
|
|
142
148
|
M_KEYBOARD_SHORTCUT_DELETE_ROW_MAC=CMD+D
|
|
143
149
|
|
|
144
|
-
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=
|
|
150
|
+
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Proveu de canviar els criteris de visualitzaci\u00F3 o de filtre.
|
|
145
151
|
|
|
146
|
-
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=
|
|
152
|
+
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=Quan n'hi hagi, els veureu aqu\u00ED.
|
|
147
153
|
|
|
148
154
|
M_CHART_NO_ANNOTATION_SET_TEXT=No s'ha trobat cap anotaci\u00F3 de gr\u00E0fics
|
|
149
155
|
|
|
@@ -573,3 +579,6 @@ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}\: {1}
|
|
|
573
579
|
T_APP_HOME=P\u00E0gina d'inici
|
|
574
580
|
|
|
575
581
|
M_PASTABLE_CONTEXTS_NOT_AVAILABLE=El contingut ja no est\u00E0 disponible per a la c\u00F2pia. Comproveu si s'ha expandit la ubicaci\u00F3 original i si \u00E9s visible.
|
|
582
|
+
|
|
583
|
+
T_RADIOBUTTONS_BOOLEAN_YES=S\u00ED
|
|
584
|
+
T_RADIOBUTTONS_BOOLEAN_NO=No
|
|
@@ -49,7 +49,12 @@ M_COMMON_TABLE_FULLSCREEN_CLOSE=Zatvori
|
|
|
49
49
|
|
|
50
50
|
M_COMMON_TABLE_CONTEXT_MENU_OPEN_IN_NEW_TAB=Otvori u novoj kartici ili prozoru
|
|
51
51
|
|
|
52
|
-
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=
|
|
52
|
+
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=Prekora\u010Dili ste broj objekata koji se mogu istovremeno otvoriti (maksimalno\: {0}).
|
|
53
|
+
|
|
54
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_SINGULAR=Ne mo\u017Eete se usmjeriti na sve odabrane objekte.\nOdabrano\: {0}.\nDostupno\: {1} (ograni\u010Denje\: {2}).\nDa li jo\u0161 uvijek \u017Eelite da otvorite dostupni objekat?
|
|
55
|
+
|
|
56
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_PLURAL=Ne mo\u017Eete se usmjeriti na sve odabrane objekte.\nOdabrano\: {0}.\nDostupno\: {1} (ograni\u010Denje\: {2}).\nDa li jo\u0161 uvijek \u017Eelite da otvorite dostupne objekte?
|
|
57
|
+
|
|
53
58
|
|
|
54
59
|
M_COMMON_TABLE_CONTEXT_MENU_SHARE_TO_COLLABORATION_MANAGER=Podijeli u SAP Collaboration Manager
|
|
55
60
|
|
|
@@ -131,6 +136,7 @@ C_MASS_EDIT_DESIGN_DIALOG_TITLE=Pode\u0161avanja pogleda
|
|
|
131
136
|
|
|
132
137
|
C_MASS_EDIT_DESIGN_CONFIGURATION=Konfiguracija
|
|
133
138
|
|
|
139
|
+
C_DRAFTINDICATOR_CLOSE_BUTTON=Zatvori
|
|
134
140
|
|
|
135
141
|
|
|
136
142
|
M_KEYBOARD_SHORTCUT_CREATE_WIN=CTRL+Enter
|
|
@@ -141,9 +147,9 @@ M_KEYBOARD_SHORTCUT_DELETE_ROW_WIN=CTRL+D
|
|
|
141
147
|
|
|
142
148
|
M_KEYBOARD_SHORTCUT_DELETE_ROW_MAC=CMD+D
|
|
143
149
|
|
|
144
|
-
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Poku\u0161ajte da
|
|
150
|
+
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Poku\u0161ajte da promijenite kriterijume pogleda ili filtera.
|
|
145
151
|
|
|
146
|
-
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=Kada ih bude bilo,
|
|
152
|
+
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=Kada ih bude bilo, vidje\u0107ete ih ovdje.
|
|
147
153
|
|
|
148
154
|
M_CHART_NO_ANNOTATION_SET_TEXT=Anotacija dijagrama nije na\u0111ena
|
|
149
155
|
|
|
@@ -573,3 +579,6 @@ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}\: {1}
|
|
|
573
579
|
T_APP_HOME=Home
|
|
574
580
|
|
|
575
581
|
M_PASTABLE_CONTEXTS_NOT_AVAILABLE=Sadr\u017Eaj vi\u0161e nije dostupan za lijepljenje. Provjerite da li je originalni polo\u017Eaj pro\u0161iren i vidljiv.
|
|
582
|
+
|
|
583
|
+
T_RADIOBUTTONS_BOOLEAN_YES=Da
|
|
584
|
+
T_RADIOBUTTONS_BOOLEAN_NO=Ne
|
|
@@ -49,7 +49,12 @@ M_COMMON_TABLE_FULLSCREEN_CLOSE=Zav\u0159\u00EDt
|
|
|
49
49
|
|
|
50
50
|
M_COMMON_TABLE_CONTEXT_MENU_OPEN_IN_NEW_TAB=Otev\u0159\u00EDt na nov\u00E9 z\u00E1lo\u017Ece nebo v nov\u00E9m okn\u011B
|
|
51
51
|
|
|
52
|
-
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=
|
|
52
|
+
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=P\u0159ekro\u010Dili jste po\u010Det objekt\u016F, kter\u00E9 lze otev\u0159\u00EDt sou\u010Dasn\u011B (maximum\: {0}).
|
|
53
|
+
|
|
54
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_SINGULAR=Nem\u016F\u017Eete navigovat ke v\u0161em vybran\u00FDm objekt\u016Fm.\nVybr\u00E1no\: {0}.\nDostupn\u00E9\: {1} (limit\: {2}).\nSt\u00E1le chcete otev\u0159\u00EDt dostupn\u00E9 objekty?
|
|
55
|
+
|
|
56
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_PLURAL=Nem\u016F\u017Eete navigovat ke v\u0161em vybran\u00FDm objekt\u016Fm.\nVybr\u00E1no\: {0}.\nDostupn\u00E9\: {1} (limit\: {2}).\nSt\u00E1le chcete otev\u0159\u00EDt dostupn\u00E9 objekty?
|
|
57
|
+
|
|
53
58
|
|
|
54
59
|
M_COMMON_TABLE_CONTEXT_MENU_SHARE_TO_COLLABORATION_MANAGER=Sd\u00EDlet se SAP Collaboration Manager
|
|
55
60
|
|
|
@@ -131,6 +136,7 @@ C_MASS_EDIT_DESIGN_DIALOG_TITLE=Nastaven\u00ED zobrazen\u00ED
|
|
|
131
136
|
|
|
132
137
|
C_MASS_EDIT_DESIGN_CONFIGURATION=Konfigurace
|
|
133
138
|
|
|
139
|
+
C_DRAFTINDICATOR_CLOSE_BUTTON=Zav\u0159\u00EDt
|
|
134
140
|
|
|
135
141
|
|
|
136
142
|
M_KEYBOARD_SHORTCUT_CREATE_WIN=CTRL+Enter
|
|
@@ -141,7 +147,7 @@ M_KEYBOARD_SHORTCUT_DELETE_ROW_WIN=CTRL+D
|
|
|
141
147
|
|
|
142
148
|
M_KEYBOARD_SHORTCUT_DELETE_ROW_MAC=CMD+D
|
|
143
149
|
|
|
144
|
-
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Zkuste
|
|
150
|
+
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Zkuste zm\u011Bnit pohled nebo krit\u00E9ria filtru.
|
|
145
151
|
|
|
146
152
|
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=A\u017E budou k dispozici, uvid\u00EDte je zde.
|
|
147
153
|
|
|
@@ -573,3 +579,6 @@ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}\: {1}
|
|
|
573
579
|
T_APP_HOME=Dom\u016F
|
|
574
580
|
|
|
575
581
|
M_PASTABLE_CONTEXTS_NOT_AVAILABLE=Obsah ji\u017E nen\u00ED pro vkl\u00E1d\u00E1n\u00ED dostupn\u00FD. Zkontrolujte, zda je p\u016Fvodn\u00ED um\u00EDst\u011Bn\u00ED rozbaleno a viditeln\u00E9.
|
|
582
|
+
|
|
583
|
+
T_RADIOBUTTONS_BOOLEAN_YES=Ano
|
|
584
|
+
T_RADIOBUTTONS_BOOLEAN_NO=Ne
|
|
@@ -49,7 +49,12 @@ M_COMMON_TABLE_FULLSCREEN_CLOSE=Cau
|
|
|
49
49
|
|
|
50
50
|
M_COMMON_TABLE_CONTEXT_MENU_OPEN_IN_NEW_TAB=Agor mewn Tab neu Ffenestr Newydd
|
|
51
51
|
|
|
52
|
-
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=
|
|
52
|
+
T_TABLE_NAVIGATION_TOO_MANY_ITEMS_SELECTED=Rydych chi wedi rhagori ar nifer y gwrthrychau y gellir eu hagor ar yr un pryd (uchafswm\: {0}).
|
|
53
|
+
|
|
54
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_SINGULAR=Ni allwch lywio i''r holl wrthrychau a ddewiswyd.\nWedi''u dewis\: {0}.\nAr gael\: {1} (terfyn\: {2}).\nYdych chi dal eisiau agor y gwrthrych sydd ar gael?
|
|
55
|
+
|
|
56
|
+
T_TABLE_NAVIGATION_NOT_ALL_ITEMS_NAVIGABLE_PLURAL=Ni allwch lywio i''r holl wrthrychau a ddewiswyd.\nWedi''u dewis\: {0}.\nAr gael\: {1} (terfyn\: {2}).\nYdych chi dal eisiau agor y gwrthrychau sydd ar gael?
|
|
57
|
+
|
|
53
58
|
|
|
54
59
|
M_COMMON_TABLE_CONTEXT_MENU_SHARE_TO_COLLABORATION_MANAGER=Rheolwr \u00E2 Rheolwr Cydweithio SAP
|
|
55
60
|
|
|
@@ -131,6 +136,7 @@ C_MASS_EDIT_DESIGN_DIALOG_TITLE=Gweld Gosodiadau
|
|
|
131
136
|
|
|
132
137
|
C_MASS_EDIT_DESIGN_CONFIGURATION=Ffurfweddiad
|
|
133
138
|
|
|
139
|
+
C_DRAFTINDICATOR_CLOSE_BUTTON=Cau
|
|
134
140
|
|
|
135
141
|
|
|
136
142
|
M_KEYBOARD_SHORTCUT_CREATE_WIN=CTRL+Enter
|
|
@@ -141,9 +147,9 @@ M_KEYBOARD_SHORTCUT_DELETE_ROW_WIN=CTRL+D
|
|
|
141
147
|
|
|
142
148
|
M_KEYBOARD_SHORTCUT_DELETE_ROW_MAC=CMD+D
|
|
143
149
|
|
|
144
|
-
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Ceisiwch
|
|
150
|
+
M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW=Ceisiwch newid y meini prawf hidlo neu'r wedd.
|
|
145
151
|
|
|
146
|
-
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=Pan
|
|
152
|
+
M_TABLE_AND_CHART_NO_FILTERS_NO_DATA_TEXT=Pan fyddant ar gael, byddwch yn eu gweld yma.
|
|
147
153
|
|
|
148
154
|
M_CHART_NO_ANNOTATION_SET_TEXT=Heb ddod o hyd i anodiad Siart
|
|
149
155
|
|
|
@@ -573,3 +579,6 @@ T_BREADCRUMBS_TITLE_LONG_TEMPLATE={0}\: {1}
|
|
|
573
579
|
T_APP_HOME=Hafan
|
|
574
580
|
|
|
575
581
|
M_PASTABLE_CONTEXTS_NOT_AVAILABLE=Nid yw'r cynnwys ar gael i'w ludo mwyach. Gwiriwch a yw'r lleoliad gwreiddiol wedi'i ehangu a'i fod yn weladwy.
|
|
582
|
+
|
|
583
|
+
T_RADIOBUTTONS_BOOLEAN_YES=Iawn
|
|
584
|
+
T_RADIOBUTTONS_BOOLEAN_NO=Na
|